libzeep-5.1.8/0000775000175000017500000000000014324170113013015 5ustar maartenmaartenlibzeep-5.1.8/.gitignore0000664000175000017500000000026014324170113015003 0ustar maartenmaartenlib/ lib-xml/test/XML-Test-Suite/ tests/ .vs/ .vscode build/ Testing/Temporary doc/bin doc/html doc/autodoc.xml msvc/ doc/Jamfile.v2 CMakeSettings.json include/zeep/config.hpp libzeep-5.1.8/CMakeLists.txt0000664000175000017500000003515714324170113015570 0ustar maartenmaartencmake_minimum_required(VERSION 3.16) project(libzeep VERSION 5.1.8 LANGUAGES CXX) list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) include(GNUInstallDirs) include(CheckFunctionExists) include(CheckIncludeFiles) include(FindFilesystem) include(CheckLibraryExists) include(CMakePackageConfigHelpers) include(Dart) include(GenerateExportHeader) set(CXX_EXTENSIONS OFF) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Filesystem REQUIRED) if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers") elseif(MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") endif() # Build shared libraries by default (not my cup of tea, but hey) option(BUILD_SHARED_LIBS "Build a shared library instead of a static one" OFF) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) if(MSVC) # make msvc standards compliant... add_compile_options(/permissive-) macro(get_WIN32_WINNT version) if (WIN32 AND CMAKE_SYSTEM_VERSION) set(ver ${CMAKE_SYSTEM_VERSION}) string(REPLACE "." "" ver ${ver}) string(REGEX REPLACE "([0-9])" "0\\1" ver ${ver}) set(${version} "0x${ver}") endif() endmacro() get_WIN32_WINNT(ver) add_definitions(-D_WIN32_WINNT=${ver}) # On Windows, do not install in the system location by default if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) message("The library and auxiliary files will be installed in $ENV{LOCALAPPDATA}/zeep") set(CMAKE_INSTALL_PREFIX "$ENV{LOCALAPPDATA}/zeep" CACHE PATH "..." FORCE) endif() endif() # Optionally use mrc to create resources if(WIN32 AND BUILD_SHARED_LIBS) message("Not using resources when building shared libraries for Windows") else() find_package(Mrc) if(MRC_FOUND) option(USE_RSRC "Use mrc to create resources" ON) else() message(STATUS "Not using resources since mrc was not found") endif() if(USE_RSRC) message("Using resources compiled with ${MRC_EXECUTABLE}") set(WEBAPP_USES_RESOURCES 1) mrc_write_header(${CMAKE_BINARY_DIR}/mrsrc.hpp) endif() endif() set(CMAKE_THREAD_PREFER_PTHREAD) set(THREADS_PREFER_PTHREAD_FLAG) find_package(Threads REQUIRED) set(Boost_DETAILED_FAILURE_MSG ON) if(NOT BUILD_SHARED_LIBS) set(Boost_USE_STATIC_LIBS ON) endif() find_package(Boost 1.70.0 REQUIRED COMPONENTS program_options system date_time regex) if(UNIX) find_file(HAVE_SYS_WAIT_H "sys/wait.h") if(HAVE_SYS_WAIT_H) set(HTTP_SERVER_HAS_PREFORK 1) endif() endif() list(APPEND ZEEP_HEADERS ${CMAKE_SOURCE_DIR}/include/zeep/crypto.hpp ${CMAKE_SOURCE_DIR}/include/zeep/streambuf.hpp ${CMAKE_SOURCE_DIR}/include/zeep/value-serializer.hpp ${CMAKE_SOURCE_DIR}/include/zeep/config.hpp ${CMAKE_SOURCE_DIR}/include/zeep/xml/document.hpp ${CMAKE_SOURCE_DIR}/include/zeep/xml/parser.hpp ${CMAKE_SOURCE_DIR}/include/zeep/xml/xpath.hpp ${CMAKE_SOURCE_DIR}/include/zeep/xml/node.hpp ${CMAKE_SOURCE_DIR}/include/zeep/xml/character-classification.hpp ${CMAKE_SOURCE_DIR}/include/zeep/xml/serialize.hpp ${CMAKE_SOURCE_DIR}/include/zeep/xml/doctype.hpp ${CMAKE_SOURCE_DIR}/include/zeep/type-traits.hpp ${CMAKE_SOURCE_DIR}/include/zeep/json/to_element.hpp ${CMAKE_SOURCE_DIR}/include/zeep/json/element.hpp ${CMAKE_SOURCE_DIR}/include/zeep/json/factory.hpp ${CMAKE_SOURCE_DIR}/include/zeep/json/serializer.hpp ${CMAKE_SOURCE_DIR}/include/zeep/json/parser.hpp ${CMAKE_SOURCE_DIR}/include/zeep/json/type_traits.hpp ${CMAKE_SOURCE_DIR}/include/zeep/json/from_element.hpp ${CMAKE_SOURCE_DIR}/include/zeep/json/element_fwd.hpp ${CMAKE_SOURCE_DIR}/include/zeep/json/iterator.hpp ${CMAKE_SOURCE_DIR}/include/zeep/http/controller.hpp ${CMAKE_SOURCE_DIR}/include/zeep/http/message-parser.hpp ${CMAKE_SOURCE_DIR}/include/zeep/http/tag-processor.hpp ${CMAKE_SOURCE_DIR}/include/zeep/http/connection.hpp ${CMAKE_SOURCE_DIR}/include/zeep/http/server.hpp ${CMAKE_SOURCE_DIR}/include/zeep/http/daemon.hpp ${CMAKE_SOURCE_DIR}/include/zeep/http/error-handler.hpp ${CMAKE_SOURCE_DIR}/include/zeep/http/reply.hpp ${CMAKE_SOURCE_DIR}/include/zeep/http/template-processor.hpp ${CMAKE_SOURCE_DIR}/include/zeep/http/header.hpp ${CMAKE_SOURCE_DIR}/include/zeep/http/request.hpp ${CMAKE_SOURCE_DIR}/include/zeep/http/rest-controller.hpp ${CMAKE_SOURCE_DIR}/include/zeep/http/soap-controller.hpp ${CMAKE_SOURCE_DIR}/include/zeep/http/html-controller.hpp ${CMAKE_SOURCE_DIR}/include/zeep/http/security.hpp ${CMAKE_SOURCE_DIR}/include/zeep/http/uri.hpp ${CMAKE_SOURCE_DIR}/include/zeep/http/el-processing.hpp ${CMAKE_SOURCE_DIR}/include/zeep/http/login-controller.hpp ${CMAKE_SOURCE_DIR}/include/zeep/unicode-support.hpp ${CMAKE_SOURCE_DIR}/include/zeep/nvp.hpp ${CMAKE_SOURCE_DIR}/include/zeep/exception.hpp ) set(ZEEP_SRC ${CMAKE_SOURCE_DIR}/lib-http/src/connection.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/controller.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/controller-rsrc.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/crypto.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/daemon.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/el-processing.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/error-handler.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/format.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/glob.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/html-controller.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/login-controller.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/message-parser.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/reply.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/request.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/rest-controller.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/security.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/server.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/uri.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/soap-controller.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/tag-processor-v2.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/tag-processor.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/template-processor.cpp ${CMAKE_SOURCE_DIR}/lib-http/src/signals.cpp ${CMAKE_SOURCE_DIR}/lib-json/src/element.cpp ${CMAKE_SOURCE_DIR}/lib-json/src/json-parser.cpp ${CMAKE_SOURCE_DIR}/lib-xml/src/character-classification.cpp ${CMAKE_SOURCE_DIR}/lib-xml/src/doctype.cpp ${CMAKE_SOURCE_DIR}/lib-xml/src/document.cpp ${CMAKE_SOURCE_DIR}/lib-xml/src/node.cpp ${CMAKE_SOURCE_DIR}/lib-xml/src/xml-parser.cpp ${CMAKE_SOURCE_DIR}/lib-xml/src/xpath.cpp ) if(HTTP_SERVER_HAS_PREFORK) list(APPEND ZEEP_HEADERS ${CMAKE_SOURCE_DIR}/include/zeep/http/preforked-server.hpp) list(APPEND ZEEP_SRC ${CMAKE_SOURCE_DIR}/lib-http/src/preforked-server.cpp) endif() add_library(zeep ${ZEEP_SRC} ${ZEEP_HEADERS}) set_target_properties(zeep PROPERTIES POSITION_INDEPENDENT_CODE ON) target_include_directories(zeep PUBLIC "$" "$" ${Boost_INCLUDE_DIR} ) target_link_libraries(zeep PUBLIC Boost::regex Boost::date_time Threads::Threads ${STDCPPFS_LIBRARY}) if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") target_link_options(zeep PRIVATE -undefined dynamic_lookup) endif (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR} ) set(LIBRARY_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR} ) generate_export_header(zeep EXPORT_FILE_NAME zeep/zeep_export.hpp) # Install rules install(TARGETS zeep EXPORT zeepTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(EXPORT zeepTargets FILE "zeepTargets.cmake" NAMESPACE zeep:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/zeep ) install( DIRECTORY include/zeep DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT Devel PATTERN "config.hpp.in" EXCLUDE ) install( FILES "${CMAKE_CURRENT_BINARY_DIR}/zeep/zeep_export.hpp" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/zeep COMPONENT Devel ) configure_package_config_file(Config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/zeep/zeepConfig.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/zeep PATH_VARS INCLUDE_INSTALL_DIR LIBRARY_INSTALL_DIR ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/zeep/zeepConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/zeep/zeepConfigVersion.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/zeep COMPONENT Devel ) set(zeep_MAJOR_VERSION 5) set_target_properties(zeep PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION 5.1 INTERFACE_zeep_MAJOR_VERSION 5) set_property(TARGET zeep APPEND PROPERTY COMPATIBLE_INTERFACE_STRING zeep_MAJOR_VERSION ) write_basic_package_version_file( "${CMAKE_CURRENT_BINARY_DIR}/zeep/zeepConfigVersion.cmake" VERSION ${PROJECT_VERSION} COMPATIBILITY AnyNewerVersion ) # Config file set(LIBZEEP_VERSION ${PROJECT_VERSION}) set(LIBZEEP_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) set(LIBZEEP_VERSION_MINOR ${PROJECT_VERSION_MINOR}) set(LIBZEEP_VERSION_PATCH ${PROJECT_VERSION_PATCH}) configure_file("${CMAKE_SOURCE_DIR}/include/zeep/config.hpp.in" "${CMAKE_SOURCE_DIR}/include/zeep/config.hpp" @ONLY) # pkgconfig support set(prefix ${CMAKE_INSTALL_PREFIX}) set(exec_prefix ${CMAKE_INSTALL_PREFIX}) set(libdir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}) set(includedir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libzeep.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libzeep.pc.in @ONLY) file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/libzeep.pc INPUT ${CMAKE_CURRENT_BINARY_DIR}/libzeep.pc.in) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libzeep.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) # Documentation option(ZEEP_BUILD_DOC "Build documentation" OFF) if(ZEEP_BUILD_DOC) find_program(DOXYGEN doxygen) find_program(QUICKBOOK quickbook) find_program(XSLTPROC xsltproc) find_program(FOP fop) find_program(BJAM bjam) if(NOT DOXYGEN) list(APPEND MISSING_DOC_TOOL_LIST doxygen) endif() if(NOT QUICKBOOK) list(APPEND MISSING_DOC_TOOL_LIST quickbook) endif() if(NOT XSLTPROC) list(APPEND MISSING_DOC_TOOL_LIST xsltproc) endif() if(NOT FOP) list(APPEND MISSING_DOC_TOOL_LIST fop) endif() if(NOT BJAM) list(APPEND MISSING_DOC_TOOL_LIST bjam) endif() if(DEFINED MISSING_DOC_TOOL_LIST) list(JOIN MISSING_DOC_TOOL_LIST ", " MISSING_DOC_TOOLS) message(FATAL_ERROR "Cannot create documentation since the following applications could not be found: ${MISSING_DOC_TOOLS}") endif() make_directory(doc) if(UNIX) set(QUICKBOOK_SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/quickbook.sh") configure_file(${CMAKE_SOURCE_DIR}/doc/tools/quickbook.sh.in ${CMAKE_CURRENT_BINARY_DIR}/tmp/quickbook.sh @ONLY) file(COPY ${CMAKE_CURRENT_BINARY_DIR}/tmp/quickbook.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR} FILE_PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ) file(REMOVE_RECURSE ${CMAKE_CURRENT_BINARY_DIR}/tmp/) else() set(QUICKBOOK_SCRIPT ${QUICKBOOK}) endif() configure_file(${CMAKE_SOURCE_DIR}/doc/Jamfile.v2.in ${CMAKE_SOURCE_DIR}/doc/Jamfile.v2 @ONLY) add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/doc/html/index.html ${CMAKE_SOURCE_DIR}/doc/html ${CMAKE_SOURCE_DIR}/doc/bin ${CMAKE_SOURCE_DIR}/doc/autodoc.xml COMMAND ${BJAM} ${CMAKE_SOURCE_DIR}/doc DEPENDS ${CMAKE_SOURCE_DIR}/doc/Jamfile.v2) add_custom_target(doc ALL DEPENDS ${CMAKE_SOURCE_DIR}/doc/html/index.html) install(DIRECTORY ${CMAKE_SOURCE_DIR}/doc/html DESTINATION ${CMAKE_INSTALL_DOCDIR}/${PACKAGE_NAME}) endif() # Test applications option(ZEEP_BUILD_TESTS "Build test executables" OFF) if(ZEEP_BUILD_TESTS) enable_testing() # data files for the parser test add_library(client_test OBJECT ${CMAKE_SOURCE_DIR}/lib-http/test/client-test-code.cpp) target_include_directories(client_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_BINARY_DIR} # for config.h ${CMAKE_SOURCE_DIR}/include ${Boost_INCLUDE_DIR} ) # data files for the parser test set(XML_CONF_TAR ${CMAKE_SOURCE_DIR}/lib-xml/test/XML-Test-Suite.tbz) set(XML_CONF_FILE ${CMAKE_SOURCE_DIR}/lib-xml/test/XML-Test-Suite/xmlconf/xmlconf.xml) if (NOT EXISTS ${XML_CONF_FILE}) if(${CMAKE_VERSION} VERSION_LESS "3.18.0") find_program(TAR tar) if(TAR) add_custom_command(OUTPUT ${XML_CONF_FILE} COMMAND ${TAR} xf ${XML_CONF_TAR} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/lib-xml/test/) else() message(FATAL_ERROR "Please extract the archive ${XML_CONF_TAR} manually or update your cmake version to at least 3.18") endif() else() file(ARCHIVE_EXTRACT INPUT ${XML_CONF_TAR} DESTINATION ${CMAKE_SOURCE_DIR}/lib-xml/test/ VERBOSE) endif() endif() add_custom_target(XML_CONF ALL DEPENDS ${XML_CONF_FILE}) # unit parser serializer xpath json crypto http processor webapp soap rest security uri list(APPEND zeep_tests xml/unit xml/parser xml/serializer xml/xpath json/json http/crypto http/http http/processor http/webapp http/soap http/rest http/security http/uri) if(USE_RSRC) list(APPEND zeep_tests http/rsrc_webapp) endif() foreach(TEST IN LISTS zeep_tests) string(REGEX MATCH "^[^/]+" ZEEP_TEST_DIR ${TEST}) string(REGEX MATCH "[^/]+$" ZEEP_TEST ${TEST}) set(ZEEP_TEST "${ZEEP_TEST}-test") set(ZEEP_TEST_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/lib-${ZEEP_TEST_DIR}/test/${ZEEP_TEST}.cpp") add_executable(${ZEEP_TEST} ${ZEEP_TEST_SOURCE} $ ${ZEEP_TEST_RESOURCE}) if("${TEST}" STREQUAL "http/processor") target_compile_definitions(${ZEEP_TEST} PUBLIC DOCROOT=".") endif() if(USE_RSRC AND ("${TEST}" STREQUAL "http/processor" OR "${TEST}" STREQUAL "http/rsrc_webapp")) mrc_target_resources(${ZEEP_TEST} ${CMAKE_SOURCE_DIR}/lib-http/test/fragment-file.xhtml) endif() target_include_directories(${ZEEP_TEST} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_BINARY_DIR} # for config.h ${CMAKE_SOURCE_DIR}/include ) target_link_libraries(${ZEEP_TEST} PRIVATE zeep ${STDCPPFS_LIBRARY} Boost::program_options) if(MSVC) # Specify unwind semantics so that MSVC knowns how to handle exceptions target_compile_options(${ZEEP_TEST} PRIVATE /EHsc) endif() add_custom_target("run-${ZEEP_TEST}" DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Run${ZEEP_TEST}.touch ${ZEEP_TEST}) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Run${ZEEP_TEST}.touch COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${ZEEP_TEST} ) if("${TEST}" STREQUAL "xml/parser") # Some tests should be skipped list(APPEND ZEEP_TEST_ARGS ibm-valid-P28-ibm28v02.xml ibm-valid-P29-ibm29v01.xml ibm-valid-P29-ibm29v02.xml ibm-1-1-valid-P03-ibm03v09.xml rmt-e2e-34 rmt-e2e-55 rmt-054 rmt-ns10-006 rmt-e3e-13) list(TRANSFORM ZEEP_TEST_ARGS PREPEND "--questionable=") list(PREPEND ZEEP_TEST_ARGS ${XML_CONF_FILE} "--print-ids") add_dependencies(${ZEEP_TEST} XML_CONF) else() set(ZEEP_TEST_ARGS "") endif() add_test(NAME ${ZEEP_TEST} COMMAND $ ${ZEEP_TEST_ARGS} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/lib-${ZEEP_TEST_DIR}/test) endforeach() endif() libzeep-5.1.8/Config.cmake.in0000664000175000017500000000055614324170113015637 0ustar maartenmaarten@PACKAGE_INIT@ include(CMakeFindDependencyMacro) find_dependency(Boost 1.70.0 REQUIRED COMPONENTS system date_time regex) find_dependency(Threads) INCLUDE("${CMAKE_CURRENT_LIST_DIR}/zeepTargets.cmake") set_and_check(ZEEP_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@") set_and_check(ZEEP_LIBRARY_DIR "@PACKAGE_LIBRARY_INSTALL_DIR@") check_required_components(zeep) libzeep-5.1.8/LICENSE_1_0.txt0000664000175000017500000000247214324170113015304 0ustar maartenmaartenBoost Software License - Version 1.0 - August 17th, 2003 Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. libzeep-5.1.8/README.md0000664000175000017500000000727314324170113014305 0ustar maartenmaarten[![Build Status](https://travis-ci.org/mhekkel/libzeep.svg?branch=master)](https://travis-ci.org/mhekkel/libzeep) [![DOI](https://zenodo.org/badge/44161414.svg)](https://zenodo.org/badge/latestdoi/44161414) About libzeep ============= Libzeep was originally developed to make it easy to create SOAP servers. And since working with SOAP means working with XML and no decent C++ XML library existed on my radar I created a full XML library as well. Unfortunately (well, considering the work I did), REST proved to be more popular than SOAP, and so I added a better JSON implementation to version 4 of libzeep as well as a way to create REST servers more easily. But then I had to use Spring for some time and was impressed by the simplicity of building interactive web applications and thought I should bring that simplicity to the C++ world. After all, my applications need raw speed and no, Java is not fast. The current incarnation of libzeep, version 5.0, is a completely refactored set of libraries. One for manipulating XML, one for handling JSON and one for building web applications. The XML part of libzeep consists of a validating parser, a DOM(-like) node implementation, an XPath search engine and a XML writer/formatter. The validation works based on DOCTYPE definitions. Please note that libzeep aims to provide a fully compliant XML processor as specified by the W3 organisation (see: [www.w3.org/TR/xml](https://www.w3.org/TR/xml) ). This means it is as strict as the standard requires and it stops processing a file when a validation of the well-formedness is encountered, or when a document appears to be invalid when it is in validating mode. Error reporting is done in this case. The JSON library in itself is fairly simple. There are much better alternatives if you're looking for just JSON. But this implementation is required by the web application part. And then we have a web application library. This one makes it very easy to build a HTTP server that serves HTML but also speaks REST and SOAP. The current implementation consists of a HTTP server class to which you can add controllers. Each controller has a path prefix and handles requests for some entries in this uri path. The base class controller is simple and in fact is just a base class. The HTML controller can be used as a base class so you can add methods that will be called for certain URI paths. In combination with the available tag processors you can then create and return dynamic XHTML pages. The REST and SOAP controllers likewise can be used as base classes to export methods that take simple or complex named parameters and return JSON and SOAP enveloped data structures respectively. Full documentation can be found at: [www.hekkelman.com/libzeep-doc/](https://www.hekkelman.com/libzeep-doc/) Building libzeep ---------------- To build libzeep you have to have [cmake](https://cmake.org/) installed. It is also recommended to install [mrc](https://github.com/mhekkel/mrc) in order to have resources support in libzeep. The commands to build libzeep from the command line are e.g.: ``` git clone https://github.com/mhekkel/libzeep cd libzeep mkdir build cd build cmake .. -DZEEP_BUILD_TESTS=ON cmake --build . ctest cmake --install . ``` On Windows, assuming you have [boost](https://boost.org) installed in C:\Boost, the steps would probably look something like (using powershell): ``` git clone https://github.com/mhekkel/libzeep cd libzeep mkdir build cd build cmake .. -DZEEP_BUILD_TESTS=ON -DBOOST_ROOT=C:\Boost cmake --build . --config Release ctest -C Release cmake --install . --config Release ``` The windows version will by default install in your local AppData folder. Use the --prefix option to specify another location. libzeep-5.1.8/changelog0000664000175000017500000001463514324170113014700 0ustar maartenmaartenVersion 5.1.8 - Fix bug in parsing binary multipart/form-data parameters Version 5.1.7 - Fix dependency on std::filesystem library Version 5.1.6 - Fix the visibility of types in zeep::json::detail::iterator_impl - Reintroduced resolving of bind addresses, using "localhost" is easier than only numerical addresses. - Return correct status code in case of catching an exception in rest controllers. - Fix dependency in .cmake config file for Threads - Generate config.hpp file. Version 5.1.5 - update zeepConfig.cmake to include required link file - fix infinite loop in processing incorrect :inline constructs Version 5.1.4 - Update cmakefile to work more reliably Version 5.1.3 - Update SONAME to 5.1 - Create reproducible builds of documentation (and thus whole package) Version 5.1.2 - Fix glob code to match empty path specifications for controllers - Change CMakeLists file to generate only shared or static libs, but not both - Generate pkgconfig file again Version 5.1.1 - Removed uriparser again. URI implementation is now regex based. - Replaced GNU configure with cmake Version 5.1.0 - Added base32 encoding/decoding - Various REST controller fixes, mainly in accepting parameters - The library is now always compiled with PIC - Requred boost version is now 71 - Ignore SIGCHLD in foreground mode, signals are now handled by cross platform implementation - reintroduced a Windows version - Fixed a couple of security issues, all caused by incorrectly parsing uri's. Switched to using liburiparser for now. Version 5.0.2 - Add support for building shared libraries - Decoupled example code from rest, should now be build after installation, or use the STAGE=1 option to make. - rest controller can now return a reply object, adding flexibility Version 5.0.1 - Update makefile to include changes made for the Debian package - Fix writing HTML, proper empty elements - Added some workarounds to build on macOS - Fixed endianness issue in sha implementation Version 5.0.0 - Total rewrite of about everything - Controllers are now the main handlers of requests, three major variants for HTML, REST and SOAP. - Implemented some cryptographic routines in order to drop dependency on libcrypto++ - Redesigned authentication, dropped HTTP digest and opted for JWT, added security_context class for managing all of this - Code now requires a c++17 compiler - Lots of test code added - Added some real world examples - Tested with boost 1.65.1 up to 1.73 - Refactored request, it is now a class and credentials are always stored if a valid access-token was detected. - A bunch of fixes to make web application work behind a reverse proxy. Version 4.0.0 - Major rewrite, may break code. - Added a JSON parser and compatible internal object, is analogous to the version of nlohmann. Replaces the old element class in webapp. - Removed parameter_map, get request parameters from request itself. - Reorganized code, separate folder for lib and examples. - Refactored webapp and move the tag processing into a separate class. Added a second tag processor that mimics thymeleaf. Version 3.0.2 - Change in zeep/xml/serialize.hpp for gcc 4.7 compiler Version 3.0.1 - added cast to uint32 in webapp-el to allow compilation on s390 Version 3.0 - Support for non-intrusive serialization. The call to serialize is now done by the templated struct zeep::xml::struct_serializer. You can create a specialization for this struct to do something else than calling MyClass::serialize. - xml::document now has serialize and deserialize members. - A streaming input added, process_document_elements calls the callback for all elements that match a given xpath. - ISO8859-1 support (finally) - some xpath additions (matches e.g.) - changed signature of various find routines to work with const char* - changed authentication mechanism in webapp to allow multiple realms - some small changes in writing out XML documents/xml::writer - added line number to validation error messages - process value tag of mrs:option tag - el processing returns original string if it does not contain an expression - in expression language, support var1[var2] constructs - fix in writing doctype declaration - insert/erase implementations of zeep::xml::node... - fixed bug in el implementation (dividing numbers) - extended log format of HTTP server to allow better awstat logs (using the extra fields for SOAP calls). Also writes the X-Forwarded-For client if any. - Patches provided by Patrick Rotsaert: serializer for xsd:time and optional data types based on boost::optional. - Split out log_request as a virtual method in http::server - Added quick and dirty test for requests from mobile clients - Added virtual destructors to all base classes. - OPTIONS and HEAD support in web server Version 2.9.0 - Added some calls to xml::writer to write e.g. xml-decl and doctypes Version 2.8.2 - Fix in unicode support code - Preliminary support for handling authentication Version 2.8.1 - removed boost::ptr_vector/ptr_list. - work around a crashing bug in el::object[string] when compiling with icpc Version 2.8.0 - write_content added. - nullptr instead of nil, added a stub for old compilers. - fix in el::object (mixing up uint64 and size_t) Version 2.6.3 - Fix for stack overflow in delete large XML documents Version 2.6.2 - Apparently the word size has changed on amd64/GNUC targets. I've switched to a more robust template selection algorithm for WSDL generation. Version 2.6.1 - Fix in keep-alive (clear reply object after each served reply) - Implemented missing at() virtual method for el::vector - Writing comments now validates output - check mounted paths instead of only the root for handlers - optimization flags in makefile Version 2.6.0 - Changed parameter_map (for webapp) into a multimap Version 2.5.2 - Throw exception when attempting to write null character. Version 2.5.1 - Removed the use of split_iterator from webapp since it generated crashes when built as a shared library... Version 2.5.0 - added webapp, a base class used to create web applications, it uses XHTML templates to fill in. It uses a script language to enable interaction with the C++ code. Version 2.1.0 - support for HTTP/1.1 - added multiplication in xpath expression language... oops - revised interface for container::iterator, now it is possible to use more STL and boost functions on a container directly, like: xml::container cnt = ...; foreach (node* n, cnt) { cout << n->name() << endl; } libzeep-5.1.8/cmake/0000775000175000017500000000000014324170113014075 5ustar maartenmaartenlibzeep-5.1.8/cmake/FindFilesystem.cmake0000664000175000017500000000442614324170113020032 0ustar maartenmaarten# Simplistic reimplementation of https://github.com/vector-of-bool/CMakeCM/blob/master/modules/FindFilesystem.cmake if(TARGET std::filesystem) return() endif() cmake_minimum_required(VERSION 3.10) include(CMakePushCheckState) include(CheckIncludeFileCXX) include(CheckCXXSourceCompiles) cmake_push_check_state() set(CMAKE_CXX_STANDARD 17) check_include_file_cxx("filesystem" _CXX_FILESYSTEM_HAVE_HEADER) mark_as_advanced(_CXX_FILESYSTEM_HAVE_HEADER) set(code [[ #include #include int main() { auto cwd = std::filesystem::current_path(); return EXIT_SUCCESS; } ]]) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS_EQUAL 8.4.0) # >> https://stackoverflow.com/questions/63902528/program-crashes-when-filesystempath-is-destroyed set(CXX_FILESYSTEM_NO_LINK_NEEDED 0) else() # Check a simple filesystem program without any linker flags check_cxx_source_compiles("${code}" CXX_FILESYSTEM_NO_LINK_NEEDED) endif() if(CXX_FILESYSTEM_NO_LINK_NEEDED) set(_found 1) else() set(prev_libraries ${CMAKE_REQUIRED_LIBRARIES}) # Add the libstdc++ flag set(CMAKE_REQUIRED_LIBRARIES ${prev_libraries} -lstdc++fs) check_cxx_source_compiles("${code}" CXX_FILESYSTEM_STDCPPFS_NEEDED) set(_found ${CXX_FILESYSTEM_STDCPPFS_NEEDED}) if(NOT CXX_FILESYSTEM_STDCPPFS_NEEDED) # Try the libc++ flag set(CMAKE_REQUIRED_LIBRARIES ${prev_libraries} -lc++fs) check_cxx_source_compiles("${code}" CXX_FILESYSTEM_CPPFS_NEEDED) set(_found ${CXX_FILESYSTEM_CPPFS_NEEDED}) endif() endif() if(_found) add_library(std::filesystem INTERFACE IMPORTED) set_property(TARGET std::filesystem APPEND PROPERTY INTERFACE_COMPILE_FEATURES cxx_std_17) if(CXX_FILESYSTEM_NO_LINK_NEEDED) # Nothing to add... elseif(CXX_FILESYSTEM_STDCPPFS_NEEDED) set_target_properties(std::filesystem PROPERTIES IMPORTED_LIBNAME stdc++fs) set(STDCPPFS_LIBRARY stdc++fs) elseif(CXX_FILESYSTEM_CPPFS_NEEDED) set_target_properties(std::filesystem PROPERTIES IMPORTED_LIBNAME c++fs) set(STDCPPFS_LIBRARY c++fs) endif() endif() cmake_pop_check_state() set(Filesystem_FOUND ${_found} CACHE BOOL "TRUE if we can run a program using std::filesystem" FORCE) if(Filesystem_FIND_REQUIRED AND NOT Filesystem_FOUND) message(FATAL_ERROR "Cannot run simple program using std::filesystem") endif() libzeep-5.1.8/doc/0000775000175000017500000000000014324170113013562 5ustar maartenmaartenlibzeep-5.1.8/doc/Jamfile.v2.in0000664000175000017500000000402214324170113016005 0ustar maartenmaartenusing boostbook : /usr/share/xml/docbook/stylesheet/docbook-xsl/ : /usr/share/xml/docbook/schema/dtd/4.2/ : /usr/share/boostbook ; using xsltproc : @XSLTPROC@ ; using doxygen : @DOXYGEN@ ; using fop : @FOP@ ; using quickbook : @QUICKBOOK_SCRIPT@ ; doxygen autodoc : [ glob @CMAKE_SOURCE_DIR@/include/zeep/*.hpp ] [ glob @CMAKE_SOURCE_DIR@/include/zeep/xml/*.hpp ] [ glob @CMAKE_SOURCE_DIR@/include/zeep/json/*.hpp ] [ glob @CMAKE_SOURCE_DIR@/include/zeep/http/*.hpp ] [ glob @CMAKE_SOURCE_DIR@/include/zeep/rest/*.hpp ] [ glob @CMAKE_SOURCE_DIR@/include/zeep/soap/*.hpp ] : "PREDEFINED=\"HTTP_SERVER_HAS_PREFORK\"" HIDE_UNDOC_MEMBERS=YES EXTRACT_PRIVATE=NO ENABLE_PREPROCESSING=YES MACRO_EXPANSION=YES EXPAND_ONLY_PREDEF=YES SEARCH_INCLUDES=YES INCLUDE_PATH=$(BOOST_ROOT) FULL_PATH_NAMES=YES STRIP_FROM_PATH=@CMAKE_SOURCE_DIR@/include SORT_MEMBER_DOCS=NO ; xml libzeep-doc : @CMAKE_SOURCE_DIR@/doc/libzeep-doc.qbk ; boostbook standalone : libzeep-doc autodoc : boost.image.src=images/logo.png boost.image.alt="\"libzeep\"" boost.image.w=100 boost.image.h=50 nav.layout=none css images boost.root="https://www.hekkelman.com/libzeep-doc/include/" html.stylesheet=css/zeep.css img.src.path=images/ boost.graphics.root=images/ boost.mobile=1 ; install css : [ glob @CMAKE_SOURCE_DIR@/doc/css/*.css ] : html/css ; install images : [ glob @CMAKE_SOURCE_DIR@/doc/images/*.png ] [ glob @CMAKE_SOURCE_DIR@/doc/images/callouts/*.png ] : html/images ; explicit css ; explicit images ; libzeep-5.1.8/doc/Jamroot.jam0000664000175000017500000000000114324170113015655 0ustar maartenmaarten libzeep-5.1.8/doc/css/0000775000175000017500000000000014324170113014352 5ustar maartenmaartenlibzeep-5.1.8/doc/css/zeep.css0000664000175000017500000002674514324170113016045 0ustar maartenmaarten/* CSS file for libzeep documentation Starts with the contents of boostbook.css */ /*============================================================================= Copyright (c) 2004 Joel de Guzman http://spirit.sourceforge.net/ Distributed under the Boost Software License, Version 1.0. (See accompany- ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) =============================================================================*/ /*============================================================================= Body defaults =============================================================================*/ body { margin: 1em; font-family: sans-serif; } /* Keep the content width reasonable */ body > * { max-width: 1200px; margin: 0 auto; } /*============================================================================= Paragraphs =============================================================================*/ p { text-align: left; font-size: 10pt; line-height: 1.15; } /*============================================================================= Program listings =============================================================================*/ /* Code on paragraphs */ p tt.computeroutput { font-size: 9pt; } pre.synopsis { font-size: 9pt; margin: 1pc 4% 0pc 4%; padding: 0.5pc 0.5pc 0.5pc 0.5pc; } .programlisting, .screen { font-size: 9pt; display: block; margin: 1pc 4% 0pc 4%; padding: 0.5pc 0.5pc 0.5pc 0.5pc; } /* Program listings in tables don't get borders */ td .programlisting, td .screen { margin: 0pc 0pc 0pc 0pc; padding: 0pc 0pc 0pc 0pc; } /*============================================================================= Headings =============================================================================*/ h1, h2, h3, h4, h5, h6 { text-align: left; margin: 1em 0em 0.5em 0em; font-weight: bold; } h1 { font-size: 140%; } h2 { font-weight: bold; font-size: 140%; } h3 { font-weight: bold; font-size: 130%; } h4 { font-weight: bold; font-size: 120%; } h5 { font-weight: normal; font-style: italic; font-size: 110%; } h6 { font-weight: normal; font-style: italic; font-size: 100%; } /* Top page titles */ title, h1.title, h2.title h3.title, h4.title, h5.title, h6.title, .refentrytitle { font-weight: bold; margin-bottom: 1pc; } h1.title { font-size: 140% } h2.title { font-size: 140% } h3.title { font-size: 130% } h4.title { font-size: 120% } h5.title { font-size: 110% } h6.title { font-size: 100% } .section h1 { margin: 0em 0em 0.5em 0em; font-size: 140%; } .section h2 { font-size: 140% } .section h3 { font-size: 130% } .section h4 { font-size: 120% } .section h5 { font-size: 110% } .section h6 { font-size: 100% } /* Code on titles */ h1 tt.computeroutput { font-size: 140% } h2 tt.computeroutput { font-size: 140% } h3 tt.computeroutput { font-size: 130% } h4 tt.computeroutput { font-size: 130% } h5 tt.computeroutput { font-size: 130% } h6 tt.computeroutput { font-size: 130% } /*============================================================================= Author =============================================================================*/ h3.author { font-size: 100% } /*============================================================================= Lists =============================================================================*/ li { font-size: 10pt; line-height: 1.3; } /* Unordered lists */ ul { text-align: left; } /* Ordered lists */ ol { text-align: left; } /*============================================================================= Links =============================================================================*/ a { text-decoration: none; /* no underline */ } a:hover { text-decoration: underline; } /*============================================================================= Spirit style navigation =============================================================================*/ .spirit-nav { text-align: right; } .spirit-nav a { color: white; padding-left: 0.5em; } .spirit-nav img { border-width: 0px; } /*============================================================================= Copyright footer =============================================================================*/ .copyright-footer { text-align: right; font-size: 70%; } .copyright-footer p { text-align: right; font-size: 80%; } /*============================================================================= Table of contents =============================================================================*/ .toc { margin: 1pc 4% 0pc 4%; padding: 0.1pc 1pc 0.1pc 1pc; font-size: 80%; line-height: 1.15; } .boost-toc { float: right; padding: 0.5pc; } /* Code on toc */ .toc .computeroutput { font-size: 120% } /* No margin on nested menus */ .toc dl dl { margin: 0; } /*============================================================================= Tables =============================================================================*/ .table-title, div.table p.title { margin-left: 4%; padding-right: 0.5em; padding-left: 0.5em; } .informaltable table, .table table { width: 92%; margin-left: 4%; margin-right: 4%; } div.informaltable table, div.table table { padding: 4px; } /* Table Cells */ div.informaltable table tr td, div.table table tr td { padding: 0.5em; text-align: left; font-size: 9pt; } div.informaltable table tr th, div.table table tr th { padding: 0.5em 0.5em 0.5em 0.5em; border: 1pt solid white; font-size: 80%; } table.simplelist { width: auto !important; margin: 0em !important; padding: 0em !important; border: none !important; } table.simplelist td { margin: 0em !important; padding: 0em !important; text-align: left !important; font-size: 9pt !important; border: none !important; } /*============================================================================= Blurbs =============================================================================*/ div.note, div.tip, div.important, div.caution, div.warning, p.blurb { font-size: 9pt; /* A little bit smaller than the main text */ line-height: 1.2; display: block; margin: 1pc 4% 0pc 4%; padding: 0.5pc 0.5pc 0.5pc 0.5pc; } p.blurb img { padding: 1pt; } /*============================================================================= Variable Lists =============================================================================*/ div.variablelist { margin: 1em 0; } /* Make the terms in definition lists bold */ div.variablelist dl dt, span.term { font-weight: bold; font-size: 10pt; } div.variablelist table tbody tr td { text-align: left; vertical-align: top; padding: 0em 2em 0em 0em; font-size: 10pt; margin: 0em 0em 0.5em 0em; line-height: 1; } div.variablelist dl dt { margin-bottom: 0.2em; } div.variablelist dl dd { margin: 0em 0em 0.5em 2em; font-size: 10pt; } div.variablelist table tbody tr td p, div.variablelist dl dd p { margin: 0em 0em 0.5em 0em; line-height: 1; } /*============================================================================= Misc =============================================================================*/ /* Title of books and articles in bibliographies */ span.title { font-style: italic; } span.underline { text-decoration: underline; } span.strikethrough { text-decoration: line-through; } /* Copyright, Legal Notice */ div div.legalnotice p { text-align: left } /*============================================================================= Colors =============================================================================*/ @media screen { body { background-color: #FFFFFF; color: #000000; } /* Syntax Highlighting */ .keyword { color: #0000AA; } .identifier { color: #000000; } .special { color: #707070; } .preprocessor { color: #402080; } .char { color: teal; } .comment { color: #800000; } .string { color: teal; } .number { color: teal; } .white_bkd { background-color: #FFFFFF; } .dk_grey_bkd { background-color: #999999; } /* Links */ a, a .keyword, a .identifier, a .special, a .preprocessor a .char, a .comment, a .string, a .number { color: #005a9c; } a:visited, a:visited .keyword, a:visited .identifier, a:visited .special, a:visited .preprocessor a:visited .char, a:visited .comment, a:visited .string, a:visited .number { color: #9c5a9c; } h1 a, h2 a, h3 a, h4 a, h5 a, h6 a, h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover, h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited { text-decoration: none; /* no underline */ color: #000000; } /* Copyright, Legal Notice */ .copyright { color: #666666; font-size: small; } div div.legalnotice p { color: #666666; } /* Program listing */ pre.synopsis { border: 1px solid #DCDCDC; } .programlisting, .screen { border: 1px solid #DCDCDC; } td .programlisting, td .screen { border: 0px solid #DCDCDC; } /* Blurbs */ div.note, div.tip, div.important, div.caution, div.warning, p.blurb { border: 1px solid #DCDCDC; } /* Table of contents */ .toc { border: 1px solid #DCDCDC; } /* Tables */ div.informaltable table tr td, div.table table tr td { border: 1px solid #DCDCDC; } div.informaltable table tr th, div.table table tr th { background-color: #F0F0F0; border: 1px solid #DCDCDC; } .copyright-footer { color: #8F8F8F; } /* Misc */ span.highlight { color: #00A000; } } @media print { /* Links */ a { color: black; } a:visited { color: black; } .spirit-nav { display: none; } /* Program listing */ pre.synopsis { border: 1px solid gray; } .programlisting, .screen { border: 1px solid gray; } td .programlisting, td .screen { border: 0px solid #DCDCDC; } /* Table of contents */ .toc { border: 1px solid gray; } .informaltable table, .table table { border: 1px solid gray; border-collapse: collapse; } /* Tables */ div.informaltable table tr td, div.table table tr td { border: 1px solid gray; } div.informaltable table tr th, div.table table tr th { border: 1px solid gray; } table.simplelist tr td { border: none !important; } /* Misc */ span.highlight { font-weight: bold; } } /*============================================================================= Images =============================================================================*/ span.inlinemediaobject img { vertical-align: middle; } /*============================================================================== Super and Subscript: style so that line spacing isn't effected, see http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=1&postId=5341 ==============================================================================*/ sup, sub { height: 0; line-height: 1; vertical-align: baseline; position: relative; } /* For internet explorer: */ * html sup, * html sub { vertical-align: bottom; } sup { bottom: 1ex; } sub { top: .5ex; } /*============================================================================== Indexes: pretty much the same as the TOC. ==============================================================================*/ .index { font-size: 80%; padding-top: 0px; padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; } .index ul { padding-left: 3em; } .index p { padding: 2px; margin: 2px; } .index-entry-level-0 { font-weight: bold; } .index em { font-weight: bold; } /* My changes */ pre { font-family: monospace; border: solid 1px gray; padding: 6px; background-color: #eee; } span.comment { color: gray; } libzeep-5.1.8/doc/images/0000775000175000017500000000000014324170113015027 5ustar maartenmaartenlibzeep-5.1.8/doc/images/alert.png0000664000175000017500000000113314324170113016642 0ustar maartenmaartenPNG  IHDRaDŽsBITOPLTE{♙PL9][U@5YH5*A>9ya50fffPD1-%"{dPfffK<LLK̙=;9{{{ $ɡmiTЦ70PNH;/O?\L:1!3.6+)" RJ5tRNS| pHYs B4%tEXtSoftwareMacromedia Fireworks MX 2004vIDATxm `4b$ s>wqb/w;߇NCd~`Z%G}?3& jĜ{)I՝KN$#"@!X ɷE%p!IENDB`libzeep-5.1.8/doc/images/blank.png0000664000175000017500000000056614324170113016633 0ustar maartenmaartenPNG  IHDRL\gAMA a-IDATxA 0MF4 z;3'kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` `fHfIENDB`libzeep-5.1.8/doc/images/callouts/0000775000175000017500000000000014324170113016655 5ustar maartenmaartenlibzeep-5.1.8/doc/images/callouts/1.png0000664000175000017500000000060714324170113017526 0ustar maartenmaartenPNG  IHDR v 9NIDATx1n@E 0H Mr.D9D ΁RPB[$"EFZ ;ibDFfvӟ,v݃^FI)pID)kcoN}KPUշDð= Dfz^33_Vc5hu]c6a29":m,Kq,.KTH)ADp]{?Ao2\Wcx|z_:f,7usYQUէzmYYsBsN꺾.ժx~$ K]}"fϓ\TIENDB`libzeep-5.1.8/doc/images/callouts/12.png0000664000175000017500000000075014324170113017607 0ustar maartenmaartenPNG  IHDR v 9IDATx=`'yL"X 1 ޟR#:;K. AP#4Hx>:EgC0t^?K)u|P'f!{4/a,JGe}WJ%E<=t]8vf, zn1%NA`0s4M1L DXVj.9bEX.8, nJYmp(3"p]IR 0`14E!msڳ@4dY˲iNhۨV9N0}H)el6F#Z-evCEp8 o/+!B`8b>#c4 z=q}_ lyy&|KyH!< _Ǫd{WIENDB`libzeep-5.1.8/doc/images/callouts/13.png0000664000175000017500000000077514324170113017617 0ustar maartenmaartenPNG  IHDR v 9IDATx?ϚPALŠqdqiGWӽ_pM|nv+1w2(Avo^g-M}]$.B05FAc&ӥ^ߕeA)4~1ĽE0Fp^A^zvk1#4MC4m1H)>)`14M1Ln]]A|&"]}bLje$|>i<m8<p8@u$I\.1 $ c mCo59Ge, RJf3TUb<By.,,84 V QsDZ8N/i~yzAJ "y*yhӰyv[H)IJIeYRzʲ0 j}ٸ *C$TEQ|lWB?OhNIENDB`libzeep-5.1.8/doc/images/callouts/15.png0000664000175000017500000000077314324170113017617 0ustar maartenmaartenPNG  IHDR v 9IDATxһPMx-7P}V+g\E0Mm4M|;,H)^j0L0QTP.6 C "mH)irQ~f^i" C"x"3l"͢`4.b$a"4M8c㘓$ryf<ϳ^iEro( ttIENDB`libzeep-5.1.8/doc/images/callouts/2.png0000664000175000017500000000067614324170113017535 0ustar maartenmaartenPNG  IHDR v 9IDATxAjQAT\DI!xͣϤ( 335N10ƀ@DBhjuǙI)?2¬B 0b@*hU^|Eժr>cl)98ok!"aQe5 1\.R,O#F3^V5(BCUU@)k-BYPJȲyt>ab" CL&p$% !\.X,j 3̵z8>kK5zhIENDB`libzeep-5.1.8/doc/images/callouts/7.png0000664000175000017500000000061514324170113017533 0ustar maartenmaartenPNG  IHDR v 9TIDATxjADQrלER@^7y>H .͂ڊEAvRݡAc} M&xoQRo?(Ng^KR /33R""Q, 15nQղ~۹ŢF*@DB`Za4Z{6T*h4MT_kJ!|rfA׃8g'24 k!NNzR8Mf~9LSTիpZqc3V BpE n|>%$3Þ}fORBJ fo3[cL8;Iky;svϞOIENDB`libzeep-5.1.8/doc/images/callouts/8.png0000664000175000017500000000066214324170113017536 0ustar maartenmaartenPNG  IHDR v 9yIDATxб@ h(I)$C\cHqU?BDM)J2nʝ? Y]=S^jIDܽIc'F#=zZu=w$"1rm4MQ%Rf "seY~8N[5:Dtsy$ D"ab>/[g眔4 =(YZb"B(boa80"ۏ,0lP58303b?n7\.}DiP`+$ 4EX<ͰR NZ!{1a9kLJqm[k~`ĪU IENDB`libzeep-5.1.8/doc/images/callouts/9.png0000664000175000017500000000064414324170113017537 0ustar maartenmaartenPNG  IHDR v 9kIDATxOj@/U .MsCt!]x .\7%0n4(&o9{CA)繉;1M3QZ1)eY 8Bj? #"öZ߯eYj`Qn*@!a%(GF# "4 Q/Rb|߇y<C)u1Pv{U$A7 RJض]ֿN8N)Rl8& \ׅeY$IAz8>KDӁf`0)Z-cyJ4} ZRx[$˲\Jy廠guIENDB`libzeep-5.1.8/doc/images/caution.png0000664000175000017500000000234214324170113017200 0ustar maartenmaartenPNG  IHDRשPLTE!!11BBZZcckkss{{sss{s{cZcc19B191_\bKGDHIDATxuێ@ b̮IcAP`bxsBEU_Oh<`'1wp Wȝt:%su&w,Hȯf 59v:\^ F;`HJ'871ZJ+b2B8Q$wRK v)nRpt}VbTzDv@=rPduvz{Nl;a*CtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com!*tEXtSignaturec70387830aa4ecd5a4a32a852283b3d6PtEXtPage24x24+0+0r[ 1IENDB`libzeep-5.1.8/doc/images/draft.png0000664000175000017500000004205614324170113016644 0ustar maartenmaartenPNG  IHDRKZJgAMA a IDATxv۸asV8 BLhp7v8<[ w`9*i$4`-B ! xb^8x5oTGa0 s;&!b;07kBC}b$xkeY?|os$x cx? /󇄎 {w:Rqpt5Ih'xH1' 桕R4EAB;[ ?Hhŏ1}ZBNBHQvC4)rB29턶n}|CCkׯzA= 4ew i}dx4! ZHNWUŸC4b/_a~9B[4l/C4l,+4l)rϟ? 4`3&+m-c 8z%*i@55 WO#xyy9NB7?6ϳ3cNhLkظwNH1&i֮.yB e=9i4M8mrv/ .@b,5ẻVwͬ [ xm=oD% k v R"e2ʽV}Bv=%~n4M0\.OǽKkm{_ބ4Dd桿 8Z9ɧGHhT4{C% μ$ʤ k4!OT,;NB rzAHCyiʲ,NӂZikòvV41} 7}JyeѳIބ4<蛄zӾgiBcB rzi:InL녙~~~.K܅JrWB+iO}%BH$ 3?UNpEz2?,fNnXk]%kg~J~ZK=q ibߛyq|ArBkyݗۉ#1' _Ьvmۮy*[OSIH]Vބ4|ޑZMrnxޣ$eQI w*~o*i{Oθ Rb44Њ.uYTiI_;[IptЩJph:szs {SI8.j#u=M% H44#b=촞p8>OQcN>4! (Hh4! XE4UU" igMӐ{T.r8$u7! eFI??MHHQӄ44;}NLl AvNr.}CӮ$t⬧ iIS 0 iS +Ŗӄ4DND~1)`nEGF% `Hh8ɸ7! `HhxCNvWOFM]bO1U4 i;&9MH ӄ4`O1l.XN?uB>/7" 'ZQI ]p2iB+B@Hhʜ*! B$49sVJ @\H5qaqvuY'"D^Cm[2!אr<6j޻@H^(;4M֕! ;O }N1%oEQ$! /5t4^oy^UUUUί kxI] kPCCi>jh l,zzve8l,iNXNpdrCI>Ӟv,QtkTvF,4-)7Ri546AHث09::! `O@BIرe~iHh(`iqoWHh܎JY? n&qx5]"i2<&ڜ&J4 \*Ih`pnmOXuҴiQIHֆ4 'i)dP8Ih8Ĝ4􅜟󜄆+T!غi8BQy_^^i8AH804\ڭm[Ƙ_~eY%<*iø7pD4vn5rqoĉJqc.˒zq"ڒ{#B wވ40H9(@\q}BN#6Iy}},K9P)4|f~Zko=B$ygYVU1>2D.UU繜 uӈ! lVJYkEQy^UQ ! lBf}A=mnIO\ 9 fNh6ƔeYEe06V&5km4YIaMZ@Nc4 0Ȫ-9+1pFx4^H]ueEQ( kiFHAu]d5cn вjš2WiCHLOITSX;AN# Ba^ XReiY~Qʲmim\nFX8'Cx ! ?niaij^зl ~`~ ooo}?|.Zoa-cw2r"}ߟ1MTUKw] eY>???<8>|^sI=:"y◗5t:ep5,!MF<2i|BCW*RN| D6p/̩_.%w}Ж ._{,\54+*i`38,w&M4ϳXKsߺ,ˤ2:~42HY /diIS׵?U|Ǹ7 / wÕׇ0 r:( 9b+{9CVm+qoWGлC% lm.J)kP0RU/M?Id2i|_Q&$^u~LY]}\duuGa.ޖ-#kss:Haؒ fY2eqs>)y9i/B/7v\}Y[Zske75~QIbuu<[zE% kו;eZQL/b,˺i^-g2ĆeuefY_zW\Z*Q9:YU|c,x¶i j0qW>YKڐ^Xk*7&v)a|Vi vooo]׭Hi}$tQ߷6m4@6,M=;i[%!?69Lؒ F\݃WBN0"9[vG|e ޘ׿_k}:qC#J+Y$@1MӬÚwބPR:+䈎(Xup|ݼWOhHw,G꺮JEvEeMӐP4{uXZ맧`FRCOi.ZNHhB؇y7^u4Mߎ%>KpuCX>Hm:Z(W jmBvc?\IXIӄ&CRX')5{"FT D J,dۉ 4'8_u:8W7&ߑC$e w>NBSUrYsIy F Ry˪ye m$4GH{bq}E0ӫߑC$1KgmHhv/UNo/wxRXB(FԲglGDvZ+GnqZ7_j5mB/Aļ=$J|/ҟ_qW'KetߓEUUOOOө,[އe_n?YF:Y!ӏE#YT-U80 ZIiMI-O>FBe,VJɦfHh܋Jثmjyzz7I[,v,M0PId-BT{wx7ZήUUI}aOi`e)˲;Km+ʷf^6տ#_ WZN1t})VE 6?`ߜ:uݏӮMӐ^W@ve~L~Hh`I#"Z;ϳA$[k-7Z~SwA~X%ҁ.~DHcKKO$t(%9 u5gyJ]EHS}󼪪wNBb4!Nx,zZJjJ8///+w϶u]4A6yXZbpyaMdeZk<ш/&QI#NBk[2x{zǗ?ڲ,1$4B!H+} IDAT)gWUroleOOOr5! $۶dLZ7M|___y}! neOz\&On{'Xk-ےDBk\X`CZ9XW grʯʲl[AbI/^ dOx4ܓ}߯_RWU^N֣cڶm{Gz˧iJ/?1UU$4??pF^__o;/&:^1_x~Ϝ|>;y~}anZeYYeYfY˘Ll;Udw ]j^z_ 1{RC;OOtrʲӠ4r0r䆓K:~DH?xSt:UUUsG7H1d~&W#GH|Z_~eiwG^I74دb4ׯ_n_ZuݮZ+/%_i(a[w>Na 菤vR:}c_J>Ӏo4܏rp]ۮYʲiL68yOd8n|>:5tMlA%v]LN.u\8u!}hkh <#YD++!士m -IM8-/j.(<0b!9Oh+#eY:ajSJMӔD+)4gB L'ڊ8[N])EH?sJeYd`VN\mYk˲trҀ'>UIb_qX;HfsuoD++:HW\'믣 SxO 'J)cL{Vǜm @ABbᔢ*'kpn7OX<^8g 4v ';y1 dkmBv56}2 ]>gq#u]hTeۦQ8Ԟb7r2-f&dY䳋r0 8ק-磆|OWiN)pyu)9ŧ1feNf&)ZّɥdKPtzHZms5<0 Cu@҉!o&bYm[.r+a:Ȁ|A۶m:` -e3R}1( WEc-FʏЏY?~òI۠}O7𰔟ȩ:$+^q-Y00 I$ckmoѢ,KWcfsGy褁QoZWUu( WiX3 <&GsJH5iZ3!mͲ,h0Ƹ:rAo1?@B1MW# #gapr)P@'^celM%W}azGΙ3z^IkuʾnccwZm!Ůicqu?;"3? @1 (O=b{LEa(i|>; &4M0,u km4+{:z_v aGB]Gk&_cpzdQTχFuyElB;Y##Nni첫Oi^Ek4,vrc@9٘b|JEʮ->N:KFe$܈'іڶu:T4־RCZ+.u\ \~q9r#e)> t]v=5kr䟉<_c㑔<ҒZ+gr?Y/j1Ŷ,`wOx ! yyoc$,˲,`VJ}/,9돟$3[)@~1j[ίw;tx؃#WXZ;r߫|tUU5M#ߗeQE~$R巌'ǜ?5nq:RFHo)LNDnZ)U8-ijDKGr|!=G>X-㸮kלNoyB+ny]cO R1Y ޞmz=x qo e`|c?*/Slӷ;TBtwPz<5cRd a7Iΰ10 {r3YFŗs/g2(cEHG9MBozT\)u]dE"ٲH!c8wI,EtJOX˒ǻ]0\ BzӌrGNe܅2އ4 fFAx72Xk0 LBGNvA!`$7IhY<ϳ ^G-[Rt/+jh` $9[!Q2jD냗%654!?^nIbUJxdm9Rb&In q }u{iߣܲ+u]\JmّIJ):i!c{?/_B*޲,<@E$s< )܃s}oNK,˪zm0 {A !yw]z`M.RHw$2-[@lYON\f^^>@o>\`&jۂ&H 崵r(О,TȾ^ߵ"E%izf.NB1#SmNБ%]| bFH'n>2:N׭ga$4-B:}iz"܋;4/pYQ󙄎$?*VOkHB8&*VO;GB8,B@[$4##e_9MB88Bp$4GNÊ9Ihqř$4,C-IhFHݒrwBB;f$뺖7ABGl  oHhIh ! ??MB7rPNo2,}1&sB%Zi71Z,c1J)1F#'ظ4M:ܓqgcLu4 _U˯G]-\Eey/ն/m,*GX%8ھiZf)oRUei[aeiek$8JNoEQcZFɽnk)m CYyWUaxuYmO@i {{{KcH@VZ8 C4A7if8}솱8e GRaƽӉqo㐖sXӆ֧)zim>=0wv7Miǰn+Ƙii~D!=MS۶;3u4z{Qi^^^PsUUeYn}/J\?-eL[k1,3?@"}œHx++qIږI7<,G0 oooZbXV-kS-_ȟ9V7joez=.˲TeYJdYfonQe<8>hHtuu 0 Ȝ=H`|\<BZݵFf9LZe5)7**ߓm}_9xʓЛXa|&r>?&@=͸7} *RV{xezЛ.Z|1rq<^!Б,|l>M|'*JY<n6B1? Iu/Ga}lA8g[Et:i}10 yA&z:׷6MmAw D4Fg{QEYiʲdVxxcHhW꺞贜aby&l{yNO4M1&Ao:eAZ-'R8=b8SsK" ž4HN8!CMGd~QnI䯗Jk-oyv<4bi&,3s454iӓeYQny.bZݐb!w]iGx44M>˲TQr{`]?}dőLodYFB .E91( Wnr5/@NSUo^bkؓ>,Noǎz`_=7 vZ,7;?8;a #!놝\JL;._plJ|d)לz:Czz2}%X|7/7 繓B,yDkm[ n=$iZyd-={8SO-scꖐVө+ɑ4Mn}4G0Io<K Q?өיboN1&˲EvgipHr:=ڢ(VNK*,Ů&#er:1ZkcNn  iźeY npNeDN^_ЪiHƽAJphCNJ-LiX%|!T,e iEN1|g![29g뻻i"wZ+ \%XVG[+Ka-/!؏lֿ$48+ ipcH+]Ӡ׼Nf !#k3B\Ҋ W^7\ *TN'8w BZ#\.qDVEL޽ʸw\}Y(9͸iy$ޑYJ.9f{ǣZ-g{ߛy@;][|{ߛƘ_ťސ$7Gk]%!q}C!-hq|JNhTQv"Ry WH+r:q۶]cLUU(V8^.'b1'ƐVO|IR*ZxZkmuN6뚖1'ސVZ,SRF??aiʳ4EQuROҊvm[W eY]l ^ 90 08Y-icҊ^g]utka6|s~պsuihҊ~ۄ.˒0vҊr9Ϯzz#IDAT. "o6RUUS7ːV weY^CZN$4l"VaBkhB6NHN1yQ/[I*!s({\4 J-rzm&VpuM iuz&5t:4CZ =r+b?.epV"i,^CZn6XNK說؝~H+9--rwB rVI䴿h$8>29qi}dkh"tJZ촞&j9MBa.ծr#;֜秗'ޘ `XIiOO*!"iF݋ƽCW"z,ii<Üj~Z"|&RCw4004_YYk|לw^k$4$לv8}dnBgiCH$& IiREH!œ& a}iFH-& y#6i~І9MBAҏ$Ih8Bz9MBk,Ih8Bځ9]eUU$4 `9,FTOpXKs##st9i:+s(BڟsBڣr,iipƜ&!$4#B:orZ:!Χ9$:-bFH.Ih7Ж&m?`uIENDB`libzeep-5.1.8/doc/images/home.png0000664000175000017500000000054614324170113016472 0ustar maartenmaartenPNG  IHDR~+sBITO$PLTEC@>`^\&# ҶQOMfff tRNS pHYs  ~%tEXtSoftwareMacromedia Fireworks MX 2004vtEXtCreation Time10/03/04ǯ nIDATxc %@bcnb`2!M a(2A a , 0L2p .`01an1Йl 0&X>/q#IENDB`libzeep-5.1.8/doc/images/important.png0000664000175000017500000000132214324170113017550 0ustar maartenmaartenPNG  IHDRשPLTE)))999BB1ZZ)ccBBBRRRkkBccRssRccckkk{{{9!9Z{c{JRZck{!19)11!ZRsckBc{bKGDCg bIDATxm S0 3E1KPTF'ǮQ]_iKB&F(6rc/Ѵ\Nh* 2p=:Jv?6| @}`^>s PvBɨ@d6"o;g`Ps+s%ǯ%@S{4ܾU-s"1ч?j<`g eZ* +æ2_Yv*lv~g Z[sY[Ða; =/oJĘ!fclRmRCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com!*tEXtSignaturec3ecc1fc5135d1e959695e569d213122riIENDB`libzeep-5.1.8/doc/images/logo.png0000664000175000017500000000552014324170113016477 0ustar maartenmaartenPNG  IHDRd25~bKGD pHYs  tIME -4Ab#iTXtCommentCreated with GIMPd.e IDATx[aLSW~jR(*BqJ9]’-G5(.5%e X5dc2'lC3 |?~PD}9==s$ L@6 Addx"z=bcc$߅"Jǎg+DV>Ӕ1~B1j/ރy? <9~'NX4 ztdy?T fۈU*<'"7Ȕ)Si#k" 2|IkCdR[[ BΜ93v< j54 ^|EDgϞjj}V#Fq?i2Dxnqi<ذa|޳^pL̛bOP;2Niiibv*ݍ1H6.٧̟?_}z|A:ܟ|VىAVnׯG}}=`֭())_z%m;wXk ,#~NןO:gE?m2$-[P]] G}:fBpp0ʕ+hn͆[nFl(߿{OwލÇVX*qGB9sJ+W_ػwFG_|߆lڴiC<(%@LLLdCC޽KK.l6 mNNkYߋ/--%Ɗ ]zz:/_~ǹiӦҐdFFМ>}]]]t\y&7o,xM,kՓ4 InxxJRdggt d2ywxhͪU[bb"'dw R__B.]f͢J̙3i4yf^|YRA/_.www?^A-qoڍr ;z$?** mmmL/!AdLywP(;v)NΠ#$$=<>޽{j8vze0{oJJJ/-@سg$xdqqסF&%%Q155$oaNN͛={KUV`0Pղ$Cx"hn4n``9s-Y1ݿ?bj,//Nc^^D˰0޼y+]Gdhܘ׭['b555l6YYYr o߾Ht\t I^cMM hġdq^\JJ |MjZFh6988H^xgrss_Mb~^?{,.]:N; 2!fh4AXp!N8kh4oEAAΝ >** +WDPPT*p 8đLϣNѠC``X BCCQZZ ͆F N'~[Vܹj]]]=pAqڵkBƍGƳxƤ$^~$o0==$#IܹcCC$oݺEq?'|}st뫑8Ɂ677_}4DFOk׮155UR… G!ӧOG{{;ZZZp8w bV,[ gFGGSN`nGAAoƽ{vc$&&t:Eݻغu+m+))sh"dee9кAW^o0$f3fΜ-[n\.֮]ȗy)Ν;˗/je~~>cq첷t,d``LL ˽h-[F^ϣGr͚5j寿@FGGKtq4lll2MRŋUUUngaa!,X@Ns߾}CO}u%^I磀jg?1 ~'qld"ʐ ?U}MJIENDB`libzeep-5.1.8/doc/images/next.png0000664000175000017500000000052014324170113016510 0ustar maartenmaartenPNG  IHDR~+sBITO$PLTE333QOM&# `^\C@>.?a tRNS pHYs  ~%tEXtSoftwareMacromedia Fireworks MX 2004vtEXtCreation Time10/03/04ǯ XIDATxc @bؾ e20A;@`V0  @  P`2 "j.mHn@r{R1P~dlIENDB`libzeep-5.1.8/doc/images/next_disabled.png0000664000175000017500000000212614324170113020343 0ustar maartenmaartenPNG  IHDREgAMA|Q cHRMz%u0`:oPLTE$x tRNSIDATxbf?LYLb 1c` T $7 @Pu_U AT`^\ tRNS pHYs  ~%tEXtSoftwareMacromedia Fireworks MX 2004vtEXtCreation Time10/03/04ǯ VIDATxc ^ b0t`200A &H„ @AP 0` B@$dslCvːݻleSf IENDB`libzeep-5.1.8/doc/images/prev_disabled.png0000664000175000017500000000212514324170113020340 0ustar maartenmaartenPNG  IHDREgAMA|Q cHRMz%u0`:oPLTE1nU tRNSIDATxbflP@1| &w @1B !7 XbĄ)@,P!?̿B. C 01 ;D%3L7@0@Y-`ίpftA & H@a4@ e aB 8$-C6IENDB`libzeep-5.1.8/doc/images/smiley.png0000664000175000017500000000154314324170113017042 0ustar maartenmaartenPNG  IHDR&GsBITOPLTEutpQVR;ڗDB8~|x1-'dNJfdNcaYr<92YQM8f%!XULؖusknjKki_DA/IF>y^a^I𦸷ϏifHTP>nskk30$\YKZWC¾ܙfˍplMa~vzvVfffLI5GC:dbSieQ\YQKIBZ@<3RRBhfffa^Va^CpmOw}by|yUp[tRNSXl"T pHYs  ~tEXtCreation Time10/12/04Bs%tEXtSoftwareMacromedia Fireworks MX 2004v/IDATxm}W0oKID)X b`I8v8N֩i,|`w; ? M <_Ce ʸU}Ě䪖('(o^U] pM/\(a~^,W}6rA j1T@Ftk+}PW" M 7qDbS9 1:zUb7V*J k߃+:Rwg$_9p^$B U秽ff{y/Wvg؞Գ姹X#MXyjM^"Þ/i]0pIIENDB`libzeep-5.1.8/doc/images/tip.png0000664000175000017500000000070114324170113016327 0ustar maartenmaartenPNG  IHDR* bKGD#2IDATxu @!+x6KR+hJTaK >߁Rh~j?g0qF@!eH,0܆x0&p ^J5y=J % P<*ğ{j #7^L~!=&Ṳ; &rgߊFmͩP; ot6BJqC Xdui]}OL4+|) -CtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com!*tEXtSignatureee9d877396ce267aeb0179d35f81b2ac3'tEXtPage25x24+0+0 IENDB`libzeep-5.1.8/doc/images/toc-blank.png0000664000175000017500000000047614324170113017416 0ustar maartenmaartenPNG  IHDR kd0PLTEO&IbKGDHIDATxc?|` h BhCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com!*tEXtSignaturef7e388dabd4ef0097714b5643fdd3cfbb tEXtPage15x9+0+07vIENDB`libzeep-5.1.8/doc/images/toc-minus.png0000664000175000017500000000040314324170113017450 0ustar maartenmaartenPNG  IHDR )bKGD#2IDATxch`g  I׏j?}-pZECtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com!*tEXtSignatureecf413ef47524404f90c44d8c7d12a2e݈ tEXtPage15x9+0+07vIENDB`libzeep-5.1.8/doc/images/toc-plus.png0000664000175000017500000000041014324170113017276 0ustar maartenmaartenPNG  IHDR )bKGD#2#IDATxch`#@C"ԣj?RJld:4CtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com!*tEXtSignatureab17802e1ddae3211b1ce6bc3b08aec7{( tEXtPage15x9+0+07vIENDB`libzeep-5.1.8/doc/images/up.png0000664000175000017500000000056214324170113016164 0ustar maartenmaartenPNG  IHDR~+sBITO*PLTEfffC@>QOM&# `^\=tRNSE pHYs  ~%tEXtSoftwareMacromedia Fireworks MX 2004vtEXtCreation Time10/03/04ǯ rIDATxα 0F'XQ\=,%N%_:GAE=9*{ jQܰ5mܣ1c^p_E"\IENDB`libzeep-5.1.8/doc/images/up_disabled.png0000664000175000017500000000213314324170113020007 0ustar maartenmaartenPNG  IHDREgAMA|Q cHRMz%u0`:oPLTE}DtRNSEIDATxberB;T B C8Ą L Ą" &T! @1@l@_*ƿ , Ay*Y &d Fps13P'#Baf` &L@@a XcG(0N.3@:IENDB`libzeep-5.1.8/doc/images/warning.png0000664000175000017500000000233114324170113017201 0ustar maartenmaartenPNG  IHDRשPLTE!)1BJRZks{{{RRZZ{{99JJ11))))))!!p;bKGDHIDATxm}o0M5%%m szP^UDKnk[;һ?0n!qCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com!*tEXtSignaturec42b7d2d564aab588891979703f02b45OߓtEXtPage24x24+0+0r[ 1IENDB`libzeep-5.1.8/doc/index.html0000664000175000017500000002457314324170113015572 0ustar maartenmaarten libzeep documentation

Contents

Introduction

The XML library

libzeep is a library that consists of two main parts. The first and arguably most useful for many is the XML processing part. It consists of a SAX parser, a DOM implementation, an XML writing module and an XPath implementation. The parser can act as a validating parser using the Document Type Definition to check the content. Schema support is not yet implemented but will be in a future release.

The second part of libzeep (and the part it all started with, hence the name) is a skeleton to build SOAP server implementations. It uses the XML part as well as various Boost libraries to achieve its usefulness. It allows the creation of a SOAP server by implementing only the serving routines in C++ and calling a routine for each to export of them. Code is then automatically generated to do all the SOAP message parsing and WSDL's generation occurs on-the-fly at runtime.

libzeep comes with headers and libraries. The headers all have zeep as namespace. All code heavily depends on the boost libraries.

Examples

Using libzeep is fairly straightforward. E.g., if we take the following XML file:

<?xml version="1.0" encoding="UTF-8"?>
<employees>
  <employee>
    <name id="1">Joe Doe</name>
    <address>Main street</address>
  </employee>
  <employee>
    <name id="2">Jack Daniels</name>
    <address>Backstreet</address>
  </employee>
</employees>

Reading this file is simple:

#include <zeep/xml/document.hpp>

using namespace zeep;
using namespace std;

ifstream data("/tmp/myfile.xml");
xml::document doc;
data >> doc;

The result of this code is a DOM tree with doc as root. An xml::document is derived from xml::element and can only have one xml::element child. Since it is a DOM tree, and since it is implemented in the classic link-list approach, you can use the next(), prev(), parent() and child() methods to navigate the tree.

But to stick to STL coding styles, walking a tree can also be done using the children() method which returns a std::list of pointers to its children. This method is templated since an element can have non-element child nodes like comments and processing instruction but most often you're only interested in the element child nodes.

Using the children method, iterating over all employees can be done like this:

// iterate over employees
xml::element_set employees = doc.root()->children<xml::element>();
for (xml::element_set::iterator employee = employees.begin(); employee != employees.end(); ++employee)
{
	// employee points to an element and we want its first child
	xml::element* name = (*employee)->child();
	// it really should be a name, right?
	assert(name->qname() == "name");
    cout << "Name: " << name->content() << endl;
}

Of course, using Boost's foreach this looks a lot nicer:

// iterate over employees, boost foreach style
#include <boost/foreach.hpp>
#define foreach BOOST_FOREACH

...

for (xml::element* employee, doc.root()->children<xml::element>())
{
	xml::element* name = (*employee)->child();
	...
}

Still, we can do better. Using XPaths. Just like the children() method of xml::element the xpath evaluation method returns all nodes, if you're only interested in xml::element nodes, you can specify this.

#include <boost/foreach.hpp>
#define foreach BOOST_FOREACH

...

xpath p("//employee/name");

for (xml::element* name, p.evaluate<xml::element>(doc))
{
    cout << "Name: " << name->content() << endl;
}

The find method of xml::element is a shortcut to xpath::evaluate(), it always returns xml::element nodes.

for (xml::element* name = doc.find("//employee/name"))
    cout << "Name: " << name->content() << endl;

The XPath implementation in libzeep implements the full XPath 1.0 specification. That means you can also do this:

// Fetch Jack's record by name:
xml::element* jack = doc.find_first("//employee[name = 'Jack Daniels']");

// or by id:
jack = doc.find_first("//employee[@id='2']");

// or by position in the list, jack is always last...
jack = doc.find_first("//employee[position() = last()]");

You can even use variables:

// Fetch Jack's record by name:
xml::context context;
context.set("var", "Jack Daniels");
xml::xpath xpath("//employee[name = $var]");

xml::element* jack = xpath.evaluate(*doc.root(), context).front();

SOAP server

This comes from the man page for the 1.0 version of libzeep. I'll have to improve this one day:

libzeep(3)                        subroutine                        libzeep(3)



NAME
       libzeep - A C++ library to create SOAP servers

SYNOPSIS
       #include <zeep/server.hpp>

       class my_server : public zeep::server
       {
         public:
           my_server(const char* addr, short port);
           void sum(int a, int b, int& c) { c = a + b; }
       };

       my_server::my_server(const char* addr, short port)
         : zeep::server("http//www.acme.org/...", addr, port)
       {
         const char kSumParameterNames[] = { "a", "b", "c" };
         register_action("sum", this, &my_server::sum, kSumParameterNames);
       }

        ...

       my_server server("0.0.0.0", 10333);
       boost::thread t(boost::bind(&my_server::run, &server));
       // and wait for a signal to stop using e.g. sigwait(3)


DESCRIPTION
       Using   libzeep   you  can  create  a  SOAP  server  by  deriving  from
       zeep::server.  In the constructor of your server,  you  call  the  base
       class  constructor  with three arguments: ns, a namespace for your SOAP
       server, address, the address to listen to, usually "0.0.0.0" to  listen
       to all available addresses. And port, the port number to bind to.

       SOAP actions are simply members of the server object and are registered
       using the register_action member  function  of  the  zeep::server  base
       class.  After  initializing the server object, the run member is called
       and the server then starts listening to the address and port specified.

       The resulting web service application will  process  incoming  request.
       There  are  three kinds of requests, the server can return an automati-
       cally generated WSDL, it can process standard SOAP message send in SOAP
       envelopes  and  it  can  handle REST style requests which are mapped to
       corresponding SOAP messages internally.

       The signature of the registered actions are used to  generate  all  the
       code needed to serialize and deserialize SOAP envelopes and to create a
       corresponding WSDL file. The signature can be as simple as the  example
       above but can also be as complex as in this one:

         void myAction(
                const std::vector<MyStructIn>& input,
                MyStructOut& output);

       In  order to make this work, you have to notify the library of the map
       ping  of  your   structure   type   to   a   name   using   the   macro
       SOAP_XML_SET_STRUCT_NAME like this:

                SOAP_XML_SET_STRUCT_NAME(MyStructIn);
                SOAP_XML_SET_STRUCT_NAME(MyStructOut);

       Next  to  this,  you have to provide a way to serialize and deserialize
       your structure. For this,  libzeep  uses  the  same  mechanism  as  the
       Boost::serialize  library, which means you have to add a templated mem
       ber function called serialize to your structure. The result  will  look
       like this:

       struct MyStructIn {
         string myField1;
         int myField2;

         template<class Archive>
         void serialize(Archive& ar, const unsigned int version)
         {
           ar & BOOST_SERIALIZATION_NVP(myField1)
              & BOOST_SERIALIZATION_NVP(myField2);
         }
       };

       Similarly  you  can  use  enum's in an action signature or as structure
       member variables. Again we need to tell the library the type  name  for
       the   enum  and  the  possible  enum  values.  We  do  this  using  the
       SOAP_XML_ADD_ENUM macro, like this:

          enum MyEnum { "one", "two" };
          SOAP_XML_ADD_ENUM(myEnum, one);
          SOAP_XML_ADD_ENUM(myEnum, two);

       As shown above, you can also use std::vector containers in  the  signa-
       ture  of  actions.  Support for other STL containers is not implemented
       yet.

       If the address used by clients of your server  is  different  from  the
       address  of  your  local  machine  (which can happen if you're behind a
       reverse proxy e.g.) you can specify the location using the set_location
       member  function  of  zeep::server.  The specified address will then be
       used in the WSDL file.


BUGS
       Undoubtedly libzeep will contain bugs. One of the more obvious  one  is
       the  missing  support  for  signatures  using STL containers other than
       std::vector.



version 1.0                       12-jan-2009                       libzeep(3)

Reference

Well, read the code for now. If I can find the time I will do better.

libzeep-5.1.8/doc/introduction.qbk0000664000175000017500000000573214324170113017011 0ustar maartenmaarten[/ Documentation for libzeep version 5.0 Copyright Maarten L. Hekkelman, 2020 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) This document is for the introduction ] [preface Introduction [quickbook 1.7] [id quickbook.intro] ] Libzeep started as a spin-off of [@https://mrs.cmbi.umcn.nl MRS] which is a tool to index and search large text-based bioinformatics databanks. The code that generates a SOAP server in compile time in MRS was needed in another project and this is how libzeep started. BTW, zeep is the dutch word for soap. One of the major parts of libzeep used to be the XML library. It contains a full validating parser with support for XML 1.0 and 1.1 as well as a DOM API for manipulating XML based data structures in memory. The current implementation of libzeep goes much further. It is by now a swissarmy knife for building web applications in C++ including a web server implementation, a JSON library, SOAP and REST controller support and a templating engine looking suspisciously like [@https://www.thymeleaf.org/ Thymeleaf]. Lots of the concepts used in libzeep are inspired by the Java based [@https://spring.io/ Spring framework]. In version 5.0 the library has been split up in thre sub libraries, each targeted at different tasks. [heading:xml libzeep-xml] A feature complete XML library containing a validating parser as well as a modern C++ API for the data structures. It also supports serializing data structures using a boost-like serialization interface. [heading:json libzeep-json] This is an implementation of a JSON library. I've attempted to make it source code compatible with the very good [@https://github.com/nlohmann/json JSON library by Niels Lohmann]. There are some major differences though, my library has a very different parser as well as support for serializing using the same technique as libzeep-xml. On the other hand mine lacks many of the advanced cool features found in Niels library. [heading:http libzeep-http] This library contains a web server implementation. There's also code to create daemon processes and run a preforked webserver. The design follows a bit the one from Spring and so there's a HTTP server class that delegates requests to controllers. A security context class helps in limiting access to authorized users only. Three specialized controller classes provide HTML templates, REST and SOAP services. The template language implementation attempts to be source code compatible with Thymeleaf. The REST controller maps member function calls to the HTTP URI space and translates HTTP parameters and HTTP form content into function variables and it provides transparent and automatic translation of result types into JSON. The SOAP controller is like the REST controller, but now digests requests wrapped in SOAP envelopes, delegates them to handler functions and returns the result back wrapped in SOAP envelopes. libzeep-5.1.8/doc/lib-generic.qbk0000664000175000017500000000424014324170113016441 0ustar maartenmaarten[/ Documentation for libzeep version 5.0 Copyright Maarten L. Hekkelman, 2020 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ] [chapter Generic [quickbook 1.7] [id libzeep.generic] ] [section:descr Introduction] Originally libzeep came as a single library. But if you only need the XML functionality it might not be very useful to include all the networking code for the HTTP server. And so the libraries were split into modules that can be used independently from each other. There are some files that are shared by all libraries though [heading The configuration file] In the file `` you can find a couple of flags that influence what parts of libzeep should be left out. The first is to enable building a __preforked_server__ class, probably only useful in a UNIX context. The other flag allows the compilation of code that uses resources. Resources in a libzeep context are a bit different from their counterparts in MacOS and Windows. Libzeep uses `mrc` to bundle resources in an executable. Especially for small web applications this makes installation very easy at the cost of configurability. See [@https://github.com/mhekkel/mrc github pages for mrc] for more information. [section:streambuf character array streambuf] Sometimes it is very convenient to have a `std::istream` reading from a `const char*` buffer, the class __char_streambuf__ allows you to do just that. [c++] auto sb = zeep::char_streambuf("Hello, world!"); auto is = std::istream(&sb); std::string line; std::getline(is, line); [endsect:streambuf] [section:unicode Unicode/text support] Various simple routines used when working with UTF-8 encoded Unicode text. Routines that are so common, you really ask yourself why these are not part of the standard yet. [endsect:unicode] [section:serialization Serialization support] Originally, libzeep could only serialize XML. Later, with the addition of a JSON library with its own serialization ideas, the two were merged somewhat and the overlapping code ended up here. [endsect:serialization] [endsect:descr] libzeep-5.1.8/doc/lib-http.qbk0000664000175000017500000011621614324170113016013 0ustar maartenmaarten[/ Documentation for libzeep version 5.0 Copyright Maarten L. Hekkelman, 2020 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ] [chapter HTTP [quickbook 1.7] [id libzeep.http] ] [def __http_server__ [classref zeep::http::server `zeep::http::server`]] [def __request__ [classref zeep::http::request `request`]] [def __reply__ [classref zeep::http::reply `reply`]] [def __scope__ [classref zeep::http::scope `scope`]] [def __header__ [classref zeep::http::header `header`]] [def __html_controller__ [classref zeep::http::html_controller `html_controller`]] [def __rest_controller__ [classref zeep::http::rest_controller `rest_controller`]] [def __soap_controller__ [classref zeep::http::soap_controller `soap_controller`]] [section:descr Introduction] The goal of libzeep is to provide a library that makes creating web applications as easy as possible. A lot of frameworks already exist to help building these interactive web apps written in languages ranging from Java to Python to more exotic stuff like Ruby and Laravel. The [@https://spring.io Spring] version stands out between these since it is well designed and offers tons of features and still is fairly easy to work with. But all of these have one flaw in common, they're not written in C++ and thus lack the raw performance. Libzeep tries to implement some of the design patterns found in Spring. There is a very basic HTTP server class with some additional classes that help in creating daemon processes when running a UNIX or lookalike. This HTTP server class delegates requests to controller classes that each process requests in their own corner of the URI space occupied by your server. There are three main controller classes, each targeted at a different task. The first, __html_controller__ maps requests to functions that take a __request__ and __scope__ and return a __reply__. Various routines are available to help constructing XHTML based replies based on XHTML template files. These files can contain special tags that will be processed and the values can be expressed in _expression language_. The second controller class is the __rest_controller__. This one also maps requests to functions, but this time the parameters in the request are automatically translated into function parameters and the result of the function is converted back into JSON automatically. Named parameters can be passed in the payload of a POST request, as query parameters in a GET request or as parts of the URI path, as in =GET /book/1234/title= where you request the title of book number 1234. The third controller is the __soap_controller__. Similar to the REST controller, but this time the translation is between SOAP XML messages and parameters and vice versa. [endsect:descr] [section:httpserver HTTP server] Starting an HTTP server is easy. Simply create the __http_server__ object, [memberref zeep::http::server::bind `bind`] it to an address and call run specifying how many threads to run simultaneously. Something like this: [import ../examples/http-server-0.cpp] [most_simple_http_server] Running this code will create a server that listens to port 8080 on localhost and will return =NOT FOUND= for all requests. Not particularly useful of course. It is possible to derive a class from __http_server__ and implement [memberref zeep::http::server::handle_request `handle_request`]. But there is a better alternative: use controllers. [heading:controller Controllers] A __http_server__ can have one or more controllers. Each controller handles requests that have URI's that start with a specified prefix. In this example we have a controller that handles any request, since it has a prefix that is effectively the same as the root. It returns a simple reply. [import ../examples/http-server-1.cpp] [simple_http_server] Still a not so useful example. Fortunately there are several implementations of [classref zeep::http::controller `controller`] that we can use. [endsect:httpserver] [section:bladiebla HTML Controller] The __html_controller__ class allows you to *mount* a request handler on a URI path, the result is that this request handler, which is a method of your controller class, will be called whenever a HTTP request with a matching URI comes in. The handler method has next to the __request__ and __reply__ parameter an additional __scope__ parameter. This scope is a kind of nested map of variable names and values. The scope is `const`, if you want to add data to the scope you should create your own sub scope and pass the original in the constructor. A handler can of course create simple replies, just as in the previous example. But you can also use templates. Note that the constructor of __html_controller__ takes a second parameter that is called docroot. This should contain the path to the directory containing the templates. [note The docroot parameter is ignored when you create a html controller based on resources, see section on resources further in this documentation.] Our __html_controller__ indirectly inherits [classref zeep::http::template_processor `template_processor`] and this is the class that uses the `docroot` parameter. This class takes care of processing template files. It loads them and uses the registered tag processors and the `scope` to fill in the blanks and process the constructs found in the template. [import ../examples/http-server-2.cpp] [simple_http_server_2] This example uses the file docroot/hello.xhtml which should contain: [teletype] Hello

Hello, !

Now build and run this code, and you can access your welcome page at [@http://localhost:8080/]. If you want to see another name, use e.g. [@http://localhost:8080/?name=maarten] instead. Several remarks here. The server object is created with a =docroot= parameter. That parameter tells the server to create a default [classref zeep::http::template_processor `template_processor`] for use by the __html_controller__ objects. As you can see in the handler code, a check is made for a parameter called =name=. When present, its value is stored in the newly created sub-scope object. The template file contains a construct in the == element that tests for the availability of this variable and uses the default ='world'= otherwise. For more information on templates see the section on [link libzeep.http.xhtml-template xhtml templates]. The path specified in `mount` is `{,index,index.html}` which is a glob pattern, this pattern can accept the following constructs: [table:glob The accepted glob pattern constructs [[path] [matches]] [[=**/*.js=] [matches =x.js=, =a/b/c.js=, etc]] [[={css,scripts}/=] [matches e.g. =css/1/first.css= and =scripts/index.js=]] [[=a;b;c=] [matches either =a=, =b= or =c=]] ] [endsect] [section:data-types Request and Reply] An implementation of the HTTP standard will need various data types. There are [classref zeep::http::request HTTP `requests`] and [classref zeep::http::reply HTTP `replies`]. And these contain [classref zeep::http::header HTTP `headers`] but the `method` specifier (which was changed to a `std::string` in a recent update to libzeep). The HTTP specification for __request__ and __reply__ are sufficiently similar to allow for a common [classref zeep::http::parser message parsing class]. The parser for requests supports [@https://en.wikipedia.org/wiki/Chunked_transfer_encoding chunked transfer encoding]. [heading request] The __request__ encapsulates what was received. The standard HTTP request contains a method, like =GET= or =POST=. In this version of libzeep only a limited subset of methods are supported. The next part is the =uri= that was requested. Then we have the version, usually 1.0 or 1.1. Libzeep does not currently support anything else. When 1.1 was used, libzeep will honour the keep-alive flag. Headers are stored in an array and can be accessed using [memberref zeep::http::request::get_header `get_header`]. Cookies stored in the headers can be accessed using [memberref zeep::http::request::get_cookie `get_cookie`]. A __request__ may also contain a payload, usually only in case of a =POST= or =PUT=. Requests can have parameters. These can be passed url-encoded in the uri, or they can be encoded in the payload using =application/x-www-form-urlencoded= or =multipart/form-data= encoding. The various [memberref zeep::http::reply::get_parameter `get_parameter`] members allow retrieving these parameters by name, optinally passing in a default value in case the parameter was not part of the request. A special case are file parameters, these are retrieved using [memberref zeep::http::reply::get_file_parameter `get_file_parameter`]. This returns a [classref zeep::http::file_param `file_param`] struct that contains information about the uploaded file. Using the [classref zeep::char_streambuf `char_streambuf`] class you can efficiently read the contents of such a file: zeep::file_param f = req.get_file_parameter("upoad"); zeep::char_streambuf sb(f.data, f.length); std::istream is(&sb); Many other convenience accessors are available but data is also directly accessible since this is a `struct`. There are some functions to set data. Those are probably only useful if you write your own code to send out HTTP requests to other servers. [heading reply] The __reply__ object is the object you need to fill in. Replies contain a status line, headers and optionally a payload. There is a static member called [memberref zeep::http::reply::stock_reply `stock_reply`] that allows you to create a complete reply from a status code and an optional message. The [memberref zeep::http::reply::set_header `set_header`] and [memberref zeep::http::reply::set_cookie `set_cookie`] member functions take care of setting headers and cookies respectively. The content of the payload can be set using the various [memberref zeep::http::reply::set_content `set_content`] methods. They will set the content type header according to the data passed in. If you specify a `std::istream*` as content, and the version is set to =1.1= then the data stream will be sent in chunked transfer-encoding. [endsect:data-types] [section:xhtml-template XHTML Template Processing] [def __template_processor__ [classref zeep::http::template_processor `template_processor`]] Many web application frameworks provide a way of templating, write some boilerplate HTML and fill in the details at the moment a page is requested. Apart from that, a page may contains lots of external scripts, stylesheets, images and fonts. For these two tasks libzeep comes with a __template_processor__ class. [heading loading] Starting with the second task just mentioned, the __template_processor__ takes a =docroot= parameter in its constructor. This docroot is the location on disk where files are located. But it is also possible to build libzeep with in-memory resources by using [@https://github.com/mhekkel/mrc =mrc=]. Have a look at the example code for usage. The [memberref zeep::http::basic_template_processor::load_file `load_file`] member of __template_processor__ loads a file from disk (or compiled resources), the [memberref zeep::http::basic_template_processor::file_time `file_time`] member can be used to get the file time of a file. This can be used to generate =304 not modified= replies instead. The [memberref zeep::http::basic_template_processor::load_template `load_template`] member loads a template file from docroot and parses the XML contained in this file into a __document__. [heading templates] Since we're using a XML parser/library to load template, they should be strict XMTML. It is possible to make these files somewhat HTML 5 like by adding the doctype[teletype] The tags inside a template can be processed using a tag_processor. Tag processors are linked to element and attributes in the template using XML namespaces. The method [memberref zeep::http::basic_template_processor::create_reply_from_template `create_reply_from_template`] can be used to convert a template into a reply using the data store in a [classref zeep::http::scope `scope`]. [heading tag processing] Libzeep comes with two tag_processor implementations, the first [classref zeep::http::tag_processor_v1 `tag_processor_v1`] is a legacy one and should probably not be used in new code. The second, [classref zeep::http::tag_processor_v2 `tag_processor_v2`], is inspired by [@https://www.thymeleaf.org]. [section Using =el= script] [def __json_object__ [classref zeep::json::element `json::element`]] =el= is the abbreviation for /Expression Language/. It is a script language that tries to be like [@http://en.wikipedia.org/wiki/Unified_Expression_Language]. libzeep comes with code to evaluate =el= expressions. The language has the concept of variables and these can be created in the C++ code using the __json_object__ class. Variables created this way are then stored in a __scope__ object and passed along to the processing code. To give an example: [import ../examples/synopsis-el-1.cpp] [fill_scope] And then you can process some =expression language= construct like this: [evaluate_el] And if you then print out the result it should give you something like: [teletype] "1: 1, 2: 2" [heading =el= syntax] Most often you will use simple expressions: [table Simple expressions [[expression][evaluates to]] [[`${ ... }`][variable]] [[`*{ ... }`][selection variable (lookup is done in the scope of variables that were selected with =z:select=, v2 processor only )]] [[`@{ ... }`][link URL]] [[`~{ ... }`][fragment]] [[`#{ ... }`][message (not supported yet in libzeep)]] ] The language has literals: [table Literals [[expression][evaluates to]] [[`'my text string'`] [Text literal]] [[`0 3.14`] [Numeric literal, note that scientific notation is not supported]] [[`true false`] [Boolean literal]] [[`null`] [Null literal]] [[`user greeting`] [token]] ] Text operations supported are: [table Text operations [[construct] [description]] [[ `'a' + ' b'`] [concatenation, result is 'a b']] [[`|hello ${user}|`] [literal substitution, if variable user contains 'scott', result is 'hello scott']] ] Operators: [table operators [[operators] [type]] [[`+ - * / %`] [binary operators for standard arithmetic operations]] [[`-`] [unary operator, minus sign]] [[`and or`] [binary operators for standard boolean operations]] [[`! not`] [unary operators, negate]] [[`> < >= <= gt lt ge le`] [operators to compare values]] [[`== != eq ne`] [operators to check for equality]] [[`a ? b`] [conditional operator: if a then return b else null]] [[`a ? b : c`] [conditional operator: if a then return b else return c]] [[`a ?: b`] [conditional operator: if a then return a else return b]] ] When using variables, accessing their content follows the same rules as in Javascript. Arrays have a member function `length`. A few predefined utility objects are predefined. These are #dates, #numbers, #request and #security. [table Predefined objects and their methods [[object.method] [Description]] [[`#dates.format(date,format)`] [ This method takes two parameters, a preferrably ISO formatted date and a format string. The result will be the output of [@https://en.cppreference.com/w/cpp/io/manip/put_time `std::put_time`]. ]] [[`#numbers.formatDecimal(number,int_digits,decimals)`] [ This method takes up to three parameters, a number that needs to be formatted, an int_digits parameter that specifies the minimum number of integral digits to use and a decimals parameter that specifies how many decimals to use. The number is formatted using the locale matching the language specified in the Accept HTTP request header. However, if that locale is not available the default locale is used. Defaults for int_digits is 1 and decimals is 0. Example output: `${#numbers.formatDecimal(pi,2,4)}` is =03.1415= when the locale to use is en_US. ]] [[`#numbers.formatDiskSize(number,decimals)`] [ This method takes up to two parameters, a number that needs to be formatted, and a decimals parameter that specifies how many decimals to use. The number is divided by 1024 until it fits three int digits and the suffix is adjusted accordingly. Default for decimals is 0. Example output: `${#numbers.formatDiskSize(20480,2)}` is =2.00K= when the locale to use is en_US. ]] [[`#request.getRequestURI()`] [ Returns the original URI in the HTTP request. ]] [[`#security.authorized()`] [ Returns whether the uses has successfully logged in. ]] [[`#security.username()`] [ Returns the username for the current user. ]] [[`#security.hasRole(role)`] [ Returns whether the uses has the role as specified by the parameter. ]] ] [endsect] [section tag_processor_v1] This tag_processor works on tags, mostly. As opposed to tag_processor_v2 which works on attributes mainly. The tags are in a separate XML namespace. You can change this name space using the `ns` parameter in the constructor, the default is =http://www.hekkelman.com/libzeep/m1=. There are several predefined processing tags which are summarized below. There used to be also a way to add your own processing tags using an `add_processor` method but that has been dropped. [table List of predefined processing tags [[tag name (without prefix)][Description][Example]] [ [include] [Takes one parameter named `file` and replaces the tag with the processed content of this file] [ [^] ] ] [ [if] [Takes one parameter named `test` containing an `el` script. This script is evaluated and if the result is not empty, zero or false, the content of the `if` tags is inserted in the output. Otherwise, the content is discarded.] [[teletype] `` Hello ${name} `` ] ] [ [iterate] [Takes two parameters, `collection` which contains an `el` script that evaluates to an array `el::object` and a name in `var`. The content of the `iterate` tag is included for each value of `collection` and `var` will contain the current value.] [ ``
  • ${name}
`` ] ] [ [for] [Takes three parameters. The parameters `begin` and `end` should evaluate to a number. The parameter `var` contains a name that will be used to hold the current value when inserting the content of the `for` tag in each iteration of the for loop between `begin` and `end`.] [ `` ${i}, `` ] ] [ [number] [Format the number in the `n` parameter using the `f` format. This is limited to the formats ='#.##0'= and ='#.##0B'= for now. The first formats an integer value using thousand separators, the second tries to format the integer value in a power of two multiplier (kibi, mebi, etc.) with a suffix of `B`, `M`, `G`, etc.] [ `` Will output 1K `` ] ] [ [options] [This tag will insert multiple =
Next page `` ] ] [[param][see =url= above.]] [ [embed] [This tag takes the content of the `var` parameter which should contain valid XML and puts the processed value in the document.] [ `` `` ] ] ] [endsect] [section tag_processor_v2] Tag processor version 2 is an implementation of the documentation for [@https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html Thymeleaf]. This documententation is a bit sparse, for now you might be better off reading the one at the Thymeleaf site. There are some notable differences between Thymeleaf and libzeep though, libzeep does not support the concept of =messages= yet, so using this for localization is not going to work. Furthermore, the Thymeleaf library is written in Java and assumes all data constructs are Java object. Of course that is different in libzeep. [heading tags] There is only one tag this tag processor processes, which is ==, for the rest this processor only processes attributes. [heading attributes] Some attributes are treated special, these are listed below. For the other tags the general rule is that if the tag has the prefix for the =v2= namespace, the value of the attribute will be evaluated and the result will be placed in an attribute without the prefix. Possibly overwriting an already existing attribute with that name. So, e.g. if you have ```` and the variable =id= contains ='two'= the result will be ```` [heading special attributes] [table processed attributes [[attribute] [remarks]] [[=assert=] [ If the value of this attribute evaluates to `true`, an exception will be thrown. ]] [[=attr=] [ The value of this attribute is an expression consisting of one or more comma separated statements that assign a value to an attribute. e.g. `` `` will result in the following when the value of the variables =width= and =height= is `100`. `` ] `` will result in `` 1 aap 2 noot 3 mies `` The iterator-info variable can be used to get info about the current value. [table iterator members [[name][description]] [[count][counting number starting at one.]] [[index][counting number starting at zero.]] [[even][boolean indicating whether this is an even element]] [[odd][boolean indicating whether this is an odd element]] [[size][size of the total array/collection]] [[first][boolean indicating the first element]] [[last][boolean indicating the last element]] [[current][the value of the current element]] ] ]] [[=if=, =unless=] [ The attribute value is evaluated and if the result is `true` respectively `false` the containing tag is preserved, otherwise it is deleted. ]] [[=include=, =insert=, =replace=] [ These three statements are used to pull in fragments of markup. The value of the attribute is evaluated and should contain a fragment specification. The contents of this fragment are then copied to the destination. The three attributes differ in the following way: [variablelist [[insert][The complete fragment is inserted inside the body of the containing tag]] [[replace][The complete fragment is replaces the containing tag]] [[include][The content of the fragment is inserted inside the body of the containing tag]] ] Example, when the fragment is `hello` the following markup: ``
`` If the inline attribute has value =text=, the whole body of the tag will be evaluated as =el=. ]] [[=switch=, =case=] [ Example: ``
Admin Some other user
`` ]] [[=text=, =utext=] [ The simplest, replace the body of the tag with the result of the evaluation of the content of this attribute. `` `` Will result in: `` scott `` The =text= variant will quote special characters like <, > and &. The =utext= variant will not, but beware, if the result is not valid XML an exception is thrown. ]] [[=with=] [ Assign a value to a variable. Example: ``
`` ]] ] [endsect] [endsect:xhtml-template] [section:rest-controller REST Controller] The __rest_controller__ class is similar to the __html_controller__ in that it allows you to map a request to a member function. The difference however is that the REST controller translates parameters from HTTP requests into arguments for your method and translates the result of the method back into JSON to be returned to the client. Lets walk through an example again to show how this works. [import ../examples/rest-sample.cpp] We begin our example by declaring some shopping cart objects. These are plain structs that also define a `serialize` method for use with serialization. [cart_items] Now we create a REST controller that will handle the creation of a new cart and adding and deleting items from this cart. We use standard CRUD REST syntax for this, so e.g. the cart ID is part of the path in the URI for adding and deleting items. [shop_rest_controller] The calls to this rest controller are in the =scripts/shop.js= file. Have a look at that file to see how it works. To give you an idea, this is the snippet that is called after clicking the /add/ link for an item.[teletype] addToCart(item) { const fd = new FormData(); fd.append("name", item); fetch(`/cart/${this.cartID}/item`, { method: "POST", body: fd}) .then(r => r.json()) .then(order => this.updateOrder(order)) .catch(err => { console.log(err); alert(`Failed to add ${item} to cart`); }); } The page, script and stylesheet are served by a __html_controller__. [shop_html_controller] And tie everything together. [shop_main] [endsect:rest-controller] [section:rest-controller REST Controller (CRUD)] The previous example is a rough example on how to use the __rest_controller__, it assumes you pass in the parameters using form data or query parameters. There's another approach, that is more elegant and easier for the developer: create a [@https://en.wikipedia.org/wiki/Create,_read,_update_and_delete CRUD] interface and pass the data encoded in JSON format. To make this work, we rework the previous example. The data items =Cart= and =Item= remain the same, they already have a `serialize` method. The real difference is in the JavaScript code, in the previous example all work was done by the server, the JavaScript only called separate methods to fill the items list and the server responded with the new Cart content. In this example however, management of the cart content is done by the JavaScript and the updated cart is then sent using a =PUT= to the server. The server therefore looks like this: [import ../examples/rest-sample-2.cpp] [shop_rest_controller_2] Some ceveats: this works probably only well if you have a single =JSON= (or compatible) data type as main parameter and optionally one or more path parameters. The request should also have =content-type= equal to =application/json= to work properly. [endsect] [section:rest-controller SOAP Controller] Creating SOAP controllers is also easy. But that will have to wait a bit. [endsect:rest-controller] [section:error-handlers Error handling] [def __error_handler__ [classref zeep::http::error_handler `error_handler`]] During the processing of a request, an error may occur, often by throwing an std::exception. The default __error_handler__ class takes care of catching exceptions and turn these in sensible error replies. A default error_handler is created in the __http_server__ constructor and this one uses the default =error.xhtml= template in =docroot=, or a built in template if that file does not exist. You can derive your own error handler from __error_handler__ and implement a =create_error_reply= member to handle some errors differently. The error handlers will be called in the reverse order of being added allowing you to override default behaviour. [endsect:error-handlers] [section:security Security] [def __security_context__ [classref zeep::http::security_context `security_context`]] [def __user_service__ [classref zeep::http::user_service `user_service`]] [def __user_details__ [classref zeep::http::user_details `user_details`]] [def __simple_user_service__ [classref zeep::http::simple_user_service `simple_user_service`]] In a web application it is often required to limit access to certain URI's to authorized users. To facilitate this in libzeep, the __http_server__ object can use a __security_context__. The __security_context__ itself uses a __user_service__ to provide __user_details__ structs containing the actual data for a user. The __user_details__ structure contains the =username=, encrypted =password= and a list of =roles= this user can play. The roles are simple text strings and should preferrably be very short, like ='USER'= or ='ADMIN'=. The __user_service__ class returns __user_details__ based on a =username= via the pure virtual method [memberref zeep::http::user_service::load_user `load_user`]. A __simple_user_service__ class is available to create very simple user services based on static data. In a real world application you should implement your own user_service and store user information in e.g. a database. [heading example] Let us walk through an example of an application using security. This web application will have two pages, a landing page at the URI =/= (but also at =/index= and =/index.html=) and an admin page at =/admin=. The latter of course will only be accessible by our admin who is called /scott/ and he uses the password /tiger/. [note The code for all example code used in this documentation can be found in the doc/examples subdirectory of the libzeep distribution. ] First start by writing some template code. For this example we will have a common menu template and two templates for the two pages respectively. The interesting part of the menu template is this: [teletype] We're using [@https://www.w3schools.com/w3css/default.asp W3.CSS] as CSS library, albeit we have stored a copy in our own docroot. The two last links in this navigation bar have the =z:if="..."= argument checking whether the current user is authorized. These attributes help in select which of the two will be visible, login or logout, based on the current authentication state. The =#security= class in our =el= library has two more methods called =username= and =hasRole=. The last one returns true when a user has the role asked for. [import ../examples/security-sample.cpp] Next we define a simple __html_controller__ that handles the two pages and also serves stylesheets and scripts. [sample_security_controller] Nothing fancy here, just a simple controller returning pages based on templates. In the template we add a salutation: [teletype]

Hello, !

And here we see the call to =#security.username()=. Note also the use of the elvis operator, if username is not set, 'world' is used instead. Now, in the `main` of our application we first create a __user_service__. [create_user_service] We use the __simple_user_service__ class and provide a static list of users. The __user_service__ should return __user_details__ with an encrypted password and therefore we encrypt the plain text password here. Normally you would store this password encrypted of course. For encrypting password we use the [classref zeep::http::pbkdf2_sha256_password_encoder `pbkdf2_sha256_password_encoder`] class. You can add other password encoders based on other algorithms like bcrypt but you then have to register these yourself using [memberref zeep::http::security_context::register_password_encoder `security_context::register_password_encoder`]; Now we can create the security context. This context will be passed to the __http_server__ class as a pointer and the __http_server__ will take ownership. [create_security_context] The secret passed to the security_context is used in creating signatures for the [@https://en.wikipedia.org/wiki/JSON_Web_Token JWT token]. If you store this secret, the sessions of your users will persist reboots of the server. But in this case we create a new secret after each launch and thus the tokens will expire. Now we add access rules. [add_access_rules] A rule specifies for a glob pattern which users can access it based on the roles these users have. If the list of roles is empty, this means all users should be able to access this URI. When a request is received, the rules are checked in order of which they were added. The first match will be used to check the roles. In this example =/admin= is only accessible by users having role /ADMIN/. All other URI's are allowed by everyone. Note that we could have also created the __security_context__ with the parameter defaultAccessAllowed as `true`, we then would not have needed that last rule. And now we can create the __http_server__, add some controller and start it. [start_server] Note that we add the default [classref zeep::http::login_controller `login_controller`]. This controller takes care of handling =/login= and =/logout= requests. It will also add the required rule for =/login= to the __security_context__ using `add_rule("/login", {});` since otherwise the login page would not be reachable. Make sure you do not add your own rules that prevent access to this page. And that's all. You can now start this server and see that you can access =/= and =/login= without any problem but =/admin= will give you an authentication error. When you login using the credentials =scott/tiger= you can access the =/admin= page and you can now also click the Logout button. [endsect] [section:csrf CSRF protection] The __security_context__ class contains some rudimentary support for protecting against [@https://en.wikipedia.org/wiki/Cross-site_request_forgery CSRF attacks]. The way it works is that the server class add a special `csrf-token` cookie to a session. This cookie is stored in the browser with the flags `SameSite=Lax` and `HttpOnly` which makes it unavailable to malicious scripts that might have been injected in your pages. If a value has been set to this cookie and the __security_context__ class has the `set_validate_csrf` flag set, each `POST` or `SUBMIT` will be checked if there is a `_csrf` parameter and this should contain the same value as the `csrf-token` cookie. So, to use this functionality, call the [memberref zeep::http::security_context::set_validate_csrf `set_validate_csrf`] method on a newly created __security_context__ instance. Next you should make sure each form or `POST` call should contain a `_csrf` parameter with the value stored in the session cookie `csrf-token`. This value can be obtained by calling [memberref zeep::http::context::get_csrf_token `zeep::http::context::get_csrf_token`]. [endsect] [section:crypto Cryptographic routines] A limited number of cryptographic routines are available in ``. These can be divided in the following categories: [heading Encoding] The functions encode and decode functions take a std::string and return the encoded or decoded content. There are three encoding schemes, `hex`, `base64` and `base64url`. The latter is simply `base64` but with a different characterset and without the trailing `=` characters allowing their use in a URL. [heading Hashing] There are three hash algorithm implementations. These are `md5`, `sha1` and `sha256`. All of them take a std::string and return a std::string with the resulting hash. Note that these strings are not human readable and may contain null characters. Therefore you need the encoding routines to convert a hash into something you can print to the screen e.g. [heading HMac] Hashed message authentication codes can be calculated using the available hash functions. Again, these functions take std::string parameters for the message and the key. The result is again a binary std::string. [heading Key derivation] Two key derivation routines are on offer, both of them PBKDF2, one using HMAC SHA1 and the other HMAC SHA256. [endsect:crypto] libzeep-5.1.8/doc/lib-json.qbk0000664000175000017500000000405014324170113015775 0ustar maartenmaarten[/ Documentation for libzeep version 5.0 Copyright Maarten L. Hekkelman, 2020 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ] [chapter JSON [quickbook 1.7] [id libzeep.json] ] [section:descr Introduction] The web application code for libzeep contained an implementation of [@https://en.wikipedia.org/wiki/Unified_Expression_Language expression language], a simple language used in the HTML templates. The variables in this language look and act a bit like objects in JavaScript. And then REST support was added and more support for [@https://www.json.org/ JSON] was needed. For C++ there is already a very good JSON library available from [@https://github.com/nlohmann/json Niels Lohmann]. I tried to use this initially, but it didn't fit well into the rest of libzeep. Still I liked the way it worked and so I tried to create something that is source code compatible, however fancy stuff like JSON Pointer and JSON Patch are not available (yet). This library just provides code to parse and write JSON. It stores the data in an efficient way, allows easy manipulation and also can use the same mechanism of serialization as the XML library. [endsect:descr] [section:elem The JSON element] The main data structure in this library is __json_element__, this is the representation of a JSON object and thus can contain various types of data. See this synopsis on how to use it. [import ../examples/synopsis-json.cpp] [synopsis_json_main] There is also support for `enum`s, see the following example. The idea is, you call the `std::value_serializer::init` once to initialize the global mapping of enum values to strings. The name parameter is optional, but required if you use this serializer also in a SOAP controller. [enum_support] [enum_usage] [heading STL-like interface] The __json_element__ class acts as an STL container, see the class reference for more information. But to give you an idea: [stl_interface] [endsect:elem]libzeep-5.1.8/doc/lib-xml.qbk0000664000175000017500000001510414324170113015626 0ustar maartenmaarten[/ Documentation for libzeep version 5.0 Copyright Maarten L. Hekkelman, 2020 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ] [chapter XML [quickbook 1.7] [id libzeep.xml] ] [section:descr Introduction] The core of this library is a validating XML parser with DTD processing and all. On top of this are implemented an API for manipulating XML data in a DOM like fashion and a serialization API. As a bonus there's also an XPath implementation, albeit this is limited to XPath 1.0. [endsect:descr] [section:api The DOM API] libzeep uses a modern C++ way of accessing and manipulating data. To give an idea have a look at the following code. [import ../examples/synopsis-xml.cpp] [synopsis_xml_main] [heading XML nodes] The class __node__ is the base class for all classes in the DOM API. The class is not copy constructable and subclasses use move semantics to offer a simple API while still being memory and performance efficient. Nodes can have siblings and a parent but no children. The class __element__ is the main class, it implements a full XML node with child nodes and attributes. The children are stored as a linked list and same goes for the attributes. The class __text__ contains the text between XML elements. A __cdata__ class is derived from __text__ and other possible child nodes for an XML element are __processing_instruction__ and __comment__. XML elements also contain attributes, stored in the __attribute__ class. Namespace information is stored in these attributes as well. Attributes support structured binding, so the following works: zeep::xml::attribute a("x", "1"); auto& [name, value] = a; // name == "x", value == "1" [endsect:api] [section:xml_io Input and output] The class __document__ derives from __element__ can load from and write to files. [heading streaming I/O] You can use std::iostream to read and write __document__ objects. Reading is as simple as: zeep::xml::document doc; std::cin >> doc; Writing is just as simple. A warning though, round trip fidelity is not guaranteed. There are a few issues with that. First of all, the default is to replace CDATA sections in a file with their content. If this is not the desired behaviour you can call [memberref zeep::xml::document::set_preserve_cdata `set_preserve_cdata(true)`]. Another issue is that text nodes containing only white space are present in documents read from disk while these are absent by default in documents created on the fly. When writing out XML using `iostream` you can specify to wrap and indent a document. But if the document was read in, the result will have extraneous spacing. Specifying indentation is BTW done like this: std::cout << std::setw(2) << doc; That will indent with two spaces for each level. [heading validation] This will not validate the XML using the DTD by default. If you do want to validate and process the DTD, you have to specify where to find this DTD and other external entities. You can either use [memberref zeep::xml::document::set_base_dir `set_base_dir`] or you can specify an entity_loader using [memberref zeep::xml::document::set_entity_loader `set_entity_loader`] As an example, take the following DTD file[teletype] And an XML document containing[teletype] &hello; When we want to see the `&hello;` entity replaced with `'Hello, world!'` as specified in the DTD, we need to provide a way to load this DTD. To do this, look at the following code. Of course, in this example a simple call to [memberref zeep::xml::document::set_base_dir `set_base_dir`] would have been sufficient. [import ../examples/validating-xml-sample.cpp] [xml_validation_sample] [endsect:xml_io] [section:ser Serialization] An alternative way to read/write XML files is using serialization. To do this, we first construct a structure called Person. We add a templated function to this struct just like in `boost::serialize` and then we can read the file. [import ../examples/serialize-xml.cpp] [synopsis_xml_serialize] [heading attributes] Suppose you want to serialize a value into a XML attribute, you would have to replace `zeep::make_nvp` with `zeep::make_attribute_nvp`. [heading custom types] What happens during serialization is deconstruction of structured data types into parts that can be converted into text strings. For this final conversion there are __value_serializer__ helper classes. __value_serializer__ is a template and specializations for the default types are given in ``. You can create your own specializations for this class for custom data types, look at the one for `boost::posix_time::ptime` for inspiration. [heading enums] For conversion of enum's you can use the __value_serializer__ specialization for enums: [c++] enum class MyEnum { FOO, BAR }; __value_serializer__::instance() ("foo", MyEnum::FOO) ("bar", MyEnum::BAR); There's also a new interface, somewhat more intuitive from a modern C++ viewpoint: [import ../examples/synopsis-json.cpp] [enum_support] [endsect:ser] [section:xpath XPath 1.0] Libzeep comes with a [@http://www.w3.org/TR/xpath/ XPath 1.0] implementation. You can use this to locate elements in a DOM tree easily. For a complete description of the XPath specification you should read the documentation at e.g. [@http://www.w3.org/TR/xpath/] or [@https://www.w3schools.com/xml/xpath_intro.asp]. The way it works in libzeep is that you can call `find()` on an __element__ object and it will return a `zeep::xml::element_set` object which is actually a `std::list` of __element__ pointers of the elements that conform to the specification in XPath passed as parameter to `find()`. An alternative method `find_first()` can be used to return only the first element. An example where we look for the first person in our test file with the lastname Jones: __element__* jones = doc.child()->find_first("//person[lastname='Jones']"); [heading variables] XPath constructs can reference variables. As an example, suppose you need to find nodes in a special XML Namespace but you do not want to find out what the prefix of this Namespace is, you could do something like this: [import ../examples/xpath-sample.cpp] [xpath_example] [note Please note that the evaluation of an XPath returns pointers to XML nodes. Of course these are only valid as long as you do not modify the the document in which they are contained.] [endsect] libzeep-5.1.8/doc/libzeep-doc.qbk0000664000175000017500000000332114324170113016455 0ustar maartenmaarten[/ Documentation for libzeep version 5.0 Copyright Maarten L. Hekkelman, 2020 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ] [book libzeep [quickbook 1.7] [version 5.0] [id quickbook] [copyright 2020 Maarten L. Hekkelman] [authors [Hekkelman, Maarten L.]] [license Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at [@http://www.boost.org/LICENSE_1_0.txt]) ] [source-mode c++] ] [def __document__ [classref zeep::xml::document `zeep::xml::document`]] [def __document__child__ [memberref zeep::xml::document::child `child`]] [def __element__ [classref zeep::xml::element `element`]] [def __node__ [classref zeep::xml::node `zeep::xml::node`]] [def __element__ [classref zeep::xml::element `zeep::xml::element`]] [def __text__ [classref zeep::xml::text `zeep::xml::text`]] [def __cdata__ [classref zeep::xml::cdata `zeep::xml::cdata`]] [def __comment__ [classref zeep::xml::comment `zeep::xml::comment`]] [def __zeep_serializer__ [classref zeep::xml::serializer `zeep::xml::serializer`]] [def __processing_instruction__ [classref zeep::xml::processing_instruction `zeep::xml::processing_instruction`]] [def __preforked_server__ [classref zeep::http::preforked_server]] [def __char_streambuf__ [classref zeep::char_streambuf]] [def __value_serializer__ [classref zeep::value_serializer `zeep::value_serializer`]] [def __json_element__ [classref zeep::json::element `zeep::json::element`]] [include introduction.qbk] [include lib-xml.qbk] [include lib-json.qbk] [include lib-http.qbk] [include reference.qbk] libzeep-5.1.8/doc/libzeep.30000664000175000017500000000206314324170113015301 0ustar maartenmaarten.TH libzeep 3 "10-mar-2021" "version 5.1" "subroutine" .SH NAME libzeep \- A C++ library for working with XML, XPath, JSON, SOAP and REST servers and web applications .SH NOTE See HTML pages for more up-to-date documentation. E.g. at \fIhttps://www.hekkelman.com/libzeep-doc/\fR or the documentation installed at your local disk. .SH DESCRIPTION This library is a Swiss army knife for building web applications in C++. It contains a validating XML parser, XPath support, JSON parser and webserver. .sp The webserver implementation was loosly inspired by Spring. It works with the concept of controllers that handle requests to parts in the URL namespace. Three specializations are available, for handling plain HTML, REST and SOAP requests respectively. .sp The HTML controller can use templating. This code is a clean room reimplementation of the Thymeleaf template processing engine that comes with Spring. .sp Support for security in the form of JWT is available too. .SH BUGS Undoubtedly libzeep will contain bugs. Please report any bug you find to maarten@hekkelman.com libzeep-5.1.8/doc/logo.xcf0000664000175000017500000000705014324170113015226 0ustar maartenmaartengimp xcf filed2BBG gimp-commentCreated with GIMPgimp-image-grid(style solid) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 10.000000) (yspacing 10.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) _ $Xwebapps in C++     !.gimp-text-layer(text "webapps in C++") (font "PMN Caecilia LT Italic") (font-size 12.000000) (font-size-unit pixels) (antialias yes) (language "nl-nl") (base-direction ltr) (color (color-rgb 0.000000 0.000000 0.000000)) (justify center) (box-mode dynamic) (box-unit pixels) (hinting yes) XSX!Uxj<V+ΈdJ;F??|buOqϨN05-L eeqq<Ip о7ZrK{Ӂ+rԃԃ |/ř+<#*V[)')')|N.J(fm _JGaaMDOTސ jq_!q!qb; r]::5SS4,u,uVhhhKE*c68 ( J_pp@0̞߅`,Ulibzeep     Tgimp-text-layer8(markup "libzeep") (font "PMN Caecilia LT Bold") (font-size 32.000000) (font-size-unit pixels) (antialias yes) (language "nl-nl") (base-direction ltr) (color (color-rgb 0.000000 0.000000 0.000000)) (justify center) (box-mode dynamic) (box-unit pixels) (hinting yes) kU U  @10Z)Y+YW>1+[V +]T +^S +`QHNeV Ԉ bPHMO)OdNeLbcC Q+1 U+1 eMgKLdaOGgKhJriJjH jHkGlGmFV  nEnE7aoDoD<:u x'8 &Y'8@@>Ҝ8{W{vvvԈ``^)`ӄUGeOGCBv &YQ( Wc  *d2 Achtergrond      d2 d2   2libzeep-5.1.8/doc/reference.qbk0000664000175000017500000000060014324170113016213 0ustar maartenmaarten[/ Documentation for libzeep version 5.0 Copyright Maarten L. Hekkelman, 2020 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) This document contains the reference ] [reference Reference [quickbook 1.7] [id libzeep.ref] ] [xinclude ./autodoc.xml] libzeep-5.1.8/doc/tools/0000775000175000017500000000000014324170113014722 5ustar maartenmaartenlibzeep-5.1.8/doc/tools/quickbook.sh.in0000775000175000017500000000130014324170113017647 0ustar maartenmaarten#!/bin/bash set -e # Run the original quickbook first @QUICKBOOK@ $@ # And if it fails, exit if [[ $? -ne 0 ]] ; then exit $? fi # Now try to find out what was written for i in "$@"; do key="$i" case $key in --output-file=*) OUTPUTFILE="${i#*=}" shift # past argument=value ;; --output-file) OUTPUTFILE="$2" shift # past argument shift # past value ;; *) # unknown option shift # past argument ;; esac done if [[ "x$OUTPUTFILE" != "x" && "x$SOURCE_DATE_EPOCH" != "x" ]] ; then BUILD_DATE="$(date --utc --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +'%Y-%m-%d %H:%M:%S')" sed -i -e "s/\$Date:.\\+\\$/$BUILD_DATE/g" $OUTPUTFILE fi libzeep-5.1.8/examples/0000775000175000017500000000000014324170113014633 5ustar maartenmaartenlibzeep-5.1.8/examples/GNUmakefile0000664000175000017500000000320614324170113016706 0ustar maartenmaarten# Makefile for the libzeep-http library # # Copyright Maarten L. Hekkelman, UMC St. Radboud 2008-2013. # Copyright Maarten L. Hekkelman, 2014-2019 # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) # # This makefile assumes you already installed libzeep .PHONY: firstTarget firstTarget: all # main build variables CXXFLAGS += -pthread -std=c++17 WARNINGS += all no-multichar ifeq "$(DEBUG)" "1" DEFINES += DEBUG CXXFLAGS += -g -O0 LDFLAGS += -g else CXXFLAGS += -O3 DEFINES += NDEBUG endif CXXFLAGS += $(DEFINES:%=-D%) CXXFLAGS += $(WARNINGS:%=-W%) OBJDIR = obj ifeq "$(DEBUG)" "1" OBJDIR := $(OBJDIR).dbg endif ifeq "$(STAGE)" "1" CXXFLAGS += -I ../include LDFLAGS += -L ../lib endif BINDIR = bin $(OBJDIR) $(BINDIR): mkdir -p $@ $(OBJDIR)/%.o: %.cpp | $(OBJDIR) @ echo "cc>" $< @ $(CXX) -MD -c -o $@ $< $(CFLAGS) $(CXXFLAGS) .PHONY: clean clean: rm -rf $(OBJDIR)/* $(EXAMPLES:%=$(BINDIR)/%) define EXAMPLE_template = -include $$(OBJDIR)/$(1).d $(1)_OBJECTS = $$(OBJDIR)/$(1).o $(BINDIR)/$(1): $$($(1)_OBJECTS) | $(BINDIR) @ echo "ld> $(1)" @ $(CXX) -o $$@ $$($(1)_OBJECTS) $$(CFLAGS) $$(CXXFLAGS) $(LDFLAGS) -lzeep $(LIBS) endef EXAMPLES = \ http-server-0 http-server-1 http-server-2 \ serialize-xml synopsis-json synopsis-xml validating-xml-sample xpath-sample \ synopsis-el-1 security-sample rest-sample rest-sample-2 $(foreach part,$(EXAMPLES),$(eval $(call EXAMPLE_template,$(part)))) .PHONY: examples examples: $(EXAMPLES:%=$(BINDIR)/%) all: examples FORCE: libzeep-5.1.8/examples/docroot/0000775000175000017500000000000014324170113016304 5ustar maartenmaartenlibzeep-5.1.8/examples/docroot/css/0000775000175000017500000000000014324170113017074 5ustar maartenmaartenlibzeep-5.1.8/examples/docroot/css/w3.css0000664000175000017500000005550114324170113020145 0ustar maartenmaarten/* W3.CSS 4.13 June 2019 by Jan Egil and Borge Refsnes */ html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit} /* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */ html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0} article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item} audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline} audio:not([controls]){display:none;height:0}[hidden],template{display:none} a{background-color:transparent}a:active,a:hover{outline-width:0} abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted} b,strong{font-weight:bolder}dfn{font-style:italic}mark{background:#ff0;color:#000} small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none} code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible} button,input,select,textarea,optgroup{font:inherit;margin:0}optgroup{font-weight:bold} button,input{overflow:visible}button,select{text-transform:none} button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button} button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0} button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText} fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em} legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto} [type=checkbox],[type=radio]{padding:0} [type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto} [type=search]{-webkit-appearance:textfield;outline-offset:-2px} [type=search]::-webkit-search-decoration{-webkit-appearance:none} ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit} /* End extract */ html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden} h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:serif} h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin:10px 0}.w3-wide{letter-spacing:4px} hr{border:0;border-top:1px solid #eee;margin:20px 0} .w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit} .w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc} .w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1} .w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1} .w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center} .w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top} .w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px} .w3-btn,.w3-button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap} .w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)} .w3-btn,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} .w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none} .w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none} .w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%} .w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none} .w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block} .w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s} .w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #ccc;width:100%} .w3-select{padding:9px 0;width:100%;border:none;border-bottom:1px solid #ccc} .w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer} .w3-dropdown-hover:hover .w3-dropdown-content{display:block} .w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000} .w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000} .w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1} .w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px} .w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto} .w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%} .w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%} .w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px} .w3-main,#main{transition:margin-left .4s} .w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)} .w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px} .w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto} .w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0} .w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left} .w3-bar .w3-button{white-space:normal} .w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0} .w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%} .w3-responsive{display:block;overflow-x:auto} .w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before, .w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both} .w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%} .w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%} .w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%} .w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%} @media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%} .w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%} .w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}} @media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%} .w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%} .w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}} .w3-rest{overflow:hidden}.w3-stretch{margin-left:-16px;margin-right:-16px} .w3-content,.w3-auto{margin-left:auto;margin-right:auto}.w3-content{max-width:980px}.w3-auto{max-width:1140px} .w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell} .w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom} .w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important} @media (max-width:1205px){.w3-auto{max-width:95%}} @media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px} .w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative} .w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center} .w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}} @media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}} @media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}} @media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}} @media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}.w3-auto{max-width:100%}} .w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0} .w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2} .w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0} .w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0} .w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)} .w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)} .w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)} .w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} .w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} .w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none} .w3-display-position{position:absolute} .w3-circle{border-radius:50%} .w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px} .w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px} .w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px} .w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px} .w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word} .w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%} .w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)} .w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)} .w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}} .w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} .w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}} .w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}} .w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}} .w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}} .w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}} .w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}} .w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important} .w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1} .w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75} .w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)} .w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)} .w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)} .w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important} .w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important} .w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important} .w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important} .w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important} .w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important} .w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important} .w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important} .w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important} .w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important} .w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important} .w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important} .w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important} .w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important} .w3-padding-64{padding-top:64px!important;padding-bottom:64px!important} .w3-left{float:left!important}.w3-right{float:right!important} .w3-button:hover{color:#000!important;background-color:#ccc!important} .w3-transparent,.w3-hover-none:hover{background-color:transparent!important} .w3-hover-none:hover{box-shadow:none!important} /* Colors */ .w3-amber,.w3-hover-amber:hover{color:#000!important;background-color:#ffc107!important} .w3-aqua,.w3-hover-aqua:hover{color:#000!important;background-color:#00ffff!important} .w3-blue,.w3-hover-blue:hover{color:#fff!important;background-color:#2196F3!important} .w3-light-blue,.w3-hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important} .w3-brown,.w3-hover-brown:hover{color:#fff!important;background-color:#795548!important} .w3-cyan,.w3-hover-cyan:hover{color:#000!important;background-color:#00bcd4!important} .w3-blue-grey,.w3-hover-blue-grey:hover,.w3-blue-gray,.w3-hover-blue-gray:hover{color:#fff!important;background-color:#607d8b!important} .w3-green,.w3-hover-green:hover{color:#fff!important;background-color:#4CAF50!important} .w3-light-green,.w3-hover-light-green:hover{color:#000!important;background-color:#8bc34a!important} .w3-indigo,.w3-hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important} .w3-khaki,.w3-hover-khaki:hover{color:#000!important;background-color:#f0e68c!important} .w3-lime,.w3-hover-lime:hover{color:#000!important;background-color:#cddc39!important} .w3-orange,.w3-hover-orange:hover{color:#000!important;background-color:#ff9800!important} .w3-deep-orange,.w3-hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important} .w3-pink,.w3-hover-pink:hover{color:#fff!important;background-color:#e91e63!important} .w3-purple,.w3-hover-purple:hover{color:#fff!important;background-color:#9c27b0!important} .w3-deep-purple,.w3-hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important} .w3-red,.w3-hover-red:hover{color:#fff!important;background-color:#f44336!important} .w3-sand,.w3-hover-sand:hover{color:#000!important;background-color:#fdf5e6!important} .w3-teal,.w3-hover-teal:hover{color:#fff!important;background-color:#009688!important} .w3-yellow,.w3-hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important} .w3-white,.w3-hover-white:hover{color:#000!important;background-color:#fff!important} .w3-black,.w3-hover-black:hover{color:#fff!important;background-color:#000!important} .w3-grey,.w3-hover-grey:hover,.w3-gray,.w3-hover-gray:hover{color:#000!important;background-color:#9e9e9e!important} .w3-light-grey,.w3-hover-light-grey:hover,.w3-light-gray,.w3-hover-light-gray:hover{color:#000!important;background-color:#f1f1f1!important} .w3-dark-grey,.w3-hover-dark-grey:hover,.w3-dark-gray,.w3-hover-dark-gray:hover{color:#fff!important;background-color:#616161!important} .w3-pale-red,.w3-hover-pale-red:hover{color:#000!important;background-color:#ffdddd!important} .w3-pale-green,.w3-hover-pale-green:hover{color:#000!important;background-color:#ddffdd!important} .w3-pale-yellow,.w3-hover-pale-yellow:hover{color:#000!important;background-color:#ffffcc!important} .w3-pale-blue,.w3-hover-pale-blue:hover{color:#000!important;background-color:#ddffff!important} .w3-text-amber,.w3-hover-text-amber:hover{color:#ffc107!important} .w3-text-aqua,.w3-hover-text-aqua:hover{color:#00ffff!important} .w3-text-blue,.w3-hover-text-blue:hover{color:#2196F3!important} .w3-text-light-blue,.w3-hover-text-light-blue:hover{color:#87CEEB!important} .w3-text-brown,.w3-hover-text-brown:hover{color:#795548!important} .w3-text-cyan,.w3-hover-text-cyan:hover{color:#00bcd4!important} .w3-text-blue-grey,.w3-hover-text-blue-grey:hover,.w3-text-blue-gray,.w3-hover-text-blue-gray:hover{color:#607d8b!important} .w3-text-green,.w3-hover-text-green:hover{color:#4CAF50!important} .w3-text-light-green,.w3-hover-text-light-green:hover{color:#8bc34a!important} .w3-text-indigo,.w3-hover-text-indigo:hover{color:#3f51b5!important} .w3-text-khaki,.w3-hover-text-khaki:hover{color:#b4aa50!important} .w3-text-lime,.w3-hover-text-lime:hover{color:#cddc39!important} .w3-text-orange,.w3-hover-text-orange:hover{color:#ff9800!important} .w3-text-deep-orange,.w3-hover-text-deep-orange:hover{color:#ff5722!important} .w3-text-pink,.w3-hover-text-pink:hover{color:#e91e63!important} .w3-text-purple,.w3-hover-text-purple:hover{color:#9c27b0!important} .w3-text-deep-purple,.w3-hover-text-deep-purple:hover{color:#673ab7!important} .w3-text-red,.w3-hover-text-red:hover{color:#f44336!important} .w3-text-sand,.w3-hover-text-sand:hover{color:#fdf5e6!important} .w3-text-teal,.w3-hover-text-teal:hover{color:#009688!important} .w3-text-yellow,.w3-hover-text-yellow:hover{color:#d2be0e!important} .w3-text-white,.w3-hover-text-white:hover{color:#fff!important} .w3-text-black,.w3-hover-text-black:hover{color:#000!important} .w3-text-grey,.w3-hover-text-grey:hover,.w3-text-gray,.w3-hover-text-gray:hover{color:#757575!important} .w3-text-light-grey,.w3-hover-text-light-grey:hover,.w3-text-light-gray,.w3-hover-text-light-gray:hover{color:#f1f1f1!important} .w3-text-dark-grey,.w3-hover-text-dark-grey:hover,.w3-text-dark-gray,.w3-hover-text-dark-gray:hover{color:#3a3a3a!important} .w3-border-amber,.w3-hover-border-amber:hover{border-color:#ffc107!important} .w3-border-aqua,.w3-hover-border-aqua:hover{border-color:#00ffff!important} .w3-border-blue,.w3-hover-border-blue:hover{border-color:#2196F3!important} .w3-border-light-blue,.w3-hover-border-light-blue:hover{border-color:#87CEEB!important} .w3-border-brown,.w3-hover-border-brown:hover{border-color:#795548!important} .w3-border-cyan,.w3-hover-border-cyan:hover{border-color:#00bcd4!important} .w3-border-blue-grey,.w3-hover-border-blue-grey:hover,.w3-border-blue-gray,.w3-hover-border-blue-gray:hover{border-color:#607d8b!important} .w3-border-green,.w3-hover-border-green:hover{border-color:#4CAF50!important} .w3-border-light-green,.w3-hover-border-light-green:hover{border-color:#8bc34a!important} .w3-border-indigo,.w3-hover-border-indigo:hover{border-color:#3f51b5!important} .w3-border-khaki,.w3-hover-border-khaki:hover{border-color:#f0e68c!important} .w3-border-lime,.w3-hover-border-lime:hover{border-color:#cddc39!important} .w3-border-orange,.w3-hover-border-orange:hover{border-color:#ff9800!important} .w3-border-deep-orange,.w3-hover-border-deep-orange:hover{border-color:#ff5722!important} .w3-border-pink,.w3-hover-border-pink:hover{border-color:#e91e63!important} .w3-border-purple,.w3-hover-border-purple:hover{border-color:#9c27b0!important} .w3-border-deep-purple,.w3-hover-border-deep-purple:hover{border-color:#673ab7!important} .w3-border-red,.w3-hover-border-red:hover{border-color:#f44336!important} .w3-border-sand,.w3-hover-border-sand:hover{border-color:#fdf5e6!important} .w3-border-teal,.w3-hover-border-teal:hover{border-color:#009688!important} .w3-border-yellow,.w3-hover-border-yellow:hover{border-color:#ffeb3b!important} .w3-border-white,.w3-hover-border-white:hover{border-color:#fff!important} .w3-border-black,.w3-hover-border-black:hover{border-color:#000!important} .w3-border-grey,.w3-hover-border-grey:hover,.w3-border-gray,.w3-hover-border-gray:hover{border-color:#9e9e9e!important} .w3-border-light-grey,.w3-hover-border-light-grey:hover,.w3-border-light-gray,.w3-hover-border-light-gray:hover{border-color:#f1f1f1!important} .w3-border-dark-grey,.w3-hover-border-dark-grey:hover,.w3-border-dark-gray,.w3-hover-border-dark-gray:hover{border-color:#616161!important} .w3-border-pale-red,.w3-hover-border-pale-red:hover{border-color:#ffe7e7!important}.w3-border-pale-green,.w3-hover-border-pale-green:hover{border-color:#e7ffe7!important} .w3-border-pale-yellow,.w3-hover-border-pale-yellow:hover{border-color:#ffffcc!important}.w3-border-pale-blue,.w3-hover-border-pale-blue:hover{border-color:#e7ffff!important}libzeep-5.1.8/examples/docroot/hello.xhtml0000664000175000017500000000036214324170113020466 0ustar maartenmaarten Hello

Hello, !

libzeep-5.1.8/examples/docroot/scripts/0000775000175000017500000000000014324170113017773 5ustar maartenmaartenlibzeep-5.1.8/examples/docroot/scripts/security.js0000664000175000017500000000000014324170113022166 0ustar maartenmaartenlibzeep-5.1.8/examples/docroot/scripts/shop-2.js0000664000175000017500000000576414324170113021455 0ustar maartenmaarten/* simple shopping cart example */ class ShoppingCart { constructor(cart) { this.cartContent = cart; this.cartContent.items = []; const accountForm = document.getElementById('account-form'); accountForm.style.display = 'none'; const shoppingPage = document.getElementById('shopping-page'); shoppingPage.style.display = 'unset'; document.getElementById('user-name').textContent = name; [...document.getElementsByClassName('shopping-item')] .forEach(item => { item.addEventListener('click', (evt) => { evt.preventDefault(); this.addToCart(item.dataset.item); }) }); } addToCart(item) { const ix = this.cartContent.items.findIndex((i) => i.name === item); if (ix < 0) this.cartContent.items.push({ name: item, count: 1 }); else this.cartContent.items[ix].count += 1; this.updateOrder(); } deleteCartItem(item) { const ix = this.cartContent.items.findIndex((i) => i.name === item); if (ix < 0) this.cartContent.items.push({ name: item, count: 1 }); else if (this.cartContent.items[ix].count == 1) this.cartContent.items.splice(ix, 1); else this.cartContent.items[ix].count -= 1; this.updateOrder(); } updateOrder() { fetch(`/cart/${this.cartContent.cartID}`, { method: "PUT", headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(this.cartContent) }) .then(r => { if (! r.ok) throw 'error'; const cartListContainer = document.getElementById('cart-list-container'); if (this.cartContent.items.length == 0) cartListContainer.style.display = 'none'; else { cartListContainer.style.display = 'initial'; const cartList = document.getElementById('cart-list'); [...cartList.querySelectorAll('li:not(:first-child)')] .forEach(li => li.remove()); const li = cartListContainer.querySelector('li'); this.cartContent.items.forEach(item => { const lic = li.cloneNode(true); lic.querySelector('span.text-placeholder').textContent = `${item.name} (${item.count})`; const removeBtn = lic.querySelector('span.cart-item'); removeBtn.addEventListener('click', (li) => this.deleteCartItem(item.name)); cartList.append(lic); }); } }) .catch(err => { console.log(err); alert('Failed to add item to cart'); }); } }; window.addEventListener('load', () => { const createCartBtn = document.getElementById('create-cart-btn'); createCartBtn.addEventListener('click', (evt) => { evt.preventDefault(); const client = document.forms['client-form']['client-name'].value; if (client == "") alert("Please enter a user name"); else { const newCart = { client: client }; fetch('/cart', { method: "POST", headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(newCart) }) .then(r => r.json()) .then(cartID => { newCart.cartID = cartID; new ShoppingCart(newCart); }) .catch(err => { console.log(err); alert("failed to create shopping cart"); }) } }); });libzeep-5.1.8/examples/docroot/scripts/shop.js0000664000175000017500000000503014324170113021300 0ustar maartenmaarten/* simple shopping cart example */ class ShoppingCart { constructor(name, id) { this.name = name; this.cartID = id; const accountForm = document.getElementById('account-form'); accountForm.style.display = 'none'; const shoppingPage = document.getElementById('shopping-page'); shoppingPage.style.display = 'unset'; document.getElementById('user-name').textContent = name; [...document.getElementsByClassName('shopping-item')] .forEach(item => { item.addEventListener('click', (evt) => { evt.preventDefault(); this.addToCart(item.dataset.item); }) }); } addToCart(item) { const fd = new FormData(); fd.append("name", item); fetch(`/cart/${this.cartID}/item`, { method: "POST", body: fd}) .then(r => r.json()) .then(order => this.updateOrder(order)) .catch(err => { console.log(err); alert(`Failed to add ${item} to cart`); }); } deleteCartItem(item) { const fd = new FormData(); fd.append("name", item); fetch(`/cart/${this.cartID}/item`, { method: "DELETE", body: fd}) .then(r => r.json()) .then(order => this.updateOrder(order)) .catch(err => { console.log(err); alert(`Failed to remove ${item} from cart`); }); } updateOrder(order) { const cartListContainer = document.getElementById('cart-list-container'); if (order.items.length == 0) cartListContainer.style.display = 'none'; else { cartListContainer.style.display = 'initial'; const cartList = document.getElementById('cart-list'); [...cartList.querySelectorAll('li:not(:first-child)')] .forEach(li => li.remove()); const li = cartListContainer.querySelector('li'); order.items.forEach(item => { const lic = li.cloneNode(true); lic.querySelector('span.text-placeholder').textContent = `${item.name} (${item.count})`; const removeBtn = lic.querySelector('span.cart-item'); removeBtn.addEventListener('click', (li) => this.deleteCartItem(item.name)); cartList.append(lic); }); } console.log(order); } }; window.addEventListener('load', () => { const createCartBtn = document.getElementById('create-cart-btn'); createCartBtn.addEventListener('click', (evt) => { evt.preventDefault(); const client = document.forms['client-form']['client-name'].value; if (client == "") alert("Please enter a user name"); else { fetch('/cart', { method: "POST" }) .then(r => r.json()) .then(cartID => new ShoppingCart(client, cartID)) .catch(err => { console.log(err); alert("failed to create shopping cart"); }) } }); });libzeep-5.1.8/examples/docroot/security-admin.xhtml0000664000175000017500000000074314324170113022323 0ustar maartenmaarten Admin page

Hello, , you're now on the Admin page

libzeep-5.1.8/examples/docroot/security-hello.xhtml0000664000175000017500000000071014324170113022330 0ustar maartenmaarten Landing page

Hello, !

libzeep-5.1.8/examples/docroot/security-menu.xhtml0000664000175000017500000000137614324170113022202 0ustar maartenmaarten Landing page libzeep-5.1.8/examples/docroot/shop-2.xhtml0000664000175000017500000000435014324170113020474 0ustar maartenmaarten ]> Hello

Account info

libzeep-5.1.8/examples/docroot/shop.xhtml0000664000175000017500000000434614324170113020342 0ustar maartenmaarten ]> Hello

Account info

libzeep-5.1.8/examples/http-server-0.cpp0000664000175000017500000000060414324170113017757 0ustar maartenmaarten/* compile: clang++ -o http-server-0 http-server-0.cpp -I ../../include/ ../../lib/libzeep-http.a ../../lib/libzeep-xml.a ../../lib/libzeep-json.a -std=c++17 -lstdc++fs -I ~/projects/boost_1_73_0/ dummy_rsrc.o -pthread */ //[ most_simple_http_server #include int main() { zeep::http::server srv; srv.bind("::", 8080); srv.run(2); return 0; } //]libzeep-5.1.8/examples/http-server-1.cpp0000664000175000017500000000134014324170113017756 0ustar maartenmaarten//[ simple_http_server #include #include class hello_controller : public zeep::http::controller { public: /*<< Specify the root path as prefix, will handle any request URI >>*/ hello_controller() : controller("/") {} bool handle_request(zeep::http::request& req, zeep::http::reply& rep) { /*<< Construct a simple reply with status OK (200) and content string >>*/ rep = zeep::http::reply::stock_reply(zeep::http::ok); rep.set_content("Hello", "text/plain"); return true; } }; int main() { zeep::http::server srv; srv.add_controller(new hello_controller()); srv.bind("::", 8080); srv.run(2); return 0; } //]libzeep-5.1.8/examples/http-server-2.cpp0000664000175000017500000000256714324170113017773 0ustar maartenmaarten/* compile: clang++ -o http-server-1 http-server-1.cpp -I ~/projects/boost_1_73_0 -DWEBAPP_USES_RESOURCES -I. -fPIC -pthread -std=c++17 -Wall -g -DDEBUG -I ../../include/ -L ../../lib -lzeep-http -lzeep-xml -lzeep-json dummy_rsrc.o -lstdc++fs */ // In this example we don't want to use rsrc based templates #undef WEBAPP_USES_RESOURCES //[ simple_http_server_2 #include #include #include class hello_controller : public zeep::http::html_controller { public: hello_controller() { /*<< Mount the handler `handle_index` on =/=, =/index= and =/index.html= >>*/ mount("{,index,index.html}", &hello_controller::handle_index); } void handle_index(const zeep::http::request& req, const zeep::http::scope& scope, zeep::http::reply& rep) { zeep::http::scope sub(scope); auto name = req.get_parameter("name"); if (not name.empty()) sub.put("name", name); get_template_processor().create_reply_from_template("hello.xhtml", sub, rep); } }; int main() { /*<< Use the server constructor that takes the path to a docroot so it will construct a template processor >>*/ zeep::http::server srv("docroot"); srv.add_controller(new hello_controller()); srv.bind("::", 8080); srv.run(2); return 0; } //]libzeep-5.1.8/examples/rest-sample-2.cpp0000664000175000017500000000630314324170113017734 0ustar maartenmaarten// In this example we don't want to use rsrc based templates #undef WEBAPP_USES_RESOURCES #include #include //[ cart_items_2 struct Item { std::string name; uint32_t count; template void serialize(Archive& ar, unsigned long version) { ar & zeep::make_nvp("name", name) & zeep::make_nvp("count", count); } }; struct Cart { int id; std::string client; std::vector items; template void serialize(Archive& ar, unsigned long version) { ar & zeep::make_nvp("id", id) & zeep::make_nvp("client", client) & zeep::make_nvp("items", items); } }; //] //[ shop_rest_controller_2 class shop_rest_controller : public zeep::http::rest_controller { public: shop_rest_controller() : zeep::http::rest_controller("/cart") { // CRUD example interface map_post_request("", &shop_rest_controller::create_cart, "cart"); map_get_request("{id}", &shop_rest_controller::retrieve_cart, "id"); map_put_request("{id}", &shop_rest_controller::update_cart, "id", "cart"); map_delete_request("{id}", &shop_rest_controller::delete_cart, "id"); } int create_cart(Cart cart) { int result = cart.id = sNextCartID++; m_carts.push_back(std::move(cart)); return result; } Cart& retrieve_cart(int cartID) { auto oi = std::find_if(m_carts.begin(), m_carts.end(), [&](auto& o) { return o.id == cartID; }); if (oi == m_carts.end()) throw std::invalid_argument("No such cart"); return *oi; } void update_cart(int cartID, const Cart& cart) { auto oi = std::find_if(m_carts.begin(), m_carts.end(), [&](auto& o) { return o.id == cartID; }); if (oi == m_carts.end()) throw std::invalid_argument("No such cart"); oi->client = cart.client; oi->items = cart.items; } void delete_cart(int cartID) { m_carts.erase(std::remove_if(m_carts.begin(), m_carts.end(), [cartID](auto& cart) { return cart.id == cartID; }), m_carts.end()); } private: static int sNextCartID; std::vector m_carts; }; //] int shop_rest_controller::sNextCartID = 1; //[ shop_html_controller_2 class shop_html_controller : public zeep::http::html_controller { public: shop_html_controller() { mount("", &shop_html_controller::handle_index); mount("{css,scripts}/", &shop_html_controller::handle_file); } void handle_index(const zeep::http::request& req, const zeep::http::scope& scope, zeep::http::reply& rep) { get_template_processor().create_reply_from_template("shop-2.xhtml", scope, rep); } }; //] //[ shop_main_2 int main() { /*<< Use the server constructor that takes the path to a docroot so it will construct a template processor >>*/ zeep::http::server srv("docroot"); srv.add_controller(new shop_html_controller()); srv.add_controller(new shop_rest_controller()); srv.bind("::", 8080); // Note that the rest controller above is not thread safe! srv.run(1); return 0; } //]libzeep-5.1.8/examples/rest-sample.cpp0000664000175000017500000000661414324170113017602 0ustar maartenmaarten// In this example we don't want to use rsrc based templates #undef WEBAPP_USES_RESOURCES #include #include //[ cart_items struct Item { std::string name; uint32_t count; template void serialize(Archive& ar, unsigned long version) { ar & zeep::make_nvp("name", name) & zeep::make_nvp("count", count); } }; struct Cart { int id; std::string client; std::vector items; template void serialize(Archive& ar, unsigned long version) { ar & zeep::make_nvp("id", id) & zeep::make_nvp("client", client) & zeep::make_nvp("items", items); } }; //] //[ shop_rest_controller class shop_rest_controller : public zeep::http::rest_controller { public: shop_rest_controller() : zeep::http::rest_controller("/cart") { map_post_request("", &shop_rest_controller::create_cart, "client"); map_get_request("{id}", &shop_rest_controller::get_cart, "id"); map_post_request("{id}/item", &shop_rest_controller::add_cart_item, "id", "name"); map_delete_request("{id}/item", &shop_rest_controller::delete_cart_item, "id", "name"); } int create_cart(const std::string& client) { int cartID = sNextCartID++; m_carts.push_back({ cartID, client }); return cartID; } Cart& get_cart(int cartID) { auto oi = std::find_if(m_carts.begin(), m_carts.end(), [&](auto& o) { return o.id == cartID; }); if (oi == m_carts.end()) throw std::invalid_argument("No such cart"); return *oi; } Cart add_cart_item(int cartID, const std::string& item) { Cart& cart = get_cart(cartID); auto ii = std::find_if(cart.items.begin(), cart.items.end(), [&](auto& i) { return i.name == item; }); if (ii == cart.items.end()) cart.items.push_back({item, 1}); else ii->count += 1; return cart; } Cart delete_cart_item(int cartID, const std::string& item) { Cart& cart = get_cart(cartID); auto ii = std::find_if(cart.items.begin(), cart.items.end(), [&](auto& i) { return i.name == item; }); if (ii != cart.items.end()) { if (--ii->count == 0) cart.items.erase(ii); } return cart; } private: static int sNextCartID; std::vector m_carts; }; //] int shop_rest_controller::sNextCartID = 1; //[ shop_html_controller class shop_html_controller : public zeep::http::html_controller { public: shop_html_controller() { mount("", &shop_html_controller::handle_index); mount("{css,scripts}/", &shop_html_controller::handle_file); } void handle_index(const zeep::http::request& req, const zeep::http::scope& scope, zeep::http::reply& rep) { get_template_processor().create_reply_from_template("shop.xhtml", scope, rep); } }; //] //[ shop_main int main() { /*<< Use the server constructor that takes the path to a docroot so it will construct a template processor >>*/ zeep::http::server srv("docroot"); srv.add_controller(new shop_html_controller()); srv.add_controller(new shop_rest_controller()); srv.bind("::", 8080); // Note that the rest controller above is not thread safe! srv.run(1); return 0; } //]libzeep-5.1.8/examples/sample.dtd0000664000175000017500000000011514324170113016606 0ustar maartenmaarten libzeep-5.1.8/examples/sample.xml0000664000175000017500000000015314324170113016635 0ustar maartenmaarten &hello; libzeep-5.1.8/examples/security-sample.cpp0000664000175000017500000000465614324170113020500 0ustar maartenmaarten/* compile: clang++ -o security-sample security-sample.cpp -I ~/projects/boost_1_73_0 -DWEBAPP_USES_RESOURCES -I. -fPIC -pthread -std=c++17 -Wall -g -DDEBUG -I ../../include/ -L ../../lib -lzeep-http -lzeep-xml -lzeep-json dummy_rsrc.o -lstdc++fs */ // In this example we don't want to use rsrc based templates #undef WEBAPP_USES_RESOURCES #include #include #include #include #include //[ sample_security_controller class hello_controller : public zeep::http::html_controller { public: hello_controller() { // Mount the handler `handle_index` on /, /index and /index.html mount("{,index,index.html}", &hello_controller::handle_index); // This admin page will only be accessible by authorized users mount("admin", &hello_controller::handle_admin); // scripts & css mount("{css,scripts}/", &hello_controller::handle_file); } void handle_index(const zeep::http::request& req, const zeep::http::scope& scope, zeep::http::reply& rep) { get_template_processor().create_reply_from_template("security-hello.xhtml", scope, rep); } void handle_admin(const zeep::http::request& req, const zeep::http::scope& scope, zeep::http::reply& rep) { get_template_processor().create_reply_from_template("security-admin.xhtml", scope, rep); } }; //] int main() { //[ create_user_service // Create a user service with a single user zeep::http::simple_user_service users({ { "scott", zeep::http::pbkdf2_sha256_password_encoder().encode("tiger"), { "USER", "ADMIN" } } }); //] //[ create_security_context // Create a security context with a secret and users std::string secret = zeep::random_hash(); auto sc = new zeep::http::security_context(secret, users, false); //] //[ add_access_rules // Add the rule, sc->add_rule("/admin", "ADMIN"); sc->add_rule("/", {}); //] //[ start_server /*<< Use the server constructor that takes the path to a docroot so it will construct a template processor >>*/ zeep::http::server srv(sc, "docroot"); srv.add_controller(new hello_controller()); srv.add_controller(new zeep::http::login_controller()); srv.bind("::", 8080); srv.run(2); //] return 0; }libzeep-5.1.8/examples/serialize-xml.cpp0000664000175000017500000000155614324170113020133 0ustar maartenmaarten//[ synopsis_xml_serialize #include #include struct Person { std::string firstname; std::string lastname; /*<< A struct we want to serialize needs a `serialize` method >>*/ template void serialize(Archive& ar, const unsigned int version) { ar & zeep::make_nvp("firstname", firstname) & zeep::make_nvp("lastname", lastname); } }; int main() { /*<< Read in a text document containing XML and parse it into a document object >>*/ std::ifstream file("test.xml"); zeep::xml::document doc(file); std::vector persons; /*<< Deserialize all persons into an array >>*/ doc.deserialize("persons", persons); doc.clear(); /*<< Serialize all persons back into an XML document again >>*/ doc.serialize("persons", persons); return 0; } //]libzeep-5.1.8/examples/synopsis-el-1.cpp0000664000175000017500000000151014324170113017757 0ustar maartenmaarten// compile: clang++ -o synopsis-json synopsis-json.cpp -I ../../include/ ../../lib/libzeep-json.a ../../lib/libzeep-generic.a -std=c++17 -lstdc++fs -I ~/projects/boost_1_73_0/ #include #include #include #include #include int main() { zeep::http::scope scope; //[ fill_scope /*<< Fill a scope with an array of objects, each object having one element >>*/ zeep::json::element ints{ { { "value", 1 } }, { { "value", 2 } } }; scope.put("ints", ints); //] //[ evaluate_el auto s = zeep::http::evaluate_el(scope, "|1: ${ints[0].value}, 2: ${ints[1].value}|"); //] std::cout << s << std::endl; assert(s == "1: 1, 2: 2"); return 0; }libzeep-5.1.8/examples/synopsis-json.cpp0000664000175000017500000000417214324170113020201 0ustar maartenmaarten// compile: clang++ -o synopsis-json synopsis-json.cpp -I ../../include/ ../../lib/libzeep-json.a ../../lib/libzeep-generic.a -std=c++17 -lstdc++fs -I ~/projects/boost_1_73_0/ #include #include #include #include void test_stl() { using namespace zeep::json::literals; using json = zeep::json::element; //[ stl_interface json j; /*<< Make j an array >>*/ j = zeep::json::element::array({ 1, 2, 3 }); j.push_back(4); j.emplace_back("five"); assert(j == R"([ 1, 2, 3, 4, "five" ])"_json); /*<< Now make j an object, this will erase the data and initialize a new object >>*/ j = zeep::json::element::object({ { "a", true }, { "b", "2" } }); j.emplace("c", 3); assert(j == R"({ "a": true, "b": "2", "c": 3 })"_json); //] } void test_enum() { using namespace zeep::json::literals; using json = zeep::json::element; //[ enum_support enum class MyEnum { aap, noot, mies }; zeep::value_serializer::init("MyEnum", { { MyEnum::aap, "aap" }, { MyEnum::noot, "noot" }, { MyEnum::mies, "mies" } }); //] //[ enum_usage json j{ MyEnum::aap }; assert(j.as() == "aap"); //] } void construct() { //[ synopsis_json_main using namespace zeep::json::literals; using json = zeep::json::element; json j1; /*<< Fill a JSON object with some data, the type is detected automatically >>*/ j1["b"] = true; j1["i"] = 1; j1["f"] = 2.7183; j1["s"] = "Hello, world!"; j1["ai"] = { 1, 2, 3 }; j1["n"] = nullptr; j1["o"] = { { "b", false }, { "i", 2 } }; j1["o"]["s"] = "sub field"; std::cout << j1 << std::endl; /*<< Construct a JSON object by parsing a raw string >>*/ json j2 = R"( { "b": true, "i": 1, "f": 2.7183, "s": "Hello, world!", "ai": [ 1, 2, 3 ], "n": null, "o": { "b": false, "i": 2, "s": "sub field" } } )"_json; std::cout << j2 << std::endl; assert(j1 == j2); //] } int main() { construct(); test_stl(); return 0; }libzeep-5.1.8/examples/synopsis-xml.cpp0000664000175000017500000000205014324170113020021 0ustar maartenmaarten#include //[ synopsis_xml_main int main() { using namespace zeep::xml::literals; /*<< Construct an XML document in memory using a string literal >>*/ auto doc = R"( John Doe Jane Jones )"_xml; /*<< Iterate over an XPath result set >>*/ for (auto& person: doc.find("//person")) { std::string firstname, lastname; /*<< Iterate over the __element__ nodes inside the person __element__ >>*/ for (auto& name: *person) { if (name.name() == "firstname") firstname = name.str(); if (name.name() == "lastname") lastname = name.str(); } std::cout << person->get_attribute("id") << ": " << lastname << ", " << firstname << std::endl; } return 0; } //]libzeep-5.1.8/examples/test.xml0000664000175000017500000000030114324170113016326 0ustar maartenmaarten John Doe Jane Jones libzeep-5.1.8/examples/validating-xml-sample.cpp0000664000175000017500000000227214324170113021541 0ustar maartenmaarten// compile: clang++ -o validating-xml-sample validating-xml-sample.cpp -I ../../include/ ../../lib/libzeep-xml.a ../../lib/libzeep-generic.a -std=c++17 -lstdc++fs -I ~/projects/boost_1_73_0/ && ./validating-xml-sample //[ xml_validation_sample #include #include #include namespace fs = std::filesystem; int main() { /*<< Define an entity loader function >>*/ auto loader = [] (const std::string& base, const std::string& pubid, const std::string& sysid) -> std::istream* { if (base == "." and pubid.empty() and fs::exists(sysid)) return new std::ifstream(sysid); throw std::invalid_argument("Invalid arguments passed in loader"); }; /*<< Create document and set the entity loader >>*/ zeep::xml::document doc; doc.set_entity_loader(loader); /*<< Read a file >>*/ std::ifstream is("sample.xml"); is >> doc; using namespace zeep::xml::literals; /*<< Compare the doc with an in-memory constructed document, note that spaces are ignored >>*/ if (doc == R"(Hello, world!)"_xml) std::cout << "ok" << std::endl; return 0; } //]libzeep-5.1.8/examples/xpath-sample.cpp0000664000175000017500000000147314324170113017747 0ustar maartenmaarten//[ xpath_example #include #include #include int main() { using namespace zeep::xml::literals; auto doc = R"( foei )"_xml; /*<< Create an xpath context and store our variable >>*/ zeep::xml::context ctx; ctx.set("ns", "https://www.hekkelman.com/libzeep"); /*<< Create an xpath object with the specified XPath using the variable `ns` >>*/ auto xp = zeep::xml::xpath("//*[namespace-uri() = $ns]"); /*<< Iterate over the result of the evaluation of this XPath, the result will consist of zeep::xml::element object pointers >>*/ for (auto n: xp.evaluate(doc, ctx)) std::cout << n->str() << std::endl; return 0; } //] libzeep-5.1.8/include/0000775000175000017500000000000014324170113014440 5ustar maartenmaartenlibzeep-5.1.8/include/zeep/0000775000175000017500000000000014324170113015403 5ustar maartenmaartenlibzeep-5.1.8/include/zeep/config.hpp.in0000664000175000017500000000430214324170113017765 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2020 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) /// \file /// Generic configuration file, contains defines and (probably obsolete) stuff for msvc #pragma once #include #include #include /// The http server implementation in libzeep can use a /// preforked mode. That means the main process listens to /// a network port and passes the socket to a client process /// for doing the actual handling. The advantages for a setup /// like this is that if the client fails, the server can detect /// this and restart the client thereby guaranteeing a better /// uptime. #cmakedefine01 HTTP_SERVER_HAS_PREFORK /// The webapp class in libzeep can use resources to load files. /// In this case you need the resource compiler 'mrc' obtainable /// from https://github.com/mhekkel/mrc #cmakedefine01 WEBAPP_USES_RESOURCES /// The current version of libzeep #define LIBZEEP_VERSION "@LIBZEEP_VERSION@" #define LIBZEEP_VERSION_MAJOR @LIBZEEP_VERSION_MAJOR@ #define LIBZEEP_VERSION_MINOR @LIBZEEP_VERSION_MINOR@ #define LIBZEEP_VERSION_PATCH @LIBZEEP_VERSION_PATCH@ // see if we're using Visual C++, if so we have to include // some VC specific include files to make the standard C++ // keywords work. #if defined(_MSC_VER) # if defined(_MSC_EXTENSIONS) // why is it an extension to leave out something? # define and && # define and_eq &= # define bitand & # define bitor | # define compl ~ # define not ! # define not_eq != # define or || # define or_eq |= # define xor ^ # define xor_eq ^= # endif // _MSC_EXTENSIONS # pragma warning (disable : 4355) // this is used in Base Initializer list # pragma warning (disable : 4996) // unsafe function or variable # pragma warning (disable : 4068) // unknown pragma # pragma warning (disable : 4996) // stl copy() # pragma warning (disable : 4800) // BOOL conversion # pragma warning (disable : 4100) // unreferenced formal parameter # pragma warning (disable : 4101) // unreferenced local variable #endif libzeep-5.1.8/include/zeep/crypto.hpp0000664000175000017500000001257514324170113017446 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2019-2020 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // -------------------------------------------------------------------- #pragma once #include #include #include /// \file /// This file contains an interface to the crypto related routines used /// throughout libzeep. namespace zeep { // -------------------------------------------------------------------- // encoding/decoding /// \brief Thrown when the input does not contain valid base64 encoded data class invalid_base64 : public std::exception { public: invalid_base64() {} const char* what() const noexcept { return "invalid base64 input"; } }; /// \brief encode \a data in base64 format /// /// \param data The string containing data to encode /// \param wrap_width If this value is not zero, lines in the output will be wrapped to this width. std::string encode_base64(std::string_view data, size_t wrap_width = 0); /// \brief decode data from base64 format, will throw invalid_base64 in case of invalid input /// /// \param data The string containing data to decode std::string decode_base64(std::string_view data); // The base64url versions are slightly different /// \brief encode \a data in base64url format (see https://tools.ietf.org/html/rfc4648#section-5) /// /// \param data The string containing data to encode std::string encode_base64url(std::string_view data); /// \brief decode \a data from base64url format (see https://tools.ietf.org/html/rfc4648#section-5) /// /// \param data The string containing data to decode std::string decode_base64url(std::string data); // And base32 might be handy as well, RFC 4648 (see https://en.wikipedia.org/wiki/Base32) /// \brief Thrown when the input does not contain valid base32 encoded data class invalid_base32 : public std::exception { public: invalid_base32() {} const char* what() const noexcept { return "invalid base32 input"; } }; /// \brief encode \a data in base32 format /// /// \param data The string containing data to encode /// \param wrap_width If this value is not zero, lines in the output will be wrapped to this width. std::string encode_base32(std::string_view data, size_t wrap_width = 0); /// \brief decode data from base32 format, will throw invalid_base32 in case of invalid input /// /// \param data The string containing data to decode std::string decode_base32(std::string_view data); /// \brief Thrown when the input does not contain valid hexadecimal encoded data class invalid_hex : public std::exception { public: invalid_hex() {} const char* what() const noexcept { return "invalid hexadecimal input"; } }; /// \brief encode \a data in hexadecimal format /// /// \param data The string containing data to encode std::string encode_hex(std::string_view data); /// \brief decode \a data from hexadecimal format /// /// \param data The string containing data to decode std::string decode_hex(std::string_view data); // -------------------------------------------------------------------- // random bytes /// \brief return a string containing some random bytes std::string random_hash(); // -------------------------------------------------------------------- // hashing /// \brief return the MD5 hash of \a data std::string md5(std::string_view data); /// \brief return the SHA1 hash of \a data std::string sha1(std::string_view data); /// \brief return the SHA1 hash of \a data std::string sha1(std::streambuf& data); /// \brief return the SHA256 hash of \a data std::string sha256(std::string_view data); // -------------------------------------------------------------------- // hmac /// \brief return the HMAC using an MD5 hash of \a message signed with \a key std::string hmac_md5(std::string_view message, std::string_view key); /// \brief return the HMAC using an SHA1 hash of \a message signed with \a key std::string hmac_sha1(std::string_view message, std::string_view key); /// \brief return the HMAC using an SHA256 hash of \a message signed with \a key std::string hmac_sha256(std::string_view message, std::string_view key); // -------------------------------------------------------------------- // key derivation based on password (PBKDF2) /// \brief create password hash according to PBKDF2 with HmacSHA1 /// /// This algorithm can be used to create keys for symmetric encryption. /// But you can also use it to store hashed passwords for user authentication. /// /// \param salt the salt to use /// \param password the password /// \param iterations number of iterations, use a value of at least 30000 /// \param keyLength the requested key length that will be returned std::string pbkdf2_hmac_sha1(std::string_view salt, std::string_view password, unsigned iterations, unsigned keyLength); /// \brief create password hash according to PBKDF2 with HmacSHA256 /// /// This algorithm can be used to create keys for symmetric encryption. /// But you can also use it to store hashed passwords for user authentication. /// /// \param salt the salt to use /// \param password the password /// \param iterations number of iterations, use a value of at least 30000 /// \param keyLength the requested key length that will be returned std::string pbkdf2_hmac_sha256(std::string_view salt, std::string_view password, unsigned iterations, unsigned keyLength); } libzeep-5.1.8/include/zeep/exception.hpp0000664000175000017500000000156614324170113020122 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of zeep::exception, base class for exceptions thrown by libzeep #include #include #include namespace zeep { /// \brief base class of the exceptions thrown by libzeep class exception : public std::exception { public: /// \brief Create an exception with the message in \a message exception(const std::string& message) : m_message(message) {} virtual ~exception() throw() {} virtual const char* what() const throw() { return m_message.c_str(); } protected: std::string m_message; }; } // namespace zeep libzeep-5.1.8/include/zeep/http/0000775000175000017500000000000014324170113016362 5ustar maartenmaartenlibzeep-5.1.8/include/zeep/http/connection.hpp0000664000175000017500000000274614324170113021243 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of the zeep::http::connection class, that handles HTTP connections #include #include #include #include #include namespace zeep::http { class basic_server; /// The HTTP server implementation of libzeep is inspired by the example code /// as provided by boost::asio. These objects are not to be used directly. class connection : public std::enable_shared_from_this { public: connection(connection &) = delete; connection& operator=(connection &) = delete; connection(boost::asio::io_context& service, basic_server& handler); void start(); void handle_read(boost::system::error_code ec, size_t bytes_transferred); void handle_write(boost::system::error_code ec, size_t bytes_transferred); boost::asio::ip::tcp::socket& get_socket() { return m_socket; } private: boost::asio::ip::tcp::socket m_socket; basic_server& m_server; reply m_reply; request_parser m_request_parser; bool m_keep_alive = false; boost::asio::streambuf m_buffer; boost::asio::streambuf::mutable_buffers_type m_bufs; }; } // namespace zeep::http libzeep-5.1.8/include/zeep/http/controller.hpp0000664000175000017500000000523214324170113021260 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of the base class zeep::http::controller, used by e.g. rest_controller and soap_controller #include #include namespace zeep::http { /// \brief A base class for controllers, classes that handle a request /// /// This concept is inspired by the Spring way of delegating the work to /// controller classes. In libzeep there are two major implementations of /// controllers: zeep::http::rest_controller and zeep::http::soap_controller /// /// There can be multiple controllers in a web application, each is connected /// to a certain prefix-path. This is the leading part of the request URI. class controller { public: /// \brief constructor /// /// \param prefix_path The prefix path this controller is bound to controller(const std::string &prefix_path); virtual ~controller(); /// \brief Calls handle_request but stores a pointer to the request first virtual bool dispatch_request(boost::asio::ip::tcp::socket &socket, request &req, reply &rep); /// \brief The pure virtual method that actually handles the request virtual bool handle_request(request &req, reply &rep) = 0; /// \brief returns the defined prefix path std::string get_prefix() const { return m_prefix_path; } /// \brief return whether this uri request path matches our prefix bool path_matches_prefix(const std::string &path) const; /// \brief return the path with the prefix path stripped off std::string get_prefixless_path(const request &req) const; /// \brief bind this controller to \a server virtual void set_server(basic_server *server) { m_server = server; } /// \brief return the server object we're bound to const basic_server &get_server() const { return *m_server; } basic_server &get_server() { return *m_server; } /// \brief get the credentials for the current request json::element get_credentials() const; /// \brief get the remote client address for the current request std::string get_remote_address() const; /// \brief returns whether the current user has role \a role bool has_role(const std::string &role) const; /// \brief return a specific header line from the original request std::string get_header(const char *name) const; protected: controller(const controller &) = delete; controller &operator=(const controller &) = delete; std::string m_prefix_path; basic_server *m_server = nullptr; static thread_local request *s_request; }; } // namespace zeep::http libzeep-5.1.8/include/zeep/http/daemon.hpp0000664000175000017500000000744514324170113020350 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// /// Source code specifically for Unix/Linux. /// Utility routines to build daemon processes #include #include #include namespace zeep::http { class basic_server; /// \brief A class to create daemon processes easily /// /// In UNIX a daemon is a process that runs in the background. /// In the case of libzeep this is of course serving HTTP requests. /// stderr and stdout are captured and written to the log files /// specified and a process ID is store in the pid file which /// allows checking the status of a running daemon. class daemon { public: /// \brief The factory for creating server instances. using server_factory_type = std::function; /// \brief constructor with separately specified files /// /// \param factory The function object that creates server instances /// \param pid_file The file that will contain the process ID, usually in /var/run/ /// \param stdout_log_file The file that will contain the stdout log, usually in /var/log//access.log /// \param stderr_log_file The file that will contain the stderr log, usually in /var/log//error.log daemon(server_factory_type&& factory, const std::string& pid_file, const std::string& stdout_log_file, const std::string& stderr_log_file); /// \brief constructor with default files /// /// \param factory The function object that creates server instances /// \param name The _process name_ to use, will be used to form default file locations daemon(server_factory_type&& factory, const char* name); /// \brief Avoid excessive automatic restart due to failing to start up /// /// \param nr_of_restarts The max number of attempts to take to start up a daemon process /// \param within_nr_of_seconds The restart counter will only consider a failed restart if it fails /// starting up within this period of time. void set_max_restarts(int nr_of_restarts, int within_nr_of_seconds) { m_max_restarts = nr_of_restarts; m_restart_time_window = within_nr_of_seconds; } /// \brief Start the daemon, forking off in the background /// /// \param address The address to bind to /// \param port The port number to bind to /// \param nr_of_threads The number of threads to pass to the server class /// \param run_as_user The user to run the forked process. Daemons are usually /// started as root and should drop their privileges as soon /// as possible. int start(const std::string& address, uint16_t port, size_t nr_of_procs, size_t nr_of_threads, const std::string& run_as_user); /// \brief Stop a running daemon process. Returns 0 in case of successfully stopping a process. int stop(); /// \brief Returns 0 if the daemon is running int status(); /// \brief Force the running daemon to restart int reload(); /// \brief Run the server without forking to the background /// /// For debugging purposes it is sometimes useful to start a server /// without forking so you can see the stdout and stderr. Often this /// is done by adding a --no-daemon flag to the program options. int run_foreground(const std::string& address, uint16_t port); private: void daemonize(); void open_log_file(); bool run_main_loop(const std::string& address, uint16_t port, size_t nr_of_procs, size_t nr_of_threads, const std::string& run_as_user); bool pid_is_for_executable(); private: server_factory_type m_factory; const std::string m_pid_file, m_stdout_log_file, m_stderr_log_file; int m_max_restarts = 5, m_restart_time_window = 10; }; } libzeep-5.1.8/include/zeep/http/el-processing.hpp0000664000175000017500000002307414324170113021653 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // expression language support // #pragma once /// \file /// definition of the routines that can parse and interpret el (expression language) code in a web application context #include #include #include #include #include #include namespace zeep::http { using object = ::zeep::json::element; class scope; class basic_server; /// \brief Process the text in \a text and return `true` if the result is /// not empty, zero or false. /// /// The expression in \a text is processed and if the result of this /// expression is empty, false or zero then `false` is returned. /// \param scope The scope for this el script /// \param text The el script /// \return The result of the script bool process_el(const scope& scope, std::string& text); /// \brief Process the text in \a text and return the result if the expression is valid, /// the value of \a text otherwise. /// /// If the expression in \a text is valid, it is processed and the result /// is returned, otherwise simply returns the text. /// \param scope The scope for this el script /// \param text The el script /// \return The result of the script std::string process_el_2(const scope& scope, const std::string& text); /// \brief Process the text in \a text. The result is put in \a result /// /// The expression in \a text is processed and the result is returned /// in \a result. /// \param scope The scope for this el script /// \param text The el script /// \result The result of the script object evaluate_el(const scope& scope, const std::string& text); /// \brief Process the text in \a text and return a list of name/value pairs /// /// The expressions found in \a text are processed and the result is /// returned as a list of name/value pairs to be used in e.g. /// processing a m2:attr attribute. /// \param scope The scope for the el scripts /// \param text The text optionally containing el scripts. /// \return list of name/value pairs std::vector> evaluate_el_attr(const scope& scope, const std::string& text); /// \brief Process the text in \a text. This should be a comma separated list /// of expressions that each should evaluate to true. /// /// The expression in \a text is processed and the result is false if /// one of the expressions in the comma separated list evaluates to false. /// /// in \a result. /// \param scope The scope for this el script /// \param text The el script /// \return True in case all the expressions evaluate to true bool evaluate_el_assert(const scope& scope, const std::string& text); /// \brief Process the text in \a text and put the resulting z:with expressions in the scope /// /// The expressions found in \a text are processed and the result is /// returned as a list of name/value pairs to be used in e.g. /// processing a m2:attr attribute. /// \param scope The scope for the el scripts /// \param text The text containing el scripts in the form var=val(,var=val)*. void evaluate_el_with(scope& scope, const std::string& text); /// \brief Evaluate the text in \a text as a potential link template /// /// The expression found in \a text is processed and the result is /// returned as a link template object. This function is called from /// el::include/el::replace/el::insert attributes. /// /// \param scope The scope for the el scripts /// \param text The text containing the link specification /// \result The resulting link object evaluate_el_link(const scope& scope, const std::string& text); // -------------------------------------------------------------------- class expression_utility_object_base { public: virtual ~expression_utility_object_base() = default; static object evaluate(const scope& scope, const std::string& className, const std::string& methodName, const std::vector& parameters) { for (auto inst = s_head; inst != nullptr; inst = inst->m_next) { if (className == inst->m_name) return inst->m_obj->evaluate(scope, methodName, parameters); } return {}; } protected: virtual object evaluate(const scope& scope, const std::string& methodName, const std::vector& parameters) const = 0; struct instance { expression_utility_object_base* m_obj = nullptr; const char* m_name; instance* m_next = nullptr; }; static instance* s_head; }; template class expression_utility_object : public expression_utility_object_base { public: using implementation_type = OBJ; protected: expression_utility_object() { static instance s_next{ this, implementation_type::name(), s_head }; s_head = &s_next; } }; // -------------------------------------------------------------------- /// \brief The class that stores variables for the current scope /// /// When processing tags and in expression language constructs we use /// variables. These are stored in scope instances. class scope { public: /// \brief simple constructor, used where there's no request available scope(); /// \brief constructor to be used only in debugging /// /// \param req The incomming HTTP request scope(const request& req); /// \brief constructor used in a HTTP request context /// /// \param server The server that handles the incomming request /// \param req The incomming HTTP request scope(const basic_server& server, const request& req); /// \brief chaining constructor /// /// Scopes can be nested, introducing new namespaces /// \param next The next scope up the chain. explicit scope(const scope& next); /// \brief put variable in the scope with \a name and \a value template void put(const std::string& name, const T& value); /// \brief put variable of type array in the scope with \a name and values from \a begin to \a end template void put(const std::string& name, ForwardIterator begin, ForwardIterator end); /// \brief return variable with \a name /// /// \param name The name of the variable to return /// \param includeSelected If this is true, and the variable was not found as a regular variable /// in the current scope, the selected objects will be search for members /// with \a name This is used by the tag processing lib v2 in _z2:object_ /// \return The value found or null if there was no such variable. const object& lookup(const std::string& name, bool includeSelected = false) const; /// \brief return variable with \a name const object& operator[](const std::string& name) const; /// \brief return variable with \a name /// /// \param name The name of the variable to return /// \param includeSelected If this is true, and the variable was not found as a regular variable /// in the current scope, the selected objects will be search for members /// with \a name This is used by the tag processing lib v2 in _z2:object_ /// \return The value found or null if there was no such variable. object& lookup(const std::string& name); /// \brief return variable with \a name object& operator[](const std::string& name); /// \brief return the HTTP request, will throw if the scope chain was not created with a request const request& get_request() const; /// \brief return the context_name of the server std::string get_context_name() const; /// \brief return the credentials of the current user json::element get_credentials() const; /// \brief select object \a o , used in z2:object constructs void select_object(const object& o); /// \brief a nodeset for a selector, cached to avoid recusive expansion /// /// In tag processors it is sometimes needed to take a selection of zeep::xml::nodes /// and reuse these, as a copy when inserting templates e.g. using node_set_type = std::vector>; /// \brief return the node_set_type with name \a name node_set_type get_nodeset(const std::string& name) const; /// \brief store node_set_type \a nodes with name \a name void set_nodeset(const std::string& name, node_set_type&& nodes); /// \brief return whether a node_set with name \a name is stored bool has_nodeset(const std::string& name) const { return m_nodesets.count(name) or (m_next != nullptr and m_next->has_nodeset(name)); } /// \brief get the CSRF token from the request burried in \a scope std::string get_csrf_token() const; private: /// for debugging purposes friend std::ostream& operator<<(std::ostream& lhs, const scope& rhs); scope& operator=(const scope& ); using data_map = std::map; data_map m_data; scope *m_next; unsigned m_depth; const request *m_req; const basic_server* m_server; object m_selected; using nodeset_map = std::map; nodeset_map m_nodesets; }; template inline void scope::put(const std::string& name, const T& value) { m_data[name] = value; } template <> inline void scope::put(const std::string& name, const object& value) { m_data[name] = value; } template inline void scope::put(const std::string& name, ForwardIterator begin, ForwardIterator end) { std::vector elements; while (begin != end) elements.push_back(object(*begin++)); m_data[name] = elements; } // -------------------------------------------------------------------- } // namespace zeep::http libzeep-5.1.8/include/zeep/http/error-handler.hpp0000664000175000017500000000675114324170113021650 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of the base class zeep::error_handler, the default /// creates very simple HTTP replies. Override to do something more fancy. #include #include #include namespace zeep::http { /// \brief A base class for error-handler classes /// /// To handle errors decently when there are multiple controllers. class error_handler { public: /// \brief constructor /// /// If \a error_template is not empty, the error handler will try to /// load this XHTML template using the server's template_processor. /// If that fails or error_template is empty, a simple stock message /// is returned. error_handler(const std::string& error_template = "error.xhtml"); virtual ~error_handler(); /// \brief set the server object we're bound to void set_server(basic_server* s) { m_server = s; } /// \brief get the server object we're bound to basic_server* get_server() { return m_server; } /// \brief set the server object we're bound to const basic_server* get_server() const { return m_server; } /// \brief Create an error reply for an exception /// /// This function is called by server with the captured exception. /// \param req The request that triggered this call /// \param eptr The captured exception, use std::rethrow_exception to use this /// \param reply Write the reply in this object /// \return Return true if the reply was created successfully virtual bool create_error_reply(const request& req, std::exception_ptr eptr, reply& reply); /// \brief Create an error reply for the error containing a validation header /// /// When a authentication violation is encountered, this function is called to generate /// the appropriate reply. /// \param req The request that triggered this call /// \param reply Write the reply in this object /// \return Return true if the reply was created successfully virtual bool create_unauth_reply(const request& req, reply& reply); /// \brief Create an error reply for the error /// /// An error should be returned with HTTP status code \a status. This method will create a default error page. /// \param req The request that triggered this call /// \param status The status code, describing the error /// \param reply Write the reply in this object /// \return Return true if the reply was created successfully virtual bool create_error_reply(const request& req, status_type status, reply& reply); /// \brief Create an error reply for the error with an additional message for the user /// /// An error should be returned with HTTP status code \a status and additional information \a message. /// This method will create a default error page. /// \param req The request that triggered this call /// \param status The error that triggered this call /// \param message The message describing the error /// \param reply Write the reply in this object /// \return Return true if the reply was created successfully virtual bool create_error_reply(const request& req, status_type status, const std::string& message, reply& reply); protected: error_handler(const error_handler&) = delete; error_handler& operator=(const error_handler&) = delete; basic_server* m_server = nullptr; std::string m_error_template; }; }libzeep-5.1.8/include/zeep/http/header.hpp0000664000175000017500000000115214324170113020322 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of the zeep::http::header class #include #include namespace zeep::http { /// The header object contains the header lines as found in a /// HTTP Request. The lines are parsed into name / value pairs. struct header { std::string name; std::string value; }; } libzeep-5.1.8/include/zeep/http/html-controller.hpp0000664000175000017500000001471514324170113022230 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of the zeep::controller class. This class takes /// care of handling requests that are mapped to call back functions /// and provides code to return XHTML formatted replies. #include #include #include // -------------------------------------------------------------------- // namespace zeep::http { class basic_template_processor; // -------------------------------------------------------------------- /// \brief base class for a webapp controller that uses XHTML templates /// /// html::controller is used to create XHTML web pages based on the contents of a /// template file and the parameters passed in the request and calculated data stored /// in a scope object. class html_controller : public controller { public: html_controller(const std::string& prefix_path = "/") : controller(prefix_path) { } /// \brief return the basic_template_processor of the server basic_template_processor& get_template_processor(); /// \brief return the basic_template_processor of the server const basic_template_processor& get_template_processor() const; /// \brief Dispatch and handle the request virtual bool handle_request(request& req, reply& reply); /// \brief default file handling /// /// This method will ask the server for the default template processor /// to load the actual file. If there is no template processor set, /// it will therefore throw an exception. virtual void handle_file(const request& request, const scope& scope, reply& reply); // -------------------------------------------------------------------- public: /// \brief webapp works with 'handlers' that are methods 'mounted' on a path in the requested URI using handler_type = std::function; /// assign a handler function to a path in the server's namespace /// Usually called like this: /// \code{.cpp} /// /// mount("page", std::bind(&page_handler, this, _1, _2, _3)); /// \endcode /// Where page_handler is defined as: /// \code{.cpp} /// void session_server::page_handler(const request& request, const scope& scope, reply& reply); /// \endcode /// Note, the first parameter is a glob pattern, similar to Ant matching rules. /// Supported operators are \*, \*\* and ?. As an addition curly bracketed optional elements are allowed /// as well as semi-colons that define separate paths. /// Also, patterns ending in / are interpreted as ending in /\*\* /// /// path | matches /// ---------------- | -------------------------------------------- /// `**``/``*.js` | matches x.js, a/b/c.js, etc /// `{css,scripts}/` | matches e.g. css/1/first.css and scripts/index.js /// a;b;c | matches either a, b or c /// \brief mount a callback on URI path \a path for any HTTP method template void mount(const std::string& path, void(Class::*callback)(const request& request, const scope& scope, reply& reply)) { static_assert(std::is_base_of_v, "This call can only be used for methods in classes derived from html_controller"); mount(path, "UNDEFINED", [server = static_cast(this), callback](const request& request, const scope& scope, reply& reply) { (server->*callback)(request, scope, reply); }); } /// \brief mount a callback on URI path \a path for HTTP GET method template void mount_get(const std::string& path, void(Class::*callback)(const request& request, const scope& scope, reply& reply)) { static_assert(std::is_base_of_v, "This call can only be used for methods in classes derived from html_controller"); mount(path, "GET", [server = static_cast(this), callback](const request& request, const scope& scope, reply& reply) { (server->*callback)(request, scope, reply); }); } /// \brief mount a callback on URI path \a path for HTTP POST method template void mount_post(const std::string& path, void(Class::*callback)(const request& request, const scope& scope, reply& reply)) { static_assert(std::is_base_of_v, "This call can only be used for methods in classes derived from html_controller"); mount(path, "POST", [server = static_cast(this), callback](const request& request, const scope& scope, reply& reply) { (server->*callback)(request, scope, reply); }); } /// \brief mount a callback on URI path \a path for HTTP method \a method template void mount(const std::string& path, const std::string& method, void(Class::*callback)(const request& request, const scope& scope, reply& reply)) { static_assert(std::is_base_of_v, "This call can only be used for methods in classes derived from html_controller"); mount(path, method, [server = static_cast(this), callback](const request& request, const scope& scope, reply& reply) { (server->*callback)(request, scope, reply); }); } /// \brief mount a handler on URI path \a path for HTTP method \a method void mount(const std::string& path, const std::string& method, handler_type handler) { auto mpi = std::find_if(m_dispatch_table.begin(), m_dispatch_table.end(), [path, method](auto& mp) { return mp.path == path and (mp.method == method or mp.method == "UNDEFINED" or method == "UNDEFINED"); }); if (mpi == m_dispatch_table.end()) m_dispatch_table.emplace_back(path, method, handler); else { if (mpi->method != method) throw std::logic_error("cannot mix method UNDEFINED with something else"); mpi->handler = handler; } } /// \brief Initialize the scope object /// /// The default implementation does nothing, derived implementations may /// want to add some default data to the scope. virtual void init_scope(scope& scope) {} private: struct mount_point { mount_point(const std::string& path, const std::string& method, handler_type handler) : path(path), method(method), handler(handler) {} std::string path; std::string method; handler_type handler; }; using mount_point_list = std::vector; mount_point_list m_dispatch_table; }; } // namespace zeep::http libzeep-5.1.8/include/zeep/http/login-controller.hpp0000664000175000017500000000403414324170113022365 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of the zeep::login_controller class. This class inherits from /// html::controller and provides a default for /login and /logout handling. #include #include #include // -------------------------------------------------------------------- // namespace zeep::http { // -------------------------------------------------------------------- /// \brief http controller that handles login and logout /// /// There is a html version of this controller as well, that one is a bit nicer class login_controller : public controller { public: login_controller(const std::string& prefix_path = "/"); /// \brief bind this controller to \a server /// /// Makes sure the server has a security context and adds rules /// to this security context to allow access to the /login page virtual void set_server(basic_server* server); /// \brief will handle the actual requests virtual bool handle_request(request& req, reply& rep); /// \brief return the XHTML login form, subclasses can override this to provide custom login forms /// /// The document returned should have input fields for 'username', 'password' and a hidden '_csrf' /// and 'uri' value. /// /// The _csrf value is used to guard against CSRF attacks. The uri is the location to redirect to /// in case of a valid login. virtual xml::document load_login_form(const request& req) const; /// \brief Create an error reply for an unauthorized access /// /// An error handler may call this method to create a decent login screen. /// \param req The request that triggered this call /// \param rep Write the reply in this object virtual void create_unauth_reply(const request& req, reply& reply); }; } libzeep-5.1.8/include/zeep/http/message-parser.hpp0000664000175000017500000000333014324170113022010 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of the zeep::http::{request,reply}_parser classes that parse HTTP input/output #include #include #include #include #include namespace zeep::http { /// An HTTP message parser with support for Transfer-Encoding: Chunked class parser { public: virtual ~parser() {} virtual void reset(); boost::tribool parse_header_lines(char ch); boost::tribool parse_chunk(char ch); boost::tribool parse_footer(char ch); boost::tribool parse_content(char ch); protected: typedef boost::tribool (parser::*state_parser)(char ch); parser(); state_parser m_parser; int m_state; unsigned int m_chunk_size; std::string m_data; std::string m_uri; std::string m_method; bool m_parsing_content; bool m_collect_payload; int m_http_version_major, m_http_version_minor; std::vector
m_headers; std::string m_payload; }; class request_parser : public parser { public: request_parser(); boost::tribool parse(std::streambuf& text); request get_request(); private: boost::tribool parse_initial_line(char ch); }; class reply_parser : public parser { public: reply_parser(); boost::tribool parse(std::streambuf& text); reply get_reply(); virtual void reset(); private: boost::tribool parse_initial_line(char ch); int m_status = 0; std::string m_status_line; }; } // namespace zeep::http libzeep-5.1.8/include/zeep/http/preforked-server.hpp0000664000175000017500000000535114324170113022364 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// Code for a preforked http server implementation #include #include #if HTTP_SERVER_HAS_PREFORK namespace zeep::http { /// \brief class to create a preforked HTTP server /// /// A preforked server means you have a master process that listens to a port /// and whenever a request comes in, the socket is passed to a client. This /// client will then process the request. /// This approach has several advantages related to security and stability. /// /// The way it works in libzeep is, you still create a server that derives /// from zeep::server (if you need a SOAP server) or zeep::http::server (if /// you only want a HTTP server). You then create a /// zeep::http::preforked_server instance passing in the /// parameters required and then call run() on this preforked server. /// /// The preforked_server class records the way your server needs to be /// constructed. When this preforked_server is run, it forks and then /// constructs your server class in the child process. /// /// Example: /// \code{.cpp} /// class my_server { /// public: /// my_server(const string& my_param); /// /// .... /// /// zeep::http::preforked_server server( /// []() { return new my_server("my param value"); } /// ); /// /// // all addresses, port 10333 and two listener threads /// std::thread t(std::bind(&zeep::http::preforked_server::run, &server, "0.0.0.0", 10333, 2)); /// /// ... // wait for signal to stop /// /// server.stop(); /// t.join(); /// \endcode class child_process; class preforked_server { public: preforked_server(const preforked_server&) = delete; preforked_server& operator=(const preforked_server&) = delete; /// \brief constructor /// /// The constructor takes one argument, a function object that creates /// a server class instance. preforked_server(std::function server_factory); virtual ~preforked_server(); /// \brief forks \a nr_of_child_processes children and starts listening, should be a separate thread virtual void run(const std::string& address, short port, int nr_of_child_processes, int nr_of_threads); virtual void start(); ///< signal the thread it can start listening: virtual void stop(); ///< stop the running thread private: std::function m_constructor; std::mutex m_lock; boost::asio::io_context m_io_context; }; } #endiflibzeep-5.1.8/include/zeep/http/reply.hpp0000664000175000017500000001315114324170113020227 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of the zeep::http::reply class encapsulating a valid HTTP reply #include #include #include #include #include namespace zeep::http { /// Various predefined HTTP status codes enum status_type { cont = 100, ok = 200, created = 201, accepted = 202, no_content = 204, multiple_choices = 300, moved_permanently = 301, moved_temporarily = 302, see_other = 303, not_modified = 304, bad_request = 400, unauthorized = 401, forbidden = 403, not_found = 404, method_not_allowed = 405, proxy_authentication_required = 407, internal_server_error = 500, not_implemented = 501, bad_gateway = 502, service_unavailable = 503 }; /// Return the error string for the status_type std::string get_status_text(status_type status); /// Return the string describing the status_type in more detail std::string get_status_description(status_type status); /// \brief the class containing all to generate a HTTP reply /// /// Create a HTTP reply, should be either HTTP 1.0 or 1.1 class reply { public: using cookie_directive = header; /// Create a reply, default is HTTP 1.0. Use 1.1 if you want to use keep alive e.g. reply(status_type status = internal_server_error, std::tuple version = { 1, 0 }); reply(status_type status, std::tuple version, std::vector
&& headers, std::string&& payload); reply(const reply& rhs); reply(reply &&rhs); ~reply(); reply& operator=(const reply &); reply& operator=(reply &&); void reset(); void set_version(int version_major, int version_minor); void set_version(std::tuple version) { set_version(std::get<0>(version), std::get<1>(version)); } /// Add a header with name \a name and value \a value void set_header(const std::string& name, const std::string& value); /// \brief Return the value of the header with name \a name std::string get_header(const std::string& name) const; /// \brief Remove the header with name \a name from the list of headers void remove_header(const std::string& name); /// Set a cookie void set_cookie(const char* name, const std::string& value, std::initializer_list directives = {}); /// \brief Set a header to delete the \a name cookie void set_delete_cookie(const char* name); /// Get a cookie std::string get_cookie(const char* name) const; std::string get_content_type() const { return get_header("Content-Type"); } void set_content_type(const std::string& type) ///< Set the Content-Type header { set_header("Content-Type", type); } /// Set the content and the content-type header depending on the content of doc (might be xhtml) void set_content(xml::document& doc); /// Set the content and the content-type header to text/xml void set_content(const xml::element& data); /// Set the content and the content-type header based on JSON data void set_content(const json::element& json); /// Set the content and the content-type header void set_content(const std::string& data, const std::string& contentType); /// Set the content by copying \a data and the content-type header void set_content(const char* data, size_t size, const std::string& contentType); /// To send a stream of data, with unknown size (using chunked transfer). /// reply takes ownership of \a data and deletes it when done. void set_content(std::istream* data, const std::string& contentType); /// return the content, only useful if the content was set with /// some constant string data. const std::string& get_content() const { return m_content; } /// return the content of the reply as an array of boost::asio::const_buffer objects std::vector to_buffers() const; /// for istream data, if the returned buffer array is empty, the data is done std::vector data_to_buffers(); /// Create a standard reply based on a HTTP status code static reply stock_reply(status_type inStatus); static reply stock_reply(status_type inStatus, const std::string& info); /// Create a standard redirect reply with the specified \a location static reply redirect(const std::string& location); static reply redirect(const std::string& location, status_type status); void set_status(status_type status) { m_status = status; } status_type get_status() const { return m_status; } /// return the size of the reply, only correct if the reply is fully memory based (no streams) size_t size() const; /// \brief Return true if the content will be sent chunked encoded bool get_chunked() const { return m_chunked; } /// for debugging friend std::ostream& operator<<(std::ostream& os, const reply& rep); private: friend class reply_parser; status_type m_status; int m_version_major, m_version_minor; std::vector
m_headers; std::istream* m_data; std::vector m_buffer; std::string m_content; bool m_chunked = false; char m_size_buffer[8]; ///< to store the string with the size for chunked encoding // this status line is only here to have a sensible location to store it mutable std::string m_status_line; }; } libzeep-5.1.8/include/zeep/http/request.hpp0000664000175000017500000002234214324170113020566 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of the zeep::http::request class encapsulating a valid HTTP request #include #include #include #include #include #include #include namespace zeep::http { // -------------------------------------------------------------------- // TODO: one day this should be able to work with temporary files /// \brief container for file parameter information /// /// Files submitted using multipart/form-data contain a filename and /// mimetype that might be interesting to the client. struct file_param { std::string filename; std::string mimetype; const char* data; size_t length; explicit operator bool() const { return data != nullptr; } }; // Some type traits to detect arrays of file_params. // Should eventually be made more generic for all request parameters template struct is_file_param_array_type : std::false_type {}; template struct is_file_param_array_type and std::experimental::is_detected_v and not std::experimental::is_detected_v>> { static constexpr bool value = std::is_same_v; }; template inline constexpr bool is_file_param_array_type_v = is_file_param_array_type::value; // -------------------------------------------------------------------- /// request contains the parsed original HTTP request as received /// by the server. class request { public: friend class message_parser; friend class request_parser; friend class basic_server; using param = header; // alias name using cookie_directive = header; request(const std::string& method, const std::string& uri, std::tuple version = { 1, 0 }, std::vector
&& headers = {}, std::string&& payload = {}); request(const request& req); request& operator=(const request& rhs); /// \brief Fetch the local address from the connected socket void set_local_endpoint(boost::asio::ip::tcp::socket& socket); std::tuple get_local_endpoint() const { return { m_local_address, m_local_port }; } /// \brief Get the HTTP version requested std::tuple get_version() const { return { m_version[0] - '0', m_version[2] - '0' }; } /// \brief Set the METHOD type (POST, GET, etc) void set_method(const std::string& method) { m_method = method; } /// \brief Return the METHOD type (POST, GET, etc) const std::string& get_method() const { return m_method; } /// \brief Return the original URI as requested std::string get_uri() const { return m_uri; } /// \brief Set the URI void set_uri(const std::string& uri) { m_uri = uri; } /// \brief Get the address of the connecting remote std::string get_remote_address() const { return m_remote_address; } /// \brief Get the entire request line (convenience method) std::string get_request_line() const { return get_method() + ' ' + get_uri() + " HTTP/" + std::string(m_version, m_version + 3); } /// \brief Return the payload const std::string& get_payload() const { return m_payload; } /// \brief Set the payload void set_payload(const std::string& payload) { m_payload = payload; } /// \brief Return the time at which this request was received boost::posix_time::ptime get_timestamp() const { return m_timestamp; } /// \brief Return the value in the Accept header for type float get_accept(const char* type) const; /// \brief Check for Connection: keep-alive header bool keep_alive() const; /// \brief Set or replace a named header void set_header(const char* name, const std::string& value); /// \brief Return the list of headers auto get_headers() const { return m_headers; } /// \brief Return the named header std::string get_header(const char* name) const; /// \brief Remove this header from the list of headers void remove_header(const char* name); /// \brief Get the credentials. This is filled in if the request was validated json::element get_credentials() const { return m_credentials; } /// \brief Set the credentials for the request void set_credentials(json::element&& credentials) { m_credentials = std::move(credentials); } /// \brief Return the named parameter /// /// Fetch parameters from a request, either from the URL or from the payload in case /// the request contains a url-encoded or multi-part content-type header std::string get_parameter(const char* name) const { std::string result; std::tie(result, std::ignore) = get_parameter_ex(name); return result; } /// \brief Return the value of the parameter named \a name or the \a defaultValue if this parameter was not found std::string get_parameter(const char* name, const std::string& defaultValue) const { std::string result = get_parameter(name); if (result.empty()) result = defaultValue; return result; } /// \brief Return the value of the parameter named \a name or the \a defaultValue if this parameter was not found template, int> = 0> T get_parameter(const char* name, const T& defaultValue) const { return static_cast(std::stod(get_parameter(name, std::to_string(defaultValue)))); } /// \brief Return the value of the parameter named \a name or the \a defaultValue if this parameter was not found template and not std::is_same_v, int> = 0> T get_parameter(const char* name, const T& defaultValue) const { return static_cast(std::stol(get_parameter(name, std::to_string(defaultValue)))); } /// \brief Return the value of the parameter named \a name or the \a defaultValue if this parameter was not found template, int> = 0> T get_parameter(const char* name, const T& defaultValue) const { auto v = get_parameter(name, std::to_string(defaultValue)); return v == "true" or v == "1"; } /// \brief Return a std::multimap of name/value pairs for all parameters std::multimap get_parameters() const; /// \brief Return the info for a file parameter with name \a name /// file_param get_file_parameter(const char* name) const; /// \brief Return the info for all file parameters with name \a name /// std::vector get_file_parameters(const char* name) const; /// \brief Return whether the named parameter is present in the request bool has_parameter(const char* name) const { bool result; tie(std::ignore, result) = get_parameter_ex(name); return result; } /// \brief Return the value of HTTP Cookie with name \a name std::string get_cookie(const char* name) const; /// \brief Return the value of HTTP Cookie with name \a name std::string get_cookie(const std::string& name) const { return get_cookie(name.c_str()); } /// \brief Set the value of HTTP Cookie with name \a name to \a value void set_cookie(const char* name, const std::string& value); /// \brief Return the content of this request in a sequence of const_buffers /// /// Can be used in code that sends HTTP requests std::vector to_buffers() const; /// \brief Return the Accept-Language header value in the request as a std::locale object std::locale& get_locale() const; /// \brief For debugging purposes friend std::ostream& operator<<(std::ostream& io, const request& req); /// \brief suppose we want to construct requests... void set_content(const std::string& text, const std::string& contentType) { set_header("content-type", contentType); m_payload = text; set_header("content-length", std::to_string(text.length())); } /// \brief set a header void set_header(const std::string& name, const std::string& value); /// \brief Return value and flag indicating the existence of a parameter named \a name std::tuple get_parameter_ex(const char* name) const; private: void set_remote_address(const std::string& address) { m_remote_address = address; } std::string m_local_address; ///< Local endpoint address uint16_t m_local_port = 80; ///< Local endpoint port std::string m_method = "UNDEFINED"; ///< POST, GET, etc. std::string m_uri; ///< The uri as requested char m_version[3]; ///< The version string std::vector
m_headers; ///< A list with zeep::http::header values std::string m_payload; ///< For POST requests bool m_close = false; ///< Whether 'Connection: close' was specified boost::posix_time::ptime m_timestamp = boost::posix_time::second_clock::local_time(); json::element m_credentials; ///< The credentials as found in the validated access-token std::string m_remote_address; ///< Address of connecting client mutable std::unique_ptr m_locale; }; } // namespace zeep::http libzeep-5.1.8/include/zeep/http/rest-controller.hpp0000664000175000017500000003476514324170113022250 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of the zeep::rest_controller class. /// Instances of this class take care of mapping member functions to /// REST calls automatically converting in- and output data #include #include #include #include #include #include #include namespace zeep::http { /// \brief class that helps with handling REST requests /// /// This controller will handle REST requests. (See https://restfulapi.net/ for more info on REST) /// /// To use this, create a subclass and add some methods that should be exposed. /// Then _map_ these methods on a path that optionally contains parameter values. /// /// See the chapter on REST controllers in the documention for more information. class rest_controller : public controller { public: /// \brief constructor /// /// \param prefix_path This is the leading part of the request URI for each mount point /// \param auth Optionally protect these REST calls with a authentication validator. /// This validator should also be added to the web_app that will contain /// this controller. rest_controller(const std::string& prefix_path) : controller(prefix_path) {} ~rest_controller(); /// \brief will do the hard work virtual bool handle_request(request& req, reply& rep); protected: using param = header; /// \brief helper class for pulling parameter values out of the request struct parameter_pack { parameter_pack(const request& req) : m_req(req) {} std::string get_parameter(const char* name) const { auto p = std::find_if(m_path_parameters.begin(), m_path_parameters.end(), [name](auto& pp) { return pp.name == name; }); if (p != m_path_parameters.end()) return p->value; else return m_req.get_parameter(name); } std::tuple get_parameter_ex(const char* name) const { auto p = std::find_if(m_path_parameters.begin(), m_path_parameters.end(), [name](auto& pp) { return pp.name == name; }); if (p != m_path_parameters.end()) return { p->value, true }; else return m_req.get_parameter_ex(name); } std::vector get_parameters(const char* name) const { auto p = std::find_if(m_path_parameters.begin(), m_path_parameters.end(), [name](auto& pp) { return pp.name == name; }); if (p != m_path_parameters.end()) return { p->value }; else { std::vector result; for (const auto& [p_name, p_value]: m_req.get_parameters()) { if (p_name != name) continue; result.push_back(p_value); } return result; } } file_param get_file_parameter(const char* name) const { return m_req.get_file_parameter(name); } std::vector get_file_parameters(const char* name) const { return m_req.get_file_parameters(name); } const request& m_req; std::vector m_path_parameters; }; /// \brief abstract base class for mount points struct mount_point_base { mount_point_base(const char* path, const std::string& method) : m_path(path), m_method(method) {} virtual ~mount_point_base() {} virtual void call(const parameter_pack& params, reply& reply) = 0; std::string m_path; std::string m_method; std::regex m_rx; std::vector m_path_params; }; template struct mount_point {}; template struct mount_point : mount_point_base { using Sig = Result(ControllerType::*)(Args...); using ArgsTuple = std::tuple>...>; using ResultType = typename std::remove_const_t>; using Callback = std::function; static constexpr size_t N = sizeof...(Args); template mount_point(const char* path, const std::string& method, rest_controller* owner, Sig sig, Names... names) : mount_point_base(path, method) { static_assert(sizeof...(Names) == sizeof...(Args), "Number of names should be equal to number of arguments of callback function"); ControllerType* controller = dynamic_cast(owner); if (controller == nullptr) throw std::runtime_error("Invalid controller for callback"); m_callback = [controller, sig](Args... args) { return (controller->*sig)(args...); }; if constexpr (sizeof...(Names) > 0) { // for (auto name: {...names }) size_t ix = 0; for (auto name: {names...}) m_names[ix++] = name; // construct a regex for matching paths namespace fs = std::filesystem; fs::path p = path; std::string ps; for (auto pp: p) { if (pp.empty()) continue; if (not ps.empty()) ps += '/'; if (pp.string().front() == '{' and pp.string().back() == '}') { auto param = pp.string().substr(1, pp.string().length() - 2); auto i = std::find(m_names.begin(), m_names.end(), param); if (i == m_names.end()) { assert(false); throw std::runtime_error("Invalid path for mount point, a parameter was not found in the list of parameter names"); } size_t ni = i - m_names.begin(); m_path_params.emplace_back(m_names[ni]); ps += "([^/]+)"; } else ps += pp.string(); } m_rx.assign(ps); } } virtual void call(const parameter_pack& params, reply& reply) { try { json::element message("ok"); reply.set_content(message); reply.set_status(ok); ArgsTuple args = collect_arguments(params, std::make_index_sequence()); invoke(std::move(args), reply); } catch (const std::exception& e) { json::element message; message["error"] = e.what(); reply.set_content(message); reply.set_status(internal_server_error); } } template, int> = 0> void invoke(ArgsTuple&& args, reply& /*reply*/) { std::apply(m_callback, std::forward(args)); } template or std::is_same_v), int> = 0> void invoke(ArgsTuple&& args, reply& reply) { set_reply(reply, std::apply(m_callback, std::forward(args))); } template, int> = 0> void invoke(ArgsTuple&& args, reply& reply) { reply = std::apply(m_callback, std::forward(args)); } void set_reply(reply& rep, std::filesystem::path v) { rep.set_content(new std::ifstream(v, std::ios::binary), "application/octet-stream"); } void set_reply(reply& rep, zeep::json::element&& v) { rep.set_content(std::move(v)); } template void set_reply(reply& rep, T&& v) { json::element e; to_element(e, v); rep.set_content(e); } template ArgsTuple collect_arguments(const parameter_pack& params, std::index_sequence) { // return std::make_tuple(params.get_parameter(m_names[I])...); return std::make_tuple(get_parameter(params, m_names[I], typename std::tuple_element_t{})...); } bool get_parameter(const parameter_pack& params, const char* name, bool result) { try { auto v = params.get_parameter(name); result = v == "true" or v == "1" or v == "on"; } catch (const std::exception& e) { using namespace std::literals::string_literals; throw std::runtime_error("Invalid value passed for parameter "s + name); } return result; } std::string get_parameter(const parameter_pack& params, const char* name, std::string result) { try { result = params.get_parameter(name); } catch (const std::exception&) { using namespace std::literals::string_literals; throw std::runtime_error("Invalid value passed for parameter "s + name); } return result; } file_param get_parameter(const parameter_pack& params, const char* name, file_param result) { try { result = params.get_file_parameter(name); } catch (const std::exception& e) { using namespace std::literals::string_literals; throw std::runtime_error("Invalid value passed for parameter "s + name); } return result; } std::vector get_parameter(const parameter_pack& params, const char* name, std::vector result) { try { result = params.get_file_parameters(name); } catch (const std::exception& e) { using namespace std::literals::string_literals; throw std::runtime_error("Invalid value passed for parameter "s + name); } return result; } json::element get_parameter(const parameter_pack& params, const char* name, json::element result) { try { json::parse_json(params.get_parameter(name), result); } catch (const std::exception& e) { using namespace std::literals::string_literals; throw std::runtime_error("Invalid value passed for parameter "s + name); } return result; } template std::optional get_parameter(const parameter_pack& params, const char* name, std::optional result) { try { const auto& [s, available] = params.get_parameter_ex(name); if (available) result = boost::lexical_cast(s); } catch (const std::exception& e) { using namespace std::literals::string_literals; throw std::runtime_error("Invalid value passed for parameter "s + name); } return result; } std::optional get_parameter(const parameter_pack& params, const char* name, std::optional result) { try { const auto& [s, available] = params.get_parameter_ex(name); if (available) result = s; } catch (const std::exception& e) { using namespace std::literals::string_literals; throw std::runtime_error("Invalid value passed for parameter "s + name); } return result; } template> or std::is_enum_v or zeep::is_serializable_array_type_v>), int> = 0> T get_parameter(const parameter_pack& params, const char* name, T result) { try { auto p = params.get_parameter(name); if (not p.empty()) result = boost::lexical_cast(p); } catch(const std::exception& e) { using namespace std::literals::string_literals; throw std::runtime_error("Invalid value passed for parameter "s + name); } return result; } template and std::is_enum_v, int> = 0> T get_parameter(const parameter_pack& params, const char* name, T result) { json::element v = params.get_parameter(name); from_element(v, result); return result; } template> or zeep::is_serializable_array_type_v>, int> = 0> T get_parameter(const parameter_pack& params, const char* name, T result) { json::element v; if (params.m_req.get_header("content-type") == "application/json") zeep::json::parse_json(params.m_req.get_payload(), v); else zeep::json::parse_json(params.get_parameter(name), v); from_element(v, result); return result; } Callback m_callback; std::array m_names; }; /// The \a mountPoint parameter is the local part of the mount point. /// It can contain parameters enclosed in curly brackets. /// /// For example, say we need a REST call to get the status of shoppingcart /// where the browser will send: /// /// `GET /ajax/cart/1234/status` /// /// Our callback will look like this, for a class my_ajax_handler constructed /// with prefixPath `/ajax`: /// \code{.cpp} /// CartStatus my_ajax_handler::handle_get_status(int id); /// \endcode /// Then we mount this callback like this: /// \code{.cpp} /// map_get_request("/cart/{id}/status", &my_ajax_handler::handle_get_status, "id"); /// \endcode /// /// The number of \a names of the paramers specified should be equal to the number of /// actual arguments for the callback, otherwise the compiler will complain. /// /// Arguments not found in the path will be fetched from the payload in case of a POST /// or from the URI parameters otherwise. /// \brief map \a mountPoint in URI space to \a callback and map the arguments in this callback to parameters passed with \a names template void map_request(const char* mountPoint, const std::string& method, Callback callback, ArgNames... names) { m_mountpoints.emplace_back(new mount_point(mountPoint, method, this, callback, names...)); } /// \brief map a POST to \a mountPoint in URI space to \a callback and map the arguments in this callback to parameters passed with \a names template void map_post_request(const char* mountPoint, Callback callback, ArgNames... names) { map_request(mountPoint, "POST", callback, names...); } /// \brief map a PUT to \a mountPoint in URI space to \a callback and map the arguments in this callback to parameters passed with \a names template void map_put_request(const char* mountPoint, Sig callback, ArgNames... names) { map_request(mountPoint, "PUT", callback, names...); } /// \brief map a GET to \a mountPoint in URI space to \a callback and map the arguments in this callback to parameters passed with \a names template void map_get_request(const char* mountPoint, Sig callback, ArgNames... names) { map_request(mountPoint, "GET", callback, names...); } /// \brief map a DELETE to \a mountPoint in URI space to \a callback and map the arguments in this callback to parameters passed with \a names template void map_delete_request(const char* mountPoint, Sig callback, ArgNames... names) { map_request(mountPoint, "DELETE", callback, names...); } private: std::list m_mountpoints; }; } // namespace zeep::http libzeep-5.1.8/include/zeep/http/security.hpp0000664000175000017500000002360014324170113020743 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of various classes that help in handling HTTP authentication. #include #include #include #include #include #include // -------------------------------------------------------------------- // namespace zeep::http { /// \brief exception thrown when unauthorized access is detected /// /// when using authentication, this exception is thrown for unauthorized access struct unauthorized_exception : public zeep::exception { /// \brief constructor unauthorized_exception() : exception("unauthorized") { } }; // -------------------------------------------------------------------- class password_encoder { public: virtual ~password_encoder() {} virtual std::string encode(const std::string& password) const = 0; virtual bool matches(const std::string& raw_password, const std::string& stored_password) const = 0; }; // -------------------------------------------------------------------- class pbkdf2_sha256_password_encoder : public password_encoder { public: static inline constexpr const char* name() { return "pbkdf2_sha256"; }; pbkdf2_sha256_password_encoder(int iterations = 30000, int key_length = 32) : m_iterations(iterations), m_key_length(key_length) {} virtual std::string encode(const std::string& password) const { using namespace std::literals; auto salt = zeep::encode_base64(zeep::random_hash()).substr(12); auto pw = zeep::encode_base64(zeep::pbkdf2_hmac_sha256(salt, password, m_iterations, m_key_length)); return "pbkdf2_sha256$" + std::to_string(m_iterations) + '$' + salt + '$' + pw; } virtual bool matches(const std::string& raw_password, const std::string& stored_password) const { using namespace std::literals; bool result = false; std::regex rx(R"(pbkdf2_sha256\$(\d+)\$([^$]+)\$(.+))"); std::smatch m; if (std::regex_match(stored_password, m, rx)) { auto salt = m[2].str(); auto iterations = std::stoul(m[1]); auto test = zeep::pbkdf2_hmac_sha256(salt, raw_password, iterations, m_key_length); test = zeep::encode_base64(test); result = (m[3] == test); } return result; } private: int m_iterations, m_key_length; }; // -------------------------------------------------------------------- /// \brief simple storage class for user details, returned by user_service /// /// The user_details struct contains all the information needed to allow /// access to a resource based on username. The password is the encrypted /// password. struct user_details { user_details() {} user_details(const std::string& username, const std::string& password, const std::set& roles) : username(username), password(password), roles(roles) {} std::string username; std::string password; std::set roles; }; // -------------------------------------------------------------------- /// \brief exception thrown by user_service when trying to load user_details for an unknown user class user_unknown_exception : public zeep::exception { public: user_unknown_exception() : zeep::exception("user unknown") {}; }; /// \brief exception thrown by security_context when a username/password combo is not valid class invalid_password_exception : public zeep::exception { public: invalid_password_exception() : zeep::exception("invalid password") {}; }; // -------------------------------------------------------------------- /// \brief The user service class, provding user data used for authentication /// /// This is an abstract base class for a user service. class user_service { public: user_service() {} virtual ~user_service() {} /// \brief return the user_details for a user named \a username virtual user_details load_user(const std::string& username) const = 0; }; // -------------------------------------------------------------------- /// \brief A very simple implementation of the user service class /// /// This implementation of a user service can be used to jump start a /// project. Normally you would implement something more robust. class simple_user_service : public user_service { public: simple_user_service(std::initializer_list>> users) { for (auto const& [username, password, roles]: users) add_user(username, password, roles); } /// \brief return the user_details for a user named \a username virtual user_details load_user(const std::string& username) const { user_details result = {}; auto ui = std::find_if(m_users.begin(), m_users.end(), [username](const user_details& u) { return u.username == username; }); if (ui != m_users.end()) result = *ui; return result; } void add_user(const std::string& username, const std::string& password, const std::set& roles) { m_users.emplace_back(username, password, roles); } protected: std::vector m_users; }; // -------------------------------------------------------------------- /// \brief class that manages security in a HTTP scope /// /// Add this to a HTTP server and it will check authentication. /// Access to certain paths can be limited by specifying which /// 'roles' are allowed. /// /// The authentication mechanism used is based on JSON Web Tokens, JWT in short. class security_context { public: /// \brief constructor taking a validator /// /// Create a security context for server \a s with validator \a validator and /// a flag \a defaultAccessAllowed indicating if non-matched uri's should be allowed security_context(const std::string& secret, user_service& users, bool defaultAccessAllowed = false) : m_secret(secret), m_users(users), m_default_allow(defaultAccessAllowed) { register_password_encoder(); } /// \brief register a custom password encoder /// /// The password encoder should derive from the abstract password encoder class above /// and also implement the name() method. template void register_password_encoder() { m_known_password_encoders.emplace_back(PWEncoder::name(), new PWEncoder()); } /// \brief Add a new rule for access /// /// A new rule will be added to the list, allowing access to \a glob_pattern /// to users having role \a role /// /// \a glob_pattern should start with a slash void add_rule(const std::string& glob_pattern, const std::string& role) { add_rule(glob_pattern, { role }); } /// \brief Add a new rule for access /// /// A new rule will be added to the list, allowing access to \a glob_pattern /// to users having a role in \a roles /// /// If \a roles is empty, access is allowed to anyone. /// /// \a glob_pattern should start with a slash void add_rule(std::string glob_pattern, std::initializer_list roles) { assert(glob_pattern.front() == '/'); m_rules.emplace_back(rule{glob_pattern, roles}); } /// \brief Validate the request \a req against the stored rules /// /// This method will validate the request in \a req agains the stored rules /// and will throw an exception if access is not allowed. /// The request \a req will be updated with the credentials for further use. /// If the validate CSRF is set, the CSRF token will also be validated. void validate_request(request& req) const; /// \brief Add e.g. headers to reply for an authorized request /// /// When validation succeeds, a HTTP reply is send to the user and this routine will be /// called to augment the reply with additional information. /// /// \param rep Then zeep::http::reply object that will be send to the user /// \param username The name for the authorized user, credentials will be fetched from the user_service void add_authorization_headers(reply &rep, const std::string& username); /// \brief Add e.g. headers to reply for an authorized request /// /// When validation succeeds, a HTTP reply is send to the user and this routine will be /// called to augment the reply with additional information. /// /// \param rep Then zeep::http::reply object that will be send to the user /// \param user The authorized user details void add_authorization_headers(reply &rep, const user_details user); /// \brief verify the username/password combination and set a cookie in the reply in case of success /// /// When validation succeeds, add_authorization_headers is called, otherwise an exception is thrown. /// /// \param username The name for the user /// \param password The password for the user /// \param rep Then zeep::http::reply object that will be send back to the browser void verify_username_password(const std::string& username, const std::string& password, reply &rep); /// \brief return reference to the user_service object user_service& get_user_service() const { return m_users; } /// \brief Get or create a CSRF token for the current request /// /// Return a CSRF token. If this was not present in the request, a new will be generated /// \param req The HTTP request /// \return A std::pair containing the CSRF token and a flag indicating the token is new std::pair get_csrf_token(request& req); /// \brief To automatically validate CSRF tokens, set this flag void set_validate_csrf(bool validate) { m_validate_csrf = validate; } bool get_validate_csrf() const { return m_validate_csrf; } private: security_context(const security_context&) = delete; security_context& operator=(const security_context&) = delete; struct rule { std::string m_pattern; std::set m_roles; }; std::string m_secret; user_service& m_users; bool m_default_allow; bool m_validate_csrf = false; std::vector m_rules; std::vector>> m_known_password_encoders; }; } // namespace zeep::httplibzeep-5.1.8/include/zeep/http/server.hpp0000664000175000017500000001730214324170113020404 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of the zeep::http::server class #include #include #include #include #include #include #include namespace zeep::http { class connection; class controller; class security_context; class error_handler; /// \brief The libzeep HTTP server implementation. Originally based on example code found in boost::asio. /// /// The server class is a simple, stand alone HTTP server. Call bind to make it listen to an address/port /// combination. Add controller classes to do the actual work. These controllers will be tried in the order /// at which they were added to see if they want to process a request. class basic_server { public: /// \brief Simple server, no security, no template processor basic_server(); /// \brief Simple server, no security, create default template processor with \a docroot basic_server(const std::string& docroot) : basic_server() { set_template_processor(new template_processor(docroot)); } /// \brief server with a security context for limited access basic_server(security_context* s_ctxt); /// \brief server with a security context for limited access, create default template processor with \a docroot basic_server(security_context* s_ctxt, const std::string& docroot) : basic_server(s_ctxt) { set_template_processor(new template_processor(docroot)); } basic_server(const basic_server&) = delete; basic_server& operator=(const basic_server&) = delete; virtual ~basic_server(); /// \brief Get the security context provided in the constructor security_context& get_security_context() { return *m_security_context; } /// \brief Test if a security context was provided in the constructor bool has_security_context() const { return (bool)m_security_context; } /// \brief Set the set of allowed methods (default is "GET", "POST", "PUT", "OPTIONS", "HEAD", "DELETE") void set_allowed_methods(const std::set& methods) { m_allowed_methods = methods; } /// \brief Get the set of allowed methods std::set get_allowed_methods() const { return m_allowed_methods; } /// \brief Set the context_name /// /// The context name is used in constructing relative URL's that start with a forward slash void set_context_name(const std::string& context_name) { m_context_name = context_name; } /// \brief Get the context_name /// /// The context name is used in constructing relative URL's that start with a forward slash std::string get_context_name() const { return m_context_name; } /// \brief Add controller to the list of controllers /// /// When a request is received, the list of controllers get a chance /// of handling it, in the order of which they were added to this server. /// If none of the controller handle the request the not_found error is returned. void add_controller(controller* c); /// \brief Add an error handler /// /// Errors are handled by the error handler list. The last added handler /// is called first. void add_error_handler(error_handler* eh); /// \brief Set the template processor /// /// A template processor handles loading templates and processing /// the contents. void set_template_processor(basic_template_processor* template_processor); /// \brief Get the template processor /// /// A template processor handles loading templates and processing /// the contents. This will throw if the processor has not been set /// yet. basic_template_processor& get_template_processor() { if (not m_template_processor) throw std::logic_error("Template processor not specified yet"); return *m_template_processor; } /// \brief Get the template processor /// /// A template processor handles loading templates and processing /// the contents. This will throw if the processor has not been set /// yet. const basic_template_processor& get_template_processor() const { if (not m_template_processor) throw std::logic_error("Template processor not specified yet"); return *m_template_processor; } /// \brief returns whether template processor has been set bool has_template_processor() const { return (bool)m_template_processor; } /// \brief Bind the server to address \a address and port \a port virtual void bind(const std::string& address, unsigned short port); /// \brief Run as many as \a nr_of_threads threads simultaneously virtual void run(int nr_of_threads); /// \brief Stop all threads and stop listening virtual void stop(); /// \brief to extend the log entry for a current request, use this ostream: static std::ostream& get_log(); /// \brief log_forwarded tells the HTTP server to use the last entry in X-Forwarded-For as client log entry void set_log_forwarded(bool v) { m_log_forwarded = v; } /// \brief returns the address as specified in bind std::string get_address() const { return m_address; } /// \brief returns the port as specified in bind unsigned short get_port() const { return m_port; } /// \brief get_io_context has to be public since we need it to call notify_fork from child code virtual boost::asio::io_context& get_io_context() = 0; /// \brief get_executor has to be public since we need it to call notify_fork from child code boost::asio::io_context::executor_type get_executor() { return get_io_context().get_executor(); } protected: /// \brief the default entry logger virtual void log_request(const std::string& client, const request& req, const reply& rep, const boost::posix_time::ptime& start, const std::string& referer, const std::string& userAgent, const std::string& entry) noexcept; private: friend class preforked_server_base; friend class connection; virtual void handle_request(boost::asio::ip::tcp::socket& socket, request& req, reply& rep); void handle_accept(boost::system::error_code ec); std::shared_ptr m_acceptor; std::list m_threads; std::shared_ptr m_new_connection; std::string m_address; unsigned short m_port; bool m_log_forwarded; std::string m_context_name; /// \brief This is required for proxied servers e.g. std::unique_ptr m_security_context; std::unique_ptr m_template_processor; std::list m_controllers; std::list m_error_handlers; std::set m_allowed_methods; }; // -------------------------------------------------------------------- /// \brief The most often used server class, contains its own io_context. class server : public basic_server { public: /// \brief Simple server, no security, no template processor server() {} /// \brief Simple server, no security, create default template processor with \a docroot server(const std::string& docroot) : basic_server(docroot) {} /// \brief server with a security context for limited access server(security_context* s_ctxt) : basic_server(s_ctxt) {} /// \brief server with a security context for limited access, create default template processor with \a docroot server(security_context* s_ctxt, const std::string& docroot) : basic_server(s_ctxt, docroot) {} boost::asio::io_context& get_io_context() override { return m_io_context; } /// \brief Stop the server and also stop the io_context virtual void stop() override { m_io_context.stop(); basic_server::stop(); } private: boost::asio::io_context m_io_context; }; } // namespace zeep::http libzeep-5.1.8/include/zeep/http/soap-controller.hpp0000664000175000017500000002717114324170113022226 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of the zeep::soap_controller class. /// Instances of this class take care of mapping member functions to /// SOAP calls automatically converting in- and output data #include #include #include #include namespace zeep::http { /// soap_envelope is a wrapper around a SOAP envelope. Use it for /// input and output of correctly formatted SOAP messages. class soap_envelope : public boost::noncopyable { public: /// \brief Create an empty envelope soap_envelope(); /// \brief Parse a SOAP message from the payload received from a client, /// throws an exception if the envelope is empty or invalid. soap_envelope(std::string& payload); // /// \brief Parse a SOAP message received from a client, // /// throws an exception if the envelope is empty or invalid. // envelope(xml::document& data); /// \brief The request element as contained in the original SOAP message xml::element& request() { return *m_request; } private: xml::document m_payload; xml::element* m_request; }; // -------------------------------------------------------------------- /// Wrap data into a SOAP envelope /// /// \param data The xml::element object to wrap into the envelope /// \return A new xml::element object containing the envelope. xml::element make_envelope(xml::element&& data); // xml::element make_envelope(const xml::element& data); /// Create a standard SOAP Fault message for the string parameter /// /// \param message The string object containing a descriptive error message. /// \return A new xml::element object containing the fault envelope. xml::element make_fault(const std::string& message); /// Create a standard SOAP Fault message for the exception object /// /// \param ex The exception object that was catched. /// \return A new xml::element object containing the fault envelope. xml::element make_fault(const std::exception& ex); // -------------------------------------------------------------------- /// \brief class that helps with handling SOAP requests /// /// This controller will handle SOAP requests automatically handing the packing /// and unpacking of XML envelopes. /// /// To use this, create a subclass and add some methods that should be exposed. /// Then _map_ these methods on a path that optionally contains parameter values. /// /// See the chapter on SOAP controllers in the documention for more information. class soap_controller : public controller { public: /// \brief constructor /// /// \param prefix_path This is the leading part of the request URI for each mount point /// \param ns This is the XML Namespace for our SOAP calls soap_controller(const std::string& prefix_path, const std::string& ns) : controller(prefix_path) , m_ns(ns) , m_service("b") { while (m_prefix_path.front() == '/') m_prefix_path.erase(0, 1); m_location = m_prefix_path; } ~soap_controller() { for (auto mp: m_mountpoints) delete mp; } /// \brief Set the external address at which this service is visible void set_location(const std::string& location) { m_location = location; } /// \brief Set the service name void set_service(const std::string& service) { m_service = service; } /// \brief map a SOAP action to \a callback using \a names for mapping the arguments /// /// The method in \a callback should be a method of the derived class having as many /// arguments as the number of specified \a names. template void map_action(const char* actionName, Callback callback, ArgNames... names) { auto mp = m_mountpoints.emplace_back(new mount_point(actionName, this, callback, names...)); mp->collect_types(m_types, m_ns); } /// \brief Create a WSDL based on the registered actions xml::element make_wsdl(); /// \brief Handle the SOAP request virtual bool handle_request(request& req, reply& reply); protected: using type_map = std::map; using message_map = std::map; struct mount_point_base { mount_point_base(const char* action) : m_action(action) {} virtual ~mount_point_base() {} virtual void call(const xml::element& request, reply& reply, const std::string& ns) = 0; virtual void collect_types(std::map& types, const std::string& ns) = 0; std::string m_action; }; template struct mount_point {}; template struct mount_point : mount_point_base { using Sig = Result(ControllerType::*)(Args...); using ArgsTuple = std::tuple>...>; using Callback = std::function; static constexpr size_t N = sizeof...(Args); mount_point(const char* action, soap_controller* owner, Sig sig) : mount_point_base(action) { ControllerType* controller = dynamic_cast(owner); if (controller == nullptr) throw std::runtime_error("Invalid controller for callback"); m_callback = [controller, sig](Args... args) { return (controller->*sig)(args...); }; } template mount_point(const char* action, soap_controller* owner, Sig sig, Names... names) : mount_point(action, owner, sig) { static_assert(sizeof...(Names) == sizeof...(Args), "Number of names should be equal to number of arguments of callback function"); // for (auto name: {...names }) size_t i = 0; for (auto name: { names... }) m_names[i++] = name; } virtual void collect_types(std::map& types, const std::string& ns) { if constexpr (not std::is_void_v) m_responseType = xml::type_serializer::schema("Response", ns); if constexpr (sizeof...(Args) > 0) collect_types(types, ns, std::make_index_sequence()); } template void collect_types(std::map& types, const std::string& ns, std::index_sequence ix) { std::make_tuple((m_parameterTypes[I] = collect_type(types, ns))...); } template xml::element collect_type(std::map& types, const std::string& ns) { using type = typename std::tuple_element_t; return xml::type_serializer::schema(m_names[I], ns); } virtual void call(const xml::element& request, reply& reply, const std::string& ns) { reply.set_status(ok); ArgsTuple args = collect_arguments(request, std::make_index_sequence()); invoke(std::move(args), reply, ns); } template, int> = 0> void invoke(ArgsTuple&& args, reply& reply, const std::string& ns) { std::apply(m_callback, std::forward(args)); xml::element response(m_action + "Response"); response.move_to_name_space("m", ns, false, false); reply.set_content(make_envelope(std::move(response))); } template, int> = 0> void invoke(ArgsTuple&& args, reply& reply, const std::string& ns) { auto result = std::apply(m_callback, std::forward(args)); // and serialize the result back into XML xml::element response(m_action + "Response"); xml::serializer sr(response); sr.serialize_element(result); response.move_to_name_space("m", ns, true, true); auto envelope = make_envelope(std::move(response)); reply.set_content(std::move(envelope)); } template ArgsTuple collect_arguments(const xml::element& request, std::index_sequence) { xml::deserializer ds(request); return std::make_tuple(get_parameter>(ds, m_names[I])...); } template T get_parameter(xml::deserializer& ds, const char* name) { T v = {}; ds.deserialize_element(name, v); return v; } virtual void describe(type_map& types, message_map& messages, xml::element& portType, xml::element* binding) { // the request type xml::element requestType("xsd:element", { { "name", m_action }}); auto& complexType = requestType.emplace_back("xsd:complexType"); auto& sequence = complexType.emplace_back("xsd:sequence"); // // for (size_t) // boost::fusion::accumulate(args, m_names.begin(), // parameter_types(types, sequence)); // // and the response type // element* responseType(new element("xsd:element")); // responseType->set_attribute("name", get_response_name()); // types[get_response_name()] = responseType; // complexType = new element("xsd:complexType"); // responseType->append(complexType); // sequence = new element("xsd:sequence"); // complexType->append(sequence); // types[m_action] = requestType; // schema_creator wc(types, sequence); // response_type response; // wc.add_element(m_names[name_count - 1].c_str(), response); // // now the wsdl operations // element* message = new element("wsdl:message"); // message->set_attribute("name", get_action_name() + "RequestMessage"); // element* n = new element("wsdl:part"); // n->set_attribute("name", "parameters"); // n->set_attribute("element", kPrefix + ':' + get_action_name()); // message->append(n); // messages[message->get_attribute("name")] = message; // message = new element("wsdl:message"); // message->set_attribute("name", get_response_name() + "Message"); // n = new element("wsdl:part"); // n->set_attribute("name", "parameters"); // n->set_attribute("element", kPrefix + ':' + get_response_name()); // message->append(n); // messages[message->get_attribute("name")] = message; // // port type // element* operation(new element("wsdl:operation")); // operation->set_attribute("name", get_action_name()); // element* input(new element("wsdl:input")); // input->set_attribute("message", kPrefix + ':' + get_action_name() + "RequestMessage"); // operation->append(input); // element* output(new element("wsdl:output")); // output->set_attribute("message", kPrefix + ':' + get_response_name() + "Message"); // operation->append(output); // portType->append(operation); // // and the soap operations // operation = new element("wsdl:operation"); // operation->set_attribute("name", get_action_name()); // binding->append(operation); // element* soapOperation(new element("soap:operation")); // soapOperation->set_attribute("soapAction", ""); // soapOperation->set_attribute("style", "document"); // operation->append(soapOperation); // input = new element("wsdl:input"); // operation->append(input); // output = new element("wsdl:output"); // operation->append(output); // element* body(new element("soap:body")); // body->set_attribute("use", "literal"); // input->append(body); // body = new element("soap:body"); // body->set_attribute("use", "literal"); // output->append(body); } Callback m_callback; std::array m_names; xml::element m_responseType; std::array m_parameterTypes; }; std::list m_mountpoints; std::string m_ns, m_location, m_service; std::map m_types; }; } // namespace zeep::http libzeep-5.1.8/include/zeep/http/tag-processor.hpp0000664000175000017500000002221614324170113021666 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2019 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of the zeep::http::tag_processor classes. These classes take care of processing HTML templates #include #include #include #include namespace zeep::http { class html_controller; class basic_template_processor; // -------------------------------------------------------------------- // /// \brief Abstract base class for tag_processor. /// /// Note that this class should be light in construction, we create it every time a page is rendered. class tag_processor { public: tag_processor(const tag_processor&) = delete; tag_processor& operator=(const tag_processor&) = delete; virtual ~tag_processor() = default; /// \brief process xml parses the XHTML and fills in the special tags and evaluates the el constructs /// /// This function is called to modify the xml tree in \a node /// /// \param node The XML zeep::xml::node (element) to manipulate /// \param scope The zeep::http::scope containing the variables and request /// \param dir The path to the docroot, the directory containing the XHTML templates /// \param webapp The instance of webapp that called this function virtual void process_xml(xml::node* node, const scope& scope, std::filesystem::path dir, basic_template_processor& loader) = 0; protected: /// \brief constructor /// /// \param ns Then XML namespace for the tags and attributes that are processed by this tag_processor tag_processor(const char* ns) : m_ns(ns) {} std::string m_ns; }; // -------------------------------------------------------------------- /// \brief A tag_processor compatible with the old version of libzeep. Works /// on tags only, not on attributes. Also parses any occurrence of ${}. /// For newer code, please consider using the v2 version only. class tag_processor_v1 : public tag_processor { public: /// \brief default namespace for this processor static constexpr const char* ns() { return "http://www.hekkelman.com/libzeep/m1"; } /// \brief constructor /// /// By default the namespace for the v1 processor is the one in ns() tag_processor_v1(const char* ns = tag_processor_v1::ns()); /// \brief actual implementation of the tag processing. virtual void process_xml(xml::node* node, const scope& scope, std::filesystem::path dir, basic_template_processor& loader); protected: virtual void process_tag(const std::string& tag, xml::element* node, const scope& scope, std::filesystem::path dir, basic_template_processor& loader); private: /// handler for mrs:include tags void process_include(xml::element* node, const scope& scope, std::filesystem::path dir, basic_template_processor& loader); void process_if(xml::element* node, const scope& scope, std::filesystem::path dir, basic_template_processor& loader); void process_iterate(xml::element* node, const scope& scope, std::filesystem::path dir, basic_template_processor& loader); void process_for(xml::element* node, const scope& scope, std::filesystem::path dir, basic_template_processor& loader); void process_number(xml::element* node, const scope& scope, std::filesystem::path dir, basic_template_processor& loader); void process_options(xml::element* node, const scope& scope, std::filesystem::path dir, basic_template_processor& loader); void process_option(xml::element* node, const scope& scope, std::filesystem::path dir, basic_template_processor& loader); void process_checkbox(xml::element* node, const scope& scope, std::filesystem::path dir, basic_template_processor& loader); void process_url(xml::element* node, const scope& scope, std::filesystem::path dir, basic_template_processor& loader); void process_param(xml::element* node, const scope& scope, std::filesystem::path dir, basic_template_processor& loader); void process_embed(xml::element* node, const scope& scope, std::filesystem::path dir, basic_template_processor& loader); bool process_el(const scope& scope, std::string& s); }; // -------------------------------------------------------------------- /// \brief version two of the tag_processor in libzeep /// /// This is the new tag_processor. It is designed to look a bit like /// Thymeleaf (https://www.thymeleaf.org/) /// This processor works on attributes mostly, but can process inline /// el constructs as well. /// /// The documentention contains a section describing all the /// xml tags and attributes this processor handles. class tag_processor_v2 : public tag_processor { public: /// \brief default namespace for this processor static constexpr const char* ns() { return "http://www.hekkelman.com/libzeep/m2"; } /// \brief each handler returns a code telling the processor what to do with the node enum class AttributeAction { none, remove, replace }; using attr_handler = std::function; /// \brief constructor with default namespace tag_processor_v2(const char* ns = tag_processor_v2::ns()); /// \brief process xml parses the XHTML and fills in the special tags and evaluates the el constructs virtual void process_xml(xml::node* node, const scope& scope, std::filesystem::path dir, basic_template_processor& loader); /// \brief It is possible to extend this processor with custom handlers void register_attr_handler(const std::string& attr, attr_handler&& handler) { m_attr_handlers.emplace(attr, std::forward(handler)); } protected: void process_node(xml::node* node, const scope& scope, std::filesystem::path dir, basic_template_processor& loader); void process_text(xml::text& t, const scope& scope); void post_process(xml::element* e, const scope& parentScope, std::filesystem::path dir, basic_template_processor& loader); // std::vector> resolve_fragment_spec(xml::element* node, std::filesystem::path dir, basic_html_controller& controller, const std::string& spec, const scope& scope); std::vector> resolve_fragment_spec(xml::element* node, std::filesystem::path dir, basic_template_processor& loader, const json::element& spec, const scope& scope); std::vector> resolve_fragment_spec(xml::element* node, std::filesystem::path dir, basic_template_processor& loader, const std::string& file, const std::string& selector, bool byID); // virtual void process_node_attr(xml::node* node, const scope& scope, std::filesystem::path dir); AttributeAction process_attr_if(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader, bool unless); AttributeAction process_attr_assert(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader); AttributeAction process_attr_text(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader, bool escaped); AttributeAction process_attr_switch(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader); AttributeAction process_attr_each(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader); AttributeAction process_attr_attr(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader); AttributeAction process_attr_with(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader); AttributeAction process_attr_generic(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader); AttributeAction process_attr_boolean_value(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader); AttributeAction process_attr_inline(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader); AttributeAction process_attr_append(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader, std::string dest, bool prepend); AttributeAction process_attr_classappend(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader); AttributeAction process_attr_styleappend(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader); AttributeAction process_attr_remove(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader); enum class TemplateIncludeAction { include, insert, replace }; AttributeAction process_attr_include(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader, TemplateIncludeAction tia); std::map m_attr_handlers; xml::document m_template; // copy of the entire document... }; } libzeep-5.1.8/include/zeep/http/template-processor.hpp0000664000175000017500000001673414324170113022736 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of the zeep::template_processor class. This class /// handles the loading and processing of XHTML files. #include #include #include #include #include #include // -------------------------------------------------------------------- // namespace zeep::http { class html_controller; // ----------------------------------------------------------------------- /// \brief abstract base class for a resource loader /// /// A resource loader is used to fetch the resources a webapp can serve /// This is an abstract base class, use either file_loader to load files /// from a 'docroot' directory or rsrc_loader to load files from compiled in /// resources. (See https://github.com/mhekkel/mrc for more info on resources) class resource_loader { public: virtual ~resource_loader() {} resource_loader(const resource_loader&) = delete; resource_loader& operator=(const resource_loader&) = delete; /// \brief return last_write_time of \a file virtual std::filesystem::file_time_type file_time(const std::string& file, std::error_code& ec) noexcept = 0; /// \brief basic loader, returns error in ec if file was not found virtual std::istream* load_file(const std::string& file, std::error_code& ec) noexcept = 0; protected: resource_loader() {} }; // ----------------------------------------------------------------------- /// \brief actual implementation of a zeep::resource_loader that loads files from disk /// /// Load the resources from the directory specified in the docroot constructor parameter. class file_loader : public resource_loader { public: /// \brief constructor /// /// \param docroot Path to the directory where the 'resources' are located /// /// Throws a runtime_error if the docroot does not exist file_loader(const std::filesystem::path& docroot = "."); /// \brief return last_write_time of \a file virtual std::filesystem::file_time_type file_time(const std::string& file, std::error_code& ec) noexcept; /// \brief basic loader, returns error in ec if file was not found virtual std::istream* load_file(const std::string& file, std::error_code& ec) noexcept; private: std::filesystem::path m_docroot; }; // ----------------------------------------------------------------------- /// \brief actual implementation of a zeep::resource_loader that loads resources from memory /// /// Load the resources from resource data created with mrc (see https://github.com/mhekkel/mrc ) class rsrc_loader : public resource_loader { public: /// \brief constructor /// /// The parameter is not used rsrc_loader(const std::string&); /// \brief return last_write_time of \a file virtual std::filesystem::file_time_type file_time(const std::string& file, std::error_code& ec) noexcept; /// \brief basic loader, returns error in ec if file was not found virtual std::istream* load_file(const std::string& file, std::error_code& ec) noexcept; private: std::filesystem::file_time_type mRsrcWriteTime = {}; }; // -------------------------------------------------------------------- /// \brief base class for template processors /// /// template_processor is used to create XHTML web pages based on the contents of a /// template file and the parameters passed in the request and calculated data stored /// in a scope object. class basic_template_processor { public: basic_template_processor(const std::string& docroot) : m_docroot(docroot) {} virtual ~basic_template_processor() {} /// \brief set the docroot for this processor virtual void set_docroot(const std::filesystem::path& docroot); /// \brief get the current docroot of this processor std::filesystem::path get_docroot() const { return m_docroot; } // -------------------------------------------------------------------- // tag processor support /// \brief process all the tags in this node virtual void process_tags(xml::node* node, const scope& scope); protected: std::map> m_tag_processor_creators; /// \brief process only the tags with the specified namespace prefixes virtual void process_tags(xml::element* node, const scope& scope, std::set registeredNamespaces); public: /// \brief Use to register a new tag_processor and couple it to a namespace template void register_tag_processor(const std::string& ns = TagProcessor::ns()) { m_tag_processor_creators.emplace(ns, [](const std::string& ns) { return new TagProcessor(ns.c_str()); }); } /// \brief Create a tag_processor tag_processor* create_tag_processor(const std::string& ns) const { return m_tag_processor_creators.at(ns)(ns); } // -------------------------------------------------------------------- /// \brief Default handler for serving files out of our doc root virtual void handle_file(const request& request, const scope& scope, reply& reply); public: /// \brief return last_write_time of \a file virtual std::filesystem::file_time_type file_time(const std::string& file, std::error_code& ec) noexcept = 0; /// \brief return error in ec if file was not found virtual std::istream* load_file(const std::string& file, std::error_code& ec) noexcept = 0; public: /// \brief Use load_template to fetch the XHTML template file virtual void load_template(const std::string& file, xml::document& doc); /// \brief Check if the argument \a file contains a valid reference to an XHTML template file and return the path, if any. virtual std::tuple is_template_file(const std::string& file); /// \brief create a reply based on a template virtual void create_reply_from_template(const std::string& file, const scope& scope, reply& reply); /// \brief Initialize the scope object virtual void init_scope(scope& scope); protected: std::string m_ns; std::filesystem::path m_docroot; }; // -------------------------------------------------------------------- /// \brief actual implementation of the abstract basic_template_processor template class html_template_processor : public basic_template_processor { public: html_template_processor(const std::string& docroot = "", bool addDefaultTagProcessors = true) : basic_template_processor(docroot), m_loader(docroot) { if (addDefaultTagProcessors) { register_tag_processor(); register_tag_processor(); } } virtual ~html_template_processor() {} /// return last_write_time of \a file virtual std::filesystem::file_time_type file_time(const std::string& file, std::error_code& ec) noexcept { return m_loader.file_time(file, ec); } // basic loader, returns error in ec if file was not found virtual std::istream* load_file(const std::string& file, std::error_code& ec) noexcept { return m_loader.load_file(file, ec); } protected: Loader m_loader; }; using file_based_html_template_processor = html_template_processor; using rsrc_based_html_template_processor = html_template_processor; /// \brief the actual definition of zeep::template_processor #if WEBAPP_USES_RESOURCES using template_processor = rsrc_based_html_template_processor; #else using template_processor = file_based_html_template_processor; #endif }libzeep-5.1.8/include/zeep/http/uri.hpp0000664000175000017500000000503414324170113017674 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2021 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// A simple uri class. Uses a parser based on simple regular expressions #include #include namespace zeep::http { // -------------------------------------------------------------------- /// \brief the exception thrown by libzeep when an invalid uri is passed to /// the uri constructor. class uri_parse_error : public zeep::exception { public: uri_parse_error() : exception("invalid uri"){}; uri_parse_error(const std::string &u) : exception("invalid uri: " + u){}; }; // -------------------------------------------------------------------- /// \brief Simple class, should be extended to have setters, one day class uri { public: /// \brief constructor that parses the URL in \a s, throws exception if not valid uri(const std::string &s); ~uri(); uri(const uri &u); uri(uri &&u); uri &operator=(const uri &u); uri &operator=(uri &&u); /// \brief Return true if url is empty (not useful I guess, you cannot construct an empty url yet) bool empty() const; /// \brief Return true if the path is absolute, is always false when host is set bool is_absolute() const; /// \brief Return the scheme std::string get_scheme() const; /// \brief Return the host std::string get_host() const; /// \brief Return the path std::filesystem::path get_path() const; /// \brief Return the query std::string get_query() const; /// \brief Return the fragment std::string get_fragment() const; std::string string() const; ///< Return the URI as a string void swap(uri &u) noexcept; friend std::ostream &operator<<(std::ostream &os, const uri &u); private: struct uri_impl *m_impl; }; // -------------------------------------------------------------------- /// \brief Simply check the URI in \a uri, returns true if the uri is valid /// \param uri The URI to check bool is_valid_uri(const std::string& uri); // -------------------------------------------------------------------- /// \brief Decode a URL using the RFC rules /// \param s The URL that needs to be decoded /// \return The decoded URL std::string decode_url(std::string_view s); /// \brief Encode a URL using the RFC rules /// \param s The URL that needs to be encoded /// \return The encoded URL std::string encode_url(std::string_view s); } // namespace zeep::http libzeep-5.1.8/include/zeep/json/0000775000175000017500000000000014324170113016354 5ustar maartenmaartenlibzeep-5.1.8/include/zeep/json/element.hpp0000664000175000017500000005456014324170113020530 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2019 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// Code for zeep::json::element, the JSON object in libzeep #include #include #include #include #include #include #include namespace zeep::json { class element { public: using value_type = detail::value_type; using nullptr_type = std::nullptr_t; using object_type = std::map; using array_type = std::vector; using string_type = std::string; using int_type = int64_t; using float_type = double; using boolean_type = bool; using pointer = element*; using const_pointer = const element*; using difference_type = std::ptrdiff_t; using size_type = std::size_t; using initializer_list_t = std::initializer_list; using reference = element&; using const_reference = const element&; template friend class detail::iterator_impl; using iterator = detail::iterator_impl; using const_iterator = detail::iterator_impl; template using iteration_proxy = detail::iteration_proxy; template friend class detail::iteration_proxy_value; template friend struct detail::factory; private: union element_data { object_type* m_object; array_type* m_array; string_type* m_string; int64_t m_int; double m_float; bool m_boolean; element_data() = default; element_data(bool v) noexcept : m_boolean(v) {} element_data(int64_t v) noexcept : m_int(v) {} element_data(double v) noexcept : m_float(v) {} element_data(value_type t) { switch (t) { case value_type::array: m_array = create(); break; case value_type::boolean: m_boolean = false; break; case value_type::null: m_object = nullptr; break; case value_type::number_float: m_float = 0; break; case value_type::number_int: m_int = 0; break; case value_type::object: m_object = create(); break; case value_type::string: m_string = create(); break; } } element_data(const object_type& v) { m_object = create(v); } element_data(object_type&& v) { m_object = create(std::move(v)); } element_data(const string_type& v) { m_string = create(v); } element_data(string_type&& v) { m_string = create(std::move(v)); } element_data(const array_type& v) { m_array = create(v); } element_data(array_type&& v) { m_array = create(std::move(v)); } void destroy(value_type t) noexcept { switch (t) { case value_type::object: { std::allocator alloc; std::allocator_traits::destroy(alloc, m_object); std::allocator_traits::deallocate(alloc, m_object, 1); break; } case value_type::array: { std::allocator alloc; std::allocator_traits::destroy(alloc, m_array); std::allocator_traits::deallocate(alloc, m_array, 1); break; } case value_type::string: { std::allocator alloc; std::allocator_traits::destroy(alloc, m_string); std::allocator_traits::deallocate(alloc, m_string, 1); break; } default: break; } } }; template static T* create(Args&&... args) { // return new T(args...); std::allocator alloc; using AllocatorTraits = std::allocator_traits>; auto deleter = [&](T * object) { AllocatorTraits::deallocate(alloc, object, 1); }; std::unique_ptr object(AllocatorTraits::allocate(alloc, 1), deleter); assert(object != nullptr); AllocatorTraits::construct(alloc, object.get(), std::forward(args)...); return object.release(); } public: /// empty constructor with a certain type element(value_type t); /// default constructor element(std::nullptr_t = nullptr); element(const element& j); element(element&& j); template, int> = 0> element(const ElementRef& r) : element(r.data()) { validate(); } template>, std::enable_if_t and detail::is_compatible_type_v, int> = 0> element(T&& v) noexcept(noexcept(element_serializer::to_element(std::declval(), std::forward(v)))) { element_serializer::to_element(*this, std::forward(v)); } element(initializer_list_t init); element(size_t cnt, const element& v); static element object(); static element array(); static element object(initializer_list_t init); static element array(initializer_list_t init); element& operator=(element j) noexcept( std::is_nothrow_move_constructible_v and std::is_nothrow_move_assignable_v and std::is_nothrow_move_constructible_v and std::is_nothrow_move_assignable_v); ~element() noexcept; constexpr bool is_null() const noexcept { return m_type == value_type::null; } constexpr bool is_object() const noexcept { return m_type == value_type::object; } constexpr bool is_array() const noexcept { return m_type == value_type::array; } constexpr bool is_string() const noexcept { return m_type == value_type::string; } constexpr bool is_number() const noexcept { return is_number_int() or is_number_float(); } constexpr bool is_number_int() const noexcept { return m_type == value_type::number_int; } constexpr bool is_number_float() const noexcept { return m_type == value_type::number_float; } constexpr bool is_true() const noexcept { return is_boolean() and m_data.m_boolean == true; } constexpr bool is_false() const noexcept { return is_boolean() and m_data.m_boolean == false; } constexpr bool is_boolean() const noexcept { return m_type == value_type::boolean; } constexpr value_type type() const { return m_type; } std::string type_name() const; explicit operator bool() const noexcept; // access to object elements reference at(const typename object_type::key_type& key); const_reference at(const typename object_type::key_type& key) const; reference operator[](const typename object_type::key_type& key); const_reference operator[](const typename object_type::key_type& key) const; // access to array elements reference at(size_t index); const_reference at(size_t index) const; reference operator[](size_t index); const_reference operator[](size_t index) const; iterator begin() noexcept { return iterator(this); } iterator end() noexcept { return iterator(this, -1); } const_iterator begin() const noexcept { return cbegin(); } const_iterator end() const noexcept { return cend(); } const_iterator cbegin() const noexcept { return const_iterator(this); } const_iterator cend() const noexcept { return const_iterator(this, -1); } reference front() { return *begin(); } const_reference front() const { return *cbegin(); } reference back() { auto tmp = end(); --tmp; return *tmp; } const_reference back() const { auto tmp = cend(); --tmp; return *tmp; } private: template iterator insert_iterator(const_iterator pos, Args... args) { iterator result(this); auto insert_pos = std::distance(m_data.m_array->begin(), pos.m_it.m_array_it); m_data.m_array->insert(m_data.m_array->begin() + insert_pos, std::forward(args)...); result.m_it.m_array_it = m_data.m_array->begin() + insert_pos; return result; } public: void clear() noexcept; iterator insert(const_iterator pos, const element& val); iterator insert(const_iterator pos, element&& val) { return insert(pos, val); } iterator insert(const_iterator pos, size_type cnt, const element& val); iterator insert(const_iterator pos, const_iterator first, const_iterator last); iterator insert(const_iterator pos, initializer_list_t lst); void insert(const_iterator first, const_iterator last); void push_back(element&& val); void push_back(const element& val); template std::pair emplace(Args&&... args) { if (is_null()) { m_type = value_type::object; m_data = value_type::object; } else if (not is_object()) throw std::runtime_error("Cannot emplace with json value of type " + type_name()); validate(); auto r = m_data.m_object->emplace(std::forward(args)...); auto i = begin(); i.m_it.m_object_it = r.first; return { i, r.second }; } template void emplace_back(Args&&... args) { if (not (is_null() or is_array())) throw std::runtime_error("Cannot use emplace_back with " + type_name()); if (is_null()) { m_type = value_type::array; m_data = value_type::array; } m_data.m_array->emplace_back(std::forward(args)...); } template or std::is_same_v, int> = 0> Iterator erase(Iterator pos) { if (pos.m_obj != this) throw std::runtime_error("Invalid iterator"); auto result = end(); switch (m_type) { case value_type::array: result.m_it.m_array_it = m_data.m_array->erase(pos.m_it.m_array_it); break; case value_type::object: result.m_it.m_object_it = m_data.m_object->erase(pos.m_it.m_object_it); break; case value_type::null: throw std::runtime_error("Cannot erase in null values"); default: if (pos.m_it.m_p != 0) throw std::runtime_error("Iterator out of range"); if (m_type == value_type::string) { std::allocator alloc; std::allocator_traits::destroy(alloc, m_data.m_string); std::allocator_traits::deallocate(alloc, m_data.m_string, 1); m_data.m_string = nullptr; } m_type = value_type::null; break; } return result; } template or std::is_same_v, int> = 0> Iterator erase(Iterator first, Iterator last) { if (first.m_obj != this or last.m_obj != this) throw std::runtime_error("Invalid iterator"); auto result = end(); switch (m_type) { case value_type::array: result.m_it.m_array_it = m_data.m_array->erase(first.m_it.m_array_it, last.m_it.m_array_it); break; case value_type::object: result.m_it.m_object_it = m_data.m_object->erase(first.m_it.m_object_it, last.m_it.m_object_it); break; case value_type::null: throw std::runtime_error("Cannot erase in null values"); default: if (first.m_it.m_p != 0 or last.m_it.m_p != 0) throw std::runtime_error("Iterator out of range"); if (m_type == value_type::string) { std::allocator alloc; std::allocator_traits::destroy(alloc, m_data.m_string); std::allocator_traits::deallocate(alloc, m_data.m_string, 1); m_data.m_string = nullptr; } m_type = value_type::null; break; } return result; } size_type erase(const typename object_type::key_type& key) { if (is_object()) return m_data.m_object->erase(key); throw std::runtime_error("Cannot use erase() with " + type_name()); } void erase(const size_type index) { if (is_array()) { if (index >= size()) throw std::runtime_error("Index out of range"); m_data.m_array->erase(m_data.m_array->begin() + static_cast(index)); } else throw std::runtime_error("Cannot use erase() with " + type_name()); } void swap(reference other) noexcept ( std::is_nothrow_move_constructible_v and std::is_nothrow_move_assignable_v and std::is_nothrow_move_constructible_v and std::is_nothrow_move_assignable_v ) { std::swap(m_type, other.m_type); std::swap(m_data, other.m_data); validate(); } template const_iterator find(T&& key) const { auto result = cend(); if (is_object()) result.m_it.m_object_it = m_data.m_object->find(std::forward(key)); else if (is_array()) result.m_it.m_array_it = std::find(m_data.m_array->begin(), m_data.m_array->end(), std::forward(key)); return result; } bool contains(element test) const; // TODO: no reverse iterators yet iteration_proxy items() noexcept { return iteration_proxy(*this); } iteration_proxy items() const noexcept { return iteration_proxy(*this); } bool empty() const; size_t size() const; size_t max_size() const noexcept; friend bool operator==(const_reference& lhs, const_reference& rhs); template, int> = 0> friend bool operator==(const_reference& lhs, const T& rhs) { return lhs == element(rhs); } template, int> = 0> friend bool operator==(const T& lhs, const_reference& rhs) { return element(lhs) == rhs; } friend bool operator!=(const_reference& lhs, const_reference& rhs); template, int> = 0> friend bool operator!=(const_reference& lhs, const T& rhs) { return lhs != element(rhs); } template, int> = 0> friend bool operator!=(const T& rhs, const_reference& lhs) { return element(lhs) == rhs; } friend bool operator<(const_reference& lhs, const_reference& rhs); template, int> = 0> friend bool operator<(const_reference& lhs, const T& rhs) { return lhs < element(rhs); } template, int> = 0> friend bool operator<(const T& lhs, const_reference& rhs) { return element(lhs) < rhs; } friend bool operator<=(const_reference& lhs, const_reference& rhs) { return not (rhs < lhs); } template, int> = 0> friend bool operator<=(const_reference& lhs, const T& rhs) { return lhs <= element(rhs); } template, int> = 0> friend bool operator<=(const T& lhs, const_reference& rhs) { return element(lhs) <= rhs; } friend bool operator>(const_reference& lhs, const_reference& rhs) { return not (lhs <= rhs); } template, int> = 0> friend bool operator>(const_reference& lhs, const T& rhs) { return lhs > element(rhs); } template, int> = 0> friend bool operator>(const T& lhs, const_reference& rhs) { return element(lhs) > rhs; } friend bool operator>=(const_reference& lhs, const_reference& rhs) { return not (lhs < rhs); } template, int> = 0> friend bool operator>=(const_reference& lhs, const T& rhs) { return lhs >= element(rhs); } template, int> = 0> friend bool operator>=(const T& lhs, const_reference& rhs) { return element(lhs) >= rhs; } // arithmetic operators element& operator-(); friend element operator+(const_reference& lhs, const_reference& rhs); template, int> = 0> friend element operator+(const_reference& lhs, const T& rhs) { return lhs + element(rhs); } template, int> = 0> friend element operator+(const T& lhs, const_reference& rhs) { return element(lhs) + rhs; } friend element operator-(const_reference& lhs, const_reference& rhs); template, int> = 0> friend element operator-(const_reference& lhs, const T& rhs) { return lhs - element(rhs); } template, int> = 0> friend element operator-(const T& lhs, const_reference& rhs) { return element(lhs) - rhs; } friend element operator*(const_reference& lhs, const_reference& rhs); template, int> = 0> friend element operator*(const_reference& lhs, const T& rhs) { return lhs * element(rhs); } template, int> = 0> friend element operator*(const T& lhs, const_reference& rhs) { return element(lhs) * rhs; } friend element operator/(const_reference& lhs, const_reference& rhs); template, int> = 0> friend element operator/(const_reference& lhs, const T& rhs) { return lhs / element(rhs); } template, int> = 0> friend element operator/(const T& lhs, const_reference& rhs) { return element(lhs) / rhs; } friend element operator%(const_reference& lhs, const_reference& rhs); template, int> = 0> friend element operator%(const_reference& lhs, const T& rhs) { return lhs % element(rhs); } template, int> = 0> friend element operator%(const T& lhs, const_reference& rhs) { return element(lhs) % rhs; } private: // get_impl_ptr object_type* get_impl_ptr(object_type*) noexcept { return is_object() ? m_data.m_object : nullptr; } constexpr const object_type* get_impl_ptr(const object_type*) const noexcept { return is_object() ? m_data.m_object : nullptr; } array_type* get_impl_ptr(array_type*) noexcept { return is_array() ? m_data.m_array : nullptr; } constexpr const array_type* get_impl_ptr(const array_type*) const noexcept { return is_array() ? m_data.m_array : nullptr; } string_type* get_impl_ptr(string_type*) noexcept { return is_string() ? m_data.m_string : nullptr; } constexpr const string_type* get_impl_ptr(const string_type*) const noexcept { return is_string() ? m_data.m_string : nullptr; } int_type* get_impl_ptr(int_type*) noexcept { return is_number_int() ? &m_data.m_int : nullptr; } constexpr const int_type* get_impl_ptr(const int_type*) const noexcept { return is_number_int() ? &m_data.m_int : nullptr; } float_type* get_impl_ptr(float_type*) noexcept { return is_number_float() ? &m_data.m_float : nullptr; } constexpr const float_type* get_impl_ptr(const float_type*) const noexcept { return is_number_float() ? &m_data.m_float : nullptr; } boolean_type* get_impl_ptr(boolean_type*) noexcept { return is_boolean() ? &m_data.m_boolean : nullptr; } constexpr const boolean_type* get_impl_ptr(const boolean_type*) const noexcept { return is_boolean() ? &m_data.m_boolean : nullptr; } public: // access to data // these return a pointer to the internal storage template, int> = 0> auto get_ptr() noexcept -> decltype(std::declval().get_impl_ptr(std::declval

())) { return get_impl_ptr(static_cast

(nullptr)); } template and std::is_const_v>, int> = 0> constexpr auto get_ptr() const noexcept -> decltype(std::declval().get_impl_ptr(std::declval

())) { return get_impl_ptr(static_cast

(nullptr)); } template>, std::enable_if_t, int> = 0> T as() const noexcept(noexcept(element_serializer::from_element(std::declval(), std::declval()))) { static_assert(std::is_default_constructible_v, "Type must be default constructible to use with get()"); U ret = {}; if (not is_null()) element_serializer::from_element(*this, ret); return ret; } friend std::ostream& operator<<(std::ostream& os, const element& v); friend void serialize(std::ostream& os, const element& data); // friend void serialize(std::ostream& os, const element& data, int indent, int level = 0); private: void validate() const { assert(m_type != value_type::object or m_data.m_object != nullptr); assert(m_type != value_type::array or m_data.m_array != nullptr); assert(m_type != value_type::string or m_data.m_string != nullptr); } public: value_type m_type = value_type::null; element_data m_data = {}; }; template<> std::string element::as() const; template<> bool element::as() const; namespace detail { class element_reference { public: element_reference(element&& value) : m_owned(std::move(value)), m_reference(&m_owned), m_rvalue(true) {} element_reference(const element& value) : m_reference(const_cast(&value)), m_rvalue(false) {} element_reference(std::initializer_list init) : m_owned(init), m_reference(&m_owned), m_rvalue(true) {} template ::value, int> = 0> element_reference(Args&& ... args) : m_owned(std::forward(args)...), m_reference(&m_owned), m_rvalue(true) {} element_reference(element_reference&&) = default; element_reference(const element_reference&) = delete; element_reference& operator=(const element_reference&) = delete; element_reference& operator=(element_reference&&) = delete; ~element_reference() = default; element data() const { if (m_rvalue) return std::move(*m_reference); return *m_reference; } element const& operator*() const { return *static_cast(m_reference); } element const* operator->() const { return static_cast(m_reference); } private: element m_owned; element* m_reference = nullptr; bool m_rvalue; }; } // detail // working around a nuisance in g++ < 9: default for parameter init = {} is not accepted inline element element::object() { return element::object({}); } inline element element::array() { return element::array({}); } } // zeep::json libzeep-5.1.8/include/zeep/json/element_fwd.hpp0000664000175000017500000000203514324170113021356 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2019 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// forward declarations required for zeep::json::element, the JSON object in libzeep #include #include namespace zeep::json { class element; namespace detail { enum class value_type : std::uint8_t { null, object, array, string, number_int, number_float, boolean }; inline bool operator<(value_type lhs, value_type rhs) noexcept { static constexpr std::array order = { 0, // null 3, // object 4, // array 5, // string 2, // number_int 2, // number_float 1 // boolean }; const auto lix = static_cast(lhs); const auto rix = static_cast(rhs); return lix < order.size() and rix < order.size() and order[lix] < order[rix]; } class element_reference; } template struct element_serializer; }libzeep-5.1.8/include/zeep/json/factory.hpp0000664000175000017500000000766514324170113020552 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2019 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// factory classes for constructing zeep::json::element objects #include #include #include #include #include namespace zeep::json::detail { // Factory class to construct elements template struct factory {}; template<> struct factory { template static void construct(J& j, bool b) { j.m_type = value_type::boolean; j.m_data = b; j.validate(); } }; template<> struct factory { template static void construct(J& j, const std::string& s) { j.m_type = value_type::string; j.m_data = s; j.validate(); } template static void construct(J& j, std::string&& s) { j.m_type = value_type::string; j.m_data = std::move(s); j.validate(); } template static void construct(J& j, const std::wstring& s) { j.m_type = value_type::string; std::wstring_convert> myconv; j.m_data = myconv.to_bytes(s); j.validate(); } template static void construct(J& j, std::wstring&& s) { j.m_type = value_type::string; std::wstring_convert> myconv; j.m_data = myconv.to_bytes(s); j.validate(); } }; template<> struct factory { template static void construct(J& j, double d) { j.m_type = value_type::number_float; j.m_data = d; j.validate(); } }; template<> struct factory { template static void construct(J& j, int64_t i) { j.m_type = value_type::number_int; j.m_data = i; j.validate(); } }; template<> struct factory { template static void construct(J& j, const typename J::array_type& arr) { j.m_type = value_type::array; j.m_data = arr; j.validate(); } template static void construct(J& j, typename J::array_type&& arr) { j.m_type = value_type::array; j.m_data = std::move(arr); j.validate(); } template static void construct(J& j, const std::vector& arr) { j.m_type = value_type::array; j.m_data = value_type::array; j.m_data.m_array->reserve(arr.size()); std::copy(arr.begin(), arr.end(), std::back_inserter(*j.m_data.m_array)); j.validate(); } template, int> = 0> static void construct(J& j, const std::vector& arr) { j.m_type = value_type::array; j.m_data = value_type::array; j.m_data.m_array->resize(arr.size()); std::copy(arr.begin(), arr.end(), j.m_data.m_array->begin()); j.validate(); } template, int> = 0> static void construct(J& j, const T(&arr)[N]) { j.m_type = value_type::array; j.m_data = value_type::array; j.m_data.m_array->resize(N); std::copy(arr, arr + N, j.m_data.m_array->begin()); j.validate(); } }; template<> struct factory { template static void construct(J& j, const typename J::object_type& obj) { j.m_type = value_type::object; j.m_data = obj; j.validate(); } template static void construct(J& j, typename J::object_type&& obj) { j.m_type = value_type::object; j.m_data = std::move(obj); j.validate(); } template, int> = 0> static void construct(J& j, const M& obj) { using std::begin; using std::end; j.m_type = value_type::object; j.m_data.m_object = j.template create(begin(obj), end(obj)); j.validate(); } }; } libzeep-5.1.8/include/zeep/json/from_element.hpp0000664000175000017500000001274014324170113021545 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2019 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// various implementations of the from_element function that return the data contained in a zeep::json::element (JSON) object #include #include namespace zeep::json::detail { template void from_element(const E& e, std::nullptr_t& n) { if (not e.is_null()) throw std::runtime_error("Type should have been null but was " + e.type_name()); n = nullptr; } template and not std::is_same_v, int> = 0> void get_number(const E& e, T& v) { switch (e.type()) { case value_type::number_int: v = static_cast(*e.template get_ptr()); break; case value_type::number_float: v = static_cast(*e.template get_ptr()); break; default: throw std::runtime_error("Type should have been number but was " + e.type_name()); break; } } template void from_element(const E& e, typename E::boolean_type& b) { if (not e.is_boolean()) throw std::runtime_error("Type should have been boolean but was" + e.type_name()); b = *e.template get_ptr(); } // template // void from_element(const E& e, typename E::string_type& s) // { // if (not e.is_string()) // throw std::runtime_error("Type should have been string but was " + e.type_name()); // s = *e.template get_ptr(); // } template void from_element(const E& e, std::string& s) { if (not e.is_string()) throw std::runtime_error("Type should have been string but was " + e.type_name()); s = *e.template get_ptr(); } template void from_element(const E& e, typename E::int_type& i) { get_number(e, i); } template void from_element(const E& e, typename E::float_type& f) { get_number(e, f); } template and not std::is_same_v and not std::is_same_v and not std::is_same_v, int> = 0> void from_element(const E& e, A& v) { switch (e.type()) { case value_type::boolean: v = static_cast(*e.template get_ptr()); break; case value_type::number_int: v = static_cast(*e.template get_ptr()); break; case value_type::number_float: v = static_cast(*e.template get_ptr()); break; default: throw std::runtime_error("Type should have been number but was " + e.type_name()); break; } } template, int> = 0> void from_element(const E& e, Enum &en) { if (value_serializer::empty()) { typename std::underlying_type_t v; get_number(e, v); en = static_cast(v); } else { if (not e.is_string()) throw std::runtime_error("Type should have been string but was " + e.type_name()); auto s = e.template get_ptr(); en = value_serializer::from_string(*s); } } // arrays // nice trick to enforce order in template selection template struct priority_tag : priority_tag < N - 1 > {}; template<> struct priority_tag<0> {}; template void from_element_array_impl(const E& e, typename E::array_type& arr, priority_tag<3>) { arr = *e.template get_ptr(); } template auto from_element_array_impl(const E& e, std::array& arr, priority_tag<2>) -> decltype(e.template as(), void()) { for (size_t i = 0; i < N; ++i) arr[i] = e.at(i).template as(); } template auto from_element_array_impl(const E& e, A& arr, priority_tag<1>) -> decltype( arr.reserve(std::declval()), e.template as(), void() ) { arr.reserve(e.size()); std::transform(e.begin(), e.end(), std::inserter(arr, std::end(arr)), [](const E& i) { return i.template as(); }); } template void from_element_array_impl(const E& e, A& arr, priority_tag<0>) { std::transform(e.begin(), e.end(), std::inserter(arr, std::end(arr)), [](const E& i) { return i.template as(); }); } template, int> = 0> void from_element(const E& e, A& arr) { if (not e.is_array()) throw std::runtime_error("Type should have been array but was " + e.type_name()); from_element_array_impl(e, arr, priority_tag<3>{}); } struct from_element_fn { template auto operator()(const element& j, T& val) const noexcept(noexcept(from_element(j, val))) -> decltype(from_element(j, val), void()) { return from_element(j, val); } }; namespace { constexpr const auto& from_element = typename ::zeep::json::detail::from_element_fn{}; } } libzeep-5.1.8/include/zeep/json/iterator.hpp0000664000175000017500000002445514324170113020730 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2019 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// generic iterator classes used by zeep::json::element #include namespace zeep::json::detail { template class iteration_proxy; template class iteration_proxy_value; // First a base for the iterator, both iterator and const iterator use this. template class iterator_impl { public: friend iterator_impl, typename std::remove_const_t, const E>>; friend E; friend iteration_proxy; friend iteration_proxy_value; using iterator_category = std::bidirectional_iterator_tag; using value_type = typename E::value_type; using difference_type = typename E::difference_type; using pointer = typename std::conditional_t, typename E::const_pointer, typename E::pointer>; using reference = typename std::conditional_t, typename E::const_reference, typename E::reference>; using object_type = typename E::object_type; using array_type = typename E::array_type; static_assert(is_element_v>, "The iterator_impl template only accepts element classes"); public: iterator_impl() = default; ~iterator_impl() {} explicit iterator_impl(pointer obj) noexcept : m_obj(obj) { assert(m_obj); switch (m_obj->m_type) { case value_type::array: m_it.m_array_it = m_obj->m_data.m_array->begin(); break; case value_type::object: m_it.m_object_it = m_obj->m_data.m_object->begin(); break; default: m_it.m_p = 0; break; } } iterator_impl(pointer obj, int) noexcept : m_obj(obj) { assert(m_obj); switch (m_obj->m_type) { case value_type::array: m_it.m_array_it = m_obj->m_data.m_array->end(); break; case value_type::object: m_it.m_object_it = m_obj->m_data.m_object->end(); break; case value_type::null: m_it.m_p = 0; break; default: m_it.m_p = 1; break; } } iterator_impl(const iterator_impl &i) : m_obj(i.m_obj) , m_it(i.m_it) { } iterator_impl operator--(int) { auto result(*this); operator--(); return result; } iterator_impl &operator--() { assert(m_obj); switch (m_obj->m_type) { case value_type::array: std::advance(m_it.m_array_it, -1); break; case value_type::object: std::advance(m_it.m_object_it, -1); break; default: --m_it.m_p; break; } return *this; } iterator_impl operator++(int) { auto result(*this); operator++(); return result; } iterator_impl &operator++() { assert(m_obj); switch (m_obj->m_type) { case value_type::array: std::advance(m_it.m_array_it, +1); break; case value_type::object: std::advance(m_it.m_object_it, +1); break; default: ++m_it.m_p; break; } return *this; } reference operator*() const { assert(m_obj); switch (m_obj->m_type) { case value_type::array: assert(m_it.m_array_it != m_obj->m_data.m_array->end()); return *m_it.m_array_it; break; case value_type::object: assert(m_it.m_object_it != m_obj->m_data.m_object->end()); return m_it.m_object_it->second; break; case value_type::null: throw std::runtime_error("Cannot get value"); default: if (m_it.m_p == 0) return *m_obj; throw std::runtime_error("Cannot get value"); } } pointer operator->() const { assert(m_obj); switch (m_obj->m_type) { case value_type::array: assert(m_it.m_array_it != m_obj->m_data.m_array->end()); return &(*m_it.m_array_it); break; case value_type::object: assert(m_it.m_object_it != m_obj->m_data.m_object->end()); return &(m_it.m_object_it->second); break; case value_type::null: throw std::runtime_error("Cannot get value"); default: if (m_it.m_p == 0) return m_obj; throw std::runtime_error("Cannot get value"); } } bool operator==(const iterator_impl &other) const { if (m_obj != other.m_obj) throw std::runtime_error("Containers are not the same"); assert(m_obj); switch (m_obj->m_type) { case value_type::array: return m_it.m_array_it == other.m_it.m_array_it; case value_type::object: return m_it.m_object_it == other.m_it.m_object_it; default: return m_it.m_p == other.m_it.m_p; } } bool operator!=(const iterator_impl &other) const { return not operator==(other); } bool operator<(const iterator_impl &other) const { if (m_obj != other.m_obj) throw std::runtime_error("Containers are not the same"); assert(m_obj); switch (m_obj->m_type) { case value_type::array: return m_it.m_array_it < other.m_it.m_array_it; case value_type::object: throw std::runtime_error("Cannot compare order of object iterators"); default: return m_it.m_p < other.m_it.m_p; } } bool operator<=(const iterator_impl &other) const { return not other.operator<(*this); } bool operator>(const iterator_impl &other) const { return not operator<=(other); } bool operator>=(const iterator_impl &other) const { return not operator<(other); } iterator_impl &operator+=(difference_type i) { assert(m_obj); switch (m_obj->m_type) { case value_type::array: std::advance(m_it.m_array_it, i); case value_type::object: throw std::runtime_error("Cannot use offsets with object iterators"); default: m_it.m_p += i; } return *this; } iterator_impl &operator-=(difference_type i) { operator+=(-i); return *this; } iterator_impl operator+(difference_type i) const { auto result = *this; result += i; return result; } friend iterator_impl operator+(difference_type i, const iterator_impl &iter) { auto result = iter; result += i; return result; } iterator_impl operator-(difference_type i) const { auto result = *this; result -= i; return result; } friend iterator_impl operator-(difference_type i, const iterator_impl &iter) { auto result = iter; result -= i; return result; } difference_type operator-(const iterator_impl &other) const { assert(m_obj); switch (m_obj->m_type) { case value_type::array: return m_it.m_array_it - other.m_it.m_array_it; case value_type::object: throw std::runtime_error("Cannot use offsets with object iterators"); default: return m_it.m_p - other.m_it.m_p; } } reference operator[](difference_type i) const { assert(m_obj); switch (m_obj->m_type) { case value_type::array: *std::next(m_it.m_array_it, i); case value_type::object: throw std::runtime_error("Cannot use offsets with object iterators"); default: if (m_it.m_p == -i) return *m_obj; throw std::runtime_error("Cannot get value"); } } const typename object_type::key_type &key() const { assert(m_obj); if (not m_obj->is_object()) throw std::runtime_error("Can only use key() on object iterators"); return m_it.m_object_it->first; } reference value() const { return operator*(); } private: pointer m_obj = nullptr; // Ahw... MSVC does not allow a union here... // union struct { typename E::array_type::iterator m_array_it; typename E::object_type::iterator m_object_it; difference_type m_p; } m_it = {}; }; // iterator_proxy_value is used for range based for loops, so you can still get key/value template class iteration_proxy_value { public: using difference_type = std::ptrdiff_t; using value_type = iteration_proxy_value; using pointer = value_type *; using reference = value_type &; using iterator_category = std::input_iterator_tag; public: explicit iteration_proxy_value(Iterator iter) noexcept : m_anchor(iter) { } iteration_proxy_value &operator*() { return *this; } iteration_proxy_value &operator++() { ++m_anchor; ++m_index; return *this; } bool operator==(const iteration_proxy_value &other) const { return m_anchor == other.m_anchor; } bool operator!=(const iteration_proxy_value &other) const { return m_anchor != other.m_anchor; } const std::string &key() const { assert(m_anchor.m_obj != nullptr); switch (m_anchor.m_obj->m_type) { case ::zeep::json::detail::value_type::array: if (m_index != m_index_last) { m_index_str = std::to_string(m_index); m_index_last = m_index; } return m_index_str; break; case ::zeep::json::detail::value_type::object: return m_anchor.key(); default: return k_empty; } } typename Iterator::reference value() const { return m_anchor.value(); } // support for structured binding template decltype(auto) get() const { if constexpr (N == 0) return key(); else if constexpr (N == 1) return value(); } private: Iterator m_anchor; size_t m_index = 0; mutable size_t m_index_last = 0; mutable std::string m_index_str = "0"; const std::string k_empty; }; template class iteration_proxy { private: typename Iterator::reference m_container; public: explicit iteration_proxy(typename Iterator::reference cont) noexcept : m_container(cont) { } iteration_proxy_value begin() noexcept { return iteration_proxy_value(m_container.begin()); } iteration_proxy_value end() noexcept { return iteration_proxy_value(m_container.end()); } }; } // namespace zeep::json::detail namespace std { template struct tuple_size<::zeep::json::detail::iteration_proxy_value> : public std::integral_constant { }; template struct tuple_element<0, ::zeep::json::detail::iteration_proxy_value> { using proxy_type = typename ::zeep::json::detail::iteration_proxy_value; using type = decltype(std::declval().key()); }; template struct tuple_element<1, ::zeep::json::detail::iteration_proxy_value> { using proxy_type = typename ::zeep::json::detail::iteration_proxy_value; using type = decltype(std::declval().value()); }; // template // struct tuple_element> // { // public: // using proxy_type = typename ::zeep::json::detail::iteration_proxy_value; // using type = decltype(std::declval().get()); // }; } // namespace stdlibzeep-5.1.8/include/zeep/json/parser.hpp0000664000175000017500000000132714324170113020364 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // expression language support // #pragma once /// \file /// The definition of the JSON parser in libzeep #include #include namespace zeep::json { void parse_json(const std::string& json, json::element& object); void parse_json(std::istream& is, json::element& object); namespace literals { zeep::json::element operator""_json(const char* s, size_t len); } } // namespace zeep::json libzeep-5.1.8/include/zeep/json/serializer.hpp0000664000175000017500000001726714324170113021253 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2019 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of the serializer classes that help serialize data into and out of zeep::json::element (JSON) objects #include #include #include namespace zeep::json { template struct serializer { using element_type = E; template struct serializer_impl {}; template struct serializer_impl and is_type_with_value_serializer_v>> { using value_serializer = zeep::value_serializer; static void serialize(const T& data, element_type& e) { e = value_serializer::to_string(data); } }; template struct serializer_impl>> { static void serialize(const T& data, element_type& e) { serializer sr; const_cast(data).serialize(sr, 0); e.swap(sr.m_elem); } }; template struct serializer_impl and not is_serializable_array_type_v and not json::detail::is_serializable_map_type_v>> { static void serialize(const T& data, element_type& e) { e = data; } }; template struct serializer_impl>> { static void serialize(const T& data, element_type& e) { using value_serializer_impl = serializer_impl; e = element_type::value_type::array; for (auto& i: data) { element_type ei; value_serializer_impl::serialize(i, ei); e.push_back(ei); } } }; template struct serializer_impl>> { static void serialize(const T& data, element_type& e) { using value_serializer_impl = serializer_impl; e = element_type::value_type::object; for (auto& i: data) { element_type ei; value_serializer_impl::serialize(i.second, ei); e.emplace(i.first, ei); } } }; template struct serializer_impl>> { static void serialize(const T& data, element_type& e) { using value_serializer_impl = serializer_impl; if (data) value_serializer_impl::serialize(*data, e); else e = {}; } }; serializer() {} template serializer& operator&(name_value_pair&& nvp) { serialize(nvp.name(), nvp.value()); return *this; } template void serialize(const char* name, const T& data) { using value_serializer_impl = serializer_impl; element_type e; value_serializer_impl::serialize(data, e); m_elem.emplace(std::make_pair(name, e)); } template static void serialize(E& e, const T& v) { using value_serializer_impl = serializer_impl; value_serializer_impl::serialize(v, e); } element_type m_elem; }; template struct deserializer { using element_type = E; template struct deserializer_impl {}; template struct deserializer_impl and is_type_with_value_serializer_v>> { using value_serializer = zeep::value_serializer; static void deserialize(T& data, const element_type& e) { data = value_serializer::from_string(e.template as()); } }; template struct deserializer_impl>> { static void deserialize(T& data, const element_type& e) { deserializer sr(e); data.serialize(sr, 0); } }; template struct deserializer_impl and not is_serializable_array_type_v and not detail::is_serializable_map_type_v>> { static void deserialize(T& data, const element_type& e) { data = e.template as(); } }; template struct deserializer_impl>> { static void deserialize(T& data, const element_type& e) { using value_deserializer_impl = deserializer_impl; data.clear(); for (auto& i: e) { typename T::value_type v; value_deserializer_impl::deserialize(v, i); data.push_back(v); } } }; template struct deserializer_impl>> { static void deserialize(T& data, const element_type& e) { using value_deserializer_impl = deserializer_impl; data.clear(); for (auto& i: e.items()) { typename T::mapped_type v; value_deserializer_impl::deserialize(v, i.value()); data[i.key()] = v; } } }; template struct deserializer_impl>> { static void deserialize(T& data, element_type& e) { using value_deserializer_impl = deserializer_impl; typename T::value_type v; value_deserializer_impl::deserialize(v, e); data.emplace(std::move(v)); } }; deserializer(const element_type& elem) : m_elem(elem) {} template deserializer& operator&(name_value_pair nvp) { deserialize(nvp.name(), nvp.value()); return *this; } template void deserialize(const char* name, T& data) { if (not m_elem.is_object() or m_elem.empty()) return; using value_deserializer_impl = deserializer_impl; auto value = m_elem[name]; if (value.is_null()) return; value_deserializer_impl::deserialize(data, value); } template static void deserialize(const E& e, T& v) { using value_deserializer_impl = deserializer_impl; value_deserializer_impl::deserialize(v, e); } const element_type& m_elem; }; template void to_element(J& e, T& v) { serializer::serialize(e, v); } template void from_element(const J& e, T& v) { deserializer>::deserialize(e, v); } namespace detail { struct to_element_fn { template auto operator()(element& j, T&& val) const noexcept(noexcept(to_element(j, std::forward(val)))) -> decltype(to_element(j, std::forward(val)), void()) { return to_element(j, std::forward(val)); } }; namespace { constexpr const auto& to_element = typename ::zeep::json::detail::to_element_fn{}; } } template struct element_serializer { template static auto to_element(element& j, T&& v) noexcept(noexcept(::zeep::json::detail::to_element(j, std::forward(v)))) -> decltype(::zeep::json::detail::to_element(j, std::forward(v))) { ::zeep::json::detail::to_element(j, std::forward(v)); } template static auto from_element(const element& j, T& v) noexcept(noexcept(::zeep::json::detail::from_element(j, v))) -> decltype(::zeep::json::detail::from_element(j, v)) { ::zeep::json::detail::from_element(j, v); } }; // template // struct element_serializer>> // { // static void to_element(element& j, T v) // { // j = zeep::value_serializer::instance().to_string(v); // } // template // static void from_element(const J& j, T& v) // { // v = zeep::value_serializer::instance().from_string(j.template as()); // } // }; } libzeep-5.1.8/include/zeep/json/to_element.hpp0000664000175000017500000000741214324170113021224 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2019 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// various implementations of the to_element function that intializes a zeep::json::element object with some value #include #include #include namespace zeep::json::detail { template, int> = 0> void to_element(element& v, T b) { factory::construct(v, b); } template, int> = 0> void to_element(J& j, const T(&arr)[N]) { factory::construct(j, std::move(arr)); } template, int> = 0> void to_element(E& v, const T& s) { factory::construct(v, s); } template inline void to_element(E& v, const std::string& s) { factory::construct(v, s); } template inline void to_element(E& v, const std::wstring& s) { factory::construct(v, s); } template void to_element(E& v, std::string&& s) { factory::construct(v, std::move(s)); } template void to_element(E& v, std::wstring&& s) { factory::construct(v, std::move(s)); } template, int> = 0> void to_element(element& v, T f) { factory::construct(v, f); } template and not std::is_same_v, int> = 0> void to_element(element& v, T i) { factory::construct(v, i); } template, int> = 0> void to_element(element& v, T e) { if (value_serializer::empty()) { using int_type = typename std::underlying_type_t; factory::construct(v, static_cast(e)); } else factory::construct(v, value_serializer::to_string(e)); } template, int> = 0> void to_element(element& j, const std::vector& v) { factory::construct(j, v); } template and not is_compatible_object_type_v and not is_compatible_string_type_v and not is_element_v, int> = 0> void to_element(element& j, const T& arr) { factory::construct(j, arr); } template, int> = 0> void to_element(element& j, const std::valarray& arr) { factory::construct(j, std::move(arr)); } template void to_element(element& j, const typename J::array_type& arr) { factory::construct(j, std::move(arr)); } template, int> = 0> void to_element(J& j, const T(&arr)[N]) { factory::construct(j, std::move(arr)); } template, int> = 0> void to_element(element& j, const T& obj) { factory::construct(j, std::move(obj)); } template void to_element(J& j, const J& obj) { factory::construct(j, std::move(obj)); } template>> void to_element(element& j, const std::optional& v) { if (v) to_element(j, *v); } } // zeep::json::detail libzeep-5.1.8/include/zeep/json/type_traits.hpp0000664000175000017500000002010014324170113021425 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2019 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// various templated classes that help selecting the right conversion routines when (de-)serializing zeep::json::element (JSON) objects #include #include #include #include namespace zeep::json::detail { template struct is_element : std::false_type {}; template<> struct is_element : std::true_type {}; template inline constexpr bool is_element_v = is_element::value; template using mapped_type_t = typename T::mapped_type; template using key_type_t = typename T::key_type; template using value_type_t = typename T::value_type; template using iterator_t = typename T::iterator; template using iterator_category_t = typename T::iterator_category; template using difference_type_t = typename T::difference_type; template using reference_t = typename T::reference; template using pointer_t = typename T::pointer; template struct is_iterator_traits : std::false_type {}; template struct is_iterator_traits> { private: using traits = std::iterator_traits; public: static constexpr auto value = std::experimental::is_detected_v and std::experimental::is_detected_v and std::experimental::is_detected_v and std::experimental::is_detected_v and std::experimental::is_detected_v; }; template inline constexpr bool is_iterator_traits_v = is_iterator_traits::value; template using to_element_function = decltype(T::to_element(std::declval()...)); template using from_element_function = decltype(T::from_element(std::declval()...)); template struct has_to_element : std::false_type {}; template struct has_to_element>> { using serializer = element_serializer; static constexpr bool value = std::experimental::is_detected_exact_v; }; template inline constexpr bool has_to_element_v = has_to_element::value; template struct has_from_element : std::false_type {}; template struct has_from_element>> { using serializer = element_serializer; static constexpr bool value = std::experimental::is_detected_exact_v; }; template inline constexpr bool has_from_element_v = has_from_element::value; template struct is_compatible_array_type : std::false_type {}; template struct is_compatible_array_type and std::experimental::is_detected_v and std::is_constructible_v>> : std::true_type {}; template inline constexpr bool is_compatible_array_type_v = is_compatible_array_type::value; template struct is_constructible_array_type : std::false_type {}; template struct is_constructible_array_type and std::experimental::is_detected_v and is_complete_type_v> >> { static constexpr bool value = not is_iterator_traits_v> and ( std::is_same_v or has_from_element_v ); }; template inline constexpr bool is_constructible_array_type_v = is_constructible_array_type::value; template struct is_object_type : std::false_type {}; template struct is_object_type and std::experimental::is_detected_v>> { using map_t = typename J::object_type; static constexpr bool value = std::is_constructible_v and std::is_constructible_v; }; template inline constexpr bool is_object_type_v = is_object_type::value; // any compatible type template struct is_compatible_type : std::false_type {}; template struct is_compatible_type>> { static constexpr bool value = has_to_element_v; }; template inline constexpr bool is_compatible_type_v = is_compatible_type::value; // compatible string template struct is_compatible_string_type : std::false_type {}; template struct is_compatible_string_type>> { static constexpr bool value = std::is_constructible_v; }; template inline constexpr bool is_compatible_string_type_v = is_compatible_string_type::value; // compatible object template struct is_compatible_object_type : std::false_type {}; template struct is_compatible_object_type and std::experimental::is_detected_v>> { using map_t = typename J::object_type; static constexpr bool value = std::is_constructible_v and (std::is_same_v or has_from_element_v); }; template inline constexpr bool is_compatible_object_type_v = is_compatible_object_type::value; template struct is_serializable_map_type : std::false_type {}; template struct is_serializable_map_type and std::experimental::is_detected_v and std::experimental::is_detected_v and not detail::is_compatible_string_type_v>> { static constexpr bool value = std::is_same_v and ( detail::is_compatible_type_v or has_serialize_v ); }; template inline constexpr bool is_serializable_map_type_v = is_serializable_map_type::value; template using has_value_or_result = decltype(std::declval().value_or(std::declval())); template struct is_serializable_optional_type : std::false_type {}; template struct is_serializable_optional_type and std::is_same_v,typename T::value_type> and not detail::is_compatible_string_type_v>> { static constexpr bool value = detail::is_compatible_type_v or has_serialize_v; }; template inline constexpr bool is_serializable_optional_type_v = is_serializable_optional_type::value; } libzeep-5.1.8/include/zeep/nvp.hpp0000664000175000017500000000210314324170113016713 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /*! \file zeep/nvp.hpp \brief File containing the name_value_pair class */ #include namespace zeep { /// \brief class used in describing members having a name and a value /// /// This class is very similar to the one used in boost::serialization, /// it is used to bind a name to a member variable. template class name_value_pair { public: name_value_pair(const char* name, T& value) : m_name(name), m_value(value) {} const char* name() const { return m_name; } T& value() const { return m_value; } const T& const_value() const { return m_value; } private: const char* m_name; T& m_value; }; template name_value_pair make_nvp(const char* name, T& v) { return name_value_pair(name, v); } #define ZEEP_SERIALIZATION_NVP(name) zeep::name_value_pair(#name, name) } // namespace zeep libzeep-5.1.8/include/zeep/streambuf.hpp0000664000175000017500000000531114324170113020104 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2020 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// A simple std::streambuf implementation that wraps around const char* data. #include #include #include #include namespace zeep { // -------------------------------------------------------------------- /// \brief A simple class to use const char buffers as streambuf /// /// It is very often useful to have a streambuf class that can wrap /// wrap around a const char* pointer. class char_streambuf : public std::streambuf { public: /// \brief constructor taking a \a buffer and a \a length char_streambuf(const char* buffer, size_t length) : m_begin(buffer), m_end(buffer + length), m_current(buffer) { assert(std::less_equal()(m_begin, m_end)); } /// \brief constructor taking a \a buffer using the standard strlen to determine the length char_streambuf(const char* buffer) : m_begin(buffer), m_end(buffer + strlen(buffer)), m_current(buffer) { } char_streambuf(const char_streambuf&) = delete; char_streambuf &operator=(const char_streambuf&) = delete; private: int_type underflow() { if (m_current == m_end) return traits_type::eof(); return traits_type::to_int_type(*m_current); } int_type uflow() { if (m_current == m_end) return traits_type::eof(); return traits_type::to_int_type(*m_current++); } int_type pbackfail(int_type ch) { if (m_current == m_begin or (ch != traits_type::eof() and ch != m_current[-1])) return traits_type::eof(); return traits_type::to_int_type(*--m_current); } std::streamsize showmanyc() { assert(std::less_equal()(m_current, m_end)); return m_end - m_current; } pos_type seekoff(std::streambuf::off_type off, std::ios_base::seekdir dir, std::ios_base::openmode /*which*/) { switch (dir) { case std::ios_base::beg: m_current = m_begin + off; break; case std::ios_base::end: m_current = m_end + off; break; case std::ios_base::cur: m_current += off; break; default: break; } if (m_current < m_begin) m_current = m_begin; if (m_current > m_end) m_current = m_end; return m_current - m_begin; } pos_type seekpos(std::streambuf::pos_type pos, std::ios_base::openmode /*which*/) { m_current = m_begin + pos; if (m_current < m_begin) m_current = m_begin; if (m_current > m_end) m_current = m_end; return m_current - m_begin; } private: const char* const m_begin; const char* const m_end; const char* m_current; }; } // namespace zeep libzeep-5.1.8/include/zeep/type-traits.hpp0000664000175000017500000001220414324170113020400 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of various classes that help classify data used to select the correct conversion routines #include #if __has_include() #include #else #include #endif #include #if (not defined(__cpp_lib_experimental_detect) or (__cpp_lib_experimental_detect < 201505)) and (not defined(_LIBCPP_VERSION) or _LIBCPP_VERSION < 5000) // This code is copied from: // https://ld2015.scusa.lsu.edu/cppreference/en/cpp/experimental/is_detected.html namespace std { template< class... > using void_t = void; namespace experimental { namespace detail { template class Op, class... Args> struct detector { using value_t = false_type; using type = Default; }; template class Op, class... Args> struct detector>, Op, Args...> { // Note that std::void_t is a c++17 feature using value_t = true_type; using type = Op; }; } // namespace detail struct nonesuch { nonesuch() = delete; ~nonesuch() = delete; nonesuch(nonesuch const&) = delete; void operator=(nonesuch const&) = delete; }; template class Op, class... Args> using is_detected = typename detail::detector::value_t; template class Op, class... Args> constexpr inline bool is_detected_v = is_detected::value; template class Op, class... Args> using detected_t = typename detail::detector::type; template class Op, class... Args> using detected_or = detail::detector; template class Op, class... Args> using is_detected_exact = std::is_same>; template class Op, class... Args> constexpr inline bool is_detected_exact_v = is_detected_exact::value; } } #endif /// \brief Templates to help selecting the correct serialization class. namespace zeep { template using value_type_t = typename T::value_type; template using key_type_t = typename T::key_type; template using mapped_type_t = typename T::mapped_type; template using iterator_t = typename T::iterator; template using iterator_category_t = typename T::iterator_category; template using difference_type_t = typename T::difference_type; template using reference_t = typename T::reference; template using pointer_t = typename T::pointer; template struct is_complete_type : std::false_type {}; template struct is_complete_type : std::true_type {}; template inline constexpr bool is_complete_type_v = is_complete_type::value; template using std_string_npos_t = decltype(T::npos); template using serialize_value_t = decltype(std::declval&>().from_string(std::declval())); template using serialize_function = decltype(std::declval().serialize(std::declval(), std::declval())); template struct has_serialize : std::false_type {}; template struct has_serialize>> { static constexpr bool value = std::experimental::is_detected_v; }; template inline constexpr bool has_serialize_v = has_serialize::value; template struct is_serializable_type { using value_type = std::remove_const_t>; static constexpr bool value = std::experimental::is_detected_v or has_serialize_v; }; template inline constexpr bool is_serializable_type_v = is_serializable_type::value; template inline constexpr bool is_type_with_value_serializer_v = std::experimental::is_detected_v; template struct is_serializable_array_type : std::false_type {}; template struct is_serializable_array_type and std::experimental::is_detected_v and not std::experimental::is_detected_v>> { static constexpr bool value = is_serializable_type_v; }; template inline constexpr bool is_serializable_array_type_v = is_serializable_array_type::value; } libzeep-5.1.8/include/zeep/unicode-support.hpp0000664000175000017500000002014714324170113021260 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// various definitions of data types and routines used to work with Unicode encoded text #include #include #include #include #include namespace zeep { /// \brief typedef of our own unicode type /// /// We use our own unicode type since wchar_t might be too small. /// This type should be able to contain a UCS4 encoded character. using unicode = char32_t; /// \brief the (admittedly limited) set of supported text encodings in libzeep /// /// these are the supported encodings. Perhaps we should extend this list a bit? enum class encoding_type { ASCII, ///< 7-bit ascii UTF8, ///< UTF-8 UTF16BE, ///< UTF-16 Big Endian UTF16LE, ///< UTF 16 Little Endian ISO88591 ///< Default single byte encoding, is a subset of utf-8 }; /// \brief utf-8 is not single byte e.g. constexpr bool is_single_byte_encoding(encoding_type enc) { return enc == encoding_type::ASCII or enc == encoding_type::ISO88591 or enc == encoding_type::UTF8; } /// Convert a string from UCS4 to UTF-8 std::string wstring_to_string(const std::wstring& s); /// manipulate UTF-8 encoded strings void append(std::string& s, unicode ch); unicode pop_last_char(std::string& s); template std::tuple get_first_char(Iter ptr, Iter end); /// \brief our own implementation of iequals: compares \a a with \a b case-insensitive /// /// This is a limited use function, works only reliably with ASCII. But that's OK. inline bool iequals(const std::string& a, const std::string& b) { bool equal = a.length() == b.length(); for (std::string::size_type i = 0; equal and i < a.length(); ++i) equal = std::toupper(a[i]) == std::toupper(b[i]); return equal; } // inlines /// \brief Append a single unicode character to an utf-8 string inline void append(std::string& s, unicode uc) { if (uc < 0x080) s += (static_cast(uc)); else if (uc < 0x0800) { char ch[2] = { static_cast(0x0c0 | (uc >> 6)), static_cast(0x080 | (uc & 0x3f)) }; s.append(ch, 2); } else if (uc < 0x00010000) { char ch[3] = { static_cast(0x0e0 | (uc >> 12)), static_cast(0x080 | ((uc >> 6) & 0x3f)), static_cast(0x080 | (uc & 0x3f)) }; s.append(ch, 3); } else { char ch[4] = { static_cast(0x0f0 | (uc >> 18)), static_cast(0x080 | ((uc >> 12) & 0x3f)), static_cast(0x080 | ((uc >> 6) & 0x3f)), static_cast(0x080 | (uc & 0x3f)) }; s.append(ch, 4); } } /// \brief remove the last unicode character from an utf-8 string inline unicode pop_last_char(std::string& s) { unicode result = 0; if (not s.empty()) { std::string::iterator ch = s.end() - 1; if ((*ch & 0x0080) == 0) { result = *ch; s.erase(ch); } else { int o = 0; do { result |= (*ch & 0x03F) << o; o += 6; --ch; } while (ch != s.begin() and (*ch & 0x0C0) == 0x080); switch (o) { case 6: result |= (*ch & 0x01F) << 6; break; case 12: result |= (*ch & 0x00F) << 12; break; case 18: result |= (*ch & 0x007) << 18; break; } s.erase(ch, s.end()); } } return result; } // I used to have this comment here: // // this code only works if the input is valid utf-8 // // That was a bad idea.... // /// \brief return the first unicode and the advanced pointer from a string template std::tuple get_first_char(Iter ptr, Iter end) { unicode result = static_cast(*ptr); ++ptr; if (result > 0x07f) { unsigned char ch[3]; if ((result & 0x0E0) == 0x0C0) { if (ptr >= end) throw zeep::exception("Invalid utf-8"); ch[0] = static_cast(*ptr); ++ptr; if ((ch[0] & 0x0c0) != 0x080) throw zeep::exception("Invalid utf-8"); result = ((result & 0x01F) << 6) | (ch[0] & 0x03F); } else if ((result & 0x0F0) == 0x0E0) { if (ptr + 1 >= end) throw zeep::exception("Invalid utf-8"); ch[0] = static_cast(*ptr); ++ptr; ch[1] = static_cast(*ptr); ++ptr; if ((ch[0] & 0x0c0) != 0x080 or (ch[1] & 0x0c0) != 0x080) throw zeep::exception("Invalid utf-8"); result = ((result & 0x00F) << 12) | ((ch[0] & 0x03F) << 6) | (ch[1] & 0x03F); } else if ((result & 0x0F8) == 0x0F0) { if (ptr + 2 >= end) throw zeep::exception("Invalid utf-8"); ch[0] = static_cast(*ptr); ++ptr; ch[1] = static_cast(*ptr); ++ptr; ch[2] = static_cast(*ptr); ++ptr; if ((ch[0] & 0x0c0) != 0x080 or (ch[1] & 0x0c0) != 0x080 or (ch[2] & 0x0c0) != 0x080) throw zeep::exception("Invalid utf-8"); result = ((result & 0x007) << 18) | ((ch[0] & 0x03F) << 12) | ((ch[1] & 0x03F) << 6) | (ch[2] & 0x03F); } } return std::make_tuple(result, ptr); } // -------------------------------------------------------------------- inline std::string to_hex(uint32_t i) { char s[sizeof(i) * 2 + 3]; char* p = s + sizeof(s); *--p = 0; const char kHexChars[] = "0123456789abcdef"; while (i) { *--p = kHexChars[i & 0x0F]; i >>= 4; } *--p = 'x'; *--p = '0'; return p; } // -------------------------------------------------------------------- /// \brief A simple implementation of trim, removing white space from start and end of \a s inline void trim(std::string& s) { std::string::iterator b = s.begin(); while (b != s.end() and *b > 0 and std::isspace(*b)) ++b; std::string::iterator e = s.end(); while (e > b and *(e - 1) > 0 and std::isspace(*(e - 1))) --e; if (b != s.begin() or e != s.end()) s = { b, e }; } // -------------------------------------------------------------------- /// \brief Simplistic implementation of starts_with inline bool starts_with(std::string_view s, std::string_view p) { return s.compare(0, p.length(), p) == 0; } // -------------------------------------------------------------------- /// \brief Simplistic implementation of ends_with inline bool ends_with(std::string_view s, std::string_view p) { return s.length() >= p.length() and s.compare(s.length() - p.length(), p.length(), p) == 0; } // -------------------------------------------------------------------- /// \brief Simplistic implementation of contains inline bool contains(std::string_view s, std::string_view p) { return s.find(p) != std::string_view::npos; } // -------------------------------------------------------------------- /// \brief Simplistic implementation of split, with std:string in the vector inline void split(std::vector& v, std::string_view s, std::string_view p, bool compress = false) { v.clear(); std::string_view::size_type i = 0; const auto e = s.length(); while (i <= e) { auto n = s.find(p, i); if (n > e) n = e; if (n > i or compress == false) v.emplace_back(s.substr(i, n - i)); if (n == std::string_view::npos) break; i = n + p.length(); } } // -------------------------------------------------------------------- /// \brief Simplistic to_lower function, works for one byte charsets only... inline void to_lower(std::string& s, const std::locale& loc = std::locale()) { for (char& ch: s) ch = std::tolower(ch, loc); } // -------------------------------------------------------------------- /// \brief Simplistic join function template > std::string join(const Container& v, std::string_view d) { std::string result; if (not v.empty()) { auto i = v.begin(); for (;;) { result += *i++; if (i == v.end()) break; result += d; } } return result; } // -------------------------------------------------------------------- /// \brief Simplistic replace_all inline void replace_all(std::string& s, std::string_view p, std::string_view r) { std::string::size_type i = 0; for (;;) { auto l = s.find(p, i); if (l == std::string::npos) break; s.replace(l, p.length(), r); i = l + r.length(); } } } // namespace xml libzeep-5.1.8/include/zeep/value-serializer.hpp0000664000175000017500000004201014324170113021374 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /*! \file zeep/value-serializer.hpp \brief File containing the common serialization code in libzeep Serialization in libzeep is used by both the XML and the JSON sub libraries. Code that is common is found here. */ #include #include #include #include #include namespace zeep { // -------------------------------------------------------------------- /// \brief A template boilerplate for conversion of basic types to or /// from strings. /// /// Each specialization should provide a static to_string and a from_string /// method as well as a type_name method. This type_name is used in e.g. /// constructing WSDL files. template struct value_serializer; template<> struct value_serializer { static constexpr const char* type_name() { return "xsd:boolean"; } static std::string to_string(bool value) { return value ? "true" : "false"; } static bool from_string(const std::string& value) { return value == "true" or value == "1" or value == "yes"; } }; template<> struct value_serializer { static constexpr const char* type_name() { return "xsd:string"; } static std::string to_string(const std::string& value) { return value; } static std::string from_string(const std::string& value){ return value; } }; template<> struct value_serializer { static constexpr const char* type_name() { return "xsd:byte"; } static std::string to_string(int8_t value) { return std::to_string(value); } static int8_t from_string(const std::string& value) { return static_cast(std::stoi(value)); } }; template<> struct value_serializer { static constexpr const char* type_name() { return "xsd:unsignedByte"; } static std::string to_string(uint8_t value) { return std::to_string(value); } static uint8_t from_string(const std::string& value) { return static_cast(std::stoul(value)); } }; template<> struct value_serializer { static constexpr const char* type_name() { return "xsd:short"; } static std::string to_string(int16_t value) { return std::to_string(value); } static int16_t from_string(const std::string& value) { return static_cast(std::stoi(value)); } }; template<> struct value_serializer { static constexpr const char* type_name() { return "xsd:unsignedShort"; } static std::string to_string(uint16_t value) { return std::to_string(value); } static uint16_t from_string(const std::string& value) { return static_cast(std::stoul(value)); } }; template<> struct value_serializer { static constexpr const char* type_name() { return "xsd:int"; } static std::string to_string(int32_t value) { return std::to_string(value); } static int32_t from_string(const std::string& value) { return std::stoi(value); } }; template<> struct value_serializer { static constexpr const char* type_name() { return "xsd:unsignedInt"; } static std::string to_string(uint32_t value) { return std::to_string(value); } static uint32_t from_string(const std::string& value) { return static_cast(std::stoul(value)); } }; template<> struct value_serializer { static constexpr const char* type_name() { return "xsd:long"; } static std::string to_string(int64_t value) { return std::to_string(value); } static int64_t from_string(const std::string& value) { return static_cast(std::stoll(value)); } }; template<> struct value_serializer { static constexpr const char* type_name() { return "xsd:unsignedLong"; } static std::string to_string(uint64_t value) { return std::to_string(value); } static uint64_t from_string(const std::string& value) { return static_cast(std::stoull(value)); } }; template<> struct value_serializer { static constexpr const char* type_name() { return "xsd:float"; } // static std::string to_string(float value) { return std::to_string(value); } static std::string to_string(float value) { std::ostringstream s; s << value; return s.str(); } static float from_string(const std::string& value) { return std::stof(value); } }; template<> struct value_serializer { static constexpr const char* type_name() { return "xsd:double"; } // static std::string to_string(double value) { return std::to_string(value); } static std::string to_string(double value) { std::ostringstream s; s << value; return s.str(); } static double from_string(const std::string& value) { return std::stod(value); } }; /// \brief value_serializer for enum values /// /// This class is used to (de-)serialize enum values. To map enum /// values to a string you should use the singleton instance /// accessible through instance() and then call the operator() /// members assinging each of the enum values with their respective /// string. /// /// A recent addition is the init() call to initialize the instance template struct value_serializer>> { std::string m_type_name; using value_map_type = std::map; using value_map_value_type = typename value_map_type::value_type; value_map_type m_value_map; /// \brief Initialize a new instance of value_serializer for this enum, with name and a set of name/value pairs static void init(const char* name, std::initializer_list values) { instance(name).m_value_map = value_map_type(values); } /// \brief Initialize a new anonymous instance of value_serializer for this enum with a set of name/value pairs static void init(std::initializer_list values) { instance().m_value_map = value_map_type(values); } static value_serializer& instance(const char* name = nullptr) { static value_serializer s_instance; if (name and s_instance.m_type_name.empty()) s_instance.m_type_name = name; return s_instance; } value_serializer& operator()(T v, const std::string& name) { m_value_map[v] = name; return *this; } value_serializer& operator()(const std::string& name, T v) { m_value_map[v] = name; return *this; } static const char* type_name() { return instance().m_type_name; } static std::string to_string(T value) { return instance().m_value_map[value]; } static T from_string(const std::string& value) { T result = {}; for (auto& t: instance().m_value_map) if (t.second == value) { result = t.first; break; } return result; } static bool empty() { return instance().m_value_map.empty(); } }; // -------------------------------------------------------------------- // date/time support /// \brief to_string/from_string for boost::posix_time::ptime /// boost::posix_time::ptime values are always assumed to be UTC template<> struct value_serializer { static constexpr const char* type_name() { return "xsd:dateTime"; } /// to_string the boost::posix_time::ptime as YYYY-MM-DDThh:mm:ssZ (zero UTC offset) static std::string to_string(const boost::posix_time::ptime& v) { return boost::posix_time::to_iso_extended_string(v).append("Z"); } /// from_string according to ISO8601 rules. /// If Zulu time is specified, then the parsed xsd:dateTime is returned. /// If an UTC offset is present, then the offset is subtracted from the xsd:dateTime, this yields UTC. /// If no UTC offset is present, then the xsd:dateTime is assumed to be local time and converted to UTC. static boost::posix_time::ptime from_string(const std::string& s) { // We accept 3 general formats: // 1: date fields separated with dashes, time fields separated with colons, eg. 2013-02-17T15:25:20,502104+01:00 // 2: date fields not separated, time fields separated with colons, eg. 20130217T15:25:20,502104+01:00 // 3: date fields not separated, time fields not separated, eg. 20130217T152520,502104+01:00 // Apart from the separators, the 3 regexes are basically the same, i.e. they have the same fields // Note: std::regex is threadsafe, so we can declare these statically // Format 1: // ^(-?\d{4})-(\d{2})-(\d{2})T(\d{2})(:(\d{2})(:(\d{2})([.,](\d+))?)?)?((Z)|([-+])(\d{2})(:(\d{2}))?)?$ // ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^^ ^ ^ ^ ^ // | | | | | | | | | | || | | | | // | | | | | | | | | | || | | | [16] UTC minutes offset // | | | | | | | | | | || | | [15] have UTC minutes offset? // | | | | | | | | | | || | [14] UTC hour offset // | | | | | | | | | | || [13] UTC offset sign // | | | | | | | | | | |[12] Zulu time // | | | | | | | | | | [11] have time zone? // | | | | | | | | | [10] fractional seconds // | | | | | | | | [9] have fractional seconds // | | | | | | | [8] seconds // | | | | | | [7] have seconds? // | | | | | [6] minutes // | | | | [5] have minutes? // | | | [4] hours // | | [3] day // | [2] month // [1] year static std::regex re1("^(-?\\d{4})-(\\d{2})-(\\d{2})T(\\d{2})(:(\\d{2})(:(\\d{2})([.,](\\d+))?)?)?((Z)|([-+])(\\d{2})(:(\\d{2}))?)?$"); // Format 2: // ^(-?\d{4})(\d{2})(\d{2})T(\d{2})(:(\d{2})(:(\d{2})([.,]\d+)?)?)?((Z)|([-+])(\d{2})(:(\d{2}))?)?$ static std::regex re2("^(-?\\d{4})(\\d{2})(\\d{2})T(\\d{2})(:(\\d{2})(:(\\d{2})([.,]\\d+)?)?)?((Z)|([-+])(\\d{2})(:(\\d{2}))?)?$"); // Format 3: // ^(-?\d{4})(\d{2})(\d{2})T(\d{2})((\d{2})((\d{2})([.,]\d+)?)?)?((Z)|([-+])(\d{2})(:(\d{2}))?)?$ static std::regex re3("^(-?\\d{4})(\\d{2})(\\d{2})T(\\d{2})((\\d{2})((\\d{2})([.,]\\d+)?)?)?((Z)|([-+])(\\d{2})(:(\\d{2}))?)?$"); static const int f_year = 1; static const int f_month = 2; static const int f_day = 3; static const int f_hours = 4; static const int f_have_minutes = 5; static const int f_minutes = 6; static const int f_have_seconds = 7; static const int f_seconds = 8; static const int f_have_frac = 9; static const int f_frac = 10; static const int f_have_tz = 11; static const int f_zulu = 12; static const int f_offs_sign = 13; static const int f_offs_hours = 14; static const int f_have_offs_minutes = 15; static const int f_offs_minutes = 16; std::smatch m; if (not std::regex_match(s, m, re1)) { if (not std::regex_match(s, m, re2)) { if (not std::regex_match(s, m, re3)) { throw exception("Bad dateTime format"); } } } boost::gregorian::date d( static_cast(std::stoi(m[f_year])) , static_cast(std::stoi(m[f_month])) , static_cast(std::stoi(m[f_day])) ); int hours = std::stoi(m[f_hours]); int minutes = 0, seconds = 0; if (m.length(f_have_minutes)) { minutes = std::stoi(m[f_minutes]); if (m.length(f_have_seconds)) { seconds = std::stoi(m[f_seconds]); } } boost::posix_time::time_duration t(hours, minutes, seconds); if (m.length(f_have_frac)) { double frac = std::stod("0." + m[f_frac].str()); t += boost::posix_time::microseconds(static_cast((frac + .5) * 1e6)); } boost::posix_time::ptime result = boost::posix_time::ptime(d, t); if (m.length(f_have_tz)) { if (not m.length(f_zulu)) { std::string sign = m[f_offs_sign]; hours = std::stoi(m[f_offs_hours]); minutes = 0; if (m.length(f_have_offs_minutes)) { minutes = std::stoi(m[f_offs_minutes]); } boost::posix_time::time_duration offs(hours, minutes, 0); if (sign == "+") { result -= offs; } else { result += offs; } } } else { // Boost has no clear way of instantiating the *current* timezone, so // it's not possible to convert from local to UTC, using boost::local_time classes // For now, settle on using mktime... std::tm tm = boost::posix_time::to_tm(result); tm.tm_isdst = -1; std::time_t t2 = mktime(&tm); result = boost::posix_time::from_time_t(t2); } return result; } }; /// \brief to_string/from_string for boost::gregorian::date /// boost::gregorian::date values are assumed to be floating, i.e. we don't accept timezone info in dates template<> struct value_serializer { static constexpr const char* type_name() { return "xsd:date"; } /// to_string the boost::gregorian::date as YYYY-MM-DD static std::string to_string(const boost::gregorian::date& v) { return boost::gregorian::to_iso_extended_string(v); } /// from_string boost::gregorian::date according to ISO8601 rules, but without timezone. static boost::gregorian::date from_string(const std::string& s) { // We accept 2 general formats: // 1: date fields separated with dashes, eg. 2013-02-17 // 2: date fields not separated, eg. 20130217 // Apart from the separators, the 2 regexes are basically the same, i.e. they have the same fields // Note: std::regex is threadsafe, so we can declare these statically // Format 1: // ^(-?\d{4})-(\d{2})-(\d{2})$ // ^ ^ ^ // | | | // | | | // | | [3] day // | [2] month // [1] year static std::regex re1("^(-?\\d{4})-(\\d{2})-(\\d{2})$"); // Format 2: // ^(-?\d{4})(\d{2})(\d{2})$ static std::regex re2("^(-?\\d{4})(\\d{2})(\\d{2})$"); static const int f_year = 1; static const int f_month = 2; static const int f_day = 3; std::smatch m; if (not std::regex_match(s, m, re1)) { if (not std::regex_match(s, m, re2)) { throw exception("Bad date format"); } } return boost::gregorian::date( static_cast(std::stoi(m[f_year])) , static_cast(std::stoi(m[f_month])) , static_cast(std::stoi(m[f_day])) ); } }; /// \brief to_string/from_string for boost::posix_time::time_duration /// boost::posix_time::time_duration values are assumed to be floating, i.e. we don't accept timezone info in times template<> struct value_serializer { static constexpr const char* type_name() { return "xsd:time"; } /// to_string the boost::posix_time::time_duration as hh:mm:ss,ffffff static std::string to_string(const boost::posix_time::time_duration& v) { return boost::posix_time::to_simple_string(v); } /// from_string boost::posix_time::time_duration according to ISO8601 rules, but without timezone. static boost::posix_time::time_duration from_string(const std::string& s) { // We accept 2 general formats: // 1: time fields separated with colons, eg. 15:25:20,502104 // 2: time fields not separated, eg. 152520,502104 // Apart from the separators, the 2 regexes are basically the same, i.e. they have the same fields // Note: std::regex is threadsafe, so we can declare these statically // Format 1: // ^(\d{2})(:(\d{2})(:(\d{2})([.,](\d+))?)?)?$ // ^ ^ ^ ^ ^ ^ ^ // | | | | | | | // | | | | | | [7] fractional seconds // | | | | | [6] have fractional seconds // | | | | [5] seconds // | | | [4] have seconds? // | | [3] minutes // | [2] have minutes? // [1] hours static std::regex re1("^(\\d{2})(:(\\d{2})(:(\\d{2})([.,](\\d+))?)?)?$"); // Format 2: // ^(\d{2})((\d{2})((\d{2})([.,](\d+))?)?)?$ static std::regex re2("^(\\d{2})((\\d{2})((\\d{2})([.,](\\d+))?)?)?$"); static const int f_hours = 1; static const int f_have_minutes = 2; static const int f_minutes = 3; static const int f_have_seconds = 4; static const int f_seconds = 5; static const int f_have_frac = 6; static const int f_frac = 7; std::smatch m; if (not std::regex_match(s, m, re1)) { if (not std::regex_match(s, m, re2)) { throw exception("Bad time format"); } } int hours = std::stoi(m[f_hours]); int minutes = 0, seconds = 0; if (m.length(f_have_minutes)) { minutes = std::stoi(m[f_minutes]); if (m.length(f_have_seconds)) { seconds = std::stoi(m[f_seconds]); } } boost::posix_time::time_duration result = boost::posix_time::time_duration(hours, minutes, seconds); if (m.length(f_have_frac)) { double frac = std::stod(std::string(".").append(std::string(m[f_frac]))); result += boost::posix_time::microseconds(static_cast((frac + .5) * 1e6)); } return result; } }; } // namespace zeep libzeep-5.1.8/include/zeep/xml/0000775000175000017500000000000014324170113016203 5ustar maartenmaartenlibzeep-5.1.8/include/zeep/xml/character-classification.hpp0000664000175000017500000000156214324170113023645 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// routines for classifying characters in an XML context #include #include #include namespace zeep::xml { /// some character classification routines bool is_name_start_char(unicode uc); bool is_name_char(unicode uc); bool is_valid_xml_1_0_char(unicode uc); bool is_valid_xml_1_1_char(unicode uc); bool is_valid_system_literal_char(unicode uc); bool is_valid_system_literal(const std::string& s); bool is_valid_public_id_char(unicode uc); bool is_valid_public_id(const std::string& s); } // namespace zeep::xml libzeep-5.1.8/include/zeep/xml/doctype.hpp0000664000175000017500000002072614324170113020372 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// various classes and definitions for handling and using XML DOCTYPE definitions #include #include #include #include #include #include namespace zeep::xml::doctype { // -------------------------------------------------------------------- // doctype support with full validation. class element_; class attlist; class entity; class attribute_; using entity_list = std::vector; using element_list = std::vector; using attribute_list = std::vector; // -------------------------------------------------------------------- enum class ContentSpecType { Empty, Any, Mixed, Children }; // -------------------------------------------------------------------- // validation of elements is done by the validator classes struct content_spec_base; using content_spec_ptr = content_spec_base*; using content_spec_list = std::list; struct state_base; using state_ptr = state_base*; class validator { public: validator(content_spec_base* allowed); validator(const element_* e); validator(const validator& other) = delete; validator& operator=(const validator& other) = delete; ~validator(); bool allow(const std::string& name); ContentSpecType get_content_spec() const; bool done(); private: state_ptr m_state; content_spec_ptr m_allowed; bool m_done; }; // -------------------------------------------------------------------- struct content_spec_base { content_spec_base(const content_spec_base&) = delete; content_spec_base& operator=(const content_spec_base&) = delete; virtual ~content_spec_base() {} virtual state_ptr create_state() const = 0; virtual bool element_content() const { return false; } ContentSpecType get_content_spec() const { return m_content_spec; } protected: content_spec_base(ContentSpecType contentSpec) : m_content_spec(contentSpec) {} ContentSpecType m_content_spec; }; struct content_spec_any : public content_spec_base { content_spec_any() : content_spec_base(ContentSpecType::Any) {} virtual state_ptr create_state() const; }; struct content_spec_empty : public content_spec_base { content_spec_empty() : content_spec_base(ContentSpecType::Empty) {} virtual state_ptr create_state() const; }; struct content_spec_element : public content_spec_base { content_spec_element(const std::string& name) : content_spec_base(ContentSpecType::Children), m_name(name) {} virtual state_ptr create_state() const; virtual bool element_content() const { return true; } std::string m_name; }; struct content_spec_repeated : public content_spec_base { content_spec_repeated(content_spec_ptr allowed, char repetion) : content_spec_base(allowed->get_content_spec()), m_allowed(allowed), m_repetition(repetion) { assert(allowed); } ~content_spec_repeated(); virtual state_ptr create_state() const; virtual bool element_content() const; content_spec_ptr m_allowed; char m_repetition; }; struct content_spec_seq : public content_spec_base { content_spec_seq(content_spec_ptr a) : content_spec_base(a->get_content_spec()) { add(a); } ~content_spec_seq(); void add(content_spec_ptr a); virtual state_ptr create_state() const; virtual bool element_content() const; content_spec_list m_allowed; }; struct content_spec_choice : public content_spec_base { content_spec_choice(bool mixed) : content_spec_base(mixed ? ContentSpecType::Mixed : ContentSpecType::Children), m_mixed(mixed) {} content_spec_choice(content_spec_ptr a, bool mixed) : content_spec_base(mixed ? ContentSpecType::Mixed : a->get_content_spec()), m_mixed(mixed) { add(a); } ~content_spec_choice(); void add(content_spec_ptr a); virtual state_ptr create_state() const; virtual bool element_content() const; content_spec_list m_allowed; bool m_mixed; }; // -------------------------------------------------------------------- enum class AttributeType { CDATA, ID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN, NMTOKENS, Notation, Enumerated }; enum class AttributeDefault { None, Required, Implied, Fixed, Default }; class attribute_ { public: attribute_(const std::string& name, AttributeType type) : m_name(name), m_type(type), m_default(AttributeDefault::None), m_external(false) {} attribute_(const std::string& name, AttributeType type, const std::vector &enums) : m_name(name), m_type(type), m_default(AttributeDefault::None), m_enum(enums), m_external(false) {} const std::string& name() const { return m_name; } bool validate_value(std::string& value, const entity_list& entities) const; void set_default(AttributeDefault def, const std::string& value) { m_default = def; m_default_value = value; } std::tuple get_default() const { return std::make_tuple(m_default, m_default_value); } AttributeType get_type() const { return m_type; } AttributeDefault get_default_type() const { return m_default; } const std::vector& get_enums() const { return m_enum; } void set_external(bool external) { m_external = external; } bool is_external() const { return m_external; } private: // routines used to check _and_ reformat attribute value strings bool is_name(std::string& s) const; bool is_names(std::string& s) const; bool is_nmtoken(std::string& s) const; bool is_nmtokens(std::string& s) const; bool is_unparsed_entity(const std::string& s, const entity_list& l) const; std::string m_name; AttributeType m_type; AttributeDefault m_default; std::string m_default_value; std::vector m_enum; bool m_external; }; // -------------------------------------------------------------------- class element_ { public: element_(const element_ &) = delete; element_& operator=(const element_ &) = delete; element_(const std::string& name, bool declared, bool external) : m_name(name), m_allowed(nullptr), m_declared(declared) {} ~element_(); const attribute_list& get_attributes() const { return m_attlist; } void add_attribute(attribute_* attr); const attribute_* get_attribute(const std::string& name) const; const std::string& name() const { return m_name; } bool is_declared() const { return m_declared; } bool empty() const; void set_allowed(content_spec_ptr allowed); content_spec_ptr get_allowed() const { return m_allowed; } private: std::string m_name; attribute_list m_attlist; content_spec_ptr m_allowed; bool m_declared; }; // -------------------------------------------------------------------- class entity { public: entity(const entity &) = delete; entity& operator=(const entity &) = delete; const std::string& name() const { return m_name; } const std::string& get_replacement() const { return m_replacement; } const std::string& get_path() const { return m_path; } bool is_parsed() const { return m_parsed; } const std::string& get_ndata() const { return m_ndata; } void set_ndata(const std::string& ndata) { m_ndata = ndata; } bool is_external() const { return m_external; } bool is_externally_defined() const { return m_externally_defined; } void set_externally_defined(bool externally_defined) { m_externally_defined = externally_defined; } protected: entity(const std::string& name, const std::string& replacement, bool external, bool parsed) : m_name(name), m_replacement(replacement), m_parameter(false), m_parsed(parsed), m_external(external), m_externally_defined(false) {} entity(const std::string& name, const std::string& replacement, const std::string& path) : m_name(name), m_replacement(replacement), m_path(path), m_parameter(true), m_parsed(true), m_external(true), m_externally_defined(false) {} std::string m_name; std::string m_replacement; std::string m_ndata; std::string m_path; bool m_parameter; bool m_parsed; bool m_external; bool m_externally_defined; }; class general_entity : public entity { public: general_entity(const std::string& name, const std::string& replacement, bool external = false, bool parsed = true) : entity(name, replacement, external, parsed) {} }; class parameter_entity : public entity { public: parameter_entity(const std::string& name, const std::string& replacement, const std::string& path) : entity(name, replacement, path) {} }; } // namespace zeep::xml::doctype libzeep-5.1.8/include/zeep/xml/document.hpp0000664000175000017500000002521714324170113020541 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of the zeep::xml::document class #include #include #include #include namespace zeep::xml { /// zeep::xml::document is the class that contains a parsed XML file. /// You can create an empty document and add nodes to it, or you can /// create it by specifying a string containing XML or an std::istream /// to parse. /// /// If you use an std::fstream to read a file, be sure to open the file /// ios::binary. Otherwise, the detection of text encoding might go wrong /// or the content can become corrupted. /// /// Default is to parse CDATA sections into zeep::xml::text nodes. If you /// want to preserve CDATA sections in the DOM tree, you have to call /// set_preserve_cdata before reading the file. /// /// By default a document is not validated. But you can turn on validation /// by using the appropriate constructor or read method, or by setting /// set_validating explicitly. The DTD's will be loaded from the base dir /// specified, but you can change this by assigning a external_entity_ref_handler. /// /// A document has one zeep::xml::root_node element. This root element /// can have only one zeep::xml::element child node. struct doc_type { std::string m_root; std::string m_pubid; /// pubid is empty for SYSTEM DOCTYPE std::string m_dtd; }; class document : public element { public: /// \brief Constructor for an empty document. document(); /// \brief Copy constructor document(const document& doc); /// \brief Move constructor document(document&& other); /// \brief Copy operator= document& operator=(const document& doc); /// \brief Move operator= document& operator=(document&& other); /// \brief Constructor that will parse the XML passed in argument using default settings \a s document(const std::string& s); /// \brief Constructor that will parse the XML passed in argument using default settings \a is document(std::istream& is); /// \brief Constructor that will parse the XML passed in argument \a is. This /// constructor will also validate the input using DTD's found in \a base_dir document(std::istream& is, const std::string& base_dir); virtual ~document(); /// options for parsing /// validating uses a DTD if it is defined bool is_validating() const { return m_validating; } void set_validating(bool validate) { m_validating = validate; } /// validating_ns: when validating take the NS 1.0 specification into account bool is_validating_ns() const { return m_validating_ns; } void set_validating_ns(bool validate) { m_validating_ns = validate; } /// preserve cdata, preserves CDATA sections instead of converting them /// into text nodes. bool preserves_cdata() const { return m_preserve_cdata; } /// \brief if \a p is true, the CDATA sections will be preserved when parsing XML, if \a p is false, the content of the CDATA will be treated as text void set_preserve_cdata(bool p) { m_preserve_cdata = p; } /// \brief collapse means replacing e.g. `` with `` bool collapses_empty_tags() const { return m_fmt.collapse_tags; } /// \brief if \a c is true, empty tags will be replaced, i.e. write `` instead of `` void set_collapse_empty_tags(bool c) { m_fmt.collapse_tags = c; } /// \brief collapse 'empty elements' according to HTML rules bool write_html() const { return m_fmt.html; } /// \brief if \a c is true, 'empty elements' will be collapsed according to HTML rules void set_write_html(bool f) { m_fmt.html = f; } /// \brief whether to write out comments bool suppresses_comments() const { return m_fmt.suppress_comments; } /// \brief if \a s is true, comments will not be written void set_suppress_comments(bool s) { m_fmt.suppress_comments = s; } /// \brief whether to escape white space bool escapes_white_space() const { return m_fmt.escape_white_space; } /// \brief if \a e is true, white space will be written as XML entities void set_escape_white_space(bool e) { m_fmt.escape_white_space = e; } /// \brief whether to escape double quotes bool escapes_double_quote() const { return m_fmt.escape_double_quote; } /// \brief if \a e is true, double quotes will be written as " void set_escape_double_quote(bool e) { m_fmt.escape_double_quote = e; } /// \brief whether to place a newline after a prolog bool wraps_prolog() const { return m_wrap_prolog; } /// \brief if \a w is true, a newline will be written after the XML prolog void set_wrap_prolog(bool w) { m_wrap_prolog = w; } /// \brief Get the doctype as parsed doc_type get_doctype() const { return m_doctype; } /// \brief Set the doctype to write out void set_doctype(const std::string& root, const std::string& pubid, const std::string& dtd) { set_doctype({root, pubid, dtd}); } /// Set the doctype to write out void set_doctype(const doc_type& doctype) { m_doctype = doctype; m_write_doctype = true; } /// \brief whether to write a XML prolog bool writes_xml_decl() const { return m_write_xml_decl; } /// \brief if \a w is true, an XML prolog will be written void set_write_xml_decl(bool w) { m_write_xml_decl = w; } /// \brief whether to write a DOCTYPE bool writes_doctype() const { return m_write_doctype; } /// \brief if \a f is true a DOCTYPE will be written void set_write_doctype(bool f) { m_write_doctype = f; } /// \brief Check the doctype to see if this is supposed to be HTML5 bool is_html5() const; /// \brief Write out the document friend std::ostream& operator<<(std::ostream& os, const document& doc); /// \brief Read in a document friend std::istream& operator>>(std::istream& is, document& doc); /// \brief Serialization support template void serialize(const char* name, const T& data); ///< Serialize \a data into a document containing \a name as root node /// \brief Serialization support template void deserialize(const char* name, T& data); ///< Deserialize root node with name \a name into \a data. /// Compare two xml documents bool operator==(const document& doc) const; bool operator!=(const document& doc) const { return not operator==(doc); } /// If you want to validate the document using DTD files stored on disk, you can specifiy this directory prior to reading /// the document. void set_base_dir(const std::string& path); /// If you want to be able to load external documents other than trying to read them from disk /// you can set a callback here. template void set_entity_loader(Callback&& cb) { m_external_entity_ref_loader = cb; } encoding_type get_encoding() const; ///< The text encoding as detected in the input. void set_encoding(encoding_type enc); ///< The text encoding to use for output float get_version() const; ///< XML version, should be either 1.0 or 1.1 void set_version(float v); ///< XML version, should be either 1.0 or 1.1 virtual element* root() { return this; } virtual const element* root() const { return this; } virtual node* child() { return empty() ? nullptr : &front(); } virtual const node* child() const { return empty() ? nullptr : &front(); } protected: virtual node_iterator insert_impl(const_iterator pos, node* n); void XmlDeclHandler(encoding_type encoding, bool standalone, float version); void StartElementHandler(const std::string& name, const std::string& uri, const parser::attr_list_type& atts); void EndElementHandler(const std::string& name, const std::string& uri); void CharacterDataHandler(const std::string& data); void ProcessingInstructionHandler(const std::string& target, const std::string& data); void CommentHandler(const std::string& comment); void StartCdataSectionHandler(); void EndCdataSectionHandler(); void StartNamespaceDeclHandler(const std::string& prefix, const std::string& uri); void EndNamespaceDeclHandler(const std::string& prefix); void DoctypeDeclHandler(const std::string& root, const std::string& publicId, const std::string& uri); void NotationDeclHandler(const std::string& name, const std::string& sysid, const std::string& pubid); std::istream* external_entity_ref(const std::string& base, const std::string& pubid, const std::string& sysid); void parse(std::istream& data); // /// \brief To read a document and process elements on the go, use this streaming input function. // /// If the \a proc callback retuns false, processing is terminated. The \a doc_root parameter of // /// the callback is the leading xml up to the first element. // void process_document_elements(std::istream& data, const std::string& element_xpath, // std::function cb); /// The default for libzeep is to locate the external reference based /// on sysid and base_dir. Only local files are loaded this way. /// You can specify a entity loader here if you want to be able to load /// DTD files from another source. std::function m_external_entity_ref_loader; virtual void write(std::ostream& os, format_info fmt) const; std::string m_dtd_dir; // some content information doc_type m_doctype; bool m_validating; bool m_validating_ns = false; bool m_preserve_cdata; bool m_has_xml_decl; encoding_type m_encoding; float m_version; bool m_standalone; bool m_wrap_prolog = true; bool m_write_doctype = false; bool m_write_xml_decl = false; format_info m_fmt; struct notation { std::string m_name; std::string m_sysid; std::string m_pubid; }; element* m_cur = nullptr; // construction cdata* m_cdata = nullptr; // only defined in a CDATA section std::vector> m_namespaces; std::list m_notations; size_t m_root_size_at_first_notation = 0; // for processing instructions that occur before a notation }; namespace literals { document operator""_xml(const char* text, size_t length); } template void document::serialize(const char* name, const T& data) { serializer sr(*this); sr.serialize_element(name, data); } template void document::deserialize(const char* name, T& data) { if (child() == nullptr) throw zeep::exception("empty document"); if (child()->name() != name) throw zeep::exception("root mismatch"); deserializer sr(*this); sr.deserialize_element(name, data); } } // namespace zeep::xml libzeep-5.1.8/include/zeep/xml/node.hpp0000664000175000017500000013076514324170113017655 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// the core of the libzeep XML library defining the main classes in the DOM API #include #include #include #include #include #include namespace zeep::xml { class node; class element; class text; class attribute; class name_space; class comment; class cdata; class processing_instruction; class document; template class basic_node_list; using node_set = std::list; using element_set = std::list; // -------------------------------------------------------------------- /// \brief specification of how XML data should be written out struct format_info { bool indent = false; bool indent_attributes = false; bool collapse_tags = true; bool suppress_comments = false; bool escape_white_space = false; bool escape_double_quote = true; bool html = false; ///< This flag can be used to collapse only 'empty elements' size_t indent_width = 0; size_t indent_level = 0; float version = 1.0f; }; // -------------------------------------------------------------------- /// Node is the abstract base class for all data contained in zeep XML documents. /// The DOM tree consists of nodes that are linked to each other, each /// node can have a parent and siblings pointed to by the next and /// previous members. All nodes in a DOM tree share a common root node. /// /// Nodes can have a name, and the XPath specification requires that a node can /// have a so-called expanded-name. This name consists of a local-name and a /// namespace which is a URI. And we can have a QName which is a concatenation of /// a prefix (that points to a namespace URI) and a local-name separated by a colon. /// /// To reduce storage requirements, names are stored in nodes as qnames, if at all. /// the convenience functions name() and prefix() parse the qname(). ns() returns /// the namespace URI for the node, if it can be resolved. /// /// Nodes inherit the namespace of their parent unless they override it which means /// resolving prefixes and namespaces is done hierarchically /// /// Nodes are stored in a node_list, a generic list class that resembles std::list class node { public: friend class element; friend class document; template friend class basic_node_list; friend class node_list; using parent_type = element; virtual ~node(); /// content of a xml:lang attribute of this element, or its nearest ancestor virtual std::string lang() const; /// Nodes can have a name, and the XPath specification requires that a node can /// have a so-called expanded-name. This name consists of a local-name and a /// namespace which is a URI. And we can have a QName which is a concatenation of /// a prefix (that points to a namespace URI) and a local-name separated by a colon. /// /// To reduce storage requirements, names are stored in nodes as qnames, if at all. virtual std::string get_qname() const; virtual void set_qname(const std::string& /*qn*/) { assert(false); } /// \brief set the qname with two parameters, if \a prefix is empty the qname will be simply \a name /// otherwise the name will be `prefix:name` /// \param prefix The namespace prefix to use /// \param name The actual name to use virtual void set_qname(const std::string& prefix, const std::string& name) { set_qname(prefix.empty() ? name : prefix + ':' + name); } virtual std::string name() const; ///< The name for the node as parsed from the qname. virtual std::string get_prefix() const; ///< The prefix for the node as parsed from the qname. virtual std::string get_ns() const; ///< Returns the namespace URI for the node, if it can be resolved. virtual std::string namespace_for_prefix(const std::string& prefix) const; ///< Return the namespace URI for a prefix virtual std::pair prefix_for_namespace(const std::string& uri) const; ///< Return the prefix for a namespace URI virtual std::string prefix_tag(const std::string& tag, const std::string& uri) const; ///< Prefix the \a tag with the namespace prefix for \a uri /// return all content concatenated, including that of children. virtual std::string str() const = 0; /// Set text, what really happens depends on the type of the subclass implementing this method virtual void set_text(const std::string& value) = 0; // -------------------------------------------------------------------- // low level routines // basic access // All nodes should have a single root node virtual element* root(); ///< The root node for this node virtual const element* root() const; ///< The root node for this node element* parent() { return m_parent; } ///< The parent node for this node const element* parent() const { return m_parent; } ///< The parent node for this node node* next() { return m_next; } ///< The next sibling const node* next() const { return m_next; } ///< The next sibling node* prev() { return m_prev; } ///< The previous sibling const node* prev() const { return m_prev; } ///< The previous sibling /// Compare the node with \a n virtual bool equals(const node* n) const; /// debug routine virtual void validate(); /// return an exact copy of this node, including all data in sub nodes virtual node* clone() const = 0; /// return a copy of this node, including all data in sub nodes, but /// in contrast with clone the data is moved from this node to the cloned /// node. This node will be empty afterwards. virtual node* move() = 0; /// \brief low level routine for writing out XML /// /// This method is usually called by operator<<(std::ostream&, zeep::xml::document&) virtual void write(std::ostream& os, format_info fmt) const = 0; protected: friend class element; node() = default; node(const node& n) = delete; node(node&& n) = delete; node& operator=(const node& n) = delete; node& operator=(node&& n) = delete; virtual void insert_sibling(node* n, node* before); virtual void remove_sibling(node* n); void parent(element* p); void next(node* n); void prev(node* n); protected: element* m_parent = nullptr; node* m_next = nullptr; node* m_prev = nullptr; }; // -------------------------------------------------------------------- /// internal node base class for storing text class node_with_text : public node { public: node_with_text() {} node_with_text(const std::string& s) : m_text(s) {} /// \brief return the text content virtual std::string str() const { return m_text; } /// \brief return the text content, same as str() virtual std::string get_text() const { return m_text; } /// \brief set the text content virtual void set_text(const std::string& text) { m_text = text; } protected: std::string m_text; }; // -------------------------------------------------------------------- /// A node containing a XML comment class comment : public node_with_text { public: comment() {} comment(comment&& c) noexcept : node_with_text(std::move(c.m_text)){} comment(const std::string& text) : node_with_text(text) {} /// \brief compare nodes for equality virtual bool equals(const node* n) const; virtual node* clone() const; virtual node* move(); protected: virtual void write(std::ostream& os, format_info fmt) const; }; // -------------------------------------------------------------------- /// A node containing a XML processing instruction (like e.g. \) class processing_instruction : public node_with_text { public: processing_instruction() {} processing_instruction(processing_instruction&& pi) noexcept : node_with_text(std::move(pi.m_text)) , m_target(std::move(pi.m_target)) {} /// \brief constructor with parameters /// /// This constructs a processing instruction with the specified parameters /// \param target The target, this will follow the /// \param text The text inside this node, e.g. the PHP code. processing_instruction(const std::string& target, const std::string& text) : node_with_text(text), m_target(target) {} /// \brief return the qname which is the same as the target in this case virtual std::string get_qname() const { return m_target; } /// \brief return the target std::string get_target() const { return m_target; } /// \brief set the target void set_target(const std::string& target) { m_target = target; } /// \brief compare nodes for equality virtual bool equals(const node* n) const; virtual node* clone() const; virtual node* move(); protected: virtual void write(std::ostream& os, format_info fmt) const; private: std::string m_target; }; // -------------------------------------------------------------------- /// A node containing text. class text : public node_with_text { public: text() {} text(text&& t) noexcept : node_with_text(std::move(t.m_text)) {} text(const std::string& text) : node_with_text(text) {} /// \brief append \a text to the stored text void append(const std::string& text) { m_text.append(text); } /// \brief compare nodes for equality virtual bool equals(const node* n) const; /// \brief returns true if this text contains only whitespace characters bool is_space() const; virtual node* clone() const; virtual node* move(); protected: virtual void write(std::ostream& os, format_info fmt) const; }; // -------------------------------------------------------------------- /// A node containing the contents of a CDATA section. Normally, these nodes are /// converted to text nodes but you can specify to preserve them when parsing a /// document. class cdata : public text { public: cdata() {} cdata(cdata&& cd) noexcept : text(std::move(cd)) {} cdata(const std::string& s) : text(s) {} /// \brief compare nodes for equality virtual bool equals(const node* n) const; virtual node* clone() const; virtual node* move(); protected: virtual void write(std::ostream& os, format_info fmt) const; }; // -------------------------------------------------------------------- /// An attribute is a node, has an element as parent, but is not a child of this parent (!) class attribute : public node { public: friend class element; using parent_type = element; attribute(const attribute& attr) : node(), m_qname(attr.m_qname), m_value(attr.m_value), m_id(attr.m_id) {} attribute(attribute&& attr) noexcept : node(), m_qname(std::move(attr.m_qname)), m_value(std::move(attr.m_value)), m_id(attr.m_id) {} attribute(const std::string& qname, const std::string& value, bool id = false) : m_qname(qname), m_value(value), m_id(id) {} attribute& operator=(attribute&& attr) noexcept { std::swap(m_qname, attr.m_qname); std::swap(m_value, attr.m_value); m_id = attr.m_id; return *this; } bool operator==(const attribute& a) const { return m_qname == a.m_qname and m_value == a.m_value; } bool operator!=(const attribute& a) const { return not operator==(a); } bool operator<(const attribute& ns) const { return m_qname < ns.m_qname; } virtual std::string get_qname() const { return m_qname; } virtual void set_qname(const std::string& qn) { m_qname = qn; } virtual void set_qname(const std::string& prefix, const std::string& name) { node::set_qname(prefix, name); } /// \brief Is this attribute an xmlns attribute? bool is_namespace() const { return m_qname.compare(0, 5, "xmlns") == 0 and (m_qname[5] == 0 or m_qname[5] == ':'); } std::string value() const { return m_value; } void value(const std::string& v) { m_value = v; } /// \brief same as value, but checks to see if this really is a namespace attribute std::string uri() const; virtual std::string str() const { return m_value; } virtual void set_text(const std::string& value) { m_value = value; } /// \brief compare nodes for equality virtual bool equals(const node* n) const; /// \brief returns whether this attribute is an ID attribute, as defined in an accompanying DTD virtual bool is_id() const { return m_id; } /// \brief support for structured binding template decltype(auto) get() const { if constexpr (N == 0) return name(); else if constexpr (N == 1) return value(); } void swap(attribute& a) { std::swap(m_qname, a.m_qname); std::swap(m_value, a.m_value); } virtual node* clone() const; virtual node* move(); protected: virtual void write(std::ostream& os, format_info fmt) const; private: std::string m_qname, m_value; bool m_id; }; // -------------------------------------------------------------------- /// \brief generic iterator class. /// /// We can have iterators that point to nodes, elements and attributes. /// Iterating over nodes is simply following next/prev. But iterating /// elements is a bit more difficult, since you then have to skip nodes /// in between that are not an element, like comments or text. template> class iterator_impl { public: friend class element; template friend class basic_node_list; template friend class iterator_impl; friend class node_list; using node_type = NodeType; using container_node_type = std::remove_cv_t; using container_type = basic_node_list; using iterator_category = std::bidirectional_iterator_tag; using value_type = node_type; using difference_type = std::ptrdiff_t; using pointer = value_type*; using reference = value_type&; iterator_impl() = default; iterator_impl(const iterator_impl& i) = default; /// \brief copy constructor, kind of template iterator_impl(const iterator_impl& i) : m_container(i.m_container) , m_current(i.m_current) , m_at_end(i.m_at_end) { skip(); if (m_current == nullptr) m_at_end = true; } /// \brief create iterator pointing to begin of parent element iterator_impl(const container_type& container) : m_container(&container), m_at_end(false) { m_current = m_container->m_head; skip(); m_at_end = m_current == nullptr; } /// \brief create iterator pointing to end of parent element iterator_impl(const container_type& container, node_type* current) : m_container(&container), m_current(const_cast*>(current)), m_at_end(true) { assert(current == nullptr or dynamic_cast(current) != nullptr); #if DEBUG if (m_current != nullptr) { const node* n; for (n = m_container->m_head; n != nullptr; n = n->next()) { if (n == m_current) break; } assert(n == current); } #endif } /// \brief constructor taking a node pointer iterator_impl(node_type* current) : m_container(¤t->parent()->nodes()) , m_current(const_cast*>(current)) , m_at_end(current == nullptr) { assert(current == nullptr or dynamic_cast(current) != nullptr); #if DEBUG if (m_current != nullptr) { const node* n; for (n = m_container->m_head; n != nullptr; n = n->next()) { if (n == m_current) break; } assert(n == current); } #endif } iterator_impl(iterator_impl&& i) noexcept : m_container(i.m_container) , m_current(i.m_current) , m_at_end(i.m_at_end) { i.m_container = nullptr; i.m_current = nullptr; i.m_at_end = true; } template, element> and std::is_base_of_v, int> = 0> iterator_impl(const Iterator& i) : m_container(const_cast(i.m_container)) , m_current(i.m_current) , m_at_end(i.m_at_end) {} iterator_impl& operator=(const iterator_impl& i) { if (this != &i) { m_container = i.m_container; m_current = i.m_current; m_at_end = i.m_at_end; } return *this; } iterator_impl& operator=(iterator_impl&& i) noexcept { if (this != &i) { m_container = i.m_container; i.m_container = nullptr; m_current = i.m_current; i.m_current = nullptr; m_at_end = i.m_at_end; i.m_at_end = true; } return *this; } template, int> = 0> iterator_impl& operator=(const Iterator& i) { m_container = i.m_container; m_current = i.m_current; m_at_end = i.m_at_end; return *this; } reference operator*() { return *current(); } pointer operator->() const { return current(); } iterator_impl& operator++() { if (not m_at_end and m_current == nullptr and m_container != nullptr) m_current = m_container->m_head; else if (m_current != nullptr) { m_current = m_current->next(); skip(); } m_at_end = m_current == nullptr; return *this; } iterator_impl operator++(int) { iterator_impl iter(*this); operator++(); return iter; } iterator_impl& operator--() { if (m_container != nullptr) { if (m_at_end) { m_current = m_container->m_tail; m_at_end = false; } else { while (m_current != nullptr) { m_current = m_current->prev(); if (dynamic_cast(m_current) != nullptr) break; } } } return *this; } iterator_impl operator--(int) { iterator_impl iter(*this); operator--(); return iter; } bool operator==(const iterator_impl& other) const { return m_container == other.m_container and m_at_end == other.m_at_end and m_current == other.m_current; } bool operator!=(const iterator_impl& other) const { return not operator==(other); } template bool operator==(const RNodeType* n) const { return m_current == n; } template bool operator!=(const RNodeType n) const { return m_current != n; } iterator_impl& operator+=(difference_type i) { if (i > 0) while (i-- > 0) operator++(); else while (i++ < 0) operator--(); return *this; } iterator_impl& operator-=(difference_type i) { operator+=(-i); return *this; } iterator_impl operator+(difference_type i) const { auto result = *this; result += i; return result; } friend iterator_impl operator+(difference_type i, const iterator_impl& iter) { auto result = iter; result += i; return result; } iterator_impl operator-(difference_type i) const { auto result = *this; result -= i; return result; } friend iterator_impl operator-(difference_type i, const iterator_impl& iter) { auto result = iter; result -= i; return result; } difference_type operator-(const iterator_impl& other) const { return std::distance(*this, other); } operator pointer() const { return current(); } operator pointer() { return current(); } private: // node_type* current() { return dynamic_cast(m_current); } node_type* current() const { return dynamic_cast(m_current); } inline void skip() {} const container_type* m_container = nullptr; node* m_current = nullptr; bool m_at_end = true; }; template<> void iterator_impl::skip(); template<> void iterator_impl::skip(); // -------------------------------------------------------------------- /// \brief basic_node_list, a base class for containers of nodes /// /// We have two container classes (node_list specializations) /// One is for attributes and name_spaces. The other is the /// node_list for nodes in elements. However, this list can /// present itself as node_list for elements hiding all other /// node types. template class basic_node_list { public: template friend class iterator_impl; friend class element; using node_type = NodeType; // element is a container of elements using value_type = node_type; using allocator_type = std::allocator; using size_type = size_t; using difference_type = ptrdiff_t; using reference = value_type&; using const_reference = const value_type&; using pointer = value_type*; using const_pointer = const value_type*; protected: basic_node_list(element& e) : m_element(e), m_head(nullptr), m_tail(nullptr) { } public: virtual ~basic_node_list() { delete m_head; } bool operator==(const basic_node_list& l) const { bool result = true; auto a = begin(), b = l.begin(); for (; result and a != end() and b != l.end(); ++a, ++b) result = a->equals(b.current()); return result and a == end() and b == l.end(); } bool operator!=(const basic_node_list& l) const { return not operator==(l); } using iterator = iterator_impl; using const_iterator = iterator_impl; iterator begin() { return iterator(*this); } iterator end() { return iterator(*this, nullptr); } const_iterator cbegin() { return const_iterator(*this); } const_iterator cend() { return const_iterator(*this, nullptr); } const_iterator begin() const { return const_iterator(*this); } const_iterator end() const { return const_iterator(*this, nullptr); } value_type& front() { return *begin(); } const value_type& front() const { return *begin(); } value_type& back() { auto tmp = end(); --tmp; return *tmp; } const value_type& back() const { auto tmp = end(); --tmp; return *tmp; } bool empty() const { return m_head == nullptr; } size_t size() const { return std::distance(begin(), end()); } void clear() { delete m_head; m_head = m_tail = nullptr; } void swap(basic_node_list& l) noexcept { std::swap(m_head, l.m_head); std::swap(m_tail, l.m_tail); for (auto& n: *this) n.m_parent = &m_element; for (auto& n: l) n.m_parent = &l.m_element; } /// \brief sort the (direct) nodes in this list using \a comp as comparator template void sort(Compare comp) { for (auto a = begin(); a + 1 != end(); ++a) { for (auto b = a + 1; b != end(); ++b) { if (comp(*b, *a)) a->swap(*b); } } } protected: // proxy methods for every insertion iterator insert_impl(const_iterator pos, node_type* n) { assert(n != nullptr); assert(n->next() == nullptr); assert(n->prev() == nullptr); // assert(&pos.m_container == this); if (n == nullptr) throw exception("Invalid pointer passed to insert"); if (n->parent() != nullptr or n->next() != nullptr or n->prev() != nullptr) throw exception("attempt to add a node that already has a parent or siblings"); n->parent(&m_element); // insert at end, most often this is the case if (pos.m_current == nullptr) { if (m_head == nullptr) m_tail = m_head = n; else { m_tail->insert_sibling(n, nullptr); m_tail = n; } } else { assert(m_head != nullptr); if (pos.m_current == m_head) { n->m_next = m_head; m_head->m_prev = n; m_head = n; } else m_head->insert_sibling(n, pos.m_current); } // #if defined(DEBUG) // validate(); // #endif return iterator(*this, n); } iterator erase_impl(const_iterator pos) { if (pos == cend()) return pos; if (pos->m_parent != &m_element) throw exception("attempt to remove node whose parent is invalid"); node_type* n = const_cast(&*pos); node_type* cur; if (m_head == n) { m_head = static_cast(m_head->m_next); if (m_head != nullptr) m_head->m_prev = nullptr; else m_tail = nullptr; n->m_next = n->m_prev = n->m_parent = nullptr; delete n; cur = m_head; } else { cur = static_cast(n->m_next); if (m_tail == n) m_tail = static_cast(n->m_prev); node* p = m_head; while (p != nullptr and p->m_next != n) p = p->m_next; if (p != nullptr and p->m_next == n) { p->m_next = n->m_next; if (p->m_next != nullptr) p->m_next->m_prev = p; n->m_next = n->m_prev = n->m_parent = nullptr; } else throw exception("remove for a node not found in the list"); delete n; } // #if defined(DEBUG) // validate(); // #endif return iterator(*this, cur); } private: element& m_element; node_type* m_head = nullptr; node_type* m_tail = nullptr; }; // -------------------------------------------------------------------- /// \brief implementation of basic_node_list for node objects class node_list : public basic_node_list { public: using basic_list = basic_node_list; using iterator = typename basic_list::iterator; using const_iterator = typename basic_list::const_iterator; node_list(element& e) : basic_list(e) { } node_list(element& e, const node_list& l) : basic_list(e) { for (auto& n: l) emplace_back(n); } node_list(element& e, node_list&& l) : basic_list(e) { for (auto&& n: l) emplace_back(std::move(n)); } using basic_list::clear; using basic_list::begin; using basic_list::end; node_list& operator=(const node_list& l) { if (this != &l) { clear(); for (auto& n: l) emplace_back(n); } return *this; } node_list& operator=(node_list&& l) noexcept { if (this != &l) { clear(); swap(l); } return *this; } bool operator==(const node_list& l) const { bool result = true; auto a = begin(), b = l.begin(); for (; result and a != end() and b != l.end(); ++a, ++b) result = a->equals(b.current()); return result and a == end() and b == l.end(); } bool operator!=(const node_list& l) const { return not operator==(l); } // insert a copy of e void insert(const_iterator pos, const node& e) { insert_impl(pos, e.clone()); } // insert a copy of e, moving its data void insert(const_iterator pos, node&& e) { insert_impl(pos, e.move()); } // iterator insert(const_iterator pos, size_t count, const value_type& n); template iterator insert(const_iterator pos, InputIter first, InputIter last) { for (auto i = first; i != last; ++i, ++pos) insert(pos, i->clone()); return pos; } template iterator insert(const_iterator pos, std::initializer_list nodes) { for (auto& n: nodes) pos = insert_impl(pos, n.move()); return pos; } iterator emplace(const_iterator pos, const node& n) { auto i = insert_impl(pos, n.clone()); return iterator(*this, i); } iterator emplace(const_iterator pos, node&& n) { auto i = insert_impl(pos, n.move()); return iterator(*this, i); } iterator erase(const_iterator pos) { return erase_impl(pos); } iterator erase(iterator first, iterator last) { while (first != last) { auto next = first; ++next; erase(first); first = next; } return last; } // iterator erase(const_iterator first, const_iterator last); void push_front(const node& e) { emplace(begin(), e); } void push_front(node&& e) { emplace(begin(), std::forward(e)); } template node& emplace_front(Args&&... args) { return *emplace(begin(), std::forward(args)...); } void pop_front() { erase(begin()); } void push_back(const node& e) { emplace(end(), e); } void push_back(node&& e) { emplace(end(), std::forward(e)); } template, int> = 0> ENodeType& emplace_back(const ENodeType& n) { auto i = insert_impl(end(), static_cast(n.clone())); return static_cast(*i); } template, int> = 0> ENodeType& emplace_back(ENodeType&& n) { auto i = insert_impl(end(), static_cast(n.move())); return static_cast(*i); } template node& emplace_back(Args&&... args) { return *emplace(end(), std::forward(args)...); } void pop_back() { erase(std::prev(end())); } }; // -------------------------------------------------------------------- /// \brief set of attributes and name_spaces. Is a node_list but with a set interface class attribute_set : public basic_node_list { public: using node_list = basic_node_list; using node_type = typename node_list::node_type; using iterator = typename node_list::iterator; using const_iterator = typename node_list::const_iterator; using size_type = std::size_t; attribute_set(element& e) : node_list(e) {} attribute_set(element& e, attribute_set&& as) : node_list(e) { for (auto& a: as) emplace(std::move(a)); } attribute_set(element& e, const attribute_set& as) : node_list(e) { for (auto& a: as) emplace(a); } using node_list::clear; attribute_set& operator=(const attribute_set& l) { if (this != &l) { clear(); for (auto& n: l) emplace(n); } return *this; } attribute_set& operator=(attribute_set&& l) noexcept { if (this != &l) { clear(); swap(l); } return *this; } /// \brief attribute_set is a bit like a std::map and the key type is a std::string using key_type = std::string; /// \brief return true if the attribute with name \a key is defined bool contains(const key_type& key) const { return find(key) != nullptr; } /// \brief return const_iterator to the attribute with name \a key const_iterator find(const key_type& key) const { const node_type* result = nullptr; for (auto& a: *this) { if (a.get_qname() == key) { result = &a; break; } } return const_iterator(*this, result); } /// \brief return iterator to the attribute with name \a key iterator find(const key_type& key) { return const_cast(*this).find(key); } /// \brief emplace a newly constructed attribute with argumenst \a args template std::pair emplace(Args... args) { node_type a(std::forward(args)...); return emplace(std::move(a)); } /// \brief emplace an attribute move constructed from \a a /// \return returns a std::pair with an iterator pointing to the inserted attribute /// and a boolean indicating if this attribute was inserted instead of replaced. std::pair emplace(node_type&& a) { key_type key = a.get_qname(); bool inserted = false; auto i = find(key); if (i != node_list::end()) *i = std::move(a); // move assign value of a else { i = node_list::insert_impl(node_list::end(), static_cast(a.move())); inserted = true; } return std::make_pair(i, inserted); } /// \brief remove attribute at position \a pos iterator erase(const_iterator pos) { return node_list::erase_impl(pos); } /// \brief remove attributes between \a first and \a last iterator erase(iterator first, iterator last) { while (first != last) { auto next = first; ++next; erase(first); first = next; } return last; } /// \brief remove attribute with name \a key size_type erase(const key_type key) { size_type result = 0; auto i = find(key); if (i != node_list::end()) { erase(i); result = 1; } return result; } }; // -------------------------------------------------------------------- /// \brief the element class modelling a XML element /// /// element is the most important zeep::xml::node object. It encapsulates a /// XML element as found in the XML document. It has a qname, can have children, /// attributes and a namespace. class element : public node { public: template friend class iterator_impl; template friend class basic_node_list; friend class node_list; friend class node; // element is a container of elements using value_type = element; using allocator_type = std::allocator; using size_type = size_t; using difference_type = ptrdiff_t; using reference = element&; using const_reference = const element&; using pointer = element*; using const_pointer = const element*; element(); element(const std::string& qname); /// \brief constructor taking a \a qname and a list of \a attributes element(const std::string& qname, std::initializer_list attributes); element(const element& e); element(element&& e); element& operator=(const element& e); element& operator=(element&& e); ~element(); using node::set_qname; virtual std::string get_qname() const { return m_qname; } virtual void set_qname(const std::string& qn) { m_qname = qn; } /// content of a xml:lang attribute of this element, or its nearest ancestor virtual std::string lang() const; /// content of the xml:id attribute, or the attribute that was defined to be /// of type ID by the DOCTYPE. std::string id() const; bool operator==(const element& e) const { return equals(&e); } bool operator!=(const element& e) const { return not equals(&e); } virtual bool equals(const node* n) const; void swap(element& e) noexcept; // -------------------------------------------------------------------- // children node_list& nodes() { return m_nodes; } const node_list& nodes() const { return m_nodes; } using iterator = iterator_impl; using const_iterator = iterator_impl; iterator begin() { return iterator(m_nodes.begin()); } iterator end() { return iterator(m_nodes.end()); } const_iterator begin() const { return const_iterator(m_nodes.begin()); } const_iterator end() const { return const_iterator(m_nodes.end()); } const_iterator cbegin() { return const_iterator(m_nodes.begin()); } const_iterator cend() { return const_iterator(m_nodes.end()); } element& front() { return *begin(); } const element& front() const { return *begin(); } element& back() { return *(end() - 1); } const element& back() const { return *(end() - 1); } using node_iterator = node_list::iterator; using const_node_iterator = node_list::const_iterator; /// \brief insert a copy of \a e void insert(const_iterator pos, const element& e) { emplace(pos, e); } /// \brief insert a copy of \a e at position \a pos, moving its data void insert(const_iterator pos, element&& e) { emplace(pos, std::forward(e)); } // iterator insert(const_iterator pos, size_t count, const value_type& n); /// \brief insert copies of the nodes from \a first to \a last at position \a pos template iterator insert(const_iterator pos, InputIter first, InputIter last) { difference_type offset = pos - cbegin(); for (auto i = first; i != last; ++i, ++pos) insert(pos, *i); return begin() + offset; } /// \brief insert copies of the nodes in \a nodes at position \a pos iterator insert(const_iterator pos, std::initializer_list nodes) { return insert(pos, nodes.begin(), nodes.end()); } /// \brief insert the data of node \a n at position \a pos, using move semantics iterator emplace(const_iterator pos, text&& n) { return insert_impl(pos, new text(std::forward(n))); } /// \brief insert the data of node \a n at position \a pos, using move semantics iterator emplace(const_iterator pos, cdata&& n) { return insert_impl(pos, new cdata(std::forward(n))); } /// \brief insert the data of node \a n at position \a pos, using move semantics iterator emplace(const_iterator pos, comment&& n) { return insert_impl(pos, new comment(std::forward(n))); } /// \brief insert the data of node \a n at position \a pos, using move semantics iterator emplace(const_iterator pos, processing_instruction&& n) { return insert_impl(pos, new processing_instruction(std::forward(n))); } /// \brief emplace a newly constructed element at \a pos using argument \a arg template inline iterator emplace(const_iterator pos, Arg&& arg) { static_assert( std::is_same_v, element> or not std::is_base_of_v, "Use the nodes() member of element to add nodes other than element"); return insert_impl(pos, new element(std::forward(arg))); } /// \brief emplace a newly constructed element at \a pos using arguments \a args template inline iterator emplace(const_iterator pos, Args&&... args) { return insert_impl(pos, new element(std::forward(args)...)); } /// \brief emplace a newly constructed element at \a pos using name \a name and attributes \a attrs inline iterator emplace(const_iterator pos, const std::string& name, std::initializer_list attrs) { return insert_impl(pos, new element(name, std::forward>(attrs))); } /// \brief emplace an element at the front using arguments \a args template inline element& emplace_front(Args&&... args) { return *emplace(begin(), std::forward(args)...); } /// \brief emplace a newly constructed element at the front using name \a name and attributes \a attrs inline element& emplace_front(const std::string& name, std::initializer_list attrs) { return *emplace(begin(), name, std::forward>(attrs)); } /// \brief emplace an element at the back using arguments \a args template inline element& emplace_back(Args&&... args) { return *emplace(end(), std::forward(args)...); } /// \brief emplace a newly constructed element at the back using name \a name and attributes \a attrs inline element& emplace_back(const std::string& name, std::initializer_list attrs) { return *emplace(end(), name, std::forward>(attrs)); } /// \brief erase the node at \a pos inline iterator erase(const_node_iterator pos) { return m_nodes.erase_impl(pos); } /// \brief erase the nodes from \a first to \a last iterator erase(iterator first, iterator last) { while (first != last) { auto next = first; ++next; erase(first); first = next; } return last; } /// \brief erase the first node inline void pop_front() { erase(begin()); } /// \brief erase the last node inline void pop_back() { erase(end() - 1); } /// \brief move the element \a e to the front of this element. inline void push_front(element&& e) { emplace(begin(), std::forward(e)); } /// \brief copy the element \a e to the front of this element. inline void push_front(const element& e) { emplace(begin(), e); } /// \brief move the element \a e to the back of this element. inline void push_back(element&& e) { emplace(end(), std::forward(e)); } /// \brief copy the element \a e to the back of this element. inline void push_back(const element& e) { emplace(end(), e); } /// \brief remove all nodes void clear(); size_t size() const { return std::distance(begin(), end()); } bool empty() const { return size() == 0; } // -------------------------------------------------------------------- // attribute support /// \brief return the set of attributes for this element attribute_set& attributes() { return m_attributes; } /// \brief return the set of attributes for this element const attribute_set& attributes() const { return m_attributes; } // -------------------------------------------------------------------- /// \brief write the element to \a os friend std::ostream& operator<<(std::ostream& os, const element& e); friend class document; /// \brief will return the concatenation of str() from all child nodes virtual std::string str() const; /// \brief return the URI of the namespace for \a prefix virtual std::string namespace_for_prefix(const std::string& prefix) const; /// \brief return the prefix for the XML namespace with uri \a uri. /// \return The result is a pair of a std::string containing the actual prefix value /// and a boolean indicating if the namespace was found at all, needed since empty prefixes /// are allowed. virtual std::pair prefix_for_namespace(const std::string& uri) const; /// \brief move this element and optionally everyting beneath it to the /// specified namespace/prefix /// /// \param prefix The new prefix name /// \param uri The new namespace uri /// \param recursive Apply this to the child nodes as well /// \param including_attributes Move the attributes to this new namespace as well void move_to_name_space(const std::string& prefix, const std::string& uri, bool recursive, bool including_attributes); /// \brief return the concatenation of the content of all enclosed zeep::xml::text nodes std::string get_content() const; /// \brief replace all existing child text nodes with a new single text node containing \a content void set_content(const std::string& content); /// \brief return the value of attribute name \a qname or the empty string if not found std::string get_attribute(const std::string& qname) const; /// \brief set the value of attribute named \a qname to the value \a value void set_attribute(const std::string& qname, const std::string& value); /// \brief The set_text method replaces any text node with the new text (call set_content) virtual void set_text(const std::string& s); /// The add_text method checks if the last added child is a text node, /// and if so, it appends the string to this node's value. Otherwise, /// it adds a new text node child with the new text. void add_text(const std::string& s); /// To combine all adjecent child text nodes into one void flatten_text(); /// xpath wrappers /// TODO: create recursive iterator and use it as return type here /// \brief return the elements that match XPath \a path. /// /// If you need to find other classes than xml::element, of if your XPath /// contains variables, you should create a zeep::xml::xpath object and use /// its evaluate method. element_set find(const std::string& path) const { return find(path.c_str()); } /// \brief return the first element that matches XPath \a path. /// /// If you need to find other classes than xml::element, of if your XPath /// contains variables, you should create a zeep::xml::xpath object and use /// its evaluate method. element* find_first(const std::string& path) const { return find_first(path.c_str()); } /// \brief return the elements that match XPath \a path. /// /// If you need to find other classes than xml::element, of if your XPath /// contains variables, you should create a zeep::xml::xpath object and use /// its evaluate method. element_set find(const char* path) const; /// \brief return the first element that matches XPath \a path. /// /// If you need to find other classes than xml::element, of if your XPath /// contains variables, you should create a zeep::xml::xpath object and use /// its evaluate method. element* find_first(const char* path) const; // debug routine virtual void validate(); protected: virtual node* clone() const; virtual node* move(); virtual void write(std::ostream& os, format_info fmt) const; // bottleneck to validate insertions (e.g. document may have only one child element) virtual node_iterator insert_impl(const_iterator pos, node* n) { return m_nodes.insert_impl(pos, n); } private: std::string m_qname; node_list m_nodes; attribute_set m_attributes; }; // -------------------------------------------------------------------- template<> inline void iterator_impl::skip() { while (m_current != nullptr) { if (dynamic_cast(m_current) != nullptr) break; m_current = m_current->next(); } } template<> inline void iterator_impl::skip() { while (m_current != nullptr) { if (dynamic_cast(m_current) != nullptr) break; m_current = m_current->next(); } } // -------------------------------------------------------------------- /// \brief This method fixes namespace attribute when transferring an element /// from one document to another (replaces prefixes e.g.) /// /// When moving an element from one document to another, we need to fix the /// namespaces, make sure the destination has all the namespace specifications /// required by the element and make sure the prefixes used are correct. /// \param e The element that is being transferred /// \param source The (usually) document element that was the source /// \param dest The (usually) document element that is the destination void fix_namespaces(element& e, element& source, element& dest); } // namespace zeep::xml // -------------------------------------------------------------------- // structured binding support namespace std { template<> struct tuple_size<::zeep::xml::attribute> : public std::integral_constant {}; template<> struct tuple_element<0, ::zeep::xml::attribute> { using type = decltype(std::declval<::zeep::xml::attribute>().name()); }; template<> struct tuple_element<1, ::zeep::xml::attribute> { using type = decltype(std::declval<::zeep::xml::attribute>().value()); }; // template // struct tuple_element // { // public: // using type = decltype(std::declval<::zeep::xml2::detail::attribute>().get()); // }; } libzeep-5.1.8/include/zeep/xml/parser.hpp0000664000175000017500000001110114324170113020202 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of the libzeep XML parser, a recursive descent parser #include #include #include #include #include #include namespace zeep::xml { namespace detail { struct attr { std::string m_ns; std::string m_name; std::string m_value; bool m_id; // whether the attribute is defined as type ID in its ATTLIST decl }; } // namespace detail /// If an invalid_exception is thrown, it means the XML document is not valid: it does /// not conform the DTD specified in the XML document. /// This is only thrown when validation is enabled. /// /// The what() member of the exception object will contain an explanation. class invalid_exception : public zeep::exception { public: invalid_exception(const std::string& msg) : exception(msg) {} ~invalid_exception() throw() {} }; /// If an not_wf_exception is thrown, it means the XML document is not well formed. /// Often this means syntax errors, missing \< or \> characters, non matching open /// and close tags, etc. /// /// The what() member of the exception object will contain an explanation. class not_wf_exception : public zeep::exception { public: not_wf_exception(const std::string& msg) : exception(msg) {} ~not_wf_exception() throw() {} }; /// zeep::xml::parser is a SAX parser. After construction, you should assign /// call back handlers for the SAX events and then call parse(). class parser { public: using attr_type = detail::attr; using attr_list_type = std::list; parser(std::istream& is); parser(const std::string& s); virtual ~parser(); std::function xml_decl_handler; std::function start_element_handler; std::function end_element_handler; std::function character_data_handler; std::function processing_instruction_handler; std::function comment_handler; std::function start_cdata_section_handler; std::function end_cdata_section_handler; std::function start_namespace_decl_handler; std::function end_namespace_decl_handler; std::function doctype_decl_handler; std::function notation_decl_handler; std::functionexternal_entity_ref_handler; std::function report_invalidation_handler; void parse(bool validate, bool validate_ns); protected: friend struct parser_imp; virtual void xml_decl(encoding_type encoding, bool standalone, float version); virtual void doctype_decl(const std::string& root, const std::string& publicId, const std::string& uri); virtual void start_element(const std::string& name, const std::string& uri, const attr_list_type& atts); virtual void end_element(const std::string& name, const std::string& uri); virtual void character_data(const std::string& data); virtual void processing_instruction(const std::string& target, const std::string& data); virtual void comment(const std::string& data); virtual void start_cdata_section(); virtual void end_cdata_section(); virtual void start_namespace_decl(const std::string& prefix, const std::string& uri); virtual void end_namespace_decl(const std::string& prefix); virtual void notation_decl(const std::string& name, const std::string& systemId, const std::string& publicId); virtual void report_invalidation(const std::string& msg); virtual std::istream* external_entity_ref(const std::string& base, const std::string& pubid, const std::string& uri); struct parser_imp *m_impl; std::istream *m_istream; }; } // namespace zeep::xml libzeep-5.1.8/include/zeep/xml/serialize.hpp0000664000175000017500000004156214324170113020713 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of the serializer classes used to (de-)serialize XML data. #include #include #include #include #include #include #include #include namespace zeep::xml { struct serializer; struct deserializer; template struct element_nvp : public name_value_pair { explicit element_nvp(const char* name, T& v) : name_value_pair(name, v) {} element_nvp(const element_nvp& rhs) : name_value_pair(rhs) {} }; template struct attribute_nvp : public name_value_pair { explicit attribute_nvp(const char* name, T& v) : name_value_pair(name, v) {} attribute_nvp(const attribute_nvp& rhs) : name_value_pair(rhs) {} }; template inline element_nvp make_element_nvp(const char* name, T& v) { return element_nvp(name, v); } template inline attribute_nvp make_attribute_nvp(const char* name, T& v) { return attribute_nvp(name, v); } #define ZEEP_ELEMENT_NAME_VALUE(name) zeep::xml::make_element_nvp(#name, name) #define ZEEP_ATTRIBUTE_NAME_VALUE(name) zeep::xml::make_attribute_nvp(#name, name) /// serializer, deserializer and schema_creator are classes that can be used /// to initiate the serialization. They are the Archive classes that are /// the first parameter to the templated function 'serialize' in the classes /// that can be serialized. (See boost::serialization for more info). /// serializer is the class that initiates the serialization process. struct serializer { serializer(element& node) : m_node(node) {} template serializer& operator&(const name_value_pair& rhs) { return serialize_element(rhs.name(), rhs.value()); } template serializer& operator&(const element_nvp& rhs) { return serialize_element(rhs.name(), rhs.value()); } template serializer& operator&(const attribute_nvp& rhs) { return serialize_attribute(rhs.name(), rhs.value()); } template serializer& serialize_element(const T& data); template serializer& serialize_element(const char* name, const T& data); template serializer& serialize_attribute(const char* name, const T& data); element& m_node; }; /// deserializer is the class that initiates the deserialization process. struct deserializer { deserializer(const element& node) : m_node(node) {} template deserializer& operator&(const name_value_pair& rhs) { return deserialize_element(rhs.name(), rhs.value()); } template deserializer& operator&(const element_nvp& rhs) { return deserialize_element(rhs.name(), rhs.value()); } template deserializer& operator&(const attribute_nvp& rhs) { return deserialize_attribute(rhs.name(), rhs.value()); } template deserializer& deserialize_element(T& data); template deserializer& deserialize_element(const char* name, T& data); template deserializer& deserialize_attribute(const char* name, T& data); const element& m_node; }; using type_map = std::map; /// schema_creator is used by zeep::dispatcher to create schema files. struct schema_creator { schema_creator(type_map& types, element& node) : m_node(node), m_types(types) {} template schema_creator& operator&(const name_value_pair& rhs) { return add_element(rhs.name(), rhs.value()); } template schema_creator& operator&(const element_nvp& rhs) { return add_element(rhs.name(), rhs.value()); } template schema_creator& operator&(const attribute_nvp& rhs) { return add_attribute(rhs.name(), rhs.value()); } template schema_creator& add_element(const char* name, const T& value); template schema_creator& add_attribute(const char* name, const T& value); element& m_node; type_map& m_types; std::string m_prefix = "ns"; }; // -------------------------------------------------------------------- template struct type_serializer { using value_type = typename std::remove_const_t>; using value_serializer_type = value_serializer; static constexpr const char* type_name() { return value_serializer_type::type_name(); } static std::string serialize_value(const T& value) { return value_serializer_type::to_string(value); } static T deserialize_value(const std::string& value) { return value_serializer_type::from_string(value); } static void serialize_child(element& n, const char* name, const value_type& value) { assert(name); if (strlen(name) == 0 or strcmp(name, ".") == 0) n.set_content(value_serializer_type::to_string(value)); else n.emplace_back(name).set_content(value_serializer_type::to_string(value)); } static void deserialize_child(const element& n, const char* name, value_type& value) { assert(name); value = {}; if (strlen(name) == 0 or strcmp(name, ".") == 0) value = value_serializer_type::from_string(n.get_content()); else { auto e = std::find_if(n.begin(), n.end(), [name](auto& e) { return e.name() == name; }); if (e != n.end()) value = value_serializer_type::from_string(e->get_content()); } } static element schema(const std::string& name, const std::string& prefix) { return { "xsd:element", { { "name", name }, { "type", prefix + ':' + type_name() }, { "minOccurs", "1" }, { "maxOccurs", "1" } } }; } static void register_type(type_map& types) { } }; template struct type_serializer { using value_type = std::remove_cv_t>; using type_serializer_type = type_serializer; static constexpr const char* type_name() { return type_serializer_type::type_name(); } static void serialize_child(element& n, const char* name, const value_type(&value)[N]) { assert(name); for (const value_type& v : value) type_serializer_type::serialize_child(n, name, v); } static void deserialize_child(const element& n, const char* name, value_type(&value)[N]) { assert(name); size_t ix = 0; for (auto& e: n) { if (e.name() != name) continue; value_type v = {}; type_serializer_type::deserialize_child(e, ".", v); value[ix] = std::move(v); ++ix; if (ix >= N) break; } } static element schema(const std::string& name, const std::string& prefix) { element result = type_serializer_type::schema(name, prefix); result.set_attribute("minOccurs", std::to_string(N)); result.set_attribute("maxOccurs", std::to_string(N)); return result; } static void register_type(type_map& types) { type_serializer_type::register_type(types); } }; template struct type_serializer>> : public value_serializer { using value_type = T; using value_serializer_type = value_serializer; using value_serializer_type::type_name; static std::string serialize_value(const T& value) { return value_serializer_type::to_string(value); } static T deserialize_value(const std::string& value) { return value_serializer_type::from_string(value); } static void serialize_child(element& n, const char* name, const value_type& value) { assert(name); if (strlen(name) == 0 or strcmp(name, ".") == 0) n.set_content(value_serializer_type::to_string(value)); else n.emplace_back(name).set_content(value_serializer_type::to_string(value)); } static void deserialize_child(const element& n, const char* name, value_type& value) { assert(name); value = value_type(); if (std::strlen(name) == 0 or std::strcmp(name, ".") == 0) value = value_serializer_type::from_string(n.get_content()); else { auto e = std::find_if(n.begin(), n.end(), [name](auto& e) { return e.name() == name; }); if (e != n.end()) value = value_serializer_type::from_string(e->get_content()); } } static element schema(const std::string& name, const std::string& prefix) { return { "xsd:element", { { "name", name }, { "type", prefix + ':' + type_name() }, { "minOccurs", "1" }, { "maxOccurs", "1" } } }; } static void register_type(type_map& types) { element n("xsd:simpleType", { { "name", type_name() } }); element restriction("xsd:restriction", { { "base", "xsd:string" } }); for (auto& e: value_serializer_type::instance().m_name_mapping) { restriction.emplace_back( "xsd:enumeration", { { "value", e.second } }); } n.emplace_back(std::move(restriction)); types.emplace(type_name(), std::move(n)); } }; template struct type_serializer>> { using value_type = typename std::remove_const_t>; // the name of this type std::string m_type_name; static const char* type_name() { return instance().m_type_name.c_str(); } void type_name(const std::string& name) { m_type_name = name; } static type_serializer& instance() { static type_serializer s_instance{typeid(value_type).name()}; return s_instance; } static void serialize_child(element& n, const char* name, const value_type& value) { assert(name); if (strlen(name) == 0 or strcmp(name, ".") == 0) { serializer sr(n); const_cast(value).serialize(sr, 0Ul); } else { element& e = n.emplace_back(name); serializer sr(e); const_cast(value).serialize(sr, 0Ul); } } static void deserialize_child(const element& n, const char* name, value_type& value) { assert(name); value = value_type(); if (strlen(name) == 0 or strcmp(name, ".") == 0) { deserializer sr(n); value.serialize(sr, 0UL); } else { auto e = std::find_if(n.begin(), n.end(), [name](auto& e) { return e.name() == name; }); if (e != n.end()) { deserializer sr(*e); value.serialize(sr, 0UL); } } } static element schema(const std::string& name, const std::string& prefix) { return { "xsd:element", { { "name", name }, { "type", prefix + ':' + type_name() }, { "minOccurs", "1" }, { "maxOccurs", "1" } } }; } static void register_type(type_map& types) { element sequence("xsd:sequence"); schema_creator schema(types, sequence); value_type v; schema.add_element("type", v); element type("xsd:complexType"); type.emplace_back(std::move(sequence)); types.emplace(type_name(), std::move(type)); } }; template struct type_serializer> { using value_type = T; using container_type = std::optional; using type_serializer_type = type_serializer; static constexpr const char* type_name() { return type_serializer_type::type_name(); } static void serialize_child(element& n, const char* name, const container_type& value) { assert(name); if (value) type_serializer_type::serialize_child(n, name, *value); } static void deserialize_child(const element& n, const char* name, container_type& value) { assert(name); for (auto& e: n) { if (e.name() != name) continue; value_type v = {}; type_serializer_type::deserialize_child(e, ".", v); value.emplace(std::move(v)); } } static element schema(const std::string& name, const std::string& prefix) { return { "xsd:element", { { "name", name }, { "type", prefix + ':' + type_name() }, { "minOccurs", "0" }, { "maxOccurs", "1" } } }; } static void register_type(type_map& types) { type_serializer_type::register_type(types); } }; // nice trick to enforce order in template selection template struct priority_tag : priority_tag < N - 1 > {}; template<> struct priority_tag<0> {}; template struct type_serializer>> { using container_type = typename std::remove_const_t>; using value_type = value_type_t; using type_serializer_type = type_serializer; static constexpr const char* type_name() { return type_serializer_type::type_name(); } static void serialize_child(element& n, const char* name, const container_type& value) { assert(name); for (const value_type& v : value) type_serializer_type::serialize_child(n, name, v); } template static auto deserialize_array(const element& n, const char* name, std::array& value, priority_tag<2>) { assert(name); size_t ix = 0; for (auto& e: n) { if (e.name() != name) continue; value_type v = {}; type_serializer_type::deserialize_child(e, ".", v); value[ix] = std::move(v); ++ix; if (ix >= N) break; } } template static auto deserialize_array(const element& n, const char* name, A& arr, priority_tag<1>) -> decltype( arr.reserve(std::declval()), void() ) { arr.reserve(n.size()); assert(name); for (auto& e: n) { if (e.name() != name) continue; value_type v = {}; type_serializer_type::deserialize_child(e, ".", v); arr.emplace_back(std::move(v)); } } static void deserialize_array(const element& n, const char* name, container_type& arr, priority_tag<0>) { assert(name); for (auto& e: n) { if (e.name() != name) continue; value_type v = {}; type_serializer_type::deserialize_child(e, ".", v); arr.emplace_back(std::move(v)); } } static void deserialize_child(const element& n, const char* name, container_type& value) { type_serializer::deserialize_array(n, name, value, priority_tag<2>{}); } }; // And finally, the implementation of serializer, deserializer and schema_creator. template serializer& serializer::serialize_element(const T& value) { using value_type = typename std::remove_const_t>; using type_serializer = type_serializer; type_serializer::serialize_child(m_node, "", value); return *this; } template serializer& serializer::serialize_element(const char* name, const T& value) { using value_type = typename std::remove_const_t>; using type_serializer = type_serializer; type_serializer::serialize_child(m_node, name, value); return *this; } template serializer& serializer::serialize_attribute(const char* name, const T& value) { using value_type = typename std::remove_const_t>; using type_serializer = type_serializer; m_node.attributes().emplace(name, type_serializer::serialize_value(value)); return *this; } template deserializer& deserializer::deserialize_element(T& value) { using value_type = typename std::remove_const_t>; using type_serializer = type_serializer; type_serializer::deserialize_child(m_node, "", value); return *this; } template deserializer& deserializer::deserialize_element(const char* name, T& value) { using value_type = typename std::remove_const_t>; using type_serializer = type_serializer; type_serializer::deserialize_child(m_node, name, value); return *this; } template deserializer& deserializer::deserialize_attribute(const char* name, T& value) { using value_type = typename std::remove_const_t>; using type_serializer = type_serializer; std::string attr = m_node.get_attribute(name); if (not attr.empty()) value = type_serializer::deserialize_value(attr); return *this; } template schema_creator& schema_creator::add_element(const char* name, const T& value) { using value_type = typename std::remove_const_t>; using type_serializer = type_serializer; m_node.emplace(type_serializer::schema(name, m_prefix)); std::string type_name = type_serializer::type_name(); // might be known already if (m_types.find(type_name) == m_types.end()) type_serializer::register_type(m_types); return *this; } template schema_creator& schema_creator::add_attribute(const char* name, const T& value) { using value_type = typename std::remove_const_t>; using type_serializer = type_serializer; std::string type_name = type_serializer::type_name(); assert(m_node.parent() != nullptr); m_node.parent()->emplace_back( element("xsd:attribute", { { "name", name }, { "type", type_name } })); if (m_types.find(type_name) == m_types.end()) type_serializer::register_type(m_types); return *this; } } libzeep-5.1.8/include/zeep/xml/xpath.hpp0000664000175000017500000000446714324170113020053 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// definition of the zeep::xml::xpath class, implementing a XPath 1.0 compatible search facility #include #include namespace zeep::xml { class document; // -------------------------------------------------------------------- /// XPath's can contain variables. And variables can contain all kinds of data /// like strings, numbers and even node_sets. If you want to use variables, /// you can define a context, add your variables to it and then pass it on /// in the xpath::evaluate method. class context { public: context(); virtual ~context(); void set(const std::string& name, const std::string& value); void set(const std::string& name, double value); template or std::is_same_v, int> = 0> T get(const std::string& name); private: context(const context &); context& operator=(const context &); friend class xpath; struct context_imp* m_impl; }; // -------------------------------------------------------------------- /// The actual xpath implementation. It expects an xpath in the constructor and /// this path _must_ be UTF-8 encoded. class xpath { public: xpath(const std::string& path); xpath(const char* path); xpath(const xpath& rhs); xpath& operator=(const xpath &); virtual ~xpath(); /// evaluate returns a node_set. If you're only interested in zeep::xml::element /// results, you should call the evaluate() instantiation. template std::list evaluate(const node& root) const { context ctxt; return evaluate(root, ctxt); } /// The second evaluate method is used for xpaths that contain variables. template std::list evaluate(const node& root, context& ctxt) const; /// Returns true if the \a n node matches the XPath bool matches(const node* n) const; /// debug routine, dumps the parse tree to stdout void dump(); private: struct xpath_imp* m_impl; }; } // namespace zeep::xml libzeep-5.1.8/lib-http/0000775000175000017500000000000014324170113014540 5ustar maartenmaartenlibzeep-5.1.8/lib-http/src/0000775000175000017500000000000014324170113015327 5ustar maartenmaartenlibzeep-5.1.8/lib-http/src/connection.cpp0000664000175000017500000000634714324170113020204 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include namespace zeep::http { // Needed for CLang/libc++ on FreeBSD 10 connection* get_pointer(const std::shared_ptr& p) { return p.get(); } connection::connection(boost::asio::io_context& service, basic_server& handler) : m_socket(service), m_server(handler), m_bufs(m_buffer.prepare(4096)) { } void connection::start() { m_bufs = m_buffer.prepare(4096); m_socket.async_read_some(m_bufs, [self=shared_from_this()](boost::system::error_code ec, size_t bytes_transferred) { self->handle_read(ec, bytes_transferred); }); } void connection::handle_read(boost::system::error_code ec, size_t bytes_transferred) { if (not ec) { if (bytes_transferred > 0) m_buffer.commit(bytes_transferred); auto result = m_request_parser.parse(m_buffer); if (result) { auto req = m_request_parser.get_request(); req.set_local_endpoint(m_socket); m_request_parser.reset(); m_server.handle_request(m_socket, req, m_reply); // by now, a client might have taken over our socket, in that case, simply drop out if (not m_socket.is_open()) return; m_reply.set_version(req.get_version()); if (req.keep_alive()) { m_reply.set_header("Connection", "Keep-Alive"); m_reply.set_header("Keep-Alive", "timeout=5, max=100"); m_keep_alive = true; } auto buffers = m_reply.to_buffers(); boost::asio::async_write(m_socket, buffers, [self=shared_from_this()](boost::system::error_code ec, size_t bytes_transferred) { self->handle_write(ec, bytes_transferred); }); } else if (not result) { m_reply = reply::stock_reply(bad_request); auto buffers = m_reply.to_buffers(); boost::asio::async_write(m_socket, buffers, [self=shared_from_this()](boost::system::error_code ec, size_t bytes_transferred) { self->handle_write(ec, bytes_transferred); }); } else { m_bufs = m_buffer.prepare(4096); m_socket.async_read_some(m_bufs, [self=shared_from_this()](boost::system::error_code ec, size_t bytes_transferred) { self->handle_read(ec, bytes_transferred); }); } } } void connection::handle_write(boost::system::error_code ec, size_t bytes_transferred) { if (not ec) { auto buffers = m_reply.data_to_buffers(); if (not buffers.empty()) { boost::asio::async_write(m_socket, buffers, [self=shared_from_this()](boost::system::error_code ec, size_t bytes_transferred) { self->handle_write(ec, bytes_transferred); }); } else if (m_keep_alive) { m_request_parser.reset(); m_reply.reset(); if (m_buffer.in_avail()) handle_read({}, 0); // special case else { m_bufs = m_buffer.prepare(4096); m_socket.async_read_some(m_bufs, [self=shared_from_this()](boost::system::error_code ec, size_t bytes_transferred) { self->handle_read(ec, bytes_transferred); }); } } else m_socket.close(); } } } libzeep-5.1.8/lib-http/src/controller-rsrc.cpp0000664000175000017500000002514414324170113021173 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include namespace fs = std::filesystem; // -------------------------------------------------------------------- // We have a special, private version of mrsrc here. To be able to create // shared libraries and still be able to link when there's no mrc used. namespace mrsrc { /// \brief Internal data structure as generated by mrc struct rsrc_imp { unsigned int m_next; unsigned int m_child; unsigned int m_name; unsigned int m_size; unsigned int m_data; }; } #if _MSC_VER extern "C" const mrsrc::rsrc_imp* gResourceIndexDefault[1] = {}; extern "C" const char* gResourceDataDefault[1] = {}; extern "C" const char* gResourceNameDefault[1] = {}; extern "C" const mrsrc::rsrc_imp gResourceIndex[]; extern "C" const char gResourceData[]; extern "C" const char gResourceName[]; #pragma comment(linker, "/alternatename:gResourceIndex=gResourceIndexDefault") #pragma comment(linker, "/alternatename:gResourceData=gResourceDataDefault") #pragma comment(linker, "/alternatename:gResourceName=gResourceNameDefault") #else extern const __attribute__((weak)) mrsrc::rsrc_imp gResourceIndex[]; extern const __attribute__((weak)) char gResourceData[]; extern const __attribute__((weak)) char gResourceName[]; #endif namespace mrsrc { class rsrc_data { public: static rsrc_data& instance() { static rsrc_data s_instance; return s_instance; } const rsrc_imp* index() const { return m_index; } const char* data(unsigned int offset) const { return m_data + offset; } const char* name(unsigned int offset) const { return m_name + offset; } private: rsrc_data() { if (gResourceIndex and gResourceIndex and gResourceName) { m_index = gResourceIndex; m_data = gResourceData; m_name = gResourceName; } } rsrc_imp m_dummy = {}; const rsrc_imp* m_index = &m_dummy; const char* m_data = ""; const char* m_name = ""; }; /// \brief Class mrsrc::rsrc contains a pointer to the data in the /// resource, as well as offering an iterator interface to its /// children. class rsrc { public: rsrc() : m_impl(rsrc_data::instance().index()) {} rsrc(const rsrc& other) : m_impl(other.m_impl) {} rsrc& operator=(const rsrc& other) { m_impl = other.m_impl; return *this; } rsrc(std::filesystem::path path); std::string name() const { return rsrc_data::instance().name(m_impl->m_name); } const char* data() const { return rsrc_data::instance().data(m_impl->m_data); } unsigned long size() const { return m_impl->m_size; } explicit operator bool() const { return m_impl != NULL and m_impl->m_size > 0; } template class iterator_t { public: using iterator_category = std::input_iterator_tag; using value_type = RSRC; using difference_type = std::ptrdiff_t; using pointer = value_type*; using reference = value_type&; iterator_t(const rsrc_imp* cur) : m_cur(cur) {} iterator_t(const iterator_t& i) : m_cur(i.m_cur) { } iterator_t& operator=(const iterator_t& i) { m_cur = i.m_cur; return *this; } reference operator*() { return m_cur; } pointer operator->() { return& m_cur; } iterator_t& operator++() { if (m_cur.m_impl->m_next) m_cur.m_impl = rsrc_data::instance().index() + m_cur.m_impl->m_next; else m_cur.m_impl = nullptr; return *this; } iterator_t operator++(int) { auto tmp(*this); this->operator++(); return tmp; } bool operator==(const iterator_t& rhs) const { return m_cur.m_impl == rhs.m_cur.m_impl; } bool operator!=(const iterator_t& rhs) const { return m_cur.m_impl != rhs.m_cur.m_impl; } private: value_type m_cur; }; using iterator = iterator_t; iterator begin() const { const rsrc_imp* impl = nullptr; if (m_impl and m_impl->m_child) impl = rsrc_data::instance().index() + m_impl->m_child; return iterator(impl); } iterator end() const { return iterator(nullptr); } private: rsrc(const rsrc_imp* imp) : m_impl(imp) {} const rsrc_imp *m_impl; }; inline rsrc::rsrc(std::filesystem::path p) { m_impl = rsrc_data::instance().index(); // using std::filesytem::path would have been natural here of course... auto pb = p.begin(); auto pe = p.end(); while (m_impl != nullptr and pb != pe) { auto name = *pb++; const rsrc_imp* impl = nullptr; for (rsrc child: *this) { if (child.name() == name) { impl = child.m_impl; break; } } m_impl = impl; } if (pb != pe) // not found m_impl = nullptr; } // -------------------------------------------------------------------- template class basic_streambuf : public std::basic_streambuf { public: typedef CharT char_type; typedef Traits traits_type; typedef typename traits_type::int_type int_type; typedef typename traits_type::pos_type pos_type; typedef typename traits_type::off_type off_type; /// \brief constructor taking a \a path to the resource in memory basic_streambuf(const std::string& path) : m_rsrc(path) { init(); } /// \brief constructor taking a \a rsrc basic_streambuf(const rsrc& rsrc) : m_rsrc(rsrc) { init(); } basic_streambuf(const basic_streambuf&) = delete; basic_streambuf(basic_streambuf&& rhs) : basic_streambuf(rhs.m_rsrc) { } basic_streambuf& operator=(const basic_streambuf&) = delete; basic_streambuf& operator=(basic_streambuf&& rhs) { swap(rhs); return *this; } void swap(basic_streambuf& rhs) { std::swap(m_begin, rhs.m_begin); std::swap(m_end, rhs.m_end); std::swap(m_current, rhs.m_current); } private: void init() { m_begin = reinterpret_cast(m_rsrc.data()); m_end = reinterpret_cast(m_rsrc.data() + m_rsrc.size()); m_current = m_begin; } int_type underflow() { if (m_current == m_end) return traits_type::eof(); return traits_type::to_int_type(*m_current); } int_type uflow() { if (m_current == m_end) return traits_type::eof(); return traits_type::to_int_type(*m_current++); } int_type pbackfail(int_type ch) { if (m_current == m_begin or (ch != traits_type::eof() and ch != m_current[-1])) return traits_type::eof(); return traits_type::to_int_type(*--m_current); } std::streamsize showmanyc() { assert(std::less_equal()(m_current, m_end)); return m_end - m_current; } pos_type seekoff(off_type off, std::ios_base::seekdir dir, std::ios_base::openmode which) { switch (dir) { case std::ios_base::beg: m_current = m_begin + off; break; case std::ios_base::end: m_current = m_end + off; break; case std::ios_base::cur: m_current += off; break; default: break; } if (m_current < m_begin) m_current = m_begin; if (m_current > m_end) m_current = m_end; return m_current - m_begin; } pos_type seekpos(pos_type pos, std::ios_base::openmode which) { m_current = m_begin + pos; if (m_current < m_begin) m_current = m_begin; if (m_current > m_end) m_current = m_end; return m_current - m_begin; } private: rsrc m_rsrc; const char_type* m_begin; const char_type* m_end; const char_type* m_current; }; using streambuf = basic_streambuf>; // -------------------------------------------------------------------- // class mrsrc::istream template class basic_istream : public std::basic_istream { public: typedef CharT char_type; typedef Traits traits_type; typedef typename traits_type::int_type int_type; typedef typename traits_type::pos_type pos_type; typedef typename traits_type::off_type off_type; private: using __streambuf_type = basic_streambuf; using __istream_type = std::basic_istream; __streambuf_type m_buffer; public: basic_istream(const std::string& path) : __istream_type(&m_buffer) , m_buffer(path) { this->init(&m_buffer); } basic_istream(rsrc& resource) : __istream_type(&m_buffer) , m_buffer(resource)\ { this->init(&m_buffer); } basic_istream(const basic_istream&) = delete; basic_istream(basic_istream&& rhs) : __istream_type(std::move(rhs)) , m_buffer(std::move(rhs.m_buffer)) { __istream_type::set_rdbuf(&m_buffer); } basic_istream& operator=(const basic_istream& ) = delete; basic_istream& operator=(basic_istream&& rhs) { __istream_type::operator=(std::move(rhs)); m_buffer = std::move(rhs.m_buffer); return *this; } void swap(basic_istream& rhs) { __istream_type::swap(rhs); m_buffer.swap(rhs.m_buffer); } __streambuf_type* rdbuf() const { return const_cast<__streambuf_type*>(&m_buffer); } }; using istream = basic_istream>; } // -------------------------------------------------------------------- namespace zeep::http { // ----------------------------------------------------------------------- #if _MSC_VER and not defined(WIN32_LEAN_AND_MEAN) #define WIN32_LEAN_AND_MEAN #include #endif rsrc_loader::rsrc_loader(const std::string&) { #if _MSC_VER char exePath[MAX_PATH] = {}; if (::GetModuleFileNameA(NULL, exePath, MAX_PATH) > 0) mRsrcWriteTime = fs::last_write_time(exePath); #else char exePath[PATH_MAX + 1]; int r = readlink("/proc/self/exe", exePath, PATH_MAX); if (r > 0) { exePath[r] = 0; mRsrcWriteTime = fs::last_write_time(exePath); } #endif } /// return last_write_time of \a file fs::file_time_type rsrc_loader::file_time(const std::string& file, std::error_code& ec) noexcept { fs::file_time_type result = {}; ec = {}; mrsrc::rsrc rsrc(file); if (rsrc) result = mRsrcWriteTime; else ec = std::make_error_code(std::errc::no_such_file_or_directory); return result; } // basic loader, returns error in ec if file was not found std::istream* rsrc_loader::load_file(const std::string& file, std::error_code& ec) noexcept { mrsrc::rsrc resource(file); std::istream* result = nullptr; ec = {}; if (resource) result = new mrsrc::istream(resource); else ec = std::make_error_code(std::errc::no_such_file_or_directory); return result; } } // namespace zeep::http libzeep-5.1.8/lib-http/src/controller.cpp0000664000175000017500000000542514324170113020224 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include namespace zeep::http { thread_local request* controller::s_request = nullptr; controller::controller(const std::string& prefix_path) : m_prefix_path(prefix_path) { while (not m_prefix_path.empty()) { // strip leading slashes if (m_prefix_path.front() == '/') { m_prefix_path.erase(m_prefix_path.begin()); continue; } // and trailing slashes if (m_prefix_path.back() == '/') { m_prefix_path.pop_back(); continue; } break; } } controller::~controller() { } bool controller::dispatch_request(boost::asio::ip::tcp::socket& socket, request& req, reply& rep) { bool result = false; try { s_request = &req; result = handle_request(req, rep); s_request = nullptr; } catch (...) { s_request = nullptr; throw; } return result; } bool controller::path_matches_prefix(const std::string& path) const { bool result = m_prefix_path.empty(); if (not result) { std::string::size_type offset = 0; while (offset < path.length() and path[offset] == '/') ++offset; result = path.compare(offset, m_prefix_path.length(), m_prefix_path) == 0; if (result) result = path.length() == m_prefix_path.length() + offset or path[offset + m_prefix_path.length()] == '/'; } return result; } std::string controller::get_prefixless_path(const request& req) const { uri uri(req.get_uri()); auto result = uri.is_absolute() ? uri.get_path().lexically_relative("/") : uri.get_path(); if (not m_prefix_path.empty()) { result = result.lexically_relative(m_prefix_path); if (not result.empty() and result.begin()->string() == "..") { // assert(false); throw std::logic_error("Controller does not have the prefix path for this request"); } } return result == "." ? "" : result.generic_string(); } json::element controller::get_credentials() const { json::element credentials; if (s_request != nullptr) credentials = s_request->get_credentials(); return credentials; } std::string controller::get_remote_address() const { std::string result; if (s_request != nullptr) result = s_request->get_remote_address(); return result; } bool controller::has_role(const std::string& role) const { auto credentials = get_credentials(); return credentials.is_object() and credentials["role"].is_array() and credentials["role"].contains(role); } std::string controller::get_header(const char *name) const { return s_request ? s_request->get_header(name) : ""; } } libzeep-5.1.8/lib-http/src/crypto.cpp0000664000175000017500000007612514324170113017366 0ustar maartenmaarten// Copyright Maarten L. Hekkelman. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include #include #include namespace zeep { // -------------------------------------------------------------------- // encoding/decoding const char kBase64CharTable[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; const uint8_t kBase64IndexTable[128] = { 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 62, // + 128, // not used 128, // not used 128, // not used 63, // / 52, // 0 53, // 1 54, // 2 55, // 3 56, // 4 57, // 5 58, // 6 59, // 7 60, // 8 61, // 9 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 0, // A 1, // B 2, // C 3, // D 4, // E 5, // F 6, // G 7, // H 8, // I 9, // J 10, // K 11, // L 12, // M 13, // N 14, // O 15, // P 16, // Q 17, // R 18, // S 19, // T 20, // U 21, // V 22, // W 23, // X 24, // Y 25, // Z 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used 26, // a 27, // b 28, // c 29, // d 30, // e 31, // f 32, // g 33, // h 34, // i 35, // j 36, // k 37, // l 38, // m 39, // n 40, // o 41, // p 42, // q 43, // r 44, // s 45, // t 46, // u 47, // v 48, // w 49, // x 50, // y 51, // z 128, // not used 128, // not used 128, // not used 128, // not used 128, // not used }; inline uint8_t sextet(char ch) { if (ch < '+' or ch > 'z' or kBase64IndexTable[static_cast(ch)] >= 128) throw invalid_base64(); return kBase64IndexTable[static_cast(ch)]; } std::string encode_base64(std::string_view data, size_t wrap_width) { std::string::size_type n = data.length(); std::string::size_type m = 4 * (n / 3); if (n % 3) m += 4; if (wrap_width != 0) m += (m / wrap_width) + 1; std::string result; result.reserve(m); auto ch = data.begin(); size_t l = 0; while (n > 0) { char s[4] = { '=', '=', '=', '=' }; switch (n) { case 1: { uint8_t i = *ch++; s[0] = kBase64CharTable[i >> 2]; s[1] = kBase64CharTable[(i << 4) bitand 0x03f]; n -= 1; break; } case 2: { uint8_t i1 = *ch++; uint8_t i2 = *ch++; s[0] = kBase64CharTable[i1 >> 2]; s[1] = kBase64CharTable[(i1 << 4 bitor i2 >> 4) bitand 0x03f]; s[2] = kBase64CharTable[(i2 << 2) bitand 0x03f]; n -= 2; break; } default: { uint8_t i1 = *ch++; uint8_t i2 = *ch++; uint8_t i3 = *ch++; s[0] = kBase64CharTable[i1 >> 2]; s[1] = kBase64CharTable[(i1 << 4 bitor i2 >> 4) bitand 0x03f]; s[2] = kBase64CharTable[(i2 << 2 bitor i3 >> 6) bitand 0x03f]; s[3] = kBase64CharTable[i3 bitand 0x03f]; n -= 3; break; } } if (wrap_width == 0) result.append(s, s + 4); else { for (size_t i = 0; i < 4; ++i) { if (l == wrap_width) { result.append(1, '\n'); l = 0; } result.append(1, s[i]); ++l; } } } if (wrap_width != 0) result.append(1, '\n'); assert(result.length() == m); return result; } std::string decode_base64(std::string_view data) { size_t n = data.length(); size_t m = 3 * (n / 4); std::string result; result.reserve(m); auto i = data.begin(); while (i != data.end()) { uint8_t sxt[4] = {}; int b = 0, c = 3; while (b < 4) { if (i == data.end()) break; char ch = *i++; switch (ch) { case ' ': case '\t': case '\n': case '\r': break; case '=': if (b == 2 and *i++ == '=') { c = 1; b = 4; } else if (b == 3) { c = 2; b = 4; } else throw invalid_base64(); break; default: sxt[b] = sextet(ch); ++b; break; } } if (b == 4) { result.append(1, static_cast(sxt[0] << 2 bitor sxt[1] >> 4)); if (c >= 2) result.append(1, static_cast(sxt[1] << 4 bitor sxt[2] >> 2)); if (c == 3) result.append(1, static_cast(sxt[2] << 6 bitor sxt[3])); } else if (b != 0) throw invalid_base64(); } return result; } std::string encode_base64url(std::string_view data) { std::string result = encode_base64(data); while (not result.empty() and result.back() == '=') result.pop_back(); for (auto p = result.find('+'); p != std::string::npos; p = result.find('+', p + 1)) result.replace(p, 1, 1, '-'); for (auto p = result.find('/'); p != std::string::npos; p = result.find('/', p + 1)) result.replace(p, 1, 1, '_'); return result; } std::string decode_base64url(std::string data) { for (auto p = data.find('-'); p != std::string::npos; p = data.find('-', p + 1)) data.replace(p, 1, 1, '+'); for (auto p = data.find('_'); p != std::string::npos; p = data.find('_', p + 1)) data.replace(p, 1, 1, '/'); switch (data.length() % 4) { case 0: break; case 2: data.append(2, '='); break; case 3: data.append(1, '='); break; default: throw invalid_base64(); } return decode_base64(data); } // -------------------------------------------------------------------- const char kBase32CharTable[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"; const uint8_t kBase32IndexTable[128] = { 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 26, // 2 27, // 3 28, // 4 29, // 5 30, // 6 31, // 7 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 0, // A 1, // B 2, // C 3, // D 4, // E 5, // F 6, // G 7, // H 8, // I 9, // J 10, // K 11, // L 12, // M 13, // N 14, // O 15, // P 16, // Q 17, // R 18, // S 19, // T 20, // U 21, // V 22, // W 23, // X 24, // Y 25, // Z 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used 0, // a 1, // b 2, // c 3, // d 4, // e 5, // f 6, // g 7, // h 8, // i 9, // j 10, // k 11, // l 12, // m 13, // n 14, // o 15, // p 16, // q 17, // r 18, // s 19, // t 20, // u 21, // v 22, // w 23, // x 24, // y 25, // z 32, // not used 32, // not used 32, // not used 32, // not used 32, // not used }; inline size_t quintet(char ch) { if (ch < '2' or ch > 'z' or kBase32IndexTable[static_cast(ch)] >= 32) throw invalid_base32(); return kBase32IndexTable[static_cast(ch)]; } std::string encode_base32(std::string_view data, size_t wrap_width) { std::string::size_type n = data.length(); std::string::size_type m = 8 * (n / 5); if (n % 5) m += 8; if (wrap_width != 0) m += (m / wrap_width) + 1; std::string result; result.reserve(m); auto ch = data.begin(); size_t l = 0; while (n > 0) { char s[8] = { '=', '=', '=', '=', '=', '=', '=', '=' }; switch (n) { case 1: { uint8_t i1 = *ch++; s[0] = kBase32CharTable[(i1 >> 3) bitand 0x01f]; s[1] = kBase32CharTable[(i1 << 2) bitand 0x01f]; n -= 1; break; } case 2: { uint8_t i1 = *ch++; uint8_t i2 = *ch++; // i1 i2 s[0] = kBase32CharTable[(i1 >> 3 ) bitand 0x01f]; // 5 s[1] = kBase32CharTable[(i1 << 2 bitor i2 >> 6) bitand 0x01f]; // 3 2 s[2] = kBase32CharTable[( i2 >> 1) bitand 0x01f]; // 5 s[3] = kBase32CharTable[(i2 << 4 ) bitand 0x01f]; // 1 n -= 2; break; } case 3: { uint8_t i1 = *ch++; uint8_t i2 = *ch++; uint8_t i3 = *ch++; // i1 i2 i3 s[0] = kBase32CharTable[(i1 >> 3 ) bitand 0x01f]; // 5 s[1] = kBase32CharTable[(i1 << 2 bitor i2 >> 6) bitand 0x01f]; // 3 2 s[2] = kBase32CharTable[( i2 >> 1) bitand 0x01f]; // 5 s[3] = kBase32CharTable[(i2 << 4 bitor i3 >> 4) bitand 0x01f]; // 1 4 s[4] = kBase32CharTable[(i3 << 1 ) bitand 0x01f]; // 4 n -= 3; break; } case 4: { uint8_t i1 = *ch++; uint8_t i2 = *ch++; uint8_t i3 = *ch++; uint8_t i4 = *ch++; // i1 i2 i3 i4 s[0] = kBase32CharTable[(i1 >> 3 ) bitand 0x01f]; // 5 s[1] = kBase32CharTable[(i1 << 2 bitor i2 >> 6) bitand 0x01f]; // 3 2 s[2] = kBase32CharTable[( i2 >> 1) bitand 0x01f]; // 5 s[3] = kBase32CharTable[(i2 << 4 bitor i3 >> 4) bitand 0x01f]; // 1 4 s[4] = kBase32CharTable[(i3 << 1 ) bitand 0x01f]; // 4 1 s[5] = kBase32CharTable[( i4 >> 2) bitand 0x01f]; // 5 s[6] = kBase32CharTable[(i4 << 3 ) bitand 0x01f]; // 2 n -= 4; break; } default: { uint8_t i1 = *ch++; uint8_t i2 = *ch++; uint8_t i3 = *ch++; uint8_t i4 = *ch++; uint8_t i5 = *ch++; // i1 i2 i3 i4 i5 s[0] = kBase32CharTable[(i1 >> 3 ) bitand 0x01f]; // 5 s[1] = kBase32CharTable[(i1 << 2 bitor i2 >> 6) bitand 0x01f]; // 3 2 s[2] = kBase32CharTable[( i2 >> 1) bitand 0x01f]; // 5 s[3] = kBase32CharTable[(i2 << 4 bitor i3 >> 4) bitand 0x01f]; // 1 4 s[4] = kBase32CharTable[(i3 << 1 bitor i4 >> 7) bitand 0x01f]; // 4 1 s[5] = kBase32CharTable[( i4 >> 2) bitand 0x01f]; // 5 s[6] = kBase32CharTable[(i4 << 3 bitor i5 >> 5) bitand 0x01f]; // 2 3 s[7] = kBase32CharTable[(i5 ) bitand 0x01f]; // 5 n -= 5; break; } } if (wrap_width == 0) result.append(s, s + 8); else { for (size_t i = 0; i < 8; ++i) { if (l == wrap_width) { result.append(1, '\n'); l = 0; } result.append(1, s[i]); ++l; } } } if (wrap_width != 0) result.append(1, '\n'); assert(result.length() == m); return result; } std::string decode_base32(std::string_view data) { size_t n = data.length(); size_t m = 8 * (n / 5); std::string result; result.reserve(m); auto i = data.begin(); int padding = 0; while (i != data.end() and not padding) { uint8_t qnt[5] = {}; int c = 0; while (c + padding != 8 and i != data.end()) { auto ch = *i++; if (std::isspace(ch)) continue; if (padding) { if (ch != '=') throw invalid_base32(); ++padding; continue; } if (ch == '=') { ++padding; continue; } if (ch < '2' or ch > 'z' or kBase32IndexTable[static_cast(ch)] >= 32) throw invalid_base32(); auto b = kBase32IndexTable[static_cast(ch)]; switch (c++) { case 0: qnt[0] |= b << 3; break; case 1: qnt[0] |= b >> 2; qnt[1] = b << 6; break; case 2: qnt[1] |= b << 1; break; case 3: qnt[1] |= b >> 4; qnt[2] = b << 4; break; case 4: qnt[2] |= b >> 1; qnt[3] = b << 7; break; case 5: qnt[3] |= b << 2; break; case 6: qnt[3] |= b >> 3; qnt[4] = b << 5; break; case 7: qnt[4] |= b; break; } } if (c + padding != 8) throw invalid_base32(); switch (c) { case 2: result.append(qnt, qnt + 1); break; case 4: result.append(qnt, qnt + 2); break; case 5: result.append(qnt, qnt + 3); break; case 7: result.append(qnt, qnt + 4); break; case 8: result.append(qnt, qnt + 5); break; default: throw invalid_base32(); } } while (i != data.end()) { if (not std::isspace(*i++)) throw invalid_base32(); } return result; } // -------------------------------------------------------------------- // hex std::string encode_hex(std::string_view data) { // convert to hex const char kHexChars[] = "0123456789abcdef"; std::string result; result.reserve(data.length() * 2); for (uint8_t b: data) { result += kHexChars[b >> 4]; result += kHexChars[b bitand 0x0f]; } return result; } std::string decode_hex(std::string_view data) { if (data.length() % 2 == 1) throw invalid_hex(); std::string result; result.reserve(data.length() / 2); for (std::string::size_type i = 0; i < data.length(); i += 2) { uint8_t n[2] = {}; for (int j = 0; j < 2; ++j) { auto ch = data[i + j]; if (ch >= '0' and ch <= '9') n[i] = ch - '0'; else if (ch >= 'a' and ch <= 'f') n[i] = ch - 'a' + 10; else if (ch >= 'A' and ch <= 'F') n[i] = ch - 'A' + 10; else throw invalid_hex(); } result.push_back(static_cast(n[0] << 4 bitor n[1])); } return result; } // -------------------------------------------------------------------- // random std::string random_hash() { std::random_device rng; union { uint32_t data[4]; char s[4 * 4]; } v = { { rng(), rng(), rng(), rng() } }; return { v.s, v.s + sizeof(v) }; } // -------------------------------------------------------------------- // hashes // -------------------------------------------------------------------- #if _MSC_VER # pragma warning (disable : 4146) // unary minus operator applied to unsigned type, result still unsigned #endif static inline uint32_t rotl32 (uint32_t n, unsigned int c) { const unsigned int mask = (CHAR_BIT*sizeof(n) - 1); // assumes width is a power of 2. // assert ( (c<=mask) &&"rotate by type width or more"); c &= mask; return (n<>( (-c)&mask )); } static inline uint32_t rotr32 (uint32_t n, unsigned int c) { const unsigned int mask = (CHAR_BIT*sizeof(n) - 1); // assert ( (c<=mask) &&"rotate by type width or more"); c &= mask; return (n>>c) bitor (n<<( (-c)&mask )); } // -------------------------------------------------------------------- struct hash_impl { virtual ~hash_impl() {} virtual void write_bit_length(uint64_t l, uint8_t* b) = 0; virtual void transform(const uint8_t* data) = 0; virtual std::string final() = 0; }; // -------------------------------------------------------------------- #define F1(x,y,z) (z xor (x bitand (y xor z))) #define F2(x,y,z) F1(z, x, y) #define F3(x,y,z) (x xor y xor z) #define F4(x,y,z) (y xor ( x bitor compl z)) #define STEP(F,w,x,y,z,data,s) \ w += F(x, y, z) + data; \ w = rotl32(w, s); \ w += x; struct md5_hash_impl : public hash_impl { using word_type = uint32_t; static const size_t word_count = 4; static const size_t block_size = 64; static const size_t digest_size = word_count * sizeof(word_type); word_type m_h[word_count]; virtual void init() { m_h[0] = 0x67452301; m_h[1] = 0xefcdab89; m_h[2] = 0x98badcfe; m_h[3] = 0x10325476; } virtual void write_bit_length(uint64_t l, uint8_t* p) { for (int i = 0; i < 8; ++i) *p++ = static_cast((l >> (i * 8))); } virtual void transform(const uint8_t* data) { uint32_t a = m_h[0], b = m_h[1], c = m_h[2], d = m_h[3]; uint32_t in[16]; for (int i = 0; i < 16; ++i) { in[i] = static_cast(data[0]) << 0 | static_cast(data[1]) << 8 | static_cast(data[2]) << 16 | static_cast(data[3]) << 24; data += 4; } STEP(F1, a, b, c, d, in[ 0] + 0xd76aa478, 7); STEP(F1, d, a, b, c, in[ 1] + 0xe8c7b756, 12); STEP(F1, c, d, a, b, in[ 2] + 0x242070db, 17); STEP(F1, b, c, d, a, in[ 3] + 0xc1bdceee, 22); STEP(F1, a, b, c, d, in[ 4] + 0xf57c0faf, 7); STEP(F1, d, a, b, c, in[ 5] + 0x4787c62a, 12); STEP(F1, c, d, a, b, in[ 6] + 0xa8304613, 17); STEP(F1, b, c, d, a, in[ 7] + 0xfd469501, 22); STEP(F1, a, b, c, d, in[ 8] + 0x698098d8, 7); STEP(F1, d, a, b, c, in[ 9] + 0x8b44f7af, 12); STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); STEP(F2, a, b, c, d, in[ 1] + 0xf61e2562, 5); STEP(F2, d, a, b, c, in[ 6] + 0xc040b340, 9); STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); STEP(F2, b, c, d, a, in[ 0] + 0xe9b6c7aa, 20); STEP(F2, a, b, c, d, in[ 5] + 0xd62f105d, 5); STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); STEP(F2, b, c, d, a, in[ 4] + 0xe7d3fbc8, 20); STEP(F2, a, b, c, d, in[ 9] + 0x21e1cde6, 5); STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); STEP(F2, c, d, a, b, in[ 3] + 0xf4d50d87, 14); STEP(F2, b, c, d, a, in[ 8] + 0x455a14ed, 20); STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); STEP(F2, d, a, b, c, in[ 2] + 0xfcefa3f8, 9); STEP(F2, c, d, a, b, in[ 7] + 0x676f02d9, 14); STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); STEP(F3, a, b, c, d, in[ 5] + 0xfffa3942, 4); STEP(F3, d, a, b, c, in[ 8] + 0x8771f681, 11); STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); STEP(F3, a, b, c, d, in[ 1] + 0xa4beea44, 4); STEP(F3, d, a, b, c, in[ 4] + 0x4bdecfa9, 11); STEP(F3, c, d, a, b, in[ 7] + 0xf6bb4b60, 16); STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); STEP(F3, d, a, b, c, in[ 0] + 0xeaa127fa, 11); STEP(F3, c, d, a, b, in[ 3] + 0xd4ef3085, 16); STEP(F3, b, c, d, a, in[ 6] + 0x04881d05, 23); STEP(F3, a, b, c, d, in[ 9] + 0xd9d4d039, 4); STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); STEP(F3, b, c, d, a, in[ 2] + 0xc4ac5665, 23); STEP(F4, a, b, c, d, in[ 0] + 0xf4292244, 6); STEP(F4, d, a, b, c, in[ 7] + 0x432aff97, 10); STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); STEP(F4, b, c, d, a, in[ 5] + 0xfc93a039, 21); STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); STEP(F4, d, a, b, c, in[ 3] + 0x8f0ccc92, 10); STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); STEP(F4, b, c, d, a, in[ 1] + 0x85845dd1, 21); STEP(F4, a, b, c, d, in[ 8] + 0x6fa87e4f, 6); STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); STEP(F4, c, d, a, b, in[ 6] + 0xa3014314, 15); STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); STEP(F4, a, b, c, d, in[ 4] + 0xf7537e82, 6); STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); STEP(F4, c, d, a, b, in[ 2] + 0x2ad7d2bb, 15); STEP(F4, b, c, d, a, in[ 9] + 0xeb86d391, 21); m_h[0] += a; m_h[1] += b; m_h[2] += c; m_h[3] += d; } virtual std::string final() { std::string result; result.reserve(digest_size); for (size_t i = 0; i < word_count; ++i) { for (size_t j = 0; j < sizeof(word_type); ++j) { uint8_t b = static_cast(m_h[i] >> (j * 8)); result.push_back(b); } } return result; } }; // -------------------------------------------------------------------- struct sha1_hash_impl : public hash_impl { using word_type = uint32_t; static const size_t word_count = 5; static const size_t block_size = 64; static const size_t digest_size = word_count * sizeof(word_type); word_type m_h[word_count]; virtual void init() { m_h[0] = 0x67452301; m_h[1] = 0xEFCDAB89; m_h[2] = 0x98BADCFE; m_h[3] = 0x10325476; m_h[4] = 0xC3D2E1F0; } virtual void write_bit_length(uint64_t l, uint8_t* b) { #if defined(BYTE_ORDER) and BYTE_ORDER == BIG_ENDIAN memcpy(b, &l, sizeof(l)); #else b[0] = static_cast(l >> 56); b[1] = static_cast(l >> 48); b[2] = static_cast(l >> 40); b[3] = static_cast(l >> 32); b[4] = static_cast(l >> 24); b[5] = static_cast(l >> 16); b[6] = static_cast(l >> 8); b[7] = static_cast(l >> 0); #endif } virtual void transform(const uint8_t* data) { union { uint8_t s[64]; uint32_t w[80]; } w; #if defined(BYTE_ORDER) and BYTE_ORDER == BIG_ENDIAN memcpy(w.s, data, 64); #else auto p = data; for (size_t i = 0; i < 16; ++i) { w.s[i * 4 + 3] = *p++; w.s[i * 4 + 2] = *p++; w.s[i * 4 + 1] = *p++; w.s[i * 4 + 0] = *p++; } #endif for (size_t i = 16; i < 80; ++i) w.w[i] = rotl32(w.w[i - 3] xor w.w[i - 8] xor w.w[i - 14] xor w.w[i - 16], 1); word_type wv[word_count]; for (size_t i = 0; i < word_count; ++i) wv[i] = m_h[i]; for (size_t i = 0; i < 80; ++i) { uint32_t f, k; if (i < 20) { f = (wv[1] bitand wv[2]) bitor ((compl wv[1]) bitand wv[3]); k = 0x5A827999; } else if (i < 40) { f = wv[1] xor wv[2] xor wv[3]; k = 0x6ED9EBA1; } else if (i < 60) { f = (wv[1] bitand wv[2]) bitor (wv[1] bitand wv[3]) bitor (wv[2] bitand wv[3]); k = 0x8F1BBCDC; } else { f = wv[1] xor wv[2] xor wv[3]; k = 0xCA62C1D6; } uint32_t t = rotl32(wv[0], 5) + f + wv[4] + k + w.w[i]; wv[4] = wv[3]; wv[3] = wv[2]; wv[2] = rotl32(wv[1], 30); wv[1] = wv[0]; wv[0] = t; } for (size_t i = 0; i < word_count; ++i) m_h[i] += wv[i]; } virtual std::string final() { std::string result(digest_size, '\0'); #if defined(BYTE_ORDER) and BYTE_ORDER == BIG_ENDIAN memcpy(const_cast(result.data()), &m_h, digest_size); #else auto s = result.begin(); for (size_t i = 0; i < word_count; ++i) { *s++ = static_cast(m_h[i] >> 24); *s++ = static_cast(m_h[i] >> 16); *s++ = static_cast(m_h[i] >> 8); *s++ = static_cast(m_h[i] >> 0); } #endif return result; } }; // -------------------------------------------------------------------- struct sha256_hash_impl : public hash_impl { using word_type = uint32_t; static const size_t word_count = 8; static const size_t block_size = 64; static const size_t digest_size = word_count * sizeof(word_type); word_type m_h[word_count]; virtual void init() { m_h[0] = 0x6a09e667; m_h[1] = 0xbb67ae85; m_h[2] = 0x3c6ef372; m_h[3] = 0xa54ff53a; m_h[4] = 0x510e527f; m_h[5] = 0x9b05688c; m_h[6] = 0x1f83d9ab; m_h[7] = 0x5be0cd19; } virtual void write_bit_length(uint64_t l, uint8_t* b) { #if defined(BYTE_ORDER) and BYTE_ORDER == BIG_ENDIAN memcpy(b, &l, sizeof(l)); #else b[0] = static_cast(l >> 56); b[1] = static_cast(l >> 48); b[2] = static_cast(l >> 40); b[3] = static_cast(l >> 32); b[4] = static_cast(l >> 24); b[5] = static_cast(l >> 16); b[6] = static_cast(l >> 8); b[7] = static_cast(l >> 0); #endif } virtual void transform(const uint8_t* data) { static const uint32_t k[] = { 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 }; word_type wv[word_count]; for (size_t i = 0; i < word_count; ++i) wv[i] = m_h[i]; union { uint8_t s[64]; uint32_t w[64]; } w; #if defined(BYTE_ORDER) and BYTE_ORDER == BIG_ENDIAN memcpy(w.w, data, 64); #else auto p = data; for (size_t i = 0; i < 16; ++i) { w.s[i * 4 + 3] = *p++; w.s[i * 4 + 2] = *p++; w.s[i * 4 + 1] = *p++; w.s[i * 4 + 0] = *p++; } #endif for (size_t i = 16; i < 64; ++i) { auto s0 = rotr32(w.w[i - 15], 7) xor rotr32(w.w[i - 15], 18) xor (w.w[i - 15] >> 3); auto s1 = rotr32(w.w[i - 2], 17) xor rotr32(w.w[i - 2], 19) xor (w.w[i - 2] >> 10); w.w[i] = w.w[i - 16] + s0 + w.w[i - 7] + s1; } for (size_t i = 0; i < 64; ++i) { uint32_t S1 = rotr32(wv[4], 6) xor rotr32(wv[4], 11) xor rotr32(wv[4], 25); uint32_t ch = (wv[4] bitand wv[5]) xor (compl wv[4] bitand wv[6]); uint32_t t1 = wv[7] + S1 + ch + k[i] + w.w[i]; uint32_t S0 = rotr32(wv[0], 2) xor rotr32(wv[0], 13) xor rotr32(wv[0], 22); uint32_t maj = (wv[0] bitand wv[1]) xor (wv[0] bitand wv[2]) xor (wv[1] bitand wv[2]); uint32_t t2 = S0 + maj; wv[7] = wv[6]; wv[6] = wv[5]; wv[5] = wv[4]; wv[4] = wv[3] + t1; wv[3] = wv[2]; wv[2] = wv[1]; wv[1] = wv[0]; wv[0] = t1 + t2; } for (size_t i = 0; i < word_count; ++i) m_h[i] += wv[i]; } virtual std::string final() { std::string result(digest_size, '\0'); #if defined(BYTE_ORDER) and BYTE_ORDER == BIG_ENDIAN memcpy(const_cast(result.data()), &m_h, digest_size); #else auto s = result.begin(); for (size_t i = 0; i < word_count; ++i) { *s++ = static_cast(m_h[i] >> 24); *s++ = static_cast(m_h[i] >> 16); *s++ = static_cast(m_h[i] >> 8); *s++ = static_cast(m_h[i] >> 0); } #endif return result; } }; // -------------------------------------------------------------------- template class hash_base : public I { public: using word_type = typename I::word_type; static const size_t word_count = I::word_count; static const size_t block_size = I::block_size; static const size_t digest_size = I::digest_size; hash_base() { init(); } void init() { I::init(); m_data_length = 0; m_bit_length = 0; } void update(std::string_view data); void update(const uint8_t* data, size_t n); using I::transform; std::string final(); private: uint8_t m_data[block_size]; uint32_t m_data_length; int64_t m_bit_length; }; template void hash_base::update(std::string_view data) { update(reinterpret_cast(data.data()), data.size()); } template void hash_base::update(const uint8_t* p, size_t length) { m_bit_length += length * 8; if (m_data_length > 0) { uint32_t n = block_size - m_data_length; if (n > length) n = static_cast(length); memcpy(m_data + m_data_length, p, n); m_data_length += n; if (m_data_length == block_size) { transform(m_data); m_data_length = 0; } p += n; length -= n; } while (length >= block_size) { transform(p); p += block_size; length -= block_size; } if (length > 0) { memcpy(m_data, p, length); m_data_length += static_cast(length); } } template std::string hash_base::final() { m_data[m_data_length] = 0x80; ++m_data_length; std::fill(m_data + m_data_length, m_data + block_size, uint8_t(0)); if (block_size - m_data_length < 8) { transform(m_data); std::fill(m_data, m_data + block_size - 8, uint8_t(0)); } I::write_bit_length(m_bit_length, m_data + block_size - 8); transform(m_data); std::fill(m_data, m_data + block_size, uint8_t(0)); auto result = I::final(); init(); return result; } using MD5 = hash_base; using SHA1 = hash_base; using SHA256 = hash_base; // -------------------------------------------------------------------- std::string sha1(std::string_view data) { SHA1 h; h.init(); h.update(data); return h.final(); } std::string sha1(std::streambuf& data) { SHA1 h; h.init(); while (data.in_avail() > 0) { uint8_t buffer[256]; auto n = data.sgetn(reinterpret_cast(buffer), sizeof(buffer)); h.update(buffer, n); } return h.final(); } std::string sha256(std::string_view data) { SHA256 h; h.init(); h.update(data); return h.final(); } std::string md5(std::string_view data) { MD5 h; h.init(); h.update(data); return h.final(); } // -------------------------------------------------------------------- // hmac template class HMAC { public: static const size_t block_size = H::block_size; static const size_t digest_size = H::digest_size; HMAC(std::string_view key) : m_ipad(block_size, '\x36'), m_opad(block_size, '\x5c') { if (key.length() > block_size) { H keyHash; keyHash.update(key); key = keyHash.final(); } assert(key.length() < block_size); for (size_t i = 0; i < key.length(); ++i) { m_opad[i] ^= key[i]; m_ipad[i] ^= key[i]; } } HMAC& update(std::string_view data) { if (not m_inner_updated) { m_inner.update(m_ipad); m_inner_updated = true; } m_inner.update(data); return *this; } std::string final() { H outer; outer.update(m_opad); outer.update(m_inner.final()); m_inner_updated = false; return outer.final(); } private: std::string m_ipad, m_opad; bool m_inner_updated = false; H m_inner; }; std::string hmac_sha1(std::string_view message, std::string_view key) { return HMAC(key).update(message).final(); } std::string hmac_sha256(std::string_view message, std::string_view key) { return HMAC(key).update(message).final(); } std::string hmac_md5(std::string_view message, std::string_view key) { return HMAC(key).update(message).final(); } // -------------------------------------------------------------------- // password/key derivation template std::string pbkdf2(std::string_view salt, std::string_view password, unsigned iterations, unsigned keyLength) { std::string result; HMAC hmac(password); uint32_t i = 1; while (result.length() < keyLength) { hmac.update(salt); for (int j = 0; j < 4; ++j) { char b = static_cast(i >> ((3 - j) * CHAR_BIT)); hmac.update(std::string{ b }); } auto derived = hmac.final(); auto buffer = derived; for (unsigned c = 1; c < iterations; ++c) { buffer = hmac.update(buffer).final(); for (size_t ix = 0; ix < buffer.length(); ++ix) derived[ix] ^= buffer[ix]; } result.append(derived); ++i; } if (result.length() > keyLength) result.erase(result.begin() + keyLength, result.end()); return result; } /// create password hash according to PBKDF2 with HmacSHA1 std::string pbkdf2_hmac_sha1(std::string_view salt, std::string_view password, unsigned iterations, unsigned keyLength) { return pbkdf2>(salt, password, iterations, keyLength); } /// create password hash according to PBKDF2 with HmacSHA256 std::string pbkdf2_hmac_sha256(std::string_view salt, std::string_view password, unsigned iterations, unsigned keyLength) { return pbkdf2>(salt, password, iterations, keyLength); } }libzeep-5.1.8/lib-http/src/daemon.cpp0000664000175000017500000002730014324170113017300 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // Source code specifically for Unix/Linux // Utilitie routines to build daemon processes #ifndef _MSC_VER #include #include #include #endif #include #include #include #include #include "signals.hpp" namespace fs = std::filesystem; using namespace std::literals; namespace zeep::http { #if __APPLE__ int getgrouplist(const char *user, gid_t group, gid_t *groups, int *ngroups) { return ::getgrouplist(user, (int)group, (int *)groups, ngroups); } #endif daemon::daemon(server_factory_type &&factory, const std::string &pid_file, const std::string &stdout_log_file, const std::string &stderr_log_file) : m_factory(std::move(factory)) , m_pid_file(pid_file) , m_stdout_log_file(stdout_log_file) , m_stderr_log_file(stderr_log_file) { } daemon::daemon(server_factory_type &&factory, const char *name) : daemon(std::forward(factory), "/var/run/"s + name, "/var/log/"s + name + "/access.log", "/var/log/"s + name + "/error.log") { } int daemon::run_foreground(const std::string &address, uint16_t port) { int result = 0; if (pid_is_for_executable()) { std::cerr << "Server is already running." << std::endl; result = 1; } else { try { boost::asio::io_context io_context; boost::asio::ip::tcp::endpoint endpoint; try { endpoint = boost::asio::ip::tcp::endpoint(boost::asio::ip::make_address(address), port); } catch (const std::exception &e) { boost::asio::ip::tcp::resolver resolver(io_context); boost::asio::ip::tcp::resolver::query query(address, std::to_string(port)); endpoint = *resolver.resolve(query); } boost::asio::ip::tcp::acceptor acceptor(io_context); acceptor.open(endpoint.protocol()); acceptor.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true)); acceptor.bind(endpoint); acceptor.listen(); acceptor.close(); } catch (exception &e) { throw std::runtime_error(std::string("Is server running already? ") + e.what()); } signal_catcher sc; sc.block(); std::unique_ptr s(m_factory()); s->bind(address, port); std::thread t(std::bind(&server::run, s.get(), 1)); sc.unblock(); sc.wait(); s->stop(); if (t.joinable()) t.join(); } return result; } #if _MSC_VER int daemon::start(const std::string &address, uint16_t port, size_t nr_of_procs, size_t nr_of_threads, const std::string &run_as_user) { assert(false); return -1; } int daemon::stop() { return -1; } int daemon::status() { return -1; } int daemon::reload() { return -1; } bool daemon::pid_is_for_executable() { return false; } void daemon::daemonize() { assert(false); } #else int daemon::start(const std::string &address, uint16_t port, size_t nr_of_procs, size_t nr_of_threads, const std::string &run_as_user) { int result = 0; if (pid_is_for_executable()) { std::cerr << "Server is already running." << std::endl; result = 1; } else { if (fs::exists(m_pid_file)) try { fs::remove(m_pid_file); } catch (...) { } fs::path pidDir = fs::path(m_pid_file).parent_path(); if (not fs::is_directory(pidDir)) fs::create_directories(pidDir); fs::path outLogDir = fs::path(m_stdout_log_file).parent_path(); if (not fs::is_directory(outLogDir)) fs::create_directories(outLogDir); fs::path errLogDir = fs::path(m_stderr_log_file).parent_path(); if (not fs::is_directory(errLogDir)) fs::create_directories(errLogDir); try { boost::asio::io_context io_context; boost::asio::ip::tcp::endpoint endpoint; try { endpoint = boost::asio::ip::tcp::endpoint(boost::asio::ip::make_address(address), port); } catch (const std::exception &e) { boost::asio::ip::tcp::resolver resolver(io_context); boost::asio::ip::tcp::resolver::query query(address, std::to_string(port)); endpoint = *resolver.resolve(query); } boost::asio::ip::tcp::acceptor acceptor(io_context); acceptor.open(endpoint.protocol()); acceptor.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true)); acceptor.bind(endpoint); acceptor.listen(); acceptor.close(); } catch (exception &e) { throw std::runtime_error(std::string("Is server running already? ") + e.what()); } daemonize(); run_main_loop(address, port, nr_of_procs, nr_of_threads, run_as_user); if (fs::exists(m_pid_file)) try { fs::remove(m_pid_file); } catch (...) { } } return result; } int daemon::stop() { int result = 1; if (pid_is_for_executable()) { std::ifstream file(m_pid_file); if (not file.is_open()) throw std::runtime_error("Failed to open pid file"); int pid; file >> pid; file.close(); result = ::kill(pid, SIGINT); if (result != 0) std::cerr << "Failed to stop process " << pid << ": " << strerror(errno) << std::endl; try { if (fs::exists(m_pid_file)) fs::remove(m_pid_file); } catch (...) { } } else throw std::runtime_error("Not my pid file: " + m_pid_file); return result; } int daemon::status() { int result; if (pid_is_for_executable()) { std::cerr << "server is running" << std::endl; result = 0; } else { std::cerr << "server is not running" << std::endl; result = 1; } return result; } int daemon::reload() { int result; if (pid_is_for_executable()) { std::ifstream file(m_pid_file); if (not file.is_open()) throw std::runtime_error("Failed to open pid file"); int pid; file >> pid; result = ::kill(pid, SIGHUP); } else { std::cerr << "server is not running" << std::endl; result = 1; } return result; } void daemon::daemonize() { int pid = fork(); if (pid == -1) { std::cerr << "Fork failed" << std::endl; exit(1); } // exit the parent (=calling) process if (pid != 0) _exit(0); if (setsid() < 0) { std::cerr << "Failed to create process group: " << strerror(errno) << std::endl; exit(1); } // it is dubious if this is needed: signal(SIGHUP, SIG_IGN); // fork again, to avoid being able to attach to a terminal device pid = fork(); if (pid == -1) std::cerr << "Fork failed" << std::endl; if (pid != 0) _exit(0); // write our pid to the pid file std::ofstream pidFile(m_pid_file); if (not pidFile.is_open()) { std::cerr << "Failed to write to " << m_pid_file << ": " << strerror(errno) << std::endl; exit(1); } pidFile << getpid() << std::endl; pidFile.close(); if (chdir("/") != 0) { std::cerr << "Cannot chdir to /: " << strerror(errno) << std::endl; exit(1); } // close stdin close(STDIN_FILENO); open("/dev/null", O_RDONLY); } void daemon::open_log_file() { // open the log file int fd_out = open(m_stdout_log_file.c_str(), O_CREAT | O_APPEND | O_RDWR, 0644); if (fd_out < 0) { std::cerr << "Opening log file " << m_stdout_log_file << " failed" << std::endl; exit(1); } int fd_err; if (m_stderr_log_file == m_stdout_log_file) fd_err = fd_out; else { fd_err = open(m_stderr_log_file.c_str(), O_CREAT | O_APPEND | O_RDWR, 0644); if (fd_err < 0) { std::cerr << "Opening log file " << m_stderr_log_file << " failed" << std::endl; exit(1); } } // redirect stdout and stderr to the log file dup2(fd_out, STDOUT_FILENO); dup2(fd_err, STDERR_FILENO); // close the actual file descriptors to avoid leaks close(fd_out); if (fd_err != fd_out) close(fd_err); } bool daemon::run_main_loop(const std::string &address, uint16_t port, size_t nr_of_procs, size_t nr_of_threads, const std::string &run_as_user) { int sig = 0; int restarts = 0; for (;;) { auto start = time(nullptr); open_log_file(); if (sig == 0) std::cerr << "starting server" << std::endl; else std::cerr << "restarting server" << std::endl; std::cerr << "Listening to " << address << ':' << port << std::endl; sigset_t new_mask, old_mask; sigfillset(&new_mask); pthread_sigmask(SIG_BLOCK, &new_mask, &old_mask); preforked_server server([=]() { try { if (not run_as_user.empty()) { struct passwd* pw = getpwnam(run_as_user.c_str()); if (pw == NULL) { std::cerr << "Failed to set uid to " << run_as_user << ": " << strerror(errno) << std::endl; exit(1); } int ngroups = 0; if (getgrouplist(pw->pw_name, pw->pw_gid, nullptr, &ngroups) == -1 and ngroups > 0) { std::vector groups(ngroups); if (getgrouplist(pw->pw_name, pw->pw_gid, groups.data(), &ngroups) != -1 and setgroups(ngroups, groups.data()) == -1) { std::cerr << "Failed to set groups for " << run_as_user << ": " << strerror(errno) << std::endl; exit(1); } } if (setgid(pw->pw_gid) < 0) { std::cerr << "Failed to set gid for " << run_as_user << ": " << strerror(errno) << std::endl; exit(1); } if (setuid(pw->pw_uid) < 0) { std::cerr << "Failed to set uid to " << run_as_user << ": " << strerror(errno) << std::endl; exit(1); } } return m_factory(); } catch (const exception& e) { std::cerr << "Failed to launch server: " << e.what() << std::endl; exit(1); } }); std::thread t(std::bind(&zeep::http::preforked_server::run, &server, address, port, nr_of_procs, nr_of_threads)); try { server.start(); } catch (const exception &ex) { std::cerr << std::endl << "Exception running server: " << std::endl << ex.what() << std::endl << std::endl; exit(1); } pthread_sigmask(SIG_SETMASK, &old_mask, 0); // Wait for signal indicating time to shut down. sigset_t wait_mask; sigemptyset(&wait_mask); sigaddset(&wait_mask, SIGINT); sigaddset(&wait_mask, SIGHUP); sigaddset(&wait_mask, SIGQUIT); sigaddset(&wait_mask, SIGTERM); sigaddset(&wait_mask, SIGCHLD); pthread_sigmask(SIG_BLOCK, &wait_mask, 0); sigwait(&wait_mask, &sig); pthread_sigmask(SIG_SETMASK, &old_mask, 0); server.stop(); t.join(); if (sig != SIGCHLD) break; int status, pid; pid = waitpid(-1, &status, WUNTRACED); if (pid != -1) { if (WIFSIGNALED(status)) std::cerr << "child " << pid << " terminated by signal " << WTERMSIG(status) << std::endl; else std::cerr << "child terminated normally" << std::endl; } // did the client crash within the time window? if (time(nullptr) - start > m_restart_time_window) { restarts = 0; // no, it was outside, reset counter continue; } if (++restarts >= m_max_restarts) { std::cerr << "aborting due to excessive restarts" << std::endl; break; } } return sig == SIGHUP; } bool daemon::pid_is_for_executable() { using namespace std::literals; bool result = false; if (fs::exists(m_pid_file)) { std::ifstream pidfile(m_pid_file); if (not pidfile.is_open()) throw std::runtime_error("Failed to open pid file " + m_pid_file + ": " + strerror(errno)); int pid; pidfile >> pid; // if /proc/PID/exe points to our executable, this means we're already running char path[PATH_MAX] = ""; if (readlink(("/proc/" + std::to_string(pid) + "/exe").c_str(), path, sizeof(path)) > 0) { char exe[PATH_MAX] = ""; if (readlink("/proc/self/exe", exe, sizeof(exe)) == -1) throw std::runtime_error("could not get exe path ("s + strerror(errno) + ")"); result = strcmp(exe, path) == 0 or (ends_with(path, " (deleted)") and starts_with(path, exe)); } else if (errno == ENOENT) // link file doesn't exist result = false; else throw std::runtime_error("Failed to read executable link : "s + strerror(errno)); } return result; } #endif } // namespace zeep::http libzeep-5.1.8/lib-http/src/el-processing.cpp0000664000175000017500000011444414324170113020615 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // webapp::json is a set of classes used to implement an 'expression language' // A script language used in the XHTML templates used by the zeep webapp. // #include #include #include #include #include #include #include #include #include "format.hpp" namespace zeep::http { bool is_name_start_char(unicode uc) { return uc == L':' or (uc >= L'A' and uc <= L'Z') or uc == L'_' or (uc >= L'a' and uc <= L'z') or (uc >= 0x0C0 and uc <= 0x0D6) or (uc >= 0x0D8 and uc <= 0x0F6) or (uc >= 0x0F8 and uc <= 0x02FF) or (uc >= 0x0370 and uc <= 0x037D) or (uc >= 0x037F and uc <= 0x01FFF) or (uc >= 0x0200C and uc <= 0x0200D) or (uc >= 0x02070 and uc <= 0x0218F) or (uc >= 0x02C00 and uc <= 0x02FEF) or (uc >= 0x03001 and uc <= 0x0D7FF) or (uc >= 0x0F900 and uc <= 0x0FDCF) or (uc >= 0x0FDF0 and uc <= 0x0FFFD) or (uc >= 0x010000 and uc <= 0x0EFFFF); } bool is_name_char(unicode uc) { return uc == '-' or uc == '.' or (uc >= '0' and uc <= '9') or uc == 0x0B7 or is_name_start_char(uc) or (uc >= 0x00300 and uc <= 0x0036F) or (uc >= 0x0203F and uc <= 0x02040); } using request = http::request; using object = json::element; // -------------------------------------------------------------------- enum class token_type { undef, eof, number_int, number_float, string, object, assign, and_, or_, not_, eq, ne, lt, le, ge, gt, plus, minus, div, mod, mult, lparen, rparen, lbracket, rbracket, lbrace, rbrace, if_, elvis, else_, dot, hash, bar, true_, false_, in, comma, whitespace, fragment_separator, variable_template, selection_template, message_template, link_template, fragment_template, error }; // -------------------------------------------------------------------- // interpreter for expression language struct interpreter { using unicode = uint32_t; interpreter(const scope &scope) : m_scope(scope) {} // template // OutputIterator operator()(Match &m, OutputIterator out, std::regex::match_flag_type); object evaluate(const std::string &s); std::vector> evaluate_attr_expr(const std::string& s); bool evaluate_assert(const std::string& s); void evaluate_with(scope& scope, const std::string& s); object evaluate_link(const std::string& s); bool process(std::string &s); void match(token_type t); unsigned char next_byte(); unicode get_next_char(); void retract(); void get_next_token(); object parse_expr(); // or_expr ( '?' expr ':' expr )? object parse_or_expr(); // and_expr ( 'or' and_expr)* object parse_and_expr(); // equality_expr ( 'and' equality_expr)* object parse_equality_expr(); // relational_expr ( ('=='|'!=') relational_expr )? object parse_relational_expr(); // additive_expr ( ('<'|'<='|'>='|'>') additive_expr )* object parse_additive_expr(); // multiplicative_expr ( ('+'|'-') multiplicative_expr)* object parse_multiplicative_expr(); // unary_expr (('%'|'/') unary_expr)* object parse_unary_expr(); // ('-')? primary_expr object parse_primary_expr(); // '(' expr ')' | number | string object parse_literal_substitution();// '|xxx ${var}|' object parse_template_expr(); object parse_link_template_expr(); object parse_fragment_expr(); object parse_selector(); object parse_utility_expr(); object call_method(const std::string& className, const std::string& method, std::vector& params); const scope &m_scope; token_type m_lookahead; std::string m_token_string; int64_t m_token_number_int; double m_token_number_float; std::string::const_iterator m_ptr, m_end; bool m_return_whitespace = false; bool m_expect_fragment_spec = false; }; // template // inline OutputIterator interpreter::operator()(Match &m, OutputIterator out, std::regex_constants::match_flag_type) // { // string s(m[1]); // process(s); // copy(s.begin(), s.end(), out); // return out; // } object interpreter::evaluate(const std::string &s) { object result; try { m_ptr = s.begin(); m_end = s.end(); get_next_token(); if (m_lookahead != token_type::eof) result = parse_expr(); match(token_type::eof); } catch (const std::exception& e) { using namespace std::literals; result = "Error parsing expression: "s + e.what(); } return result; } std::vector> interpreter::evaluate_attr_expr(const std::string& s) { std::vector> result; m_ptr = s.begin(); m_end = s.end(); get_next_token(); for (;;) { std::string var = m_token_string; match(token_type::object); match (token_type::assign); auto value = parse_expr(); result.emplace_back(var, value.as()); if (m_lookahead != token_type::comma) break; match(token_type::comma); } match(token_type::eof); return result; } bool interpreter::evaluate_assert(const std::string& s) { bool result = true; m_ptr = s.begin(); m_end = s.end(); get_next_token(); for (;;) { auto value = parse_expr(); if (not value) { result = false; break; } if (m_lookahead != token_type::comma) break; match(token_type::comma); } // match(token_type::eof); return result; } void interpreter::evaluate_with(scope& scope, const std::string& s) { m_ptr = s.begin(); m_end = s.end(); get_next_token(); while (m_lookahead == token_type::object) { auto name = m_token_string; match(token_type::object); match(token_type::assign); auto value = parse_expr(); scope.put(name, value); if (m_lookahead == token_type::comma) { match(token_type::comma); continue; } } match(token_type::eof); } object interpreter::evaluate_link(const std::string& s) { object result; try { m_ptr = s.begin(); m_end = s.end(); get_next_token(); switch (m_lookahead) { case token_type::object: case token_type::fragment_separator: result = parse_fragment_expr(); break; case token_type::link_template: match(token_type::link_template); result = parse_fragment_expr(); match(token_type::rbrace); break; default: m_expect_fragment_spec = true; result = parse_primary_expr(); break; } match(token_type::eof); } catch (const std::exception& e) { using namespace std::literals; result = "Error parsing expression: "s + e.what(); } return result; } bool interpreter::process(std::string &s) { bool result = false; try { m_ptr = s.begin(); m_end = s.end(); get_next_token(); object obj; if (m_lookahead != token_type::eof) obj = parse_expr(); match(token_type::eof); if (obj.is_null()) s.clear(); else s = obj.as(); result = true; } catch (const std::exception &e) { result = false; } return result; } void interpreter::match(token_type t) { if (t != m_lookahead) throw zeep::exception("syntax error"); get_next_token(); } unsigned char interpreter::next_byte() { char result = 0; if (m_ptr < m_end) { result = *m_ptr; ++m_ptr; } m_token_string += result; return static_cast(result); } // We assume all paths are in valid UTF-8 encoding interpreter::unicode interpreter::get_next_char() { unicode result = 0; unsigned char ch[5]; ch[0] = next_byte(); if ((ch[0] & 0x080) == 0) result = ch[0]; else if ((ch[0] & 0x0E0) == 0x0C0) { ch[1] = next_byte(); if ((ch[1] & 0x0c0) != 0x080) throw zeep::exception("Invalid utf-8"); result = ((ch[0] & 0x01F) << 6) | (ch[1] & 0x03F); } else if ((ch[0] & 0x0F0) == 0x0E0) { ch[1] = next_byte(); ch[2] = next_byte(); if ((ch[1] & 0x0c0) != 0x080 or (ch[2] & 0x0c0) != 0x080) throw zeep::exception("Invalid utf-8"); result = ((ch[0] & 0x00F) << 12) | ((ch[1] & 0x03F) << 6) | (ch[2] & 0x03F); } else if ((ch[0] & 0x0F8) == 0x0F0) { ch[1] = next_byte(); ch[2] = next_byte(); ch[3] = next_byte(); if ((ch[1] & 0x0c0) != 0x080 or (ch[2] & 0x0c0) != 0x080 or (ch[3] & 0x0c0) != 0x080) throw zeep::exception("Invalid utf-8"); result = ((ch[0] & 0x007) << 18) | ((ch[1] & 0x03F) << 12) | ((ch[2] & 0x03F) << 6) | (ch[3] & 0x03F); } if (result > 0x10ffff) throw zeep::exception("invalid utf-8 character (out of range)"); return result; } void interpreter::retract() { std::string::iterator c = m_token_string.end(); // skip one valid character back in the input buffer // since we've arrived here, we can safely assume input // is valid UTF-8 do --c; while ((*c & 0x0c0) == 0x080); if (m_ptr != m_end or *c != 0) m_ptr -= m_token_string.end() - c; m_token_string.erase(c, m_token_string.end()); } void interpreter::get_next_token() { enum class State { Start, Equals, ExclamationMark, LessThan, GreaterThan, Question, Number, NumberFraction, Name, Literal, Colon, Hash, TemplateStart } state = State::Start; token_type token = token_type::undef; double fraction = 1.0; m_token_string.clear(); while (token == token_type::undef) { unicode ch = get_next_char(); switch (state) { case State::Start: switch (ch) { case 0: token = token_type::eof; break; case '(': token = token_type::lparen; break; case ')': token = token_type::rparen; break; case '[': token = token_type::lbracket; break; case ']': token = token_type::rbracket; break; case '{': token = token_type::lbrace; break; case '}': token = token_type::rbrace; break; case '?': state = State::Question; break; case '/': token = token_type::div; break; case '+': token = token_type::plus; break; case '-': token = token_type::minus; break; case '.': token = token_type::dot; break; case ',': token = token_type::comma; break; case '|': token = token_type::bar; break; case '=': state = State::Equals; break; case '!': state = State::ExclamationMark; break; case '<': state = State::LessThan; break; case '>': state = State::GreaterThan; break; case ':': state = State::Colon; break; case '*': case '$': case '#': case '@': case '~': state = State::TemplateStart; break; case ' ': case '\n': case '\r': case '\t': if (m_return_whitespace) token = token_type::whitespace; else m_token_string.clear(); break; case '\'': state = State::Literal; break; default: if (ch >= '0' and ch <= '9') { m_token_number_int = ch - '0'; state = State::Number; } else if (is_name_start_char(ch)) state = State::Name; else token = token_type::error; // throw zeep::exception("invalid character (" + to_hex(ch) + ") in expression"); } break; case State::TemplateStart: if (ch == '{') { switch (m_token_string[0]) { case '$': token = token_type::variable_template; break; case '*': token = token_type::selection_template; break; case '#': token = token_type::message_template; break; case '@': token = token_type::link_template; break; case '~': token = token_type::fragment_template; break; default: assert(false); } } else { retract(); if (m_token_string[0] == '*') token = token_type::mult; else if (m_token_string[0] == '#') state = State::Hash; else token = token_type::error; // else // throw zeep::exception("invalid character (" + std::string{static_cast(isprint(ch) ? ch : ' ')} + '/' + to_hex(ch) + ") in expression"); } break; case State::Equals: if (ch != '=') { retract(); token = token_type::assign; } else token = token_type::eq; break; case State::Question: if (ch == ':') token = token_type::elvis; else { retract(); token = token_type::if_; } break; case State::ExclamationMark: if (ch != '=') { retract(); token = token_type::error; // throw zeep::exception("unexpected character ('!') in expression"); } token = token_type::ne; break; case State::LessThan: if (ch == '=') token = token_type::le; else { retract(); token = token_type::lt; } break; case State::GreaterThan: if (ch == '=') token = token_type::ge; else { retract(); token = token_type::gt; } break; case State::Number: if (ch >= '0' and ch <= '9') m_token_number_int = 10 * m_token_number_int + (ch - '0'); else if (ch == '.') { m_token_number_float = static_cast(m_token_number_int); fraction = 0.1; state = State::NumberFraction; } else { retract(); token = token_type::number_int; } break; case State::NumberFraction: if (ch >= '0' and ch <= '9') { m_token_number_float += fraction * (ch - '0'); fraction /= 10; } else { retract(); token = token_type::number_float; } break; case State::Name: if (ch == '.' or ch == ':' or not is_name_char(ch)) { retract(); if (m_token_string == "div") token = token_type::div; else if (m_token_string == "mod") token = token_type::mod; else if (m_token_string == "and") token = token_type::and_; else if (m_token_string == "or") token = token_type::or_; else if (m_token_string == "not") token = token_type::not_; else if (m_token_string == "lt") token = token_type::lt; else if (m_token_string == "le") token = token_type::le; else if (m_token_string == "ge") token = token_type::ge; else if (m_token_string == "gt") token = token_type::gt; else if (m_token_string == "ne") token = token_type::ne; else if (m_token_string == "eq") token = token_type::eq; else if (m_token_string == "true") token = token_type::true_; else if (m_token_string == "false") token = token_type::false_; else if (m_token_string == "in") token = token_type::in; else token = token_type::object; } break; case State::Literal: if (ch == 0) token = token_type::error; // throw zeep::exception("run-away string, missing quote character?"); else if (ch == '\'') { token = token_type::string; m_token_string = m_token_string.substr(1, m_token_string.length() - 2); } break; case State::Hash: if (ch == '.' or not is_name_char(ch)) { retract(); token = token_type::hash; } break; case State::Colon: if (ch == ':') token = token_type::fragment_separator; else { retract(); token = token_type::else_; } break; } } m_lookahead = token; } object interpreter::parse_expr() { object result; result = parse_or_expr(); if (m_lookahead == token_type::if_) { match(m_lookahead); object a = parse_expr(); if (m_lookahead == token_type::else_) { match(token_type::else_); object b = parse_expr(); if (result) result = a; else result = b; } else if (result) result = a; else result = {}; } else if (m_lookahead == token_type::elvis) { match(m_lookahead); object a = parse_expr(); if (not result) result = a; } return result; } object interpreter::parse_or_expr() { object result = parse_and_expr(); while (m_lookahead == token_type::or_) { match(m_lookahead); bool b1 = result.as(); bool b2 = parse_and_expr().as(); result = b1 or b2; } return result; } object interpreter::parse_and_expr() { object result = parse_equality_expr(); while (m_lookahead == token_type::and_) { match(m_lookahead); bool b1 = result.as(); bool b2 = parse_equality_expr().as(); result = b1 and b2; } return result; } object interpreter::parse_equality_expr() { object result = parse_relational_expr(); if (m_lookahead == token_type::eq) { match(m_lookahead); result = (result == parse_relational_expr()); } else if (m_lookahead == token_type::ne) { match(m_lookahead); result = not(result == parse_relational_expr()); } return result; } object interpreter::parse_relational_expr() { object result = parse_additive_expr(); switch (m_lookahead) { case token_type::lt: match(m_lookahead); result = (result < parse_additive_expr()); break; case token_type::le: match(m_lookahead); result = (result <= parse_additive_expr()); break; case token_type::ge: match(m_lookahead); result = (parse_additive_expr() <= result); break; case token_type::gt: match(m_lookahead); result = (parse_additive_expr() < result); break; case token_type::not_: { match(token_type::not_); match(token_type::in); object list = parse_additive_expr(); result = not list.contains(result); break; } case token_type::in: { match(m_lookahead); object list = parse_additive_expr(); result = list.contains(result); break; } default: break; } return result; } object interpreter::parse_additive_expr() { object result = parse_multiplicative_expr(); while (m_lookahead == token_type::plus or m_lookahead == token_type::minus) { if (m_lookahead == token_type::plus) { match(m_lookahead); result = (result + parse_multiplicative_expr()); } else { match(m_lookahead); result = (result - parse_multiplicative_expr()); } } return result; } object interpreter::parse_multiplicative_expr() { object result = parse_unary_expr(); while (m_lookahead == token_type::div or m_lookahead == token_type::mod or m_lookahead == token_type::mult) { if (m_lookahead == token_type::mult) { match(m_lookahead); result = (result * parse_unary_expr()); } else if (m_lookahead == token_type::div) { match(m_lookahead); result = (result / parse_unary_expr()); } else { match(m_lookahead); result = (result % parse_unary_expr()); } } return result; } object interpreter::parse_unary_expr() { object result; if (m_lookahead == token_type::minus) { match(m_lookahead); result = -(parse_primary_expr()); } else if (m_lookahead == token_type::not_) { match(m_lookahead); result = not parse_primary_expr().as(); } else result = parse_primary_expr(); return result; } object interpreter::parse_template_expr() { object result; bool save_return_white_space = m_return_whitespace; m_return_whitespace = false; switch (m_lookahead) { case token_type::variable_template: match(token_type::variable_template); result = parse_expr(); m_return_whitespace = save_return_white_space; match(token_type::rbrace); break; case token_type::link_template: match(token_type::link_template); result = parse_link_template_expr(); m_return_whitespace = save_return_white_space; match(token_type::rbrace); break; case token_type::selection_template: match(token_type::selection_template); if (m_lookahead == token_type::object) { result = m_scope.lookup(m_token_string, true); match(token_type::object); for (;;) { if (m_lookahead == token_type::dot) { match(m_lookahead); if (result.type() == object::value_type::array and (m_token_string == "count" or m_token_string == "length")) result = result.size(); else if (m_token_string == "empty") result = result.empty(); else if (result.type() == object::value_type::object) result = const_cast(result)[m_token_string]; else result = object::value_type::null; match(token_type::object); continue; } if (m_lookahead == token_type::lbracket) { match(m_lookahead); object index = parse_expr(); match(token_type::rbracket); if (index.empty() or (result.type() != object::value_type::array and result.type() != object::value_type::object)) result = object(); else if (result.type() == object::value_type::array) result = result[index.as()]; else if (result.type() == object::value_type::object) result = result[index.as()]; else result = object::value_type::null; continue; } break; } } else result = parse_expr(); m_return_whitespace = save_return_white_space; match(token_type::rbrace); break; default: throw zeep::exception("syntax error, unexpected token: " + m_token_string); } return result; } object interpreter::parse_primary_expr() { object result; switch (m_lookahead) { case token_type::true_: result = true; match(m_lookahead); break; case token_type::false_: result = false; match(m_lookahead); break; case token_type::number_int: result = m_token_number_int; match(m_lookahead); break; case token_type::number_float: result = m_token_number_float; match(m_lookahead); break; case token_type::string: result = m_token_string; match(m_lookahead); break; case token_type::lparen: match(m_lookahead); result = parse_expr(); match(token_type::rparen); break; case token_type::hash: result = parse_utility_expr(); break; // a list case token_type::lbrace: match(m_lookahead); for (;;) { result.push_back(parse_expr()); if (m_lookahead == token_type::comma) { match(m_lookahead); continue; } break; } match(token_type::rbrace); break; case token_type::bar: match(token_type::bar); result = parse_literal_substitution(); match(token_type::bar); break; case token_type::object: result = m_scope.lookup(m_token_string); match(token_type::object); for (;;) { if (m_lookahead == token_type::dot) { match(m_lookahead); if (not result.is_null()) { if (result.type() == object::value_type::array and (m_token_string == "count" or m_token_string == "length")) result = object((uint32_t)result.size()); else if (m_token_string == "empty") result = result.empty(); else if (result.type() == object::value_type::object) result = const_cast(result)[m_token_string]; else result = object::value_type::null; } match(token_type::object); continue; } if (m_lookahead == token_type::lbracket) { match(m_lookahead); object index = parse_expr(); match(token_type::rbracket); if (not result.is_null()) { if (result.type() == object::value_type::array and not (result.empty() or index.empty())) result = result[index.as()]; else if (result.type() == object::value_type::object and not (result.empty() or index.empty())) result = result[index.as()]; else result = object::value_type::null; } continue; } break; } break; case token_type::variable_template: case token_type::link_template: case token_type::selection_template: result = parse_template_expr(); break; case token_type::fragment_template: match(token_type::fragment_template); result = parse_fragment_expr(); match(token_type::rbrace); break; default: throw zeep::exception("syntax error, expected number, string or object"); } return result; } object interpreter::parse_literal_substitution() { std::string result; m_return_whitespace = true; while (m_lookahead != token_type::bar and m_lookahead != token_type::eof) { switch (m_lookahead) { case token_type::variable_template: case token_type::selection_template: case token_type::message_template: result += parse_template_expr().as(); break; default: result += m_token_string; match(m_lookahead); break; } } m_return_whitespace = false; return result; } // -------------------------------------------------------------------- object interpreter::parse_link_template_expr() { std::string path; int braces = 0; // in case of a relative URL starting with a forward slash, we prefix the URL with the context_name of the server if (m_lookahead == token_type::div) { path = '/'; match(token_type::div); auto context = m_scope.get_context_name(); if (not context.empty()) path += context + '/'; } while (m_lookahead != token_type::lparen and m_lookahead != token_type::eof) { if (m_lookahead == token_type::rbrace) { if (braces-- == 0) break; path += m_token_string; match(token_type::rbrace); continue; } switch (m_lookahead) { case token_type::variable_template: case token_type::selection_template: path += parse_template_expr().as(); break; case token_type::lbrace: path += m_token_string; match(token_type::lbrace); ++braces; break; default: path += m_token_string; match(m_lookahead); break; } } if (m_lookahead == token_type::lparen) { match(token_type::lparen); std::map parameters; for (;;) { std::string name = m_token_string; match(token_type::object); if (m_lookahead == token_type::assign) { match(token_type::assign); std::string value = parse_primary_expr().as(); // put into path directly, if found std::string::size_type p = path.find('{' + name + '}'); if (p == std::string::npos) parameters[name] = value; else { do { path = path.substr(0, p) + value + path.substr(p + name.length() + 2); p += value.length(); } while ((p = path.find('{' + name + '}', p)) != std::string::npos); } } else parameters[name] = ""; if (m_lookahead == token_type::comma) { match(token_type::comma); continue; } break; } match(token_type::rparen); if (not parameters.empty()) { path += '?'; auto n = parameters.size(); for (auto p: parameters) { path += encode_url(p.first); if (not p.second.empty()) path += '=' + encode_url(p.second); if (--n > 0) path += '&'; } } } return path; } // -------------------------------------------------------------------- object interpreter::parse_fragment_expr() { object result{ {"fragment-spec", true } }; if (m_lookahead == token_type::fragment_separator) result["template"] = "this"; else if (m_lookahead == token_type::object) { result["template"] = m_token_string; match(m_lookahead); } else if (m_lookahead == token_type::rbrace) { result["template"] = "this"; result["selector"] = { { "xpath", "" } }; } else result["template"] = parse_expr(); if (m_lookahead == token_type::fragment_separator) { match(token_type::fragment_separator); result["selector"] = parse_selector(); } return result; } // -------------------------------------------------------------------- object interpreter::parse_selector() { object result; std::string xpath; while (m_lookahead == token_type::div or m_lookahead == token_type::object or m_lookahead == token_type::lbracket or m_lookahead == token_type::dot or m_lookahead == token_type::hash) { bool divided = false; if (m_lookahead == token_type::div) { divided = true; match(m_lookahead); if (m_lookahead == token_type::div) { match(m_lookahead); xpath += "//"; } else xpath += "/"; } else xpath += "//"; if (m_lookahead == token_type::object) { std::string name = m_token_string; match(m_lookahead); if (m_lookahead == token_type::lparen and (name == "text" or name == "comment" or name == "processing-instruction" or name == "node")) { match(m_lookahead); match(token_type::rparen); xpath += name + "()"; } else { if (divided) xpath += name; else xpath += "*[name()='"+name+"' or " "attribute::*[namespace-uri() = $ns and " "(local-name() = 'ref' or local-name() = 'fragment') and " "starts-with(string(), '" + name + "')]" "]"; if (m_lookahead == token_type::lparen) { match(token_type::lparen); while (m_lookahead != token_type::rparen and m_lookahead != token_type::eof) { result["params"].push_back(parse_expr()); if (m_lookahead == token_type::comma) { match(m_lookahead); continue; } break; } match(token_type::rparen); // break; // what else? } } } else xpath += "*"; while (m_lookahead == token_type::lbracket or m_lookahead == token_type::dot or m_lookahead == token_type::hash) { switch (m_lookahead) { case token_type::lbracket: do { xpath += m_token_string; match(m_lookahead); } while (m_lookahead != token_type::rbracket and m_lookahead != token_type::eof); xpath += m_token_string; match(token_type::rbracket); break; case token_type::dot: match(m_lookahead); xpath += "[@class='" + m_token_string + "']"; match(token_type::object); break; case token_type::hash: xpath += "[@id='" + m_token_string.substr(1) + "']"; result["by-id"] = true; match(m_lookahead); break; default: break; } } } result["xpath"] = xpath; return result; } // -------------------------------------------------------------------- object interpreter::parse_utility_expr() { auto className = m_token_string; match(token_type::hash); match(token_type::dot); auto method = m_token_string; match(token_type::object); std::vector params; if (m_lookahead == token_type::lparen) { match(token_type::lparen); while (m_lookahead != token_type::rparen) { params.push_back(parse_expr()); if (m_lookahead == token_type::comma) { match(token_type::comma); continue; } break; } match(token_type::rparen); } return call_method(className, method, params); } object interpreter::call_method(const std::string& className, const std::string& method, std::vector& params) { object result; if (className[0] == '#') result = expression_utility_object_base::evaluate(m_scope, className.substr(1), method, params); // if (result.is_null()) // throw runtime_error("Undefined class for utility object call: " + className); return result; } // -------------------------------------------------------------------- // some expression utility objects expression_utility_object_base::instance* expression_utility_object_base::s_head; class date_expr_util_object : public expression_utility_object { public: static constexpr const char* name() { return "dates"; } virtual object evaluate(const scope& scope, const std::string& method, const std::vector& params) const { object result; if (method == "format") { if (params.size() == 2 and params[0].is_string()) { tm t = {}; std::istringstream ss(params[0].as()); ss >> std::get_time(&t, "%Y-%m-%d %H:%M:%S"); if (ss.fail()) // hmmmm, lets try the ISO format then { try { auto pt = zeep::value_serializer::from_string(params[0].as()); t = boost::posix_time::to_tm(pt); } catch(const std::exception& e) { throw std::runtime_error("Invalid date"); } } std::wostringstream os; os.imbue(scope.get_request().get_locale()); std::wstring_convert> myconv; std::wstring time = myconv.from_bytes(params[1].as()); os << std::put_time(&t, time.c_str()); result = os.str(); } } return result; } } s_date_instance; class number_expr_util_object : public expression_utility_object { public: static constexpr const char* name() { return "numbers"; } virtual object evaluate(const scope& scope, const std::string& method, const std::vector& params) const { object result; if (method == "formatDecimal") { if (params.size() >= 1 and params[0].is_number()) { int intDigits = 1; if (params.size() >= 2 and params[1].is_number_int()) intDigits = params[1].as(); int decimals = 0; if (params.size() >= 3 and params[2].is_number_int()) decimals = params[2].as(); double d; if (params[0].is_number_int()) d = static_cast(params[0].as()); else d = params[0].as(); return FormatDecimal(d, intDigits, decimals, scope.get_request().get_locale()); } } else if (method == "formatDiskSize") { if (params.size() >= 1 and params[0].is_number()) { double nr = params[0].as(); const char kBase[] = {'B', 'K', 'M', 'G', 'T', 'P', 'E'}; // whatever int base = 0; while (nr > 1024) { nr /= 1024; ++base; } int decimals = 0; if (params.size() >= 2 and params[1].is_number_int()) decimals = params[1].as(); return FormatDecimal(nr, 1, decimals, scope.get_request().get_locale()) + ' ' + kBase[base]; } } return {}; } } s_number_instance; class request_expr_util_object : public expression_utility_object { public: static constexpr const char* name() { return "request"; } virtual object evaluate(const scope& scope, const std::string& method, const std::vector& params) const { object result; if (method == "getRequestURI") result = scope.get_request().get_uri(); else if (method == "getRequestURL") result = scope.get_request().get_uri(); else if ((method == "getParameter") and params.size() == 1) result = scope.get_request().get_parameter(params[0].as().c_str()); return result; } } s_request_instance; class security_expr_util_object : public expression_utility_object { public: static constexpr const char* name() { return "security"; } virtual object evaluate(const scope& scope, const std::string& method, const std::vector& params) const { object result; if (method == "hasRole") { if (params.size() == 1 and params[0].is_string()) { auto role = params[0].as(); auto roles = scope.get_credentials()["role"]; result = roles.is_array() and roles.contains(role); } } else if (method == "authorized") { result = scope.get_credentials()["username"].is_string(); } else if (method == "username") { result = scope.get_credentials()["username"]; } return result; } } s_security_instance; // -------------------------------------------------------------------- // interpreter calls bool process_el(const scope &scope, std::string &text) { interpreter interpreter(scope); return interpreter.process(text); } std::string process_el_2(const scope& scope, const std::string& text) { std::string s = text; interpreter interpreter(scope); return interpreter.process(s) ? s : text; } object evaluate_el(const scope &scope, const std::string &text) { interpreter interpreter(scope); return interpreter.evaluate(text); } std::vector> evaluate_el_attr(const scope& scope, const std::string& text) { interpreter interpreter(scope); return interpreter.evaluate_attr_expr(text); } bool evaluate_el_assert(const scope& scope, const std::string& text) { interpreter interpreter(scope); return interpreter.evaluate_assert(text); } void evaluate_el_with(scope& scope, const std::string& text) { interpreter interpreter(scope); interpreter.evaluate_with(scope, text); } object evaluate_el_link(const scope& scope, const std::string& text) { interpreter interpreter(scope); return interpreter.evaluate_link(text); } // -------------------------------------------------------------------- // scope std::ostream &operator<<(std::ostream &lhs, const scope &rhs) { const scope *s = &rhs; while (s != nullptr) { for (scope::data_map::value_type e : s->m_data) lhs << e.first << " = " << e.second << std::endl; s = s->m_next; } return lhs; } scope::scope() : m_next(nullptr), m_depth(0), m_req(nullptr), m_server(nullptr) { } scope::scope(const scope &next) : m_next(const_cast(&next)) , m_depth(next.m_depth + 1) , m_req(next.m_req) , m_server(next.m_server) { if (m_depth > 1000) throw std::runtime_error("scope stack overflow"); } scope::scope(const request &req) : m_next(nullptr), m_depth(0), m_req(&req), m_server(nullptr) { } scope::scope(const basic_server& server, const request &req) : m_next(nullptr), m_depth(0), m_req(&req), m_server(&server) { } object &scope::operator[](const std::string &name) { return lookup(name); } const object& scope::lookup(const std::string &name, bool includeSelected) const { const object* result = nullptr; auto i = m_data.find(name); if (i != m_data.end()) result = &i->second; else if (includeSelected and m_selected.contains(name)) result = &*m_selected.find(name); else if (m_next != nullptr) result = &m_next->lookup(name, includeSelected); if (result == nullptr) { static object s_null; result = &s_null; } return *result; } const object& scope::operator[](const std::string &name) const { return lookup(name); } object& scope::lookup(const std::string &name) { object* result = nullptr; auto i = m_data.find(name); if (i != m_data.end()) result = &i->second; else if (m_next != nullptr) result = &m_next->lookup(name); if (result == nullptr) { m_data[name] = object(); result = &m_data[name]; } return *result; } const request& scope::get_request() const { // if (m_next) // return m_next->get_request(); if (m_req == nullptr) throw zeep::exception("Invalid scope, no request"); return *m_req; } std::string scope::get_context_name() const { if (not m_server) throw zeep::exception("Invalid scope, no server"); return m_server->get_context_name(); } json::element scope::get_credentials() const { if (m_req == nullptr or m_server == nullptr) throw zeep::exception("Invalid scope, no request, no server"); return m_req->get_credentials(); } void scope::select_object(const object& o) { m_selected = o; } auto scope::get_nodeset(const std::string& name) const -> node_set_type { if (m_nodesets.count(name)) { node_set_type result; // return a clone of the stored nodes. for (auto& n: m_nodesets.at(name)) result.emplace_back(n->clone()); return result; } if (m_next == nullptr) return {}; return m_next->get_nodeset(name); } void scope::set_nodeset(const std::string& name, node_set_type&& nodes) { m_nodesets.emplace(std::make_pair(name, std::move(nodes))); } std::string scope::get_csrf_token() const { return get_request().get_cookie("csrf-token"); } } // namespace zeep::http libzeep-5.1.8/lib-http/src/error-handler.cpp0000664000175000017500000001005514324170113020600 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include namespace zeep::http { error_handler::error_handler(const std::string& error_template) : m_error_template(error_template) { } error_handler::~error_handler() { } bool error_handler::create_error_reply(const request& req, std::exception_ptr eptr, reply& reply) { bool result = false; try { if (eptr) std::rethrow_exception(eptr); } catch (const status_type& s) { result = create_error_reply(req, s, get_status_description(s), reply); } catch (const unauthorized_exception&) { result = create_unauth_reply(req, reply); } catch (const std::exception& ex) { result = create_error_reply(req, internal_server_error, ex.what(), reply); } catch (...) { result = create_error_reply(req, internal_server_error, "unhandled exception", reply); } return result; } bool error_handler::create_unauth_reply(const request& req, reply& rep) { return create_error_reply(req, unauthorized, "You don't have access to this page", rep); } bool error_handler::create_error_reply(const request& req, status_type status, reply& rep) { return create_error_reply(req, status, get_status_description(status), rep); } bool error_handler::create_error_reply(const request& req, status_type status, const std::string& message, reply& rep) { bool handled = false; if (not m_error_template.empty() and m_server->has_template_processor()) { auto& template_processor = m_server->get_template_processor(); scope scope(*get_server(), req); object error { { "nr", static_cast(status) }, { "head", get_status_text(status) }, { "description", get_status_description(status) }, { "message", message }, { "request", { { "method", req.get_method() }, { "uri", req.get_uri() } } } }; auto credentials = req.get_credentials(); if (credentials.is_object()) error["request"]["username"] = credentials["user"]; scope.put("error", error); try { template_processor.create_reply_from_template(m_error_template, scope, rep); handled = true; } catch(const std::exception&) { using namespace xml::literals; auto doc = R"( Error

Additional information:

)"_xml; template_processor.process_tags(doc.child(), scope); rep.set_content(doc); handled = true; } } if (not handled) { rep = reply::stock_reply(status, message); handled = true; } else rep.set_status(status); return true; } }libzeep-5.1.8/lib-http/src/format.cpp0000664000175000017500000001156114324170113017327 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2019 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include #include "format.hpp" namespace { std::string decimal_point(std::locale loc) { std::string result; if (std::has_facet>(loc)) { std::wstring s{ std::use_facet>(loc).decimal_point() }; std::wstring_convert> conv; result = conv.to_bytes(s); } return result; } std::string thousands_sep(std::locale loc) { std::string result; if (std::has_facet>(loc)) { std::wstring s{ std::use_facet>(loc).thousands_sep() }; std::wstring_convert> conv; result = conv.to_bytes(s); } return result; } std::string grouping(std::locale loc) { std::string result; if (std::has_facet>(loc)) result = std::use_facet>(loc).grouping(); return result; } struct thousand_grouping { public: thousand_grouping(std::locale loc) : m_sep(thousands_sep(loc)), m_grouping(grouping(loc)) { } bool operator()(int exp10) const { std::deque gs(m_grouping.begin(), m_grouping.end()); bool result = false; if (not gs.empty()) { int g = gs.front(); for (;;) { if (exp10 < g) break; if (exp10 == g) { result = true; break; } if (gs.size() > 1) gs.pop_front(); g += gs.front(); } } return result; } std::string separator() const { return m_sep; } private: std::string m_sep, m_grouping; }; template class Decimal { public: Decimal(T x); std::string formatFixed(int minIntDigits, int decimals, std::locale loc); friend std::ostream& operator<<(std::ostream& os, Decimal d) { os << "crunched: " << d.m_crunched << " exp10: " << d.m_exp10 << " dec: " << d.m_dec; return os; } private: std::tuple roundDecimal(int n); T m_crunched; int m_exp10; std::string m_dec; }; template Decimal::Decimal(T x) { // CrunchDouble int exp = (x == 0) ? 0 : static_cast(1 + std::logb(x)); int n = m_exp10 = (exp * 301029) / 1000000; auto p = 10.0; if (n < 0) { for (n = -n; n > 0; n >>= 1) { if (n & 1) x *= p; p *= p; } } else { T f = 1.0; for (; n > 0; n >>= 1) { if (n & 1) f *= p; p *= p; } x /= f; } if (x != 0) { while (std::fabs(x) >= 1.0) { x *= 0.1; ++m_exp10; } while (std::fabs(x) < 0.1) { x *= 10.0; --m_exp10; } } m_crunched = x; // Num2Dec int digits = std::numeric_limits::digits10 + 1; int ix = 0; if (x < 0) x = -x; const double kDigitValues[8] = { 1.0E+01, 1.0E+02, 1.0E+03, 1.0E+04, 1.0E+05, 1.0E+06, 1.0E+07, 1.0E+08 }; while (digits > 0) { n = digits; if (n > 8) n = 8; digits -= n; m_dec.insert(m_dec.end(), n, ' '); x *= kDigitValues[n - 1]; auto lx = lrint(trunc(x)); x -= lx; for (int i = n - 1; i >= 0; --i) { m_dec[ix + i] = lx % 10 + '0'; lx /= 10; } ix += 8; } } template std::string Decimal::formatFixed(int intDigits, int decimals, std::locale loc) { int digits = decimals + intDigits; if (m_exp10 > intDigits) digits += m_exp10 - intDigits; int exp10; std::string dec; std::tie(dec, exp10) = roundDecimal(decimals + m_exp10); std::string s; thousand_grouping tg(loc); auto dp = dec.begin(), de = dec.end(); int exp = intDigits; if (exp < exp10) exp = exp10; for (int i = 0; i < digits; ++i) { if (i > 0) { if (tg(exp)) s += tg.separator(); else if (exp == 0) s += decimal_point(loc); } if (exp <= exp10 and dp != de) s += *dp++; else s += '0'; --exp; } return s; } template std::tuple Decimal::roundDecimal(int newLength) { std::string dec = m_dec; int exp10 = m_exp10; int l = static_cast(dec.length()); if (newLength < 0) dec = "0"; else if (newLength < l) { l = newLength + 1; int carry = dec[l - 1] >= '5'; dec.resize(l - 1); while (newLength > 0) { --l; int c = dec[l - 1] -'0' + carry; carry = c > 9; if (carry == 1) { --newLength; dec.resize(newLength); } else { dec[l - 1] = static_cast(c + '0'); dec.resize(l); break; } } if (carry == 1) { ++exp10; dec += '1'; } else if (newLength == 0) dec = "0"; } return std::make_tuple(dec, exp10); } } namespace zeep::http { std::string FormatDecimal(double d, int integerDigits, int decimalDigits, std::locale loc) { Decimal dec(d); return dec.formatFixed(integerDigits, decimalDigits, loc); } } libzeep-5.1.8/lib-http/src/format.hpp0000664000175000017500000000124114324170113017326 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2019 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// This file contains definitions of various utility routines #include #include #include namespace zeep::http { /// \brief A locale dependent formatting of a decimal number /// /// Returns a formatted number with the specified number of digits /// using separators taken from std::locale \a loc std::string FormatDecimal(double d, int integerDigits, int decimalDigits, std::locale loc); } libzeep-5.1.8/lib-http/src/glob.cpp0000664000175000017500000000545014324170113016762 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2019 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include "glob.hpp" // -------------------------------------------------------------------- namespace zeep::http { namespace { bool Match(const char* pattern, const char* name) { for (;;) { char op = *pattern; switch (op) { case 0: return *name == 0; case '*': { // separate shortcut if (pattern[1] == '*' and pattern[2] == '/' and Match(pattern + 3, name)) return true; // ends with ** if (pattern[1] == '*' and pattern[2] == 0) return true; // ends with * if (pattern[1] == 0) { while (*name) { if (*name == '/' or *name == '\\') return false; ++name; } return true; } // contains ** if (pattern[1] == '*') { while (*name) { if (Match(pattern + 2, name)) return true; ++name; } return false; } // contains just * while (*name) { if (Match(pattern + 1, name)) return true; if (*name == '/') return false; ++name; } return false; } case '?': if (*name) return Match(pattern + 1, name + 1); else return false; default: if ((*name == '/' and op == '\\') or (*name == '\\' and op == '/') or tolower(*name) == tolower(op)) { ++name; ++pattern; } else return false; break; } } } void expand_group(const std::string& pattern, std::vector& expanded) { static std::regex rx(R"(\{([^{},]*,[^{}]*)\})"); std::smatch m; if (std::regex_search(pattern, m, rx)) { std::vector options; std::string group = m[1].str(); split(options, group, ",", false); for (std::string& option : options) expand_group(m.prefix().str() + option + m.suffix().str(), expanded); } else expanded.push_back(pattern); } } // -------------------------------------------------------------------- bool glob_match(const std::filesystem::path& path, std::string glob_pattern) { bool result = path.empty() and glob_pattern.empty(); if (not glob_pattern.empty() and glob_pattern.back() == '/') glob_pattern += "**"; std::vector patterns; split(patterns, glob_pattern, ";"); std::vector expandedpatterns; std::for_each(patterns.begin(), patterns.end(), [&expandedpatterns](std::string& pattern) { expand_group(pattern, expandedpatterns); }); for (std::string& pat : expandedpatterns) { if ((path.empty() and pat.empty()) or Match(pat.c_str(), path.generic_string().c_str())) { result = true; break; } } return result; } } libzeep-5.1.8/lib-http/src/glob.hpp0000664000175000017500000000164714324170113016773 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2019 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once /// \file /// This file contains definitions of various utility routines #include #include namespace zeep::http { /// \brief compare an fs::path with a glob pattern /// /// Returns true if the path \a p matches \a pattern /// Matching is done using shell like glob patterns: /// /// construct | Matches /// --------------|-------- /// ? | single character /// * | zero or multiple characters /// {a,b} | matching either pattern a or b /// /// \param p The path to match /// \param pattern The pattern to match against /// \return True in case of a match bool glob_match(const std::filesystem::path& p, std::string pattern); }libzeep-5.1.8/lib-http/src/html-controller.cpp0000664000175000017500000000374314324170113021167 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include "glob.hpp" namespace fs = std::filesystem; namespace pt = boost::posix_time; namespace zeep::http { basic_template_processor& html_controller::get_template_processor() { return m_server->get_template_processor(); } const basic_template_processor& html_controller::get_template_processor() const { return m_server->get_template_processor(); } // -------------------------------------------------------------------- void html_controller::handle_file(const request& request, const scope& scope, reply& reply) { get_template_processor().handle_file(request, scope, reply); } // -------------------------------------------------------------------- // bool html_controller::handle_request(request& req, reply& rep) { std::string uri = get_prefixless_path(req); // set up the scope by putting some globals in it scope scope(get_server(), req); scope.put("baseuri", uri); init_scope(scope); auto handler = find_if(m_dispatch_table.begin(), m_dispatch_table.end(), [uri, method=req.get_method()](const mount_point& m) { // return m.path == uri and return glob_match(uri, m.path) and ( method == "HEAD" or method == "OPTIONS" or m.method == method or m.method == "UNDEFINED"); }); bool result = false; if (handler != m_dispatch_table.end()) { if (req.get_method() == "OPTIONS") { rep = reply::stock_reply(ok); rep.set_header("Allow", "GET,HEAD,POST,OPTIONS"); rep.set_content("", "text/plain"); } else handler->handler(req, scope, rep); result = true; } if (not result) rep = reply::stock_reply(not_found); return result; } } libzeep-5.1.8/lib-http/src/login-controller.cpp0000664000175000017500000001410314324170113021323 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include #include #include namespace fs = std::filesystem; namespace zeep::http { class login_error_handler : public error_handler { public: login_error_handler(login_controller* c) : m_login_controller(c) {} virtual bool create_unauth_reply(const request& req, reply& reply) { m_login_controller->create_unauth_reply(req, reply); return true; } virtual bool create_error_reply(const request& req, status_type status, const std::string& message, reply& rep) { return false; } private: login_controller* m_login_controller; }; login_controller::login_controller(const std::string& prefix_path) : http::controller(prefix_path) { } void login_controller::set_server(basic_server* server) { controller::set_server(server); assert(get_server().has_security_context()); if (not get_server().has_security_context()) throw std::runtime_error("The HTTP server has no security context"); auto& sc = get_server().get_security_context(); sc.add_rule("/login", {}); server->add_error_handler(new login_error_handler(this)); } xml::document login_controller::load_login_form(const request& req) const { if (m_server->has_template_processor()) { try { auto& tp = m_server->get_template_processor(); xml::document doc; doc.set_preserve_cdata(true); tp.load_template("login", doc); tp.process_tags(doc.child(), { get_server(), req }); return doc; } catch (const std::exception& ex) { std::cerr << ex.what() << std::endl; } } using namespace xml::literals; return R"( Please sign in
)"_xml; } void login_controller::create_unauth_reply(const request& req, reply& reply) { auto doc = load_login_form(req); for (auto csrf: doc.find("//input[@name='_csrf']")) csrf->set_attribute("value", req.get_cookie("csrf-token")); for (auto uri: doc.find("//input[@name='uri']")) uri->set_attribute("value", req.get_uri()); reply.set_content(doc); reply.set_status(status_type::unauthorized); } bool login_controller::handle_request(request& req, reply& rep) { bool result = false; std::string uri = get_prefixless_path(req); if (uri == "login") { result = true; if (req.get_method() == "GET") { auto doc = load_login_form(req); for (auto csrf: doc.find("//input[@name='_csrf']")) csrf->set_attribute("value", req.get_cookie("csrf-token")); rep.set_content(doc); } else if (req.get_method() == "POST") { auto csrf = req.get_parameter("_csrf"); if (csrf != req.get_cookie("csrf-token")) throw status_type::forbidden; std::string redirect_to{"/"}; auto context = get_server().get_context_name(); if (not context.empty()) redirect_to += context + '/'; uri = req.get_parameter("uri"); if (not uri.empty() and not std::regex_match(uri, std::regex(R"(.*login$)")) and is_valid_uri(uri)) redirect_to += uri; rep = reply::redirect(fs::path(redirect_to).lexically_normal().generic_string()); auto username = req.get_parameter("username"); auto password = req.get_parameter("password"); try { get_server().get_security_context().verify_username_password(username, password, rep); } catch (const invalid_password_exception& e) { auto doc = load_login_form(req); for (auto csrf_attr: doc.find("//input[@name='_csrf']")) csrf_attr->set_attribute("value", req.get_cookie("csrf-token")); auto user = doc.find_first("//input[@name='username']"); user->set_attribute("value", username); auto pw = doc.find_first("//input[@name='password']"); pw->set_attribute("class", pw->get_attribute("class") + " is-invalid"); for (auto i_uri: doc.find("//input[@name='uri']")) i_uri->set_attribute("value", uri); rep.set_content(doc); std::cerr << e.what() << '\n'; } } else result = false; } else if (uri == "logout") { std::string redirect_to{"/"}; auto context = get_server().get_context_name(); if (not context.empty()) redirect_to += context + '/'; uri = req.get_parameter("uri"); if (not uri.empty() and not std::regex_match(uri, std::regex(R"(.*logout$)")) and is_valid_uri(uri)) redirect_to += uri; rep = reply::redirect(fs::path(redirect_to).lexically_normal().generic_string()); rep.set_delete_cookie("access_token"); result = true; } return result; } } libzeep-5.1.8/lib-http/src/message-parser.cpp0000664000175000017500000002430214324170113020752 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include namespace zeep::http { namespace detail { bool is_tspecial(int c) { switch (c) { case '(': case ')': case '<': case '>': case '@': case ',': case ';': case ':': case '\\': case '"': case '/': case '[': case ']': case '?': case '=': case '{': case '}': case ' ': case '\t': return true; default: return false; } } } // detail parser::parser() { reset(); } void parser::reset() { m_parser = NULL; m_state = 0; m_chunk_size = 0; m_data.clear(); m_uri.clear(); m_method.clear(); m_parsing_content = false; m_collect_payload = true; m_http_version_major = 1; m_http_version_minor = 0; } boost::tribool parser::parse_header_lines(char ch) { boost::tribool result = boost::indeterminate; // parse the header lines, consisting of // NAME: VALUE // optionally followed by more VALUE prefixed by white space on the next lines switch (m_state) { case 0: // If the header starts with \r, it is the start of an empty line // which indicates the end of the header section if (ch == '\r') m_state = 20; else if ((ch == ' ' or ch == '\t') and not m_headers.empty()) m_state = 10; else if (iscntrl(ch) or detail::is_tspecial(ch)) result = false; else { m_headers.push_back(header()); m_headers.back().name += ch; m_state = 1; } break; case 1: if (ch == ':') ++m_state; else if (iscntrl(ch) or detail::is_tspecial(ch)) result = false; else m_headers.back().name += ch; break; case 2: if (ch == ' ') ++m_state; else result = false; break; case 3: if (ch == '\r') m_state += 2; else if (ch != ' ') { m_headers.back().value += ch; ++m_state; } break; case 4: if (ch == '\r') ++m_state; else m_headers.back().value += ch; break; case 5: if (ch == '\n') m_state = 0; else result = false; break; case 10: if (ch == '\r') m_state = 4; else if (iscntrl(ch)) result = false; else if (not (ch == ' ' or ch == '\t')) { m_headers.back().value += ch; m_state = 3; } break; case 20: if (ch == '\n') { result = true; for (std::vector
::iterator h = m_headers.begin(); h != m_headers.end(); ++h) { if (iequals(h->name, "Transfer-Encoding") and iequals(h->value, "chunked")) { m_parser = &parser::parse_chunk; m_state = 0; m_parsing_content = true; break; } if (iequals(h->name, "Content-Length")) { std::stringstream s(h->value); s >> m_chunk_size; if (m_chunk_size > 0) { m_parser = &parser::parse_content; m_parsing_content = true; m_payload.reserve(m_chunk_size); } else m_parsing_content = false; } else if (iequals(h->name, "Connection") and iequals(h->value, "Close") and (m_method == "POST" or m_method == "PUT")) { m_parser = &parser::parse_content; m_parsing_content = true; } } } else result = false; break; } return result; } boost::tribool parser::parse_chunk(char ch) { boost::tribool result = boost::indeterminate; switch (m_state) { // Transfer-Encoding: Chunked // lines starting with hex encoded length, optionally followed by text // then a newline (\r\n) and the actual length bytes. // This repeats until length is zero // new chunk, starts with hex encoded length case 0: if (isxdigit(ch)) { m_data = ch; ++m_state; } else result = false; break; case 1: if (isxdigit(ch)) m_data += ch; else if (ch == ';') ++m_state; else if (ch == '\r') m_state = 3; else result = false; break; case 2: if (ch == '\r') ++m_state; else if (detail::is_tspecial(ch) or iscntrl(ch)) result = false; break; case 3: if (ch == '\n') { std::stringstream s(m_data); s >> std::hex >> m_chunk_size; if (m_chunk_size > 0) { m_payload.reserve(m_payload.size() + m_chunk_size); ++m_state; } else m_state = 10; } else result = false; break; case 4: if (m_collect_payload) m_payload += ch; if (--m_chunk_size == 0) m_state = 5; // parse trailing \r\n break; case 5: if (ch == '\r') ++m_state; else result = false; break; case 6: if (ch == '\n') m_state = 0; else result = false; break; // trailing \r\n case 10: if (ch == '\r') ++m_state; else result = false; break; case 11: if (ch == '\n') result = true; else result = false; break; } return result; } boost::tribool parser::parse_content(char ch) { boost::tribool result = boost::indeterminate; // here we simply read m_chunk_size of bytes and finish if (m_collect_payload) m_payload += ch; if (--m_chunk_size == 0) { result = true; m_parsing_content = false; } return result; } // -------------------------------------------------------------------- // request_parser::request_parser() { } boost::tribool request_parser::parse(std::streambuf& text) { if (m_parser == NULL) { m_parser = static_cast(&request_parser::parse_initial_line); m_parsing_content = false; } boost::tribool result = boost::indeterminate; bool is_parsing_content = m_parsing_content; while (text.in_avail() > 0 and boost::indeterminate(result)) { result = (this->*m_parser)(static_cast(text.sbumpc())); if (result and is_parsing_content == false and m_parsing_content == true) { is_parsing_content = true; result = boost::indeterminate; } } return result; } request request_parser::get_request() { return request(m_method, std::move(m_uri), { m_http_version_major, m_http_version_minor }, std::move(m_headers), std::move(m_payload)); } boost::tribool request_parser::parse_initial_line(char ch) { boost::tribool result = boost::indeterminate; // a state machine to parse the initial request line // which consists of: // METHOD URI HTTP/1.0 (or 1.1) switch (m_state) { // we're parsing the method here case 0: if (isalpha(ch)) m_method += ch; else if (ch == ' ') ++m_state; else result = false; break; // we're parsing the URI here case 1: if (ch == ' ') ++m_state; else if (iscntrl(ch)) result = false; else m_uri += ch; break; // we're parsing the trailing HTTP/1.x here case 2: if (ch == 'H') ++m_state; else result = false; break; case 3: if (ch == 'T') ++m_state; else result = false; break; case 4: if (ch == 'T') ++m_state; else result = false; break; case 5: if (ch == 'P') ++m_state; else result = false; break; case 6: if (ch == '/') ++m_state; else result = false; break; case 7: if (ch == '1') ++m_state; else result = false; break; case 8: if (ch == '.') ++m_state; else if (ch == '\r') m_state = 11; else result = false; break; case 9: if (ch == '1' or ch == '0') { if (ch == '1') m_http_version_minor = 1; ++m_state; } else result = false; break; case 10: if (ch == '\r') ++m_state; else result = false; break; case 11: if (ch == '\n') { m_state = 0; m_parser = &parser::parse_header_lines; } else result = false; break; } return result; } // -------------------------------------------------------------------- // reply_parser::reply_parser() { } void reply_parser::reset() { parser::reset(); m_status = 0; m_status_line.clear(); } boost::tribool reply_parser::parse(std::streambuf& text) { if (m_parser == NULL) { m_parser = static_cast(&reply_parser::parse_initial_line); m_parsing_content = false; } boost::tribool result = boost::indeterminate; bool is_parsing_content = m_parsing_content; while (text.in_avail() and boost::indeterminate(result)) { result = (this->*m_parser)(static_cast(text.sbumpc())); if (result and is_parsing_content == false and m_parsing_content == true) { is_parsing_content = true; result = boost::indeterminate; } } return result; } reply reply_parser::get_reply() { return { static_cast(m_status), {m_http_version_major, m_http_version_minor }, std::move(m_headers), std::move(m_payload) }; } boost::tribool reply_parser::parse_initial_line(char ch) { boost::tribool result = boost::indeterminate; // a state machine to parse the initial reply line // which consists of: // HTTP/1.{0,1} XXX status-message switch (m_state) { // we're parsing the initial HTTP/1.x here case 0: if (ch == 'H') ++m_state; else result = false; break; case 1: if (ch == 'T') ++m_state; else result = false; break; case 2: if (ch == 'T') ++m_state; else result = false; break; case 3: if (ch == 'P') ++m_state; else result = false; break; case 4: if (ch == '/') ++m_state; else result = false; break; case 5: if (ch == '1') ++m_state; else result = false; break; case 6: if (ch == '.') ++m_state; else if (ch == '\r') m_state = 11; else result = false; break; case 7: if (ch == '1' or ch == '0') { if (ch == '1') m_http_version_minor = 1; ++m_state; } else result = false; break; case 8: if (isspace(ch)) ++m_state; else result = false; break; // we're parsing the result code here (three digits) case 9: if (isdigit(ch)) { m_status = 100 * (ch - '0'); ++m_state; } else result = false; break; case 10: if (isdigit(ch)) { m_status += 10 * (ch - '0'); ++m_state; } else result = false; break; case 11: if (isdigit(ch)) { m_status += 1 * (ch - '0'); ++m_state; } else result = false; break; case 12: if (isspace(ch)) ++m_state; else result = false; break; // we're parsing the status message here case 13: if (ch == '\r') ++m_state; else m_status_line += ch; break; case 14: if (ch == '\n') { m_state = 0; m_parser = &parser::parse_header_lines; } else result = false; break; } return result; } } // zeep::http libzeep-5.1.8/lib-http/src/preforked-server.cpp0000664000175000017500000002167014324170113021326 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #if HTTP_SERVER_HAS_PREFORK #include // for Hurd #if not defined(WCONTINUED) #define WCONTINUED 0 #endif #include #include namespace zeep::http { bool read_socket_from_parent(int fd_socket, boost::asio::ip::tcp::socket &socket) { using native_handle_type = boost::asio::ip::tcp::socket::native_handle_type; #if __APPLE__ // macos is special... assert(CMSG_SPACE(sizeof(int)) == 16); #endif struct msghdr msg; union { struct cmsghdr cm; #if __APPLE__ char control[16]; #else char control[CMSG_SPACE(sizeof(int))]; #endif } control_un; msg.msg_control = control_un.control; msg.msg_controllen = sizeof(control_un.control); msg.msg_name = nullptr; msg.msg_namelen = 0; boost::asio::ip::tcp::socket::endpoint_type peer_endpoint; struct iovec iov[1]; iov[0].iov_base = peer_endpoint.data(); iov[0].iov_len = peer_endpoint.capacity(); msg.msg_iov = iov; msg.msg_iovlen = 1; bool result = false; int n = recvmsg(fd_socket, &msg, 0); if (n >= 0) { peer_endpoint.resize(n); struct cmsghdr *cmptr CMSG_FIRSTHDR(&msg); if (cmptr != nullptr and cmptr->cmsg_len == CMSG_LEN(sizeof(int))) { if (cmptr->cmsg_level != SOL_SOCKET) std::cerr << "control level != SOL_SOCKET" << std::endl; else if (cmptr->cmsg_type != SCM_RIGHTS) std::cerr << "control type != SCM_RIGHTS"; else { /* Produces warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] int fd = *(reinterpret_cast(CMSG_DATA(cmptr))); */ native_handle_type *fdptr = reinterpret_cast(CMSG_DATA(cmptr)); int fd = *fdptr; if (fd >= 0) { socket.assign(peer_endpoint.protocol(), fd); result = true; } } } } return result; } class child_process { public: child_process(std::function constructor, boost::asio::io_context &io_context, boost::asio::ip::tcp::acceptor &acceptor, int nr_of_threads) : m_constructor(constructor) , m_acceptor(acceptor) , m_socket(io_context) , m_nr_of_threads(nr_of_threads) { m_acceptor.async_accept(m_socket, std::bind(&child_process::handle_accept, this, std::placeholders::_1)); } ~child_process() { if (m_pid > 0) // should never happen { kill(m_pid, SIGKILL); using namespace boost::posix_time; auto now = second_clock::local_time(); int status; if (waitpid(m_pid, &status, WUNTRACED | WCONTINUED) != -1) { if (WIFSIGNALED(status)) std::cerr << now << " child " << m_pid << " terminated by signal " << WTERMSIG(status) << std::endl; else std::cerr << now << " child terminated normally" << std::endl; } else std::cerr << now << "error in waitpid: " << strerror(errno) << std::endl; } } void stop(); private: void handle_accept(const boost::system::error_code &ec); void start(); void run(); std::function m_constructor; boost::asio::ip::tcp::acceptor &m_acceptor; boost::asio::ip::tcp::socket m_socket; int m_nr_of_threads; int m_pid = -1; int m_fd = -1; }; void child_process::start() { using namespace std::literals; // create a socket pair to pass the file descriptors through int sockfd[2]; int err = socketpair(AF_LOCAL, SOCK_STREAM, 0, sockfd); if (err < 0) throw exception("Error creating socket pair: "s + strerror(errno)); // fork m_pid = fork(); if (m_pid < 0) throw exception("Error forking worker application: "s + strerror(errno)); if (m_pid == 0) // child process { close(sockfd[0]); // remove the blocks on the signal handlers sigset_t wait_mask; sigemptyset(&wait_mask); pthread_sigmask(SIG_SETMASK, &wait_mask, 0); // Time to construct the Server object std::unique_ptr srvr(m_constructor()); // run the server as a worker std::thread t(std::bind(&basic_server::run, srvr.get(), m_nr_of_threads)); // now start the processing loop passing on file descriptors read // from the parent process try { for (;;) { std::shared_ptr conn(new connection(srvr->get_io_context(), *srvr)); if (not read_socket_from_parent(sockfd[1], conn->get_socket())) break; conn->start(); } } catch (std::exception &e) { std::cerr << "Exception caught: " << e.what() << std::endl; exit(1); } srvr->stop(); t.join(); exit(0); } // close one end of the pipe, save the other m_fd = sockfd[0]; close(sockfd[1]); } void child_process::stop() { if (m_fd > 0) { // close the socket to the worker, this should terminate the child if it is still alive close(m_fd); m_fd = -1; } if (m_pid != -1) { // however, sometimes it doesn't, so we have to take some serious action // Anyway, we'll wait until child dies to avoid zombies // and to make sure the client really stops... int count = 5; // wait five seconds before killing client int status; while (count-- > 0) { if (waitpid(m_pid, &status, WUNTRACED | WCONTINUED | WNOHANG) == -1) break; if (WIFEXITED(status)) break; std::this_thread::sleep_for(std::chrono::seconds(1)); } if (not WIFEXITED(status)) kill(m_pid, SIGKILL); m_pid = -1; } } void child_process::handle_accept(const boost::system::error_code &ec) { if (ec) { std::cerr << "Accept failed: " << ec << std::endl; return; } try { if (m_pid == -1 or m_fd == -1) start(); using native_handle_type = boost::asio::ip::tcp::socket::native_handle_type; struct msghdr msg; union { struct cmsghdr cm; #if __APPLE__ char control[16]; #else char control[CMSG_SPACE(sizeof(native_handle_type))]; #endif } control_un; msg.msg_control = control_un.control; msg.msg_controllen = sizeof(control_un.control); struct cmsghdr *cmptr = CMSG_FIRSTHDR(&msg); cmptr->cmsg_len = CMSG_LEN(sizeof(int)); cmptr->cmsg_level = SOL_SOCKET; cmptr->cmsg_type = SCM_RIGHTS; /* Procudes warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] *(reinterpret_cast(CMSG_DATA(cmptr))) = socket.native(); */ native_handle_type *fdptr = reinterpret_cast(CMSG_DATA(cmptr)); *fdptr = m_socket.native_handle(); msg.msg_name = nullptr; msg.msg_namelen = 0; struct iovec iov[1]; iov[0].iov_base = m_socket.remote_endpoint().data(); iov[0].iov_len = m_socket.remote_endpoint().size(); msg.msg_iov = iov; msg.msg_iovlen = 1; int err = sendmsg(m_fd, &msg, 0); if (err < 0) { std::cerr << "Error passing file descriptor: " << strerror(errno) << std::endl; // ec = std::make_error_code(errno); stop(); } } catch (const std::exception &e) { std::cerr << "error writing socket to client: " << e.what() << std::endl; reply r = reply::stock_reply(service_unavailable); auto buffers = r.to_buffers(); try { boost::asio::write(m_socket, buffers); } catch (const std::exception &e) { std::cerr << e.what() << std::endl; } } m_socket.close(); m_acceptor.async_accept(m_socket, std::bind(&child_process::handle_accept, this, std::placeholders::_1)); } // -------------------------------------------------------------------- preforked_server::preforked_server(std::function constructor) : m_constructor(constructor) { m_lock.lock(); } preforked_server::~preforked_server() { } void preforked_server::run(const std::string &address, short port, int nr_of_processes, int nr_of_threads) { // first wait until we are allowed to start listening std::unique_lock lock(m_lock); boost::asio::ip::tcp::acceptor acceptor(m_io_context); // then bind the address here boost::asio::ip::tcp::endpoint endpoint; try { endpoint = boost::asio::ip::tcp::endpoint(boost::asio::ip::make_address(address), port); } catch (const std::exception &e) { boost::asio::ip::tcp::resolver resolver(m_io_context); boost::asio::ip::tcp::resolver::query query(address, std::to_string(port)); endpoint = *resolver.resolve(query); } acceptor.open(endpoint.protocol()); acceptor.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true)); acceptor.bind(endpoint); acceptor.listen(); std::vector threads; for (int i = 0; i < nr_of_processes; ++i) { threads.emplace_back([this, nr_of_threads, &acceptor]() { auto work = boost::asio::make_work_guard(m_io_context); child_process p(m_constructor, m_io_context, acceptor, nr_of_threads); m_io_context.run(); }); } for (auto &t : threads) t.join(); } void preforked_server::start() { m_lock.unlock(); } void preforked_server::stop() { m_io_context.stop(); } } // namespace zeep::http #endif libzeep-5.1.8/lib-http/src/reply.cpp0000664000175000017500000003477514324170113017206 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include namespace zeep::http { namespace detail { struct status_string { status_type code; const char *text; } kStatusStrings[] = { { cont, "Continue" }, { ok, "OK" }, { created, "Created" }, { accepted, "Accepted" }, { no_content, "No Content" }, { multiple_choices, "Multiple Choices" }, { moved_permanently, "Moved Permanently" }, { moved_temporarily, "Found" }, { see_other, "See Other" }, { not_modified, "Not Modified" }, { bad_request, "Bad Request" }, { unauthorized, "Unauthorized" }, { proxy_authentication_required, "Proxy Authentication Required" }, { forbidden, "Forbidden" }, { not_found, "Not Found" }, { method_not_allowed, "Method not allowed" }, { internal_server_error, "Internal Server Error" }, { not_implemented, "Not Implemented" }, { bad_gateway, "Bad Gateway" }, { service_unavailable, "Service Unavailable" } }, kStatusDescriptions[] = { { moved_permanently, "The document requested was moved permanently to a new location" }, { moved_temporarily, "The document requested was moved temporarily to a new location" }, { see_other, "The document can be found at another location" }, { not_modified, "The requested document was not modified" }, { bad_request, "There was an error in the request, e.g. an incorrect method or a malformed URI" }, { unauthorized, "You are not authorized to access this location" }, { proxy_authentication_required, "You are not authorized to use this proxy" }, { forbidden, "Access to this location is forbidden" }, { not_found, "The requested web page was not found on this server." }, { internal_server_error, "An internal error prevented the server from processing your request" }, { not_implemented, "Your request could not be handled since the required code is not implemented" }, { bad_gateway, "The server, while acting as a gateway or proxy, received an invalid response from the upstream server it accessed in attempting to fulfill the request. " }, { service_unavailable, "The service is unavailable at this moment, try again later"} }; const int kStatusStringCount = sizeof(kStatusStrings) / sizeof(status_string); const int kStatusDescriptionCount = sizeof(kStatusDescriptions) / sizeof(status_string); } // namespace detail std::string get_status_text(status_type status) { std::string result = "Internal Service Error"; for (int i = 0; i < detail::kStatusStringCount; ++i) { if (detail::kStatusStrings[i].code == status) { result = detail::kStatusStrings[i].text; break; } } return result; } std::string get_status_description(status_type status) { std::string result = "An internal error prevented the server from processing your request"; for (int i = 0; i < detail::kStatusDescriptionCount; ++i) { if (detail::kStatusDescriptions[i].code == status) { result = detail::kStatusDescriptions[i].text; break; } } return result; } // ---------------------------------------------------------------------------- namespace { const std::string kNameValueSeparator{':', ' '}, kCRLF{'\r', '\n'}, kZERO{'0'}; } reply::reply(status_type status, std::tuple version) : m_status(status) , m_version_major(std::get<0>(version)) , m_version_minor(std::get<1>(version)) , m_data(nullptr) { using namespace boost::local_time; using namespace boost::posix_time; local_date_time t(local_sec_clock::local_time(time_zone_ptr())); local_time_facet *lf(new local_time_facet("%a, %d %b %Y %H:%M:%S GMT")); std::stringstream s; s.imbue(std::locale(std::locale(), lf)); s << t; set_header("Date", s.str()); set_header("Server", "libzeep"); set_header("Content-Length", "0"); } reply::reply(status_type status, std::tuple version, std::vector
&&headers, std::string &&payload) : reply(status, version) { m_headers = std::move(headers); m_content = std::move(payload); } reply::reply(const reply &rhs) : m_status(rhs.m_status) , m_version_major(rhs.m_version_major) , m_version_minor(rhs.m_version_minor) , m_headers(rhs.m_headers) , m_data(nullptr) , m_content(rhs.m_content) { assert(rhs.m_data == nullptr); } reply::reply(reply &&rhs) : m_status(rhs.m_status) , m_version_major(rhs.m_version_major) , m_version_minor(rhs.m_version_minor) , m_headers(std::move(rhs.m_headers)) , m_data(rhs.m_data) , m_buffer(std::move(rhs.m_buffer)) , m_content(rhs.m_content) , m_chunked(rhs.m_chunked) , m_status_line(std::move(rhs.m_status_line)) { memcpy(m_size_buffer, rhs.m_size_buffer, sizeof(m_size_buffer)); rhs.m_data = nullptr; } reply::~reply() { delete m_data; } void reply::reset() { reply tmp; std::swap(tmp, *this); } reply &reply::operator=(const reply &rhs) { if (this != &rhs) { m_version_major = rhs.m_version_major; m_version_minor = rhs.m_version_minor; m_status = rhs.m_status; m_headers = rhs.m_headers; m_content = rhs.m_content; } return *this; } reply &reply::operator=(reply &&rhs) { if (this != &rhs) { m_version_major = rhs.m_version_major; m_version_minor = rhs.m_version_minor; m_status = rhs.m_status; m_data = rhs.m_data; rhs.m_data = nullptr; m_headers = rhs.m_headers; m_content = rhs.m_content; m_chunked = rhs.m_chunked; memcpy(m_size_buffer, rhs.m_size_buffer, sizeof(m_size_buffer)); m_status_line = rhs.m_status_line; } return *this; } void reply::set_version(int version_major, int version_minor) { const std::streambuf::pos_type kNoPos = -1; m_version_major = version_major; m_version_minor = version_minor; // for HTTP/1.0 replies we need to calculate the data length if (m_version_major == 1 and m_version_minor == 0 and m_data != nullptr) { m_chunked = false; std::streamsize length = 0; std::streamsize pos = m_data->rdbuf()->pubseekoff(0, std::ios_base::cur); if (pos == kNoPos) { // no other option than copying over the data to our buffer char buffer[10240]; for (;;) { std::streamsize n = m_data->rdbuf()->sgetn(buffer, sizeof(buffer)); if (n == 0) break; length += n; m_content.insert(m_content.end(), buffer, buffer + n); } delete m_data; m_data = nullptr; } else { length = m_data->rdbuf()->pubseekoff(0, std::ios_base::end); length -= pos; m_data->rdbuf()->pubseekoff(pos, std::ios_base::beg); } set_header("Content-Length", boost::lexical_cast(length)); remove_header("Transfer-Encoding"); } } void reply::set_header(const std::string &name, const std::string &value) { bool updated = false; for (header &h : m_headers) { if (iequals(h.name, name)) { h.value = value; updated = true; break; } } if (not updated) { header nh = {name, value}; m_headers.push_back(nh); } } std::string reply::get_header(const std::string &name) const { std::string result; for (const header &h : m_headers) { if (iequals(h.name, name)) { result = h.value; break; } } return result; } void reply::remove_header(const std::string &name) { m_headers.erase( std::remove_if(m_headers.begin(), m_headers.end(), [name](header &h) { return iequals(h.name, name); }), m_headers.end()); } void reply::set_cookie(const char *name, const std::string &value, std::initializer_list directives) { std::ostringstream vs; vs << name << '=' << value; for (auto &directive : directives) vs << "; " << directive.name << (directive.value.empty() ? "" : "=" + directive.value); m_headers.push_back({"Set-Cookie", vs.str()}); } void reply::set_delete_cookie(const char *name) { using namespace boost::local_time; using namespace boost::posix_time; local_date_time t(local_sec_clock::local_time(time_zone_ptr())); local_time_facet *lf(new local_time_facet("%a, %d %b %Y %H:%M:%S GMT")); std::stringstream s; s.imbue(std::locale(std::locale(), lf)); s << (t - hours(24)); set_cookie(name, "", {{"Expires", '"' + s.str() + '"'}}); } std::string reply::get_cookie(const char *name) const { std::string result; for (const header &h : m_headers) { if (iequals(h.name, "Set-Cookie")) { result = h.value; auto ns = result.find('='); if (ns == std::string::npos) continue; if (result.compare(0, ns, name) != 0) continue; auto ds = result.find(';', ns + 1); result = result.substr(ns + 1, ds - ns - 1); break; } } return result; } void reply::set_content(const json::element &json) { std::ostringstream s; s << json; set_content(s.str(), "application/json"); } void reply::set_content(const xml::element &data) { std::stringstream s; s << data; set_content(s.str(), "text/xml; charset=utf-8"); } void reply::set_content(xml::document &doc) { std::stringstream s; if (doc.front().name() == "html") doc.set_write_html(true); else doc.set_write_doctype(false); if (doc.is_html5()) { doc.set_write_doctype(true); doc.set_escape_double_quote(false); } else if (doc.child()->get_ns() == "http://www.w3.org/1999/xhtml") { doc.set_escape_double_quote(false); doc.set_collapse_empty_tags(true); } s << doc; std::string contentType; if (doc.is_html5()) contentType = "text/html; charset=utf-8"; else if (doc.child()->get_ns() == "http://www.w3.org/1999/xhtml") contentType = "application/xhtml+xml; charset=utf-8"; else contentType = "text/xml; charset=utf-8"; set_content(s.str(), contentType); } void reply::set_content(const std::string &data, const std::string &contentType) { m_content = data; m_status = ok; delete m_data; m_data = nullptr; m_chunked = false; set_header("Content-Length", std::to_string(m_content.length())); remove_header("Transfer-Encoding"); set_header("Content-Type", contentType); } void reply::set_content(const char *data, size_t size, const std::string &contentType) { m_content = std::string(data, size); m_status = ok; delete m_data; m_data = nullptr; m_chunked = false; set_header("Content-Length", std::to_string(m_content.length())); remove_header("Transfer-Encoding"); set_header("Content-Type", contentType); } void reply::set_content(std::istream *idata, const std::string &contentType) { delete m_data; m_data = idata; m_content.clear(); m_status = ok; m_chunked = true; set_header("Content-Type", contentType); set_header("Transfer-Encoding", "chunked"); remove_header("Content-Length"); } std::vector reply::to_buffers() const { std::vector result; m_status_line = "HTTP/" + std::to_string(m_version_major) + '.' + std::to_string(m_version_minor) + ' ' + std::to_string(m_status) + ' ' + get_status_text(m_status) + kCRLF; result.push_back(boost::asio::buffer(m_status_line)); for (const header &h : m_headers) { result.push_back(boost::asio::buffer(h.name)); result.push_back(boost::asio::buffer(kNameValueSeparator)); result.push_back(boost::asio::buffer(h.value)); result.push_back(boost::asio::buffer(kCRLF)); } result.push_back(boost::asio::buffer(kCRLF)); result.push_back(boost::asio::buffer(m_content)); return result; } std::vector reply::data_to_buffers() { std::vector result; if (m_data != nullptr) { const unsigned int kMaxChunkSize = 10240; m_buffer.resize(kMaxChunkSize); std::streamsize n = m_data->rdbuf()->sgetn(m_buffer.data(), m_buffer.size()); // chunked encoding? if (m_chunked) { if (n == 0) { result.push_back(boost::asio::buffer(kZERO)); result.push_back(boost::asio::buffer(kCRLF)); result.push_back(boost::asio::buffer(kCRLF)); delete m_data; m_data = nullptr; } else { const char kHex[] = "0123456789abcdef"; char *e = m_size_buffer + sizeof(m_size_buffer); char *p = e; auto l = n; while (n != 0) { *--p = kHex[n & 0x0f]; n >>= 4; } result.push_back(boost::asio::buffer(p, e - p)); result.push_back(boost::asio::buffer(kCRLF)); result.push_back(boost::asio::buffer(&m_buffer[0], l)); result.push_back(boost::asio::buffer(kCRLF)); } } else { if (n > 0) result.push_back(boost::asio::buffer(&m_buffer[0], n)); else { delete m_data; m_data = nullptr; } } } return result; } reply reply::stock_reply(status_type status, const std::string &info) { reply result; if (status != not_modified) { std::stringstream text; text << "" << std::endl << " " << std::endl << "

" << get_status_text(status) << "

" << std::endl; if (not info.empty()) { text << "

"; for (char c : info) { switch (c) { case '&': text << "&"; break; case '<': text << "<"; break; case '>': text << ">"; break; case 0: break; // silently ignore default: if ((c >= 1 and c <= 8) or (c >= 0x0b and c <= 0x0c) or (c >= 0x0e and c <= 0x1f) or c == 0x7f) text << "&#" << std::hex << c << ';'; else text << c; break; } } text << "

" << std::endl; } text << " " << std::endl << ""; result.set_content(text.str(), "text/html; charset=utf-8"); } result.m_status = status; return result; } reply reply::stock_reply(status_type status) { return stock_reply(status, ""); } reply reply::redirect(const std::string &location, status_type status) { reply result; result.m_status = status; std::string text = get_status_text(status); result.m_content = "" + text + "

" + std::to_string(status) + ' ' + text + "

"; // Check if the location is a valid URL if (not is_valid_uri(location)) throw exception("Invalid redirect location"); result.set_header("Location", location); result.set_header("Content-Length", std::to_string(result.m_content.length())); result.set_header("Content-Type", "text/html; charset=utf-8"); return result; } reply reply::redirect(const std::string &location) { return redirect(location, moved_temporarily); } size_t reply::size() const { auto buffers = to_buffers(); return std::accumulate(buffers.begin(), buffers.end(), 0LL, [](size_t m, auto &buffer) { return m + boost::asio::buffer_size(buffer); }); } std::ostream &operator<<(std::ostream &lhs, const reply &rhs) { for (auto &b : rhs.to_buffers()) lhs.write(static_cast(b.data()), b.size()); return lhs; } } // namespace zeep::http libzeep-5.1.8/lib-http/src/request.cpp0000664000175000017500000004677214324170113017543 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include namespace fs = std::filesystem; namespace zeep::http { request::request(const std::string& method, const std::string& uri, std::tuple version, std::vector
&& headers, std::string&& payload) : m_method(method) , m_uri(uri) , m_headers(std::move(headers)) , m_payload(std::move(payload)) { m_version[0] = static_cast('0' + std::get<0>(version)); m_version[1] = '.'; m_version[2] = static_cast('0' + std::get<1>(version)); } request::request(const request& req) : m_local_address(req.m_local_address) , m_local_port(req.m_local_port) , m_method(req.m_method) , m_uri(req.m_uri) , m_headers(req.m_headers) , m_payload(req.m_payload) , m_close(req.m_close) , m_timestamp(req.m_timestamp) , m_credentials(req.m_credentials) , m_remote_address(req.m_remote_address) { char* d = &m_version[0]; for (auto c: req.m_version) *d++ = c; } request& request::operator=(const request& req) { if (this != &req) { m_local_address = req.m_local_address; m_local_port = req.m_local_port; m_method = req.m_method; m_uri = req.m_uri; m_version[0] = req.m_version[0]; m_version[1] = req.m_version[1]; m_version[2] = req.m_version[2]; m_headers = req.m_headers; m_payload = req.m_payload; m_close = req.m_close; m_timestamp = req.m_timestamp; m_credentials = req.m_credentials; m_remote_address = req.m_remote_address; } return *this; } void request::set_local_endpoint(boost::asio::ip::tcp::socket& socket) { m_local_address = socket.local_endpoint().address().to_string(); m_local_port = socket.local_endpoint().port(); } float request::get_accept(const char* type) const { float result = 1.0f; #define IDENT "[-+.a-z0-9]+" #define TYPE "\\*|" IDENT #define MEDIARANGE "\\s*(" TYPE ")/(" TYPE ").*?(?:;\\s*q=(\\d(?:\\.\\d?)?))?" static std::regex rx(MEDIARANGE); assert(type); if (type == nullptr) return 1.0; std::string t1(type), t2; std::string::size_type s = t1.find('/'); if (s != std::string::npos) { t2 = t1.substr(s + 1); t1.erase(s, t1.length() - s); } for (const header& h: m_headers) { if (h.name != "Accept") continue; result = 0; std::string::size_type b = 0, e = h.value.find(','); for (;;) { if (e == std::string::npos) e = h.value.length(); std::string mediarange = h.value.substr(b, e - b); std::smatch m; if (std::regex_search(mediarange, m, rx)) { std::string type1 = m[1].str(); std::string type2 = m[2].str(); float value = 1.0f; if (m[3].matched) value = std::stof(m[3].str()); if (type1 == t1 and type2 == t2) { result = value; break; } if ((type1 == t1 and type2 == "*") or (type1 == "*" and type2 == "*")) { if (result < value) result = value; } } if (e == h.value.length()) break; b = e + 1; while (b < h.value.length() and isspace(h.value[b])) ++b; e = h.value.find(',', b); } break; } return result; } // m_request.http_version_minor >= 1 and not m_request.close bool request::keep_alive() const { return get_version() >= std::make_tuple(1, 1) and iequals(get_header("Connection"), "keep-alive"); } void request::set_header(const char* name, const std::string& value) { bool replaced = false; for (header& h: m_headers) { if (not iequals(h.name, name)) continue; h.value = value; replaced = true; break; } if (not replaced) m_headers.push_back({ name, value }); } std::string request::get_header(const char* name) const { std::string result; for (const header& h: m_headers) { if (not iequals(h.name, name)) continue; result = h.value; break; } return result; } void request::remove_header(const char* name) { m_headers.erase( remove_if(m_headers.begin(), m_headers.end(), [name](const header& h) -> bool { return h.name == name; }), m_headers.end()); } std::pair get_urlencoded_parameter(const std::string& s, const char* name) { std::string::size_type b = 0; std::string result; bool found = false; size_t nlen = strlen(name); while (b != std::string::npos) { std::string::size_type e = s.find_first_of("&;", b); std::string::size_type n = (e == std::string::npos) ? s.length() - b : e - b; if ((n == nlen or (n > nlen + 1 and s[b + nlen] == '=')) and strncmp(name, s.c_str() + b, nlen) == 0) { found = true; if (n == nlen) result = name; // what else? else { b += nlen + 1; result = s.substr(b, e - b); result = decode_url(result); } break; } b = e == std::string::npos ? e : e + 1; } return std::make_pair(result, found); } std::tuple request::get_parameter_ex(const char* name) const { std::string result, contentType = get_header("Content-Type"); bool found = false; if (starts_with(contentType, "application/x-www-form-urlencoded")) { tie(result, found) = get_urlencoded_parameter(m_payload, name); if (found) return std::make_tuple(result, true); } uri uri(m_uri); auto query = uri.get_query(); if (not query.empty()) { tie(result, found) = get_urlencoded_parameter(query, name); if (found) return std::make_tuple(result, true); } if (starts_with(contentType, "application/json")) { try { json::element e; json::parse_json(m_payload, e); if (e.is_object() and e.contains(name)) { result = e.at(name).as(); found = true; } } catch (const std::exception &) { } } else if (starts_with(contentType, "multipart/form-data")) { std::string::size_type b = contentType.find("boundary="); if (b != std::string::npos) { std::string boundary = contentType.substr(b + strlen("boundary=")); enum { START, HEADER, CONTENT, SKIP } state = SKIP; std::string contentName; std::regex rx("content-disposition:\\s*form-data;.*?\\bname=\"([^\"]+)\".*", std::regex::icase); std::smatch m; std::string::size_type i = 0, r = 0, l = 0; for (i = 0; i <= m_payload.length(); ++i) { if (i < m_payload.length() and m_payload[i] != '\r' and m_payload[i] != '\n') continue; // we have found a 'line' at [l, i) if (m_payload.compare(l, 2, "--") == 0 and m_payload.compare(l + 2, boundary.length(), boundary) == 0) { // if we're in the content state or if this is the last line if (state == CONTENT or m_payload.compare(l + 2 + boundary.length(), 2, "--") == 0) { if (r > 0) { auto n = l - r; if (n >= 1 and m_payload[r + n - 1] == '\n') --n; if (n >= 1 and m_payload[r + n - 1] == '\r') --n; result.assign(m_payload, r, n); } break; } // Not the last, so it must be a separator and we're now in the Header part state = HEADER; } else if (state == HEADER) { if (l == i) // empty line { if (contentName == name) { found = true; state = CONTENT; r = i + 1; if (m_payload[i] == '\r' and m_payload[i + 1] == '\n') r = i + 2; } else state = SKIP; } else if (std::regex_match(m_payload.begin() + l, m_payload.begin() + i, m, rx)) contentName = m[1].str(); } if (m_payload[i] == '\r' and m_payload[i + 1] == '\n') ++i; l = i + 1; } } } return make_tuple(result, found); } std::multimap request::get_parameters() const { std::string ps; if (m_method == "POST") { std::string contentType = get_header("Content-Type"); if (starts_with(contentType, "application/x-www-form-urlencoded")) ps = m_payload; } else if (m_method == "GET" or m_method == "PUT") { uri uri(m_uri); ps = uri.get_query(); } std::multimap parameters; while (not ps.empty()) { std::string::size_type e = ps.find_first_of("&;"); std::string param; if (e != std::string::npos) { param = ps.substr(0, e); ps.erase(0, e + 1); } else std::swap(param, ps); if (not param.empty()) { std::string name, value; std::string::size_type d = param.find('='); if (d != std::string::npos) { name = param.substr(0, d); value = param.substr(d + 1); } parameters.emplace(decode_url(name), decode_url(value)); } } // std::multimap parameters; // for (auto m : { "POST", "GET" }) // { // std::string ps; // // skip m_payload unless this is a POST // switch (m) // { // case "POST": // if (m_method == m) // { // std::string contentType = get_header("Content-Type"); // if (starts_with(contentType, "application/x-www-form-urlencoded")) // ps = m_payload; // } // break; // case "GET": // { // std::string::size_type d = m_uri.find('?'); // if (d != std::string::npos) // ps = m_uri.substr(d + 1); // break; // } // default: // ; // } // while (not ps.empty()) // { // std::string::size_type e = ps.find_first_of("&;"); // std::string param; // if (e != std::string::npos) // { // param = ps.substr(0, e); // ps.erase(0, e + 1); // } // else // swap(param, ps); // if (not param.empty()) // { // std::string name, value; // std::string::size_type d = param.find('='); // if (d != std::string::npos) // { // name = param.substr(0, d); // value = param.substr(d + 1); // } // parameters.emplace(decode_url(name), decode_url(value)); // } // } // } return parameters; } struct file_param_parser { file_param_parser(const request& req, const std::string& payload, const char* name); file_param next(); const request& m_req; const std::string m_name; const std::string& m_payload; std::string m_boundary; static const std::regex k_rx_disp, k_rx_cont; enum { START, HEADER, CONTENT, SKIP } m_state = SKIP; std::string::size_type m_i = 0; }; const std::regex file_param_parser::k_rx_disp(R"x(content-disposition:\s*form-data(;.+))x", std::regex::icase); const std::regex file_param_parser::k_rx_cont(R"x(content-type:\s*(\S+/[^;]+)(;.*)?)x", std::regex::icase); file_param_parser::file_param_parser(const request& req, const std::string& payload, const char* name) : m_req(req), m_name(name), m_payload(payload) { std::string contentType = m_req.get_header("Content-Type"); if (starts_with(contentType, "multipart/form-data")) { std::string::size_type b = contentType.find("boundary="); if (b != std::string::npos) m_boundary = contentType.substr(b + strlen("boundary=")); } } file_param file_param_parser::next() { if (m_boundary.empty()) return {}; std::string contentName; std::smatch m; std::string::size_type r = 0, l = 0; file_param result = {}; bool found = false; for (; m_i <= m_payload.length(); ++m_i) { if (m_i < m_payload.length() and m_payload[m_i] != '\r' and m_payload[m_i] != '\n') continue; // we have found a 'line' at [l, i) if (m_payload.compare(l, 2, "--") == 0 and m_payload.compare(l + 2, m_boundary.length(), m_boundary) == 0) { // if we're in the content state or if this is the last line if (m_state == CONTENT or m_payload.compare(l + 2 + m_boundary.length(), 2, "--") == 0) { if (r > 0) { auto n = l - r; if (n >= 1 and m_payload[r + n - 1] == '\n') --n; if (n >= 1 and m_payload[r + n - 1] == '\r') --n; result.data = m_payload.data() + r; result.length = n; } m_state = HEADER; break; } // Not the last, so it must be a separator and we're now in the Header part m_state = HEADER; } else if (m_state == HEADER) { if (l == m_i) // empty line { if (contentName == m_name) { m_state = CONTENT; found = true; r = m_i + 1; if (m_payload[m_i] == '\r' and m_payload[m_i + 1] == '\n') r = m_i + 2; } else { result = {}; m_state = SKIP; } } else if (std::regex_match(m_payload.begin() + l, m_payload.begin() + m_i, m, k_rx_disp)) { auto p = m[1].str(); std::regex re(R"rx(;\s*(\w+)=("[^"]*"|'[^']*'|\w+))rx"); auto b = p.begin(); auto e = p.end(); std::match_results m2; while (b < e and std::regex_search(b, e, m2, re)) { auto key = m2[1].str(); auto value = m2[2].str(); if (value.length() > 1 and ((value.front() == '"' and value.back() == '"') or (value.front() == '\'' and value.back() == '\''))) value = value.substr(1, value.length() - 2); if (key == "name") contentName = value; else if (key == "filename") result.filename = value; b = m2[0].second; } } else if (std::regex_match(m_payload.begin() + l, m_payload.begin() + m_i, m, k_rx_cont)) { result.mimetype = m[1].str(); if (starts_with(result.mimetype, "multipart/")) throw std::runtime_error("multipart file uploads are not supported"); } } if (m_payload[m_i] == '\r' and m_payload[m_i + 1] == '\n') ++m_i; l = m_i + 1; } if (not found) result = {}; return result; } file_param request::get_file_parameter(const char* name) const { file_param_parser fpp(*this, m_payload, name); return fpp.next(); } std::vector request::get_file_parameters(const char* name) const { file_param_parser fpp(*this, m_payload, name); std::vector result; for (;;) { auto fp = fpp.next(); if (not fp) break; result.push_back(fp); } return result; } std::string request::get_cookie(const char* name) const { for (const header& h : m_headers) { if (h.name != "Cookie") continue; std::vector rawCookies; split(rawCookies, h.value, ";"); for (std::string& cookie : rawCookies) { trim(cookie); auto d = cookie.find('='); if (d == std::string::npos) continue; if (cookie.compare(0, d, name) == 0) return cookie.substr(d + 1); } } return ""; } void request::set_cookie(const char* name, const std::string& value) { std::map cookies; for (auto& h: m_headers) { if (not iequals(h.name, "Cookie")) continue; std::vector rawCookies; split(rawCookies, h.value, ";"); for (std::string& cookie : rawCookies) { trim(cookie); auto d = cookie.find('='); if (d == std::string::npos) continue; cookies[cookie.substr(0, d)] = cookie.substr(d + 1); } } m_headers.erase( std::remove_if(m_headers.begin(), m_headers.end(), [](header& h) { return iequals(h.name, "Cookie"); }), m_headers.end()); cookies[name] = value; std::ostringstream cs; bool first = true; for (auto& cookie: cookies) { if (first) first = false; else cs << "; "; cs << cookie.first << '=' << cookie.second; } set_header("Cookie", cs.str()); } const std::map> kLocalesPerLang = { { "ar", { "AE", "BH", "DZ", "EG", "IQ", "JO", "KW", "LB", "LY", "MA", "OM", "QA", "SA", "SD", "SY", "TN", "YE" } }, { "be", { "BY" } }, { "bg", { "BG" } }, { "ca", { "ES" } }, { "cs", { "CZ" } }, { "da", { "DK" } }, { "de", { "AT", "CH", "DE", "LU" } }, { "el", { "GR" } }, { "en", { "US", "AU", "CA", "GB", "IE", "IN", "NZ", "ZA" } }, { "es", { "AR", "BO", "CL", "CO", "CR", "DO", "EC", "ES", "GT", "HN", "MX", "NI", "PA", "PE", "PR", "PY", "SV", "UY", "VE" } }, { "et", { "EE" } }, { "fi", { "FI" } }, { "fr", { "BE", "CA", "CH", "FR", "LU" } }, { "hi", { "IN" } }, { "hr", { "HR" } }, { "hu", { "HU" } }, { "is", { "IS" } }, { "it", { "CH", "IT" } }, { "iw", { "IL" } }, { "ja", { "JP" } }, { "ko", { "KR" } }, { "lt", { "LT" } }, { "lv", { "LV" } }, { "mk", { "MK" } }, { "nl", { "NL", "BE" } }, { "no", { "NO", "NO_NY" } }, { "pl", { "PL" } }, { "pt", { "BR", "PT" } }, { "ro", { "RO" } }, { "ru", { "RU" } }, { "sk", { "SK" } }, { "sl", { "SI" } }, { "sq", { "AL" } }, { "sr", { "BA", "CS" } }, { "sv", { "SE" } }, { "th", { "TH", "TH_TH" } }, { "tr", { "TR" } }, { "uk", { "UA" } }, { "vi", { "VN" } }, { "zh", { "CN", "HK", "TW" } } }; std::locale& request::get_locale() const { if (not m_locale) { auto acceptedLanguage = get_header("Accept-Language"); std::string preferred; std::vector accepted; split(accepted, acceptedLanguage, ","); struct lang_score { std::string lang, region; float score; std::locale loc; bool operator<(const lang_score& rhs) const { return score > rhs.score; } }; std::vector scores; std::regex r(R"(([[:alpha:]]{1,8})(?:-([[:alnum:]]{1,8}))?(?:;q=([01](?:\.\d{1,3})))?)"); auto tryLangRegion = [&scores](const std::string& lang, const std::string& region, float score) { try { auto name = lang + '_' + region + ".UTF-8"; std::locale loc(name); if (iequals(loc.name(), name)) scores.push_back({lang, region, score, loc}); } catch(const std::exception &) { } }; for (auto& l: accepted) { std::smatch m; if (std::regex_search(l, m, r)) { float score = 1; if (m[3].matched) score = std::stof(m.str(3)); auto lang = m.str(1); if (m[2].matched) tryLangRegion(lang, m[2], score); else if (kLocalesPerLang.count(lang)) { for (auto region: kLocalesPerLang.at(lang)) tryLangRegion(lang, region, score); } } } if (scores.empty()) m_locale.reset(new std::locale("C")); else { std::stable_sort(scores.begin(), scores.end()); m_locale.reset(new std::locale(scores.front().loc)); } } return *m_locale; } // std::string request::get_request_line() const // { // return to_string(m_method) + std::string{' '} + m_uri + " HTTP/" + std::to_string(m_http_version_major) + '.' + std::to_string(m_http_version_minor); // } void request::set_header(const std::string& name, const std::string& value) { bool set = false; for (auto& h: m_headers) { if (iequals(h.name, name)) { h.value = value; set = true; break; } } if (not set) m_headers.push_back({ name, value }); } namespace { const char kNameValueSeparator[] = { ':', ' ' }, kCRLF[] = { '\r', '\n' }, kSpace[] = { ' ' }, kHTTPSlash[] = { ' ', 'H', 'T', 'T', 'P', '/' } ; } std::vector request::to_buffers() const { std::vector result; // m_request_line = get_request_line(); // m_request_line = m_method + ' ' + m_uri + " HTTP/" + std::to_string(m_http_version_major) + '.' + std::to_string(m_http_version_minor); result.push_back(boost::asio::buffer(m_method)); result.push_back(boost::asio::buffer(kSpace)); result.push_back(boost::asio::buffer(m_uri)); result.push_back(boost::asio::buffer(kHTTPSlash)); result.push_back(boost::asio::buffer(m_version)); result.push_back(boost::asio::buffer(kCRLF)); for (const header& h: m_headers) { result.push_back(boost::asio::buffer(h.name)); result.push_back(boost::asio::buffer(kNameValueSeparator)); result.push_back(boost::asio::buffer(h.value)); result.push_back(boost::asio::buffer(kCRLF)); } result.push_back(boost::asio::buffer(kCRLF)); result.push_back(boost::asio::buffer(m_payload)); return result; } std::ostream& operator<<(std::ostream& io, const request& req) { std::vector buffers = req.to_buffers(); for (auto& b: buffers) io.write(static_cast(b.data()), b.size()); return io; } } // zeep::http libzeep-5.1.8/lib-http/src/rest-controller.cpp0000664000175000017500000000316014324170113021171 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include namespace zeep::http { rest_controller::~rest_controller() { for (auto mp: m_mountpoints) delete mp; } bool rest_controller::handle_request(http::request& req, http::reply& rep) { std::string p = get_prefixless_path(req); bool result = false; for (auto& mp: m_mountpoints) { if (req.get_method() != mp->m_method) continue; parameter_pack params(req); if (mp->m_path_params.empty()) { if (mp->m_path != p) continue; } else { std::smatch m; if (not std::regex_match(p, m, mp->m_rx)) continue; for (size_t i = 0; i < mp->m_path_params.size(); ++i) { std::string v = m[i + 1].str(); decode_url(v); params.m_path_parameters.push_back({ mp->m_path_params[i], v }); } } try { mp->call(params, rep); } catch (status_type s) { rep = http::reply::stock_reply(s); json::element error({ { "error", get_status_description(s) }}); rep.set_content(error); rep.set_status(s); } catch (const std::exception& e) { rep = http::reply::stock_reply(http::internal_server_error); json::element error({ { "error", e.what() }}); rep.set_content(error); rep.set_status(http::internal_server_error); } result = true; break; } return result; } }libzeep-5.1.8/lib-http/src/security.cpp0000664000175000017500000001111414324170113017700 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include #include #include "glob.hpp" namespace pt = boost::posix_time; namespace zeep::http { namespace { #define BASE64URL "(?:[-_A-Za-z0-9]{4})*(?:[-_A-Za-z0-9]{2,3})?" std::regex kJWTRx("^(" BASE64URL R"()\.()" BASE64URL R"()\.()" BASE64URL ")$" ); } // -------------------------------------------------------------------- void security_context::validate_request(request& req) const { bool allow = m_default_allow; for (;;) { std::string path = uri(req.get_uri()).get_path().generic_string(); if (path.front() != '/') path.insert(path.begin(), '/'); std::set roles; auto access_token = req.get_cookie("access_token"); for (;;) { if (access_token.empty()) break; std::smatch m; if (not std::regex_match(access_token, m, kJWTRx)) break; json::element JOSEHeader; json::parse_json(decode_base64url(m[1].str()), JOSEHeader); const json::element kJOSEHeader{ { "typ", "JWT" }, { "alg", "HS256" } }; if (JOSEHeader != kJOSEHeader) break; // check signature auto sig = encode_base64url(hmac_sha256(m[1].str() + '.' + m[2].str(), m_secret)); if (sig != m[3].str()) break; json::element credentials; json::parse_json(decode_base64url(m[2].str()), credentials); if (not credentials.is_object() or not credentials["role"].is_array()) break; for (auto role: credentials["role"]) roles.insert(role.as()); req.set_credentials(std::move(credentials)); break; } // first check if this page is allowed without any credentials // that means, the first rule that matches this uri should allow // access. for (auto& rule: m_rules) { if (not glob_match(path, rule.m_pattern)) continue; if (rule.m_roles.empty()) allow = true; else { std::set common; std::set_intersection(roles.begin(), roles.end(), rule.m_roles.begin(), rule.m_roles.end(), std::inserter(common, common.begin())); allow = not common.empty(); } break; } break; } if (allow and m_validate_csrf and req.has_parameter("_csrf")) { auto req_csrf_param = req.get_parameter("_csrf"); auto req_csrf_cookie = req.get_cookie("csrf-token"); if (req_csrf_cookie != req_csrf_param) { allow = false; std::cerr << "CSRF validation failed" << std::endl; } } if (not allow) throw unauthorized_exception(); } // -------------------------------------------------------------------- void security_context::add_authorization_headers(reply &rep, const user_details user) { using namespace json::literals; auto JOSEHeader = R"({ "typ": "JWT", "alg": "HS256" })"_json; json::element credentials{ { "username", user.username } }; for (auto& role: user.roles) credentials["role"].push_back(role); auto h1 = encode_base64url(JOSEHeader.as()); auto h2 = encode_base64url(credentials.as()); auto h3 = encode_base64url(hmac_sha256(h1 + '.' + h2, m_secret)); rep.set_cookie("access_token", h1 + '.' + h2 + '.' + h3, { { "HttpOnly", "" }, { "SameSite", "Lax" } }); } // -------------------------------------------------------------------- void security_context::verify_username_password(const std::string& username, const std::string& raw_password, reply &rep) { try { auto user = m_users.load_user(username); bool match = false; for (auto const& [name, pwenc]: m_known_password_encoders) { if (user.password.compare(0, name.length(), name) != 0) continue; match = pwenc->matches(raw_password, user.password); break; } if (not match) throw invalid_password_exception(); add_authorization_headers(rep, user); } catch (const std::exception &) { throw invalid_password_exception(); } } // -------------------------------------------------------------------- std::pair security_context::get_csrf_token(request& req) { // See if we need to add a new csrf token bool csrf_is_new = false; std::string csrf = req.get_cookie("csrf-token"); if (csrf.empty()) { csrf_is_new = true; csrf = encode_base64url(random_hash()); req.set_cookie("csrf-token", csrf); } return { csrf, csrf_is_new }; } }libzeep-5.1.8/lib-http/src/server.cpp0000664000175000017500000001704514324170113017350 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include #include #include #include namespace zeep::http { namespace detail { // a thread specific logger thread_local std::unique_ptr s_log; std::mutex s_log_lock; } // namespace detail // -------------------------------------------------------------------- // http::basic_server basic_server::basic_server() : m_log_forwarded(true) , m_security_context(nullptr) , m_allowed_methods{"GET", "POST", "PUT", "OPTIONS", "HEAD", "DELETE"} { using namespace boost::local_time; local_time_facet *lf(new local_time_facet("[%d/%b/%Y:%H:%M:%S %z]")); std::cout.imbue(std::locale(std::cout.getloc(), lf)); // add a default error handler add_error_handler(new error_handler()); } basic_server::basic_server(security_context *s_cntxt) : basic_server() { m_security_context.reset(s_cntxt); } basic_server::~basic_server() { stop(); for (auto c : m_controllers) delete c; for (auto eh : m_error_handlers) delete eh; } void basic_server::set_template_processor(basic_template_processor *template_processor) { m_template_processor.reset(template_processor); } void basic_server::bind(const std::string &address, unsigned short port) { m_address = address; m_port = port; m_acceptor.reset(new boost::asio::ip::tcp::acceptor(get_io_context())); m_new_connection.reset(new connection(get_io_context(), *this)); // then bind the address here boost::asio::ip::tcp::endpoint endpoint; try { endpoint = boost::asio::ip::tcp::endpoint(boost::asio::ip::make_address(address), port); } catch (const std::exception &e) { boost::asio::ip::tcp::resolver resolver(get_io_context()); boost::asio::ip::tcp::resolver::query query(address, std::to_string(port)); endpoint = *resolver.resolve(query); } m_acceptor->open(endpoint.protocol()); m_acceptor->set_option(boost::asio::ip::tcp::acceptor::reuse_address(true)); m_acceptor->bind(endpoint); m_acceptor->listen(); m_acceptor->async_accept(m_new_connection->get_socket(), [this](boost::system::error_code ec) { this->handle_accept(ec); }); } void basic_server::add_controller(controller *c) { m_controllers.push_back(c); c->set_server(this); } void basic_server::add_error_handler(error_handler *eh) { m_error_handlers.push_front(eh); eh->set_server(this); } void basic_server::run(int nr_of_threads) { // keep the server at work until we call stop auto work = boost::asio::make_work_guard(get_io_context()); for (int i = 0; i < nr_of_threads; ++i) m_threads.emplace_back([this]() { get_io_context().run(); }); for (auto &t : m_threads) { if (t.joinable()) t.join(); } } void basic_server::stop() { m_new_connection.reset(); if (m_acceptor and m_acceptor->is_open()) m_acceptor->close(); m_acceptor.reset(); } void basic_server::handle_accept(boost::system::error_code ec) { if (not ec) { m_new_connection->start(); m_new_connection.reset(new connection(get_io_context(), *this)); m_acceptor->async_accept(m_new_connection->get_socket(), [this](boost::system::error_code ec) { this->handle_accept(ec); }); } } std::ostream &basic_server::get_log() { if (detail::s_log.get() == NULL) detail::s_log.reset(new std::ostringstream); return *detail::s_log; } void basic_server::handle_request(boost::asio::ip::tcp::socket &socket, request &req, reply &rep) { using namespace boost::posix_time; // we're pessimistic rep = reply::stock_reply(not_found); // set up a logging stream and collect logging information detail::s_log.reset(new std::ostringstream); ptime start = second_clock::local_time(); std::string referer("-"), userAgent("-"), accept, client; for (const header &h : req.get_headers()) { if (m_log_forwarded and iequals(h.name, "X-Forwarded-For")) { client = h.value; std::string::size_type comma = client.rfind(','); if (comma != std::string::npos) { if (comma < client.length() - 1 and client[comma + 1] == ' ') ++comma; client = client.substr(comma + 1, std::string::npos); } } else if (iequals(h.name, "Referer")) referer = h.value; else if (iequals(h.name, "User-Agent")) userAgent = h.value; else if (iequals(h.name, "Accept")) accept = h.value; } try { // asking for the remote endpoint address failed sometimes // causing aborting exceptions, so I moved it here. if (client.empty()) { boost::asio::ip::address addr = socket.remote_endpoint().address(); client = boost::lexical_cast(addr); } req.set_remote_address(client); // shortcut, check for supported method auto method = req.get_method(); if (not(m_allowed_methods.empty() or m_allowed_methods.count(method))) throw bad_request; std::string csrf; bool csrf_is_new = false; if (m_security_context) { m_security_context->validate_request(req); std::tie(csrf, csrf_is_new) = m_security_context->get_csrf_token(req); } // parse the uri std::string path = uri(req.get_uri()).get_path().generic_string(); // do the actual work. for (auto c : m_controllers) { if (not c->path_matches_prefix(path)) continue; if (c->dispatch_request(socket, req, rep)) break; } if (method == "HEAD") rep.set_content("", rep.get_content_type()); else if (csrf_is_new) rep.set_cookie("csrf-token", csrf, {{"HttpOnly", ""}, {"SameSite", "Lax"}, {"Path", "/"}}); // work around buggy IE... also, using req.accept() doesn't work since it contains */* ... duh if (starts_with(rep.get_content_type(), "application/xhtml+xml") and not contains(accept, "application/xhtml+xml") and contains(userAgent, "MSIE")) { rep.set_content_type("text/html; charset=utf-8"); } } catch (...) { auto eptr = std::current_exception(); for (auto eh : m_error_handlers) { try { if (eh->create_error_reply(req, eptr, rep)) break; } catch (...) { } } } log_request(client, req, rep, start, referer, userAgent, detail::s_log->str()); } void basic_server::log_request(const std::string &client, const request &req, const reply &rep, const boost::posix_time::ptime &start, const std::string &referer, const std::string &userAgent, const std::string &entry) noexcept { try { // protect the output stream from garbled log messages std::unique_lock lock(detail::s_log_lock); using namespace boost::local_time; local_date_time start_local(start, time_zone_ptr()); auto credentials = req.get_credentials(); std::string username = credentials.is_object() ? credentials["username"].as() : ""; if (username.empty()) username = "-"; const auto &[major, minor] = req.get_version(); std::cout << client << ' ' << "-" << ' ' << username << ' ' << start_local << ' ' << '"' << req.get_method() << ' ' << req.get_uri() << ' ' << "HTTP/" << major << '.' << minor << "\" " << rep.get_status() << ' ' << rep.size() << ' ' << '"' << referer << '"' << ' ' << '"' << userAgent << '"' << ' '; if (entry.empty()) std::cout << '-' << std::endl; else std::cout << '"' << entry << '"' << std::endl; } catch (...) { } } } // namespace zeep::http libzeep-5.1.8/lib-http/src/signals.cpp0000664000175000017500000000643514324170113017503 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include "signals.hpp" // -------------------------------------------------------------------- // // Signal handling // #if _MSC_VER #include #include #include #ifndef SIGQUIT #define SIGQUIT SIGTERM #endif #ifndef SIGHUP #define SIGHUP SIGBREAK #endif namespace zeep { struct signal_catcher_impl { static BOOL __stdcall CtrlHandler(DWORD inCntrlType); static void signal(int inSignal); static int sSignal; static std::condition_variable sCondition; static std::mutex sMutex; }; int signal_catcher_impl::sSignal; std::condition_variable signal_catcher_impl::sCondition; std::mutex signal_catcher_impl::sMutex; BOOL signal_catcher_impl::CtrlHandler(DWORD inCntrlType) { BOOL result = true; switch (inCntrlType) { // Handle the CTRL-C signal. case CTRL_C_EVENT: sSignal = SIGINT; break; // CTRL-CLOSE: confirm that the user wants to exit. case CTRL_CLOSE_EVENT: sSignal = SIGQUIT; break; // Pass other signals to the next handler. case CTRL_BREAK_EVENT: sSignal = SIGHUP; break; case CTRL_SHUTDOWN_EVENT: case CTRL_LOGOFF_EVENT: sSignal = SIGTERM; break; default: result = FALSE; } if (result) sCondition.notify_one(); return result; } signal_catcher::signal_catcher() : mImpl(nullptr) { if (not SetConsoleCtrlHandler(&signal_catcher_impl::CtrlHandler, true)) throw std::runtime_error("Could not install control handler"); } signal_catcher::~signal_catcher() { } void signal_catcher::block() { } void signal_catcher::unblock() { } int signal_catcher::wait() { std::unique_lock lock(signal_catcher_impl::sMutex); signal_catcher_impl::sCondition.wait(lock); return signal_catcher_impl::sSignal; } void signal_catcher::signal_hangup(std::thread &t) { signal_catcher_impl::CtrlHandler(CTRL_BREAK_EVENT); } } // namespace zeep #else #include #include #include namespace zeep { // -------------------------------------------------------------------- // // signal // struct signal_catcher_impl { sigset_t new_mask, old_mask; }; signal_catcher::signal_catcher() : mImpl(new signal_catcher_impl) { sigfillset(&mImpl->new_mask); } signal_catcher::~signal_catcher() { delete mImpl; } void signal_catcher::block() { pthread_sigmask(SIG_BLOCK, &mImpl->new_mask, &mImpl->old_mask); } void signal_catcher::unblock() { pthread_sigmask(SIG_SETMASK, &mImpl->old_mask, nullptr); } int signal_catcher::wait() { // Wait for signal indicating time to shut down. sigset_t wait_mask; sigemptyset(&wait_mask); sigaddset(&wait_mask, SIGINT); sigaddset(&wait_mask, SIGHUP); // sigaddset(&wait_mask, SIGCHLD); sigaddset(&wait_mask, SIGQUIT); sigaddset(&wait_mask, SIGTERM); pthread_sigmask(SIG_BLOCK, &wait_mask, 0); int sig = 0; sigwait(&wait_mask, &sig); return sig; } void signal_catcher::signal_hangup(std::thread &t) { // kill(getpid(), SIGHUP); pthread_kill(t.native_handle(), SIGHUP); } } // namespace zeep #endiflibzeep-5.1.8/lib-http/src/signals.hpp0000664000175000017500000000123514324170113017501 0ustar maartenmaarten// Copyright Maarten L. Hekkelman 2021. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #pragma once #include namespace zeep { class signal_catcher { public: signal_catcher(); ~signal_catcher(); void block(); void unblock(); int wait(); static void signal_hangup(std::thread &t); private: signal_catcher(const signal_catcher &) = delete; signal_catcher &operator=(const signal_catcher &) = delete; struct signal_catcher_impl *mImpl; }; } // namespace zeep libzeep-5.1.8/lib-http/src/soap-controller.cpp0000664000175000017500000001153614324170113021164 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include namespace zeep::http { soap_envelope::soap_envelope() : m_request(nullptr) { } // envelope::envelope(xml::document& data) // : m_request(nullptr) // { // const xml::xpath // sRequestPath("/Envelope[namespace-uri()='http://schemas.xmlsoap.org/soap/envelope/']/Body[position()=1]/*[position()=1]"); // std::list l = sRequestPath.evaluate(*data.root()); // if (l.empty()) // throw zeep::exception("Empty or invalid SOAP envelope passed"); // m_request = l.front(); // } xml::element make_envelope(xml::element&& data) { xml::element env("soap:Envelope", { { "xmlns:soap", "http://schemas.xmlsoap.org/soap/envelope/" }, { "soap:encodingStyle", "http://www.w3.org/2003/05/soap-encoding" } }); auto& body = env.emplace_back("soap:Body"); body.emplace_back(std::forward(data)); return env; } xml::element make_fault(const std::string& what) { xml::element fault("soap:Fault"); auto& faultCode = fault.emplace_back("faultcode"); faultCode.set_content("soap:Server"); auto& faultString(fault.emplace_back("faultstring")); faultString.set_content(what); return make_envelope(std::move(fault)); } xml::element make_fault(const std::exception& ex) { return make_fault(std::string(ex.what())); } // -------------------------------------------------------------------- bool soap_controller::handle_request(request& req, reply& reply) { bool result = false; std::string p = uri(req.get_uri()).get_path().generic_string(); while (p.front() == '/') p.erase(0, 1); if (req.get_method() == "POST" and p == m_prefix_path) { result = true; try { xml::document envelope(req.get_payload()); auto request = envelope.find_first( "/Envelope[namespace-uri()='http://schemas.xmlsoap.org/soap/envelope/']/Body[position()=1]/*[position()=1]"); if (request == envelope.cend()) throw zeep::exception("Empty or invalid SOAP envelope passed"); if (request->get_ns() != m_ns) throw zeep::exception("Invalid namespace for request"); std::string action = request->name(); // log() << action << ' '; for (auto& mp: m_mountpoints) { if (mp->m_action != action) continue; mp->call(*request, reply, m_ns); break; } } catch (const std::exception& e) { reply.set_content(make_fault(e)); reply.set_status(internal_server_error); } catch (status_type& s) { reply.set_content(make_fault(get_status_description(s))); reply.set_status(s); } } else if (req.get_method() == "GET" and p == m_prefix_path + "/wsdl") { reply.set_content(make_wsdl()); reply.set_status(ok); } return result; } /// \brief Create a WSDL based on the registered actions xml::element soap_controller::make_wsdl() { // start by making the root node: wsdl:definitions xml::element wsdl("wsdl:definitions", { { "targetNamespace", m_ns }, { "xmlns:ns", m_ns }, { "xmlns:wsdl", "http://schemas.xmlsoap.org/wsdl/" }, { "xmlns:soap", "http://schemas.xmlsoap.org/wsdl/soap/" } }); // add wsdl:types auto& types = wsdl.emplace_back("wsdl:types"); // add xsd:schema auto& schema = types.emplace_back("xsd:schema", { { "targetNamespace", m_ns }, { "elementFormDefault", "qualified" }, { "attributeFormDefault", "unqualified" }, { "xmlns:xsd", "http://www.w3.org/2001/XMLSchema" } }); using namespace std::literals; // add wsdl:binding auto& binding = wsdl.emplace_back("wsdl:binding", { { "name", m_service }, { "type", "ns:" + m_service + "PortType" } }); // add soap:binding binding.emplace_back("soap:binding", { { "style", "document" }, { "transport", "http://schemas.xmlsoap.org/soap/http" } }); // add wsdl:portType auto& portType = wsdl.emplace_back("wsdl:portType", { { "name", m_service + "PortType" } }); // // // and the types // // xml::type_map typeMap; // // detail::message_map messageMap; // // for (auto& mp: m_mountpoints) // // mp->collect(typeMap, messageMap, portType, binding); // // for (detail::message_map::iterator m = messageMap.begin(); m != messageMap.end(); ++m) // // wsdl->append(m->second); // // for (xml::type_map::iterator t = typeMap.begin(); t != typeMap.end(); ++t) // // schema->append(t->second); // finish with the wsdl:service auto& service = wsdl.emplace_back("wsdl:service", { { "name", m_service } }); auto& port = service.emplace_back("wsdl:port", { { "name", m_service }, { "binding", "ns:" + m_service } }); port.emplace_back("soap:address", { { "location", m_location } }); return wsdl; } } libzeep-5.1.8/lib-http/src/tag-processor-v2.cpp0000664000175000017500000006230114324170113021152 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2019-2020 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include namespace fs = std::filesystem; namespace pt = boost::posix_time; namespace zeep::http { std::unordered_set kFixedValueBooleanAttributes{ "async", "autofocus", "autoplay", "checked", "controls", "declare", "default", "defer", "disabled", "formnovalidate", "hidden", "ismap", "loop", "multiple", "novalidate", "nowrap", "open", "pubdate", "readonly", "required", "reversed", "scoped", "seamless", "selected" }; // -------------------------------------------------------------------- int attribute_precedence(const xml::attribute& attr) { if (attr.name() == "insert" or attr.name() == "replace") return -10; else if (attr.name() == "each") return -9; else if (attr.name() == "if" or attr.name() == "unless" or attr.name() == "switch" or attr.name() == "case") return -8; else if (attr.name() == "object" or attr.name() == "with") return -7; else if (attr.name() == "attr" or attr.name() == "attrappend" or attr.name() == "attrprepend" or attr.name() == "classappend" or attr.name() == "styleappend") return -6; else if (attr.name() == "text" or attr.name() == "utext") return 1; else if (attr.name() == "fragment") return 2; else if (attr.name() == "remove") return 3; else return 0; }; // -------------------------------------------------------------------- // tag_processor_v2::tag_processor_v2(const char* ns) : tag_processor(ns) { using namespace std::placeholders; register_attr_handler("assert", std::bind(&tag_processor_v2::process_attr_assert, this, _1, _2, _3, _4, _5)); register_attr_handler("attr", std::bind(&tag_processor_v2::process_attr_attr, this, _1, _2, _3, _4, _5)); register_attr_handler("classappend", std::bind(&tag_processor_v2::process_attr_classappend, this, _1, _2, _3, _4, _5)); register_attr_handler("each", std::bind(&tag_processor_v2::process_attr_each, this, _1, _2, _3, _4, _5)); register_attr_handler("if", std::bind(&tag_processor_v2::process_attr_if, this, _1, _2, _3, _4, _5, false)); register_attr_handler("include", std::bind(&tag_processor_v2::process_attr_include, this, _1, _2, _3, _4, _5, TemplateIncludeAction::include)); register_attr_handler("inline", std::bind(&tag_processor_v2::process_attr_inline, this, _1, _2, _3, _4, _5)); register_attr_handler("insert", std::bind(&tag_processor_v2::process_attr_include, this, _1, _2, _3, _4, _5, TemplateIncludeAction::insert)); register_attr_handler("replace", std::bind(&tag_processor_v2::process_attr_include, this, _1, _2, _3, _4, _5, TemplateIncludeAction::replace)); register_attr_handler("styleappend", std::bind(&tag_processor_v2::process_attr_styleappend, this, _1, _2, _3, _4, _5)); register_attr_handler("switch", std::bind(&tag_processor_v2::process_attr_switch, this, _1, _2, _3, _4, _5)); register_attr_handler("text", std::bind(&tag_processor_v2::process_attr_text, this, _1, _2, _3, _4, _5, true)); register_attr_handler("unless", std::bind(&tag_processor_v2::process_attr_if, this, _1, _2, _3, _4, _5, true)); register_attr_handler("utext", std::bind(&tag_processor_v2::process_attr_text, this, _1, _2, _3, _4, _5, false)); register_attr_handler("with", std::bind(&tag_processor_v2::process_attr_with, this, _1, _2, _3, _4, _5)); // register_attr_handler("remove", std::bind(&tag_processor_v2::process_attr_remove, this, _1, _2, _3, _4, _5)); } void tag_processor_v2::process_xml(xml::node* node, const scope& parentScope, fs::path dir, basic_template_processor& loader) { m_template.clear(); m_template.emplace_back(*static_cast(node)); process_node(node, parentScope, dir, loader); auto e = dynamic_cast(node); if (e != nullptr) post_process(e, parentScope, dir, loader); } // -------------------------------------------------------------------- // post processing: remove blocks, remove attributes with ns = ns(), process remove void tag_processor_v2::post_process(xml::element* e, const scope& parentScope, fs::path dir, basic_template_processor& loader) { auto parent = e->parent(); for (auto ai = e->attributes().begin(); ai != e->attributes().end();) { if (ai->get_ns() == m_ns and ai->name() == "remove" and parent != nullptr) { scope sub(parentScope); auto action = process_attr_remove(e, ai, sub, dir, loader); if (action == AttributeAction::remove) { parent->erase(e); return; } } if (ai->get_ns() == m_ns) ai = e->attributes().erase(ai); else ++ai; } if (e->get_ns() == m_ns and e->name() == "block" and parent != nullptr) { for (auto& ci: e->nodes()) parent->nodes().insert(e, std::move(ci)); e = parent->erase(e); return; } // take a copy since iterators might get invalid std::vector children; std::transform(e->begin(), e->end(), std::back_inserter(children), [](auto& c) { return &c; }); for (auto& c: children) post_process(c, parentScope, dir, loader); // postpone removing namespaces until all children have been processed for (auto ai = e->attributes().begin(); ai != e->attributes().end();) { if (ai->is_namespace() and ai->value() == m_ns) ai = e->attributes().erase(ai); else ++ai; } } // ----------------------------------------------------------------------- void tag_processor_v2::process_text(xml::text& text, const scope& scope) { xml::element* parent = text.parent(); auto next = std::find_if(parent->nodes().begin(), parent->nodes().end(), [&text](auto& n) { return &n == &text; }); assert(next != parent->nodes().end()); ++next; std::string s = text.get_text(); size_t b = 0; while (b < s.length()) { auto i = s.find('[', b); if (i == std::string::npos) break; char c2 = s[i + 1]; if (c2 != '[' and c2 != '(') { b = i + 1; continue; } i += 2; auto j = s.find(c2 == '(' ? ")]" : "]]", i); if (j == std::string::npos) break; auto m = s.substr(i, j - i); if (not process_el(scope, m)) m = "Error processing " + m; if (c2 == '(' and m.find('<') != std::string::npos) // 'unescaped' text, but since we're an xml library reverse this by parsing the result and putting the { xml::document subDoc("" + m + ""); auto foo = subDoc.front(); for (auto& n: foo.nodes()) parent->nodes().emplace(next, std::move(n)); text.set_text(s.substr(0, i - 2)); s = s.substr(j + 2); b = 0; parent->nodes().emplace(next, xml::text(s)); } else { s.replace(i - 2, j - i + 4, m); b = i + m.length(); } } text.set_text(s); } // -------------------------------------------------------------------- std::vector> tag_processor_v2::resolve_fragment_spec( xml::element* node, fs::path dir, basic_template_processor& loader, const json::element& spec, const scope& scope) { if (spec.contains("is-node-set") and spec["is-node-set"]) return scope.get_nodeset(spec["node-set-name"].as()); if (spec.is_object() and spec["template"].is_string() and spec["selector"].is_object() and spec["selector"]["xpath"].is_string()) { auto file = spec["template"].as(); auto selector = spec["selector"]["xpath"].as(); if (not (spec.is_null() or selector.empty())) return resolve_fragment_spec(node, dir, loader, file, selector, true); } else if (spec.is_string()) { const std::regex kTemplateRx(R"(^\s*(\S*)\s*::\s*(#?[-_[:alnum:]]+)$)"); std::smatch m; std::string s = spec.as(); if (not std::regex_match(s, m, kTemplateRx)) throw std::runtime_error("Invalid attribute value for :include/insert/replace"); std::string file = m[1]; std::string id = m[2]; bool byID = false; std::string selector; if (id[0] == '#') // by ID { byID = true; selector = "//*[@id='" + id.substr(1) + "']"; } else selector = "//*[name()='"+id+"' or attribute::*[namespace-uri() = $ns and (local-name() = 'ref' or local-name() = 'fragment') and starts-with(string(), '"+id+"')]]"; return resolve_fragment_spec(node, dir, loader, file, selector, byID); } return {}; } std::vector> tag_processor_v2::resolve_fragment_spec( xml::element* node, fs::path dir, basic_template_processor& loader, const std::string& file, const std::string& selector, bool byID) { xml::context ctx; ctx.set("ns", ns()); xml::xpath xp(selector); // xp.dump(); xml::document doc; xml::element* root = nullptr; if (file.empty() or file == "this") root = m_template.root(); else { doc.set_preserve_cdata(true); bool loaded = false; for (const char* ext: { "", ".xhtml", ".html", ".xml" }) { std::error_code ec; fs::path template_file = dir / (file + ext); (void)loader.file_time(template_file.string(), ec); if (ec) continue; loader.load_template(template_file.string(), doc); loaded = true; break; } if (not loaded) throw std::runtime_error("Could not locate template file " + file); root = doc.root(); } std::vector> result; for (auto n: xp.evaluate(*root, ctx)) { auto copy = n->clone(); auto e = dynamic_cast(copy); if (e != nullptr) { if (root != node->root()) fix_namespaces(*e, static_cast(*n), *node); auto& attr = e->attributes(); if (byID) // remove the copied ID attr.erase("id"); attr.erase(e->prefix_tag("ref", ns())); attr.erase(e->prefix_tag("fragment", ns())); } result.emplace_back(copy); } return result; } // ----------------------------------------------------------------------- void tag_processor_v2::process_node(xml::node* node, const scope& parentScope, std::filesystem::path dir, basic_template_processor& loader) { for (;;) { xml::text* text = dynamic_cast(node); if (text != nullptr) { process_text(*text, parentScope); break; } xml::element* e = dynamic_cast(node); if (e == nullptr) break; xml::element* parent = e->parent(); scope scope(parentScope); bool inlined = false; try { auto& attributes = e->attributes(); attributes.sort([](auto a, auto b) { return attribute_precedence(a) < attribute_precedence(b); }); auto attr = attributes.begin(); while (attr != attributes.end()) { if (attr->get_ns() != m_ns or attr->name() == "remove" or attr->name() == "ref" or attr->name() == "fragment") { ++attr; continue; } AttributeAction action = AttributeAction::none; if (attr->name() == "object") scope.select_object(evaluate_el(scope, attr->value())); else if (attr->name() == "inline") { action = process_attr_inline(e, attr, scope, dir, loader); inlined = true; } else { auto h = m_attr_handlers.find(attr->name()); if (h != m_attr_handlers.end()) action = h->second(e, attr, scope, dir, loader); else if (kFixedValueBooleanAttributes.count(attr->name())) action = process_attr_boolean_value(e, attr, scope, dir, loader); else action = process_attr_generic(e, attr, scope, dir, loader); } if (action == AttributeAction::remove) { parent->erase(node); node = nullptr; break; } attr = e->attributes().erase(attr); } } catch (const std::exception& ex) { parent->nodes().insert(e, xml::text("Error processing element '" + e->get_qname() + "': " + ex.what())); // parent->erase(e); } if (node != nullptr) { auto i = e->nodes().begin(); while (i != e->nodes().end()) { auto& n = *i; ++i; if (inlined and dynamic_cast(&n) != nullptr) continue; process_node(&n, scope, dir, loader); } } break; } } // ----------------------------------------------------------------------- auto tag_processor_v2::process_attr_if(xml::element* element, xml::attribute* attr, scope& scope, fs::path dir, basic_template_processor& loader, bool unless) ->AttributeAction { return ((not evaluate_el(scope, attr->value()) == unless)) ? AttributeAction::none : AttributeAction::remove; } // ----------------------------------------------------------------------- auto tag_processor_v2::process_attr_assert(xml::element* element, xml::attribute* attr, scope& scope, fs::path dir, basic_template_processor& loader) ->AttributeAction { if (not evaluate_el_assert(scope, attr->value())) throw zeep::exception("Assertion failed for '" + attr->value() + "'"); return AttributeAction::none; } // ----------------------------------------------------------------------- auto tag_processor_v2::process_attr_text(xml::element* element, xml::attribute* attr, scope& scope, fs::path dir, basic_template_processor& loader, bool escaped) ->AttributeAction { json::element obj = evaluate_el(scope, attr->value()); if (not obj.is_null()) { std::string text; if (obj.is_object() and obj.contains("is-node-set") and obj["is-node-set"]) { auto s = scope.get_nodeset(obj["node-set-name"].as()); for (auto& n: s) text += n->str(); } else text = obj.as(); if (escaped) element->set_text(text); else { element->set_text(""); xml::document subDoc("" + text + ""); auto foo = subDoc.front(); for (auto& n: foo.nodes()) element->nodes().emplace(element->end(), std::move(n)); } } return AttributeAction::none; } // -------------------------------------------------------------------- auto tag_processor_v2::process_attr_switch(xml::element* element, xml::attribute* attr, scope& scope, fs::path dir, basic_template_processor& loader) -> AttributeAction { auto vo = evaluate_el(scope, attr->value()); std::string v; if (not vo.is_null()) v = vo.as(); xml::element e2(*element); element->nodes().clear(); auto cases = e2.find(".//*[@case]"); xml::element* selected = nullptr; xml::element* wildcard = nullptr; for (auto c: cases) { auto ca = c->get_attribute(element->prefix_tag("case", ns())); if (ca == "*") wildcard = c; else if (v == ca or (process_el(scope, ca) and v == ca)) { selected = c; break; } } if (selected == nullptr) selected = wildcard; if (selected != nullptr) { selected->attributes().erase(element->prefix_tag("case", ns())); element->emplace_back(std::move(*selected)); } return AttributeAction::none; } // ----------------------------------------------------------------------- auto tag_processor_v2::process_attr_with(xml::element* element, xml::attribute* attr, scope& scope, fs::path dir, basic_template_processor& loader) -> AttributeAction { evaluate_el_with(scope, attr->value()); return AttributeAction::none; } // -------------------------------------------------------------------- tag_processor_v2::AttributeAction tag_processor_v2::process_attr_each(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader) { std::regex kEachRx(R"(^\s*(\w+)(?:\s*,\s*(\w+))?\s*:\s*(.+)$)"); std::smatch m; auto s = attr->value(); if (not std::regex_match(s, m, kEachRx)) throw std::runtime_error("Invalid attribute value for :each"); std::string var = m[1]; std::string stat = m[2]; object collection = evaluate_el(scope, m[3]); if (collection.is_array()) { xml::element *parent = node->parent(); assert(parent); size_t collectionSize = collection.size(); size_t ix = 0; for (auto v: collection) { auto subscope(scope); subscope.put(var, v); if (not stat.empty()) subscope.put(stat, object{ { "index", ix }, { "count", ix + 1 }, { "size", collectionSize }, { "current", v}, { "even", ix % 2 == 1 }, { "odd", ix % 2 == 0 }, { "first", ix == 0 }, { "last", ix + 1 == collectionSize } }); xml::element clone(*node); clone.attributes().erase(attr->get_qname()); auto i = parent->emplace(node, std::move(clone)); // insert before processing, to assign namespaces process_node(i, subscope, dir, loader); ++ix; } } return AttributeAction::remove; } // -------------------------------------------------------------------- tag_processor_v2::AttributeAction tag_processor_v2::process_attr_attr(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader) { auto v = evaluate_el_attr(scope, attr->value()); for (auto vi: v) node->set_attribute(vi.first, vi.second); return AttributeAction::none; } // -------------------------------------------------------------------- tag_processor_v2::AttributeAction tag_processor_v2::process_attr_generic(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader) { auto s = attr->value(); process_el(scope, s); node->set_attribute(attr->name(), s); return AttributeAction::none; } // -------------------------------------------------------------------- tag_processor_v2::AttributeAction tag_processor_v2::process_attr_boolean_value( xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader) { auto s = attr->value(); if (evaluate_el(scope, s)) node->set_attribute(attr->name(), attr->name()); else node->attributes().erase(attr->name()); return AttributeAction::none; } // -------------------------------------------------------------------- tag_processor_v2::AttributeAction tag_processor_v2::process_attr_inline(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader) { auto type = attr->value(); if (type == "javascript" or type == "css") { std::regex r = std::regex(R"(/\*\[\[(.+?)\]\]\*/\s*('([^'\\]|\\.)*'|"([^"\\]|\\.)*"|[^;\n])*|\[\[(.+?)\]\])"); for (auto& n: node->nodes()) { xml::text* text = dynamic_cast(&n); if (text == nullptr) continue; std::string s = text->get_text(); std::string t; auto b = std::sregex_iterator(s.begin(), s.end(), r); auto e = std::sregex_iterator(); auto i = s.begin(); for (auto ri = b; ri != e; ++ri) { auto m = *ri; t.append(i, s.begin() + m.position()); i = s.begin() + m.position() + m.length(); auto v = m[1].matched ? m.str(1) : m.str(5); object obj = evaluate_el(scope, v); std::stringstream ss; ss << obj; v = ss.str(); t.append(v.begin(), v.end()); } t.append(i, s.end()); text->set_text(t); } } else if (type != "none") { for (auto& n: node->nodes()) { xml::text* text_p = dynamic_cast(&n); if (text_p == nullptr) continue; auto& text = *text_p; std::string s = text.get_text(); auto next = text.next(); size_t b = 0; while (b < s.length()) { auto i = s.find('[', b); if (i == std::string::npos) break; char c2 = s[i + 1]; if (c2 != '[' and c2 != '(') { b = i + 1; continue; } i += 2; auto j = s.find(c2 == '(' ? ")]" : "]]", i); if (j == std::string::npos) break; auto m = s.substr(i, j - i); if (not process_el(scope, m)) m = "Error processing " + m; if (c2 == '(' and m.find('<') != std::string::npos) // 'unescaped' text, but since we're an xml library reverse this by parsing the result and putting the { xml::document subDoc("" + m + ""); for (auto& subnode: subDoc.front().nodes()) node->nodes().emplace(next, std::move(subnode)); text.set_text(s.substr(0, i - 2)); s = s.substr(j + 2); b = 0; node->nodes().insert(next, xml::text(s)); } else { s.replace(i - 2, j - i + 4, m); b = i + m.length() - 2; } } text.set_text(s); } } return AttributeAction::none; } // -------------------------------------------------------------------- tag_processor_v2::AttributeAction tag_processor_v2::process_attr_include(xml::element* node, xml::attribute* attr, scope& parentScope, std::filesystem::path dir, basic_template_processor& loader, TemplateIncludeAction tia) { AttributeAction result = AttributeAction::none; auto av = attr->value(); auto o = evaluate_el_link(parentScope, av); json::element params; if (o.is_object()) params = o["selector"]["params"]; auto templates = resolve_fragment_spec(node, dir, loader, o, parentScope); for (auto& templ: templates) { xml::element* el = dynamic_cast(templ.get()); if (el == nullptr) { if (tia == TemplateIncludeAction::include) { auto i = node->nodes().emplace(node->end(), *templ); process_node(i, parentScope, dir, loader); } else { xml::element::node_iterator i; if (tia == TemplateIncludeAction::insert) i = node->nodes().emplace(node->end(), *templ); else { i = node->parent()->nodes().emplace(node, *templ); result = AttributeAction::remove; } process_node(i, parentScope, dir, loader); } continue; } // take a full copy, and fix up the prefixes for the namespaces, if required xml::element& replacement(*el); scope scope(parentScope); for (auto& f: el->attributes()) { // the copy lost its namespace info if (node->namespace_for_prefix(f.get_prefix()) != ns() or f.name() != "fragment") continue; auto v = f.value(); auto s = v.find('('); auto p = params.begin(); while (s != std::string::npos and p != params.end()) { s += 1; auto e = v.find_first_of(",)", s); if (e == std::string::npos) break; auto argname = v.substr(s, e - s); auto& po = *p; if (po.is_object()) { json::element pe{ { "is-node-set", true }, { "node-set-name", argname } }; scope.put(argname, pe); auto ns = resolve_fragment_spec(node, dir, loader, po, parentScope); if (ns.empty()) scope.put(argname, po); else scope.set_nodeset(argname, std::move(ns)); } else scope.put(argname, po); ++p; s = e; } break; } if (tia == TemplateIncludeAction::include) { for (auto& child: replacement.nodes()) { auto i = node->nodes().emplace(node->end(), std::move(child)); process_node(i, scope, dir, loader); } } else { xml::element::node_iterator i; if (tia == TemplateIncludeAction::insert) i = node->emplace(node->end(), std::move(replacement)); else { i = node->parent()->emplace(node, std::move(replacement)); result = AttributeAction::remove; } auto e2 = dynamic_cast(&*i); if (e2 != nullptr) { auto& attrs = e2->attributes(); // if (templateID[0] == '#') // remove the copied ID // attr.erase("id"); attrs.erase(i->prefix_tag("ref", ns())); attrs.erase(i->prefix_tag("fragment", ns())); } process_node(i, scope, dir, loader); } } if (result == AttributeAction::remove) node->parent()->flatten_text(); else node->flatten_text(); return result; } // -------------------------------------------------------------------- tag_processor_v2::AttributeAction tag_processor_v2::process_attr_remove(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader) { auto mode = attr->value(); AttributeAction result = AttributeAction::none; if (mode == "all") result = AttributeAction::remove; else if (mode == "body") node->erase(node->begin(), node->end()); else if (mode == "all-but-first") { if (node->size() > 1) node->erase(node->begin() + 1, node->end()); } else if (mode == "tag") { auto i = xml::element::iterator(node); for (auto& c: *node) { i = node->parent()->emplace(i, std::move(c)); // process_node(i, scope, dir, loader); ++i; } result = AttributeAction::remove; } return result; } // -------------------------------------------------------------------- tag_processor_v2::AttributeAction tag_processor_v2::process_attr_classappend(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader) { for (;;) { auto s = attr->value(); s = process_el_2(scope, s); trim(s); if (s.empty()) break; auto c = node->attributes().find("class"); if (c == node->attributes().end()) { node->attributes().emplace({"class", s}); break; } auto cs = c->value(); trim(cs); if (cs.empty()) c->set_text(s); else c->set_text(cs + ' ' + s); break; } return AttributeAction::none; } // -------------------------------------------------------------------- tag_processor_v2::AttributeAction tag_processor_v2::process_attr_styleappend(xml::element* node, xml::attribute* attr, scope& scope, std::filesystem::path dir, basic_template_processor& loader) { for (;;) { auto s = attr->value(); s = process_el_2(scope, s); trim(s); if (s.empty()) break; if (s.back() != ';') s += ';'; auto c = node->attributes().find("style"); if (c == node->attributes().end()) { node->attributes().emplace({"style", s}); break; } auto cs = c->value(); trim(cs); if (cs.empty()) { c->set_text(s); break; } if (cs.back() == ';') c->set_text(cs + ' ' + s); else c->set_text(cs + "; " + s); break; } return AttributeAction::none; } }libzeep-5.1.8/lib-http/src/tag-processor.cpp0000664000175000017500000002644114324170113020632 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2019 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include namespace fs = std::filesystem; namespace pt = boost::posix_time; namespace zeep::http { // -------------------------------------------------------------------- // tag_processor_v1::tag_processor_v1(const char* ns) : tag_processor(ns) { } bool tag_processor_v1::process_el(const scope& scope, std::string& s) { bool replaced = false; size_t b = 0; while (b < s.length()) { auto i = s.find('$', b); if (i == std::string::npos) break; char c2 = s[i + 1]; if (c2 != '{') { b = i + 1; continue; } auto j = s.find('}', i); if (j == std::string::npos) break; j += 1; replaced = true; auto m = s.substr(i, j - i); if (process_el(scope, m)) s.replace(i, j - i, m); else s.erase(i, j - i); b = j; } return replaced; } void tag_processor_v1::process_xml(xml::node *node, const scope& scope, fs::path dir, basic_template_processor& loader) { xml::text* text = dynamic_cast(node); if (text != nullptr) { std::string s = text->get_text(); if (process_el(scope, s)) text->set_text(s); return; } xml::element* e = dynamic_cast(node); if (e == nullptr) return; // if node is one of our special nodes, we treat it here if (e->get_ns() == m_ns) { xml::element* parent = e->parent(); try { auto nested(scope); process_tag(e->name(), e, scope, dir, loader); } catch (exception& ex) { parent->nodes().push_back( xml::text("Error processing directive '" + e->get_qname() + "': " + ex.what())); } try { parent->erase(e); } catch (exception& ex) { std::cerr << "exception: " << ex.what() << std::endl << *e << std::endl; } } else { for (auto& a : e->attributes()) { std::string s = a.value(); if (process_el(scope, s)) a.value(s); } std::vector nodes{ e->begin(), e->end() }; for (auto n: nodes) process_xml(n, scope, dir, loader); } } void tag_processor_v1::process_tag(const std::string& tag, xml::element *node, const scope& scope, fs::path dir, basic_template_processor& loader) { if (tag == "include") process_include(node, scope, dir, loader); else if (tag == "if") process_if(node, scope, dir, loader); else if (tag == "iterate") process_iterate(node, scope, dir, loader); else if (tag == "for") process_for(node, scope, dir, loader); else if (tag == "number") process_number(node, scope, dir, loader); else if (tag == "options") process_options(node, scope, dir, loader); else if (tag == "option") process_option(node, scope, dir, loader); else if (tag == "checkbox") process_checkbox(node, scope, dir, loader); // else if (tag == "url") process_url(node, scope, dir, loader); else if (tag == "param") process_param(node, scope, dir, loader); else if (tag == "embed") process_embed(node, scope, dir, loader); else throw exception("unimplemented tag"); } void tag_processor_v1::process_include(xml::element *node, const scope& scope, fs::path dir, basic_template_processor& loader) { // an include directive, load file and include resulting content std::string file = node->get_attribute("file"); process_el(scope, file); if (file.empty()) throw exception("missing file attribute"); xml::document doc; doc.set_preserve_cdata(true); loader.load_template((dir / file).string(), doc); process_xml(&doc.front(), scope, (dir / file).parent_path(), loader); auto parent = node->parent(); parent->insert(node, std::move(doc.front())); } void tag_processor_v1::process_if(xml::element *node, const scope& scope, fs::path dir, basic_template_processor& loader) { std::string test = node->get_attribute("test"); if (evaluate_el(scope, test)) { auto parent = node->parent(); assert(parent); for (auto& c: *node) { auto copy = parent->emplace(node, std::move(c)); // insert before processing, to assign namespaces process_xml(copy, scope, dir, loader); } } } void tag_processor_v1::process_iterate(xml::element *node, const scope& scope, fs::path dir, basic_template_processor& loader) { using json::detail::value_type; object collection = scope[node->get_attribute("collection")]; if (collection.type() == value_type::string or collection.type() == value_type::null) collection = evaluate_el(scope, node->get_attribute("collection")); std::string var = node->get_attribute("var"); if (var.empty()) throw exception("missing var attribute in mrs:iterate"); auto parent = node->parent(); assert(parent); for (object& o : collection) { auto s(scope); s.put(var, o); for (auto& c: *node) { auto i = parent->emplace(node, c); // insert before processing, to assign namespaces process_xml(&*i, s, dir, loader); } } } void tag_processor_v1::process_for(xml::element *node, const scope& scope, fs::path dir, basic_template_processor& loader) { object b = evaluate_el(scope, node->get_attribute("begin")); object e = evaluate_el(scope, node->get_attribute("end")); std::string var = node->get_attribute("var"); if (var.empty()) throw exception("missing var attribute in mrs:iterate"); for (int32_t i = b.as(); i <= e.as(); ++i) { auto s(scope); s.put(var, object(i)); auto parent = node->parent(); assert(parent); for (auto& c: *node) { auto i2 = parent->emplace(node, c); // insert before processing, to assign namespaces process_xml(i2, s, dir, loader); } } } class with_thousands : public std::numpunct { protected: // char_type do_thousands_sep() const { return tsp; } std::string do_grouping() const { return "\03"; } // char_type do_decimal_point() const { return dsp; } }; void tag_processor_v1::process_number(xml::element *node, const scope& scope, fs::path dir, basic_template_processor& loader) { std::string number = node->get_attribute("n"); std::string format = node->get_attribute("f"); if (format == "#,##0B") // bytes, convert to a human readable form { const char kBase[] = {'B', 'K', 'M', 'G', 'T', 'P', 'E'}; // whatever uint64_t nr = evaluate_el(scope, number).as(); int base = 0; while (nr > 1024) { nr /= 1024; ++base; } std::locale mylocale(std::locale(), new with_thousands); std::ostringstream s; s.imbue(mylocale); s.setf(std::ios::fixed, std::ios::floatfield); s.precision(1); s << nr << ' ' << kBase[base]; number = s.str(); } else if (format.empty() or starts_with(format, "#,##0")) { uint64_t nr = evaluate_el(scope, number).as(); std::locale mylocale(std::locale(), new with_thousands); std::ostringstream s; s.imbue(mylocale); s << nr; number = s.str(); } auto parent = node->parent(); parent->nodes().emplace(node, zeep::xml::text(number)); } void tag_processor_v1::process_options(xml::element *node, const scope& scope, fs::path dir, basic_template_processor& loader) { using ::zeep::json::detail::value_type; object collection = scope[node->get_attribute("collection")]; if (collection.type() == value_type::string or collection.type() == value_type::null) collection = evaluate_el(scope, node->get_attribute("collection")); if (collection.is_array()) { std::string value = node->get_attribute("value"); std::string label = node->get_attribute("label"); std::string selected = node->get_attribute("selected"); if (not selected.empty()) process_el(scope, selected); for (object& o : collection) { zeep::xml::element option("option"); if (not(value.empty() or label.empty())) { option.set_attribute("value", o[value].as()); if (selected == o[value].as()) option.set_attribute("selected", "selected"); option.add_text(o[label].as()); } else { option.set_attribute("value", o.as()); if (selected == o.as()) option.set_attribute("selected", "selected"); option.add_text(o.as()); } auto parent = node->parent(); assert(parent); parent->emplace(node, std::move(option)); } } } void tag_processor_v1::process_option(xml::element *node, const scope& scope, fs::path dir, basic_template_processor& loader) { std::string value = node->get_attribute("value"); if (not value.empty()) process_el(scope, value); std::string selected = node->get_attribute("selected"); if (not selected.empty()) process_el(scope, selected); zeep::xml::element option("option"); option.set_attribute("value", value); if (selected == value) option.set_attribute("selected", "selected"); auto parent = node->parent(); assert(parent); parent->emplace(node, std::move(option)); for (auto& c: *node) { auto i = option.emplace(option.end(), c); process_xml(i, scope, dir, loader); } } void tag_processor_v1::process_checkbox(xml::element *node, const scope& scope, fs::path dir, basic_template_processor& loader) { std::string name = node->get_attribute("name"); if (not name.empty()) process_el(scope, name); bool checked = false; if (evaluate_el(scope, node->get_attribute("checked"))) checked = true; zeep::xml::element checkbox("input"); checkbox.set_attribute("type", "checkbox"); checkbox.set_attribute("name", name); checkbox.set_attribute("value", "true"); if (checked) checkbox.set_attribute("checked", "true"); auto parent = node->parent(); assert(parent); parent->emplace(node, std::move(checkbox)); for (auto& c: *node) { auto i = checkbox.emplace(checkbox.end(), c); process_xml(i, scope, dir, loader); } } void tag_processor_v1::process_url(xml::element *node, const scope& scope, fs::path dir, basic_template_processor& loader) { // std::string var = node->get_attr("var"); // parameter_map parameters; // get_parameters(scope, parameters); // for (zeep::xml::element *e : *node) // { // if (e->ns() == m_ns and e->name() == "param") // { // std::string name = e->get_attr("name"); // std::string value = e->get_attr("value"); // process_el(scope, value); // parameters.replace(name, value); // } // } // std::string url = scope["baseuri"].as(); // bool first = true; // for (parameter_map::value_type p : parameters) // { // url += (first ? '?' : '&'); // first = false; // url += zeep::http::encode_url(p.first) + '=' + zeep::http::encode_url(p.second.as()); // } // scope& s(const_cast(scope)); // s.put(var, url); } void tag_processor_v1::process_param(xml::element *node, const scope& scope, fs::path dir, basic_template_processor& loader) { throw exception("Invalid XML, cannot have a stand-alone mrs:param element"); } void tag_processor_v1::process_embed(xml::element *node, const scope& scope, fs::path dir, basic_template_processor& loader) { // an embed directive, load xml from attribute and include parsed content std::string xml = scope[node->get_attribute("var")].as(); if (xml.empty()) throw exception("Missing var attribute in embed tag"); zeep::xml::document doc; doc.set_preserve_cdata(true); std::istringstream os(xml); os >> doc; auto parent = node->parent(); auto i = parent->emplace(node, std::move(doc.front())); process_xml(i, scope, dir, loader); } // -------------------------------------------------------------------- } libzeep-5.1.8/lib-http/src/template-processor.cpp0000664000175000017500000002262414324170113021671 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include namespace fs = std::filesystem; namespace zeep::http { // -------------------------------------------------------------------- // file_loader::file_loader(const std::filesystem::path& docroot) : resource_loader(), m_docroot(docroot) { if (not docroot.empty() and not std::filesystem::exists(m_docroot)) throw std::runtime_error("Docroot '" + m_docroot.string() + "' does not seem to exist"); } /// return last_write_time of \a file std::filesystem::file_time_type file_loader::file_time(const std::string& file, std::error_code& ec) noexcept { fs::path p(file); if (p.has_root_path()) p = fs::relative(p, p.root_path()); return fs::last_write_time(m_docroot / p, ec); } /// return last_write_time of \a file std::istream* file_loader::load_file(const std::string& file, std::error_code& ec) noexcept { fs::path p(file); if (p.has_root_path()) p = fs::relative(p, p.root_path()); std::ifstream* result = new std::ifstream(m_docroot / p, std::ios::binary); if (not result->is_open()) { delete result; result = nullptr; ec = std::make_error_code(std::errc::no_such_file_or_directory); } return result; } // -------------------------------------------------------------------- // void basic_template_processor::handle_file(const http::request& request, const scope& scope, http::reply& reply) { using namespace boost::local_time; using namespace boost::posix_time; std::error_code ec; auto ft = file_time(scope["baseuri"].as(), ec); if (ec) { reply = http::reply::stock_reply(http::not_found); return; } auto lastWriteTime = std::chrono::duration_cast(ft - decltype(ft)::clock::time_point{}).count(); // // std::chrono::time_point tp(ft); // ptime() // std::chrono::system_clock::from_time_t() // // auto lastWriteTime = decltype(ft)::clock::to_time_t(ft); // boost::chrono::duration_cast // std::chrono::file_clock; // ptime fpt(ft); // auto lastWriteTime = to_time_t() std::string ifModifiedSince; for (const http::header& h : request.get_headers()) { if (iequals(h.name, "If-Modified-Since")) { local_date_time modifiedSince(local_sec_clock::local_time(time_zone_ptr())); local_time_input_facet *lif1(new local_time_input_facet("%a, %d %b %Y %H:%M:%S GMT")); std::stringstream ss; ss.imbue(std::locale(std::locale::classic(), lif1)); ss.str(h.value); ss >> modifiedSince; local_date_time fileDate(from_time_t(lastWriteTime), time_zone_ptr()); if (fileDate <= modifiedSince) { reply = http::reply::stock_reply(http::not_modified); return; } break; } } fs::path file = scope["baseuri"].as(); std::unique_ptr in(load_file(file.string(), ec)); if (ec) { reply = http::reply::stock_reply(http::not_found); return; } std::stringstream out; for (;;) { char buffer[1024]; auto r = in->readsome(buffer, sizeof(buffer)); if (r <= 0) break; out.write(buffer, r); } std::string mimetype = "text/plain"; if (file.extension() == ".css") mimetype = "text/css"; else if (file.extension() == ".js") mimetype = "text/javascript"; else if (file.extension() == ".png") mimetype = "image/png"; else if (file.extension() == ".svg") mimetype = "image/svg+xml"; else if (file.extension() == ".html" or file.extension() == ".htm") mimetype = "text/html"; else if (file.extension() == ".xml" or file.extension() == ".xsl" or file.extension() == ".xslt") mimetype = "text/xml"; else if (file.extension() == ".xhtml") mimetype = "application/xhtml+xml"; else if (file.extension() == ".ico") mimetype = "image/x-icon"; reply.set_content(out.str(), mimetype); local_date_time t(local_sec_clock::local_time(time_zone_ptr())); local_time_facet *lf(new local_time_facet("%a, %d %b %Y %H:%M:%S GMT")); std::stringstream s; s.imbue(std::locale(std::cout.getloc(), lf)); ptime pt = from_time_t(lastWriteTime); local_date_time t2(pt, time_zone_ptr()); s << t2; reply.set_header("Last-Modified", s.str()); } void basic_template_processor::set_docroot(const fs::path& path) { m_docroot = path; } std::tuple basic_template_processor::is_template_file(const std::string& file) { bool found = false; fs::path template_file; for (const char* ext: { "", ".xhtml", ".html", ".xml" }) { std::error_code ec; template_file = file + ext; (void)file_time(template_file.string(), ec); if (ec) continue; found = true; break; } return { found, template_file }; } void basic_template_processor::load_template(const std::string& file, xml::document& doc) { std::string templateSelector; json::element spec; std::unique_ptr data; std::error_code ec; bool regularTemplate; fs::path templateFile; std::tie(regularTemplate, templateFile) = is_template_file(file); if (regularTemplate) data.reset(load_file(templateFile.string(), ec)); else { auto espec = evaluate_el_link({}, file); if (espec.is_object()) // reset the content, saves having to add another method { std::tie(regularTemplate, templateFile) = is_template_file(espec["template"].as()); if (regularTemplate) data.reset(load_file(templateFile.string(), ec)); templateSelector = espec["selector"]["xpath"].as(); } } if (not data) { #if defined(_MSC_VER) char msg[1024] = ""; DWORD dw = ::GetLastError(); if (dw != NO_ERROR) { char *lpMsgBuf = nullptr; int m = ::FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&lpMsgBuf, 0, NULL); if (lpMsgBuf != nullptr) { // strip off the trailing whitespace characters while (m > 0 and isspace(lpMsgBuf[m - 1])) --m; lpMsgBuf[m] = 0; strncpy(msg, lpMsgBuf, sizeof(msg)); ::LocalFree(lpMsgBuf); } } throw exception("error opening: " + (m_docroot / file).string() + " (" + msg + ")"); #else throw exception("error opening: " + (m_docroot / file).string() + " (" + strerror(errno) + ")"); #endif } doc.set_preserve_cdata(true); try { *data >> doc; } catch (const std::exception& ex) { std::cerr << "Error parsing template: " << ex.what() << std::endl; throw; } if (not templateSelector.empty()) { // tricky? Find first matching fragment and make it the root node of the document xml::context ctx; // this is problematic, take the first processor namespace for now. // TODO fix this std::string ns; for (auto& tp: m_tag_processor_creators) { std::unique_ptr ptp(tp.second(tp.first)); if (dynamic_cast(ptp.get()) == nullptr) continue; ns = tp.first; ctx.set("ns", ns); break; } xml::xpath xp(templateSelector); std::vector> result; for (auto n: xp.evaluate(doc, ctx)) { auto e = dynamic_cast(n); if (e == nullptr) continue; xml::document dest; auto& attr = e->attributes(); if (spec["selector"]["by-id"]) attr.erase("id"); attr.erase(e->prefix_tag("ref", ns)); attr.erase(e->prefix_tag("fragment", ns)); auto parent = e->parent(); dest.push_back(std::move(*e)); xml::fix_namespaces(dest.front(), *parent, dest.front()); doc.swap(dest); break; } } } void basic_template_processor::create_reply_from_template(const std::string& file, const scope& scope, http::reply& reply) { xml::document doc; doc.set_preserve_cdata(true); load_template(file, doc); process_tags(doc.child(), scope); reply.set_content(doc); } void basic_template_processor::init_scope(scope& scope) { } void basic_template_processor::process_tags(xml::node* node, const scope& scope) { // only process elements if (dynamic_cast(node) == nullptr) return; std::set registeredNamespaces; for (auto& tpc: m_tag_processor_creators) registeredNamespaces.insert(tpc.first); if (not registeredNamespaces.empty()) process_tags(static_cast(node), scope, registeredNamespaces); // decorate all forms with a hidden input with name _csrf auto csrf = scope.get_csrf_token(); if (not csrf.empty()) { auto forms = xml::xpath(R"(//form[not(input[@name='_csrf'])])"); xml::context ctx; for (auto& form: forms.evaluate(*node, ctx)) form->emplace_back(xml::element("input", { { "name", "_csrf" }, { "value", csrf }, { "type", "hidden" } })); } } void basic_template_processor::process_tags(xml::element* node, const scope& scope, std::set registeredNamespaces) { std::set nss; for (auto& ns: node->attributes()) { if (not ns.is_namespace()) continue; if (registeredNamespaces.count(ns.value())) nss.insert(ns.value()); } for (auto& ns: nss) { std::unique_ptr processor(create_tag_processor(ns)); processor->process_xml(node, scope, "", *this); registeredNamespaces.erase(ns); } if (not registeredNamespaces.empty()) { for (auto& e: *node) process_tags(&e, scope, registeredNamespaces); } } } // namespace http::zeep libzeep-5.1.8/lib-http/src/uri.cpp0000664000175000017500000001473614324170113016645 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, 2021 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include namespace zeep::http { // ah, the beauty of regular expressions! #define GEN_DELIMS R"([][]:/?#@])" #define SUB_DELIMS R"([!$&'()*+,;=])" #define RESERVED GEN_DELIMS | SUB_DELIMS #define UNRESERVED R"([-._~A-Za-z0-9])" #define SCHEME R"([a-zA-Z][-+.a-zA-Z0-9]*)" #define PCT_ENCODED "%[[:xdigit:]]{2}" #define USERINFO "(?:" UNRESERVED "|" PCT_ENCODED "|" SUB_DELIMS "|" ":" ")*" #define REG_NAME "(?:" UNRESERVED "|" PCT_ENCODED "|" SUB_DELIMS ")*" #define PORT "[[:digit:]]*" #define DEC_OCTET "(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])" #define IPv4_ADDRESS DEC_OCTET R"(\.)" DEC_OCTET R"(\.)" DEC_OCTET R"(\.)" DEC_OCTET #define h16 "[[:xdigit:]]{1,4}" #define ls32 "(?:" h16 ":" h16 ")|" IPv4_ADDRESS #define IPv6_ADDRESS "(?:" \ "(?:" h16 ":){6}" ls32 "|" \ "::" "(?:" h16 ":){5}" ls32 "|" \ "(?:" h16 ")?" "::" "(?:" h16 ":){4}" ls32 "|" \ "(?:(?:" h16 ":){1}" h16 ")?" "::" "(?:" h16 ":){3}" ls32 "|" \ "(?:(?:" h16 ":){2}" h16 ")?" "::" "(?:" h16 ":){2}" ls32 "|" \ "(?:(?:" h16 ":){3}" h16 ")?" "::" "(?:" h16 ":){1}" ls32 "|" \ "(?:(?:" h16 ":){4}" h16 ")?" "::" ls32 "|" \ "(?:(?:" h16 ":){5}" h16 ")?" "::" h16 "|" \ "(?:(?:" h16 ":){6}" h16 ")?" "::" "|" \ ")" #define IPvFUTURE R"(v[[:xdigit:]]\.(?:)" UNRESERVED "|" SUB_DELIMS "|" ":" ")+" #define IP_LITERAL R"(\[(?:)" IPv6_ADDRESS "|" IPvFUTURE R"()\])" #define HOST IP_LITERAL "|" IPv4_ADDRESS "|" REG_NAME #define AUTHORITY "(" USERINFO "\\@" ")?(" HOST ")(:" PORT ")?" #define PCHAR UNRESERVED "|" PCT_ENCODED "|" SUB_DELIMS "|" ":" "|" "@" #define SEGMENT "(?:" PCHAR ")*" #define SEGMENT_NZ "(?:" PCHAR "){1,}" #define SEGMENT_NZ_NC "(?:" UNRESERVED "|" PCT_ENCODED "|" SUB_DELIMS "){1,}" #define PATH_ABEMPTY "(?:" "/" "(" SEGMENT "(?:/" SEGMENT ")*" "))?" #define PATH_ABSOLUTE "/" "(?:" SEGMENT_NZ "(?:" "/" SEGMENT ")*" ")?" #define PATH_ROOTLESS SEGMENT_NZ "(?:" "/" SEGMENT ")*" #define PATH_EMPTY "" #define HIER_PART "//" AUTHORITY PATH_ABEMPTY "|" \ "(" PATH_ABSOLUTE ")|" \ "(" PATH_ROOTLESS ")|" \ PATH_EMPTY #define QUERY "(?:\\?|/|" PCHAR ")*" #define FRAGMENT "(?:\\?|/|" PCHAR ")*" #define URI "^(?:(" SCHEME "):)?(?:" HIER_PART ")(?:\\?(" QUERY "))?(?:#(" FRAGMENT "))?$" // -------------------------------------------------------------------- const std::regex kURIRx(URI); // -------------------------------------------------------------------- /// \brief Is \a url a valid url? bool is_valid_uri(const std::string& url) { return std::regex_match(url, kURIRx); } // -------------------------------------------------------------------- struct uri_impl { uri_impl(const std::string& uri) : m_s(uri) {} std::string m_s; std::string m_scheme; std::string m_host; std::filesystem::path m_path; std::string m_query; std::string m_fragment; bool m_absolutePath = false; }; // -------------------------------------------------------------------- uri::uri(const std::string &url) : m_impl(new uri_impl{url}) { const std::regex rx(URI); std::smatch m; if (std::regex_match(url, m, rx)) { m_impl->m_scheme = m[1]; m_impl->m_host = m[3]; if (not m_impl->m_host.empty() and m_impl->m_host.front() == '[' and m_impl->m_host.back() == ']') m_impl->m_host = m_impl->m_host.substr(1, m_impl->m_host.length() - 2); if (m[5].matched) m_impl->m_path = m[5].str(); else if (m[6].matched) m_impl->m_path = m[6].str(); else if (m[7].matched) m_impl->m_path = m[7].str(); m_impl->m_query = m[8]; m_impl->m_fragment = m[9]; m_impl->m_absolutePath = m_impl->m_host.empty() and m[6].matched; } else throw uri_parse_error(url); } uri::uri(const uri &u) : uri(u.string()) { } uri& uri::operator=(const uri &u) { if (&u != this) { uri tmp(u); swap(tmp); } return *this; } uri::~uri() { delete m_impl; } bool uri::empty() const { return m_impl->m_s.empty(); } bool uri::is_absolute() const { return m_impl->m_absolutePath; } void uri::swap(uri &u) noexcept { std::swap(m_impl, u.m_impl); } std::string uri::string() const { return m_impl->m_s; } std::string uri::get_scheme() const { return m_impl->m_scheme; } std::string uri::get_host() const { return m_impl->m_host; } std::filesystem::path uri::get_path() const { std::filesystem::path result; for (auto p: m_impl->m_path) result /= decode_url(p.string()); return result; } std::string uri::get_query() const { return m_impl->m_query; } std::string uri::get_fragment() const { return m_impl->m_fragment; } // -------------------------------------------------------------------- std::ostream &operator<<(std::ostream &os, const uri &url) { os << url.string(); return os; } // -------------------------------------------------------------------- // decode_url function std::string decode_url(std::string_view s) { std::string result; for (auto c = s.begin(); c != s.end(); ++c) { if (*c == '%') { if (s.end() - c >= 3) { int value; std::string s2(c + 1, c + 3); std::istringstream is(s2); if (is >> std::hex >> value) { result += static_cast(value); c += 2; } } } else if (*c == '+') result += ' '; else result += *c; } return result; } // -------------------------------------------------------------------- // encode_url function const unsigned char kURLAcceptable[96] = {/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ 0,0,0,0,0,0,0,0,0,0,7,6,0,7,7,4, /* 2x !"#$%&'()*+,-./ */ 7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0, /* 3x 0123456789:;<=>? */ 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, /* 4x @ABCDEFGHIJKLMNO */ 7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,7, /* 5X PQRSTUVWXYZ[\]^_ */ 0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, /* 6x `abcdefghijklmno */ 7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0 /* 7X pqrstuvwxyz{\}~ DEL */ }; std::string encode_url(std::string_view s) { const char kHex[] = "0123456789abcdef"; std::string result; for (auto c = s.begin(); c != s.end(); ++c) { unsigned char a = (unsigned char)*c; if (not (a >= 32 and a < 128 and (kURLAcceptable[a - 32] & 4))) { result += '%'; result += kHex[a >> 4]; result += kHex[a & 15]; } else result += *c; } return result; } } // namespace zeep::http libzeep-5.1.8/lib-http/test/0000775000175000017500000000000014324170113015517 5ustar maartenmaartenlibzeep-5.1.8/lib-http/test/client-test-code.cpp0000664000175000017500000000310214324170113021362 0ustar maartenmaarten#include #include #include #include #include "client-test-code.hpp" namespace zh = zeep::http; zh::reply simple_request(uint16_t port, const std::string& req) { using boost::asio::ip::tcp; #if BOOST_VERSION > 107000 boost::asio::io_context io_context; tcp::resolver resolver(io_context); tcp::resolver::results_type endpoints = resolver.resolve("localhost", std::to_string(port)); tcp::socket socket(io_context); boost::asio::connect(socket, endpoints); #else boost::asio::io_context io_context; tcp::resolver resolver(io_context); auto endpoint_iterator = resolver.resolve({ "localhost", std::to_string(port) }); tcp::socket socket(io_context); boost::asio::connect(socket, endpoint_iterator); #endif boost::system::error_code ignored_error; boost::asio::write(socket, boost::asio::buffer(req), ignored_error); zh::reply result; zh::reply_parser p; for (;;) { boost::array buf; boost::system::error_code error; size_t len = socket.read_some(boost::asio::buffer(buf), error); if (error == boost::asio::error::eof) break; // Connection closed cleanly by peer. else if (error) throw boost::system::system_error(error); // Some other error. zeep::char_streambuf sb(buf.data(), len); auto r = p.parse(sb); if (r == true) { result = p.get_reply(); break; } } return result; } zh::reply simple_request(uint16_t port, const zeep::http::request& req) { std::ostringstream os; os << req; return simple_request(port, os.str()); }libzeep-5.1.8/lib-http/test/client-test-code.hpp0000664000175000017500000000023214324170113021370 0ustar maartenmaartenzeep::http::reply simple_request(uint16_t port, const std::string& req); zeep::http::reply simple_request(uint16_t port, const zeep::http::request& req); libzeep-5.1.8/lib-http/test/crypto-test.cpp0000664000175000017500000001120114324170113020513 0ustar maartenmaarten#define BOOST_TEST_MODULE Crypto_Test #include #include #include #include namespace z = zeep; BOOST_AUTO_TEST_CASE(http_base64_1) { using namespace std::literals; auto in = R"(Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.)"s; auto out = R"(TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4= )"s; auto test = zeep::encode_base64(in, 76); BOOST_CHECK_EQUAL(test, out); auto s = zeep::decode_base64(test); BOOST_CHECK(s == in); } BOOST_AUTO_TEST_CASE(http_base32_1) { using namespace std::literals; auto in = R"(Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.)"s; auto out = R"(JVQW4IDJOMQGI2LTORUW4Z3VNFZWQZLEFQQG433UEBXW43DZEBRHSIDINFZSA4TFMFZW63RMEBRH K5BAMJ4SA5DINFZSA43JNZTXK3DBOIQHAYLTONUW63RAMZZG63JAN52GQZLSEBQW42LNMFWHGLBA O5UGSY3IEBUXGIDBEBWHK43UEBXWMIDUNBSSA3LJNZSCYIDUNBQXIIDCPEQGCIDQMVZHGZLWMVZG C3TDMUQG6ZRAMRSWY2LHNB2CA2LOEB2GQZJAMNXW45DJNZ2WKZBAMFXGIIDJNZSGKZTBORUWOYLC NRSSAZ3FNZSXEYLUNFXW4IDPMYQGW3TPO5WGKZDHMUWCAZLYMNSWKZDTEB2GQZJAONUG64TUEB3G K2DFNVSW4Y3FEBXWMIDBNZ4SAY3BOJXGC3BAOBWGKYLTOVZGKLQ= )"s; auto test = zeep::encode_base32(in, 76); BOOST_CHECK_EQUAL(test, out); auto s = zeep::decode_base32(test); BOOST_CHECK(s == in); } BOOST_AUTO_TEST_CASE(http_base64_2) { using namespace std::literals; const std::string tests[] = { "1", "12", "123", "1234", { '\0' }, { '\0', '\001' }, { '\0', '\001', '\002' } }; for (const auto& test: tests) { auto enc = zeep::encode_base64(test, 76); auto dec = zeep::decode_base64(enc); BOOST_CHECK(dec == test); } } BOOST_AUTO_TEST_CASE(crypto_md5_1) { auto h = z::encode_hex(z::md5("1234")); BOOST_CHECK_EQUAL(h, "81dc9bdb52d04dc20036dbd8313ed055"); } BOOST_AUTO_TEST_CASE(crypto_sha1_1) { auto h = z::encode_hex(z::sha1("The quick brown fox jumps over the lazy dog")); BOOST_CHECK_EQUAL(h, "2fd4e1c67a2d28fced849ee1bb76e7391b93eb12"); } BOOST_AUTO_TEST_CASE(crypto_sha256_1) { auto h = z::encode_hex(z::sha256("")); BOOST_CHECK_EQUAL(h, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"); h = z::encode_hex(z::sha256("1")); BOOST_CHECK_EQUAL(h, "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"); h = z::encode_hex(z::sha256("The SHA (Secure Hash Algorithm) is one of a number of cryptographic hash functions. A cryptographic hash is like a signature for a data set. If you would like to compare two sets of raw data (source of the file, text or similar) it is always better to hash it and compare SHA256 values. It is like the fingerprints of the data. Even if only one symbol is changed the algorithm will produce different hash value. SHA256 algorithm generates an almost-unique, fixed size 256-bit (32-byte) hash. Hash is so called a one way function. This makes it suitable for checking integrity of your data, challenge hash authentication, anti-tamper, digital signatures, blockchain.")); BOOST_CHECK_EQUAL(h, "ae8bd70b42c2877e6800f3da2800044c8694f201242a484d38bb7941645e8876"); } BOOST_AUTO_TEST_CASE(crypto_hmac_1) { auto h = z::encode_hex(z::hmac_sha256("The quick brown fox jumps over the lazy dog", "key")); BOOST_CHECK_EQUAL(h, "f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8"); h = z::encode_hex(z::hmac_md5("The quick brown fox jumps over the lazy dog", "key")); BOOST_CHECK_EQUAL(h, "80070713463e7749b90c2dc24911e275"); } BOOST_AUTO_TEST_CASE(crypto_pbkdf2) { auto h = z::encode_hex(z::pbkdf2_hmac_sha256("1234", "key", 10, 16)); BOOST_CHECK_EQUAL(h, "458d81e7a1defc5d0b61708a7dc06233"); } BOOST_AUTO_TEST_CASE(streambuf_1) { const char s[] = "Hello, world!"; auto sb = zeep::char_streambuf(s); std::istream is(&sb); auto len = is.seekg(0, std::ios_base::end).tellg(); BOOST_CHECK_EQUAL(len, strlen(s)); is.seekg(0); std::vector b(len); is.read(b.data(), len); BOOST_CHECK_EQUAL(is.tellg(), len); BOOST_CHECK_EQUAL(std::string(b.begin(), b.end()), s); }libzeep-5.1.8/lib-http/test/fragment-file.xhtml0000664000175000017500000000037514324170113021322 0ustar maartenmaarten
fragment-1
fragment-2
libzeep-5.1.8/lib-http/test/http-test.cpp0000664000175000017500000001752414324170113020170 0ustar maartenmaarten#include #define BOOST_TEST_MODULE HTTP_Test #include #include #include #include #include #include #include #include #include #include #include #include #include "client-test-code.hpp" #include "../src/signals.hpp" namespace z = zeep; namespace zx = zeep::xml; namespace zh = zeep::http; BOOST_AUTO_TEST_CASE(http_base64_1) { using namespace std::literals; auto in = R"(Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.)"s; auto out = R"(TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4= )"s; auto test = zeep::encode_base64(in, 76); BOOST_TEST(test == out); auto s = zeep::decode_base64(test); BOOST_TEST(s == in); } BOOST_AUTO_TEST_CASE(http_base64_2) { using namespace std::literals; const std::string tests[] = { "1", "12", "123", "1234", { '\0' }, { '\0', '\001' }, { '\0', '\001', '\002' } }; for (const auto& test: tests) { auto enc = zeep::encode_base64(test, 76); auto dec = zeep::decode_base64(enc); BOOST_TEST(dec == test); } } BOOST_AUTO_TEST_CASE(connection_read) { #pragma message("write test for avail/used") } BOOST_AUTO_TEST_CASE(request_params_1) { zh::request req{ "GET", "http://www.example.com/index?a=A;b=B&c=C%24"}; BOOST_CHECK_EQUAL(req.get_parameter("a"), "A"); BOOST_CHECK_EQUAL(req.get_parameter("b"), "B"); BOOST_CHECK_EQUAL(req.get_parameter("c"), "C$"); } BOOST_AUTO_TEST_CASE(webapp_6) { zh::request req("GET", "/", {1, 0}, { { "Content-Type", "multipart/form-data; boundary=xYzZY" } }, "--xYzZY\r\nContent-Disposition: form-data; name=\"pdb-file\"; filename=\"1cbs.cif.gz\"\r\nContent-Encoding: gzip\r\nContent-Type: chemical/x-cif\r\n\r\nhello, world!\n\r\n--xYzZY\r\nContent-Disposition: form-data; name=\"mtz-file\"; filename=\"1cbs_map.mtz\"\r\nContent-Type: text/plain\r\n\r\nAnd again, hello!\n\r\n--xYzZY--\r\n"); auto fp1 = req.get_file_parameter("pdb-file"); BOOST_CHECK_EQUAL(fp1.filename, "1cbs.cif.gz"); BOOST_CHECK_EQUAL(fp1.mimetype, "chemical/x-cif"); BOOST_CHECK_EQUAL(std::string(fp1.data, fp1.data + fp1.length), "hello, world!\n"); auto fp2 = req.get_file_parameter("mtz-file"); BOOST_CHECK_EQUAL(fp2.filename, "1cbs_map.mtz"); BOOST_CHECK_EQUAL(fp2.mimetype, "text/plain"); BOOST_CHECK_EQUAL(std::string(fp2.data, fp2.data + fp2.length), "And again, hello!\n"); } // a very simple controller, serving only /test/one and /test/three class my_controller : public zeep::http::controller { public: my_controller() : zeep::http::controller("/test") {} virtual bool handle_request(zeep::http::request& req, zeep::http::reply& rep) { bool result = false; if (req.get_uri() == "/test/one" or req.get_uri() == "/test/three") { rep = zeep::http::reply::stock_reply(zeep::http::ok); result = true; } return result; } }; BOOST_AUTO_TEST_CASE(webapp_7) { // start up a http server and stop it again zh::daemon d([]() { auto s = new zh::server; s->add_controller(new my_controller()); return s; }, "zeep-http-test"); std::random_device rng; uint16_t port = 1024 + (rng() % 10240); std::thread t(std::bind(&zh::daemon::run_foreground, d, "::", port)); std::cerr << "started daemon at port " << port << std::endl; using namespace std::chrono_literals; std::this_thread::sleep_for(1s); try { auto reply = simple_request(port, "GET / HTTP/1.0\r\n\r\n"); BOOST_TEST(reply.get_status() == zh::not_found); reply = simple_request(port, "XXX / HTTP/1.0\r\n\r\n"); BOOST_TEST(reply.get_status() == zh::bad_request); reply = simple_request(port, "GET /test/one HTTP/1.0\r\n\r\n"); BOOST_TEST(reply.get_status() == zh::ok); reply = simple_request(port, "GET /test/two HTTP/1.0\r\n\r\n"); BOOST_TEST(reply.get_status() == zh::not_found); } catch (const std::exception& e) { std::cerr << e.what() << std::endl; } zeep::signal_catcher::signal_hangup(t); t.join(); } // authentication test BOOST_AUTO_TEST_CASE(server_with_security_1) { class my_user_service : public zeep::http::user_service { virtual zeep::http::user_details load_user(const std::string& username) const { if (username != "scott") throw zeep::http::user_unknown_exception(); return { username, m_pwenc.encode("tiger"), { "admin" } }; } zeep::http::pbkdf2_sha256_password_encoder m_pwenc; } users; std::string secret = "geheim"; zh::daemon d([&]() { auto s = new zh::server(new zeep::http::security_context(secret, users, new zeep::http::pbkdf2_sha256_password_encoder())); s->add_controller(new my_controller()); s->add_controller(new zeep::http::login_controller()); auto& sec = s->get_security_context(); sec.add_rule("/test/three", "admin"); sec.add_rule("/**", {}); return s; }, "zeep-http-test"); std::random_device rng; uint16_t port = 1024 + (rng() % 10240); std::thread t(std::bind(&zh::daemon::run_foreground, d, "::", port)); std::cerr << "started daemon at port " << port << std::endl; using namespace std::chrono_literals; std::this_thread::sleep_for(1s); try { auto reply = simple_request(port, "XXX / HTTP/1.0\r\n\r\n"); BOOST_TEST(reply.get_status() == zh::bad_request); reply = simple_request(port, "GET /test/one HTTP/1.0\r\n\r\n"); BOOST_TEST(reply.get_status() == zh::ok); reply = simple_request(port, "GET /test/two HTTP/1.0\r\n\r\n"); BOOST_TEST(reply.get_status() == zh::not_found); reply = simple_request(port, "GET /test/three HTTP/1.0\r\n\r\n"); BOOST_TEST(reply.get_status() == zh::unauthorized); // now try to log in and see if we can access all of the above // we use a request object now, to store cookies zeep::http::request req{ "POST", "/login", {1, 0}, { { "Content-Type", "application/x-www-form-urlencoded" } }, "username=scott&password=tiger" }; // first test is to send a POST to login, but without the csrf token reply = simple_request(port, req); BOOST_TEST(reply.get_status() == zh::forbidden); // OK, fetch the login form then and pry the csrf token out of it req.set_method("GET"); reply = simple_request(port, req); BOOST_TEST(reply.get_status() == zh::ok); // copy the cookie auto csrfCookie = reply.get_cookie("csrf-token"); req.set_cookie("csrf-token", csrfCookie); zeep::xml::document form(reply.get_content()); auto csrf = form.find_first("//input[@name='_csrf']"); BOOST_REQUIRE(csrf != nullptr); BOOST_TEST(form.find_first("//input[@name='username']") != nullptr); BOOST_TEST(form.find_first("//input[@name='password']") != nullptr); BOOST_TEST(csrf->get_attribute("value") == csrfCookie); // try again to authenticate req.set_method("POST"); req.set_content("username=scott&password=tiger&_csrf=" + csrfCookie, "application/x-www-form-urlencoded"); reply = simple_request(port, req); BOOST_TEST(reply.get_status() == zh::moved_temporarily); auto accessToken = reply.get_cookie("access_token"); req.set_cookie("access_token", accessToken); // now try that admin page again req.set_uri("/test/three"); req.set_method("GET"); reply = simple_request(port, req); BOOST_TEST(reply.get_status() == zh::ok); } catch (const std::exception& e) { std::cerr << e.what() << std::endl; } zeep::signal_catcher::signal_hangup(t); t.join(); } libzeep-5.1.8/lib-http/test/processor-test.cpp0000664000175000017500000005635114324170113021231 0ustar maartenmaarten#include #define BOOST_TEST_MODULE Processor_Test #include #include #include #include #include using namespace std; #ifndef DOCROOT #define DOCROOT "./lib-http/test/" #endif using json = zeep::json::element; using namespace zeep::xml::literals; void process_and_compare(zeep::xml::document& a, zeep::xml::document& b, const zeep::http::scope& scope = {}) { zeep::http::template_processor p(DOCROOT); zeep::http::tag_processor_v2 tp; tp.process_xml(a.child(), scope, "", p); BOOST_TEST(a == b); if (a != b) { cerr << string(80, '-') << endl << a << endl << string(80, '-') << endl << b << endl << string(80, '-') << endl; } } BOOST_AUTO_TEST_CASE(test_0) { std::string s = "application/pdf"; BOOST_TEST(not zeep::http::process_el({}, s)); BOOST_TEST(s == "application/pdf"); } BOOST_AUTO_TEST_CASE(test_1) { auto doc = R"(
)"_xml; auto doc_test = R"(
)"_xml; process_and_compare(doc, doc_test); } BOOST_AUTO_TEST_CASE(test_2) { auto doc = R"( )"_xml; auto doc_test = R"( )"_xml; zeep::http::scope scope; scope.put("b", zeep::json::element{ "a", "b", "c"}); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_3) { auto doc = R"( )"_xml; auto doc_test = R"( <hallo, wereld!> )"_xml; zeep::http::scope scope; scope.put("x", ""); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_3a) { auto doc = R"( )"_xml; auto doc_test = R"( hallo, wereld! )"_xml; zeep::http::scope scope; scope.put("x", "hallo, wereld!"); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_4) { auto doc = R"( [[${x}]] )"_xml; auto doc_test = R"( hallo, wereld! )"_xml; zeep::http::scope scope; scope.put("x", "hallo, wereld!"); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_5) { auto doc = R"( [(${x})] )"_xml; auto doc_test = R"( hallo, wereld! )"_xml; zeep::http::scope scope; scope.put("x", "hallo, wereld!"); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_6) { auto doc = R"( )"_xml; auto doc_test = R"( )"_xml; zeep::http::scope scope; scope.put("x", "\"'hallo, wereld!'\""); scope.put("y", "Een \"moeilijke\" string"); scope.put("a", zeep::json::element{ "a", "b", "c"}); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_8) { auto doc = R"( )"_xml; auto doc_test = R"( abc )"_xml; zeep::http::scope scope; scope.put("a", zeep::json::element{ "a", "b", "c"}); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_8a) { auto doc = R"( )"_xml; auto doc_test = R"( abc )"_xml; zeep::http::scope scope; scope.put("a", zeep::json::element{ "a", "b", "c"}); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_9) { auto doc = R"( )"_xml; auto doc_test = R"( {"count":1,"current":"a","even":false,"first":true,"index":0,"last":false,"odd":true,"size":3}{"count":2,"current":"b","even":true,"first":false,"index":1,"last":false,"odd":false,"size":3}{"count":3,"current":"c","even":false,"first":false,"index":2,"last":true,"odd":true,"size":3} )"_xml; zeep::http::scope scope; scope.put("a", zeep::json::element{ "a", "b", "c"}); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_10) { auto doc = R"( )"_xml; auto doc_test = R"( )"_xml; zeep::http::scope scope; scope.put("id", "my-id-101"); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_11) { auto doc = R"( )"_xml; auto doc_test = R"( )"_xml; zeep::http::scope scope; scope.put("id", "my-id-101"); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_12) { auto doc = R"( )"_xml; auto doc_test = R"( )"_xml; zeep::http::scope scope; scope.put("ok", true); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_13) { auto doc = R"( )"_xml; auto doc_test = R"( s )"_xml; zeep::http::scope scope; scope.put("ok", true); scope.put("s", "s"); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_14) { try { std::locale l("nl_NL.UTF-8"); auto doc = R"( )"_xml; auto doc_test = R"( 7 augustus 2019, 12:14 )"_xml; zeep::http::template_processor p(DOCROOT); zeep::http::tag_processor_v2 tp; zeep::http::request req("GET", "/", { 1, 0 }, { { "Accept-Language", "nl, en-US;q=0.7, en;q=0.3" }}, ""); zeep::http::scope scope(req); scope.put("ok", true); process_and_compare(doc, doc_test, scope); } catch (const std::runtime_error&) { std::cerr << "skipping test 14 since locale nl_NL.UTF-8 is not available" << std::endl; } } BOOST_AUTO_TEST_CASE(test_15) { #if not __APPLE__ try { std::locale l("da_DK.UTF-8"); auto doc = R"( )"_xml; auto doc_test = R"( 7 august 2019, 12:14 )"_xml; zeep::http::template_processor p(DOCROOT); zeep::http::tag_processor_v2 tp; zeep::http::request req("GET", "/", { 1, 0 }, { { "Accept-Language", "da, en-US;q=0.7, en;q=0.3" }}, ""); zeep::http::scope scope(req); scope.put("ok", true); process_and_compare(doc, doc_test, scope); } catch (const std::runtime_error&) { std::cerr << "skipping test 15 since locale da_DK.UTF-8 is not available" << std::endl; } #endif } BOOST_AUTO_TEST_CASE(test_16) { try { std::locale l("en_GB.UTF-8"); auto doc = R"( )"_xml; auto doc_test = R"( 12,345.68 12.06 K )"_xml; zeep::http::request req("GET", "/", { 1, 0 }, { { "Accept-Language", "en-GB, en-US;q=0.7, en;q=0.3" }}, ""); zeep::http::scope scope(req); scope.put("ok", true); process_and_compare(doc, doc_test, scope); } catch (const std::runtime_error&) { std::cerr << "skipping test 16 since locale en_GB.UTF-8 is not available" << std::endl; } } // BOOST_AUTO_TEST_CASE(test_17) // { // try // { // std::locale l("fr_FR.UTF-8"); // auto doc = R"( // // // // )"_xml; // auto doc_test = R"( // // 12 345,68 // // )"_xml; // zeep::http::request req; // req.headers.push_back({ "Accept-Language", "fr_FR, en-US;q=0.7, en;q=0.3" }); // zeep::http::scope scope(req); // scope.put("ok", true); // process_and_compare(doc, doc_test, scope); // } // catch (const std::runtime_error& e) // { // std::cerr << "skipping test 17 since locale fr_FR.UTF-8 is not available" << std::endl; // } // } BOOST_AUTO_TEST_CASE(test_18) { auto doc = R"( )"_xml; auto doc_test = R"( x )"_xml; zeep::http::scope scope; json p; p["n"] = "x"; scope.put("p", p); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_19) { auto doc = R"( )"_xml; auto doc_test = R"( )"_xml; zeep::http::scope scope; scope.put("b", true); scope.put("c", false); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_20) { auto doc = R"(
1
2
3
*
1
2
3
*
1
2
2
3
*
)"_xml; auto doc_test = R"(
2
2
2
)"_xml; zeep::http::scope scope; scope.put("a", 2); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_21) { auto doc = R"( )"_xml; auto doc_test = R"( a-b )"_xml; zeep::http::scope scope; scope.put("a", "a"); scope.put("b", "b"); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_22) { auto doc = R"(
hello world
)"_xml; auto doc_test = R"(
hello world
hello world
hello world
hello world
hello world
hello world
hello world
fragment-1
fragment-1
fragment-1
fragment-2
fragment-2
fragment-2
)"_xml; zeep::http::scope scope; scope.put("b", "b"); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_22a) { zeep::http::template_processor p(DOCROOT); zeep::xml::document doc1; p.load_template("fragment-file :: frag1", doc1); auto doct = R"(
fragment-1
)"_xml; BOOST_TEST(doc1 == doct); if (doc1 != doct) { std::cerr << doc1 << std::endl << doct << std::endl; } } BOOST_AUTO_TEST_CASE(test_23) { auto doc = R"( )"_xml; auto doc_test = R"( link link?b=b link/b link?b=b&test=test%26 link/bb link?c=bla%20met%20%3c%20en%20%3d )"_xml; zeep::http::scope scope; scope.put("b", "b"); scope.put("c", "bla met < en ="); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_24) { auto doc = R"( )"_xml; auto doc_test = R"( een twee drie een b en bla met < en = een twee b;:;bla met < en = )"_xml; zeep::http::scope scope; scope.put("b", "b"); scope.put("c", "bla met < en ="); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_25) { auto doc = R"( )"_xml; auto doc_test = R"( aap noot mies )"_xml; process_and_compare(doc, doc_test); } BOOST_AUTO_TEST_CASE(test_26) { auto doc = R"( )"_xml; auto doc_test = R"( )"_xml; process_and_compare(doc, doc_test); } BOOST_AUTO_TEST_CASE(test_27) { auto doc = R"( )"_xml; auto doc_test = R"( Error processing element 'span': Assertion failed for '1==0' )"_xml; process_and_compare(doc, doc_test); } BOOST_AUTO_TEST_CASE(test_28) { auto doc = R"( in een blokmet een em )"_xml; auto doc_test = R"( in een blokmet een em )"_xml; process_and_compare(doc, doc_test); } BOOST_AUTO_TEST_CASE(test_29) { auto doc = R"xml( fragment ref
)xml"_xml; auto doc_test = R"( fragmentref fragmentref fragmentref fragmentref )"_xml; process_and_compare(doc, doc_test); } BOOST_AUTO_TEST_CASE(test_30) { auto doc = R"xml( ref-1
The div
)xml"_xml; auto doc_test = R"(
The div
The div
)"_xml; process_and_compare(doc, doc_test); } BOOST_AUTO_TEST_CASE(test_31) { auto doc = R"xml(
De titel is vervangen
)xml"_xml; auto doc_test = R"( )"_xml; process_and_compare(doc, doc_test); } BOOST_AUTO_TEST_CASE(test_32) { auto doc = R"xml( ref-1
)xml"_xml; auto doc_test = R"(
ref-1
)"_xml; process_and_compare(doc, doc_test); } BOOST_AUTO_TEST_CASE(test_32a) { auto doc = R"xml( frag
)xml"_xml; auto doc_test = R"( frag
frag
)"_xml; process_and_compare(doc, doc_test); } BOOST_AUTO_TEST_CASE(test_32b) { auto doc = R"xml( )xml"_xml; auto doc_test = R"( hoi )"_xml; zeep::http::scope scope; scope.put("h", "hoi"); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_32c) { auto doc = R"xml( )xml"_xml; auto doc_test = R"( hoi )"_xml; zeep::http::scope scope; scope.put("h", "hoi"); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_32d) { auto doc = R"xml( )xml"_xml; auto doc_test = R"( hoi )"_xml; zeep::http::scope scope; zeep::json::element h{ { "txt", "hoi" } }; scope.put("h", h); process_and_compare(doc, doc_test, scope); } // BOOST_AUTO_TEST_CASE(test_32d) // { // auto doc = R"xml( // // // // // )xml"_xml; // auto doc_test = R"( // // // hoi // )"_xml; // zeep::http::scope scope; // scope.put("h", "hoi"); // process_and_compare(doc, doc_test, scope); // } BOOST_AUTO_TEST_CASE(test_33) { auto doc = R"xml(
)xml"_xml; auto doc_test = R"(
)"_xml; process_and_compare(doc, doc_test); } BOOST_AUTO_TEST_CASE(test_34) { auto doc = R"xml( )xml"_xml; auto doc_test = R"( S T )"_xml; zeep::http::scope scope; json j; j.push_back(json{ { "s", "S" } }); j.push_back(json{ { "s", "T" } }); scope.put("a", j); process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_35) { auto doc = R"xml( test [(${a}.${b})] )xml"_xml; auto doc_test = R"( test Error processing ${a}.${b} )"_xml; zeep::http::scope scope; scope.put("a", "aap"); scope.put("b", "noot"); zeep::http::template_processor p(DOCROOT); zeep::http::tag_processor_v2 tp; process_and_compare(doc, doc_test, scope); } BOOST_AUTO_TEST_CASE(test_36) { auto doc = R"xml( )xml"_xml; auto doc_test = R"( )"_xml; zeep::http::scope scope; scope.put("x", 2.0); zeep::http::template_processor p(DOCROOT); zeep::http::tag_processor_v2 tp; process_and_compare(doc, doc_test, scope); } libzeep-5.1.8/lib-http/test/rest-test.cpp0000664000175000017500000001535014324170113020161 0ustar maartenmaarten#include #include #include #include #include "../src/signals.hpp" #define BOOST_TEST_MODULE REST_Test #include #include "client-test-code.hpp" using namespace std; namespace z = zeep; namespace zx = zeep::xml; namespace zh = zeep::http; struct Opname { string id; map standen; template void serialize(Archive& ar, unsigned long /*version*/) { ar & zeep::make_nvp("id", id) & zeep::make_nvp("standen", standen); } }; enum class aggregatie_type { dag, week, maand, jaar }; void to_element(zeep::json::element& e, aggregatie_type aggregatie) { switch (aggregatie) { case aggregatie_type::dag: e = "dag"; break; case aggregatie_type::week: e = "week"; break; case aggregatie_type::maand: e = "maand"; break; case aggregatie_type::jaar: e = "jaar"; break; } } void from_element(const zeep::json::element& e, aggregatie_type& aggregatie) { if (e == "dag") aggregatie = aggregatie_type::dag; else if (e == "week") aggregatie = aggregatie_type::week; else if (e == "maand") aggregatie = aggregatie_type::maand; else if (e == "jaar") aggregatie = aggregatie_type::jaar; else throw runtime_error("Ongeldige aggregatie"); } enum class grafiek_type { warmte, electriciteit, electriciteit_hoog, electriciteit_laag, electriciteit_verbruik, electriciteit_levering, electriciteit_verbruik_hoog, electriciteit_verbruik_laag, electriciteit_levering_hoog, electriciteit_levering_laag }; void to_element(zeep::json::element& e, grafiek_type type) { switch (type) { case grafiek_type::warmte: e = "warmte"; break; case grafiek_type::electriciteit: e = "electriciteit"; break; case grafiek_type::electriciteit_hoog: e = "electriciteit-hoog"; break; case grafiek_type::electriciteit_laag: e = "electriciteit-laag"; break; case grafiek_type::electriciteit_verbruik: e = "electriciteit-verbruik"; break; case grafiek_type::electriciteit_levering: e = "electriciteit-levering"; break; case grafiek_type::electriciteit_verbruik_hoog: e = "electriciteit-verbruik-hoog"; break; case grafiek_type::electriciteit_verbruik_laag: e = "electriciteit-verbruik-laag"; break; case grafiek_type::electriciteit_levering_hoog: e = "electriciteit-levering-hoog"; break; case grafiek_type::electriciteit_levering_laag: e = "electriciteit-levering-laag"; break; } } void from_element(const zeep::json::element& e, grafiek_type& type) { if (e == "warmte") type = grafiek_type::warmte; else if (e == "electriciteit") type = grafiek_type::electriciteit; else if (e == "electriciteit-hoog") type = grafiek_type::electriciteit_hoog; else if (e == "electriciteit-laag") type = grafiek_type::electriciteit_laag; else if (e == "electriciteit-verbruik") type = grafiek_type::electriciteit_verbruik; else if (e == "electriciteit-levering") type = grafiek_type::electriciteit_levering; else if (e == "electriciteit-verbruik-hoog") type = grafiek_type::electriciteit_verbruik_hoog; else if (e == "electriciteit-verbruik-laag") type = grafiek_type::electriciteit_verbruik_laag; else if (e == "electriciteit-levering-hoog") type = grafiek_type::electriciteit_levering_hoog; else if (e == "electriciteit-levering-laag") type = grafiek_type::electriciteit_levering_laag; else throw runtime_error("Ongeldige grafiek type"); } struct GrafiekData { string type; map punten; map vsGem; template void serialize(Archive& ar, unsigned long) { ar & zeep::make_nvp("type", type) & zeep::make_nvp("punten", punten) & zeep::make_nvp("vsgem", vsGem); } }; using Opnames = std::vector; class e_rest_controller : public zeep::http::rest_controller { public: e_rest_controller() : zeep::http::rest_controller("ajax") { map_post_request("opname", &e_rest_controller::post_opname, "opname"); map_put_request("opname/{id}", &e_rest_controller::put_opname, "id", "opname"); map_get_request("opname/{id}", &e_rest_controller::get_opname, "id"); map_get_request("opname", &e_rest_controller::get_all_opnames); map_delete_request("opname/{id}", &e_rest_controller::delete_opname, "id"); map_get_request("data/{type}/{aggr}", &e_rest_controller::get_grafiek, "type", "aggr"); map_get_request("opname", &e_rest_controller::get_opnames); map_put_request("opnames", &e_rest_controller::set_opnames, "opnames"); map_get_request("all_data", &e_rest_controller::get_all_data); } // CRUD routines string post_opname(Opname opname) { return {}; } void put_opname(string opnameId, Opname opname) { {}; } Opnames get_opnames() { return { {}, {} }; } void set_opnames(Opnames opnames) { } Opname get_opname(string id) { if (id == "xxx") throw zeep::http::not_found; return {}; } Opname get_last_opname() { return {}; } vector get_all_opnames() { return {}; } void delete_opname(string id) { } GrafiekData get_grafiek(grafiek_type type, aggregatie_type aggregatie) { return{}; } zeep::http::reply get_all_data() { return { zeep::http::ok, { 1, 0 }, { { "Content-Length", "13" }, { "Content-Type", "text/plain" } }, "Hello, world!" }; } }; BOOST_AUTO_TEST_CASE(rest_1) { // simply see if the above compiles e_rest_controller rc; zeep::http::reply rep; boost::asio::io_context io_context; boost::asio::ip::tcp::socket s(io_context); zeep::http::request req{ "GET", "/ajax/all_data" }; BOOST_CHECK(rc.dispatch_request(s, req, rep)); BOOST_CHECK(rep.get_status() == zeep::http::ok); BOOST_CHECK(rep.get_content_type() == "text/plain"); } BOOST_AUTO_TEST_CASE(rest_2) { // start up a http server and stop it again zh::daemon d([]() { auto s = new zh::server; s->add_controller(new e_rest_controller()); return s; }, "zeep-http-test"); std::random_device rng; uint16_t port = 1024 + (rng() % 10240); std::thread t(std::bind(&zh::daemon::run_foreground, d, "::", port)); std::cerr << "started daemon at port " << port << std::endl; using namespace std::chrono_literals; std::this_thread::sleep_for(1s); try { auto rep = simple_request(port, "GET /ajax/all_data HTTP/1.0\r\n\r\n"); BOOST_CHECK(rep.get_status() == zeep::http::ok); BOOST_CHECK(rep.get_content_type() == "text/plain"); auto reply = simple_request(port, "GET /ajax/xxxx HTTP/1.0\r\n\r\n"); BOOST_TEST(reply.get_status() == zh::not_found); reply = simple_request(port, "GET /ajax/opname/xxx HTTP/1.0\r\n\r\n"); BOOST_TEST(reply.get_status() == zh::not_found); BOOST_CHECK_EQUAL(reply.get_content_type(), "application/json"); } catch (const std::exception& e) { std::cerr << e.what() << std::endl; } zeep::signal_catcher::signal_hangup(t); t.join(); }libzeep-5.1.8/lib-http/test/rsrc_webapp-test.cpp0000664000175000017500000000357614324170113021522 0ustar maartenmaarten// rsrc_webapp-test #include #include #include #include #include #include #include #include #include #define BOOST_TEST_MODULE Processor_Test #include using namespace std; using json = zeep::json::element; using namespace zeep::xml::literals; BOOST_AUTO_TEST_CASE(test_22) { auto doc = R"(
hello world
)"_xml; auto doc_test = R"(
hello world
hello world
hello world
hello world
hello world
hello world
hello world
fragment-1
fragment-1
fragment-1
fragment-2
fragment-2
fragment-2
)"_xml; zeep::http::tag_processor_v2 tp; zeep::http::rsrc_based_html_template_processor p; zeep::http::scope scope; scope.put("b", "b"); tp.process_xml(doc.child(), scope, "", p); BOOST_TEST(doc == doc_test); if (doc != doc_test) { cerr << doc << endl << doc_test << endl; } }libzeep-5.1.8/lib-http/test/security-test.cpp0000664000175000017500000000270714324170113021055 0ustar maartenmaarten#include #define BOOST_TEST_MODULE Security_Test #include #include #include #include #include #include #include #include #include #include #include #include #include "client-test-code.hpp" #include "../src/signals.hpp" namespace z = zeep; namespace zx = zeep::xml; namespace zh = zeep::http; BOOST_AUTO_TEST_CASE(sec_1) { zh::reply rep; BOOST_CHECK_THROW(rep = zh::reply::redirect("http://example.com\r\nSet-Cookie: wrong=false;"), zeep::exception); BOOST_CHECK_THROW(rep = zh::reply::redirect("http://example.com%0D%0ASet-Cookie: wrong=false;"), zeep::exception); rep = zh::reply::redirect("http://example.com/%0D%0ASet-Cookie:%20wrong=false;"); BOOST_CHECK_EQUAL(rep.get_header("Location"), "http://example.com/%0D%0ASet-Cookie:%20wrong=false;"); rep = zh::reply::redirect("http://example.com"); BOOST_CHECK_EQUAL(rep.get_header("Location"), "http://example.com"); /* std::cerr << rep << std::endl; std::ostringstream os; os << rep; zh::reply_parser p; std::string s = os.str(); zeep::char_streambuf sb(s.c_str(), s.length()); p.parse(sb); auto r2 = p.get_reply(); std::cerr << r2 << std::endl; BOOST_CHECK(r2.get_cookie("wrong").empty()); */ } libzeep-5.1.8/lib-http/test/soap-test.cpp0000664000175000017500000001304214324170113020142 0ustar maartenmaarten#include #include #define BOOST_TEST_MODULE SOAP_Test #include using namespace std; namespace z = zeep; namespace zx = zeep::xml; namespace zh = zeep::http; struct TestStruct { int a; string s; template void serialize(Archive& ar, unsigned long) { ar & zx::make_element_nvp("a", a) & zx::make_element_nvp("s", s); } }; struct my_test_controller : public zh::soap_controller { my_test_controller() : zh::soap_controller("ws", "http://www.hekkelman.com/libzeep/soap") { set_service("testService"); map_action("Test", &my_test_controller::test_method_1, "x"); map_action("Test2", &my_test_controller::test_method_2, "s"); map_action("Test3", &my_test_controller::test_method_3, "t"); } int test_method_1(int x) { BOOST_TEST(x == 42); return x; } void test_method_2(const std::string& s) { BOOST_TEST(s == "42"); } TestStruct test_method_3(const TestStruct& t) { return { t.a + 1, t.s + to_string(t.a) }; } }; BOOST_AUTO_TEST_CASE(soap_1) { using namespace zx::literals; my_test_controller srv; auto payload_test_1 = R"( 42 )"; zh::request req("POST", "/ws", { 1, 0 }, {}, payload_test_1); zh::reply rep; srv.handle_request(req, rep); BOOST_TEST(rep.get_status() == 200); std::stringstream srep; srep << rep; std::string line; while (getline(srep, line)) { if (line.empty() or line == "\r") break; } zx::document repDoc(srep); auto test = R"( 42 )"_xml; BOOST_TEST(repDoc == test); } BOOST_AUTO_TEST_CASE(soap_2) { using namespace zx::literals; my_test_controller srv; auto payload_test = R"( 42 )"; zh::request req("POST", "/ws", { 1, 0 }, {}, payload_test); zh::reply rep; srv.handle_request(req, rep); BOOST_TEST(rep.get_status() == 200); std::stringstream srep; srep << rep; std::string line; while (getline(srep, line)) { if (line.empty() or line == "\r") break; } zx::document repDoc(srep); auto test = R"( )"_xml; BOOST_TEST(repDoc == test); } BOOST_AUTO_TEST_CASE(soap_3) { using namespace zx::literals; my_test_controller srv; auto payload_test = R"( 42 42 )"; zh::request req("POST", "/ws", { 1, 0 }, {}, payload_test); zh::reply rep; srv.handle_request(req, rep); BOOST_TEST(rep.get_status() == 200); std::stringstream srep; srep << rep; std::string line; while (getline(srep, line)) { if (line.empty() or line == "\r") break; } zx::document repDoc(srep); auto test = R"( 434242 )"_xml; BOOST_TEST(repDoc == test); } BOOST_AUTO_TEST_CASE(soap_3f) { using namespace zx::literals; my_test_controller srv; auto payload_test = R"( 42 42 )"; zh::request req("POST", "/ws", { 1, 0 }, {}, payload_test); zh::reply rep; srv.handle_request(req, rep); BOOST_TEST(rep.get_status() == 500); std::stringstream srep; srep << rep; std::string line; while (getline(srep, line)) { if (line.empty() or line == "\r") break; } zx::document repDoc(srep); auto test = R"( soap:Server Invalid namespace for request )"_xml; BOOST_TEST(repDoc == test); } BOOST_AUTO_TEST_CASE(soap_w1) { using namespace zx::literals; my_test_controller srv; zeep::xml::document doc; doc.emplace_back(srv.make_wsdl()); cerr << setw(2) << doc << endl; }libzeep-5.1.8/lib-http/test/uri-test.cpp0000664000175000017500000000512014324170113017775 0ustar maartenmaarten#define BOOST_TEST_MODULE URI_Test #include #include namespace z = zeep; BOOST_AUTO_TEST_CASE(uri_1) { zeep::http::is_valid_uri("http://a/"); zeep::http::is_valid_uri("http://a:80/"); zeep::http::is_valid_uri("http://a.b/"); zeep::http::is_valid_uri("http://a/b"); zeep::http::is_valid_uri("http://user@a/b"); zeep::http::is_valid_uri("http://user:pass@a/b"); zeep::http::is_valid_uri("http://user:pass@a:80/b"); zeep::http::is_valid_uri("http://a?q"); zeep::http::is_valid_uri("http://a#f"); zeep::http::is_valid_uri("http://a/b?q"); zeep::http::is_valid_uri("http://a/b#f"); zeep::http::is_valid_uri("http://a/b/c?q"); zeep::http::is_valid_uri("http://a/b/c#f"); zeep::http::is_valid_uri("http://a/b/c.d?q"); zeep::http::is_valid_uri("http://a/b/c.d#f"); zeep::http::is_valid_uri("http://user@localhost/segment/index.html#frag"); zeep::http::is_valid_uri("http://user@[::1]/segment/index.html#frag"); zeep::http::is_valid_uri("http://user:pass@[::1]/segment/index.html#frag"); zeep::http::is_valid_uri("http://user@localhost/segment/index.html?query"); zeep::http::is_valid_uri("http://user@[::1]/segment/index.html?query"); zeep::http::is_valid_uri("http://user:pass@[::1]/segment/index.html?query"); zeep::http::is_valid_uri("http://user@localhost/segment/index.html?query#frag"); zeep::http::is_valid_uri("http://user@[::1]/segment/index.html?query#frag"); zeep::http::is_valid_uri("http://user:pass@[::1]/segment/index.html?query#frag"); } BOOST_AUTO_TEST_CASE(uri_2) { zeep::http::uri url("http://user:pass@[::1]/segment/index.html?query#frag"); BOOST_CHECK_EQUAL(url.get_scheme(), "http"); BOOST_CHECK_EQUAL(url.get_host(), "::1"); BOOST_CHECK_EQUAL(url.get_path().generic_string(), "segment/index.html"); BOOST_CHECK_EQUAL(url.get_query(), "query"); BOOST_CHECK_EQUAL(url.get_fragment(), "frag"); } BOOST_AUTO_TEST_CASE(uri_3) { zeep::http::uri url("http://www.example.com/~maarten"); BOOST_CHECK_EQUAL(url.get_path().generic_string(), "~maarten"); } BOOST_AUTO_TEST_CASE(uri_4) { zeep::http::uri url("http://www.example.com/%7Emaarten"); BOOST_CHECK_EQUAL(url.get_path().generic_string(), "~maarten"); } BOOST_AUTO_TEST_CASE(uri_5) { // This is a bit dubious... but it is valid according to RFC3986 zeep::http::uri uri("http://a/b%0D%0ASet-Cookie:%20false"); BOOST_CHECK_EQUAL(uri.get_path().generic_string(), "b\r\nSet-Cookie: false"); } BOOST_AUTO_TEST_CASE(uri_6) { zeep::http::uri uri("file:/a/b"); BOOST_CHECK(uri.is_absolute()); zeep::http::uri uri2("file://a/b"); BOOST_CHECK(not uri2.is_absolute()); }libzeep-5.1.8/lib-http/test/webapp-test.cpp0000664000175000017500000002000514324170113020453 0ustar maartenmaarten#include #define BOOST_TEST_MODULE WebApp_Test #include #include #include #include #include #include #include #include #include #include "client-test-code.hpp" #include "../src/signals.hpp" using namespace std; namespace z = zeep; namespace zx = zeep::xml; using webapp = zeep::http::html_controller; void compare(zeep::xml::document& a, zeep::xml::document& b) { BOOST_CHECK_EQUAL(a, b); if (a != b) { cerr << string(80, '-') << endl << a << endl << string(80, '-') << endl << b << endl << string(80, '-') << endl; } } BOOST_AUTO_TEST_CASE(webapp_1) { class my_webapp : public webapp { public: my_webapp() { // mount("test", &my_webapp::handle_test); mount_get("test", &my_webapp::handle_get_test); mount_post("test", &my_webapp::handle_post_test); } virtual void handle_test(const zeep::http::request& request, const zeep::http::scope& scope, zeep::http::reply& reply) { reply = zeep::http::reply::stock_reply(zeep::http::ok); } virtual void handle_get_test(const zeep::http::request& request, const zeep::http::scope& scope, zeep::http::reply& reply) { reply = zeep::http::reply::stock_reply(zeep::http::ok); reply.set_content("get", "text/plain"); } virtual void handle_post_test(const zeep::http::request& request, const zeep::http::scope& scope, zeep::http::reply& reply) { reply = zeep::http::reply::stock_reply(zeep::http::ok); reply.set_content("post", "text/plain"); } } app; zeep::http::request req("GET", "/test", { 1, 0 }); zeep::http::reply rep; app.handle_request(req, rep); BOOST_CHECK_EQUAL(rep.get_status(), zeep::http::ok); BOOST_CHECK_EQUAL(rep.get_content(), "get"); req.set_method("POST"); app.handle_request(req, rep); BOOST_CHECK_EQUAL(rep.get_status(), zeep::http::ok); BOOST_CHECK_EQUAL(rep.get_content(), "post"); req.set_method("DELETE"); app.handle_request(req, rep); BOOST_CHECK_EQUAL(rep.get_status(), zeep::http::not_found); } // BOOST_AUTO_TEST_CASE(webapp_2) // { // webapp app; // app.mount("test", &zeep::http::controller::handle_file); // zeep::http::request req; // req.method = zeep::"GET"; // req.set_uri("/test"); // zeep::http::reply rep; // app.handle_request(req, rep); // BOOST_CHECK_EQUAL(rep.get_status(), zeep::http::internal_server_error); // } // BOOST_AUTO_TEST_CASE(webapp_4) // { // using namespace zeep::xml::literals; // webapp app; // zx::document doc; // app.load_template("fragment-file :: frag1", doc); // auto test1 = R"( //
fragment-1
)"_xml; // compare(doc, test1); // doc.clear(); // app.load_template("fragment-file :: #frag2", doc); // auto test2 = R"( //
fragment-2
)"_xml; // compare(doc, test2); // } // test various ways of mounting handlers BOOST_AUTO_TEST_CASE(webapp_5) { class my_webapp : public webapp { public: my_webapp() { mount("test", &my_webapp::handle_test1); mount("*/*.x", &my_webapp::handle_test2); mount("**/*.x", &my_webapp::handle_test2b); mount("test/*", &my_webapp::handle_test3); mount("test/**", &my_webapp::handle_test4); mount("{css,scripts}/", &my_webapp::handle_testf); } virtual void handle_test1(const zeep::http::request& request, const zeep::http::scope& scope, zeep::http::reply& reply) { reply = zeep::http::reply::stock_reply(zeep::http::ok); reply.set_content("1", "text/plain"); } virtual void handle_test2(const zeep::http::request& request, const zeep::http::scope& scope, zeep::http::reply& reply) { reply = zeep::http::reply::stock_reply(zeep::http::ok); reply.set_content("2", "text/plain"); } virtual void handle_test2b(const zeep::http::request& request, const zeep::http::scope& scope, zeep::http::reply& reply) { reply = zeep::http::reply::stock_reply(zeep::http::ok); reply.set_content("2b", "text/plain"); } virtual void handle_test3(const zeep::http::request& request, const zeep::http::scope& scope, zeep::http::reply& reply) { reply = zeep::http::reply::stock_reply(zeep::http::ok); reply.set_content("3", "text/plain"); } virtual void handle_test4(const zeep::http::request& request, const zeep::http::scope& scope, zeep::http::reply& reply) { reply = zeep::http::reply::stock_reply(zeep::http::ok); reply.set_content("4", "text/plain"); } virtual void handle_testf(const zeep::http::request& request, const zeep::http::scope& scope, zeep::http::reply& reply) { reply = zeep::http::reply::stock_reply(zeep::http::ok); reply.set_content("f", "text/plain"); } } app; zeep::http::request req("GET", "/test"); zeep::http::reply rep; app.handle_request(req, rep); BOOST_CHECK_EQUAL(rep.get_status(), zeep::http::ok); BOOST_CHECK_EQUAL(rep.get_content(), "1"); req.set_uri("/test/x"); app.handle_request(req, rep); BOOST_CHECK_EQUAL(rep.get_status(), zeep::http::ok); BOOST_CHECK_EQUAL(rep.get_content(), "3"); req.set_uri("/test/x/x"); app.handle_request(req, rep); BOOST_CHECK_EQUAL(rep.get_status(), zeep::http::ok); BOOST_CHECK_EQUAL(rep.get_content(), "4"); req.set_uri("iew.x"); app.handle_request(req, rep); BOOST_CHECK_EQUAL(rep.get_status(), zeep::http::ok); BOOST_CHECK_EQUAL(rep.get_content(), "2b"); req.set_uri("x/iew.x"); app.handle_request(req, rep); BOOST_CHECK_EQUAL(rep.get_status(), zeep::http::ok); BOOST_CHECK_EQUAL(rep.get_content(), "2"); req.set_uri("x/x/iew.x"); app.handle_request(req, rep); BOOST_CHECK_EQUAL(rep.get_status(), zeep::http::ok); BOOST_CHECK_EQUAL(rep.get_content(), "2b"); req.set_uri("css/styles/my-style.css"); app.handle_request(req, rep); BOOST_CHECK_EQUAL(rep.get_status(), zeep::http::ok); BOOST_CHECK_EQUAL(rep.get_content(), "f"); req.set_uri("scripts/x.js"); app.handle_request(req, rep); BOOST_CHECK_EQUAL(rep.get_status(), zeep::http::ok); BOOST_CHECK_EQUAL(rep.get_content(), "f"); } class hello_controller : public zeep::http::html_controller { public: hello_controller() : zeep::http::html_controller("/") { mount("", &hello_controller::handle_index); } void handle_index(const zeep::http::request& req, const zeep::http::scope& scope, zeep::http::reply& rep) { rep = zeep::http::reply::stock_reply(zeep::http::ok); rep.set_content("Hello", "text/plain"); } }; BOOST_AUTO_TEST_CASE(webapp_8) { // start up a http server with a html_controller and stop it again zeep::http::daemon d([]() { auto server = new zeep::http::server; server->add_controller(new hello_controller()); return server; }, "zeep-http-test"); std::random_device rng; uint16_t port = 1024 + (rng() % 10240); std::thread t(std::bind(&zeep::http::daemon::run_foreground, d, "::", port)); std::cerr << "started daemon at port " << port << std::endl; using namespace std::chrono_literals; std::this_thread::sleep_for(2s); try { auto reply = simple_request(port, "GET / HTTP/1.0\r\n\r\n"); BOOST_TEST(reply.get_status() == zeep::http::ok); BOOST_TEST(reply.get_content() == "Hello"); } catch (const std::exception& ex) { std::cerr << ex.what() << std::endl; } zeep::signal_catcher::signal_hangup(t); t.join(); } BOOST_AUTO_TEST_CASE(webapp_10) { zeep::http::server srv; srv.add_controller(new hello_controller()); std::thread t([&srv]() mutable { using namespace std::chrono_literals; std::this_thread::sleep_for(2s); srv.stop(); }); std::random_device rng; uint16_t port = 1024 + (rng() % 10240); srv.bind("::", port); srv.run(2); t.join(); } // a more generic set of tests, should be in a separate file I guess BOOST_AUTO_TEST_CASE(split_1) { std::vector p; zeep::split(p, ",een,twee"s, ",", false); BOOST_ASSERT(p.size() == 3); BOOST_CHECK_EQUAL(p[0], ""); BOOST_CHECK_EQUAL(p[1], "een"); BOOST_CHECK_EQUAL(p[2], "twee"); zeep::split(p, ",een,twee"s, ",", true); BOOST_ASSERT(p.size() == 2); BOOST_CHECK_EQUAL(p[0], "een"); BOOST_CHECK_EQUAL(p[1], "twee"); }libzeep-5.1.8/lib-json/0000775000175000017500000000000014324170113014532 5ustar maartenmaartenlibzeep-5.1.8/lib-json/src/0000775000175000017500000000000014324170113015321 5ustar maartenmaartenlibzeep-5.1.8/lib-json/src/element.cpp0000664000175000017500000005266614324170113017475 0ustar maartenmaarten// Copyright Maarten L. Hekkelman. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include namespace zeep::json { /// empty factory with a certain type element::element(value_type t) : m_type(t), m_data(t) { validate(); } /// default factory element::element(std::nullptr_t) : element(value_type::null) { validate(); } element::element(const element& j) : m_type(j.m_type) { j.validate(); switch (m_type) { case value_type::null: break; case value_type::array: m_data = *j.m_data.m_array; break; case value_type::object: m_data = *j.m_data.m_object; break; case value_type::string: m_data = *j.m_data.m_string; break; case value_type::number_int: m_data = j.m_data.m_int; break; case value_type::number_float: m_data = j.m_data.m_float; break; case value_type::boolean: m_data = j.m_data.m_boolean; break; } validate(); } element::element(element&& j) : m_type(std::move(j.m_type)), m_data(std::move(j.m_data)) { j.validate(); j.m_type = value_type::null; j.m_data = {}; validate(); } element::element(initializer_list_t init) { bool isAnObject = std::all_of(init.begin(), init.end(), [](auto& ref) { return ref->is_array() and ref->m_data.m_array->size() == 2 and ref->m_data.m_array->front().is_string(); }); if (isAnObject) { m_type = value_type::object; m_data = value_type::object; for (auto& ref: init) { auto element = ref.data(); m_data.m_object->emplace( std::move(*element.m_data.m_array->front().m_data.m_string), std::move(element.m_data.m_array->back()) ); } } else { m_type = value_type::array; m_data.m_array = create(init.begin(), init.end()); } } element element::object(initializer_list_t init) { bool isAnObject = std::all_of(init.begin(), init.end(), [](auto& ref) { return ref->is_array() and ref->m_data.m_array->size() == 2 and ref->m_data.m_array->front().is_string(); }); if (not isAnObject) throw std::invalid_argument("Cannot create an object from this initializer list"); element result(value_type::object); for (auto& ref: init) { auto element = ref.data(); result.m_data.m_object->emplace( std::move(*element.m_data.m_array->front().m_data.m_string), std::move(element.m_data.m_array->back()) ); } return result; } element element::array(initializer_list_t init) { element result; result.m_data.m_array = create(init.begin(), init.end()); result.m_type = value_type::array; return result; } element::element(size_t cnt, const element& v) : m_type(value_type::array) { m_data.m_array = create(cnt, v); validate(); } element& element::operator=(element j) noexcept( std::is_nothrow_move_constructible_v and std::is_nothrow_move_assignable_v and std::is_nothrow_move_constructible_v and std::is_nothrow_move_assignable_v) { j.validate(); using std::swap; swap(m_type, j.m_type); swap(m_data, j.m_data); validate(); return *this; } element::~element() noexcept { validate(); m_data.destroy(m_type); } std::string element::type_name() const { switch (m_type) { case value_type::null: return "null"; case value_type::array: return "array"; case value_type::object: return "object"; case value_type::string: return "string"; case value_type::number_int: return "number_int"; case value_type::number_float: return "number_float"; case value_type::boolean: return "boolean"; default: assert(false); return ""; } } element::operator bool() const noexcept { bool result; switch (m_type) { case value_type::null: result = false; break; case value_type::boolean: result = m_data.m_boolean; break; case value_type::number_int: result = m_data.m_int != 0; break; case value_type::number_float: result = m_data.m_float != 0; break; case value_type::string: result = not m_data.m_string->empty(); break; default: result = not empty(); break; } return result; } // array access element::reference element::at(size_t index) { if (not is_array()) throw std::runtime_error("Type should have been array to use at()"); return m_data.m_array->at(index); } element::const_reference element::at(size_t index) const { if (not is_array()) throw std::runtime_error("Type should have been array to use at()"); return m_data.m_array->at(index); } element::reference element::operator[](size_t index) { if (is_null()) { m_type = value_type::array; m_data.m_array = create(); } else if (not is_array()) throw std::runtime_error("Type should have been array to use operator[]"); if (index + 1 > m_data.m_array->size()) m_data.m_array->resize(index + 1); return m_data.m_array->operator[](index); } element::const_reference element::operator[](size_t index) const { if (not is_array()) throw std::runtime_error("Type should have been array to use operator[]"); return m_data.m_array->operator[](index); } // object member access element::reference element::at(const typename object_type::key_type& key) { if (not is_object()) throw std::runtime_error("Type should have been object to use at()"); return m_data.m_object->at(key); } element::const_reference element::at(const typename object_type::key_type& key) const { if (not is_object()) throw std::runtime_error("Type should have been object to use at()"); return m_data.m_object->at(key); } element::reference element::operator[](const typename object_type::key_type& key) { if (is_null()) { m_type = value_type::object; m_data.m_object = create(); } else if (not is_object()) throw std::runtime_error("Type should have been object to use operator[]"); return m_data.m_object->operator[](key); } element::const_reference element::operator[](const typename object_type::key_type& key) const { if (not is_object()) throw std::runtime_error("Type should have been object to use operator[]"); return m_data.m_object->operator[](key); } bool element::empty() const { switch (m_type) { case value_type::null: return true; case value_type::array: return m_data.m_array->empty(); case value_type::object: return m_data.m_object->empty(); case value_type::string: return m_data.m_string->empty(); default: return false; } } size_t element::size() const { switch (m_type) { case value_type::null: return 0; case value_type::array: return m_data.m_array->size(); case value_type::object: return m_data.m_object->size(); default: return 1; } } size_t element::max_size() const noexcept { switch (m_type) { case value_type::array: return m_data.m_array->max_size(); case value_type::object: return m_data.m_object->max_size(); default: return size(); } } void element::clear() noexcept { switch (m_type) { case value_type::array: m_data.m_array->clear(); break; case value_type::object: m_data.m_object->clear(); break; case value_type::string: m_data.m_string->clear(); break; case value_type::number_int: m_data.m_int = 0; break; case value_type::number_float: m_data.m_float = 0; break; case value_type::boolean: m_data.m_boolean = false; break; default: break; } } element::iterator element::insert(const_iterator pos, const element& val) { if (is_array()) { if (pos.m_obj != this) throw std::runtime_error("Invalid pos for array"); return insert_iterator(pos, val); } throw std::runtime_error("Cannot use insert() with " + type_name()); } element::iterator element::insert(const_iterator pos, size_type cnt, const element& val) { if (is_array()) { if (pos.m_obj != this) throw std::runtime_error("Invalid pos for array"); return insert_iterator(pos, cnt, val); } throw std::runtime_error("Cannot use insert() with " + type_name()); } element::iterator element::insert(const_iterator pos, const_iterator first, const_iterator last) { if (is_array()) { if (pos.m_obj != this or first.m_obj != this or last.m_obj != this) throw std::runtime_error("Invalid pos for array"); return insert_iterator(pos, first.m_it.m_array_it, last.m_it.m_array_it); } throw std::runtime_error("Cannot use insert() with " + type_name()); } element::iterator element::insert(const_iterator pos, initializer_list_t lst) { if (is_array()) { if (pos.m_obj != this) throw std::runtime_error("Invalid pos for array"); return insert_iterator(pos, lst.begin(), lst.end()); } throw std::runtime_error("Cannot use insert() with " + type_name()); } void element::insert(const_iterator first, const_iterator last) { if (not is_object()) throw std::runtime_error("Cannot use insert() with " + type_name()); if (first.m_obj != this or last.m_obj != this) throw std::runtime_error("Invalid iterator for object"); m_data.m_object->insert(first.m_it.m_object_it, last.m_it.m_object_it); } void element::push_back(element&& val) { if (not (is_null() or is_array())) throw std::runtime_error("Cannot use push_back with " + type_name()); if (is_null()) { m_type = value_type::array; m_data = value_type::array; } m_data.m_array->push_back(std::move(val)); val.m_type = value_type::null; } void element::push_back(const element& val) { if (not (is_null() or is_array())) throw std::runtime_error("Cannot use push_back with " + type_name()); if (is_null()) { m_type = value_type::array; m_data = value_type::array; } m_data.m_array->push_back(val); } bool element::contains(element test) const { bool result = false; if (is_object()) result = m_data.m_object->count(test.as()) > 0; else if (is_array()) result = std::find(m_data.m_array->begin(), m_data.m_array->end(), test) != m_data.m_array->end(); return result; } bool operator==(element::const_reference& lhs, element::const_reference& rhs) { using detail::value_type; auto lhs_type = lhs.type(); auto rhs_type = rhs.type(); if (lhs_type == rhs_type) { switch (lhs_type) { case value_type::array: return *lhs.m_data.m_array == *rhs.m_data.m_array; case value_type::object: return *lhs.m_data.m_object == *rhs.m_data.m_object; case value_type::string: return *lhs.m_data.m_string == *rhs.m_data.m_string; case value_type::number_int: return lhs.m_data.m_int == rhs.m_data.m_int; case value_type::number_float: return lhs.m_data.m_float == rhs.m_data.m_float; case value_type::boolean: return lhs.m_data.m_boolean == rhs.m_data.m_boolean; case value_type::null: return true; } } else if (lhs_type == value_type::number_float and rhs_type == value_type::number_int) return lhs.m_data.m_float == static_cast(rhs.m_data.m_int); else if (lhs_type == value_type::number_int and rhs_type == value_type::number_float) return static_cast(lhs.m_data.m_int) == rhs.m_data.m_float; return false; } bool operator!=(element::const_reference& lhs, element::const_reference& rhs) { return not operator==(lhs, rhs); } bool operator<(element::const_reference& lhs, element::const_reference& rhs) { using detail::value_type; auto lhs_type = lhs.type(); auto rhs_type = rhs.type(); if (lhs_type == rhs_type) { switch (lhs_type) { case value_type::array: return *lhs.m_data.m_array < *rhs.m_data.m_array; case value_type::object: return *lhs.m_data.m_object < *rhs.m_data.m_object; case value_type::string: return *lhs.m_data.m_string < *rhs.m_data.m_string; case value_type::number_int: return lhs.m_data.m_int < rhs.m_data.m_int; case value_type::number_float: return lhs.m_data.m_float < rhs.m_data.m_float; case value_type::boolean: return lhs.m_data.m_boolean < rhs.m_data.m_boolean; default: break; } } else if (lhs_type == value_type::number_float and rhs_type == value_type::number_int) return lhs.m_data.m_float < static_cast(rhs.m_data.m_int); else if (lhs_type == value_type::number_int and rhs_type == value_type::number_float) return static_cast(lhs.m_data.m_int) < rhs.m_data.m_float; return lhs_type < rhs_type; } element& element::operator-() { switch (m_type) { case value_type::number_int: m_data.m_int = -m_data.m_int; break; case value_type::number_float: m_data.m_float = -m_data.m_float; break; default: throw std::runtime_error("Can only negate numbers"); } return *this; } element operator+(const element& lhs, const element& rhs) { using detail::value_type; auto lhs_type = lhs.type(); auto rhs_type = rhs.type(); element result; if (lhs_type == rhs_type) { switch (lhs_type) { case value_type::boolean: case value_type::number_int: result = lhs.m_data.m_int + rhs.m_data.m_int; break; case value_type::number_float: result = lhs.m_data.m_float + rhs.m_data.m_float; break; case value_type::string: result = *lhs.m_data.m_string + *rhs.m_data.m_string; break; case value_type::null: break; default: throw std::runtime_error("Invalid types for operator +"); } } else if (lhs_type == value_type::number_float and rhs.is_number()) result = lhs.m_data.m_float + rhs.as(); else if (lhs_type == value_type::number_int and rhs.is_number()) result = lhs.m_data.m_int + rhs.as(); else if (lhs_type == value_type::null) result = rhs; else if (rhs_type == value_type::null) result = lhs; else if (lhs_type == value_type::string or rhs_type == value_type::string) result = lhs.as() + rhs.as(); else throw std::runtime_error("Invalid types for operator +"); return result; } element operator-(const element& lhs, const element& rhs) { using detail::value_type; auto lhs_type = lhs.type(); auto rhs_type = rhs.type(); element result; if (lhs_type == rhs_type) { switch (lhs_type) { case value_type::boolean: case value_type::number_int: result = lhs.m_data.m_int - rhs.m_data.m_int; break; case value_type::number_float: result = lhs.m_data.m_float - rhs.m_data.m_float; break; default: throw std::runtime_error("Invalid types for operator -"); } } else if (lhs_type == value_type::number_float and rhs.is_number()) result = lhs.m_data.m_float - rhs.as(); else if (lhs_type == value_type::number_int and rhs.is_number()) result = lhs.m_data.m_int - rhs.as(); else throw std::runtime_error("Invalid types for operator -"); return result; } element operator*(const element& lhs, const element& rhs) { using detail::value_type; auto lhs_type = lhs.type(); auto rhs_type = rhs.type(); element result; if (lhs_type == rhs_type) { switch (lhs_type) { case value_type::boolean: case value_type::number_int: result = lhs.m_data.m_int * rhs.m_data.m_int; break; case value_type::number_float: result = lhs.m_data.m_float * rhs.m_data.m_float; break; default: throw std::runtime_error("Invalid types for operator *"); } } else if (lhs_type == value_type::number_float and rhs.is_number()) result = lhs.m_data.m_float * rhs.as(); else if (lhs_type == value_type::number_int and rhs.is_number()) result = lhs.m_data.m_int * rhs.as(); else throw std::runtime_error("Invalid types for operator *"); return result; } element operator/(const element& lhs, const element& rhs) { using detail::value_type; auto lhs_type = lhs.type(); auto rhs_type = rhs.type(); element result; if (lhs_type == rhs_type) { switch (lhs_type) { case value_type::boolean: case value_type::number_int: result = lhs.m_data.m_int / rhs.m_data.m_int; break; case value_type::number_float: result = lhs.m_data.m_float / rhs.m_data.m_float; break; default: throw std::runtime_error("Invalid types for operator /"); } } else if (lhs_type == value_type::number_float and rhs.is_number()) result = lhs.m_data.m_float / rhs.as(); else if (lhs_type == value_type::number_int and rhs.is_number()) result = lhs.m_data.m_int / rhs.as(); else throw std::runtime_error("Invalid types for operator /"); return result; } element operator%(const element& lhs, const element& rhs) { using detail::value_type; auto lhs_type = lhs.type(); auto rhs_type = rhs.type(); element result; if (lhs_type == rhs_type) { switch (lhs_type) { case value_type::boolean: case value_type::number_int: result = lhs.m_data.m_int % rhs.m_data.m_int; break; default: throw std::runtime_error("Invalid types for operator %"); } } else if (lhs_type == value_type::number_int and rhs.is_number()) result = lhs.m_data.m_int % rhs.as(); else throw std::runtime_error("Invalid types for operator %"); return result; } template<> std::string element::as() const { if (type() == value_type::string) return *m_data.m_string; std::ostringstream s; s << *this; return s.str(); } template<> bool element::as() const { switch (m_type) { case value_type::boolean: return m_data.m_boolean; case value_type::number_int: return m_data.m_int != 0; case value_type::number_float: return m_data.m_float != 0; default: return not empty(); } } // -------------------------------------------------------------------- void serialize(std::ostream& os, const element& v) { switch (v.m_type) { case element::value_type::array: { auto& a = *v.m_data.m_array; os << '['; for (size_t i = 0; i < a.size(); ++i) { serialize(os, a[i]); if (i + 1 < a.size()) os << ','; } os << ']'; break; } case element::value_type::boolean: os << std::boolalpha << v.m_data.m_boolean; break; case element::value_type::null: os << "null"; break; case element::value_type::number_float: if (v.m_data.m_float == 0 or std::isnormal(v.m_data.m_float)) os << v.m_data.m_float; else // os << "\"NaN\""; os << "null"; break; case element::value_type::number_int: os << v.m_data.m_int; break; case element::value_type::object: { os << '{'; bool first = true; for (auto& kv: *v.m_data.m_object) { if (not first) os << ','; os << '"' << kv.first << "\":"; serialize(os, kv.second); first = false; } os << '}'; break; } case element::value_type::string: os << '"'; for (uint8_t c: *v.m_data.m_string) { switch (c) { case '\"': os << "\\\""; break; case '\\': os << "\\\\"; break; case '/': os << "\\/"; break; case '\b': os << "\\b"; break; case '\n': os << "\\n"; break; case '\r': os << "\\r"; break; case '\t': os << "\\t"; break; default: if (c < 0x0020) { static const char kHex[17] = "0123456789abcdef"; os << "\\u00" << kHex[(c >> 4) & 0x0f] << kHex[c & 0x0f]; } else os << c; break; } } os << '"'; break; } } // void serialize(std::ostream& os, const element& v, int indent, int level) // { // switch (v.m_type) // { // case value_type::array: // { // auto& a = *v.m_data.m_array; // if (a.empty()) // os << std::setw(level * indent) << "[]" << std::endl; // else // { // os << std::setw(level * indent) << '[' << std::endl; // for (size_t i = 0; i < a.size(); ++i) // { // serialize(os, a[i], indent, level + 1); // if (i + 1 < a.size()) // os << ','; // os << std::endl; // } // os << std::setw(level * indent) << ']'; // } // break; // } // case value_type::boolean: // { // auto& b = *v.m_data.m_boolean; // os << std::setw(level * indent) << std::boolalpha << b; // break; // } // case value_type::null: // os << std::setw(level * indent) << "null"; // break; // case value_type::number_float: // os << std::setw(level * indent) << v.m_data.m_float; // break; // case value_type::number_int: // os << std::setw(level * indent) << v.m_data.m_int; // break; // case value_type::number_uint: // os << std::setw(level * indent) << v.m_data.m_uint; // break; // case value_type::object: // { // auto& o = *v.m_data.m_object; // if (o.empty()) // os << std::setw(level * indent) << "{}" << std::endl; // else // { // os << std::setw(level * indent) << '{' << std::endl; // for (size_t i = 0; i < a.size(); ++i) // { // os << // serialize(os, a[i], indent, level + 1); // if (i + 1 < a.size()) // os << ','; // os << std::endl; // } // os << std::setw(level * indent) << ']'; // } // break; // } // case value_type::string: // os << std::setw(level * indent) << *v.m_data.m_string; // break; // } // } // -------------------------------------------------------------------- element parse(const std::string& s) { return element(); } std::ostream& operator<<(std::ostream& os, const element& v) { // int indentation = os.width(); // os.width(0); serialize(os, v); return os; } } // namespace zeep::jsonlibzeep-5.1.8/lib-json/src/json-parser.cpp0000664000175000017500000003426214324170113020277 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include namespace zeep::json { // -------------------------------------------------------------------- class json_parser { public: json_parser(std::istream& is) : m_is(is) { } void parse(json::element& object); private: enum class token_t : uint8_t { Eof, LeftBrace, RightBrace, LeftBracket, RightBracket, Comma, Colon, String, Integer, Number, True, False, Null, Undef }; std::string describe_token(token_t t) const { switch (t) { case token_t::Eof: return "end of data"; case token_t::LeftBrace: return "left brace ('{')"; case token_t::RightBrace: return "richt brace ('}')"; case token_t::LeftBracket: return "left bracket ('[')"; case token_t::RightBracket: return "right bracket (']')"; case token_t::Comma: return "comma"; case token_t::Colon: return "colon"; case token_t::String: return "string"; case token_t::Integer: return "integer"; case token_t::Number: return "number"; case token_t::True: return "true"; case token_t::False: return "false"; case token_t::Null: return "null"; case token_t::Undef: return "undefined token"; default: assert(false); return "???"; } } void match(token_t expected); void parse_value(json::element& e); void parse_object(json::element& e); void parse_array(json::element& e); uint8_t get_next_byte(); unicode get_next_unicode(); unicode get_next_char(); void retract(); token_t get_next_token(); std::istream& m_is; // a minimal stack for ungetc like operations unicode m_buffer[2]; unicode* m_buffer_ptr = m_buffer; std::string m_token; double m_token_float; int64_t m_token_int; token_t m_lookahead; }; uint8_t json_parser::get_next_byte() { int result = m_is.rdbuf()->sbumpc(); if (result == std::streambuf::traits_type::eof()) result = 0; return static_cast(result); } unicode json_parser::get_next_unicode() { unicode result = get_next_byte(); if (result & 0x080) { unsigned char ch[3]; if ((result & 0x0E0) == 0x0C0) { ch[0] = get_next_byte(); if ((ch[0] & 0x0c0) != 0x080) throw std::runtime_error("Invalid utf-8"); result = ((result & 0x01F) << 6) | (ch[0] & 0x03F); } else if ((result & 0x0F0) == 0x0E0) { ch[0] = get_next_byte(); ch[1] = get_next_byte(); if ((ch[0] & 0x0c0) != 0x080 or (ch[1] & 0x0c0) != 0x080) throw std::runtime_error("Invalid utf-8"); result = ((result & 0x00F) << 12) | ((ch[0] & 0x03F) << 6) | (ch[1] & 0x03F); } else if ((result & 0x0F8) == 0x0F0) { ch[0] = get_next_byte(); ch[1] = get_next_byte(); ch[2] = get_next_byte(); if ((ch[0] & 0x0c0) != 0x080 or (ch[1] & 0x0c0) != 0x080 or (ch[2] & 0x0c0) != 0x080) throw std::runtime_error("Invalid utf-8"); result = ((result & 0x007) << 18) | ((ch[0] & 0x03F) << 12) | ((ch[1] & 0x03F) << 6) | (ch[2] & 0x03F); if (result > 0x10ffff) throw std::runtime_error("invalid utf-8 character (out of range)"); } } return result; } unicode json_parser::get_next_char() { unicode result = 0; if (m_buffer_ptr > m_buffer) // if buffer is not empty we already did all the validity checks result = *--m_buffer_ptr; else { result = get_next_unicode(); if (result >= 0x080) { if (result == 0x0ffff or result == 0x0fffe) throw std::runtime_error("character " + to_hex(result) + " is not allowed"); // surrogate support else if (result >= 0x0D800 and result <= 0x0DBFF) { unicode uc2 = get_next_char(); if (uc2 >= 0x0DC00 and uc2 <= 0x0DFFF) result = (result - 0x0D800) * 0x400 + (uc2 - 0x0DC00) + 0x010000; else throw std::runtime_error("leading surrogate character without trailing surrogate character"); } else if (result >= 0x0DC00 and result <= 0x0DFFF) throw std::runtime_error("trailing surrogate character without a leading surrogate"); } } // append(m_token, result); // somehow, append refuses to inline, so we have to do it ourselves if (result < 0x080) m_token += (static_cast(result)); else if (result < 0x0800) { char ch[2] = { static_cast(0x0c0 | (result >> 6)), static_cast(0x080 | (result & 0x3f))}; m_token.append(ch, 2); } else if (result < 0x00010000) { char ch[3] = { static_cast(0x0e0 | (result >> 12)), static_cast(0x080 | ((result >> 6) & 0x3f)), static_cast(0x080 | (result & 0x3f))}; m_token.append(ch, 3); } else { char ch[4] = { static_cast(0x0f0 | (result >> 18)), static_cast(0x080 | ((result >> 12) & 0x3f)), static_cast(0x080 | ((result >> 6) & 0x3f)), static_cast(0x080 | (result & 0x3f))}; m_token.append(ch, 4); } return result; } void json_parser::retract() { assert(not m_token.empty()); *m_buffer_ptr++ = pop_last_char(m_token); } auto json_parser::get_next_token() -> token_t { enum class state_t { Start, Negative, Zero, Number, NumberFraction, NumberExpSign, NumberExpDigit1, NumberExpDigit2, Literal, String, Escape, EscapeHex1, EscapeHex2, EscapeHex3, EscapeHex4 } state = state_t::Start; token_t token = token_t::Undef; double fraction = 1.0, exponent = 1; bool negative = false, negativeExp = false; unicode hx = {}; m_token.clear(); while (token == token_t::Undef) { unicode ch = get_next_char(); switch (state) { case state_t::Start: switch (ch) { case 0: token = token_t::Eof; break; case '{': token = token_t::LeftBrace; break; case '}': token = token_t::RightBrace; break; case '[': token = token_t::LeftBracket; break; case ']': token = token_t::RightBracket; break; case ',': token = token_t::Comma; break; case ':': token = token_t::Colon; break; case ' ': case '\n': case '\r': case '\t': m_token.clear(); break; case '"': m_token.pop_back(); state = state_t::String; break; case '-': state = state_t::Negative; break; default: if (ch == '0') { state = state_t::Zero; m_token_int = 0; } else if (ch >= '1' and ch <= '9') { m_token_int = ch - '0'; state = state_t::Number; } else if (ch < 128 and std::isalpha(ch)) state = state_t::Literal; else throw zeep::exception("invalid character (" + (std::isprint(ch) ? std::string(1, static_cast(ch)) : to_hex(ch)) + ") in json"); } break; case state_t::Negative: if (ch == '0') { state = state_t::Zero; negative = true; } else if (ch >= '1' and ch <= '9') { state = state_t::Number; m_token_int = ch - '0'; negative = true; } else throw zeep::exception("invalid character '-' in json"); break; case state_t::Zero: #if DISALLOW_LEADING_ZERO if ((ch >= '0' and ch <= '9') or ch == '.') throw zeep::exception("invalid number in json, should not start with zero"); #else if (ch >= '0' and ch <= '9') throw zeep::exception("invalid number in json, should not start with zero"); else if (ch == '.') { m_token_float = 0; m_token_int = 0; fraction = 0.1; state = state_t::NumberFraction; } #endif else { retract(); m_token_int = 0; token = token_t::Integer; } break; case state_t::Number: if (ch >= '0' and ch <= '9') m_token_int = 10 * m_token_int + (ch - '0'); else if (ch == '.') { m_token_float = static_cast(m_token_int); fraction = 0.1; state = state_t::NumberFraction; } else if (ch == 'e' or ch == 'E') { m_token_float = static_cast(m_token_int); state = state_t::NumberExpSign; } else { retract(); token = token_t::Integer; if (negative) m_token_int = -m_token_int; } break; case state_t::NumberFraction: if (ch >= '0' and ch <= '9') { m_token_float += fraction * (ch - '0'); fraction /= 10; } else if (ch == 'e' or ch == 'E') state = state_t::NumberExpSign; else { retract(); token = token_t::Number; if (negative) m_token_float = -m_token_float; } break; case state_t::NumberExpSign: if (ch == '+') state = state_t::NumberExpDigit1; else if (ch == '-') { negativeExp = true; state = state_t::NumberExpDigit1; } else if (ch >= '0' and ch <= '9') { exponent = (ch - '0'); state = state_t::NumberExpDigit2; } break; case state_t::NumberExpDigit1: if (ch >= '0' and ch <= '9') { exponent = (ch - '0'); state = state_t::NumberExpDigit2; } else throw zeep::exception("invalid floating point format in json"); break; case state_t::NumberExpDigit2: if (ch >= '0' and ch <= '9') exponent = 10 * exponent + (ch - '0'); else { retract(); m_token_float *= std::pow(10, (negativeExp ? -1 : 1) * exponent); if (negative) m_token_float = -m_token_float; token = token_t::Number; } break; case state_t::Literal: if (ch > 128 or not std::isalpha(ch)) { retract(); if (m_token == "true") token = token_t::True; else if (m_token == "false") token = token_t::False; else if (m_token == "null") token = token_t::Null; else throw zeep::exception("Invalid literal found in json: " + m_token); } break; case state_t::String: if (ch == '\"') { token = token_t::String; m_token.pop_back(); } else if (ch == 0) throw zeep::exception("Invalid unterminated string in json"); else if (ch == '\\') { state = state_t::Escape; m_token.pop_back(); } break; case state_t::Escape: switch (ch) { case '"': case '\\': case '/': break; case 'n': m_token.back() = '\n'; break; case 't': m_token.back() = '\t'; break; case 'r': m_token.back() = '\r'; break; case 'f': m_token.back() = '\f'; break; case 'b': m_token.back() = '\b'; break; case 'u': state = state_t::EscapeHex1; m_token.pop_back(); break; default: throw zeep::exception("Invalid escape sequence in json (\\" + std::string{static_cast(ch)} + ')'); } if (state == state_t::Escape) state = state_t::String; break; case state_t::EscapeHex1: if (ch >= '0' and ch <= '9') hx = ch - '0'; else if (ch >= 'a' and ch <= 'f') hx = 10 + ch - 'a'; else if (ch >= 'A' and ch <= 'F') hx = 10 + ch - 'A'; else throw zeep::exception("Invalid hex sequence in json"); m_token.pop_back(); state = state_t::EscapeHex2; break; case state_t::EscapeHex2: if (ch >= '0' and ch <= '9') hx = 16 * hx + ch - '0'; else if (ch >= 'a' and ch <= 'f') hx = 16 * hx + 10 + ch - 'a'; else if (ch >= 'A' and ch <= 'F') hx = 16 * hx + 10 + ch - 'A'; else throw zeep::exception("Invalid hex sequence in json"); m_token.pop_back(); state = state_t::EscapeHex3; break; case state_t::EscapeHex3: if (ch >= '0' and ch <= '9') hx = 16 * hx + ch - '0'; else if (ch >= 'a' and ch <= 'f') hx = 16 * hx + 10 + ch - 'a'; else if (ch >= 'A' and ch <= 'F') hx = 16 * hx + 10 + ch - 'A'; else throw zeep::exception("Invalid hex sequence in json"); m_token.pop_back(); state = state_t::EscapeHex4; break; case state_t::EscapeHex4: if (ch >= '0' and ch <= '9') hx = 16 * hx + ch - '0'; else if (ch >= 'a' and ch <= 'f') hx = 16 * hx + 10 + ch - 'a'; else if (ch >= 'A' and ch <= 'F') hx = 16 * hx + 10 + ch - 'A'; else throw zeep::exception("Invalid hex sequence in json"); m_token.pop_back(); append(m_token, hx); state = state_t::String; break; } } return token; } void json_parser::match(token_t expected) { if (m_lookahead != expected) throw zeep::exception("Syntax error in json, expected " + describe_token(expected) + " but found " + describe_token(m_lookahead)); m_lookahead = get_next_token(); } void json_parser::parse_value(json::element& e) { switch (m_lookahead) { case token_t::Eof: break; case token_t::Null: match(m_lookahead); break; case token_t::False: match(m_lookahead); e = false; break; case token_t::True: match(m_lookahead); e = true; break; case token_t::Integer: match(m_lookahead); e = m_token_int; break; case token_t::Number: match(m_lookahead); e = m_token_float; break; case token_t::LeftBrace: match(m_lookahead); parse_object(e); match(token_t::RightBrace); break; case token_t::LeftBracket: match(m_lookahead); parse_array(e); match(token_t::RightBracket); break; case token_t::String: e = m_token; match(m_lookahead); break; default: throw std::runtime_error("Syntax error in json, unexpected token " + describe_token(m_lookahead)); } } void json_parser::parse_object(json::element& e) { for (;;) { if (m_lookahead == token_t::RightBrace or m_lookahead == token_t::Eof) break; auto name = m_token; match(token_t::String); match(token_t::Colon); json::element v; parse_value(v); e.emplace(name, v); if (m_lookahead != token_t::Comma) break; match(m_lookahead); } } void json_parser::parse_array(json::element& e) { for (;;) { if (m_lookahead == token_t::RightBracket or m_lookahead == token_t::Eof) break; json::element v; parse_value(v); e.emplace_back(v); if (m_lookahead != token_t::Comma) break; match(m_lookahead); } } void json_parser::parse(json::element& obj) { m_lookahead = get_next_token(); parse_value(obj); if (m_lookahead != token_t::Eof) throw zeep::exception("Extraneaous data after parsing json"); } void parse_json(const std::string& json, element& object) { std::istringstream s(json); json_parser p(s); p.parse(object); } void parse_json(std::istream& is, element& object) { json_parser p(is); p.parse(object); } namespace literals { element operator""_json(const char* s, size_t n) { element result; parse_json(std::string{s, n}, result); return result; } } } libzeep-5.1.8/lib-json/test/0000775000175000017500000000000014324170113015511 5ustar maartenmaartenlibzeep-5.1.8/lib-json/test/json-test.cpp0000664000175000017500000001501314324170113020143 0ustar maartenmaarten#define BOOST_TEST_MODULE Processor_Test #include #include #include #include #include #include using namespace std; using json = zeep::json::element; using namespace zeep::json::literals; // ----------------------------------------------------------------------- struct MyPOD2 { float f = -1.5; std::vector v = { 1, 2, 3, 4 }; bool operator==(const MyPOD2& rhs) const { return f == rhs.f and v == rhs.v; } template void serialize(Archive& ar, unsigned long version) { ar & zeep::make_nvp("f-f", f) & zeep::make_nvp("v", v) ; } }; struct MyPOD { std::string s; int i; std::optional o{13}; std::vector fp{2, MyPOD2()}; bool operator==(const MyPOD& rhs) const { return s == rhs.s and i == rhs.i and o == rhs.o and fp == rhs.fp; } template void serialize(Archive& ar, unsigned long version) { ar & zeep::make_nvp("s-s", s) & zeep::make_nvp("i-i", i) & zeep::make_nvp("opt", o) & zeep::make_nvp("fp", fp) ; } }; // ----------------------------------------------------------------------- BOOST_AUTO_TEST_CASE(j_1) { json jnull = R"(null)"_json; BOOST_TEST(jnull.is_null()); } BOOST_AUTO_TEST_CASE(j_2) { json jint = R"(1)"_json; BOOST_TEST(jint.is_number()); BOOST_TEST(jint.is_number_int()); BOOST_TEST(jint.as() == 1); BOOST_TEST(jint.as() == 1.0); BOOST_TEST(jint.as() == "1"); BOOST_TEST(jint.as() == true); #ifndef _MSC_VER BOOST_CHECK_THROW(jint.as>(), std::exception); #endif } BOOST_AUTO_TEST_CASE(j_3) { json jint = R"(-1)"_json; BOOST_TEST(jint.is_number()); BOOST_TEST(jint.is_number_int()); BOOST_TEST(jint.as() == -1); BOOST_TEST(jint.as() == -1.0); BOOST_TEST(jint.as() == "-1"); BOOST_TEST(jint.as() == true); #ifndef _MSC_VER BOOST_CHECK_THROW(jint.as>(), std::exception); #endif } BOOST_AUTO_TEST_CASE(j_4) { json jfloat = R"(1.0)"_json; BOOST_TEST(jfloat.is_number()); BOOST_TEST(jfloat.is_number_float()); BOOST_TEST(jfloat.as() == 1); BOOST_TEST(jfloat.as() == 1.0); BOOST_TEST(jfloat.as() == "1"); BOOST_TEST(jfloat.as() == true); #ifndef _MSC_VER BOOST_CHECK_THROW(jfloat.as>(), std::exception); #endif } BOOST_AUTO_TEST_CASE(j_5) { json jfloat = R"(-1.0)"_json; BOOST_TEST(jfloat.is_number()); BOOST_TEST(jfloat.is_number_float()); BOOST_TEST(jfloat.as() == -1); BOOST_TEST(jfloat.as() == -1.0); BOOST_TEST(jfloat.as() == "-1"); BOOST_TEST(jfloat.as() == true); #ifndef _MSC_VER BOOST_CHECK_THROW(jfloat.as>(), std::exception); #endif } BOOST_AUTO_TEST_CASE(j_6) { for (string fs: { "1e3", "1.0e3", "10.0", "1.0", "1.0e-2", "0.1", "-1e3", "-1.0e3", "-10.0", "-1.0", "-1.0e-2", "-0.1" }) { json jfloat; parse_json(fs, jfloat); BOOST_TEST(jfloat.is_number()); BOOST_TEST(jfloat.is_number_float()); BOOST_TEST(jfloat.as() == static_cast(stof(fs))); BOOST_TEST(jfloat.as() == stof(fs)); std::ostringstream s; s << stof(fs); fs = s.str(); BOOST_TEST(jfloat.as() == fs); BOOST_TEST(jfloat.as() == true); } } BOOST_AUTO_TEST_CASE(j_7) { for (string fs: { "01", "-01" }) { json jf; BOOST_CHECK_THROW(parse_json(fs, jf), zeep::exception); } } BOOST_AUTO_TEST_CASE(j_8) { json j = { { "aap", 1 }, { "noot", 2.0 } }; size_t i = 0; for (auto& [key, value]: j.items()) { switch (i++) { case 0: BOOST_TEST(key == "aap"); BOOST_TEST(value.is_number_int()); BOOST_TEST(value.as() == 1); break; case 1: BOOST_TEST(key == "noot"); BOOST_TEST(value.is_number_float()); BOOST_TEST(value.as() == 2.0); break; } } } BOOST_AUTO_TEST_CASE(j_9) { json j; zeep::json::serializer::serialize(j, true); BOOST_TEST(j.is_boolean()); BOOST_TEST(j == true); zeep::json::serializer::serialize(j, false); BOOST_TEST(j.is_boolean()); BOOST_TEST(j == false); zeep::json::serializer::serialize(j, 1); BOOST_TEST(j.is_number_int()); BOOST_TEST(j == 1); zeep::json::serializer::serialize(j, 1.0); BOOST_TEST(j.is_number_float()); BOOST_TEST(j == 1.0); zeep::json::serializer::serialize(j, "aap"); BOOST_TEST(j.is_string()); BOOST_TEST(j == "aap"); std::optional i; zeep::json::serializer::serialize(j, i); BOOST_TEST(j.is_null()); i = 1; zeep::json::serializer::serialize(j, i); BOOST_TEST(j.is_number_int()); BOOST_TEST(j == 1); } BOOST_AUTO_TEST_CASE(j_10) { static_assert(std::is_constructible::value, "oi"); } enum class MyEnum { aap, noot, mies }; std::ostream& operator<<(std::ostream& os, MyEnum e) { os << zeep::value_serializer::to_string(e); return os; } BOOST_AUTO_TEST_CASE(j_11) { zeep::value_serializer::instance() ("aap", MyEnum::aap) ("noot", MyEnum::noot) ("mies", MyEnum::mies); json e = MyEnum::aap; BOOST_TEST(e.as() == "aap"); // BOOST_TEST(e.as() == MyEnum::aap); // reinit the enum serializer zeep::value_serializer::init({ { MyEnum::aap, "aap" }, { MyEnum::noot, "noot" }, { MyEnum::mies, "mies" } }); e = MyEnum::noot; BOOST_TEST(e.as() == "noot"); } struct MyPOD3 { MyEnum a; template void serialize(Archive& ar, unsigned long version) { ar & zeep::make_nvp("a", a) ; } }; BOOST_AUTO_TEST_CASE(j_12) { MyPOD p1{ "1", 2 }, p1a; json e; to_element(e, p1); from_element(e, p1a); BOOST_TEST((p1 == p1a)); MyPOD3 p3{MyEnum::noot}, p3a; to_element(e, p3); from_element(e, p3a); BOOST_TEST(p3.a == p3a.a); } struct POD3 { boost::posix_time::ptime now; template void serialize(Archive& ar, unsigned long version) { ar & zeep::make_nvp("now", now); } }; BOOST_AUTO_TEST_CASE(j_13) { POD3 p{ boost::posix_time::second_clock::local_time() }, pa; json e; to_element(e, p); from_element(e, pa); BOOST_TEST((p.now == pa.now)); } enum class E { aap, noot, mies }; struct Se { E m_e; template void serialize(Archive& ar, unsigned long) { ar & zeep::make_nvp("e", m_e); } bool operator==(const Se& se) const { return m_e == se.m_e; } }; BOOST_AUTO_TEST_CASE(j_test_array_1) { using array_type = std::vector; array_type v{ { E::aap }, { E::noot }, { E::mies }}, v2; json e; to_element(e, v); from_element(e, v2); BOOST_TEST(v == v2); } libzeep-5.1.8/lib-xml/0000775000175000017500000000000014324170113014361 5ustar maartenmaartenlibzeep-5.1.8/lib-xml/src/0000775000175000017500000000000014324170113015150 5ustar maartenmaartenlibzeep-5.1.8/lib-xml/src/character-classification.cpp0000664000175000017500000000514714324170113022610 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include namespace zeep::xml { // some very basic code to check the class of scanned characters bool is_name_start_char(unicode uc) { return uc == L':' or (uc >= L'A' and uc <= L'Z') or uc == L'_' or (uc >= L'a' and uc <= L'z') or (uc >= 0x0C0 and uc <= 0x0D6) or (uc >= 0x0D8 and uc <= 0x0F6) or (uc >= 0x0F8 and uc <= 0x02FF) or (uc >= 0x0370 and uc <= 0x037D) or (uc >= 0x037F and uc <= 0x01FFF) or (uc >= 0x0200C and uc <= 0x0200D) or (uc >= 0x02070 and uc <= 0x0218F) or (uc >= 0x02C00 and uc <= 0x02FEF) or (uc >= 0x03001 and uc <= 0x0D7FF) or (uc >= 0x0F900 and uc <= 0x0FDCF) or (uc >= 0x0FDF0 and uc <= 0x0FFFD) or (uc >= 0x010000 and uc <= 0x0EFFFF); } bool is_name_char(unicode uc) { return uc == '-' or uc == '.' or (uc >= '0' and uc <= '9') or uc == 0x0B7 or is_name_start_char(uc) or (uc >= 0x00300 and uc <= 0x0036F) or (uc >= 0x0203F and uc <= 0x02040); } bool is_valid_xml_1_0_char(unicode uc) { return uc == 0x09 or uc == 0x0A or uc == 0x0D or (uc >= 0x020 and uc <= 0x0D7FF) or (uc >= 0x0E000 and uc <= 0x0FFFD) or (uc >= 0x010000 and uc <= 0x010FFFF); } bool is_valid_xml_1_1_char(unicode uc) { return uc == 0x09 or uc == 0x0A or uc == 0x0D or (uc >= 0x020 and uc < 0x07F) or uc == 0x085 or (uc >= 0x0A0 and uc <= 0x0D7FF) or (uc >= 0x0E000 and uc <= 0x0FFFD) or (uc >= 0x010000 and uc <= 0x010FFFF); } bool is_valid_system_literal_char(unicode uc) { return uc > 0x1f and uc != ' ' and uc != '<' and uc != '>' and uc != '"' and uc != '#'; } bool is_valid_system_literal(const std::string& s) { bool result = true; for (std::string::const_iterator ch = s.begin(); result == true and ch != s.end(); ++ch) result = is_valid_system_literal_char(*ch); return result; } bool is_valid_public_id_char(unicode uc) { static const std::string kPubChars(" \r\n-'()+,./:=?;!*#@$_%"); return (uc >= 'a' and uc <= 'z') or (uc >= 'A' and uc <= 'Z') or (uc >= '0' and uc <= '9') or (uc < 128 and kPubChars.find(static_cast(uc)) != std::string::npos); } bool is_valid_public_id(const std::string& s) { bool result = true; for (std::string::const_iterator ch = s.begin(); result == true and ch != s.end(); ++ch) result = is_valid_public_id_char(*ch); return result; } } // namespace zeep::xml libzeep-5.1.8/lib-xml/src/doctype.cpp0000664000175000017500000003652714324170113017340 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2010-2011. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #define _SCL_SECURE_NO_WARNINGS #include #include #include #include #include namespace zeep::xml::doctype { // -------------------------------------------------------------------- // validator code // a refcounted state base class struct state_base : std::enable_shared_from_this { state_base() : m_ref_count(1) {} virtual std::tuple allow(const std::string& name) = 0; virtual bool allow_char_data() { return false; } virtual bool allow_empty() { return false; } virtual bool must_be_empty() { return false; } virtual void reset() {} void reference() { ++m_ref_count; } void release() { if (--m_ref_count == 0) delete this; } protected: virtual ~state_base() { assert(m_ref_count == 0); } private: int m_ref_count; }; struct state_any : public state_base { virtual std::tuple allow(const std::string& name) { return std::make_tuple(true, true); } virtual bool allow_char_data() { return true; } virtual bool allow_empty() { return true; } }; struct state_empty : public state_base { virtual std::tuple allow(const std::string& name) { return std::make_tuple(false, true); } virtual bool allow_empty() { return true; } virtual bool must_be_empty() { return true; } }; struct state_element : public state_base { state_element(const std::string& name) : m_name(name), m_done(false) {} virtual std::tuple allow(const std::string& name) { bool result = false; if (not m_done and m_name == name) m_done = result = true; // m_done = true; return std::make_tuple(result, m_done); } virtual void reset() { m_done = false; } std::string m_name; bool m_done; }; struct state_repeated : public state_base { state_repeated(content_spec_ptr sub) : m_sub(sub->create_state()), m_state(0) {} ~state_repeated() { m_sub->release(); } virtual void reset() { m_sub->reset(); m_state = 0; } virtual bool allow_char_data() { return m_sub->allow_char_data(); } state_ptr m_sub; int m_state; }; // repeat for ? struct state_repeated_zero_or_once : public state_repeated { state_repeated_zero_or_once(content_spec_ptr sub) : state_repeated(sub) {} std::tuple allow(const std::string& name); virtual bool allow_empty() { return true; } }; std::tuple state_repeated_zero_or_once::allow(const std::string& name) { // use a state machine enum State { state_Start = 0, state_Loop }; bool result = false, done = false; switch (m_state) { case state_Start: std::tie(result, done) = m_sub->allow(name); if (result == true) m_state = state_Loop; else done = true; break; case state_Loop: std::tie(result, done) = m_sub->allow(name); if (result == false and done) done = true; break; } return std::make_tuple(result, done); } struct state_repeated_any : public state_repeated { state_repeated_any(content_spec_ptr sub) : state_repeated(sub) {} std::tuple allow(const std::string& name); virtual bool allow_empty() { return true; } }; std::tuple state_repeated_any::allow(const std::string& name) { // use a state machine enum State { state_Start = 0, state_Loop }; bool result = false, done = false; switch (m_state) { case state_Start: std::tie(result, done) = m_sub->allow(name); if (result == true) m_state = state_Loop; else done = true; break; case state_Loop: std::tie(result, done) = m_sub->allow(name); if (result == false and done) { m_sub->reset(); std::tie(result, done) = m_sub->allow(name); if (result == false) done = true; } break; } return std::make_tuple(result, done); } struct state_repeated_at_least_once : public state_repeated { state_repeated_at_least_once(content_spec_ptr sub) : state_repeated(sub) {} std::tuple allow(const std::string& name); virtual bool allow_empty() { return m_sub->allow_empty(); } }; std::tuple state_repeated_at_least_once::allow(const std::string& name) { // use a state machine enum State { state_Start = 0, state_FirstLoop, state_NextLoop }; bool result = false, done = false; switch (m_state) { case state_Start: std::tie(result, done) = m_sub->allow(name); if (result == true) m_state = state_FirstLoop; break; case state_FirstLoop: std::tie(result, done) = m_sub->allow(name); if (result == false and done) { m_sub->reset(); std::tie(result, done) = m_sub->allow(name); if (result == true) m_state = state_NextLoop; } break; case state_NextLoop: std::tie(result, done) = m_sub->allow(name); if (result == false and done) { m_sub->reset(); std::tie(result, done) = m_sub->allow(name); if (result == false) done = true; } break; } return std::make_tuple(result, done); } // allow a sequence struct state_seq : public state_base { state_seq(const content_spec_list& allowed) : m_state(0) { for (content_spec_ptr a : allowed) m_states.push_back(a->create_state()); } ~state_seq() { for (state_ptr s : m_states) s->release(); } virtual std::tuple allow(const std::string& name); virtual void reset() { m_state = 0; std::for_each(m_states.begin(), m_states.end(), [](auto state) { state->reset(); }); } virtual bool allow_char_data() { bool result = false; for (state_ptr s : m_states) { if (s->allow_char_data()) { result = true; break; } } return result; } virtual bool allow_empty(); std::list m_states; std::list::iterator m_next; int m_state; }; std::tuple state_seq::allow(const std::string& name) { bool result = false, done = false; enum State { state_Start, state_Element }; switch (m_state) { case state_Start: m_next = m_states.begin(); if (m_next == m_states.end()) { done = true; break; } m_state = state_Element; // fall through case state_Element: std::tie(result, done) = (*m_next)->allow(name); while (result == false and done) { ++m_next; if (m_next == m_states.end()) { done = true; break; } std::tie(result, done) = (*m_next)->allow(name); } break; } return std::make_tuple(result, done); } bool state_seq::allow_empty() { bool result; if (m_states.empty()) result = true; else { result = accumulate(m_states.begin(), m_states.end(), true, [](bool flag, auto& state) { return state->allow_empty() and flag; }); } return result; } // allow one of a list struct state_choice : public state_base { state_choice(const content_spec_list& allowed, bool mixed) : m_mixed(mixed), m_state(0) { for (content_spec_ptr a : allowed) m_states.push_back(a->create_state()); } ~state_choice() { for (state_ptr s : m_states) s->release(); } virtual std::tuple allow(const std::string& name); virtual void reset() { m_state = 0; std::for_each(m_states.begin(), m_states.end(), [](auto& state) { state->reset(); }); } virtual bool allow_char_data() { return m_mixed; } virtual bool allow_empty(); std::list m_states; bool m_mixed; int m_state; state_ptr m_sub; }; std::tuple state_choice::allow(const std::string& name) { bool result = false, done = false; enum State { state_Start, state_Choice }; switch (m_state) { case state_Start: for (auto choice = m_states.begin(); choice != m_states.end(); ++choice) { std::tie(result, done) = (*choice)->allow(name); if (result == true) { m_sub = *choice; m_state = state_Choice; break; } } break; case state_Choice: std::tie(result, done) = m_sub->allow(name); break; } return std::make_tuple(result, done); } bool state_choice::allow_empty() { return m_mixed or std::find_if(m_states.begin(), m_states.end(), std::bind(&state_base::allow_empty, std::placeholders::_1)) != m_states.end(); } // -------------------------------------------------------------------- validator::validator(content_spec_ptr allowed) : m_state(allowed->create_state()), m_allowed(allowed), m_done(m_state->allow_empty()) { } validator::validator(const element_* e) : m_allowed(e ? e->get_allowed() : nullptr) { if (m_allowed == nullptr) { m_state = new state_any(); m_done = true; } else { m_state = m_allowed->create_state(); m_done = m_state->allow_empty(); } } validator::~validator() { m_state->release(); } bool validator::allow(const std::string& name) { bool result; std::tie(result, m_done) = m_state->allow(name); return result; } bool validator::done() { return m_done; } ContentSpecType validator::get_content_spec() const { return m_allowed ? m_allowed->get_content_spec() : ContentSpecType::Any; } // -------------------------------------------------------------------- state_ptr content_spec_any::create_state() const { return new state_any(); } // -------------------------------------------------------------------- state_ptr content_spec_empty::create_state() const { return new state_empty(); } // -------------------------------------------------------------------- state_ptr content_spec_element::create_state() const { return new state_element(m_name); } // -------------------------------------------------------------------- content_spec_repeated::~content_spec_repeated() { delete m_allowed; } state_ptr content_spec_repeated::create_state() const { switch (m_repetition) { case '?': return new state_repeated_zero_or_once(m_allowed); case '*': return new state_repeated_any(m_allowed); case '+': return new state_repeated_at_least_once(m_allowed); default: assert(false); throw zeep::exception("illegal repetition character"); } } bool content_spec_repeated::element_content() const { return m_allowed->element_content(); } // -------------------------------------------------------------------- content_spec_seq::~content_spec_seq() { for (content_spec_ptr a : m_allowed) delete a; } void content_spec_seq::add(content_spec_ptr a) { m_allowed.push_back(a); } state_ptr content_spec_seq::create_state() const { return new state_seq(m_allowed); } bool content_spec_seq::element_content() const { bool result = true; for (content_spec_ptr a : m_allowed) { if (not a->element_content()) { result = false; break; } } return result; } // -------------------------------------------------------------------- content_spec_choice::~content_spec_choice() { for (content_spec_ptr a : m_allowed) delete a; } void content_spec_choice::add(content_spec_ptr a) { m_allowed.push_back(a); } state_ptr content_spec_choice::create_state() const { return new state_choice(m_allowed, m_mixed); } bool content_spec_choice::element_content() const { bool result = true; if (m_mixed) result = false; else { for (content_spec_ptr a : m_allowed) { if (not a->element_content()) { result = false; break; } } } return result; } // -------------------------------------------------------------------- bool attribute_::is_name(std::string& s) const { bool result = true; trim(s); if (not s.empty()) { std::string::iterator c = s.begin(); if (c != s.end()) result = is_name_start_char(*c); while (result and ++c != s.end()) result = is_name_char(*c); } return result; } bool attribute_::is_names(std::string& s) const { bool result = true; trim(s); if (not s.empty()) { std::string::iterator c = s.begin(); std::string t; while (result and c != s.end()) { result = is_name_start_char(*c); t += *c; ++c; while (result and c != s.end() and is_name_char(*c)) { t += *c; ++c; } if (c == s.end()) break; result = isspace(*c) != 0; ++c; t += ' '; while (c != s.end() and isspace(*c)) ++c; } swap(s, t); } return result; } bool attribute_::is_nmtoken(std::string& s) const { trim(s); bool result = not s.empty(); std::string::iterator c = s.begin(); while (result and ++c != s.end()) result = is_name_char(*c); return result; } bool attribute_::is_nmtokens(std::string& s) const { // remove leading and trailing spaces trim(s); bool result = not s.empty(); std::string::iterator c = s.begin(); std::string t; while (result and c != s.end()) { result = false; do { if (not is_name_char(*c)) break; result = true; t += *c; ++c; } while (c != s.end()); if (not result or c == s.end()) break; result = false; do { if (*c != ' ') break; result = true; ++c; } while (c != s.end() and *c == ' '); t += ' '; } if (result) swap(s, t); return result; } bool attribute_::validate_value(std::string& value, const entity_list& entities) const { bool result = true; if (m_type == AttributeType::CDATA) result = true; else if (m_type == AttributeType::ENTITY) { result = is_name(value); if (result) result = is_unparsed_entity(value, entities); } else if (m_type == AttributeType::ID or m_type == AttributeType::IDREF) result = is_name(value); else if (m_type == AttributeType::ENTITIES) { result = is_names(value); if (result) { std::vector values; split(values, value, " "); for (const std::string& v : values) { if (not is_unparsed_entity(v, entities)) { result = false; break; } } } } else if (m_type == AttributeType::IDREFS) result = is_names(value); else if (m_type == AttributeType::NMTOKEN) result = is_nmtoken(value); else if (m_type == AttributeType::NMTOKENS) result = is_nmtokens(value); else if (m_type == AttributeType::Enumerated or m_type == AttributeType::Notation) { trim(value); result = find(m_enum.begin(), m_enum.end(), value) != m_enum.end(); } if (result and m_default == AttributeDefault::Fixed and value != m_default_value) result = false; return result; } bool attribute_::is_unparsed_entity(const std::string& s, const entity_list& l) const { bool result = false; entity_list::const_iterator i = std::find_if(l.begin(), l.end(), [s](auto e) { return e->name() == s; }); if (i != l.end()) result = (*i)->is_parsed() == false; return result; } // -------------------------------------------------------------------- element_::~element_() { for (attribute_* attr : m_attlist) delete attr; delete m_allowed; } void element_::set_allowed(content_spec_ptr allowed) { if (allowed != m_allowed) { delete m_allowed; m_allowed = allowed; } } void element_::add_attribute(attribute_* attrib) { std::unique_ptr attr(attrib); if (find_if(m_attlist.begin(), m_attlist.end(), [attrib](auto a) { return a->name() == attrib->name(); }) == m_attlist.end()) m_attlist.push_back(attr.release()); } const attribute_* element_::get_attribute(const std::string& name) const { attribute_list::const_iterator dta = find_if(m_attlist.begin(), m_attlist.end(), [name](auto a) { return a->name() == name; }); const attribute_* result = nullptr; if (dta != m_attlist.end()) result = *dta; return result; } // validator element::get_validator() const // { // // validator valid; // // if (m_allowed) // // valid = validator(m_allowed); // return { m_allowed }; // } bool element_::empty() const { return dynamic_cast(m_allowed) != nullptr; } } // namespace zeep::xml::doctype libzeep-5.1.8/lib-xml/src/document.cpp0000664000175000017500000002317414324170113017501 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include namespace zeep::xml { // -------------------------------------------------------------------- document::document() : m_validating(false) , m_preserve_cdata(false) , m_has_xml_decl(false) , m_encoding(encoding_type::UTF8) , m_version(1.0f) , m_standalone(false) { } document::document(const document& doc) : element(doc) , m_doctype(doc.m_doctype) , m_validating(doc.m_validating) , m_preserve_cdata(doc.m_preserve_cdata) , m_has_xml_decl(doc.m_has_xml_decl) , m_encoding(doc.m_encoding) , m_version(doc.m_version) , m_standalone(doc.m_standalone) , m_fmt(doc.m_fmt) { } document::document(document&& doc) : element(doc) , m_doctype(doc.m_doctype) , m_validating(doc.m_validating) , m_preserve_cdata(doc.m_preserve_cdata) , m_has_xml_decl(doc.m_has_xml_decl) , m_encoding(doc.m_encoding) , m_version(doc.m_version) , m_standalone(doc.m_standalone) , m_fmt(doc.m_fmt) { } document& document::operator=(const document& doc) { element::operator=(doc); m_doctype = doc.m_doctype; m_validating = doc.m_validating; m_preserve_cdata = doc.m_preserve_cdata; m_fmt = doc.m_fmt; m_has_xml_decl = doc.m_has_xml_decl; m_encoding = doc.m_encoding; m_version = doc.m_version; m_standalone = doc.m_standalone; return *this; } document& document::operator=(document&& doc) { element::operator=(doc); m_doctype = doc.m_doctype; m_validating = doc.m_validating; m_preserve_cdata = doc.m_preserve_cdata; m_fmt = doc.m_fmt; m_has_xml_decl = doc.m_has_xml_decl; m_encoding = doc.m_encoding; m_version = doc.m_version; m_standalone = doc.m_standalone; return *this; } document::document(const std::string& s) : document() { std::istringstream is(s); parse(is); } document::document(std::istream& is) : document() { parse(is); } document::document(std::istream& is, const std::string& base_dir) : document() { m_validating = true; m_dtd_dir = base_dir; parse(is); } document::~document() { } // -------------------------------------------------------------------- element::node_iterator document::insert_impl(const_iterator pos, node* n) { if (not empty()) throw zeep::exception("Cannot add a node to a non-empty document"); return element::insert_impl(pos, n); } // -------------------------------------------------------------------- bool document::is_html5() const { return m_doctype.m_root == "html" and m_nodes.front().name() == "html" and m_doctype.m_pubid == "" and m_doctype.m_dtd == "about:legacy-compat"; } // -------------------------------------------------------------------- bool document::operator==(const document& other) const { return equals(&other); } std::ostream& operator<<(std::ostream& os, const document& doc) { auto fmt = doc.m_fmt; if (os.width() > 0) { fmt.indent_width = os.width(); fmt.indent = true; } doc.write(os, fmt); return os; } std::istream& operator>>(std::istream& is, document& doc) { doc.parse(is); return is; } void document::write(std::ostream& os, format_info fmt) const { if (m_version > 1.0f or m_write_xml_decl) { assert(m_encoding == encoding_type::UTF8); os << ""; if (m_wrap_prolog) os << std::endl; } if (not m_notations.empty() or m_write_doctype) { os << "' << std::endl; } os << "]"; } os << ">" << std::endl; } for (auto& n: nodes()) n.write(os, fmt); } // -------------------------------------------------------------------- void document::XmlDeclHandler(encoding_type encoding, bool standalone, float version) { m_has_xml_decl = true; // m_encoding = encoding; m_standalone = standalone; m_version = version; m_fmt.version = version; } void document::StartElementHandler(const std::string& name, const std::string& uri, const parser::attr_list_type& atts) { std::string qname = name; if (not uri.empty()) { std::string prefix; bool found; auto i = std::find_if(m_namespaces.begin(), m_namespaces.end(), [uri](auto& ns) { return ns.second == uri; }); if (i != m_namespaces.end()) { prefix = i->first; found = true; } else std::tie(prefix, found) = m_cur->prefix_for_namespace(uri); if (prefix.empty() and not found) throw exception("namespace not found: " + uri); if (not prefix.empty()) qname = prefix + ':' + name; } m_cur = &m_cur->emplace_back(qname); for (auto ns = m_namespaces.begin(); ns != m_namespaces.end(); ++ns) { if (ns->first.empty()) m_cur->attributes().emplace("xmlns", ns->second); else m_cur->attributes().emplace("xmlns:" + ns->first, ns->second); } for (const parser::attr_type& a : atts) { qname = a.m_name; if (not a.m_ns.empty()) { auto p = m_cur->prefix_for_namespace(a.m_ns); if (not p.second) throw exception("namespace not found: " + a.m_ns); qname = p.first.empty() ? a.m_name : p.first + ':' + a.m_name; } m_cur->attributes().emplace(qname, a.m_value, a.m_id); } m_namespaces.clear(); } void document::EndElementHandler(const std::string& name, const std::string& uri) { if (m_cdata != nullptr) throw exception("CDATA section not closed"); m_cur = m_cur->parent(); } void document::CharacterDataHandler(const std::string& data) { if (m_cdata != nullptr) m_cdata->append(data); else m_cur->add_text(data); } void document::ProcessingInstructionHandler(const std::string& target, const std::string& data) { m_cur->nodes().emplace_back(processing_instruction(target, data)); } void document::CommentHandler(const std::string& s) { m_cur->nodes().emplace_back(comment(s)); } void document::StartCdataSectionHandler() { m_cdata = &m_cur->nodes().emplace_back(cdata()); } void document::EndCdataSectionHandler() { m_cdata = nullptr; } void document::StartNamespaceDeclHandler(const std::string& prefix, const std::string& uri) { m_namespaces.push_back(make_pair(prefix, uri)); } void document::EndNamespaceDeclHandler(const std::string& prefix) { } void document::DoctypeDeclHandler(const std::string& root, const std::string& publicId, const std::string& uri) { m_doctype.m_root = root; m_doctype.m_pubid = publicId; m_doctype.m_dtd = uri; } void document::NotationDeclHandler(const std::string& name, const std::string& sysid, const std::string& pubid) { if (m_notations.empty()) m_root_size_at_first_notation = nodes().size(); notation n = {name, sysid, pubid}; auto i = find_if(m_notations.begin(), m_notations.end(), [name](auto& nt) { return nt.m_name >= name; }); m_notations.insert(i, n); } std::istream* document::external_entity_ref(const std::string& base, const std::string& pubid, const std::string& sysid) { std::istream* result = nullptr; if (m_external_entity_ref_loader) result = m_external_entity_ref_loader(base, pubid, sysid); if (result == nullptr and not sysid.empty()) { std::string path; if (base.empty()) path = sysid; else path = base + '/' + sysid; std::unique_ptr file(new std::ifstream(path, std::ios::binary)); if (not file->is_open()) file->open(m_dtd_dir + '/' + path, std::ios::binary); if (file->is_open()) result = file.release(); } return result; } void document::parse(std::istream& is) { parser p(is); using std::placeholders::_1; using std::placeholders::_2; using std::placeholders::_3; p.xml_decl_handler = std::bind(&document::XmlDeclHandler, this, _1, _2, _3); p.doctype_decl_handler = std::bind(&document::DoctypeDeclHandler, this, _1, _2, _3); p.start_element_handler = std::bind(&document::StartElementHandler, this, _1, _2, _3); p.end_element_handler = std::bind(&document::EndElementHandler, this, _1, _2); p.character_data_handler = std::bind(&document::CharacterDataHandler, this, _1); if (m_preserve_cdata) { p.start_cdata_section_handler = std::bind(&document::StartCdataSectionHandler, this); p.end_cdata_section_handler = std::bind(&document::EndCdataSectionHandler, this); } p.start_namespace_decl_handler = std::bind(&document::StartNamespaceDeclHandler, this, _1, _2); p.processing_instruction_handler = std::bind(&document::ProcessingInstructionHandler, this, _1, _2); p.comment_handler = std::bind(&document::CommentHandler, this, _1); p.notation_decl_handler = std::bind(&document::NotationDeclHandler, this, _1, _2, _3); p.external_entity_ref_handler = std::bind(&document::external_entity_ref, this, _1, _2, _3); m_cur = this; p.parse(m_validating, m_validating_ns); assert(m_cur == this); } namespace literals { document operator""_xml(const char* text, size_t length) { zeep::xml::document doc; doc.set_preserve_cdata(true); zeep::char_streambuf buffer(text, length); std::istream is(&buffer); is >> doc; return doc; } } } // namespace zeep::xml libzeep-5.1.8/lib-xml/src/node.cpp0000664000175000017500000005137514324170113016614 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include namespace zeep::xml { const std::set kEmptyHTMLElements{ "area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr" }; // -------------------------------------------------------------------- void write_string(std::ostream& os, const std::string& s, bool escape_whitespace, bool escape_quot, bool trim, float version) { bool last_is_space = false; auto sp = s.begin(); auto se = s.end(); while (sp < se) { auto sb = sp; unicode c; std::tie(c, sp) = get_first_char(sp, se); switch (c) { case '&': os << "&"; last_is_space = false; break; case '<': os << "<"; last_is_space = false; break; case '>': os << ">"; last_is_space = false; break; case '\"': if (escape_quot) os << """; else os << static_cast(c); last_is_space = false; break; case '\n': if (escape_whitespace) os << " "; else os << static_cast(c); last_is_space = true; break; case '\r': if (escape_whitespace) os << " "; else os << static_cast(c); last_is_space = false; break; case '\t': if (escape_whitespace) os << " "; else os << static_cast(c); last_is_space = false; break; case ' ': if (not trim or not last_is_space) os << ' '; last_is_space = true; break; case 0: throw exception("Invalid null character in XML content"); default: if (c >= 0x0A0 or (version == 1.0 ? is_valid_xml_1_0_char(c) : is_valid_xml_1_1_char(c))) for (auto ci = sb; ci < sp; ++ci) os << *ci; else os << "&#" << static_cast(c) << ';'; last_is_space = false; break; } sb = sp; } } // -------------------------------------------------------------------- node::~node() { // avoid deep recursion and stack overflows while (m_next != nullptr) { node* n = m_next; m_next = n->m_next; n->m_next = nullptr; delete n; } } element* node::root() { element* result = nullptr; if (m_parent != nullptr) result = m_parent->root(); return result; } const element* node::root() const { const element* result = nullptr; if (m_parent != nullptr) result = m_parent->root(); return result; } bool node::equals(const node* n) const { assert(false); return n == this; } std::string node::lang() const { std::string result; if (m_parent != nullptr) result = m_parent->lang(); return result; } void node::insert_sibling(node* n, node* before) { node* p = this; while (p->m_next != nullptr and p->m_next != before) p = p->m_next; if (p->m_next != before and before != nullptr) throw zeep::exception("before argument in insert_sibling is not valid"); p->m_next = n; n->m_prev = p; n->m_parent = m_parent; n->m_next = before; if (before != nullptr) before->m_prev = n; // #if DEBUG // validate(); // n->validate(); // if (before) before->validate(); // #endif } void node::remove_sibling(node* n) { assert (this != n); if (this == n) throw exception("inconsistent node tree"); node* p = this; while (p != nullptr and p->m_next != n) p = p->m_next; if (p != nullptr and p->m_next == n) { p->m_next = n->m_next; if (p->m_next != nullptr) p->m_next->m_prev = p; n->m_next = n->m_prev = n->m_parent = nullptr; } else throw exception("remove for a node not found in the list"); } void node::parent(element* n) { assert(m_parent == nullptr); m_parent = n; } std::string node::get_qname() const { return ""; } std::string node::name() const { std::string qn = get_qname(); std::string::size_type s = qn.find(':'); if (s != std::string::npos) qn.erase(0, s + 1); return qn; } std::string node::get_prefix() const { std::string qn = get_qname(); std::string::size_type s = qn.find(':'); std::string p; if (s != std::string::npos) p = qn.substr(0, s); return p; } std::string node::get_ns() const { std::string p = get_prefix(); return namespace_for_prefix(p); } std::string node::namespace_for_prefix(const std::string& prefix) const { std::string result; if (m_parent != nullptr) result = m_parent->namespace_for_prefix(prefix); return result; } std::pair node::prefix_for_namespace(const std::string& uri) const { std::pair result{}; if (m_parent != nullptr) result = m_parent->prefix_for_namespace(uri); return result; } std::string node::prefix_tag(const std::string& tag, const std::string& uri) const { auto prefix = prefix_for_namespace(uri); return prefix.second ? prefix.first + ':' + tag : tag; } void node::validate() { if (m_parent and dynamic_cast(this) != nullptr and (std::find_if(m_parent->m_nodes.begin(), m_parent->m_nodes.end(), [this](auto& i) { return &i == this; }) == m_parent->m_nodes.end())) throw exception("validation error: parent does not know node"); if (m_next and m_next->m_prev != this) throw exception("validation error: m_next->m_prev != this"); if (m_prev and m_prev->m_next != this) throw exception("validation error: m_prev->m_next != this"); node* n = this; while (n != nullptr and n->m_next != this) n = n->m_next; if (n == this) throw exception("cycle in node list"); n = this; while (n != nullptr and n->m_prev != this) n = n->m_prev; if (n == this) throw exception("cycle in node list"); if (m_next) m_next->validate(); } // -------------------------------------------------------------------- // comment bool comment::equals(const node* n) const { return dynamic_cast(n) != nullptr and m_text == static_cast(n)->m_text; } node* comment::clone() const { return new comment(m_text); } node* comment::move() { return new comment(std::move(*this)); } void comment::write(std::ostream& os, format_info fmt) const { // if (fmt.indent_width != 0) // os << std::endl << std::string(fmt.indent_width, ' '); if (not fmt.suppress_comments) { os << ""; if (fmt.indent_width != 0) os << std::endl; } } // -------------------------------------------------------------------- // processing_instruction bool processing_instruction::equals(const node* n) const { return dynamic_cast(n) != nullptr and m_text == static_cast(n)->m_text; } node* processing_instruction::clone() const { return new processing_instruction(m_target, m_target); } node* processing_instruction::move() { return new processing_instruction(std::move(*this)); } void processing_instruction::write(std::ostream& os, format_info fmt) const { if (fmt.indent) os << std::endl << std::string(fmt.indent_level * fmt.indent_width, ' '); os << ""; if (fmt.indent != 0) os << std::endl; } // -------------------------------------------------------------------- // text bool text::equals(const node* n) const { bool result = false; auto t = dynamic_cast(n); if (t != nullptr) { std::string text = m_text; trim(text); std::string ttext = t->m_text; trim(ttext); result = text == ttext; } return result; } bool text::is_space() const { bool result = true; for (auto ch: m_text) { if (not (ch == ' ' or ch == '\t' or ch == '\n' or ch == '\r')) { result = false; break; } } return result; } node* text::clone() const { return new text(m_text); } node* text::move() { return new text(std::move(*this)); } void text::write(std::ostream& os, format_info fmt) const { write_string(os, m_text, fmt.escape_white_space, fmt.escape_double_quote, false, fmt.version); } // -------------------------------------------------------------------- // cdata bool cdata::equals(const node* n) const { return dynamic_cast(n) != nullptr and m_text == static_cast(n)->m_text; } node* cdata::clone() const { return new cdata(m_text); } node* cdata::move() { return new cdata(std::move(*this)); } void cdata::write(std::ostream& os, format_info fmt) const { if (fmt.indent) os << std::endl << std::string(fmt.indent_level * fmt.indent_width, ' '); os << ""; if (fmt.indent) os << std::endl; } // -------------------------------------------------------------------- // attribute bool attribute::equals(const node* n) const { bool result = false; const attribute* a = dynamic_cast(n); if (a != nullptr) { result = m_qname == a->m_qname and m_value == a->m_value; } return result; } std::string attribute::uri() const { assert(is_namespace()); if (not is_namespace()) throw exception("Attribute is not a namespace"); return m_value; } node* attribute::clone() const { return new attribute(m_qname, m_value, m_id); } node* attribute::move() { return new attribute(std::move(*this)); } void attribute::write(std::ostream& os, format_info fmt) const { if (fmt.indent_width != 0) os << std::endl << std::string(fmt.indent_width, ' '); else os << ' '; os << m_qname << "=\""; write_string(os, m_value, fmt.escape_white_space, true, false, fmt.version); os << '"'; } // // -------------------------------------------------------------------- // // name_space // bool name_space::equals(const node* n) const // { // bool result = false; // const name_space* ns = dynamic_cast(n); // if (ns != nullptr) // result = m_uri == ns->m_uri; // return result; // } // node* name_space::clone() const // { // return new name_space(m_prefix, m_uri); // } // node* name_space::move() // { // return new name_space(std::move(*this)); // } // void name_space::write(std::ostream& os, format_info fmt) const // { // if (fmt.indent_width != 0) // os << std::endl << std::string(fmt.indent_width, ' '); // else // os << ' '; // if (m_prefix.empty()) // os << "xmlns"; // else // os << "xmlns:" << m_prefix; // os << "=\""; // write_string(os, m_uri, fmt.escape_white_space, false, fmt.version); // os << '"'; // } // -------------------------------------------------------------------- // element element::element() : m_nodes(*this) , m_attributes(*this) { } element::element(const std::string& qname) : m_qname(qname) , m_nodes(*this) , m_attributes(*this) { } element::element(const std::string& qname, std::initializer_list attributes) : m_qname(qname) , m_nodes(*this) , m_attributes(*this) { for (auto& a: attributes) set_attribute(a.get_qname(), a.value()); } // copy constructor. Copy data and children, but not parent and sibling element::element(const element& e) : node() , m_qname(e.m_qname) , m_nodes(*this, e.m_nodes) , m_attributes(*this, e.m_attributes) { } element::element(element&& e) : element() { swap(e); } element& element::operator=(const element& e) { if (this != &e) { m_nodes = e.m_nodes; m_attributes = e.m_attributes; } return *this; } element& element::operator=(element&& e) { if (this != &e) { clear(); swap(e); } return *this; } element::~element() { } void element::swap(element& e) noexcept { std::swap(m_qname, e.m_qname); m_nodes.swap(e.m_nodes); m_attributes.swap(e.m_attributes); } node* element::clone() const { return new element(*this); } node* element::move() { return new element(std::move(*this)); } std::string element::lang() const { std::string result; auto i = m_attributes.find("xml:lang"); if (i != m_attributes.end()) result = i->value(); else if (m_parent != nullptr) result = m_parent->lang(); return result; } std::string element::id() const { std::string result; for (auto& a: m_attributes) { if (a.is_id()) { result = a.value(); break; } } return result; } std::string element::get_attribute(const std::string& qname) const { std::string result; auto a = m_attributes.find(qname); if (a != m_attributes.end()) result = a->value(); return result; } void element::set_attribute(const std::string& qname, const std::string& value) { m_attributes.emplace(qname, value); } bool element::equals(const node* n) const { bool result = false; const element* e = dynamic_cast(n); if (e != nullptr) { result = name() == e->name() and get_ns() == e->get_ns(); const node* a = m_nodes.m_head;; const node* b = e->m_nodes.m_head; while (a != nullptr or b != nullptr) { if (a != nullptr and b != nullptr and a->equals(b)) { a = a->m_next; b = b->m_next; continue; } const text* t; t = dynamic_cast(a); if (t != nullptr and t->is_space()) { a = a->m_next; continue; } t = dynamic_cast(b); if (t != nullptr and t->is_space()) { b = b->m_next; continue; } result = false; break; } result = result and ((a == nullptr) == (b == nullptr)); if (result) { result = m_attributes == e->m_attributes; if (not result) { std::set as(m_attributes.begin(), m_attributes.end()); std::set bs(e->m_attributes.begin(), e->m_attributes.end()); std::set nsa, nsb; auto ai = as.begin(), bi = bs.begin(); for (;;) { if (ai == as.end() and bi == bs.end()) break; if (ai != as.end() and ai->is_namespace()) { nsa.insert(ai->value()); ++ai; continue; } if (bi != bs.end() and bi->is_namespace()) { nsb.insert(bi->value()); ++bi; continue; } if (ai == as.end() or bi == bs.end() or *ai++ != *bi++) { result = false; break; } } result = ai == as.end() and bi == bs.end() and nsa == nsb; } } } return result; } void element::clear() { m_nodes.clear(); m_attributes.clear(); } std::string element::get_content() const { std::string result; for (auto& n: m_nodes) { auto t = dynamic_cast(&n); if (t != nullptr) result += t->get_text(); } return result; } void element::set_content(const std::string& s) { // remove all existing text nodes (including cdata ones) for (auto n = m_nodes.begin(); n != m_nodes.end(); ++n) { if (dynamic_cast(&*n) != nullptr) n = m_nodes.erase(n); } // and add a new text node with the content m_nodes.insert(m_nodes.end(), text(s)); } std::string element::str() const { std::string result; for (auto& n: m_nodes) result += n.str(); return result; } void element::add_text(const std::string& s) { text* textNode = dynamic_cast(m_nodes.m_tail); if (textNode != nullptr and dynamic_cast(textNode) == nullptr) textNode->append(s); else m_nodes.emplace_back(text(s)); } void element::set_text(const std::string& s) { set_content(s); } void element::flatten_text() { auto n = m_nodes.m_head; while (n != m_nodes.m_tail) { auto tn = dynamic_cast(n); if (tn == nullptr) { n = n->m_next; continue; } if (n->m_next == nullptr) // should never happen break; auto ntn = dynamic_cast(n->m_next); if (ntn == nullptr) { n = n->m_next; continue; } tn->append(ntn->get_text()); m_nodes.erase(n->m_next); } } void element::write(std::ostream& os, format_info fmt) const { // if width is set, we wrap and indent the file size_t indentation = fmt.indent_level * fmt.indent_width; if (fmt.indent) { if (fmt.indent_level > 0) os << std::endl; os << std::string(indentation, ' '); } os << '<' << m_qname; // if the left flag is set, wrap and indent attributes as well auto attr_fmt = fmt; attr_fmt.indent_width = 0; for (auto& attr: attributes()) { attr.write(os, attr_fmt); if (attr_fmt.indent_width == 0 and fmt.indent_attributes) attr_fmt.indent_width = indentation + 1 + m_qname.length() + 1; } if ((fmt.html and kEmptyHTMLElements.count(m_qname)) or (not fmt.html and fmt.collapse_tags and nodes().empty())) os << "/>"; else { os << '>'; auto sub_fmt = fmt; ++sub_fmt.indent_level; bool wrote_element = false; for (auto& n: nodes()) { n.write(os, sub_fmt); wrote_element = dynamic_cast(&n) != nullptr; } if (wrote_element and fmt.indent != 0) os << std::endl << std::string(indentation, ' '); os << "'; } } std::ostream& operator<<(std::ostream& os, const element& e) { auto flags = os.flags({}); auto width = os.width(0); format_info fmt; fmt.indent = width > 0; fmt.indent_width = width; fmt.indent_attributes = flags & std::ios_base::left; e.write(os, fmt); return os; } std::string element::namespace_for_prefix(const std::string& prefix) const { std::string result; for (auto& a: m_attributes) { if (not a.is_namespace()) continue; if (a.name() == "xmlns") { if (prefix.empty()) { result = a.value(); break; } continue; } if (a.name() == prefix) { result = a.value(); break; } } if (result.empty() and dynamic_cast(m_parent) != nullptr) result = static_cast(m_parent)->namespace_for_prefix(prefix); return result; } std::pair element::prefix_for_namespace(const std::string& uri) const { std::string result; bool found = false; for (auto& a: m_attributes) { if (not a.is_namespace()) continue; if (a.value() == uri) { found = true; if (a.get_qname().length() > 6) result = a.get_qname().substr(6); break; } } if (not found and dynamic_cast(m_parent) != nullptr) std::tie(result, found) = static_cast(m_parent)->prefix_for_namespace(uri); return make_pair(result, found); } void element::move_to_name_space(const std::string& prefix, const std::string& uri, bool recursive, bool including_attributes) { // first some sanity checks auto p = prefix_for_namespace(uri); if (p.second) { if (p.first != prefix) throw exception("Invalid prefix in move_to_name_space, already known as '" + p.first + "'"); } else { bool set = false; for (auto& a: m_attributes) { if (not a.is_namespace()) continue; if (a.get_qname().length() > 6 and a.get_qname().substr(6) == prefix) { set = true; a.value(uri); break; } } if (not set) m_attributes.emplace(prefix.empty() ? "xmlns" : "xmlns:" + prefix, uri); } set_qname(prefix, name()); if (including_attributes) { // first process the namespace attributes... for (auto& attr: m_attributes) { if (not attr.is_namespace()) continue; auto nsp = prefix_for_namespace(attr.uri()); if (not nsp.second) attr.set_qname("xmlns", nsp.first); } // ... and then the others, makes sure the namespaces are known for (auto& attr: m_attributes) { if (attr.is_namespace()) continue; auto ns = attr.get_ns(); if (ns.empty()) attr.set_qname(prefix + ':' + attr.name()); else { auto nsp = prefix_for_namespace(ns); if (not nsp.second) throw exception("Cannot move element to new namespace, namespace not found: " + ns); attr.set_qname(nsp.first, attr.name()); } } } if (recursive) { for (element& e: *this) e.move_to_name_space(prefix, uri, true, including_attributes); } } element_set element::find(const char *path) const { return xpath(path).evaluate(*this); } element* element::find_first(const char *path) const { element_set s = xpath(path).evaluate(*this); element *result = nullptr; if (not s.empty()) result = s.front(); return result; } void element::validate() { node::validate(); for (auto& n: nodes()) n.validate(); for (auto& a: attributes()) { if (a.parent() != this) throw exception("validation error: attribute has incorrect parent"); } } // -------------------------------------------------------------------- void fix_namespaces(element& e, element& source, element& dest) { std::stack s; s.push(&e); std::map mapped; while (not s.empty()) { auto n = s.top(); s.pop(); auto p = n->get_prefix(); if (not p.empty()) { if (mapped.count(p)) { if (mapped[p] != p) n->set_qname(mapped[p], n->name()); } else { auto ns = n->namespace_for_prefix(p); if (ns.empty()) ns = source.namespace_for_prefix(p); auto dp = dest.prefix_for_namespace(ns); if (dp.second) { mapped[p] = dp.first; n->set_qname(dp.first, n->name()); } else { mapped[p] = p; dest.attributes().emplace({ "xmlns:" + p, ns }); } } } auto el = dynamic_cast(n); if (el == nullptr) continue; for (auto& c: *el) s.push(&c); for (auto& a: el->attributes()) s.push(&a); } } }libzeep-5.1.8/lib-xml/src/xml-parser.cpp0000664000175000017500000026671214324170113017764 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include #include namespace zeep::xml { bool is_absolute_path(const std::string& s) { bool result = false; if (not s.empty()) { if (s[0] == '/') result = true; else if (isalpha(s[0])) { std::string::const_iterator ch = s.begin() + 1; while (ch != s.end() and isalpha(*ch)) ++ch; result = ch != s.end() and *ch == ':'; } } return result; } bool is_valid_url(const std::string& url) { // The rules for url in namespaces are a bit different from the URI requirements in RFC3986 auto cp = url.find(':'); return cp > 1 and cp != std::string::npos and std::isalpha(url[0]); } // parsing XML is somewhat like macro processing, // we can encounter entities that need to be expanded into replacement text // and so we declare data_source objects that can be stacked. class data_source; // exception generated by data_source class source_exception : public zeep::exception { public: source_exception(const std::string& msg) : exception(msg), m_wmsg(msg) {} ~source_exception() throw() {} std::string m_wmsg; }; // A data source can have a base dir which is the directory the data came from. // This information is needed when a relative uri is found in an external ID. class data_source { public: data_source(const data_source&) = delete; data_source& operator=(const data_source&) = delete; data_source() : m_base("."), m_encoding(encoding_type::UTF8), m_line_nr(1) { static int sNextID = 0; m_id = sNextID++; } virtual ~data_source() {} // data_source is a virtual base class. Derivatives need to declare the next function. virtual unicode get_next_char() = 0; void base(const std::string& dir) { m_base = dir; } const std::string& base() const { return m_base; } encoding_type encoding() const { return m_encoding; } virtual void encoding(encoding_type enc) { m_encoding = enc; } virtual bool has_bom() { return false; } void version(float v) { m_version = v; } int id() const { return m_id; } int line_nr() const { return m_line_nr; } void line_nr(int l) { m_line_nr = l; } protected: std::string m_base; encoding_type m_encoding; float m_version = 1.0f; int m_id; // for nesting checks int m_line_nr; // for reporting errors }; // -------------------------------------------------------------------- // An std::istream implementation of data_source. class istream_data_source : public data_source { public: istream_data_source(std::istream& data) : m_data(&data), m_owns_data(false) { guess_encoding(); } istream_data_source(std::istream *data) : m_data(data) { guess_encoding(); } ~istream_data_source() { if (m_owns_data) delete m_data; } virtual bool has_bom() { return m_has_bom; } virtual unicode get_next_char(); virtual void encoding(encoding_type enc); private: void guess_encoding(); void parse_text_decl(); unicode next_utf8_char(); unicode next_utf16le_char(); unicode next_utf16be_char(); unicode next_iso88591_char(); unicode next_ascii_char(); unsigned char next_byte() { int result = m_data->rdbuf()->sbumpc(); if (result == std::streambuf::traits_type::eof()) result = 0; return static_cast(result); } std::istream* m_data; bool m_owns_data = true; unicode m_char_buffer = 0; // used in detecting \r\n algorithm typedef unicode (istream_data_source::*next_func)(void); next_func m_next; bool m_has_bom = false; }; void istream_data_source::guess_encoding() { // see if there is a BOM // if there isn't, we assume the data is UTF-8 int ch = m_data->rdbuf()->sgetc(); if (ch != std::streambuf::traits_type::eof()) { char ch1 = static_cast(ch); if (ch1 == static_cast(0xfe)) { char ch2 = static_cast(m_data->rdbuf()->snextc()); if (ch2 == static_cast(0xff)) { m_data->rdbuf()->snextc(); m_encoding = encoding_type::UTF16BE; m_has_bom = true; } else m_data->rdbuf()->sungetc(); } else if (ch1 == static_cast(0xff)) { char ch2 = static_cast(m_data->rdbuf()->snextc()); if (ch2 == static_cast(0xfe)) { m_data->rdbuf()->snextc(); m_encoding = encoding_type::UTF16LE; m_has_bom = true; } else m_data->rdbuf()->sungetc(); } else if (ch1 == static_cast(0xef)) { char ch2 = static_cast(m_data->rdbuf()->snextc()); char ch3 = static_cast(m_data->rdbuf()->snextc()); if (ch2 == static_cast(0xbb) and ch3 == static_cast(0xbf)) { m_data->rdbuf()->snextc(); m_encoding = encoding_type::UTF8; m_has_bom = true; } else { m_data->rdbuf()->sungetc(); m_data->rdbuf()->sputbackc(ch1); } } } encoding(m_encoding); } void istream_data_source::encoding(encoding_type enc) { if (enc != m_encoding) { if (is_single_byte_encoding(enc) and is_single_byte_encoding(m_encoding)) m_encoding = enc; else throw invalid_exception("Invalid encoding specified, incompatible with actual encoding"); } data_source::encoding(enc); switch (m_encoding) { case encoding_type::UTF8: m_next = &istream_data_source::next_utf8_char; break; case encoding_type::UTF16LE: m_next = &istream_data_source::next_utf16le_char; break; case encoding_type::UTF16BE: m_next = &istream_data_source::next_utf16be_char; break; case encoding_type::ISO88591: m_next = &istream_data_source::next_iso88591_char; break; case encoding_type::ASCII: m_next = &istream_data_source::next_ascii_char; break; default: break; } } unicode istream_data_source::next_utf8_char() { unicode result = next_byte(); if (result & 0x080) { unsigned char ch[3]; if ((result & 0x0E0) == 0x0C0) { ch[0] = next_byte(); if ((ch[0] & 0x0c0) != 0x080) throw source_exception("Invalid utf-8"); result = ((result & 0x01F) << 6) | (ch[0] & 0x03F); } else if ((result & 0x0F0) == 0x0E0) { ch[0] = next_byte(); ch[1] = next_byte(); if ((ch[0] & 0x0c0) != 0x080 or (ch[1] & 0x0c0) != 0x080) throw source_exception("Invalid utf-8"); result = ((result & 0x00F) << 12) | ((ch[0] & 0x03F) << 6) | (ch[1] & 0x03F); } else if ((result & 0x0F8) == 0x0F0) { ch[0] = next_byte(); ch[1] = next_byte(); ch[2] = next_byte(); if ((ch[0] & 0x0c0) != 0x080 or (ch[1] & 0x0c0) != 0x080 or (ch[2] & 0x0c0) != 0x080) throw source_exception("Invalid utf-8"); result = ((result & 0x007) << 18) | ((ch[0] & 0x03F) << 12) | ((ch[1] & 0x03F) << 6) | (ch[2] & 0x03F); if (result > 0x10ffff) throw source_exception("invalid utf-8 character (out of range)"); } } return result; } unicode istream_data_source::next_utf16le_char() { unsigned char c1 = next_byte(), c2 = next_byte(); unicode ch = (static_cast(c2) << 8) | c1; if (ch >= 0x080) { // surrogate support if (ch >= 0x0D800 and ch <= 0x0DBFF) { unicode uc2 = next_utf16le_char(); if (uc2 >= 0x0DC00 and uc2 <= 0x0DFFF) ch = (ch - 0x0D800) * 0x400 + (uc2 - 0x0DC00) + 0x010000; else throw not_wf_exception("Document (line: " + std::to_string(m_line_nr) + " not well-formed: leading surrogate character without trailing surrogate character"); } else if (ch >= 0x0DC00 and ch <= 0x0DFFF) throw not_wf_exception("Document (line: " + std::to_string(m_line_nr) + " not well-formed: trailing surrogate character without a leading surrogate"); } return ch; } unicode istream_data_source::next_utf16be_char() { unsigned char c1 = next_byte(), c2 = next_byte(); unicode ch = (static_cast(c1) << 8) | c2; if (ch >= 0x080) { // surrogate support if (ch >= 0x0D800 and ch <= 0x0DBFF) { unicode uc2 = next_utf16be_char(); if (uc2 >= 0x0DC00 and uc2 <= 0x0DFFF) ch = (ch - 0x0D800) * 0x400 + (uc2 - 0x0DC00) + 0x010000; else throw not_wf_exception("Document (line: " + std::to_string(m_line_nr) + " not well-formed: leading surrogate character without trailing surrogate character"); } else if (ch >= 0x0DC00 and ch <= 0x0DFFF) throw not_wf_exception("Document (line: " + std::to_string(m_line_nr) + " not well-formed: trailing surrogate character without a leading surrogate"); } return ch; } unicode istream_data_source::next_iso88591_char() { return (unicode)next_byte(); } unicode istream_data_source::next_ascii_char() { unicode c = next_byte(); if (c > 127) throw not_wf_exception("Invalid ascii value"); return c; } unicode istream_data_source::get_next_char() { unicode ch = m_char_buffer; if (ch == 0) ch = (this->*m_next)(); else m_char_buffer = 0; if (ch == 0x0ffff or ch == 0x0fffe) throw not_wf_exception("Document (line: " + std::to_string(m_line_nr) + " not well-formed: character " + to_hex(ch) + " is not allowed"); if (ch == '\r') { ch = (this->*m_next)(); if (ch != '\n' and (m_version == 1.0 or ch != 0x85 or m_encoding == encoding_type::ASCII)) m_char_buffer = ch; ch = '\n'; } if (m_encoding != encoding_type::ASCII) { if (m_version > 1.0 and ch == 0x85) ch = '\n'; else if (m_encoding != encoding_type::ISO88591 and m_version > 1.0 and ch == 0x2028) ch = '\n'; } if (ch == '\n') ++m_line_nr; return ch; } // -------------------------------------------------------------------- class string_data_source : public data_source { public: string_data_source(const std::string& data) : m_data(data), m_ptr(m_data.begin()) { } unicode get_next_char() { unicode result = 0; if (m_ptr != m_data.end()) std::tie(result, m_ptr) = get_first_char(m_ptr, m_data.end()); if (result == '\n') ++m_line_nr; return result; } private: std::string m_data; std::string::iterator m_ptr; }; // -------------------------------------------------------------------- class entity_data_source : public string_data_source { public: entity_data_source(const std::string& text, const std::string& entity_path) : string_data_source(text) { base(entity_path); } }; // -------------------------------------------------------------------- class parameter_entity_data_source : public string_data_source { public: parameter_entity_data_source(const std::string& data, const std::string& base_dir) : string_data_source(" " + data + " ") { base(base_dir); } }; // -------------------------------------------------------------------- class valid_nesting_validator { public: valid_nesting_validator(data_source& source) : m_id(source.id()) {} void check(data_source& source) { if (source.id() != m_id) throw invalid_exception("proper nesting validation error"); } private: int m_id; }; // -------------------------------------------------------------------- struct parser_imp { parser_imp(std::istream& data, parser& parser); ~parser_imp(); // Here comes the parser part void parse(bool validate, bool validate_ns); // the productions. Some are inlined below for obvious reasons. // names of the productions try to follow those in the TR http://www.w3.org/TR/xml void prolog(); void xml_decl(); void text_decl(); void s(bool at_least_one = false); void eq(); void misc(); void element(doctype::validator& valid); void content(doctype::validator& valid); void comment(); void pi(); void pereference(); void doctypedecl(); data_source* get_data_source(const std::string& pubid, std::string uri); std::tuple read_external_id(); void intsubset(); void extsubset(); void declsep(); void conditionalsect(); void ignoresectcontents(); void markup_decl(); void element_decl(); void contentspec(doctype::element_& element); doctype::content_spec_ptr cp(); void attlist_decl(); void notation_decl(); void entity_decl(); void parameter_entity_decl(); void general_entity_decl(); void entity_value(); // at several locations we need to parse out entity references from strings: void parse_parameter_entity_declaration(std::string& s); void parse_general_entity_declaration(std::string& s); // same goes for attribute values std::string normalize_attribute_value(const std::string& s, bool isCDATA) { push_data_source(new string_data_source(s), false); std::string result = normalize_attribute_value(); if (m_standalone and result != s) not_valid("Document cannot be standalone since an attribute was modified"); if (not isCDATA) collapse_spaces(result); return result; } std::string normalize_attribute_value(); void collapse_spaces(std::string& s); // The scanner is next. We recognize the following tokens: enum XMLToken { Undef, Eq = '=', QuestionMark = '?', GreaterThan = '>', OpenBracket = '[', CloseBracket = ']', OpenParenthesis = '(', CloseParenthesis = ')', Percent = '%', Plus = '+', Pipe = '|', Asterisk = '*', Slash = '/', Comma = ',', Eof = 256, Other, // // these are tokens for the markup XMLDecl, // Content, // anything else up to the next element start }; // for debugging and error reporting we have the following describing routine constexpr const char* describe_token(XMLToken token) { switch (token) { case XMLToken::Undef: return "undefined"; case XMLToken::Eq: return "="; case XMLToken::QuestionMark: return "?"; case XMLToken::GreaterThan: return ">"; case XMLToken::OpenBracket: return "["; case XMLToken::CloseBracket: return "]"; case XMLToken::OpenParenthesis: return "("; case XMLToken::CloseParenthesis:return ")"; case XMLToken::Percent: return "%"; case XMLToken::Plus: return "+"; case XMLToken::Pipe: return "|"; case XMLToken::Asterisk: return "*"; case XMLToken::Slash: return "/"; case XMLToken::Comma: return ","; case XMLToken::Eof: return "end of file"; case XMLToken::Other: return "an invalid character"; case XMLToken::XMLDecl: return "'() const { return m_source; } data_source& operator*() const { return *m_source; } bool inserted() const { return m_inserted; } parser_imp& m_impl; data_source* m_source; std::array m_buffer; std::ptrdiff_t m_buffer_offset; XMLToken m_lookahead; std::string m_token; bool m_inserted; }; void push_data_source(data_source* source, bool insert) { source->version(m_version); m_source.emplace(this, source, insert); } void pop_data_source() { assert(not m_source.empty()); m_source.pop(); } // And during parsing we keep track of the namespaces we encounter. class ns_state { public: ns_state(parser_imp *imp) : m_parser_imp(imp), m_next(imp->m_ns) { m_parser_imp->m_ns = this; } ~ns_state() { m_parser_imp->m_ns = m_next; } std::string default_ns() { std::string result = m_default_ns; if (result.empty() and m_next != nullptr) result = m_next->default_ns(); return result; } void default_ns(const std::string& ns) { m_default_ns = ns; } std::string ns_for_prefix(const std::string& prefix) { std::string result; if (m_unbound.count(prefix) == 0) { auto np = m_known.find(prefix); if (np != m_known.end()) result = np->second; else if (m_next != nullptr) result = m_next->ns_for_prefix(prefix); } return result; } void bind(const std::string& prefix, const std::string& uri) { m_known[prefix] = uri; } void unbind(const std::string& prefix) { m_unbound.insert(prefix); } bool is_known_prefix(const std::string& prefix) { bool result = false; if (not m_unbound.count(prefix)) { if (m_known.count(prefix)) result = true; else if (m_next != nullptr) result = m_next->is_known_prefix(prefix); } return result; } bool is_known_uri(const std::string& uri) { return find_if(m_known.begin(), m_known.end(), [uri] (auto k) { return k.second == uri; }) != m_known.end() or (m_next != nullptr and m_next->is_known_uri(uri)); } private: parser_imp *m_parser_imp; std::string m_default_ns; ns_state *m_next; std::map m_known; std::set m_unbound; }; bool is_char(unicode uc) { return m_version == 1.0 ? is_valid_xml_1_0_char(uc) : is_valid_xml_1_1_char(uc); } bool is_space(unicode uc) { return uc == ' ' or uc == '\t' or uc == '\n' or uc == '\r'; } bool is_space(const std::string& s) { return not s.empty() and s.find_first_not_of(" \t\r\n") == std::string::npos; } bool is_referrable_char(unicode charref) { return m_version == 1.0 ? charref == 0x09 or charref == 0x0A or charref == 0x0D or (charref > 0x01F and charref < 0x0D800) or (charref > 0x0DFFF and charref < 0x0FFFE) or (charref > 0x0FFFF and charref < 0x00110000) : // 1.1 (charref > 0x0 and charref < 0x0D800) or (charref > 0x0DFFF and charref < 0x0FFFE) or (charref > 0x0FFFF and charref < 0x00110000) ; } parser& m_parser; bool m_validating; bool m_validating_ns; bool m_has_dtd; XMLToken m_lookahead; std::string m_token; std::stack m_source; std::array m_buffer; std::array::iterator m_buffer_ptr = m_buffer.begin(); float m_version = 1.0f; encoding_type m_encoding = encoding_type::UTF8; bool m_standalone; // parser state bool m_external_subset = false; bool m_internal_subset = false; bool m_allow_peref = false; bool m_in_declsep = false; bool m_in_external_dtd = false; bool m_in_content = false; std::vector m_entities_on_stack; ns_state* m_ns; std::string m_root_element; doctype::entity_list m_parameter_entities; doctype::entity_list m_general_entities; doctype::element_list m_doctype; std::set m_notations; std::set m_ids; // attributes of type ID should be unique std::set m_unresolved_ids; // keep track of IDREFS that were not found yet std::unique_ptr m_xmlSpaceAttr; }; // -------------------------------------------------------------------- // some inlines inline void parser_imp::s(bool at_least_one) { if (at_least_one) match(XMLToken::Space); while (m_lookahead == XMLToken::Space) match(XMLToken::Space); } inline void parser_imp::eq() { s(); match(XMLToken::Eq); s(); } // -------------------------------------------------------------------- parser_imp::parser_imp(std::istream& data, parser& parser) : m_parser(parser), m_validating(true), m_has_dtd(false), m_lookahead(XMLToken::Eof) , m_encoding(encoding_type::ASCII), m_standalone(false), m_ns(nullptr) { push_data_source(new istream_data_source(data), false); m_encoding = m_source.top()->encoding(); // these entities are always recognized: m_general_entities.push_back(new doctype::general_entity("lt", "<")); m_general_entities.push_back(new doctype::general_entity("gt", ">")); m_general_entities.push_back(new doctype::general_entity("amp", "&")); m_general_entities.push_back(new doctype::general_entity("apos", "'")); m_general_entities.push_back(new doctype::general_entity("quot", """)); m_xmlSpaceAttr.reset(new doctype::attribute_("xml:space", doctype::AttributeType::Enumerated, { "preserve", "default" })); } parser_imp::~parser_imp() { while (not m_source.empty()) m_source.pop(); // there may be parameter_entity_data_source's left in the stack // as a result of a validation error/exception for (doctype::entity *e : m_parameter_entities) delete e; for (doctype::entity *e : m_general_entities) delete e; for (doctype::element_ *e : m_doctype) delete e; } const doctype::entity& parser_imp::get_general_entity(const std::string& name) const { auto e = std::find_if(m_general_entities.begin(), m_general_entities.end(), [name](auto e) { return e->name() == name; }); if (e == m_general_entities.end()) not_well_formed("undefined entity reference '" + name + "'"); if ((*e)->is_external() and m_standalone) not_valid("Document cannot be standalone since entity " + name + " is defined externally"); return **e; } const doctype::entity& parser_imp::get_parameter_entity(const std::string& name) const { auto e = find_if(m_parameter_entities.begin(), m_parameter_entities.end(), [name](auto e) { return e->name() == name; }); if (e == m_parameter_entities.end()) not_well_formed("Undefined parameter entity '" + m_token + '\''); return **e; } const doctype::element_ *parser_imp::get_element(const std::string& name) const { const doctype::element_ *result = nullptr; auto e = find_if(m_doctype.begin(), m_doctype.end(), [name](auto e) { return e->name() == name; }); if (e != m_doctype.end()) result = *e; return result; } unicode parser_imp::get_next_char() { unicode result = 0; if (m_buffer_ptr > m_buffer.begin()) // if buffer is not empty we already did all the validity checks result = *--m_buffer_ptr; if (result == 0) { while (not m_source.empty()) { try { result = m_source.top()->get_next_char(); } catch (source_exception& e) { not_well_formed(e.m_wmsg); } if (result == 0 and m_source.top().inserted()) { m_source.pop(); continue; } break; } } append(m_token, result); return result; } void parser_imp::retract() { assert(not m_token.empty()); assert(m_buffer_ptr < m_buffer.end()); *m_buffer_ptr++ = pop_last_char(m_token); } void parser_imp::match(XMLToken token) { if (m_lookahead != token) { std::string expected = describe_token(token); std::string found = describe_token(m_lookahead); not_well_formed( "Error parsing XML, expected '" + expected + "' but found '" + found + "' ('" + m_token + "')"); } if (m_in_content) m_lookahead = get_next_content(); else { m_lookahead = get_next_token(); if (m_lookahead == XMLToken::PEReference and not m_in_declsep) { if (m_allow_peref) pereference(); else not_well_formed("Invalid entity reference at this location"); } } } void parser_imp::not_well_formed(const std::string& msg) const { std::stringstream s; if (m_source.empty()) s << "Document not well-formed: " << msg; else s << "Document (line: " << m_source.top()->line_nr() << ") not well-formed: " << msg; throw not_wf_exception(s.str()); } void parser_imp::not_valid(const std::string& msg) const { if (m_validating) { std::stringstream s; if (m_source.empty()) s << "Document not valid: " << msg; else s << "Document (line: " << m_source.top()->line_nr() << ") not valid: " << msg; throw invalid_exception(s.str()); } else m_parser.report_invalidation(msg); } /* get_next_token is a hand optimised scanner for tokens in the input stream. */ parser_imp::XMLToken parser_imp::get_next_token() { enum State { state_Start = 0, state_WhiteSpace = 10, state_Tag = 20, state_String = 30, state_PERef = 40, state_HashName = 49, state_Name = 50, state_CommentOrDoctype = 60, state_Comment = 70, state_DocTypeDecl = 80, state_PI = 90, }; XMLToken token = XMLToken::Undef; unicode quote_char = 0; int state = state_Start; bool might_be_name = false; m_token.clear(); while (token == XMLToken::Undef) { unicode uc = get_next_char(); switch (state) { // start scanning. case state_Start: switch (uc) { case 0: token = XMLToken::Eof; break; case ' ': case '\t': case '\n': state = state_WhiteSpace; break; case '<': state = state_Tag; break; case '\'': case '"': { state = state_String; quote_char = uc; break; } case '%': state = state_PERef; break; case '#': state = state_HashName; break; case '=': token = XMLToken::Eq; break; case '?': token = XMLToken::QuestionMark; break; case '>': token = XMLToken::GreaterThan; break; case '[': token = XMLToken::OpenBracket; break; case ']': token = XMLToken::CloseBracket; break; case '(': token = XMLToken::OpenParenthesis; break; case ')': token = XMLToken::CloseParenthesis; break; // case '%': token = XMLToken::Percent; break; case '+': token = XMLToken::Plus; break; case '|': token = XMLToken::Pipe; break; case '*': token = XMLToken::Asterisk; break; case '/': token = XMLToken::Slash; break; case ',': token = XMLToken::Comma; break; default: if (is_name_start_char(uc)) { might_be_name = true; state = state_Name; } else if (is_name_char(uc)) state = state_Name; else if (is_char(uc)) token = XMLToken::Other; else not_well_formed("Unexpected character: " + ((uc < 128 and std::isprint(uc)) ? std::string(1, static_cast(uc)) : to_hex(uc)) ); break; } break; // collect all whitespace case state_WhiteSpace: if (uc != ' ' and uc != '\t' and uc != '\n') { retract(); token = XMLToken::Space; } break; // We scanned a < character, decide what to do next. case state_Tag: if (uc == '!') // comment or doctype thing state = state_CommentOrDoctype; else if (uc == '/') // end tag token = XMLToken::ETag; else if (uc == '?') // processing instruction state = state_PI; else // anything else { retract(); token = XMLToken::STag; } break; // So we had case state_Comment: if (uc == '-') token = XMLToken::Comment; else not_well_formed("Invalid formatted comment"); break; // scan for processing instructions case state_PI: if (not is_name_char(uc)) { retract(); // we treat the xml processing instruction separately. if (m_token.substr(2) == "xml") token = XMLToken::XMLDecl; else if (iequals(m_token.substr(2), "xml")) not_well_formed(" in text break; case ' ': case '\t': case '\n': case '\r': state = state_WhiteSpace; break; default: if (is_char(uc)) state = state_Content; // anything else else not_well_formed("Unexpected character in content: " + (std::isprint(uc) ? std::string(1, static_cast(uc)) : to_hex(uc)) ); break; } break; // collect all whitespace case state_WhiteSpace: if (not is_space(uc)) { retract(); token = XMLToken::Space; } break; // content. Only stop collecting character when uc is special case state_Content: if (uc == ']') state = state_Illegal; else if (uc == 0 or uc == '<' or uc == '&') { retract(); token = XMLToken::Content; } else if (not is_referrable_char(uc)) not_well_formed("Illegal character in content text"); break; // beginning of a tag? case state_Tag: if (uc == '/') token = XMLToken::ETag; else if (uc == '?') // processing instruction state = state_PI; else if (uc == '!') // comment or CDATA state = state_CommentOrCDATA; else { retract(); token = XMLToken::STag; } break; // processing instructions case state_PI: if (not is_name_char(uc)) { retract(); token = XMLToken::PI; } break; // comment or CDATA case state_CommentOrCDATA: if (uc == '-') // comment state = state_Comment; else if (uc == '[') state = state_CDATA; // CDATA else not_well_formed("invalid content"); break; case state_Comment: if (uc == '-') token = XMLToken::Comment; else not_well_formed("invalid content"); break; // CDATA (we parsed ') { token = XMLToken::CDSect; m_token = m_token.substr(9, m_token.length() - 12); } else if (uc == 0) not_well_formed("runaway cdata section"); else if (uc != ']') state = state_CDATA + 2; break; // reference, either a character reference or a general entity reference case state_Reference: if (uc == '#') state = state_Reference + 2; else if (is_name_start_char(uc)) state = state_Reference + 1; else not_well_formed("stray ampersand found in content"); break; case state_Reference + 1: if (not is_name_char(uc)) { if (uc != ';') not_well_formed("invalid entity found in content, missing semicolon?"); token = XMLToken::Reference; m_token = m_token.substr(1, m_token.length() - 2); } break; case state_Reference + 2: if (uc == 'x') state = state_Reference + 4; else if (uc >= '0' and uc <= '9') { charref = uc - '0'; state += 1; } else not_well_formed("invalid character reference"); break; case state_Reference + 3: if (uc >= '0' and uc <= '9') charref = charref * 10 + (uc - '0'); else if (uc == ';') { if (not is_referrable_char(charref)) not_well_formed("Illegal character in content text"); m_token.clear(); append(m_token, charref); token = XMLToken::CharRef; } else not_well_formed("invalid character reference"); break; case state_Reference + 4: if (uc >= 'a' and uc <= 'f') { charref = uc - 'a' + 10; state += 1; } else if (uc >= 'A' and uc <= 'F') { charref = uc - 'A' + 10; state += 1; } else if (uc >= '0' and uc <= '9') { charref = uc - '0'; state += 1; } else not_well_formed("invalid character reference"); break; case state_Reference + 5: if (uc >= 'a' and uc <= 'f') charref = (charref << 4) + (uc - 'a' + 10); else if (uc >= 'A' and uc <= 'F') charref = (charref << 4) + (uc - 'A' + 10); else if (uc >= '0' and uc <= '9') charref = (charref << 4) + (uc - '0'); else if (uc == ';') { if (not is_referrable_char(charref)) not_well_formed("Illegal character in content text"); m_token.clear(); append(m_token, charref); token = XMLToken::CharRef; } else not_well_formed("invalid character reference"); break; // ]]> is illegal case state_Illegal: if (uc == ']') state += 1; else { retract(); state = state_Content; } break; case state_Illegal + 1: if (uc == '>') not_well_formed("the sequence ']]>' is illegal in content text"); else if (uc != ']') { retract(); retract(); state = state_Content; } break; default: assert(false); not_well_formed("state reached that should not be reachable"); } } //#if DEBUG // if (VERBOSE) // std::cout << "content: " << describe_token(token) << " (" << m_token << ')' << std::endl; //#endif return token; } float parser_imp::parse_version() { float result = -1; if (m_token.length() >= 3) { auto i = m_token.begin(); if (*i == '1' and *(i + 1) == '.') { result = 1.0f; float dec = 10; for (i += 2; i != m_token.end(); ++i) { if (*i < '0' or *i > '9') { result = -1; break; } result += (*i - '0') / dec; dec += 10; } } } if (result < 1.0 or result >= 2.0) not_well_formed("Invalid version specified: '" + m_token + "'"); return result; } void parser_imp::parse(bool validate, bool validate_ns) { m_validating = validate; m_validating_ns = validate_ns; m_lookahead = get_next_token(); prolog(); const doctype::element_ *e = get_element(m_root_element); if (m_has_dtd and e == nullptr and m_validating) not_valid("Element '" + m_root_element + "' is not defined in DTD"); if (e) { doctype::content_spec_element allowed(m_root_element); doctype::validator valid(&allowed); element(valid); } else { doctype::content_spec_any allowed; doctype::validator valid(&allowed); element(valid); } misc(); if (m_lookahead != XMLToken::Eof) not_well_formed("garbage at end of file"); if (not m_unresolved_ids.empty()) { not_valid("document contains references to the following undefined ID's: '" + join(m_unresolved_ids, ", ") + "'"); } } void parser_imp::prolog() { xml_decl(); misc(); if (m_lookahead == XMLToken::DocType) { doctypedecl(); misc(); } else if (m_validating) not_valid("document type declaration is missing"); } void parser_imp::xml_decl() { if (m_lookahead == XMLToken::XMLDecl) { encoding_type encoding = m_encoding; if (m_encoding == encoding_type::UTF8) m_source.top()->encoding(encoding_type::ASCII); match(XMLToken::XMLDecl); s(true); if (m_token != "version") not_well_formed("expected a version attribute in XML declaration"); match(XMLToken::Name); eq(); auto version = parse_version(); m_version = version; if (m_version >= 2.0f or m_version < 1.0f) not_well_formed("This library only supports XML version 1.0 or 1.1"); m_source.top()->version(version); match(XMLToken::String); if (m_lookahead == XMLToken::Space) { s(true); if (m_token == "encoding") { match(XMLToken::Name); eq(); to_lower(m_token); if (m_token == "us-ascii") encoding = encoding_type::ASCII; else if (m_token == "iso-8859-1") encoding = encoding_type::ISO88591; else if (m_token == "utf-8") encoding = encoding_type::UTF8; else if (m_token == "utf-16") { if (m_source.top()->encoding() != encoding_type::UTF16LE and m_source.top()->encoding() != encoding_type::UTF16BE) not_well_formed("Inconsistent encoding attribute in XML declaration"); encoding = m_source.top()->encoding(); } else not_well_formed("Unsupported encoding value '" + m_token + "'"); match(XMLToken::String); s(); } if (m_token == "standalone") { match(XMLToken::Name); eq(); if (m_token != "yes" and m_token != "no") not_well_formed("Invalid XML declaration, standalone value should be either yes or no"); m_standalone = (m_token == "yes"); match(XMLToken::String); s(); } } m_encoding = encoding; m_source.top()->encoding(encoding); match(XMLToken::QuestionMark); match(XMLToken::GreaterThan); m_parser.xml_decl(m_encoding, m_standalone, m_version); } else m_encoding = m_source.top()->encoding(); } void parser_imp::text_decl() { if (m_lookahead == XMLToken::XMLDecl) { encoding_type encoding = m_source.top()->encoding(); if (encoding == encoding_type::UTF8 and not m_source.top()->has_bom()) m_source.top()->encoding(encoding_type::ISO88591); match(XMLToken::XMLDecl); s(true); if (m_token == "version") { match(XMLToken::Name); eq(); auto version = parse_version(); if (version > m_version) not_well_formed("Version mismatch between document and external entity"); match(XMLToken::String); s(m_version == 1.0); } if (m_token != "encoding") { if (m_version == 1.0) not_well_formed("encoding attribute is mandatory in text declaration"); } else { match(XMLToken::Name); eq(); match(XMLToken::String); s(); } m_source.top()->encoding(encoding); match(XMLToken::QuestionMark); match(XMLToken::GreaterThan); } } void parser_imp::misc() { for (;;) { switch (m_lookahead) { case XMLToken::Space: s(); continue; case XMLToken::Comment: comment(); continue; case XMLToken::PI: pi(); continue; default:; } break; } } void parser_imp::doctypedecl() { match(XMLToken::DocType); m_has_dtd = true; s(true); auto name = m_token; match(XMLToken::Name); m_root_element = name; std::unique_ptr dtd; if (m_lookahead == XMLToken::Space) { s(true); if (m_lookahead == XMLToken::Name) { std::string pubid, uri; if (m_token == "SYSTEM") { match(XMLToken::Name); s(true); uri = m_token; if (not is_valid_system_literal(uri)) not_well_formed("invalid system literal"); } else if (m_token == "PUBLIC") { match(XMLToken::Name); s(true); pubid = m_token; match(XMLToken::String); // validate the public ID if (not is_valid_public_id(pubid)) not_well_formed("Invalid public ID"); s(true); uri = m_token; } else not_well_formed("Expected external id starting with either SYSTEM or PUBLIC"); match(XMLToken::String); dtd.reset(get_data_source(pubid, uri)); if (m_validating and not dtd) not_valid("Could not load DTD " + uri); m_parser.doctype_decl(m_root_element, pubid, uri); } s(); } if (m_lookahead == XMLToken::OpenBracket) { match(XMLToken::OpenBracket); intsubset(); match(XMLToken::CloseBracket); s(); } // internal subset takes precedence over external subset, so // if the external subset is defined, include it here. if (dtd.get() != nullptr) { push_data_source(dtd.release(), false); m_external_subset = true; m_in_external_dtd = true; m_lookahead = get_next_token(); text_decl(); extsubset(); match(XMLToken::Eof); pop_data_source(); m_in_external_dtd = false; } match(XMLToken::GreaterThan); // test if all ndata references can be resolved for (const doctype::entity *e : m_general_entities) { if (e->is_parsed() == false and m_notations.count(e->get_ndata()) == 0) not_valid("Undefined NOTATION '" + e->get_ndata() + "'"); } // and the notations in the doctype attlists for (const doctype::element_ *element : m_doctype) { for (const doctype::attribute_ *attr : element->get_attributes()) { if (attr->get_type() != doctype::AttributeType::Notation) continue; for (const std::string& n : attr->get_enums()) { if (m_notations.count(n) == 0) not_valid("Undefined NOTATION '" + n + "'"); } } } } void parser_imp::pereference() { const doctype::entity& e = get_parameter_entity(m_token); push_data_source(new parameter_entity_data_source(e.get_replacement(), e.get_path()), true); match(XMLToken::PEReference); } void parser_imp::intsubset() { save_state state_intsubset(m_internal_subset, true); save_state state_allow_peref(m_allow_peref, true); for (;;) { switch (m_lookahead) { case XMLToken::Element: case XMLToken::AttList: case XMLToken::Entity: case XMLToken::Notation: markup_decl(); continue; case XMLToken::PI: pi(); continue; case XMLToken::Comment: comment(); continue; case XMLToken::Space: case XMLToken::PEReference: declsep(); continue; default:; } break; } } void parser_imp::declsep() { save_state state_declsep(m_in_declsep, true); switch (m_lookahead) { case XMLToken::PEReference: { const doctype::entity& e = get_parameter_entity(m_token); match(XMLToken::PEReference); push_data_source(new parameter_entity_data_source(e.get_replacement(), e.get_path()), false); m_lookahead = get_next_token(); extsubset(); match(XMLToken::Eof); pop_data_source(); break; } case XMLToken::Space: s(); break; default:; } } void parser_imp::extsubset() { save_state state_extsubset(m_external_subset, true); save_state state_allow_peref(m_allow_peref, true); for (;;) { switch (m_lookahead) { case XMLToken::Element: case XMLToken::AttList: case XMLToken::Entity: case XMLToken::Notation: markup_decl(); continue; case XMLToken::IncludeIgnore: conditionalsect(); continue; case XMLToken::PI: pi(); continue; case XMLToken::Comment: comment(); continue; case XMLToken::Space: case XMLToken::PEReference: declsep(); continue; default:; } break; } } void parser_imp::conditionalsect() { valid_nesting_validator check(*m_source.top()); match(XMLToken::IncludeIgnore); s(); bool include = false; if (m_token == "INCLUDE") include = true; else if (m_token == "IGNORE") include = false; else if (m_lookahead == XMLToken::Name) not_well_formed("Unexpected literal '" + m_token + "'"); match(XMLToken::Name); check.check(*m_source.top()); s(); if (include) { match(XMLToken::OpenBracket); extsubset(); match(XMLToken::CloseBracket); match(XMLToken::CloseBracket); check.check(*m_source.top()); match(XMLToken::GreaterThan); } else { ignoresectcontents(); check.check(*m_source.top()); m_lookahead = get_next_token(); } } void parser_imp::ignoresectcontents() { // yet another tricky routine, skip int state = 0; bool done = false; while (not done) { unicode ch = get_next_char(); if (ch == 0) not_well_formed("runaway IGNORE section"); switch (state) { case 0: if (ch == ']') state = 1; else if (ch == '<') state = 10; break; case 1: if (ch == ']') state = 2; else { retract(); state = 0; } break; case 2: if (ch == '>') done = true; else if (ch != ']') { retract(); state = 0; } break; case 10: if (ch == '!') state = 11; else { retract(); state = 0; } break; case 11: if (ch == '[') { ignoresectcontents(); state = 0; } else { retract(); state = 0; } break; } } } void parser_imp::markup_decl() { save_state state_allow_peref(m_allow_peref, m_external_subset); switch (m_lookahead) { case XMLToken::Element: element_decl(); break; case XMLToken::AttList: attlist_decl(); break; case XMLToken::Entity: entity_decl(); break; case XMLToken::Notation: notation_decl(); break; case XMLToken::PI: pi(); break; case XMLToken::Comment: comment(); break; case XMLToken::Space: s(); break; default:; } } void parser_imp::element_decl() { valid_nesting_validator check(*m_source.top()); match(XMLToken::Element); s(true); std::string name = m_token; if (starts_with(name, "xmlns:")) not_well_formed("Element names should not start with xmlns:"); auto e = std::find_if(m_doctype.begin(), m_doctype.end(), [name](auto e) { return e->name() == name; }); if (e == m_doctype.end()) e = m_doctype.insert(m_doctype.end(), new doctype::element_(name, true, m_in_external_dtd)); else if ((*e)->is_declared()) not_valid("duplicate element declaration for element '" + name + "'"); match(XMLToken::Name); s(true); contentspec(**e); s(); check.check(*m_source.top()); match(XMLToken::GreaterThan); } void parser_imp::contentspec(doctype::element_& element) { if (m_lookahead == XMLToken::Name) { if (m_token == "EMPTY") element.set_allowed(new doctype::content_spec_empty); else if (m_token == "ANY") element.set_allowed(new doctype::content_spec_any); else not_well_formed("Invalid element content specification"); match(XMLToken::Name); } else { valid_nesting_validator check(*m_source.top()); match(XMLToken::OpenParenthesis); std::unique_ptr allowed; s(); bool mixed = false; bool more = false; if (m_lookahead == XMLToken::PCData) // Mixed { mixed = true; match(m_lookahead); s(); std::set seen; while (m_lookahead == XMLToken::Pipe) { more = true; match(XMLToken::Pipe); s(); if (seen.count(m_token) > 0) not_valid("no duplicates allowed in mixed content for element declaration"); seen.insert(m_token); match(XMLToken::Name); s(); } doctype::content_spec_choice *choice = new doctype::content_spec_choice(true); for (auto& c : seen) choice->add(new doctype::content_spec_element(c)); allowed.reset(choice); } else // children { allowed.reset(cp()); s(); if (m_lookahead == XMLToken::Comma) { doctype::content_spec_seq *seq = new doctype::content_spec_seq(allowed.release()); allowed.reset(seq); more = true; do { match(m_lookahead); s(); seq->add(cp()); s(); } while (m_lookahead == XMLToken::Comma); } else if (m_lookahead == XMLToken::Pipe) { doctype::content_spec_choice *choice = new doctype::content_spec_choice(allowed.release(), false); allowed.reset(choice); more = true; do { match(m_lookahead); s(); choice->add(cp()); s(); } while (m_lookahead == XMLToken::Pipe); } } s(); check.check(*m_source.top()); match(XMLToken::CloseParenthesis); if (m_lookahead == XMLToken::Asterisk) { allowed.reset(new doctype::content_spec_repeated(allowed.release(), '*')); match(XMLToken::Asterisk); } else if (more) { if (mixed) { allowed.reset(new doctype::content_spec_repeated(allowed.release(), '*')); match(XMLToken::Asterisk); } else if (m_lookahead == XMLToken::Plus) { allowed.reset(new doctype::content_spec_repeated(allowed.release(), '+')); match(XMLToken::Plus); } else if (m_lookahead == XMLToken::QuestionMark) { allowed.reset(new doctype::content_spec_repeated(allowed.release(), '?')); match(XMLToken::QuestionMark); } } element.set_allowed(allowed.release()); } } doctype::content_spec_ptr parser_imp::cp() { std::unique_ptr result; if (m_lookahead == XMLToken::OpenParenthesis) { valid_nesting_validator check(*m_source.top()); match(XMLToken::OpenParenthesis); s(); result.reset(cp()); s(); if (m_lookahead == XMLToken::Comma) { doctype::content_spec_seq *seq = new doctype::content_spec_seq(result.release()); result.reset(seq); do { match(m_lookahead); s(); seq->add(cp()); s(); } while (m_lookahead == XMLToken::Comma); } else if (m_lookahead == XMLToken::Pipe) { doctype::content_spec_choice *choice = new doctype::content_spec_choice(result.release(), false); result.reset(choice); do { match(m_lookahead); s(); choice->add(cp()); s(); } while (m_lookahead == XMLToken::Pipe); } s(); check.check(*m_source.top()); match(XMLToken::CloseParenthesis); } else { std::string name = m_token; match(XMLToken::Name); result.reset(new doctype::content_spec_element(name)); } switch (m_lookahead) { case XMLToken::Asterisk: result.reset(new doctype::content_spec_repeated(result.release(), '*')); match(XMLToken::Asterisk); break; case XMLToken::Plus: result.reset(new doctype::content_spec_repeated(result.release(), '+')); match(XMLToken::Plus); break; case XMLToken::QuestionMark: result.reset(new doctype::content_spec_repeated(result.release(), '?')); match(XMLToken::QuestionMark); break; default:; } return result.release(); } void parser_imp::entity_decl() { match(XMLToken::Entity); s(true); if (m_lookahead == XMLToken::Percent) // PEDecl parameter_entity_decl(); else general_entity_decl(); } void parser_imp::parameter_entity_decl() { match(XMLToken::Percent); s(true); std::string name = m_token; match(XMLToken::Name); if (m_validating_ns and name.find(':') != std::string::npos) not_well_formed("Entity names should not contain a colon"); if (starts_with(name, "xmlns:")) not_well_formed("Entity names should not start with xmlns:"); s(true); std::string path; std::string value; { // PEDef is either a EntityValue... if (m_lookahead == XMLToken::String) { value = m_token; match(XMLToken::String); parse_parameter_entity_declaration(value); } else // ... or an external id { std::tie(path, value) = read_external_id(); match(XMLToken::String); } s(); } match(XMLToken::GreaterThan); if (find_if(m_parameter_entities.begin(), m_parameter_entities.end(), [name](auto e) { return e->name() == name; }) == m_parameter_entities.end()) { m_parameter_entities.push_back(new doctype::parameter_entity(name, value, path)); } } void parser_imp::general_entity_decl() { std::string name = m_token; match(XMLToken::Name); s(true); if (m_validating_ns and name.find(':') != std::string::npos) not_well_formed("Entity names should not contain a colon"); if (starts_with(name, "xmlns:")) not_well_formed("Entity names should not start with xmlns:"); std::string value, ndata; bool external = false; bool parsed = true; if (m_lookahead == XMLToken::String) { value = m_token; match(XMLToken::String); parse_general_entity_declaration(value); } else // ... or an ExternalID { std::tie(std::ignore, value) = read_external_id(); match(XMLToken::String); external = true; if (m_lookahead == XMLToken::Space) { s(true); if (m_lookahead == XMLToken::Name and m_token == "NDATA") { match(XMLToken::Name); s(true); parsed = false; ndata = m_token; match(XMLToken::Name); } } } s(); match(XMLToken::GreaterThan); if (std::find_if(m_general_entities.begin(), m_general_entities.end(), [name](auto e) { return e->name() == name; }) == m_general_entities.end()) { m_general_entities.push_back(new doctype::general_entity(name, value, external, parsed)); if (not parsed) m_general_entities.back()->set_ndata(ndata); if (m_in_external_dtd) m_general_entities.back()->set_externally_defined(true); } } void parser_imp::attlist_decl() { match(XMLToken::AttList); s(true); std::string element = m_token; match(XMLToken::Name); auto dte = find_if(m_doctype.begin(), m_doctype.end(), [element](auto e) { return e->name() == element; }); if (dte == m_doctype.end()) dte = m_doctype.insert(m_doctype.end(), new doctype::element_(element, false, m_in_external_dtd)); // attribute defaults while (m_lookahead == XMLToken::Space) { s(true); if (m_lookahead != XMLToken::Name) break; std::string name = m_token; match(XMLToken::Name); s(true); std::unique_ptr attribute; // att type: several possibilities: if (m_lookahead == XMLToken::OpenParenthesis) // enumeration { std::vector enums; match(m_lookahead); s(); enums.push_back(m_token); if (m_lookahead == XMLToken::Name) match(XMLToken::Name); else match(XMLToken::NMToken); s(); while (m_lookahead == XMLToken::Pipe) { match(XMLToken::Pipe); s(); if (find(enums.begin(), enums.end(), m_token) != enums.end()) not_valid("Duplicate token in enumerated attribute declaration ('" + m_token + "')"); enums.push_back(m_token); if (m_lookahead == XMLToken::Name) match(XMLToken::Name); else match(XMLToken::NMToken); s(); } s(); match(XMLToken::CloseParenthesis); attribute.reset(new doctype::attribute_(name, doctype::AttributeType::Enumerated, enums)); } else { std::string type = m_token; match(XMLToken::Name); std::vector notations; if (type == "CDATA") attribute.reset(new doctype::attribute_(name, doctype::AttributeType::CDATA)); else if (type == "ID") attribute.reset(new doctype::attribute_(name, doctype::AttributeType::ID)); else if (type == "IDREF") attribute.reset(new doctype::attribute_(name, doctype::AttributeType::IDREF)); else if (type == "IDREFS") attribute.reset(new doctype::attribute_(name, doctype::AttributeType::IDREFS)); else if (type == "ENTITY") attribute.reset(new doctype::attribute_(name, doctype::AttributeType::ENTITY)); else if (type == "ENTITIES") attribute.reset(new doctype::attribute_(name, doctype::AttributeType::ENTITIES)); else if (type == "NMTOKEN") attribute.reset(new doctype::attribute_(name, doctype::AttributeType::NMTOKEN)); else if (type == "NMTOKENS") attribute.reset(new doctype::attribute_(name, doctype::AttributeType::NMTOKENS)); else if (type == "NOTATION") { s(true); match(XMLToken::OpenParenthesis); s(); notations.push_back(m_token); match(XMLToken::Name); s(); while (m_lookahead == XMLToken::Pipe) { match(XMLToken::Pipe); s(); if (find(notations.begin(), notations.end(), m_token) != notations.end()) not_valid("Duplicate token in enumerated attribute declaration ('" + m_token + "')"); notations.push_back(m_token); match(XMLToken::Name); s(); } s(); match(XMLToken::CloseParenthesis); attribute.reset(new doctype::attribute_(name, doctype::AttributeType::Notation, notations)); } else not_well_formed("invalid attribute type"); } // att def s(true); std::string value; switch (m_lookahead) { case XMLToken::Required: match(m_lookahead); attribute->set_default(doctype::AttributeDefault::Required, ""); break; case XMLToken::Implied: match(m_lookahead); attribute->set_default(doctype::AttributeDefault::Implied, ""); break; case XMLToken::Fixed: { match(m_lookahead); if (attribute->get_type() == doctype::AttributeType::ID) not_valid("the default declaration for an ID attribute declaration should be #IMPLIED or #REQUIRED"); s(true); std::string token_value = m_token; normalize_attribute_value(token_value, attribute->get_type() == doctype::AttributeType::CDATA); if (not token_value.empty() and not attribute->validate_value(token_value, m_general_entities)) { not_valid("default value '" + token_value + "' for attribute '" + name + "' is not valid"); } attribute->set_default(doctype::AttributeDefault::Fixed, token_value); match(XMLToken::String); break; } default: { if (attribute->get_type() == doctype::AttributeType::ID) not_valid("the default declaration for an ID attribute declaration should be #IMPLIED or #REQUIRED"); if (m_standalone) not_valid("Document cannot be standalone since there is a default value for an attribute"); std::string token_value = m_token; normalize_attribute_value(token_value, attribute->get_type() == doctype::AttributeType::CDATA); collapse_spaces(token_value); if (not token_value.empty() and not attribute->validate_value(token_value, m_general_entities)) { not_valid("default value '" + token_value + "' for attribute '" + name + "' is not valid"); } attribute->set_default(doctype::AttributeDefault::None, token_value); match(XMLToken::String); break; } } if (attribute->get_type() == doctype::AttributeType::ID) { const doctype::attribute_list& atts = (*dte)->get_attributes(); if (std::find_if(atts.begin(), atts.end(), [](auto a) { return a->get_type() == doctype::AttributeType::ID; }) != atts.end()) not_valid("only one attribute per element can have the ID type"); } attribute->set_external(m_in_external_dtd); // attribute->version(m_version); (*dte)->add_attribute(attribute.release()); } match(XMLToken::GreaterThan); } void parser_imp::notation_decl() { match(XMLToken::Notation); s(true); std::string name = m_token, pubid, sysid; if (m_validating_ns and name.find(':') != std::string::npos) not_well_formed("Notation names should not contain a colon"); if (m_notations.count(name) > 0) not_valid("notation names should be unique"); m_notations.insert(name); match(XMLToken::Name); s(true); if (m_token == "SYSTEM") { match(XMLToken::Name); s(true); sysid = m_token; match(XMLToken::String); if (not is_valid_system_literal(sysid)) not_well_formed("invalid system literal"); } else if (m_token == "PUBLIC") { match(XMLToken::Name); s(true); pubid = m_token; match(XMLToken::String); // validate the public ID if (not is_valid_public_id(pubid)) not_well_formed("Invalid public ID"); s(); if (m_lookahead == XMLToken::String) { sysid = m_token; match(XMLToken::String); } } else not_well_formed("Expected either SYSTEM or PUBLIC"); s(); match(XMLToken::GreaterThan); collapse_spaces(sysid); replace_all(pubid, "\t", " "); replace_all(pubid, "\n", " "); collapse_spaces(pubid); m_parser.notation_decl(name, sysid, pubid); } data_source* parser_imp::get_data_source(const std::string& pubid, std::string uri) { data_source *result = nullptr; std::istream *is = m_parser.external_entity_ref(m_source.top()->base(), pubid, uri); if (is != nullptr) { result = new istream_data_source(is); std::string::size_type s = uri.rfind('/'); if (s == std::string::npos) result->base(m_source.top()->base()); else { uri.erase(s, std::string::npos); if (is_absolute_path(uri)) result->base(uri); else result->base(m_source.top()->base() + '/' + uri); } } return result; } std::tuple parser_imp::read_external_id() { std::string result; std::string path; std::string pubid, uri; if (m_token == "SYSTEM") { match(XMLToken::Name); s(true); uri = m_token; if (not is_valid_system_literal(uri)) not_well_formed("invalid system literal"); } else if (m_token == "PUBLIC") { match(XMLToken::Name); s(true); pubid = m_token; match(XMLToken::String); // validate the public ID if (not is_valid_public_id(pubid)) not_well_formed("Invalid public ID"); s(true); uri = m_token; } else not_well_formed("Expected external id starting with either SYSTEM or PUBLIC"); std::unique_ptr data(get_data_source(pubid, uri)); if (data) { push_data_source(data.release(), false); path = m_source.top()->base(); m_lookahead = get_next_token(); text_decl(); if (m_lookahead != XMLToken::Eof) { result = m_token; while (m_buffer_ptr > m_buffer.begin()) append(result, *--m_buffer_ptr); while (unicode ch = m_source.top()->get_next_char()) append(result, ch); } pop_data_source(); } return std::make_tuple(path, result); } void parser_imp::parse_parameter_entity_declaration(std::string& s) { std::string result; int state = 0; unicode charref = 0; std::string name; int open = 0; for (std::string::const_iterator i = s.begin(); i != s.end(); ++i) { unicode c = *i; switch (state) { case 0: if (c == '&') state = 1; else if (c == '%') { if (m_allow_peref) { name.clear(); state = 20; } else not_well_formed("parameter entities may not occur in declarations that are not in an external subset"); } else if (c == '<') { ++open; append(result, c); } else if (c == '>') { --open; append(result, c); } else if (not is_char(c)) not_well_formed("Invalid character in entity value"); else append(result, c); break; case 1: if (c == '#') state = 2; else { result += '&'; append(result, c); state = 0; } break; case 2: if (c == 'x') state = 4; else if (c >= '0' and c <= '9') { charref = c - '0'; state = 3; } else not_well_formed("invalid character reference"); break; case 3: if (c >= '0' and c <= '9') charref = charref * 10 + (c - '0'); else if (c == ';') { if (not is_referrable_char(charref)) not_well_formed("Illegal character referenced: " + to_hex(charref) + '\''); append(result, charref); state = 0; } else not_well_formed("invalid character reference"); break; case 4: if (c >= 'a' and c <= 'f') { charref = c - 'a' + 10; state = 5; } else if (c >= 'A' and c <= 'F') { charref = c - 'A' + 10; state = 5; } else if (c >= '0' and c <= '9') { charref = c - '0'; state = 5; } else not_well_formed("invalid character reference"); break; case 5: if (c >= 'a' and c <= 'f') charref = (charref << 4) + (c - 'a' + 10); else if (c >= 'A' and c <= 'F') charref = (charref << 4) + (c - 'A' + 10); else if (c >= '0' and c <= '9') charref = (charref << 4) + (c - '0'); else if (c == ';') { if (not is_referrable_char(charref)) not_well_formed("Illegal character referenced: '" + to_hex(charref) + '\''); append(result, charref); state = 0; } else not_well_formed("invalid character reference"); break; case 20: if (c == ';') { const doctype::entity& e = get_parameter_entity(name); result += e.get_replacement(); state = 0; } else if (is_name_char(c)) append(name, c); else not_well_formed("invalid parameter entity reference"); break; default: assert(false); not_well_formed("invalid state"); } } if (state != 0) not_well_formed("invalid reference"); if (open != 0) not_valid("invalid reference"); swap(s, result); } // parse out the general and parameter entity references in a value std::string // for a general entity reference which is about to be stored. void parser_imp::parse_general_entity_declaration(std::string& s) { std::string result; int state = 0; unicode charref = 0; std::string name; auto sp = s.begin(); auto se = s.end(); while (sp < se) { unicode c; std::tie(c, sp) = get_first_char(sp, se); switch (state) { case 0: if (c == '&') state = 1; else if (c == '%') { if (m_allow_peref) { name.clear(); state = 20; } else not_well_formed("parameter entities may not occur in declarations that are not in an external subset"); } else if (not is_char(c)) not_well_formed("Invalid character in entity value"); else append(result, c); break; case 1: if (c == '#') state = 2; else if (is_name_start_char(c)) { name.clear(); append(name, c); state = 10; } break; case 2: if (c == 'x') state = 4; else if (c >= '0' and c <= '9') { charref = c - '0'; state = 3; } else not_well_formed("invalid character reference"); break; case 3: if (c >= '0' and c <= '9') charref = charref * 10 + (c - '0'); else if (c == ';') { if (not is_referrable_char(charref)) not_well_formed("Illegal character referenced: '" + to_hex(charref) + '\''); append(result, charref); state = 0; } else not_well_formed("invalid character reference"); break; case 4: if (c >= 'a' and c <= 'f') { charref = c - 'a' + 10; state = 5; } else if (c >= 'A' and c <= 'F') { charref = c - 'A' + 10; state = 5; } else if (c >= '0' and c <= '9') { charref = c - '0'; state = 5; } else not_well_formed("invalid character reference"); break; case 5: if (c >= 'a' and c <= 'f') charref = (charref << 4) + (c - 'a' + 10); else if (c >= 'A' and c <= 'F') charref = (charref << 4) + (c - 'A' + 10); else if (c >= '0' and c <= '9') charref = (charref << 4) + (c - '0'); else if (c == ';') { if (not is_referrable_char(charref)) not_well_formed("Illegal character referenced: '" + to_hex(charref) + '\''); append(result, charref); state = 0; } else not_well_formed("invalid character reference"); break; case 10: if (c == ';') { result += '&'; result += name; result += ';'; state = 0; } else if (is_name_char(c)) append(name, c); else not_well_formed("invalid entity reference"); break; case 20: if (c == ';') { const doctype::entity& e = get_parameter_entity(name); result += e.get_replacement(); state = 0; } else if (is_name_char(c)) append(name, c); else not_well_formed("invalid parameter entity reference"); break; default: assert(false); not_well_formed("invalid state"); } } if (state != 0) not_well_formed("invalid reference"); swap(s, result); } std::string parser_imp::normalize_attribute_value() { std::string result; unicode charref = 0; std::string name; enum State { state_Start, state_ReferenceStart, state_CharReferenceStart, state_HexCharReference, state_HexCharReference2, state_DecCharReference, state_EntityReference, } state = state_Start; for (;;) { unicode c = get_next_char(); if (c == 0) break; if (c == '<') not_well_formed("Attribute values may not contain '<' character"); switch (state) { case state_Start: if (c == ' ' or c == '\t' or c == '\r' or c == '\n') result += ' '; else if (c == '&') state = state_ReferenceStart; else append(result, c); break; case state_ReferenceStart: if (c == '#') state = state_CharReferenceStart; else if (is_name_start_char(c)) { name.clear(); append(name, c); state = state_EntityReference; } else not_well_formed("invalid reference found in attribute value"); break; case state_CharReferenceStart: if (c == 'x') state = state_HexCharReference; else if (c >= '0' and c <= '9') { charref = c - '0'; state = state_DecCharReference; } else not_well_formed("invalid character reference"); break; case state_DecCharReference: if (c >= '0' and c <= '9') charref = charref * 10 + (c - '0'); else if (c == ';') { if (not is_referrable_char(charref)) not_well_formed("Illegal character referenced: '" + to_hex(charref) + '\''); append(result, charref); state = state_Start; } else not_well_formed("invalid character reference"); break; case state_HexCharReference: if (c >= 'a' and c <= 'f') { charref = c - 'a' + 10; state = state_HexCharReference2; } else if (c >= 'A' and c <= 'F') { charref = c - 'A' + 10; state = state_HexCharReference2; } else if (c >= '0' and c <= '9') { charref = c - '0'; state = state_HexCharReference2; } else not_well_formed("invalid character reference"); break; case state_HexCharReference2: if (c >= 'a' and c <= 'f') charref = (charref << 4) + (c - 'a' + 10); else if (c >= 'A' and c <= 'F') charref = (charref << 4) + (c - 'A' + 10); else if (c >= '0' and c <= '9') charref = (charref << 4) + (c - '0'); else if (c == ';') { if (not is_referrable_char(charref)) not_well_formed("Illegal character referenced: '" + to_hex(charref) + '\''); append(result, charref); state = state_Start; } else not_well_formed("invalid character reference"); break; case state_EntityReference: if (c == ';') { if (std::find(m_entities_on_stack.begin(), m_entities_on_stack.end(), name) != m_entities_on_stack.end()) not_well_formed("infinite recursion in nested entity references"); m_entities_on_stack.push_back(name); const doctype::entity& e = get_general_entity(name); if (e.is_external()) not_well_formed("attribute value may not contain external entity reference"); if (e.is_externally_defined() and m_standalone) not_well_formed("document marked as standalone but an external entity is referenced"); push_data_source(new entity_data_source(e.get_replacement(), m_source.top()->base()), false); std::string replacement = normalize_attribute_value(); result += replacement; state = state_Start; m_entities_on_stack.pop_back(); } else if (is_name_char(c)) append(name, c); else not_well_formed("invalid entity reference"); break; default: assert(false); not_well_formed("invalid state"); } } if (state != state_Start) not_well_formed("invalid reference"); m_source.pop(); return result; } void parser_imp::collapse_spaces(std::string& s) { auto i = s.begin(), o = s.begin();; bool space = true; while (i != s.end()) { if (*i == ' ') { if (not space) *o++ = ' '; ++i; space = true; } else { *o++ = *i++; space = false; } } if (space and o != s.begin()) --o; s.erase(o, s.end()); } void parser_imp::element(doctype::validator& valid) { save_state in_content(m_in_content, false); match(XMLToken::STag); std::string name = m_token; match(XMLToken::Name); if (not valid.allow(name)) not_valid("element '" + name + "' not expected at this position"); const doctype::element_ *dte = get_element(name); if (m_has_dtd and dte == nullptr and m_validating) not_valid("Element '" + name + "' is not defined in DTD"); doctype::validator sub_valid(dte); std::list attrs; ns_state ns(this); std::set seen; for (;;) { if (m_lookahead != XMLToken::Space) break; s(true); if (m_lookahead != XMLToken::Name) break; std::string attr_name = m_token; match(XMLToken::Name); if (seen.count(attr_name) > 0) not_well_formed("multiple values for attribute '" + attr_name + "'"); seen.insert(attr_name); eq(); const doctype::attribute_ *dta = nullptr; if (dte != nullptr) dta = dte->get_attribute(attr_name); if (dta == nullptr and not m_validating and attr_name == "xml:space") dta = m_xmlSpaceAttr.get(); if (dta == nullptr and m_validating) not_valid("undeclared attribute '" + attr_name + "'"); std::string attr_value = normalize_attribute_value(m_token, dta == nullptr or dta->get_type() == doctype::AttributeType::CDATA); match(XMLToken::String); if (m_validating and dta != nullptr and dta->get_default_type() == doctype::AttributeDefault::Fixed and attr_value != std::get<1>(dta->get_default())) { not_valid("invalid value specified for fixed attribute"); } // had a crash suddenly here deep down in starts_with... if (attr_name == "xmlns" or attr_name.compare(0, 6, "xmlns:", 6) == 0) // namespace support { if (not ((m_version > 1.0f and attr_value.empty()) or is_valid_url(attr_value))) not_well_formed("Not a valid namespace URI: " + attr_value); if (not (m_version > 1.0f and attr_value.empty()) and ns.is_known_uri(attr_value)) not_well_formed("This uri is repeated: " + attr_value); if (attr_value == "http://www.w3.org/XML/1998/namespace" or attr_value == "http://www.w3.org/2000/xmlns/") not_well_formed("The xml namespace is reserved"); if (attr_name.length() == 5) { ns.default_ns(attr_value); m_parser.start_namespace_decl("", attr_value); } else if (attr_name.length() == 6) not_well_formed("Invalid xmlns: "); else { std::string prefix = attr_name.substr(6); if (iequals(prefix, "xml") or iequals(prefix, "xmlns")) not_well_formed(prefix + " is a preserved prefix"); if (m_version > 1.0f and attr_value.empty()) ns.unbind(prefix); else { ns.bind(prefix, attr_value); m_parser.start_namespace_decl(prefix, attr_value); } } // if (not attr_value.empty()) // ns.m_known_uris.insert(attr_value); } else { bool id = (attr_name == "xml:id"); if (dta != nullptr) { std::string v(attr_value); if (not dta->validate_value(attr_value, m_general_entities)) { if (dta == m_xmlSpaceAttr.get()) not_well_formed("invalid value ('" + attr_value + "') for attribute " + attr_name + ""); else not_valid("invalid value ('" + attr_value + "') for attribute " + attr_name + ""); } if (m_validating and m_standalone and dta->is_external() and v != attr_value) not_valid("attribute value modified as a result of an external defined attlist declaration, which is not valid in a standalone document"); if (dta->get_type() == doctype::AttributeType::ID) { id = true; if (m_validating_ns and attr_value.find(':') != std::string::npos) not_valid("ID attribute value should not contain a colon"); if (m_ids.count(attr_value) > 0) { not_valid("attribute value ('" + attr_value + "') for attribute '" + attr_name + "' is not unique"); } m_ids.insert(attr_value); if (m_unresolved_ids.count(attr_value) > 0) m_unresolved_ids.erase(attr_value); } else if (dta->get_type() == doctype::AttributeType::IDREF) { if (attr_value.empty()) not_valid("attribute value for attribute '" + attr_name + "' may not be empty"); if (not m_ids.count(attr_value)) m_unresolved_ids.insert(attr_value); } else if (dta->get_type() == doctype::AttributeType::IDREFS) { if (attr_value.empty()) not_valid("attribute value for attribute '" + attr_name + "' may not be empty"); std::string::size_type b = 0, e = attr_value.find(' '); while (e != std::string::npos) { if (e - b > 0) { std::string idv = attr_value.substr(b, e); if (not m_ids.count(idv)) m_unresolved_ids.insert(idv); } b = e + 1; e = attr_value.find(' ', b); } if (b != std::string::npos and b < attr_value.length()) { std::string idv = attr_value.substr(b); if (not m_ids.count(idv)) m_unresolved_ids.insert(idv); } } } detail::attr attr; attr.m_name = attr_name; attr.m_value = attr_value; attr.m_id = id; if (m_ns != nullptr and dta == nullptr) { std::string::size_type d = attr_name.find(':'); if (d != std::string::npos) { if (attr_name.find(':', d + 1) != std::string::npos) not_well_formed("Multiple colons in attribute name"); auto prefix = attr_name.substr(0, d); if (not iequals(prefix, "xml")) { std::string nsv = m_ns->ns_for_prefix(prefix); if (nsv.empty()) not_well_formed("Unbound attribute prefix"); attr.m_ns = nsv; attr.m_name = attr_name.substr(d + 1); } } } attrs.push_back(attr); } } if (dte == nullptr) { if (name[0] == ':') not_well_formed("Element name should not start with colon"); auto cp = name.find(':'); if (cp != std::string::npos) { auto prefix = name.substr(0, cp); if (not ns.is_known_prefix(prefix)) not_well_formed("Unknown prefix for element " + name); } } else // add missing attributes { for (const doctype::attribute_ *dta : dte->get_attributes()) { std::string attr_name = dta->name(); std::list::iterator attr = find_if(attrs.begin(), attrs.end(), [attr_name](auto& a) { return a.m_name == attr_name; }); doctype::AttributeDefault defType; std::string defValue; std::tie(defType, defValue) = dta->get_default(); if (defType == doctype::AttributeDefault::Required) { if (attr == attrs.end()) not_valid("missing #REQUIRED attribute '" + attr_name + "' for element '" + name + "'"); } else if (not defValue.empty() and attr == attrs.end()) { if (m_validating and m_standalone and dta->is_external()) not_valid("default value for attribute defined in external declaration which is not allowed in a standalone document"); detail::attr def_attr; def_attr.m_name = attr_name; def_attr.m_value = normalize_attribute_value(defValue, dta->get_type() == doctype::AttributeType::CDATA); def_attr.m_id = false; if (m_ns != nullptr) { std::string::size_type d = attr_name.find(':'); if (d != std::string::npos) { std::string nsv = m_ns->ns_for_prefix(attr_name.substr(0, d)); if (not nsv.empty()) { def_attr.m_ns = nsv; def_attr.m_name = attr_name.substr(d + 1); } } } attrs.push_back(def_attr); } } } // now find out the namespace we're supposed to pass std::string uri, raw(name); std::string::size_type c = name.find(':'); if (c != std::string::npos and c > 0) { uri = ns.ns_for_prefix(name.substr(0, c)); name.erase(0, c + 1); } else uri = ns.default_ns(); // sort the attributes (why? disabled to allow similar output) attrs.sort([](auto& a, auto& b) { return a.m_name < b.m_name; }); if (m_lookahead == XMLToken::Slash) { match(XMLToken::Slash); m_parser.start_element(name, uri, attrs); m_parser.end_element(name, uri); } else { m_parser.start_element(name, uri, attrs); m_in_content = true; match(XMLToken::GreaterThan); if (m_lookahead != XMLToken::ETag) content(sub_valid); m_in_content = false; match(XMLToken::ETag); if (m_token != raw) not_well_formed("end tag does not match start tag"); match(XMLToken::Name); s(); m_parser.end_element(name, uri); } in_content.reset(); match(XMLToken::GreaterThan); if (m_validating and dte != nullptr and not sub_valid.done()) not_valid("missing child elements for element '" + dte->name() + "'"); } void parser_imp::content(doctype::validator& valid) { if (valid.get_content_spec() == doctype::ContentSpecType::Empty and m_lookahead != XMLToken::ETag) not_valid("Content is not allowed in an element declared to be EMPTY"); do { switch (m_lookahead) { case XMLToken::Content: case XMLToken::Space: if (valid.get_content_spec() == doctype::ContentSpecType::Empty) not_valid("character data not allowed in EMPTY element"); else if (valid.get_content_spec() == doctype::ContentSpecType::Children and m_lookahead == XMLToken::Content) not_valid("character data '" + m_token + "' not allowed in element"); m_parser.character_data(m_token); match(m_lookahead); break; case XMLToken::CharRef: if (valid.get_content_spec() == doctype::ContentSpecType::Empty) not_valid("data not allowed in EMPTY element"); else if (valid.get_content_spec() == doctype::ContentSpecType::Children and is_space(m_token)) not_valid("Element may not contain reference to space"); m_parser.character_data(m_token); match(m_lookahead); break; case XMLToken::Reference: { if (std::find(m_entities_on_stack.begin(), m_entities_on_stack.end(), m_token) != m_entities_on_stack.end()) not_well_formed("infinite recursion of entity references"); m_entities_on_stack.push_back(m_token); const doctype::entity& e = get_general_entity(m_token); if (e.is_externally_defined() and m_standalone) not_well_formed("document marked as standalone but an external entity is referenced"); if (not e.is_parsed()) not_well_formed("content has a general entity reference to an unparsed entity"); push_data_source(new entity_data_source(e.get_replacement(), m_source.top()->base()), false); m_lookahead = get_next_content(); save_state in_external_dtd(m_in_external_dtd, e.is_externally_defined()); // a children production may not contain references to spaces if (m_lookahead == XMLToken::Space and valid.get_content_spec() == doctype::ContentSpecType::Children) { auto space = m_token; match(m_lookahead); if (m_lookahead == XMLToken::Eof) not_valid("Element may not contain reference to space"); m_parser.character_data(space); } if (m_lookahead != XMLToken::Eof) content(valid); if (m_lookahead != XMLToken::Eof) not_well_formed("entity reference should be a valid content production"); pop_data_source(); match(XMLToken::Reference); m_entities_on_stack.pop_back(); break; } case XMLToken::STag: element(valid); break; case XMLToken::PI: pi(); break; case XMLToken::Comment: comment(); break; case XMLToken::CDSect: if (valid.get_content_spec() != doctype::ContentSpecType::Mixed and valid.get_content_spec() != doctype::ContentSpecType::Any) not_valid("character data '" + m_token + "' not allowed in element"); m_parser.start_cdata_section(); m_parser.character_data(m_token); if (is_space(m_token) and valid.get_content_spec() == doctype::ContentSpecType::Children) not_valid("Element may not contain CDATA section containing only space"); m_parser.end_cdata_section(); match(XMLToken::CDSect); break; default: match(XMLToken::Content); // will fail and report error } } while (m_lookahead != XMLToken::ETag and m_lookahead != XMLToken::Eof); } void parser_imp::comment() { save_state in_content(m_in_content, false); // m_lookahead == XMLToken::Comment // read characters until we reach --> // check all characters in between for validity enum { state_Start, state_FirstHyphenSeen, state_SecondHyphenSeen, state_CommentClosed } state = state_Start; m_token.clear(); while (state != state_CommentClosed) { unicode ch = get_next_char(); if (ch == 0) not_well_formed("runaway comment"); if (not is_char(ch)) not_well_formed("illegal character in content: '" + to_hex(ch) + '\''); switch (state) { case state_Start: if (ch == '-') state = state_FirstHyphenSeen; break; case state_FirstHyphenSeen: if (ch == '-') state = state_SecondHyphenSeen; else state = state_Start; break; case state_SecondHyphenSeen: if (ch == '>') state = state_CommentClosed; else not_well_formed("double hyphen found in comment"); break; case state_CommentClosed: assert(false); } } assert(m_token.length() >= 3); m_token.erase(m_token.end() - 3, m_token.end()); m_parser.comment(m_token); in_content.reset(); match(XMLToken::Comment); } void parser_imp::pi() { save_state in_content(m_in_content, false); // m_lookahead == XMLToken::PI // read characters until we reach --> // check all characters in between for validity std::string pi_target = m_token.substr(2); if (pi_target.empty()) not_well_formed("processing instruction target missing"); if (m_validating_ns and pi_target.find(':') != std::string::npos) not_well_formed("processing instruction name should not contain a colon"); // we treat the xml processing instruction separately. if (m_token.substr(2) == "xml") not_well_formed("xml declaration are only valid as the start of the file"); else if (iequals(pi_target, "xml")) not_well_formed("') state = state_PIClosed; else if (ch != '?') state = state_Data; break; case state_PIClosed: assert(false); } } m_token.erase(m_token.end() - 2, m_token.end()); m_parser.processing_instruction(pi_target, m_token); in_content.reset(); match(XMLToken::PI); } // -------------------------------------------------------------------- parser::parser(std::istream& data) : m_impl(new parser_imp(data, *this)), m_istream(nullptr) { } parser::parser(const std::string& data) { m_istream = new std::istringstream(data); m_impl = new parser_imp(*m_istream, *this); } parser::~parser() { delete m_impl; delete m_istream; } void parser::parse(bool validate, bool validate_ns) { m_impl->parse(validate, validate_ns); } void parser::xml_decl(encoding_type encoding, bool standalone, float version) { if (xml_decl_handler) xml_decl_handler(encoding, standalone, version); } void parser::start_element(const std::string& name, const std::string& uri, const std::list &atts) { if (start_element_handler) start_element_handler(name, uri, atts); } void parser::end_element(const std::string& name, const std::string& uri) { if (end_element_handler) end_element_handler(name, uri); } void parser::character_data(const std::string& data) { if (character_data_handler) character_data_handler(data); } void parser::processing_instruction(const std::string& target, const std::string& data) { if (processing_instruction_handler) processing_instruction_handler(target, data); } void parser::comment(const std::string& data) { if (comment_handler) comment_handler(data); } void parser::start_cdata_section() { if (start_cdata_section_handler) start_cdata_section_handler(); } void parser::end_cdata_section() { if (end_cdata_section_handler) end_cdata_section_handler(); } void parser::start_namespace_decl(const std::string& prefix, const std::string& uri) { if (start_namespace_decl_handler) start_namespace_decl_handler(prefix, uri); } void parser::end_namespace_decl(const std::string& prefix) { if (end_namespace_decl_handler) end_namespace_decl_handler(prefix); } void parser::doctype_decl(const std::string& root, const std::string& publicId, const std::string& uri) { if (doctype_decl_handler) doctype_decl_handler(root, publicId, uri); } void parser::notation_decl(const std::string& name, const std::string& systemId, const std::string& publicId) { if (notation_decl_handler) notation_decl_handler(name, systemId, publicId); } std::istream *parser::external_entity_ref(const std::string& base, const std::string& pubid, const std::string& uri) { std::istream *result = nullptr; if (external_entity_ref_handler) result = external_entity_ref_handler(base, pubid, uri); return result; } void parser::report_invalidation(const std::string& msg) { if (report_invalidation_handler) report_invalidation_handler(msg); } } // namespace zeep::xml libzeep-5.1.8/lib-xml/src/xpath.cpp0000664000175000017500000017674014324170113017017 0ustar maartenmaarten// Copyright Maarten L. Hekkelman, Radboud University 2008-2013. // Copyright Maarten L. Hekkelman, 2014-2022 // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include namespace zeep::xml { // -------------------------------------------------------------------- enum Token { xp_Undef = 0, xp_EOF = 256, xp_LeftParenthesis, xp_RightParenthesis, xp_LeftBracket, xp_RightBracket, xp_Slash, xp_DoubleSlash, xp_Comma, xp_Name, xp_AxisSpec, xp_FunctionName, xp_NodeType, xp_OperatorUnion, xp_OperatorAdd, xp_OperatorSubtract, xp_OperatorEqual, xp_OperatorNotEqual, xp_OperatorLess, xp_OperatorLessOrEqual, xp_OperatorGreater, xp_OperatorGreaterOrEqual, // next four operators are pseudo tokens, i.e. they are returned as xp_Name from get_next_token xp_OperatorAnd, xp_OperatorOr, xp_OperatorMod, xp_OperatorDiv, xp_Literal, xp_Number, xp_Variable, xp_Asterisk, xp_Colon, // english... added a backward compatibility here after fixing the spelling above xp_OperatorSubstract = xp_OperatorSubtract }; enum class AxisType { Ancestor, AncestorOrSelf, Attribute, Child, Descendant, DescendantOrSelf, Following, FollowingSibling, Namespace, Parent, Preceding, PrecedingSibling, Self, AxisTypeCount }; const char* kAxisNames[static_cast(AxisType::AxisTypeCount)] = { "ancestor", "ancestor-or-self", "attribute", "child", "descendant", "descendant-or-self", "following", "following-sibling", "namespace", "parent", "preceding", "preceding-sibling", "self" }; enum class CoreFunction { Last, Position, Count, Id, LocalName, NamespaceUri, Name, String, Concat, StartsWith, Contains, SubstringBefore, SubstringAfter, Substring, StringLength, NormalizeSpace, Translate, Boolean, Not, True, False, Lang, Number, Sum, Floor, Ceiling, Round, Comment, CoreFunctionCount }; const size_t kCoreFunctionCount = static_cast(CoreFunction::CoreFunctionCount); struct CoreFunctionInfo { const char* name; int arg_count; }; const int kOptionalArgument = -100; const CoreFunctionInfo kCoreFunctionInfo[kCoreFunctionCount] = { { "last", 0 }, { "position", 0 }, { "count", 1 }, { "id", 0 }, { "local-name", kOptionalArgument }, { "namespace-uri", kOptionalArgument }, { "name", kOptionalArgument }, { "string", kOptionalArgument }, { "concat", -2 }, { "starts-with", 2 }, { "contains", 2 }, { "substring-before", 2 }, { "substring-after", 2 }, { "substring", -2 }, { "string-length", kOptionalArgument }, { "normalize-space", kOptionalArgument }, { "translate", 3 }, { "boolean", 1 }, { "not", 1 }, { "true" , 0 }, { "false", 0 }, { "lang", 0 }, { "number", kOptionalArgument }, { "sum", 0 }, { "floor", 1 }, { "ceiling", 1 }, { "round", 1 }, { "comment", 1 }, }; // the expressions are implemented as interpreter objects // they return 'objects' that can hold various data. enum class object_type { undef, node_set, boolean, number, string }; class object { public: object(); object(node_set ns); object(bool b); object(double n); object(const std::string& s); object(const object& o); object& operator=(const object& o); bool operator==(const object o); bool operator<(const object o); object_type type() const { return m_type; } template T as() const; private: object_type m_type; node_set m_node_set; bool m_boolean; double m_number; std::string m_string; }; object operator%(const object& lhs, const object& rhs); object operator/(const object& lhs, const object& rhs); object operator+(const object& lhs, const object& rhs); object operator-(const object& lhs, const object& rhs); object::object() : m_type(object_type::undef) { } object::object(node_set ns) : m_type(object_type::node_set) , m_node_set(ns) { } object::object(bool b) : m_type(object_type::boolean) , m_boolean(b) { } object::object(double n) : m_type(object_type::number) , m_number(n) { } object::object(const std::string& s) : m_type(object_type::string) , m_string(s) { } object::object(const object& o) : m_type(o.m_type) { switch (m_type) { case object_type::node_set: m_node_set = o.m_node_set; break; case object_type::boolean: m_boolean = o.m_boolean; break; case object_type::number: m_number = o.m_number; break; case object_type::string: m_string = o.m_string; break; default: break; } } object& object::operator=(const object& o) { m_type = o.m_type; switch (m_type) { case object_type::node_set: m_node_set = o.m_node_set; break; case object_type::boolean: m_boolean = o.m_boolean; break; case object_type::number: m_number = o.m_number; break; case object_type::string: m_string = o.m_string; break; default: break; } return *this; } template<> const node_set& object::as() const { if (m_type != object_type::node_set) throw exception("object is not of type node-set"); return m_node_set; } template<> bool object::as() const { bool result; switch (m_type) { case object_type::number: result = m_number != 0 and not std::isnan(m_number); break; case object_type::node_set: result = not m_node_set.empty(); break; case object_type::string: result = not m_string.empty(); break; case object_type::boolean: result = m_boolean; break; default: result = false; break; } return result; } template<> double object::as() const { double result; switch (m_type) { case object_type::number: result = m_number; break; case object_type::node_set: result = stod(m_node_set.front()->str()); break; case object_type::string: result = stod(m_string); break; case object_type::boolean: result = m_boolean; break; default: result = 0; break; } return result; } template<> int object::as() const { if (m_type != object_type::number) throw exception("object is not of type number"); return static_cast(round(m_number)); } template<> const std::string& object::as() const { if (m_type != object_type::string) throw exception("object is not of type string"); return m_string; } template<> std::string object::as() const { std::string result; switch (m_type) { case object_type::number: result = std::to_string(m_number); break; case object_type::string: result = m_string; break; case object_type::boolean: result = (m_boolean ? "true" : "false"); break; case object_type::node_set: for (auto& n: m_node_set) result += n->str(); break; default: break; } return result; } bool object::operator==(const object o) { bool result = false; if (m_type == o.m_type) { switch (m_type) { case object_type::node_set: result = m_node_set == o.m_node_set; break; case object_type::boolean: result = m_boolean == o.m_boolean; break; case object_type::number: result = m_number == o.m_number; break; case object_type::string: result = m_string == o.m_string; break; default: break; } } else { if (m_type == object_type::number or o.m_type == object_type::number) result = as() == o.as(); else if (m_type == object_type::string or o.m_type == object_type::string) result = as() == o.as(); else if (m_type == object_type::boolean or o.m_type == object_type::boolean) result = as() == o.as(); } return result; } bool object::operator<(const object o) { bool result = false; switch (m_type) { case object_type::node_set: result = m_node_set < o.m_node_set; break; case object_type::boolean: result = m_boolean < o.m_boolean; break; case object_type::number: result = m_number < o.m_number; break; case object_type::string: result = m_string < o.m_string; break; default: break; } return result; } std::ostream& operator<<(std::ostream& lhs, object& rhs) { switch (rhs.type()) { case object_type::undef: lhs << "undef()"; break; case object_type::number: lhs << "number(" << rhs.as() << ')'; break; case object_type::string: lhs << "string(" << rhs.as() << ')'; break; case object_type::boolean: lhs << "boolean(" << (rhs.as() ? "true" : "false") << ')'; break; case object_type::node_set: lhs << "node_set(#" << rhs.as().size() << ')'; break; } return lhs; } // -------------------------------------------------------------------- // visiting (or better, collecting) other nodes in the hierarchy is done here. template void iterate_child_elements(element* context, node_set& s, bool deep, PREDICATE pred) { for (element& child: *context) { if (find(s.begin(), s.end(), &child) != s.end()) continue; if (pred(&child)) s.push_back(&child); if (deep) iterate_child_elements(&child, s, true, pred); } } template void iterate_child_nodes(element* context, node_set& s, bool deep, PREDICATE pred) { for (node& child: context->nodes()) { if (find(s.begin(), s.end(), &child) != s.end()) continue; if (pred(&child)) s.push_back(&child); if (deep) { element* child_element = dynamic_cast(&child); if (child_element != nullptr) iterate_child_nodes(child_element, s, true, pred); } } } template inline void iterate_children(element* context, node_set& s, bool deep, PREDICATE pred, bool elementsOnly) { if (elementsOnly) iterate_child_elements(context, s, deep, pred); else iterate_child_nodes(context, s, deep, pred); } template void iterate_ancestor(element* e, node_set& s, PREDICATE pred) { for (;;) { e = e->parent(); if (e == nullptr) break; document* r = dynamic_cast(e); if (r != nullptr) break; if (pred(e)) s.push_back(e); } } template void iterate_preceding(node* n, node_set& s, bool sibling, PREDICATE pred, bool elementsOnly) { while (n != nullptr) { if (n->prev() == nullptr) { if (sibling) break; n = n->parent(); continue; } n = n->prev(); element* e = dynamic_cast(n); if (e == nullptr) continue; if (pred(e)) s.push_back(e); if (sibling == false) iterate_children(e, s, true, pred, elementsOnly); } } template void iterate_following(node* n, node_set& s, bool sibling, PREDICATE pred, bool elementsOnly) { while (n != nullptr) { if (n->next() == nullptr) { if (sibling) break; n = n->parent(); continue; } n = n->next(); element* e = dynamic_cast(n); if (e == nullptr) continue; if (pred(e)) s.push_back(e); if (sibling == false) iterate_children(e, s, true, pred, elementsOnly); } } template void iterate_attributes(element* e, node_set& s, PREDICATE pred) { for (auto& a: e->attributes()) { if (pred(&a)) s.push_back(&a); } } template void iterate_namespaces(element* e, node_set& s, PREDICATE pred) { for (auto& a: e->attributes()) { if (not a.is_namespace()) continue; if (pred(&a)) s.push_back(&a); } } // -------------------------------------------------------------------- // context for the expressions // Need to add support for external variables here. struct context_imp { virtual ~context_imp() {} virtual object& get(const std::string& name) { return m_variables[name]; } virtual void set(const std::string& name, const object& value) { m_variables[name] = value; } std::map m_variables; }; struct expression_context : public context_imp { expression_context(context_imp& next, node* n, const node_set& s) : m_next(next), m_node(n), m_node_set(s) {} virtual object& get(const std::string& name) { return m_next.get(name); } virtual void set(const std::string& name, const object& value) { m_next.set(name, value); } void dump(); size_t position() const; size_t last() const; context_imp& m_next; node* m_node; const node_set& m_node_set; }; size_t expression_context::position() const { size_t result = 0; for (const node* n: m_node_set) { ++result; if (n == m_node) break; } if (result == 0) throw exception("invalid context for position"); return result; } size_t expression_context::last() const { return m_node_set.size(); } void expression_context::dump() { // std::cout << "context node: " << *m_node << std::endl // << "context node-set: "; // copy(m_node_set.begin(), m_node_set.end(), std::ostream_iterator(std::cout, ", ")); // std::cout << std::endl; } std::ostream& operator<<(std::ostream& lhs, expression_context& rhs) { rhs.dump(); return lhs; } void indent(int level) { while (level-- > 0) std::cout << ' '; } // -------------------------------------------------------------------- class expression { public: virtual ~expression() {} virtual object evaluate(expression_context& context) = 0; // // print exists only for debugging purposes // virtual void print(int level) = 0; }; typedef std::shared_ptr expression_ptr; typedef std::list expression_list; // needed for CLang/libc++ on FreeBSD 10 expression* get_pointer(std::shared_ptr const & p) { return p.get(); } // -------------------------------------------------------------------- class step_expression : public expression { public: step_expression(AxisType axis) : m_axis(axis) {} protected: template object evaluate(expression_context& context, T pred, bool elementsOnly); AxisType m_axis; }; template object step_expression::evaluate(expression_context& context, T pred, bool elementsOnly) { node_set result; element* context_element = dynamic_cast(context.m_node); if (context_element != nullptr) { switch (m_axis) { case AxisType::Parent: if (context_element->parent() != nullptr) { element* e = static_cast(context_element->parent()); if (pred(e)) result.push_back(context_element->parent()); } break; case AxisType::Ancestor: iterate_ancestor(context_element, result, pred); break; case AxisType::AncestorOrSelf: if (pred(context_element)) result.push_back(context_element); iterate_ancestor(context_element, result, pred); break; case AxisType::Self: if (pred(context_element)) result.push_back(context_element); break; case AxisType::Child: iterate_children(context_element, result, false, pred, elementsOnly); break; case AxisType::Descendant: iterate_children(context_element, result, true, pred, elementsOnly); break; case AxisType::DescendantOrSelf: if (pred(context_element)) result.push_back(context_element); iterate_children(context_element, result, true, pred, elementsOnly); break; case AxisType::Following: iterate_following(context_element, result, false, pred, elementsOnly); break; case AxisType::FollowingSibling: iterate_following(context_element, result, true, pred, elementsOnly); break; case AxisType::Preceding: iterate_preceding(context_element, result, false, pred, elementsOnly); break; case AxisType::PrecedingSibling: iterate_preceding(context_element, result, true, pred, elementsOnly); break; case AxisType::Attribute: if (dynamic_cast(context_element) != nullptr) iterate_attributes(static_cast(context_element), result, pred); break; case AxisType::Namespace: if (dynamic_cast(context_element) != nullptr) iterate_namespaces(static_cast(context_element), result, pred); break; case AxisType::AxisTypeCount: ; } } return result; } // -------------------------------------------------------------------- class name_test_step_expression : public step_expression { public: name_test_step_expression(AxisType axis, const std::string& name) : step_expression(axis) , m_name(name) { m_test = std::bind(&name_test_step_expression::name_matches, this, std::placeholders::_1); } virtual object evaluate(expression_context& context); // virtual void print(int level) { indent(level); std::cout << "name test step " << m_name << std::endl; } protected: bool name_matches(const node* n) { bool result = m_name == "*"; if (result == false) { const element* e = dynamic_cast(n); if (e != nullptr and e->name() == m_name) result = true; } if (result == false) { const attribute* a = dynamic_cast(n); if (a != nullptr and a->name() == m_name) result = true; } return result; } std::string m_name; std::function m_test; }; object name_test_step_expression::evaluate(expression_context& context) { return step_expression::evaluate(context, m_test, true); } // -------------------------------------------------------------------- template class node_type_expression : public step_expression { public: node_type_expression(AxisType axis) : step_expression(axis) { m_test = std::bind(&node_type_expression::test, std::placeholders::_1); } virtual object evaluate(expression_context& context); // virtual void print(int level) { indent(level); std::cout << "node type step " << boost::core::demangle(typeid(T).name()) << std::endl; } private: static bool test(const node* n) { return dynamic_cast(n) != nullptr; } std::function m_test; }; template object node_type_expression::evaluate(expression_context& context) { return step_expression::evaluate(context, m_test, false); } // -------------------------------------------------------------------- class root_expression : public expression { public: virtual object evaluate(expression_context& context); // virtual void print(int level) { indent(level); std::cout << "root" << std::endl; } }; object root_expression::evaluate(expression_context& context) { node_set result; result.push_back(context.m_node->root()); return result; } // -------------------------------------------------------------------- template class operator_expression : public expression { public: operator_expression(expression_ptr lhs, expression_ptr rhs) : m_lhs(lhs), m_rhs(rhs) {} virtual object evaluate(expression_context& context); // virtual void print(int level) // { // indent(level); // std::cout << "operator " << boost::core::demangle(typeid(OP).name()) << std::endl; // m_lhs->print(level + 1); // m_rhs->print(level + 1); // } private: expression_ptr m_lhs, m_rhs; }; template<> object operator_expression::evaluate(expression_context& context) { object v1 = m_lhs->evaluate(context); object v2 = m_rhs->evaluate(context); return v1.as() + v2.as(); } template<> object operator_expression::evaluate(expression_context& context) { object v1 = m_lhs->evaluate(context); object v2 = m_rhs->evaluate(context); return v1.as() - v2.as(); } template<> object operator_expression::evaluate(expression_context& context) { object v1 = m_lhs->evaluate(context); object v2 = m_rhs->evaluate(context); return v1 == v2; } template<> object operator_expression::evaluate(expression_context& context) { object v1 = m_lhs->evaluate(context); object v2 = m_rhs->evaluate(context); return not (v1 == v2); } template<> object operator_expression::evaluate(expression_context& context) { object v1 = m_lhs->evaluate(context); object v2 = m_rhs->evaluate(context); return v1 < v2; } template<> object operator_expression::evaluate(expression_context& context) { object v1 = m_lhs->evaluate(context); object v2 = m_rhs->evaluate(context); return v1 < v2 or v1 == v2; } template<> object operator_expression::evaluate(expression_context& context) { object v1 = m_lhs->evaluate(context); object v2 = m_rhs->evaluate(context); return v2 < v1; } template<> object operator_expression::evaluate(expression_context& context) { object v1 = m_lhs->evaluate(context); object v2 = m_rhs->evaluate(context); return v2 < v1 or v1 == v2; } template<> object operator_expression::evaluate(expression_context& context) { object v1 = m_lhs->evaluate(context); object v2 = m_rhs->evaluate(context); return v1.as() and v2.as(); } template<> object operator_expression::evaluate(expression_context& context) { object v1 = m_lhs->evaluate(context); object v2 = m_rhs->evaluate(context); return v1.as() or v2.as(); } template<> object operator_expression::evaluate(expression_context& context) { object v1 = m_lhs->evaluate(context); object v2 = m_rhs->evaluate(context); return double(v1.as() % v2.as()); } template<> object operator_expression::evaluate(expression_context& context) { object v1 = m_lhs->evaluate(context); object v2 = m_rhs->evaluate(context); return v1.as() / v2.as(); } template<> object operator_expression::evaluate(expression_context& context) { object v1 = m_lhs->evaluate(context); object v2 = m_rhs->evaluate(context); return v1.as() * v2.as(); } // -------------------------------------------------------------------- class negate_expression : public expression { public: negate_expression(expression_ptr expr) : m_expr(expr) {} virtual object evaluate(expression_context& context); // virtual void print(int level) { indent(level); std::cout << "negate" << std::endl; m_expr->print(level + 1); } private: expression_ptr m_expr; }; object negate_expression::evaluate(expression_context& context) { object v = m_expr->evaluate(context); return -v.as(); } // -------------------------------------------------------------------- class path_expression : public expression { public: path_expression(expression_ptr lhs, expression_ptr rhs) : m_lhs(lhs), m_rhs(rhs) {} virtual object evaluate(expression_context& context); // virtual void print(int level) // { // indent(level); // std::cout << "path" << std::endl; // m_lhs->print(level + 1); // m_rhs->print(level + 1); // } private: expression_ptr m_lhs, m_rhs; }; object path_expression::evaluate(expression_context& context) { object v = m_lhs->evaluate(context); if (v.type() != object_type::node_set) throw exception("filter does not evaluate to a node-set"); node_set result; for (node* n: v.as()) { expression_context ctxt(context, n, v.as()); node_set s = m_rhs->evaluate(ctxt).as(); copy(s.begin(), s.end(), back_inserter(result)); } return result; } // -------------------------------------------------------------------- class predicate_expression : public expression { public: predicate_expression(expression_ptr path, expression_ptr pred) : m_path(path), m_pred(pred) {} virtual object evaluate(expression_context& context); // virtual void print(int level) // { // indent(level); // std::cout << "predicate" << std::endl; // m_path->print(level + 1); // m_pred->print(level + 1); // } private: expression_ptr m_path, m_pred; }; object predicate_expression::evaluate(expression_context& context) { object v = m_path->evaluate(context); node_set result; for (node* n: v.as()) { expression_context ctxt(context, n, v.as()); object test = m_pred->evaluate(ctxt); if (test.type() == object_type::number) { if (ctxt.position() == test.as()) result.push_back(n); } else if (test.as()) result.push_back(n); } return result; } // -------------------------------------------------------------------- class variable_expression : public expression { public: variable_expression(const std::string& name) : m_var(name) {} virtual object evaluate(expression_context& context); // virtual void print(int level) { indent(level); std::cout << "variable " << m_var << std::endl; } private: std::string m_var; }; object variable_expression::evaluate(expression_context& context) { return context.get(m_var); } // -------------------------------------------------------------------- class literal_expression : public expression { public: literal_expression(const std::string& lit) : m_lit(lit) {} virtual object evaluate(expression_context& context); // virtual void print(int level) { indent(level); std::cout << "literal " << m_lit << std::endl; } private: std::string m_lit; }; object literal_expression::evaluate(expression_context& /*context*/) { return object(m_lit); } // -------------------------------------------------------------------- class number_expression : public expression { public: number_expression(double number) : m_number(number) {} virtual object evaluate(expression_context& context); // virtual void print(int level) { indent(level); std::cout << "number " << m_number << std::endl; } private: double m_number; }; object number_expression::evaluate(expression_context& /*context*/) { return object(m_number); } // -------------------------------------------------------------------- template class core_function_expression : public expression { public: core_function_expression(expression_list& arguments) : m_args(arguments) {} virtual object evaluate(expression_context& context); // virtual void print(int level) // { // indent(level); // std::cout << "function call " << boost::core::demangle(typeid(CF).name()) << std::endl; // for_each(m_args.begin(), m_args.end(), // std::bind(&expression::print, std::placeholders::_1, level + 1)); // } private: expression_list m_args; }; template object core_function_expression::evaluate(expression_context& /*context*/) { throw exception("unimplemented function "); } template<> object core_function_expression::evaluate(expression_context& context) { return object(double(context.position())); } template<> object core_function_expression::evaluate(expression_context& context) { return object(double(context.last())); } template<> object core_function_expression::evaluate(expression_context& context) { object v = m_args.front()->evaluate(context); size_t result = v.as().size(); return object(double(result)); } template<> object core_function_expression::evaluate(expression_context& context) { element* e = nullptr; if (m_args.empty()) e = dynamic_cast(context.m_node); else { object v = m_args.front()->evaluate(context); if (not v.as().empty()) e = dynamic_cast(v.as().front()); } if (e == nullptr) throw exception("argument is not an element in function 'id()'"); return e->id(); } template<> object core_function_expression::evaluate(expression_context& context) { node* n = nullptr; if (m_args.empty()) n = context.m_node; else { object v = m_args.front()->evaluate(context); if (not v.as().empty()) n = v.as().front(); } if (n == nullptr) throw exception("argument is not an element in function 'local-name'"); return n->name(); } template<> object core_function_expression::evaluate(expression_context& context) { node* n = nullptr; if (m_args.empty()) n = context.m_node; else { object v = m_args.front()->evaluate(context); if (not v.as().empty()) n = v.as().front(); } if (n == nullptr) throw exception("argument is not an element in function 'namespace-uri'"); return n->get_ns(); } template<> object core_function_expression::evaluate(expression_context& context) { node* n = nullptr; if (m_args.empty()) n = context.m_node; else { object v = m_args.front()->evaluate(context); if (not v.as().empty()) n = v.as().front(); } if (n == nullptr) throw exception("argument is not an element in function 'name'"); return n->get_qname(); } template<> object core_function_expression::evaluate(expression_context& context) { std::string result; if (m_args.empty()) result = context.m_node->str(); else { object v = m_args.front()->evaluate(context); result = v.as(); } return result; } template<> object core_function_expression::evaluate(expression_context& context) { std::string result; for (expression_ptr& e: m_args) { object v = e->evaluate(context); result += v.as(); } return result; } template<> object core_function_expression::evaluate(expression_context& context) { std::string result; if (m_args.empty()) result = context.m_node->str(); else { object v = m_args.front()->evaluate(context); result = v.as(); } return double(result.length()); } template<> object core_function_expression::evaluate(expression_context& context) { object v1 = m_args.front()->evaluate(context); object v2 = m_args.back()->evaluate(context); try { return v2.as().empty() or starts_with(v1.as(), v2.as()); } catch(const std::exception &) { throw exception("expected two strings as argument for starts-with"); } } template<> object core_function_expression::evaluate(expression_context& context) { object v1 = m_args.front()->evaluate(context); object v2 = m_args.back()->evaluate(context); try { auto s1 = v1.as(); auto s2 = v2.as(); return s1.find(s2) != std::string::npos; } catch (...) { throw exception("expected two strings as argument for contains"); } } template<> object core_function_expression::evaluate(expression_context& context) { object v1 = m_args.front()->evaluate(context); object v2 = m_args.back()->evaluate(context); try { std::string result; if (not v2.as().empty()) { std::string::size_type p = v1.as().find(v2.as()); if (p != std::string::npos) result = v1.as().substr(0, p); } return result; } catch (...) { throw exception("expected two strings as argument for substring-before"); } } template<> object core_function_expression::evaluate(expression_context& context) { object v1 = m_args.front()->evaluate(context); object v2 = m_args.back()->evaluate(context); try { std::string result; if (v2.as().empty()) result = v1.as(); else { std::string::size_type p = v1.as().find(v2.as()); if (p != std::string::npos and p + v2.as().length() < v1.as().length()) result = v1.as().substr(p + v2.as().length()); } return result; } catch (...) { throw exception("expected two strings as argument for substring-after"); } } template<> object core_function_expression::evaluate(expression_context& context) { expression_list::iterator a = m_args.begin(); object v1 = (*a)->evaluate(context); ++a; object v2 = (*a)->evaluate(context); ++a; object v3 = (*a)->evaluate(context); if (v2.type() != object_type::number or v3.type() != object_type::number) throw exception("expected one string and two numbers as argument for substring"); try { return v1.as().substr(v2.as() - 1, v3.as()); } catch (...) { throw exception("expected one string and two numbers as argument for substring"); } } template<> object core_function_expression::evaluate(expression_context& context) { std::string s; if (m_args.empty()) s = context.m_node->str(); else { object v = m_args.front()->evaluate(context); s = v.as(); } std::string result; bool space = true; for (char c: s) { if (isspace(c)) { if (not space) result += ' '; space = true; } else { result += c; space = false; } } if (not result.empty() and space) result.erase(result.end() - 1); return result; } template<> object core_function_expression::evaluate(expression_context& context) { expression_list::iterator a = m_args.begin(); object v1 = (*a)->evaluate(context); ++a; object v2 = (*a)->evaluate(context); ++a; object v3 = (*a)->evaluate(context); try { const std::string& f = v2.as(); const std::string& r = v3.as(); std::string result; result.reserve(v1.as().length()); for (char c: v1.as()) { std::string::size_type fi = f.find(c); if (fi == std::string::npos) result += c; else if (fi < r.length()) result += r[fi]; } return result; } catch(const std::exception &) { throw exception("expected three strings as arguments for translate"); } } template<> object core_function_expression::evaluate(expression_context& context) { object v = m_args.front()->evaluate(context); return v.as(); } template<> object core_function_expression::evaluate(expression_context& context) { object v = m_args.front()->evaluate(context); return not v.as(); } template<> object core_function_expression::evaluate(expression_context& /*context*/) { return true; } template<> object core_function_expression::evaluate(expression_context& /*context*/) { return false; } template<> object core_function_expression::evaluate(expression_context& context) { object v = m_args.front()->evaluate(context); std::string test = v.as(); to_lower(test); std::string lang = context.m_node->lang(); to_lower(lang); bool result = test == lang; std::string::size_type s; if (result == false and (s = lang.find('-')) != std::string::npos) result = test == lang.substr(0, s); return result; } template<> object core_function_expression::evaluate(expression_context& context) { object v; if (m_args.size() == 1) v = m_args.front()->evaluate(context); else v = stod(context.m_node->str()); return v.as(); } template<> object core_function_expression::evaluate(expression_context& context) { object v = m_args.front()->evaluate(context); return floor(v.as()); } template<> object core_function_expression::evaluate(expression_context& context) { object v = m_args.front()->evaluate(context); return ceil(v.as()); } template<> object core_function_expression::evaluate(expression_context& context) { object v = m_args.front()->evaluate(context); return round(v.as()); } // -------------------------------------------------------------------- class union_expression : public expression { public: union_expression(expression_ptr lhs, expression_ptr rhs) : m_lhs(lhs), m_rhs(rhs) {} virtual object evaluate(expression_context& context); // virtual void print(int level) // { // indent(level); // std::cout << "union" << std::endl; // m_lhs->print(level + 1); // m_rhs->print(level + 1); // } private: expression_ptr m_lhs, m_rhs; }; object union_expression::evaluate(expression_context& context) { object v1 = m_lhs->evaluate(context); object v2 = m_rhs->evaluate(context); if (v1.type() != object_type::node_set or v2.type() != object_type::node_set) throw exception("union operator works only on node sets"); node_set s1 = v1.as(); node_set s2 = v2.as(); copy(s2.begin(), s2.end(), back_inserter(s1)); return s1; } // -------------------------------------------------------------------- struct xpath_imp { xpath_imp(); void reference(); void release(); node_set evaluate(node& root, context_imp& context); void parse(const std::string& path); // void dump() // { // if (m_expr) // m_expr->print(0); // else // std::cout << "xpath is null" << std::endl; // } void preprocess(const std::string& path); unsigned char next_byte(); unicode get_next_char(); void retract(); Token get_next_token(); std::string describe_token(Token token); void match(Token token); expression_ptr location_path(); expression_ptr absolute_location_path(); expression_ptr relative_location_path(); expression_ptr step(); expression_ptr node_test(AxisType axis); expression_ptr expr(); expression_ptr primary_expr(); expression_ptr function_call(); expression_ptr argument(); expression_ptr union_expr(); expression_ptr path_expr(); expression_ptr filter_expr(); expression_ptr or_expr(); expression_ptr and_expr(); expression_ptr equality_expr(); expression_ptr relational_expr(); expression_ptr additive_expr(); expression_ptr multiplicative_expr(); expression_ptr unary_expr(); // abbreviated steps are expanded like macros by the scanner std::string m_path; std::string::const_iterator m_begin, m_next, m_end; Token m_lookahead; std::string m_token_string; double m_token_number; AxisType m_token_axis; CoreFunction m_token_function; // the generated expression expression_ptr m_expr; private: ~xpath_imp(); long m_refcount; }; // -------------------------------------------------------------------- xpath_imp::xpath_imp() : m_refcount(1) { } xpath_imp::~xpath_imp() { } void xpath_imp::reference() { ++m_refcount; } void xpath_imp::release() { if (--m_refcount <= 0) delete this; } void xpath_imp::parse(const std::string& path) { // start by expanding the abbreviations in the path preprocess(path); m_begin = m_next = m_path.begin(); m_end = m_path.end(); m_lookahead = get_next_token(); m_expr = location_path(); while (m_lookahead == xp_OperatorUnion) { match(xp_OperatorUnion); m_expr.reset(new union_expression(m_expr, location_path())); } // if (VERBOSE) // m_expr->print(0); match(xp_EOF); } void xpath_imp::preprocess(const std::string& path) { // preprocessing consists of expanding abbreviations // replacements are: // @ => replaced by 'attribute::' // // => replaced by '/descendant-or-self::node()/' // . (if at a step location) => 'self::node()' // .. (if at a step location) => 'parent::node()' m_path.clear(); enum State { pp_Step, pp_Data, pp_Dot, pp_Slash, pp_String } state; state = pp_Step; unicode quoteChar = 0; for (std::string::const_iterator ch = path.begin(); ch != path.end(); ++ch) { switch (state) { case pp_Step: state = pp_Data; switch (*ch) { case '@': m_path += "attribute::"; break; case '.': state = pp_Dot; break; case '/': state = pp_Slash; break; case '\'': case '\"': m_path += *ch; quoteChar = *ch; state = pp_String; break; default: m_path += *ch; break; } break; case pp_Data: switch (*ch) { case '@': m_path += "attribute::"; break; case '/': state = pp_Slash; break; case '[': m_path += '['; state = pp_Step; break; case '\'': case '\"': m_path += *ch; quoteChar = *ch; state = pp_String; break; default: m_path += *ch; break; } break; case pp_Dot: if (*ch == '.') m_path += "parent::node()"; else { --ch; m_path += "self::node()"; } state = pp_Step; break; case pp_Slash: if (*ch == '/') m_path += "/descendant-or-self::node()/"; else { --ch; m_path += '/'; } state = pp_Step; break; case pp_String: m_path += *ch; if (static_cast(*ch) == quoteChar) state = pp_Data; break; } } } unsigned char xpath_imp::next_byte() { char result = 0; if (m_next < m_end) { result = *m_next; ++m_next; } m_token_string += result; return static_cast(result); } // We assume all paths are in valid UTF-8 encoding unicode xpath_imp::get_next_char() { unicode result = 0; unsigned char ch[5]; ch[0] = next_byte(); if ((ch[0] & 0x080) == 0) result = ch[0]; else if ((ch[0] & 0x0E0) == 0x0C0) { ch[1] = next_byte(); if ((ch[1] & 0x0c0) != 0x080) throw exception("Invalid utf-8"); result = ((ch[0] & 0x01F) << 6) | (ch[1] & 0x03F); } else if ((ch[0] & 0x0F0) == 0x0E0) { ch[1] = next_byte(); ch[2] = next_byte(); if ((ch[1] & 0x0c0) != 0x080 or (ch[2] & 0x0c0) != 0x080) throw exception("Invalid utf-8"); result = ((ch[0] & 0x00F) << 12) | ((ch[1] & 0x03F) << 6) | (ch[2] & 0x03F); } else if ((ch[0] & 0x0F8) == 0x0F0) { ch[1] = next_byte(); ch[2] = next_byte(); ch[3] = next_byte(); if ((ch[1] & 0x0c0) != 0x080 or (ch[2] & 0x0c0) != 0x080 or (ch[3] & 0x0c0) != 0x080) throw exception("Invalid utf-8"); result = ((ch[0] & 0x007) << 18) | ((ch[1] & 0x03F) << 12) | ((ch[2] & 0x03F) << 6) | (ch[3] & 0x03F); } if (result > 0x10ffff) throw exception("invalid utf-8 character (out of range)"); return result; } void xpath_imp::retract() { std::string::iterator c = m_token_string.end(); // skip one valid character back in the input buffer // since we've arrived here, we can safely assume input // is valid UTF-8 do --c; while ((*c & 0x0c0) == 0x080); if (m_next != m_end or *c != 0) m_next -= m_token_string.end() - c; m_token_string.erase(c, m_token_string.end()); } std::string xpath_imp::describe_token(Token token) { std::stringstream result; switch (token) { case xp_Undef: result << "undefined"; break; case xp_EOF: result << "end of expression"; break; case xp_LeftParenthesis: result << "left parenthesis"; break; case xp_RightParenthesis: result << "right parenthesis"; break; case xp_LeftBracket: result << "left bracket"; break; case xp_RightBracket: result << "right bracket"; break; case xp_Slash: result << "forward slash"; break; case xp_DoubleSlash: result << "double forward slash"; break; case xp_Comma: result << "comma"; break; case xp_Name: result << "name"; break; case xp_AxisSpec: result << "axis specification"; break; case xp_FunctionName: result << "function name"; break; case xp_NodeType: result << "node type specification"; break; case xp_OperatorUnion: result << "union operator"; break; case xp_OperatorAdd: result << "addition operator"; break; case xp_OperatorSubtract: result << "subtraction operator"; break; case xp_OperatorEqual: result << "equals operator"; break; case xp_OperatorNotEqual: result << "not-equals operator"; break; case xp_OperatorLess: result << "less operator"; break; case xp_OperatorLessOrEqual:result << "less-or-equal operator"; break; case xp_OperatorGreater: result << "greater operator"; break; case xp_OperatorGreaterOrEqual: result << "greater-or-equal operator"; break; case xp_OperatorAnd: result << "logical-and operator"; break; case xp_OperatorOr: result << "logical-or operator"; break; case xp_OperatorMod: result << "modulus operator"; break; case xp_OperatorDiv: result << "division operator"; break; case xp_Literal: result << "literal"; break; case xp_Number: result << "number"; break; case xp_Variable: result << "variable"; break; case xp_Asterisk: result << "asterisk (or multiply)"; break; case xp_Colon: result << "colon"; break; } result << " {" << m_token_string << '}'; return result.str(); } Token xpath_imp::get_next_token() { enum State { xps_Start, xps_VariableStart, xps_ExclamationMark, xps_LessThan, xps_GreaterThan, xps_Number, xps_NumberFraction, xps_Name, xps_QName, xps_QName2, xps_Literal } state = xps_Start; Token token = xp_Undef; bool variable = false; double fraction = 1.0; unicode quoteChar = 0; m_token_string.clear(); while (token == xp_Undef) { unicode ch = get_next_char(); switch (state) { case xps_Start: switch (ch) { case 0: token = xp_EOF; break; case '(': token = xp_LeftParenthesis; break; case ')': token = xp_RightParenthesis; break; case '[': token = xp_LeftBracket; break; case ']': token = xp_RightBracket; break; case ',': token = xp_Comma; break; case ':': token = xp_Colon; break; case '$': state = xps_VariableStart; break; case '*': token = xp_Asterisk; break; case '/': token = xp_Slash; break; case '|': token = xp_OperatorUnion; break; case '+': token = xp_OperatorAdd; break; case '-': token = xp_OperatorSubtract; break; case '=': token = xp_OperatorEqual; break; case '!': state = xps_ExclamationMark; break; case '<': state = xps_LessThan; break; case '>': state = xps_GreaterThan; break; case ' ': case '\n': case '\r': case '\t': m_token_string.clear(); break; case '\'': quoteChar = ch; state = xps_Literal; break; case '"': quoteChar = ch; state = xps_Literal; break; case '@': token = xp_AxisSpec; m_token_axis = AxisType::Attribute; break; default: if (ch == '.') { m_token_number = 0; state = xps_NumberFraction; } else if (ch >= '0' and ch <= '9') { m_token_number = ch - '0'; state = xps_Number; } else if (is_name_start_char(ch)) state = xps_Name; else throw exception("invalid character in xpath"); } break; case xps_ExclamationMark: if (ch != '=') { retract(); throw exception("unexpected character ('!') in xpath"); } token = xp_OperatorNotEqual; break; case xps_LessThan: if (ch == '=') token = xp_OperatorLessOrEqual; else { retract(); token = xp_OperatorLess; } break; case xps_GreaterThan: if (ch == '=') token = xp_OperatorGreaterOrEqual; else { retract(); token = xp_OperatorGreater; } break; case xps_Number: if (ch >= '0' and ch <= '9') m_token_number = 10 * m_token_number + (ch - '0'); else if (ch == '.') { fraction = 0.1; state = xps_NumberFraction; } else { retract(); token = xp_Number; } break; case xps_NumberFraction: if (ch >= '0' and ch <= '9') { m_token_number += fraction * (ch - '0'); fraction /= 10; } else { retract(); token = xp_Number; } break; case xps_VariableStart: if (is_name_start_char(ch)) { variable = true; state = xps_Name; } else throw exception("invalid variable name or lone dollar character"); break; case xps_Name: if (ch == ':') state = xps_QName; else if (not is_name_char(ch)) { retract(); if (variable) token = xp_Variable; else token = xp_Name; } break; case xps_QName: if (ch != ':' and is_name_start_char(ch)) state = xps_QName2; else { retract(); // ch retract(); // ':' if (variable) token = xp_Variable; else token = xp_Name; } break; case xps_QName2: if (ch == ':' or not is_name_char(ch)) { retract(); if (variable) token = xp_Variable; else token = xp_Name; } break; case xps_Literal: if (ch == 0) throw exception("run-away string, missing quote character?"); else if (ch == quoteChar) { token = xp_Literal; m_token_string = m_token_string.substr(1, m_token_string.length() - 2); } break; } } if (token == xp_Name) // we've scanned a name, but it might as well be a function, nodetype or axis { if (m_token_string == "and") token = xp_OperatorAnd; else if (m_token_string == "or") token = xp_OperatorOr; else if (m_token_string == "mod") token = xp_OperatorMod; else if (m_token_string == "div") token = xp_OperatorDiv; else { // look forward and see what's ahead for (std::string::const_iterator c = m_next; c != m_end; ++c) { if (isspace(*c)) continue; if (*c == ':' and *(c + 1) == ':') // it must be an axis specifier { token = xp_AxisSpec; const int kAxisNameCount = sizeof(kAxisNames) / sizeof(const char*); const char** a = find(kAxisNames, kAxisNames + kAxisNameCount, m_token_string); if (*a != nullptr) m_token_axis = AxisType(a - kAxisNames); else throw exception("invalid axis specification " + m_token_string); // skip over the double colon m_next = c + 2; } else if (*c == '(') { if (m_token_string == "comment" or m_token_string == "text" or m_token_string == "processing-instruction" or m_token_string == "node") { token = xp_NodeType; // set input pointer after the parenthesis m_next = c + 1; while (m_next != m_end and isspace(*m_next)) ++m_next; if (*m_next != ')') throw exception("expected '()' after a node type specifier"); ++m_next; } else { for (size_t i = 0; i < kCoreFunctionCount; ++i) { if (m_token_string == kCoreFunctionInfo[i].name) { token = xp_FunctionName; m_token_function = CoreFunction(i); break; } } if (token != xp_FunctionName) throw exception("invalid function " + m_token_string); } } break; } } } // if (VERBOSE) // std::cout << "get_next_token: " << describe_token(token) << std::endl; return token; } void xpath_imp::match(Token token) { if (m_lookahead == token) m_lookahead = get_next_token(); else { // aargh... syntax error std::string found = describe_token(m_lookahead); if (m_lookahead != xp_EOF and m_lookahead != xp_Undef) { found += " (\""; found += m_token_string; found += "\")"; } std::string expected = describe_token(token); std::stringstream s; s << "syntax error in xpath, expected " << expected << " but found " << found; throw exception(s.str()); } } expression_ptr xpath_imp::location_path() { bool absolute = false; if (m_lookahead == xp_Slash) { absolute = true; match(xp_Slash); } expression_ptr result(relative_location_path()); if (absolute) result.reset(new path_expression(expression_ptr(new root_expression()), result)); return result; } expression_ptr xpath_imp::relative_location_path() { expression_ptr result(step()); while (m_lookahead == xp_Slash) { match(xp_Slash); result.reset(new path_expression(result, step())); } return result; } expression_ptr xpath_imp::step() { expression_ptr result; AxisType axis = AxisType::Child; if (m_lookahead == xp_AxisSpec) { axis = m_token_axis; match(xp_AxisSpec); } result = node_test(axis); while (m_lookahead == xp_LeftBracket) { match(xp_LeftBracket); result.reset(new predicate_expression(result, expr())); match(xp_RightBracket); } return result; } expression_ptr xpath_imp::node_test(AxisType axis) { expression_ptr result; if (m_lookahead == xp_Asterisk) { result.reset(new name_test_step_expression(axis, m_token_string)); match(xp_Asterisk); } else if (m_lookahead == xp_NodeType) { std::string name = m_token_string; match(xp_NodeType); if (name == "comment") result.reset(new node_type_expression(axis)); else if (name == "text") result.reset(new node_type_expression(axis)); else if (name == "processing-instruction") result.reset(new node_type_expression(axis)); else if (name == "node") result.reset(new node_type_expression(axis)); else throw exception("invalid node type specified: " + name); } else { result.reset(new name_test_step_expression(axis, m_token_string)); match(xp_Name); } return result; } expression_ptr xpath_imp::expr() { expression_ptr result(and_expr()); while (m_lookahead == xp_OperatorOr) { match(xp_OperatorOr); result.reset(new operator_expression(result, and_expr())); } return result; } expression_ptr xpath_imp::primary_expr() { expression_ptr result; switch (m_lookahead) { case xp_Variable: result.reset(new variable_expression(m_token_string.substr(1))); match(xp_Variable); break; case xp_LeftParenthesis: match(xp_LeftParenthesis); result = expr(); match(xp_RightParenthesis); break; case xp_Literal: result.reset(new literal_expression(m_token_string)); match(xp_Literal); break; case xp_Number: result.reset(new number_expression(m_token_number)); match(xp_Number); break; case xp_FunctionName: result = function_call(); break; default: throw exception("invalid primary expression in xpath"); } return result; } expression_ptr xpath_imp::function_call() { using namespace std::literals; CoreFunction function = m_token_function; match(xp_FunctionName); match(xp_LeftParenthesis); expression_list arguments; if (m_lookahead != xp_RightParenthesis) { for (;;) { arguments.push_back(expr()); if (m_lookahead == xp_Comma) match(xp_Comma); else break; } } match(xp_RightParenthesis); expression_ptr result; int expected_arg_count = kCoreFunctionInfo[int(function)].arg_count; if (expected_arg_count > 0) { if (int(arguments.size()) != expected_arg_count) throw exception("invalid number of arguments for function "s + kCoreFunctionInfo[int(function)].name); } else if (expected_arg_count == kOptionalArgument) { if (arguments.size() > 1) throw exception("incorrect number of arguments for function "s + kCoreFunctionInfo[int(function)].name); } else if (expected_arg_count < 0 and int(arguments.size()) < -expected_arg_count) throw exception("insufficient number of arguments for function "s + kCoreFunctionInfo[int(function)].name); switch (function) { case CoreFunction::Last: result.reset(new core_function_expression(arguments)); break; case CoreFunction::Position: result.reset(new core_function_expression(arguments)); break; case CoreFunction::Count: result.reset(new core_function_expression(arguments)); break; case CoreFunction::Id: result.reset(new core_function_expression(arguments)); break; case CoreFunction::LocalName: result.reset(new core_function_expression(arguments)); break; case CoreFunction::NamespaceUri: result.reset(new core_function_expression(arguments)); break; case CoreFunction::Name: result.reset(new core_function_expression(arguments)); break; case CoreFunction::String: result.reset(new core_function_expression(arguments)); break; case CoreFunction::Concat: result.reset(new core_function_expression(arguments)); break; case CoreFunction::StartsWith: result.reset(new core_function_expression(arguments)); break; case CoreFunction::Contains: result.reset(new core_function_expression(arguments)); break; case CoreFunction::SubstringBefore:result.reset(new core_function_expression(arguments)); break; case CoreFunction::SubstringAfter: result.reset(new core_function_expression(arguments)); break; case CoreFunction::StringLength: result.reset(new core_function_expression(arguments)); break; case CoreFunction::NormalizeSpace: result.reset(new core_function_expression(arguments)); break; case CoreFunction::Translate: result.reset(new core_function_expression(arguments)); break; case CoreFunction::Boolean: result.reset(new core_function_expression(arguments)); break; case CoreFunction::Not: result.reset(new core_function_expression(arguments)); break; case CoreFunction::True: result.reset(new core_function_expression(arguments)); break; case CoreFunction::False: result.reset(new core_function_expression(arguments)); break; case CoreFunction::Lang: result.reset(new core_function_expression(arguments)); break; case CoreFunction::Number: result.reset(new core_function_expression(arguments)); break; case CoreFunction::Sum: result.reset(new core_function_expression(arguments)); break; case CoreFunction::Floor: result.reset(new core_function_expression(arguments)); break; case CoreFunction::Ceiling: result.reset(new core_function_expression(arguments)); break; case CoreFunction::Round: result.reset(new core_function_expression(arguments)); break; case CoreFunction::Comment: result.reset(new core_function_expression(arguments)); break; default: break; } return result; } expression_ptr xpath_imp::union_expr() { expression_ptr result(path_expr()); while (m_lookahead == xp_OperatorUnion) { match(m_lookahead); result.reset(new union_expression(result, path_expr())); } return result; } expression_ptr xpath_imp::path_expr() { expression_ptr result; if (m_lookahead == xp_Variable or m_lookahead == xp_LeftParenthesis or m_lookahead == xp_Literal or m_lookahead == xp_Number or m_lookahead == xp_FunctionName) { result = filter_expr(); if (m_lookahead == xp_Slash) { match(xp_Slash); result.reset(new path_expression(result, relative_location_path())); } } else result = location_path(); return result; } expression_ptr xpath_imp::filter_expr() { expression_ptr result(primary_expr()); while (m_lookahead == xp_LeftBracket) { match(xp_LeftBracket); result.reset(new predicate_expression(result, expr())); match(xp_RightBracket); } return result; } expression_ptr xpath_imp::and_expr() { expression_ptr result(equality_expr()); while (m_lookahead == xp_OperatorAnd) { match(xp_OperatorAnd); result.reset(new operator_expression(result, equality_expr())); } return result; } expression_ptr xpath_imp::equality_expr() { expression_ptr result(relational_expr()); while (m_lookahead == xp_OperatorEqual or m_lookahead == xp_OperatorNotEqual) { Token op = m_lookahead; match(m_lookahead); if (op == xp_OperatorEqual) result.reset(new operator_expression(result, relational_expr())); else result.reset(new operator_expression(result, relational_expr())); } return result; } expression_ptr xpath_imp::relational_expr() { expression_ptr result(additive_expr()); while (m_lookahead == xp_OperatorLess or m_lookahead == xp_OperatorLessOrEqual or m_lookahead == xp_OperatorGreater or m_lookahead == xp_OperatorGreaterOrEqual) { Token op = m_lookahead; match(m_lookahead); expression_ptr rhs = additive_expr(); switch (op) { case xp_OperatorLess: result.reset(new operator_expression(result, rhs)); break; case xp_OperatorLessOrEqual: result.reset(new operator_expression(result, rhs)); break; case xp_OperatorGreater: result.reset(new operator_expression(result, rhs)); break; case xp_OperatorGreaterOrEqual: result.reset(new operator_expression(result, rhs)); break; default: break; } } return result; } expression_ptr xpath_imp::additive_expr() { expression_ptr result(multiplicative_expr()); while (m_lookahead == xp_OperatorAdd or m_lookahead == xp_OperatorSubtract) { Token op = m_lookahead; match(m_lookahead); if (op == xp_OperatorAdd) result.reset(new operator_expression(result, multiplicative_expr())); else result.reset(new operator_expression(result, multiplicative_expr())); } return result; } expression_ptr xpath_imp::multiplicative_expr() { expression_ptr result(unary_expr()); for (;;) { if (m_lookahead == xp_Asterisk) { match(m_lookahead); result.reset(new operator_expression(result, unary_expr())); continue; } if (m_lookahead == xp_OperatorMod) { match(m_lookahead); result.reset(new operator_expression(result, unary_expr())); continue; } if (m_lookahead == xp_OperatorDiv) { match(m_lookahead); result.reset(new operator_expression(result, unary_expr())); continue; } break; } return result; } expression_ptr xpath_imp::unary_expr() { expression_ptr result; if (m_lookahead == xp_OperatorSubtract) { match(xp_OperatorSubtract); result.reset(new negate_expression(unary_expr())); } else result = union_expr(); return result; } // -------------------------------------------------------------------- node_set xpath_imp::evaluate(node& root, context_imp& ctxt) { node_set empty; expression_context context(ctxt, &root, empty); return m_expr->evaluate(context).as(); } // -------------------------------------------------------------------- context::context() : m_impl(new context_imp) { } context::~context() { delete m_impl; } void context::set(const std::string& name, double value) { m_impl->set(name, value); } template<> double context::get(const std::string& name) { return m_impl->get(name).as(); } void context::set(const std::string& name, const std::string& value) { m_impl->set(name, value); } template<> std::string context::get(const std::string& name) { return m_impl->get(name).as(); } // -------------------------------------------------------------------- xpath::xpath(const std::string& path) : m_impl(new xpath_imp()) { m_impl->parse(path); } xpath::xpath(const char* path) : m_impl(new xpath_imp()) { std::string p; if (path != nullptr) p = path; m_impl->parse(p); } xpath::xpath(const xpath& rhs) : m_impl(rhs.m_impl) { m_impl->reference(); } xpath& xpath::operator=(const xpath& rhs) { if (this != &rhs) { m_impl->release(); m_impl = rhs.m_impl; m_impl->reference(); } return *this; } xpath::~xpath() { m_impl->release(); } template<> node_set xpath::evaluate(const node& root, context& ctxt) const { return m_impl->evaluate(const_cast(root), *ctxt.m_impl); } // template<> // node_set xpath::evaluate(const node& root) const // { // context ctxt; // return evaluate(root, ctxt); // } template<> element_set xpath::evaluate(const node& root, context& ctxt) const { element_set result; object s(m_impl->evaluate(const_cast(root), *ctxt.m_impl)); for (node* n: s.as()) { element* e = dynamic_cast(n); if (e != nullptr) result.push_back(e); } return result; } // template<> // element_set xpath::evaluate(const node& root) const // { // context ctxt; // return evaluate(root, ctxt); // } bool xpath::matches(const node* n) const { bool result = false; if (n != nullptr) { const node* root = n->root(); context ctxt; object s(m_impl->evaluate(const_cast(*root), *ctxt.m_impl)); for (node* e: s.as()) { if (e == n) { result = true; break; } } } return result; } void xpath::dump() { // m_impl->dump(); } } libzeep-5.1.8/lib-xml/test/0000775000175000017500000000000014324170113015340 5ustar maartenmaartenlibzeep-5.1.8/lib-xml/test/XML-Test-Suite.tbz0000664000175000017500000154333214324170113020540 0ustar maartenmaartenBZh91AY&SYҋ!~}ZA=SǏ4@ kuZ=MهM{ju՜[J2Q޴V\n-N*۔VQH(&4ͨ5m -ݵfK(6)c 4ew;"ޮkΦFōscFA&@q %xH]et-3Nl40k,|>c{i64 6}{{m:֗lW6:6:=[nfy-=np=wnu}كwI}PEɪkw^7}yY>fd٠kHE [;c}zt4ր*h7M's9e{޷ma}Z\pi'݇g4j>['T]qpA au$ӒI.h$Ζ]^Tv*UI储*1^zZt4\{ҪҪ(;˪hmT'smR0ѬM[16@ |l4ּ-d$S/yʪkl5m * UIi'-E9Y0Jd*XbdDYnTCwRMkEh+c61j4m ƙuWZM X J5jm*#!*}/A& upԴ2 )M(L"ϰ= k}{7D&&LiMh`M42d0 i4@Ѐ@L@b4Q642J~i?ML5MM TښSSSLJl6<@MOmSF&OGI<44 h4  h4h@h=@ 4 M5MLi4~T3 ɶ)̩dzM5=L4=& 44fiGh4Ii&&Fbh ib4 &# h4hi@TQ D1d2fާS4C M'iShF@d=FhS#5=MFL'#M4S rz!o ]jH{IC$`HRY3BբKa RƩ(:B^$YqB7*Q@fRJPdIY l"ؖTEh$"ŀ$QbE$@J}DCV-"*V)"UbUA@$H^\/q.l aB YfflY$?%5 N9bRXl!Y"4HwbcPFUTFZ*!$bt**,PHT *EX  2+* BAHJ,d)AE @X%E0Hd [h$m $"ŕ*QV!$Y" C °-m+ 0[D%-c`m0%-)**1U46 ,Pc" QFEUA* Qk ưbYb2"AcB+jA QDQ$AA"V$YF1DD""XfR1"ED-ZZId%iDP@R X(B1$RXXlb!+`)M4$XER w2{CVRH'IQQD A\QC~3QH|Dzh@4W p/aC"*(S,Cv)T xCbNNȨ!^"!#rUzo&;{:Q~;@&{W7'{kCmOssf ('< (sA nO`=ަ~Slg>7#}nU}vTtl7KKvô? |= ]L92H[El;,vf E ITU]UUufQUUV-UUUUUUUUUDSUTX쪪j%k6#=lCQEP4QC8QEREQEj**0hE$QEQEREQEQI1QDQEEQEQPA ((QEQEP(((QEQE ((QEQE((H((((H**(PQ%mmm$Z;Tn:E&Ӧo5ƛefa%V3q9Hnflہ`۵A\y00dɣK0]1Yf&PK\0C$jIy ]F ĝ *:5[nJ%72䎜(n8 +t%u[ʆ:ZZ2ͣ&q[^nLD뚒OiAxi {ns]5eUa4]lV#NҲܹӫTRm&mDjnǩQDUJvfh`u2jلsv-dѠW]i5]ɻC֤„vhf!Akʕ̠X=P;cʶ<\ͼY^mIcDQ֞t1s4A洖Mʛ뢜w,0Y(Fdh]M+P;1lh׏Ki`ӑׇn,4ȵ7cЕ/&QG^mhYZ{S+1HܪQ:$$~HDXbY1*HP1` EHF,E+**ՐbZl[)UeIh)l*QUm%UJIe"E @P@Q*KHX[T¬dZZUXJX"DQ2 AdPȈ"dYd1I"2,0XF $a "cA`2ADF$X Q s}$y$= $6䍸"IJ! jHDnKfI$6޶ݑI4YGOO @I$RTd$amfb$"xmM!l6ʵf[:Pݼ)Ypr, J(( jb01ٳS)F 14$ Y HI6sv 7HµƁ E)(F*ȱa6be!R*T'6bXT lX,D#D`#"0F*d$D`RUHѭZTc2,P` $X( " [L]U]zAwnΜJ FnD u'8 D1`lRx0*n]Ŧ\0Yi3f$[ arǓ$ 5@"(\\M(:Ě U]2j`rC,ݍ75mjy8FӚdq" hՉ[ ǒ]qAc]hӆ, ͹\ųE+Z0Q{T)c/<'ȴ&FKyy.ۘ<8Vh#@ S<s8<o1rADkArC\ !\x#ȷkFQ@(o.85%quTaz30R1qx՛nQ$U4jQ?DUc<,#v4JFVA FRC!f\ ӣXCus@ИAZFĩrcw[nXBHn9Pعc؂fMAøE5DZ&\GV lʳaKkɰhl{skhX k䳛^9߂? s/Ge~9w(GNd/e1pGwm^,&HH͆ZPi03&L&La0R[ F  E ,xm^/&\֮MɆJ1±9rLOL?ڝB# W3Zb'-CTT}/,*;嫉XP;;^G/Cjt\ok2תK%  $UˀE `>K}BX`[5K/U(>VK`bD?[zxPÒF"=ŔP<s4'ߣ~JATfҞf=ηj|8~K{;thw?'m4 hz;cڬA|L|_+vT[VU6Q OS57u2i(WSZ}X_/IBcn~>‰} JGޓ h8 ݗx0iX0VkZ*vqE R#j~oWԳZoOmHz_MՀ7o1ԡ"pƒ^¼m_΀yH!:(.B{ؿ/ tPpw/,@<k,EǎY 3OѺ}QW+;wS~n,igyhQ(<\3b =oS?m't,z&~@F>Vy~Eo-۽zk8׈Kx!VC[s1LCSJfrT(kjqzWxfi zy0V|mp/(vtJFZpTU?X0Tc3ؙ޾ 1iZ!X$o"{OTyL;oXKW~laf\I&b̨;#vsλ,e1Oc3=8w|>vеu2@{c9]Bw Tя{ANy?΄Q{[wSW'Iu^yOk/?T_)βf3:uid): YJȵ~fj?Ȟs1coG<`AW@ I|SJĄfS9[ћB8 )FS0n3tͅK]D%D#A*{7\N<SwZQ]bPʕ5|b0185[ʕmiڶr}-D'#KRUEr!g"=-( #OBsI"3tUƒL}1팒![#4..)S 5KYi}ϝ?k1ΑV#נ{k,`mYR{ rOcQkk N[RͣM[Wwo1/@!L="&u?ЁKuǺ&z|/݊%}fZ[t7r^b̰\}gFoK^ =@qPtK7;ijw,?9>c?hyŽYOV6(lZP>.9Wd/n ˾0jRE!S`})\:)ӏ,pL?O)+ḃY1O[c,028/8w0H5i~=זh-#3 ILخŷ#/I`$+}?du1qP}p b;*#_Zٹ$npͮ2}4 HD@]9ŐPN# q9IL>}NU !*B#BHD$T"!`,V,V ,E1"(AaY2)`dЊ,m ڰccU+"DRF*@X$ b* Jd ʫY(łXJ8J\2HBDZtvxC>* ;_eM;0x$3IwX 9i6K5 U:ԽqrN} rdJ4pnj)Tl~郚J^ Su2SO> v#Gct)TL6e6R`cJ~"ߩr_١cSʕNjlj80lkc=c|]QwGӷw_Yeσ]68nC0jا%YEX;Q',*!MTE T(R[rQ(<=uG+<WnW|] ޮA4 `7ON΁07jU:v3QBJm ` ?÷4+2_a dD @ W `Èk@mQ̾.׌1 Ou^TkoN sچL`jȠaldHwsKil|qy<t9(}oevoWpSr.~(ZRۧz8^abg֒ˢN} U2}0QvlNؘR|u":G_$GiߓKaB՗fzC>y=TncO)AUN4NtcԅުN P9>u.M r;6)\duvw#+YK!|wFի넼  ٺoqCX]OE,q0 AV1QkY) YdYHb2,DHłX),fYHF (T""!TWAimg?cG@$t UQ"A,F( "1X EDEEPUXUdRE`??) Db+hDJiţ*U4Ϡj'Q.Ƈyhq>?@bSO{2euna*#\픡 j.f--O: +2l}ckq26 %Y#L,iS49*'haZ,Q -%QT]vR &-n4¨=ZsTq5Ե<-0(Qʫc0|[D鲺7YM0vPQ3Nҋ IŝOř^̶> ɱ8pΙhts4[}N DM]FHs46EPutZK+e6JFlmnn2hz}0 ̱=P[j oQQ"8 1HMb12B)$ІY!*eijēک od TQM QjBB 0dJ@P iaKP-BX-QtđU 8XkW 0 Q7˩:qQ6jq9#.& fGmGo8yNH`/0DaZ,ռgIR#f`<+j ,} Э\ESyC".1‘ TP\ QDU"H03¨[SBMyH"dRjFI% ADZ63m3צLXbҡbQF"MZR V0 1a "@ ,6C%5Tѡ0v!2rQQYBAt!U KR{n;jTW{^3u*CI3tUm7L[Fd)>9i\L倍 Zȹb[u1,pώu=J^rnB4/?YyհXijׇ ߢ2<0^VY4/2Aߋa#O{yؾΙKꇒB eS{y5asJW/ðe$UQj!6|E֊=FMƣrӬҬ`/UШyZtZ#`B9x/NPճC]U *Mg6t1k +s ҕe_EQZY=yDܶ"}=oµ␼n>_6w-kTc^oge]il՛U:9̜ˆ*vL6Ms9ddӡ }WNSoFioOs;,R=6m ҹ\j2K P|ANX-3 kl 1(_g^d/dfE4iXnS4d*(讇xURK^׌\KWufշE C#>͡xw+#|%&s, zqS9)^VR-č{0u׮ے0ALU^KÓreA:dՉaQ0wTh܍Zpyn-ϣ؅I-~bHR`z}Y-V"^^O4cԈ3BD߶$lu <~t3 2ZKF_VQdžUq3\*7C(r.8/V a)fo^| V>}2Ø"}ڗ`?<{'IغTU-:a¿S*yE+rΘ-fe%˓s@dGrYG?!'ŴK ^\V0W%@sMd%vij}]Cz$t:$C~yugk^F+WEB?p=3cUV*lÈW8%ZGcdYTĻlBW7ئNYMjȵ#܍LSUPB[nہ2xoun cysQFo3O,&=y+ڬ?[shR ΄)"_C2A6׾. ݍ~,_WEjy ]H:JvЛ3M?<Aߎu M)>59IE(W=)z?c}M崸D#/Ĭ]\d}Qrj?LTʅp3 p&OE=ݳq(/5 u20-2Ҏ&\3wȜ+r{K]Me"ZaTw\W#*[=-QlXxiąYF\f7@ uZY?]QE=ձvJsp.&Ȟ;2]-" Rbkfez^N7wKEs",$OS ؓ˅ɊV`n$RR'رj!kђ(yYG@;lޏk-`n80k|0 @h[b>Ȫ iG' ?$oOs<\T̃!rzء;C4&=S06Zl"D@*9CR՛cAY3crXڟ??x0!{=xc *a7oCǢ;>ٲU*5bWa刨c1:`7?kǦ 1c<FɳJ%Y!msOCm0Dh-s29>-걭XjծX>\;lֱ`*V#]_5}"4Ɲ5:&Z(>1߳| ~~ǟh߽eKS:a]9D‡#"a*Owl>DjcZBAI xXƂu#Mc"`z&e:J}yhZXMgpJ əC?J.إu6%DY(Q,EUYbXK%-mD*CHRZUAQR-DTEEUi!gL(s_Cq#'i~RN7-Y[(yS3hneKGQEm""|-1+s0UQU쏟!@6dt;Hhd 2UU eB2OP ٗ1Ľ.\i M HL6 D(v*gXg~ K4ϧ ؅D2n/ǀN!;eb "05bO>B [W/U#^GJ"Sǫnɇ\O̜}?GOДK/jw83Jg>{k&彸QpȹݷjK~^4f(Jo KL99L8ٗ= hMXpsy\ct[:Vv%A@ӇUXj Gel(u ) Po-[() :rqs.8M -;Q SoO;晅 T8Ose)@Ɓg;\y9s,S_6cA};Մ*Ýc+kmi(VQad g޽Qt # <*C6Ca~p0Z00Czעh֞j.q}А`K&}o ª^w-y*7.GFTd%Kdɒ9\̢l+8PɰTY{(g]MV0( 7-MӤYlyGwӲ}$& A-E,DI0tҬK!*T`@P(r/`D ;хs?~~AEω(,yc TOSک!TSW!,`e2xXb#ȶ; H[D 'us7mv{jMx|Nt/ʑD׼!}$R\;I7/2j $1R$UAHA` $@RURY b-I(F1HdD`HHH$B"ő Dg8\D)o#pcMZ'pF5[Hf.:9 `DeijUV$2`xM^v!Ei:=YsvPw3MLyn|8ySxv 1@. r;;7C{"ԧ;:tau?wqGzϗ¿:qpi#Jy,(La0V' 'А*Ѡ98s5`uaBm$vc: A   !  I`QTa_G޻mc}M=]*[wƺ`n3}Ǔ&;/NʼnNx rj}eo$CTnys2fKLƄ,HE4sYȒ"Da!|M P(ŵRgU[ݢ w6ppҎ_.i!f!Gbjd{= H̔tu_Qy*q4lp{_Bo5D'yǮ>G;d6gQd+ mwH@@8윜t;9z]tu;%$K$IǏ_گ3GKKzR%$K$K,Ne Cީth| 欒{~Hx]w*&U:+D1zVXɇ rLL P%`/*[y3C!'(Bo7IK'-ZT7dݎvYt{GbCke8#z?^>''Y .)TQ-9T6RNq54 |G^wh:,rUZ tYd#sV 6Xd/lm/  _(o7X GvGweq Ub.ϲ3buL- [eƇpK2kPspQ!!Xw㓞 $2l߂wΩ%f޼0jgO{WRb=;nѻtި!nf#{<{@,*|>o#{X,O:'\CIVT@ VouU[ E"b P3HqtlG=m'q@т(ReZ})nJrfzhkMypp((&p?6wH/`=w@ꃹ>!N|;$Mr](p9ZD#F '⽭~bL7 .*;BtyEUw "r%rDh L1_gY>ref;ZO Eu7;M9aw{X{֍, !X'[>ˡE#J<̻dJL*ny`#KNxlC-ѱ#&HR`2aʤS2oivc`xp tN Jtӧ3BƠ1L&/$߅&NjО4pWN-:Ip۰X[#dɇad9=b]ScVj &™H*+"f88 Q6"ٰd%rp7m< LKu: L2̇g۸d9x8/lΚg?\V_C|ۭ~ھm*=~u,&= < lտ[knųnfN.hS9xkh84˱&2YF3=1`mN<#.?0L9O4DK2H-6"|} 9 gFVN6m#9_O|جog#bW"/A 4*ǽn_yht5yoO0Z f5.Nܺ!GL{u-ηHMSH NOpl| x2-ѳ Y00^/2n22xe5 B/* Zñ5!uFf xyrGbXߒ^!# \&Jw} gTSF>_O۟/ۛHS EhlrdMut9NWk٤N2t=99{#pZ<$A>bwLSUU=w5wE.5S14yir.iSt4L8'sn7w St6}b50n͝ɷ;n ~y^I`c0^MJ~?rF6o!!KVEai[saÂr~M|zɠW{:'y8:Sē>-Ç)XxY"K~V`V7_/e=1Ms_'@I/xlwrSc Aypt hƌ3#e֩n-k\؞X#ў!߷N'>mmmtjag5GS9ک؛7YM5T37xqn6I +sge˞jlDXIGNe ebRRRk5J¦L'Wcm Ly7a{=C=IzOuniYð3U v"Ζ}ld|6&]?'MWN:7pa*]ϯ; Ba Es۹76iJph:+;7crE6@Quy8 sƃ3 HjOp'ڧu+\5?:o+Y2O$o{f% it\R8|8<"q@ D Q: )}U=S=TfrsXBh+/qv䐠p t]XᶣAB8: Cm.ן=z*7;_?dɰw&Rbbyk' C `f6讬S,t|$XBC2H5yL@(!U8Zbߝa6ZUZH˻NuYɨ{]#O3F~Ä͔a8)8\F*Iz-*@$$'^AS8NΆqT }h|D}4}omto_٦Fݪ\/qنW=4j9a&;Oy1;PR72=ۻ||&-KSt*nAvCddp^'HtDO;OMΖ){0zy{͚.Lۡ: y2I)qQP!Ez+E*>'fϧdS}zų )SM<||Gz^v9ENۮ^LkpcsFZt5 *16'J-ˤżr|='L'ɀӢ[awCӃ_κ ImXbia9ٱg9bބ {UwD0Pu6b I=6&'za}N\zd:HHhs^xGZ֘5MˈT=Ldؚ;Orgn#>;edsƚ|O9d45'48>Ȯ~M3&f[[6 5i+~2ճ bG٫V&O/aW;"'F0^oA:M$e~~sbYIպzSdǦ{V.^Yȝ稖Mcr^"Rs'7~6E'Be5l!SunirFl]q M4G @ 4PPأkI2Wl@YJcaϬ(t&q]HTH}Hn'*qv+ыo\e7σ4"S$Ix5^; F?O'- 3OCT,\ԛJn&.@̖6(5NA9uY@&Mlt[|12 CA8:3Y$<}O>Eڟp*"h} D'˄Idq!G>n|mh=3\#SSarUc||Kdk1jʳxuMPJaq') ::>1B{t'٥#y{Lst-vӃͩ\^E)^쓦KwNCw',LQ<U،Շr`jW ">,GT}MlIjy(cM E99Fl=VI=JBKbHEEi(4ɘo?t߿mb+a51M n3 ~3RF9Çi 5D-i~mthL}N2I0$BдKbUEZE MsFa+;^yŬ75gInwfX˛6w ˠ̛L) fN1yLkSR !9-Nz`C欀aKsxZez -]_'O߀m0 ]0 1b1ۢ0E2…^pnT̾now?uv=i_q g&@7Pu_ǦtY[[ *^Og3JI$*I$*Ok|׿<^VUUU~c7S|׵mUW%Dr_-i JP4'6{rn]"Ah}qyN$Nc9A;ǯOvSUQӊno5 A+K"'4PR7|?-7Bw<->䂞OK^to0DYN RɃ3ZбXf FV6f8Zo[J(ݛw>7oD.w)(z\xdEHƼ2*"+xNosSUaqɠîa{襱㜲䝶TCǍ뮚cƈ|+nFB3Ãi-UaZX4͛3ffmBL+_v|; y!BV`! NƑ.U3?1ɎPAs;XLzߓ c :/Ъ ~~Lu[|mwH\51li6 ͐AB'%Hwn20"B'uJ1=I&P!dI?!!GtAj(X ªjfd\H"*ak[;pB !9S*#Eyc\r .>+ 9"!" dt3 $Š>hQd袺iD0jlt#?ߓ$nŌe|acmmmn`iE2I% )-ҬkIET >p 07S3PP>|ٳ3.w6Sus\yr]+FLF"1[γOWtI=oJanmY!>O_/ώ-B'O'/#.88"A@M8h{g5~d3$`IFM,]/3ɦt)` ɋ)'<9@UT+ j1r7:!^'R*E{[2JiPsɀU*O$bDA$41=%Ww{0"͍7.V\:!d )R2^ޠMIͷq*±(J56Ko=" QTEXWƤFC1faE Q&'^\8p_O?"mP0Ł-XG.Xڕ[Nv$rKR L4:Fϛl$)s@(TnR5un0Nv6H, 1 5 nu%BR~"ԹwGwgv ޷vy^hӹ/;e_ ?8MRnp33$C*@+Lrdz.J4g{LsMvgvjhn:ndOBs%`ZKQ)`,ݚfM}1"Eu)$C H 1v?GݪUU""KHԟŲ"E+ڟ}p_9eJdzPp)((UjEE!E # ?R0~H  G{uų|ZSࡂH$ZJ+ P DUH`32-eV HAUFABID0BY m'V*P-2I!Dhb(`")$hj-E%'vlGR H@b@U E"`! 0ނHmjh{R Kz$wYnO0{lib@'ޣ=02:t މF"E T޻Ws'Qf5e#{fn&^ҭ,y·FzR~RjE]w-3/?Nڝ=gb (" _YP$b0dLs vDQPQ1!ޤHU5&āU ΗņN<*B pK,PKe h`2DED|ERD`E(4XX1WC?p gr4Ko>0eP׈).VMZԩ~]$ѓ STcrzI.TT5oQ-#__Qp$XN3OڅTEL_y;h+E5MXu`x)B kKhqU!ںsj;?e.-kģLvɵSfԥОZr̍)_诸^]JUF:ޗ+WL0ks<0 a%ڈh%%zAp~GU@O@UoTاZl4BU7N#ؘ };'=gǵ?*1!2 'q ,2Q^gZyKZN\F{{P4JN93S)֡W}5l\'(mUZլeMc)c} z3R3lXàᵌutu9bF{Om~SV%Fމ hJ4g۩`?FrM{ (LIP!I 6z~w>c~/~vEFoy10ȇOUQ>^/Lmy<:! ,ȗ&R' aܷ~;%m|ݯVj9a1rjNdIKkLUΟB;p W\``_1t-{LWڼn檽S"COur`~bYRНzRan`zu+X~Tϼ,#)>x>SŲh;vhcM!ݭ/Ľb^}a (/ @#2IAΉ{Fl&cR) '5tWNϥ/n4.ƚUoV- @TP ؗk0D$9&{e%:uour>־YT`B=8Z9 QYB`/ͽaxsx h$@̳68JEy> uFuW5aωOR~m@BҒζ`$QIID,(J aKrCX  @5nnά_̸H uCߧD2znuuHf&[}@|>*%1~b!? o)POj+fҹ8h^MOLSMw)UUS@ (ߏy;x]w1 ܁ ߵ'^!LdPQ9#n[ϖ(pqqBTQ%"o1eg\gx 4\lolRUEIņ|{3{u$Xǩ= ËJ5%S!ףn>,0VxZ!:$9{e ϫ؉S&:DxL#dyY7 ].%%Ҩ` Y,K%%[2R],wѴn0{#/MᏇ{.|VaQ'<2ra1R$H<a! 9N*]#)Áu;>t~8VqgexFwܒ^:wG7j_9g̙2K$8щΑ @ _#&O;5XyHz@$ TRhaP !qLbDUa0Lu;@E1|US> Q}!\ٿ(x;IFr;GPWwIĿ[{woVF@B@8pG^9uoT@Zn *>b#T P7˝t +ᦊVbs}گigT.'T?D H2<-j /!E1`*͂Y(H41$/zteqG 8 "x^K3n CTgNFP'nC ww|- .KR(b1`1;dSux(@ՙ33.cXff T|m֪{GTȁԢfxDŽ[R)Jp< (a~ vgQ"j#`$iN!:;?>3Oע?{^8c#%#J,u '$ɧ Uj GQ"tG]GtkѸS8A9_Oy$=9 K4DĪ%Vѯd! Mm;:?lf3y^ "0А}Jt~:{$ˇky!D@'?ELz9BG5mQrkݻwitnx/ ""tbre]Bc\+Eb@T0 kQEP#hZ+"XLH\"+ p]u$Z\E!pDV(MVv@ pu@P0D@`H5:8qjx'''[vNv"Q~*6A0QN p+lC P`$$) @pp 0rpw4u6v;ܝ ۲v0:^'kv+F<6Zjիapw<͛6px5v:ڲųG8xP 1xL^.fDF,n7dC[=x|4i(a45V ŷ20LgZƚL2Krmv0'(0q: gQu:NWwLJsYGz ^kVO?K{B k: $!RNi!j#'-[ŻȔN.m;}W1Nmt :r=gI?PYB`,Twy4tiY~ÆvV{"!LbTئ!% `]E2֒4SPP ҩ;L]lq;ftPCgqop\KSIFēK!ZiPHߝߠ;ߝAޠ O68ӤE>? ?o'RI"LlP34,JDh0j'u_c ރ0"C<96sƪQ[nAVNwUTVf]VsWoi*6(_JG4>つ#A _]<"<]vKw2kNX332LXZjjz^_!R'33ۻwws32Ii{y'zIfd6~W2?{ߟ_v\j}x/6$=$FF;⍹$fg3=$m}3=nww31i{>:vuu{'==ΣyuJ_}O>|sވu/I[m{{{mۻHK$/INzpD~KF~m#Fu>G0~"'/ww\߿;GE7a|O!{fi4vO%< >y$N ZԭJֲK.gN7 iڷ1+ZʫkZֵkZֵkZֵkZmmVֵkZֵQEVzȠ&8 L!pW3_"쿗+v/o/A'PRfU+;m]o%OEo&Rߩ;;&`3}ŏ;/NʼnNxՀ?iYd@s;K^J#q^@coOʪ! f͛6lٳ9Q`:O$ M2t=LAL*&o0@Go@BxT\i;?ϑrD^*$>YFW+~UUUUUUUUP A U^2eUxUWUW U+UUUW*UyU^uU_ IQzJ(z=GUd^pH y^pLyy /2WUyʼUUUUUUU@UUUUUWUyȪUX E/9%EQyQE IW:(/:(^\s˔MCfQ9CN.UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUWM檸j3UUUUU^eUUUUWq$6၁߮GZec#R`l?HQdFV [m3mEUDW׶cUVU\I'm $ms#c+b'ƱH͠DX em61N@ [ S_F$$Ї5E oH%' lI. $' Ԣƍ0ISDqA |ojȈ3v<\"A|FDD ՗+||FΪ_æR`M(_v{emN /&窫@ ;}{iq1XݡesAf:aA{:V+r%$K$K6\_s~yd;ӿPy.=jݶ;^^7QXipqw%F$gB̀LYW[(n^mj*3v(k-ry^WIx$+ !#cA6ٴvH6&fe磁DŽ/7VupIv ,IKM` x: @Ot~jٝxjpR1 5w :SF0o;Ӄ6*֥-ጘ@[&ԙ &.q Oy=>dyFN 8MƌQrdMfnKrˍʹsw1 $ [%ޞ!l6q̽g?넞Ŷ V z[&0!5 .=㞌Cc= y7jդիY4HvM56fhɡ Wtrhѩ^%7 Kbg:gn[Gy׳D>2ANk(PA"(}JQ"(1("""""( QE)JEqJ$}/Fr""""(JBߗF8 (")JUJUTiT(~9oDDN/Ԕ@os}7vH$H(w~q_O$HWu1%B0#%0h,#(V Db # B`E(҈h""QF ""%`аu~9l"5=v`ݡCU,/#eq8k)/O޹p7?%k7?X02G|mZ"UIG- $`7g3(Й J\3e@0L\4"˜X8 3Nn9# Y2aaE$֐5;Ns50kkl=< ny79jBZ} |iCBBħ$(Q S5)Uo85puoG&x 6ANRR h0Q0:"r8I6h0#DPb%54M%=lL^SZZZ0ʪS'\Ծrw3塻ev}mw>~~yΧ&2n2f2} ۮ^ -"\yoJ&WerE@. DmL"H|s*'29 8ŦChj>yר|ǿM\o{yzκ=MYv౪I]MS,opuYMC81":3*_t j&iKLa p8#7b<.9z97cFdγD #pM(ذ#`sfNNuqeT=GNv̓+~fܦtC ߷v3)0jQazh6筠Hjja"1Xӵ[%42Y2FCG,&1u50lԑ$!&rEQEQE ש ]׬/6n8ҞO<}=Gyxgtje Kl[.j.h.\,$IE̓hfCɄ 5L BF`aq08jqZC׼4@шeh2zyΔ[zV"Tpp] s8B+~/.;ֹ8A>deTǼ0a1/~Cmq95\=xpWq|_#iȼN/WHk~XծfNQ0tj'Y򉮛T5r#Hd8pe,a v1cYjqjn..8\njs{oyqʪX& sC]8mJ<6j̉0%zI$Fs!Ӛ9s%*+^$LI&EQT*Qq97>Ns$I$I$ s$0ę}m{Eeff\I9rI2$ 0D@('9s $$IJH%H*ЬP*5mGrE;D1D O{&fq ^ޞS!`^ dQ- %!0`E¨@ڽ0T)HqK 6L#L"` 4L V)*L&&ZGyxFb"c8z yt̹wKjoF_Ƨێg)6[ekD{@}x)H같 =BgjKE6چo-d DT$VH#T%KAl'=/?wڣOgE/<;ju;P|=|͸3keqC<×cyfC J{Y5$2d`)qR6JM&yϚM&tᷭ7 [e*T0v|<wS̙2R”YIRa4 H@gi<w;^vws]_=yOWW2en7bTgH7Uk!Y̙']k 6[T;3N 8`A>3QU4* ( ys nޱ7sfY8!s5pm"EUU!-i-` c8}7ײ}B҆u!`?2\80xo7X"-.\«:][Un[W}UWv]TR@fDqMRC:[Bb2K % JKq|fa8!05NMpi@I76ꛍ s@SjޠksH٦#R#80f93ͦXǪ*]P؃[$6򋺈M@8 q)!ho#9p6ʅXT_G~?򣟔ޣ*|V}1ϯ Z.o\ۜ`a{^WNd!G8Gt }ʴZ͵dW, m[!5? 욧{^ok>}v7;rcx96~qk6sg77ٯwѳF[y:9/+T GMMA/cPوU[}]}|y 1/{I$S$:bnG9Ӝ2Q .r^I$@*9Jp|=2I$I$Iه3 $񳙝}m{w{ I{o{V 4Ύwnffg4uqiBNU|Ƶp?Y)׉kTvJY{5ҡu&00`bbܤpM l AL*Oaª̓F=4ܧ Rxsk×^ʈ2؀RVC&Wfg^3lw ͗>x !|,F=cBml;6  [4SF.9d4Ի*:ȳR*`3x3 08Dl[-:ci5=Ge?f\;`RN~DN,=^Sǩez 3<uejuS7׸^w8ZVu;:wp{^o_aC=x{FAzg!H<0|m)T9ΘpYLD|dQ)pO>mWNJ?;=6Y8{~D!a4 {UAAѢJB<}1Cm*Ɛ /';/0hq/rI>|Afs7drNH~6^|ڑ܁ _uz.ڷm?)R`ݡ~fRzfFjd8TtŞ v4ZjhCH$?'r}E~ۗU+j][rڻzUTw{jcT&hHn j0" $  p2ڛ .54iF+pӏVfkdk +T8(o ap+8`|wUɯJƖhJܫ t6sn4-Hj˴⺂ YQ [X1ȓg~O;w֭9[NVͰJ1v$ʥuMR慥j|%O;?3໹W6 }iI' &Y?,6cXF7ܒw{0}p~G|_kU[) c⠚&uG!s{ڜbM^ o>v9g?;GFǪ-%'RZՌcʰ݂UI/zI$JdK Fg>s@K33*/zI$d`*UDHsX9D Bs$I$I$jsy!1$J)}m{f!)e8o87x7@[s33EHL&o緡RiiyN7o|Vv Y34cI|\Y4O>@z_QA  H&Κ*_N~Ҽ_*5{qz$P #&c[֚c4!(g'~!APwkKKāv6'd{8ueΥ~m'*'&Ɣ48aR2])sKSk9{nܢ6 *++#0'X&q Vyoa8p / EfRFY[MlC'"w{z|Ez47C.VL"1@UM9c`0"h"p^uA|JEI?sN*â.3@sPPag 3gժC<ĸf"-DxsH[~7~q nDrqL1>*[/)򡮹e* aYޟiO՛Mky i.eWF.KgVGg(Y@peEUtjUum$H$K$2ѹqVGoNf P7' 'uq>D3dmkgZH'VHi DC਩a"Jl,,!4x&[E0nfNuN!Y5AVfCv"' #mL#>~?!=[{q…VtPϒEqu>8|e/sUgzA6CE|OqomVEq,>"* w)kf1M@:Pٺ_uo#G#Sӣ/[FZrrj{w1\PALaRK$Lō{y" {7w v&f!#{y{h$I$xT={NZi% nox:{y9-4 Ѻ6Qi,6$~NS:7ye^oλGG$ZS)},P7[0!(kQ Z-13\"Huwy-l's~L"8`4!`2 hfƊtoǰC^8q.$MlE!a Y6s2v-5oןiIM|=]>xz̉$.JTV( pm F&-)lC:sUJd,-3ij=V@ژ¨s ^ќC]>̱+hp7]NIfYj vZK_qk{m(lg8sqϸ$9NxCczMn6U—u;0ށAg#3ڙ=g8q8 kfd$&ma˿@` &xW ffw>=>GCwyMBOCø?.Pu;׭l:Vm7k? =79C (gEZZSmkM4lqF~?&Ύ CkASq{)R${{iDe{{iՙ$&$qrG2[w[PI%~4ox(@j7sf-B }KAԍ 3e2yߗ O3<#Xq&'cu}z2aoV>m&o’lyd0/❭mMٿ7&NmmB'H@L ji#`RC^PÄ$<7CZΒ ^~ < e; 'I޶[k@wpI^e 9LSF]Ѝs(9Il,0DPu^ ,UO8[q&W<Y/?u;uϿt@WqI$UI$Q$KkmH$Mi<k7 tlZyxo3G- !d$C[yy \bC8"[NN`aUULVllɸUU(QbHXz5mu sX\ "O9Xi8880S!QV {!54ᄢt0` ,x_9pM)JQҶ޻o~7˵/f[ޟTwq5r'޶I@(]w/ۄ" =_e3^.G{ #(Ơ#~@CP8`R U:`V6ECH0P`)T*1RļI$s1%sJD̅,ʬK$L2RBt $I$I&ln5Bg8|UUY;z*H 530D!$uom@˂& ŤM@X?Ѫ]t$_#`ay?޹j53 KhT4 #2# 1AĠΫ{{p`7#v? z~MEe￵k|n!e '^'ɿL qk1Ұ;7m`xGr"3\:{`k%{]L7lHO{}{L7Ko{{P!Ɣr>6Q\zڒI MwwrsuK`8r:.^276H$.ۀHL3/w5w'2Hk ngQbIԇm.κN7,U8I̜;vq̼zv*m!:NSu-D'!&O3u]oÆ1qH#ǕBG>hDu|"sw+^9މTtpjbu #F&or;U3nف<12Gxg%:/my@o{'3*T\ig!HcA֕Q!6=A.w{6q{{[kq($-m{ۭwwwoÊm #8CMmpmۆy7w'kj B d4szu|OqǹDz]rjij8>2[Upk8L ^d!1reԪ\!<@T6s9~!Ĕ)!a~f R;\{5FM4UXH22x6_U/vff孢(M3,w@nL=?Q?~- $)V{qq$}<ٰ#cy 0R;$${Ky"ښN1c{P.? na W+qfïs'Y'<;{P$.+` 4!t*yZ /Om4Ѯ 1֜-vJ>n9%rNVN.8aS;d:ܶșQטV wH[A<YA0Aϐ5|l!/~~w:^7^{m3]}w^Ty =6fu@A i>MJMpMX&h؉DŸ_HvwǜHJʟ ^KrئA?u\t<L-r\L0:8~"8k:*>EQ kU56@Ճ- dfmW֬Z&P*gW0]{wwQРr7 ' y}Vb!DnQ@\rqܗM[!k' 8 ˆYCsɓ&'pU=%^H^ 2o ;Qޖ9? ? "c`?zؼ$$0kLKe7&n07Ě!Q9rph,]WsUm=|oJ]%Ѳ϶28_;J>u#Pqʗ9Xp! :1IRB,J5 2FAZ"\HHҬ$P, ajC  "!JTn_D{٩[ʕ$XY%b؄TPYBDD #U)01D)b+"B* Vb$J TX !FD$Q#d`!r%@X* 0A,X0TP٘B 2Ie":ș\iR ٫!*"0 ȂDm d$̠ ȑͨV;K@b$PY cDX LU Lc01 H*>isWroaL1BL<''&M4a&J' {S.&lzFJN'Ş:[} Ggz/k+sA$Q$ (bF"Tz|e!Fc~JWt+!.@RP BA"Ca v H!sM'o7㈊HF#tSHKAPٲf T E!0" R  +lA'jdi1b"&d0'# 2R$+["F# %KIQjeDD`," NF տsRij"ԗP)l'+9xYoǸ<ê7kȔAܹFH1LCv%[E7=:p!ǰ8Xr<|E5#|}SFʟ@GF 8OR)znc5Z "(*u~9Ht2ZKd$*(bUbQt)XJi@"ϙ*coE+ 陙XX[mEV*UUUUUmp$B TH  tkD]u|/g!9^$I0$I4aDPDD@2w<ɐpG??oGWany$w$qBi?Ұ$-m(\78`*F'amb9gwLHI_~pHqN :fd;WPuI"FRY]>GN>DGQ>G#I&#,kn0SEAR t$ifMcgVqg uqfIhãE?qn`A'&\)TD$Z,!f 2cŔ(~YARɨ7\ , Ɂg]>CLYeN'<.L$j%m},+d;/T5i5/2h-& -c 4l1j\jyJBnF'\B@LEzT^iTTPvw'4FojxGǗ!֜lWݏrK U=Ve>>g]4BTa bG +3,MR(`P7ӎ m ٻ?'8!,q Ug ^]u!H;SâBQU6-ڪ>9A.,F)jl>X`V$n!@xARw?~2x1.o.6x4ٝekZd񻜿7^@agkz\W 8W3Z3?%?κ;XGWcõɳʭڸ?)Wι`tvffed[_g ssHvnabel)7@WCz(dJQ-'LƞY y2)kMX3d6Nn rv- a{RDi=})~{H`.M_~1QTE*g 5Ii&e%bڱeTQU#bTH1XF"" DbbIP(&Ѫ"bV8WL& ݲ}&XQ3ʁ@#!GП6_}eY;uz=~-8vRJ~(s 3.r;o<7QI0{)#Or;*e;RY7|_;  0AxxVc֫HȃܣaKD(T`~oXr|MDSU2^px_||̼)#͚K'fҟ#4\g]],׾$I$ )x+/|g)>񿿧 aVߔ]H["n+L=Lv\ݒ<'X! iyx)T4w8]k6,[o4H 72шr 0@v.H4犉Jˇ2b5ZPr e+Jwx[s&91ަ0엽ch y6z^ .cwӃ]YѧSٻ:+. /Ra?`AU ]825XEUUUUU\?Ҋ( (H 9u\WdFr&ۺqƴnf7ME&hN0:@WD2m $9I=*Oh ; #j'O~ex~p/YS-M@&YYyx:]n xp` m!.>NOK múByN'u6XޞJOb)8f ;P(g6w8~#O`Z! Lp=s0T/QDԫI_zw\GSKgn%$B2,㍣./\y}, @=uէir;I6&dbvir95@猃(`K a(@'~e\.lk :UYZeV}i-YQF6X7=_/g#4e,SQ70!^p6kc=4dSr'!Mf2zDL0(~X Z.w^nɳy4<޸{è^?huqq{켔3 ^+> }d͍ewc5%c1+z5\2X΋VCSEr"uQۿhiaya_}#>{1X nZĈ d`y~2"*`¢QpdB:㈈@U_If9Vᅦ@@!ּ !C0;B׀sS6pPnn8ARz R񣵓p>nc]Y6Vj /7YOe.}L9uUsw#9$#>D*SK62vj:?l(i%L11Hv(CNT4K@>Qb*"""0 "L{a)G?hO,oԊZ{],LjG+r7Gx54޴С noyՇ4fڲJ)z>xss7+]-rdx"y&gzmc=aG;@*\) $E$D`bKZKl:g^Ƨ=/L_|}7l&L\HIc|A7:AGK?Xa AN8LDqT4A$"d)爈X* b7UADb"eQ̢PvQ]dBp3og6=}I_BH((((((((((*B/'5^mt:uT eYq$*iJ1xUXQ'UUUDUUU[ɱGP*/Bvr/4'93HX~ d fJru<9Vvp_oO3+)>*&-EίbnZ{j<.X u[e@3'g0K@L׺`6uyة"zGG~wnP=45@ kE㚍, G !$]U/'Z˻'(@#hb|QVhI-~I-yr{Y̨G`o;ޅ#9j6j7rn՗:Y9cQg)Zmyxf 뉨@en2vxcpn_s`$үI&pM>j)9DTS~&^odR]^vNQT#u;wSK>tOaJA"iGCQ@;ΡJ l|>/j!>8DD/#~vEU=){p3jUxWW?㎃y "I"H`X, `X, `X, `X, `X`X+VEUUUUUUUUUUUUUUY$I$I$z/W:sɍz/?g+mׯo|<8u뾼UUUUUUUUUUUUUUUUdI$I$ܼG~g~}?}Wcr=k_;-=H>7՛@]g&*Iu1mlr{{Y9x2UJ&?rB QV<ݞ;2"" v@_$0EM^DUP]o=zo&rN[æi7m!4 D$Gw>%0ց$ HAh} N@h']y8_!v^z0^>M:V}.$lWRz\rmr:R˜<ӯI67I?b @!  OP%E]{_z=n=|!:o^]'Mw}wb`xqC,AlE } 8E =޽6*sX=A@NvY9Ax@nA_ ^પ-_&L \mUQ@ Bޫ)!ֺ= rqw۱ Kힴ-Bl]I粜]젺|:(%I[~-nvG9DcDyAtt@k06.A H-p@S3`B|sH+AʄI0>yT-_j?mK`ndkuX41Okwm ɼR4=?Rr\KJ7kh.ܷJ u$,-\!}L#& l Ƚs&?ŝjz4OAz>w78|?rg='*k!gDv@s4=& |!,g7޾s!|o冴eK1B@aCfۘ1OhmQMr_)e-%" |dxUU)WZ-CZdw:20}>J/jntRdl/RiBz:IoC'KkF FGDqYFHZ4>?h4S K`|.-lu~w*|OФEIPGm^QMa* dO("/LۮP?РslJB(*1U`HX<>FP>c@WM Zw~6X?6]Tg2VZm_ e!RBb*R*rkCCMSuϯR?ƪQeٟ"/9W)̹z_T`<OCyekr.Өj  21F#b1F#b1F#b1F#b1F#(b1d$"` EQ"DP$X*za"`Ȩ#1BV1Q V #DFŌcEeIJ-UJd ",,aa*Œ)""FI^<ˊ J~]q$$$5t"(v??j :OOA AQ >:DH*~DJa`n%4@|=E(_C\(@"U;DSv>΀= )tkFDE5E[ @@QMҊ߽Y6&L  Ǡԃ\R7jDK_Ӣ X2 :+Aa2I$f((\&t8=3+%)tG4zb7J0 J1Knaq,IAjƪ3sy{Q˝:_}ْ<&Q?\o'?<#ԙ,hůzeT579ݤg|V椽esN?B9;qŕQq7;lmfX.!8T"~>g:swaCn"iURH_^z ^ 7PcߖN1pnE>%mƍWIB)ikmd1f>dHF[Z9gټ.[Y@LL"x>9V ^i.av.({izqq@@ h?2 KZ *zH'Є @& w}{505ž8t5,o*z%YW@-wyy\s%ۆg ]g}FKIak~O"ӳ%kUKlQ@z-#hC9ջJM02|*{pc}:{%0J{1NZJAE$%{]/|Ev7?dC ~5;lu.'ߥEӇMRx}LB .Ys:^GgD P_';9A~77SE;|u@PJBAO?;W?k{_iZMNc1=␽e.晨 D0> \HT NN?2Y02{IFNi/0>a,@0í!ª߶ݯg9vjgCB?&1F*3W=?= {xr9cQ'Ty!5qvXݍb͆ۖf0Oz  @.3vR{ 4j:}0N-*6× x۷[:EA C}.a0CŨtF6( ΤñV@] Z;䀈`iƯF{|*kʦP;ϯ~ɾCz͂z_ r!$9uMksԴebj+}C!}=:Nj轤+ZPq~>tK Jv`A&`7 re7樂kwcWwQâUJq_ЧA,[D(bT)770}Vb2H8Q2@.&C 0Ā`ÆG' ωy3@A%!0#Km")튍A`-ZDpo2GZ8k+e1d838tևa2SqWH ndv ڇҤ:I.m2nUp8vHV 9Q w`3 *hϰrA0^)ĩL d&Bq)fH=&Xe9=𺽦@ZO7&ɒT">oz9>Gv4j;IB Ü)҅Lj嶽7~-Czs%SqwU~_UC  )϶y_Kh޿r3@Ո$KQR[IJ[-UQRbثj2 2H@[,[j*I`d[VIJDKPmBd #Ab!s{/{{^/@ Y27\:kl%$OE2~m=^c vcJp2s"UdtX5}x%AܴMB]$P-*:ދQĬc^[Y @2b A0& h"LH遑4g1wN߯z.ox?jZzn m%]CI` Xxs]|j;3 &ju,pY۾ -GOƑ=l1Mq1(iZf>!W sBjE"gR" f8Z* IHUSJ !s1[j2>W!,#{ϡ>뭧wsgqemŁ`x=4j>w2 E瞟0ǚCq6ox<_|gL@p8 "߂/a̳noUwkߏͦQz#T&Ug<.Y_GCZ>5@_++ rԴ}#ԸlsdY虾s?̧V8߄w3WAvR\efGsc3[11m]|N0<\|46 b08@.{Y\I`:6ޞݾ+}OMHĠX,+\HEH1!-HZBb;6R+a}~?ځj^Z0$(O7FI!;zIJ71wW?$ҜxW8BG#q Ӑ-)[w٨V,]iO 9?%a!_.ԩ'!G9x*J}?` R/(o/V']8N{V!3˖L>i{O 0m}nbG+g:|}Lg̟h䏖xsjg t:';=Dh`y6pw=H:PC7}f6q5ƦՃfc7x1FA5aqgg3[2Chb@^/ދߥa7Lc!kHx{1f2~628;јnqgaUq@Ņx^/0,*x1c1bxsÇ ƀ8(3n8V83ݎ@g8#$=pV^Wc9|m_hw>}>O\}WwS^1h$7Dmsk E08(90>G[|/3;_dp#ύ=SOSԅG:ڽ A9#|7pL*G@rG玈GLs&9FMnQӌ|~||;]O;x\n[j}cc>ۼ.x_5{}^ygr$`@@92"nBxAoKKUt7K?;_}lyңò_#0t?>P!r= -+ݣYmU&]?+#:%hKYESӸ8ԅ P0`9ȶomp864*xi_` /:Fajs:/z?BB_I$64i4}avV5[oFY}/]ԫ([N|I_?t+઱hQCN㜗IcgI>l4# AZOA Dbp0F6ENJ " T$@C1R. 0Z!HB0XE 6fTŐE, `POW__u֥J(_<|m|x(ih@r0A<7;;wQDߓ=2}^79>H|U#D"4Q?H3>k#rSOu'ݳk'6!uZ$r<_GW3 rlZB2HB `E*njއQW #RI ;ŃTuâ. }GS{Wa Au3^z HJO;TJ]i!沜Sxܒ$_wII*+S"?4Cqw^ׁ}wuGibM4 >W:>}vCNJ)OQ&K^Hf^ƴ8xBRG4( (PdF6V" K~=}6O,mVI7@ , e䷊2_z[#MXit7AŐLI 7?hiRAbV !ND4q5yD2-vfr3T=GΊ9g|X݋pN9"sOa3_]í}^Ϣ9M~~_]_Tk?|-hC5 럛A$ѹժ6c$OB%AYQ"Ad"R2P)`JH(MR!" d#CWF< ^d YqqyUZf=ǂk49\Pk 6 !Bw Q8Ì((Ie'{});N`۬u Y}^#Ff k&>_{O)1TafVF;dUY,*z(劚NĀ _DCyj*&x{U)RBbI"ʔ*K&G8K R`(zj=*QNg0, Qmp;oפ^E;=j 4SA\8s=% 7A0N|ݸZh8c~QQ;/;¸:O 8.哴<_CQM4ʚeD顝/Ip  o ~? 48wQzmSVJ3@ %a`#MdDYژdf~Ѝ dIUT(4C b BB1Bѐ7(Qcf1dlc|ΙC(X_K Qy,pPB)RFI5  X#Ia(@It VaM UJ,eS-4 Hɑ$|[$nO~&$e>eYVUN\H\6IP^ft18Huj~ ٫Dk5;7LخK *0-W,sGQastX9u/yՓqM ? @rubow:m{WnS:ǵ:gj *" ,ƾM|NL x^ND4L ,X輟;,N̘ 1*a~iryd6p'ɥWj2# sERH9͵Py˙Ɣ@(C2.~!$:6C#rHTQIdžDt}_CHl?}?VIf0ǡ:3&a߫hُnm#0(CnpP|dUNآv R R~ &3oN'7Z0UODSI`_"` A Gb0Ւ7d44o+ܕbު hKLVy1O~y/Gpk)*n| Ck='W Ǯ#r!w (9x PUQ[{&}.WC)*ŌLʺwx4Kv/ L>VO~W/ F :{4qzkǗ#nW'Fbo:\0:m6m΢qfZMYy5u̝M`# Ko a&xoo˗^Ct˭dlB-iatM% @ e432䣒s00a0m9D3ϘPdT45LG{7Vx)"XB{v#g5s߿ slpNN1'.'C$7 Ɲ^3S4P$G(8GD¬ub}Fa-]ד=|;5ne)qR֙%o.42 4Ss:hhe5iTag.IכrnYcԘ4SN9I » 8@C;xot7V BFr;(ᔇ!ՆrM6%m .ScELFz2F.  M#S)0gbt98omS \&tW6pZJ`4lFMM!#x105LM8X"4(,9`鳁)+WG^R*P4"A-št28 4NnUt) uk[$7GFSD9fSbOsNAuҘS5K&Z^;sv#$Nx7* 1ACt@7SqD6M7ok.雥_d#<7,EGдH"B| 8Ϳ]hlˍXՀaZQS! Vo'{o=mxѡ>'cɇzK6\n !|HSp0Gq>P!7=U{uZULJmͶU&+uФ:CМb2@Fq9"@y\Xh 3em<@4@nm?laphqI弈vٔJTKI W%TseSީJ(hZ(h2,Sj#Vx_ ?_^fktRsO^dbg'fx~ӊ[NL\ lM< a;։ wSQ ~66ׅ62$[6])z}39~U O}whh ߡ`B97;xH;%\Պp:!H$q`L8y>>VƑSMҥ>#h;؎zU)jZ%XIb*-"RU[,|FSꔑ 0xBkRI_6gK2:?qnVN 2W4wN-?8k«#-OkD98p&4.E9dld Xni9GL5Ut^ ;:h'[v1q 5ju8< F dO hۯ-r:&, mhMj4&a6ڑ}Zmq$#{ʣ,{;΍]Ӹ')<,^Y;S_bDhnCHDa8Y$}ANJ=$`GH E"URʰ*,J*EY%*R)(EJĕj%%/fH+(0`^;:udu⋧ O!$9sqJ5c !Ȃ؏_c> ڙXz=)BHI8QZ'8سE4DFRjSަX''ԋ-KbJXAFABX 0؀QSKI;nJHKdeUOF-(,*1aba$c D bȑI8B$FRl"%&lfR% @Mfб- (b8 /!0 6@h<&(A+"F: e`B%*bےLJ@Lyn׈<)j=<XΆ81>n^vG`v;zV\Pti%S00 ~RLO{f_ Բ"JY"UURժ=Tj,Z$$15#2bFHI_&R1.DVk0C @3fVPe1U1K 7fC-FHHh$!C0а+$ ;t9Ob{b<ċ#taKҢ#R|$'! )"ŀ, h@ [$JZ;Fd>#)Gc;1 V b`a QSGI-EEy`jyS'`)zر|SP׎fFjiJX8iF(sLѲV1qSsRsy|lPM[ΞamaCC|˲јɿֵam:* i!2 X<8D"a!uXTIRZQQFg : Bm"KdBXK$ J)"*T)@-j2AE8P ELXZD(ԊE::B"*Iaep[(K.#pD40z'Dy4$L'S6}noY:qQdJ@wL@u̧,);P#{uCS wu_(qzy7>Z~@E_*i2)i.x=3_(x!E% 2@PZc k_w~!Dq&f$7KLT-KbaiJ57. kNqq1C=wꆄWL!pv'Lc-VhAQ@ /Ԟ]LV0 [5jCa qIDePذWy H9@'-GtCマW:$oomk[{9pK.$!t.!Ef4nD8APi[18+~Y:߼ x lfIU>ܔ?0p?3,N٫=n tC(2EMW3}U_E!HOB [QHZ*1лix, $6vB H{*jHISdzt'8G ~M@#Gt- _+59?scԒ r@4PKw#}8dL;<bIx0Q㳬- Awc[^Md<{~ my>_b,\$`*_3=W~Zϡ^`$%e}Q{-OYCPD[ Ag>1ݹ?=gxxo*7 OgU+1\n=2܇HRrz/wHQiي;Y,e^ ) I& Yg@}$4~iQ=9.z3/{Z2c7S/BH'Ń0ai pJZIRFo7=ì9i|ݬC?]~7uAX{\0BH>2 2I$mmmRI$I$I$I$I$I$m[Kim-[Kim-[mmmmim-mmm+$$WTb,P,XHX(,QEQEXbŊ((ŋ,QE,XXbXbŊAbAEQE*Z[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim im--[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim-[Kim--[Kim-y !! 8C5 ht&Sx~Ze,oI7N j@;xM Z (446 ʃŨXb2*0A RbI7\#1!DU(ge5P`),@Fր żW!$<&mI4O޿bUnN7R_W#K֔7k8@qIdžmPmMEfL;̙h#ؙ Rpмw)2ɓ bm5xuA&XLڵ Y62T䛘SO2a if$4(DQY6dmkޑ,^Ȉ;T0%HQM ,\?NbRDD,TEbY,Q*]9= }y Q2|$:'C2p B`Pԩ TV  AF&|JEscpy$i5jE * UARY-[dnrxsbQX2{rx$@:j$ &`+ =P4vER*hXR:\G .V.P6Hv=+[J@jQnPq\JtMy[$У?GUⷞ~^;|}brl֩O=oY7{W miC:ce;ge "HTU Fb D B Gt/r'r2yy4N97iTPު(zbP;KEIUHR vHS1DX"e !rI%&Qy:3!dq,0%h)Z" ,w6er4$F,D2*I6AB [ӦdځB+̨j&AֲcCj#$;͟VS_y1*FSSXvHf R*ـg;sCb, #I*yq>^'E.pǩǒfc:e}2_?6\<'V+nLc3!n"ft \дApUQ0w>r\ԩ`h`b#/֥pRVu&8!@lcIB(3s>" THшvT!TɄZRɊL!bBAje)b0) J4BµbR D3 "f$P)lP*%`FI  C.R 6.lR4YV (cJn OlذIJRGh^HB+-A%X`5RPswd│k/X6o%~{Ֆ~{C=G=Ys:+=Y(}ϞM?{ЖWmٻ wv nUOY1ެ+N{n|[(w|7OdF^vf1^v(Uί&j2^[!{嗿4=ݙ.[]҆fv3$lKRݸ&L^3bZgz13%ܻ5r#,̻H>*L,̙BHxͽY3<>{$ϓbɐD$Nެ̙^3373&@Y$,k3:d,k3:dm͒95O$@ilM805&QRcdl'bY7kdx%.6$q)&6KI1\m< IiRLlOcdx$ĉ%E +j媸[jUKUVڪJLUUUUUUUUUUUUUUUUUUU! ZUUUUUUUUUV ᙊ?m A޿~'21XY>2 ֧G=W <)?ywKܤXEMJEP: J o,3"L6Rs`(I L Q:؄I#&&ad'qPHc I(-TNzᑘv%c)$҃ \e,.E 1X#*sVldfH#VZ,0]ĈPTE4qT4b)SC4U*&&'BT@퐚EXGm2c|~Iwjn"$r== Of1PaJp :\QQADE VDF9D5Qa؎l}$%,B)JAbJ$'T~-B@jf D|d3-TؠiO(ɤ(u(INbɺ# ܧ1XM',mH"KPN 05 GݣDᨓLn.Usǒ!3dc$ /R5qKE V ҸP&NiH0i"ՄUOYfG$5Ș W20 07>֬ >*amlIG"j=dX"Y%Y {DP"FP*@5"A*h<ݠ]o- EJ5Y'Gj47jYFn "*mI5D  c",XQGB6O'.u7.K~!佰~οr:2o_Ae;v'?LǟoW"!ݼt@FGt8! ^bD1Q@2{/K@wA _L'x6L=~ի*eԁ=dxi~O˅|a&nۡ L#}Q{BS)E_  jO}0c!(loS*8Sn:i )bdv%b)xR)9(IՄ*:{MGT_c׸O0-!R;c_# pǵ @DBH $nwuߕ|}&Tszi?-qz-w멕q\fq[MD훤/J.1;86'jMuHRHq>722Ɇ5DDxBC0ˣ]Xۓ5:K6ۨOQ1m6Z4. $ آD!BB20(/nI1w5!K=Uu.TiWq/" `R{)?lĵӹﻙk'7c9~AP " ݥX,R A 5jRIQ,H,$Z[@FH `(" YRPX UJJT,U*QT,`s0c@qRőa!p +I$m))(#4ЃE[Ra)G- aEm!2`B8L!E"JjIa` bH)J#RDBIԨR 5*,ʉU)R)j *) H X_`iEQ% '3 cXȄO>d ԠT؀;UK*DoDE~T?ѣUU qOːj$, D ːU#C񿷣)^c|~t?wYHm8hhIpVxi X\z>_;x$$B)!1+21"ʕQC !FH$dDH4tuȿX[l NHh"!1dX#C*cDHF0'8KX $J #3Ȳ65h`*'A ʔX" 5JѥX8@P=Ut*ОpUz Fd JnQ  ]!疡EÌ_g$P8*{k hlx)$yHY$)d$P6e @!΂v޴D(őFEbAK,YJ^hdHK**IGm?ӦdR"*Ag*%Kb-Z˪bn;q  ۃMڊ+Ak \J H.@ɘeRT)j\!3VBI.*t`b$(hZs=Py Pm=X7*d`$0 '!ȟ0I-m+zYp|?}n*Ƃf6oּm]xH@`'J%Z!Eyoo!\:oncb'x?]ͱC(;&6ȮW.ü8KB#ng}~-=AajC%eD4q4 .1C\N;4"63(cW漣nMal"mkh[%XԘH$J% PUR0Ω4e9*g[? 01 .T W&n:ui,vGSU' WRSD)"nM؎l"LY&9aD.Zm!5̔IRd5To*hUXYshctJHfmVL`LͶNSL*3&#ZHLLJ1%YX}hS R"2 /1ђb%;Thg6CD~ tsdwZnGLt3s+b!Fs)Jr:dl(e(Rc*#SD5n, $t^ӥ 6,f(hf' $ #$ \8wIyL"$*%%U U R%AT%HbDv;SHH GAsŠHH K"Ԋ  ޗ p6V)չkN>/#WSmI6GzѥH痽89k`͋ʄƩRh!R5e;Dq |W4};a? ߁_݀d]{)fhޤ]%INxּRU6Ki&@!B(0i`D"y!fwErCIU]t=]˃o!Uހ贊=y19BgI!AAXػԍ|Cz¦_)HmO=>F&Ye*zI1';xw;\A(ӌ10$KQ*Uk"hqqrzlAJ"^h^%ROncZ#UiCw #ݴ~c, S`|c>}i{ץ11&DSB RHX] m{9̩2I΁̌#ˑ†jheR{7i=d{ۏgY?7~2+9! | Ys>,9ovӏlk]o~Nq4?xNA5N0F5cPIpd%1: ]@3B ffeT&||١yGgoW]qg"?ʐUUT@"(+""(UKTY)"K"b" '$@iATET $TA*X* V!` ` "*"**  iVKid$0 e0lDFP:@"6|~b$jR$ vVQa64"D|]?6 h*w3 s̃b7FumTmzIzOũ-Ye4Gū1Ŏ~s׸grBsXޅp aiɈ`Sᚊsވޡzxw3Z3*!9N(Pi'*|Ο@5@~ú2lEOy!A8PPf5DE4`dn~S2Fȁ"/?9bj[iTF""UPn='!G[2>U=S89BHCL wUC !NI:n[s6 շzA;X~~̰=[5oPB1u58a.aΔ */z!˛~c]ysĐt©$I@kB0")(-bؓ!BPm*J#ĵ bBϿj$UP?`gG.r>h(H$"7_^üpG8^{*u*(qh=&QXTbk;)H Dn8Ȃ26_Qj2PmDpQ`k&HIJ#IE1`ܕI eߝTF$w`JJE-JY%JeR^'%@2 낆G4<}A_Vs9Xcȧc7yʎjķA֣I#~|MEM6r]i{,Ĭ$+ ?^:XVJ,x 1`Pj*0 Elnj3uwDXIMb($.+^aBB@ԡh7MFl"b)LT HcBce/ bN`^G0P<Uac@D8/G+8G[! ww?xWJ^rdөB>ŲW?L1wZӵڋOVcA@YhoVіLBKgfKf\]\\h._+8n9acԵ!E,NUQEWVZH-LE4+v!J4.0ל,x MlHSSmף"zaPG+xbF4O ^+Z56]>6Vh~}G ง‘;/{FYl-}f(?20zzHI$f۔rbDI%92dɑ"@$BX]os{ޢ{!vj0"@&!z_-x]IYdoӨW83߱λv'9t8 A{Q셣1>a;A)ȻZ~*M9:uͬ2Dglz>paȅN@ H](# M;ATGnRGTҎRy7L 8`MBx @ q:o#a>p[V%BpB2B׿n 0@b֯L Hz. R}0u|'vgIjΟ!2El$H$H"D$Wc!e^{p`S?gMW]P{}D/{|Uں9ޯok>QN83ڬ #  PE0C7 @ yw&F(3>@Z)nc~٦t~ 9 (r@ `'Ogv惚]n8E( 0]Vj3wNW(X10 ƥ# - 3O .nޜ RGiF;c~Mg4wcqgQ=?SL܀``I$H"bI=$*68X3(' (>B`,AU4e `&hti$~G[i;,&{Fk&D͗?dFmҋ$+ Jz@8OUzoVwwLdG#פ.bø(.6J\wR/9AP,,,,,,,,,b!_uˤ)P-ܘH"zwVHj@ȡR/V?`| hZN/~ Ն|j^o:*R>ִ8J*TR.w>xkzw\i_<$֠TwR \-z!*!['L,L@`jA,PChT{I/8II~3,ߖO: ܠ? 'V;۰tPYRكᢩu1^Z\xoݿ|! Ԧ$ܲC/s* UӗgB (PKEdkoWC|N= Y yvCpfu P8@A𘺀TC5M>N`/69}0S~Kg~߃c{ŋ}ߥx 0-ѶL`k̲u[:,s.}ᄀ2p-@yT|dqq @ܔg~\B-19賂L]X.bݒXBl0 W:90` @߀yl3 ٿ;ݡEt;7o;,SdqW4OX3#q6.=}h9v4u)n/9r7q}%.lhxW WX>4JZh%eRH"c;%3&/Zm!-0Zv }ULhhAw77.76`v oWgbܮD79o&[$b­3Q{:Kx >onO|Rx* :>g3o*+}Jy(`,t}em&^e?y(xJ*TR3靖ݿ,{<JE Yy95)7 B05}N9q I]|-6u0f`"իdۃWOgC^Fu\{9_RQ/lϯ{W8R|چ @KX>K^\7-f1Kd=8JnbD/?3+NNb 0L>GCr\|X~Z4Ŀo=5Wocʖ97?)Fbߚo!hwH}#byA 2,b *J*T:6T\r :X C`% JD>uT6_hKF k*neM 4{XߧhB ׃i/~Z;7zi s<>< 9/(PB -E2ՔsbDDw, ^s0uW%"| Eτ[6OS]W|2Pk;L㟏B]!s>Ғ?c㏧'M 퓀ݵ6STK0BNy1}+;__ >Y$ cCQĉ$HP7gPޜmX< FaLA7Be=7^T` ` <@@*\~lȴ%βaQpu< ^UWƩ>@O'C8K3[B~/ł4ث:|kb3`,c@pfמF3dcnyqt^U7] ?qp+ p06ymK~YPoCzP 808$A):ޯR'+}Kϫ'F-+|\ys-Y-GM;_c!͝Yğ"\C7?x+M2 6>VrZSg SiFB (Qٍ%>τFdvrN}@?UxK!EqU}sUM;)kIC0yt)Z}6[ PzSOS3hlo]B`ɛdAI28>^'\XNr>Z PqǎG)yM$=g;N%:| h7 %mb@]>PINC S}s]k Ȧ洮~YUڍ7{^='W%r֍NR#2`8P\ N~έT#gUX8ǫ `A 0(Ft90؏7~G1+%K42 (ȯΏ%^Vo[i%Ob!r˻EǦν, l~Mu_vz-񅙳5M j?8ҺY7D|nѨDCUAA aɫh-ыZSXhCa@[: PUG >ƕrbI>L[j~gϩVM38}\A]%=Dȁ=+?=|ZlW֔bPU.l# E3+c5m`Q\=zjC~1#oFwILj3L? xxYkQC2<Űi@A0Sml"D?StR._{ǜc|߿A#o}u~ W=&0r&Ʉ(CL=Rq<7N.lͶV9qE![Gu[29%doZޡ⩺T썵rnv׈RU#W<|ogoO#_[uts 8CIr뤟_0+zVNx!7 `p2to w4nU6x|uoCbD-Kj~D7sS>9,GD"{kA5yr.gf 9nT$Xb (PFZcec>MliU@&xVG@Ѓp3\L߽ WC;=[p9շs} q4s@~ ݗ?_*QGQ Mp,rUAvEL_^׍m=[Vތ0 k\^ЅV.kC!&uG YmZo;*Ũ^~z7Œrn s֗$H#fYV3~O*7%$l&oN| }" K֮Wi$x~)UBPQDIt|o;7m4篾x o'G]A}S$NOt#q-Dmk!LFэqIz1=ؙ3C8V]y9_ _dw)prtռvO|l5K*Mϳd8TeqCK>A:5I+ԑXBO5j6Z{e{ 0($GG(Q5Iz^sx)K+XRX=M{K~x= ʴB8'8ud1Z€Ix=˰ (8C^&fq@zI-qʖ1S!eao#c~R~="D6v鴷%oMN [c5d5sQ')I'w  q6@ZoCMӧݧ$]܋{^l +E2[xؾmS;mAPek봛AGO*k@әaGzvUJlN.D!.@櫽uDz^7rʁYOoacD(il%PU Ih?.dlbekR'_oߵ劅pu^gkL ZZU v:"<&ڸ8OR`W" Hw^^w/IgdKC4@bEݚ~PG۲$H#vø( ܴUlH>̂3=p@z`tj@A.L)X"'3P#.| /SBSm?i= o/Gpf.>ʾtݗ\ >uv~*K Cn&0O|K{nsCPC lg3$eFlƃ(F~b , 4wIO/[z.mE7pdQ\Djr\ 9jd& gvUIoԫʺ,tț8nʌv}XyNxW(+ b+gV`  VI2ַ/AƳ=m۸5xzvտ?KRh` k ][ tp=Tq od} Ŷҹ54s!.#yr&|ox r j<$\Zxتc n;6MU6_Au5鐲0BB3AA`VhpLnoci[̷ķN^Y .$B81 C9kXumKâǫ:K.횑{Xmwn_4ڬs+.W솷Ҽeنj]Y[~M325RPGd4<i 0Rs\[m+GJ1G'|?HhzmQcN:v3tj(q]?`R>yWJdktn=΂] üev{NcѪcT.F C)Æ #ve ;B"iG(  k M1Prlt01&AZ8 v]x2".} RGZaͯYU3}`ԇs>I wD& ͮ|eAM y}X@0qS# ̒[\Mr C .i:d7|*8`6 /ן+T̻>C{2ɉD0lJcjAjIpqjw ]B@ڟb%+֊yCא;F~O.DNu!}fXX$,@4( ۭ07{;8Z6H`h[Y(H=&옋e(`Jfi}.B<N O j8 `R[aLFnsemkuzAbNzf}K;--ddCIsڻ 2h6c<k0nI19pX7?;Qů2+SE [f&ü 0r0ߍ3=Uo^18`eqSz=k"뺟Z ETfE]BŁ֑|,-}>/Q3Z[oPA>!d{lэɪ8u`l<>}X&]`uFG~`Dm)EO'^B56F ӡDY5?+5D!3oI;*<mÚo9+l&6 C?e 7?!{~mwSIF4;@nbAֹFy{K&x\sƸ0W7 Cv~gzzG5hsg?cvqU{_ rc{/^@&IDū| ȠHvo룪[]"˧Ml"aaL# 0 "0 }R:x*D<%ϥ2?'l B .4CՄP*!`pa! B{[~oA~%p~#zQ`ܐ a@mQL6 nfwNCeG/0 TdOzq9Ey o{R̫v{.˲={fUT/ݿ~ԫ=P4gxݱߗ:6&`_.'nˤ ,1|g \ F+ _jO pm$`,TA=azUj üwXXԮFr@ͷ^eۚ؀BF2WFb۞+ns,^W'62R]+M69m_}gU.uV/<>< ΕC{O kʌZf}Bv06p[mT}8R-a MhְvNha>b#?Wj$&.MKagr0 (PBR`+-.e#~16c漃aD'Y9IR(mJA@TT`*(0އ#9>~M*GẾF:*a8a)X5x4_T{@ Q5IS@`G ]yOKUn:jJj^%X6 ]WIuRof&TYW1iXS^Z4JĶNg9%u耬򸘾i,'z  ?A:T_W b@`|-UG 8p+=!e6t Q R ?>ЈG Ѥ H;U"]~Eb\vAa*h~/拝(UשgwlnBt)8龼GRFH-gw~Sx>vFhMM>Nb:hrL4Nw'%鍓gr0/ @a 12F ,TN4,-=3M}dt}}WFA7{稩ٴ *ו̞, }[;; RJ*TTm cH(K1Dsnw}cBI&%tQx_C%%AP*1tig:o @>]|20z] fyWH&Z,Ĥ=Df_@{4wU h,dksEwfm1e|8iih}Br^FtF$ ,Y qz/^7mJ(-գ)v< ` .pߜR(Y <N_d 0.\+v8\P& Klyfm~Y`2 qj$-wM}^S﷾\\ɮ9MڳJO2dɒi >m@0A@+dA&BqNY:!)w(um$}R[yG`nѝj]OuۇzP,;)}Y=?3b+]76 ]yоh;8椀/G}-Ѵ`ّ{aA< =` yISWy?*Hk CfŸ1 0MN,RĀqnFCCI"~GMRUϙ7SՉ?AseT7mӂ:w:fuߥS###############.f㒱]զ(B'+δTg]I2m_}=c`i2-I ?kZ{?G=V==4`mo<#, vH5(ᅀ4}tup)%zo,B wڙΑ^]B+nT744kO{>OJ 0'%J*TRd7 8w-K^)P_n8\bd z=" As[H2R evz_8J ے^JM9(33 7θ2fn߅vF̂}}b`&DU 5h>ZozOQ~ z֛=cj_W 8P0>k ȆYC@D:LHX!Xb}B~;=0nM`jv!5wͭG( 1GG8+03ϗ_c$S㷟>CaqVfaJrC˹"!:&_.`!%YHBOmfв ?^kn}hx7"@G WGYPw]U8Fs9몺nssG[OyߍF,XBuX{U<Ibɟ#aAxfyEAPBV&CZH7X;o-qQ}D2obkO'p$`*2JyLmoC}bs>z%GOb!iғԊe $s՗4R !S̵>cr+==J4 4rC<=~g)1VTJK2`v7:r> uuV9 D_9IGWMU$AHI-s~ߝ ;/P[XYkNm;J#2u,ht~*VoIm·ypLm Y\/ /wXCMfcڸ^=Ayp;~ d5zVzmSP^r=.$ $߿ٙe!MpG)4)f,w㖨2s<+Aq 0$$/j"F:0A[|Y ѭ@n0Fc%TmXu$|CPʾ`< P X4%  ,b(f4(f| 9*?AԘR&KA$/fu8{h7crOMYŕy@|xmk#65?u[Zodcne&-Cl,4h xC O PH:I^K+]r֑W8k%cS~~~W}ΉhoINW}BGaQ%qF@+2rWT gJ7_1H! Rwᰵ9eM֎#8CrgΓEu)NfR2J=dzL:VNiGsBuє8^b1yyP |OG 8?*2N~bf :OZwzh -N.' J`D>4s`& 7 #St "һꐻ(mKV_7O ;V'y3s5QpD- iú!w4[!Ef,Ur 1@ R`ȩp;@K'KÕUB{t-L4/tIh\SL]d9_A )CyQ7[{hمWo&7Yq%}yLh6y81-x}IÏqA%/zw_W_ًmuxU(}%xMRXiXj⌻ߑGR5/i*f h7]y,R˕hP F CkbO h5VbO'6ny*Nf*~[0wt=_ Y`H4`y'AhOeoCI1A;ﯬT5/#/Q%>>c) M=A1uTm+ ?vVfs>S$g1yj7Mx[[Gmc=V6sgFUǢa{xwv(m3_1-6Vj#4x>Ճ K4z2 QGyS0ՏNJFXlWVґO|F'ex }Q%wrKEP |ݼNJTf~AokmJ@7mrȖ/\/鿉ЯO|SG 9.9odHg1 _~W;?vx~+kNta>LN"33{C}{x5;$a s+}rST)$Sܽe=ؐLq{qtq 3 L0(?"&``(0^sy>I0ޘπ\RÄ /f`BTZ ڻ( 0>1`c@o?^,+q>W}H[pN`Awi -Y]=8v6ZXm@4  0ÉyTF( _^9>" TuDIkٶ ζ^vLn ]-J\$Aul_~`}&:n[G:;Hԃ9pN"]Ck(Y(BhR9w囔12 ۆ_g:5yRq3t[t6ny:zd=n5RߟںY_򩔆k^-Ava=J+B> (wmƳBv26704X7eND wr@=Ԅw? ~hx^bvuIHpOU؜PeqSM .NMݘ$pXie, !۪4d%](T$ۣx}2SiJx%ͼtT`W̷\}Tw^ʆLYW#·gz9fS[TNU 7kpx\^2xڭ*w%絼  6il7ڲճ{PK5t 0&n  EA,s갰uy\nDZߊ|ݼ`c[LvO&øNawZi3m#>;x'l#|‰7dpCC᳼}:#OmOY_1轟&sQlV-HTW7iV.E=ٞZ #4"TD cU' -vfM<n&wq=Ӥ}eL?KY*jݞ4R"̌o}VNIjγF Mʑ90S"̉eEw bO9t82G*!ƲHs4ڿ_غRbps29]:9! !L0C87'5d.z/q!`P)} yd}OߺdV?76ش \[N2)N`{zĀ&) Ayk;~Z uVS `V./^#=re& }d_g@06oƙ:@08@0{7u8+A٧Ŀ~KuOQ}6}_0߿H9'/)́Ծq;nfm.w?叏'O(:hr9K,tO-v^ǽiW*7*H6U}c`D}#}|!@r8@~y*@0+Z$ Ⴞ7ߩfpt'Iɔt$S`% Nnֻm%>ᇥqÈ]/wǼc畒={ye(loq"1TTfmpeT?o_`-9{waO'2@I~ϋaŽqwB:ha0i3Pr[ζOgX&y(ߥJoR_5 '%ZksJY0BQJJ#_m7(MW1sMzYt`g}N_z ^c_|%^ߚ"TprE;z{seWsPvCWm>J@E!_u[lb;.[חƮ_︹.~ݝ7hc{uhj 4VoM8սG5\U ?gjW=en0*d2m}Yvi45]oܼ?>f򟍠[u>*=M˿WK()s7uoWS̼εdbKXq;>FVK}=/_c-~Y:c.0G;Υk$?DWGke(*ƅ?WIm\oCm{Ia34c&h6@g.nߺ?$lE|*/h}Fu/iHn[o޳wA(DA L ""Dd(b(H+0IDH"$D?eD"05i"$D%F"#"DHQb1()b$DH"$D#(b?`\ZDH)%?5&(J$J"J!TDHআ#DS4"2#4`DH"$DDD`դJldQAJaFa!㿳w?xfoGz*X&BGnM 6(k-Oɴb/ v{F?Ck[a( HJ"""$DDUJU*JU*P iވe${=(%{񺆆[F7e㪚T Vp 2TRUUUUJU"!iD"DH|j7XkM`XMroy4vZuBQcT֚o;-XΥ~ɹn74U4U4U4WU9i~ tOԎs]r!H?B? O=yđ>k А협bt_}Hg:/`G#}|Y9T/0#~W}D{?Nx ,ra@/B7M`XM F!a.|oS2r1 fX+dQXJHWiloz/,s}*oLfmݟzQ ,8{LVԊwzq˚4]]}TModGTP=/x@uz{2$i,.V9Sʹ(O' ]y_L`ʫխ`@#ȀǀoTAiT׆xRGJΌ^g}ڭR] ;8''Kԡ_[IFy N/#o%c{Kg%Cf.w[W'{r/z|U Ub<8l#Y__!A7uilNN0_?RX$Bt0 tήE#,OFU2 ﷱ_[,eҫfT8,f܊n+;;NWv6y ޽ډ2J/108j=ޞ~R7hؿCg9Jv^mF8f&PV_m]ҭw8ԥ\xe Ɔx|eO.@;nw2FotjvG'1/|\</NCk &چ"[KtiF-0OW%=q<"5I4 b\)8*wU,ԉЌfa3sVA6V\"?`pj6tP XɒmW ?X'V LC6zaN7+jjk9PTdȩ-zs^haEkb`eƹa9_{7/S5F&$u0߸fMK2;RS>6DE  9Qז?gS1;GS ˈ&.mbygO^jƏ"Z \+ )Z*c^\rL=E)Z*LJ$& b@fzuTV{ i.T&/06{=7D;F5CcLj1ӪƸ%8&щ\O5u6,)떮`ݺvޖ{]X}{C6%K?+&'joBFrα|9>Us}s8vYT]|ߙq~@w=۽fZ~'j"_Pr?Q#TO>V-)7?ʕHG>_@F4[88P>~B J AF&]|ԝ,'MJﺸ}lqZLCh.|I-Bٿ9m0C(0Xv׹MJ ׯ)p{e4vjܦ;#$^osܚ[xaJ'IewjSlAr\&ѵ3-ND,Q7{-@ ~/ tUUlZL{.^hPT"*!ȩEr8;g?bQ#dݯNip씎T߽X 3==f*4! 㻵>i?ePq)j)_6HN[`ɱTiW5S|eB}u0.5L_^]«Zyvf*~$x 8T2ڷ1[i7ԤǿDk_KӞ`*mCtzo0#;zO{ <&pZ?;{zROA^k3JNR ";(5g3I=T88"H,N/) : 2Ȁ`~,Eo+EZ`fs24 @p; P Ek1 4|.FDFz|Ci|T> (oOj`9x6EV7 `bTyJ/RoԞ76'κ0D%Lޓw̲t9 .};=#htA \3xJJ{ʃ]( WǺ68-Ḽ^I 9eUvs\)c=d§ Og(aOpmoF?߱sn/ljsSpl4]y/8&rl~mտqF姗QĘ3?dk[ 5v\?O1:˳gK6!$W }rwdH-wnUnc#EY-d%(b ~9cJ?iKB=јsSHnt Ih%>20G]ڨe;M ;HCP44suT' @\/=./#;CO ;9G]ﭤg}_|n!99ΓpERW_ASs˚xozzJ_EٱZ4߲%F٭O9/oGYJ+׬=a0[|86uݝWڵgA6ay>^} 6|{`:{Fi/wu5f<Ƴ6o>Ci}}4I{ֺU:4rXFwz>8 1S|CeF>(UڼoQ^^;ݾl}gsk5QUk;6[W"}.szZ9OZҳlvt"%<{tױVSX9׷ooFAW/'25Sk3޾wWz{_C=}wv}=ׯk=UE%emm@U:\jzI$*AuhP=_o= +H hrd`zG TPVlmBP@5x 0dico]Z4ZƅdA=et)"|||4dLW&!@JV40 @`w U%P nڃ@P%(|@* Fv3ajvURN\TCʟcs҅h>mvW}f sk k_a{WM޷LGadR.ٟS>dm|2n 112 M37I餙IgjiiԘA?Rm#@5DhLM&hDmOIzI=F=Gz@z=M4hJm( D&&LMHdOM"ij1i&dzF4 C@4@)$&FSLS?2M=<6zlLԏS FL`aɈbLbiLI iC@L#hd=bL&iOѓ`De=5"(Rzi5̲^mx[seifjfg[QlZ155ާSkZ+zŵ_b[x᠒@ <[KWR_ʎ?q{ȩ*KQDcEG̡&r`= 4"6'=WDa%k2VI.qXK<h>|ۿ@CٽmR!;|N֞jkqg>>wWyy9dQڞRn3_=9Gd "ڛa 쌧K;x.0qIS5C\+Tj -lM" .0F5O$=A (" 7<(N^[΢yG*}QH2;?˕DjtQcRQ8f689{X!PnEe/LQ?U{kƩCv.S>nM5Ouy%YrU%͏r9-xeYwTj ˉLqARlDUݼZ.Cͺ̽!_HFPeR^ X,ΙD2 #T1l''geUvpgjJ5jɴq!U(>YTKԄ!!Q5֢Li.}ZKX[M4 ꄱ9*UW5ᦧyPVr<2pWC ˸%4v'l9rԈ:>Ƀ"[XɋY2Kh^7C)ͣg Cz]r%Ԅ3W8/ OfMP2(NwE]S}mіiU{8D+K<6:0٩abN:U{PH%__CRU4B}HFɪ*)Z,i\+-K.-qg+$<0UK2],#; љ1[VdUn5#sv\4EbID݋ZnI.:(K]p֟M:'\W9 lZ9[@Yy]/FqYT人t`={z,>>+p?+?_%&'Hx,/M- 2Hp n9q= F5Wc%δW3ݒ[|\ᭀQr[9ߵs(tτBGO%9Lj.Ws>ϙ "Q773ù~>$|#>䰅_yjh˷_G7 <>qdM绿e7UM6P#ة*s>2pPECDsQt&YԲ.29f0\.%_!ҹmg`,6μйC)&h/udJjsBZ$X>)uSrgζf13\[j,2iXj뭋<׭цIcT̷\T.^xi=:Xy iz33]D< wwW333- sw1c*0eޣ*3(اppe]eM4aTpӜxWܹzqS9nx& N<6VL jI˲*~ѻ%*๳ʈlkEطڹ#vQ(= xV;{veeChv:^Z~⽏Ci>  ]YR`^@Ld=А1K϶d)r椏M^L%.;]^˯d5{Vi!>ӮmI{)H0l\oꊡaP2bCʃP;86e߆V6D<6]lfűI>1Zخߚ:*O>IâޝlW5ٻ(n`E;wϚF,#$qY276y_!߃ mi96۷%[PCn,Y~ '}jwDy rwXb6$cviŏGG?=[h$QaHmb^ۻSѰ〈ՆTdԔO:ūU^hFPI5֬Zyz㐓HGkV+!ue4m] Ǝu!iavmh7FUV&7j7l9* vq€ʌbfE0H$Cu~_N5/'l]uj:&o3j$5JnN aU9 wͺS#mY[ÃGj5i)ސGnp=9 ћ:pj³P{ıcTw_׈ H35) Sd\>Gsߦs^Nr*ؑ@aU$D ?ŧ3qݩ+u' 'ID@怗Sn$CV7\6J1ru(y $U|e _XN[7`tW4w$ M~Aw$[J* AU$"lZxz|k OU-j]ZyO^j*UQMJ:}Y:I7V{Fp.y󸙻^*ϻN,MȖRs+mmܣyy]jO_?:$$ۊ'p.okUQ*O\=ޥFuwQiBAIGnglm70vhc<05q8ub>p90eHrJAL5T͎>kgPT.ܘ5oi#&NfțVՎKSAV*#~qE-+͚>&]Oy!>~UФDgIb;&8 v^F'B,!^$Bp|FR&N„d#T5crPO,;oP½d*kO5LzL¢E \wuꆾEt{&Rn: n2(%^k6ݰ>+ pT\3Ad% o :Xߩw:H}=%ZRy$'Օ)ޮ72)U^QAU1F-)F^*9 "jn%g>%1ș*->Uu~W~6A*Ӽpxp[vnpxպx8;%!#iװb<: C1+[!I @N|ebL!B\q|9dr2-%uO+ xU7i[GfPAv 4gZ vEp̆D*Rg❋?e9ArBWrsx0UWXc()ɏDA^[W_#n&2Bi7}˙GҒ%I &{=Yh4̃78 N-*H{[`Dӱ |`KK ZDUORpk/ʎ%=z֊< R-05.8yr0oǞΤpޘ9YBd5d.wŠ- vaՉзJr@Nx/xo;J?Fb!24Yp7uMf !mU\AH$ߦŕ{w* 8i&uw+cw<Ձ$Q[+"uČt[^ UهV//mK\8'tV?vՁ0.RC*γDѐk^Bpo?ݎpG9ټI$"Jy1A^!;m<[ McL #%6$g+FXm|u2Ϥ+UWnBe/~ewM4macͿ|6fw3"a)堰c#B-n2RnIij NC/CegTVToUr#FE;JFI¶й3:El)xl; JI XT HvKJPaXκUC1cy3H HH{ TMֺ %6\^0EuDi6%rfyow;.0! }D8>I&f㳆嗌<;)zv\pWښn@c 8^KlZZ,qm2HCRY 5Jً"Hь,m&rr_³%c4j䘆ؖ88i cyVXxTɽZ0s_D&m!ņ}eˋ68B8<˅5 ཊ zH]_g-xqJQ@fybTٮ.[s&cхо7յ]@G8㪹.O9o5'FN玙k#G-#Zܡ٪E˽\6oOdxXxsU.dxs"EAd<{WBn95جaSmr¹H|w`RlqL?&{ӛ淔 W 9{89φ<mR!Ôϻ[,ϫp/bi6 8n pr_}Cz4Q.&e0iVﱾ Bjk5U#R[ K켾@ᮊۮ@eLpHR75x<@(͊tQT@8C6*>$9{>g=t{o ѱR'\>Îq9mܜmVbUBn曆E=4rjrrRfmsQ\3|kHƛM\g`KXЫ&S@ \zI指<$9 k5/bU{k5*_/3${ dCYUa%6;5`aj6ԣ| B9ѡR݂BM6=Ir*2!4TxE9MT07y~f"i"ĩQg-#[H|vuY,FdH)3F+xwWLsu `B\HXZq֌e%:`S`6ݫdږBH #w1uYދ&sa&5IBNLyO'~R|ij,~=u),{o&wkÐh6ޚx7Zg}XTZ@VzSV9CS#UHg Ҙ`q8 rDsWNRNj~5eSrn8gpYFNǘ@؝2/*qsv!LrTdgdH46*  ̊co>{uk4hd 0dIpqS,nO8v^}磣Mȇ%x ;'B&z4.=XJfxu ᶆ `ǯϷ33 CDCRt=|<~ "F)Tjy.ۜ%t8z<-f`L(aFY-qs}l\j7Ÿx͕T e!j[`&ëbN06sp5 MFèpeٱ{\^5K~-%d  T"VI"Q@DPցcjӄc,09sR(DfTa8at3 ev"eY0t**Q!S殙įUË#EFB1ai:zCqI@Sˠd=`oʥeYd6;L-u%d@z0;Q$~1:^JZ6Sƺ&V).+̳2nDf43uV#8T;pPʑT2 A ǎK:򜮬mނ 6Y#[pi܃Jdf2Mwam`-%cDlb50 `߇*[>{Oi*Ԯs dR{Pâ7ek*% Ho#ml&-iϮCc>HT񖙌%bvkјJTQHDt  SH̭"͍_}/m{]Nzx5} ̆SayƽPw I%@kڣ %Q}n(B Zl#y㧓Mxj; on): B̅{X׾:4˄p_"3$*ԝ̩.Q Τ6.ĵ毎n@mz]2Г ꗆ1^,~[^H|tԸǽw< tc ( 8i2(AvMtռO "ސ;-Guf4[?/A\~P00C`Y\H}~6]&s6y-nӺ52uGȠnF0iPc (}B/12Va9Z X-I,O\ƮR )ZTE BPEE(B bm쵋Zjj[4ɶjmU)TaVOv?7M6Q#ʑ$#$D?_//"u{J?ojI E@PG෎7*2zѪ?ZɫsUp)‘(Yd^puw~xW̷wU_5䴿Wf6MfTD%@hϛ\ATA85o {N87nmC~xAeQTj&! INqIs3'%JF/㸨n݌w+SG.X?p0QѱMyv4$PF0~fO8[UGJ”wV{͖UTҡUӥ:5m !BbC ) !2S PB E$5k1 jݚ6]kMH8I*)VYaUY.Z(XJx1#JU*H1bTRbU1R I $9VZW LY$MDTY$G<pJ-YS,"Gy^qfI5ew=/;GZ:iM8ig)1ՠ0\5ƕI-'4M±1LUJTbiLM<{[[6嵺[Y$DU$ JյlnIs 4$+ʼnU1)P=Nܜ-j']u.栀si0HQ&1RaIy+Z#mʶQX#a6KSUFbU$4F)$I$۶BIi%tkP$"}BYp9F-3g'AH%zhF]t0QS8T6rkrc~顲n%Wf Cp6uaͦ#SO̧J7vti;WV鲻:=?usaSxj[&X*$ӫZ>ӹ<zZpi7bfsK976cgWitn݈]\='"vn%ssnKaGg :6wEVɎlLx+J|͏iIÇPB dJLg+Pj,"i+ Hg1K=7CN pb\]^sp4lGWf7riaF h4&1 J I )/cUN⹶1ls[7x4lӓɻfί3N[L8pճ±O;ŧ'6UخNfN6rrN OK&ƕ_ƤHU/cOʮO_8ahp8ta_*)X6619944|ltiy I4Åu?i#w<[wSu(M*LPQg&+vlꛫ<iU&"8oˁomܥ拟;? z$_O|kʿakc=jDZ^}Z㩫hi^[HY/y4 ?I8Eb?B1=|hֵs3PҢBBO.s6Y[otuYf3ɟZY$MS$/'GCsuYUk&Qx̹ CP"0$(f] DzI7on$,.kdnBd _ͤ{!}G_:-3|\XgN-&?V5}ۅꦅH,%BdK t\;λd4;RH\=q$hbhX$9y@@䷍TGN_)>\>8Pў3 }vǞc9[ N6(۬P&;eRN NdՓ7I8slSs$!HBJGWNB{ɫt蝺ڿ)k#;b;G'4WIuhgrDk/Ixӑǥ4j3HD\{.N $E<3W{h ѡǪh>dsW 0݆֩o5Z0 Ubdl&zt]Bf1I%`dGmWZ&VIWBatgf6Cf9 /6*2#}-U\as\ws%sVUWc#M5]8}({f&I "[ U((ag-kͥm:ikˋlHn9dSx!i&hJ~ ܭ4aY!3Olf5 vCr:H"6A3[R>R9px址kvaK9UͥȎRviB"8ai|1\ $g XK cTFz8 -suZO9O8`<~7/(Oݯ8__bnx'm/@VwN̯N_ȩy A.Ƴn?q7 }K-W7g`O7Oӛ&MceSVZKΧ;^< 5_GoÖ7&ٟklB&=_qC]iRzTUyO|M82|~v&uvy IvY Do@|́_c[/{m‹7=Kt c/BJYI'I.`hL1n=psu0l0ˇDyiv=[2əM$R}":3߃vyc3 DZk(&UxH9NMJrnoo$5^5_vrqKVn/z}Z/F6^BZ@s)osSEg1; *!I q ]!UDg 9=ywib!$n3l_O=Pҳ# wT&?~J?nKE#x^tV: c<2iM pSFQԙ޼H‡9z+}MA7᫚MG>>a\珩\Ѡ i2ſ=u.>wq#殍q4@}Lw ہFMKݿV=r-=i4?,N9 80A!p8\53kdvȒjonI Ms"b4D|:>m@鸄U!Tx\Ԏ`;q@,0x.)S8T> ޅ$XNmSN5YtN&$ $%'TI=+ xZYƥ8$T:wJi$֌2N^VᱫYFM0($/b,HROUՑe j*)-meeMUSkKKfW5^ͯ4fʀY,*1V[YiU[RٴmI$, YRDUM2m,k5,DPX)Y RY*b`bFF z#GOKg?Zg/fOܝM-eE{"&@2sᏰ >z2>rm=+,3^l{ CdOĎxǹ I1ĭ4X7҉#ag>yq!1{\j5ތ||T6yY+2-bg!GODYeX@ zU" ObebJڵV>[~TRx5h(1|l|r2I$I"tϡm>T-Ӗ*{è@Exu'u9yD$εxeA ݿ{1hXPUtg|n^;sggUv]'g߅'s^_si̿;sӳ7s׷.'빽s?{* ^+ N1<>X=;3<=Z*d([!t=$j]{*Ivn#;_~ߧ^ؿmw؈ٟmp.Bv.pXҹ#;'dadH&IT{w{Wu,H9z10oxKvQ%]B"6Ryn)aigUp j>klG#hy4]_% zzMUR2jgQtqX|X{=ٕY ,kD2)y4-͹j'%>7RI%ɼu15%g{*8ɲx*Yj#s!7ۮjb z ,A Dw^vyמpI$H_WʾmUv֮H jlw>fD-i-zԮ6صk_ד7S^ݶ(d&oa2֐4؉{9h?bQHu9.̐*2XPUCoߣb;&S9qtnj|.i)HVh-;RN'yhqly B_ &$['88N s0)T/x;ԧ ;[5~'6WDAB Pn<6 @Z8o? Q L$/ ( o &_ 3+$ ÌM)nǬsC!d 7>éq?L&CTN}v\Ft|8u{r M q=fh1Ff-&*+2sF \Am'CI E4:'*W>wwG/쾯S?'IO~o>Gw߳{|?6EU"2eOBR;ڂKM4Ɩ3)+!W&ٴfoۀzHO~_?o=1めH|q1ā ? 7ؘF5r|of08RAE/?ŢC 9@2V)"RHL}#D?3$$>!?/XƒªkZ7qy 33!fd4̆32ffC<̌مٖem[ie{0 UUPóUT32ffC1ffCH 2&d4̉ffCLi 33 1 32" m2L-nfhkZњ֦CLi 33!fd4̆ńZ2L-m ѣFd6e[he-o<9>G߻r =FaR,B B Os${!M>A N('75$= SSHa4[{ўR1 L0‘e")Ob8ricasc1էVRU)_5>vB(e5 C)/c-7D&RH(p==\O@ ߺtyID Cl_DJD$wxNo̯[O*SN'W V(&c :(Ѥ݄ d)F+cAl?tЩ܍6)K?r~/ysP4Kc)bA9QqBAH&3$8'8!R&ca@~5C0tt_O/>|_|_|_|__|_|Y?;M=C@;0>ȟ=$PD'>= LLLLLL!a A%$Ä㜙`^_^fvѳK|7O۩4NU3[M{B5_rK5 ݑルeݼ(/{ ﭫөj2_#Kć6m#H mi> M~qVAaaW_\?pUY1'h6 8k)7&o:7 kSЈL@)~U1NeB{FI@?'|'|JPIRI$\~T|eʧ FΑ>w;5+}Ak3Y㍍.#ނa!7,Pr]$5!M9aD_܎<`sw G&P:R)lXs0\ΰpuz >w= U_Sro+I$P5xؿ~Ӂo8!i>y;ܓƍo 0UT*mjf6կs{r#Nvؤ 7/ɋRDQ+*Z rBHIDFTc)+`'$ ƈQJI?ah~?}/NI+IBI%I%)'|;z%jxIB]^)s{4M:[LUu}ompg#q^= L=.lI̜pETS,Uc./uKh>tx0ƞSB.O,.S,#,wa?a{\ԫNG5V:-yL(o|`,aK)5 |#|lj:I$% %C{[ۂXQWH)Bu wϾȓgʐfXǹ6>.$}81Ts`RU4{ZڀUhh-- *IEO1%ǭJҢQ9+%.b%R=&~5?PQ[ dqT?curǝ<>wY{H~TKs\Ć3SSQEIJ2QJJ A9ΦC:,تv}|>.ӡ p0`dhEd7?#O?'}YIY/ӻ>xWsq?1c |mwEO7fAtP2xTpBgEMv?/Nnݍ6uq?yyW91 X)He;߹(7nMyܕG=ǺdCph(щv8$aK' pw`q p= zxW9+wnvY^ x8c8Y#LG&8lZy7rパgĺHP\01@_i:9wG?ܞ sh2\IV{p<Ìh0NaS~ā I`lR235RJ,'ÄGrAE(6%͞C^iU > #4)flيɥm=8iW ~Z|[|,+\ksmׂmUWZӍܓމ"(đ%&$}֡"DM;S᤬Twr{_RCu/#T<SGMZ5CCFQ !)vdX 0;vtW&y M;iՇ_cp;j#$)Ɍ]+TǢ%HdvG5ci“*{hUl5SNjǩ{nc'No_g|7mm-& DQAiKGUlWJk.֌>a]o _[+fVc[ccԘOI)Q&& #`)$=mS 1Pgpv>Q4zÌ`k&o;έ4j*bxIݍ͉Ex+nPm1$1+ iy+=X)tw1g4Mv^g&TriN59'G6Osl6mɧ#sߛSҥ~'fNӇ{vI*XÎ5`ƴٕ\ʛK;>C:94rWԴf&[dBs0885| vFFdx1EԄ)ޭ*uO[|\4^`%!cqb 1z}Mf*{9 μ)2LOk^5'̈́DMH-yAP#(V))Tp"! :dWbrZz/ TSa)$QDٸ= Es1_%(2XY.BqK \,L?4%+3i4cNȎ}[X_.= !)ax8V@z¼6*CMN7Z-]1hE֭41$cvViL}Ndti[L+eLUUNm %bTM7=:8<N*%O,1=mާ%Tɼo\bgC 8i+XL@ 610 HUVWNQgXFbCa(e&%F3&A|s(88qLK^(xt@p$Ypz󦹼{ pAp^5߇XUrV]fһ"ɞSՆ`-B@\D$Z0&k2% -ChaRnbTh-bii3jK$!A3rgxaE719D*Rs0@(Z!)UQE\( DP <'(. 12!18I Lu4иW77{V-@H"R(p)(lhhhpiGRTz/bɋ γ$mFV=wLD~w鹑\1f%;Hc$3_QEA,m$N>,pRWhGxpV;КrJ;'9:<\woO'rr*n)֜[x90sc1i_hɻsꫳ[t)b, )9)<]^//SOxҪIfT=FA⒄DZUAy9P]4$-&S< 9QPRB`DI -Am7N8crӿg'8v|mөԘ9y8y^:Y-͌dG6kԯMކYS;湺Ii͎NtoEsJ6nj|pPRe P(g(^\ J2#1v`@\3@# >AYAsFa&yLA!.!) 8 c\ܝbɻ8xm;uohBdÙʵtTe-^ 7y*urp+d6!\V핌rg {XzZ~&ܕxKynFӇ\1SiHf#}|vp9ٮFϨtDUQ q"8QQ 1H⽎s#;9ǥ6T*f7VrvM*NUU&U[lSJl1%4p ridǓchnw&6uSd9.^q٥uHN͏%;;QՏ9MQH0xIȰBB4 |DB4T W,.<;17Y4LbOr6o? Ԟd抵ٲ*)^BJ9t5Me3g" v6ƎMD>rh_UhmT-htGh*Ev !"1Q8v%%Ê(n)2b(c6H!x")xk0{HJ7}KED؈/ {*p#UVK J.c#953=#:o9w r8W#Dݎ}1ޞGaͿle2as'K"G;ROkj͛y\RlcOJgn961]ZcWsNJUճ 28ti'sG&'FAI}n.o(HpQd6`Y5qvzLo&㘟i+< =~1tlnoɹ6iٌM^NDʍSSKhҜ1PX& )%p(Ly D2w4b{nSCa ;u{TZ=gc`M̎[y'nH7}tO1LVojI>-$rIj-QV5ѱZ jAE'lNGPSQdKe&qqpDOn!~OF''1ܶB*[}  =EFG9`_Ux 5ae lBuy;:MN:`tKj!;LW5y{ɳULbʄhe[ ٘!U p#[8GOPޘOLPy^;'?&Bp0D$ĺ>~c#UM~C>U$H!e/~瞧gFcCj9|.Hgpk*M^#QP0 e32|ffffffo۳7nݙx1)g4)cTqL8F%~џ˺ehCВakC $T^6=8q>=<Ï.}=wٴ*JP(<5pᇉ_zq ϴm>Sys5ӫ`WfށZAeL/gd\4 L-RJ%C .F$TpqKw~/O~}2<Uעe +}֡omܭZ zؐYTUy٢* [l}Q1DC9'XvE*9X֑@vëfSJIYʩn,yֵgZ"v=4G8eJ'%Rfދ,jl`+TI3]ֿЯ'#fB]4[8XK:[TF+Z&T.Qr0qnD+eH$Qyݭݪgٱ3)yÖo>7^^.~:(?iN={q" MCp&>a">Nh?'k)UcF}Tj|m?a~G_aI >UUJc!!V@Ub,V)j**RĒ i{=Vӛn9h^_/'iڷq۳7=s!d_cs "fCQH" <׻V>> Oo_BI̻pjjZ ~#Ci%"ٶp $_{ߑQo ~wv-W_8?.y2`~Æi1mki#aÅpUE5ap"z'>޻V eo6I5f͛3f+5u5! KxNL| Y:jy_~_~uE }Uu?8fKXS-nҵk֭YS吹e5Fb=_;B5)?x8w`?dh&ۊ+ If xB@{􈡰U>8*Dߏ'xxE{=d|s暪S\|C^?ث\78h˻"'<PA>A a;۠=ESz&ϒ@ &#:yvg}L3RXbQD 6}8xzDr8+KSSl__֙+L~s](YRT>}>|fE2_cst9>sxY~HVىC;6s|ހۗIOIouLh:D#Åp0PqMŠj}/Cp7c7cM++:!HL 9% jhWQpn1Sͦ5D# y]ݩd T2&%sbةxzx*7VULN9+[xNRYzޥ (JI.Uw%  DK.JͿ. ZK ,QȗǡT8y915 ;@Y$*J1 `y'?X<Үy_Ӓxe\ת~?<8h,5X7?oj1d}:QTb_'  _u0$OSND;?=EgG:$:mzoY:HE@Mwde;Sn^Q2 nBFGMډhk&MѤev&US"^n)K Yi7M}-aQVdLApu!.H4 [QlXXEf9uFq>帜.e&[{wwy$I$Q $I$I$[u$ww3#fe$I$I$I$Ks3.-ԒI'}ǘx?*?^e,3/#B/_ #k7_\ ȷܪ_[\`Zgpnqk\J]~VLŭm_mn{^q`/ZgY+iY5*^ʼGnjtF&=F9VE|?uiH+kՖtm=3`14n}WAދIl~5/9STE)OkjիKZ )L5Pฅ\gjo1YJR""*jPȌ`"0O &QImUdɁ+(ݲ/-Y$X1`Q$@T⪊SumQ+iᲂL&RWZN*]IBB!ݽ;?Vnϛ5_j4c⣎>]^lk۪s25elA.MZ]eoR3A E@=>PYo@#!p(dd,B&#Uj_?npQ_[«^5ij",^hMF)am5I4ܱ#ӔaN?*$*k`Yy8ॢ8)JZ""8H&R#C6l)TEHqDQEMDDDD QMGGFDq)i4htSfeDQ)M "$)J JRҊ"("蔣L*"R"B Т("($ R(#JRBQ(B#JR("% J("("("R-(("(RB($ ("")(":%("("("R#4I J(-(萔ДRIJ(4 R""4Ѣ)*#pGFTFQi)FF>Wuy<%ѣF $$$$& )J"(":$$%(:%(("(ـfpP4B zSD&R҈q:!6lQDhBQE@۩K6-6h kOn֓Z7dtoy6F7g%) ˃ӷԹdf%á(~C3/ ' _N]NHV@DFϚXƵ}R#﮷vTZ'䌔7FTS|z] I+΍wnlۻ Kdk\ss/;[bsW"F%;\6@_VZ@ACi-{鬜陞#Lt4x?OVk dGKnfM,!sj1] OZNILH#!LHj+C.$dj&d4ec2iE͵vVi2gUƶok7Mn-tۺIv< s<B!-YtF:w:V1~<U~} qwg82hw/F{ZMn^sxrɿ|r cb/5S,jy62FöwTh}:I!L7b,LhgݷLERdݸ^s,={t,}\$/P8P5׹Cj仱W~^(_q`_qsr <2j$TqzFihqۮI|y;wUO(ZEDQyq L TQ4Z[ul*M@-i浑{ˆ<(Ln0=(SŠ cU9UjoQ0'vwI9t=1]%mR\[2ݒK$u2ȳ*'[%eC&0[=p&s?-9J+jךbUez/vUa촫 `GiMLO{A[E l{P&hO {fqyRx7|xcJI^Uziqޔ]o߭8i`ڞJ drO%U_tCs-LʴdC_Ut߽/^1Dٍڔ{3:ޝ^>.Yvv]LMT82;Do";K*JvSߏOSOFgb(jzݡm6ű;G b$>~fFLPhHI>(yo!vUO,*56oS̓6$~׫o;齄; $=gpYYf#0TTf{[fqMSZìl1[H+Q#Q}ʒ "AdWZyrυ8M~a!MTm]`_~ "ai⌁IV̱UU{ّew&|_AiPd<.$`Ssv3G N!;yf$&aRC) 꺛6v8.X~+Oz =uᄑ9 ?+l `X k`Sy/@x*I =~v5 DP|]^lB=bΝ?9%bu!{{9ob"LgyL2yM2,יٴ)=\͇SJ3il ?^n_mX 0±nwc(ƚ֙`-9ͱ8틬%rşm}8\,چظmh=77[YRȩ2Oi\TH)FUYmFݥfq]qVsC+9QLhM;L552Gē6Hu 3Nf),9K;4>CXfE.b [_R;$ᢧcIgM0Z]4,EUJM5gHTk#(̍+~ Ym5+'5TϚlTm띧]jd{uĂcjd{ON-pF+m:лMůj3 &0[~* *U  $Tybt>uDCO?$tf(w mOBy9hW7I0oKm p(Vs\"=V}.B{hTurOQPCMM(z?aAϽS0$8Rjӧ I0DQo4pdI9 tP3rỨdqױ`=Vz{ |Sb QUi-R ZW/K/m]),r瑩9sO33&pKg gWl=̨*c-LlEQIoO-̤֡⹰U[ OoΉU@D@K'm]H/qDziPve#՟=wI;KCVhݕ̞X#6[r(zdWMڡFǓq8|q&xEH+s"vvvn3M*.QơYg|l[ݚdkU4]e2W ]\Kn+y#mz|\h&n/qrKg_5a?ջ]+\|6M lpgç&T֞aރ'n*D|pBjwvs᎙J9mvK:dΤۥTCw7C*dٞY0evlMPZԱ7K6>J^?na]Jn`wR{L7Wm]nܳА՝rF孴l{ LtQ5;9O6oO6ﻙu4ff׽qu^P-[6tE1ODD\ڽ0R̼DY9aܫW9{6G1L˂td\j>mYUW՗GkVV|l nI*’RcvE=M/GF*:GAXQ ٮk ruW}7k̽f52yz6K_RÖz L/gaѣSdI= m)yޑu.\Ōva{YY)u{zPY5*jq6u ڋxM\:g*-5z uYzvݷ+= >ò]gV 8aw+ǏR5Jf7*[.'1Yb&HE]șK).n\x\ [iw3aLb)(devmӞ7.ܘp_e/C[KU;*oC/rΝ2кژĩ,V|vF[p¢烰 RĜ2ۏj%)޻\..QY⣘]i$ʭdV^Xelc  2ъJH^gdG;>,1\{8# -.'8v8MWNl$IZ883vbmvO?\:Y! %8@ez;ES'GbB3);[ OV=i:ʘv71vQ#G+Ȁ*Ͻ;5#INUka/sZe-Ur毟օ$XY;%5VN-၎f̣˙(˜+4XM;Z%1nkH2Ewirv5&֫L ̙rC ώż.W\ RgT_.vo\l`[9խt e̷Vj{>9 4(Z]TfJzC7︯JcJ 'BԱӬVjPli-Cys 8~=GCkޓe~N4ɒ}̷_;H*d\WgX-<~Ev0#R[xrmU[ѩtH1k$i%J/(V%p p&PK,TK8NI5TP( Jjپa9]"őQ{c ##S=Pu$f=VlM6[f]*k?(uWxܒK,=28,,2\3O$O&dsI =DmaԪbXvק7pagCjn8P/!5&ǒTRnZCcgLvMX"(ѳ,*\1d\ # q$uZ]vQ} I$9! "HHN#ߚo F];fs`>Y {Ƣ"eB$QUEa˲ƞP,&=|52QjIف} q d/k]eAq$<^vY0:h򹨅VJUVJJh=cII3K%Hl Q)nF옟u3 l7%T+1 bx:xb痒D'ڃ9339^E^;nSEʼ6F-xBk"SLӃB*ɜ.zNTJ'+y ~Bs9joȄK+#ySb5L}ղ-د/AU%&̘>IfBI62{ I>./Μu>9?&19ps"`yACtdKG=]V}3x/]r`ܞW0z짊 g@6#UH #Rc\r8ڶZz;x<]Ϛ~gso'\JbUZmoU]]vflɓ&L42P42,̆JwvL7k7]vL̖k2dɓ&LՐB2  /~Jm QB=a7B q:ld p[@~M?3~yIxnnzM&rRU)s_?οSg~&x/?{y{YZl ˘0q MQg)=9T+ˬW@`pc#O\Qz'` ,XMpFAXlYKv s$;E~Ҵy,K>WC[OE3Q3P'Q!)>vvGSݖ|JXxmzaښzLbb1TF)^hjGSsĚNl1O/ vTbׇ\Y_-lAH@N:s/ڿ&%%nBz<7<[5qP^Wʵ\p؄bi?Ɣlz9P؋Ǭ-X96B c6y0\ $ og7ݳkpoL*ZIU_"”j#?6dDތjf筢8nW?Hf͙+IU9U0cV)_XvphP/2a6]> ̄zSN0J'SX#Ŵ0m1@Q_"~H1! 83qs"~Q91f "@b(mDG2'ϪO &Ͽa_~'*0?HS=ec:Ѱuǔ&4tvbvۿ؛ 6AwufpI&eүs(phi(W`1XWߦ;SRU+LI!&1X1LR%iTwr&1)UtaG̷LK\<}B NI1HwL(ncEFOŠ%T}>i6i+if&_>T= y4Sf#|>/~ Id3aP~d=٪*lq?^fiPD ՐgV'´/v*Jاsf4<ҷLiSbR 0ZT|9Yg Pöb[TXw46͏tD9+K?r']67Q4KvQ(2oXnOPW6ߣ7UUUbyғT¯r`bQrw7uLJw}̓V;նFꪓ^7*sd{|g'Ҫ৘SsvmfW~KΜYHhN@vçse;7B[""mWzWΙ|*"Pwb*>[_iO/i6 M=fz9,r DY9@0)w{ʞ>vvI'5K HȣP`ʖ05ǐWJtvp*,!i9I]ke' \,-kIT@ouC¬ھnCvb{ڹv̝϶Fn~?6f>h<~oܸftll-_粎 Q?QUJEO1ɦ麕7$,lߜtPv=bHL 4kDl1S@q<Ì`K˃$U?ɘbbY*e[@Z %N`]@!^C ?v.3ᶦ?Z#IBp4.$HwG幪sxuw]s{8S$'\!Py1tx)5!k?y?cV?1+~1~cf?YX&?lX1 1?YCF? l9c&?Yc?Y4?Af?Yc4F?=#ϝu>o>ꦴؖHOx&)1Y?!1KUǂ` Y,K%%[DY.?> L>Ic"Q9*D%A|ڪ LR )sPVHDLGԅ2CPAxXN~9O䓑2 !_5_T_P( Vi%k*8BxqbēGSE\IN%5(>"N1(PⳘ19PE/2ᤨaY1H4H0DHGtqJ/ e-% k ;'1NmcO=QK$^JzL.[a@DZrfo)McMeNc 7p[OJ9YQ%>=TXECE dmgs㝐 PDTO NE жlw܉J B _ˠDBDvZg9g !gM>=tlٳrcg' ¶)U͇įѳM9͢91brlaG''3: G"!AB!:91W{U٧swF4ᢞ%6Sbl4R)bhMjٍ;4rnsw*զasx*c,x1M+|G|Bjű#.bOq&!p+OcITS"X"X^!޿6!ŵ!JJ1UIҬuabbLI>vN*IMbɍ UW`H A 2 ރ&̭}&?Hys}p#JM&+OO$+M۪c)I[#wO%QU]OL>vbSǑ Q#r GCa<KPX ^?XpO0@m<> kXP;D<;4TDz؍ n~GH7տᶭ 4~='=Fq>ݰ$kGO{DK%*HKZS2c6Yf6DSRcL4QIFœfl-3-MYRSMfIYif̵ETȍVՊ+Z$㢫qwI?QLj 5'WM:0;>"47'_b*;XCC:{&a,MV +[7V,ė(1om~8撱Lf!YLok^;Io}zRXNUIEx8c #vpISv#Z6L{ g)#c<'#'fkd9\t A4E4 V5!jիVZhh).hht: N'H :@hz@4CCM D4CA$sa'a<<Jz-m[paԛ0e{xRDR^K%)}_%}0 3jmY#diS;DǴhU?}&MwL*k^4k5#qtGQ9 uUn7h#+lՈ:vW1 ^VLUUURRNNNOUU?f,,,'ՕUURj(tdwKEDQ=HeEEUUTUUUTE****4M/AA]p#FHIZG\rbbpʚ+J'M#1r) MMR8[z:gOUv/[m5C ʪTWIܿ-Ɗbz1rZD! u\q{(:|"pͷ9vRCyQ|ѻ i]M+#ctN)–+>1` *͂&(e0AT4vuن~ iZsyaҫs)wwwwuK"3:gNwI=&nf}t-{p)91*fihM)$Bs@D8f ߭ÿsO~'ө9)%TAPg3DY7S+w/ٷOӝwA*3*fT̩t=T:B5ӤE-'2XT,W#)1Yr1hj۔/w=wD| ?螤nۺI$I$I$I$I$I$I$I I$I$I$I$I$I,ʪĒI$A$UURK@ݙԒI$I$PxhC]Ue80**YnsuL{Q;V +` $I$I$NMRHff-OI$ԒI$I*3-Ԗdf L̥i$R b".9^_'/*c.I$Æ!p^ ;4w3.ꉪ[{wUUTf2I2\]^^L@©L]bQf%L/3o7UCMi37o&ro2*5nI,qþff$$o(L%w*KDEVaFnjO;qLAzYrw3e[ ڙۻəوتٌOy5Y7wRJI$I$I$I$I$I$I%RI$I$I$I$I$I$I%$Ku$I$I$I$I$I$ffVf$I$I$I$I$I$I$Էwwwu$Zwu $QIaLD@$xa$3S333.ڪwۻCC DEȈy Awջ$9"33I$I$I$tI$IfcD^yyjmm1n;mwwwUUS33[J"!LDLDJInUUVUU]UU^b333*0fffffff]۹/wwILI$ݡUJffff-5wwRIJ b.ꪪ-ʪA$Ij)$XJPIRIJI)I%I% $$XI$I$I$I$I$I$I$I$I$I$Kwv"#wwRI$I$I$I$I$I$I%$I)[UUTI%33),Ȉ<#y88j$#na*-II)Dfff]KרO4kw[inIf$%(ݻ$ۺ`X wX۫+a`[woNzګvuY&Z Cùj@C7̬=JP;o,~ wu{ l-MLU3[M{B5^ےY%0Wv쎦}-E{調9C3. ? D[iOXnĘ r0݅Ti4|a}c pt,^T@D66-jB5TL,JYI&E2eJJSMQYfSIILԩSf,ZiSfJTiJm-+6ZZ`RHI[V$IOMt"B< Ü Cւ H @y%DR-D? "Mr{A$ImzھV=4%>~@4F|iƟ`>8|`|/5(|W jEfjIA&5-j]U*|B\|i* Cl> |a>8|jio[mm0uW^:d:ju5!}C:&C@jEE1iyB$$H";ui{Ro/h 2$̒I& 2I b[@5`dLiub m )DwB#I'~CkU[=NkյlƳ-_Rq8R@ ,]OPW2o@xvfb@;H?miqt&|wS,&pkEBC$d@Ѱo泑w$mˬТy>?ƒjVEmN,س#RjayzeeᚇUωצUH_D}.xk u8QfP$fCmHliG88 cT1^4<Ev'8zvFCABt5Xmpբvn칛?G/]W]MMUUGhb:!hQ"F*x5U^];NI+IBI%I%)'wHwvٜt )ګ ?Pϸt|ϭ.Ǚ?2עh_2K533C:?]X.T71$- N*#_r̢QʪHI,lAe ˔cPԶ*UF(wOr X?l\h[]DO,2 j\=gt]88OL|DDKHʄW*IɈ2Bqă›g էGNΏ} U6{hwNS;WԴ4-$JLֹlrˆ3>3,E$ 6I^5UV$InY̾|a-ݷ7o9F@e{%r2(zҞϟmRYSC?A \8MT*AR͹AD5 |w?o9ž*}=bS]Jib`)Kshκ諷횖,X#Nn@ܻťNX.W[^JדZzim62vͦiQgD_=&|!xITiM5Qm(iYRald"Cv᫥ؘU {퀯>k4sg) bqd D$Wnm^70Q6@]T=~hI\nv4&mx\-r`@DW c#g<.f(pˢ(! uJHnh PZEǨiT3iCx iK@UT^xQ&Bsܤ9a8C*R2-MRekdwҿ-$쩚5F4 1c+UJf2z䍻9 x)w8Quas4֙7nt|5lJ>s٬7n<׏~mVUE9i)nIZ)}k󝙙(p9 m1>zVSIi,JV*K>W& HsX!!'R]weҭIzo,lZ4M5ti4 AV*X|yeU^tQNHCQk3"5\xD̉J1ھc/;ZUMJV40>u*hiaxMfh(_-vM&!!cDI,Y GO9ܴ7*gBrow{xuHXkcin_>^!cB#cxxʊm E 2, H Ε}Y}7x+%v0U M-Q7@= T%wψ-FRo..5&Mñ'cΠt ܜ{Nh!we5@d9PxQL|=''BȠѠBN)^DGS'?c5X*"<㵂҆]P r{X~;3v]T 3L{okmk?&}AԪl8seOT)*lffeUL̽{9uo{ٙVj9^H; T]|n|I9s=oZ`[J[Y%>!NUPG7suwO37f"$I$Cb(1{ ̉ fɓ%.ѧRWF4iԙ)un4ܷh캝Һ:'uu+ծhӮWJJJe%.ѧWk]ԻUPrY3ϔsbYc[Ŝܜ] ۻw"}:ӿy':(%¥IEO#ɅCڇJHT?INx>]y% 3I]r\i\<$nIOX7Ld,~TWOVF߳% ^5ww60[ɹHCҿ3(Z<5Oz~qj'Ȕzk7_E4סp'Noken9>:?GeWcݒqyWU?]c^0Lߵ"ߓwqYIȆKdН>v~r_Pbs?ԼXI`ΦSV-YWR_ZZY$c#3;l /"︈L)8)@?H$H{BЅ$.!0 0Dx/%̕aN D]pZcvv|yX6BD:)e% Q!lua#ywtzΊ՚c6^ecA0:F38+:wu\.mϴ%\C3!`#(()~r{l6Ԇx͔*(u2&$92yy33>^~'< <<+ EKo<*30 $XY痙$I$I%YbC@f%b@DnA$M3H@4 4SGD4C@@t4G@Dk6ܡ;gl2zAR9|kdYek8xz,ϰٿ.cJEHnDAܹ`r]g% +"!bBFQU<=**$4]/0j c5zipr$ENJ5Yi2>Oݮ8OM5>>p٤؆DVb(ebE *A/)>4 " "b5rQ H'* 1D9GSybSrNFtمUТ-*s+42i)8c4`2ơ'1@z D Ͷ6khx*rw,c<IQ fkS01u{)w/BťT_ wTk.&ǥO.^.=n=O||xQWbq1w߫w)BT1$q5O,sS$}>v]xvͨVq," 0o`p0 Q|{|!KD'Ib UDZh1 ͱ"]ߞyys莏3Ȑ=rsvc 0,bj: DEQ2%ډ2(9يe+f-5He$KY"cP1T)*$C4FRHy{=8x8QY8' da$1{.ݒI$I$X51 ؂f$0"#wwVfffb $Y$UdT.bf湣d.Ydc~DxU_g# 8/eג ;a!tvǓ4%F-, V]xZDPU64:<y9&9awz-imV.eWb[E=xn9gdCg pPn5xLDʭmr߿2jQ#L$M1'zw20xHXC6gd8xGB^!X҄)^PAZ pToS& "g pDTBk{'پΩٴUkH mKFhP%XVo.&Pȍkh[6&=1i6da(HYkYRb6\J D k-?':ac$# S28A6cO]|:LFE6O *aڳb˨2-8Ѐl좁/N2{cZbĴ<S8B+t* а6D{(r( XG)N1ty55lڧNۻ{nݽwwwww7o`]UUUES33/2.]93\~:=t/7O큗/Z+>#}p# ԮXߛ'"l1 q<3NUƜ gDI(pD=HAJ!h0-"jt  }8y7e[?<}m#6Q'{ ©9fBuʅ4ryGzuOzqnwenִpH*EbEb@Ib),*PX(_OT'$8QVV=(bq (H -qN,Yİ$ x$I$I$H cX0$$`I$K۬4`f9gI\0rp4f!.@X;m7ʕTTxs!0]!(JH2V03^έ)e+?O$Oc/w܅ zMQwR W)oBIYyIHG11O96$фPm HuGEɫj$˶Jn`[q:h128C$ XnT0xt[燄ۛxVh !:+aa-, Q0Ы$MiAKǛ869[35*>K:GLJ X.^/$'UQ9lowo#m\ĭrBs6y,S:(lC69.&KJJX-xLɉ+B̃ @& L3LE8Z&"'!pMCG#x.N0 N:rym`tsw1CY=c:B˖pl18Ŷ\y"ݽd/ R#'HzF1E$< N$PPF8RW9 E-܉KR%49n? bQ/6SPzA7:&Q2A@STba<8|! }/GnywuUUSFnffbLIx.I!h =yӭzַY$sIŒGJJb` CMeo0p'$I64k$>A%Bi?-Ivx?  ɒJ#586qphG0 9\p8,GBQ0b bl ɲau))A0W['dѼy_Sn8huyuGvg) vfV2>^|lㅌ8F\T^8{V̐$H:$I$I$K3K0bs33I$݊2($43q114i43%#a T%t쭤E-r:aw (hJPD앴|[x?{Ǩ:1<<.t'rvN]]#H ֬[$!p.0)=Xi5w\DO}mSykQreîg$)oȥ "2)4ێ @8RO9/=nb{dyy؛ɭvl& w2LÁD} fRқ"6%UT EzDB!) *%r*K@q!!!!86H;;*V 4&!98Ɵ1P.ݻNks﵎ΥsVRAUP에K3 Ǐ1$#baX οW +0~/T{W?x ;P,Ð\.e +UA\_P* DPAmmm`ǎ7wwVl UL9$$$$$D?t0y*1s\ 0Rɸ^;cS:bD@U>Yx)BY[)I }= z<eKW^6oW#q*3*lAa&d^;ⓤWIr`_21nĒKw0b@ ۪fDtT 2"&FB(vzOj<5P^ UFD!̲QC*鴆% 7'_ڎHR6InDv"w-YԮ4PB `j5m I .zãK9Y;ܞmKK9kG\w[pg$,95 ꩻ}}pc$)eN7X]z;KXkk/RN ۛWc维G#4cᙁ]0fϑDZsN=ѱr Tˌ a) +BݕRR$$.JH*$#*!Yj Je`aSc&rYnΝ'~˞6<KގLㆌ.6{KjOd|q8L' G89]5rqWCc332̬.ꪪb-[UmUUUUUd $DI$PChpM{mٻ 217NK$boJ(B$r]yξ+tsI$fOk& X]⥓4?Wvdv&urUbP]L P?=֝|`l52 ,u0'ia6o PQOjggontcљk 8,:wF<ʭZkv+|_UTۻnykxGo"$IHK "H mI#KV!?_3˵h;[YqM*x;ڭwwEl w2;G!Hl>I J9D!ݴ2ݥ)%<ޫwg9گwdWWǃ8p9[\rIl(䵑7G>7jI b)qyIuŔXy!e ,v :#O+3Qseplٖ7:۲%+&id2z޷+߾l.x6dA0] @zF7;z힍C 7'˳є"`U@ Qzꪪ{ֵmUUU9O:x3IA"EiGǿo$I$6J^5!f}|=`Bt$Mydr .s0sŬ ZT8h7 YeV 0 'IRi&zz*KE0LHTPK=_tCdP 3; !o*x<@MHH*S(ciiOOyJcɧ4'baeq:Q e︽Tۧ{~ T׷ON7FG88Uac`xl\`d^$I$I$ '0bnf$I`l!!`3$BII$gEw'm,h95y!sqů00ɝ.8ͼi/s<;khxS~^9/w8ݖCtCO|9rK$ؙ`tmgjSaT 6sh_L8T|femtlC5I4E zm _oCYy!Hh h 唐A5H*hHPc|Ts g$)kb/1lٌz 8`H8@uʈ6ոސsE3S^M! ?/^Ij5!z~&s*VʚK&*>]{òE6 MƱ.W1\Yj2ֵꭰmmww㴚M&I4&I6MU|~ A$zV]ݽ\ bf`oU'ّMeʜ2,)kKNb*8%Ņq%/db'ds箐TAJ3mY ֜ArS2WdqH><Խ1c0@RjA5ISQoY##P $ǍW¹DR(#{g\45=pwX|)RI+Sw!8΢كbໂ9qzV< "l\f1 1x$I$I%a8Y/bI$òf 3 l ceadz$x44Đ ph2'd7mNz]m՟;?{_$3.h16.:"H+`q4jIe$,vAҬ&n7My*nQG #0U@~#TBϕ'2!}tDO$"&wvk8 ߃rFVϩ*~"pQf\ZS lE<'=EC3ss07lnAT<8 \1HA7k{Zie4_j` S C'׹Z_ކE|CAĎ5fu}UFFjZJNXA5 86Y2b4zcjj^_3GT_2TqAoJK{}4UpW͐F~(XSYi&+;LҢ+K' **Mf%f9Sٙ 7Vz#ݗP(sES}llﱅ{Ç;Կyb2g!l ,.p%!o\eydV@x]olxA$I$I, p:>`be Sc:fLI1%=wg>7{-`* TiT^ p^͡XYYYYYYYY]Ee%eeDHO]u#cVwLLS999,䥖Y5[]eeeeees,Օ!P|GXy%~ˑT Mm hMģ}"N̼"?[LU8`a0[h`sQpM/:1y^zi=G/z]kNNNNNN{{w{w;s`H$ ۔2M86nrv (62 )*ᯯ>HJa;V4QB#{}6zkn`JÈ;0dÈQ156Y(§Hp4,t!$ 9lZu86j걳+u}& A O<"ލEht7Wufl,efq2.:M Eop^N  |3qph5lvsF`XXL-D׹5Ĭ?u>4tz ugJ *Zzzzw\uMO^h'p"b v'Xs.Ӎ<[X[\tH$Ei ı"fnڴ[-efSNH'L$C򠈟5O~G[+?] I,ŦbI^FVm)HZ *H ;/ꍠm0Ϳ^H  `5+Ek"TA=p{5T}9F fT\K ^jԳ=8/(U(! +smmZWkh-~,nD%mF1TM_B[[ooo~O2~~G'ayO/_7n:A2 B/~ij"~C_>?ʴT[.\QNF8Ku}eRt}H>T PQeVm+dmӔIb;v֣q#ASO2;~  ) ^\nĕ'~WҦzƟi*?o7& }BS@}Gw%툴^F>\|b8 KO3$Z-6hQm(4y!\sYz=X8|+}>V؀G%;AUT"'3I"HI8N_?4G8 †0S5ͯ˥6Lc%1b:biNw:^w#?6оr㌒byMػ.3ů4HyZݽie.yx#UuD8! ~}%mm_oiLjҼei« ґWcneH8҂tMqS~0* ,=Pg<[g2QggX#}4_ '<~ 𵥔ELRVKlbܾ,/Z4w.~a\KkZ&s5DJ2QfˍH~|UJ+dT9?F='N㲻?tp7JܭɻC7z4sv$;gGrn_߫o>W rX8dbrاt 8q7fQ108z+eE;GEBwlDpa4Z>&>᲎ʚOѻwٳuce4ɓ uTߊ}fΡenccJx4c^ ѻu֞  [7SMUqTBSkNCfllptr8ry$lUJDU;U˦kj73 Gۖ[mUzg@#U{cDZY*EnoE*EʹE-S:сKh) PY$ Zȋ$bT`b&G:4&32ThDjt!"ITU)c-JR[J[y{Iz/Q%7)cfllP']Ǘw]Ӈ^${֜Y^M<8$C߮{^K$ 6dIAY{]t)JTRIRH**9?4^ Wnp DBC =!&M ri1\b%L06=LzsUW[+wvw>4\(Tqu/a-]TaWuߙ}'Fh7i;a_C,~9k2ZjI5vyS733bs /Z$$hؚ7dI$٭_}ZV /}y)$( EFe,=[i~G]\6M۞$BsLm @b;K M ;U8wa6u܍):bڕaRo{9 )_c8ibqeW}{<<~`-;й3#1=ls#&('-.:X%+{!抢(( (( ,"#cߏǟW/`~֚j~EH'̟5 _~@RO 0pD @=*~Fc-ߏ3H914Iwy4j uNץζ\lt:)o}kmċHD'-$owu9HQTgxrzrBފ'J-" @D}B 1Q TQRL$ kY4VJ7O9ۃ f?Ffg;!nZMFN<ʜjWEhJHP(@GQ{(@§xXBaě3ޒ˙XO"lPL`a)sv7O:i*&t8ur*U)[,!m&1Q(SD҂ t·T8$c^%j57QUj57+]Fh, (wUaܕZբſc2s+FREUrAF0` 6qsG$kl>$]+af1c+76J+s!s\КώxPlP(1)tN[Z''BDm9vlLO_Ԏ[K%ZL1T:F 94Gi&aA24JLUV44Ҵ*b£iOZil*Tl͖%"b&wlt9)\6v͹iʬn>G1N|2bKEܵRVKJYlJdD$I}Y%zU1D4%3.WsJ*Qi7-r{$aRDbCUJbTRTQU,jF*H*F^]ko/e u5 uB٠H{[~5 QQYU6}+咕]_o_Ijk4R S0 ,JP̒I PC!ihI%)&id$kԒxyy* PǸ}^=v^Lc>dQDӛsÞ8Ѥ9,Nm͹NS::gY'_a 3wK3&Y22HLAց]Xp02v5rr5]QS[aC߄s)U_J*LlLFJIKRY)JI$$JI$IJI%I$I$Y$IdkZJRI%$%dԕ[I%Ii)$YK$JJJJI$R**6DV6V6V+r1)QU%TJP Lɥ%*ۥ%)dO0aR"Y,+)I,Ae@ 9˭25LG;凌g0#oa±Nv8Wsbb+]ab6wr+I-jMV[ ^*lᢩ)23Y̳IkkX_k]{S;::^&%zpstN]4z^/'7WWsnN=*w;gsccŊ0FlM uI%63{,θ|>d BI>oiAءUǵx>ێɄ'ZvLR*na6Q>6uv 8pn]'t;70b4"D%r+p2cӨ#Gp8QVTS)?z_m#x搞c}7r+jrr*1c\Qlק:WG=֭[חU٦NJJݻF1]NuI)kInJLbɌ+f1FflFH;n:LEOCeUs}66S6i^GBw>ǁlӹ6JVcM:6UZ*K}M01ƕ^wlXL.(urvpݹT+ cQJB"* 7c][nTᦍ&bTM=g7lvrc Nc\4{ۯSw5R pdz|4=aMh! Z96kSoTae>{$U)Sze {ľ)&TOX\y͍ަ<44+M2M,bV*+fU?KV9NNW6øئ1^M*lٳaM+wM8T FE ˘t햄8h8팽.h/N< xB0 H(cv2==1#s(ˮҐ1\DQ,Q I9zҀpwUx'&;94r4xuԒWwr}qYcٝ{8>1T-;gp``w;3*ʧũU58#a$G*+6z#ȟWޞWЛ%}+ R^ۗ.+5U')$~L7zq#,**(Vw 6~CZ1xa;NuH@q$H%GcQ* OmdՔ;$l#Sa2SmL*dM5GY Hh^[aTM5 >|U?Ĥļa$"B@'Xu`hA`/~*c@e9ȚD;0/}r4Kov#"O/.Y8h9>6daµ20PEgp䔊z`@u <]w*/q yH)56svi;z5kFDK*DJ5EOVKBIZ*Sl³ LcaNHmKb"+ as*i`W/]M#4~G~q$6M' K(;zͳk {K.%!P8<=/B"bXB`s&>]ζR=G?Bhت87}n?vs.p7WgdĒ7=#ΰXKj/r˲!r]07LVZwW1:&;ddj2:AL 'R*tuˀMPrJr8}뎰#GslD'j@N )Xp2Cpyoas :((^1|d;ݏ aXP$!X}g&# %%}zM<uB?:&Hd҆4IDXZ›$\6(4EX\aE6 ٹ5ܻN(@5ɋbz>hk*UPE pBKW@ؐ~gf*Jʞ"ʒ#(L-$ RERCU$$t K-Bwr?>P!XQLnwlG8ɣD=v=˚*yvEQXe{08N 5S$yA,?g\mrRUkM x tfg1iq"`D. (d%dR6LcӀl!6RX`Iڵ)aj(ff\ac( ̹}Di8LgQRCvm֫mzή;4Oyzob*~z.n'ޖ:N68 ~6+ؔ@huʐY$-A%/-XfX2=¥D(pd/)Lf4a@k1q8E"EHoHM*Nd$|E8 ɞE;v~l 6rѯy]p-K*H 1D l~3Tj3r1Q?sTlFZ[*CD%o6[ ]/ k#,G7$I>K8iz=~_`#Ă"@q2g&@S@Åq09vOҕ D+$z4FÅ5ʪ͋^*)}\՚E DxE머Da WZq*`c (8a-/1 3`Ozc` @D_NBb V́vE09Rk4.J+bƗA4WkJ,10rRqņccw(Pt` H$"-thtӫ04RI<]\-Guc{c 3σ06 |ڇ|6}g  #p>gяoyi#Sc4Y.>^*Z,d4<ۇN NJ1+ؼ>$$%_6jBBuųkr.&Cђ秛N=/lv QUAQtj46Sg9G36E"B}ȧo`.<11!}b,$3d?vV-4К`lM ,)fI"-djm5P1V"FeZ@H`1^]^۫'"# bLs損8WCGWD|$<ճfcXcXg4*H#ulICE[[~tD>Spl (dPNRivorJ3;=ͭkBrѳƤ̚jZYhQ3O,Yn㛇\mZWއRv@Xޜ8/{ss` LI1`ME(kp'sFy dub,[澯d4i_ģ ={JL8zd$;هV#͑$j^*O+}ǘXD`ER"ۮc{4x^FUf]Q5W@Ap_Te熌NGZ_ uT8mgQ ^$ ,! e|AFD&f>C܄\r3x]@i+ Å20b9teNȡ!!(q8a}s=tFMj7ԍƔh)IAdW0"ɐC +pqx8n7I7Ż[|F8ɳg'&98sTrr98n13+#,l^)s1pbr,P\wmٻv'''#uvpÜ "R)Dji4]*wI>V1 Ər{ڟي}'\7ɔ\/+>lI"sQj}/sg;C5"rrK@6d_@! @N | |H  ށ ;)lwJyK!^lVi4JUܒ}J{[n|o: M&Nagpz:ӯ0'9d1n @<8p'0|UWe0My1rLgbs}xQSa*>emIfl1HKKQE0N) {[1&/ކ4w_t$XI@[.޸[h$ Jx_y=C;MP9&㗹?%χ8uǧNuI7?}UXYmEkqXȗ0;r wffffw)"q$f:WP"~{UR;Dh"Y,"&nӚJUP6Hr|݃Wd\X5 ha>A0`9A6Dܨ *):S0eQ<+qqFsxct:'D-8HdA@L&dS6[jFdM͓6])7Tl葾I?(ґı;&664dՐѣ& WF1[l;غ&ɩa͟_S ,R6(\z?qyl&~7_|IP(klLj0r̨ 'IݘmgS$+maA,g TWFid&ˠ1 ƀa/֢KeccYMg$VDd[$/@dgzD *@I5"e15&)tkUm+#}JyDO9;:c!xk'f58Ğ^׹sWKJ'<^4=>rUuF)%mCǚ;{%z4eI dTIe_)%3"ߘ/p.qL! ;pu}-L'IxE6QE uB:揱~߭d?uzl:َ ˽8DIh";|0b]S]eM0J C_P-M#Q6jq123#|ꦃRH6cx9* E=E[=mݘ֨P`7pGk=/#+MT5_~If\Jɂst(M;O %󇾕'cnؔ҄ 46حھ '\6jNGCH̝Ga%V< P*hpEC moT_a ."[8R$:1eHh;|O`"D{0JI&3.F^R5B`a`743A.&(\ʨ5ќ0^vn7**@\sJe਎EVI$VA-3 dRJ*oJe>7Y!ZVccя8&J>rɳe&#{yx~`>G\'ǥe̓8'Hn ^ Nj곅quTP{oNGaXe?U?&bյ_>eAd3 VSvVi{eqJ K7͂O`&3qxME6宗eqbM8=5{6=Bq"I*"dz]sy`39URNHE:؇ved|Yr,X[Qje+-fb$ `ӣ ^= =>)AWPA >.ȏkU}p<(t01M: p#A>XW.^JPEB`${6h޾\;5f164i{I;hp ((Eڀo!U:gLj 0f3}c@ϧ-)fvZгj,7k-zOI4[+y/-mZHHHHHH#_~}Iy$lӧ;Ӥ'!8g= ~Sd.]ϓuy 4}-3i Tn6'ݖmͩ꿈ľ~=_v$(ˇnx?x78Vcܼ50~imϑB^> (<=l_SB*/R7 =Lg)MMҦ*z 1@+K|fE`;ȸ5{6Y݃A7W}Ye_kM$Ɖ2@g-%\S$"|8io'Iq X`qq ~Y0G !S>*nH}FH .A# `8}ɏSU2KJHL[rGIo=,=&g3xL 00nSWT6vs9-c'AgdDgOeyO)T\w*~F-d<Nuc;8Z;c1՟7· i|E"j*{+7>ZxT_IE|)/%H;DzXu}"#'A_߲_rTbwkc[$ڲjT߾bFֈLִ,\sUEF߲yH*A`ïIYU^Ԛ{WcD!# ҽ[F'㶮Mg)}c1èCflC!Kʥ_dw͌ezϭ$y#;@n8B+'g^ؒq5}zE,g*AqQz-м8 3 yFZ%PO\A# \lIuvʆaLUl~UF}7?aւ8޼_ 2I)OB*M 6mBM[Q*oN8B >3Id @$ 3lڨ#&RL3]jA 20S.n::gn l ) UBUR I nWɼNDR e dJںߕyWVbd 679O,-B^bu%o6x/[*c#+致\!7dn4<ݎuETDRHITJRIKdVRK+--%I[-JRJU%)+edIIjJmBiҪI쫚Eɔj25e7Ie"b^к+/\Ҋb#ى2 "*ȴ`l"p)I6L2I*԰|%ٓc1c1QQQQcEEEEEEEEEEEEEEG!'@9W=`xP\ߑ~Tj[crDbapnԷ*&) o+߲'DFo=($yD8`>A_x8=sD!; IUXc(Ʈ]TF @W%D} >E*\aD᪋#5A >#p \_=*(dV9(hJ%bA3鯲<ޥQb XșfB%K"K5*Vl̥5﫷iM-5JSie6^[;Wm|I^n\]fW]Z6if1s@cZa-jFHI.I0`dPpH hM&LddLC bdaL 3$FkvSSSRCYU̒&)eaa EP*J%%R"R"Udș:דIn : 8{ B 2(Ga\n$ FC$ dF4z,4Ew>" un"$p`)H}?j|-^g=07u'XUO" b) k[U/O߄D?SBX:A2N@ ?PNpV*a*P-pc*J>b"`s(;|6_qxk?IUP$!?vǬ>%,y' szp[߾F'P#֔345)##9(IkIHaO˔-"UA6):w:G8Q:EJP4=8?(Žנ H~=YOD~T68b" GL,$,$2@KxHp۶`U61"𨃸b2B a0x,aE5ڹ&vV"fϹ_]U1POL$:x~im32dɓ&L2dɓ&L2dɓ&L2dɓ&L2dɓ&""L2d`*ACAxbXq "*0 UB?۵QO-~_;͜ Oα$vB'u!AȰ|P=U@D66լAڌDIH> 8GptGr 3nĞN99OAЖ*%TƚX*AI!ēEDD"#PCqRdFJPa5&v%D'm#ebRFLT*Ŋ!"3!H6"zpfC 4C,~L@<-R,318@6"Rd\"F C* jIbC!Uӥ'7iI](u9'2|gtGRN-]UWI7.<3ջ<40 e[2|`)) Q&M$ѡT H8"CnWoF[Ͻ?}O1 Gplqs ϪZ6xQ+ <z?ibgf~'<%1;:/|"QŨ2LJUy Zu/G F R[H8(z[w!udX]yCG]-K7)2 mZPJ=.EڗdL1낯A  {zbLi”!b$&kϊ֛{ 9" 3?t1CD*2I$g_Hjc!H;* oeO[v/WiFgul3 LGkѸNd(5Nz(Wȧ{{Px@,Jw:Ӊ I%DGKH!l |S?))୦UVeWl+rJĖ.w?%߽ OBU{ZF6ղUZb䟷?+[ "j ';8~* PrD_F[<x.]5:]}7z.f]P!D>\(L +iQg/menY6`Xb`Jy {Z+b?'Qc_?xPqUDC'%}k}F"ͳKE=1UEgiw~k/WaUWIʪ_}k'/ڿ~~]~z+W~uao_'~fO0e'O=ԒxyS8=|އ,Ah=0~ְ" Q2IUS?7Q_]Y^aj83hJܿH>6"*g&QTI߽D?`@.b@?Nɏb jzGNUB;L&>kO(g}Z_#|_H~0S!bjUͻ߲W# R%$ʂpbrqJ J EÇg5lAɧsW{@xrR"%,$ ILNTEHŒXLd47(Qh>^9?Hn?XH}V~k#"sSxv~ߨ_H!&P(9ϖ"X!K{<?N?Jv\.XX\PO99Wΐ>NGc VTzOlО'YjfDلҹemuVkf̖ݭum2SlYLQ RBȉ%4JbĪ+((̰ D( @"F2 >H|qI=jDE4ljM[rcCdD?u >$c'柕`>TpO"GK=cM>y=IryԥdU'eCVBk#f$U݆(z1aqmXIV7M]B~һ1US~Nj"(ʤwNnp*)%}vvtONLxbWBxIOԳv8Cs4=J1C*v @PQJl #d:5IGdOB>V9i8z#!&xIi5V)OƳd̈" TlLH =ȄG5쪖 U*6ir$.N| UJ'4'rUHLHy(e zCVUJT)U,;m1GʞPEI4w#3tM8$_zqt>}&#ׯ>|J #ylۚ4hѣF?4hѣF4(Ѣ44c, `K\s{>g盟^u[}K~,ѱ%ѵ&ͺ[o扳 9"I|~ENOޟw<*g%?aSHRcL70(AAAFgY}c=g+s~cPZ.|αߥYJŖ-E~2"JyÐ#dˆx:0)VIJi&1"E:]Y/]N:1U+%XYm1͘m 6l֤k%ҫкRR՛&iK,U*SE T7acO'$+䰆;P#9sAXZUԓ!̝ XDxѨOM1eabi`*ALiݳR)RT7%ܔ>0%pȹa~k~qr4db-Y<CQd2e@裄b`Xo(R8$=4OQm͢!b:qB@# a~ttO$=#0W5WG=V11bF0FsNy$HÚF'T:&S%JT&I(d%UUgA?:,ceJcϑ4pwAUKJDE*JTT(($Sg#)(!蒽-et$*?G]T:$UxN|9Y6Snei\|m4Et) |9rYbg4{怒ĂlS0.AHDT Z& GEFibMU*e۲Qm9r ui4hiK#| ?JiRU _]R= k4LIvDӃ<7d| n*]&ʍ-JE}[VU#aPa(#c m1i*crZm))TTW&-O4pV#1Hx8`xD\;OyTz.IlݖaUXa^,L?VgӮ&-SUSΓsj 1232b磽&̙lس6*bJcVrd+ep7UaQEm0 XʭX1B %X䱦ʗpݭ$Hn4S t$QRnXً$Nkƙ#BŖ5ͣ$"%"I (m1I!bb#x,ZS$9Ɨ3t*+vҴ&)c{&&XfJȑnьc!V1Ī1bbҲJI**F*p&,VˀKa(1."EUf/7R帑nl*?~ )Oe-HJB$tΩAA6ScJŕF"|xıJIfR퉧h1R1L̓[6պeJ݅sԉU$:N{$z͜ [qp0Hx FJc(#JBU%)$&! ,JRR%[*PEJ4BpE?^67CD=*>=j¿V{x塣}sLsD:>NUJ)R*isB#d+J7Rai%V($K\*z< 3_-Y[jW21M2dF6iXl0lb'Ee]b=J2Ò8Iͧn:SU=- 7 79)w6ld=I':H!| TI6h R]QH|'p}+|.V(ǂ#CaQ,*|T)1FύS XFC Q'zPTRبxN&=' ]>yEUR%JRYIdeҥRe)RVT-ҥ)RVZT$BWI:DZZVH96.RPS B ]DW3x{PuOdXy q8#3k""]7rupݻN>f41\6al6WWݳUvs;MFL7,yxQ&6rF„ jfO,q儢MADe##r-bqE:K,Kܸ)c4VXےj8ÍzJadçVd+g[4I"<,y;::;'GǠhhn.(x."QJb$EFڄxYWG RN&#{%AGbTM wQ(3AKG 4fMJ U9݉usi;핻9tg#f\ɮeU;8qݛn{t;JIَbK_'&xۺ:s-$V#9O9nL6"*++q !Røh̀6ŽIx!'WUvp>'I}EIGw$ʗi5>* Ǵ=gFAmmBVP .ZhY0a!ߞDSC3qc7;]`by ٹI&Ga-] EM &,$;pY kb1>p=4:)\6ie4uu|m9#&UcJ)2cGelܭ Jrnxݦ5fIk-8kg' plFGrH'f#M$GT"eҒFM)QViHF1)D*b)jWqѱLJ*UH"8%U|}b5i *O'C~zuf;ǝ_iJ GXqͧ:?x*J^Y>he+dİyiOl>|T~FPgG)=Vv{_i5Mxpi:UP|CxVJ(Q'* IJ4By6u^-y^J)bWI%I$W'KyReRBJ(!RR[kidmT%$ZVI-)Ѷ*$5Zjʭ66eVěfIRʩeZ]&Vm)lmJITd*U*8zcgȌxB >T+XJFXI"ʨ$Z%Tɖٕ6YLYRʚҖMXf'7ө*pN AGį1y߲c~MUZTI#b4p]~Z"e?1gD#2V7{ԛ%XnCJ䝟#J4nW~ȇIB>NocSs*{cTfDm НďyI}Pȱ)8JCYͦ*%hYi"bĜ4e[Bc4KZQ u 00!'!7ݛcLZį.+IbIeE6;Nl4BpQ:&TCp"[6KЪp}ٺRϞ =kYeE(2ƭj%,Ȋ76I$&(T^{IVIM6+EY%Q%TEU)7d爛>AN6-󹰪3x$meÚĶebX&cY"ZU[!y&̋D,4iьiҬ#SMdlUR3YFDk**#T \,R^t Ri&JXVEةI̱)6 &x'D$~'M"UE>1bOyRMWR=%*2o8i vE&(-Xzf`X\(X X UIL!I#z!K[EY)d,$;#S<-CJ9,='¡x-$DO(œEMz>ePŇ≠Z]KJN#p,XU!Uq¿vb72?%TNn[t̷Æw;Ò#ewWI^Iu/^:ly,%Jnl;JRTQh$JEIb WIa7IGqB9'x6ic ḁO8vE|'NO7DR@A$eB6'[je`c,JwiOxiiwW 5dUv1{h= yՇ#U/ˆ! AX+XvOט91Ba%r2LbP=f('3NNcFɺ9CN'T)wg5NW6:bk64p7lvs.LRΎF黛7h9'f۽ѳݹѲvnwşmTȮnEݏu<8 ُn4Cg঍C;4uW7\G2wm[1M֫i4cvw'6DS>WlWs=>%K&T.ld=ry+=N4ZR$rA%R"B gHV)lW +*rd$*-B eM!ӮI[M)ZMbwf̙ RJUv%+[alXab5r*URyȪTxF l+Z#11RNm{\VW?PTT}>G]=Y$<LI:͛UCsaaG|,7q1¦U OURrQVDRRC%TTa4 F(X9ʔy$$&<dHOKGi 8 =(w8EW"O}DcLbAx<#G2HM$%+i14֧zvWh2"uw*a1ЩҶ$BTfd!rm]i>"FKڐ|J\,Amگk[Lʹ֭U&LS Y#ZcB );Ĥ$,Dj?O.B}$*ԲeU2TT^I¨0"" 6[.$ytΌm{iWsk2 QXSDCbIJQJ _:NDG%v7HoUeIRJM-~]WJJV `,!<9&dsJJRn`p#s$gR+l1$dIy{=)$TrNH?#*)IRI}~7W'cԛ8W F)"۫ةgc5Gnbcca 2 pl3@Α)Я"%%O:DҡV"/O p}%CL ;A6Tbi[fJeIV((EY*!%*UTXJ$cڬQHF#q?_в&Ju}O֔$&Q1 )-QlX6Jm%U6[QV)526 Dѭ2ر[mJjQTJDRɬdljPm6h)IM&F,Q53 (d,EllfIj+bԕckK)IU2ҥ6Йe6mX-%R*(IBZUJ%}SSTA4aFΐCܯyq䪬P1R}F&JLs*iTTPm8uVu*N#8>N&ŊT+_,FɪY*ЗIaU%BK$GinmorpA1]FB<ᤩ54dD~BJTRHT$*IB)$ܲ#sV5${QW+G''7cQL|Ec>^ DEUamY-Hm$C=i{8h'>d~}׹oM7w5-or 2HLKe|݊4ƚ6?QbcEN >T}|IG0"H>$Cԙ2dɓ&L2dɓ&L2dɓ&L2dɓ&L9s"""LDG.++QErdɓ&L2dɓ&L2dDDDDD2b"""$""" " " """" """ """""""   @ " """"" 뻼UUUUUUUUUY UVBBAUd$"..뻠 Ժ].Kr.r.r.r.p˜.r.r .p˜˜0c0c0c0c0c0c0c0c0c0c˜˜˜u^;9u+v;۩JxylS&4 *cUK$6rp檩 э4Ul&[naJU*b e6JZmޕ |M=4r#"?i])7!$6sRVOΩVH_i2 1_,aM5Ut"JPgQQr9**"QU0+\7rIޝ^׾=RKORYί*lBVc iRSCln<EIaަHG98by?+ra9%IpH3*3CγfaOla}*Hs dMUțXhoEBlR~ޞ-puJSGNuJaܒQJ1Gd^)LO3&>F5bXC#&X7lp݉±[)Ri+&*݌J7TM qsU,V4VնѭmUkb#li-kk_s6mEVʌctčґX0[?*|*611 d^׻OqhY#dWV;s7SJp*JDX!<d;'d>TRA;T4 ]~.TV{hKKaىٰ;rh:tuẌ́&}ulo8g=4W$ݷ&a-HP 6N M9ecfif4,p^]/+zD̂"!Ԗ2-Mj%lMSF͒Hy&rHG'13߃c&>A䇙$W ȔISh{1dTs)$+|';qZDn6Hi!SG,{iUQU)`%, &5Y6ɩ-RJY$Si)+%Y$d*Y@ŐՒk&Z#&fIY6KDd JکdTjUfI6JJY ltnGh>'Ē$"t(NC JX=;4LD,QS)BGHJ(eկR%lZkk xeg]HMYT>{h+TzU|G=g"N{GȘN"D<J;ݒQ#Ijw>ydw7TT6b6I*1jӳ䪳 blg'RTD%HOIisdRIUEJ HLC==I2sT zSb0 LO6G&%07aI [cc 6*D´!RhJHYjLʖJYna¢ǝjSMFÁ_6Y.4-)d^kKl(͎R*Ee6|HHB|=C|_P:O[WͥELA:V@=Ԁl(Ũ C{x>O9OP1|X>o`']?x?Щ Y-[*R6>)Wcl)>ƴ4l+LW) 9&TRIe* X)hhTM1K Cd!уeiLmGQgҁ"]GT+!ӊz@[!$cgNt@zI*! $_!L>5q'iUZ"I END?pcxU^2BOМDRv'G èӑh6a?pcAU dOp? =xET AeŠu@2"7^&Fd e&&Fb6˪):]jQV f&%#2 8r0bIbbp~rni2[jݷJ%,ZZŁVDH͛F:׫U$6dbن,(pՙYV-N?tYmt)U)*Xti1 cJ* 5"bIE$FM+K#i[q+H'"EHrErcdPn"KmԪF97y=#*p>\Dd%V>F$% }B@x?#z6V0-4U K$bLT¦ri]!"wZ^rLyRMn!V;iESlN >IGfr*lA!b~čsTc>W6{*rQS´w afiQǼ ͛h 4;yg't}mtYԏk,*N$E8NL#%5*OPtrhiem(b͞%d!"r#[S_]2ڽjZNGhy8 Nn䑆x/5d MwXdÚu[W8 !sa}gg0Dl)hWgdO166iĵŅOni&LbeVkJ83?ZN%;*4dh@ !DF&V궒SʒII-l~նf' @Gp:6r}MiZFʕ]zV$p=Ĝ,W:毭nNfH8cSNNpөd>: <&$iARuOXM*J<cɎ$Rȯ&0 Ws ?F)ynH#tTab% K-IiRUև hUTi_L+DyҶ l7K^ Ř!ȫji& S \ Kj"ɏ4&Y"-UU9udt뮩K7YmRs%-Q f  gu$ %t﷚1'y`' 1|?ǵ:Tm΃$J$fɱn'+Jj42"OZHEQ*TXB<h 4WzwȄҾxPi/$)k$1X$AC$:BR>eJ4 Jd`?=Bض-%DI"M ѓLcf|%8su2$=Li__eꀏH)dGWZyUUi4U03Mno )T󱕲Z!FlJG+lيR,$i?3L7ckJ{$tTݳSMJa4ƕ3̘ªi)T1[r$۷maT ! K48MXي>;-IENiyCJ2E*S$*h&9cTdf2dYJAaQdAj "@(1#TFʘ$F%it,i+rEreK$*f'"- oM19ŕUզUU-iR=85;Ʉ}8ݳh"TXkT0 `lqXRjN]wktf++,G2)Q3/gkP}}ZuZij3R10ڹVo/3Uwv$I$I$I$I$ԒInG3oWNf$QV&&N+&,ZbWz]EΪץ*UUKwwn謌I$InfffnU+wuڎ 치Dq7+;OKRͭJ7 NfeMV,񸪲ws3IWջjm+۹n!3$l{~o1{ HIӘ%$$@inf`:%eػphtv]ݸ 4@wI2lUS 1!8q%oZboniF֭0؆%iaCs[ҍ޴ nkrZQ֗fٽnE#vo[Hz]R;ޗfٽnE#vo[Hz]-V U U U Udddd-Œ-őőőőőőőőŒ-őőőőőőőőŒ-őőődpIdqdqdqd/k5yzy5,jɬY+,,jɬY-}1OrClI#iHQ#EF eMB5!%?ՑJ&$TrTѥ1!*1Y+̋GRQSr>GߘڴW!돱\_ÝJ=.4ILO~؇H"HP0IyMVU&JU$| b NVZ lBKL'VCe䨑0&(YRK!d[46&+K$a2AOXjmF(bȎ,*nc &T$Gl4 *)XF)7,E*ThJjL?ZfQcM%JKd*J0 ȩh*ly&)Yr,!A%3M h6CcER?NrndD0GdĩRlMHхJLPv-,niJMkikQՕTiRVRI@R"*H1U8aRdI)cױIg*vrwt--Y8ލ*QQUV;p7H ("8)=*2~~${NlLUtE3  si XooRI8D,`QtJPj,)zT4+NL:IV۰7R=J0+zDϗZ[""""""""""""""""D$ګLI$DDDF#emzs4cT&<v'2㥖EeOiU6R TSSUQQj5MLh`ne>)H ;@7 X MHK" l)-ʼnQk*Y!6,SeY Z vl4O,"l*5$I2CcdM")(i+d(Jg{EIKRY$ե$ѫmTX HJQHE% rTCPI,P@DA#xwMa_{ $1u;O ؅Aw߈xBʊ@pwMcX:B'&Y =b}Brsm94b'_cI͌4;\nJtSL V)0bf+z|9C?βG&y8*iOǧLzti=G#&OEpdst+W=Õ<|3xEYo{`IZEwi\.ˌ qr2CCdQ)l Ng c+w>U[Xն֒䨯:)!*=T}o" (@%\RY'ĚK UY!"Ub&0QF́ $IO;0'bR*XRZdE[lT=TTWpxX:$ܟT+ُC'u{4M%Ȟ"TB;=jR8~s~SCМO[!OC YI0I"T*y?iڔJĨTJ T1鞕*&*!4JUt~뵩-ґ5[-TUDL| )4yf2aAl`wbELR8QI= R$RB告һ::$~snq$IHJARNqLI5Il-BԒU7ò12I7z}u6{'ߤdݼ dA:b,&FŌ<1"ܘ[s4ن%lbI`UGV lģJlҰ_qҦ&:1tVҒVTSw%JCeW,wb24TZ%RҕemXHyuFupQvWB!?l]Tah%RSJř MT |'>c'OEU*<XUS,L"%c*գE#O9)H &){AS`li:g1_S >F"B*QGI7 THDSAR ңQ["Dʼnf4 P*dRYS c UCWI+t~ē$9C֊*`M4^#6UӠ>I(!N61U<ʘG?s ЯQ'4iU6=Gt]Rg"d.17Rؽ׀nA`G,'yU5QAHJ*Q0bHIP2ǐ䇥ObT",ZdI El R&c R#eiJҰL\- 01SaF$l""I6Mľ7|'~$NzFG~7= Q.$i&?I0a+Eb"ԩd>V'I%\I-` !$//jKֽN#`TҦ˻ yVEY"$%&w55zۦYTt:2C-ITl'8$?uOTuV騩L<ƉْsW;.3Ii2HaR)W9Wn8cQWOd>"yb4*DbUI=8L'\%TUl<8+JTg"NJt*Bj9ޖ:I~xRpGyw>skو1= $$I1 ,>[T\HԓJy+>7n4ؒ=dktdld2D:>%y<Wi[Ui&cn" pK|RReJ5$EE2/fPo8P5aɄD=Ql>1)U;)R0 0"@,F hŋ/[D"ѫ\FRP&,ϩ!SEٕFcv)vDa*$1 Q[lb 0eEwmJ7ҭXd]]WbPSJʲSJd*fVd blfȘJc̒R^Uyt†%HT2h)W]^Rʑo:Z5Fڤ"+uifNNCt"'K9!r]1li),CƶQo$)Ro #ίa *EJ31i Y JUƖDҠ11>ԓfѳWfKj-D[BȓκZu%"-̪knj55JYϙ}zk$L_3ov|IlTC,T[I%pٖޯ-M0bV"dʠvM)TBE<ƫ Ά97$7jIٻvNm7RUIVnd2ID j^$y]zstcgtH$ُ}"mz\&I9*DU"*7d<Ln>Hp4s{7wpvY7fIm,RTUt^5:*y~i6Tɉ[16”2DT$T?;$T|1ZJ#4SD1h) (9UұVIƤM2iKT|Mܔp4!h$n蜞C9:)J}FXT Z*Ux+kl ^ 0ؑ+̑bZl e6ّ&*O9󹺪pNb{H8!1#Q-.&dud`J/}"mmS "+bjIIZȫih*JSf<p~w9.D+ԉ NGB%R TJDUUJ*!v&HI~̝kQڪ+"^`ņȅHC'>4NW+Ԏ$߳6U&j&ҼoOۏ}:jaVzY'R<힕l)X.I|Iin6WNXѻfHb9!&HFƘ&Nĩ8X-.[ LrOʭ[18ۚuqѼ1 +QZaM 6Z0EIJh  Fw:6104ni)%aU<;Gؔϙl٤ dҪJ䲶6i2C8)Ne<44]؉C&]^Y&/[VM20ں|¹lPQɴ]#R}N\LY曛<$ᶛG=lnӆ)wnRr:j.ʾqjN9ƒRw&' &3h[-WQѣXٮR; T¹մDvMlܪ6m&, JZǙzTͤhU3lUxکlɦ{ܓIecɹ97ĭi6itlM5b9+4aQMJm&ܷp8&IMͩ :1Z#5XV`ʨپPԎ62Q٧ w7z 4يmOkew'/&"iƞNM٦NRQ]HBa\u4Q1jLC95R%z}O29:>^9L'ZqfH&BE$&f9`=} 7<nz ٳgnSqWF'{ר\oF4w< 43x+⮋:gCNO3Ӛt4{grW:ƞv4r> hV0\:sf9Y7TOJaٳ'ޡk"hC0DЉYA`@(8_/Hp,P\e:$ocK_B5GW[FʪFpnݻvUll+ųJٳdpCgw(x*IU$ TI슐s8=^z+>uDxt6aoٍ)7MٳF+vm7n7ciiSӓM"%HʕJ%;A|LIJ[TYXҒ~wg{M ԛM)r1URDةI4 =jSLJhx,O۟r%}W;$dBL~wzZc 4Ҵ#LIXTHB=,iMISţ*hزNGPWu Ǵ9U`nQkU&!L*Pr~*{%'O1s_%'5쩍%)͘MVĢ FyAĜG7‰$x#u1ͱ7YOdK Wd6lPxpstI 8x1Q!rlQ 5TYb\h=ٓ ̓W _ 狸}n!уBc{Z|OyDJ)%X1 A, Hp l*\ȃFv+H[,2ơ 0g 4ƚi& lݑ6n7vcy$i4v%X@F@]8GA6+l䮊zSgyЩEh d$#A< 9zwӒQ䑦l-̈/!Q"-1 FE\в9Y*TJ z68_CsVIެ&z}[E; X` '9jDZOb6:ia9J,d@6XJ3akժg=x{NN/̪㝻79-^L*-I&7?]g1Ɨ!ͧsNJA|6i:9$4V4:课9Y5LJt2QSf gb«.sG3!\Y#eibvt7MΜy>u+MT,%dBIfuW&3Y}ݷl]q9m)IK#BsV՛mfg"SgrupwxcϓM1zfl$1DDi|ml|0Ó$t9SzѩL+NMI+IT5g iՎetriZu)۳g67S۱4ϽNeom8Tӫ4¸xso*trtvnN9]Tl948NͬLSԭ&:<][iU1x;8uGTx9+ljʝb ]D,Ab%,2J'%pǮtl3ZxDBMZv@*.{\񵑱NIUMK_K4imuεrZ;;GVsQm+[kke/Up3x7bcJӑR4ÓKl%*iSJջ퍛Udc:6g_[M9:U14"NKѤHD mR7%r4PI:v^"txޖxNkWWgM6fj%sv(u{G830PG2x DV! &fBf̐M,-TڧUzH{]zx<\U|k^9Q!C9əy84.tV#cgiJi]][ۙDࠚhHrR$9njl+I'Y6&3 LF'bL%JK0ĒLMY dJ,s:w!:l}̆"6LKW^:wnutiR3m;#hߓuZxĥ$XGLnr|O#NjZaVlѥblEL? F4sI=j0iHIQRX(I,A'}I7*(=ǞJ%RXaÁ4.>w*|h>Blz[3 SњiICQn R8 bj+WtSeX٦̂iƚjzlmUS!8 Hdr7MM *Ȋ꯱GQͼ\$\fNj|.JRmYdv@G$?4VIJBI'ouL6cUeԴDH4<*r #!NKFFnGZ) 1;5MM,G6.$$lؐS8+Rz ةDP!P['֤&4@N;lI"NHy$)$I66FdjJmmJ/QP*K2 S:#z0fX*W8wx(ca9cH{od6RG6< LVy^=\ (B,`ʕbSdYPBBkV򚫑BFUmZjmsVƶ-ֵbZaKk_=+ɭ⵮捴ަe lLV&*#KTlۦuWKԫIVHLX1QCɾdHt1ޗK$W8TCR'[pDCsJCWDzùS>2)n;uJ&%bMq7O:6.Vϙct8}.MnUXw晚VU$XUwSN7Y1w,UݦEi%1M+Rrc )aL&ԌZiK[=KoꝴҔjy]u]md dŅLJUBmRK"T ٭c1RɲkJKJTˤR{b/IIj<i];EI"ph#dS9'lYyFM*bēJUiRUDJwty&+T)!HbYnbU^tD ICI&=ԘI!)0J4| CI8vdE4gi&"Jd*W'͇DJSbm Y)ݐRDI*Hn&} pMjMA*) VAY$XcNzw %6sj'V)SJˍ4ۆΊ)drS;4l=MFwB+Ҋ%ԓ`gTl5kiicjVREUUJ!M'|;pNrNnAQ>:_5SA J!UvͪSS"2"QAI d*HTKs>E'Ga*,9<=nLM$ ?zb~-2 2HJIORD }L:b/ {0z%| *nVXF=1Y-I)1`H)4{{RI>V>TI$UKbJUR>Ec"wԋ,(O$H|>F,'bp'`3s B"t @<ٺvtlj*ZYeI^fSJDEMT"z͞Pv'IZ#+t1I'Hd;}LNa=hx䨫$~l,K,槾n#̝vYp9='k[&l*Q*(D$H{lFCa|D\r|Kz~!>)#K,ZGU}^ڵq5$H$[U RUKTDJK0dL$I$I$I$[vnI;a:Yt3(-TZWU4ѓbmw6Tk[jr%]Zř& jEq>>\!"81NnTFFVEoseےE Fk>SU͚wyq7UR\YMmunTq"Xm ]jFuTrBBFK0**C^lƞSw?꒣JN|~R)[ֺ*(wq3 FZ6e$6jIiIL[SAFH Ve2E2&I6Y$-iIIIJ]5"ok{/62 JĊDvAA7A[dEU0 ,=shۅp60 *V= ";9|)$$]P6= vqp f>3a]1Е/S2,*3IkmjF%}ծmV-$Z@?[}nULl41Ll4,c]K%LLLkƍ+-KlֈfX95E_XXi[1MYĦSS6c,ٍmW6+[YYuce٥i⺋6ZRKM2lKM-4ҙf" Di#B1l9Sr;sTH* C lRvMn,,dd(E,I%JB icDv!Iga甙xE> xʒ#p7 eG۶1o4L#{l;Iޯ T!mY%-VYMkR`pk(b2>Q|00,{1"ɷ,\lX6V-X)X3\r貶pƘ*U7nn"mX6*M7f1pM [7v~F͔S$nK,.iͥcm?;vpfNNcfݛ9b$Sf抲UdTf&TpTiѦ'1I4ucffLsaVpIipcmӛ F &VFɀeA3m#;Qpose(lZS MĢ•RG 9m*UIWwdąny;*Cd Մ6zeA_DO5 =Cxd @f~CŹm~f%MiV*SI2v7S G-ELEhs333 3>Mt5V9’fu%hu9p' X]?W0E85 ]Hjl'U"HH#'Tx4$^<_-1)"U*(io.qݻv&p޸{8xA=۴NH qD .`issJ$ȻFVyAo??ϨZ▰HX<@Z;?4q˛.\rWY_Sf˒J #"^:sbgG0_묽Sn*_T=ΊFVG>|5O:};XZ4-.]KaW kCdDYOsےY98j[52\H Ho?0ы# Yeß{QE25ESFxXVUUb&_j>&>AE>ҬN>Q_/,` 9? JMCOߑ j7%#JU*]~_ۿQVDST*=e,cyhxDn {O@7?73w2~QT=et79AX,?*|}/C~5: DQlCguOg=zf勐*Y|x8'zMGI&SլoϿ Tʽ]忑_xɏ9r<\alNBd̟.˝#]:w k gB-d夰'5O8 !VI05[ayu$?p8ma u4fqZnIM+$ZIȹ igzLHnbxΆwêa"Br $Q,I⃆ 1~h9e otnnad=/OOgya5Qޗr}$z%:}O["p4-{N _ؚIi{^䎇G3@X}x&+X!i|z 9۞y>52\x\{D:to4AE Sz8~=s'[}zg^ӱԳ;}&[ O$ {t8͞]+qj=YzW}b :  In #;=kja{_g(li+rj0ጱEQx]"\uQ1DCSsWzi*9Xّ@v۫fSYa$TrWmU"?wt2ڲuUGĦ]l >y5s^{y$tLE .yLD&.U%Q]bŭRuM2jJ˰qV  W___׼UDWoٷeͥ٪f2ƭaDFUc.W^`/AL/_@;@c$yfl?*sANYR8+b `a[-#Cς5y"B&qy:彴Uʓ|nMGv_oѽIo p^n&,zMVK*.,evU"H@`Z{*  FCqآAAw6n* DSH/d@ H #J~Zu6zDM` N{r@I Z}k9$XN4$FBs0=n>Ոyj+C,TH RZhUeҊ3j>E{wwq ctT-P{^uA~wC|,h:ȷ !S9N{Qh>?Yui LS_B[(w.xBڃ}@9 _p\[fߡz_?h#=VgHQ) Gj]'Cp8Bg0$bҰ(?ӆ\l/wutI5jzIi ծy<H`F׭݅B^h$}Y' ({ԃ>vaߌMUUC"f:\=5K ڷ5BE%9yCiEwy%}նEha?{9 r|ep=d3k1xdx/d2q7%.pz 5zkN,m"R*4M{zL۪Ŋkw9Ĭ7L=_cmԊ7KT=_z϶DR)Nء*/7ڤvYM- ԃ~6s%'Qt {O~Yc{\eJZL?7;g/|Pd/o1g*ߎ>/<{dM7dҮ 5˧vʵUliCcUt/^1Dّڴ3ޝ^N>Yv8!v]LMT82;DoIC˥E%;HJ)wpxU;`|7u3%%6P|,wh[DͱlN~Kj/(Fi1ֵ}B?.X'@\HI$<Ȗ"s|ͩy9US MV7ڋA! =M~`[o;a"nA0'|Ox\3821b`̘CMA}=! ~?ٺ#8d c}ƾ,daT(UIUWsٴL~}|I}TF*f_?M{x~D-!s־ț<<@ØyI99r9ι λ].;dC&wWn2;nc! 5 %_ޕǽzshunɟ}l `X n5&H TVUTxDMc/Caq!0Bm,B>rb.Ǩ|asw(O<33=V4\(_gftx6]Nʈjhmf ڽ?xvZF }|jpsLKش&L&#. gݠ;F~ʘ$Wozz>I&j75^ՎqmRzEW#wRZZs+ެ9z.m# (dkNvHaT01IdY,~6ܧtkT<|/ϵoW/䟋•;Ri*/huW%w-eZ8MGyuߖrLٽ^ު>Fg=V^~Q *ptvWEuQ^U3渐^{yVN?i:{=Z۴\H_JӉm3U.*vz,b Vtz2'twS =} ֞~XgSCަ^Vsi}nwuYwBj/AsU+: & n\T^ϔCzt3e;>>He!&=Oʸ8?9 L$ &kkA~K$ØtDQo܍ Y$NH0.=9p S\dqX-%Dcժ5ޞ?Sٹ(@v#UZhda}R ZU;/m]),r瑩9sO33\=RdYÐvr9Uv{Er(j( hfb*~s?+<5?sO"l@=%͆È>f ",|$4qu ~yZ`vu$>v|?'c.xKn+^Ǔ]ݕΞ̋9ur3fW/Cd5$6+j[N[ vz/y;;1nC˳e'V+1Upt>GYgk _ usEJ9+wq-ûOgeDfXkcWJ ǵ]0y7L_UcqJj\sio$-st5z'ڟow)ɳMCc!ؼ]8v/j+<\3W%ޟI*pe+Z=\ޜxsy<' J`x mw#߹iuٜt:A]gm/oK= ^57z 27$)S_'\UrԄ ϖG5nٺDC((s=v~1ɭue^p.;_ I{7"u6gSaʴcQrdO1CkG`'6'N&BTSU3zuYʙqdqrmΚVZm/YG{FsoUFMFǫv;[$e7Vy{1)Uŕ yuc ^(UΪ%hC7Cݽ%4M=-2}sqލuu_6\lIof N[˛UԣoϷٷ]<|ȾYjsZ8b{;*K-&ጓy!ᬻ0R=qs+ErS#`Ǐ]nk--Ȧwކy7`i VKu8wE '3j-ދ9s52*6Zrsh8ure6Z(@jx:.=O<ni\B#Ȫ*spW5'#ZLzMؔ|u~ZPytG2s%Y.\/?\}| k?R2=p杹Npe dK>\Ye֝:^6YC˫\#2C. b{]7$.Y쌙V8@~CRO:GYdIzl0.tYMz~gH+Gaspɲ=-5 v+$w};s3xLRpgMs\j9ƕ^i-4WWǒ0uky_~Mg8ˇRpΔ5nptbǓ3R\SY!0.u؟K|]nH V>k)Y+nOL 2kbLD1%NΒQ#guנV+rJl,u5d?^/Sy,1,sqVl5[꫖ѢpSsl%%.ot4sljO$KX=uzclҬjavS}۾:;AWH"N!UPdFUd%xW׌JT*x Um?7`]ݧ2h 괴'S!5 j*%j @31zΗ^KՕLMA{`=UQM^P95gR.*|N}<MWCO4[i4t֮Rh="/׬?<[3&j0.龎ag 0XTbl <:rj-]܋WlIcuj\7ӜT B,3؍;%ˆSpu޷>,xGɜ&4G11U@$'%ܑ Y+kkS {S!z Eρ v\]A#f/=ޞ.~eO7a2BqjK)aL60 J>^{dܨyc>= 0Vѳ3kR%U5ڽi*HVӏ䯙U|C}/Y~8ӟTZiWQ:éUQU=)y/Y'W}3zs^cã;GTۑqU]Wshl0;YnbtzgFg ƿRlzk%?!;[{֛LMCU$1Q&3H}<v?K˜v;IK$q,=&ˏ? Xoɒ[^e.zS\siS65b ,{eFiw9Pws;'n)Z50N֊"M{ (uS)^IΟլ'zU;;~"oO)|w8mr(YMNV LqYS^K{^[!tw48*>NiH羔9'zN_xNsA#"'l HItb~I"F^oW}_ډ$$t=Nѡ~./P5^Ƣ"eB$ eϮScтDQc:h7%SbOz܋Å+s^_bv"dhT$ !8[,l>wvI3*<=ly'pS:=q ٮ4S_+NQ ZF9]05YR/U $ATe‚*^zEԓO֙)97?%|G:{gW§g`sM@QӜQ%C57:Q(H+y =7u<غȢ|TTn ((^_Jo";_!`pD@9<Hr!VԴ;;@ SA,qB n &UIg&;ΒlH>!B=Pb_OÃ6gݗ|tŻ2LiNE90Wuq73URn%*%Gwxx^/=WHA l'""w㝂A|&. 2YJc%W+Ÿر8OʦTօ_2ɵI $E]/<HsC?`!_t'4D?u2;GhvNӽӨT"*NԏIrug_w82EZ=қ/ #Vm p h.+^ ioL;PK,ay(e*Bh 4E9юPS&\ aR̰‰8'j9ҀvKpUbF!XY5bؑտ2~.bN 1 \aSvMr[TI$ۘ﮳}uP)hI$UwFጜH XD,,HI,lAe ˔f0Yb̙S`0W>NDD \L}pψ/Cw^s B>?*A=3>0QD7әQV(e잲_'U=v"Gde(T _iDY덬U*vkE1*]1!`5B,גI$BXZOZ ruTS5z˔ſ&j-m'N., %b~Itu8: \Z*Dn02.ξ ;a UU2;gc'S sw{!K~GD!:fVW:mф: /dZjD<ERNsJH~2Ǡ$P>yk̲8؉yLȫ~b"?g{5 smČbVIB\OJwJc}^hiOf5)0-[6:+|=+ [j㮝 헀>WaԈPTe""XC/彽v}><;gZvyw%xX>T<@Qʉk Ϸ<-)vzT^+> 5u1@RŁ%|nv瑔/K qi깖[ !ܳ#f}TmD]Br&m3!R+[Emh3cSY}w~]z)vKM~{OL^u\RSO MN$F'8z`Bxm{(V*'w#W%c9{N,4+]<72^kaN_A B*w{z()zUDpzpO=RJ\r+N(y} 쨁&nh=sL2:E9W~Z9M70` !Uzh Y]Gi$8BS" $ R3ͶkZC%4^3VT8GȀ)ryӧ>'*s3|3R=&Ej! T<5si)K@|=r,dA֭ <\ ;?'?tbf*z1G\SĤ6 ^Ud TI ^8H$=9UU>Nj*W}ސIPCLwь( OcoTzGul;RW̟56鞏$p}n0z['Ed{[g/}C/_4& *yk[y!GiªPF D&릅Jכ(,r9;O W'c ?tEj;zK XLeBB* evj}2{W/DV"]A'Q|7iWsѢ+CTzk70Dy|}37sau]v sF`X8Bb_:׹5z?ηONEA`M .w0ҋ}>'l|yN\~;d|2P?cC;ϧg7Bk>uUD$N;` |}kg/<9Ť1x{鷎HaDob 2AS -:߿/)۵ٙWOsrJs Jv)r],z2>:$W.pW4)WFb"OzWO<}_*K|: jaGfghoHS\\u$~$72~A1]7s'yT J$1 N&[;ݛwKȣĨ_H̕cњcR%ffff$uQzJlD~L⫼K;|4fd1W@fI ?.kU©\jRDK걵A 0 C [@>󜹭|0)R}H$xu&xRD-N3^E4&'Gj$q\G뗆=2asL./DPe>Om5/{F!jTjfLʼ IHArDN^>p~{'>1T TUTl Atr|?'Q=37y* :9 7̞ivQ/"(YyP=Bu>|ʧG2Ggqy̓+sR~f.̸>0~7b8oe}}o49V T&4vMƊQЋ9Az?#$.76"D 7 CI0>oĿзQE ֥Ϛ!Buu#_ӿߞy\{- 003*J}#f]-FC{Y2XF cT?{y{$u㭵FOEJLS6M[o8ńIHJ!!Q - 3 o{CWZ5mn>.gd>ow}^?o $JNS!Bv+~;Ҟn3|I Ǘƒ j%AEÎS}AyV7"{`ALW&[UlgRoHiԇd~/};^rߨqf΃#*HlӣǎvjdD2%W)o|kvY'}u><đ N_RbIn?Iȡ}֨fPgQ؋ەj0xaKߖd"-?[ Fw~;35"a)=4yTq'[dsxŷ^o=:>}YOʇ%#ky{rhӲ*m_Uv DY;:/%SYdtcQ$tPRżT*9?{:-.;}@VS'{샍s]W>ڭyWv $V65{56*iz꽲7Jb׈rx87jG=^Z:B\PuOQb0Ra4v|sIǁp =${$~G>^iנq4sjl>B#q_r+Z\j&e'vϠ(᩠96 Iu^c0~]ܝJo=t(gzOv E_w7_8}Rp.M6M-(KpIcmߞmn *vk~z<Ӎ~kbU  Z'7B4P$D`Mq[p2xC<Rt}pE (v{VʈI$! ˷3 ޸ q} mr+lZ*ќ0^vn7*"@\sQVqmd nV8"QPUUT4XP>uiѪ,fc}֟夎F]8^kDo`~w}6;{мab(n]"Rn2%߷dG#K. ZNUI'p9 Ld_%qm;>"T "=Y{)o>f S"[熗y'w"SOF >T~}N0f}WKÿoz/|Rd$[_ѿp}wX[UT?;UDUgS^AD ǟz]A\>6/@EN*~}t+Ae6 jmk:A /KςLYVT >Ԋtpm\zӿުhrs?*Oٙߏ/=o`+ܮY.}9  \^X9</ {LEe rȾ?.g怵Zle;Y]JLtR94;}{Ӳ;L?/2_nkj9b`-E 0ZZ$Qm{UC/Oe" P@o)OFCdCzʢSA BK|bv酪[ܫa飠UBh}4DW#՚o^"&>y/QUPN?u۫R+7JK0ZRk#&f 7P_2|3Gzj~M3Х(E+JjztwZz?]W1Ǟi lG(yWI?g%/%ܵ2@Cy' ?2 {[ sӅf.F>T0"{>]  HaU_ZTb~a3-.L" 7Z[{[w:T%_GOQuף\*T(<1k!}fe9OC9Ϡr8+%ÓwP!~0O ת8V A߼&L}$1@D[KourRh>ds;[9=wae9aFZ(`uV܈g{W4EYxW@hq>w@Z? ˹%'^i{CEπM:="y~qP $+_g׵x bȄ 5FA{!=c{:{v"0EH qTu&vKVtѾv;n8ךz #$=2($@&R" }*_pO~wja-/uo;tRL3]j-*50%?rN@" sJJA)!-Z 形mj 'vXKj m*j_EV"_ΈUYp "ỵv`AF#"މdDP4y'VMx>BI;V-1U-LgM_%1KU7(a2qP<|/ז?(y)"md/` cȌ!U {po}(wT:z |ze8MC,WBI4pHA⑉@Cl 3ŋc"2nqe:S4B(q5bYa=|ncBC2K>T ˒S8kaP?! JU,14g+^c^y~NXL#e&z_ȔB*9Lx7* K ?ci=A֊9d!SiΛAƂhG:YDx,[$YK2 m`)كi݃Ze?f˰k1c.?08{eoIm,JJZ r[e mWR1w4`ֻ`p?*SӰv oѮ`2g׀;0O^G2z5NuR!ޯUs"c:1;xxZænSVtߊL9BDAC! H2["'b"Td/]@4l,EB{U A@Ǧ𝀡{}](> ܽ%)2iWDG-{kmi2jbڼR凚cxmCeI޾nsiQgu&%P`D1j(sDȹ[ğБndlE[kKR[%ަRt֤LFFi%+msWԫVb EAob>m࿫Tf@ 6QD-̬ZZZ[-L4_44ai.fa_V~/I{[/ iRC2f-q #!?  5 NjQ0NFl2t~^*Bnraj!o"$$_0$!&f٣6$XN3>oj򦗞qɟS t'GxpB M[-P! d;"߰CPgq<3`?TO`2K$>?~y9(20 @;xT[hyىEڼڡ+C-!& c;$f3ȃ=/j T[BKTwBL(I#2L sg&fRhUf㍂(=֔/χ$ HFAR"UEK"RK/<Ɩ5㩚z4;u`ʥFB(r<-dY i u:hPq>-&>kQ!B[lCKc~[!3FDᅥD=N4[{!#y</m /dQ??PVIx3,(_?oȨ@}a()6*S@ͨi(kd2HT-m5U[6gyT#K|EOC@oy^Fb 0}aOlt$[-BڂIR0=Ӑ} ݆woﺶNu>֍uP ]:#byu\^B^!mP9P ]2G_ =|[W>6 @>z V@LNREQ@$vk`tY`"=+m&B@P4Yꔴ4hW`a yP@b<빻 TA4@4}LaݟOë}ژngZڅ|6o]Fw{p1Pun2-UUZUVˬ `hgk{I[S>>^23} ywCw=v=t{=es.>:*h|=P!@2HiA;}zdׯlru[` QOP5c8wDG >{kYml^Gz3bC:w^\]1"ziU{;0-:=qD;}N>>{__{ jxto[x R`ڇݙ=ǹJSׯlWr0 1}=5g7w{= \sŸz^ޫׂ8ϞVuޙח9\Y.װމs]ڢ-7ς}{{tYH1 (7;pXS 4 QA$MR å$}h( Z$[׸qzݝR@AJ/Yw v%C4wׂAJi&u= Q_@ǽU@h6`օj1G}*)QnT{@Q{9wۥ(Ef>o9v@Lg"tso6mLrluk:nj6ި9_W:C`A mR W4mCG"3P{S}gf}}+}󯦖;X \i"}T^À}`WMC$>; >=`ӻ+[^9l((D@L@ @F2dɐ4h02dMLE3GhDڞS 0ʛ B M@@@4 S f`=MS'OITTz6$2PڍA di=@њ&OPJ$ SOƉ&I=OԞ4MԚ2hzm4z) @h   4h I"@ ))m='OOe=SښyORfFOSڞ4F4 P4b@ި=FBBM&CC@&50M3DcD AL#Lf4MLq=ECN c_Σ*uئl?ě9_i&8(Ѧr󾲹;Vy4⦕)F i+1= SШUrWi.,# Q&!D[B*L0 XfB\$b]0[ TʑpbbDN#eek*jRZVȉ&"61" %00JXġ3 HeH+x4y1v驻H:)lBurS1VĒ>6)?q1XҘbR$q+tHBt@ 1D¨JңأeM*-LbBXSb ;HnrcL[5T%D T`J*:4L2$b5"dPŐC4RDSTRYbP45MDDI1HU1Q1$iABI( J\[pUQPiH.ø01SvcX9W6v)6TMlbJJN]<-~*;^@JxQar!+49t{zސd Iq&q\>ed*X:oOGϕ"{[un"V:| r|'m 5?SY8L,Wn>}O}0.?!F'~v:1aOnUa`neWi?*lг`L ~ѹ٥;Uԧ4iFM044aMVBq6~VtbMB#@RM(^R2b279'#p![ WcLpH}QUUJGVI*iy["sɕO7vߟcנP䩈xƇp]$amblsBpa mT+$w TNtrVpEAKy`6IU 2+͓JLa!C75P:5Ր~Lxt8~6X*|VޫGU*#YZO*ǁY%TUDX?mNo{GƛZ1f}2Mpf*iba*cdƌIJbdqVDc77SYTw!Cw6}c`Xlprbo)XX[18j'. 5lB)0Xi GI*O= .剰tJ"{R8ChKY Y)8B漘}’THJ8hY!S4yŰJl=B$ '# |%Msl~֥8\pϋ7{5|V8 M.(S AM $3tpRxUU׳vJ'su_u2lL; %‘x.(>Ǒͽ}w 7VF(~ prmG]MCI "l\c^P,k .Y)LxL beIQ5%“f8&'x8P8*%$1v G|)ݓ3|'RAwBÜp18Py=Bc%1N==V-js!d3c"4;KmQPdy+yӰSc[;lU !wt|F)_}\ns񕹣f92m޹Bxo@\D',܉H,_2(v=hcEG$W(΂Y WCĹ'wq.n&KX-#տTBf,P缓u^n8lh.Q8XqD9BAHqp wMa0<:C6:bGfD.!{,i 0"I 6XnȐ8جw<7N<̀rQn>C@s͆!6dH4C"慇k!,C)ñ nBUvԆ!9Xm!!.xN4,youGNwǪ8Gi9 &ٹa˝dž>Q\ P7x`Gg8rFqGB qgqb.tϙQXB4/$t8rj5oQ='0㒊l&oip?JzVZXEt+j&RJTI R0HF" l|"-$#lI@@͍N0dAC_:s-s`G05NBP]$ ms8ժfJߊ*"Cw$sGiC{XrtS A荍\i'7.r%g ID 7̢V$TJ CV8PIFM/""WC;F&"HZV~xEnѧYǏ)&5Vy̎c=r2mvލ؃+2>R% rږ a0 , $ &KCZۓqZUZ(:%wzph%2.}J8xXXg IoLCF$"Ҕ𷊅$DĮ12"""s{N%aJL%z)gn{hi=COkCh԰6RF;\ |Y{5ӈ|dHk&LӴ;hu܍^g[<<= !*UI{|{1$>Iy'z[᦮q6sa_$hh#ĸ"q &̹cQLT h,9iynss;NN8'kw'kvXSfZ;MFꮦ2`%yB慉,܋863cC9bAp@H$ MB2X|3кƸsRs"GD`*4(q sq$&DԀXAnI;vH,I"~U4i{!l{ #ڪ= Ǖb#DhR>2G ܬdVm yM0<cch|$rpSD8IbFw35!,Acѡ r5c8* gv:=Kւ4AsJ&C\Ě0::/H9"$ZdQbHJ}KΆ7 " aۡ(#p:uud^@!%(<hI~bTtE) P( ЪE*4'G-Io!*8\ 6N&/r)`[b|$19O#aж%Erow=wpĒ4D 0`!%V)dJE"(xe.5{AWB*Fliw~.N39'Qa?>cI>f4@8Ass I(GNCשnu+NjWph%6&&79C4d(7&cUJkTi/x;#\Ar4 ,kBaH Ig=/5>w|M&aQF<*af y|$h2#Ajv.GQkp@3~}wKßSQڟ[X:qri>B ucv%|(_GxRCTT#j~~QHW3I1~SƘ/~Kk^G&O{Q\H2*R GttDhTTUAi\Z+ gW+Ç#=OAcQۼV暍 m,X (W&lpsJn I Dv% SW#A13!%9ؿȱasa;/ dD[TtgnIkΟ˲W``dK!vU7eǕc؎O>CJ%T~gpBJRVT?F!\0, Kѩ Qܦ%%9fb cxt# QecliJ+*1lq˒J+1UUUUUUUUJp1>4UUUUUUUUUUUUcfUUiE)JQ!DO$6""$!B)DDDDDDDDJR"%)DDDDJR1cUUUT(RUUUUUaUUUUUR"""""RDDDDDDD(JQUVUV1ccUXcXcUX1UUUb1cXA!DDD@D*bcUUUUUXUV1EIBPQHBD!XGƆ (g(䜺//w5SNYԕJş#:HO桽cٲTfIƴnnu#4)IhI/l ;ESALq=Ċo[;/ʋH|#EߎXQ<$,6MwŶYrMżϒ742|}Zw@ hkz8(_xbЊͣj;Mԓ6u9p_4dL5ڽ*n|.lI,쮊bV=}Vyg'en5(;)+x&NRck4*rwX72HKDdM8.:ĺJ^WFcސFᾕ(V@]D5 # ާmT'K*y;)Z+ jKGjaݙ՜]GίX6V4SrJ}bCI*U0c z[Qf6>C7yR< N,;?soTJq0!cn~rqq4iG{~'|Rqpzqc~uSO3m fQczwٙbњU݁"R縠"]׾p,Ib=e N_4[o[/  lhB^=b ùKEG[+0)rHp0#uq eeek;!.\;@r.`0t r.p6$55!8;1O}NkTcnN*ֽNr:%<9:0nӽu;['S#nm+չ[:Jfٳq4UɰYWٱAX :HIi<(nM{.x-oؽ s >O>|0e1pU+^d݉$$V S).LV[F)Upa;GB b`M?Xp1Ƒ_C -I??H{s{i̍nk81cBT<+ h8_Eû2ӏ/`wp%:$A$y~1!f#ٍ*:ҷLiSb 0("@\?L< (Ռ*bRcgcv7c/ӞJ;``,B5&7*2}QGyѱxv”LlYͻbCo1 [rŻش֩3r#ʞ6|ؠ9%Ka+Aur( (k:j`Dp('7?L̈́`GZ=3:i2%AlyߋVK yj ukV^b]nYZ:Va~ y8r+ʪiG(IBU$8A $#T$ 晎؎CDUΌAvζ8*V$9ReX*+  CEjFu$fXBB8){n×EWFW(Dm*zպϯ=x?oؿZښ=Hhկ&N/ s1RFMڤdytOϢKlvfR0UIXT?Өi1lp~j'}Ëv\4n698Cꏇ=2= ,Is? ԫNm ML9M>j/q}OFGV9 +Gр䝋W%DAA\omdbHB$ B`%=bI):)-_ATJWy)# 4CɊ6sȰ8)|8R%dm˗(((X.!A=4 *?[CΔi#rQԲ;N@οwsɂ#ȹMc'<8n+.<5|,Ha'2 bQ01tg#䗋g6d"XUKQ1,%Y>JiZx6i)c󏠃dO\rK$!;}c$Q&0h`hd&bI2d& hIscnjjhd&L,dɒ Xq͇47EH62Q QQ4R)bhM̆8(`B`86.ldu86v;ӱU\UUcci\#/a?I#K!T\Y+aa1&32_)v%+Cl#)D4%(H\QԳRG[k?3܏YCm ^Bl&)C2^I \'4to>Zd'dA"v6u#uPRl~GTce^v' a#Qt$*IҫCP܏2$I?AQiŲlWjra4~,<ד;JYQŚTu67hd&q-^ܡ[qs}۩ĕ2jlw9!$vF!J)N,M3-کҮT7b(N:I! M؊LLyMSK8Br'%60rTɤ9VRQ7J))]b*'"NaÄ4*$SӢ8i);4!skp؜9榤 !nH1aQ`kȋo$14p&E](Ȗ̲[2f!#DBr虂)\# A`a@NQz~شѢr;s}ϙOKY2Wlc?#q$1"SNOخI=^c~G/}֪UIU\IĘ Rʥ~H;p7GʏPSByaQ Ӌ E"T=aʼn477.zL= #IrnMx5&lhˋ ;>cH67UUU;]'puz$-Dv;N.=i䮧ywVUoRZQذٲuĦ4>gjIUFIsVo' {TbS)})vct&In}=nci"rCsw4(S>V1=<)nۀhN1eL ! %áEŌ9Ac,7;W=gwbGt @F81R53I@`,B`SxDQrrrs*J1ųρo 06 MJ<ƣ.Xc\8ngu:t5,@^'mN)dW.߾0 @QCpy+&= 6u7O1NӼ\ s&843A⣚kf$2Q۩ܣ$ds 79/D! fBN.H@'Qt dq 0s5f(L.lH;ر'd0Ass $Y$^,Y[='*cXlQԨNSj8aQFN8&$ezMP.hjIp48h$77{]Ƽu*c蜖gs3 錒u9 x+Dt$˛|OHWsqnVZZ׃ԯס92Ȋ;(r(4Ԧ, d!i|k,ysOCf{NǂKX4Q̒Ԓ 5`EsmΥr9Q[]GYsf̕7N.ǙJy)ݻH\ŲhɨN͖jȜrYi85\nT#v? :*Na7`xc:tcfa^s'n׆b2Ʉ搘 eT~\4bİ)8T))8!2BJAQ)6:, 2 v @,4`H4?7 T%"I8i1 `d݌qUFl1F9;-D %pX4 oArɗS&QE83f[.>5<^DҶy?q; L!ڏ3w+q1*Ma hn71G[STtsr;6ӳ]1O|j9L`03vIM|1p;.=kȑDawDjvˉ:)Xs|,Va "&FSD'fɒ)6HbP㳖L/D) Cڽa;jۮ߇92e,!'4e-"!Ӗr pv_tNIw"zBZ1fK\&9XUm=OPϢ)HH/E趄A|3Z!v69Pk=2mU.{4^mA'NY@(T3c;oq9EM2*բ" uRugE ": IdeՋKb҉!+sU)ڄ AY̝Eo /OR0B^(QwБv҇c:9CJ=~kck؍$BW! fGk[L5m)$̡m- ThqkZNZͿϨ1XlZjL 򤤳i)Ja95@'} /w> v_?:*x()}NJZa9ۯМox"$2(ㄕKsl>_@7^_3J1ϣ9{Tr';A~viZ7SrXWffàPQs$DgW)6 T.5 03pދIlBsPĤŌKGOÖp`zȻ^Y,c!e$"+֣ƹTzܸkܣrDe ǚCLPQA$dJB;BFƈG:ّJG:n)=o7veQ *o8_\`z{j?~W:4R\)KNAD酂*)E%#1!qS%R E )ܗLlPyIx S$0LAA,"D}ĭ{^B}uO4;-)֩3~9|sH|I;#,q3 fb QN)ᅑNWNBp~Iu+nL9C"$E?9b;I mCB@#!QJ ĀS)y暻 elygk}xiOq!4KrzWShņN*pi4|-|Oͻwٳtce4ƚ; NU;j΁entӢck٥;ZN*_خ;Nnm;UT9+GkGZn9VccQ nhAbPG$HXps#bR" ͺڜocA,f!f; &h0o0<҉+QIhRKtYVdD1J0˜dֵ3 Te,)U_ -Xqi[*ڒbQ J'3'%U`-T*HiK 4&b &8.*"E(ƌ(&4RA^ wάJ7s͊\C$AD4IJTU*UTR)ERUUEJUZl+]8dfXZcf+1bjw2pnV4f+LS⩆{vrg68 tqhc80c{&1d=.UΦks[^qSio&#_ $ͻNf)QA%gl3/II1rIc=WX\ʦRxںG馄͏3xeƉJgxGbh,V9Tgwe0Rnӵ!pZɭsTi6 F<.}+J>>78w*f&3h۶*9eeTq[g}g~,6gyY[ UJW'ѥEUSWGS0!>{IJ zkS}G8ݲΘF)4ϯO.n.E6M#phĴq +?{v9lH10o۳7-%r!b*jw‹[9qֱ֣$Yi)(Z*i`B,BgJaKSnuEt!D!* :]ھdG&fǓ,nnnqx sd1\b—nߪ_r"c$LbJa;:sg@r9 4lħ{F 1TR1ih"gL'h’7+X”4ҔJҴ TSRL4Uc *0ل"b&Pl4N V٧ncb6~;PH%hlVUWMIR@@P H AQK0DD144'!hRQd!0¤UXĆ*#JRJRUETH$*&ctil7:K:H8#uȥSΛy]i/ aL"#"$ {SU1RUR`zU(u;OL&ІqPΟr#8nLYn9Eu%>D#wN$ k#ĴaKGkeJTxF[rI`kc)iUtُZb$G]#S ygiф1*GdhQTD, AA $bD'$DJ! "!DIDATT*QDDTC URUQV"Ql[$КTV)K6~vJ|*GOI$UtU1Uq4URU*UURBUUUU*UUTUUUEUUUUQJUJHb"$"!aUT*BEUTUQTUERUU%UQTU*UUJ)RR cececeb+ CҘ*URUDU MЖbRB$*U%*tn4 F0!"H RT)E4x8:ϧrR?xtqЦ惟4sQR\1EV֊0 Nln+Ų:*JDiVbT!Xsc))ӱ+#tT99~ qƜ);Y]e4y;&]nqNGgR2{XaMc\Ɩa p5(B%0l )))p3,̊B-NTĮiD3^1kq@V+;tQ(0L)J10#rE2JR|Ɲ(BЅcIU4M&**UF*O9UQ\H୍*TRBhL"l{Yڑ<1N2Ǚ'ElzuNUI-=MPERDGd &%&ԫ$9*^ UaBvpg.)me&* 8!"A ]CZsJr"Әz-e]jHēc F0+TC8k#`!$DD,3 u,9wАg 8&f0@Ʒ8hf<*Wh6Z5\:Z- 2LI1,$S$32q4L1 1.𴌨t:wdvsuCgTgQVk9%/)EZ<"Ty*TCՃ]YvkM&Hr0`k8qɈS2LW[8lm:Xaْ`c0EÎIp0LIK&.mPIvZ|KU++:H&ƣjaiqzikE!L3cd;@b9{(| %BueHf #u,]#P]dSLQrj|44Y^b* p#m0͊26xV=ȵI)-i--NC5(J;E9iN[M;u|n8nIwA VԂe0L3)T4J2R㾰3Z Z6Zܛ۳zծi D8w˖p\ށd'VݷW3ֲ7>dAńiQŒPUdTWmq'cOw:J: dMh\=TATE 3Ocv1M1?jUi9Tߕ1niN1`Nǥlv+dO1.8܎›:G?g{lzx1P{NG%yR'=s|OCy~e|Kcl.p M'Ʀ6*_a6JSXIQQɊ+d&'_'ݺհ^穬>cJzߑ{m=m6h&46i\4Z#di90`ɛCSA`460@rIb67(?lɂF>醾YXq!C4-Ę>8z .1wcv|6GG&9&foKQ=k6GF79>7u'&1c`䭝o3FmiܳIUI*m:Xƚ8=#ń'W" =yڌ={_=T_^wi+*A`Å23MO|9yO'XcOKʛ©rǛf'Q""/$,`G((.\q|*&44+gZv&=c1=G=aUP"QPleFYc0 ƙ 8F?:s[_Cgillgy>v89Q)m'[t]>f͒z.y/\H_`]ŋ ð'hGSSy<メzVI}ڧĒctcvN5')-lQK)!t. pWe,aMRŀ`PۉlЛd6nTr4Rb sS s Iտ570LU| '6J<}~zmx{=.M#pW]6}+''ӣi8*cM+uG[LUUVʓcCJ_mSNNei9:9&IT)S#=,zpnn+'[zN_'GlcU+U>J[, = ڏcq+t5'꓋K6NK11S^l C%n9rEOG{S?+l)t^o=ף>䟰~g?X&Zi0wѢTvl7(BL|?vIC[F<4S117m.7bӸRLYlhWsE(lCDW#K*2c}t-{XU;/#",I=iIE;cx#8M?_R%YJ_Rc T=2H\<"6ZWZ?o7z:@fO: `6!ܗ{1̑ޝNav9'ݝrH) "@ T&)Hb!(JFbdQf9 RP4[/4 O${bly$&Zh`-o4~ ~u'aQJWJTT2B?k\1v=IR&N΁HDAb ܐ>A)J"b=ndjO>-M9ڱ5%Vo͌Jٶir^'66s*bRG/,iZi4 V4{LBtA6GbQXjMާ*v@euocay)rQGEȧ~&V.` >rB0q+jӉ#&1 #4EDATQ5D 3NiRzoZ;Y=lOi4Nn bIюrL*6' m4K$R*SuXdVbIVɧtt|.\FԚj;}Ou#}XY>9""s>CE| v#ӖJÔ$9*E{S̡4Q&= ՜{˅e:_0%+$11 1H*LRU%Tmd/*jpŃө#kjʫ'cuUTfD*T:^>rOba, %udyĈy GjK!OG˹]UuK<<1d騲߈m_&asI=c#OHܝm^Sd+VS*UrSgR6i>kZ$&*K>Cx%cLI8rZ25NzWsΞڍۦttݯ)IsSWґV6)޴[U,ctU%ݱדlDbpWI$rσ bUc(WRqKGt<6J*= I_G؞+}NVeWctݵl28yNO JGsv $idbf4$ $lfН`tD<-ʂB Q̬t];dCgUl=-ȟ gy#'n4v/Iɪ1u'E1&$Lv'eI}w\+ѩ54C(T*R=\L#V6cLJ7}uۚNeLE(U9)6X+FHR굹85O9pJI2Bjly.ٙ$n=RV}!bxT'"sslF* $n#~'$)d+A2SR `fWbLNPCv=ɩwt$+;$ԏyΕ$ږ՜ڒؓs+Ȅ=Gk)C«Îֲalz|yM;NjiQx.lmF6r|vsކ&WÀO0 )ߙM.dbIdjAu5$I$u{J J* @DAØ1Bdܛ7*/ JXRZ(H!aH "d ai(K#Hv 4Y̐4EwZi:XOs&˥++&/$zN-aiړ(u渱S,KoD%i 0iŏX7U*rACm^xVsL0Q=1p X?6cYXȘnJ+;”c CO lm ~Duھc$a\ؘk eU'NŔ4`mtL$cĠ4"X5e%fѣ52SML i+$5d!m 01178`"D% $& i$"hLRADd`l%l6l\J0J)7%ꐔ,\ n*lVSBPAʘ`DƕRc p*ɩ4U:ew'KWgJq!Ĩ%6rR[RpZVRGF79ۊCIiTLAUJ*UJ*JR %@1fĤoQ"GXl~7S y=ld7_HgDi`h"f*b!`$!3 =L= i EDmCeXxw9)cЦhFRR"RpX93 U7Fү = bǩk DIUdI+buUU"*BE)%TA*$0 DT2D=ib/H4\Х1Gt/*ɩ>#imPK*F n %S+jml5NbyOJY:G4>Aj3',^ei'`4'=ETj'&G=>UJHfI*C;:3}Zz+-p1%SL'KRɕj%:un㺱e{U#;TZU*XQJT*RU%)**%TRUEIJURERY)UB%R((*EU%EIJU$U6wggGjw mj+ rgÖp89QdpbJps0[ҨbDiIZ]\б " fŠc8$$jj\/,¢ bYɱCX΁ܚqi%އ3fڤUfN& .Snn9" FD&2hM$1v0L8"<ܒV"4( 2F0" zrqrD3 A ܂Cj8Րn@$30mӒdAq rђ} 2"I#:bD:rQ#%l!6\(Mpn ,}ݫpɑF5q2`&(A8VaMiFK[F,@-G,8Bؼ܊.ڍ#b 4AskjK&u15 b3+5'bp3Û"{vqv8&$scqUw.4cuiF+ &~풫kni]̘ jʠ*ĤANliĭ*Zb M 't$%YσhG}9tKn@nmV4c{T2(y Iq#;NvL7F~2MbфB;C&T\C_$/rF " 8a)xUsE3)9kqvxDrkئVD;($Bb EܲPd M)NM(V͚71SIݦ+L,j-!᳋weq0tD9|Q*II#B%"uTM  Hb*L h` ԹtUJnG2qપ'i8rE`A?AVq>TߴB'),aɦ}փ OϧyULHNnaܟN9JMD #,BEE**RUIHq=+JֳSN X7uU-6Q5jRn;l6ӟy+=G?Ys[{ ' n,;+ 4#\7"8ۛXs=AE椛I\ 9¶ᨖdJ-XadĎ" IHg/prI$8H,gH%ejo ILѤ{H]:q94oE)nct1&J+G&:JWz50v9ԟCoxOb_d6{{|Ot;$ب$CR1UTUUUbbЪUJFBJ*RAB*) @BPʰ*RAB҅ #0 @K-P¥Qi"1GHīB(% msе°6L <#Of-u8c(;BL ]K< U[IQ] ~æ۱ t\ōc#y'*NJlrJȖRU!&HqVqſ!Y"*lC ӭ"&vHD+cJ;<ޓ\]DTI&*R݌o>Ixgp]W^{EBRqypú҅ˤٓ"R8LôLiyHTӪ7{GP7ak!i`PybF9XiDmHc43Nn")K5 FG\]Gc X$e37}q>)(ԒILMsa,~֟BG44hQ%cc֜sN)>5='UC6/_y Q>ɨHgZbD*a,CXzٽ\QϡsQ8z"  lD 1BV[A)<!C-z(igS$}M'O**V"(y烣:fYl9O18Y>|YcwzvM(DJ"-|b'LEd8Jv]O}!{,q*1da'2 ApU$#.$J44L))`U%H "xꢃ܀NaOkb'%__SoY:\t쫶[=aYCמQz3 PQTbH$H,4փL IIÔ75QwID3DkB*AE5L0UaE*V@E,F~h?1VDSqރB$@DD ELĈ@D !J$JHx @x!Egk]$lyjzLS+S W L,>S5lUysLy;u&ŖX: .X!&h{D27nr1'jK͚R"$|jB*UP(HT%"RIyއ*Ƒ臞m۬8{fo5F r z U/fn]M:AK8cRا,l`qp(2VyZEN(5sSLjSjN\u'}fLQ;ĝ\ouRΛvafA2$I (OcEVɖru-E1d`B R,p  ?F'iIp5#n&:3(iU&YN(LT:3DSX`_y ؝=Kn~~/ncm%k 5QNo3ɦqs,3KIH'8=n<$r'GR;{2}[|f'c(zaOsotM;:O 4l3xۡ0QJ+u2*é8bn4nlݘ(UZɋ*Fǹ[JzVit1Ipqb=[~#֞M?Jmx*v>A3FIWld77w=i~IY3֧qY Tc \L#wtgԵVC$DR4DJRBD@%# IPDPIM,JPMU T0DJJM%¬Z-B؋{#wb:۹ogL*q=/L<9,0t45 \,)DA|0=B^+1:sW9\t965bw8:FCdi F&~&2ZcRZUNKPMhW+'%1[LB`&4RH"`vN0MRdEJ%JcZp+bSLbUUmd&9z q*r8u\R'02$=of}QJVt_ aƳ~!'sL+OW$np;Cyo;v*5f/Sm7iTmF9mIcI(i*L@rH(Ji8t,vXyT1j̋;#EO "OUHZ&E%T8"'X8>7Mwx"۴#=k$Du>)!$-B< )tHvdw6Dq| ܪp; 88WLcM֚i1Uq2,͕UGxr<$mO1%; kFB +7:$6pHpi'1((",> v ysOqP;m$g~..rzt$UV3M4c˚@YE&khUSZNd&鍸# ܐOPy1F:x.3V2ڊ1v~ztnkB8pC$C\"SF-UlpMo\[p%G65v4nԈ*)C @$AT"UH6e*idt^W!]{EM#5a79"Ig5nLlCܔF#33:Ol^0 _`|4ڝv4bEA@PcԲ%,䪈wAح1UV2ȵj{b *RUqLZⱂ YP+Z4 5r[mf2UT1aRF0eIGs%c ~ɿN<_B"UR'rԽi jUnZpxNJ\ɐH!*0$:-RR}6*i՛idie(i$Y|8: I'=5z,tS {dM*TKi,} 09*p8͒*7c*q"!F0Z]vf-6b*'u6Suй: Ƣ`E. `S)BZƵK*l$ ‰ldfd B,$، ;JC.[Las $Ei-ibGfJWpm-i֊XeLu$zI%7ɘ,0- č,T/ ' ዄzb#tlLEHe1&$o-L%C3%"a)nve=lm!lkN1|@NziI)C:r"a/t 8,JpkJR*6PIvjc+!6Wɥ8)%M8&2SER8",1RJ\TbIVP*U4cXɬUE*/L1M40[;6PpO1fđM8Dܙ''éH'$ѣ bb*P2b0̐aaKTT*T%%V t0dA:;$YөIɲn8lbɷ$WɲG+#M5O}?2E:ci]yy ]HsK4 *ʝv0+%u.ƌ|)'F];[}yzDcȘc"l0FŕdJ*VHo7ub"0BYJm2U=jbF,llT1Ce$-ڐD`vR6Xe҂!q.(aH$`t5m"ÕR&I U"DJD)E#Ž vllFRRCaȜX1R=B~dYJ?}'ӇE`#L(}I&]xq 8V:ko2j8n!l $7IG#spÌw'p]&߁5:R2DC!pЧIw xޜ'',n# HHDyR)*IRT%\%9#`(`h=s(= bH"*՝NwGTxIORW6gs#<$rIQdOs{=]G}J~r;fGY8 BU WrD-JZ&&)y)lKU\/M+TiVECJD SFC;ǾBW$FHdltTTfQVsيğ; %']@P4Ɍ:E|ѱ9 v*~\<J[gj ٭l{ JXESVX 47/Sv]Ta1;CaJ[cE6q. 0 %* (0p9 +C}'_c$?e:8GDd`AFtxgoy:P{g=TI͋XIR be1&G_i때LSIfmkMѤԙϲo ĜePق|U Aa1 {zzh~nu'.2yBv:&vXf%>#mMc9[;iҜ'pm:Ւ)M᭛4rln[QtKk̺'171&mڸr(Ra\k4C4l7ʪKMb!KZD{nsxXbC5՟9fЮ 8 3dY,QUc+s FDN+t 0M eN4FXVJVb1a+(RLJb@a&j"-[$i#x&d}lKTRVz(Q9JhEU*Q@Q38 Ӱt! AQ`"*Mzթ C~;"wzӬ}׻ֽIU2eWFIH{* GLu-I+shii{e/F8)<||B;+ԵRbCڽø=u {B DA δUω):ͷ@f9{2WٸJUJiM7,Xi$EHCئB4.(J֚f 5p`Te6ɢQElXnSLbƖU}T}MҪDT|-J\LbUdI1DҒiumE4n6pj$XeHUP%$ADUJMTS1-U%MS%TфA1D9%+L$1x &M-[6hCM# 7m r}636}Op xdBoQ Oʤf$4YM6jʘB.iyC|t&Qcf ʌP_BBč؜ :)252hMSk&>e^;pN 1&w bxkwER-F_ WZiӭcGaL]&06w'5NC$a 7LxN Z/+7N-RiT5*$B"@*d(D)H*j Zi( A@]JB1 D`dFu=Xn&XاX^u(Px d*ER1~TV!dnĞE4 n/ 7ꏗu'H9*TR"Y*HP͸9l=M#e&DY|u+9.Q^M'{U8HpRil;uq\~#\ V@v0C0c"$U;#*E E/$sj%Ti4S:<LQ4iô {;'e"6lz;WF)#3} =ٌT46T6RBb* M ]2UbCK) $ % ldoUR ljC!a!&6;_,-424Mh8j§j/< ((E!*K 2XWmѡI3"0 hJwplPލp x52EHq>9-r.!4X..;MR ЙM8$9Cw Z FiQ900Ѐ1#@Zm g0\'6! >Ҫ8:8dMGX$ƑG\ND4/-4ذdDA SAÜM3Eft%B>5ڃy*9"$A&L*0+Y C1v[[92oq4sYUPB;DO5{b9rDr -\ij H0`1(.- ;լ. \Hr$N ҭ#\;Yp u #P!ЯfڎXi|0S 0j9pxGMB想hc8!:ACD M,X v  ܒi3(gjIB 6:DH B ((e@6cL+U$$ ؔlȇ9bk἞ |.,7ݸ"Ie" @f4TU*aV%TJu;K#FU}wO9]::Nɩڛ#*!6XňXאǞ1;4LvKlՏȝaLy8UB1S+ý:݅qIgcCnSu''21lt:Y#wluIUJ;Opi*l̷ 1,C"#x×${!V&C9bA5E3bmٳКQ>!#dLXHGzl[ǢviXvN*u.YsIWnqd0Qf0EM9ِO.$8gx0Ԩbg_E's'< ]՝j6Edqk6N)jzxqaYUx$lښV;%+JM2F62X y$UZb}J=cN2Dv|8;6mj˦)s:kv4\1b՚M)͡^Ɔp>R`5r_n #շl; 2V _!$xC|hzõc6){zXw6zG#*vL9ډtYdK*MK"K'zX樘C:NoH|Qˀy$;>v5.͉:ʕb$N5v ܀y+ i]t4Lcn8!d ) F柁VqV֝_36aja,mGp{%a"XiTsTZ=/O7yO%IH 4V>gHcGpeJB1J# bQUtbUR4)RF UI =cΖ'}O,2Z2X&l[?i?9<)kS4 J8 #9'v5@z*h'!Hu>D('Q5!vAήt\d$:O').,m+< 'ТSQ$M0)w;ZRw:h6DzR^LmEqL 4~?, 2ҧUԸ8=#Ӱ<~WJ kS(`ݓkCİ`L>Vb8 &{!fz{~f,oͧOQ̿Q]R<ΊZAN] 5vs zؒdQ񎑤bN'#d/@ ][;^ 5jQF,D\я@~> @3jn@AIm:7}8?҆<,(#m2EG腝[ rBy\(l5R]O RVjPiER)hEiD(FZX)jijjjfA*FR*EJ*AZ"i(HTFb@E(AQ$$@;%a@wc|is}=9ݺ3,nz=@h*TX,)JKo@ݑ2sVXAQ0BAiD~TFWAnWm*! JZ  @pTP1!u nM!vQ)<Іĉ@8% Cϐ5@+TDPcSCHA@% x((!^@P)D` NS$SXbB3J<XP˩Ni3b`Ҽ{mS9m z0X x]3'd$XBЁVՒ8X6 -Z~}؛xH'uHN`p{qBZp Xεg*jlSll>Wk`8*h}r|_G\yfRãuU7=Y=WT*9ۣAjXBbL5)0-C) F tC1t`huWX""Q!vUM$C@ 2tQVM)2ZbVHP8R1Sq&j8ZQئ*-U\-UUV"%R2" jB 9cM֭TUSaʺO%hi4}[:HvWR*Jyar('ы:2+#cfЅ5j-UUUUVAE଩ѕ66] o'$%XGkTА 2F )d¬n1M  L30L)#GE,4 Fi(%UI1MPUJEADQAQU AAE')D:  T"ppd1a&*1[3-̺rU艊"+&)Y1Rm>.MLr(VuTνEUfl$&QXRRHaF*r*qwdō\0B xdo1%#-$4`CG?7dXə ũha}sBG8`L8%0}V8 ݤX )nI5s.I/A#i\ ͎k(q˂,jWʌv@H 5,AsB Y?r6= BΤ y &+ Ou.RGP8$E)\0vRO! #G]o!d#XnjI!aWNH*?4ܣ< 1,9^B覚EIX4k,\;Q;XdN6q" d..`pR .] 8vƕ^1j"%jw*kIݸެ]!9U|NZ_}pfh jO`e۬vmCXu&nhL΀a@ÝܲyCajVHDu.Za_??7~wCeB?ө ?*^فooQp{H?q߂'Dr{G;O59dImAQAVMijSx9Z-Qfg:K:sq?ԁG#,\vxkm_CNy03GI*Jd"*s U χ.E!B>ٯ|RJ檆̴Z±e̍ωފ<{0}܀h&$+ > 5Oy˲oIp(z)-{r{r=y 87ؖ[ƽ 'x-W㔝 ;GEƶY-_e!P/}aW]cYY,J0RA 4 +%7a"y"d(Ժ+=)0#M,}]. z԰W-   q{rh1o7F jͲ÷pڴf3ihE$y nY6wyl)^u@"#;Rq`Gr;=q}%pR~V] 9j,~l"oұҶW(*8x(1lQhq8LfHo/<Y,\Ħdh&W(d vCls:v`0"{I5Ě7SNN.N5Rz!`X ǝ 5c%,uhя(m MgwĄ`l0(2Y,E O!60I2x,….Y X4Y`II*$pIMd `BjClɚƼ:r;tw8=UQENllJPj#ʅRӂ[;+xw`,jݭ8n ׊$ `90lYS FQRBc211!h𤘱h9%.xB}R0ʚeh":TZAMXZRrUjرeDay |4IIKE%\A`g8EA@ "B4 TS4]TRrB"R\5'+>MgI! &iHHga!(33-8`tAsѩȱ#폩=RΒ>pOjET=pX/U# G$8)+B ;lM4L( oa ܉ );^ȞkO[ϻrnZl혱+5Dqb7(rD;+ nO].jpu&h[oqG1>^e.GVqil HJ*b""OA{8[&`c^HL2hs1-<`;6-l#c"B[[5p*@)|R@JGdB0wG`\ AƀFɃ'H_Yݠ&`Dx Mqy%$_#8,!Xyr6hrPKEIXb,@"xX]˙.j;4B۬Xa8GSܞd=CxO::0ǵ<ޞ.G_Ry߮1M]qIX.z+n\AAsSQ8;4#q<)Q4.Tq &YHHClR={f:*S*E&QvG+?\s& <{;A!Ns-$9i n̺ql]4Ҙ9JV&LUUNZ2SX-M$su58nݏ;gy#;NurXI6 %?rL|DvG.QI$\ACsEk! A=sn\M#)\b\qr{ć@7,SOFyޣ\j"LGvv!sI8qDyDJ99KЃ;(GH9wrI Kw`㈁$Ṩ&ԣ̶,Ƨm݈;/dKeص)!,9Lc/&Tg:wy4! Ų 1*1h q̨XP7[R$ۚ lQsGF!jE8$CS& VEy8IXܳ  ^vZ @ d"yÝF:xA5>zP=AbA89x9ԑEjxnȱ>4w06p Abr.!=ϔ"= B00$4wL4J$"/ KMkިRLezD99%~|O@A^sэ*9>c#3|nǛ:>V<'b^:4^ 檽_ zv,a`obGiKXFDlɀԜ`hhuCPwlU<t'd%KbzgIaь3$'󸬞GwikQTCyHDx Cd,wf(l@XFh#F [f51f8EN&nn`) Wɀ bB$rcN08حFpi5"u ͨE4Lj`sRz)AQf( tdMBI.yIģ3 hi4>i btaQ\h\|dj#||ؓ6IlQE͇/0G|qhwaO࿐A /h2p2Q! Fq!:Xڙя}X$߭]eU-Ift@F) Dn)`2AI{XQ79#C'2 \愄 NxL% ,ACG"(py(#hp08v1\UñpuCa} ء|o, ~1D(|bnOY'G98*5/C7iZM+ XRT+ C9W]E:C).En% ⇱q'.| D1;Ec$;cu˵0{N'a6~:%GJ e!!V ARO:p.QTm+XVAV,pC3laDB,iSq1.3dV֛?Ǽ3d٘&ڢXH A5#RH7w#>71WLUJٻ֧1;u4HL1xҫF$Sc}'sfp MyԮ\U[tR8vd<0mR2~>L ijmn*9ss!Ar Ljk4vDG| UI*랯ܳzi|9W;X{̯Ā9  }R=p𿵽?$,T,D)sJGaA4, ;c. >1O΁oiel}oVou6O> md}[v~,XvkCǾ~F69}Zݽ੶p8YYR~Na+w~5sã+מyeطnY~ŭ-.1W:gpwCi"rxz0L*Aߞ""~1pnqVU|{doV)L3dz׬Br/ ݙ}<pU10y|M֯cp.݄pRi=ŽCM~&k&cAI'(n!B,@}AX(O4Լ7/sݐBr Pa+=AB$Y#.q c-$\X0Z 㶳MKQ .Hj|TW$p\D.7 CtF V0K>ş~c 3k0၁"BF ?JN`>!ޟF8D Y'hHтWZ4S6HFG-@: A_o 0L?mbXy7Ctߤ]7g1ώyiSr8mmO&ɘ虋gy.Z[jlhY1cqiJ&_H6-lZI!ippA;E(*( ~"uߖ1H &8;a?ذ0? SSgoKm3פUUUUrէUhZu!̶mdE_JݪI$Y$*-UUUUlUmUZZmUUUZZUUUUUUUVګKUmZKVmajmeȘ *$I#-U&LeTwI$"GƘ,^r'? Η@>{G{UQ W+uHK`ʪLfŚ$y3D˯獛OߌcbMm !a!iz*՞F.\$NA0AR,*0/n`9b6%14`&-dkMʭ҈rܸ,J0Wa"0"( TbA1L69V#Z]Hb j!M4AKML3$R3X q%IQF Uֈ /+ *Ŭ*(R(Ka/[f5jc%K~j oqQf5)U0,A-k[(ؖ nyɼ,ŅS*ʜV}7 T@"N1&B v2pnò.&JDDUᱴ{jzJorJٿC;y|CS+ϺeeTu~}U`xXbE#~Uq< JI:Z?hI%m-oʎ.N`CpeD\;3{%ɓsCy!W%#0)2ŽK\M*=nvmH/:H\,{[EL1 W7ZP`k~Yxt0{_QߧZ׋0~P;#V)20ŕ~RM~y$hxS -t"j z}̣ZNt)m,L Gz[SkndX;ܤbF7Q fBܔ&+=Q'EEBȩֱT)'R0bO"!J4rW8eZZ{8 hK _tIM靅Uҏ !AsW SXL]i֘0{SIB/p%Yc;RH3jN -c$I9rz"W]U,Z:D{= r0'|y3__#l_.+?g'IӉ6zPTBJT Q&TBժKZ*yjoĖ)QViydL'_߯CtRý#|C.DS5O<44tǩhU*4YAA(?9'`cc;}u(ٳ|93:*ioslr  c '""|E ?87c7IVeeD>x%E#)+MoqF!(0!hBپ3y @O/)4sٙ \,AF>njLƑA@-obÑk|~87Y[ck[ZkdžhB/)ByڧG8~isy)܌+ܵr>(u8O. CYR\v&  D\ŏAC8ϸjkX@89pplU1X'yÏ ᙞ'Nr:%<6#+"a#WRG7j<uN/$dHnvN*NǤvNL6x܆lG'zlrwx7849 W7P"!^)M3vEeELci6nk{o <|{M].'D5[o lȝ-0*Q7,=@p?<_, #XQUQ-J"'I.5Z~&,+7bsozlܪm™!UѓH:?J'ʵL T$qxiDUu0T4Ɗ"mRJgtiͱ4:+~..CcD;U;4 >\CZLjW]+R_ wjxhݜ$9#Dv6roS1ِ9puOiX0yI¿kR {qor-xaa8DJ1lR &{쪦 (&h(hW)\ 7Sׯ~}ܯy5mx`B$("8,aUU+7SNXs󤐤yj?)fsA!1y%̔*ꣅB4CmʄZ؜dSw%ֶ!nPJ1$H>G㣆沘{?*@l]VL9ʺi>oE'?YD(4hJU(GYkd{ޔR-mNK>yWZ)cܴ0|.E 'Cqleʯeۧnt_0SC8tJpATTPUAFZ@j o[&}TAg,gJX~QAE=s2$H3SF yQ/s0`"za~34s9{w 5ogr+2׭I hI!4xczgrO}0nV3[Vx#5 ($pB^$wdDtOF> (gLR[ՊFD8N)j<U,&Zi틢OP2ꊯ/pP[~;s뷨?5w~nW>M&uY3t/Ί[quRLi@OR==1̩LJ4D}|)h~wϫ J3T@P=HX C ?Hsaږ>?Xq+888\id]Ҿw5'prM7rː^ny4e"4(4=L)麇Sf;^sAhF"#2ƛ I%?`J.\d-X~D+gOA<*T+%6!j |aPʐ)|r闲X ƻA;(Nt` gǕ`G8OԹÍe˗|-O{(G"9G nP:Go\:&MO7>rȹbv;us0,# I.#pǴkKj;`<ˏGĹGG2L<-TS@LDoTO}@@w`#(*D $T@oP'DaaTU*_x2(..}vvּ7OO^Ve)ܻR!,9_{38|iiΚ6mlk;뮙9sl}7}YDo1/޸divkOZ7 I;ryvnyY<τ*1$EH'_g U011PSI?>oɎ\81hlĐ㊨R"B .^&?|*+)6G2j_V6i+dro>ChjvqOB4c$Pq$rBI`7|ܟ*?A|ֳ RdoH#=Ѡ 0 a坸zLc*GXD5R~][ECȓB$OTo&Wti=2כ=]R;E~vlGcM9z, 8mmv7F傷K+(1rv7L[ScpINI+nك: )N,MGY)VRsղ,n;\1׎$pl*Jun^ YԳؓ8ȦDŜP`8M&Nܑ (lvdCN5%SȟSӤpNi);6iĀ~&I7A]Hi1S8'61v z i+rR<"-!QeFY88cvx'm uY'ękD8JN!+ܸnnrI$Y);*#E@; hHS8,0@"HkX]!&ǐ}LP{)FdfgԢ9C[3}}d ")8łL_"0"C!1lyPq|:~ x\a$hh`>T9h&Պg On㋧r "`K 6-ܓ c}HM%@[&Tp~jM~s[bX˦viiUurZ"}𔐠LA+"Q5$CɁL 4q(*)ʎ$8!psOaU+sfNsDً7>z۹'?C~;~Ԓ}I;ϖi~C;I;YjU%TJʇ1JŮO&`$G7le`jA"uH I]T@]""">g/Tz5 *L?˥j[ָ,7IB/!GV7; Gbc%ֵ2bl?bU]4T)EkU)Ѷloj*_wT]2j:f"*oGmaBtRY~ƽwo-]?+&u478Un&ʊl̢B#8!NNRwq*4[m.ÕS8WjX:z~|чdR/~͓E]Td|.S~&ĖGw/sy0 bs e/Bέf  P =s¤[_Q]~A;1" Ғ.գ4GJgGp}UI@+P* ?M*{l!TpÉF%u šNuT"WL+ ELFџT ,_QI犈[F&AE,3*zjܤԻ@Hȁ*]EK*9=0Yɇӧ]z.CXL[#ǤHϻ" CK7~S~퐝4;R4R; ~w74LSSLQE@v,/ ݏ'!uNG-!I bq-6ByTC AdNL\Z:V~$h罾3g|b"?.׷Ld"wGu{H_agTk埭6o~X5c>7YLhS.To8[/L7^լ(qQPF#6.[8P+5 U}%07M *.C^S4P{/+B[`oC3yv]~769xIz"Elggd7b"z+ʖ¨k mS,)*,j ,QT*JmRRVrhc0(iJunжbbYDPq 96o ݈`;gy#Z& x//LVa]dgC¿[>B_ugR3Jjh(~ShیXt%-FIIi%{1d}S> {| !)3%{8pџ%ػ"DQ"`S T,,G6O<=5!~Z*XU,vxnn+=#8r Q(jnsJܰB@'<9ݯe02!ǰL!~np2Um-?}k'֗9zG3ҥxGWBQO25r) ܖ~XU;~lE̩[}/*BېC Q]NuXro0]|٣?@>-}kw#lKejshmjÝRmɜXe[wEDQZybB&xԀ6G5 ;{RaA;s83.2Z%8dx.WE<}a"5s$L?rƗ}5EVTy"]PIˋnG+ Fc ~{}.+\.2fT|6ŭ[DOQ&O%reE,:>_'h;r-ݷ ;lS+Dӝ(Y7w|g < (]29%uԾ^7՗4$*@2i>_WbGQؚ_~NNPHW2qa\]P'y,x>r4|!'7gONg щ*-^ReB"Z3.J$Vt,I1'C"FeӕwEE7S߉vc>֒TD\;~o3ި{9zBό+%r`I"q+?`S/?c#.r6GS.^ޱrO*`T뜧}!td`+ o;76~g1"mmA;)Wsע(<(mbH䃅OĞ)["?8W?kƒ̋U֔!?N)۟w_ ˶y&lG(CˊӚJ}{gy=_];'2X\]7]|>޾TVs#uULjx~B+4wcg.}-V4@h\Lsȣp}\m)|lJQ 8Z[ RO5ޗK;6eYy>' QnJR6I>E)UH1=¢/h:Ung<}!a#:ݼxk{3W93vWnd2ժW:_ϨmquGMH.e=?6]xFƉ~jwf؞6AK`TшIXlm'p6JzǺ9IP͓ZmF% _;ewCY|a' dU"<" {| lC(1z۰+O 1#Tn+ Z6¥JՂ.2H"AL*E,U%T*BTD4:4LdPEBU7۹ClyF ZPȥHL TY0GZNhi.Y=.dY3LB 9`Ur$+i# ,E;e>lFZTkb4hV%JQ~r9'@'H<}Ǡnv~G]765s6lpqxg`ƶlz=a|?+,#*c:^H=ԩ,fYݫbMX>\[|}޽Z.롊rMoɽzI_ ^ՖQ_3J*זq%{_Ӣ V-49C!E.A־˝̯j갏N/vmQ^;/\1}kpINU|~-|m\N-桹R/~OȭiG7Qd^gG@_~5sץDǒj2טd%x2$?Lm[͑ =g5ԃZ$}dd3"Y*"ZqkuW]UXy♨/b5njԺqa1bWo{d_Jxдc[?LwboG;*m-(0o޷?bm)9[if|%F橳oƓ Cy敇+lusf˽& b~$Tmx Po*㌎(+:J""\gs_r;v pC9Es\4 Dg xxjG gU/O$joS ĨQoqǣi/a9|t=U洽ۘb>?dh-4bs4hhU!:w[~Id=\|EC)8Pl8=7S0$8I>)hJT3D7&2rHaTӈA߆ v7b ZQBkV81 888n7jLnWK%ˆwpK Z\RE8MY؋83KgKwm4F<ıijd{996뱛{nwvҒ.e7s/N fWK͓-P!&L)SΓHevTZnAhW5TATEJ(J)F(29^of_N-ٔy]Xʁnʈ((+<5 e<=ohOw^(%|˛ V>=_f,u3m,F nVorwwH#g!3*Ws\_N+jTf-zObv[ Id3|wE'wAjW~f_jMI9 m_4 1:џM*>O#M4QAe0RG r1TH+GI׿W`[x<qj.RNi,}{teph% oE>J+ڵa=}֟=59w1뎢<+j_o5{ 9NW': 6rݗiO{ɓuM)s)wU 㴗ؽM3qu*j#wa@%7oOy~܏ܩWv;a&LZ8nYւ V,åޏ_^7KsgeS$[{Qȗ>r.kV&t)U ~z ֟JҵmO֫]v6k \Z#|lm? >2] 3k5w1|U]{G8+pwA^bb(e]uaئ);|%=J DDzm-_ o}aZwkxM2Unkճpe6[羜*~a/*l׊M耢ũ;L.欗n,5Wxxvz{͡ ½9l*Jc2/N`8>G{>w W0.;p;=V/ne9nb:[?׾Ւ(w>O]ϫQt~F2qCfq1g ߩO9ctT[ 1 4͂R +EJ/ 1 u\#A^pw+ϲX1  ;p4Qqf51og֭SyMJnH1@z]Ye/z+XQb/Ľ eeY/u۸&z]I\\eʿ<ٻS%j)Y^m,޽# >U֟K:c-fAꌮTsSTVy]oB"m_Jh\hg-)x{5sשD5Xt7_ /I:?*oUg.jtờ*LYx[?KLV*RuEtXѱv . ZNiX4ɛ%jWnmunG:'K_iMMZ['c9{*K TsOM!~v U7nK5G{~!ϰ5ն.~7`Kڅ8:c{ǁ^e؋նUndyi~rf-tv"^Vs{:`1‬6Ү'1]lL{vjYCe;&JܙnףRC-ɾIGs̉ķ˗_G>cNjNƽ\k;$>Ѓ hzlOpE!aG_:PޑJ=G  *I=TL[+l6v[x5ϏGt$%xJҔs nv;s0gjնh H/+bYD,5~ͺ./;:?N +Q{lvdϴB8T׽ftqqK7poB>K><(x z}w8 +Z_*>ŕG&asjG>yjc ÆsUsu6Eـ۝mӛ{u@d,0BX:S[g`&qTUVDw7b9l&FVNl:d'2p5 ?}(<vxƊ_vx>lm\GN8MԞF"Tݼ89vzi6b]٫gpFpLgg\wC&K ;w 05 .1ۍ8lJȫ 2gV0t3WxłA^Dp]oslqW` 1TP:"d #1ODJfBuL8f() %4CU)fW9eذ i pMc4reJ{"U4f@|&o{|tE"hܤ%Bvۍ$3 "b 9+ *.A:l*.mfMJ3vU`wX)^e nw3el8h2ܥZbYL-T@dH&"D9 |*v/>wP|h]Lˤő)5$myW2@}T_DY&aLtsqKNH01H.$ |<)=c,{KUZ蹮 j,zv=:K?/cPlt[ ՉP(PQJҗI"M"mj%Jz!ScuzEV(,owEݸTNq&(a7\fpr!K4Y&˙nU;juڎfkNuKU-~r{Ais8-CgNCs4VwfUrO -ϫwq2I5w Y )Y$mh>.eS /f L#\ȟNatkO#/t eFYkHZ6ݖ?ZPtݫXﹶ_ 4f-r fe}ak$?0S>&z/ujvޖvOk~5,=4񤓅zjSZlh-E=MtM]ȜN&?ƆiΚ" tteOgk?@>Rt<4Ç2*Ήe_"'GOwR觜c !g5 mogֽ,U D g*4A/~Dd5xỊ.Ó/{*T;P&8f7cf/M]2O;9):1.c34Q7 ([08'"#o7 $itI nC 6NAMr!A'r2r=/r0GZz7 %(/?a5 wmNjyub bj!@F CF*# 83{û߭F&DԴ5T6k3s۝ʲ(֨LM)QA!1FTYY.W>G?Δ6e'T-׍6_U0|;C>-r9 .s .d˯ S: ac?mT*$ⓙRBH_PSF]<NIt*{ jx_`9czOiûԒxy?Q}<9޷uGm|HR3AUxtL|q2;!hDZQʾaStUz.]6Qz a6\Shj+M \҈b?,{N}a͛on)n4eQ#XYB!.&*r9Eyg:ٖJuCkX (0ՅB!*LYR艖*g%E#lwe=\R]E"+%iי\A"1k\@r ~13Ԑ5鎨3ӵDDM*,b*g} D29DWMq>~3ۇd0UD/6؊;w[CPkrdL4}3߼!`׵)92A 4pȆB+3Aw4,wR|G 'ƍ vꦵ q(U֙Hr!P bY뜉"B!W:qKSѓ Q|;zG h}>|ev }ӇJ773Y9ȼ,1 ޑB;oD^q"׊hI܂nȻ`<""B(2TC͈nBVy,~MOy O> m*cU* ŇJHiyfhbJJC~Q Tt$vKoI@ (d帐| wŧY2`+tu ,c ?܁DvDD6?Nc8Aaq!uV(~^[tdmm/}\ussb(@平"THBx{;RBKRZ@cNbzihRh/"K5&lpME9= Bh₃qSls9Qq,% U}>zN h'yP 5Do px|SA<8!yL# %D6-.,g 1+# .]!aP̖CR{8p۰`UݜVQV1C xlg౩ oB9&5C^ziUϝʽN*O5kp-GЉzT?~A)T@@1CFDKYavZnU NNk+хo1#n\ 㵮emm3c^h+ 0c31~ͱwߎx_k[yt}Ȁj(!C'ٽb !MV?կ/yN~-x:bLy'ly̎mrgEW)IPEoU?z\'F*Aٳĵ*Nc>scfy?CH"E IxMՏzö#"E+,vo";17]_M˕JnRpC\T7ElAy@3(zaݧn-Q̠vRv@` PV؈O}'R"SwM׽}]~߹a_ךzt=buqqq9:t)12o~'*kkzHrjf`C.Mi3nt=d (ZtΔ8B-H*L/xNa $,#FAAtQ.ӊ|I\]!33سNoJOF}kKՑWP)$5cYJlܢq}uXw?G\RBy²Nt䔆$vUZaY$J)ZۆVDDJ׾f=mjd*]Ha"#.H(` J*r& rhI P a$lZi [X TQ DM4-"4`iC3R!T+%r H !""\T$ZDuUdQ)h h+l+(DA4bJVҤXmZqZcUb儙TFMTKaXXJʊ Z%EP-Ō`+ DժEU]YVd*PʲD2S⠿ =}WOöئf/_Ml?MtkVKvb} <T'Ԑ,F)TbUX;p+ '#kۙ~T(@(QcfD4HI$)\;(ǒ4Cj6b 7bYv|-=E.\sgRCcȿ3DLJxAia3.NkQCE"N5|&l=؉ӭ.yiyrJDMO'욮~I?2 kѾ#U"~: j--9R`͝ǷO.(ݻnE>B$p@hE$:?46Nο8]HC~۵nuUTQ4׵ޟdW|3 dOvCwy >7_l^fc$zd8}Z>h$\_Ogo>⬲ծI'i]4MW+*5h̍#|IdvFTuo^+Vqaɦɓ~zz<}-+A<N"rŌ9^%" RDDJ 0kJ{DI}kZ&&i5ѹhX;Ba!Å  \꘏@E QN nzydG)8&$nܐ6ͨ?@cPȱrGI jicQ'B#"ֵ̆\-l.& ҢqH+QUU"l]5B-DK$̒#UZաocx=Q+Z}UUUUWsZb !!)cvDARʪ* |"!$>ND4gК$4l9M b$(&efoBClI6b49N*`D)2=,5#paTǁm$YlO};MT䪮[7iW␌(hT%a}S˅Pek9C}^T9e±IpROh_E8ĤRMZuEvz"Yߖm{$3g1#Wl鈜 6Ÿh\Ue6l%UUjPhr~ww=t=CU a<7rbAxIWɼρ_Sf/͕“/ۑ G1j>γN6sAaN;c>wyu:ZܟB,ct1YJ bgcUj5̗}?j^&яΧOvmP[ǹDh4+*ڌ}*,R;!M.cDqSC%9ҳ8}23sgĜ^Q} =?ћ>{^:m4j:u !7ZYdև<ݭczc~4b҃7sPE-QTP'ѥEUSGyW '{|tfƵ+wX8wC1{.ey *@R NYdrԩӏe# "9 *,M)$U\!EF/SoG|lWPpt}ż@hq/_x8X)j`R@+T$XlB2BGiy)|կzX+8f ̫(EPH.X>M: Mko\x |}_#óvG&0gSlV?r~߹@#?4$a!DQ)0FwkՄW Mv q# qy(( Yb1ŘU]UmNx`}]K8\"k 1UZi)+B`#DL2hTaSM4J888vrIMKظ"׫XB%Ƒ! (p苾eHb"%X";Z:ai$‘0(Jj(&`"""""(?FAkR(2*X-9JJDF"0C " bEpab`ab!QA Ð84?ͮv3 8pKj7u!u]h󦩮EӨgN{T90ooe$sRs-aw[idGtwFHw,Uqy҈75A337}W4y1b=Lϓ^mOty֘{TwtYǨֲN珞Nm1Rէoou ;Zg,}:(*UQ&&*M#S( *~ O$*N'C ?lt@ 1–%.'V4Ҫ kJ¥RTUTU*aJRUEUT*j$D1$$ZTU*TUBQU*ITVVhu*lZWFUUTUn龜)\8YV*M1diXUB!&X%UUUJUUU,B""!""(`!" "B b"JB%UVEUTU*QTUIUTU*JUUR)TԲ.mXX4DDBDJMTRM2D*U%iц)JJADHbR"!UE(/DCboG"x6hD +uulKu6Uu1t+IUUXjM%Uasfb|ccRar( bn2A0 #tOdÉ@n\l`I6bU+%S~Ӱ8 nÆ:&g7F%v!]0Sg+ism嬺9\f ,a(RBM,ն 3˚7W=OQ l/-vGnH9 zN1i05I$=K9M 0 J!![Xc B@1aV$E.*qUe蛵E^!+I1-<{i wk˙Ni*'k$Ij&lːiw{3Z0^>^ADE2LLR wped51s $T~Cz&sqM(>O[mO0:# 2|=U!@TZʉeUm-q!4>w!KG(S"W!1PVOݕS ">} rp+6X_z PQc]fnu|ӂӓJi&HQUlV I>}i7&`ownOG]!zMAf$ZW =PeoDq=UNyKڨqTЬ 쵐6𕀈Qmam l9T 'ŦaVc9fp<1-mX$w̄g~? X1$@lXWM)NRudFw_{86S; q3IG9Ό"S 'z=ﴻGFsӅi6UQQ6A⟖@NjӞ,~j7%ލb;A?'"%8(ҪBEV1T_G0b cT2S# 8("<%jCN a6H [}s:=~F'i# Wu8D" gd˴ϷVuޭp0xT=s/$I4fbR0D盘R%^v|l&Ҹ'#S1U1Sti*FZS[dOQ; c@y&1,$hQW wƒ#DdX!YhJ d.D9cX[G_/|{_ϰ6&/%Mth<'N3AG$h)DZA}xly~[fv$ h@f<~2JY"#*%!ǏhQS$&"HZvR=Yz;η(wy_'MYZ4T&Op$h~HO?~yc"rr9rI 0[9DQAr˅4fG# JQ(CGa'"5AKD# jʀ;TtjiIcC F vJ8T8dG 0:U˫JSaA|6}\[p̵#֥S3mӴB e9>HC6XѭNJHCuzjI}Vʟ,Ir dNqzakBOTft Y6¨V/aaqPZ7Cx0y41z?c928,9)JS$W506JN jnaK&8#t /B^?!ky@jCu{o~Yz~i=Ns?ݸ&T&M$4X! wI FoB=m;נB]8Ǩۄ!* ځN vݸUl*o6R94SpQH 9AhmCy0f| =CV"Nd7m֝vՄȗ:nա n;'s}E?cp: F)94'{ѷTNwC0zD @}9JJphjUYFPE&o'%ťFH MlxRyD FeGjj m330;OĠbF^U3N4:0(i?;,I䎣uٳ0Fh%'5 ML3z2aGճ*qCCNπYXaQ_77l|peFӗ,*i#I# ;qiީN]4ez1>Ʀzxl^-gtv݁l۽`;A|K$U=/?llF 9@pe-EFJ&v÷*§u'0\!5kH2I]G?!*ҽg9:R/ϑԡ~ tP`=냄BԢ۪ተL3PtM"rw=|zAD*R *L*HE)MGeMbeTP"bR FNC)M0\}<^axw Zdh~d}':pOͲii oUX&.%d:lĐY>?l{=?:?ſǻ<Rj ע%;`) 7 .eL:q+ejV85J>,?U0tXƿhL@ՠLr{Rbuī r˔JPVkӿQ(Z4KQ> ñC7w[UGS 'Ip>R@(K @0@,H%) 1 D@!  ȢTDBC  BC%ZI"=3eP D+@`“K3QAWk!p@@A 𪹵TC(wCcp'QC JSpK<*>݀#uw~[}41~n31R+V?Jj^9yW E^mA`r4#e j zŽps%:CL!>~ ;6._Ӗ̨Eމ〞˃W-J`ʈA sbmX<__ʧtQR_" A>)[kr)O=cO{dKNǒ?:yUuZ>C>hO]_̉T)URC钺LYC;Th&R *懐&~ku">I!QXcř(\T"D7HFfr {ߕTᩜn\0f6}T|G~ {\&L (ҕDYJʊU/8%5j&,fDK3@Q+VgW;neǩOt$DݤN `bsM~'D7 CA$d+pS<~G}ʱ2DG^8&dt^=Uޗ7M7B8yiYb?;gu>!-,,n J9W~b~0)J*TT83_6lsnJ'?7gi`D DO\l|D_85d۳_pZwEwAȈGP_}/hGdONĨ`_W3χrU݉?I?CbЕH1LEQ Qd0ηZ7%"8L5蠡R)AHӧENaejf3RLÍ.! Za9DrmQV`ciHM-uЛ~'[^|HԳ‹~ԟKs]n\~~-cwrLJTb*beCg}C>\NSQ*PBx(*GޝaNWYW޵70) ɸ-ؽ!ovQ&7e+ $UQy[ t0\!=eO}?F}$GסBO˩|W{T?Uw w4L 2o`3r"' ! _%b~S=ֹW+>;î֏jTE~gnWdK_䘫(Gg8u"vXb/CAe<_~ IxMe.~w/ܦ=߈ k8g͋+_oIJ.MN{OQv,7@ z޶iOI:gDj(酯gH1uFf.H=\df6d?& Iܑ½{!$=t " EлD9e:ݽ{&O쫿osuyZϟ潚bR|ѠQQ}﯌|]~ʈxTTIAԋȑ m.G +F<>Md9G̴(P>_"gF:b }NG I"W$4ʥRr潏bk:^/')'-.2=8s_|wgwfɋU94!"J ;*;"[mk]t@P)})D M1_H ^g ˂Amc<"@D.=EOSkឬH2D0$*AKlal1=|BhW UQ;|7J#^60墑?߼CJa,#MX\KB,4/ ".<`N)7L)U)6J0U8 'r~m<[bZi* M&> Y#MnprbҖ%4eQn\,TVUJJNጳ*f;E~isI0w^WQ?xOG~S# S1 !$TDI4I>hMLa0 ۞t޲}z}ٽD(Q9OQQRaAFC̔ѨL3Xg@׀iUwOdž_Pz-UDr~߱F0fb@}\l?):ïWoT.Wqx{=Ljg_kNP~w?ks0I`(W l_$ǖ^)&<V/Uvk:=[k _YE}K;%8 Q^I?>mCZ-tAr{oMzp8Ӆ~Yoȣ3hAyL,CK 'lj$_zY*qUib*dxu txNlxi qd_r\9绍?waIxFDwT5;j}g=qsU[9<AL,ܞ|LQ#7w n>?4cf \vȞriN=8G簢;[|p=e ͐&bac@b~^OlxVz[ލCAΥ"֢+:r9CȬ"gFRueG, />N;T*Z'@DKX?xPB2hR+޾1Uu~fxaUaZ0b!3\$O%Yxlg:ysp|/>[圯B48Gkv]XY`jhDY3T'5,RyMGU`0Ȉ}_QP~/_ b d kMoj);FNWu@]E9"M=ѶhkJ+8 /fzVTB"e$lb$$G[ou kf)D) T*(ț$ z@tuIR!"+X@@p6}D'S0M`B X c,Oy93Tx6LVbO,W=L6STUD%JiHfWjpd89^}dI$]9,I7l)Nđe h),ja+ip`S%US\r%NfJ+,`YgcKSFuVOy &ʞ$Ӛ>^Ay+wZ=iV[izf nUTMZx8d oq14V pc6,8xHȳ|;Nhçb;M*SyІHVv&w841Ioc7qX1lUSKƚȒ0%@Kua"Xv4É"?)θ2j'a% dBđ"RB)Ns#Rc$dFԽ<ʇTTyU1R|J5Uw>cC|)Sim=Oi葔z䧝uTSu8aH1Y?F-[U̻LuHUV,,$5bS>DNU'L})prP4|j`zkwe1O(FsPl^oLU2.[) hA6ܬ Jݳ+8DdpUMDLRҰ8C*K eJ^oA໣i*QONZ&U8!nzb.j=]*T2}6=`9,wc #&0n7`a~TTth#?QTJT 1?mdE^YZd%L1xм>Do9Q 1%XPA+;өQ9a{F$첤;Nز7PeAxzYfJ C4h1 ("D2MjY1fE…*>opuXQ&;!)˔ʲN9ETNG9xGNRss4Ԙ%91 c*R*T}wd@B7y4nՑ8*lbJҦiAF7s7;<bx8wrqpAË<_ecGn2bi֭D(ҪN }dRB"""!T?A*S47Ir0*B)CA)K" I%RE͜\ ";$ )*$ڎ\iZW\MUI{9*ql>9ӂKapōOU*C-Ԓ+HI 84X}-2FԫYȬ;Q%ID6n`v'鑲T&ʪ _JʵCaTKIi)X1RMىJJWݩv7*fA!Ƒ>g'iCUQA30K"tb,'QA1D *I#:nyƬr*V ]DPLA1#CTT %0PIܔaCT}Nf H?N dJm1x76o5ugrRJUUW+b5\#xWw;bJD->OV;^wbMc)MI9*KL6qI>V1*iQ=!OΑ2JHin1Ov \"G2=ȲEBF B ""X""H"Eb9ď+ #R +M1Ӱ< gTJ*IRTR<[M9ru_nxH԰!tѾFI83nֳ.WЁ 0kP;`Å g9Sp82M<;2HAآZM 62X2X ВI:̄Иr7.NIc(vn#F wsC2hSКct,rg#N}]*Eitr4`éTwOK`9GWO~COt{"hѕsMgS9$mb*Q%UNw$EQUUUUTUDJ,@X`%QHeE UUdj)Q e***JYiV "V!0bUV"hAEHQVDUwy8) vJM> i0g~h/&{L)<$DYn[Es}.i$V.ELw76IDUcISOk0W|{l\" 8|1q^x*~MH ̟:u:v^#  qph*Čmb%A яbua)lX]y'ٺzLiXobAͲކʓL4<1򏚓D mdUm3P1a$jȫXUIԄPC::#OuUw,1cIb4H)TlaˋT"2Gc "H"v-i7917J$BKDL1U[V14DpC& *O )_qRʨ)%SYE1bdV7$HU^JNc**LIX*,MGZ=31oo>]I6>v|GN]4DO|u9$m}w|Mٖ,MepcbMOjY"y9Et1~'F۱'&śp:G2MG%mnC 1,VJ .,cY%Pq7pURdzEuH:&vD1uL9RϬ]9|}TS"(Tn%cy< '>uDDAHN9ByL3<2cLlO:*l 5Y<ӤU(UDTӨ~vcVb0'45V6 Q]]^|O=|5 ԥdD=H~ש/rO{<( hc u:0@w|~BkIausJw?*ա96z.pgTC}Bx}ً.p㷴{ouo~)^h +eV%Ӵpu_U]*k/q+CxhӰʤin~RoP7 A@9w!rEOC-p?uY؊(Kv67#ߞcxoT#ePV Y**W;_SN d8r!dQ\TFv1 bZCCMa2FRyIV"%H/8IRs^P V!|m':͠BA>8u@2>{44GyDH~1ne'q\h?bCDq8wSqTBD9l(Z1㊈g @Yȭ0Ʋ# bѩ*)ѳMPcF$ZzT?ScG#L#ʑfTi7zm6ԘR|T{lHjA҆  Ү1_?/RZ c@OIPQ?E QP~$9H$jU?KN\5<AA??^PH@_$r 钾#(H1'ŷF1!` 4 %UU YAzk<2 ! < #xnD{ 0$3 *U*K Q?6OWSuqGcrp?>'$GSw(W76M֙jI#;:S&arpkG\|?3' $(IRNG Hku޲p:18ClO{)O(UEp7.f: Q8$<ד^(ry|nˠgRB8Dj|ہP ,/>)fGa]"1Q9 l$ٳhFɳ7T|M}o$"Vq(P^\y\g9 +`ME/R-%)*((["HmO*HCGGָΗ\B BE&l{c)NM ׶:TB[lʈ̡acV:=sڎc>Z.SuÞkWUUrzj& @_~kq9Fy̓BUҜyц^*t7u_Ǔ '.>O7m^@rtlSI>*>1*MVA40"`$Ha%P bS }azLUDtٺɻC,Bؖ$BCQM $HHЍ(z'+QDZi=|~1 WTf)tpHԥ8&ԟups&xW'2y'HۢFRVJ]e-E+rzN.1]b0;)٨<*(X'4` TH T*IBĐKA9R=*bwuwxQO>-AN/C3:ն! ?W>k\뵌j{n ޚ;ŧ=v\*ԎN~cKfbcG7LjV w⑁<_ _ W7 S*6,u8%pP*mǃ?ibdMYLbBIlx{h u zNԩuH8F]< e '!T({ s1Đ6H$v#)gq9u( >E'I؝Mz_ {fSfdDXyqk%Ry[+dB<$ݱ(z󇯋9,DGré&*lwwXOD:6{6rWu|v.6InL,A {!9&KsAn4׸@633!y)`Mu8 h#xJT͞M&$]a;ާj3nnOYE|0{cWr ndLb(i_I7>:k:U)aB!"A!DC-@D!QCD@ K1)ISM1 C5TM T1 0,D1)J6#$+ޓՙ,8A9蘘<zMD%! H%`OkKQWaTIJRs7G>4\~ew,u9Eh֊NNSmSuY ef&K 5=I⩳S:<1fFI $XG̃A#Ri4IwSRXDJdCiL{w>2UI1&,l#o$yv6IIL$n7T*ؘK@&Qa`8=wqx#:&^'YV(¨)TpS#rI-Jdt|>cMx~ۆ<\)M롣ޯG9R|͞q@X[!踅Oɫ=oھ0f9"cGA.9tόULi /|ܦ#^]BBräxH>'A8H"ɷf~=G)>>% >}Ml1:O2t+Mfptf'|vGsM擱Ɗ *{&q _ffwt%Ofx=˼\b2?}7,=*맯K)U'YTJ<&Uw] -4$@qR 23AIqn Jc`HŘ"~Y4aLCӣslh{ Bs3X,*X4bj;y6"1xIմtMF ݆ #Us :ҡ >vNhL>q#\*SO>{hȰQ`iQfżv++Iy;LFőM#HWSfpU0٣Issooj%A%qnԸ٢qFļ_l#y-ʶ9Ѳ9CYbs͉SW*z?:!V*øKQ0 X§WI!:O&EWgan%xpvl un), Mgiz2xmC+ٕdTÄp3qI 2:șV{Q ړO5 tMP;:TNQE/N߁鎈2,-˵!}'+8p.7v%ﵪvjB!)NunGeBM;%)D^zwNZf8.a kN<ҫq{ܢDJP$ ɶTY1Iб3u!ko0v.;yd ^EڣrY5[L:D谛t5z & CH1#C BZmGF1OMb$GQ# SxlL1&ąa\ D~|Iؚ4YKbaPJi[?y*~s |"!DwNU@ÈANO SDi?8J,a$Q:,aC$@_ f4 :1wF6I&L,97iZJT(Bؓ #3r[#(oE@a Da.HlTJcDM SiRŒ0֓()h;c(988Gjg..ݶhIl8hdNRa3pUyђM4#60ñHa4*DCV%e!@@dG]j0SA(}b*v;yɸ㱲Ŋrjedm-QaWE0EF0'cAJhbČTenS% lI2lDJH4ATnFRFȢI2ll2MRȲWA;+A(s Bň%Zab,HĤRo⩳RlX[u.G9T3+9$a^!߿̤"}0DxΑ>93 j=HrbG߁# < .vȧ!2(2 PBJ*P O_a|n. X4﬑A?/JXpSeFSNgSsHVF#.  D.FZ@aq9A;*+TۗMymD>QٯM_M'e37pE™Гj'~2CyvQHii(Iv%8,Nܔ:Rb֠gۮtTS~$.vrslC:BB_*nD;ir|yXvV>mBnթ8UWw%OB \{쬟^4vp;LcxF|v/Jw2ry(|4.PjSK@PZUJ1 혈E,?ai d!̡6DY+LUaE'z{Byc'pv q7 b*ZpƶT<& BGcϓ ,HHOc$PC)h\`!3M "0?zD'I)@F&"ZbDJ(u{*nxFun׈$}E&ɳdxI>z+^.ǓR8*8?b~J':C1;Ў6'ZpR0R 6REI4HXA8Me!MQj!U*RRpS!TǼ FyV4FIq;GK0Bmax\slei\\a'(VBRJG$Ka-["Jd'Chsr=~v'%8tJUlMxM%8faKa4ɂjQRK&'"l,Sw%Z9ƃ %*F*Ɏdy<:~oO%=UXWbJSD<;ࢪIO2vBc,MI d8nFYN*I;6{xӇi4F1}ICeJl+ ZJe c# ~ڻz{,4Ou[M<;^LL֛G{jm;`G8:ݎzs8*rSJ|. gwru^BgM4s6o1T) ~`?)"OK2"$#xJc5#]~' lM":ikqrT橥UFcN?wO{FÊ7F:+'p$IELUOH9@:$1B pVP ÌC*jUDƈƄ)Y.LLTȐ`Q5 $j*Đm2GD>9iS}fݦ*wb͑).Z[eCن*촔(QEEU5TLF4ơA")BR-OMܰ?qx+TZNmyb'*Ҝܑƺbv$ް]8isѴ;wGoq jD&Nd)W p%W`WwnE#$Pe,s{ ΩN So%aƨu8`KETTDT;1" "rN1Hb$3RsOZ֪$=q$sAU!CD$Jpj5#UU,WFpx9%^}GjzB9kMws1n㡴B1ϗ%hqQG/UNH GWOME2>sh>~j +-TD6X-XÚ /Q߆m4ד>(OMQEP/C MS>jijUZ(RUU*if ":I"C,(A "{I&S˃?]CЪ~˚9:xuǵ5aA˳xɁCQjj{M+@uA݂8እUE,JX,!CWBU0A*xFIʫ$fUBR$H|%=>{ cGy쒟>$Nl!6a'O!#tc}{=\fY$l DlY,P*XlbwFH94q⤂ȍ% [f)V0Xiprz$ s^mf.ܘLmr> hWwq";@CҕZTE$JJR@a 'o}/Kiwy M ~?jN}m˔e!Ø"oq4d;8jXРGʁX"fqjXA-x.Y#E 4$0B ?o9բ"G[h@FI Ѐ!bKW>b~" #|#EpAj v.A_@#4EK3%B({)E&-Vjv6nֺw6P "Aa;X4úIËNk-͜PJl;A.#0Iô؃Q?Q<"D0XKlr5@\59(4\hC m`bC42I$4YwM(w39rMh Lj+8\nW,sйjP brAH9䚙.hPBh- 0v9y?+f2Iea!C_-+ҨŃɓ}84GaXb0zRR <"?7Ƀ{҄!̐Ab4ݳfɊUhWb+m%sQUX*$IlY!I3S$PprO&;$zm冟!pnrqŌN9B $dJ$$"$;&8o0wi F_ς&%TJv'TхSK"~WS[RvM,y ZL_cO(ν0v4L}@V#Д>N ;1󣋙"1Ec=8&'sϿbSynݻdMӭ26c_z8rdcIK0f U`2Y!Œv$GAB;Pw9:&($[TzR{^]'[M)\Y{x{'p Rʫh:acUce4-L.l.8fɘ؎fa46Sv4 M-Ihv<P7ukJy"oSߐ`X :I*o'֎4Ӓv8$,YNDĖ;D$N*["xYO7yxvNJUfNgxOX>ut7# 8cICCCA؇s5QQv_w޾׭QDaDUO6~!^) MKp#G0 \ѢG<]sf-{)-"zKE8jnirOz'VAbㆆKMQ|*śSF g$ёf1׹ؼ :9ڥ׍7n,ukprwո`66%5B(\"[]DXqLc$ZGpsC@d#JГCrh!hDQFӐqlXb .# [CfɆ06kA8 t+!C&cMLvޫzLnb95!ނq Td26I3Xj~.Nm;X̲e6cNnrFLaƸ6.-8 !+Ř\F!aC@ГdTq\,\s"8QPrLBj$]SIBpp[n ,4Ė"P⅄ #+k{&1SݖڽOܩ lHafA t`Slnխ+TU.C&;,Rڂ7D 0UI557}ML4<[76iXWNU+fWidM\Uy jId>昳Ie%X DYR$H RRq&?߁?kܞ\*$^PńXrq~78ZM1i4v&?an$z+~e#K,8*i5)OG휖 `+, 88 j|o;$pB$>"CnKfbbN'rJNj?IF,l6aa̭62S L[RMTZ}gmk!A'p=F,9!rLVZhwM$Hw̝I{ɂ4Ub)UPpTN2;{N띻4bN bSc˼ASt&Hԡ5B+u; Оu$0 "I+J4,cR$〧TJ"p8/Eh$" `OQ;T;zՓ*MrYc8;QjViiAg8Z?x>cUbLR&FUIGG}YdU+Iha&]J4J0 !FZ*' SXJ6pN DER=f;'brtu2D{.l*bu0F1a2H<%dXM*+̷)c]Ln0 2D) ,%b,XƩS%ڊDDb1HHu-!cK*K$.MM1JV+%QK%i[4XK\({G|]K#zRBqv2bxRjx4ҡ#!xu;RbPS9.oyq&GBLb99I3 $IMSS~$b
)"_xml; auto& data = doc.front(); BOOST_TEST(data.parent() == &doc); BOOST_TEST(data.name() == "data"); BOOST_TEST(data.get_ns().empty()); BOOST_TEST(data.empty() == false); BOOST_TEST(data.begin() != data.end()); auto& div = data.front(); BOOST_TEST(div.name() == "div"); BOOST_TEST(div.get_ns().empty()); BOOST_TEST(div.parent() == &data); auto& test0 = div.front(); BOOST_TEST(test0.parent() == &div); BOOST_TEST(test0.name() == "test0"); BOOST_TEST(test0.get_qname() == "m:test0"); BOOST_TEST(test0.get_ns() == "http://www.hekkelman.com/libzeep/m2"); auto& test1 = *(div.begin() + 1); BOOST_TEST(test1.parent() == &div); BOOST_TEST(test1.name() == "test1"); BOOST_TEST(test1.get_ns().empty()); BOOST_TEST(test1.attributes().size() == 1); auto& test1_if = *test1.attributes().begin(); BOOST_TEST(test1_if.name() == "if"); BOOST_TEST(test1_if.get_qname() == "m:if"); BOOST_TEST(test1_if.get_ns() == "http://www.hekkelman.com/libzeep/m2"); auto& test2 = *(div.begin() + 2); BOOST_TEST(test2.parent() == &div); BOOST_TEST(test2.name() == "test2"); BOOST_TEST(test2.get_ns().empty()); BOOST_TEST(test2.attributes().size() == 1); auto& test2_unless = *test2.attributes().begin(); BOOST_TEST(test2_unless.name() == "unless"); BOOST_TEST(test2_unless.get_qname() == "m:unless"); BOOST_TEST(test2_unless.get_ns() == "http://www.hekkelman.com/libzeep/m2"); } BOOST_AUTO_TEST_CASE(xml_namespaces_2) { using namespace zx::literals; auto doc = R"( )"_xml; auto& data = doc.front(); BOOST_TEST(data.parent() == &doc); BOOST_TEST(data.name() == "data"); BOOST_TEST(data.get_ns() == "http://www.hekkelman.com/libzeep"); BOOST_TEST(data.empty() == false); BOOST_TEST(data.begin() != data.end()); auto& x = data.front(); BOOST_TEST(x.name() == "x"); BOOST_TEST(x.get_qname() == "x"); BOOST_TEST(x.get_ns() == "http://www.hekkelman.com/libzeep"); BOOST_TEST(x.parent() == &data); auto ax = x.attributes().find("a"); BOOST_TEST(ax != x.attributes().end()); BOOST_TEST(ax->value() == "1"); BOOST_TEST(ax->get_ns() == "http://www.hekkelman.com/libzeep"); auto& y = x.front(); BOOST_TEST(y.parent() == &x); BOOST_TEST(y.name() == "y"); BOOST_TEST(y.get_qname() == "y"); BOOST_TEST(y.get_ns() == "http://www.hekkelman.com/libzeep"); auto ay = y.attributes().find("a"); BOOST_TEST(ay != y.attributes().end()); BOOST_TEST(ay->value() == "2"); BOOST_TEST(ay->get_ns() == "http://www.hekkelman.com/libzeep"); zx::element data2("data", { { "xmlns", "http://www.hekkelman.com/libzeep" }}); auto& x2 = data2.emplace_back("x", { { "a", "1" } }); x2.emplace_back("y", { { "a", "2" } }); BOOST_TEST(data == data2); } BOOST_AUTO_TEST_CASE(xml_namespaces_3) { using namespace zx::literals; auto doc = R"( )"_xml; auto& data = doc.front(); BOOST_TEST(data.parent() == &doc); BOOST_TEST(data.name() == "data"); BOOST_TEST(data.get_ns() == "http://www.hekkelman.com/libzeep"); BOOST_TEST(data.empty() == false); BOOST_TEST(data.begin() != data.end()); auto& x = data.front(); BOOST_TEST(x.name() == "x"); BOOST_TEST(x.get_qname() == "x"); BOOST_TEST(x.get_ns() == "http://www.hekkelman.com/libzeep"); BOOST_TEST(x.parent() == &data); auto ax = x.attributes().find("a"); BOOST_TEST(ax != x.attributes().end()); BOOST_TEST(ax->value() == "1"); BOOST_TEST(ax->get_ns() == "http://www.hekkelman.com/libzeep"); auto& y = x.front(); BOOST_TEST(y.parent() == &x); BOOST_TEST(y.name() == "y"); BOOST_TEST(y.get_qname() == "y"); BOOST_TEST(y.get_ns() == "http://www.hekkelman.com/libzeep"); auto ay = y.attributes().find("a:a"); BOOST_TEST(ay != y.attributes().end()); BOOST_TEST(ay->value() == "2"); BOOST_TEST(ay->get_ns() == "http://a.com/"); } BOOST_AUTO_TEST_CASE(security_test_1) { using namespace zx::literals; zx::element n("test"); n.set_attribute("a", "a\xf6\"b"); std::stringstream ss; BOOST_CHECK_THROW(ss << n, zeep::exception); }libzeep-5.1.8/lib-xml/test/xpath-test.cpp0000664000175000017500000000731114324170113020147 0ustar maartenmaarten#include #include #include #include #include #include #include #include #include using namespace std; using namespace zeep; namespace fs = std::filesystem; #define foreach BOOST_FOREACH int VERBOSE; ostream& operator<<(ostream& os, const xml::node& n) { n.write(os , {}); return os; } bool run_test(const xml::element& test) { if (VERBOSE) { cout << "----------------------------------------------------------" << endl << "ID: " << test.get_attribute("ID") << endl << "xpath: " << test.get_attribute("xpath") << endl // << "data: " << test.content() << endl // << "expected-size: " << test.attr("expected-size") << endl << endl; } fs::path data_file = fs::current_path() / test.get_attribute("data"); if (not fs::exists(data_file)) throw zeep::exception("file does not exist"); std::ifstream file(data_file, ios::binary); xml::document doc; file >> doc; if (VERBOSE) cout << "test doc:" << endl << doc << endl; xml::xpath xp(test.get_attribute("xpath")); xml::context context; for (const xml::element* e: test.find("var")) context.set(e->get_attribute("name"), e->get_attribute("value")); xml::node_set ns = xp.evaluate(*doc.root(), context); if (VERBOSE) { int nr = 1; for (const xml::node* n: ns) cout << nr++ << ">> " << *n << endl; } bool result = true; if (ns.size() != boost::lexical_cast(test.get_attribute("expected-size"))) { cout << "incorrect number of nodes in returned node-set" << endl << "expected: " << test.get_attribute("expected-size") << endl; result = false; } string test_attr_name = test.get_attribute("test-name"); string attr_test = test.get_attribute("test-attr"); if (not attr_test.empty()) { if (VERBOSE) cout << "testing attribute " << test_attr_name << " for " << attr_test << endl; for (const xml::node* n: ns) { const xml::element* e = dynamic_cast(n); if (e == NULL) continue; if (e->get_attribute(test_attr_name) != attr_test) { cout << "expected attribute content is not found for node " << e->get_qname() << endl; result = false; } } } if (VERBOSE) { if (result) cout << "Test passed" << endl; else { cout << "Test failed" << endl; int nr = 1; for (const xml::node* n: ns) cout << nr++ << ") " << *n << endl; } } return result; } void run_tests(const fs::path& file) { if (not fs::exists(file)) throw zeep::exception("test file does not exist"); std::ifstream input(file, ios::binary); xml::document doc; input >> doc; fs::path dir = fs::absolute(file).parent_path().parent_path(); if (not dir.empty()) fs::current_path(dir); string base = doc.front().get_attribute("xml:base"); if (not base.empty()) fs::current_path(base); int nr_of_tests = 0, failed_nr_of_tests = 0; for (const xml::element* test: doc.find("//xpath-test")) { ++nr_of_tests; if (run_test(*test) == false) ++failed_nr_of_tests; } cout << endl; if (failed_nr_of_tests == 0) cout << "*** No errors detected" << endl; else { cout << failed_nr_of_tests << " out of " << nr_of_tests << " failed" << endl; if (not VERBOSE) cout << "Run with --verbose to see the errors" << endl; } } int main(int argc, char* argv[]) { using namespace std::literals; fs::path xmlconfFile("XPath-Test-Suite/xpath-tests.xml"); for (int i = 1; i < argc; ++i) { if (argv[i] == "-v"s) { ++VERBOSE; continue; } xmlconfFile = argv[i]; } try { run_tests(xmlconfFile); } catch (std::exception& e) { cout << "exception: " << e.what() << endl; return 1; } return 0; } libzeep-5.1.8/libzeep.pc.in0000664000175000017500000000034414324170113015401 0ustar maartenmaartenprefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: libzeep Description: C++ library for building web applications Version: @PACKAGE_VERSION@ Libs: -L${libdir} -lzeep Cflags: -I${includedir}

\{z#͒t馕:գlRqT=Hqq'\"{઩ѳc.2E%r ƃVt:Ԋj ՎD/ !a-U8 㥄7w&#Tt)ŏHzƄ2i[Y&?1>SGGHy#Fp;w›6UAJs0 DF d`ىv#L ' tE?$Tv$ԎkK=ǑsNel7dg9x+wyok|$=aCݪ"ڠ8ds }Oq7{=}wKr"BM$u V* @a  [H9a_^˼xE5h5m/,&~,r6Q߭x7|mOP"XE~UxDu *: zq?klpZo0ΐ~tr?u*TIt''RKE)7VEVa:T,$y'TQAN+̊A`O|>*q|AD_{G!i?dD:uo7M u:'EHCxXF;)YXc$ 0g̓k)qzd;!DP)V-@ H~_ R</U[{oQ;}"fdхn6078↎+نm 7mbbY5IF.0X%(sH(k\Бv%;PE!?`b Ij5l\v999$+l,Z\2C99ΔbPXdpӓMlO(~[l2QJOC::%HT 60V2:Ѝ{TD nEwn86@y)BNR$D% TTjǭ1xJyYy BqQQT&t&Gd!! ~6_/Y#v=& **˨EXaiNInsyE?۸MQsoNROS W^1 1J# ˊeh4}UC F,UwwkH" XY9ٝJ09;x't*ߧy3qPڐzWH ];7 nyE_}$B4i{u[$|w-qWƬ40l9 bu$7:H Оh*T쩿ͶT%>݋AfRB**DUUR<-WYτ7E ME5 M h1rC4YcoDNn\ G>CǗ7]j\c9BZlo(!5Xny|Åڱ!jnCs R4?;jSEdPM{uJgV okNXT5皬U竂n7X_>ǯY))8E4'L>auD&U>`M c1$kV@ nĕfLGOtޜ~í18_oꄡ0G7'_bӠD?LHMYM ,>O釿?+>|w`V.0ԿOmNf#$KEJ7l{QTb"6 m_\bνS7a!E:)xZk <_̟]zl/'RN#'!ΐDz&{balm,lFpKڛ$&̧[3n ]Xr-T*+а eI y^(mu762jqH1<_^ƞbIEDAGծj+-,j *wSý^H*C.y*MFC9C?w[:n[~+U{?w\A(F `=?b*dԝo='_Zg7ZN?}C7%e]o=BMk pZ\떟 VL?bmed#W:d%&8ꍗ%k;La/%<%?M,XHT~0*9!}zvϫKQ.tsۤAƺClߧөSF$,yu7n_>e鬛]CƖ9S<[ȎoOWּDvz?GŌ9ٵv;[1]^_ڹ"UwC9}g3 Mͮ׺NrYwOו[?__]3$\l5/#QTekL,{?JhUpfK3"(=zd}M_ɦi3=dR]&W ?-2*Vަ~; W6EhmP1j ˖%I4J+Q,O`Bn(G~}pōQ곙~Hhsʛܝ7$ӗ0y>TNҼ3Ew?2{׼{SR~rm;w5H̟W&8{7A)}un)<+򽖳215}($OERJ;4dlܴ]%k3HfEBWYb[hSh}~"tr#,> 6EUDS)";xi{/@ c ~)HلD@6<ؗЭT<%@DPH@Ӿ05evGEKhA4`*d!&qf?&~o=|H{xc%H2ej@^| s8wso}-4RVZ-QÅH6©cHA\pAE+X"PDbZp)V5sf䓓6/~WlPqi3$SCFŐqh!{" X*Ă%7[󩶁OT(`<DzYR8|TnlnC2sa\>Ok~BCy8wt<|By Ǘ2w0q<{/cLLQBTr+-/8]n<ΉoA#XZN/ >'s'1U0r8UOmDƇT׵W; gϣZ#WS} 3 yϙ`c[ڥUj[ZO7粮_s[WNm$zĿ:l;AyŽ EL$^fo 3F& 4ƻ3I_yQFժ(/GgZ9B* *uHx#8@ccQ;PaNUw8Axd$QFt@lMݜҗAH9KXD`k=>κ^-Zཇy\t|hj7TڕتCh;N]į$sybsǓ߇Ε^䘯ةZ[^rrثڻ*h ԧ|PH/ɐ&+x/D{?Q'zqT{ؽ"/YWdVI*lg-WFհBGGJf=KgL}=|~gہ5l븭 *+n }_ݫ4GMuo]xB'QATLLmG$>ԃ*f;J']$wF^M[G%PH`WRʹz8D98[g++ !((֍}geDS-X*8r::zDZQr Ȃ*-<û_;Y_ggg]1&15===-<7|oګFJQ-[ns&>W ¼8 aWnn^"kOfO%eδO_?P~iӨ"5 Vµ+bXQjE*,EYZ2 QIgnik|r+R\O!yjCB ݕQ9)M7)\ABaULu~ۺ#v[պX 4鴽|!=q3dwu+vm7}VQy^A <̱'d.Aˋz]oxT! dk}fo<l׋;l'oŰB~ dz|>2GȽFw-WQs?z+&~"3FE$ckئ=,{HqըyV1Ynʶ+لVJU_r. srQtp+7eg8y)×ĉ+#žl2KV#z@hhUUt=w-9GZ8z\zt]reex4͋R0jٱؚuøI˿74("ojp-ᄐ4qzn"..fX4bkM[t  nO**sL[U]W+і!+qEK'@*"g,ƒa͔NȃzZKhRw{n_MY#qe;֧G؞P ے|~PCƇSJ7ZWSl\(kM%NÂqI3nC˟t: m 5M.ńҞ vý=#x #;B[jǕvF;q2hի%]%&*$3Haeۺt}h<=C񓿀(i)IPTwk`ΥY_&q3sg*8P-,@̭~{mP`lefl[f4Գ] VqeC6 7}S\舝er{ƼRɃhE^hq8A nY݅p:˅%3OEĚ[|]-n8|]S;G 5kX)<;_ZihCtS=u__±I?slQ}o#&F-^%m8t_ǯJB&{\M e9NG\Eqc>T⪋2SoO`W:JfCul{S"iO! |Y6n+?eї$hnԺw7vsPvu+ /?oPjo84g}-hj:yKoj#hS)6~)Nm-;D >VlMϊef~;9qM%c)jj>͘VͩΧZco.- UG Qure {<;{[v,q-Xl7T~hiYZ`\(P쎅\|ٙsVU^%.}lEqJР?3.'TV$9tKk&Kqeu-|z`䳟] #z|c3dW{AXhTsS4ez)Zbo+<]MxS2$4Ca5;|UU9~ꨐx *걷;4,Kͫ{g:{ WנYmִhI|~jf/Ȟ>z6/>Is?: H2=RfsQ ]aW$[X/Uח%z5]g"298IH߹aq%1Qjgwr\rY]>QrM"4|U9mO{Mmd}؊=Xy/A^{?rLx$ #bx.RP^iCqqkZ&3sAҟVĻ9[:h#ˑ)/O6;6^:6.<viDtFy~ ZK[ⱟHk`4!vHu 쥃'<= }u4dvw@̸*խiN%"]l}eEf(*9._/c_W7bPM&.*D_5֬B"_4)aҟI8+HP-?\1~g ﷿Ή+-*5* *z % @L@t{Ou|γk[k&.>K :]OU^H%= (ю+#.pY*i Rv6[,"#>|0a[]m]2u~Ci._R]7O>+'Irpf9f\ϡt9J2YSgyw/×jQOZ C8x*($ tf%$&8..^#cr;V1>aUAPLQKwc$FHc05zB [F4B?A]7ha orlދdTYkI eeA~o[/JALPs .v/ G~pO SqHEA3uQGU6]e~WV7/\zwl:tpΔ4WvY!vN9k&/f蔄pDi(l"{ g(I㷑tc2:%4! *7t9Ttwgs7NJ':MC6j'c(J(LTɲot}f;{$BIa=;8,+:5 G6GTw Cl|*+'t\c ~U"<9UgD&Sk8#KT;bF1UrBȓ.M!Jfz)dz:C~+խ$IŻt/ lޞE=ԟritkV,<>&fʺew7~pۮ}Q*=k_^C;B`3¹:0dZVƙ̑\a3OH(Ҟ,f.*,/Wy<+/-W/_?ïfo4Z(jRNc8< {)QjץSQoA+[Z}n&_gr[Y0,ķ<}}[tm̸le92<ʅ_GC2_;I+S)JVbKYBCv6Qd\OzZݏϓ̓?OA[pw/6{3ʋ6,O t\,B8qwY-GVנGaeHc٫k:4b+ <\~<ǻVJ]0ԯ_?fT1q9ٺ['K3[gz*\T_n%,ov"2^,:3tݯ[}Z ȣnHdSBWzw}wԷv";>`fed̡M빳_Wh3 ^B,POK5Tv !X2;_3n/5O8ɚhu )|׬z}ǧ9Wfwp=wqR}M&펜!uZ:r| JTycv6@SJuyNO7n"6rL?ћ|Y W*D_˚^ 8"pvײu/=ljm@)~4_7u;<΄y7F̓u?rJLqL*fO8yݿ|A";“3ix V3 ,U6tk4"f^ˆyY,"H^Osoh˽hm^v6POٗ>&sk}b!RR`|O/=uu` EnD`gH,o,_rOGШQpF-pʾKn}tbc;^"9D gúbMzW) a }Nu9 蟸asP.kCO0_#~hh?8D(" wn.v॓p;:@+"Y{u{~-vЩڀAzRI4d!:??c?Cw?!;HGG`_+v$I iZÙ53S|<O,ajzdFrhU䝙.|r"X6ZHhgP ?syw?P>OqE@A?? [h&<Gz<_Zma%$cbtK. -Ƒ8> '"}0*! `a$.8C1IbNa7_%5MJׅ(S<{qXDuĘs \DݥF-cֲUi+ʖ*20ŽPD)WJh3 Kr;zGjov: ݝR*uBwde{%`_rZjp֍s52fZ Zl`%l!LC{o< IOga1`e,Wr~y=g&q/.\54vLdFlJ6 %zffbJ5R[h5kiKm-RBIHInd0ϼCByTMp48UG" ^ֱn("DJG'cc`_: #}~ϏWsݠT7sru^kckp%¥@yȻ_(y)(za(P<>`~"Kcw6׵~h-*7j.ppeE_PL"(dž3]Q+ N#DmL~Z~I?U {{J,$X?yRtTP+3C ,k-AC*Pc=w0HVb'>?`ٵށFnaf6ӛܫ+M} ͳ*ԁs K  TNe `S葤ЈPѩEn}'Wi6\@O2 J 8NNpwQ?6#uL wn၌"PC&|ꉤ$Š0ȸf|\d= ?M N\oO_ߛ7IϺ0?ʖ \ΙwE2lFiޑbHyG+03-rDO>C::Xv#/ފSED3@C*^:_Oa4>452$B"~(Qr/c?*lOc>L qD 1n€v2S7E}^HP`hgzq}|53ۭH;wu2|{Zi Jia|sL 'o)=$:`Bxe_?Ѷr<ÙOR?<|z ݮ(Y}279F{FfJ*"?{*{c.,IxW3A*Ury@nXO1MMub%Sý'&Q:9y [,:!V B3 ߦ^~ / j .rvbΙ+ ѳ~3گxEQiPzl7 :| KJIjë_=_}ǵ MIDeQ6 @۸oz_RR ?Qfʵ{?f›FZE9=Y@7#\>,HD斓 އ} !NCoM8S)" (hC1J+%w%d`58&7DRQqT{X"!pixZZ^Pw"GΑ的TIW8oUѼ(vzT^+?*mfWbqiƨWc:剔, / }-%?G;]΄QvFD\D.5SY}|F9g*ۍqN_+>q4W{ͺLCw]^*|X+QTjz}%UW r&o8RQ߫ cMOŚOs|/wZ1sאC|DJ!_+t|z"/F,):/ OOƇ?K!5gO=Kt{AAj6p=GRBQCP<uC.{(>`=86Sxgӕ( :SBhqPPfH(:xd6I:T5utݹ 4K)-k %y_ƕ_d!DE(a/ -kL&}īH:Վ);wz}w3c۶l>kc|[>n|5O l# /CDЍ)QDL!2".M%5 'q<1,ԅ@P B%M)(,?:|qvUߣ4|+;Kma dA!\͟mkj*񉓍WiwoVص]1bWxM̙}|L=jDe[0X&웜㻢^j\S(H&#Ayss6:5lxo}yy?mmݏ?sRŸ,~!j6_s]Q"y[zɋoSˆDv(xXZo1gm3Ðj*,K%HjɪUd}xb.'͇| _VĨ)BLiE&a1 @}ּ͈pI-'T-`m3A<QDCɦ)Dd0A'Hȓ P)QS!ns dIR_JfuEEHL/N ̢_B~M䖆ɔ.S3((pK F9`VJ^wK:]**.=qpqG)?i|} PN'g%(rH8IhVW57--~i=HO R%U~xfk??A(":{=_.q)CM^%V2(rU>u}]'uy_jRY-$GH148/ /'*H\UhĈf ct EPC7 T-DŤ" *w&]-uV+AryD"w}{uEikfҞN<8^i{QC@_uxҵ'Zܜ! y$?^w.8Tӑ#({{=R *I$er⹵irD+'z¹n" Ks.Q}ez/7* D2{DUA}7'@wbIlG#B6t]뺣ǨSYL/#.{?i߮"h?pݗִ g B]‰ 4+հ_#+}p*C'nFCCT~nCz rҢ$du#b\O&G{d)- 5\If*> U*訪ۆҪxlm41?۠Fc aA < dWSs94ӻd/WY0}4J Dme:cRsrN|70`!& Ю\ i2vA+"|; =:)[w"{Al-)CwԊ$#>+`;Bh(DG;6C@:ǰ*~hʡnv*TOUPNOkR̀pֿ](?t |҇M$DDU$PP{f}K6F0E"$.r߱?m9Z_ug1Օ"[HNcauf2FIhQVʂl}s۷Sg]yyآ[z*&x]I-*'§CB؍,?нl2%SͷVejVM] ^rU`QTj(pSGʿˑ:Ǐ·7Fnn6|UFu&; 0B?2/Y#Ն%kvH!=zT0rkmlSvG/K:^om#yU,-+cw (ڝR,e#U3~ 4>6>zC~ӎ;7ypAǫ%ךt*-0.-vrtypyd'OI_2 4h+x@5?~|o^t/p>y=蠈r$/"w 3L> [x" T_6.jaǏjqj ׽:֕{pS'x{թO9Pe"oAu.ɅwU=DeHNPC{+S?ƻ]zH0-SavaBo+JiuBmZ`|`xy1?^_bW E1%o{^֎ܸ`홃;P mc$]HONi {TZ:ZQח:-r r}oNI݌?\G!GDy78[}뮱MIF`:)XM=5{G%tr}h6?c ؊ !6e^:|r>{-U5:x.P˫΅WQ x `aU:&eR&W𨨱|C!z9/LjVӫ>&9ݣ<ٷ(oWN?Ś/)GrQvLOoK+O=Lcsf&SQR^}'~ft3"gCCMD (J9\BE(AAJDXD H>?J}[[4=# ^.c+gU̧ ͕o^gNqB%wyLʆ1~$ &/O@G@p䔑IQ48a %!DOkNQ:N?`N*ۀtOK{jjro;/Y]0u{nA.-/ -e)RX6)DVUS=LHDUƨB$(ݹ3JVkguUs-c{:GY2·DuIިqfUsJ2U+hvջY  VqCK)v˦ve=¾&]aݪ.TOІAH B/}θDL?$7\?t׽$t&4 2xF/"[Ә?[%-w/YQ0ۥᏊG@?C?3'9ޡIݶlE$`!@V?!ڈT\+S=wgD۷_u =!_cgC;tAYg۱qn s{)b,~]s I{k4<_sΩwtGU"օ*B<ۑE,&r8Ym*6/4W]O9k{50!7yUy]mQq***PF`{F@֠_=^)AYh3 aI2yO0,!@ {_* ՜O!z>{zھpmx+H E &.mG;a8|Ew>ߟBßYe_?Ȱ$̬F)>+~b#S~g]g>OrG](B%{Ya9r`}5uFWHFΰ-?ض_'g1"&6!ׅp/l׍>bjS?W~v~'̨8U.[PvQEU=DC1g )߿#'R/& ;BI"Yɥ4>؃d,xP3opUAUKo,$_(xcxfU?E1@}!>!zt\U^;#Bl';9Vj z%H?G}}*2U,}AxKſxmAÁYIdB __B`C}C0Q?pra/NiG!DLAH+uN_'?d?z%i+\^_c#>lO?kՆ3 @/ Vcʢ`̈́ \+=#P㼕ulH&d)6fa7jk{Eߌݱ꭮2!ŀK $J0옯?ɶ_3<DCp)/1?Ó]cА|]CCҌS+/aR1(ĉ7v Oh?`Y=WzƟOZ(_HcU=v>G۲kܿV`#&u푚YK_ RP= H@:Oߝ$}f+JW$c /ᵂAj~i?jG Mu㟏GNN§'>ș^ ơ؃֝B!A+@P<΍&#b(>K[Lſi4x5yʬ>*9 -{ ,$:ψèL M多xk:3s,7w|0(, Pz>9OJ9̠d/>W(;!M UQzPvz`hb]NzxX!IEGZ $8sD[m?1#F8DѰ-%"5QEVж9CM@DK2]EZW` ;.S 9+LQ-oYGbWP&Q: E ̩/KJ'0&A> //$3cӓfI11B6*ņ3 Ҁ," -RZ4Z"Z 03AXPJY&Mh2`(ͭ+ U,Wv6L*2ݎTN5ur(`?4xh>bQ W 1{d;Sb;>^&n*0lyzC X8mpIu΍HucǶz9K O|,&-#*r<`lT(RT"PdWɏ^i'gL?Q6NgH5kUuCjo&ݾH]7@)5w(;X!ʰB;éH>ԅo(Ez::/9Ȼ /Z}YqV03Gav6 ΏA,>F0Rˠі*ZR1%TO$ bxiX7{^!yX ~cE^ApϚ/` oZ;'7Ǽ*~qu Ob>\lMh8d _~٧r1uϻ=_E-HMRZ>ۥ"i8nRGؓY{OmR4 SBqx惣Vbt 0I΂hVLࣨ*JTli0nn JO}Hh2Wixpsc* ie@PL4#@%*Д@PLxŒ* bR1,HM0UC.,8!s{s`XtZ8Y/Sp"zf9^fȲ)©^ch0Wx~Sia~T>aTgNmm'H=G?C&C0O Nk%% HnGY@*LF {AD8lVU?)[ʥf_DJdFz4Ebq&^%ԩϢO{|)y}9irZEA2Ii4.ϟ0c SpH4G4npN #}܀> y @4AR\Ax:CtC@Q@-L,MPT  !B@R4ʡ`UHI" H))" "Z T|8 ݺ2xЧz˼P Kqp8Mͷ\MRnXJyxb, !!z-2pꕭbQd32O60ڃ᩷ʹēH6>pՈY2Gzd45 ȧFul9v607!r3M2DmP,'b 4+AM4rR8l#67SuޣԻA(¦ Kd'izCG;UrjN3X.n>kМy7nbe* Dɐ.LkupEAfE3⬀@Y!Cv;އ1 .:J H=e!zIF[)7=&a}͈o'`iD=t/e)y!&6ȝiCA0@AC " ^%4.U/'3]sz ;<\qD_xnVzq}\w6,}9'v ߫6 SDKwS, R}Yz{WjұIEDGֵvʋW-/qՙE|:϶^K$:4|OiϿ8S9]*$³9n{fS-B1W&qs--U;g&^*'[V$ĕ$R5ݕmk;os:S=ԛ)Q_baCOS^Zt]e{hwiLNs٣e8 ~{7T1}~֝#E.ROvp˧r'%`#P/jl*吣=6(XTę$!!nrb{:<`N-'ëGJgj`rЮ 6 w=Ã*@B0!ǂn9 >?8?ndP}!PO'TQ1pι4,f Щ2P1$L#?{ u.㘞/ž 1߬]rعSlY^ KA^T U*CuSF͟ԩV-jtVY%l]9]3+3gcwrg{O*2#٤/vV7=^4DG43X{#.w[- 7bx+EN UAz^+{g['hT>\s]Bw pu=m{MT!5{3~w/+ {reiՃ"VPQ#۹};&F׹&!Y4wK;6ҥ:ˬ Zt hg,CD2V͸w-w)װDR!ToΫSدKukCB~.ˎ:X/~*uZД*bkZK': ӷj 'J DT}o-ebQqWy}5*Ko);·T0nie=32+ITUW-lș*gԞ;>#8nJLtvUa6[QO/RצϴF""gzmmޑĘQW8tGYR;/Z aB iHӅ̌V{>lC-sZl ܐDPTP'hϗ2ƭQb(cȈ*csm_MBj1)Xbw3M8t43v@n0 D H0m$|ӧQ-Ѣ2 +YxW3?`kҳ..{rXl, >23,@ٕ#\ۼ΄6/leG{ZT|zߣjͫ;\ICϭ,Aq yTɔ'ճPn,:b+ڲΰPk]^Aao +}NTwXZϷ~ v tS y5yXe–s5 ±;i(ue̚E羘D =aǚZLfXY,Om{Oά4l9RuQOyR԰:)AZ"y{ER͛$cF#gN7_cRoU߭JrN|rއ 𧻎ϷՅ/T PChއwZ-fˎ[Jq9+ujRkZmQh^zrfIuc. ؎|me 栊3Ɇ3\(kj7N 3mc7ggӥ·VU8~LCVwZk6%һu_؎oG$VSgjD\RT@R(Nшxx{.o9IyWgvZܘI&E đEP<:ܻۘAEfjfη)' rCuzoݷbuj. J;~X{/B}O$qֆ=ƽZSS::\os%[(ޅ{ vm3A[Br-՝+-XiA߷riݿ$aSAx8~LJYóԅ1YhIYS:)Nor6']-Ա5)kCM'I͎Y mKZTynnlņ$򡟆J[,MM1?Ci)EV2>Y-cZ r6bҫȺҶCB>{"sY3<) k-q$UxPfo ެZ#c橹uq&l JdȭR:h/q#MeV+8w6RLG%hVv\vi*2>F+l͞dְZz2 ժj3<ܔ nQo` e>\Ahq W|SL˱t!w0ՓA)x'wZeo#2i@-\VqRF6քQLT6m9q$FHS  C23,1w K%Go{*5h0L{TYKFQ} ˆ8i~5eGL!+f:ۜ\42~ٮui!Jnɩ,8C\2،V@QBN^SL+ oJ.+"ʖeQX,RZ(ܱ֟&1ӷN5ucݠ. UA>tJJG˕S>:K{V+[  58;6 uۊI_sMqr餕` ԥ3o[C52Qnc_ _<-+ZﮦӮsϏN}Kk0LJE)mC WIJcb5ExA2O;p쯤?t{~376i *O!>> 3oi7Ψ3jꙌm '1 ̊(2ӡ Ѕ*^^}ȭ}qtoe jvf&CQB֮՞"sqe&ᨈhLp3f2ta_7=Iݲ qsH+ӽ=A#!Y9<΁kJhq~)$zo66yVO мnxꆶCKǷT@ۍN$Ujk%fмi-k!.9ɾ!$œjWbqL8aA ==pTzl{" iHWnHtje8&pESk|MDyr..5 !Vozp6ѸpifKT{'?w_BN咪dTU^P],z(K+c+;}jhǓYb׾EqٱlȮFCNibU*bߗB"qf; e$hwy+ ϶c,J{3@ f啀) ]5g7UoT^AlA3y,SpD͹/ U''["`9ffB0qnK:DonßAkdBMmSp_/ jxis|etwo92u_LI,U ѿU%1Sp.Ϗr5xJ ŵb51e] y^|;]h0'7 DHv-pu/t  plټ/-ɣ Kc u| ZjtKqOCVzMk^o=Da;$1_b;aGމB;tl kD-BxUo\RWM& &rZ7k (U a%NBʈ/ ԠmT x\2eڥ8":MB]m QY mB&VZ̮el M^JM* K 4Z; TTTG&d~?# \~Gǹn] r * 6br#-*( rt4!UXN>#wEO<ޅCm>;IyjH 71&̫"S>˕ƁJ6Zt.-V[c=Ij`/H>¯&-?hyf? JM /~Hp2",MC:pj1`{ۨmZjD;LY@i"CʎTop)B@(=M?mCp<ߪw{ֿHnjDv!R,|vסTDFRڵܝyr0x*A9f|۞>|==}N_B.rqWV$Y !c6Hba`VUUs VV8 DŷeRu.Xr:SNZNvbiY[ 6׆Malldb=NWs0hDasTeZhI,zG<_2O&1굥/N;zDG~|۫xZT]HQsiZ.^\jD./[J g*';Q#gWyt|h2%GjI?fGr![#>zćL^kqc Ǔ6P`P"dn@΁rM}TZZtJV.YUUUx£G)pTDб\TbʙR(F,/I*E6=211AlTVLa.K7Gi*up'LֱҬ;< ,~ʖ w[.,9F1p8*I\Vi]o]-8 Uo1]ځK1I1{Kř6fd3/A } bÝw|ƌEݭZod4 פ`c^L.!%L! :i׆rm U\ȀSeN LlfkEAU^ ~whB,1g^ֺf׵U4zP#bBat&938v'YZ.9Sp+e=DI=4@Vx)hqK;A2 Luņ܈`z(IC gf3t]ߋ } Ws[|( p:f>jYxJ㤉s#\V4q+@eA1^sތe= Ċ˧iU].44q|Oݎ`F)3H}{9}/t)sOH|~<n?p| txou/2a:Y݄! Ge  m%κd%27 ?X|_Y>+]:z$PdcU>N4喱6fN,jLrnimURp$t@ؘ %[Aĩ{W0n* c ].*s^l>"?3t]oM ڶMGX^3NgW=& y5i<xȲVĬ.!$/<,/Rm-:(2K׍̒_UJ1\q*#vik9G-!?}/[E2} e#ʙcGjM3nz?A m_G(.0ߝVg mC\qL}:{Mݬ0;_:+kK+D y`eIvh;xw>^bƪ? _=TD Ou" d kMn({̨aX)3~mL|z~B!=T]āTݔ܇DVejLDKA#TUMeKPp@]ۙR`H=9`<ȃξd#cyp;IO?:7֣ZL1+BKab$>-[&=|(`aȢw0 0~ TFQ i}}gh0)BrT|d.D*,b QR@~LỾCJ|>F &$'(V2ck+v@5'@ UL͆ʉ>T 4RE4ZQXt\aaI<^3g G/kvk~V$ȡ*/Hn}CҦ##QBeRS$Зpg;bWUrDih;"UD2ᅴ>SaXM~iwl,F!]Gw'>fakS+z; ha2>qfJQ,vvX;TYEbØMaax eB9"jw&Oݼ͡y3= bnVO0TKʂe^ >Ȼ4`7A6k[!?F)h ShfDKaJTdb޺@`P&j9\64Qb0QTJojNJqfp6O1a J)!DC>vyHqtYq~~<~~$Yw ҒOTAj=~ __xq%Aî$o;֯1Ғ]c~vCy{u/Ty?+ UXGk#z'㰆@>@iQA|.䲷& "* E6D֫`;!:  |ؠM_O W~e7͙Tmg(n>7w[U]XJoí]|?aצ/g 6? pyFNGYDȾ\g8E^N?OnJ˿w>w!&xS$9IFW\bakZ̅ ꥓+kaF˒5 InibF4Z0#k&lVM< l^| :t?v(fnNGisGϚlWs4MdV#-w3.?}=^鷅w_0=6s6Ϣu]׬z7w~bye! pOvm~'K̺+ڻ([uVjU]59e aH:'C!hK7Ui)6%80uPɝu}v zM4GwSY;ٜeImG}:pT2J=wHG&bΡJ8_| :2"bo|#w#yz0VYVjfP[E=5T%R?$ζ<+}umR2 -kMm޻Ш@QCH ,yy[Ӄv)՛m%wk:RyZXnw/ZƳ];hropD{-DZ`{ރx^a=YQM}᝼%x*g/mgrv}exJ}_W5yvS|T /[NnM۽PskuWǶ6Jś(%+ c'7vG41f= S{C{zʽ7x\f{Г}k6}SMDWAJFƤ5%.ke){[ҋ3c{{Ə7Dtk|{O{8oɽbAm/cJCٰxz(V!th3To[C1  L_{JR,uБZ6٩֕uE zU{Xz笤e5Z{)zk[N=۵iw6)=m[Fn2ٮxyWGvԣkm1N/VJ^v}%b;D9){wk ٠!l}lliMZ}2indZjt$QB\ EN뤽H42b244& =2< =Lh 4i6a0&)z#jde=SəAfd @#IQ ?I~4ɡ#@2d F @  MAFM)zI$=O)i鑢a2df dɀi=Lh 41&M4diA'R$ $d4hIOD 21 bhMiF#Ldhbdb`db?T22hѠ`RD&I"m4%=z4M)j6̣jɣ&PAzla@D@&!Id4<駩4T񩧡'O6ҞHjz4ѣ@id GE"ROMλ"f$YPA*1Bb Ŧb]l375  œkckP`űTZƱՒiymVjwa@}E@q4DDAC-(UUrMlm(KJP)u( T@ Nj -+HZZDBA2RXصF[3hЕ&ѓQM,6Œ6)+$T@m- TɊ,U߄lȱb HڢTM64E+3$ITDkY ͷmr Áa4Q(TDT6u" hhjB@E^;sOďl4 Z_פU 2UGX`t<GHyϵ`?+#QW zƣ(?M/hy@)ieA?F 舒e$-$I$LDA'(@Y+fZh(G/(k" /l @DE"PZSB_s=A<CG cBBSTHtY̶ 'Y1iѰ;AQeWO/4F:#)'yybB1v"U(r\R%˗y)]ɻ*̤C urWjT]SepbzQJ(rML]L ʚz!"ddȈ36^EӨyJr)&.nT^%JK&=a Ey*%nE$"Y'/pӽ\8(= ڂ*кT C{ѥ4Czb*&T z7EDQ*&Xr4<ܗ^14biꔩ{. $!)A$)BH䚜PfhkėyS2 R!fBOB\Z6,Lwq4m8ST&,r(bb&S"Mܐ&jU\J.[qJ&\*uNçI՚ҊF`ͼ@5Os439 TI9.ý]w{bVT$]ӧIȘ*LUJU&KԢ&`n%Rt5v.]ظ!(/*Eȃ@0"䗅Kwwe5\$₿p?s>vn3X~3rvAȤb&@qaH~U>-%}bYr<o+'R[i/h}3^*'I}Y0J2%}Y':.pwB.2)DE U@P %(%-(@HBRB!J$gV 3l$TB䈴P $ :UH*0 Y[ҜDn?[7GJA.8m D@Pв$4Q@6 2qdd̈́sdWME&7z{[|$ʙssu5n0Buq$ڰU!݈p%N"Ջ]^T''{&];&KRzEeBr(ڲQDœf)SѤoUݽv %v\' D ' `~GyPyTbI1 pbGA HIepز< @1VS>ôߜ1vY0Q@]gT)UO<0U.jPTSx>X[{UQ|ʒ"`Nu#qҹ;b&Lf*"X{#<̷Klq#b1@2k123PRgCP2S$LFR\i@U) 'b)K]y%')[nH+JJ[/e%ܥ )*)>J,8Wed;4L/D˂Lڨ`x>9LD#Fb$K"H Lc% 8&ic1 `q.U^o47pJ%:Jщtf`?2N+LB׆"I39-_io|mk;D|kE(Ĩ?x~ܺ,N8aa~Y&-;|E<+$P# !b'O1@vK#P|@|ULn7Bdu 93HwZoЮ>" ̴Qnv׺ʐ@D&e7Jpb.8EnVϡ UeAiһ4+R$ޮ5 bn CVgdsKRrpxGY;.$ݻ?s[<"c\ V'9ϓW?>X^A_ G;d|UNZI!t"@6z>/qmzKg4Vv%3%Py F~YSuDtW|hr=fazsfNڤ(B>H_Q/@! QC ہ` ,6ZӮV֔+JQ`B09 (ht@yKyVͺ+%SRr:u&J^ub2j:Wy6jHĩ_צ3(GR05)Vl \LHIM]İZSJJ@+W_5K8%\F$ZL$JӻmUS,hd2f%)7.֒o-SPׂ\\d7 |H '/p "we2):@CNJN&j;$ItHx=$tCğ=ǃC}3ړp.tuz 62ط"EG|HKKH 6@ )(Q)CR B`9('( PKb\)QzMba'b_CphQIUH# '.wZ ̢&9pLN}M2wٶ7 d'L\wJܿs6ɣ[\7hXy Leɣ{oڱX20j9*1%YaI35;T;T=YQ8jY_Ŵ2T^8旃+͠c1?:N>NL{q IME#Ya= ΍z&Hӄ AHm9*RvO;[ck@M*Ȣ+Tm6eR&L0VElkZvnLcAT)`#S͹D$ci7M5¹]U{4i- "@5i)BxPT앤\ƾap.wy(p7TmDL@e._%e;/[^U'8bM`h8Jx |gʣ&"u}e vbk(T)(za]ÁҮ'T̻tNHUzNV$FK0Ȣ">_<^bi`} ̓E'!0F\PPMc+Pݨ_ тlJW/N@@W) *4B/|Z뒩AܿDԳakuZ-٦n@;ǖS ^Ѻ`tnŲTmCeg6Z)kNb8z|5_\JrǨVRkJbfRj݂򚙍)jIi_RfBq`ihP @i@yZfTDH.kb/BL-\F;34o|4HNc8"LH>vm03g-Pd$L#KPYCO9>Qqύi(JQ]&6ɻVܹإ(BsM/)Kt҈ymD#$#/o/zqyk_升zpJ[U62˰S(5g儣buA{H1XL&0@x`b&k(޶XIaoaBH<(wdAHLJ)DiS) B2ĔB,0#(%%!@HB(CHHJmD+2)իj*B ~ϸ~)>wZhf<  d AOA< 0c19_,=s5T]4vysuaf =t82љ$֧MFe3303; b^B|FiEˊ}!'p :b~`/{lp@&Dd6Jd,HI$)JR)ID=*@L m(@K[]5Mj4ZV[ljVV浹!8'ɋNv6L"=Qx=6"pZpVaL8+)I bW`sha^30j,5 CP?}L[rO!k+GYh?LK^?<Z(: CY;ފז $ I_ypӧ)&a?sd>5ï%F%ZQZtw^z'*^lLCLL*]L&IN*(( >iH-`gh}l+ B(wEE-@> ӾSF+㚀‹syLӗ2A Wὣ RieDb )}cRFc"}DYrfm* As{= .Kp.}`C`j$϶ ݵf|H=68i<{hPiM2>Ԉ*h2q[u1u`VAܑ5i'=P56fD\GE)盷0V\މ̀_KRl3IA9\FVx+ b|+M#]4!&H:t pښ !p:3VD㻙+ExpFS;4ÇKWjxCZu Gxpk5dP:$j3b.WDmn2Hϑ&U>0դjFtcA'(Q3n )'40)O|!:M=aT;K}߲ѡ?&Mt3Y`&NH߽cY4p Ʋz~b,_`_-\`{Q_Ǽܵk) U#JKoiZS{sP]EHit}*-)qYxJk,Qg~䚓Ů !D\DNwMgG5!kQvjdˢo{ҽm 6ug`4 `tѳo4[e.)/*f0N?}b`C^XK|\'Sa t:8sj̨ܞYg'do6h&@ V`. _Gn'JYIc^>"1H܎llXq~b=!jjg,'“(â --nٚm5qDl읺v!1y+Ds eWM1DkyܤuT< D9S||3Qc?|V򤙻dKbtovc.:k Ѳ+>jO~6|v|ue? oW~پrm`TB,azNZtm޲lf3,`oQ˗@?;KV coluc>zFn]o^fHcM gaB9?, apAxt\ЃO jo,A nhdkzA Ly篔󽒚ҠORosn:ūE㸉\F*/Qj,EL;ڏh<E5WͺpZUT. 1n˘j@ςR^Cz ߤ3 3 1[f7i/:i8$KA`W0{6H&I Rm;|g8{7] Cߵ렎D>9Q][HK9 Хo4,*Pg=4P1DjLݽkxة`T)+'i ;ڮ`fu_= [_92BЊ hL^2KP) E 2Z1:Y()ݗR,/NKWVYXgMF e+PHy&y@^3z-y NG{1psQ΃9kב6V&7Ô "J4csPЙ%<-A\-9hvm %!%ᦪ@Q֢ ϿPZ :(7`ѵMsqÆnV>k&4 iϧ:c^TNd$5XkC@#|5;dHfi_ OsbGhDOT .zAQYsUB  !p91;Sa =ɩ{b6ƃŴ&8 pȵ ,d̓֠jv;Pnh0[|PȀ( ^%7dBEa*޼,XVt={qqaCM"(H,ŝ=W6Ꮫ)W+pwի,( DgT,Lc89q`(WN>)~V"fBXDrc51v<.0 .Nx#QCN"T/-7ڱY;`R'_xpGY!f3횅r&"Y?n"x8 E07I/ 70Ăs2`c9bhv) b-YG+xF4$Jm0&ؚF!8bYր0кӌ@^alm}XKh 524w>_oDi‹,a`wƄ^L؞xLc__vȅ[VW-hiz}Fi'n$SD.úaøۆ9a0B_Pw Ik  a]-wsIula<|x$wg`0H,2;eР8C ocTxuv :6 -!=kTݡ@4ʳR{0GˆACb,[sbh!0ldфs1)Q,LRY;cR<6u&+C@?2ЯAyp]yjM`7t0ۖU[Ma2e@uMt:4 X]4.K19#`(bjioS&0 !v@xM L(B B\T3CNAHH3$Dl3@;,?,7⫣]Ǔx(>4E(}<&ܓ;AUֺ-k<|IL {+~~a(\ys{-CkрdY7F0LS*lC>A9'o|GA7>65;mW2DN.H>u.L!A^LXhozOv. !C(d]_/QdL JTRppS+]!}H^l~-X OcRU,vE3PTC:>ZVg]IW9wy!F}xfxGqfo0ED!f/q(7:S[NUXDdasFh&K d iLT_ :+ 8Եn 8NlՃ.w MOw;6d<"I01y_}f;0/͎ ,Jϰ px`*غHg!}"Lñsy!l(W ` ~=8T[xv87J%RjW 9*W~n7 [@j9zr;dmfLo=̥kDb3k41rB4Io"v z166tt?-Ȳ(_sP qX m8OtaY@ЕF4LHrOE!*et8p pk"뛂&}9 sgUI$_Ƴ )(1\[,^DA<ۯEِ CiV;YԶ9K00agaX^ى>$^iuRɨ4̎:PH?s Oon[ b9`d==3^@0q_h gAhHB|K*b½P0c$>SGA-=Ŷ[ȭMK/FrT1a4r H.8E.߭1]]|51;xug! ~R63@sVdG}zdG^?_T5vRʽ\ͫ%R!aiʯ;LS]YA#~1ZHXWgJ%RKS6m:`5֪HyZdK""wj0(P7s|ul)Y4a1`VO21rB3;D%Tf[IP@h雎:/۴A[< DR1t8 25VG3"T5TQ 5"cr3J3.aQ0~[2f+ 1#SF1"l|D-P4yH/A 0Fv1 dxT쮙js*1axL pT?FCv9sX4M93Q;; i.R{ 9̢"sd#{,Q*ܸ  2fDnBIo:CS4 <u:uЎr`϶5w2F4icHJ@h~Q.MnvR'Pjg;h"-@ԂQaĉrD@?-}|8bzO D$y߉kPKeoLbp8Gs@A'pDWxqfJ'ȀpZ>@vQ4׭! U{qk-+Cj-xlpoikS ̽=cLg1N.a'4=]ǽ4u;X T0$jӃ"1MT0yw2Ew0bi:@>s '\;݋/Nڽ}7z ?ۨܨ;ӱaqNTYsaօ|8Jj7o鶭gIntxelt!Xm A9qzN1dNFvݝs7q b`l5?F&0Y$`!FT3~ wtdp;gg eY:uI>o_<.{ s_^.O,}~v.ÉY#~LR|Vld$ژH@XB9ځ8"ρK =:.rffzzpҒJHC/"4,B4İ_nљ\y _ }cvRNjf'.W٪pɔAd&Af.J= _Y!0]]Np&Gy0γmzj("f 7_9f7t8`&-@Ki ˸OOBD E+XD 3esȪ};̉Cu~q>Q.}66@SOj | `C0ې9c`\~rKn]MpFwt[m:*c ipMFM\D 9)^A/QpȔ^@4^/_eDHZy0D >|DӅ[iۮgN)cdǻ<?&L=_O׻dSO$"3T(K;fnY ^E9hƸc3L Ol,,Q=1Ta4N_@r.ЉI[̙Ps_@Pz_ \811MFz\YDbXC5[@`ieU!`0rv.0 KK){%*c|8SPM! f w3FF i3Jic)+jhNBv`z3}Fl,:2Xhi)`@AռOe5" U^̑IfkZwXrDlZ@԰v RA)rtBŬX@/' Wʑ0I+z A/,G6<ŜsmVt)0Cw ӎ#qAn#{<ͥˑD:q7N36N~"&y=0mQ K%; o#gd/@h@|hv\ӄ> z R^tH >I/Z>nwg6@) [0ǁ>#: g'l"'VNj6ƝcTIDÇWaz kre;dZ-XZ4/dn kש w@Ld#P yͶO\҉xz®ɍkQGqvᄖSH@& J ;Ӏ Sd["8GtE]z5YEEPv4׫^<)tIO %kd8Ì &c #{gEDsϐ{>pj 30(%+$ЩDt4tÃ&eǝulj < |E, G}>vgYC;aY:H[0XZlEK!fCӑ* ~ f kJo@Fc WabCvгzC0{_Cldw UBiI 8{bD`b1|Tk: z$7X@ j;Jjoß;;GFd}S{30=#2I:Ч O8@|;2F ZX[GG%,~]⣙]jI!!I*u@9|U@)$ *+@@)Ga6JŻ҉30IJn' .%(ik>ژɓ;8sE@ͿrX0||!OMg{ffffg33;7wwwwwww|qqq;yG~b 3j[v5af{'%PnUBEZT҉@#BݚY|oWooo Ґ liB{ $3f!X1|< Tw{zC3 0b:M-}H7}3P@LsGjaf'/P郺%1gN؆Y80z,ic i%n_~-:]#prVbn\03M Mw9yY_v2x93\uɉ' lfң@uș E (l0%v[p2~<sM)K Kz@,,57ckascxEO Y {y"ZSLo|$l1;ET\0A3:mS[hCu%apgX|nbϽՇ*}ӝl8efndH+eH$skI_ sM̺,?48kK }q1 G^ne^b%ȱ6˿n9Yg 0X8e"r$Tàh qslW>Lܭx[5/|(LשB.<*MjKK@ʸ^F+$^a!}={Ӿ;MY̾(b*7!M?LkG Fv+iUsx^IV)>^=sj)eO 0PA|p$ Q܏ϝk13~vO~)zx%'LQқ)G1Eԙ2xa#o{yֵԅ: x9 ^.JeAZKoΟ?ƙ ɕUQ.+T@Yk`Av)IOL<8#0#Nf7 47u[ xi5Q!K,UXڭQ뽮5k9ՂU?d] 'ٮ;5DBٶ,JiTenڎ1>N;`,6!`%(tkӄ`пH]Pvs1xz0;S[:kUUUU@%qypuw$Hl_-VImdE_owwz]ݻ;;wpwpwwpwp"U$""$ $Hl7bldL^:@nI$OXf誻KdDV%TulUr?ٛh^Tn}o3Ww$zF^d7aV<PYWHV8:DD( z=2*#ʼyOE 2do[@E5v}|NcW\^S7^֐Ed x >hH_O1%=Ǒni։D,.tOYVkD >ZC`Hcy.d'l2,ib2Hd_ZDy)P5cx/G%5Ӣbkp%tVPqŰ4fcl%;$ 8g!ypDscצ^PVDc1D ({_)0?i 4٧λ2ffҘd̩iFFЕDE())WVZݭʳ{wwwjfpe0 H$I$\9dIۅwd7mڲ+"wwwwwimp8b3T(UP""h%www+[im曨rɓXͨmQ7K[΃on׉28X S;\K,D&b|F41Dz>Y̺d$_qʩ# K@$$a(/ԣ!fu.XyG3_a (:9UX$2lw73ypbkAǍNmC ںHPܤpJIAp|@3GXy>xazZf> -lWe^JăD]0c.σp|<]_5~&v+aѨ1W=7qCj ˋ3wf֓KOVu g˻>}nέg~eO/ '|vC{!_拼=vpg>gE8;: Fs׀J^@R88d#X'>x{j^8&8[2Qp. 9~O;|ÈX[z3`t$OHD3Ç;g׆Ҽ=-%zщ،n蘰fdeW K%3吏ZO%yMhO}C6ޞ^<ɾw'[Ҿ !S2B:;q:[ pi-,䦪^J. |uNkhlOx):oQuc.c;zJ,yb &qa3uaX/z[(Nb"__=#vb.kk돇jkJ 16jn묬\hu+tBݲvspowWٞ,8>?_j!?{F4LU"2j N >OSڞ&;:s$Itx~w8eamYij:QKx'L@pǏܕ6Uɋ0JH CEZ?g*(d`E-/[]5~sa1g.6w|Ulns\q\Enygwvub/˽;yyRBS0~^\Ή#3wB5h$sP ?M#j;tţZ^P.};!c4F5c&˫5o,"ADB1Mwm?F٢P&T lt쩶_;,Tj7H9-" JU0`M@ Q_>ʻp&wxap Q`Cm׎"5uwI[}9H]c,',A>Vgӱz N'D{XSCDR/TC!uXVAV`CdpfЬ`@bNV}0*8<$>G0=-އ&έ9alXY_- /̑ 'hzwªx=މ$uWun3wUNސ5:SlI$Smvάv#O<?/O;+_>!>eկO[yWx1-2G`o9˨;`iYyHuǫ}WodN#135Ң ȏ<$@_!rS0$tA4Ɉ@ FIM,x I\vn}Wa՞R~l'ɧ>V=P371^ ݆]'C t8*ZUoij.zkSh;D?_TDg%)Y>Y2yq-LUo-2%@ W^S,ʅd~.>Vʀ)s ݣU }>H]{NJ L#L8KP#{o?MIJ᧞e}gT>iyd<Ў@L&BqĐבg? ʘy0:o6m(y[琟Sb s%f~=+gϤ47Խ_D'>'/8t~;T}vH~ W4`P{U$PN tӁ2~y>HhGK 3` h%->hJ0BCqpLrQ$ZYRS);RTWeVRQSP[%q Zvhv DQ kG yEgJ {ⶒM5>t߇< ~n\}|i';?yy~cUwX3E$?Wdu!i(ٔ o#2m`*쯣w*\3Nē4å0dδˣ'MI ]tS30[͡8Da'o74K8"pnZ]`H؄I'⦆%~x_;{YYwF8⯇ќMr6 l4눍z339w|E3T]ꢇk,ؽz/8 ( l_g|:sR;' r P,BU҄ӆ?0Q$=/9%閙%$iH\-t(ZC4"jjjAt\u'(V.>s|㎺9dW.'7vL9]9wNyͷSNm[è0KبVkL]+טEŲ&mm;2l33suۊx&&kyÙ&f^cfz^ᥜsHe{ʊ/5y3\\[aZkwor#F,0FA#1$:r]nURtE[Py3N.o6˼y(/wb}rgö] nA\ܘ[/Kq:)R;_Y<q"ylю%8q/s1sSwUχ3%ߧt].:jիVFVI'grqCeu-wjr\T'Z!⊭ukvޮ$ p1hhmd*ww~j ,3c!GmY߇wI] (Q;~ewyKؑCǓϏ"yy̓*V˻Hͪ&33v"!;DDlzeޢ9x#y{mP9 UuP=nUMUmeݻm+yl7^cf']j8ٚ~ sZ)Mmj;7{EL^*ȼEk[FR^+SuNwn;UmMVǝ8X׻ۘn㫹vދVEU()hJ.jwc+L\<(.*"IȘwɧʛN94$wtjSpL8z7nಲxȉGo]߯o{x  ޝreIrEWz^̫;wwvg0U=Heݚ"pWxd͍F!]2a@9mݩ&Bp,\kd2oR=2/7msNnMG5L36)Cb,f0aϏF@>uC( ]E.&52*ew]vnr7fH"d[Li2b̒"CfI`iHd%,YȆ,dK iȖD%K2)ԔURRRRRRRRRRRRRP " mYUuČ|Ifbėha"dg9܍ ;!Pu{xxzOۄDRPd݅Y<#փ4\xЬ疉`"JaAڕ SI0bC˰zUQhuْ_)PC)9)=wE]xfaALn &[ ]l|QU I$'@>}8Yf˲>USH=:8~/m d2HHHU| K..`$,.e[W"TLHVB$yTTuPQp4&hءG D I$ $H$$II$ $ $ I$I$I$I$@I @ $ I$@ TmRI$w%P?6@4$Kox$I%eiմJ$ 3b{6B- Cpv;9n|o?vFtTThDA2th:sR_j9FoC( 4IQg,5ׅUMUY5XTQŚ1 RR#&%s&v+TsKꬭcwj 3(1izM,f7us)Ȁ^'__ ,f`ʢ$QFOaC՟cē"R# vd@ R(QAMMe07EY!Ee$ A \f 0@9q&qƐz9q%"p!6hvu&6Bt{?g9-EHjYIPQT y12;{e{ঃ1Әb$KJXA gYxoR^lfH&2Xk90;mhj{^׵TNOMV4C3B괌2\ggt uT5RE[pyвƔo;,ӖG.K.c3rIu#tPZ(hpEYÙ1.34\v{VbxМ㞢ÄCl"ԻCh 404=`p`݊) ,h衧Xhn3vn$Y0vMoϗ?, 28y`.^SY5@%f{YZ:%}lՐ5&qz?z8[yr;YUXq-L?f3?x4/<3w F|z4II&K{ޏ~<@ t#Qڜ?>,4 }sXQA Ť}߲w}; 0sb/6/f~F%$y4'Ѥ T;QE8whE7v(6`$ōɫv("B^ D\٣1DR$.\ Ԑ(c&d$' Hc}-_4n^07#u{"BH3# Kѐ&WyStlvPV9l~7wwww0w|ހ&d Bp=MG! ;6.(x?Ȫ*ֵ@\i2,G%6Ϛ3$v4% ;.db5ggxJߏOVeUT\')KȠOrD{>t=R<]qڊz6! OwχBLawQ2)P`K@" x1#/E<<8j*d>J{}29 j! H,6L x>'.ljNjrY@aA??6 YΝĉ3 S0XЦj~^: o7 cfr`o)#jc# ݢh:hpߓ#TPy 6d'6vBr |8!#342`zvc<)juuva$vxDxXS"d.L006b !0`m!! & +XYc5}!ojsR*vU G{lFur|>m$1H;@,J7odИD_ S!` ٛЍB̶Zhui!={ߍwB+ivXXs}^WXfQ5 ,Qԝ&{ ȯ\rZmCKnup}anfuCC^4OF I QiL@ěE$=@A燫9ٮ*Z.p/r~А KCZ5@Z`},b2hV6-EBDI(2s s-S0%8 ]r0k٭Q8VCHC'5r t08Q1bIq[p)q}t.G Tȁ[8ȁQ r8c\[F :Q?Dzw) ϳ:" 1Z3h5  ß Z@\-#jeq*(xF7nkgM ! epz0XI {FمysEVQBp*L?Ơ"0|""NCqb6LVPڬsݚ&jf^"jzE" ]ܻDPaTSS@5Jj!,<cڲ!orMMƩ-伜׋vtUB*D*wtz `6 äPPf  Q V"i 0Wz#r0Z*$=%E]C$DˉF`CGЌ1@C3'l٦X;oB ݜ{8Ƨ?տ#/bx``=wwwww0s333wly0)0$t f*c3/Z:3YvOd7bH2;rnjV'|[{6]w5.Bm %/lN@DH8 VeK+S\6i)7SR̩M,c*i&!roLQ6 ./׏?~ӆSrnZ: .uoL嘖$1z~0$H$LAQCo E9WW.|eZuw3KP+\ z[û^'UUX2:eID1 +ࢩ6'x1)B|x{XHr&i.CS!0Q2BBڍ6Dk i"!jF$6ѵ{s:4!D\mT: 5Nԅ$HC KףDC&3II"ᕱm㻴@1`B~iS ɤ7wnmR$ 3k)fhB`Ga@1vfNHL9 :F+ U}6stHI7NZ\Ħ5 7RlSR0H@`hj4Q^0(#={fWi.No#1 OY`a1ժ#'a92p7kk9"11!ǵí:ι;:*M\uH3`3\ȉ@` \.(nQ(X=Q[,铎2i,ah kC-r f?}58Uuo7wvMM݉U77o*홚uwne6XT|x =LU4A __\,s::g/k:y+b&D"*DTu6,D\DOH %L\Xr".^ )"ByR. żFjR& 9x"&dBK H@6M)6e/M9!a`1&t^ !<*Ke.}F>tDl#tMB )3|)F{=?wwwws Ėfffܟz 3ݡnp>~7G=fbfA xgwfstΝ$m&; 8` @nZM<`P`@Г-Qںubm_G< A} bRgN) 6"wbn#3.dA '<>YZZ1Z-߇.XОs0; h-i5۱à $"zb~ӄ<]?cXIAbLkwW@VS]&\Ҫ1Xϕva`ܺgsTV4Iąڮ"(Dq65T]i*<&ۇWk1i;Ns7bs}YU2%eD̢0{x}ne"u<l=ߜ\m%IVlLŹ4iٟkY ~>EGo^dVèáéFn/!>Afd"BQ3!I$G7y$ni[kdhpx`?X$sn*B (b"7PE&NU8S0@"&H wi="jcPqPlT]*n%ݲ&f (ĴKD(ed*CD(Ή̯dŃoko؋٬qmb2aL=wwwwws Ėfffa8PbY~դjუٻa?:͔ܷSdiS6ZdruKhSӺ/"E2L޹,#.rNJi-g!y,@$H-$$У'!\lg&Ƅey"8t` `i&ldƒz}H5t`-FA|{h2ꅰ00;j-@<F).Q f^g6SLmybmS Vu4FӪ#PG2$a*6s<Dt݂ ƉtSXnayU82#j* {8(p3쑅HHH+gўo7N*}U4xL!лsx0s@.!C2HAu;{4mSԝ{C/r-"&kTdp`m/WL}59s%CO4]FFO٦|`m{id) ]c. `ɐhLM4*ùR. &^TéPО4eN_8 m|i è"f:۷~=wwwwwbK333wHb[=_% Dw:G')w˜yMn9O &E{"kʁ1aVi3B}8wP@8O4Ax%A1Fo)%]94X$װc I%w6Oj#ȇ!m5)dd`ĘvfXA .Ǘ X*F3޶,."ǏrW 11ѿvp(*; üߎxI:9ӝ[ޛG^uN%Ki! IƆj <1Cj0'ȢĊ(R,a#XIr.+C ѺG >>oY@G:{^+S0EI|z *FIMvIq5m9@ æc!#jput:⚂Bws&L28 "{v51V2qd%g/Ret]#ywU@MTK.]<nZZ"I$:o9Լ뭘yO+C|4()s hŚi*V22unP2r2/.KS52"4JHrHm)wsbIF FT%NXY4x 0էxO/WVľC! 1F" HC;( P4 +muM;.Www@Iv߇'gvpC$"O/\gvgmELڝ8tROɭš''m#OO8rb$QHVumv|D&3ιPTD+w>QƩƸcVmU' W8h(fnx!" ԁ$.\PO,Öf(lÈlZk2QE< iQ\!#& -Bp~|8MPjS:0yq "EpͮQN!aGr%mZIEnC2Hm@rW]H5lB!2}$<KI$QI5x*ř.5(W&p>fUt8Űtss;7 E>Hya:m:̉KgmiHqeaiomۻ.WwwPn^3/ ms4컹Tʓ3 0ő͆9w/-LWq>T)2Hk'Zxt(I7a>1QbfLc-7* {ݱQHSD*@I9ncܳP*we\>@[#d"Kn#FD޽o zYzTP?!!!bO="y3篽x/իma=*3=B1;sͼnȱTsyncwf{~@C,ͺg.i+ p]P0꯭""IՀ$H wS+z+%^f=[0٧Pu*jc~.GoJuܭ~R =Id(gQ3,y(|g8x0D8oȥQ 7P:tQ.5n ET\}ޖp1,cFcd_wGɇĜ?H/8oZ&r/#mlw7YV-mm~Aι$dB2$tmр3 ə1*} cx} l<$bsAS<݈65<}?>ϋd/|_w],`GMa\yDX|GMo-T`d8K_˅QqJO<2$T b1Z]rD;4sIj $vS>_ MbT sW7B|PgOL8"r뗫m zXsf4EZC@1'݃Kz, me#@&b|VS{J_|hӏ=;50bTX )+w paDлa;#Snl<"E>Ů,')zXj3hæ01y28j 8:Ĥ&IL?xvuo,3>0Gf4]8Z>sitx@~[5btggLvЎŖXk22UEwcby 639>Jsg&!1ZFɋc_hXkɀ4l'q(ohMFFM]QDLDrϨֵ'sIH\šZg+r1(qݪ5d=y];H&jz,s5#Ѹas dSo=-g=7P#Tȑ/TzY*׽iATF"WQwjbqic :bjJ/ 14@DcEi J~L#h `bfww* .6TDG4(\R0:F?`)fQAAM8<@eT/h.A?RXC1ic,JFBlϧ-Zt'+@"{njfu/jF0ua.$a ƍ5(3JK[z_'U[_|s'_w=bّA,i-2HIR(֛3z][]m[m}+o} !&fmHνc@GvVjƳb:I&i|c"PQتB "0 (ȫGWR$N)PEu;Cb dZV&:a|v㡵HP*&($T:OW葀z[ZF?* gaس7;}X1jduN.FbY 2UZ 4ODb|NeAkO'ݿW0OWaBG)"ss1:JaaЅ3?/X-WLb$h/1q9tFNxIzTD>Xqwtx`Cۯ ӟs~WEdQ:4`@4Ҕ KIƃhΡ7`(t,fqT40iR0ÚOUi<:bv'bv'=2HAțiSJUʹzY)@)"(TԍB\r53QdUBy;6.݋P88 \_''zi\3Zkrxa*hdDr)M4)JOح/i)QJhQgu כl03 H)oCv=0%PpW_1bPo*>L |809 J6s3wHgպ 38@3o>xkv9zI?DQsӐIAljə.юM,IT4h)žd_:clU& d>w]~m~mgw#1f?d ~' 9?GL/30|C93Lew{La.kD& {z4uit1;gOXYt9:No/_;We;<6OTj##:T~.NF0X\d/֤ţhX (ﵬ]f9%!9.ȰCQ 2ؐV%$&L!fS)6("7 \ \ n7xmJ0ǗV=Y0O&o"(DPAq75Nդ6ٌ! %FB8xc 狢MqpH B xz~;h@!254dfBtr3nL4x `¬bomPm7i@IĄFN~&mvM]iX6XF8:u5&TdjѫhB"}P< ]̺Y$3>i#iqAeapqc˥S#ㆸ&D&^V uT \eC*5GқO/ &[o~"Cy}c:kO}2C0 2[I;C!>|AffCH.A3 Q ľnw@kg"DMLϧS#VPcT<6M1MtL61vS$&1clziphMr D"B=6QҐ+/LH݂|/L^6Q7S[x记:E)!Ș|P_Y8tҝcZ6ۣ;~o'%PDBKWu7+bցlQ}2@05p!"}R䌞@2EYݖۻ.Z; xZd#:a;٘D]6cQEN$Y2Yd /Fm*OkDϠ"ʡ<,΁! tBdY!fdH{2?b^ϻp9~qg 7lP33 (A{|aw֍ǦG(+3OB% %UD@ke|ӀP@-^)"Qg8 aJ㚼4 $@$>uO!I#Dž-]Mlj,x  Lj"NzN L3(FViNFHbc2]T6A5gaI\BKUܔҶZ)t۔*At1ED ]gGv:k⹥3P5_-zXeҭ^9VWQEDQ솂a D^Ux.⽲TR@;b;y"xO| wJ "LRR$gByU?G/NsDz~JW_!N U =ب(D1 (#G@FY04 UR9<rϱ*1UUs㞿O^t"l TC.J)&̘ l܌#1toq gÈ4Xnx\H x2ѬLodz0z_G?S}<G `I]s=8$ T#{MIa׷ ! 8*me4O  g+S)ގ>%Gt@{;;s']UY0=nMzj4a@#O\ 3 \CcLHaBlLWҚz@g"PYo+n qota|D I9]@&9C |odV%!%m6cxui3,UD*%/?0%ȐQMQS/*{]ݘ}'.n裉 .S Ir5v΋V@}=W%r@R(>P5 KFI֪O`(!B=:ApeE}f?3sdw"rx1 =pkؔ;FE x?`"g/Gbb<"wD4>}3O4Z)!lIHAMbx@_` t8B% y??f1vs=("=D܈5U}Gw'Rt O33)7c |""1 (1i `RL zEThOX# >(KTk\jRZUګj[dVI餠Ƞ2*:TT~^ H$u;'X46}MMn! A'aBE`.֠it ᯸p;FAG_(` "=•B56UG\{&Q8'Xs,yutLU5~܆Yyu"R'WoUn2IG}3/j?w2>SF:J@>O`*J"ⅽiHm'7gDIo|/ɎЌ[p|a>!?8(4QiV:0 =Q1%=I #g],IHAp:$= v0B7q+ ˉ|I{!&d gÕf>n+Nx|]\lL2-MCLiCH!DC Hf&$<4<<0GGO `D己=NN̑sIT M@VЗ=?ei&('Z|f;K0}ᾝ⮐!T39Qo)`;GӈeFSo'D"0$B#B% qA-}x"XN r 8N2D#1' 5 d" 6.ӀA;`f9'sQs]b. &a>={6fYkiKZm6{]E5M#h E[lUճ[i5MX# TI$`(;50 Vʭ5e5!ߦ 2'GJ5Gg.ƥ'ca2K_9 ƜC v񧇰CUKsעL cOg KnbLࣧ\:H:H}/,Is00<۳o0R?<&럀߳By_g-9}WO.0!Yi_?_/7.enwWBFWqN?G:ҁۣOoS1S&CL}fܿ'_Ɗ/+w{Z7sxw'7Am}fnǣ? _Ħ_/[\t|/^{'j}S>t[_aM̽j~%}h/-?[ ?b7^7hۏ{o-=7~}'cT^wo7?k>_<_C4k__~g{3ckM?[h~??[N|/s?/qyo!E?ilOi&k_coxߡ2Sbcߓo!m߃[ mmo6>OG{/?[hSS#u~˳OyOWxB=gy I|8`ל;'ɛj{Kz{g;5|}O{~<ߊ{gꊛߡS8e>5{Ͻ<oso/Q_õ33Z 3(Tmod]g1v'~W}=O_{<\`~w>?K;cg󽗽ob_{Ϳa/}wCszD=^ޮ=M#?yzi58|-^MJ_Q_*TM3l| :/ܵJR==M/~_ هdfUl? E{Ww?(Ho`00S$=A>Pھ &#"I[MF&*0?뇔ATy?>?z)|r^x RX RXk5-cm;\ C=%/􉲓w;_ӛ? ~y`\Mr-Z"F92r4t 15ΝY*J3cD|<Σ*Pq B)z=ZIb3=)֧ϗ~&=DT_~Ց=7W.:9U\K~V{w0{v>2e:;h|P''}뭊չXGOe=f"mY#'Ky!|f uT]]Gc O M9IdXmy:޹8FM&rMAŧYoh~ &i={b~@! zxy!A0$p]? (~,xNhy.Xa`gon`_t?RL)6DTBXvA\Xҧ^P<$A CXTm,P爥5d,pT+"3 7< Omvþ:*:EZ_DS`='n׍w=K犈 aEȇ"h]e`Jh0! guuμ`6C cT gɂ1 >xc}?~FA -2)/?PwN!@PO@HyWq\WGtI@D/NALDl f2APw.lK0ߴ$bXGntZwp8brdG#1k\`O Hzîyn%1}n6Qk le8K48.bͮ4BIHJ2X44,c"j#m͗k3ZC p7vۘaRκtuN3ܝ3)&Cd[:MvxS#!]Ŗl;^[Ԑ IaiFR(G;û *܁C}!y=ɔ,Njxqt1H;Itcoz|ɣ{ P @̰,!$ YPFg!* 8!xOel@IRRC>!z_x6h/ T!8Jo# A(?P4 GO?\uc1sD>z:z7>/`t( ( 7Z5+ْE5DO`H:A0IP+#{R)qK$cyIB΁v˴`V40"bdEcQU)JLzo#)"t){␠|DqC(ܩ2G4K!x> ۤdO5xQ&ƅR='f CNUOX{N7F""y**& vD7V Ju1ѕQ2ӳ/ ozv4R(6 |zT}p|苢A hbmSb\& 4%0s&;VAA5t/~4kYlhδΕ62XiI7D(4/.0eR3S ! XI1 wpDB3Jfkb$-u5NLLpa$P$FKk]Y\㉞@/XYE3~q((""""""" /!P'$`~T+hr`؞}~7E0_6NM9>zvOozOV*N)o ʝ\>7f=Ia/Kp~cʦ=4~zFCm$͂c61NzWya&b.SHP 0b*g1:3@&l^l'-H 2EG悇L c8Pd r @w=9Pu ~k= ZCF=}3.="H5CO@{! "F 4 &;GOmǰNrWu}ϗu)oQP),ΜTA'/@PHJEH=xS C|Gov1TI01VH2 jZB!\9EܹkiFd-!VTuBR̥oW.\6@~eaNm;T:ǂsr!qΉ/5Cudhm 7-^BIòN8>S}S G~#@SX(FPG)qh(_I/_yzk8vOT› Na6 ;kl0 ./lu$Hu2G{tX?{Ïn9I.%B FbNkc[# VbF`[h305f2X4`8Qny9yy@:er|`>@2:"xNH+N0fKkRqci%{!0*WIؐxۑ=e(dSTWJTN&{oQbHNJ#V(M?źz. 9j bLQFƦݤ8ĚQ閒kŻJFJ{}I.ҒG98MΥ !5\F$%܀JIQtMShq$`s35Пk2`H$(\`DaJ,izO j"1^!cY2ML!9i4/|F'6 lR0YWE!هYDv\ceܵ[,m8YـA`~`9V2Z#$,8ei'r[ 4 Y&uFʍpY]!EKQT[aD&QrU\jv@$ !&eF[Ez=zRήv==//S "zqnibao) Ʋmfɣ#8j4AT`f& #9 Hw\8TnqM1e ڌzp,u6hm Đ*RP \P&Lq3̹|`&h LTjgzyr?FI.Ӫ ˹Uz#ł+>V"7vw""01g trc5Uϓ/% Z{n M NIcI;֞A̭ &BƓH`%!2Wm:xvڗIo+UF0$^<;U=\2T .ƍYJ"rVH^-qrQiJH(d% 4er+FH SGA%nDSЃܕ1U| ]xbX4ĄKD#A:`DΟ`SQ4 SE8 `$'evzO;f:qoA2$-rI: oI89qYjrAEb'zueHG{ G>=X='V(ICm =.@<ɇ :v 3Ge> ~7=:ZlPZRs|\ ½H=δ`CN{W$G7no9+đ$zg-y,<ᩁCϦrADF.1!tS( ́a̎< <=>pgsrvr{Y;4" r@*zLCpJC U"ñ.B>`ՖKl[xwjyz4faMҿaMlƏkuX N:epw$lދ؂Ya݂Y׍:zgD#`&|<7>j28b=,K B?(z9` }Ӟ 4VD6Vjt]vHFQ@J",!  JÂB T$ o'6y[IgЪva&@~.Ij{Ԯ~>f.>CᲴ`z1c=czLghu夿 1+fL[Kc$b#Lp~>wwd$$u`Q ];31q!А9h0 HEąy$clɕ!b)3cKFZDvY+m#4u;m 9wWEh,SKó F{#!*dM i`\ R97#XqmKbH,By)Gt)P? G|a-qqDLco̰N5$fUlFս^I;>d'۸ѰB:mL)w]]7*/]%I-SD$JJig*.a1ncuv*Jws{w4˩yNøw&ѫiҙ$I$I$OwSsw/;[Z76hDJ"mؽ1Bj*YUi/PT>ڍYO&Ml)C)>lU;Y5+1>[Ur'u MӉ̉c6xE+2仸|3+3*m܀zdζA,b&H꽤?h # X*+I$9=Ӡm6ƩAs kwq6-+|,03[tqA!@2bxː.;\!d! d=L7 /,>x 1@bH"^%pQYNtꪫunUu!8+ۉ e٩*V2$J)"P>7UA`W'8DEmV6l5(Zf,Tث%EM0JKI4R+B!@[wI-rjo{+ ÷Cg ķ(wC[Zh;8y<;U7vIZF-fXړ,),T xz oPUfh.]_2MM#ɳS}Fa.?aGt֜CޑOꁤ"ý݊(*Sds9`J01 &Y"̧*;)`^rν+EC9 c)){XC)Il$IQ&kFRSj.j4j}`%`)@/҄2<<(s5! #0Hr -{VC![倰=˂p!{|z7|ސ +=N ^t8@%)HX`hpȔ4@{'pa(ŔPYLxhlc!"$ r=#P^^Eڛ S+i"D&e V+ʫyS՟E@7 x=裰%>,%^H]f!ba9+ +qu>on'6'm;Jߞ;(4CSD0VB]`?_YEqIpxeTqrw32S S%N5[0ܚ[2'FmTN-+ &C ; dRz$@/':-5) KocF^LE*{vjL;=3 G`y0Ɔlp/)﷗hێ:S%f>$'هy9%@k e PaNTc|v8 $d#zU0tPH&ӷAO>w3 =Jep 40CaT8 0+?!HH *wnx_L,*RM,4ЭLmEV*MX[Qmh`ijڦ$b$$TI$z)>w'`,&r=LӧwI3zuA%{e@$)L/&)1AO`$[p44.$abi[IiAm7¸z~f1JN'w>3_i^d#.|D~8wE1(a^^w$+Mq|e zxb;YN-'"uSU~!S!M=s D,2'Ju?n`r\w{qp ^Hĝ7@2sN <$rS`e1 Q t`jE C6He4hjB*zO6-]B\YHCC$IJ/E)ȇC߂`TB0'i8xk#L v^36a 1d[F3mAdBMr!H@H9&?_&:@SMD:ᮗRsTEI$X(Q܊#YescfAUP3dž!AC @d?Cb@o &" qM!ӦJJslpwf!6Fɉ0OfcqxHCP2@e p,*3m\m܆%Tu7"Ex&Bt4,pS d q24鉀TM@3lx*qL !dFr$/& TCvc (0/SmȬEXEwsm[j#QDEEEEEFDU]uuVJqBbKqHbbXCJ0d Z =H ΚI#k5bc:`md\0'OXaDp‚|X{i+oC f* A2` Š '| |NW=LZ@25B&0,*#ꃓ3+4A9xu8ht8 ykLc@^d*n |@HTIAɝ@;/ڤSC4R}1p'EMUB9c1zN8=:iׅp(v}$RQ>!.%'FRHj)"rز7D~:(Q{"'R@N}B)hD[z>dF׋r]ӀfdAz5h# H3 :"L W 22% D殛0D2ev.H #&@=2DIB(M!{:F;IeĆLfD7iP!;!!!##p QAŠ!BHiC2y}ld$A{,!IaEMJoAN{wynP L,X@/~F׋KҒuN"!3+H1nN$ڢLeOvP" O}TivCD2gWu r1o: afbe0AʚYQIS ,hA((-@)4BF#wj (VC 7ts`J@)\1H͓$Gp-37< X Ԅ/9/5) (S#V4jՊ94D³TK@ B ܔ831D\DL%.D4LSv\b:S˵ CDÌtHZ嵹[rar `02[d$d֚w_h gyC@Pn $\Lچ:A$A#vBHHp'P)u;yю c h*d8njh H1 q$  (|)PwvE(LB@$:;8?(PSwR, Z?Pe$+ޙZ zjNyz  vJH<n udځ+(e $Gڶ.[,&RhS4$!! *Py}4i1 DHЧ@ HrO<*P2hCĨ#/QUD'IDH#BQo*PNjN &!VDHhH idv@pY@P!S4tSs `==iHbB8$ #vy!&!$ XuF'~v}(6f1RQFA$N@ aJa5{ڍccmG 4FfJ'.wc2w!rivIehSIPD!*b9X^0Fڬm1+03J6e7b%h2czλQ״(AS><'iM3BD!J ұ*1DQڕjXH\U\/,6`Qw`oPU!1yCAH!Dr-"P`N%"\OA P()P !'KL*1%z".ƴ0z"<@ARpaHz"WSm1-@qTFN[bE Wm D 4t6܀J)*hCxT=$+BJ`(sU(gջE#G`&T bK"~91A R1H';|B@xe-K@R(-̹2˵mlMdJ?^!|ZBI;KffHo& `ŎF#ٸH `JAQz뿊(r< va zg= ψtH(K1Qe %%$Px%S#g<O0ASBX= @gJ!Alw4Ȣ(Gh:cHTs[1醰.B$UW;0mBXXͶœ .?FIsuC:HBt.?378R28အnrjSМ U1`H0IF:sܜթ4iӔ׫7*24Hw9޿ ϖ?$ݠB>wCR5粵Dpfdllu#lYju08 `"$e= KJ:VI)LhЪX8 5-3DhɚF!Jh;=4 y_v"зǺlA﷝GkD)d,= zXEYat!j<@>ϫC5!4u.= uks(6 T3x ~UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUjb-lU[-l[-lUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU[-l[-l[-lUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUs3#h% :=~Zy Mɉ 퍼~8ň|r'-+)&|>*sGg%.>^8},_1PV,`0{+øobx YGm{0UQPp6g`He=E CQsCxL#VUmf5p}a)AB%tq:KGy`V~`HN!'0;"kxacr0vwl#&eQ#҇bltVROpǜ yZyyiTHtsI"(XHOTG@O7ƀtkrk4;Ysq�EhɮS4bj]uι=$6DZFXR%)bdagNƖ")WUvS6jh SiĔkB$^.-QK3,Y*ׯtBVۯK-QQK1f}Ll&΍ mQBADEC9N#nτm6@\$SK׍{MʑJkē`Yp)AL"+;`jU- |FAXLdG`CJp2 %ҭH.B@HcJN`U;e$iۑ׾oE 'ƃbbHhFi Juf]vYqu֥ J2D:Sd.L*d>:h kyb=nG ))^IZ'؆7 p|R 6nq$(< φϸHm9(dk``XN[O; 2Ge%f\XJ{l|w`FNه<>\tE/W$^mLIP)e DbaJUO)" H]cI{"J@z9wVO:ܨy"*= dp ϊx2S0~ 6$.yD/Z1hKRlMG6],͌Ȳ26E_&*!q.GD`f4D)iI zR@(XCJ_Rnp|.؎< |=4OߊL 1vOsawiOp(f!;d!t^}&aY3^  G^b'̶@i %Ba_" I<ڮCCOt RS\XCl׸Ё8]v́ cMg/ nLvm8Xd-@+cf38KKQ)LPLܲɽk!XvΎpAF[3i&FMͯ6C9иTeY Du:\::|g \:==pIױLwp7LNEKtK8ê7F=}YqYd&rJˈ#"^<\>_ qtzytǻyi܌I> =;PӳJGdvzy>d ݠ'&%0"X=c/O?G'YMă=:%k"% YjzS.㫧i/d@ "}z  u.TiiR*aR6adM)e,)$S)$IS)e)Z1 )))(0A$HI I I$k;IrRx^@] DCiѰڴhSgH2=P8?iAwܦ]PKL'Եo.Ii&ff24 D ,+iC{&: Fd3aF8 H 3/EDj@l21c4xnj'$!Ĉ^ΤE˖QLrE03Ǐ5Hj8IGMj4 _Oi})$$GRI+La 2D<:ֲ ɿgo"ø _St!15%eܙzgÈP٣{/eHtcw/cɼCmHOO}ά9y8)$MG< V/s#f aB\"˶Kiy^HrWE,@L`f mjD#2b <ƗO8\UUj1tˆ&0ee Y41 .I2)16ܤ%dkl@P@w QC Tt)qh7: 'D ڛRPےPuݑh<[;.!(*d9GD.v!PNT`|x 6LMyq97fax\@@ Us7c] iT9׶[1WWR-`fL^=/gOj)IMC8rژhr/#Ш7D<NRϓ𭣅7pE7P A\f0;G$ xVxS &tɚ/Q] Y`>ƇY+\Sz8V`q7Vv;I؈zArApH iW \`\=K" ZQ\w.p#jCQRD sE&ђo&RH;-YE|Draf5Aܞ A3,9`~ .K% fz< 1 Qm-"LU.G:Q,͌d1X.lrB"p70&ajS]"eH$4 l ;<opyQLf֧3,"Lx?Xl/T!ɸM9XY=ڵomzc-4a&M) DҢɂ@2J K 3" Ο!ݔkȇD, ݒ.*1VkitAE#P9CPbvRNkiszp'cD?$ܑqF*xskC0?l5PDk j(ן8p$ $.D(9((MG6jC*7rT_דR@@aE.Bm +;.BҋIhW\1ހC=33,`͛sp$Cp*wdd4S_%2 ؞-B|& ؆^<T塗Ez£""x;OC Вt3ӄ3 *aI aEoLuldm nut۩&.˺׊܉7icƽ<ݯ-j'u5V\9L.\Iyu3Is)#p &I C @M^>kz `cDN%qAyBv랰tyiKZr]! %>ę@9 {zd5*{T%YR[>_?|YPJAA@ICv'"L9i.x!N8CSl>ڛV64Z}c/?|ޣ .0@w82DkK=Y̬LЃ&bDwivDpc}wבΫ|AM 떌 8APBvNAĈnxBpL)s+uC)"h鰍!$ѭ٩Z3&Td(%(X!=buDpΑ]SG 3MyǺu @JJ)J !IM03 B`0K{ RH@a+Ibs{p9+'C`F2Hx0h_t-0w'AŃ_ADRML-!TJ2m6@*+Un"0?p}}I815#x ۣS_5I" $FN\65Z/*D n=T1Y;8DiY\ [Ɋ70;<B(L7w [m=z;Y,}ޭQ7wo g'`? J*:`,sEI )֠@D(xXP+*Z)_Fїۼ@uAh3t!֖uM }LydI$K1 T6f: PKm B. l32r184CA$d$n'0잌`CF84])"a4IPk:eW1HVFk؛d8_%"[s67ɔ&Y Ui )Og Y0Au^uWgF6[!8b$Aer Da(7 Z>g8QaPw3Ʉ~/O"[L,DCRb: KW$R)a04]7:[G^֖xXcA-Dqt;a1q0eׅ3ĵ#GƋi ?цjQ1=8jp  3ͫWHY|&)c7R؂EO@"#P`.dC_h/Qnb:yxSv/9 |ҎUFmeWUP\ nCCUS"o~ۃk}6~'Bga@O'At:pNAй`103y/@ B:/g?'g{5⼭t9<`O0ʕ*oZɈ]Հ&A p߀~>3 (Ht0"&t- ƭ]ɲh?%OTqD,h',Ix@BBdVZ&~=Cx& ^C'A"Z {ꇯOl 3 v1ǖ3$h\:J-B |ɼR̟a}пsK>`,_"?E1F&TR/CЫ$0ynJ L't$ 7Oz&`/ʷAu?Ϡh!3vnX>&##`#'/}>YOvK*賘P+?C!3\?dfVIFV]hvÀ0H䑒$pv9}D_xx2#L2$`y`s94ϗGbqr1 N5O4& kLYC Fbƣ}o-rB>jFN 3! SRf?$׈O| A/vA0N>~@; @BTt?UT/UFgE=kFg?'(b#Uu?f 1Gyu?onŷ ;0 L]G^w/{!aUR: ftjMὰ0Dz>ٕuHAE~*Hiq2deBAT-?cC;LEXh\:׾T/rJ>\H9)+1gB<@2E؁!'{?"I$?9QF_OstY%Ӭ o5WUv+!/5Ay>*G_Tq%x0ɦ*d@p4PMzA|d0]~%SB8?f1ǿHC'nʺ$ $1$S\:dDqZZB?{ _G_珛 +!|/a$/c2??h|ϧ@Eh]A |dP&hbHcm@`^w`crևOV~/gi>#C`Dfz xijuwT ϧNo,ow&1}z ̆fd֍)Ŝ/ =w i7'o.+?[}o ̹{xq ߸ {o}.A-DL$ɛyo5?W%ՇJjGvZuyn${/-p0~=&B~ȯ~,j~L8 7a@x2>.[ƕ8]kK2uqC PT_x;5-:6I[UU݃P xk%7+Ʈq.qQT.Rɀz\YC6g3pYJпBCõ kL'j$dc/XS ܋Tיe\ɊH{I,8^bh(P *$$T{U7Mu:InCI9/ځbG}v7iN9s0 x]&QJa( X !MH~|'#[}`t@:b3}Hd2>(Mam`8z~CJ?f>ΰ.p(]Hk!(d*؟gbAooUSFAâ&06@~~uY8㢛xAE(GL{\9d0E?2膯87RSRy7O|B@wx9KsglKǼxDrj2$KdHJw^4ٞf9 ""11"pgg`C/݅#Px,g`4!DauVG;*f"KiQ=??Ux Hy 汄3x;3AY:F`^p/]CͷhJG4fv>2kDQQ1qCƇ8-B=_R6Y$,b}뙼\)M|,_T#F{MP;;wYU_7~X/iY`&`2`Xu(&59Ž/;em Q0G}%ʁb^fRxW?{zWP:zϸQV`=Dط}&^(a?xGs;.o>h!]XEXܸ} ñ?*>@H{H_@ ͇59-瀺 aLuE2+:Bj$P!jy8Qԁ7:+]ARN|d!$oƒ=j߸wLj1G"mX lNNBx8OWd|{,H4z#q@{<0+tD: `Ob ΐ| @ȴbg bq- >>~q.%HbptQ]?o~lP{?:h̐>!"lmu$0{3|?E,?Xo&0xs2@2h> IAVN_AÆtYrsVAy?$s\J& /b}>+d Q<1={/Vvp^ZmM8D-oo0|o5t\fkmgډ{VT_zi}7[_Nk߷Ѭ`a0& ynsԜN P).&l{|.݂X:DL3 \vKʃ =h[3Cx`jԿqѧ$-'jrĹ:B'`ɯUovJmoǑrLkףoMm|)fYdW<'eeuz6֫tf^{Vt!Xφb`;{1moN\0^ lڶJL]\Xr^?֛v}+];eni0jsA^v͞C-Kx8.c}k _"|Kʚ!U4(?n.sxkR[_jNc^,%OI5] +_J&^Y[y鮛Zq1|@!= P؃|ep&vYo [$uῠ6*A1a(n'(#1Tl&zvN;{m9xp|30ፉ! 9G7P`kg<,,;_ {p-d2>o})d2_];?ДmǠJ#YؐD^mSy7YY3 ff01M9ǂx2ʈ4jSȊo_9jI-.e 7I9Y vG~4#w l]/`oT[`a&g\5)FՑLLvɆ׋û9N{Ixga yw,3VVx\ P^:fV1Α!KB%.Z) .M;:gGKiwf6_ޟњmM9zpv̷97駳[i*S>rܢ`rD9sTI~"=^:uU~3;<6abG /% z^Ӏx}´H7t8tAͪ(#%ԱXYҟ]v%/;z"u#p$jShrP!}w3P0]],Ac8"s4R~ʶwD5pgSrr,@bFk/I3L06Vvb$wAU` U'ibe*t@=9ٓ 00ɓ5Fc1*@!33nr0;ܶ*]Lx [yT΅={R͑ef/3l쩯Ɯ}Sp.NX۾tEEL~+GG[dj?xp=5Ֆ:~N1,\ VVsx SpW-x^ۼL^L<)Km%d5'<=.-J-ijE֐8΍b.mhT6Ԅ}<fQnp,3a@ffaO!LX{ 4Dǘyh3 P )wzLgg*wpae,YløxrR303:'g3KyL2fv.~[r]Cb{C G*T:ۖg 5 oxA+Ƶ%w08f v;ƒBR+XiHH;9E,?~"] *b1k=*X;Zl33}<.pڕg+WR٘pyd\;c-{WЬiugc\a! 8+7Ab0k;;hQǏfqm]Y{KiVؑ~0cޜԀմ񄏱B-T=A_)jQ9~!L=ˣcoC }&icEw#i~rG_&v{`ܑɞ}+SYD lhsrݥ]`#(q}N B#PCG=?My(9'">eﲗd(qIߵ%ߌ;yЄ>ŝL (vI(/$zbƏmj O[nD-W"H!%@}AUtɛqzpA"'~}6Ȯ~B?8A.p libzeep-5.1.8/lib-xml/test/XPath-Test-Suite/0000775000175000017500000000000014324170113020370 5ustar maartenmaartenlibzeep-5.1.8/lib-xml/test/XPath-Test-Suite/data-001.xml0000664000175000017500000000020114324170113022312 0ustar maartenmaarten ]> libzeep-5.1.8/lib-xml/test/XPath-Test-Suite/data-002.xml0000664000175000017500000000104514324170113022322 0ustar maartenmaarten libzeep-5.1.8/lib-xml/test/XPath-Test-Suite/data-003.xml0000664000175000017500000000052714324170113022327 0ustar maartenmaarten libzeep-5.1.8/lib-xml/test/XPath-Test-Suite/data-004.xml0000664000175000017500000000037014324170113022324 0ustar maartenmaarten libzeep-5.1.8/lib-xml/test/XPath-Test-Suite/data-005.xml0000664000175000017500000000062314324170113022326 0ustar maartenmaarten libzeep-5.1.8/lib-xml/test/XPath-Test-Suite/data-006.xml0000664000175000017500000000021614324170113022325 0ustar maartenmaarten libzeep-5.1.8/lib-xml/test/XPath-Test-Suite/data-007.xml0000664000175000017500000000023114324170113022323 0ustar maartenmaarten libzeep-5.1.8/lib-xml/test/XPath-Test-Suite/data-008.xml0000664000175000017500000000020414324170113022324 0ustar maartenmaarten libzeep-5.1.8/lib-xml/test/XPath-Test-Suite/data-009.xml0000664000175000017500000000012314324170113022325 0ustar maartenmaarten libzeep-5.1.8/lib-xml/test/XPath-Test-Suite/data-010.xml0000664000175000017500000000011714324170113022320 0ustar maartenmaarten libzeep-5.1.8/lib-xml/test/XPath-Test-Suite/data-011.xml0000664000175000017500000000016514324170113022324 0ustar maartenmaarten aap libzeep-5.1.8/lib-xml/test/XPath-Test-Suite/data-012.xml0000664000175000017500000000040114324170113022316 0ustar maartenmaarten 10 libzeep-5.1.8/lib-xml/test/XPath-Test-Suite/data-013.xml0000664000175000017500000543452514324170113022346 0ustar maartenmaarten Wikipedia:Archief/Wikipedia:Upload logboek 3295 15202670 2009-01-09T15:32:46Z NL-Romaine 156657 Sjabs oningevoegd met [[Wikipedia:AutoWikiBrowser|AWB]] {{beheerpagina's}} {|align=center class=toccolours | [[Afbeelding:Pictogram voting delete.svg|30px]] |''Dit is een [[wikipedia:Archief| archiefpagina]]'' ''Gelieve onderstaande teksten'' <u>'''''NIET'''''</u> ''te wijzigen of er commentaar op te geven.'' <br> <hr>Archivering gedaan door ''[[Gebruiker:Erwin|Erwin]]'' op 24 aug 2008 13:47 (CEST) na datering. |}[[Categorie:Wikipedia:Gearchiveerd|Upload logboek]] <ul><li>22 dec 2004 23:00 [[Gebruiker:Deamon|Deamon]] heeft ge-upload: "[[:Afbeelding:Holland_Empire.JPG|Holland_Empire.JPG]]" <em>(Ik heb de jpg-afbeelding zoals die zch bevindt in de volgende link gecorrigeerd zodat hij een beter beeld geeft van het nederlandse handelsimperium: http&#58;//nl.wikipedia.org/wiki/Afbeelding:Holland_Empire.JPG)</em></li> <li>22 dec 2004 22:48 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:5ec_monaco.jpg|5ec_monaco.jpg]]" <em>(Afbeeldingen van euromunten zijn niet wettelijk beschermt.)</em></li> <li>22 dec 2004 22:48 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:50ec_monaco.jpg|50ec_monaco.jpg]]" <em>(Afbeeldingen van euromunten zijn niet wettelijk beschermt.)</em></li> <li>22 dec 2004 22:48 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:2ec_monaco.jpg|2ec_monaco.jpg]]" <em>(Afbeeldingen van euromunten zijn niet wettelijk beschermt.)</em></li> <li>22 dec 2004 22:48 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:2e_monaco.jpg|2e_monaco.jpg]]" <em>(Afbeeldingen van euromunten zijn niet wettelijk beschermt.)</em></li> <li>22 dec 2004 22:48 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:20ec_monaco.jpg|20ec_monaco.jpg]]" <em>(Afbeeldingen van euromunten zijn niet wettelijk beschermt.)</em></li> <li>22 dec 2004 22:47 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:1ec_monaco.jpg|1ec_monaco.jpg]]" <em>(Afbeeldingen van euromunten zijn niet wettelijk beschermt.)</em></li> <li>22 dec 2004 22:47 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:1e_monaco.jpg|1e_monaco.jpg]]" <em>(Afbeeldingen van euromunten zijn niet wettelijk beschermt.)</em></li> <li>22 dec 2004 22:47 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:10ec_monaco.jpg|10ec_monaco.jpg]]" <em>(Afbeeldingen van euromunten zijn niet wettelijk beschermt.)</em></li> <li>22 dec 2004 22:34 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:Finnish_2_euro_commemorative_2004.png|Finnish_2_euro_commemorative_2004.png]]" <em>(These images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.)</em></li> <li>22 dec 2004 22:32 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:5ec_fin.png|5ec_fin.png]]" <em>( ThThese TThese iThese images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.mages originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.hese images originally came frThese images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.om the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.iThese images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.mages originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.esThese images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.e These images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB. )</em></li> <li>22 dec 2004 22:31 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:50ec_fin.png|50ec_fin.png]]" <em>( ThThese TThese images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.hese images originally came frThese images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.om the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.iThese images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.mages originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.esThese images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.e These images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB. )</em></li> <li>22 dec 2004 22:31 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:2ec_fin.png|2ec_fin.png]]" <em>( ThThese These images originally came frThese images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.om the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.iThese images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.mages originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.esThese images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.e These images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB. )</em></li> <li>22 dec 2004 22:31 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:2e_fin.png|2e_fin.png]]" <em>( ThThese These images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.iThese images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.mages originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.esThese images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.e These images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB. )</em></li> <li>22 dec 2004 22:31 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:20ec_fin.png|20ec_fin.png]]" <em>( ThThese iThese images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.mages originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.esThese images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.e These images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB. )</em></li> <li>22 dec 2004 22:31 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:1ec_fin.png|1ec_fin.png]]" <em>( ThThese images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.esThese images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.e These images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB. )</em></li> <li>22 dec 2004 22:30 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:1e_fin.png|1e_fin.png]]" <em>( ThesThese images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.e These images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB.originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB. )</em></li> <li>22 dec 2004 22:29 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:10ec_fin.png|10ec_fin.png]]" <em>( These images originally came from the European Central Bank&#39;s own site &#91;http&#58;//www.euro.ecb.int/en/more/communication.html here]. The only modification made to them was converting the original .&#91;&#91;GIF]] files to .&#91;&#91;PNG]]. Used without express permission, but no apparent restrictions applicable here were found at the ECB&#39;s site. However, any potential copyright on the designs depicted on the notes and coins probably belongs to the ECB. )</em></li> <li>22 dec 2004 22:23 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Poesjkin_Catharinapaleis_Barnsteenzaal.jpg|Poesjkin_Catharinapaleis_Barnsteenzaal.jpg]]" <em>(Catharinapaleis te Poesjkin (Barnsteenzaal). Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]], augustus 2002)</em></li> <li>22 dec 2004 22:20 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Rero49.gif|Rero49.gif]]" <em>(Vlag van de Romeinse Republiek 1849 - van Spaanse wiki)</em></li> <li>22 dec 2004 21:47 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:5ec_por.png|5ec_por.png]]" <em>(5centportugal)</em></li> <li>22 dec 2004 21:47 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:50ec_por.png|50ec_por.png]]" <em>(50centportugal)</em></li> <li>22 dec 2004 21:47 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:2ec_por.png|2ec_por.png]]" <em>(2centportugal)</em></li> <li>22 dec 2004 21:46 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:2e_por.png|2e_por.png]]" <em>(1centportugal)</em></li> <li>22 dec 2004 21:46 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:20ec_por.png|20ec_por.png]]" <em>(1centportugal)</em></li> <li>22 dec 2004 21:46 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:1ec_por.png|1ec_por.png]]" <em>(1centportugal)</em></li> <li>22 dec 2004 21:46 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:1e_por.png|1e_por.png]]" <em>(1centportugal)</em></li> <li>22 dec 2004 21:45 [[Gebruiker:Rub1615|Rub1615]] heeft ge-upload: "[[:Afbeelding:10ec_por.png|10ec_por.png]]" <em>(10centportugal)</em></li> <li>22 dec 2004 20:28 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:LokatieMaas.PNG|LokatieMaas.PNG]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>22 dec 2004 20:22 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:LokatieIJssel.PNG|LokatieIJssel.PNG]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>22 dec 2004 20:19 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_smartno_paki.png|Sl_gemeente_smartno_paki.png]]" <em>(gemaakt door gebruiker Plp sl:wiki; auteursrechtenvrij)</em></li> <li>22 dec 2004 20:14 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:LokatieHollandscheIJssel.PNG|LokatieHollandscheIJssel.PNG]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>22 dec 2004 20:12 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:LokatieLek.PNG|LokatieLek.PNG]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>22 dec 2004 20:08 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:LokatieAmsterdamRijnkanaal.PNG|LokatieAmsterdamRijnkanaal.PNG]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>22 dec 2004 20:06 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:LokatieWaal.PNG|LokatieWaal.PNG]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>22 dec 2004 19:56 [[Gebruiker:Lekkere Kwal|Lekkere Kwal]] heeft ge-upload: "[[:Afbeelding:Rijkswegenkaart.png|Rijkswegenkaart.png]]" <em>(Eerdere versie hersteld)</em></li> <li>22 dec 2004 19:55 [[Gebruiker:Lekkere Kwal|Lekkere Kwal]] heeft ge-upload: "[[:Afbeelding:Rijkswegenkaart.png|Rijkswegenkaart.png]]" <em>(Eerdere versie hersteld)</em></li> <li>22 dec 2004 19:06 [[Gebruiker:IJzeren Jan|IJzeren Jan]] heeft ge-upload: "[[:Afbeelding:Sealand_fortress.jpg|Sealand_fortress.jpg]]" <em>(Uit Engelse wikipedia. Met permissie van Sealand.)</em></li> <li>22 dec 2004 19:06 [[Gebruiker:IJzeren Jan|IJzeren Jan]] heeft ge-upload: "[[:Afbeelding:Sealand_vlag.gif|Sealand_vlag.gif]]" <em>(Uit Engelse wikipedia. Nationale vlag, dus publiek domein)</em></li> <li>22 dec 2004 18:37 [[Gebruiker:Jürgen|Jürgen]] heeft ge-upload: "[[:Afbeelding:Leefgebied_vliegende_hond.JPG|Leefgebied_vliegende_hond.JPG]]" <em>(Bewerking afbeelding: afbeelding_(kaart).JPG)</em></li> <li>22 dec 2004 18:15 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Vaarwegen.PNG|Vaarwegen.PNG]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>22 dec 2004 15:40 [[Gebruiker:David Eerdmans|David Eerdmans]] heeft ge-upload: "[[:Afbeelding:Metro_Athene.png|Metro_Athene.png]]" <em>(Van Duitse wiki met aanpassingen; GNU/FDL)</em></li> <li>22 dec 2004 14:31 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Grad.jpg|Grad.jpg]]" <em>(publiek domein wegens ouderdom)</em></li> <li>22 dec 2004 13:24 [[Gebruiker:Jürgen|Jürgen]] heeft ge-upload: "[[:Afbeelding:Leefgebied_grizzlybeer.JPG|Leefgebied_grizzlybeer.JPG]]" <em>(Bewerking afbeelding: Afbeelding_(kaart).jpg)</em></li> <li>22 dec 2004 13:18 [[Gebruiker:Peter Hennekam|Peter Hennekam]] heeft ge-upload: "[[:Afbeelding:Di_Centurio_Vitis_Ammalon.jpg|Di_Centurio_Vitis_Ammalon.jpg]]" <em>(eigen bron)</em></li> <li>22 dec 2004 13:10 [[Gebruiker:Jürgen|Jürgen]] heeft ge-upload: "[[:Afbeelding:Leefgebied_koala.JPG|Leefgebied_koala.JPG]]" <em>(Bewerking afbeelding: afbeelding_(kaart).JPG)</em></li> <li>22 dec 2004 12:59 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Formos.jpg|Formos.jpg]]" <em>(&#123;&#123;eigenwerk}} voor C&amp;T)</em></li> <li>22 dec 2004 12:58 [[Gebruiker:Jürgen|Jürgen]] heeft ge-upload: "[[:Afbeelding:Leefgebied_otter.JPG|Leefgebied_otter.JPG]]" <em>(Bewerking afbeelding: afbeelding_(kaart).JPG)</em></li> <li>22 dec 2004 12:20 [[Gebruiker:Peter Hennekam|Peter Hennekam]] heeft ge-upload: "[[:Afbeelding:Ozzy.jpg|Ozzy.jpg]]"</li> <li>22 dec 2004 12:06 [[Gebruiker:Peter Hennekam|Peter Hennekam]] heeft ge-upload: "[[:Afbeelding:Radames.jpg|Radames.jpg]]"</li> <li>22 dec 2004 11:29 [[Gebruiker:Jürgen|Jürgen]] heeft ge-upload: "[[:Afbeelding:Leefgebied_luipaard.JPG|Leefgebied_luipaard.JPG]]" <em>(Bewerking afbeelding: afbeelding_(kaart).JPG)</em></li> <li>22 dec 2004 10:25 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:KasteelBeauvoorde.jpg|KasteelBeauvoorde.jpg]]" <em>(Kasteel Beauvoorde)</em></li> <li>22 dec 2004 09:44 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Novo_mesto_Breg_2.JPG|Novo_mesto_Breg_2.JPG]]" <em>(gemaakt door sl:Uporabnik:Andrejj en GFDL)</em></li> <li>22 dec 2004 09:43 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_novo_mesto.png|Sl_gemeente_novo_mesto.png]]" <em>(gemaakt door Plp sl:wiki; auteursrechtenvrij)</em></li> <li>22 dec 2004 07:28 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Locatie_Nieuw-Amsterdam_in_Drenthe.png|Locatie_Nieuw-Amsterdam_in_Drenthe.png]]" <em>(De locatie van &#91;&#91;Nieuw-Amsterdam (Drenthe)&#124;Nieuw-Amsterdam]] in de gemeente Emmen. Kaart vervaardigd door &#91;&#91;Gebruiker:Roepers&#124;Marco Roepers]] op basis van &#91;&#91;:Afbeelding:LocatieEmmen.png ]] van &#91;&#91;Gebruiker:Mtcv]]. &#123;&#123;PD}})</em></li> <li>22 dec 2004 04:38 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Berdjajev.jpg|Berdjajev.jpg]]" <em>(publiek domein)</em></li> <li>22 dec 2004 00:38 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_ribnica.png|Sl_gemeente_ribnica.png]]" <em>(gemaakt door Plp sl.wikipedia; auteursrechtenvrij)</em></li> <li>21 dec 2004 22:04 [[Gebruiker:David Eerdmans|David Eerdmans]] heeft ge-upload: "[[:Afbeelding:Metro_Athene.png|Metro_Athene.png]]" <em>(Van Duitse wiki; GNU/FDL)</em></li> <li>21 dec 2004 21:01 [[Gebruiker:GWirken|GWirken]] heeft ge-upload: "[[:Afbeelding:Gevangengenomen_Vietcongstrijder.jpg|Gevangengenomen_Vietcongstrijder.jpg]]" <em>(Foto van een gevangengenomen &#91;&#91;Vietcong]]strijder. Bron &#91;http&#58;//teachpol.tcnj.edu/amer_pol_hist/thumbnail471.html] {PD})</em></li> <li>21 dec 2004 20:56 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Metrokaart_Amsterdam.png|Metrokaart_Amsterdam.png]]" <em>(update (veel te laat...))</em></li> <li>21 dec 2004 20:55 [[Gebruiker:Londenp|Londenp]] heeft ge-upload: "[[:Afbeelding:Talk.jpg|Talk.jpg]]" <em>(Overgenomen uit engelse Wikipedia, Public Domain omdat het door de US Government uitgegeven is)</em></li> <li>21 dec 2004 20:45 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Lift_down.jpg|Lift_down.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>21 dec 2004 20:17 [[Gebruiker:Londenp|Londenp]] heeft ge-upload: "[[:Afbeelding:Haastrecht.JPG|Haastrecht.JPG]]" <em>(Op grond van de oudheid van de prentkaart is er geen copyright meer)</em></li> <li>21 dec 2004 20:08 [[Gebruiker:David Eerdmans|David Eerdmans]] heeft ge-upload: "[[:Afbeelding:Metro_Athene.png|Metro_Athene.png]]" <em>(Van Duitse wiki; GNU/FDL)</em></li> <li>21 dec 2004 14:47 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:DSC00013nieuw.JPG|DSC00013nieuw.JPG]]" <em>(Ronald Blom - eigen afbeelding (2-12-2004))</em></li> <li>21 dec 2004 14:09 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:DSC00001nieuw.JPG|DSC00001nieuw.JPG]]" <em>(Ronald Blom - eigen afbeelding (2-12-2004))</em></li> <li>21 dec 2004 13:38 [[Gebruiker:Kjoe|Kjoe]] heeft ge-upload: "[[:Afbeelding:Schema_kwel2.png|Schema_kwel2.png]]" <em>(Schema ontstaan kwel; publicatie en verspreiding is toegestaan mits voorzien van copyright notice. )</em></li> <li>21 dec 2004 12:42 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Nederlhandelspost.png|Nederlhandelspost.png]]" <em>(nederlandse handelsposten tijdens gouden eeuw (aanpassing kaartje commons))</em></li> <li>21 dec 2004 12:38 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Kolonies_nederland.png|Kolonies_nederland.png]]" <em>(verbetering kaartje nederlandse handelsposten gouden eeuw (zelf gemaakt met kaartje wikicommons))</em></li> <li>21 dec 2004 12:36 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Kolonies_nederland.png|Kolonies_nederland.png]]" <em>(verbetering kaartje nederlandse handelsposten gouden eeuw (zelf gemaakt met kaartje wikicommons))</em></li> <li>21 dec 2004 11:09 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:CecilRhodes.jpg|CecilRhodes.jpg]]" <em>(cecil rhodes (engelse wikipedia))</em></li> <li>21 dec 2004 10:41 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Ajaxvlag.jpg|Ajaxvlag.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>21 dec 2004 08:46 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Franse_TGV.jpg|Franse_TGV.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>21 dec 2004 00:18 [[Gebruiker:Peter bankers|Peter bankers]] heeft ge-upload: "[[:Afbeelding:LibelleX.jpg|LibelleX.jpg]]" <em>(GNU Free Documentation License )</em></li> <li>20 dec 2004 23:49 [[Gebruiker:Peter bankers|Peter bankers]] heeft ge-upload: "[[:Afbeelding:Doren-1641-Otto-de-Visscher.jpg|Doren-1641-Otto-de-Visscher.jpg]]" <em>(GNU Free Documentation License)</em></li> <li>20 dec 2004 23:06 [[Gebruiker:Nijdam|Nijdam]] heeft ge-upload: "[[:Afbeelding:350px-Bewijs_omtrekshoek.gif|350px-Bewijs_omtrekshoek.gif]]" <em>(bewijs omtrekshoek//aanpassing bestaande figuur)</em></li> <li>20 dec 2004 22:56 [[Gebruiker:Londenp|Londenp]] heeft ge-upload: "[[:Afbeelding:Hamar_kaart.png|Hamar_kaart.png]]" <em>(overgenomen uit noorse Wikipedia)</em></li> <li>20 dec 2004 22:20 [[Gebruiker:Basvbeek|Basvbeek]] heeft ge-upload: "[[:Afbeelding:Witness.jpg|Witness.jpg]]" <em>(Eerdere versie hersteld)</em></li> <li>20 dec 2004 22:18 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Zeeleguaan_hagedis_reptiel_bew.JPG|Zeeleguaan_hagedis_reptiel_bew.JPG]]" <em>(Bewerkte (gesneden) foto van www.gimp.com: publiek domein.)</em></li> <li>20 dec 2004 22:16 [[Gebruiker:Londenp|Londenp]] heeft ge-upload: "[[:Afbeelding:GipsAustralie.jpg|GipsAustralie.jpg]]" <em>(uit de engelse Wikipedia: het is vrijgegeven onder de GNU Free Documentation License. Tekst, Photograph of gypsum specimen from New South Wales, Australia taken by Dlloyd. Intergrown, orange-brown coloured gypsum crystals, which measure up to 13 cm (5&quot;) i)</em></li> <li>20 dec 2004 22:16 [[Gebruiker:Basvbeek|Basvbeek]] heeft ge-upload: "[[:Afbeelding:Witness.jpg|Witness.jpg]]" <em>(basvbeek )</em></li> <li>20 dec 2004 22:13 [[Gebruiker:Londenp|Londenp]] heeft ge-upload: "[[:Afbeelding:Gips_Australie.jpg|Gips_Australie.jpg]]"</li> <li>20 dec 2004 22:03 [[Gebruiker:Londenp|Londenp]] heeft ge-upload: "[[:Afbeelding:Gips_Australie.jpg|Gips_Australie.jpg]]" <em>(uit de engelse Wikipedia: het is vrijgegeven onder de GNU Free Documentation License. Tekst, Photograph of gypsum specimen from New South Wales, Australia taken by Dlloyd. Intergrown, orange-brown coloured gypsum crystals, which measure up to 13 cm (5&quot;) in length)</em></li> <li>20 dec 2004 20:52 [[Gebruiker:Basvbeek|Basvbeek]] heeft ge-upload: "[[:Afbeelding:Witness.jpg|Witness.jpg]]"</li> <li>20 dec 2004 19:55 [[Gebruiker:Hjvannes|Hjvannes]] heeft ge-upload: "[[:Afbeelding:Stambolic.jpg|Stambolic.jpg]]" <em>(afkomstig van www.lifeinlegacy.com, alwaar wordt vermeld: &quot;All pictures added to the site are public domain to the best of my knowledge&quot;.)</em></li> <li>20 dec 2004 19:49 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:KuifjeStoel.jpg|KuifjeStoel.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>20 dec 2004 19:46 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Kaart_NOLS_met_route.jpg|Kaart_NOLS_met_route.jpg]]" <em>(Kaart van de lijnen van de NOLS, onderdeel van zelf gemaakte foto van oude poster door de NOLS zelf uitgegeven en door een vriend van uploader ingescand en bewerkt voor Wikipedia. PD door ouderdom)</em></li> <li>20 dec 2004 19:35 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:KaartNOLS72dpiMetRoute.jpg|KaartNOLS72dpiMetRoute.jpg]]" <em>(Kaart van de lijnen van de &#91;&#91;Noordoosterlocaalspoorweg-Maatschappij&#124;NOLS]], onderdeel van zelf gemaakte foto van oude poster door de NOLS zelf uitgegeven en door een vriend van uploader ingescand en bewerkt voor Wikipedia. PD door ouderdom &#123;&#123;PD}})</em></li> <li>20 dec 2004 19:19 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Tambov_oblast_wapen.gif|Tambov_oblast_wapen.gif]]" <em>(estse wiki: geraldika.ru)</em></li> <li>20 dec 2004 18:40 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Intercityrijtuig.jpg|Intercityrijtuig.jpg]]" <em>(Intercityrijtuig station Utrecht Centraal. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]], december 2004.)</em></li> <li>20 dec 2004 18:22 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Intercityrijtuig.jpg|Intercityrijtuig.jpg]]" <em>(Intercityrijtuig station Utrecht Centraal. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]], december 2004.)</em></li> <li>20 dec 2004 18:12 [[Gebruiker:Hjvannes|Hjvannes]] heeft ge-upload: "[[:Afbeelding:Stambolic.jpg|Stambolic.jpg]]" <em>(afkomstig van www.lifeinlegacy.com, alwaar wordt vermeld: &quot;All pictures added to the site are public domain to the best of my knowledge&quot;. )</em></li> <li>20 dec 2004 17:21 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Verlauf_der_A31.png|Verlauf_der_A31.png]]"</li> <li>20 dec 2004 17:06 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Routebordje_LF8a.jpg|Routebordje_LF8a.jpg]]" <em>(Routebordje LF 8a onder fietspadbord , eigen foto. &#123;&#123;GFDL}})</em></li> <li>20 dec 2004 14:03 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:OngevallenNL.jpg|OngevallenNL.jpg]]" <em>(bron CBS)</em></li> <li>20 dec 2004 13:33 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Wegverkeer.jpg|Wegverkeer.jpg]]" <em>(&#123;&#123;eigenwerk} bron:CBS)</em></li> <li>20 dec 2004 13:28 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:VlagRoRe.gif|VlagRoRe.gif]]" <em>(Vlag van de Romeinse Republiek (1798-1799) - van Spaanse wiki &#123;&#123;PD}})</em></li> <li>20 dec 2004 13:23 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:RoRe.jpg|RoRe.jpg]]" <em>(Romeinse Republiek (1798-1799) - vrij te gebruiken voor educatieve doeleinden - http&#58;//www.lib.utexas.edu/usage_statement.html)</em></li> <li>20 dec 2004 13:13 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:RandCurrencyR5coins.jpg|RandCurrencyR5coins.jpg]]" <em>(briefjes rand (engelse wikipedia))</em></li> <li>20 dec 2004 13:12 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Randcurrency.jpg|Randcurrency.jpg]]" <em>(rand muntjes (engelse wikipedia))</em></li> <li>20 dec 2004 12:54 [[Gebruiker:Johan Lont|Johan Lont]] heeft ge-upload: "[[:Afbeelding:NederlandseWerkloosheid.jpg|NederlandseWerkloosheid.jpg]]" <em>(Zelfgemaakte grafiek van werkloosheid in Nederland - gebaseerd op cijfers van het CBS. Ik geef het vrij voor het publieke domein)</em></li> <li>20 dec 2004 12:43 [[Gebruiker:Poppentje|Poppentje]] heeft ge-upload: "[[:Afbeelding:D100.JPG|D100.JPG]]" <em>(uit eigen verzameling)</em></li> <li>20 dec 2004 12:32 [[Gebruiker:Poppentje|Poppentje]] heeft ge-upload: "[[:Afbeelding:D3wiki.JPG|D3wiki.JPG]]" <em>(zelf gemaakt)</em></li> <li>20 dec 2004 11:52 [[Gebruiker:Poppentje|Poppentje]] heeft ge-upload: "[[:Afbeelding:85ds3.JPG|85ds3.JPG]]" <em>(zelf gemakt)</em></li> <li>20 dec 2004 11:48 [[Gebruiker:Poppentje|Poppentje]] heeft ge-upload: "[[:Afbeelding:Naamloos.JPG|Naamloos.JPG]]" <em>(zelf gemaakt)</em></li> <li>20 dec 2004 10:25 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Voortrekker_Flag.png|Voortrekker_Flag.png]]" <em>(vlag voortrekkers (engelse wikipedia))</em></li> <li>20 dec 2004 10:24 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Voortrekker_monument.jpg|Voortrekker_monument.jpg]]" <em>(monument voortrekkers (wikipedia))</em></li> <li>20 dec 2004 09:10 [[Gebruiker:Kjoe|Kjoe]] heeft ge-upload: "[[:Afbeelding:Schema_kwel.png|Schema_kwel.png]]" <em>(schema ontstaan kwel; zelf gemaakt in opdracht van provincie Noord Brabant. )</em></li> <li>19 dec 2004 23:38 [[Gebruiker:Bs|Bs]] heeft ge-upload: "[[:Afbeelding:Gedempt_kanaal.jpeg|Gedempt_kanaal.jpeg]]" <em>(Gedempt kanaal)</em></li> <li>19 dec 2004 23:35 [[Gebruiker:Bs|Bs]] heeft ge-upload: "[[:Afbeelding:Gedempt_kanaal.jpeg|Gedempt_kanaal.jpeg]]" <em>(zelf gemaakt)</em></li> <li>19 dec 2004 23:03 [[Gebruiker:Bs|Bs]] heeft ge-upload: "[[:Afbeelding:Gedempt_kanaal.jpg|Gedempt_kanaal.jpg]]" <em>(zelf gemaakt)</em></li> <li>19 dec 2004 22:37 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Willem_Albert_Scholten.jpg|Willem_Albert_Scholten.jpg]]" <em>(Zelf gemaakte foto van schilderij van Willem Albert Scholten in het Veenkoloniaal museum. Publiek Domein wegens leeftijd &#123;&#123;PD}}.)</em></li> <li>19 dec 2004 22:03 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Standbeeld_van_Anthony_Winkler_Prins.jpg|Standbeeld_van_Anthony_Winkler_Prins.jpg]]" <em>(Zelfgemaakte foto van standbeeld van &#91;&#91;Anthony Winkler Prins]] voor het &#91;&#91;Veenkoloniaal Museum]] te &#91;&#91;Veendam]] &#123;&#123;PD}})</em></li> <li>19 dec 2004 21:36 [[Gebruiker:Londenp|Londenp]] heeft ge-upload: "[[:Afbeelding:Sauna.jpg|Sauna.jpg]]" <em>(Overgenomen uit duitse Wikipedia, volgende tekst: * Beschreibung: Sauna, Quelle: aufgenommen April 2004, Fotograf : Bleiglass, Lizenzstatus: GNU FDL)</em></li> <li>19 dec 2004 21:10 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:HelvetischeR.jpg|HelvetischeR.jpg]]" <em>(Helvetische Republiek - vrij te gebruiken voor educatieve doeleinden - http&#58;//www.lib.utexas.edu/usage_statement.html)</em></li> <li>19 dec 2004 20:34 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:KaartNOLS72dpiMetRoute.png|KaartNOLS72dpiMetRoute.png]]" <em>(Kaart van de lijnen van de NOLS, onderdeel van zelf gemaakte foto van oude poster door de NOLS zelf uitgegeven en door een vriend van uploader ingescand en bewerkt voor Wikipedia. PD door ouderdom &#123;&#123;PD}})</em></li> <li>19 dec 2004 20:34 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Ligurische.jpg|Ligurische.jpg]]" <em>(Ligurische Republiek in 1803 - vrij te gebruiken voor educatieve doeleinden - http&#58;//www.lib.utexas.edu/usage_statement.html)</em></li> <li>19 dec 2004 19:40 [[Gebruiker:MarcoVD|MarcoVD]] heeft ge-upload: "[[:Afbeelding:Lyndon_B._Johnson.jpg|Lyndon_B._Johnson.jpg]]" <em>(van &#91;http&#58;//teachpol.tcnj.edu/] copyright notice: &quot;All images are believed to be in the public domain&quot;)</em></li> <li>19 dec 2004 19:37 [[Gebruiker:MarcoVD|MarcoVD]] heeft ge-upload: "[[:Afbeelding:Bloemenprotest_Vietnamoorlog.jpg|Bloemenprotest_Vietnamoorlog.jpg]]" <em>(van &#91;http&#58;//teachpol.tcnj.edu/] copyright notice: &quot;All images are believed to be in the public domain&quot;)</em></li> <li>19 dec 2004 19:34 [[Gebruiker:MarcoVD|MarcoVD]] heeft ge-upload: "[[:Afbeelding:Bombardement_op_Vietnam.jpg|Bombardement_op_Vietnam.jpg]]" <em>(van &#91;http&#58;//teachpol.tcnj.edu/] copyright notice: &quot;All images are believed to be in the public domain&quot;)</em></li> <li>19 dec 2004 19:22 [[Gebruiker:MarcoVD|MarcoVD]] heeft ge-upload: "[[:Afbeelding:Inauguratie_van_Andrew_Jackson.jpg|Inauguratie_van_Andrew_Jackson.jpg]]" <em>(van &#91;http&#58;//teachpol.tcnj.edu/] copyright notice: &quot;All images are believed to be in the public domain&quot;)</em></li> <li>19 dec 2004 19:11 [[Gebruiker:MarcoVD|MarcoVD]] heeft ge-upload: "[[:Afbeelding:Thomas_Paine.jpg|Thomas_Paine.jpg]]" <em>(van &#91;http&#58;//teachpol.tcnj.edu/] copyright notice: &quot;All images are believed to be in the public domain&quot;)</em></li> <li>19 dec 2004 19:05 [[Gebruiker:MarcoVD|MarcoVD]] heeft ge-upload: "[[:Afbeelding:Declaration_of_Independence.jpg|Declaration_of_Independence.jpg]]" <em>(van &#91;http&#58;//teachpol.tcnj.edu/] copyright notice: &quot;All images are believed to be in the public domain&quot;)</em></li> <li>19 dec 2004 19:03 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:RW31Locatie.png|RW31Locatie.png]]" <em>(Locatie RW31, eigen werk, &#123;&#123;PD}})</em></li> <li>19 dec 2004 18:53 [[Gebruiker:MarcoVD|MarcoVD]] heeft ge-upload: "[[:Afbeelding:Verkoopakte_Manhattan.jpg|Verkoopakte_Manhattan.jpg]]" <em>(van &#91;http&#58;//teachpol.tcnj.edu/] copyright notice: &quot;All images are believed to be in the public domain&quot;)</em></li> <li>19 dec 2004 17:35 [[Gebruiker:Yonthe|Yonthe]] heeft ge-upload: "[[:Afbeelding:Kit_socks.png|Kit_socks.png]]"</li> <li>19 dec 2004 17:34 [[Gebruiker:Yonthe|Yonthe]] heeft ge-upload: "[[:Afbeelding:Kit_shorts.png|Kit_shorts.png]]"</li> <li>19 dec 2004 17:34 [[Gebruiker:Yonthe|Yonthe]] heeft ge-upload: "[[:Afbeelding:Kit_right_arm.png|Kit_right_arm.png]]"</li> <li>19 dec 2004 17:34 [[Gebruiker:Yonthe|Yonthe]] heeft ge-upload: "[[:Afbeelding:Kit_left_arm.png|Kit_left_arm.png]]"</li> <li>19 dec 2004 17:34 [[Gebruiker:Yonthe|Yonthe]] heeft ge-upload: "[[:Afbeelding:Kit_body.png|Kit_body.png]]"</li> <li>19 dec 2004 16:13 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Kamtsjatka_oblast_wapen.gif|Kamtsjatka_oblast_wapen.gif]]" <em>(geraldika.ru)</em></li> <li>19 dec 2004 16:11 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Kamtsjatka_oblast_vlag.gif|Kamtsjatka_oblast_vlag.gif]]" <em>(geraldika.ru Overschrijving oude onofficiele vlag)</em></li> <li>19 dec 2004 11:54 [[Gebruiker:Yonthe|Yonthe]] heeft ge-upload: "[[:Afbeelding:Parkstadlimburg-stadion.jpg|Parkstadlimburg-stadion.jpg]]"</li> <li>19 dec 2004 11:21 [[Gebruiker:Gidonb|Gidonb]] heeft ge-upload: "[[:Afbeelding:HolonLogo.PNG|HolonLogo.PNG]]" <em>(embleem uit he.wikipedia.org)</em></li> <li>19 dec 2004 11:15 [[Gebruiker:Hasekamp|Hasekamp]] heeft ge-upload: "[[:Afbeelding:Aerator.jpg|Aerator.jpg]]" <em>(zelf gemaakt)</em></li> <li>19 dec 2004 10:57 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Toela_oblast_wapen.gif|Toela_oblast_wapen.gif]]" <em>(estse wiki: geraldika.ru)</em></li> <li>19 dec 2004 10:37 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Gay-flag-8.png|Gay-flag-8.png]]" <em>(regenboogvlag met 8 strepen)</em></li> <li>19 dec 2004 10:37 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Gay-flag-7.png|Gay-flag-7.png]]" <em>(regenboogvlag met 7 strepen)</em></li> <li>19 dec 2004 10:36 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Gay-flag-6.png|Gay-flag-6.png]]" <em>(regenboogvlag met 6 strepen)</em></li> <li>19 dec 2004 10:05 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:ServieMontenegroVlag.png|ServieMontenegroVlag.png]]" <em>(huidige vlag servië en montenegro (met goede afmetingen deze keer))</em></li> <li>19 dec 2004 10:04 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Scgflag.png|Scgflag.png]]" <em>(toekomstige vlag servië en montenegro (engelse wikipedia))</em></li> <li>19 dec 2004 09:43 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Lithuania_flag_large.png|Lithuania_flag_large.png]]" <em>(grote vlag litouwen (juiste afmetingen))</em></li> <li>19 dec 2004 09:25 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Moldova_flag_large.png|Moldova_flag_large.png]]" <em>(grote vlag moldavië (betere kwaliteit dan kleinere, van engelse wikipedia))</em></li> <li>19 dec 2004 09:09 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Saint_Patrick_saltire.png|Saint_Patrick_saltire.png]]" <em>(sint-patrick kruis (engelse wikipedia))</em></li> <li>19 dec 2004 07:14 [[Gebruiker:Zozie|Zozie]] heeft ge-upload: "[[:Afbeelding:LocatieTerApel.png|LocatieTerApel.png]]" <em>(Afgeleid van LocatieVlagtwedde.png)</em></li> <li>19 dec 2004 01:37 [[Gebruiker:Domie|Domie]] heeft ge-upload: "[[:Afbeelding:Wienneerlandsbloed.ogg|Wienneerlandsbloed.ogg]]" <em>(Melodie van Wien Neerlands Bloed; zelfgemaakt; copyright op muziek is reeds lang verlopen)</em></li> <li>19 dec 2004 00:10 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Kamtsjatka_oblast_vlag.gif|Kamtsjatka_oblast_vlag.gif]]" <em>(van &#91;http&#58;//flagspot.net/flags/ru-kam.html])</em></li> <li>18 dec 2004 23:04 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Standbeeld_Rimski-Korsakov.jpg|Standbeeld_Rimski-Korsakov.jpg]]" <em>(standbeeld Rimski-Korsakov in Sint-Petersburg. Eigen foto &#91;&#91;Gebruiker:Markv&#124; Mark Voorendt]], augustus 2002.)</em></li> <li>18 dec 2004 23:03 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Tomsk_oblast_vlag.GIF|Tomsk_oblast_vlag.GIF]]" <em>(estse wiki: geraldika.ru)</em></li> <li>18 dec 2004 23:03 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Tomsk_oblast_wapen.GIF|Tomsk_oblast_wapen.GIF]]" <em>(estse wiki: geraldika.ru)</em></li> <li>18 dec 2004 22:18 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Eusebiuskerk_Arnhem_Fruggo2004dec.jpg|Eusebiuskerk_Arnhem_Fruggo2004dec.jpg]]" <em>(Foto door Fruggo, december 2004. Zijaanzicht Eusebiuskerk Arnhem. Licentie CC-BY.)</em></li> <li>18 dec 2004 22:06 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Paddestoel_Donkerbroek_okt04.JPG|Paddestoel_Donkerbroek_okt04.JPG]]" <em>(Paddestoel in bos bij Donkerbroek (Friesland). Oktober 2004. Foto door Fruggo. Licentie CC-BY.)</em></li> <li>18 dec 2004 22:01 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Paddestoelen_Donkerbroek_31okt04.jpg|Paddestoelen_Donkerbroek_31okt04.jpg]]" <em>(Paddestoelen in bos bij Donkerbroek (Friesland). Oktober 2004. Foto gemaakt door [[Gebruiker:Tbc|Tbc]]. Licentie CC-BY.)</em></li> <li>18 dec 2004 21:22 [[Gebruiker:Nikio|Nikio]] heeft ge-upload: "[[:Afbeelding:LocWinsum.png|LocWinsum.png]]" <em>(Kaart met de locatie van Winsum, gemaakt uit sjabloon van Wikipedia-gebruiker Mtcv)</em></li> <li>18 dec 2004 21:15 [[Gebruiker:Xaphire|Xaphire]] heeft ge-upload: "[[:Afbeelding:Metselaar.gif|Metselaar.gif]]" <em>(&#91;&#91;Metselaar]], afbeelding uit &#91;&#91;Jan Luyken]]: Afbeelding der menschelyke bezigheden, eind zeventiende eeuw dus vrij van auteursrechten. Geupload door &#91;&#91;Gebruiker:Xaphire&#124;Xaphire]].)</em></li> <li>18 dec 2004 21:09 [[Gebruiker:Quistnix|Quistnix]] heeft ge-upload: "[[:Afbeelding:Goteburg_aangepast.JPG|Goteburg_aangepast.JPG]]" <em>(Goteborg, foto van &#91;&#91;Gebruiker:Michiel1972]], bewerkt &#123;&#123;GFDL}})</em></li> <li>18 dec 2004 20:43 [[Gebruiker:Nikio|Nikio]] heeft ge-upload: "[[:Afbeelding:LocatieWarstiens.png|LocatieWarstiens.png]]" <em>(Kaart met de locatie van Warstiens, gemaakt uit sjabloon van Wikipedia-gebruiker Mtcv)</em></li> <li>18 dec 2004 20:42 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Tsjita_oblast_wapen.GIF|Tsjita_oblast_wapen.GIF]]" <em>(estse wiki: geraldika.ru)</em></li> <li>18 dec 2004 20:42 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Tsjita_oblast_vlag.GIF|Tsjita_oblast_vlag.GIF]]" <em>(estse wiki: geraldika.ru)</em></li> <li>18 dec 2004 20:22 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:SaksH.jpg|SaksH.jpg]]" <em>(Ernestijnse hertogdommen in 1786 - vrij te gebruiken voor educatieve doeleinden - http&#58;//www.lib.utexas.edu/usage_statement.html)</em></li> <li>18 dec 2004 20:18 [[Gebruiker:Nikio|Nikio]] heeft ge-upload: "[[:Afbeelding:LocatieFriens.png|LocatieFriens.png]]" <em>(Kaart met de locatie van Friens, gemaakt uit sjabloon van Wikipedia-gebruiker Mtcv)</em></li> <li>18 dec 2004 20:11 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Tver_oblast_wapen.gif|Tver_oblast_wapen.gif]]" <em>(estse wiki: geraldika.ru)</em></li> <li>18 dec 2004 20:10 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Tver_oblast_vlag.gif|Tver_oblast_vlag.gif]]" <em>(estse wiki: geraldika.ru)</em></li> <li>18 dec 2004 19:13 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Vlag_van_keizer.gif|Vlag_van_keizer.gif]]" <em>(:site: http&#58;//www.flaggenlexikon.de/index2-e.htm)</em></li> <li>18 dec 2004 19:12 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Citrus_maxima.jpg|Citrus_maxima.jpg]]" <em>(afbeelding afkomstig van de Duitstalige WIKIPEDIA)</em></li> <li>18 dec 2004 18:40 [[Gebruiker:Yonthe|Yonthe]] heeft ge-upload: "[[:Afbeelding:Logo_roda.jpg|Logo_roda.jpg]]"</li> <li>18 dec 2004 18:40 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:RuslandOrjol.png|RuslandOrjol.png]]" <em>(en wiki &#123;&#123;GDFL}})</em></li> <li>18 dec 2004 18:39 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Orjol_oblast_wapen.gif|Orjol_oblast_wapen.gif]]" <em>(estse wiki: geraldika.ru)</em></li> <li>18 dec 2004 18:38 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Orjol_oblast_vlag.gif|Orjol_oblast_vlag.gif]]" <em>(estse wiki: geraldika.ru)</em></li> <li>18 dec 2004 18:24 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Ernestijnse.png|Ernestijnse.png]]" <em>(Ernestijnse hertogdommen in 1910 - oorspronkelijk gemaakt door &#91;&#91;de:Benutzer:Störfix]], aangepast door &#91;&#91;Gebruiker:Känsterle]] GNU-DFL)</em></li> <li>18 dec 2004 18:10 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Vladimir_oblast_wapen.gif|Vladimir_oblast_wapen.gif]]" <em>(estse wiki: geraldika.ru)</em></li> <li>18 dec 2004 18:09 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Vladimir_oblast_vlag.gif|Vladimir_oblast_vlag.gif]]" <em>(estse wiki: geraldika.ru)</em></li> <li>18 dec 2004 17:33 [[Gebruiker:Hjvannes|Hjvannes]] heeft ge-upload: "[[:Afbeelding:Hangbuikzwijn.jpg|Hangbuikzwijn.jpg]]" <em>(Komt van Duitse wikipedia, en daar staat &quot;Dieses Bild wurde von seinem Urheber zur uneingeschränkten Nutzung freigegeben und ist damit gemeinfrei („public domain“).&quot;)</em></li> <li>18 dec 2004 16:41 [[Gebruiker:Frerinck|Frerinck]] heeft ge-upload: "[[:Afbeelding:Viola_d'amore.JPG|Viola_d'amore.JPG]]" <em>(Viola d&#39;amore )</em></li> <li>18 dec 2004 15:27 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:StephanieB.jpg|StephanieB.jpg]]" <em>(Stéphanie de Beauharnais &#123;&#123;PD}})</em></li> <li>18 dec 2004 13:59 [[Gebruiker:Nikio|Nikio]] heeft ge-upload: "[[:Afbeelding:LocatieHeidenskip.png|LocatieHeidenskip.png]]" <em>(Kaart met de locatie van It Heidenskip (Heidenschap), gemaakt uit sjabloon van Wikipedia-gebruiker Mtcv)</em></li> <li>18 dec 2004 13:03 [[Gebruiker:Yonthe|Yonthe]] heeft ge-upload: "[[:Afbeelding:Bernardinus_College.jpg|Bernardinus_College.jpg]]" <em>(foto uit 1926, bron: http&#58;//bernardinuscollege.nl/index2.htm)</em></li> <li>18 dec 2004 12:50 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Philippe3-1.jpg|Philippe3-1.jpg]]" <em>(filips III van Frankrijk (engelse wikipedia))</em></li> <li>18 dec 2004 12:36 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Acanthocystis_turfacea.jpg|Acanthocystis_turfacea.jpg]]" <em>(Afbeelding afkomstig van Duitstalige Wikipedia Eukaryoot: Acathocystis turfacea)</em></li> <li>18 dec 2004 12:20 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Nordmann-spar_naalden.jpg|Nordmann-spar_naalden.jpg]]" <em>(zedlfgemaakte foto van naalden van Nordmann-spar)</em></li> <li>18 dec 2004 12:14 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Kerstbal.jpg|Kerstbal.jpg]]" <em>(zelfgemaakte foto van kerstbal in kerstboom)</em></li> <li>18 dec 2004 12:00 [[Gebruiker:Yonthe|Yonthe]] heeft ge-upload: "[[:Afbeelding:367843.jpg|367843.jpg]]" <em>(http&#58;//beeldbank.nationaalarchief.nl Voor persoonlijk, niet-commercieel gebruik is het toegestaan prints te maken van de afbeeldingen in lage resolutie op deze site.)</em></li> <li>18 dec 2004 10:11 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Antarctica_Map.png|Antarctica_Map.png]]" <em>(Eerdere versie hersteld)</em></li> <li>18 dec 2004 10:10 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Antarctica_Map.png|Antarctica_Map.png]]" <em>(Eerdere versie hersteld)</em></li> <li>18 dec 2004 09:55 [[Gebruiker:Domie|Domie]] heeft ge-upload: "[[:Afbeelding:Charlesedwardstuart.jpg|Charlesedwardstuart.jpg]]" <em>(Van Engelse Wiki, Public Domain)</em></li> <li>18 dec 2004 09:39 [[Gebruiker:Zozie|Zozie]] heeft ge-upload: "[[:Afbeelding:Hilbert.JPG|Hilbert.JPG]]" <em>(Publiek domein.(zie &#91;&#91;en:David Hilbert]]))</em></li> <li>18 dec 2004 08:25 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kascu.jpg|Kascu.jpg]]" <em>(frits 8)</em></li> <li>18 dec 2004 08:25 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_hajdina.png|Sl_gemeente_hajdina.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>18 dec 2004 08:24 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_horjul.png|Sl_gemeente_horjul.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>18 dec 2004 08:24 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_grad.png|Sl_gemeente_grad.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>18 dec 2004 08:06 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_radenci.png|Sl_gemeente_radenci.png]]" <em>(gemaakt door Plp sl.wikipedia; auteursrechtenvrij)</em></li> <li>18 dec 2004 00:44 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Smolensk_oblast_vlag.GIF|Smolensk_oblast_vlag.GIF]]" <em>(estse wiki: geraldika.ru)</em></li> <li>18 dec 2004 00:44 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Smolensk_oblast_wapen.gif|Smolensk_oblast_wapen.gif]]" <em>(estse wiki geraldika.ru)</em></li> <li>17 dec 2004 23:50 [[Gebruiker:JePe|JePe]] heeft ge-upload: "[[:Afbeelding:Gefahrentafel_33_1203.png|Gefahrentafel_33_1203.png]]" <em>(Van Duitse Wikipedia &#39;&#39;Dieses Bild wurde von &#91;&#91;de:Benutzer:LosHawlos&#124;Martin Hawlisch]] erstellt und unter der &#91;&#91;GFDL]] veröffentlicht.&#39;&#39;)</em></li> <li>17 dec 2004 23:42 [[Gebruiker:JePe|JePe]] heeft ge-upload: "[[:Afbeelding:Gefahrenzettel_3.png|Gefahrenzettel_3.png]]" <em>(Van Duitse Wikipedia &#39;&#39;Dieses Bild wurde von &#91;&#91;de:Benutzer:LosHawlos&#124;Martin Hawlisch]] erstellt und unter der &#91;&#91;GFDL]] veröffentlicht.&#39;&#39;)</em></li> <li>17 dec 2004 23:25 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Wijkertunnel.jpeg|Wijkertunnel.jpeg]]" <em>(van www.beeldbankvenw.nl: Het auteursrecht van de foto&#39;s uit het beeldarchief blijft in handen van Rijkswaterstaat. Publicatie, mét bronvermelding, is echter vrij. )</em></li> <li>17 dec 2004 23:15 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Queen_Mary_2_02_KMJ.jpg|Queen_Mary_2_02_KMJ.jpg]]" <em>(van Duitse wiki, (foto: KMJ) (GNU-FDL, selbst fotografiert))</em></li> <li>17 dec 2004 23:09 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Kerstkaart.jpg|Kerstkaart.jpg]]" <em>(Kerstkaart voorbeeld. Een bewerkte foto van commons: Image:Snow_in_Holland_2.jpg, eigen foto van &#91;&#91;Gebruiker:Quistnix]] on GFDL. &#123;&#123;GFDL}})</em></li> <li>17 dec 2004 22:45 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Karte_Inzell_in_Deutschland.png|Karte_Inzell_in_Deutschland.png]]" <em>(afkomstig van Duitse wiki)</em></li> <li>17 dec 2004 20:54 [[Gebruiker:IJzeren Jan|IJzeren Jan]] heeft ge-upload: "[[:Afbeelding:Volodymyr_Lytvyn.jpg|Volodymyr_Lytvyn.jpg]]" <em>(Uit de Engelse wiki. GNU-FDL)</em></li> <li>17 dec 2004 20:39 [[Gebruiker:Walter|Walter]] heeft ge-upload: "[[:Afbeelding:Test_user_walter.png|Test_user_walter.png]]" <em>(upload voor test)</em></li> <li>17 dec 2004 19:46 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Rusland_eco_reg.jpg|Rusland_eco_reg.jpg]]" <em>(nummers 4 en 5 omgeruild)</em></li> <li>17 dec 2004 19:40 [[Gebruiker:Xaphire|Xaphire]] heeft ge-upload: "[[:Afbeelding:Overlijdensakte.gif|Overlijdensakte.gif]]" <em>(&#91;&#91;Overlijdensakte]] uit 1868, uit de burgerlijke stand dus vrij van auteursrechten. Aangeleverd door &#91;&#91;Gebruiker:Xaphire&#124;Xaphire]].)</em></li> <li>17 dec 2004 17:03 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Sverdlovsk_oblast_wapen.gif|Sverdlovsk_oblast_wapen.gif]]" <em>(van &#91;http&#58;//flagspot.net/flags/ru-sve.html])</em></li> <li>17 dec 2004 16:54 [[Gebruiker:Jupiler|Jupiler]] heeft ge-upload: "[[:Afbeelding:Mariearena.jpg|Mariearena.jpg]]" <em>(Marie Arena; bron: cgsp-ministeres.be)</em></li> <li>17 dec 2004 16:54 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Sverdlovsk_oblast_vlag.gif|Sverdlovsk_oblast_vlag.gif]]" <em>(van &#91;http&#58;//flagspot.net/flags/ru-sve.html])</em></li> <li>17 dec 2004 14:47 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:RW32Locatie.png|RW32Locatie.png]]" <em>(Locatie RW32, eigen werk, &#123;&#123;PD}})</em></li> <li>17 dec 2004 13:13 [[Gebruiker:Robotje|Robotje]] heeft ge-upload: "[[:Afbeelding:Kobe_tower_night_shot.jpg|Kobe_tower_night_shot.jpg]]" <em>(Van Engelse WP (free of copyright) &#91;&#91;:en:imaga:Kobe_tower_night_shot.jpg]])</em></li> <li>17 dec 2004 13:11 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Root_selaginelle_dwarsdoorsnede.jpg|Root_selaginelle_dwarsdoorsnede.jpg]]" <em>(Afbeelding van Duitstalige wikipedia: Querschnitt durch eine Wurzel)</em></li> <li>17 dec 2004 13:09 [[Gebruiker:Hannes Karnoefel|Hannes Karnoefel]] heeft ge-upload: "[[:Afbeelding:Melkweg.jpg|Melkweg.jpg]]" <em>(van engelse wiki)</em></li> <li>17 dec 2004 12:43 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Wortel_dwarsdoorsnede.jpg|Wortel_dwarsdoorsnede.jpg]]" <em>(zelfgemaakte foto van dwarsdoorsnede wortel Daucus carota &#39;Amsterdamse bak&#39;)</em></li> <li>17 dec 2004 11:45 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Loggerhead_Caretta_caretta_bewerkt.JPG|Loggerhead_Caretta_caretta_bewerkt.JPG]]" <em>(Bewerkte (gesneden) foto van http.images.fws.gov: Publiek domein)</em></li> <li>17 dec 2004 11:36 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Sterschildpad_Geochelone.jpg|Sterschildpad_Geochelone.jpg]]" <em>(Uit Gimp.com: Publiek domein)</em></li> <li>17 dec 2004 11:26 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Schildpad_Matamata.jpg|Schildpad_Matamata.jpg]]" <em>(Uit Diotse Wiki, zie http&#58;//de.wikipedia.org/wiki/Bild:Fransenschildkr%C3%B6te_Matamata.jpg)</em></li> <li>17 dec 2004 11:19 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Jackson_kameleon.jpg|Jackson_kameleon.jpg]]" <em>(Uit Duitse Wiki, zie http&#58;//de.wikipedia.org/wiki/Bild:Crw_1569.jpg)</em></li> <li>17 dec 2004 11:17 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Chamealeon_dilepis_petersi.jpg|Chamealeon_dilepis_petersi.jpg]]" <em>(Uit Duitse Wiki, zie http&#58;//de.wikipedia.org/wiki/Bild:Chamealeon_dilepis_petersi.jpg)</em></li> <li>17 dec 2004 11:14 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Vologda_oblast_wapen.GIF|Vologda_oblast_wapen.GIF]]" <em>(estse wiki: geraldika.ru)</em></li> <li>17 dec 2004 11:12 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Vologda_oblast_vlag.GIF|Vologda_oblast_vlag.GIF]]" <em>(estse wiki: geraldika.ru)</em></li> <li>17 dec 2004 11:09 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:C_Calyptratus_male.jpg|C_Calyptratus_male.jpg]]" <em>(Uit Wiki Engels, zie http&#58;//en.wikipedia.org/wiki/Image:C_Calyptratus_male.jpg)</em></li> <li>17 dec 2004 11:03 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Chameleo_parsonii.jpg|Chameleo_parsonii.jpg]]" <em>(GNU; uit Franse Wiki, zie http&#58;//fr.wikipedia.org/wiki/Image:Chameleo_parsonii.jpeg)</em></li> <li>17 dec 2004 10:03 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Weeuwenplanten.jpg|Weeuwenplanten.jpg]]" <em>(zelfgemaakte foto van weeuwenplanten bij bloemkool en spitskool; half december)</em></li> <li>17 dec 2004 07:44 [[Gebruiker:WB|WB]] heeft ge-upload: "[[:Afbeelding:Hillegersberg.gif|Hillegersberg.gif]]" <em>(toestemming voor gebruik van deze Engelstalige website: jeff.sedley.org/ archives/cat_family.html)</em></li> <li>17 dec 2004 06:43 [[Gebruiker:Bries|Bries]] heeft ge-upload: "[[:Afbeelding:Every_Namibian_Nujoma.jpg|Every_Namibian_Nujoma.jpg]]" <em>(President Sam Nujoma op een billboard met boodschap over aids)</em></li> <li>17 dec 2004 02:26 [[Gebruiker:Robotje|Robotje]] heeft ge-upload: "[[:Afbeelding:Schatzkammer_Wien_Collane_Orden_vom_Goldenen_Vlies.jpg|Schatzkammer_Wien_Collane_Orden_vom_Goldenen_Vlies.jpg]]" <em>(Van Duitse WP - GFDL - &#91;&#91;:de:Bild:Schatzkammer_Wien_Collane_Orden_vom_Goldenen_Vlies.jpg]])</em></li> <li>17 dec 2004 01:58 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Westerscheldetunnel-2.jpg|Westerscheldetunnel-2.jpg]]" <em>(Westerscheldetunnel. Eigen foto. &#123;&#123;PD}})</em></li> <li>17 dec 2004 01:57 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Westerscheldetunnel-1.jpg|Westerscheldetunnel-1.jpg]]" <em>(Westerscheldetunnel. Eigen foto. &#123;&#123;PD}})</em></li> <li>16 dec 2004 21:44 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Bewerkt_ameiva_hagedis_kleur_.jpg|Bewerkt_ameiva_hagedis_kleur_.jpg]]" <em>(Uit Wiki Engels, zie http&#58;//en.wikipedia.org/wiki/Image:Unknown_lizard_belize.jpg)</em></li> <li>16 dec 2004 21:35 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Een_jonge_basilisk_hagedis_basiliscus.jpg|Een_jonge_basilisk_hagedis_basiliscus.jpg]]" <em>(UIt Wiki Engels zie http&#58;//en.wikipedia.org/wiki/Image:Unknow_lizard2_belize.jpg)</em></li> <li>16 dec 2004 21:32 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Boa_hortulanus_tuinboa.gif|Boa_hortulanus_tuinboa.gif]]" <em>(Uit Wiki Engels zie http&#58;//en.wikipedia.org/wiki/Image:Corallushortulanus.GIF)</em></li> <li>16 dec 2004 21:14 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Red-bellied_Turtle_Chrysemys_picta.jpg|Red-bellied_Turtle_Chrysemys_picta.jpg]]" <em>(Van Images.gov : Publiek domein.)</em></li> <li>16 dec 2004 21:09 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Ratelslang_diamant_Crotalus_adamanteus_.jpg|Ratelslang_diamant_Crotalus_adamanteus_.jpg]]" <em>(Van Images.gov: Publiek Domein.)</em></li> <li>16 dec 2004 21:04 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Cottonmouth_slang_agkistrodon_giftig.jpg|Cottonmouth_slang_agkistrodon_giftig.jpg]]" <em>(Van Images.gov: publiek domein.)</em></li> <li>16 dec 2004 20:45 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Voronezj_oblast_wapen.gif|Voronezj_oblast_wapen.gif]]" <em>(estse wiki: geraldika.ru)</em></li> <li>16 dec 2004 20:45 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Voronezj_oblast_vlag.gif|Voronezj_oblast_vlag.gif]]" <em>(estse wiki: geraldika.ru)</em></li> <li>16 dec 2004 19:46 [[Gebruiker:Ferrero|Ferrero]] heeft ge-upload: "[[:Afbeelding:Orinocodolfijn.jpg|Orinocodolfijn.jpg]]" <em>(Orinoco dolfijn; Openbare site : http&#58;//www.wnf.nl/dierenbibliotheek/)</em></li> <li>16 dec 2004 18:44 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:DSC00013.jpg|DSC00013.jpg]]" <em>(eigen afbeelding)</em></li> <li>16 dec 2004 18:41 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:DSC00001.jpg|DSC00001.jpg]]" <em>(Eigen afbeelding)</em></li> <li>16 dec 2004 17:56 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Kahn.gif|Kahn.gif]]" <em>(van Vlaggen lexicon.de)</em></li> <li>16 dec 2004 17:54 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:China_khan.gif|China_khan.gif]]" <em>(Van &quot;Een historische atlas van China&quot; (geschreven door A. Herrmann in 1966))</em></li> <li>16 dec 2004 17:42 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:China_1290.gif|China_1290.gif]]" <em>(Van &quot;Een historische atlas van China&quot; (geschreven door A. Herrmann in 1966))</em></li> <li>16 dec 2004 17:19 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Ming.gif|Ming.gif]]" <em>(Van &quot;Een historische atlas van China&quot; (geschreven door A. Herrmann in 1966))</em></li> <li>16 dec 2004 16:59 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:AlexandreB.jpg|AlexandreB.jpg]]" <em>(Alexandre de Beauharnais &#123;&#123;PD}})</em></li> <li>16 dec 2004 12:51 [[Gebruiker:Jürgen|Jürgen]] heeft ge-upload: "[[:Afbeelding:Leefgebied_noordelijke_zeebeer.JPG|Leefgebied_noordelijke_zeebeer.JPG]]" <em>(Bewerking afbeelding: afbeelding_(kaart).JPG)</em></li> <li>16 dec 2004 12:38 [[Gebruiker:Robotje|Robotje]] heeft ge-upload: "[[:Afbeelding:Akihito_and_Throne.jpg|Akihito_and_Throne.jpg]]" <em>(Van de Engelse Wikipedia: &#91;&#91;:en:image:Akihito and Throne.jpg]])</em></li> <li>16 dec 2004 12:02 [[Gebruiker:Thany|Thany]] heeft ge-upload: "[[:Afbeelding:Beschuit_met_muisjes_.jpg|Beschuit_met_muisjes_.jpg]]" <em>(Beschuit met muisjes)</em></li> <li>16 dec 2004 11:50 [[Gebruiker:Barbarossa|Barbarossa]] heeft ge-upload: "[[:Afbeelding:Nucleotides_-_degenerated_code.png|Nucleotides_-_degenerated_code.png]]" <em>(De nucleotidencode)</em></li> <li>16 dec 2004 11:42 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:FSchlegel.jpg|FSchlegel.jpg]]" <em>(F. von Schlegel &#123;&#123;PD}} van en:)</em></li> <li>16 dec 2004 06:39 [[Gebruiker:Robotje|Robotje]] heeft ge-upload: "[[:Afbeelding:Doraemon-plush8.jpg|Doraemon-plush8.jpg]]" <em>(overgenomen van Duitse Wikipedia: &#39;Doraemon-plush8.jpg&#39;)</em></li> <li>16 dec 2004 00:29 [[Gebruiker:Cicero|Cicero]] heeft ge-upload: "[[:Afbeelding:Huet1.jpg|Huet1.jpg]]" <em>(Conrad Busken Huet, van het project Laurens Janszoon Coster, http&#58;//cf.hum.uva.nl/dsp/ljc/index.html, &#123;&#123;PD}})</em></li> <li>15 dec 2004 22:47 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Koersk_oblast_wapen.gif|Koersk_oblast_wapen.gif]]" <em>(estse wiki: geraldika.ru)</em></li> <li>15 dec 2004 22:44 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Koersk_oblast_vlag.gif|Koersk_oblast_vlag.gif]]" <em>(van estse wiki: geraldika.ru)</em></li> <li>15 dec 2004 22:26 [[Gebruiker:Xaphire|Xaphire]] heeft ge-upload: "[[:Afbeelding:Robert_Dudley.jpg|Robert_Dudley.jpg]]" <em>(Portret van &#91;&#91;Robert Dudley, 1e graaf van Leicester&#124;Robert Dudley]]. Uit &#91;&#91;Hugo de Groot&#124;Hugo de Groots]] &quot;Nederlandtsche Jaerboeken en Historien&quot; uit 1681, dus inmiddels vrij van auteursrechten. Geupload door &#91;&#91;Gebruiker:Xaphire&#124;Xaphire]])</em></li> <li>15 dec 2004 22:22 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Slemphout2.jpg|Slemphout2.jpg]]" <em>(Van de:)</em></li> <li>15 dec 2004 22:08 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Kaart_Italie_Catanzaro.png|Kaart_Italie_Catanzaro.png]]" <em>(Oorspronkelijk uit CIA Factbook; vertaald in Nederlands door Danielm; omgezet in PNG door BenTels, enkel plaatsnaam met rood gemarkeerd door mij; Public Domain)</em></li> <li>15 dec 2004 21:50 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Rusland_eco_reg.jpg|Rusland_eco_reg.jpg]]" <em>(van en wiki: herbewerkt &#123;&#123;GDFL}})</em></li> <li>15 dec 2004 20:38 [[Gebruiker:Xaphire|Xaphire]] heeft ge-upload: "[[:Afbeelding:Twickel.jpg|Twickel.jpg]]" <em>(Kasteel &#91;&#91;Twickel]] bij &#91;&#91;Delden]]. Foto &#91;&#91;Gebruiker:Xaphire&#124;Xaphire]].)</em></li> <li>15 dec 2004 20:32 [[Gebruiker:Xaphire|Xaphire]] heeft ge-upload: "[[:Afbeelding:Oostendorperwatermolen.jpg|Oostendorperwatermolen.jpg]]" <em>(Oostendorpermolen bij &#91;&#91;Haaksbergen]]. Foto &#91;&#91;Gebruiker:Xaphire&#124;Xaphire]])</em></li> <li>15 dec 2004 20:27 [[Gebruiker:Xaphire|Xaphire]] heeft ge-upload: "[[:Afbeelding:Blauwereiger.jpg|Blauwereiger.jpg]]" <em>(Foto van een &#91;&#91;blauwe reiger]] bij een vijver in &#91;&#91;Artis]]. Foto &#91;&#91;Gebruiker:Xaphire&#124;Xaphire]])</em></li> <li>15 dec 2004 20:24 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Dendroaspis_mamba_slang.jpg|Dendroaspis_mamba_slang.jpg]]" <em>(Van Wiki Engels, zie (http&#58;//en.wikipedia.org/wiki/Image:Green%2C_yellow_snake.jpg))</em></li> <li>15 dec 2004 19:08 [[Gebruiker:IJzeren Jan|IJzeren Jan]] heeft ge-upload: "[[:Afbeelding:Syldavië_vlag.png|Syldavië_vlag.png]]" <em>(Uit de Engelse wiki)</em></li> <li>15 dec 2004 15:37 [[Gebruiker:Hasekamp|Hasekamp]] heeft ge-upload: "[[:Afbeelding:Witwanggibbon_V.jpg|Witwanggibbon_V.jpg]]" <em>(Zelf gemaakt)</em></li> <li>15 dec 2004 15:36 [[Gebruiker:Hasekamp|Hasekamp]] heeft ge-upload: "[[:Afbeelding:Witwanggibbon_M.jpg|Witwanggibbon_M.jpg]]" <em>(Zelf gemaakt)</em></li> <li>15 dec 2004 13:39 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Portisk.jpg|Portisk.jpg]]" <em>(toestemming Gerard Hund)</em></li> <li>15 dec 2004 13:00 [[Gebruiker:Xaphire|Xaphire]] heeft ge-upload: "[[:Afbeelding:Whiskyvaten.jpg|Whiskyvaten.jpg]]" <em>(Whiskyvaten bij Glenmorangie. Foto &#91;&#91;Gebruiker:Xaphire&#124;Xaphire]].)</em></li> <li>15 dec 2004 12:57 [[Gebruiker:Xaphire|Xaphire]] heeft ge-upload: "[[:Afbeelding:Glenmorangie.jpg|Glenmorangie.jpg]]" <em>(Distilleerketels bij Glen Morangie. Foto &#91;&#91;Gebruiker:Xaphire&#124;Xaphire].)</em></li> <li>15 dec 2004 12:37 [[Gebruiker:Xaphire|Xaphire]] heeft ge-upload: "[[:Afbeelding:Delden.jpg|Delden.jpg]]" <em>(Kaart van Delden door &#91;&#91;Jacobus van Deventer]] uit circa 1565. )</em></li> <li>15 dec 2004 12:00 [[Gebruiker:Xaphire|Xaphire]] heeft ge-upload: "[[:Afbeelding:Jarrow.jpg|Jarrow.jpg]]" <em>(Ruïne van het klooster te Jarrow, met de nog bestaande kerk op de achtergrond. Foto &#91;&#91;Gebruiker:Xaphire&#124;Xaphire]])</em></li> <li>15 dec 2004 11:53 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Zuckerrohr.jpg|Zuckerrohr.jpg]]" <em>(Afbeelding van Duitstalige Wikipedia lemma Zuckerrohr Lizenzstatus: GNU-FDL ; Bildquelle: Privatfoto Esskay)</em></li> <li>15 dec 2004 11:43 [[Gebruiker:Xaphire|Xaphire]] heeft ge-upload: "[[:Afbeelding:Aken_dom.jpg|Aken_dom.jpg]]" <em>(Interieur van de Dom te Aken, met reliekschrijn van Karel de Grote. Foto Xaphire.)</em></li> <li>15 dec 2004 11:37 [[Gebruiker:Xaphire|Xaphire]] heeft ge-upload: "[[:Afbeelding:Aalten_kerk.jpg|Aalten_kerk.jpg]]" <em>(Sint Helenakerk te Aalten, foto Xaphire)</em></li> <li>15 dec 2004 11:27 [[Gebruiker:Xaphire|Xaphire]] heeft ge-upload: "[[:Afbeelding:Denekamp_kerk.jpg|Denekamp_kerk.jpg]]" <em>(Sint Nicolaaskerk in Denekamp, foto Xaphire)</em></li> <li>15 dec 2004 10:11 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kiriakov.jpg|Kiriakov.jpg]]" <em>(fiat convekta)</em></li> <li>15 dec 2004 08:41 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Mdeswaen.jpg|Mdeswaen.jpg]]" <em>(publiek domein)</em></li> <li>15 dec 2004 08:31 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Mariapetyt.jpg|Mariapetyt.jpg]]" <em>(publiek domein afbeelding (ouderdom))</em></li> <li>15 dec 2004 02:16 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_trbovlje.png|Sl_gemeente_trbovlje.png]]" <em>(gemaakt door Plp sl:wikipeida; auteursrechtenvrij)</em></li> <li>15 dec 2004 02:13 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_trnovska_vas.png|Sl_gemeente_trnovska_vas.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>15 dec 2004 02:11 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_polzela.png|Sl_gemeente_polzela.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>15 dec 2004 02:09 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_podcetrtek.png|Sl_gemeente_podcetrtek.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>15 dec 2004 02:03 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_cerklje.png|Sl_gemeente_cerklje.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>15 dec 2004 02:00 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_kobarid.png|Sl_gemeente_kobarid.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>15 dec 2004 01:56 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_sveti_andraz.png|Sl_gemeente_sveti_andraz.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>15 dec 2004 01:55 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_lenart.png|Sl_gemeente_lenart.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>15 dec 2004 01:55 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_lendava.png|Sl_gemeente_lendava.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>15 dec 2004 01:47 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_smarje_jelsah.png|Sl_gemeente_smarje_jelsah.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>15 dec 2004 01:19 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_verzej.png|Sl_gemeente_verzej.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>15 dec 2004 01:18 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_trzin.png|Sl_gemeente_trzin.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>15 dec 2004 01:18 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_sempeter.png|Sl_gemeente_sempeter.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>15 dec 2004 01:17 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_ribnica_na_pohorju.png|Sl_gemeente_ribnica_na_pohorju.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>15 dec 2004 01:17 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_lasko.png|Sl_gemeente_lasko.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>15 dec 2004 01:16 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_ivancna_gorica.png|Sl_gemeente_ivancna_gorica.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>15 dec 2004 01:15 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_ilirska_bistrica.png|Sl_gemeente_ilirska_bistrica.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>15 dec 2004 01:15 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_braslovce.png|Sl_gemeente_braslovce.png]]" <em>(gemaakt door Plp sl:wikipedia; auteursrechtenvrij)</em></li> <li>14 dec 2004 23:24 [[Gebruiker:TimT|TimT]] heeft ge-upload: "[[:Afbeelding:Ednijpels.jpg|Ednijpels.jpg]]" <em>(Deze foto is van www.parlement.com)</em></li> <li>14 dec 2004 22:40 [[Gebruiker:Xaphire|Xaphire]] heeft ge-upload: "[[:Afbeelding:Bredevoort_kaart.gif|Bredevoort_kaart.gif]]" <em>(Belegering van Bredevoort in 1597, uit zeventiende eeuws boek dus vrij van auteursrecht.)</em></li> <li>14 dec 2004 22:31 [[Gebruiker:Xaphire|Xaphire]] heeft ge-upload: "[[:Afbeelding:Maurits.jpg|Maurits.jpg]]" <em>(Portret van Maurits van Oranje, uit: Hugo de Groots &quot;Nederlandtsche Jaerboeken en Historien&quot; uit 1681, dus inmiddels vrij van auteursrechten.)</em></li> <li>14 dec 2004 20:55 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:WzuW.jpg|WzuW.jpg]]" <em>(Wilhelm zu Wied - van de: &#123;&#123;PD}})</em></li> <li>14 dec 2004 20:47 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Kaart_Italie_Potenza.png|Kaart_Italie_Potenza.png]]" <em>(Oorspronkelijk uit CIA Factbook; vertaald in Nederlands door Danielm; omgezet in PNG door BenTels, enkel plaatsnaam met rood gemarkeerd door mij; Public Domain)</em></li> <li>14 dec 2004 19:49 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:RW57Locatie.png|RW57Locatie.png]]" <em>(Locatie RW57, eigen werk, &#123;&#123;PD}})</em></li> <li>14 dec 2004 19:40 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Carte_France_Département_12.png|Carte_France_Département_12.png]]" <em>(van franse wikipedia)</em></li> <li>14 dec 2004 19:19 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Janbart.jpg|Janbart.jpg]]" <em>(jan bart - eigen foto)</em></li> <li>14 dec 2004 18:46 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Belfortduinkerke.jpg|Belfortduinkerke.jpg]]" <em>(belfort van Duinkerke - eigen foto)</em></li> <li>14 dec 2004 18:38 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Stadhuisduinkerke.jpg|Stadhuisduinkerke.jpg]]" <em>(stadhuis Duinkerke - eigen foto)</em></li> <li>14 dec 2004 18:06 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Hondschoote.jpg|Hondschoote.jpg]]" <em>(Hondschoote - eigen foto)</em></li> <li>14 dec 2004 16:59 [[Gebruiker:Robk|Robk]] heeft ge-upload: "[[:Afbeelding:Juan_de_Nova.PNG|Juan_de_Nova.PNG]]" <em>(Kaart van Juan de Nova. Van World Factbook CIA.)</em></li> <li>14 dec 2004 14:09 [[Gebruiker:HinaT|HinaT]] heeft ge-upload: "[[:Afbeelding:Homo_rudolfensis_img1.jpg|Homo_rudolfensis_img1.jpg]]" <em>(Homo rudolfensis volgens &quot;walking with cavemen&quot; van de BBC.)</em></li> <li>14 dec 2004 11:36 [[Gebruiker:MarcoVD|MarcoVD]] heeft ge-upload: "[[:Afbeelding:HumphreyBogart.jpg|HumphreyBogart.jpg]]" <em>(Van duitse wiki. Tekst aldaar: &quot;Humphrey Bogart by Yousuf Karsh / National Archives of Canada/PA-212506/Copyright: Expired&quot;)</em></li> <li>14 dec 2004 10:09 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Norfolk_COA.gif|Norfolk_COA.gif]]" <em>(en wiki &#123;&#123;PD}})</em></li> <li>14 dec 2004 10:06 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Norfolk_eiland_vlag.png|Norfolk_eiland_vlag.png]]" <em>(en wiki CIA herbewerkt)</em></li> <li>14 dec 2004 10:06 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Norfolk_COA.gif|Norfolk_COA.gif]]" <em>(en wiki &#123;&#123;PD}})</em></li> <li>14 dec 2004 10:05 [[Gebruiker:Hasekamp|Hasekamp]] heeft ge-upload: "[[:Afbeelding:Withandgibbon.jpg|Withandgibbon.jpg]]" <em>(Zelf gemaakt)</em></li> <li>14 dec 2004 10:02 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:241302.jpg|241302.jpg]]" <em>(toestemming nationaal archief)</em></li> <li>14 dec 2004 09:59 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kostk.jpg|Kostk.jpg]]" <em>(toestemming Kosteniuk)</em></li> <li>14 dec 2004 09:29 [[Gebruiker:FT|FT]] heeft ge-upload: "[[:Afbeelding:BoutrosGhali.jpg|BoutrosGhali.jpg]]" <em>(website UN, publiek)</em></li> <li>14 dec 2004 01:34 [[Gebruiker:Cicero|Cicero]] heeft ge-upload: "[[:Afbeelding:Station_Zwijndrecht.jpg|Station_Zwijndrecht.jpg]]" <em>(Eerdere versie hersteld)</em></li> <li>14 dec 2004 01:33 [[Gebruiker:Cicero|Cicero]] heeft ge-upload: "[[:Afbeelding:Station_Zwijndrecht.jpg|Station_Zwijndrecht.jpg]]" <em>(Eerdere versie hersteld)</em></li> <li>13 dec 2004 23:53 [[Gebruiker:Tr606|Tr606]] heeft ge-upload: "[[:Afbeelding:Seneca.JPG|Seneca.JPG]]" <em>(Buste van Seneca (de Jongere), van Engelse Wiki)</em></li> <li>13 dec 2004 22:28 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Kaart_Italie_Campobasso.png|Kaart_Italie_Campobasso.png]]" <em>(Oorspronkelijk uit CIA Factbook; vertaald in Nederlands door Danielm; omgezet in PNG door BenTels, enkel plaatsnaam met rood gemarkeerd door mij; Public Domain)</em></li> <li>13 dec 2004 21:40 [[Gebruiker:Maarten Vermaak|Maarten Vermaak]] heeft ge-upload: "[[:Afbeelding:Jacob.gif|Jacob.gif]]" <em>(Ik heb dit plaatje zelf gemaakt en er rust geen auteursrecht op.)</em></li> <li>13 dec 2004 20:16 [[Gebruiker:Hjvannes|Hjvannes]] heeft ge-upload: "[[:Afbeelding:Nachtzwaluw.jpg|Nachtzwaluw.jpg]]" <em>(uit Morris&#39;s British Birds 1891 (meer dan 100 jaar oud), te raadplegen op www.BirdCheck.co.uk)</em></li> <li>13 dec 2004 20:11 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Tarweaar.jpg|Tarweaar.jpg]]" <em>(zelfgemaakte foto van tarweaar)</em></li> <li>13 dec 2004 19:46 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Cixi.jpg|Cixi.jpg]]" <em>(van Engelse Wikipedia)</em></li> <li>13 dec 2004 19:28 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Nurhaci.jpg|Nurhaci.jpg]]" <em>(van google afbeeldingen)</em></li> <li>13 dec 2004 19:17 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Hong_Taiji.jpg|Hong_Taiji.jpg]]" <em>(van Engelse Wikipedia)</em></li> <li>13 dec 2004 19:05 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Palestine_Flag.gif|Palestine_Flag.gif]]" <em>(vlag palestina (engelse wikipedia))</em></li> <li>13 dec 2004 18:41 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Chongzhen.jpg|Chongzhen.jpg]]" <em>(van Engelse Wikipedia)</em></li> <li>13 dec 2004 18:17 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Shunzhi.jpg|Shunzhi.jpg]]"</li> <li>13 dec 2004 18:11 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Kangxi.jpg|Kangxi.jpg]]" <em>(van Engelse Wikipedia)</em></li> <li>13 dec 2004 18:06 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Yongzheng.jpg|Yongzheng.jpg]]"</li> <li>13 dec 2004 17:48 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Qianlong.jpg|Qianlong.jpg]]"</li> <li>13 dec 2004 16:57 [[Gebruiker:Drdefcom|Drdefcom]] heeft ge-upload: "[[:Afbeelding:Colossuscomputer.jpg|Colossuscomputer.jpg]]" <em>(Colossus Computer, Copyright Tony Sale. De eigenaar heeft de toestemming verleent om deze foto te gebruiken in Wikipedia)</em></li> <li>13 dec 2004 16:15 [[Gebruiker:Frankdegram|Frankdegram]] heeft ge-upload: "[[:Afbeelding:Rembsask.jpg|Rembsask.jpg]]" <em>(Rembrandt Harmensz. van Rijn, Dubbelportret Saskia en Rembrandt, 1636, British Museum Londen)</em></li> <li>13 dec 2004 15:51 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:KillenStrait.jpg|KillenStrait.jpg]]" <em>(verantwoording - zie foto)</em></li> <li>13 dec 2004 15:12 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:KillenStrait.jpg|KillenStrait.jpg]]" <em>(verantwoording: zie foto)</em></li> <li>13 dec 2004 15:09 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Christmas_tree.jpg|Christmas_tree.jpg]]" <em>(afbeelding van Engelstalige Wikipedia; Nordmann-spar als kerstboom)</em></li> <li>13 dec 2004 14:47 [[Gebruiker:Zander|Zander]] heeft ge-upload: "[[:Afbeelding:Wikip.gif|Wikip.gif]]" <em>(verwijzingsbanner; eigen produktie; animatie kan niet zonder gif )</em></li> <li>13 dec 2004 14:01 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Nordmann-01.jpg|Nordmann-01.jpg]]" <em>(Afbeelding van Duitstalige Wikipedia: *Beschreibung: &#91;&#91;Nordmanntanne]] in der Kultur)</em></li> <li>13 dec 2004 12:26 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Viburnum_opulus_bloem.jpg|Viburnum_opulus_bloem.jpg]]" <em>(zie &#91;&#91;afbeelding:Viburnum_opulus.jpg)</em></li> <li>13 dec 2004 11:46 [[Gebruiker:Nicklaarakkers|Nicklaarakkers]] heeft ge-upload: "[[:Afbeelding:Tichon.jpg|Tichon.jpg]]" <em>(fotograaf is al dood)</em></li> <li>13 dec 2004 11:13 [[Gebruiker:Drdefcom|Drdefcom]] heeft ge-upload: "[[:Afbeelding:Colossusrebuild.jpg|Colossusrebuild.jpg]]" <em>(Foto van Colossus, gerestaureerd door Tony Sale. Toelating gegeven door Tony sale om de foto te publiceren in Wikipedia.)</em></li> <li>13 dec 2004 11:00 [[Gebruiker:Hasekamp|Hasekamp]] heeft ge-upload: "[[:Afbeelding:PhuketChinees.jpg|PhuketChinees.jpg]]" <em>(Zelf gemaakt)</em></li> <li>13 dec 2004 10:59 [[Gebruiker:Hasekamp|Hasekamp]] heeft ge-upload: "[[:Afbeelding:PhuketPortugees.jpg|PhuketPortugees.jpg]]" <em>(Zelf gemaakt)</em></li> <li>13 dec 2004 10:29 [[Gebruiker:Hasekamp|Hasekamp]] heeft ge-upload: "[[:Afbeelding:JamesBondEiland.jpg|JamesBondEiland.jpg]]" <em>(Zelf gemaakt)</em></li> <li>13 dec 2004 08:36 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Grevelingen-1981.jpg|Grevelingen-1981.jpg]]" <em>(Grevelingenmeer. Eigen foto uit 1981. I took this photo myself. &#123;&#123;PD}})</em></li> <li>13 dec 2004 08:25 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Wolken-sfeerfoto-1980.jpg|Wolken-sfeerfoto-1980.jpg]]" <em>(Wolken, zelf gemaakt in 1980. Clouds, made by myself in 1980. &#123;&#123;PD}})</em></li> <li>13 dec 2004 06:47 [[Gebruiker:Sherpa|Sherpa]] heeft ge-upload: "[[:Afbeelding:Thay-TeaCupOnHand_tif.jpg|Thay-TeaCupOnHand_tif.jpg]]" <em>(Thich Nhat Hanh: Pictures of Thich Nhat Hanh - You have the permission to use these pictures for your Websites and publications for materials related to the practices of Plum Village. Please credit the pictures with Courtesy of Plum Village Practice Center, France)</em></li> <li>13 dec 2004 03:52 [[Gebruiker:Lekkere Kwal|Lekkere Kwal]] heeft ge-upload: "[[:Afbeelding:Green_maroon_coleus.jpg|Green_maroon_coleus.jpg]]" <em>(ENG Wikipedia, gebruiker Koyaanis Qatsi verklaart deze afbeelding zelf gemaakt te hebben in publiek domein uit te brengen, zie http&#58;//en.wikipedia.org/wiki/Image:Green_maroon_coleus_sm.jpg)</em></li> <li>12 dec 2004 22:56 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Honingzwam.jpg|Honingzwam.jpg]]" <em>(Van de:)</em></li> <li>12 dec 2004 22:55 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:LocatieSpitsbergen.png|LocatieSpitsbergen.png]]" <em>(engelse wiki: GNU)</em></li> <li>12 dec 2004 22:54 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Spitsbergen_COA.png|Spitsbergen_COA.png]]" <em>(estse wiki)</em></li> <li>12 dec 2004 22:54 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Spechtvoederplaats.jpg|Spechtvoederplaats.jpg]]" <em>(Van de:)</em></li> <li>12 dec 2004 22:42 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Pontebba1900.JPG|Pontebba1900.JPG]]" <em>(pontebba in val canale rond 1900 - publiek domein)</em></li> <li>12 dec 2004 22:39 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:FelixElisa.jpg|FelixElisa.jpg]]" <em>(&#91;&#91;Felix Bacciocchi]] en &#91;&#91;Elisa Bonaparte]] &#123;&#123;PD}})</em></li> <li>12 dec 2004 22:30 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Pontebba1900.JPG|Pontebba1900.JPG]]" <em>(Pontebba in het Van canale rond 1900 - publiek domein)</em></li> <li>12 dec 2004 22:24 [[Gebruiker:Zander|Zander]] heeft ge-upload: "[[:Afbeelding:Ponymarkt-bemmel.jpg|Ponymarkt-bemmel.jpg]]" <em>(eigen werk, vrijgegeven voor openbaar gebruik)</em></li> <li>12 dec 2004 22:19 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Larvegangen.jpg|Larvegangen.jpg]]" <em>(Van de:)</em></li> <li>12 dec 2004 21:55 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:CamilloBorghese.jpg|CamilloBorghese.jpg]]" <em>(&#91;&#91;Camillo Filippo Ludovico Borghese]] &#123;&#123;PD}})</em></li> <li>12 dec 2004 21:52 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Glau_Slemphout2.jpg|Glau_Slemphout2.jpg]]" <em>(Van de:)</em></li> <li>12 dec 2004 21:47 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Glau_Slemphout1.jpg|Glau_Slemphout1.jpg]]" <em>(Van de:)</em></li> <li>12 dec 2004 21:44 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Ruigpootuil.jpg|Ruigpootuil.jpg]]" <em>(Van de:)</em></li> <li>12 dec 2004 21:41 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Achtsevlag.png|Achtsevlag.png]]" <em>(Vlag van het plaatsje Acht bij Eindhoven (vlag gemaakt in 2003 toen Acht 700 jaar was).&lt;br&gt;Zie ook http&#58;//www.acht.nl/&lt;br&gt;&lt;br&gt;Dit plaatje is te vervanging van Achtsevlag.jpg wat op 22 sep 2004 19:15 door Gebruiker Kleinspr was geupload. Nu echter betere kleuren en strakker.)</em></li> <li>12 dec 2004 21:39 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Amerikaanse_marter.jpg|Amerikaanse_marter.jpg]]" <em>(Van de:)</em></li> <li>12 dec 2004 21:38 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Slemphout7.jpg|Slemphout7.jpg]]" <em>(Van de:)</em></li> <li>12 dec 2004 21:33 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Slemphout6.jpg|Slemphout6.jpg]]" <em>(Van de:)</em></li> <li>12 dec 2004 21:31 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Slemphout4.jpg|Slemphout4.jpg]]" <em>(Van de:)</em></li> <li>12 dec 2004 21:22 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Napoleon5.jpg|Napoleon5.jpg]]" <em>(Kroning van Napoleon &#123;&#123;PD}})</em></li> <li>12 dec 2004 21:21 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Napoleon4.jpg|Napoleon4.jpg]]" <em>(Napoleon &#123;&#123;PD}})</em></li> <li>12 dec 2004 21:18 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Napoleon3.jpg|Napoleon3.jpg]]" <em>(Napoleon &#123;&#123;PD}})</em></li> <li>12 dec 2004 21:18 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Napoleon1.jpg|Napoleon1.jpg]]" <em>(Napoleon &#123;&#123;PD}})</em></li> <li>12 dec 2004 20:37 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:PaulineBonaparte.jpg|PaulineBonaparte.jpg]]" <em>(Pauline Bonaparte &#123;&#123;PD}})</em></li> <li>12 dec 2004 18:55 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Terrapene_sierschildpad_Chrysemys_picta.jpg|Terrapene_sierschildpad_Chrysemys_picta.jpg]]" <em>(Uit Wiki Engels )</em></li> <li>12 dec 2004 18:41 [[Gebruiker:Bouke|Bouke]] heeft ge-upload: "[[:Afbeelding:DSCF0867.JPG|DSCF0867.JPG]]" <em>(zelf gemaakt op Zondag 12 december 2004)</em></li> <li>12 dec 2004 18:34 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Cuzco_summit.jpg|Cuzco_summit.jpg]]" <em>(foto cusco-declaratie (engelse wikipedia))</em></li> <li>12 dec 2004 18:14 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Baudouin_I_of_Belgium.jpg|Baudouin_I_of_Belgium.jpg]]" <em>(koning boudewijk zaliger (engelse wikipedia))</em></li> <li>12 dec 2004 17:53 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Vallee-chajoux.jpg|Vallee-chajoux.jpg]]" <em>(foto vogesen (engelse wikipedia))</em></li> <li>12 dec 2004 16:52 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Austrasia.jpg|Austrasia.jpg]]" <em>(kaartje austasië (engelse wikipedia))</em></li> <li>12 dec 2004 15:58 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Modelzweefvliegtuig.jpg|Modelzweefvliegtuig.jpg]]" <em>(zelfgemaakte foto van modelzweefvliegtuig)</em></li> <li>12 dec 2004 14:14 [[Gebruiker:Kevinv|Kevinv]] heeft ge-upload: "[[:Afbeelding:Beringen1.jpg|Beringen1.jpg]]"</li> <li>12 dec 2004 14:09 [[Gebruiker:MarcoVD|MarcoVD]] heeft ge-upload: "[[:Afbeelding:BluesBrothers.jpg|BluesBrothers.jpg]]" <em>(van it: (tekst aldaar: Questa immagine è stata rilasciata nel pubblico dominio dal detentore del copyright, o il copyright è scaduto. Questa norma vale in tutto il mondo.))</em></li> <li>12 dec 2004 13:46 [[Gebruiker:Kevinv|Kevinv]] heeft ge-upload: "[[:Afbeelding:Aalst1.gif|Aalst1.gif]]"</li> <li>12 dec 2004 13:41 [[Gebruiker:Zerre|Zerre]] heeft ge-upload: "[[:Afbeelding:The_mirage.jpg|The_mirage.jpg]]" <em>(The Mirage)</em></li> <li>12 dec 2004 13:33 [[Gebruiker:DexieBoy|DexieBoy]] heeft ge-upload: "[[:Afbeelding:Bundestag.jpg|Bundestag.jpg]]" <em>(Is van Duitse Wiki. Is Gemaakt door een gebruiker van die Wiki, en daarom is deze fotot onder GNU FDL)</em></li> <li>12 dec 2004 13:32 [[Gebruiker:Kevinv|Kevinv]] heeft ge-upload: "[[:Afbeelding:Halle1.jpg|Halle1.jpg]]"</li> <li>12 dec 2004 13:18 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Phelsuma_l._laticauda.jpg|Phelsuma_l._laticauda.jpg]]" <em>(Foto door Jurriaan Schulman. Uit Wiki Engels, zie http&#58;//en.wikipedia.org/wiki/Image:Phelsuma_l._laticauda.jpg )</em></li> <li>12 dec 2004 13:07 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Phelsuma_edwardnewtoni.jpg|Phelsuma_edwardnewtoni.jpg]]" <em>(Foto door Jurriaan Schulman. Uit Wiki Engels, zie http&#58;//en.wikipedia.org/wiki/Image:Phelsuma_edwardnewtoni.jpg)</em></li> <li>12 dec 2004 12:31 [[Gebruiker:Nicklaarakkers|Nicklaarakkers]] heeft ge-upload: "[[:Afbeelding:FAN_NOLI.jpg|FAN_NOLI.jpg]]" <em>(Duitse wiki)</em></li> <li>12 dec 2004 12:17 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:P._m._madagascariensis_juvenile.jpg|P._m._madagascariensis_juvenile.jpg]]" <em>(Van Wiki Engels, zie http&#58;//en.wikipedia.org/wiki/Image:P._m._madagascariensis_juvenile.jpg)</em></li> <li>12 dec 2004 12:11 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Us_flag_large.png|Us_flag_large.png]]" <em>(grote vlag vs (engelse wikipedia))</em></li> <li>12 dec 2004 12:10 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:13-stars-us-flag.png|13-stars-us-flag.png]]" <em>(oude vlag vs (engelse wikipedia))</em></li> <li>12 dec 2004 12:09 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Vsachtig_vlag.png|Vsachtig_vlag.png]]" <em>(vs-achtige vlaggen (zelf gemaakt met wikipediavlaggen))</em></li> <li>12 dec 2004 11:57 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Gb_heic.png|Gb_heic.png]]" <em>(vlag britse oost-indische compagnie (engelse wikipedia))</em></li> <li>12 dec 2004 11:53 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Spoorwegmuseum_St_Petersburg_4.jpg|Spoorwegmuseum_St_Petersburg_4.jpg]]" <em>(Spoorwegmuseum (vm. Warschaustation) te St. Petersburg. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]], augustus 2002)</em></li> <li>12 dec 2004 11:31 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Abricotboom.jpg|Abricotboom.jpg]]" <em>(Afbeelding afkomstig van Franstalige Wikipedia)</em></li> <li>12 dec 2004 11:24 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Abricot.jpg|Abricot.jpg]]" <em>(Afbeelding afkomstig van Franstalige Wikipedia: *Variété d&#39;abricotier cultivée aux États-Unis)</em></li> <li>12 dec 2004 11:15 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Christianflag.png|Christianflag.png]]" <em>(christelijke vlag (engelse wikipedia))</em></li> <li>12 dec 2004 10:51 [[Gebruiker:FT|FT]] heeft ge-upload: "[[:Afbeelding:Dan_quale.jpg|Dan_quale.jpg]]" <em>(PAUL MICKLE)</em></li> <li>12 dec 2004 10:26 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Slemphout.png|Slemphout.png]]" <em>(Van de:, i.v.m. bestandsgrootte omlaag naar 256 kleuren)</em></li> <li>12 dec 2004 09:02 [[Gebruiker:Kevinv|Kevinv]] heeft ge-upload: "[[:Afbeelding:Mechelen1.jpg|Mechelen1.jpg]]"</li> <li>12 dec 2004 08:43 [[Gebruiker:Kevinv|Kevinv]] heeft ge-upload: "[[:Afbeelding:Genk1.jpg|Genk1.jpg]]"</li> <li>12 dec 2004 07:59 [[Gebruiker:Kevinv|Kevinv]] heeft ge-upload: "[[:Afbeelding:Diest1.jpg|Diest1.jpg]]"</li> <li>12 dec 2004 07:50 [[Gebruiker:Kevinv|Kevinv]] heeft ge-upload: "[[:Afbeelding:Brugge.jpg|Brugge.jpg]]"</li> <li>12 dec 2004 07:44 [[Gebruiker:Kevinv|Kevinv]] heeft ge-upload: "[[:Afbeelding:Kortryk.jpg|Kortryk.jpg]]" <em>(NGW)</em></li> <li>12 dec 2004 07:42 [[Gebruiker:Kevinv|Kevinv]] heeft ge-upload: "[[:Afbeelding:Gent1.jpg|Gent1.jpg]]" <em>(NGW)</em></li> <li>12 dec 2004 07:37 [[Gebruiker:Kevinv|Kevinv]] heeft ge-upload: "[[:Afbeelding:Hasselt2.jpg|Hasselt2.jpg]]"</li> <li>11 dec 2004 22:49 [[Gebruiker:Why hello good sir|Why hello good sir]] heeft ge-upload: "[[:Afbeelding:Pierre.jpg|Pierre.jpg]]" <em>(ik)</em></li> <li>11 dec 2004 22:02 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Spoorwegmuseum_St_Petersburg_4.jpg|Spoorwegmuseum_St_Petersburg_4.jpg]]" <em>(Spoorwegmuseum (vm. Warschaustation) te St. Petersburg. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]], augustus 2002)</em></li> <li>11 dec 2004 21:37 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:P36.jpg|P36.jpg]]" <em>(foto van Kneiphof (Stoomlocomotief), kleuren iets bijgewerkt)</em></li> <li>11 dec 2004 21:09 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Spoorwegmuseum_St_Petersburg_3.jpg|Spoorwegmuseum_St_Petersburg_3.jpg]]" <em>(Spoorwegmuseum (vm. Warschaustation) te St. Petersburg. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]], augustus 2002)</em></li> <li>11 dec 2004 21:07 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Spoorwegmuseum_St_Petersburg_2.jpg|Spoorwegmuseum_St_Petersburg_2.jpg]]" <em>(Spoorwegmuseum (vm. Warschaustation) te St. Petersburg. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]], augustus 2002)</em></li> <li>11 dec 2004 21:06 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Spoorwegmuseum_St_Petersburg_1.jpg|Spoorwegmuseum_St_Petersburg_1.jpg]]" <em>(Spoorwegmuseum (vm. Warschaustation) te St. Petersburg. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]], augustus 2002)</em></li> <li>11 dec 2004 20:45 [[Gebruiker:Londenp|Londenp]] heeft ge-upload: "[[:Afbeelding:CIE1931_2graden.gif|CIE1931_2graden.gif]]" <em>(Zelfgemaakt met Excel)</em></li> <li>11 dec 2004 20:39 [[Gebruiker:Londenp|Londenp]] heeft ge-upload: "[[:Afbeelding:CIE1931_2graden.gif|CIE1931_2graden.gif]]" <em>(Zelfgemaakt met Excel)</em></li> <li>11 dec 2004 20:24 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Kilometerteller.jpg|Kilometerteller.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>11 dec 2004 20:11 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Schlupf_0011.jpg|Schlupf_0011.jpg]]" <em>(Van de Duitse Wiki, zie (http&#58;//de.wikipedia.org/wiki/Bild:Schlupf_0011.jpg))</em></li> <li>11 dec 2004 19:44 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Doosschildpad.JPG|Doosschildpad.JPG]]" <em>(Eigen tekening)</em></li> <li>11 dec 2004 19:38 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Spoorwegmuseum_St_Petersburg_1.jpg|Spoorwegmuseum_St_Petersburg_1.jpg]]" <em>(Eerdere versie hersteld)</em></li> <li>11 dec 2004 18:41 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Schild_Pruisen.jpg|Schild_Pruisen.jpg]]" <em>(beste versie schild pruisen (engelse wikipedia + eigen bewerking))</em></li> <li>11 dec 2004 18:39 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Schild_Pruisen.jpg|Schild_Pruisen.jpg]]" <em>(betere versie schild pruisen (engelse wikipedia + eigen bewerking))</em></li> <li>11 dec 2004 18:35 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Vlag_Pruisen.png|Vlag_Pruisen.png]]" <em>(vlag pruisen (engelse wikipedia))</em></li> <li>11 dec 2004 18:31 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Schild_Pruisen.jpg|Schild_Pruisen.jpg]]" <em>(wapenschild pruisen (engelse wikipedia))</em></li> <li>11 dec 2004 18:20 [[Gebruiker:Kneiphof|Kneiphof]] heeft ge-upload: "[[:Afbeelding:P36.jpg|P36.jpg]]" <em>(Stoomlocomotief, eigen foto)</em></li> <li>11 dec 2004 16:52 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Wart_snake_1.jpg|Wart_snake_1.jpg]]" <em>(Van wiki Engsla, zie (http&#58;//en.wikipedia.org/wiki/Image:Wart_snake_1.jpg))</em></li> <li>11 dec 2004 16:36 [[Gebruiker:Kevinv|Kevinv]] heeft ge-upload: "[[:Afbeelding:Peer.jpg|Peer.jpg]]"</li> <li>11 dec 2004 15:09 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Friedrich_ratzel.jpg|Friedrich_ratzel.jpg]]" <em>(van http&#58;//www.uni-leipzig.de/~geograph/institut/institut6.html (afbeelding meer dan 70 jaar oud))</em></li> <li>11 dec 2004 14:49 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Jiaqing.jpg|Jiaqing.jpg]]" <em>(van Engelse Wikipedia)</em></li> <li>11 dec 2004 14:42 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Daoguang.jpg|Daoguang.jpg]]" <em>(van Engelse Wikipedia)</em></li> <li>11 dec 2004 14:36 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:GoyaKarelIV.jpg|GoyaKarelIV.jpg]]" <em>(Karel IV van Spanje en familie door Goya &#123;&#123;PD}})</em></li> <li>11 dec 2004 14:34 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Xianfeng.jpg|Xianfeng.jpg]]" <em>(van Engelse Wikipedia)</em></li> <li>11 dec 2004 14:31 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Tongzhi.jpg|Tongzhi.jpg]]" <em>(van Engelse Wikipedia)</em></li> <li>11 dec 2004 14:22 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:KarelIVSp.jpg|KarelIVSp.jpg]]" <em>(Karel IV van Spanje door Anton Raphael Mengs, olie op canvas, 152 x 110 cm. Museo del Prado, Madrid &#123;&#123;PD}})</em></li> <li>11 dec 2004 14:13 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:KEITH.jpg|KEITH.jpg]]" <em>(fiat levitt)</em></li> <li>11 dec 2004 14:10 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Honxiang.jpg|Honxiang.jpg]]" <em>(van Engelse Wikipedia)</em></li> <li>11 dec 2004 14:00 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Odulfusborgloon.JPG|Odulfusborgloon.JPG]]" <em>(Sint-Odulfus - eigen foto)</em></li> <li>11 dec 2004 13:53 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Guangxu.jpg|Guangxu.jpg]]" <em>(van Engelse Wikipedia)</em></li> <li>11 dec 2004 13:17 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Xuantong2.jpg|Xuantong2.jpg]]" <em>(van Engelse Wikipedia)</em></li> <li>11 dec 2004 13:16 [[Gebruiker:Empoor|Empoor]] heeft ge-upload: "[[:Afbeelding:01_china.jpg|01_china.jpg]]" <em>(Volksrepubliek China, copyright Hewlett-Packard)</em></li> <li>11 dec 2004 12:20 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Buchenwald_Tor_Straflager.jpg|Buchenwald_Tor_Straflager.jpg]]" <em>(Buchenwald, toegangspoort tot het strafkamp. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]], augustus 2004)</em></li> <li>11 dec 2004 12:09 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Buchenwald_Tor_Straflager.jpg|Buchenwald_Tor_Straflager.jpg]]" <em>(Buchenwald, toegangspoort tot het strafkamp. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]], augustus 2004)</em></li> <li>11 dec 2004 12:08 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Buchenwald_Krematorium.jpg|Buchenwald_Krematorium.jpg]]" <em>(Buchenwald, crematorium. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]], augustus 2004)</em></li> <li>11 dec 2004 11:40 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Spain_coa.png|Spain_coa.png]]" <em>(beter spaans wapenschild (engelse wikipedia))</em></li> <li>11 dec 2004 11:19 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Babi_Jar_ravijn.jpg|Babi_Jar_ravijn.jpg]]" <em>(Babi Jar, ravijn. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]] april 2003))</em></li> <li>11 dec 2004 11:17 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Plask.jpg|Plask.jpg]]" <em>(fiat levitt)</em></li> <li>11 dec 2004 11:10 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Babi_Jar_ravijn.jpg|Babi_Jar_ravijn.jpg]]" <em>(Babi Jar, ravijn. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]] april 2003))</em></li> <li>11 dec 2004 10:55 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Babi_Jar_ravijn.jpg|Babi_Jar_ravijn.jpg]]" <em>(Babi Jar, ravijn. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]] april 2003)</em></li> <li>11 dec 2004 10:55 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Babi_Jar_monument_Sovjetburgers.jpg|Babi_Jar_monument_Sovjetburgers.jpg]]" <em>(Babi Jar, monument voor de omgekomen Sovjetburgers. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]] april 2003)</em></li> <li>11 dec 2004 10:54 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Babi_Jar_monument_kinderen_.jpg|Babi_Jar_monument_kinderen_.jpg]]" <em>(Babi Jar, monument voor de omgekomen kinderen. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]] april 2003)</em></li> <li>11 dec 2004 10:52 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Babi_Jar_Menorah-monument.jpg|Babi_Jar_Menorah-monument.jpg]]" <em>(Babi Jar (Kiëv); Menorah-monument. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]] april 2003)</em></li> <li>11 dec 2004 00:02 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Basiliek.jpg|Basiliek.jpg]]" <em>(Basiliek van Scherpenheuvel - eigen foto ter vervanging van andere, eigen foto)</em></li> <li>10 dec 2004 23:30 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Oudemaasdilsen.jpg|Oudemaasdilsen.jpg]]" <em>(Oude Maas te Dilsen - ter vervanging van eigen foto)</em></li> <li>10 dec 2004 22:44 [[Gebruiker:Londenp|Londenp]] heeft ge-upload: "[[:Afbeelding:Cie_chromaticity_diagram_wavelength.png|Cie_chromaticity_diagram_wavelength.png]]" <em>(Overgenomen uit de engelse Wikipedia)</em></li> <li>10 dec 2004 21:53 [[Gebruiker:Erikweijers|Erikweijers]] heeft ge-upload: "[[:Afbeelding:Hansteeuwen2.jpg|Hansteeuwen2.jpg]]" <em>(Frans Jansen, met toestemming van Hummelinck Stuurman Theaterbureau)</em></li> <li>10 dec 2004 21:41 [[Gebruiker:Erikweijers|Erikweijers]] heeft ge-upload: "[[:Afbeelding:Hansteeuwen1.jpg|Hansteeuwen1.jpg]]" <em>(Foto: Frans Jansen. Met toestemming van Hummelinck Stuurman Theaterbureau)</em></li> <li>10 dec 2004 19:59 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Randschildpad.JPG|Randschildpad.JPG]]" <em>(eigen bitmap geconverteerd )</em></li> <li>10 dec 2004 18:48 [[Gebruiker:Svdmolen|Svdmolen]] heeft ge-upload: "[[:Afbeelding:L&Vlogo.jpg|L&Vlogo.jpg]]" <em>(L&amp;Vlogo - eigen werk met wikiplaatjes - &#123;&#123;GFDL}})</em></li> <li>10 dec 2004 18:38 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Moissi-als-romeo-1907.jpg|Moissi-als-romeo-1907.jpg]]" <em>(foto uit 1907 - publiek)</em></li> <li>10 dec 2004 18:26 [[Gebruiker:Bartux|Bartux]] heeft ge-upload: "[[:Afbeelding:Proton_raket.jpg|Proton_raket.jpg]]" <em>(Lancering van een Russische Proton raket (foto: NASA). &#123;&#123;PD}} )</em></li> <li>10 dec 2004 17:47 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Soepschildpad08b.jpg|Soepschildpad08b.jpg]]" <em>(Van http&#58;//gimp-savvy.com : Photo Copyright-Free. Originele naam: 0000008b.jpg)</em></li> <li>10 dec 2004 17:44 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Chelydra_line0683.jpg|Chelydra_line0683.jpg]]" <em>(Van http&#58;//gimp-savvy.com : Photo Copyright-Free)</em></li> <li>10 dec 2004 16:52 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Reef2576.jpg|Reef2576.jpg]]" <em>(Van http&#58;//gimp-savvy.com : Photo Copyright-Free))</em></li> <li>10 dec 2004 16:43 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Alligator_snapping_turtle.jpg|Alligator_snapping_turtle.jpg]]" <em>(Uit Wiki Engels, zie (http&#58;//en.wikipedia.org/wiki/Image:Alligator_snapping_turtle.jpg))</em></li> <li>10 dec 2004 14:49 [[Gebruiker:Vandierendonck|Vandierendonck]] heeft ge-upload: "[[:Afbeelding:Music_blonde_on_blonde.jpg|Music_blonde_on_blonde.jpg]]" <em>(Blonde On Blonde Cover Bob Dylan LP)</em></li> <li>10 dec 2004 14:48 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Bonomo.jpg|Bonomo.jpg]]" <em>(afbeelding van voor 1800)</em></li> <li>10 dec 2004 12:47 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Bothvdk.jpg|Bothvdk.jpg]]" <em>(chessphoto.com)</em></li> <li>10 dec 2004 12:21 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Spain_coa.png|Spain_coa.png]]" <em>(beter wapenschild spanje (engelse wikipedia))</em></li> <li>10 dec 2004 12:20 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Mercosur.png|Mercosur.png]]" <em>(vlag mercosur (engelse wikipedia))</em></li> <li>10 dec 2004 12:07 [[Gebruiker:Nicklaarakkers|Nicklaarakkers]] heeft ge-upload: "[[:Afbeelding:Koerner.jpg|Koerner.jpg]]" <em>(eigen collectie)</em></li> <li>10 dec 2004 11:41 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Ca_qc.png|Ca_qc.png]]" <em>(betere vlag quebec (engelse wikipedia))</em></li> <li>10 dec 2004 10:58 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:WapenBelgië.png|WapenBelgië.png]]" <em>(betere versie wapenschild belgië (engelse wikipedia))</em></li> <li>10 dec 2004 10:31 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Bolok.jpg|Bolok.jpg]]" <em>(fiat convekta)</em></li> <li>10 dec 2004 10:30 [[Gebruiker:Pethan|Pethan]] heeft ge-upload: "[[:Afbeelding:Koolzaad.jpg|Koolzaad.jpg]]" <em>(Koolzaad &#123;&#123;eigenwerk}})</em></li> <li>10 dec 2004 09:12 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Rode_kool.jpg|Rode_kool.jpg]]" <em>(zelfgemaakte foto van Rode kool; eind september)</em></li> <li>10 dec 2004 08:29 [[Gebruiker:Nikio|Nikio]] heeft ge-upload: "[[:Afbeelding:LocatieOost-Vlieland.png|LocatieOost-Vlieland.png]]" <em>(Kaart met de locatie van Oost-Vlieland, gemaakt uit sjabloon van Wikipedia-gebruiker Mtcv)</em></li> <li>10 dec 2004 03:05 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Mattenlegger-Cardium-1983.jpg|Mattenlegger-Cardium-1983.jpg]]" <em>(Mattenlegger Cardium, wat matten op de bodem bij de bouw van de oosterscheldekering legde, 1983. Eigen foto. &#123;&#123;PD}})</em></li> <li>10 dec 2004 02:55 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Hefschip-Ostrea-1983.jpg|Hefschip-Ostrea-1983.jpg]]" <em>(Hefschip Ostrea wat de betonnen pijles naar hun plaats vervoerde bij de bouw van de oosterscheldekering, 1983. Eigen foto. &#123;&#123;PD}})</em></li> <li>10 dec 2004 02:42 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Henny-Huisman-1986-efteling.jpg|Henny-Huisman-1986-efteling.jpg]]" <em>(Henny Huisman maakt TV-opnames in de Efteling, 1986. Eigen foto. &#123;&#123;PD}})</em></li> <li>9 dec 2004 22:53 [[Gebruiker:Quistnix|Quistnix]] heeft ge-upload: "[[:Afbeelding:Bletchleypk.700px.jpg|Bletchleypk.700px.jpg]]" <em>(Kopie van en:wiki: &#91;&#91;:en:User:MykReeve]] (Bletchley Park. Photograph taken by Michael Reeve, 22 September 2002.) &#123;&#123;GFDL}})</em></li> <li>9 dec 2004 22:00 [[Gebruiker:Pethan|Pethan]] heeft ge-upload: "[[:Afbeelding:Rosa_eglanteria_img_3218.jpg|Rosa_eglanteria_img_3218.jpg]]" <em>(Egelantier van en:wikipedia Rosa eglanteria&lt;br&gt;)</em></li> <li>9 dec 2004 21:19 [[Gebruiker:MarcoVD|MarcoVD]] heeft ge-upload: "[[:Afbeelding:Himmler_visits_Dachau_1936.jpg|Himmler_visits_Dachau_1936.jpg]]" <em>(van en: (tekst aldaar: This image has been released into the public domain by the copyright holder, its copyright has expired, or it is ineligible for copyright. This applies worldwide.))</em></li> <li>9 dec 2004 19:51 [[Gebruiker:Gmhogervorst|Gmhogervorst]] heeft ge-upload: "[[:Afbeelding:Alkmaar-stadskantoor.JPG|Alkmaar-stadskantoor.JPG]]" <em>(eigen foto)</em></li> <li>9 dec 2004 19:46 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:U-47s.jpg|U-47s.jpg]]" <em>(afkomstig van en.wiki, tekst aldaar, Source: history.navy.mil, &#123;&#123;PD}})</em></li> <li>9 dec 2004 19:34 [[Gebruiker:Zander|Zander]] heeft ge-upload: "[[:Afbeelding:333px-European_Court_of_Human_Rights.jpg|333px-European_Court_of_Human_Rights.jpg]]" <em>(van engelse wikipedia met vermelding vrij van rechten)</em></li> <li>9 dec 2004 19:18 [[Gebruiker:Pethan|Pethan]] heeft ge-upload: "[[:Afbeelding:Quercus_petraea.jpg|Quercus_petraea.jpg]]" <em>(Wintereik &#91;&#91;Sessile oak]] shoot with acorn - photo &#91;&#91;en:User:MPF]])</em></li> <li>9 dec 2004 18:45 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Zegels.jpg|Zegels.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>9 dec 2004 17:51 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Alnus-cordata.jpg|Alnus-cordata.jpg]]" <em>(Alnus cordata: Overgenomen van de Deense wikipedia.)</em></li> <li>9 dec 2004 17:48 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:ParmaPiacenza.jpg|ParmaPiacenza.jpg]]" <em>(Hertogdom Parma - vrij te gebruiken voor educatieve doeleinden - http&#58;//www.lib.utexas.edu/maps/historical/)</em></li> <li>9 dec 2004 17:41 [[Gebruiker:Zander|Zander]] heeft ge-upload: "[[:Afbeelding:Strasbourg-egmr002.jpg|Strasbourg-egmr002.jpg]]" <em>(vrijgegeven door de maker (Gerhard Hahnekamp))</em></li> <li>9 dec 2004 17:03 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Acer-japonicum.jpg|Acer-japonicum.jpg]]" <em>(Acer japonicum: http&#58;//www.biolib.de/)</em></li> <li>9 dec 2004 14:44 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:SuikerfabriekVeurne.jpg|SuikerfabriekVeurne.jpg]]" <em>(suikerfabriek - eigen foto)</em></li> <li>9 dec 2004 14:32 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Basiliektongeren.jpg|Basiliektongeren.jpg]]" <em>(basiliek tongeren - eigen foto)</em></li> <li>9 dec 2004 12:48 [[Gebruiker:Cicero|Cicero]] heeft ge-upload: "[[:Afbeelding:Quimper_axb01.jpg|Quimper_axb01.jpg]]" <em>(van Duitse wikipedia, de beschrijving daar is: Quimper - Cathédrale St. Corentin Fotograf: Alexander Buschorn (1980) Lizenz: GNU-FDL)</em></li> <li>9 dec 2004 12:34 [[Gebruiker:Secretaris|Secretaris]] heeft ge-upload: "[[:Afbeelding:Addekkers.jpg|Addekkers.jpg]]" <em>(zelf gemaakt)</em></li> <li>9 dec 2004 12:22 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:FvAnj.jpg|FvAnj.jpg]]" <em>(Frans van Anjou &#123;&#123;PD}})</em></li> <li>9 dec 2004 11:19 [[Gebruiker:Martijn|Martijn]] heeft ge-upload: "[[:Afbeelding:Omajjaden.png|Omajjaden.png]]" <em>(stamboom kaliefen Omajjaden, eigen maaksel)</em></li> <li>9 dec 2004 11:13 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Nakak.jpg|Nakak.jpg]]" <em>(frits 8)</em></li> <li>9 dec 2004 11:11 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Nakak.jpg|Nakak.jpg]]" <em>(frits 8)</em></li> <li>9 dec 2004 08:47 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Hikaru.jpg|Hikaru.jpg]]" <em>(chessgames.com)</em></li> <li>9 dec 2004 06:51 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:LocatieNijverdal.png|LocatieNijverdal.png]]" <em>(Locatie van Nijverdal, zelf gemaakte kaart op basis van &#91;&#91;:Afbeelding:LocatieHellendoorn.png]] van &#91;&#91;Gebruiker:Mtcv]]. Publiek Domein &#123;&#123;PD}})</em></li> <li>8 dec 2004 22:48 [[Gebruiker:Nikio|Nikio]] heeft ge-upload: "[[:Afbeelding:LocatieSuwald.png|LocatieSuwald.png]]" <em>(Kaart met de locatie van Suwâld (Suawoude), gemaakt uit sjabloon van Wikipedia-gebruiker Mtcv)</em></li> <li>8 dec 2004 22:35 [[Gebruiker:Londenp|Londenp]] heeft ge-upload: "[[:Afbeelding:KaolinUSGOV.jpg|KaolinUSGOV.jpg]]" <em>(Overgenomen uit engelse Wikipedia. Public Domain foto volgens beschrijving)</em></li> <li>8 dec 2004 22:30 [[Gebruiker:Nikio|Nikio]] heeft ge-upload: "[[:Afbeelding:LocatieBurgum.png|LocatieBurgum.png]]" <em>(Kaart met de locatie van Burgum (Bergum), gemaakt uit sjabloon van Wikipedia-gebruiker Mtcv)</em></li> <li>8 dec 2004 22:02 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Grafmonument_Dostojevski.jpg|Grafmonument_Dostojevski.jpg]]" <em>(Grafmonument Dostojevski te Sint Petersburg. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]], augustus 2002.)</em></li> <li>8 dec 2004 21:59 [[Gebruiker:Nikio|Nikio]] heeft ge-upload: "[[:Afbeelding:LocatieEarnewald.png|LocatieEarnewald.png]]" <em>(Kaart met de locatie van Earnewâld (Eernewoude), gemaakt uit sjabloon van Wikipedia-gebruiker Mtcv)</em></li> <li>8 dec 2004 20:39 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:LocatieNoordbroek.png|LocatieNoordbroek.png]]" <em>(Locatie van &#91;&#91;Noordbroek]] Zelf vervaardigd met behulp van &#91;&#91;:Afbeelding:LocatieMenterwolde.png]], gemaakt door &#91;&#91;Gebruiker:Mtcv]] vrijgegeven voor het publiek domein. &#123;&#123;PD}} )</em></li> <li>8 dec 2004 20:29 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Billboard3.jpg|Billboard3.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>8 dec 2004 20:29 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Billboard2.jpg|Billboard2.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>8 dec 2004 20:28 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Billboard1.jpg|Billboard1.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>8 dec 2004 19:41 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Ravensbruck_camp_barracks.jpg|Ravensbruck_camp_barracks.jpg]]" <em>(Afbeelding gekopieerd vanaf en.wikipedia.org. De beschrijving daar was: View of the barracks at the Ravensbrück concentration camp. From the United States Holocaust Memorial Museum. &quot;The United States Holocaust Memorial Museum wants to make its resources available and useful to the public. Whenever possible, we provide information on this Web site without restriction and do not require payment or permission for its use by our Web site visitors. We have placed restrictions on the use of some materials to protect the rights and interests of third party copyright owners. Use of these protected materials beyond that allowed by fair use requires written permission from the United States Holocaust Memorial Museum or a third party copyright owner.&quot; &#123;&#123;PD}} &#91;&#91;en:Image:Ravensbruck camp barracks.jpg]])</em></li> <li>8 dec 2004 17:58 [[Gebruiker:Svdmolen|Svdmolen]] heeft ge-upload: "[[:Afbeelding:MPlogo.jpg|MPlogo.jpg]]" <em>(Muziek portaal logo - eigen werk - &#123;&#123;GFDL}})</em></li> <li>8 dec 2004 17:20 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Buigproef.JPG|Buigproef.JPG]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>8 dec 2004 15:30 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Hessen1930.png|Hessen1930.png]]" <em>(Hessen in 1930 - GNU DFL zelf gemaakt door &#91;&#91;de:Benutzer:Störfix]])</em></li> <li>8 dec 2004 14:36 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Koolvlieg_bloemkool.jpg|Koolvlieg_bloemkool.jpg]]" <em>(zelfgemaakte afbeelding van koolvlieg aantasting op bloemkool; eind mei)</em></li> <li>8 dec 2004 13:43 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Zhang.jpg|Zhang.jpg]]" <em>(alper ataman)</em></li> <li>8 dec 2004 13:36 [[Gebruiker:BFunk|BFunk]] heeft ge-upload: "[[:Afbeelding:Escudo_armas_Panama.png|Escudo_armas_Panama.png]]" <em>(kopie van wapen zoals gebruik in zowel en als es versie van wikipedia)</em></li> <li>8 dec 2004 13:14 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Akopian.jpg|Akopian.jpg]]" <em>(fiat Alper Ataman)</em></li> <li>8 dec 2004 13:04 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Highlanders-boers.jpg|Highlanders-boers.jpg]]" <em>(Boer Wars: Highlanders capture Boer artillery. Photo: H.Rau, 1900. Copied from http&#58;//lcweb2.loc.gov &#123;&#123;PD}})</em></li> <li>8 dec 2004 12:47 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Alnus-glutinosa_bladeren.jpg|Alnus-glutinosa_bladeren.jpg]]" <em>(Alnus glutinosa - bladeren: http&#58;//www.kulak.ac.be/nl/KULAKAlgemeen/Natuur/)</em></li> <li>8 dec 2004 12:44 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Alnus-glutinosa_katjes.jpg|Alnus-glutinosa_katjes.jpg]]" <em>(Alnus glutinosa - katjes: http&#58;//www.kulak.ac.be/nl/KULAKAlgemeen/Natuur/)</em></li> <li>8 dec 2004 12:39 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Alnus-glutinosa_vrouwelijkkatje.jpg|Alnus-glutinosa_vrouwelijkkatje.jpg]]" <em>(Alnus glutinosa - vrouwelijk katje: http&#58;//www.kulak.ac.be/nl/KULAKAlgemeen/Natuur/)</em></li> <li>8 dec 2004 11:09 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Inulin.jpg|Inulin.jpg]]" <em>(afbeelding afkomstig van Duitstalige Wikipedia: Inulin - Strukturformel)</em></li> <li>8 dec 2004 08:38 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Ostrya-virginiana.jpg|Ostrya-virginiana.jpg]]" <em>(Ostrya virginiana: Overgenomen van de Engelse wikipedia (Downloaded from : &#91;&#91;1] (http&#58;//plants.usda.gov/cgi_bin/large_image_rpt.cgi?imageID=osvi_002_ahp.tif)] License: free to use for non-commercial purposes. This image is copyrighted and is not licenced under the GFDL. The licence holder allows anyone to use it for any non-commercial purpose, provided that: Please credit the artist, original publication if applicable, and the USDA-NRCS PLANTS Database. The following format is suggested and will be appreciated:Larry Allain @ USDA-NRCS PLANTS Database)</em></li> <li>8 dec 2004 06:58 [[Gebruiker:Soleil|Soleil]] heeft ge-upload: "[[:Afbeelding:Annie_Besant_-_Project_Gutenberg_eText_13715.png|Annie_Besant_-_Project_Gutenberg_eText_13715.png]]" <em>(http&#58;//en.wikipedia.org/wiki/Image:Annie_Besant_-_Project_Gutenberg_eText_13715.png; - Project Gutenberg eText 13715 - http&#58;//www.gutenberg.net/dirs/1/3/7/1/13715/13715-h/13715-h.htm -)</em></li> <li>7 dec 2004 21:46 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Myra_kerk_st_nicolaas.jpg|Myra_kerk_st_nicolaas.jpg]]" <em>(&#123;&#123;GDFL}} en wikii)</em></li> <li>7 dec 2004 21:41 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Dodenstad_van_myra.JPG|Dodenstad_van_myra.JPG]]" <em>(&#123;&#123;GDFL}} de wiki)</em></li> <li>7 dec 2004 21:39 [[Gebruiker:Hstoffels|Hstoffels]] heeft ge-upload: "[[:Afbeelding:Kievskaya.jpg|Kievskaya.jpg]]" <em>(zelf gemaakt)</em></li> <li>7 dec 2004 21:39 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Amphitheater_Myra.jpg|Amphitheater_Myra.jpg]]" <em>(&#123;&#123;GDFL}} de wiki)</em></li> <li>7 dec 2004 21:37 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:Graf_st_Nikolaas.jpg|Graf_st_Nikolaas.jpg]]" <em>(&#123;&#123;GDFL}} de wiki)</em></li> <li>7 dec 2004 20:50 [[Gebruiker:Drdefcom|Drdefcom]] heeft ge-upload: "[[:Afbeelding:Enigma,stepping.jpg|Enigma,stepping.jpg]]" <em>(Copyright Tom Perera, alle rechten voorbehouden)</em></li> <li>7 dec 2004 20:50 [[Gebruiker:Drdefcom|Drdefcom]] heeft ge-upload: "[[:Afbeelding:Enigma,rotors.jpg|Enigma,rotors.jpg]]" <em>(Copyright Tom Perera, alle rechten voorbehouden)</em></li> <li>7 dec 2004 20:49 [[Gebruiker:Drdefcom|Drdefcom]] heeft ge-upload: "[[:Afbeelding:Enigma,rotor,left.jpg|Enigma,rotor,left.jpg]]" <em>(Copyright Tom Perera, alle rechten voorbehouden)</em></li> <li>7 dec 2004 20:48 [[Gebruiker:Drdefcom|Drdefcom]] heeft ge-upload: "[[:Afbeelding:Enigma,reflector.jpg|Enigma,reflector.jpg]]" <em>(Copyright Tom Perera, alle rechten voorbehouden)</em></li> <li>7 dec 2004 20:48 [[Gebruiker:Drdefcom|Drdefcom]] heeft ge-upload: "[[:Afbeelding:Enigma,plugboard.jpg|Enigma,plugboard.jpg]]" <em>(Copyright Tom Perera, alle rechten voorbehouden)</em></li> <li>7 dec 2004 20:47 [[Gebruiker:Drdefcom|Drdefcom]] heeft ge-upload: "[[:Afbeelding:Enigma,overview.jpg|Enigma,overview.jpg]]" <em>(Copyright Tom Perera, alle rechten voorbehouden)</em></li> <li>7 dec 2004 20:35 [[Gebruiker:Londenp|Londenp]] heeft ge-upload: "[[:Afbeelding:Donghwasa_2.JPG|Donghwasa_2.JPG]]" <em>(Eigen foto, geen copyright)</em></li> <li>7 dec 2004 20:34 [[Gebruiker:Londenp|Londenp]] heeft ge-upload: "[[:Afbeelding:Donghwasa_1.JPG|Donghwasa_1.JPG]]" <em>(Eigen foto, geen copyright)</em></li> <li>7 dec 2004 20:00 [[Gebruiker:Drdefcom|Drdefcom]] heeft ge-upload: "[[:Afbeelding:Enigma,wiringdiagram.png|Enigma,wiringdiagram.png]]" <em>(Stroomdiagram van de Enigma codeermachine)</em></li> <li>7 dec 2004 19:56 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Acer-saccharinum_bast.jpg|Acer-saccharinum_bast.jpg]]" <em>(Overgenomen van de Engelse wikipedia (Bark of the Silver Maple Photograph 2003-09-14 Karl DeBisschop Quincy, MA (USA)))</em></li> <li>7 dec 2004 19:55 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Acer-saccharinum_bladeren.jpg|Acer-saccharinum_bladeren.jpg]]" <em>(Overgenomen van de Engelse wikipedia (Bark of the Silver Maple Photograph 2003-09-14 Karl DeBisschop Quincy, MA (USA)))</em></li> <li>7 dec 2004 19:41 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Denisderougemont2.jpg|Denisderougemont2.jpg]]" <em>(denis de rougemont - door mij bewerkte foto)</em></li> <li>7 dec 2004 19:41 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Denisderougemont1.jpg|Denisderougemont1.jpg]]" <em>(denis de rougemont - door mij bewerkte foto)</em></li> <li>7 dec 2004 18:40 [[Gebruiker:Pethan|Pethan]] heeft ge-upload: "[[:Afbeelding:Anax_imperator.jpg|Anax_imperator.jpg]]" <em>(Anax imperator Grote keizerlibel &#91;http&#58;//www.kulak.ac.be/nl/KULAKAlgemeen/Natuur])</em></li> <li>7 dec 2004 18:39 [[Gebruiker:Pethan|Pethan]] heeft ge-upload: "[[:Afbeelding:09-Lestes_viridis-houtpantserjuffer2-D7.jpg|09-Lestes_viridis-houtpantserjuffer2-D7.jpg]]" <em>(Lestes viridis houtpantserjuffer van &#91;http&#58;//www.kulak.ac.be/nl/KULAKAlgemeen/Natuur])</em></li> <li>7 dec 2004 18:27 [[Gebruiker:Pethan|Pethan]] heeft ge-upload: "[[:Afbeelding:Kulak_azuurwaterjuffer.jpg|Kulak_azuurwaterjuffer.jpg]]" <em>(Kulak Azuurwaterjuffer van &#91;http&#58;//www.kulak.ac.be/nl/KULAKAlgemeen/Natuur])</em></li> <li>7 dec 2004 16:59 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Acer-rubrum_bloemen.jpg|Acer-rubrum_bloemen.jpg]]" <em>(Overgenomen van de Engelse wikipedia: &#123;&#123;GFDL}})</em></li> <li>7 dec 2004 16:58 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Acer-rubrum_bast.jpg|Acer-rubrum_bast.jpg]]" <em>(Overgenomen van de Engelse wikipedia: &#123;&#123;GFDL}})</em></li> <li>7 dec 2004 16:47 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Acer-rubrum_blad.JPG|Acer-rubrum_blad.JPG]]" <em>(Overgenomen van de Engelse wikipedia: &#123;&#123;GFDL}})</em></li> <li>7 dec 2004 16:30 [[Gebruiker:Bass|Bass]] heeft ge-upload: "[[:Afbeelding:Sarahbrightman.jpg|Sarahbrightman.jpg]]" <em>(Dit is een afbeelding van http:/www.sarah-brightman.com. Deze afbeelding mag gebruikt worden op websites, onder voorwaarde dat er een link onder staat naar de website www.sarah-brightman.com.)</em></li> <li>7 dec 2004 16:16 [[Gebruiker:Nikio|Nikio]] heeft ge-upload: "[[:Afbeelding:LocatieBartlehiem.png|LocatieBartlehiem.png]]" <em>(Kaart met de locatie van Bartlehiem, gemaakt uit sjabloon van Wikipedia-gebruiker Mtcv)</em></li> <li>7 dec 2004 15:32 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:KSalzburg.jpg|KSalzburg.jpg]]" <em>(Keurvorstendom Salzburg - vrij te gebruiken voor educatieve doeleinden - http&#58;//www.lib.utexas.edu/usage_statement.html)</em></li> <li>7 dec 2004 15:18 [[Gebruiker:JePe|JePe]] heeft ge-upload: "[[:Afbeelding:Subwoofer_downfiring.jpg|Subwoofer_downfiring.jpg]]" <em>(Eigen foto van subwoofer. &#123;&#123;eigenwerk}})</em></li> <li>7 dec 2004 15:13 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Wife.jpg|Wife.jpg]]" <em>(fiat Jos Heesen)</em></li> <li>7 dec 2004 14:58 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:GrhWb.jpg|GrhWb.jpg]]" <em>(Groothertogdom Würzburg - vrij te gebruiken voor educatieve doeleinden - http&#58;//www.lib.utexas.edu/usage_statement.html)</em></li> <li>7 dec 2004 14:27 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Spoelk.jpg|Spoelk.jpg]]" <em>(toestemming jan roorda)</em></li> <li>7 dec 2004 13:58 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Tiviakk.jpg|Tiviakk.jpg]]" <em>(fiat convekta)</em></li> <li>7 dec 2004 13:41 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:De-Munt-1900.jpg|De-Munt-1900.jpg]]" <em>(De Munt in Amsterdam tussen 1890 and 1900. Van &quot;The Library of Congress&quot;, http&#58;//hdl.loc.gov/loc.pnp/ppmsc.05763, no know usage restriction on this publication. &#123;&#123;PD}}))</em></li> <li>7 dec 2004 13:35 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Example-retouch-2.jpg|Example-retouch-2.jpg]]" <em>(Voorbeeld van retoucheren. Afbeelding is een detail van &#91;&#91;:Afbeelding:Paleis-op-de-dam-1900.jpg]], wat een public domain foto is van het Library of Congress http&#58;//hdl.loc.gov/loc.pnp/cph.3g02127. &#123;&#123;PD}})</em></li> <li>7 dec 2004 13:35 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Example-retouch-1.jpg|Example-retouch-1.jpg]]" <em>(Voorbeeld van retoucheren. Afbeelding is een detail van &#91;&#91;:Afbeelding:Paleis-op-de-dam-1900.jpg]], wat een public domain foto is van het Library of Congress http&#58;//hdl.loc.gov/loc.pnp/cph.3g02127. &#123;&#123;PD}})</em></li> <li>7 dec 2004 13:28 [[Gebruiker:Tr606|Tr606]] heeft ge-upload: "[[:Afbeelding:Raymond_goethals.jpg|Raymond_goethals.jpg]]" <em>(Raymond Goethals - bron: Engelse wiki)</em></li> <li>7 dec 2004 12:45 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Amsterdamse-Poort-1900.jpg|Amsterdamse-Poort-1900.jpg]]" <em>(Amsterdamse Poort te Haarlem tussen 1890 and 1900. Van &quot;The Library of Congress&quot;, http&#58;//hdl.loc.gov/loc.pnp/cph.3g02124 , no know usage restriction on this publication. &#123;&#123;PD}}))</em></li> <li>7 dec 2004 12:30 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Paleis-op-de-dam-1900.jpg|Paleis-op-de-dam-1900.jpg]]" <em>(Paleis op de Dam tussen 1890 and 1900. Van &quot;The Library of Congress&quot;, http&#58;//hdl.loc.gov/loc.pnp/cph.3g02127, no know usage restriction on this publication. &#123;&#123;PD}})</em></li> <li>7 dec 2004 11:24 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Centraal-Station-1900.jpg|Centraal-Station-1900.jpg]]" <em>(Het centraal station tussen 1890 and 1900. Van &quot;The Library of Congress&quot;, http&#58;//hdl.loc.gov/loc.pnp/cph.3g02120, no know usage restriction on this publication. &#123;&#123;PD}})</em></li> <li>7 dec 2004 11:13 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Manatee_with_calf.PD.jpg|Manatee_with_calf.PD.jpg]]" <em>(Afbeelding van Engelstalige Wikipedia &#123;&#123;PD}})</em></li> <li>7 dec 2004 10:37 [[Gebruiker:MarcoVD|MarcoVD]] heeft ge-upload: "[[:Afbeelding:Kerstboom.jpg|Kerstboom.jpg]]" <em>(van en: (tekst aldaar: Image and tree by the uploader))</em></li> <li>7 dec 2004 09:29 [[Gebruiker:MarcoVD|MarcoVD]] heeft ge-upload: "[[:Afbeelding:Keith_Richards.jpg|Keith_Richards.jpg]]" <em>(van en: (tekst aldaar: Merseybeat photo out of copyright))</em></li> <li>6 dec 2004 22:53 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:JohannesII.jpg|JohannesII.jpg]]" <em>(Johannes II van Liechtenstein door John Quincy Adams (1875 - 1933; een Weens portretschilder, niet de president van de VS) - langer dan 70 jaar dood, dus publiek domein &#123;&#123;PD}})</em></li> <li>6 dec 2004 22:52 [[Gebruiker:Quistnix|Quistnix]] heeft ge-upload: "[[:Afbeelding:Chocoladeletter_A.jpg|Chocoladeletter_A.jpg]]" <em>(Chocoladeletter A &#123;&#123;eigenwerk}})</em></li> <li>6 dec 2004 22:27 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Acer-capillipes_stam.jpg|Acer-capillipes_stam.jpg]]" <em>(Overgenomen van de Duitse wikipedia: &#123;&#123;GFDL}})</em></li> <li>6 dec 2004 22:26 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Acer-capillipes_blad.jpg|Acer-capillipes_blad.jpg]]" <em>(Overgenomen van de Duitse wikipedia: &#123;&#123;GFDL}})</em></li> <li>6 dec 2004 22:25 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Acer-capillipes.jpg|Acer-capillipes.jpg]]" <em>(Overgenomen van de Duitse wikipedia: &#123;&#123;Bild-GFDL}})</em></li> <li>6 dec 2004 22:24 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Example-enlarge-3-lineair.png|Example-enlarge-3-lineair.png]]" <em>(Voorbeeld met vergroten, eigen werk. &#123;&#123;PD}})</em></li> <li>6 dec 2004 22:24 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Example-enlarge-4-cubic.png|Example-enlarge-4-cubic.png]]" <em>(Voorbeeld met vergroten, eigen werk. &#123;&#123;PD}})</em></li> <li>6 dec 2004 22:24 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Example-enlarge-2-none.png|Example-enlarge-2-none.png]]" <em>(Voorbeeld met vergroten, eigen werk. &#123;&#123;PD}})</em></li> <li>6 dec 2004 22:24 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Example-enlarge-1-original.png|Example-enlarge-1-original.png]]" <em>(Voorbeeld met vergroten, eigen werk. &#123;&#123;PD}})</em></li> <li>6 dec 2004 21:49 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Speculaas.jpg|Speculaas.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>6 dec 2004 21:21 [[Gebruiker:Quistnix|Quistnix]] heeft ge-upload: "[[:Afbeelding:Nummerplaat_Aruba.jpg|Nummerplaat_Aruba.jpg]]" <em>(Nummerplaat uit Aruba - eigen werk &#123;&#123;GFDL}})</em></li> <li>6 dec 2004 21:15 [[Gebruiker:Cicero|Cicero]] heeft ge-upload: "[[:Afbeelding:Sainte_chapelle_int.450px.jpg|Sainte_chapelle_int.450px.jpg]]" <em>(van Engelse wikipedia, de omschrijving daar was: Sainte Chapelle interior, Paris. Photograph taken by Michael Reeve, 30 January 2004., &#123;&#123;GFDL}})</em></li> <li>6 dec 2004 21:00 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Creditcard.jpg|Creditcard.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>6 dec 2004 20:43 [[Gebruiker:Londenp|Londenp]] heeft ge-upload: "[[:Afbeelding:Kaart_busan.png|Kaart_busan.png]]" <em>(Overgenomen uit de duitse Wikipedia, 18:45, 6. Okt 2003 . . Diruwiki (3258 Byte) (Karte von Busan, Südekorea, selbstgezeichnet))</em></li> <li>6 dec 2004 19:04 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Example-vector-2.png|Example-vector-2.png]]" <em>(zelfde afbeelding, nu wat kleiner, en achtergrond is nu helemaal wit.)</em></li> <li>6 dec 2004 18:57 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Example-vector-2.png|Example-vector-2.png]]" <em>(zelfde afbeelding, nu wat kleiner.)</em></li> <li>6 dec 2004 18:57 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Example-vector-1.png|Example-vector-1.png]]" <em>(zelfde afbeelding, nu wat kleiner.)</em></li> <li>6 dec 2004 18:44 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Karte_oesterreich_wien.png|Karte_oesterreich_wien.png]]" <em>(kaart wenen in oostenrijk (engelse wikipedia))</em></li> <li>6 dec 2004 18:39 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Example-denoise-2.jpg|Example-denoise-2.jpg]]" <em>(Voorbeeld ruis verminderen. Bewerkt detail van GFDL foto (&#91;&#91;:Afbeelding:Kanarie.jpg]] 31 jan 2003) van &#91;&#91;Gebruiker:Jcwf]]. &#123;&#123;GFDL}})</em></li> <li>6 dec 2004 18:39 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Example-denoise-1.jpg|Example-denoise-1.jpg]]" <em>(Voorbeeld ruis verminderen. Bewerkt detail van GFDL foto (&#91;&#91;:Afbeelding:Kanarie.jpg]] 31 jan 2003) van &#91;&#91;Gebruiker:Jcwf]]. &#123;&#123;GFDL}})</em></li> <li>6 dec 2004 18:33 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Baldur_von_Schirach.jpg|Baldur_von_Schirach.jpg]]" <em>(baldur von schirach (engelse wikipedia))</em></li> <li>6 dec 2004 18:10 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Narodni_dom_triest.jpg|Narodni_dom_triest.jpg]]" <em>(narodni dom 1920 triest - rechten verjaard)</em></li> <li>6 dec 2004 18:10 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Sint-MaartenKortrijk.jpg|Sint-MaartenKortrijk.jpg]]" <em>(Sint-Maartenskerk - eigen foto)</em></li> <li>6 dec 2004 17:50 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Example-sharpen-2.jpg|Example-sharpen-2.jpg]]" <em>(Voorbeeld scherptefilter. Eigen foto. &#123;&#123;PD}})</em></li> <li>6 dec 2004 17:50 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Amphisbaenia_1.jpg|Amphisbaenia_1.jpg]]" <em>(Van Wiki Engels, zie (http&#58;//en.wikipedia.org/wiki/Image:Amphisbaenia_1.JPG))</em></li> <li>6 dec 2004 17:38 [[Gebruiker:JePe|JePe]] heeft ge-upload: "[[:Afbeelding:De_Slufter_Texel.jpg|De_Slufter_Texel.jpg]]" <em>(Eigen foto, De Slufter op Texel)</em></li> <li>6 dec 2004 17:35 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Zone_triest_1947-1954.jpg|Zone_triest_1947-1954.jpg]]" <em>(zelf gemaakt)</em></li> <li>6 dec 2004 16:11 [[Gebruiker:JePe|JePe]] heeft ge-upload: "[[:Afbeelding:Doldersummer_Veld_11-2004.jpg|Doldersummer_Veld_11-2004.jpg]]" <em>(Eigen foto van Doldersummerveld (nov 2004) vanaf de uitzichttoren, onderdeel van Nationaalpark Drents Friese Wold. In het midden is de zendmast van Smilde te herkennen.)</em></li> <li>6 dec 2004 15:59 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Potato_beetle_0482.jpg|Potato_beetle_0482.jpg]]" <em>(scherper gemaakt)</em></li> <li>6 dec 2004 12:12 [[Gebruiker:Welleman|Welleman]] heeft ge-upload: "[[:Afbeelding:Tunnel.jpg|Tunnel.jpg]]" <em>(aanbouw van een tunnel, door Peter Welleman)</em></li> <li>6 dec 2004 11:15 [[Gebruiker:Welleman|Welleman]] heeft ge-upload: "[[:Afbeelding:Steamer.jpg|Steamer.jpg]]" <em>(Opengewerkte tekening, door Peter Welleman)</em></li> <li>6 dec 2004 11:14 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Colorado_potato_beetle.jpg|Colorado_potato_beetle.jpg]]" <em>(Afbeelding afkomstig van Engelstalige Wikipedia: A &#91;&#91;Colorado potato beetle]]. USDA photograph by Scott Bauer. Image Number K4978-5.)</em></li> <li>6 dec 2004 11:08 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Potato_beetle_0482.jpg|Potato_beetle_0482.jpg]]" <em>(afbeelding afkomstig van Engelstalige Wikipedia; Colorado potato beetle, larval form)</em></li> <li>6 dec 2004 11:05 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Plumed.basilisk.750pix.jpg|Plumed.basilisk.750pix.jpg]]" <em>(Uit Wiki Engels, zie http&#58;//upload.wikimedia.org/wikipedia/en/9/94/Plumed.basilisk.750pix.jpg)</em></li> <li>6 dec 2004 00:49 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Example-artistic-1.jpg|Example-artistic-1.jpg]]" <em>(Voorbeeld van artistieke bewerking. Verkleinde foto van een eigen foto van Wouter Hagens &#91;&#91;:Afbeelding:Appelbloesem.jpg]].)</em></li> <li>6 dec 2004 00:48 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Example-artistic-2.jpg|Example-artistic-2.jpg]]" <em>(Voorbeeld van artistieke bewerking. Verkleinde foto van een eigen foto van Wouter Hagens &#91;&#91;:Afbeelding:Appelbloesem.jpg]].)</em></li> <li>6 dec 2004 00:12 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Example-vector-2.png|Example-vector-2.png]]" <em>(Voorbeeld bitmap naar vector omzetting, gemaakt met opensource programma Inkscape. Bewerkt detail van &#91;&#91;:Afbeelding:Nederlands-Verkeersbord-J20.png]]. &#123;&#123;GFDL}})</em></li> <li>6 dec 2004 00:12 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Example-vector-1.png|Example-vector-1.png]]" <em>(Voorbeeld bitmap naar vector omzetting, gemaakt met opensource programma Inkscape. Bewerkt detail van &#91;&#91;:Afbeelding:Nederlands-Verkeersbord-J20.png]]. &#123;&#123;GFDL}})</em></li> <li>5 dec 2004 23:04 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Example-curves-2.jpg|Example-curves-2.jpg]]" <em>(Verkleint en bewerkt detail van afbeelding Pop2.jpg, 4 dec 2004 23:26 eigen werk van Michiel1972 &#123;&#123;GFDL}})</em></li> <li>5 dec 2004 23:04 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Example-curves-1.jpg|Example-curves-1.jpg]]" <em>(Verkleint en bewerkt detail van afbeelding Pop2.jpg, 4 dec 2004 23:26 eigen werk van Michiel1972 &#123;&#123;GFDL}})</em></li> <li>5 dec 2004 22:42 [[Gebruiker:Avanbijleveld|Avanbijleveld]] heeft ge-upload: "[[:Afbeelding:RuslandKoersk.png|RuslandKoersk.png]]" <em>(Ligging oblast Koersk (en-wiki, GNU-lic))</em></li> <li>5 dec 2004 21:50 [[Gebruiker:JePe|JePe]] heeft ge-upload: "[[:Afbeelding:Texel_Airport.jpg|Texel_Airport.jpg]]" <em>(Eigen foto (vliegveld op Texel))</em></li> <li>5 dec 2004 21:48 [[Gebruiker:JePe|JePe]] heeft ge-upload: "[[:Afbeelding:Veerboot_Schulpengat.jpg|Veerboot_Schulpengat.jpg]]" <em>(Eigen foto (veerboot naar Texel))</em></li> <li>5 dec 2004 21:14 [[Gebruiker:David Eerdmans|David Eerdmans]] heeft ge-upload: "[[:Afbeelding:Kabelspoorlugano.jpg|Kabelspoorlugano.jpg]]" <em>(Eigen foto, GNU/FDL)</em></li> <li>5 dec 2004 21:14 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Rangeerlocomotief.jpg|Rangeerlocomotief.jpg]]" <em>(Rangeerlocomotief van de NS. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]], 9 oktober 2004 (open dag SSN))</em></li> <li>5 dec 2004 21:13 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Hagedis_tam.jpg|Hagedis_tam.jpg]]" <em>(Eigen foto van een wateragame op mijn bureau. )</em></li> <li>5 dec 2004 21:13 [[Gebruiker:David Eerdmans|David Eerdmans]] heeft ge-upload: "[[:Afbeelding:Kabelspoorlugano.jpg|Kabelspoorlugano.jpg]]" <em>(Test, sorry. Gaat iets mis met uploaden. Goede foto komt zo weer terug.)</em></li> <li>5 dec 2004 21:11 [[Gebruiker:David Eerdmans|David Eerdmans]] heeft ge-upload: "[[:Afbeelding:Kabelspoorlugano.jpg|Kabelspoorlugano.jpg]]" <em>(Eigen foto, GNU/FDL)</em></li> <li>5 dec 2004 21:10 [[Gebruiker:David Eerdmans|David Eerdmans]] heeft ge-upload: "[[:Afbeelding:Kabelspoorlugano.jpg|Kabelspoorlugano.jpg]]" <em>(Eigen foto, GNU/FDL (nieuwe versie foto, betere kleurbalans))</em></li> <li>5 dec 2004 20:33 [[Gebruiker:Quistnix|Quistnix]] heeft ge-upload: "[[:Afbeelding:Kabelbaan_bad_Ems.jpg|Kabelbaan_bad_Ems.jpg]]" <em>(Kabelbaan in Bad Ems (Dld) - eigen foto, ca. 1985 &#123;&#123;GFDL}})</em></li> <li>5 dec 2004 19:55 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Muisarm.jpg|Muisarm.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>5 dec 2004 19:18 [[Gebruiker:JePe|JePe]] heeft ge-upload: "[[:Afbeelding:Bergen-FloiBanen.jpg|Bergen-FloiBanen.jpg]]" <em>(Eigen foto, gemaakt tijdens vakantie in Noorwegen)</em></li> <li>5 dec 2004 19:17 [[Gebruiker:JePe|JePe]] heeft ge-upload: "[[:Afbeelding:Bergen-Noorwegen-Haven.jpg|Bergen-Noorwegen-Haven.jpg]]" <em>(Eigen foto, gemaakt tijdens vakantie in Noorwegen)</em></li> <li>5 dec 2004 19:16 [[Gebruiker:JePe|JePe]] heeft ge-upload: "[[:Afbeelding:Odda-Hardangerfjord.jpg|Odda-Hardangerfjord.jpg]]" <em>(Eigen foto, gemaakt tijdens vakantie in Noorwegen)</em></li> <li>5 dec 2004 19:05 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Mehmetali.gif|Mehmetali.gif]]" <em>(mehmet ali (engelse wikipedia))</em></li> <li>5 dec 2004 18:59 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Jacobsen's_organ.JPG|Jacobsen's_organ.JPG]]" <em>(Zelfgemaakte geconverteerde bitmap.)</em></li> <li>5 dec 2004 18:47 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:AswanHighDam_Egypt.jpg|AswanHighDam_Egypt.jpg]]" <em>(hoge aswandam (engelse wikipedia))</em></li> <li>5 dec 2004 18:47 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:AswanLowDam_Egypt.jpg|AswanLowDam_Egypt.jpg]]" <em>(lage aswandam (engelse wikipedia))</em></li> <li>5 dec 2004 18:34 [[Gebruiker:Rass|Rass]] heeft ge-upload: "[[:Afbeelding:Bitchfuckerbouyeri.jpg|Bitchfuckerbouyeri.jpg]]" <em>(Mohammed Bouyeri, zonder &quot;balkje&quot;)</em></li> <li>5 dec 2004 18:32 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Gebitsstatus.png|Gebitsstatus.png]]" <em>(ter vervanging van &quot;Gebitsstatus.BMP&quot;, nieuwe bestand is 70 maal kleiner. eigen werk van Bernard bill5)</em></li> <li>5 dec 2004 18:19 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:EgyptAbuSimbel.jpg|EgyptAbuSimbel.jpg]]" <em>(abu simbel (engelse wikipedia))</em></li> <li>5 dec 2004 17:12 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Jean-philippe_rameau.jpg|Jean-philippe_rameau.jpg]]" <em>(van fr:, publiek domein)</em></li> <li>5 dec 2004 16:41 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Mauereidechse.jpg|Mauereidechse.jpg]]" <em>(Uit Duitse Wiki, zie http&#58;//de.wikipedia.org/wiki/Bild:Mauereidechse.jpg)</em></li> <li>5 dec 2004 16:40 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Mauereidechse_Leutesdorf.jpg|Mauereidechse_Leutesdorf.jpg]]" <em>(Uit Duitse Wiki, zie http&#58;//de.wikipedia.org/wiki/Bild:Mauereidechse_Leutesdorf.jpg)</em></li> <li>5 dec 2004 16:29 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Iguana_iguana.jpg|Iguana_iguana.jpg]]" <em>(Uit de Duitse Wiki, zie http&#58;//de.wikipedia.org/wiki/Bild:Iguana_iguana.jpg)</em></li> <li>5 dec 2004 16:19 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Zauneidechse3.jpg|Zauneidechse3.jpg]]" <em>(Van Duitse Wiki, zie http&#58;//de.wikipedia.org/wiki/Bild:Zauneidechse3.jpg)</em></li> <li>5 dec 2004 16:17 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Eidechse1.jpg|Eidechse1.jpg]]" <em>(Uit Duitse Wiki, zie http&#58;//de.wikipedia.org/wiki/Bild:Eidechse1.jpg)</em></li> <li>5 dec 2004 16:11 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Lacerta_viridis.jpg|Lacerta_viridis.jpg]]" <em>(Uit Duitse Wiki, zie http&#58;//de.wikipedia.org/wiki/Bild:Lacerta_viridis.jpg)</em></li> <li>5 dec 2004 15:36 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Marie-Antoinette.jpg|Marie-Antoinette.jpg]]" <em>(Van Engelse pagina: PD)</em></li> <li>5 dec 2004 15:24 [[Gebruiker:Gamekeeper|Gamekeeper]] heeft ge-upload: "[[:Afbeelding:Goalkeeper.jpg|Goalkeeper.jpg]]" <em>(Publiek domein)</em></li> <li>5 dec 2004 15:12 [[Gebruiker:J.W.Richter|J.W.Richter]] heeft ge-upload: "[[:Afbeelding:Barnsteenroutes.gif|Barnsteenroutes.gif]]" <em>(Barnsteenroutes)</em></li> <li>5 dec 2004 15:04 [[Gebruiker:Nikio|Nikio]] heeft ge-upload: "[[:Afbeelding:LocatieJorwert.png|LocatieJorwert.png]]" <em>(Kaart met de locatie van Jorwert (Jorwerd), gemaakt uit sjabloon van Wikipedia-gebruiker Mtcv)</em></li> <li>5 dec 2004 14:50 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:200px-Viviparous_lizard_female_2004.jpg|200px-Viviparous_lizard_female_2004.jpg]]" <em>(Van wiki Engels, zie http&#58;//en.wikipedia.org/wiki/Image:Viviparous_lizard_female_2004.jpg)</em></li> <li>5 dec 2004 13:14 [[Gebruiker:Quistnix|Quistnix]] heeft ge-upload: "[[:Afbeelding:BlasonBOURGOGNE.JPG|BlasonBOURGOGNE.JPG]]" <em>(wapen van Bourgogne - van fr:wikipedia - Dessiné par --&#91;&#91;:fr:Utilisateur:MG&#124;&amp;#61472;-M-G***]] &#123;&#123;GFDL}})</em></li> <li>5 dec 2004 12:37 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Lake_Nasser_Vista.jpg|Lake_Nasser_Vista.jpg]]" <em>(nassermeer uitzicht (engelse wikipedia))</em></li> <li>5 dec 2004 11:35 [[Gebruiker:Bartux|Bartux]] heeft ge-upload: "[[:Afbeelding:Neptune.jpg|Neptune.jpg]]" <em>(Voyager 2 foto Neptunus - augustus 1989 - bron: http&#58;//photojournal.jpl.nasa.gov/catalog/PIA00046 &#123;&#123;PD}})</em></li> <li>5 dec 2004 06:30 [[Gebruiker:Londenp|Londenp]] heeft ge-upload: "[[:Afbeelding:Karte_daegu.png|Karte_daegu.png]]" <em>(overgenomen uit Duitse Wikipedia, 18:46, 6. Okt 2003 . . Diruwiki (3264 Byte) (Karte von Daegu, Südkorea, selbstgezeichnet))</em></li> <li>5 dec 2004 05:59 [[Gebruiker:Londenp|Londenp]] heeft ge-upload: "[[:Afbeelding:Papiermachine.gif|Papiermachine.gif]]" <em>(Copyright Crown Van Gelder N.V. Met permissie vrijgegeven voor gebruik in Wikipedia op 29.11.2004.)</em></li> <li>5 dec 2004 01:23 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Doolhof.png|Doolhof.png]]" <em>(Voorbeeld van een doolhof. Eigenwerk. &#123;&#123;PD}})</em></li> <li>4 dec 2004 22:52 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Russische_Stoomlocomotief.jpg|Russische_Stoomlocomotief.jpg]]" <em>(Russische stoomlocomotief, Treinmuseum Sint Petersburg. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]], augustus 2002)</em></li> <li>4 dec 2004 22:26 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Pop2.jpg|Pop2.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>4 dec 2004 21:41 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Commodore64.jpg|Commodore64.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>4 dec 2004 21:26 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Camping.jpg|Camping.jpg]]" <em>(van beelddonateur &#91;&#91;Wikipedia:Peter Polling]])</em></li> <li>4 dec 2004 21:14 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Loch.jpg|Loch.jpg]]" <em>(van beelddonateur &#91;&#91;Wikipedia:Peter Polling]])</em></li> <li>4 dec 2004 21:12 [[Gebruiker:Welleman|Welleman]] heeft ge-upload: "[[:Afbeelding:LNGtanker.jpg|LNGtanker.jpg]]" <em>(Opgewerkte tekening van LNG tanker, zelf getekend)</em></li> <li>4 dec 2004 20:58 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Koud.jpg|Koud.jpg]]" <em>(foto door Victor Bos http&#58;//nl.wikipedia.org/wiki/Wikipedia:Victor_Bos)</em></li> <li>4 dec 2004 20:54 [[Gebruiker:Welleman|Welleman]] heeft ge-upload: "[[:Afbeelding:Hybrid.jpg|Hybrid.jpg]]" <em>(Opengewerkte tekening van hybride motor, zelf getekend)</em></li> <li>4 dec 2004 20:53 [[Gebruiker:Welleman|Welleman]] heeft ge-upload: "[[:Afbeelding:Prius.jpg|Prius.jpg]]" <em>(Opengewerkte tekening van de Toyota Prius, zelf getekend)</em></li> <li>4 dec 2004 20:29 [[Gebruiker:Goodies|Goodies]] heeft ge-upload: "[[:Afbeelding:Fibula2.jpg|Fibula2.jpg]]" <em>(foto fibula uit webshop historicalshop.com)</em></li> <li>4 dec 2004 20:29 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Ferdinand_III.jpg|Ferdinand_III.jpg]]" <em>(ferdinand III van het heilige roomse rijk (engelse wikipedia))</em></li> <li>4 dec 2004 20:21 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Sluisbelfort.jpg|Sluisbelfort.jpg]]" <em>(gemeente Sluis)</em></li> <li>4 dec 2004 20:18 [[Gebruiker:Welleman|Welleman]] heeft ge-upload: "[[:Afbeelding:Maglev.jpg|Maglev.jpg]]" <em>(Opengewerkte tekening van een zweeftrein)</em></li> <li>4 dec 2004 20:15 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Vandale.jpg|Vandale.jpg]]" <em>(Johan Hendrik van Dale)</em></li> <li>4 dec 2004 20:12 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Francis_I_Holy_Roman_Emperor.jpg|Francis_I_Holy_Roman_Emperor.jpg]]" <em>(frans i van het heilige roomse rijk (engelse wikipedia))</em></li> <li>4 dec 2004 19:56 [[Gebruiker:WeeJeeVee|WeeJeeVee]] heeft ge-upload: "[[:Afbeelding:Hand_1_1.jpg|Hand_1_1.jpg]]" <em>(zelf gemaakt)</em></li> <li>4 dec 2004 19:28 [[Gebruiker:Dick Bos|Dick Bos]] heeft ge-upload: "[[:Afbeelding:MK_banner.gif|MK_banner.gif]]" <em>(logo Miss Koop vrij te verspreiden)</em></li> <li>4 dec 2004 19:09 [[Gebruiker:Dick Bos|Dick Bos]] heeft ge-upload: "[[:Afbeelding:Banner-koop-niets.png|Banner-koop-niets.png]]" <em>(banner Niet-Winkeldag vrij om te verspreiden)</em></li> <li>4 dec 2004 19:05 [[Gebruiker:Nikio|Nikio]] heeft ge-upload: "[[:Afbeelding:Huns.png|Huns.png]]" <em>(Kaart met de locatie van Húns (Huins), gemaakt uit sjabloon van Wikipedia-gebruiker Mtcv)</em></li> <li>4 dec 2004 18:52 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Charles_VI.jpg|Charles_VI.jpg]]" <em>(karel vi van het heilige roomse rijk (engelse wikipedia))</em></li> <li>4 dec 2004 18:46 [[Gebruiker:David Eerdmans|David Eerdmans]] heeft ge-upload: "[[:Afbeelding:Warschau.jpg|Warschau.jpg]]" <em>(Eigen foto, GNU/FDL)</em></li> <li>4 dec 2004 18:46 [[Gebruiker:David Eerdmans|David Eerdmans]] heeft ge-upload: "[[:Afbeelding:WaalbrugNijmegen.jpg|WaalbrugNijmegen.jpg]]" <em>(Eigen foto, GNU/FDL)</em></li> <li>4 dec 2004 18:46 [[Gebruiker:David Eerdmans|David Eerdmans]] heeft ge-upload: "[[:Afbeelding:TramBern.jpg|TramBern.jpg]]" <em>(Eigen foto, GNU/FDL)</em></li> <li>4 dec 2004 18:45 [[Gebruiker:David Eerdmans|David Eerdmans]] heeft ge-upload: "[[:Afbeelding:Nijmegen.jpg|Nijmegen.jpg]]" <em>(Eigen foto, GNU/FDL)</em></li> <li>4 dec 2004 18:45 [[Gebruiker:David Eerdmans|David Eerdmans]] heeft ge-upload: "[[:Afbeelding:Kabelspoorlugano.jpg|Kabelspoorlugano.jpg]]" <em>(Eigen foto, GNU/FDL)</em></li> <li>4 dec 2004 18:45 [[Gebruiker:David Eerdmans|David Eerdmans]] heeft ge-upload: "[[:Afbeelding:Eindhovenskyline.jpg|Eindhovenskyline.jpg]]" <em>(Eigen foto, GNU/FDL)</em></li> <li>4 dec 2004 18:44 [[Gebruiker:David Eerdmans|David Eerdmans]] heeft ge-upload: "[[:Afbeelding:BramDeGroot.jpg|BramDeGroot.jpg]]" <em>(Eigen foto, GNU/FDL)</em></li> <li>4 dec 2004 18:43 [[Gebruiker:David Eerdmans|David Eerdmans]] heeft ge-upload: "[[:Afbeelding:BBAbus.jpg|BBAbus.jpg]]" <em>(Eigen foto, GNU/FDL)</em></li> <li>4 dec 2004 18:41 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:MariaTheresa.jpg|MariaTheresa.jpg]]" <em>(maria theresia (engelse wikipedia))</em></li> <li>4 dec 2004 18:34 [[Gebruiker:Dick Bos|Dick Bos]] heeft ge-upload: "[[:Afbeelding:NietWinkelDag2004Afoort.jpeg|NietWinkelDag2004Afoort.jpeg]]" <em>(Amersfoort Niet Winkeldag 2004 afgestaan door Maranke)</em></li> <li>4 dec 2004 18:31 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Zeelandbrug-waiting-1986.jpg|Zeelandbrug-waiting-1986.jpg]]" <em>(Zeelandbrug, wachten op de brug, 1986, eigen foto. &#123;&#123;PD}})</em></li> <li>4 dec 2004 17:34 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Voelkerschlacht.jpg|Voelkerschlacht.jpg]]" <em>(monument leipzig (engelse wikipedia))</em></li> <li>4 dec 2004 17:33 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Map_of_Leipzig.png|Map_of_Leipzig.png]]" <em>(kaart gevecht van Leipzig (engelse wikipedia))</em></li> <li>4 dec 2004 16:59 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Sterappel.jpg|Sterappel.jpg]]" <em>(zelfgemaakte foto van de Sterappel; begin december)</em></li> <li>4 dec 2004 16:02 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Koninklijk_rijtuig_NL.jpg|Koninklijk_rijtuig_NL.jpg]]" <em>(Nederlands koninklijk rijtuig, station Utrecht Centraal. Eigen foto &#91;&#91;Gebruiker:Markv&#124;Mark Voorendt]], november 2004.)</em></li> <li>4 dec 2004 15:50 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Harik.jpg|Harik.jpg]]" <em>(fiat Otto Borik fotograaf)</em></li> <li>4 dec 2004 12:48 [[Gebruiker:Pronk|Pronk]] heeft ge-upload: "[[:Afbeelding:Warstory.jpg|Warstory.jpg]]" <em>(www.brothersinarmsgame.com - open source, plaatje gepubliceerd in zomer van 2004 voor publicatie)</em></li> <li>4 dec 2004 12:22 [[Gebruiker:J.W.Richter|J.W.Richter]] heeft ge-upload: "[[:Afbeelding:Barnsteenroutes.gif|Barnsteenroutes.gif]]" <em>(Barnsteen_routes)</em></li> <li>4 dec 2004 12:19 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:NedGuyanaLocatie.png|NedGuyanaLocatie.png]]" <em>(kaartje nederlands guyana (zelf gemaakt))</em></li> <li>4 dec 2004 12:13 [[Gebruiker:J.W.Richter|J.W.Richter]] heeft ge-upload: "[[:Afbeelding:Bernstein_Handelsrouten.gif|Bernstein_Handelsrouten.gif]]" <em>(Barnsteenroutes)</em></li> <li>4 dec 2004 06:35 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Grevenhuis.jpg|Grevenhuis.jpg]]" <em>(Grevenhuis)</em></li> <li>4 dec 2004 02:42 [[Gebruiker:Dexsuperior|Dexsuperior]] heeft ge-upload: "[[:Afbeelding:Luchtfoto_wijkaanzee1999.jpg|Luchtfoto_wijkaanzee1999.jpg]]" <em>(Luchtfoto 1999, gemaakt door KLPD, ondertussen verouderd en daardoor vrij van rechten)</em></li> <li>4 dec 2004 02:36 [[Gebruiker:Dexsuperior|Dexsuperior]] heeft ge-upload: "[[:Afbeelding:Luchtfoto_wijkaanzee1938.gif|Luchtfoto_wijkaanzee1938.gif]]" <em>(Rijksluchtvaartdienst 1938, auteursrecht vrij)</em></li> <li>3 dec 2004 23:02 [[Gebruiker:Svdmolen|Svdmolen]] heeft ge-upload: "[[:Afbeelding:SPlogo.jpg|SPlogo.jpg]]" <em>(SPlogo - eigenwerk met wikiplaatjes - &#123;&#123;PD}})</em></li> <li>3 dec 2004 22:43 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:RuslandCentraalGenummerd.png|RuslandCentraalGenummerd.png]]" <em>(hernummering nl &#123;&#123;GDFL}})</em></li> <li>3 dec 2004 22:05 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Sleutelhangers.jpg|Sleutelhangers.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>3 dec 2004 21:24 [[Gebruiker:Kero|Kero]] heeft ge-upload: "[[:Afbeelding:Jalal_Talabani.jpg|Jalal_Talabani.jpg]]" <em>(Jalal Talabani; Behrouz Mehri/AFP-Getty Images)</em></li> <li>3 dec 2004 21:13 [[Gebruiker:Jürgen|Jürgen]] heeft ge-upload: "[[:Afbeelding:Leefgebied_vos.JPG|Leefgebied_vos.JPG]]" <em>(Bewerking afbeelding: afbeelding_(kaart).jpg)</em></li> <li>3 dec 2004 20:54 [[Gebruiker:Jürgen|Jürgen]] heeft ge-upload: "[[:Afbeelding:Leefgebied_reuzenpanda.JPG|Leefgebied_reuzenpanda.JPG]]" <em>(Bewerking afbeelding: afbeelding_(kaart).jpg)</em></li> <li>3 dec 2004 20:49 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:RW67Locatie.png|RW67Locatie.png]]" <em>(Locatie RW67, eigen werk, &#123;&#123;PD}})</em></li> <li>3 dec 2004 20:23 [[Gebruiker:Jürgen|Jürgen]] heeft ge-upload: "[[:Afbeelding:Leefgebied_orang_oetan.JPG|Leefgebied_orang_oetan.JPG]]" <em>(Bewerking afbeelding: afbeelding_(kaart).jpg)</em></li> <li>3 dec 2004 20:10 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Pastinaak.png|Pastinaak.png]]" <em>(Pastinaak (eigen werk) GFDL &#123;&#123;GFDL}})</em></li> <li>3 dec 2004 19:24 [[Gebruiker:Gert-Paul|Gert-Paul]] heeft ge-upload: "[[:Afbeelding:Firefox10NL.png|Firefox10NL.png]]" <em>(Firefox 1.0 op Windows XP)</em></li> <li>3 dec 2004 19:07 [[Gebruiker:B kimmel|B kimmel]] heeft ge-upload: "[[:Afbeelding:Kameleon_kenmerken.JPG|Kameleon_kenmerken.JPG]]" <em>(Zelfgemaakte afbeelding en dat is wel te zien.)</em></li> <li>3 dec 2004 19:03 [[Gebruiker:Svdmolen|Svdmolen]] heeft ge-upload: "[[:Afbeelding:K&Clogo.jpg|K&Clogo.jpg]]" <em>(K&amp;Clogo - eigenwerk met wikiplaatjes - &#123;&#123;PD}})</em></li> <li>3 dec 2004 19:02 [[Gebruiker:Svdmolen|Svdmolen]] heeft ge-upload: "[[:Afbeelding:W&Tlogo.jpg|W&Tlogo.jpg]]" <em>(W&amp;Tlogo - eigenwerk met wikiplaatjes - &#123;&#123;PD}})</em></li> <li>3 dec 2004 19:01 [[Gebruiker:Svdmolen|Svdmolen]] heeft ge-upload: "[[:Afbeelding:GPlogo.jpg|GPlogo.jpg]]" <em>(GPlogo - eigenwerk met wikiplaatjes - &#123;&#123;PD}})</em></li> <li>3 dec 2004 16:55 [[Gebruiker:IJzeren Jan|IJzeren Jan]] heeft ge-upload: "[[:Afbeelding:Leonid_Kravtsjoek.jpg|Leonid_Kravtsjoek.jpg]]" <em>(De Oekraïense president Leonid Kravtsjoek, augustus 1992 (eigen foto))</em></li> <li>3 dec 2004 16:23 [[Gebruiker:Nikio|Nikio]] heeft ge-upload: "[[:Afbeelding:LocatieKornwerderzand.png|LocatieKornwerderzand.png]]" <em>(Kaart met de locatie van Kornwerderzand, gemaakt uit sjabloon van Wikipedia-gebruiker Mtcv)</em></li> <li>3 dec 2004 16:14 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Kasteel_Duurstede.jpg|Kasteel_Duurstede.jpg]]" <em>(Kasteel Duurstede. Eigen foto &#91;&#91;Gebruiker:Markv]], augustus 2004)</em></li> <li>3 dec 2004 16:07 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Kasteel_Duurstede.jpg|Kasteel_Duurstede.jpg]]" <em>(Kasteel Duurstede. Eigen foto &#91;&#91;Gebruiker:Markv]], augustus 2004.)</em></li> <li>3 dec 2004 15:52 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Den_Haag_Centrum_nieuwe_architectuur.jpg|Den_Haag_Centrum_nieuwe_architectuur.jpg]]" <em>(Den Haag Centrum, nieuwe architectuur nabij het Centraal Station. Eigen foto &#91;&#91;Gebruiker:Markv]], november 2004)</em></li> <li>3 dec 2004 15:48 [[Gebruiker:Nikio|Nikio]] heeft ge-upload: "[[:Afbeelding:LocatieBreezanddijk.png|LocatieBreezanddijk.png]]" <em>(Kaart met de locatie van Breezanddijk, gemaakt uit sjabloon van Wikipedia-gebruiker Mtcv)</em></li> <li>3 dec 2004 15:43 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Zoetermeer_t_Oude_Huis.jpg|Zoetermeer_t_Oude_Huis.jpg]]" <em>(&#39;t Oude Huis (gemeentemuseum) te Zoetermeer. Eigen foto &#91;&#91;Gebruiker:Markv]], juli 2004)</em></li> <li>3 dec 2004 15:39 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:MecklenburgKaart.jpg|MecklenburgKaart.jpg]]" <em>(Mecklenburg 1803 - vrij te gebruiken voor educatieve doeleinden - http&#58;//www.lib.utexas.edu/usage_statement.html)</em></li> <li>3 dec 2004 15:27 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Zoetermeer_sprinter.jpg|Zoetermeer_sprinter.jpg]]" <em>(Sprinter op station Zoetermeer. Eigen foto &#91;&#91;Gebruiker:Markv]], december 2004)</em></li> <li>3 dec 2004 15:09 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Spar_naalden.jpg|Spar_naalden.jpg]]" <em>(zelfgemaakte foto van takje van fijnspar; begin december)</em></li> <li>3 dec 2004 15:06 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Zoetermeer_Citypendel.jpg|Zoetermeer_Citypendel.jpg]]" <em>(Citypendel op de Zoetermeer stadslijn. Eigen foto &#91;&#91;Gebruiker:Markv]], juli 2004)</em></li> <li>3 dec 2004 14:59 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Wuitbreiding.jpg|Wuitbreiding.jpg]]" <em>(Württemberg 1495-1810 - vrij te gebruiken voor educatieve doeleinden - http&#58;//www.lib.utexas.edu/usage_statement.html - Courtesy of the University of Texas Libraries, The University of Texas at Austin.)</em></li> <li>3 dec 2004 14:45 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:BadenUitbreiding.jpg|BadenUitbreiding.jpg]]" <em>(Baden 1801-1819 - vrij te gebruiken voor educatieve doeleinden - http&#58;//www.lib.utexas.edu/usage_statement.html)</em></li> <li>3 dec 2004 14:22 [[Gebruiker:Vussiewussie|Vussiewussie]] heeft ge-upload: "[[:Afbeelding:Zeenaald.jpg|Zeenaald.jpg]]" <em>(foto van een zeenaald (vis), de foto is beschikbaar onder de GNU free licentie)</em></li> <li>3 dec 2004 14:06 [[Gebruiker:Nikio|Nikio]] heeft ge-upload: "[[:Afbeelding:LocatieZurich.png|LocatieZurich.png]]" <em>(Kaart met de locatie van Zurich, gemaakt uit sjabloon van Wikipedia-gebruiker Mtcv)</em></li> <li>3 dec 2004 10:58 [[Gebruiker:Chrisevers|Chrisevers]] heeft ge-upload: "[[:Afbeelding:Alcatraz.jpg|Alcatraz.jpg]]" <em>(Eerdere versie hersteld)</em></li> <li>3 dec 2004 10:54 [[Gebruiker:Wobble|Wobble]] heeft ge-upload: "[[:Afbeelding:Degage.jpg|Degage.jpg]]" <em>(zelf gemaakt)</em></li> <li>3 dec 2004 09:45 [[Gebruiker:Bries|Bries]] heeft ge-upload: "[[:Afbeelding:Vote-SWAPO-2004-2.jpg|Vote-SWAPO-2004-2.jpg]]" <em>(Billboard SWAPO 2004 met Hifikepunye Pohamba als presidentskandidaat. )</em></li> <li>3 dec 2004 09:42 [[Gebruiker:Bries|Bries]] heeft ge-upload: "[[:Afbeelding:Vote-SWAPO-2004-1.jpg|Vote-SWAPO-2004-1.jpg]]" <em>(Billboard SWAPO 2004 met Hifikepunye Pohamba als presidentskandidaat. )</em></li> <li>3 dec 2004 06:48 [[Gebruiker:Bries|Bries]] heeft ge-upload: "[[:Afbeelding:250px-Namibia_Regions_numbered_300px.png|250px-Namibia_Regions_numbered_300px.png]]" <em>(overgenomen van Duitse Wikipedia)</em></li> <li>2 dec 2004 23:23 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Sint-Nicolaas.jpg|Sint-Nicolaas.jpg]]" <em>(van engelse pagina: Saint Nicholas, from an early 20th century holy card.)</em></li> <li>2 dec 2004 22:18 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:FransIO.jpg|FransIO.jpg]]" <em>(Frans II &#123;&#123;PD}})</em></li> <li>2 dec 2004 22:15 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:FerdinandIO.jpg|FerdinandIO.jpg]]" <em>(Ferdinand I van Oostenrijk &#123;&#123;PD}})</em></li> <li>2 dec 2004 21:59 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:KarelIO.jpg|KarelIO.jpg]]" <em>(Karel i van Oostenrijk - PD van en:)</em></li> <li>2 dec 2004 21:47 [[Gebruiker:Nikio|Nikio]] heeft ge-upload: "[[:Afbeelding:LocatieReahus.png|LocatieReahus.png]]" <em>(Kaart met de locatie van Reahûs (Roodhuis), gemaakt uit sjabloon van Wikipedia-gebruiker Mtcv)</em></li> <li>2 dec 2004 21:17 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:NorodomSihanouk.jpg|NorodomSihanouk.jpg]]" <em>(Norodom Sihanouk - Ministry of Foreign Affairs - Photographic Service - vrij te gebruiken met bronvermelding)</em></li> <li>2 dec 2004 20:52 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:RuslandOeralfederaaldistrictGenummerd.png|RuslandOeralfederaaldistrictGenummerd.png]]" <em>(&#123;&#123;GDFL}} ja wiki:herbewerkt)</em></li> <li>2 dec 2004 20:52 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:RuslandOeralfederaaldistrict.png|RuslandOeralfederaaldistrict.png]]" <em>(&#123;&#123;GDFL}} en wiki)</em></li> <li>2 dec 2004 20:42 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:KPWilhelm.jpg|KPWilhelm.jpg]]" <em>(Kroonprins &#91;&#91;Wilhelm van Pruisen]] - public domain van http&#58;//www.gwpda.org/photos/greatwar.htm)</em></li> <li>2 dec 2004 20:35 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Naaimachine.jpg|Naaimachine.jpg]]" <em>(&#123;&#123;eigenwerk}} (nee, deze is van mijn vriendin))</em></li> <li>2 dec 2004 20:24 [[Gebruiker:IJzeren Jan|IJzeren Jan]] heeft ge-upload: "[[:Afbeelding:Levko_Loekjanenko.jpg|Levko_Loekjanenko.jpg]]" <em>(Levko Loekjanenko. Foto van http&#58;//maidan.org.ua/n/foto/1047247714 (GNU-FDL))</em></li> <li>2 dec 2004 20:21 [[Gebruiker:Nikio|Nikio]] heeft ge-upload: "[[:Afbeelding:LocatieWjelsryp.png|LocatieWjelsryp.png]]" <em>(Kaart met de locatie van Wjelsryp (Welsrijp), gemaakt uit sjabloon van Wikipedia-gebruiker Mtcv)</em></li> <li>2 dec 2004 20:15 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Washer.600pix.jpg|Washer.600pix.jpg]]" <em>(van engelse wikipedia &#91;&#91;:en:Image:Washer.600pix.jpg]], met tekst: &quot;Front-loading washing machine.Taken by Adrian Pingstone in England in May 2003 and released to the public domain.&quot; &#123;&#123;PD}})</em></li> <li>2 dec 2004 18:24 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Signature-Peguy.jpg|Signature-Peguy.jpg]]" <em>(handtekening peguy, rechten verjaard)</em></li> <li>2 dec 2004 18:23 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Peguy.jpg|Peguy.jpg]]" <em>(foto peguy, rechten verjaard (voor 1914))</em></li> <li>2 dec 2004 17:10 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Milan_Vidmar.jpg|Milan_Vidmar.jpg]]" <em>( fotorechten verjaard)</em></li> <li>2 dec 2004 14:47 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:DSC00190.JPG|DSC00190.JPG]]" <em>(eigen foto)</em></li> <li>2 dec 2004 14:37 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:Scannen0991.JPG|Scannen0991.JPG]]" <em>(eigen foto)</em></li> <li>2 dec 2004 14:19 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:DSC00190.JPG|DSC00190.JPG]]" <em>(eigen foto)</em></li> <li>2 dec 2004 14:09 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:Scannen0075.JPG|Scannen0075.JPG]]" <em>(eigen foto)</em></li> <li>2 dec 2004 13:42 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:Scannen0090.JPG|Scannen0090.JPG]]" <em>(eigen foto)</em></li> <li>2 dec 2004 13:40 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:Scannen0077.JPG|Scannen0077.JPG]]" <em>(eigen foto)</em></li> <li>2 dec 2004 13:39 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_dornava.png|Sl_gemeente_dornava.png]]" <em>(gemaakt door gebruiker Plp sl.wikipedia; auteursrechtenvrij)</em></li> <li>2 dec 2004 13:39 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_brda.png|Sl_gemeente_brda.png]]" <em>(gemaakt door gebruiker Plp sl.wikipedia; auteursrechtenvrij)</em></li> <li>2 dec 2004 13:38 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:Scannen0056.JPG|Scannen0056.JPG]]" <em>(eigen foto)</em></li> <li>2 dec 2004 13:38 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_dravograd.png|Sl_gemeente_dravograd.png]]" <em>(gemaakt door gebruiker Plp sl.wikipedia; auteursrechtenvrij)</em></li> <li>2 dec 2004 13:30 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:DSC00045nieuw.jpg|DSC00045nieuw.jpg]]" <em>(eigen foto)</em></li> <li>2 dec 2004 13:12 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:Scannen0020.JPG|Scannen0020.JPG]]" <em>(eigen foto)</em></li> <li>2 dec 2004 13:09 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:Scannen0006.jpg|Scannen0006.jpg]]" <em>(eigen foto)</em></li> <li>2 dec 2004 13:02 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Pleterjea.jpg|Pleterjea.jpg]]" <em>(auteursrecht prentbriefkaart verjaard )</em></li> <li>2 dec 2004 12:57 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_sentjernej.png|Sl_gemeente_sentjernej.png]]" <em>(gemaakt door gebruiker Plp sl.wikipedia; auteursrechtenvrij)</em></li> <li>2 dec 2004 12:57 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:Scannen123.jpg|Scannen123.jpg]]" <em>(eigen foto)</em></li> <li>2 dec 2004 12:54 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:Scannen0004.jpg|Scannen0004.jpg]]" <em>(eigen foto)</em></li> <li>2 dec 2004 12:49 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:Scannennieuwe.jpg|Scannennieuwe.jpg]]" <em>(eigen foto)</em></li> <li>2 dec 2004 12:42 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:Nolherman.jpeg|Nolherman.jpeg]]" <em>(eigen foto)</em></li> <li>2 dec 2004 12:42 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:Nolherman.jpeg|Nolherman.jpeg]]" <em>(eigen foto)</em></li> <li>2 dec 2004 12:29 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:Scannen12.jpg|Scannen12.jpg]]" <em>(foto uit eigen archief)</em></li> <li>2 dec 2004 12:29 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:Scannen12.jpg|Scannen12.jpg]]" <em>(foto uit eigen archief)</em></li> <li>2 dec 2004 12:28 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:Scannen.jpg|Scannen.jpg]]" <em>(foto uit eigen archief)</em></li> <li>2 dec 2004 12:25 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:Scannen.jpg|Scannen.jpg]]" <em>(eigen foto uit archief)</em></li> <li>2 dec 2004 12:15 [[Gebruiker:Blom86|Blom86]] heeft ge-upload: "[[:Afbeelding:Papparenz.jpeg|Papparenz.jpeg]]" <em>(www.renz.nl)</em></li> <li>2 dec 2004 11:45 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_divaca.png|Sl_gemeente_divaca.png]]" <em>(gemaakt door gebruiker Plp sl.wikipedia; auteursrechtenvrij)</em></li> <li>2 dec 2004 11:26 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_markovci.png|Sl_gemeente_markovci.png]]" <em>(gemaakt door gebruiker Plp sl.wikipedia; auteursrechtenvrij)</em></li> <li>2 dec 2004 10:43 [[Gebruiker:Belgeld|Belgeld]] heeft ge-upload: "[[:Afbeelding:Optische_telefoonkaart.jpg|Optische_telefoonkaart.jpg]]" <em>(Optische telefoonkaart )</em></li> <li>2 dec 2004 10:38 [[Gebruiker:Belgeld|Belgeld]] heeft ge-upload: "[[:Afbeelding:Hol02r.jpg|Hol02r.jpg]]" <em>(Nederlandse telefoonkaart met chip.)</em></li> <li>2 dec 2004 10:28 [[Gebruiker:Bries|Bries]] heeft ge-upload: "[[:Afbeelding:RehobothBasters.gif|RehobothBasters.gif]]" <em>(Vlag van Rehoboth Basters)</em></li> <li>2 dec 2004 10:14 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Telkaart_strip.jpg|Telkaart_strip.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>2 dec 2004 10:06 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Telkaart.jpg|Telkaart.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>2 dec 2004 10:03 [[Gebruiker:Bries|Bries]] heeft ge-upload: "[[:Afbeelding:Cabinda.gif|Cabinda.gif]]" <em>(Vlag van Cabinda)</em></li> <li>2 dec 2004 07:45 [[Gebruiker:IJzeren Jan|IJzeren Jan]] heeft ge-upload: "[[:Afbeelding:Jusch_Julia.jpg|Jusch_Julia.jpg]]" <em>(Joesjtsjenko + Tymosjenko, nov. 2004; from Maidan.org (GNU-FDL))</em></li> <li>2 dec 2004 07:34 [[Gebruiker:IJzeren Jan|IJzeren Jan]] heeft ge-upload: "[[:Afbeelding:Moroz_2003.jpg|Moroz_2003.jpg]]" <em>(Afkomstig van Maidan.org; GNU-FDL)</em></li> <li>2 dec 2004 01:15 [[Gebruiker:Yorg|Yorg]] heeft ge-upload: "[[:Afbeelding:Nobelport_Zierikzee_2.jpg|Nobelport_Zierikzee_2.jpg]]" <em>(by myself)</em></li> <li>2 dec 2004 01:11 [[Gebruiker:Yorg|Yorg]] heeft ge-upload: "[[:Afbeelding:Nobelport_Zierikzee_1.jpg|Nobelport_Zierikzee_1.jpg]]" <em>(by myself)</em></li> <li>2 dec 2004 00:55 [[Gebruiker:Yorg|Yorg]] heeft ge-upload: "[[:Afbeelding:Oostkerk_Middelburg.jpg|Oostkerk_Middelburg.jpg]]" <em>(by myself)</em></li> <li>1 dec 2004 22:44 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_tolmin.png|Sl_gemeente_tolmin.png]]" <em>(gemaakt door gebruiker Plp van sl.wikipedia; auteursrechtenvrij)</em></li> <li>1 dec 2004 22:09 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_zelezniki.png|Sl_gemeente_zelezniki.png]]" <em>(gemaakt door gebruiker Plp van sl.wikipedia; auteursrechtenvrij)</em></li> <li>1 dec 2004 21:35 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Kalmarunie_vlag.png|Kalmarunie_vlag.png]]" <em>(vlag kalmarunie (engelse wikipedia))</em></li> <li>1 dec 2004 21:35 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Strijkplank.jpg|Strijkplank.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>1 dec 2004 20:49 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Bernhard.jpg|Bernhard.jpg]]" <em>(Prins Bernhard&lt;br&gt;Van Wikipedia.en&lt;br&gt;Volgens bescrijving aldaar:&lt;br&gt;&#123;&#123;PD}})</em></li> <li>1 dec 2004 20:37 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_zuzemberk.png|Sl_gemeente_zuzemberk.png]]" <em>(gemaakt door gebruiker Plp van sl.wikipedia; auteursrechtenvrij)</em></li> <li>1 dec 2004 20:25 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_mozirje.png|Sl_gemeente_mozirje.png]]" <em>(gemaakt door gebruiker Plp van sl.wikipedia; auteursrechtenvrij)</em></li> <li>1 dec 2004 20:13 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:BisdomRoermondLocatie.png|BisdomRoermondLocatie.png]]" <em>(Locatie Bisdom Roermond, eigen werk, &#123;&#123;PD}})</em></li> <li>1 dec 2004 20:11 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:BisdomHaarlemLocatie.png|BisdomHaarlemLocatie.png]]" <em>(Locatie Bisdom Haarlem, eigen werk, &#123;&#123;PD}})</em></li> <li>1 dec 2004 19:43 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_kocevje.png|Sl_gemeente_kocevje.png]]" <em>(gemaakt door gebruiker Plp van sl.wikipedia; auteursrechtenvrij)</em></li> <li>1 dec 2004 18:15 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Afstamming_banaan.png|Afstamming_banaan.png]]" <em>(verbeterde versie)</em></li> <li>1 dec 2004 18:04 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Afstamming_banaan.png|Afstamming_banaan.png]]" <em>(zelfgemaakte tekening van de afstamming van de banaan)</em></li> <li>1 dec 2004 18:00 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Acer-platanoides_schors.jpg|Acer-platanoides_schors.jpg]]" <em>(Schors van de Acer plataniodes. Overgenomen van de Engelse wikipedia : Photograph 2003-09-12 Karl DeBisschop Quincy, MA (USA) &#123;&#123;GFDL}})</em></li> <li>1 dec 2004 17:59 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Acer-platanoides_vrucht.jpg|Acer-platanoides_vrucht.jpg]]" <em>(Vruchten van de Acer platanoides. Overgenomen van de Engelse wikipedia: )</em></li> <li>1 dec 2004 17:34 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Acer-platanoides_blad.jpg|Acer-platanoides_blad.jpg]]" <em>(Overgenomen van de Engelse wikipedia : Norway Maple Leaves)</em></li> <li>1 dec 2004 17:05 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Betula-pendula-'Laciniata'_bladeren.jpg|Betula-pendula-'Laciniata'_bladeren.jpg]]" <em>(Overgenomen van http&#58;//www.biolib.de/)</em></li> <li>1 dec 2004 16:46 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Kocbek.jpg|Kocbek.jpg]]" <em>(publiek domein (PT Slovenija))</em></li> <li>1 dec 2004 14:47 [[Gebruiker:Wim V.L.|Wim V.L.]] heeft ge-upload: "[[:Afbeelding:Eriugena.jpg|Eriugena.jpg]]" <em>(http&#58;//www.grass-land.com/wenji/sieg/108/043_048.html - vrij in gebruik)</em></li> <li>1 dec 2004 14:20 [[Gebruiker:Martijn|Martijn]] heeft ge-upload: "[[:Afbeelding:Martijn.png|Martijn.png]]" <em>(eigen werk, zelfportret voor gebruikerspagina)</em></li> <li>1 dec 2004 13:47 [[Gebruiker:Ziggyziggyziggy|Ziggyziggyziggy]] heeft ge-upload: "[[:Afbeelding:Ziggyziggyziggy.jpg|Ziggyziggyziggy.jpg]]" <em>(Foto voor op eigen userpagina, betreft een zelfportret)</em></li> <li>1 dec 2004 13:47 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Carthagena_Colombia_ca1600.jpg|Carthagena_Colombia_ca1600.jpg]]" <em>(Carthagena_oude_prent)</em></li> <li>1 dec 2004 12:59 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Memory_Stick.jpg|Memory_Stick.jpg]]" <em>(Memory Stick, van duitse wiki (&#91;&#91;:de:Bild:Memory_Stick.jpg]], met tekst: &quot;Memory Stick und Memory Stick Duo mit Adapter, jeweils Vorder- und Rückseite, Eigene Aufnahme, GNU-FDL&quot;. &#123;&#123;GFDL}})</em></li> <li>1 dec 2004 12:22 [[Gebruiker:Bries|Bries]] heeft ge-upload: "[[:Afbeelding:Hagegeingob.JPG|Hagegeingob.JPG]]" <em>(Hage Geingob, de eerste premier van Namibie)</em></li> <li>1 dec 2004 12:13 [[Gebruiker:Bries|Bries]] heeft ge-upload: "[[:Afbeelding:Geingob.gif|Geingob.gif]]" <em>(Hage Geingob, eerste premier van Namibie)</em></li> <li>1 dec 2004 10:23 [[Gebruiker:Bries|Bries]] heeft ge-upload: "[[:Afbeelding:Gurirab.jpg|Gurirab.jpg]]" <em>(Theo-Ben Gurirab)</em></li> <li>1 dec 2004 10:05 [[Gebruiker:Bries|Bries]] heeft ge-upload: "[[:Afbeelding:Pohamba.jpg|Pohamba.jpg]]" <em>(Pohamba)</em></li> <li>1 dec 2004 08:14 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Grien.jpg|Grien.jpg]]" <em>(fiat Monique)</em></li> <li>1 dec 2004 08:06 [[Gebruiker:Fortinbras|Fortinbras]] heeft ge-upload: "[[:Afbeelding:Aphrodite_eros_pan.jpg|Aphrodite_eros_pan.jpg]]"</li> <li>1 dec 2004 07:30 [[Gebruiker:Bries|Bries]] heeft ge-upload: "[[:Afbeelding:Nujoma.jpg|Nujoma.jpg]]" <em>(Officieel portret van Sam Nujoma)</em></li> <li>1 dec 2004 00:06 [[Gebruiker:Harm|Harm]] heeft ge-upload: "[[:Afbeelding:Meet041127d.jpg|Meet041127d.jpg]]" <em>(Eigen foto - Oscar tijdens afsluitend praatje)</em></li> <li>1 dec 2004 00:05 [[Gebruiker:Harm|Harm]] heeft ge-upload: "[[:Afbeelding:Meet041127c.jpg|Meet041127c.jpg]]" <em>(Eigen foto - Rotterdam kubuswoningen)</em></li> <li>1 dec 2004 00:03 [[Gebruiker:Harm|Harm]] heeft ge-upload: "[[:Afbeelding:Meet041127b.jpg|Meet041127b.jpg]]" <em>(Eigen foto - groep voor museum)</em></li> <li>1 dec 2004 00:00 [[Gebruiker:Harm|Harm]] heeft ge-upload: "[[:Afbeelding:Meet041127a.jpg|Meet041127a.jpg]]" <em>(eigen foto - Andre en Marco in de trein)</em></li> <li>30 nov 2004 22:52 [[Gebruiker:JoJan|JoJan]] heeft ge-upload: "[[:Afbeelding:Angela2.jpg|Angela2.jpg]]" <em>(Angela in Rotterdam 27.11.04)</em></li> <li>30 nov 2004 22:37 [[Gebruiker:Avanbijleveld|Avanbijleveld]] heeft ge-upload: "[[:Afbeelding:RuslandPenza.png|RuslandPenza.png]]" <em>(Ligging Penza (en-wiki, GNU-lic))</em></li> <li>30 nov 2004 21:46 [[Gebruiker:Pethan|Pethan]] heeft ge-upload: "[[:Afbeelding:Tigerlilysmall.jpg|Tigerlilysmall.jpg]]" <em>(Lilium lancifolium van en:wiki van &#91;http&#58;//GIMP-savvy.com/cgi-bin/img.cgi?ufwseOKSlhdzLhk979 GIMP photo library])</em></li> <li>30 nov 2004 21:13 [[Gebruiker:Pethan|Pethan]] heeft ge-upload: "[[:Afbeelding:Acorus-calamus1rotatie.jpg|Acorus-calamus1rotatie.jpg]]" <em>(kalmoes van en:wikipedia )</em></li> <li>30 nov 2004 21:11 [[Gebruiker:Avanbijleveld|Avanbijleveld]] heeft ge-upload: "[[:Afbeelding:RuslandPerm.png|RuslandPerm.png]]" <em>(Ligging Perm (en-wiki, GNU-lic))</em></li> <li>30 nov 2004 21:02 [[Gebruiker:Avanbijleveld|Avanbijleveld]] heeft ge-upload: "[[:Afbeelding:RuslandRjazan.png|RuslandRjazan.png]]" <em>(Ligging Rjazan (en-wiki, GNU-lic))</em></li> <li>30 nov 2004 21:02 [[Gebruiker:Pethan|Pethan]] heeft ge-upload: "[[:Afbeelding:Arum_maculatum_700.jpg|Arum_maculatum_700.jpg]]" <em>(Arum maculatum van en:wikipedia Photo by &#91;&#91;en:User:Sannse&#124;Sannse]], 24 April 2004, Essex, England. )</em></li> <li>30 nov 2004 20:49 [[Gebruiker:Avanbijleveld|Avanbijleveld]] heeft ge-upload: "[[:Afbeelding:RuslandRostov.png|RuslandRostov.png]]" <em>(Ligging Rostov (en-wiki, GNU-lic))</em></li> <li>30 nov 2004 20:20 [[Gebruiker:Avanbijleveld|Avanbijleveld]] heeft ge-upload: "[[:Afbeelding:Clementine.jpg|Clementine.jpg]]" <em>(Clementine (en-wiki, GNU-lic))</em></li> <li>30 nov 2004 19:04 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Acer-campestre_vruchten.jpg|Acer-campestre_vruchten.jpg]]" <em>(Overgenomen van de Frande wikipedia: Érable champêtre, photo J.F. Gaffard, &#91;&#91;Esprels]] juillet 2004, &#123;&#123;GFDL}})</em></li> <li>30 nov 2004 19:00 [[Gebruiker:Fortinbras|Fortinbras]] heeft ge-upload: "[[:Afbeelding:Zeus.jpg|Zeus.jpg]]" <em>(National Archaeological Museum (#15161), Athens http&#58;//arthist.cla.umn.edu/aict/html/ancient/GS/gs048.html)</em></li> <li>30 nov 2004 18:37 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Acer-campestre.jpg|Acer-campestre.jpg]]" <em>(http&#58;//www.kulak.ac.be/nl/KULAKAlgemeen/Natuur/)</em></li> <li>30 nov 2004 15:15 [[Gebruiker:Bries|Bries]] heeft ge-upload: "[[:Afbeelding:Swapo_vlag.gif|Swapo_vlag.gif]]" <em>(SWAPO vlag)</em></li> <li>30 nov 2004 15:04 [[Gebruiker:Bries|Bries]] heeft ge-upload: "[[:Afbeelding:Christuskirche_Windhoek.jpg|Christuskirche_Windhoek.jpg]]" <em>(Christuskirche_Windhoek)</em></li> <li>30 nov 2004 14:27 [[Gebruiker:MWAK|MWAK]] heeft ge-upload: "[[:Afbeelding:Char2Cpainting8.JPG|Char2Cpainting8.JPG]]" <em>(zelf gemaakt)</em></li> <li>30 nov 2004 13:49 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Poesieplaatje-2.jpg|Poesieplaatje-2.jpg]]" <em>(Poesieplaatje, 70 jaar oud, maker onbekend.)</em></li> <li>30 nov 2004 13:49 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Poesieplaatje-1.jpg|Poesieplaatje-1.jpg]]" <em>(Poesieplaatje, 70 jaar oud, maker onbekend.)</em></li> <li>30 nov 2004 11:22 [[Gebruiker:Hent|Hent]] heeft ge-upload: "[[:Afbeelding:Selectie.jpg|Selectie.jpg]]"</li> <li>30 nov 2004 11:19 [[Gebruiker:Hent|Hent]] heeft ge-upload: "[[:Afbeelding:Oudevijverberg.jpg|Oudevijverberg.jpg]]"</li> <li>30 nov 2004 11:17 [[Gebruiker:Hent|Hent]] heeft ge-upload: "[[:Afbeelding:Stadionbank.jpg|Stadionbank.jpg]]"</li> <li>30 nov 2004 11:16 [[Gebruiker:Hent|Hent]] heeft ge-upload: "[[:Afbeelding:Stadion1.jpg|Stadion1.jpg]]"</li> <li>30 nov 2004 11:11 [[Gebruiker:Hent|Hent]] heeft ge-upload: "[[:Afbeelding:Graafschap4.jpg|Graafschap4.jpg]]"</li> <li>30 nov 2004 11:11 [[Gebruiker:Hent|Hent]] heeft ge-upload: "[[:Afbeelding:Graafschap3.jpg|Graafschap3.jpg]]"</li> <li>30 nov 2004 11:11 [[Gebruiker:Hent|Hent]] heeft ge-upload: "[[:Afbeelding:Graafschap2.jpg|Graafschap2.jpg]]"</li> <li>30 nov 2004 11:05 [[Gebruiker:Hent|Hent]] heeft ge-upload: "[[:Afbeelding:Graafschap1.jpg|Graafschap1.jpg]]"</li> <li>30 nov 2004 10:59 [[Gebruiker:Hent|Hent]] heeft ge-upload: "[[:Afbeelding:Logo.jpg|Logo.jpg]]"</li> <li>30 nov 2004 10:26 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Rot-Walter.JPG|Rot-Walter.JPG]]" <em>(Foto van het Wikipedia-symposium in Rotterdam, novermber 2004. &#91;&#91;Gebruiker:Walter&#124;Walter]]. Foto: &#91;&#91;Gebruiker:Andre Engels&#124;Andre Engels]]. &#123;&#123;GFDL}})</em></li> <li>30 nov 2004 10:25 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Rot-Waerth.JPG|Rot-Waerth.JPG]]" <em>(Foto van het Wikipedia-symposium in Rotterdam, novermber 2004. &#91;&#91;Gebruiker:Waerth&#124;Waerth]]. Foto: &#91;&#91;Gebruiker:Andre Engels&#124;Andre Engels]]. &#123;&#123;GFDL}})</em></li> <li>30 nov 2004 10:23 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Rot-Anthere.JPG|Rot-Anthere.JPG]]" <em>(Foto van het Wikipedia-symposium in Rotterdam, novermber 2004. Anthere. Foto: &#91;&#91;Gebruiker:Andre Engels&#124;Andre Engels]]. &#123;&#123;GFDL}})</em></li> <li>30 nov 2004 10:21 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Boogbrug2.jpg|Boogbrug2.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>30 nov 2004 10:20 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Rot-Angela.JPG|Rot-Angela.JPG]]" <em>(Foto van het Wikipedia-symposium in Rotterdam, novermber 2004. Angela. Foto: &#91;&#91;Gebruiker:Andre Engels&#124;)</em></li> <li>30 nov 2004 10:06 [[Gebruiker:Blaman|Blaman]] heeft ge-upload: "[[:Afbeelding:Lucie_de_Lange.GIF|Lucie_de_Lange.GIF]]" <em>(eigen gemaakte foto)</em></li> <li>30 nov 2004 09:29 [[Gebruiker:Jeroenvrp|Jeroenvrp]] heeft ge-upload: "[[:Afbeelding:Queensland_coat_of_arms_small.jpg|Queensland_coat_of_arms_small.jpg]]" <em>(van en: - deze valt onder fairuse en kan dus op nl: verwijderd worden)</em></li> <li>30 nov 2004 09:29 [[Gebruiker:Jeroenvrp|Jeroenvrp]] heeft ge-upload: "[[:Afbeelding:New_South_Wales_coat_of_arms_small.jpg|New_South_Wales_coat_of_arms_small.jpg]]" <em>(van en: - deze valt onder fairuse en kan dus op nl: verwijderd worden)</em></li> <li>30 nov 2004 07:55 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Gene.png|Gene.png]]" <em>(afbeeldingoorspronkelijk afkomstig van Engelstalige Wikipedia)</em></li> <li>30 nov 2004 04:16 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:Logo_Protestantse_Kerk.png|Logo_Protestantse_Kerk.png]]" <em>(Van www.pkn.nl, betere kleuren zoals bedoeld, kleiner bestand.)</em></li> <li>30 nov 2004 01:19 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Janez_Potocnik.jpg|Janez_Potocnik.jpg]]" <em>(ter beschikking gesteld door de Europese Commissie voor niet-commercieel gebruik)</em></li> <li>30 nov 2004 00:16 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_sveti_jurij.png|Sl_gemeente_sveti_jurij.png]]" <em>(gemaakt door gebruiker Plp sl.wikipedia; auteursrechtenvrij)</em></li> <li>29 nov 2004 23:03 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_maribor.png|Sl_gemeente_maribor.png]]" <em>(gemaakt door gebruiker Plp sl.wikipedia; auteursrechtenvrij)</em></li> <li>29 nov 2004 22:52 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_ormoz.png|Sl_gemeente_ormoz.png]]" <em>(gemaakt door gebruiker Plp sl.wikipedia;auteursrechtenvrij)</em></li> <li>29 nov 2004 22:48 [[Gebruiker:Vussiewussie|Vussiewussie]] heeft ge-upload: "[[:Afbeelding:Jonge_sepia.jpg|Jonge_sepia.jpg]]" <em>(foto van een jonge sepia, vrij van rechten)</em></li> <li>29 nov 2004 22:42 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_kranj.png|Sl_gemeente_kranj.png]]" <em>(gemaakt door gebruiker Plp sl.wikipedia;auteursrechtenvrij)</em></li> <li>29 nov 2004 22:38 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_piran.png|Sl_gemeente_piran.png]]" <em>(gemaakt door gebruiker Plp skl.wikipedia; auteursrechtenvrij)</em></li> <li>29 nov 2004 22:36 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:350px-Piran.jpg|350px-Piran.jpg]]" <em>(foto door Andrejj, gebruiker sl.wikipedia)</em></li> <li>29 nov 2004 22:31 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_koper.png|Sl_gemeente_koper.png]]" <em>(gemaakt door gebruiker Plp sl.wikipedia;auteursrechtenvrij)</em></li> <li>29 nov 2004 22:27 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_crnomelj.png|Sl_gemeente_crnomelj.png]]" <em>(gemaakt door gebruiker Plp sl.wikipedia;auteursrechtenvrij)</em></li> <li>29 nov 2004 22:27 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_izola.png|Sl_gemeente_izola.png]]" <em>(gemaakt door gebruiker Plp sl.wikipedia; auteursrechtenvrij)</em></li> <li>29 nov 2004 22:23 [[Gebruiker:David Eerdmans|David Eerdmans]] heeft ge-upload: "[[:Afbeelding:Vanderhoeven.jpg|Vanderhoeven.jpg]]" <em>(Eigen foto, GNU-FDL.)</em></li> <li>29 nov 2004 22:18 [[Gebruiker:Okki|Okki]] heeft ge-upload: "[[:Afbeelding:MohammedB.png|MohammedB.png]]" <em>(Foto vrijgegeven door Justitie in programma &#39;Opsporing verzocht&#39;)</em></li> <li>29 nov 2004 22:15 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_sezana.png|Sl_gemeente_sezana.png]]" <em>(gemaakt door gebruiker Plp sl.wikipedia; auterusrechtenvrij)</em></li> <li>29 nov 2004 22:12 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_ajdovscina.png|Sl_gemeente_ajdovscina.png]]" <em>(gemaakt door gebruiker Plp sl.wikipedia;auteursrechtenvrij)</em></li> <li>29 nov 2004 22:05 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_ptuj.png|Sl_gemeente_ptuj.png]]" <em>(gemaakt door gebruiker Plp van sl.wikipedia; auteursrechtenvrij)</em></li> <li>29 nov 2004 22:05 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_ljubno.png|Sl_gemeente_ljubno.png]]" <em>(gemaakt door gebruiker Plp sl.wikipedia)</em></li> <li>29 nov 2004 22:04 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:RuslandWolgafederaaldistrictGenummerd.png|RuslandWolgafederaaldistrictGenummerd.png]]" <em>(&#123;&#123;GDFL}} en wiki: herbewerkt)</em></li> <li>29 nov 2004 22:03 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:RuslandWolgafederaaldistrict.png|RuslandWolgafederaaldistrict.png]]" <em>(&#123;&#123;GDFL}} en wiki)</em></li> <li>29 nov 2004 21:44 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_ljutomer.png|Sl_gemeente_ljutomer.png]]" <em>(gemaakt door gebruiker Plp van sl.wikipedia)</em></li> <li>29 nov 2004 21:44 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Sl_gemeente_bovec.png|Sl_gemeente_bovec.png]]" <em>(gemaakt door gebruiker Plp van sl.wikipedia)</em></li> <li>29 nov 2004 20:34 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Wappen-Südwestafrika.JPG|Wappen-Südwestafrika.JPG]]" <em>(Vlag van Duits Zuidwest-Afrika; zelf gemaakt door &#91;&#91;de:Benutzer:Thdoerfler]])</em></li> <li>29 nov 2004 20:31 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Namibia_Regions_Caprivi_250px.png|Namibia_Regions_Caprivi_250px.png]]" <em>(Caprivi - GFDL van en:)</em></li> <li>29 nov 2004 20:16 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Veer.jpg|Veer.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>29 nov 2004 20:16 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Foucaultspendulum.250px.jpg|Foucaultspendulum.250px.jpg]]" <em>(Afbeelding gekopieerd vanaf pl.wikipedia.org. De beschrijving daar was: Wahad&amp;#322;o Foucaulta, Panteon, Pary&amp;#380;&lt;br&gt; Autor: Michael Reeve.&lt;br&gt; Data wykonania zdj&amp;#281;cia: 30 stycznia 2004. &amp;#377;r&amp;#243;d&amp;#322;o: &#91;&#91;:en:Image:Foucaultspendulum.250px.jpg]] (GFDL) &#91;&#91;pl:Grafika:Foucaultspendulum.250px.jpg]])</em></li> <li>29 nov 2004 20:14 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Foucault_pendel2.jpeg|Foucault_pendel2.jpeg]]" <em>(Afbeelding gekopieerd vanaf de.wikipedia.org. De beschrijving daar was: Foucault Pendel an der Uni-Koblenz *Beschreibung: Foucault Pendel *Standort: Universität Koblenz *Quelle: fotografiert am 25.11.2004 *Fotograf oder Zeichner: Joscha Arenz *Lizenzstatus: GNU FDL &#91;&#91;de:Bild:Foucault pendel2.jpeg]])</em></li> <li>29 nov 2004 20:14 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Foucault_pendel1.jpeg|Foucault_pendel1.jpeg]]" <em>(Afbeelding gekopieerd vanaf de.wikipedia.org. De beschrijving daar was: Foucault Pendel an der Uni-Koblenz *Beschreibung: Foucault Pendel *Standort: Universität Koblenz *Quelle: fotografiert am 25.11.2004 *Fotograf oder Zeichner: Joscha Arenz *Lizenzstatus: GNU FDL &#91;&#91;de:Bild:Foucault pendel1.jpeg]])</em></li> <li>29 nov 2004 20:01 [[Gebruiker:Besednjak|Besednjak]] heeft ge-upload: "[[:Afbeelding:Saksen_km.png|Saksen_km.png]]" <em>(overgenomen van &#91;&#91;Wikipedia:WikiProject German districts/Maptemplates]])</em></li> <li>29 nov 2004 19:46 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Zuurtjes.jpg|Zuurtjes.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>29 nov 2004 19:02 [[Gebruiker:Caseman|Caseman]] heeft ge-upload: "[[:Afbeelding:Opslagtanks.jpg|Opslagtanks.jpg]]" <em>(betere versie opslagtanks, eigen foto Caseman)</em></li> <li>29 nov 2004 18:52 [[Gebruiker:Pethan|Pethan]] heeft ge-upload: "[[:Afbeelding:Lightmatter_snowleopard.jpg|Lightmatter_snowleopard.jpg]]" <em>(Sneeuwpanter van en:wikipedia)</em></li> <li>29 nov 2004 18:51 [[Gebruiker:Caseman|Caseman]] heeft ge-upload: "[[:Afbeelding:Ferrietkraal.jpg|Ferrietkraal.jpg]]" <em>(foto ferrietkraal aan USB kabel, eigen foto Caseman)</em></li> <li>29 nov 2004 18:36 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Mespilus_Germanica.jpg|Mespilus_Germanica.jpg]]" <em>(&#91;&#91;de:Bild:Mespilus Germanica.jpg]])</em></li> <li>29 nov 2004 18:30 [[Gebruiker:Cicero|Cicero]] heeft ge-upload: "[[:Afbeelding:Adreadoriaalsneptunusdooragnolobronzino.jpeg|Adreadoriaalsneptunusdooragnolobronzino.jpeg]]" <em>(van en:wikipedia, de beschrijving daar is: &quot;Andrea Doria as Neptune&quot; by Agnolo Bronzino &#123;&#123;msg:PD}})</em></li> <li>29 nov 2004 18:24 [[Gebruiker:Avanbijleveld|Avanbijleveld]] heeft ge-upload: "[[:Afbeelding:RuslandSachalin.png|RuslandSachalin.png]]" <em>(Ligging Sachalin (en-wiki, GNU-lic))</em></li> <li>29 nov 2004 18:23 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Mispel-vrucht.jpg|Mispel-vrucht.jpg]]"</li> <li>29 nov 2004 18:11 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Mispel.jpg|Mispel.jpg]]" <em>(zelfgemaakt foto van Mispel; eind november)</em></li> <li>29 nov 2004 18:08 [[Gebruiker:Avanbijleveld|Avanbijleveld]] heeft ge-upload: "[[:Afbeelding:RuslandSamara.png|RuslandSamara.png]]" <em>(Ligging Samara (en-wiki, GNU-lic))</em></li> <li>29 nov 2004 18:07 [[Gebruiker:Avanbijleveld|Avanbijleveld]] heeft ge-upload: "[[:Afbeelding:RuslandSaratov.png|RuslandSaratov.png]]" <em>(Ligging Saratov (en-wiki, GNU-lic))</em></li> <li>29 nov 2004 18:07 [[Gebruiker:Avanbijleveld|Avanbijleveld]] heeft ge-upload: "[[:Afbeelding:RuslandSmolensk.png|RuslandSmolensk.png]]" <em>(Ligging Smolensk (en-wiki, GNU-lic))</em></li> <li>29 nov 2004 17:56 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Betula-nigra_schors.jpg|Betula-nigra_schors.jpg]]" <em>(Permission granted to use under by Kurt Stueber http&#58;//www.biolib.de/ &#123;&#123;GFDL}})</em></li> <li>29 nov 2004 17:46 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Betula-ermanii_stam.jpg|Betula-ermanii_stam.jpg]]" <em>(Permission granted to use under &#123;&#123;GFDL}} by Kurt Stueber http&#58;//www.biolib.de/)</em></li> <li>29 nov 2004 17:05 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:BisdomBredaLocatie.png|BisdomBredaLocatie.png]]" <em>(Locatie Bisdom Breda, eigen werk, &#123;&#123;PD}})</em></li> <li>29 nov 2004 16:53 [[Gebruiker:Emesbe|Emesbe]] heeft ge-upload: "[[:Afbeelding:11_28_207.JPEG|11_28_207.JPEG]]" <em>(eigen foto)</em></li> <li>29 nov 2004 16:43 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:3d-metaball-1.png|3d-metaball-1.png]]" <em>(3D demonstratie van metaball. Eigen ontwerp, met programma Strata 3D 3.0.2 (gratis versie die ook gebruikt mag worden, geen demo-versie) &#123;&#123;GFDL}})</em></li> <li>29 nov 2004 15:52 [[Gebruiker:RJB|RJB]] heeft ge-upload: "[[:Afbeelding:Edwardsig.png|Edwardsig.png]]" <em>(Publiek Domein)</em></li> <li>29 nov 2004 14:05 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Betula-ermanii.jpg|Betula-ermanii.jpg]]" <em>(Naam: Betula ermanii; Permission granted to use under GFDL by Kurt Stueber Source: &#91;http&#58;//www.biolib.de www.biolib.de] &#123;&#123;GFDL}})</em></li> <li>29 nov 2004 14:03 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Betula-ermanii.jpg|Betula-ermanii.jpg]]" <em>(Permission granted to use under GFDL by Kurt Stueber http&#58;//www.biolib.de/)</em></li> <li>29 nov 2004 13:38 [[Gebruiker:RJB|RJB]] heeft ge-upload: "[[:Afbeelding:Wallis.jpg|Wallis.jpg]]" <em>(Publiek Domein)</em></li> <li>29 nov 2004 13:19 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Smurffilmposter.jpg|Smurffilmposter.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>29 nov 2004 12:14 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Achillea-millefolium.jpg|Achillea-millefolium.jpg]]" <em>(Overgenomen van de Engelse wikipedia)</em></li> <li>29 nov 2004 11:51 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Circea-lutetiana_tros.jpg|Circea-lutetiana_tros.jpg]]" <em>(http&#58;//www.kulak.ac.be/nl/KULAKAlgemeen/Natuur/)</em></li> <li>29 nov 2004 11:46 [[Gebruiker:RJB|RJB]] heeft ge-upload: "[[:Afbeelding:ChristiaanIX.jpg|ChristiaanIX.jpg]]" <em>(Publiek Domein)</em></li> <li>29 nov 2004 11:11 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Catalpa-bignonioides_bloemen.jpg|Catalpa-bignonioides_bloemen.jpg]]" <em>(Overgenomen van de Duitse wikipedia)</em></li> <li>29 nov 2004 10:14 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Prunus-serotina_trossen.jpg|Prunus-serotina_trossen.jpg]]" <em>(http&#58;//www.kulak.ac.be/nl/KULAKAlgemeen/Natuur/)</em></li> <li>29 nov 2004 08:38 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Acer-pseudoplatanus_vruchten.jpg|Acer-pseudoplatanus_vruchten.jpg]]" <em>(http&#58;//www.kulak.ac.be/facult/wet/biologie/pb/kulakbiocampus/images)</em></li> <li>29 nov 2004 08:15 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Acer-pseudoplatanus.jpg|Acer-pseudoplatanus.jpg]]" <em>(Overgenomen van de Engelse wikipedia)</em></li> <li>29 nov 2004 07:48 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Acer-pseudoplatanus_tros.jpg|Acer-pseudoplatanus_tros.jpg]]" <em>(http&#58;//www.kulak.ac.be/facult/wet/biologie/pb/kulakbiocampus/images)</em></li> <li>29 nov 2004 07:37 [[Gebruiker:Zander|Zander]] heeft ge-upload: "[[:Afbeelding:Pappa.jpg|Pappa.jpg]]" <em>(eigen werk, vrijgegeven voor openbaar gebruik)</em></li> <li>29 nov 2004 07:25 [[Gebruiker:IJzeren Jan|IJzeren Jan]] heeft ge-upload: "[[:Afbeelding:Koetsjma.jpg|Koetsjma.jpg]]" <em>(Eng. wiki; gebruik vrij mits credits voor ABr en fotograaf. )</em></li> <li>29 nov 2004 07:20 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Symposium_naarjaar_2004_walter_robhooft_polyglot_en_puckly_staand.JPG|Symposium_naarjaar_2004_walter_robhooft_polyglot_en_puckly_staand.JPG]]" <em>(Eigen foto &#123;&#123;GFDL}})</em></li> <li>29 nov 2004 00:49 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Symposium_najaar_2004_walter.JPG|Symposium_najaar_2004_walter.JPG]]" <em>(Eigen foto &#123;&#123;GFDL}})</em></li> <li>29 nov 2004 00:49 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Symposium_najaar_2004_sander_spek_en_dick_bos.JPG|Symposium_najaar_2004_sander_spek_en_dick_bos.JPG]]" <em>(Eigen foto &#123;&#123;GFDL}})</em></li> <li>29 nov 2004 00:48 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Symposium_najaar_2004_museumbezoek.JPG|Symposium_najaar_2004_museumbezoek.JPG]]" <em>(Eigen foto &#123;&#123;GFDL}})</em></li> <li>29 nov 2004 00:47 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Symposium_najaar_2004_marco_roepers_en_wie.JPG|Symposium_najaar_2004_marco_roepers_en_wie.JPG]]" <em>(Eigen foto &#123;&#123;GFDL}})</em></li> <li>29 nov 2004 00:47 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Symposium_najaar_2004_marco_roepers.JPG|Symposium_najaar_2004_marco_roepers.JPG]]" <em>(Eigen foto &#123;&#123;GFDL}})</em></li> <li>29 nov 2004 00:46 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Symposium_najaar_2004_dick_en_weeveejee.JPG|Symposium_najaar_2004_dick_en_weeveejee.JPG]]" <em>(Eigen foto &#123;&#123;GFDL}})</em></li> <li>29 nov 2004 00:45 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Symposium_najaar_2004_de_zaal.jpg|Symposium_najaar_2004_de_zaal.jpg]]" <em>(Eigen foto &#123;&#123;GFDL}})</em></li> <li>29 nov 2004 00:45 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Symposium_najaar_2004_Daniel.JPG|Symposium_najaar_2004_Daniel.JPG]]" <em>(Eigen foto &#123;&#123;GFDL}})</em></li> <li>29 nov 2004 00:44 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Symposium_najaar_2004_CE_Quistnix_Angela_en_Jimbo_Wales.JPG|Symposium_najaar_2004_CE_Quistnix_Angela_en_Jimbo_Wales.JPG]]" <em>(Eigen foto &#123;&#123;GFDL}})</em></li> <li>29 nov 2004 00:43 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Symposium_najaar_2004_bontenbal.JPG|Symposium_najaar_2004_bontenbal.JPG]]" <em>(Eigen foto, onder &#123;&#123;GFDL}})</em></li> <li>28 nov 2004 23:45 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Catalpa-speciosa.jpg|Catalpa-speciosa.jpg]]" <em>(Overgenomen van de Engelse wikipedia)</em></li> <li>28 nov 2004 23:45 [[Gebruiker:Wezy|Wezy]] heeft ge-upload: "[[:Afbeelding:Catalpa-specioa.jpg|Catalpa-specioa.jpg]]" <em>(Overgenomen van de Engelse wikipedia)</em></li> <li>28 nov 2004 22:46 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Snoep.jpg|Snoep.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>28 nov 2004 21:35 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:KarelIIIP.jpg|KarelIIIP.jpg]]" <em>(Karel III van Parma &#123;&#123;PD}})</em></li> <li>28 nov 2004 21:33 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Rottemeren.jpg|Rottemeren.jpg]]" <em>(Rottemeren nabij Bleiswijk. Eigen foto, oktober 2004 (lichtere versie dan eerst).)</em></li> <li>28 nov 2004 21:25 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:RuslandSiberischfederaaldistrictGenummerd.png|RuslandSiberischfederaaldistrictGenummerd.png]]" <em>(en wiki herbewerkt &#123;&#123;GDFL}})</em></li> <li>28 nov 2004 21:24 [[Gebruiker:Hardscarf|Hardscarf]] heeft ge-upload: "[[:Afbeelding:RuslandSiberischfederaaldistrict.png|RuslandSiberischfederaaldistrict.png]]" <em>(en wiki &#123;&#123;GDFL}})</em></li> <li>28 nov 2004 21:18 [[Gebruiker:Markv|Markv]] heeft ge-upload: "[[:Afbeelding:Escorial.jpg|Escorial.jpg]]" <em>(El Escorial nabij Madrid. Eigen foto &#91;&#91;Gebruiker:Markv]], april 2000)</em></li> <li>28 nov 2004 20:57 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Donan3.jpg|Donan3.jpg]]" <em>(tweede poging opladen verbeterde versie eigen foto)</em></li> <li>28 nov 2004 20:53 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Donan3.jpg|Donan3.jpg]]" <em>(verbeterde versie van eigen foto)</em></li> <li>28 nov 2004 19:33 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Parkeerautomaat.jpg|Parkeerautomaat.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>28 nov 2004 19:26 [[Gebruiker:BenTheWikiMan|BenTheWikiMan]] heeft ge-upload: "[[:Afbeelding:3d-extrude.png|3d-extrude.png]]" <em>(3d-demonstratie extrude, eigen werk, gemaakt met open source programma &quot;Art Of Illusion&quot; &#123;&#123;PD}})</em></li> <li>28 nov 2004 19:17 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Straatparkeren.jpg|Straatparkeren.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>28 nov 2004 19:16 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Parkeergarage.jpg|Parkeergarage.jpg]]" <em>(&#123;&#123;eigenwerk}})</em></li> <li>28 nov 2004 17:54 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:LocatieZuidbroek.png|LocatieZuidbroek.png]]" <em>(Locatie van Zuidbroek, aangegeven op &#91;&#91;:Afbeelding:LocatieMenterwolde.png]] van &#91;&#91;Gebruiker:Mtcv]], publiek domein &#123;&#123;PD}})</em></li> <li>28 nov 2004 16:33 [[Gebruiker:Taka|Taka]] heeft ge-upload: "[[:Afbeelding:Belly-button.jpg|Belly-button.jpg]]" <em>(GFDL (vanaf engelse wikipedia))</em></li> <li>28 nov 2004 15:58 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Flitspaal_Zwolle.jpg|Flitspaal_Zwolle.jpg]]" <em>(Flitspaal aan de Zwartewaterallee (Zwolle), eigen foto, &#123;&#123;PD}})</em></li> <li>5 jul 2004 10:11 [[Gebruiker:Gerritholl|Gerritholl]] heeft ge-upload: "[[:Afbeelding:Ledend66.png|Ledend66.png]]" <em>(Ledentallen D66: met gnuplot door ondergetekende geproduceerde .png op basis van informatie van het DNPP (nu goed))</em></li> <li>5 jul 2004 10:09 [[Gebruiker:Gerritholl|Gerritholl]] heeft ge-upload: "[[:Afbeelding:Ledencda.png|Ledencda.png]]" <em>(Ledentallen CDA: met gnuplot door ondergetekende geproduceerde .png op basis van informatie van het DNPP (NOG een poging))</em></li> <li>5 jul 2004 10:06 [[Gebruiker:Gerritholl|Gerritholl]] heeft ge-upload: "[[:Afbeelding:Ledencda.png|Ledencda.png]]" <em>(Ledentallen CDA: met gnuplot door ondergetekende geproduceerde .png op basis van informatie van het DNPP (nu goed))</em></li> <li>5 jul 2004 10:03 [[Gebruiker:Gerritholl|Gerritholl]] heeft ge-upload: "[[:Afbeelding:Ledencda.png|Ledencda.png]]" <em>(Ledentallen CDA: met gnuplot door ondergetekende geproduceerde .png op basis van informatie van het DNPP)</em></li> <li>5 jul 2004 09:54 [[Gebruiker:Gerritholl|Gerritholl]] heeft ge-upload: "[[:Afbeelding:Ledend66.png|Ledend66.png]]" <em>(Ledentallen D66: met gnuplot door ondergetekende geproduceerde .png op basis van informatie van het DNPP)</em></li> <li>5 jul 2004 09:38 [[Gebruiker:Gerritholl|Gerritholl]] heeft ge-upload: "[[:Afbeelding:Ledenvvd.png|Ledenvvd.png]]" <em>(Ledentallen VVD: met gnuplot door ondergetekende geproduceerde .png op basis van informatie van het DNPP)</em></li> <li>5 jul 2004 09:11 [[Gebruiker:Napoleon Vier|Napoleon Vier]] heeft ge-upload: "[[:Afbeelding:Petersen.JPG|Petersen.JPG]]" <em>(eigen werk)</em></li> <li>5 jul 2004 08:57 [[Gebruiker:Gerritholl|Gerritholl]] heeft ge-upload: "[[:Afbeelding:Ledenpvda.png|Ledenpvda.png]]" <em>(Ledentallen PVDA: met gnuplot door ondergetekende geproduceerde .png op basis van informatie van het DNPP)</em></li> <li>5 jul 2004 08:08 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Witte_Paal.png|Witte_Paal.png]]" <em>(Locatie van Witte Paal in &#91;&#91;Overijssel]]. Afbeelding is een uitsnede van &#91;&#91;Afbeelding:Rijkswegenkaart.png]], gemaakt door Lennart Bolks en door hem in het public domain geplaatst. &#123;&#123;msg:PD}})</em></li> <li>4 jul 2004 22:28 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Novocaine.png|Novocaine.png]]" <em>(Novocaine van wiki-en ontdaan van engelse tekst)</em></li> <li>4 jul 2004 20:56 [[Gebruiker:Napoleon Vier|Napoleon Vier]] heeft ge-upload: "[[:Afbeelding:Platoon.JPG|Platoon.JPG]]" <em>(eigen werk)</em></li> <li>4 jul 2004 20:46 [[Gebruiker:Napoleon Vier|Napoleon Vier]] heeft ge-upload: "[[:Afbeelding:Elgin.JPG|Elgin.JPG]]" <em>(eigen werk)</em></li> <li>4 jul 2004 20:30 [[Gebruiker:Hjvannes|Hjvannes]] heeft ge-upload: "[[:Afbeelding:Wijk_aan_Zee_1.jpg|Wijk_aan_Zee_1.jpg]]" <em>(Eigen werk)</em></li> <li>4 jul 2004 20:29 [[Gebruiker:Hjvannes|Hjvannes]] heeft ge-upload: "[[:Afbeelding:Wijk_aan_Zee_2.jpg|Wijk_aan_Zee_2.jpg]]" <em>(Eigen werk)</em></li> <li>4 jul 2004 20:26 [[Gebruiker:Hjvannes|Hjvannes]] heeft ge-upload: "[[:Afbeelding:Wijk_aan_Zee_2.jpg|Wijk_aan_Zee_2.jpg]]" <em>(Eigen werk)</em></li> <li>4 jul 2004 18:19 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Armeensegenocide.jpg|Armeensegenocide.jpg]]" <em>(Armenen, afgeslacht door de Turken (public domain van http&#58;//www.gwpda.org/photos/greatwar.htm))</em></li> <li>4 jul 2004 18:05 [[Gebruiker:Ladino|Ladino]] heeft ge-upload: "[[:Afbeelding:Darco-tmb.jpg|Darco-tmb.jpg]]" <em>(Mini afbeeelding van Darco en Ludo)</em></li> <li>4 jul 2004 17:59 [[Gebruiker:Ladino|Ladino]] heeft ge-upload: "[[:Afbeelding:Darco.jpg|Darco.jpg]]" <em>(Darco met Ludo Philippaerts tijdens de olympische spelen te Barcelona in 1992 (7de plaats))</em></li> <li>4 jul 2004 17:00 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Akkerhommel_angel.jpg|Akkerhommel_angel.jpg]]" <em>(zelfgemaakte foto van angel van Akkerhommel)</em></li> <li>4 jul 2004 14:12 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Ccool.jpg|Ccool.jpg]]" <em>(Calvin Coolidge&lt;br&gt;Bron: Wikipedia.en&lt;br&gt;Aangenomen licentie: &#123;&#123;GFDL}})</em></li> <li>4 jul 2004 04:54 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:SophieHohenzollern.jpg|SophieHohenzollern.jpg]]" <em>(Sophie van Griekenland (public domain van http&#58;//www.gwpda.org/photos/greatwar.htm))</em></li> <li>4 jul 2004 04:35 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:FerdinandWilhelm.jpg|FerdinandWilhelm.jpg]]" <em>(Ferdand van Roemenië ontmoet keizer Wilhelm II te Niš (public domain van http&#58;//www.gwpda.org/photos/greatwar.htm))</em></li> <li>4 jul 2004 00:14 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:NiccoloPaganini.jpg|NiccoloPaganini.jpg]]" <em>(Paganini van wiki-en: PD: Coal drawing by J. A. D. Ingres, c. 1819)</em></li> <li>3 jul 2004 23:14 [[Gebruiker:Napoleon Vier|Napoleon Vier]] heeft ge-upload: "[[:Afbeelding:Plato.JPG|Plato.JPG]]" <em>(eigen werk)</em></li> <li>3 jul 2004 22:22 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:AquilegiaVulgaris-closeup-hr.jpg|AquilegiaVulgaris-closeup-hr.jpg]]" <em>(&#91;&#91;den Haag]], Florence Nightingalepark, &#123;&#123;eigenwerk}})</em></li> <li>3 jul 2004 21:29 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Madeliefje-overz-kl.jpg|Madeliefje-overz-kl.jpg]]" <em>(&#123;&#123;eigenwerk}}, schouwen duiveland, 3 mei 2004)</em></li> <li>3 jul 2004 21:04 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:KorpLu.png|KorpLu.png]]" <em>(Luchtmachtrangteken; naar publicatie van de Koninklijke Luchtmacht)</em></li> <li>3 jul 2004 21:04 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:KapLu.png|KapLu.png]]" <em>(Luchtmachtrangteken; naar publicatie van de Koninklijke Luchtmacht)</em></li> <li>3 jul 2004 20:45 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:VaandrigLu.png|VaandrigLu.png]]" <em>(Luchtmachtrangteken; naar publicatie van de Koninklijke Luchtmacht)</em></li> <li>3 jul 2004 20:44 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Soldaat3Lu.png|Soldaat3Lu.png]]" <em>(Luchtmachtrangteken; naar publicatie van de Koninklijke Luchtmacht)</em></li> <li>3 jul 2004 20:44 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Soldaat1Lu.png|Soldaat1Lu.png]]" <em>(Luchtmachtrangteken; naar publicatie van de Koninklijke Luchtmacht)</em></li> <li>3 jul 2004 20:43 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:SgtMajoorLu.png|SgtMajoorLu.png]]" <em>(Luchtmachtrangteken; naar publicatie van de Koninklijke Luchtmacht)</em></li> <li>3 jul 2004 20:43 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:SgtLu.png|SgtLu.png]]" <em>(Luchtmachtrangteken; naar publicatie van de Koninklijke Luchtmacht)</em></li> <li>3 jul 2004 20:43 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Sgt1Lu.png|Sgt1Lu.png]]" <em>(Luchtmachtrangteken; naar publicatie van de Koninklijke Luchtmacht)</em></li> <li>3 jul 2004 20:42 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:MajoorLu.png|MajoorLu.png]]" <em>(Luchtmachtrangteken; naar publicatie van de Koninklijke Luchtmacht)</em></li> <li>3 jul 2004 20:42 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:LtKolLu.png|LtKolLu.png]]" <em>(Luchtmachtrangteken; naar publicatie van de Koninklijke Luchtmacht)</em></li> <li>3 jul 2004 20:41 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:LtGenLu.png|LtGenLu.png]]" <em>(Luchtmachtrangteken; naar publicatie van de Koninklijke Luchtmacht)</em></li> <li>3 jul 2004 20:41 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Lt2Lu.png|Lt2Lu.png]]" <em>(Luchtmachtrangteken; naar publicatie van de Koninklijke Luchtmacht)</em></li> <li>3 jul 2004 20:41 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Lt1Lu.png|Lt1Lu.png]]" <em>(Luchtmachtrangteken; naar publicatie van de Koninklijke Luchtmacht)</em></li> <li>3 jul 2004 20:40 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Korp1Lu.png|Korp1Lu.png]]" <em>(Luchtmachtrangteken; naar publicatie van de Koninklijke Luchtmacht)</em></li> <li>3 jul 2004 20:40 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:KolLu.png|KolLu.png]]" <em>(Luchtmachtrangteken; naar publicatie van de Koninklijke Luchtmacht)</em></li> <li>3 jul 2004 20:39 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:GenMajLu.png|GenMajLu.png]]" <em>(Luchtmachtrangteken; naar publicatie van de Koninklijke Luchtmacht)</em></li> <li>3 jul 2004 20:39 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:GenLu.png|GenLu.png]]" <em>(Luchtmachtrangteken; naar publicatie van de Koninklijke Luchtmacht)</em></li> <li>3 jul 2004 20:39 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Commodore.png|Commodore.png]]" <em>(Luchtmachtrangteken; naar publicatie van de Koninklijke Luchtmacht)</em></li> <li>3 jul 2004 20:38 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:AdjudantLu.png|AdjudantLu.png]]" <em>(Luchtmachtrangteken; naar publicatie van de Koninklijke Luchtmacht)</em></li> <li>3 jul 2004 20:37 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:VaandrigLg.png|VaandrigLg.png]]" <em>(Legerrangteken; naar publicatie van de Koninklijke Landmacht)</em></li> <li>3 jul 2004 20:37 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Soldaat1Lg.png|Soldaat1Lg.png]]" <em>(Legerrangteken; naar publicatie van de Koninklijke Landmacht)</em></li> <li>3 jul 2004 20:36 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Soldaat.png|Soldaat.png]]" <em>(Legerrangteken; naar publicatie van de Koninklijke Landmacht)</em></li> <li>3 jul 2004 20:36 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:SgtMajoorLg.png|SgtMajoorLg.png]]" <em>(Legerrangteken; naar publicatie van de Koninklijke Landmacht)</em></li> <li>3 jul 2004 20:34 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:SgtLg.png|SgtLg.png]]" <em>(Legerrangteken; naar publicatie van de Koninklijke Landmacht)</em></li> <li>3 jul 2004 20:34 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Sgt1Lg.png|Sgt1Lg.png]]" <em>(Legerrangteken; naar publicatie van de Koninklijke Landmacht)</em></li> <li>3 jul 2004 20:34 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:MajoorLg.png|MajoorLg.png]]" <em>(Legerrangteken; naar publicatie van de Koninklijke Landmacht)</em></li> <li>3 jul 2004 20:33 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:LtKolLg.png|LtKolLg.png]]" <em>(Legerrangteken; naar publicatie van de Koninklijke Landmacht)</em></li> <li>3 jul 2004 20:33 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:LtGenLg.png|LtGenLg.png]]" <em>(Legerrangteken; naar publicatie van de Koninklijke Landmacht)</em></li> <li>3 jul 2004 20:32 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Lt2Lg.png|Lt2Lg.png]]" <em>(Legerrangteken; naar publicatie van de Koninklijke Landmacht)</em></li> <li>3 jul 2004 20:32 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Lt1Lg.png|Lt1Lg.png]]" <em>(Legerrangteken; naar publicatie van de Koninklijke Landmacht)</em></li> <li>3 jul 2004 20:31 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:KorpLg.png|KorpLg.png]]" <em>(Legerrangteken; naar publicatie van de Koninklijke Landmacht)</em></li> <li>3 jul 2004 20:31 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Korp1Lg.png|Korp1Lg.png]]" <em>(Legerrangteken; naar publicatie van de Koninklijke Landmacht)</em></li> <li>3 jul 2004 20:31 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:KolLg.png|KolLg.png]]" <em>(Legerrangteken; naar publicatie van de Koninklijke Landmacht)</em></li> <li>3 jul 2004 20:30 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:KapLg.png|KapLg.png]]" <em>(Legerrangteken; naar publicatie van de Koninklijke Landmacht)</em></li> <li>3 jul 2004 20:29 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:GenMajLg.png|GenMajLg.png]]" <em>(Legerrangteken; naar publicatie van de Koninklijke Landmacht)</em></li> <li>3 jul 2004 20:29 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:GenLg.png|GenLg.png]]" <em>(Legerrangteken; naar publicatie van de Koninklijke Landmacht)</em></li> <li>3 jul 2004 20:28 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:BgGen.png|BgGen.png]]" <em>(Legerrangteken; naar publicatie van de Koninklijke Landmacht)</em></li> <li>3 jul 2004 20:27 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:AdjudantLg.png|AdjudantLg.png]]" <em>(Legerrangteken; naar publicatie van de Koninklijke Landmacht)</em></li> <li>3 jul 2004 20:10 [[Gebruiker:Brinkia|Brinkia]] heeft ge-upload: "[[:Afbeelding:Heule.jpg|Heule.jpg]]" <em>(standbeeld Tineke van Heule in het centrum van Heule, foto genomen door mezelf)</em></li> <li>3 jul 2004 19:31 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:VAdmiraal.png|VAdmiraal.png]]" <em>(Marinerangteken; naar publicatie van de Koninklijke Marine)</em></li> <li>3 jul 2004 19:30 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:SgtMar.png|SgtMar.png]]" <em>(Marinerangteken; naar publicatie van de Koninklijke Marine)</em></li> <li>3 jul 2004 19:30 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:SgtMajoorMar.png|SgtMajoorMar.png]]" <em>(Marinerangteken; naar publicatie van de Koninklijke Marine)</em></li> <li>3 jul 2004 19:30 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:SchoutBijNacht.png|SchoutBijNacht.png]]" <em>(Marinerangteken; naar publicatie van de Koninklijke Marine)</em></li> <li>3 jul 2004 19:29 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Matroos3.png|Matroos3.png]]" <em>(Marinerangteken; naar publicatie van de Koninklijke Marine)</em></li> <li>3 jul 2004 19:29 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Matroos2.png|Matroos2.png]]" <em>(Marinerangteken; naar publicatie van de Koninklijke Marine)</em></li> <li>3 jul 2004 19:28 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Matroos1.png|Matroos1.png]]" <em>(Marinerangteken; naar publicatie van de Koninklijke Marine)</em></li> <li>3 jul 2004 19:28 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:LtTZ3.png|LtTZ3.png]]" <em>(Marinerangteken; naar publicatie van de Koninklijke Marine)</em></li> <li>3 jul 2004 19:28 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:LtTZ2o.png|LtTZ2o.png]]" <em>(Marinerangteken; naar publicatie van de Koninklijke Marine)</em></li> <li>3 jul 2004 19:27 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:LtTZ2.png|LtTZ2.png]]" <em>(Marinerangteken; naar publicatie van de Koninklijke Marine)</em></li> <li>3 jul 2004 19:27 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:LtTZ1.png|LtTZ1.png]]" <em>(Marinerangteken; naar publicatie van de Koninklijke Marine)</em></li> <li>3 jul 2004 19:27 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:LtAdmiraal.png|LtAdmiraal.png]]" <em>(Marinerangteken; naar publicatie van de Koninklijke Marine)</em></li> <li>3 jul 2004 19:26 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:KorpMar.png|KorpMar.png]]" <em>(Marinerangteken; naar publicatie van de Koninklijke Marine)</em></li> <li>3 jul 2004 19:26 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:KapiteinTerZee.png|KapiteinTerZee.png]]" <em>(Marinerangteken; naar publicatie van de Koninklijke Marine)</em></li> <li>3 jul 2004 19:25 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:KapLuitTerZee.png|KapLuitTerZee.png]]" <em>(Marinerangteken; naar publicatie van de Koninklijke Marine)</em></li> <li>3 jul 2004 19:25 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Commandeur.png|Commandeur.png]]" <em>(Marinerangteken; naar publicatie van de Koninklijke Marine)</em></li> <li>3 jul 2004 19:24 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Admiraal.png|Admiraal.png]]" <em>(Marinerangteken; naar publicatie van de Koninklijke Marine)</em></li> <li>3 jul 2004 19:24 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:AdjudantMar.png|AdjudantMar.png]]" <em>(Marinerangteken; naar publicatie van de Koninklijke Marine)</em></li> <li>3 jul 2004 19:05 [[Gebruiker:Bart|Bart]] heeft ge-upload: "[[:Afbeelding:Echinacea_pupurea.JPG|Echinacea_pupurea.JPG]]" <em>(eigen foto van bij ons in de tuin)</em></li> <li>3 jul 2004 18:57 [[Gebruiker:Bart|Bart]] heeft ge-upload: "[[:Afbeelding:Echinacea_pururea.JPG|Echinacea_pururea.JPG]]" <em>(eigen foto van bij ons in de tuin)</em></li> <li>3 jul 2004 18:16 [[Gebruiker:Jofeys|Jofeys]] heeft ge-upload: "[[:Afbeelding:Kaart_Frankrijk_Departement_06.png|Kaart_Frankrijk_Departement_06.png]]"</li> <li>3 jul 2004 18:16 [[Gebruiker:Jofeys|Jofeys]] heeft ge-upload: "[[:Afbeelding:Wapenschild_Alpes_Maritimes.gif|Wapenschild_Alpes_Maritimes.gif]]"</li> <li>3 jul 2004 17:46 [[Gebruiker:Brinkia|Brinkia]] heeft ge-upload: "[[:Afbeelding:Kortrijk_broeltorens.JPG|Kortrijk_broeltorens.JPG]]" <em>(Broeltorens in Kortrijk, foto door mezelf genomen)</em></li> <li>3 jul 2004 17:31 [[Gebruiker:Brinkia|Brinkia]] heeft ge-upload: "[[:Afbeelding:Rumolduskerk_heikant.jpg|Rumolduskerk_heikant.jpg]]" <em>(Kerk Sint-Rumoldus in Berlaar Heikant, foto door mezelf genomen)</em></li> <li>3 jul 2004 17:14 [[Gebruiker:Brinkia|Brinkia]] heeft ge-upload: "[[:Afbeelding:Steen.JPG|Steen.JPG]]" <em>(Het Steen met ervoor het beeld van Lange Wapper, foto door mijzelf genomen)</em></li> <li>3 jul 2004 16:29 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Sappho.jpg|Sappho.jpg]]" <em>(Sappho (public domain van http&#58;//www.lib.utexas.edu/photodraw/portraits/index.html))</em></li> <li>3 jul 2004 16:18 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:PeterIJoego2.jpg|PeterIJoego2.jpg]]" <em>(Peter I van Servië/Joegoslavië (http&#58;//www.gwpda.org/photos/greatwar.htm))</em></li> <li>3 jul 2004 16:10 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:VictorEmanuelIIIwo1.jpg|VictorEmanuelIIIwo1.jpg]]" <em>(Victor Emanuel III tijdens WO1 (public domain van http&#58;//www.gwpda.org/photos/greatwar.htm))</em></li> <li>3 jul 2004 15:45 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Brando.jpg|Brando.jpg]]" <em>(Van Engelse pagina: public domain)</em></li> <li>3 jul 2004 14:27 [[Gebruiker:Jofeys|Jofeys]] heeft ge-upload: "[[:Afbeelding:Wapenschild_Hautes-Alpes.gif|Wapenschild_Hautes-Alpes.gif]]"</li> <li>3 jul 2004 14:26 [[Gebruiker:Jofeys|Jofeys]] heeft ge-upload: "[[:Afbeelding:Kaart_Frankrijk_Departement_05.png|Kaart_Frankrijk_Departement_05.png]]"</li> <li>3 jul 2004 13:53 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:VlagTilburg.png|VlagTilburg.png]]" <em>(Vlag gemeente Tilburg. Eigen werk.)</em></li> <li>3 jul 2004 13:40 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:JohanSaksen.jpg|JohanSaksen.jpg]]" <em>(Johan van Saksen (van Duitse Wiki))</em></li> <li>3 jul 2004 13:39 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:JohanSaksen.gif|JohanSaksen.gif]]" <em>(Johan van Saksen ligt opgebaard (&quot;Canadian Illustrated News, Vol. VIII, No. 26, Page 405. Reproduced from the National Library of Canada&#39;s website http&#58;//www.collectionscanada.ca/index-e.html - vrij te gebruiken mits met deze bronvermelding))</em></li> <li>3 jul 2004 11:59 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:FrederikAugustII.jpg|FrederikAugustII.jpg]]" <em>(Koning Frederik August II van Saksen (van Duitse Wiki))</em></li> <li>3 jul 2004 10:12 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:MarcusAureliusCapitolijn.jpg|MarcusAureliusCapitolijn.jpg]]" <em>(Foto van (replica van) het beeld van Marcus Aurelius. Eigen foto, GFDL.)</em></li> <li>3 jul 2004 09:42 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:ResedaLutea-plant-kl.jpg|ResedaLutea-plant-kl.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein GoudsePoort, mei 2004, &#123;&#123;eigenwerk}})</em></li> <li>3 jul 2004 09:41 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:ResedaLutea-overz-kl.jpg|ResedaLutea-overz-kl.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein GoudsePoort, mei 2004, &#123;&#123;eigenwerk}})</em></li> <li>3 jul 2004 09:40 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:ResedaLutea-closeup-kl.jpg|ResedaLutea-closeup-kl.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein GoudsePoort, mei 2004, &#123;&#123;eigenwerk}})</em></li> <li>3 jul 2004 09:40 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:ResedaLutea-blad-kl.jpg|ResedaLutea-blad-kl.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein GoudsePoort, mei 2004, &#123;&#123;eigenwerk}})</em></li> <li>3 jul 2004 09:35 [[Gebruiker:Napoleon Vier|Napoleon Vier]] heeft ge-upload: "[[:Afbeelding:Aspasia.JPG|Aspasia.JPG]]" <em>(eigen werk)</em></li> <li>3 jul 2004 09:32 [[Gebruiker:Napoleon Vier|Napoleon Vier]] heeft ge-upload: "[[:Afbeelding:Aspasia.jpg|Aspasia.jpg]]" <em>(eigen werk)</em></li> <li>3 jul 2004 00:48 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Berlioz.jpg|Berlioz.jpg]]" <em>(Berlioz van wiki-en (PD aldaar - logisch wegens ouderdom))</em></li> <li>2 jul 2004 21:16 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Wankel-1.jpg|Wankel-1.jpg]]" <em>(Wankelmort van de: Eigen fot van &#91;&#91;:de:Benutzer:Softeis]] vrijgegeven onder GNU/FDL &#123;&#123;msg:GFDL}} &#91;&#91;de:Bild:Wankel-1.jpg]])</em></li> <li>2 jul 2004 20:04 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:AntonSaksen.jpg|AntonSaksen.jpg]]" <em>(Koning Anton van Saksen (van Duitse Wiki))</em></li> <li>2 jul 2004 18:55 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:VitamineD3.png|VitamineD3.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: Structure de la &#39;&#39;&#39;vitamine D3&#39;&#39;&#39; Auteur : &#91;&#91;Utilisateur:Yohan&#124;Yohan]] Source : Crée avec MarvinSketch Licence : GFLD &#91;&#91;fr:Image:vitamineD3.png]])</em></li> <li>2 jul 2004 18:55 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:VitamineD2.png|VitamineD2.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: Structure de la &#39;&#39;&#39;vitamine D2&#39;&#39;&#39; Auteur : &#91;&#91;Utilisateur:Yohan&#124;Yohan]] Source : Crée avec MarvinSketch Licence : GFLD &#91;&#91;fr:Image:vitamineD2.png]])</em></li> <li>2 jul 2004 18:27 [[Gebruiker:Snoop|Snoop]] heeft ge-upload: "[[:Afbeelding:Ginagershon001.jpg|Ginagershon001.jpg]]" <em>(van engelse wiki)</em></li> <li>2 jul 2004 17:41 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:Geborenworden.PNG|Geborenworden.PNG]]" <em>(Bewerkte versie van de afbeelding die &#91;&#91;Gebruiker:Sepoki]] maakte: overbodige rand van enkele pixels er af geknipt, en bestand beter gecomprimeerd)</em></li> <li>2 jul 2004 17:41 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:Doodgaan.PNG|Doodgaan.PNG]]" <em>(Bewerkte versie van de afbeelding die &#91;&#91;Gebruiker:Sepoki]] maakte: overbodige rand van enkele pixels er af geknipt, en bestand beter gecomprimeerd)</em></li> <li>2 jul 2004 17:40 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Dimitrov.jpg|Dimitrov.jpg]]" <em>(Georgi Dimitrov (van Engelse Wiki))</em></li> <li>2 jul 2004 17:40 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:Blijvenleven.PNG|Blijvenleven.PNG]]" <em>(Bewerkte versie van de afbeelding die &#91;&#91;Gebruiker:Sepoki]] maakte: overbodige rand van enkele pixels er af geknipt, en bestand beter gecomprimeerd)</em></li> <li>2 jul 2004 15:16 [[Gebruiker:Jofeys|Jofeys]] heeft ge-upload: "[[:Afbeelding:Wapenschild_Alpes-de-Haute-Provence.gif|Wapenschild_Alpes-de-Haute-Provence.gif]]"</li> <li>2 jul 2004 15:16 [[Gebruiker:Jofeys|Jofeys]] heeft ge-upload: "[[:Afbeelding:Kaart_Frankrijk_Departement_04.png|Kaart_Frankrijk_Departement_04.png]]"</li> <li>2 jul 2004 14:26 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:WillemIW.jpg|WillemIW.jpg]]" <em>(Willem I van Württemberg (te oud voor copyright))</em></li> <li>2 jul 2004 14:23 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:AndreMarieAmpere.jpg|AndreMarieAmpere.jpg]]" <em>(Ampere van wiki-en (PD wegens ouderdom))</em></li> <li>2 jul 2004 13:30 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:FrederiKAugustI.jpg|FrederiKAugustI.jpg]]" <em>(Koning Frederik August I van Saksen (van Duitse Wiki))</em></li> <li>2 jul 2004 12:32 [[Gebruiker:N. Steensma|N. Steensma]] heeft ge-upload: "[[:Afbeelding:Satyr.gif|Satyr.gif]]"</li> <li>2 jul 2004 11:53 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Singapore_lrt.jpg|Singapore_lrt.jpg]]"</li> <li>2 jul 2004 11:50 [[Gebruiker:N. Steensma|N. Steensma]] heeft ge-upload: "[[:Afbeelding:Apollo_en_Marsyas.jpg|Apollo_en_Marsyas.jpg]]"</li> <li>2 jul 2004 11:49 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Singapore-bukit1x.jpg|Singapore-bukit1x.jpg]]" <em>(lijnnetkaart LRT)</em></li> <li>2 jul 2004 11:42 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Fracx100.jpg|Fracx100.jpg]]" <em>(people mover op luchthaven frankfurt)</em></li> <li>2 jul 2004 09:32 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Invoegen.jpg|Invoegen.jpg]]"</li> <li>2 jul 2004 08:08 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Weefvak.jpg|Weefvak.jpg]]" <em>(getekend weefvak)</em></li> <li>2 jul 2004 02:20 [[Gebruiker:Gdonners|Gdonners]] heeft ge-upload: "[[:Afbeelding:Geul_voulwammes.jpg|Geul_voulwammes.jpg]]" <em>(De monding van de Geul bij Voulwammes)</em></li> <li>2 jul 2004 02:18 [[Gebruiker:Gdonners|Gdonners]] heeft ge-upload: "[[:Afbeelding:Geul_voor_plombieres.jpg|Geul_voor_plombieres.jpg]]" <em>(De Geul bij Plombieres)</em></li> <li>2 jul 2004 02:07 [[Gebruiker:Gdonners|Gdonners]] heeft ge-upload: "[[:Afbeelding:Geul_stockem.jpg|Geul_stockem.jpg]]" <em>(De Geul bij de Gronsele put tussen Wijlre en Schin op Geul)</em></li> <li>2 jul 2004 02:01 [[Gebruiker:Gdonners|Gdonners]] heeft ge-upload: "[[:Afbeelding:Geul_mechelen.jpg|Geul_mechelen.jpg]]" <em>(Prachtig wandelen langs de Geul bij Mechelen)</em></li> <li>2 jul 2004 01:57 [[Gebruiker:Gdonners|Gdonners]] heeft ge-upload: "[[:Afbeelding:Geul_monding.jpg|Geul_monding.jpg]]" <em>(De Monding van de Geul in Voulwammes)</em></li> <li>2 jul 2004 01:53 [[Gebruiker:Gdonners|Gdonners]] heeft ge-upload: "[[:Afbeelding:Geul_plombieres.jpg|Geul_plombieres.jpg]]" <em>(De Geul bij Plombieres)</em></li> <li>2 jul 2004 01:40 [[Gebruiker:Gdonners|Gdonners]] heeft ge-upload: "[[:Afbeelding:Geul_monding.jpg|Geul_monding.jpg]]" <em>(De monding van de Geul in Voulwammes)</em></li> <li>2 jul 2004 01:39 [[Gebruiker:Gdonners|Gdonners]] heeft ge-upload: "[[:Afbeelding:Geul_plombieres.jpg|Geul_plombieres.jpg]]" <em>(De Geul bij Plombieres)</em></li> <li>2 jul 2004 01:36 [[Gebruiker:Gdonners|Gdonners]] heeft ge-upload: "[[:Afbeelding:Geul_monding.jpg|Geul_monding.jpg]]" <em>(De monding van de Geul in Voulwammes)</em></li> <li>2 jul 2004 01:36 [[Gebruiker:Gdonners|Gdonners]] heeft ge-upload: "[[:Afbeelding:Geul_monding.jpg|Geul_monding.jpg]]" <em>(De monding van de Geul in Voulwammes)</em></li> <li>2 jul 2004 01:34 [[Gebruiker:Gdonners|Gdonners]] heeft ge-upload: "[[:Afbeelding:Geul_plombieres.jpg|Geul_plombieres.jpg]]" <em>(De Geul bij Plombieres)</em></li> <li>2 jul 2004 01:32 [[Gebruiker:Gdonners|Gdonners]] heeft ge-upload: "[[:Afbeelding:Geul_plombieres.jpg|Geul_plombieres.jpg]]" <em>(De Geul Bij Plombieres)</em></li> <li>2 jul 2004 01:16 [[Gebruiker:Gdonners|Gdonners]] heeft ge-upload: "[[:Afbeelding:Geul_monding.jpg|Geul_monding.jpg]]" <em>(De monding van de Geul in Voulwammes)</em></li> <li>2 jul 2004 01:11 [[Gebruiker:Gdonners|Gdonners]] heeft ge-upload: "[[:Afbeelding:Geul_plombieres.jpg|Geul_plombieres.jpg]]" <em>(Geul Plombieres)</em></li> <li>1 jul 2004 23:12 [[Gebruiker:N. Steensma|N. Steensma]] heeft ge-upload: "[[:Afbeelding:Medusa.gif|Medusa.gif]]"</li> <li>1 jul 2004 22:19 [[Gebruiker:N. Steensma|N. Steensma]] heeft ge-upload: "[[:Afbeelding:Perseus.jpg|Perseus.jpg]]"</li> <li>1 jul 2004 21:15 [[Gebruiker:N. Steensma|N. Steensma]] heeft ge-upload: "[[:Afbeelding:Gorgo_antefix2.jpg|Gorgo_antefix2.jpg]]"</li> <li>1 jul 2004 21:04 [[Gebruiker:N. Steensma|N. Steensma]] heeft ge-upload: "[[:Afbeelding:Gorgo_antefix.jpg|Gorgo_antefix.jpg]]"</li> <li>1 jul 2004 19:49 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Lclive.JPG|Lclive.JPG]]" <em>(foto tijdens concert genomen)</em></li> <li>1 jul 2004 19:43 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Bertladen.jpg|Bertladen.jpg]]"</li> <li>1 jul 2004 19:13 [[Gebruiker:N. Steensma|N. Steensma]] heeft ge-upload: "[[:Afbeelding:Herme.gif|Herme.gif]]"</li> <li>1 jul 2004 19:03 [[Gebruiker:N. Steensma|N. Steensma]] heeft ge-upload: "[[:Afbeelding:Dubbele_herme.jpg|Dubbele_herme.jpg]]"</li> <li>1 jul 2004 18:01 [[Gebruiker:Gerritholl|Gerritholl]] heeft ge-upload: "[[:Afbeelding:Ledensp.png|Ledensp.png]]" <em>(Met gnuplot geproduceerde grafiek van aantal leden van de SP als functie van de tijd. Bron informatie: DNPP. Deze afbeelding is .png en door mij zelf gemaakt, en bij dezen cadeau gedaan aan het publieke domein.)</em></li> <li>1 jul 2004 17:27 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Cassini_ringen.jpg|Cassini_ringen.jpg]]" <em>(Foto vanacht genomen van ringen. Afkomstig van website JPL.)</em></li> <li>1 jul 2004 14:12 [[Gebruiker:Sepoki|Sepoki]] heeft ge-upload: "[[:Afbeelding:Geborenworden.PNG|Geborenworden.PNG]]" <em>(Illustratie om een voorbeeld te geven van een situatie waarin een cel geboren wordt in game of life, deze afbeelding is zelf getekend door mij in Paint)</em></li> <li>1 jul 2004 14:03 [[Gebruiker:Sepoki|Sepoki]] heeft ge-upload: "[[:Afbeelding:Doodgaan.PNG|Doodgaan.PNG]]" <em>(Illustratie om een voorbeeld te geven van een situatie waarin een cel dood gaat in game of life, deze afbeelding is zelf getekend door mij in Paint)</em></li> <li>1 jul 2004 13:52 [[Gebruiker:Sepoki|Sepoki]] heeft ge-upload: "[[:Afbeelding:Blijvenleven.PNG|Blijvenleven.PNG]]" <em>(Illustratie om een voorbeeld te geven van een situatie waarin een cel blijft leven, deze afbeelding is zelf getekend door mij in Paint)</em></li> <li>1 jul 2004 13:16 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:GeorgePatton.jpg|GeorgePatton.jpg]]" <em>(Patton van wiki-en (GFDL wegen library of congress))</em></li> <li>1 jul 2004 12:28 [[Gebruiker:Neep|Neep]] heeft ge-upload: "[[:Afbeelding:LogoZwaag.jpg|LogoZwaag.jpg]]" <em>(logo van de gemeente Zwaag)</em></li> <li>1 jul 2004 11:30 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:RudolfHoess.jpg|RudolfHoess.jpg]]" <em>(Hoess van wikipedia en)</em></li> <li>1 jul 2004 11:25 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:HjalmarSchacht.jpg|HjalmarSchacht.jpg]]" <em>(Hjalmar Schacht (van Engelse Wiki))</em></li> <li>1 jul 2004 11:19 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:HorthyHitler.jpg|HorthyHitler.jpg]]" <em>(Miklós Horthy met Adolf Hitler (van Engelse Wiki))</em></li> <li>1 jul 2004 10:38 [[Gebruiker:N. Steensma|N. Steensma]] heeft ge-upload: "[[:Afbeelding:S.V._Rachmaninov.gif|S.V._Rachmaninov.gif]]"</li> <li>1 jul 2004 10:01 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Metternich.jpg|Metternich.jpg]]" <em>(Metternich (zelfde als vorige versie maar onderschrift erafgeknipt en wat verkleind))</em></li> <li>1 jul 2004 07:04 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Wortel_Amsterdamse_Bak.jpg|Wortel_Amsterdamse_Bak.jpg]]" <em>(zelfgemaakte foto van peen Amsterdamse Bak)</em></li> <li>1 jul 2004 07:02 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Wortel_winter_Flakkeese.jpg|Wortel_winter_Flakkeese.jpg]]" <em>(zelfgemaakte foto van winterwortelen)</em></li> <li>30 jun 2004 20:05 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:ScrophulariaVernalis-overz-hr.jpg|ScrophulariaVernalis-overz-hr.jpg]]" <em>(&#91;&#91;Scheveningen&#124;Scheveningse]] &#91;&#91;duin]]en, 24 april 2004, &#123;&#123;eigenwerk}})</em></li> <li>30 jun 2004 20:04 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:ScrophulariaVernalis-closeup-hr.jpg|ScrophulariaVernalis-closeup-hr.jpg]]" <em>(&#91;&#91;Scheveningen&#124;Scheveningse]] &#91;&#91;duin]]en, 24 april 2004, &#123;&#123;eigenwerk}})</em></li> <li>30 jun 2004 20:03 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:ScrophulariaVernalis-closeup-hr.jpg|ScrophulariaVernalis-closeup-hr.jpg]]" <em>(&#91;&#91;Scheveningen&#124;Scheveningse]] &#91;&#91;duin]]en, 24 april 2004, &#123;&#123;eigenwerk}})</em></li> <li>30 jun 2004 20:03 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:ScrophulariaVernalis-bloem-hr.jpg|ScrophulariaVernalis-bloem-hr.jpg]]" <em>(&#91;&#91;Scheveningen&#124;Scheveningse]] &#91;&#91;duin]]en, 24 april 2004, &#123;&#123;eigenwerk}})</em></li> <li>30 jun 2004 20:02 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:ScrophulariaVernalis-blad-hr.jpg|ScrophulariaVernalis-blad-hr.jpg]]" <em>(&#91;&#91;Scheveningen&#124;Scheveningse]] &#91;&#91;duin]]en, 24 april 2004, &#123;&#123;eigenwerk}})</em></li> <li>30 jun 2004 20:01 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:ScrophulariaVernalis-plant-hr.jpg|ScrophulariaVernalis-plant-hr.jpg]]" <em>(&#91;&#91;Scheveningen&#124;Scheveningse]] &#91;&#91;duin]]en, 24 april 2004, &#123;&#123;eigenwerk}})</em></li> <li>30 jun 2004 18:19 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Paddy_Ashdown.jpg|Paddy_Ashdown.jpg]]" <em>(en:wikipedia)</em></li> <li>30 jun 2004 17:42 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Spoorstroomloop.png|Spoorstroomloop.png]]" <em>(paar foutjes eruit gehaald.)</em></li> <li>30 jun 2004 17:41 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Radovan.jpg|Radovan.jpg]]" <em>(en:wikipedia)</em></li> <li>30 jun 2004 17:34 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Spoorstroomloop.png|Spoorstroomloop.png]]" <em>(betere tekening, eigen werk, &#123;&#123;PD}})</em></li> <li>30 jun 2004 17:22 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Fun_diagram.jpg|Fun_diagram.jpg]]"</li> <li>30 jun 2004 16:23 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Metternich.jpg|Metternich.jpg]]" <em>((zelfde als vorige maar betere kwaliteit))</em></li> <li>30 jun 2004 16:16 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Metternich.jpg|Metternich.jpg]]" <em>(Metternich (schilder ongetwijfeld langer dan 70 jaar dood; bovendien dezelfde afbeelding als op en: en de: maar dan in kleur))</em></li> <li>30 jun 2004 15:08 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Radetzky.jpg|Radetzky.jpg]]" <em>(Josef Radetzky von Radetz (gestorven 1858 dus de schilder hiervan is ongetwijfeld al 70 jaar dood))</em></li> <li>30 jun 2004 13:43 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Kurtvonschuschnigg.jpg|Kurtvonschuschnigg.jpg]]" <em>(Kurt von Schuschnigg (van Engelse Wiki))</em></li> <li>30 jun 2004 10:43 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:PavelicHitler.jpg|PavelicHitler.jpg]]" <em>(Ante Pavelic met Adolf Hitler (van Engelse Wiki))</em></li> <li>30 jun 2004 10:43 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:AntePavelic.jpg|AntePavelic.jpg]]" <em>(Ante Pavelic (van Engelse Wiki))</em></li> <li>30 jun 2004 10:30 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:TitoGadaffi.jpg|TitoGadaffi.jpg]]" <em>(Tito met Moammar Gadaffi (van Engelse Wiki))</em></li> <li>30 jun 2004 09:36 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Faure.jpg|Faure.jpg]]" <em>(Gabriel Fauré - foto ouder dan 70 jaar)</em></li> <li>30 jun 2004 09:15 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Indirag.jpg|Indirag.jpg]]" <em>(en:wikipedia)</em></li> <li>30 jun 2004 09:13 [[Gebruiker:Napoleon Vier|Napoleon Vier]] heeft ge-upload: "[[:Afbeelding:Koning_otto.jpg|Koning_otto.jpg]]" <em>(eigen archief)</em></li> <li>30 jun 2004 08:23 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Ontwk.jpg|Ontwk.jpg]]" <em>(Fritz8 - print)</em></li> <li>30 jun 2004 07:30 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Schede_Tuinhommelkoningin_op_braam.jpg|Schede_Tuinhommelkoningin_op_braam.jpg]]" <em>(zelfgemaakte foto van een Tuinhommelkoningin op braam; half juni)</em></li> <li>30 jun 2004 05:34 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bota.jpg|Bota.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#91;&#91;Boris Tadic]] &amp;mdash; picture is from website of national assembly. Copyright sign refers to the design of the website not contents &#91;&#91;en:Image:Bota.jpg]])</em></li> <li>29 jun 2004 22:56 [[Gebruiker:Napoleon Vier|Napoleon Vier]] heeft ge-upload: "[[:Afbeelding:Justus_1.jpg|Justus_1.jpg]]" <em>(eigen werk)</em></li> <li>29 jun 2004 22:50 [[Gebruiker:Napoleon Vier|Napoleon Vier]] heeft ge-upload: "[[:Afbeelding:Lipsius1.JPG|Lipsius1.JPG]]" <em>(eigen werk)</em></li> <li>29 jun 2004 20:55 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Loekie.JPG|Loekie.JPG]]" <em>(eigen foto)</em></li> <li>29 jun 2004 20:54 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Cocker2.JPG|Cocker2.JPG]]" <em>(eigen foto)</em></li> <li>29 jun 2004 20:54 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Cocker1.JPG|Cocker1.JPG]]" <em>(eigen foto)</em></li> <li>29 jun 2004 19:53 [[Gebruiker:Michiel1972|Michiel1972]] heeft ge-upload: "[[:Afbeelding:Acadiane.jpg|Acadiane.jpg]]" <em>(Acadiane (eigen foto))</em></li> <li>29 jun 2004 19:49 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Napelsgeel.png|Napelsgeel.png]]" <em>(Napels geel, eigen werk, ter beschikking gesteld onder GFDL)</em></li> <li>29 jun 2004 18:56 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Bunch_of_radishes.jpg|Bunch_of_radishes.jpg]]"</li> <li>29 jun 2004 18:56 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Bunch_of_radishes.jpg|Bunch_of_radishes.jpg]]"</li> <li>29 jun 2004 17:44 [[Gebruiker:Jofeys|Jofeys]] heeft ge-upload: "[[:Afbeelding:Wapenschild_Allier.gif|Wapenschild_Allier.gif]]"</li> <li>29 jun 2004 17:42 [[Gebruiker:Jofeys|Jofeys]] heeft ge-upload: "[[:Afbeelding:Wapenschiild_Allier.gif|Wapenschiild_Allier.gif]]"</li> <li>29 jun 2004 16:08 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Bruceroutes2.PNG|Bruceroutes2.PNG]]" <em>(Routes van &#91;&#91;James Bruce]]. Gemaakt door &#91;&#91;Gebruiker:Andre Engels&#124;Andre Engels]] op een kaart van de CIA, vertaald door &#91;&#91;Gebruiker:Danielm&#124;Danielm]]. Zie &#91;&#91;Media:Kaart Afrika.jpg]] voor het origineel. &#123;&#123;msg:PD}})</em></li> <li>29 jun 2004 15:28 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:KingVulturepubdom.jpg|KingVulturepubdom.jpg]]" <em>(en:wikipedia)</em></li> <li>29 jun 2004 14:49 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Hertshoorn.jpg|Hertshoorn.jpg]]" <em>(Hertshoornvaren (eigen foto, public domain - bij nader inzien was de vorige geüploade foto gekanteld))</em></li> <li>29 jun 2004 14:29 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Hertshoorn.jpg|Hertshoorn.jpg]]" <em>(Hertshoornvaren (eigen foto, public domain))</em></li> <li>29 jun 2004 11:38 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:Boog-en-middelpuntshoek-cirkel.png|Boog-en-middelpuntshoek-cirkel.png]]" <em>(cirkel met een boog en zijn middelpuntshoek aangeduid - gemaakt door Wilinckx en hierbij in het publiek domein geplaatst)</em></li> <li>29 jun 2004 10:25 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:TitoCastro.jpg|TitoCastro.jpg]]" <em>(Tito met Fidel Castro (van Engelse Wiki))</em></li> <li>29 jun 2004 10:23 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Tito2.jpg|Tito2.jpg]]" <em>(Tito met Ivan Ribar, 13 juni 1943 (van Engelse Wiki))</em></li> <li>29 jun 2004 10:18 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Tito.jpg|Tito.jpg]]" <em>(Josip Broz Tito (van Engelse Wiki))</em></li> <li>29 jun 2004 09:38 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:Middelpunt-cirkel.png|Middelpunt-cirkel.png]]" <em>(middelpunt van een cirkel - gemaakt door Wilinckx met behulp van Dia, &#91;&#91;The Gimp]] en optipng. Indien er copyright kan vallen op zulke eenvoudige afbeeldingen plaats ik deze afbeelding hierbij onder publiek domein)</em></li> <li>29 jun 2004 08:50 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:Diameter-cirkel.png|Diameter-cirkel.png]]" <em>(diameter van een cirkel - gemaakt door Wilinckx met behulp van Dia, &#91;&#91;The Gimp]] en optipng. Indien er copyright kan vallen op zo een eenvoudige afbeelding plaats ik deze afbeelding hierbij in het publiek domein)</em></li> <li>29 jun 2004 08:42 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:Straal-cirkel.png|Straal-cirkel.png]]" <em>(Straal van een cirkel - gemaakt door Wilinckx met behulp van Dia, &#91;&#91;The Gimp]] en optipng. Indien er copyright kan vallen op zulk een eenvoudige afbeelding plaats ik deze afbeelding hierbij in het publiek domein)</em></li> <li>29 jun 2004 08:30 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Hommelnest_binnenkant.jpg|Hommelnest_binnenkant.jpg]]" <em>(overgenomen van de internetsite van de projectgroep Ethologie en Socio-Oecologie van de Universiteit van Utrecht)</em></li> <li>29 jun 2004 08:04 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Gadams.jpg|Gadams.jpg]]" <em>(en:wikipedia)</em></li> <li>29 jun 2004 07:14 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Weidehommel.jpg|Weidehommel.jpg]]" <em>(uit Deltas insectengids)</em></li> <li>29 jun 2004 06:56 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:UbboEmmius.png|UbboEmmius.png]]" <em>(Ubbo Emmius van de: Aldaar angegeven dat het van een bron afkomstig die het in het publieke domein heeft geplaatst. &#123;&#123;msg:PD}} &#91;&#91;de:Bild:UbboEmmius]])</em></li> <li>28 jun 2004 23:37 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Turner.grandcanal.750pix.jpg|Turner.grandcanal.750pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Turner, &amp;#8220;The Grand Canal, Venice&amp;#8221;, painted 1835. Size: 36 by 48 inches (91 by 122 cm). The Metropolitan Museum of Art, New York, USA. &lt;br&gt; Source: WebMuseum, Paris http&#58;//www.ibiblio.org&lt;br&gt; Picture prepared for Wikipedia by Adrian Pingstone in May 2003. &#91;&#91;en:Image:turner.grandcanal.750pix.jpg]])</em></li> <li>28 jun 2004 23:37 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Turner_temeraire.jpg|Turner_temeraire.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: public domain, quelle: http&#58;//cgfa.sunsite.dk/turner/p-turner11.htm &#91;&#91;de:Bild:Turner temeraire.jpg]])</em></li> <li>28 jun 2004 23:37 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Turner_fischer_auf_see.jpg|Turner_fischer_auf_see.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: public domain, quelle: http&#58;//cgfa.sunsite.dk/turner/p-turner20.htm &#91;&#91;de:Bild:Turner fischer auf see.jpg]])</em></li> <li>28 jun 2004 22:22 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:SacreCoeur.jpg|SacreCoeur.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Montmartre&#39;s Basilica of Sacré Coeur in Paris, France This photo was taken by Chris McCabe on 18 June 2002 at 11:00 &#123;&#123;unverified}} &#91;&#91;en:Image:SacreCoeur.jpg]])</em></li> <li>28 jun 2004 20:17 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:UmbertoII.jpg|UmbertoII.jpg]]" <em>(Umberto II van Italië (van Engelse Wiki))</em></li> <li>28 jun 2004 19:26 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Lunaire-annua-fr.jpg|Lunaire-annua-fr.jpg]]" <em>(van franse wiki)</em></li> <li>28 jun 2004 18:35 [[Gebruiker:Jofeys|Jofeys]] heeft ge-upload: "[[:Afbeelding:Wapenschiild_Allier.gif|Wapenschiild_Allier.gif]]"</li> <li>28 jun 2004 18:34 [[Gebruiker:Jofeys|Jofeys]] heeft ge-upload: "[[:Afbeelding:Kaart_Frankrijk_Departement_03.png|Kaart_Frankrijk_Departement_03.png]]"</li> <li>28 jun 2004 18:18 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Radio.jpg|Radio.jpg]]" <em>(Radio - van de gelijknamige en-wikipediapagina)</em></li> <li>28 jun 2004 18:00 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Guadalcanal1.jpg|Guadalcanal1.jpg]]" <em>(Guadalcanal-foto van de Engelstalige wiki)</em></li> <li>28 jun 2004 17:15 [[Gebruiker:Jofeys|Jofeys]] heeft ge-upload: "[[:Afbeelding:Kaart_Frankrijk_Departement_02.png|Kaart_Frankrijk_Departement_02.png]]"</li> <li>28 jun 2004 17:14 [[Gebruiker:Jofeys|Jofeys]] heeft ge-upload: "[[:Afbeelding:Wapenschild_Aisne.gif|Wapenschild_Aisne.gif]]"</li> <li>28 jun 2004 15:38 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:Sine_Cosine_Graph.png|Sine_Cosine_Graph.png]]" <em>(bewerkt: engelstatalige titel er afgeknipt omdat het engels is en een titel niet bij een afbeelding hoort - afbeelding is oorspronkelijk gemaakt door &#91;&#91;:en:User:BlackGriffen]] en valt onder de GFDL)</em></li> <li>28 jun 2004 15:37 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:WilhelmZoons.jpg|WilhelmZoons.jpg]]" <em>( Wilhelm II met zijn zoons (public domain van http&#58;//www.gwpda.org/photos/greatwar.htm))</em></li> <li>28 jun 2004 15:35 [[Gebruiker:Bart van der Pligt|Bart van der Pligt]] heeft ge-upload: "[[:Afbeelding:4schieen.jpg|4schieen.jpg]]" <em>(eigen maaksel)</em></li> <li>28 jun 2004 15:09 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:WilhelmII4.jpg|WilhelmII4.jpg]]" <em>(Keizer Wilhelm II in het uniform van een Turkse veldmaarschalk (public domain van http&#58;//www.gwpda.org/photos/greatwar.htm))</em></li> <li>28 jun 2004 14:56 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:WilhelmII3.jpg|WilhelmII3.jpg]]" <em>(Keizer Wilhelm II (public domain van http&#58;//www.gwpda.org/photos/greatwar.htm))</em></li> <li>28 jun 2004 14:54 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:WilhelmIIx.jpg|WilhelmIIx.jpg]]" <em>(Keizer Wilhelm II (van Engelse Wiki))</em></li> <li>28 jun 2004 14:47 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Auguste_Viktoria.jpg|Auguste_Viktoria.jpg]]" <em>(Keizerin Auguste Victoria van Duitsland (van Duitse Wiki))</em></li> <li>28 jun 2004 14:07 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:WilhelmII1890.jpg|WilhelmII1890.jpg]]" <em>(Keizer Wilhelm II rond 1890 (van Engelse Wiki))</em></li> <li>28 jun 2004 13:19 [[Gebruiker:Bartux|Bartux]] heeft ge-upload: "[[:Afbeelding:AgiosNikolaos.jpg|AgiosNikolaos.jpg]]" <em>(Agios Nikolaos (Kreta) - GFDL - Oktober 2002 - Reinhard Kraasch - afkomstig van de: wikipedia)</em></li> <li>28 jun 2004 08:44 [[Gebruiker:Bontenbal|Bontenbal]] heeft ge-upload: "[[:Afbeelding:DuraoBarroso.jpg|DuraoBarroso.jpg]]" <em>(van Engelse Wikipedia)</em></li> <li>28 jun 2004 06:13 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Dollard.jpg|Dollard.jpg]]" <em>(Zelfde foto nu met tekst, fout uit de vorige weggewerkt)</em></li> <li>28 jun 2004 06:02 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Dollard.jpg|Dollard.jpg]]" <em>(Zelfde foto nu met geografische namen)</em></li> <li>27 jun 2004 21:43 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Busbaan_Almere.jpg|Busbaan_Almere.jpg]]" <em>(Busbaan bij NS-station Almere Muziekwijk, eigen foto, &#123;&#123;PD}})</em></li> <li>27 jun 2004 20:27 [[Gebruiker:James|James]] heeft ge-upload: "[[:Afbeelding:Novell_logo.gif|Novell_logo.gif]]" <em>(Novell logo, bron: www.novell.com)</em></li> <li>27 jun 2004 20:12 [[Gebruiker:Bart|Bart]] heeft ge-upload: "[[:Afbeelding:Kljbaseline.jpg|Kljbaseline.jpg]]" <em>(van www.klj.be)</em></li> <li>27 jun 2004 20:05 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Woodstork17.jpg|Woodstork17.jpg]]" <em>(en:wikipedia)</em></li> <li>27 jun 2004 19:57 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Dollard.jpg|Dollard.jpg]]" <em>(Sattelietfoto van de Dollard, gedownload van http&#58;//satfoto.geoserve.nl/false-nl/index.html en volgens deze pagina vrij van rechten zolang als bron NLR en ESA worden vermeld. Hierbij gedaan. Deze tekst is voor mij doorslaggevend bij het interpreteren van copyright teken links onderaan naast de vermelding NLR/ESA op de foto )</em></li> <li>27 jun 2004 19:55 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Harpy_Eagle2.JPG|Harpy_Eagle2.JPG]]" <em>(en:wikipedia)</em></li> <li>27 jun 2004 19:51 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:WillemIIWürttemberg.jpg|WillemIIWürttemberg.jpg]]" <em>(Willem II van Württemberg (van Duitse Wiki))</em></li> <li>27 jun 2004 19:34 [[Gebruiker:Esperanto|Esperanto]] heeft ge-upload: "[[:Afbeelding:Esperanto-melono.png|Esperanto-melono.png]]" <em>(Gekopiëerd uit de Duitse Wikipedia)</em></li> <li>27 jun 2004 19:28 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Amalia_01.jpg|Amalia_01.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#91;&#91;Amália Rodrigues]] --&#91;&#91;User:Januario&#124;Januario]] 16:55, Jun 11, 2004 (UTC) &#91;&#91;en:Image:Amalia 01.jpg]])</em></li> <li>27 jun 2004 19:25 [[Gebruiker:Napoleon Vier|Napoleon Vier]] heeft ge-upload: "[[:Afbeelding:Lipsius1.jpg|Lipsius1.jpg]]" <em>(eigen werk)</em></li> <li>27 jun 2004 19:19 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Dollfuß_radio.jpg|Dollfuß_radio.jpg]]" <em>(Engelbert Dollfuß (van Engelse Wiki))</em></li> <li>27 jun 2004 18:12 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Chau_gong.jpg|Chau_gong.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Chau Gong This is an original photograph by &#91;&#91;user:andrewa&#124;Andrew Alder]], taken on 4 September 2003. Permission is granted to copy, distribute and/or modify under the GFDL, version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. &#91;&#91;en:Image:Chau gong.jpg]])</em></li> <li>27 jun 2004 18:08 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Evgkite.jpg|Evgkite.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Snail Kite from sfwmd.gov &#91;&#91;en:Image:evgkite.jpg]])</em></li> <li>27 jun 2004 18:01 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Glossyibis06.jpg|Glossyibis06.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Glossy Ibis from sfwmd.gov &#91;&#91;en:Image:Glossyibis06.jpg]])</em></li> <li>27 jun 2004 17:37 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:BurrowingOwl23.jpg|BurrowingOwl23.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Burrowing Owl from USGS Source: U.S. Geological Survey,Columbia Environmental Research Center &#91;&#91;en:Image:BurrowingOwl23.jpg]])</em></li> <li>27 jun 2004 17:28 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Americanwhitepelican75sm.JPG|Americanwhitepelican75sm.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: american white pelican public domain from USFWA &#91;&#91;en:Image:Americanwhitepelican75sm.JPG]])</em></li> <li>27 jun 2004 17:25 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Great_Horned_Owl.USFWS.jpg|Great_Horned_Owl.USFWS.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a &#91;&#91;public domain]] image from the US Fish and Wildlife Service. This image was found &#91;http&#58;//images.fws.gov/default.cfm?fuseaction=records.display&amp;CFID=577127&amp;CFTOKEN=16100189&amp;id=476DD170%2D3308%2D4205%2DAD013D7F74463E98) here] &#123;&#123;PD}} &#91;&#91;en:Image:Great Horned Owl.USFWS.jpg]])</em></li> <li>27 jun 2004 17:12 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Barnie.JPG|Barnie.JPG]]" <em>(en:wikipedia)</em></li> <li>27 jun 2004 17:08 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:ShortearedOwl23.jpg|ShortearedOwl23.jpg]]" <em>(en:wikipedia)</em></li> <li>27 jun 2004 16:44 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Americankestrel65.jpg|Americankestrel65.jpg]]" <em>(en:wikipedia)</em></li> <li>27 jun 2004 15:58 [[Gebruiker:Barthoeksma|Barthoeksma]] heeft ge-upload: "[[:Afbeelding:VREDE_NU|VREDE_NU]]" <em>(IK BEN EEN VAN DE BEATLES DUS DOWNLOAD DE BEWERKTE SGT.PEPPERS LONELY HEARTSCLUB MAARE)</em></li> <li>27 jun 2004 15:50 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:VlagApeldoorn.png|VlagApeldoorn.png]]" <em>(Vlag de gemeente Apeldoorn. Eigen werk.)</em></li> <li>27 jun 2004 12:45 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Herstellingsteken.PNG|Herstellingsteken.PNG]]" <em>(Herstellingsteken eigen productie, GFDL)</em></li> <li>27 jun 2004 12:02 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Rtailedtropicbird8.jpg|Rtailedtropicbird8.jpg]]" <em>(en:wikipedia)</em></li> <li>27 jun 2004 12:02 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Kwintencirkel.png|Kwintencirkel.png]]" <em>(Kwintencirkel van wiki-en )</em></li> <li>27 jun 2004 12:00 [[Gebruiker:RonaldW|RonaldW]] heeft ge-upload: "[[:Afbeelding:MauriceGarin1897.png|MauriceGarin1897.png]]" <em>(komt van franse wikipedia, omschrijving daar is: public domain (1897))</em></li> <li>27 jun 2004 11:59 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Redfacedcormorant18.jpg|Redfacedcormorant18.jpg]]" <em>(en:wikipedia)</em></li> <li>27 jun 2004 11:56 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Redfootbooby06.jpg|Redfootbooby06.jpg]]" <em>(en:wikipedia)</em></li> <li>27 jun 2004 11:54 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Darter-341.jpg|Darter-341.jpg]]" <em>(en:wikipedia)</em></li> <li>27 jun 2004 11:51 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Lesserfrigbird.jpg|Lesserfrigbird.jpg]]" <em>(en:wikipedia)</em></li> <li>27 jun 2004 10:33 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:ReunionLocatie.png|ReunionLocatie.png]]" <em>(3 maal is scheepsrecht...)</em></li> <li>27 jun 2004 10:31 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:ReunionLocatie.png|ReunionLocatie.png]]" <em>(2e poging)</em></li> <li>27 jun 2004 10:29 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:ReunionLocatie.png|ReunionLocatie.png]]" <em>(Locatie Reunion (bewerkte locatie van madagascar, GFDL))</em></li> <li>27 jun 2004 10:01 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Kropsla_bloei_.jpg|Kropsla_bloei_.jpg]]" <em>(zelfgemaakte foto van botersla; eind juni)</em></li> <li>27 jun 2004 09:50 [[Gebruiker:Henricus|Henricus]] heeft ge-upload: "[[:Afbeelding:NoordHollandLocatie.png|NoordHollandLocatie.png]]" <em>(Locatie Noord-Holland van wiki-en (-&gt; Vlieland bij Friesland))</em></li> <li>27 jun 2004 08:19 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Regenboog2.jpg|Regenboog2.jpg]]" <em>(regenboog juni 2004 eigen foto)</em></li> <li>26 jun 2004 23:07 [[Gebruiker:Pven|Pven]] heeft ge-upload: "[[:Afbeelding:Pyrite.mass.750pix.jpg|Pyrite.mass.750pix.jpg]]" <em>(A mass of pyrite crystals; Photographed by Adrian Pingstone in September 2002 and released to the public domain.)</em></li> <li>26 jun 2004 20:19 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:EuphrasiaStricta-bloem-kl.jpg|EuphrasiaStricta-bloem-kl.jpg]]" <em>(duinen bij &#91;&#91;Wassenaar]], juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>26 jun 2004 20:11 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Fermate.png|Fermate.png]]" <em>(fermate teken (eigen productie: PD))</em></li> <li>26 jun 2004 19:34 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Overbind.png|Overbind.png]]" <em>(overbinding (eigen productie: PD))</em></li> <li>26 jun 2004 18:12 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:PolygonumBistorta-overz-kl.jpg|PolygonumBistorta-overz-kl.jpg]]" <em>(&#91;&#91;den Haag]], Florence Nightingalepark, mei 2004, &#123;&#123;eigenwerk}})</em></li> <li>26 jun 2004 18:11 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:PolygonumBistorta-closeup-kl.jpg|PolygonumBistorta-closeup-kl.jpg]]" <em>(&#91;&#91;den Haag]], Florence Nightingalepark, mei 2004, &#123;&#123;eigenwerk}})</em></li> <li>26 jun 2004 18:11 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:PolygonumBistorta-bloem-kl.jpg|PolygonumBistorta-bloem-kl.jpg]]" <em>(&#91;&#91;den Haag]], Florence Nightingalepark, mei 2004, &#123;&#123;eigenwerk}})</em></li> <li>26 jun 2004 18:10 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:PolygonumBistorta-bloem-kl.jpg|PolygonumBistorta-bloem-kl.jpg]]" <em>(&#91;&#91;den Haag]], Florence Nightingalepark, mei 2004, &#123;&#123;eigenwerk}})</em></li> <li>26 jun 2004 18:07 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:PolygonumBistorta-plant-kl.jpg|PolygonumBistorta-plant-kl.jpg]]" <em>(&#91;&#91;den Haag]], Florence Nightingalepark, mei 2004, &#123;&#123;eigenwerk}})</em></li> <li>26 jun 2004 18:06 [[Gebruiker:Jofeys|Jofeys]] heeft ge-upload: "[[:Afbeelding:Kaart_Frankrijk_Departement_01.png|Kaart_Frankrijk_Departement_01.png]]"</li> <li>26 jun 2004 15:32 [[Gebruiker:Conget|Conget]] heeft ge-upload: "[[:Afbeelding:Mahjong.gif|Mahjong.gif]]" <em>(Dit is een plaatje van Mahjong. Iedereen kan dat zelf scannen.)</em></li> <li>26 jun 2004 15:19 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:Rabobank_groot.jpg|Rabobank_groot.jpg]]" <em>(Vestiging Rabobank (grote versie). Eigen foto, GNU FDL)</em></li> <li>26 jun 2004 15:18 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:Rabobank_klein.jpg|Rabobank_klein.jpg]]" <em>(Vestiging Rabobank (kleine versie). Eigen foto, GNU FDL)</em></li> <li>26 jun 2004 14:46 [[Gebruiker:Jofeys|Jofeys]] heeft ge-upload: "[[:Afbeelding:Kaart_Frankrijk_Departement_68.png|Kaart_Frankrijk_Departement_68.png]]"</li> <li>26 jun 2004 14:45 [[Gebruiker:Jofeys|Jofeys]] heeft ge-upload: "[[:Afbeelding:Kaart_Frankrijk_Departement_68.png.png|Kaart_Frankrijk_Departement_68.png.png]]"</li> <li>26 jun 2004 14:34 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:BowieaVolubilis.jpg|BowieaVolubilis.jpg]]" <em>(Bowiea volubilis (foto &#91;&#91;Gebruiker:Känsterle&#124;Känsterle]], public domain))</em></li> <li>26 jun 2004 14:20 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Weensk.jpg|Weensk.jpg]]" <em>(Fritz8 - print)</em></li> <li>26 jun 2004 14:13 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Huislook.jpg|Huislook.jpg]]" <em>(Huislook (foto &#91;&#91;Gebruiker:Känsterle&#124;Känsterle]], public domain))</em></li> <li>26 jun 2004 13:25 [[Gebruiker:Jofeys|Jofeys]] heeft ge-upload: "[[:Afbeelding:Wapenschild_Haut-Rhin.gif|Wapenschild_Haut-Rhin.gif]]"</li> <li>26 jun 2004 12:32 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Flintbeach.jpg|Flintbeach.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Pebble beach of flint nodules, Rügen, Germany in 2004 &#91;&#91;en:Image:flintbeach.jpg]])</em></li> <li>26 jun 2004 12:30 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Feuersteinaxt.jpg|Feuersteinaxt.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: *Beschreibung: Aus Feuerstein hergestellte steinzeitliche Axt. Die Länge der Axt beträgt 31 cm, an der Schneide ist die Axt ca. 8 cm breit. *Quelle: Selbst fotografiert *Fotograf oder Zeichner: Dr. Henning Krämer, Geesthacht *Andere Versionen: *Lizenzstatus: GNU FDL &#91;&#91;de:Bild:Feuersteinaxt.jpg]])</em></li> <li>26 jun 2004 12:23 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Blackmar.jpg|Blackmar.jpg]]" <em>(Oorspronkelijk had dit de naam black.jpg en was geupload door &#91;&#91;Gebruiker:jaapvanderkooij]], opnieuw geupload vanwege andere foto met dezelfde naam)</em></li> <li>26 jun 2004 12:19 [[Gebruiker:Black Darkness|Black Darkness]] heeft ge-upload: "[[:Afbeelding:Black.jpg|Black.jpg]]" <em>(Eerdere versie hersteld)</em></li> <li>26 jun 2004 10:14 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Tarvdk.jpg|Tarvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>26 jun 2004 10:03 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Stafk.jpg|Stafk.jpg]]" <em>(Fritz8 - print)</em></li> <li>26 jun 2004 09:44 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Spavdk.jpg|Spavdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>26 jun 2004 09:29 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Sokolk.jpg|Sokolk.jpg]]" <em>(Fritz8 - print)</em></li> <li>26 jun 2004 09:08 [[Gebruiker:Falcongj|Falcongj]] heeft ge-upload: "[[:Afbeelding:Emdenwappen.png|Emdenwappen.png]]" <em>(Wapen Emden (afkomstig uit Duitse Wikipedia))</em></li> <li>26 jun 2004 09:07 [[Gebruiker:Falcongj|Falcongj]] heeft ge-upload: "[[:Afbeelding:Emden.png|Emden.png]]" <em>(Locatie Emden (afkomstig van Duitse Wikipedia))</em></li> <li>26 jun 2004 09:02 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Slavivdk.jpg|Slavivdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>26 jun 2004 08:15 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Begraafplaats_Oud_Eik_en_Duinen,_Den_Haag,_april_2004.JPG|Begraafplaats_Oud_Eik_en_Duinen,_Den_Haag,_april_2004.JPG]]" <em>(Begraafplaats Oud Eik en Duinen, Den Haag, april 2004, eigen foto ter beschikking gesteld onder GFDL)</em></li> <li>26 jun 2004 08:09 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Sicik.jpg|Sicik.jpg]]" <em>(Fritz8 - print)</em></li> <li>26 jun 2004 07:48 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Zilvermeeuw_Scheveningen_mei_2004.JPG|Zilvermeeuw_Scheveningen_mei_2004.JPG]]" <em>(Zilvermeeuw op de pier van Scheveningen, mei 2004, eigen foto ter beschikking gesteld onder GNU/FDL)</em></li> <li>26 jun 2004 06:36 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Turkish_ebru_sample_1.jpg|Turkish_ebru_sample_1.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-tr. De beschrijving daar was: Turkish ebru sample 1 &#91;&#91;tr:Image:Turkish ebru sample 1.jpg]])</em></li> <li>26 jun 2004 06:25 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Gemarmerd_boekomslag.JPG|Gemarmerd_boekomslag.JPG]]" <em>(Gemarmerd boekomslag in een druk van Deutschen Verlags-Unstalt uit Stuttgard, G. Hallberger, waarschijnlijk rond 1900, verzameld werk van Goethe)</em></li> <li>26 jun 2004 05:54 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Palette_knife.jpg|Palette_knife.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: A common palette knife used for painting. Image taken by me (--&#91;&#91;User:IYY&#124;IYY]] 21:59, 25 May 2004 (UTC)). &#91;&#91;en:Image:Palette knife.jpg]])</em></li> <li>25 jun 2004 21:54 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Viaduc_de_Millau_construction_nord.jpg|Viaduc_de_Millau_construction_nord.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: Le &#91;&#91;viaduc de Millau]] en construction, partie nord, début 2004. &#123;&#123;GPL}} &#91;&#91;fr:Image:Viaduc de Millau construction nord.jpg]])</em></li> <li>25 jun 2004 21:54 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Viaduc_de_Millau_construction_sud.jpg|Viaduc_de_Millau_construction_sud.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: Le &#91;&#91;viaduc de Millau]] en construction, partie sud, début 2004. &#123;&#123;GPL}} &#91;&#91;fr:Image:Viaduc de Millau construction sud.jpg]])</em></li> <li>25 jun 2004 21:36 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:Buitenspel.png|Buitenspel.png]]" <em>(Buitenspelsituatie. Eigen werk, achtergrond voetbalveld van plaatje in en.wikipedia)</em></li> <li>25 jun 2004 17:50 [[Gebruiker:Jofeys|Jofeys]] heeft ge-upload: "[[:Afbeelding:Wapenschild_Bas-Rhin.gif|Wapenschild_Bas-Rhin.gif]]"</li> <li>25 jun 2004 17:07 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Boomhommel_closeup.jpg|Boomhommel_closeup.jpg]]" <em>(zelfgemaakte foto van Boomhommel; eind juni)</em></li> <li>25 jun 2004 17:06 [[Gebruiker:DaMatriX|DaMatriX]] heeft ge-upload: "[[:Afbeelding:Dinofelis_drawing.jpg|Dinofelis_drawing.jpg]]" <em>(http&#58;//www.wtv-zone.com/BigCats/cathistory/page2.html. No copyright found on this website. Not sure on the situation.)</em></li> <li>25 jun 2004 15:25 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:FrederikIboek.jpg|FrederikIboek.jpg]]" <em>(Frederik I krijgt de Mark Brandenburg als leen en wordt verheven tot keurvorst (scan uit een middeleeuws boek, dus geen copyright))</em></li> <li>25 jun 2004 14:27 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:BarmhartigeSamaritaan.jpg|BarmhartigeSamaritaan.jpg]]" <em>(De Barmhartige Samaritaan (public domain van http&#58;//breadsite.org))</em></li> <li>25 jun 2004 13:03 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:GeorgeVNicolaasII.jpg|GeorgeVNicolaasII.jpg]]" <em>(George V met Nicolaas II in Berlijn 1913 (public domain van public domain van http&#58;//www.gwpda.org/photos/greatwar.htm))</em></li> <li>25 jun 2004 12:58 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:GeorgeIIGriekenland.jpg|GeorgeIIGriekenland.jpg]]" <em>(George II van Griekenland (public domain van http&#58;//www.gwpda.org/photos/greatwar.htm - er stond daar slechts &quot;Kroonprins George&quot; maar ten tijde van WO1, waar die site over gaat, was George II inderdaad nog kroonprins))</em></li> <li>25 jun 2004 12:54 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:FranzvonPapen.jpg|FranzvonPapen.jpg]]" <em>(Franz von Papen (public domain van http&#58;//www.gwpda.org/photos/greatwar.htm))</em></li> <li>25 jun 2004 12:34 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:StefanIHongarije.jpg|StefanIHongarije.jpg]]" <em>(Stefan I van Hongarije (afbeelding van een icoon, te oud om copyright te hebben))</em></li> <li>25 jun 2004 12:12 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Detail_Karel_Appel_Nostalgie_de_la_trompette_douce_1998.jpg|Detail_Karel_Appel_Nostalgie_de_la_trompette_douce_1998.jpg]]" <em>(Detail van een werk op papier van Karel Appel uit 1998, Overgenomen met een beroep op het Citaatrecht. Derhalve alleen bestemd voor het artikel over &#91;&#91;Karel Appel]])</em></li> <li>25 jun 2004 12:10 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Schovdk.jpg|Schovdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>25 jun 2004 12:07 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Detail_Karel_Appel_Compositie_1960.jpg|Detail_Karel_Appel_Compositie_1960.jpg]]" <em>(Detail van een schilderij van Karel Appel, Compositie, uit 1960, opgenomen met een beroep op het Citaatrecht en derhalve alleen bestemd voor het artikel over &#91;&#91;Karel Appel]])</em></li> <li>25 jun 2004 12:05 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Detail_Karel_Appel_Vragende_Kinderen_Tate_gallery_1949.jpg|Detail_Karel_Appel_Vragende_Kinderen_Tate_gallery_1949.jpg]]" <em>(Detail van een werk van &#91;&#91;Karel Appel]], vragende kinderen, Tate Gallery, opgenomen met een beroep op het citaatrecht, derhalve alleen bedoeld voor het artikel over Karel Appel)</em></li> <li>25 jun 2004 11:59 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Detail_Karel_Appel_Vrijheidsschreeuw_1948.jpg|Detail_Karel_Appel_Vrijheidsschreeuw_1948.jpg]]" <em>(Detail van het schilderij vrijheidsschreeuw van &#91;&#91;Karel Appel]], opgenomen met een beroep op het citaatrecht. Alleen bestemd voor het artikel over Karel Appel.)</em></li> <li>25 jun 2004 11:44 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Scank.jpg|Scank.jpg]]" <em>(Fritz8 - print)</em></li> <li>25 jun 2004 11:07 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Retvdk.jpg|Retvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>25 jun 2004 09:53 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Russk.jpg|Russk.jpg]]" <em>(Fritz8 - print)</em></li> <li>25 jun 2004 09:27 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Romavdk.jpg|Romavdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>25 jun 2004 07:54 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Tuinzaal_stedelijk_museum.jpg|Tuinzaal_stedelijk_museum.jpg]]" <em>(Tuinzaal van het Stedelijk Museum in Amsterdam, rond 1960, uit de brochure Het Stedelijk Museum. Architectuur in dienst van de kunst, Vanaf website monumenten Amsterdam, http&#58;//www.bma.amsterdam.nl/docs/stedelijkmuseum.pdf)</em></li> <li>25 jun 2004 06:45 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Raphaelle_peale_na_het_bad.jpg|Raphaelle_peale_na_het_bad.jpg]]" <em>(&#91;&#91;Raphaelle Peala]], Na het bad, Trompe l&#39;euil schilderij, uit 1823, vanaf CGFA, http&#58;//cgfa.sunsite.dk/p/p-2.htm#rapeale, overnemen met bronvermelding is toegestaan.)</em></li> <li>24 jun 2004 23:48 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:BrazilieVlag.png|BrazilieVlag.png]]" <em>(Vlag Brazilie van wiki-en )</em></li> <li>24 jun 2004 20:21 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Zero.jpg|Zero.jpg]]" <em>(Zero-van de Engelstalige wiki)</em></li> <li>24 jun 2004 20:17 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:EmmaHawai.jpg|EmmaHawai.jpg]]" <em>(Koningin Emma van Hawaï (van Engelse Wiki))</em></li> <li>24 jun 2004 19:48 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Alexanderliholiho.jpg|Alexanderliholiho.jpg]]" <em>(Kamehameha IV van Hawaï (van Engelse Wiki))</em></li> <li>24 jun 2004 19:07 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Nudemaja.JPG|Nudemaja.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#39;the naked maja&#39; painted by francisco goya &#91;&#91;en:Image:nudemaja.JPG]])</em></li> <li>24 jun 2004 19:07 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Clotmaja.JPG|Clotmaja.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#39;the clad maja&#39; painted by francisco goya (madrid) &#91;&#91;en:Image:clotmaja.JPG]])</em></li> <li>24 jun 2004 19:06 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Goyapint.jpg|Goyapint.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Selbstporträt von Francisco de Goya. Das Bild ist aufgrund seines Alters Public Domain. &#91;&#91;de:Bild:Goyapint.jpg]])</em></li> <li>24 jun 2004 18:47 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Goya.schietpartij.jpg|Goya.schietpartij.jpg]]" <em>(Goya, schietpartij, vanaf webmuseum Open Bron. )</em></li> <li>24 jun 2004 18:33 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:AlexanderFarnese.jpg|AlexanderFarnese.jpg]]" <em>(Alexander Farnese (oud schilderij, daarom geen copyright))</em></li> <li>24 jun 2004 18:07 [[Gebruiker:Jofeys|Jofeys]] heeft ge-upload: "[[:Afbeelding:Kaart_Frankrijk_Departement_67.png|Kaart_Frankrijk_Departement_67.png]]"</li> <li>24 jun 2004 18:00 [[Gebruiker:Robk|Robk]] heeft ge-upload: "[[:Afbeelding:Willem_V.png|Willem_V.png]]" <em>(Stadhouder Willem V)</em></li> <li>24 jun 2004 17:43 [[Gebruiker:Jofeys|Jofeys]] heeft ge-upload: "[[:Afbeelding:Kaart_Frankrijk_Departement_67.png.png|Kaart_Frankrijk_Departement_67.png.png]]" <em>(franse wiki)</em></li> <li>24 jun 2004 15:20 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:LouisAdolpheThiers.jpg|LouisAdolpheThiers.jpg]]" <em>(Thiers van wiki-fr (PD wegens datum))</em></li> <li>24 jun 2004 15:18 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:BalthasarGerards.jpg|BalthasarGerards.jpg]]" <em>(Balthasar Gerards (te oud om nog copyright te hebben))</em></li> <li>24 jun 2004 15:17 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:AanslagWillemI.jpg|AanslagWillemI.jpg]]" <em>(De moord op Willem de Zwijger (te oud om nog copyright te hebben))</em></li> <li>24 jun 2004 13:56 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:Zwaartelijn.png|Zwaartelijn.png]]" <em>(zwaartelijn van een driehoek - afbeelding gemaakt door Wilinckx en (indien het mogelijk is dat er copyrights vallen op zoiets eenvoudig) gepubliceerd onder de GFDL)</em></li> <li>24 jun 2004 13:54 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Wilhelm_Tell_Denkmal_Altdorf_um_1900.jpeg|Wilhelm_Tell_Denkmal_Altdorf_um_1900.jpeg]]" <em>(Monument voor Willem Tell (van Duitse Wiki))</em></li> <li>24 jun 2004 11:32 [[Gebruiker:Hannes Karnoefel|Hannes Karnoefel]] heeft ge-upload: "[[:Afbeelding:Sagan.jpg|Sagan.jpg]]" <em>(van engelse wiki)</em></li> <li>24 jun 2004 11:20 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Pircvdk.jpg|Pircvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>24 jun 2004 11:09 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Haagwinde_closeup.jpg|Haagwinde_closeup.jpg]]" <em>(zelfgemaakte foto van bloem van Haagwinde; eind juni)</em></li> <li>24 jun 2004 11:08 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Haagwinde.jpg|Haagwinde.jpg]]" <em>(zelfgemaakte fotovan Haagwinde; eind juni)</em></li> <li>24 jun 2004 11:06 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Philk.jpg|Philk.jpg]]" <em>(Fritz8 - print)</em></li> <li>24 jun 2004 11:05 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Philk.jpg|Philk.jpg]]" <em>(Fritz8 - print)</em></li> <li>24 jun 2004 10:54 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Loper3k.jpg|Loper3k.jpg]]" <em>(Fritz8 - print)</em></li> <li>24 jun 2004 10:41 [[Gebruiker:Rita12|Rita12]] heeft ge-upload: "[[:Afbeelding:Europese_Unie.jpg|Europese_Unie.jpg]]" <em>(Kroatië (status: kandidaat; onderhandeling start in voorjaar 2005) )</em></li> <li>24 jun 2004 10:39 [[Gebruiker:Rita12|Rita12]] heeft ge-upload: "[[:Afbeelding:400px-Europese_Unie.jpg|400px-Europese_Unie.jpg]]" <em>(Kroatië - status: kandidaat; onderhandeling start in voorjaar 2005))</em></li> <li>24 jun 2004 09:35 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Oudik.jpg|Oudik.jpg]]" <em>(Fritz8 - print)</em></li> <li>24 jun 2004 08:49 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Nimvdk.jpg|Nimvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>24 jun 2004 08:34 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Konvdk.jpg|Konvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>24 jun 2004 08:21 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Miesw.jpg|Miesw.jpg]]" <em>(Fritz8 - print)</em></li> <li>24 jun 2004 08:20 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Miess.jpg|Miess.jpg]]" <em>(Fritz8 - print)</em></li> <li>24 jun 2004 08:15 [[Gebruiker:Jcwf|Jcwf]] heeft ge-upload: "[[:Afbeelding:Monumentsom.jpg|Monumentsom.jpg]]" <em>(eigen foto opnieuw omdat monument.jpg overschreven was)</em></li> <li>24 jun 2004 07:27 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Elgreco.christ.500pix.jpg|Elgreco.christ.500pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: El Greco, &amp;#8220;Baptism of Christ&amp;#8221;, painted 1608-1614. Size: 130 by 83 inches (330 by 211 cm). Hospital de San Juan Bautista de Afuera, Toledo, Spain. &lt;br&gt; Source: Artchive http&#58;//artchive.com/ftp_site.htm &lt;br&gt; Picture prepared for Wikipedia by Adrian Pingstone in May 2003. &#91;&#91;en:Image:elgreco.christ.500pix.jpg]])</em></li> <li>24 jun 2004 07:27 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Elgreco.jpg|Elgreco.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-el. De beschrijving daar was: El greco &#91;&#91;el:Image:Elgreco.jpg]])</em></li> <li>24 jun 2004 06:51 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Kazimirmalevich.jpg|Kazimirmalevich.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Kazimir Malevich (portrait) &#91;&#91;en:Image:Kazimirmalevich.jpg]])</em></li> <li>24 jun 2004 06:51 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Malevich-selfportrait-small.jpg|Malevich-selfportrait-small.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Kazimir Malevich: Self portrait (thumbnail, detail) &#91;&#91;en:Image:Malevich-selfportrait-small.jpg]])</em></li> <li>24 jun 2004 06:48 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Stamboon_bloei_uitsnede.jpg|Stamboon_bloei_uitsnede.jpg]]" <em>(zelfgemaakte foto van bloeiende stamboon)</em></li> <li>24 jun 2004 06:40 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:River_Scene_by_Jan_van_Goyen.jpeg|River_Scene_by_Jan_van_Goyen.jpeg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &quot;River Scene&quot; by Jan van Goyen &#123;&#123;msg:PD}} &#91;&#91;en:Image:River Scene by Jan van Goyen.jpeg]])</em></li> <li>24 jun 2004 06:37 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Halsfou.JPG|Halsfou.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#39;the fool&#39; painted by frans hals &#91;&#91;en:Image:halsfou.JPG]])</em></li> <li>24 jun 2004 06:33 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:MarcelDuchamp.jpg|MarcelDuchamp.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: &#39;&#39;&#39;Titre:&#39;&#39;&#39; Photo de Marcel Duchamp &#39;&#39;&#39;Source:&#39;&#39;&#39; INCONNU (photo de 1914) &#39;&#39;&#39;Licence:&#39;&#39;&#39; INCONNU &#91;&#91;fr:Image: MarcelDuchamp.jpg]])</em></li> <li>24 jun 2004 06:32 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Kropsla_herfst_.jpg|Kropsla_herfst_.jpg]]" <em>(zelfgemaakte foto van botersla in de herfst)</em></li> <li>24 jun 2004 06:23 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Orxata.gif|Orxata.gif]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Tiger Nuts and its Vegetal Milk &#91;&#91;en:Image:orxata.gif]])</em></li> <li>24 jun 2004 06:23 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Tomaat_bloem_.jpg|Tomaat_bloem_.jpg]]" <em>(zelfgemaakte foto van bloeiende tomaat)</em></li> <li>24 jun 2004 00:29 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:RobertBunsen.jpg|RobertBunsen.jpg]]" <em>(Bunsen van wiki-en; vanwege ouderdom PD)</em></li> <li>24 jun 2004 00:23 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Kekule.jpg|Kekule.jpg]]" <em>(Kekule van wiki-en vanwege datum PD)</em></li> <li>23 jun 2004 23:40 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Martelaars.gif|Martelaars.gif]]" <em>(Christenen verwijderen martelaars uit het amfitheater (Canadian Illustrated News, Vol. 9, No. 11, Page 169. Reproduced from the National Library of Canada&#39;s website Images in the News: http&#58;//www.collectionscanada.ca/index-e.html - vrij te gebruiken mits met deze bronvermelding))</em></li> <li>23 jun 2004 21:34 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Braille3.jpg|Braille3.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Enhanced colour image of asteroid Braille, imaged by Deep Space 1. Produced by Ted Stryk, NASA, 2000. &#91;&#91;en:Image:Braille3.jpg]])</em></li> <li>23 jun 2004 21:30 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Borrelly-01.jpg|Borrelly-01.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Picture of comet Borrelly taken by &#39;Deep Space 1&#39; (credit NASA/JPL) &#91;&#91;en:Image:Borrelly-01.jpg]])</em></li> <li>23 jun 2004 20:10 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Freddie.jpg|Freddie.jpg]]" <em>(en:wikipedia)</em></li> <li>23 jun 2004 20:01 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Vulture.jpg|Vulture.jpg]]" <em>(en:wikipedia)</em></li> <li>23 jun 2004 19:46 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeraniumPratense-plant2-hr.jpg|GeraniumPratense-plant2-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse poort, juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>23 jun 2004 19:45 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeraniumPratense-plant1-hr.jpg|GeraniumPratense-plant1-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse poort, juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>23 jun 2004 19:45 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeraniumPratense-closeup-hr.jpg|GeraniumPratense-closeup-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse poort, juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>23 jun 2004 19:44 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeraniumPratense-bloem-hr.jpg|GeraniumPratense-bloem-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse poort, juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>23 jun 2004 19:44 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeraniumPratense-overz-hr.jpg|GeraniumPratense-overz-hr.jpg]]" <em>(&#91;&#91;Den Haag]], Florence nightingalepark, juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>23 jun 2004 19:04 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:P1010016.jpg|P1010016.jpg]]" <em>(en:wikipedia)</em></li> <li>23 jun 2004 17:04 [[Gebruiker:Esperanto|Esperanto]] heeft ge-upload: "[[:Afbeelding:Kleurencirkel_RGB.png|Kleurencirkel_RGB.png]]" <em>(Zelf gemaakt op basis van reeds aanwezige Afbeelding:Kleurencirkel.png)</em></li> <li>23 jun 2004 14:44 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:South_ossetia_flag.png|South_ossetia_flag.png]]" <em>(en:wikipedia)</em></li> <li>23 jun 2004 14:42 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:SouthOcoatofarms.jpg|SouthOcoatofarms.jpg]]" <em>(en:wikipedia)</em></li> <li>23 jun 2004 13:32 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kongbk.jpg|Kongbk.jpg]]" <em>(Fritz8 - print)</em></li> <li>23 jun 2004 12:52 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:|Afbeelding:]]" <em>(Aquitanië vlag van Engelse wiki)</em></li> <li>23 jun 2004 12:51 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Konfik.jpg|Konfik.jpg]]" <em>(Fritz8 - print)</em></li> <li>23 jun 2004 12:28 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Konindk.jpg|Konindk.jpg]]" <em>(Fritz8 - print)</em></li> <li>23 jun 2004 12:19 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Konindk.jpg|Konindk.jpg]]" <em>(Fritz8 - print)</em></li> <li>23 jun 2004 09:06 [[Gebruiker:E-go-go|E-go-go]] heeft ge-upload: "[[:Afbeelding:Relieken_canisius.jpg|Relieken_canisius.jpg]]" <em>(Eigen foto, &quot;om niet&quot; afgestaan tbv. Wikipedia)</em></li> <li>23 jun 2004 08:54 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Italk.jpg|Italk.jpg]]" <em>(Fritz8 - print)</em></li> <li>23 jun 2004 08:26 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Posvdk.jpg|Posvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>23 jun 2004 08:23 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Snelvdk.jpg|Snelvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>23 jun 2004 08:20 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Afruilk.jpg|Afruilk.jpg]]" <em>(Fritz8 - print)</em></li> <li>23 jun 2004 07:17 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Tuinhommel_Koningin_op_braam_closeup.jpg|Tuinhommel_Koningin_op_braam_closeup.jpg]]" <em>(zelfgemaakte foto van een koningin van de Tuinhommel op braam)</em></li> <li>23 jun 2004 07:12 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Mussels.jpg|Mussels.jpg]]" <em>(en:wikipedia)</em></li> <li>23 jun 2004 07:06 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Aardhommel_op_distel_closeup.jpg|Aardhommel_op_distel_closeup.jpg]]" <em>(zelfgemmakte foto van aardhommel op distel; eind juni)</em></li> <li>23 jun 2004 07:00 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Steenhommel_op_distel_closeup.jpg|Steenhommel_op_distel_closeup.jpg]]" <em>(zelfgemaakte foto van een steenhommel op distel; eind juni)</em></li> <li>23 jun 2004 06:17 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:JeanArp.jpg|JeanArp.jpg]]" <em>(Overgenomen van Engelse wikipedia, &#91;&#91;en:Image:JeanArp.jpg]])</em></li> <li>23 jun 2004 05:58 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Vormen_getekend_naar_Jean_Arp.jpg|Vormen_getekend_naar_Jean_Arp.jpg]]" <em>(Vormen, zelf getekend naar een werk van Jean Arp, Eigen tekening naar het werk: omgekeerde blauwe schoen met twee hielen onder een zwarte boog.)</em></li> <li>22 jun 2004 21:24 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:GVU_AGG300.jpg|GVU_AGG300.jpg]]" <em>(Een Van Hool AGG300-bus (25 meter lang!) van GVU, eigen foto, &#123;&#123;PD}})</em></li> <li>22 jun 2004 21:16 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:SUN_interieur.jpg|SUN_interieur.jpg]]" <em>(Interieur van een SUN-tramstel, eigen foto, &#123;&#123;PD}})</em></li> <li>22 jun 2004 21:12 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Bus_BBA_Connex.jpg|Bus_BBA_Connex.jpg]]" <em>(Bus van BBA Connex op het busstation in Utrecht, eigen foto, &#123;&#123;PD}})</em></li> <li>22 jun 2004 21:07 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Q-liner.jpg|Q-liner.jpg]]" <em>(Q-liner op het busstation in Utrecht, eigen foto, &#123;&#123;PD}})</em></li> <li>22 jun 2004 17:16 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:PolygonatumOdoratum-overz-kl.jpg|PolygonatumOdoratum-overz-kl.jpg]]" <em>(duinen bij &#91;&#91;Scheveningen]], 29 mei 2004. &#123;&#123;eigenwerk}})</em></li> <li>22 jun 2004 17:15 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:PolygonatumOdoratum-closeup-kl.jpg|PolygonatumOdoratum-closeup-kl.jpg]]" <em>(duinen bij &#91;&#91;Scheveningen]], 29 mei 2004. &#123;&#123;eigenwerk}})</em></li> <li>22 jun 2004 17:14 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:PolygonatumOdoratum-bloem-kl.jpg|PolygonatumOdoratum-bloem-kl.jpg]]" <em>(duinen bij &#91;&#91;Scheveningen]], 29 mei 2004. &#123;&#123;eigenwerk}})</em></li> <li>22 jun 2004 17:14 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:PolygonatumOdoratum-plant-kl.jpg|PolygonatumOdoratum-plant-kl.jpg]]" <em>(duinen bij &#91;&#91;Scheveningen]], 29 mei 2004. &#123;&#123;eigenwerk}})</em></li> <li>22 jun 2004 15:40 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:BeideSicilien.png|BeideSicilien.png]]" <em>(Kaart van de Beide Siciliën (bewerking van &#91;&#91;Afbeelding:Sicilia-kaart.png]]))</em></li> <li>22 jun 2004 15:34 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:EchiumVulgare-stengel-hr.jpg|EchiumVulgare-stengel-hr.jpg]]" <em>(duinen bij &#91;&#91;Scheveningen]], juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>22 jun 2004 15:34 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:EchiumVulgare-plant2-hr.jpg|EchiumVulgare-plant2-hr.jpg]]" <em>(duinen bij &#91;&#91;Scheveningen]], juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>22 jun 2004 15:33 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:EchiumVulgare-plant1-hr.jpg|EchiumVulgare-plant1-hr.jpg]]" <em>(duinen bij &#91;&#91;Scheveningen]], juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>22 jun 2004 15:32 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:EchiumVulgare-overz-hr.jpg|EchiumVulgare-overz-hr.jpg]]" <em>(duinen bij &#91;&#91;Scheveningen]], juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>22 jun 2004 15:31 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:EchiumVulgare-CloseUp-hr.jpg|EchiumVulgare-CloseUp-hr.jpg]]" <em>(duinen bij &#91;&#91;Scheveningen]], juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>22 jun 2004 15:31 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:EchiumVulgare-bloem2-hr.jpg|EchiumVulgare-bloem2-hr.jpg]]" <em>(duinen bij &#91;&#91;Scheveningen]], juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>22 jun 2004 15:30 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:EchiumVulgare-bloem1-hr.jpg|EchiumVulgare-bloem1-hr.jpg]]" <em>(Duinen bij &#91;&#91;Scheveningen]], juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>22 jun 2004 12:44 [[Gebruiker:Waerth|Waerth]] heeft ge-upload: "[[:Afbeelding:Ho_Chi_Minh_Young.jpg|Ho_Chi_Minh_Young.jpg]]" <em>(van fr wikipedia)</em></li> <li>22 jun 2004 12:43 [[Gebruiker:Waerth|Waerth]] heeft ge-upload: "[[:Afbeelding:Ho_Chi_Minh_Young.jpg|Ho_Chi_Minh_Young.jpg]]" <em>(van fr wikipedia)</em></li> <li>22 jun 2004 12:39 [[Gebruiker:Waerth|Waerth]] heeft ge-upload: "[[:Afbeelding:Ho_Chi_Minh.jpg|Ho_Chi_Minh.jpg]]" <em>(van de wikipedia: 14:19, 31. Jan 2004 . . Herr Klugbeisser (2577 Byte) (Ho Chi Minh) )</em></li> <li>22 jun 2004 12:33 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Eindvdk.jpg|Eindvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 jun 2004 12:21 [[Gebruiker:Waerth|Waerth]] heeft ge-upload: "[[:Afbeelding:Hanoi_operahouse.jpg|Hanoi_operahouse.jpg]]" <em>(Van de engelse wikipedia, daar opgeload door: &#91;&#91;user:Fuzheado]]. )</em></li> <li>22 jun 2004 11:37 [[Gebruiker:Waerth|Waerth]] heeft ge-upload: "[[:Afbeelding:Saigon_center.jpg|Saigon_center.jpg]]" <em>(Van de engelse wikipedia, daar opgeload door: &#91;&#91;user:Fuzheado]]. )</em></li> <li>22 jun 2004 11:23 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Hollk.jpg|Hollk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 jun 2004 10:41 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Grunfk.jpg|Grunfk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 jun 2004 10:06 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:|Afbeelding:]]" <em>(vlag van Aquitanië overgenomen van Engelse wiki)</em></li> <li>22 jun 2004 09:58 [[Gebruiker:Wcmvdbosch|Wcmvdbosch]] heeft ge-upload: "[[:Afbeelding:Pcb_through_hole_bottom.jpg|Pcb_through_hole_bottom.jpg]]" <em>(Printplaat through-hole)</em></li> <li>22 jun 2004 09:45 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Gewdgk.jpg|Gewdgk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 jun 2004 09:42 [[Gebruiker:Jan Lapère|Jan Lapère]] heeft ge-upload: "[[:Afbeelding:Mileticenvreeman.jpg|Mileticenvreeman.jpg]]" <em>(Eigen foto Jan Lapère: Miletic en Vreeman tijdens de onthulling van &#91;&#91;De Houtwerker]])</em></li> <li>22 jun 2004 09:39 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:|Afbeelding:]]" <em>(vlag van Aquitanië overgenomen van Engelse wiki)</em></li> <li>22 jun 2004 09:34 [[Gebruiker:Jan Lapère|Jan Lapère]] heeft ge-upload: "[[:Afbeelding:Miletic_en_vreeman.jpg|Miletic_en_vreeman.jpg]]" <em>(Miletic en Vreeman bij de onthulling van De Houtwerker (Eigen foto Jan Lapère))</em></li> <li>22 jun 2004 09:30 [[Gebruiker:Jan Lapère|Jan Lapère]] heeft ge-upload: "[[:Afbeelding:Houtwerker.jpg|Houtwerker.jpg]]" <em>(Onthulling Beeld De Houtwerker. Eigen foto Jan Lapère)</em></li> <li>22 jun 2004 09:19 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:|Afbeelding:]]" <em>(vlag van Aquitanië overgenomen van Engelse wiki)</em></li> <li>22 jun 2004 09:14 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:|Afbeelding:]]" <em>(vlag van Aquitanië overgenomen van Engelse wiki)</em></li> <li>22 jun 2004 08:22 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Fransvdk.jpg|Fransvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 jun 2004 07:57 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Engelsk.jpg|Engelsk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 jun 2004 07:43 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Andijvie_bloei.jpg|Andijvie_bloei.jpg]]" <em>(zelfgemaakte foto van bloeiende andijvie half juni)</em></li> <li>22 jun 2004 07:36 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Aardappel_bloeiend_Fresco.jpg|Aardappel_bloeiend_Fresco.jpg]]" <em>(zelfgemmakte foto van bloeiende aardappel ras Fresco half juni)</em></li> <li>22 jun 2004 07:28 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Lrokade.jpg|Lrokade.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 jun 2004 07:27 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Krokade.jpg|Krokade.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 jun 2004 07:19 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Parelk.jpg|Parelk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 jun 2004 06:55 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Wortel_bloeiend_A'damse_bak.jpg|Wortel_bloeiend_A'damse_bak.jpg]]" <em>(zelfgemaakte foto van bloeiende wortel (peen) half juni)</em></li> <li>22 jun 2004 05:59 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Darfur3.jpg|Darfur3.jpg]]" <em>(eigen foto)</em></li> <li>22 jun 2004 05:58 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Darfur2.jpg|Darfur2.jpg]]" <em>(eigen foto)</em></li> <li>22 jun 2004 05:56 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Darfur1.jpg|Darfur1.jpg]]" <em>(USAID public domain)</em></li> <li>21 jun 2004 21:32 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:AntwerpenGemeenten.png|AntwerpenGemeenten.png]]" <em>(nummertjes aangepast)</em></li> <li>21 jun 2004 20:57 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:ModiglianiPompadour.jpg|ModiglianiPompadour.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. &#91;&#91;en:Image:ModiglianiPompadour.jpg]])</em></li> <li>21 jun 2004 20:57 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Modigliani.jpg|Modigliani.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: photo in the public domain &#91;&#91;en:Image:Modigliani.jpg]])</em></li> <li>21 jun 2004 20:45 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Modigliani_nude_sdraiato.jpg|Modigliani_nude_sdraiato.jpg]]" <em>(Modigliani, Liggend Naakt, 1917, Guggenheim Museum, vanaf webmuseum, open bron, http&#58;//www.ibiblio.org/wm/paint/auth/modigliani/)</em></li> <li>21 jun 2004 19:23 [[Gebruiker:Bartux|Bartux]] heeft ge-upload: "[[:Afbeelding:Meteora_Rousanou_small.jpg|Meteora_Rousanou_small.jpg]]" <em>(Afkomstig van &#91;http&#58;//wikitravel.org/en/article/Image:Meteora_Rousanou_small.jpg wikitravel], orig. text: picture taken by Akubra)</em></li> <li>21 jun 2004 17:14 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Jamesbruce.jpg|Jamesbruce.jpg]]" <em>(&#91;&#91;James Bruce]]. Naar aangenomen publiek domein wegens ouderdom.)</em></li> <li>21 jun 2004 16:49 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:CalystegiaSoldanella-blad-kl.jpg|CalystegiaSoldanella-blad-kl.jpg]]" <em>(duinen noord-beveland, 19 juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>21 jun 2004 16:46 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:CalystegiaSoldanella-bloem2-kl.jpg|CalystegiaSoldanella-bloem2-kl.jpg]]" <em>(duinen noord-beveland, 19 juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>21 jun 2004 16:43 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:CalystegiaSoldanella-bloem1-kl.jpg|CalystegiaSoldanella-bloem1-kl.jpg]]" <em>(duinen noord-beveland, 19 juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>21 jun 2004 16:43 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:CalystegiaSoldanella-overz-kl.jpg|CalystegiaSoldanella-overz-kl.jpg]]" <em>(duinen noord-beveland, 19 juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>21 jun 2004 16:36 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:CalystegiaSoldanella-plant-kl.jpg|CalystegiaSoldanella-plant-kl.jpg]]" <em>(duinen noord-beveland, 19 juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>21 jun 2004 15:32 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Brucetravels.jpg|Brucetravels.jpg]]" <em>(Titelpagina van het boek &quot;Travels to Discover the Source of the Nile&quot; door &#91;&#91;James Bruce]], 1790. Publiek domein wegens leeftijd. &#123;&#123;PD}})</em></li> <li>21 jun 2004 14:03 [[Gebruiker:ArnoVerweij|ArnoVerweij]] heeft ge-upload: "[[:Afbeelding:EdmundHusserl2.jpg|EdmundHusserl2.jpg]]" <em>(&#91;&#91;it:Edmund Husserl]])</em></li> <li>21 jun 2004 13:46 [[Gebruiker:ArnoVerweij|ArnoVerweij]] heeft ge-upload: "[[:Afbeelding:EdmundHusserl.jpg|EdmundHusserl.jpg]]" <em>(&#91;&#91;en:Edmund Husserl]])</em></li> <li>21 jun 2004 13:36 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Andijvie_december.jpg|Andijvie_december.jpg]]" <em>(zelfgemaakte foto van andijvie in december)</em></li> <li>21 jun 2004 13:00 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Ieper1.jpg|Ieper1.jpg]]" <em>(foto van Ieper - ouder dan 70 jaar)</em></li> <li>21 jun 2004 12:13 [[Gebruiker:Moribunt|Moribunt]] heeft ge-upload: "[[:Afbeelding:Alan_greenspan.jpg|Alan_greenspan.jpg]]" <em>(http&#58;//www.imf.org/external/photo/showall.asp?d=9%2F27%2F2002&amp;g=42 These photographs are in the public domain. They are free to use for publication purposes.)</em></li> <li>21 jun 2004 11:36 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Ros_Beiaard_lied2.jpg|Ros_Beiaard_lied2.jpg]]" <em>(eigen afbeelding)</em></li> <li>21 jun 2004 11:30 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Ros_Beiaard_lied.jpg|Ros_Beiaard_lied.jpg]]" <em>(eigen afbeelding)</em></li> <li>21 jun 2004 11:29 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Ros_Beiaard.jpg|Ros_Beiaard.jpg]]" <em>(Eerdere versie hersteld)</em></li> <li>21 jun 2004 11:25 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Ros_Beiaard.jpg|Ros_Beiaard.jpg]]" <em>(eigen afbeelding)</em></li> <li>21 jun 2004 11:23 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Damevdk.jpg|Damevdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>21 jun 2004 10:55 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Corvdk.jpg|Corvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>21 jun 2004 09:18 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Bertha.jpg|Bertha.jpg]]" <em>(foto ouder dan 70 jaar)</em></li> <li>21 jun 2004 09:03 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Aardhommel_met_stuifmeelkorfje1.jpg|Aardhommel_met_stuifmeelkorfje1.jpg]]" <em>(zelfgemaakte foto van Aardhommel met stuifmeelkorfje; half juni)</em></li> <li>21 jun 2004 09:00 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Aljvdk.jpg|Aljvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>21 jun 2004 09:00 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Aardhommel.jpg|Aardhommel.jpg]]" <em>(zelfgemaakte foto van vliegende aardhommel half juni)</em></li> <li>21 jun 2004 08:52 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Mais_stempels_closeup.jpg|Mais_stempels_closeup.jpg]]" <em>(zelfgemaakte foto van stempels van suikermais)</em></li> <li>21 jun 2004 08:47 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Muy_vegetatie.jpg|Muy_vegetatie.jpg]]" <em>(zelfgemaakte foto van vegetatie De Nederlanden; eind mei)</em></li> <li>21 jun 2004 08:40 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Rietorchis_closeup.jpg|Rietorchis_closeup.jpg]]" <em>(zelfgemaakte foto van Rietorchis derde week juni)</em></li> <li>21 jun 2004 08:13 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Catak.jpg|Catak.jpg]]" <em>(Fritz8 - print)</em></li> <li>21 jun 2004 07:41 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Loncin.jpg|Loncin.jpg]]" <em>(foto ouder dan 70 jaar)</em></li> <li>21 jun 2004 07:38 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Ieper.jpg|Ieper.jpg]]" <em>(Ieper tijdens WO I - foto ouder dan 70 jaar)</em></li> <li>21 jun 2004 07:24 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Fortluik.jpg|Fortluik.jpg]]" <em>(fort - foto ouder dan 70 jaar)</em></li> <li>21 jun 2004 05:57 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Reuzenbereklauw.JPG|Reuzenbereklauw.JPG]]" <em>(Eigen foto)</em></li> <li>21 jun 2004 05:16 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Adjaria_flag_small.jpg|Adjaria_flag_small.jpg]]" <em>(de: wikipedia)</em></li> <li>21 jun 2004 01:07 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Fabian_Gottlieb_von_Bellingshausen.jpg|Fabian_Gottlieb_von_Bellingshausen.jpg]]" <em>(bellingshausen)</em></li> <li>20 jun 2004 20:32 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Darfur_map.png|Darfur_map.png]]" <em>(En: wikipedia)</em></li> <li>20 jun 2004 19:09 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Mafalda.jpg|Mafalda.jpg]]" <em>(Prinses Mafalda van Italië (van Engelse wiki))</em></li> <li>20 jun 2004 18:30 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Princip_arrested.jpg|Princip_arrested.jpg]]" <em>(Gavrilo Princip (van Engelse Wiki))</em></li> <li>20 jun 2004 18:30 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Gavrilloprincip.jpg|Gavrilloprincip.jpg]]" <em>(Gavrilo Princip (van Engelse Wiki))</em></li> <li>20 jun 2004 18:05 [[Gebruiker:IMFJ|IMFJ]] heeft ge-upload: "[[:Afbeelding:Artifort_F444_Pierre_Paulin.jpg|Artifort_F444_Pierre_Paulin.jpg]]" <em>(Eigen stoel; eigen foto; IMFJ - 2004)</em></li> <li>20 jun 2004 17:45 [[Gebruiker:John Huisbrink|John Huisbrink]] heeft ge-upload: "[[:Afbeelding:Schildoh.png|Schildoh.png]]" <em>(Eerdere versie hersteld)</em></li> <li>20 jun 2004 16:23 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:VicEmIIIfam.jpg|VicEmIIIfam.jpg]]" <em>(De koninklijke familie van Italië (met Victor Emanuel III) - public domain van http&#58;//www.gwpda.org/photos/greatwar.htm)</em></li> <li>20 jun 2004 16:19 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:MarieEdinburgh.jpg|MarieEdinburgh.jpg]]" <em>(Koningin Marie van Roemenië (public domain van http&#58;//www.gwpda.org/photos/greatwar.htm))</em></li> <li>20 jun 2004 16:03 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:Screenshot-LBreakout2.jpg|Screenshot-LBreakout2.jpg]]" <em>(Screenshot van het breakout spel LBreakout2. Deze software valt onder de GPL.)</em></li> <li>20 jun 2004 14:44 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:OostenrijkLocatie.png|OostenrijkLocatie.png]]" <em>(locatie oostenrijk van wiki-en (GFDL))</em></li> <li>20 jun 2004 13:06 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Bordjvdk.jpg|Bordjvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>20 jun 2004 12:44 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Carovdk.jpg|Carovdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>20 jun 2004 11:28 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Benok.jpg|Benok.jpg]]" <em>(Fritz8 - print)</em></li> <li>20 jun 2004 11:15 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:LinusPauling.jpg|LinusPauling.jpg]]" <em>(en:wikipedia)</em></li> <li>20 jun 2004 10:11 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Rietveld.jpg|Rietveld.jpg]]" <em>(prive-foto uit 1962, genomen in de Raadskelder te &#39;s-Hertogenbosch)</em></li> <li>20 jun 2004 09:32 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Barents-ijsbeer.jpg|Barents-ijsbeer.jpg]]" <em>(Vlek verwijderd)</em></li> <li>20 jun 2004 09:28 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Evgeny.jpg|Evgeny.jpg]]" <em>(Fritz8 - print)</em></li> <li>19 jun 2004 17:27 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Germany_flag_1949_west.png|Germany_flag_1949_west.png]]" <em>(vlag duitsland 8)</em></li> <li>19 jun 2004 17:27 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Germany_flag_1949_east.png|Germany_flag_1949_east.png]]" <em>(vlag duitsland 7)</em></li> <li>19 jun 2004 17:27 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Germany_flag_1933_2.png|Germany_flag_1933_2.png]]" <em>(vlag duitsland 6)</em></li> <li>19 jun 2004 17:27 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Germany_flag_1933_1.png|Germany_flag_1933_1.png]]" <em>(vlag duitsland 5)</em></li> <li>19 jun 2004 17:27 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Germany_flag_1919.png|Germany_flag_1919.png]]" <em>(vlag duitsland 4)</em></li> <li>19 jun 2004 17:26 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Germany_flag_1871.png|Germany_flag_1871.png]]" <em>(vlag duitsland 3)</em></li> <li>19 jun 2004 17:26 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Germany_flag_1815.png|Germany_flag_1815.png]]" <em>(vlag duitsland 2)</em></li> <li>19 jun 2004 17:26 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Germany_flag_large.png|Germany_flag_large.png]]" <em>(vlag duitsland 1)</em></li> <li>19 jun 2004 17:23 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Zwanebloem.JPG|Zwanebloem.JPG]]" <em>(Eigen foto)</em></li> <li>19 jun 2004 15:42 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:MolenKatwoude3.JPG|MolenKatwoude3.JPG]]" <em>(Eigen foto)</em></li> <li>19 jun 2004 15:39 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:MolenKatwoude2.JPG|MolenKatwoude2.JPG]]" <em>(Eigen foto)</em></li> <li>19 jun 2004 15:36 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:MolenKatwoude.JPG|MolenKatwoude.JPG]]" <em>(Eigen foto)</em></li> <li>19 jun 2004 12:55 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Marcato.png|Marcato.png]]" <em>(Marcatoteken (eigen productie, vrijgegeven onder GFDL))</em></li> <li>19 jun 2004 12:41 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Belvdk.jpg|Belvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>19 jun 2004 12:33 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:2parkshuttle_schiphol3.jpg|2parkshuttle_schiphol3.jpg]]" <em>(ParkingHopper op langparkeerplaats P3. Foto overgenomen van www.frog.nl. Daar staat: &quot; All pictures are free of copyright if the source (Frog Navigation Systems, www.frog.nl) is quoted. &quot;)</em></li> <li>19 jun 2004 12:29 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:2parkshuttle_monaco3.jpg|2parkshuttle_monaco3.jpg]]" <em>(De nieuwe ParkShuttle bij een perspresentatie in Monaco. Foto overgenomen van www.frog.nl. Daar staat: &quot; All pictures are free of copyright if the source (Frog Navigation Systems, www.frog.nl) is quoted.&quot; )</em></li> <li>19 jun 2004 12:24 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Beierk.jpg|Beierk.jpg]]" <em>(Fritz8 - print)</em></li> <li>19 jun 2004 12:17 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:2parkshuttle_rivium1.jpg|2parkshuttle_rivium1.jpg]]" <em>(Oude Parkshuttle. Foto overgenomen van www.frog.nl. Daar staat &quot; All pictures are free of copyright if the source (Frog Navigation Systems, www.frog.nl) is quoted.&quot;)</em></li> <li>19 jun 2004 12:08 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:3phileas2.jpg|3phileas2.jpg]]" <em>(De dubbelgelede Phileas. Foto overgenomen van www.frog.nl. Daar staat: &quot; All pictures are free of copyright if the source (Frog Navigation Systems, www.frog.nl) is quoted.&quot;)</em></li> <li>19 jun 2004 12:06 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Mordent.png|Mordent.png]]" <em>(mordent eigen productie, vrijgegeven onder GFDL)</em></li> <li>19 jun 2004 11:54 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Pralltriller.PNG|Pralltriller.PNG]]" <em>(Pralltriller - eigen fabrikaat, vrijgegeven onder GFDL)</em></li> <li>19 jun 2004 11:51 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Basj.jpg|Basj.jpg]]" <em>(Fritz8 - print)</em></li> <li>19 jun 2004 11:51 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Basj.jpg|Basj.jpg]]" <em>(Fritz8 - print)</em></li> <li>19 jun 2004 11:49 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Bask.jpg|Bask.jpg]]" <em>(Fritz8 - print)</em></li> <li>19 jun 2004 10:53 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Alvdk.jpg|Alvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>19 jun 2004 10:16 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Adjk.jpg|Adjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>19 jun 2004 09:57 [[Gebruiker:Pven|Pven]] heeft ge-upload: "[[:Afbeelding:Simon_Marius.jpg|Simon_Marius.jpg]]" <em>(In the public domain by age - This image has been released into the public domain by the copyright holder, or its copyright has expired. This applies worldwide. (En-wikipedia))</em></li> <li>19 jun 2004 08:24 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Victoriaisl.png|Victoriaisl.png]]" <em>(victoria eiland kaart)</em></li> <li>19 jun 2004 08:14 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Arcticisl.png|Arcticisl.png]]" <em>(kaart arctische eilanden)</em></li> <li>19 jun 2004 06:07 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:US_Navy_Washington_Monument_030926-F-2828D-390.jpg|US_Navy_Washington_Monument_030926-F-2828D-390.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: 030926-F-2828D-390 Washington D.C. (Sept. 26, 2003) – An aerial view as seen from the south side of the Washington Memorial, directly adjacent to the White House. U.S. Air Force photo by Tech. Sgt. Andy Dunaway (Released) &#91;&#91;en:Image:US Navy Washington Monument 030926-F-2828D-390.jpg]])</em></li> <li>19 jun 2004 05:50 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Css_hunley_cutaway.jpg|Css_hunley_cutaway.jpg]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:css hunley cutaway.jpg]])</em></li> <li>19 jun 2004 05:49 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Css_hunley_on_pier.jpg|Css_hunley_on_pier.jpg]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:css hunley on pier.jpg]])</em></li> <li>18 jun 2004 20:50 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:NicolaasMont2.jpg|NicolaasMont2.jpg]]" <em>(Nicolaas I van Montenegro (public domain van http&#58;//www.gwpda.org/photos/))</em></li> <li>18 jun 2004 20:50 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:NicolaasMont.jpg|NicolaasMont.jpg]]" <em>(Nicolaas I van Montenegro (public domain van http&#58;//www.gwpda.org/photos/))</em></li> <li>18 jun 2004 20:48 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Libyen-oase2.jpg|Libyen-oase2.jpg]]" <em>(Van en: wikipedia, 23:04, 7 Nov 2002 . . Elian (32511 bytes) (oasis in libya, donation) )</em></li> <li>18 jun 2004 20:15 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:MedicagoSativa-CloseUp-hr.jpg|MedicagoSativa-CloseUp-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse Poort, juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>18 jun 2004 20:14 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:MedicagoSativa-bloem1-hr.jpg|MedicagoSativa-bloem1-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse Poort, juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>18 jun 2004 20:13 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:MedicagoSativa-plant-hr.jpg|MedicagoSativa-plant-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse Poort, juni 2004, &#123;&#123;eigenwerk}})</em></li> <li>18 jun 2004 19:30 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeraniumPhaeum-CloseUp-kl.jpg|GeraniumPhaeum-CloseUp-kl.jpg]]" <em>(&#91;&#91;Den Haag]], mei 2004, Florence Nightingalepark, &#123;&#123;eigenwerk}})</em></li> <li>18 jun 2004 19:28 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeraniumPhaeum-plant-kl.jpg|GeraniumPhaeum-plant-kl.jpg]]" <em>(&#91;&#91;Den Haag]], mei 2004, Florence Nightingalepark, &#123;&#123;eigenwerk}})</em></li> <li>18 jun 2004 19:26 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeraniumPhaeum-bloem-kl.jpg|GeraniumPhaeum-bloem-kl.jpg]]" <em>(&#91;&#91;Den Haag]], mei 2004, Florence Nightingalepark, &#123;&#123;eigenwerk}})</em></li> <li>18 jun 2004 19:16 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LotusCorniculatus-bloem-kl.jpg|LotusCorniculatus-bloem-kl.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse Poort, &#123;&#123;eigenwerk}})</em></li> <li>18 jun 2004 19:16 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LotusCorniculatus-overz-kl.jpg|LotusCorniculatus-overz-kl.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse Poort, &#123;&#123;eigenwerk}})</em></li> <li>18 jun 2004 17:46 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Constantine_II_2.jpg|Constantine_II_2.jpg]]" <em>(en:wikipedia)</em></li> <li>18 jun 2004 17:43 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Karamanlis.jpg|Karamanlis.jpg]]" <em>(en:wikipedia)</em></li> <li>18 jun 2004 17:39 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Papadopoulos.jpg|Papadopoulos.jpg]]" <em>(en:wikipedia)</em></li> <li>18 jun 2004 12:37 [[Gebruiker:Marcus2|Marcus2]] heeft ge-upload: "[[:Afbeelding:Lodewijk_xvi.jpg|Lodewijk_xvi.jpg]]" <em>(new Lodewijk XVI image)</em></li> <li>18 jun 2004 11:18 [[Gebruiker:Hannes Karnoefel|Hannes Karnoefel]] heeft ge-upload: "[[:Afbeelding:Louis14.jpg|Louis14.jpg]]" <em>(Lodewijk 14)</em></li> <li>18 jun 2004 09:12 [[Gebruiker:Bontenbal|Bontenbal]] heeft ge-upload: "[[:Afbeelding:200px-SpaceShipOne-09G.jpg|200px-SpaceShipOne-09G.jpg]]" <em>(Engelse Wikipedia)</em></li> <li>18 jun 2004 09:09 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Obstk.jpg|Obstk.jpg]]" <em>(Fritz8 - print)</em></li> <li>18 jun 2004 07:39 [[Gebruiker:SanderSpek|SanderSpek]] heeft ge-upload: "[[:Afbeelding:Rethink.png|Rethink.png]]" <em>(Logo van ReThink. De auteur (&#91;&#91;Gebruiker:SanderSpek]]) geeft toestemming voor plaatsing onder de Wikipedia-licentie.)</em></li> <li>17 jun 2004 22:44 [[Gebruiker:Andrew Levine|Andrew Levine]] heeft ge-upload: "[[:Afbeelding:Human-nose.jpg|Human-nose.jpg]]" <em>(De neus van een mannelijke 13-jaar-oude Kaukasische mens. Publiek domein, van de Engelse Wikipedia)</em></li> <li>17 jun 2004 21:05 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:AndreasPapandreou.jpg|AndreasPapandreou.jpg]]" <em>(En: wikipedia)</em></li> <li>17 jun 2004 20:49 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Georgepapandreou3.jpg|Georgepapandreou3.jpg]]" <em>(En: wikipedia)</em></li> <li>17 jun 2004 20:17 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Chrysler_top2.jpg|Chrysler_top2.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Chrysler Building, NYC, 30. Mai, 2004 (Selbst fotographiert) &#91;&#91;de:Bild:Chrysler top2.jpg]])</em></li> <li>17 jun 2004 19:49 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Chryslerbldg.jpg|Chryslerbldg.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Chrysler Building at dusk, New York (personal snapshot) &#91;&#91;en:Image:Chryslerbldg.jpg]])</em></li> <li>17 jun 2004 19:10 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Empirestatebldg.jpg|Empirestatebldg.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Empire State Building, New York (personal snapshot) &#91;&#91;en:Image:Empirestatebldg.jpg]])</em></li> <li>17 jun 2004 18:30 [[Gebruiker:CE|CE]] heeft ge-upload: "[[:Afbeelding:SearsTower.jpg|SearsTower.jpg]]" <em>(van engelse wiki, geplaatst door maker)</em></li> <li>17 jun 2004 18:05 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Zwaluw_mei_2004.jpg|Zwaluw_mei_2004.jpg]]" <em>(Foto gemaakt door Fruggo, in &#91;&#91;Enschede]], vrijgegeven onder GNU FDL.)</em></li> <li>17 jun 2004 17:44 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Wolken_april_2004.jpg|Wolken_april_2004.jpg]]" <em>(Foto gemaakt door Fruggo, in de buurt van &#91;&#91;Kampen]], vrijgegeven onder GNU FDL)</em></li> <li>17 jun 2004 17:38 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Vlooiende_Mantelbavianen_mei_2004.jpg|Vlooiende_Mantelbavianen_mei_2004.jpg]]" <em>(Foto gemaakt door Fruggo in &#91;&#91;Noorder Dierenpark]] Emmen, vrijgegeven onder GNU FDL)</em></li> <li>17 jun 2004 17:31 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Veulen_mei_2004.jpg|Veulen_mei_2004.jpg]]" <em>(Foto gemaakt door Fruggo, nabij &#91;&#91;Midwolde]], vrijgegeven onder GNU FDL.)</em></li> <li>17 jun 2004 17:29 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:TurkijeKaart_Izmit.png|TurkijeKaart_Izmit.png]]" <em>(Kaart van Turkije van CIA World Factbook, enkel iets verkleind, en Izmit/Cocaeli met een rode pijl aangewezen)</em></li> <li>17 jun 2004 17:28 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Roze_Pelikaan_mei_2004.jpg|Roze_Pelikaan_mei_2004.jpg]]" <em>(Foto gemaakt door Fruggo in &#91;&#91;Noorder Dierenpark]] Emmen, vrijgegeven onder GNU FDL)</em></li> <li>17 jun 2004 17:22 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Roodwangsierschildpad_mei_2004.jpg|Roodwangsierschildpad_mei_2004.jpg]]" <em>(Foto gemaakt door Fruggo in Noorder Dierenpark Emmen, vrijgegeven onder GNU FDL)</em></li> <li>17 jun 2004 17:17 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Reiger_mei_2004.jpg|Reiger_mei_2004.jpg]]" <em>(Foto gemaakt door Fruggo, vrijgegeven onder GNU-FDL)</em></li> <li>17 jun 2004 16:58 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Forbys_Taipei_101.jpg|Forbys_Taipei_101.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Das höchste Gebäude der Welt (Stand 2004), der Taipei 101 (Fotograf: Peter Schlüter, &#91;&#91;GNU-FDL]]) &#91;&#91;de:Bild:Forbys Taipei 101.jpg]])</em></li> <li>17 jun 2004 16:52 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Wokenkrabber.jpg|Wokenkrabber.jpg]]" <em>(Wolkenkrabber - eigen foto)</em></li> <li>17 jun 2004 16:44 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:KLCC_PetronasTowers.JPG|KLCC_PetronasTowers.JPG]]"</li> <li>17 jun 2004 15:47 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Frederik_de_Grote.PNG|Frederik_de_Grote.PNG]]" <em>(Frederik de Grote)</em></li> <li>17 jun 2004 14:29 [[Gebruiker:Marcus2|Marcus2]] heeft ge-upload: "[[:Afbeelding:W_a_mozart.jpg|W_a_mozart.jpg]]" <em>(new W. A. Mozart image)</em></li> <li>17 jun 2004 13:02 [[Gebruiker:Chef|Chef]] heeft ge-upload: "[[:Afbeelding:Wapencothen.jpg|Wapencothen.jpg]]" <em>(Het wapen van het dorp Cothen)</em></li> <li>17 jun 2004 12:51 [[Gebruiker:Chef|Chef]] heeft ge-upload: "[[:Afbeelding:Cothen.JPG|Cothen.JPG]]" <em>(Een oude schets van het dorp Cothen)</em></li> <li>17 jun 2004 12:03 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Sasikk.jpg|Sasikk.jpg]]" <em>(Fritz8 - print)</em></li> <li>17 jun 2004 11:39 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Voorbeeld.jpg|Voorbeeld.jpg]]" <em>(voorbeeldje voor in de kroeg (screenshot van &#91;&#91;Victor Emanuel II van Italië]])</em></li> <li>17 jun 2004 09:20 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Blokk2.jpg|Blokk2.jpg]]" <em>(Fritz8 - print)</em></li> <li>17 jun 2004 09:13 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Blokk2.jpg|Blokk2.jpg]]" <em>(Fritz8 - print)</em></li> <li>17 jun 2004 08:31 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Blokjk.jpg|Blokjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>16 jun 2004 20:11 [[Gebruiker:Paul Brink|Paul Brink]] heeft ge-upload: "[[:Afbeelding:Fiskardo2.jpg|Fiskardo2.jpg]]" <em>(Oude en nieuwe vuurtoren van Fiskardo, copyright (c) Paul Brink 2004)</em></li> <li>16 jun 2004 19:55 [[Gebruiker:Paul Brink|Paul Brink]] heeft ge-upload: "[[:Afbeelding:Fiskardo1.jpg|Fiskardo1.jpg]]" <em>(Fiskardo, copyright (c) Paul Brink 2004)</em></li> <li>16 jun 2004 16:28 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Pix.jpg|Pix.jpg]]" <em>(En: wikipedia)</em></li> <li>16 jun 2004 14:19 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:AlexanderIJoego.jpg|AlexanderIJoego.jpg]]" <em>(Alexander I van Joegoslavië (van Duitse Wiki - wel even geconverteerd))</em></li> <li>16 jun 2004 13:46 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Scan10.jpg|Scan10.jpg]]" <em>(Fritz8 - print)</em></li> <li>16 jun 2004 13:42 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Scan10.jpg|Scan10.jpg]]" <em>(Fritz8 - print)</em></li> <li>16 jun 2004 13:01 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Scan20.jpg|Scan20.jpg]]" <em>(Fritz8 - print)</em></li> <li>16 jun 2004 12:57 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Scan50.jpg|Scan50.jpg]]" <em>(Fritz8 - print)</em></li> <li>16 jun 2004 12:51 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Scan50.jpg|Scan50.jpg]]" <em>(Fritz8 - print)</em></li> <li>16 jun 2004 12:48 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:PeterIJoego.jpg|PeterIJoego.jpg]]" <em>(Peter I van Servië/Joegoslavië (public domain van http&#58;//www.lib.utexas.edu/photodraw/portraits/index.htm))</em></li> <li>16 jun 2004 12:23 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Scan50.jpg|Scan50.jpg]]" <em>(Fritz8 - print)</em></li> <li>16 jun 2004 11:51 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Vle2.jpg|Vle2.jpg]]" <em>(Fritz8 - print)</em></li> <li>16 jun 2004 11:47 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Vle1.jpg|Vle1.jpg]]" <em>(Fritz8 - print)</em></li> <li>16 jun 2004 11:16 [[Gebruiker:Hannes Karnoefel|Hannes Karnoefel]] heeft ge-upload: "[[:Afbeelding:Scroll.jpg|Scroll.jpg]]" <em>(Boekrol Esther 18de eeuw)</em></li> <li>16 jun 2004 10:08 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:An_orange_lily.jpg|An_orange_lily.jpg]]" <em>(En: wikipedia)</em></li> <li>16 jun 2004 08:58 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Voetgangsersoverweg_met_betonplaten.jpg|Voetgangsersoverweg_met_betonplaten.jpg]]" <em>(Voetgangers overweg met betonplaten, eigen foto, ter beschikking gesteld onder GNU/FDL)</em></li> <li>16 jun 2004 07:41 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Radijs.jpg|Radijs.jpg]]" <em>(zelfgemaakte foto van radijs)</em></li> <li>16 jun 2004 07:36 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Sla-kiemend.jpg|Sla-kiemend.jpg]]" <em>(zelfgemaakte foto van kiemende sla; donkere zaden zijn van ijssla, lichte zaden van kropsla)</em></li> <li>16 jun 2004 07:23 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Witlof_wortels_.jpg|Witlof_wortels_.jpg]]" <em>(zelfgemaakte foto van witlofwortels)</em></li> <li>16 jun 2004 07:12 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Tomaat_wortels.jpg|Tomaat_wortels.jpg]]" <em>(zelfgemaakte foto van wortelstelsel tomaat)</em></li> <li>16 jun 2004 07:10 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Prei_wortels.jpg|Prei_wortels.jpg]]" <em>(zelfgemaakte foto van wortelstelsel van prei)</em></li> <li>16 jun 2004 06:41 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Japanse_wijnbes_wortelopslag.jpg|Japanse_wijnbes_wortelopslag.jpg]]" <em>(zelfgemaakte foto van wortelopslag bij wijnbes)</em></li> <li>16 jun 2004 06:38 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Hazelnoot_Halle'sche_Riesen_vruchten.jpg|Hazelnoot_Halle'sche_Riesen_vruchten.jpg]]" <em>(zelfgemaakte foto van hazelnoot)</em></li> <li>16 jun 2004 06:24 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Maisstengel_opgericht.jpg|Maisstengel_opgericht.jpg]]" <em>(zelfgemaakte foto van een gelegerde maisstengel)</em></li> <li>16 jun 2004 05:29 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Den_Haag_Spui_Beeld_Karel_Appel.jpg|Den_Haag_Spui_Beeld_Karel_Appel.jpg]]" <em>(Den Haag, beeld van Karel Appel, Spui, eigen foto, ter beschikking gesteld onder GNU/FDL)</em></li> <li>16 jun 2004 05:25 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Kluisbestanden.zip|Kluisbestanden.zip]]" <em>(Update met e-mail van Käntersle)</em></li> <li>15 jun 2004 23:55 [[Gebruiker:Rubinio|Rubinio]] heeft ge-upload: "[[:Afbeelding:Wapenapeldoorn.JPG|Wapenapeldoorn.JPG]]" <em>(komt van de site van Apeldoorn www.apeldoorn.nl Een mooie pagina hier incl wapen is in het belang van de gemeente lijkt me...)</em></li> <li>15 jun 2004 22:51 [[Gebruiker:Hannes Karnoefel|Hannes Karnoefel]] heeft ge-upload: "[[:Afbeelding:Rome476.jpeg|Rome476.jpeg]]" <em>(Romeinse Rijk 476 AD )</em></li> <li>15 jun 2004 21:43 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Wisseling_van_de_wacht.jpg|Wisseling_van_de_wacht.jpg]]" <em>(eigen foto, publiek domein)</em></li> <li>15 jun 2004 21:27 [[Gebruiker:Hannes Karnoefel|Hannes Karnoefel]] heeft ge-upload: "[[:Afbeelding:Rome406.jpeg|Rome406.jpeg]]" <em>(Romeinse rijk 406 AD ©Hannes Karnoefel)</em></li> <li>15 jun 2004 21:08 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:B-757_Frachter,_DHL.jpg|B-757_Frachter,_DHL.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: B-757, Frachter, DHL, mein Bild, GNU-Lizenz &#91;&#91;de:Bild:B-757 Frachter, DHL.jpg]] &#123;&#123;GFDL}})</em></li> <li>15 jun 2004 21:07 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:DHL-Fahrzeug.jpg|DHL-Fahrzeug.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: DHL-Fahrzeug selbstfotografiert GNU-FDL &#91;&#91;de:Bild:DHL-Fahrzeug.jpg]] &#123;&#123;GFDL}})</em></li> <li>15 jun 2004 20:58 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Karl_Marx_Geburtshaus_Trier.jpg|Karl_Marx_Geburtshaus_Trier.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: *Beschreibung: **Karl Marx Geburtshaus in Trier *Quelle: **Fotografiert am 16. August 2003 *Fotograf oder Zeichner: **&#91;&#91;Benutzer:Stefan Kühn&#124;Stefan Kühn]] *Andere Versionen: **&#91;&#91;Media:Karl_Marx_Geburtshaus_Trier_kl.jpg&#124;kleinere Version]] (&#91;&#91;:Bild:Karl_Marx_Geburtshaus_Trier_kl.jpg&#124;Info]]) *Copyright Status: **&#91;&#91;GNU Freie Dokumentationslizenz]] &#91;&#91;de:Bild:Karl Marx Geburtshaus Trier.jpg]] &#123;&#123;GFDL}})</em></li> <li>15 jun 2004 20:46 [[Gebruiker:Pven|Pven]] heeft ge-upload: "[[:Afbeelding:InvoedPaard.PNG|InvoedPaard.PNG]]" <em>(Invloed van een paard op zijn omgevingsvelden, eigen werk)</em></li> <li>15 jun 2004 19:55 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Harrods.jpg|Harrods.jpg]]" <em>(Harrods - eigen foto)</em></li> <li>15 jun 2004 19:22 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Trafsqu.jpg|Trafsqu.jpg]]" <em>(Trafalgar Square - eigen foto)</em></li> <li>15 jun 2004 19:05 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Horseguards.jpg|Horseguards.jpg]]" <em>(horseguards - eigen foto)</em></li> <li>15 jun 2004 18:02 [[Gebruiker:Hannes Karnoefel|Hannes Karnoefel]] heeft ge-upload: "[[:Afbeelding:Europa60AD.jpeg|Europa60AD.jpeg]]" <em>(Romeinse rijk 60-400 ad)</em></li> <li>15 jun 2004 17:59 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Italy_Regions_Umbria_220px.png|Italy_Regions_Umbria_220px.png]]" <em>(Van en: wikipedia, Credit: Ahoerstemeier (outline), Sascha Noyes (other stuff), 2004 License: GFDL)</em></li> <li>15 jun 2004 16:40 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Porta_Nigra_Innenansicht.jpg|Porta_Nigra_Innenansicht.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: *Beschreibung: **Porta Nigra in Trier, Blick in den Innenhof von der 1. Etage aus *Quelle: **Fotografiert am 17. Mai 2003 *Fotograf oder Zeichner: **&#91;&#91;Benutzer:Stefan Kühn&#124;Stefan Kühn]] *Copyright Status: **&#91;&#91;GNU Freie Dokumentationslizenz]] &#91;&#91;de:Bild:Porta Nigra Innenansicht.jpg]] &#123;&#123;GFDL}})</em></li> <li>15 jun 2004 16:40 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Porta_Nigra_Stadtseite.jpg|Porta_Nigra_Stadtseite.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: *Beschreibung: **Blick auf die Porta Nigra in Trier von der Stadtseite *Quelle: **Fotografiert am 4. Mai 2003 *Fotograf oder Zeichner: **&#91;&#91;Benutzer:Stefan Kühn&#124;Stefan Kühn]] *Copyright Status: **&#91;&#91;GNU Freie Dokumentationslizenz]] &#91;&#91;de:Bild:Porta Nigra Stadtseite.jpg]] &#123;&#123;GFDL}})</em></li> <li>15 jun 2004 16:37 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Porta_Nigra_Landseite.jpg|Porta_Nigra_Landseite.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: *Beschreibung: **Blick auf die Porta Nigra in Trier *Quelle: **Fotografiert am 4. Mai 2003 *Fotograf oder Zeichner: **&#91;&#91;Benutzer:Stefan Kühn&#124;Stefan Kühn]] *Copyright Status: **&#91;&#91;GNU Freie Dokumentationslizenz]] &#91;&#91;de:Bild:Porta Nigra Landseite.jpg]] &#123;&#123;GFDL}})</em></li> <li>15 jun 2004 16:28 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Schwebebahn_ueber_Strasse.jpg|Schwebebahn_ueber_Strasse.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: *Beschreibung: Die Wuppertaler Schwebebahn &quot;schwebt&quot; über eine Kreuzung *Quelle: fotografiert am 31. Mai 2004 *Fotograf oder Zeichner: &#91;&#91;Benutzer:Oktaeder&#124;Oktaeder]] *Andere Versionen: *Lizenzstatus: Public Domain &#91;&#91;de:Bild:Schwebebahn ueber Strasse.jpg]] &#123;&#123;PD}})</em></li> <li>15 jun 2004 15:27 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:250px-LordMayorOxford20040228CopyrightKaihsuTai.png|250px-LordMayorOxford20040228CopyrightKaihsuTai.png]]" <em>(van de engelse wikipedia)</em></li> <li>15 jun 2004 12:48 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Mall_Londen.jpg|Mall_Londen.jpg]]" <em>(Van Engelse wikipedia, geen beschrijving)</em></li> <li>15 jun 2004 12:07 [[Gebruiker:Oski|Oski]] heeft ge-upload: "[[:Afbeelding:PACE-flag.png|PACE-flag.png]]" <em>(uit de Engelse Wikipedia, http&#58;//en.wikipedia.org/wiki/Image:PACE-flag.png)</em></li> <li>15 jun 2004 11:53 [[Gebruiker:Oski|Oski]] heeft ge-upload: "[[:Afbeelding:Image_PACE-flag.png|Image_PACE-flag.png]]" <em>(uit de Engelse Wikipedia, http&#58;//en.wikipedia.org/wiki/Image:PACE-flag.png)</em></li> <li>15 jun 2004 11:09 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Chernin.jpg|Chernin.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>15 jun 2004 11:09 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Natgal.jpg|Natgal.jpg]]" <em>(van de Engelstalige wiki-foto op gelijknamige pagina)</em></li> <li>15 jun 2004 11:05 [[Gebruiker:Hannes Karnoefel|Hannes Karnoefel]] heeft ge-upload: "[[:Afbeelding:Europa60AD.jpeg|Europa60AD.jpeg]]" <em>(Romeinse Rijk 60-400 AD ©Hannes Karnoefel)</em></li> <li>15 jun 2004 10:29 [[Gebruiker:Hannes Karnoefel|Hannes Karnoefel]] heeft ge-upload: "[[:Afbeelding:Europa60AD.jpeg|Europa60AD.jpeg]]" <em>(Romeinse Rijk omstreeks 60 AD. Gemaakt door Hannes Karnoefel)</em></li> <li>15 jun 2004 09:14 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Cheminjk.jpg|Cheminjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>15 jun 2004 07:54 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Combi03.jpg|Combi03.jpg]]" <em>(Fritz8 - print)</em></li> <li>15 jun 2004 07:23 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Combi02.jpg|Combi02.jpg]]" <em>(Fritz8 - print)</em></li> <li>15 jun 2004 07:17 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Combi01.jpg|Combi01.jpg]]" <em>(Fritz8 - print)</em></li> <li>15 jun 2004 06:04 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:CynoglossumOfficinale-bloem-kl.jpg|CynoglossumOfficinale-bloem-kl.jpg]]" <em>(Scheveningse duinen, 29 mei 2004, &#123;&#123;eigenwerk}})</em></li> <li>15 jun 2004 06:01 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:CynoglossumOfficinale-plant-kl.jpg|CynoglossumOfficinale-plant-kl.jpg]]" <em>(Scheveningse duinen, 29 mei 2004, &#123;&#123;eigenwerk}})</em></li> <li>14 jun 2004 21:19 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Apresunreve.mid|Apresunreve.mid]]" <em>(Gabriel Fauré (1845-1924): Après un Rêve, op. 7. Van &#91;http&#58;//www.ibiblio.org/mutopia/cgibin/piece-info.cgi?id=368 Mutopia], publiek domein)</em></li> <li>14 jun 2004 21:06 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Chopin-ballade-4.mid|Chopin-ballade-4.mid]]" <em>(Frederic Chopin: Ballade #4. Afkomstig van: http&#58;//www.ibiblio.org/mutopia/cgibin/make-table.cgi?Composer=ChopinFF, publiek domein)</em></li> <li>14 jun 2004 21:02 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Carcassi-op60-03.mid|Carcassi-op60-03.mid]]" <em>(Matteo Carcassi, opus 60: 25 etudes, nummer 3. Afkomstig van &#91;http&#58;//www.ibiblio.org/mutopia/cgibin/make-table.cgi?Composer=CarcassiM Mutopia]. Publiek domein.)</em></li> <li>14 jun 2004 20:46 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Benda_SonateG3.mid|Benda_SonateG3.mid]]" <em>(Jiri Antonin Benda: Sonate in G-Dur, 3e deel. Bron: &#91;http&#58;//www.ibiblio.org/mutopia/cgibin/make-table.cgi?Composer=BendaJA Mutopia]. Publiek domein)</em></li> <li>14 jun 2004 20:34 [[Gebruiker:Evelien|Evelien]] heeft ge-upload: "[[:Afbeelding:EvelienAtWork.JPG|EvelienAtWork.JPG]]" <em>(Deze foto van mezelf is genomen door mijn goede vriend Willem)</em></li> <li>14 jun 2004 20:30 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Cpe-bach-rondo.mid|Cpe-bach-rondo.mid]]" <em>(Midifile van een rondo van C.P.E. Bach, afkomstig van &#91;http&#58;//www.ibiblio.org/mutopia/cgibin/make-table.cgi?Composer=BachCPE Mutopia]. Publiek domein.)</em></li> <li>14 jun 2004 18:57 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Rodin.jpg|Rodin.jpg]]" <em>(eigen foto)</em></li> <li>14 jun 2004 18:42 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Richard.jpg|Richard.jpg]]" <em>(eigen foto)</em></li> <li>14 jun 2004 18:37 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Ccaa-navarre.png|Ccaa-navarre.png]]" <em>(Van en: wiki 05:08, 19 Aug 2003 . . Montrealais (10594 bytes) (Locator map of Navarre, by [[Gebruiker:Quistnix|Quistnix]]) )</em></li> <li>14 jun 2004 16:38 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Polder_Stein.JPG|Polder_Stein.JPG]]" <em>(Polder Stein vanaf de Tiendweg, eigen foto)</em></li> <li>14 jun 2004 15:35 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Whitehall.jpg|Whitehall.jpg]]" <em>(van Engelse pagina, Whitehall, Londen, permission is granted to copy)</em></li> <li>14 jun 2004 14:24 [[Gebruiker:Bontenbal|Bontenbal]] heeft ge-upload: "[[:Afbeelding:Zetelverdeling.png|Zetelverdeling.png]]" <em>(zelf gemaakt)</em></li> <li>14 jun 2004 14:05 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Centrale.jpg|Centrale.jpg]]" <em>(centrale in Engeland - eigen foto)</em></li> <li>14 jun 2004 13:30 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Poppies.jpg|Poppies.jpg]]" <em>(Slaapbol - eigen foto)</em></li> <li>14 jun 2004 12:40 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:LouisPasteur.jpg|LouisPasteur.jpg]]" <em>(van wiki-en (From http&#58;//wwwihm.nlm.nih.gov): .gov dus GFDL)</em></li> <li>14 jun 2004 12:19 [[Gebruiker:Deadstar|Deadstar]] heeft ge-upload: "[[:Afbeelding:Johnadamsvp.flipped.jpg|Johnadamsvp.flipped.jpg]]" <em>(John Adams predidential portrait van en:. Ouderdom)</em></li> <li>14 jun 2004 09:56 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Vlagbelgiegroot.png|Vlagbelgiegroot.png]]" <em>(vlag belgie (juiste verhoudingen))</em></li> <li>14 jun 2004 09:54 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Kew1.jpg|Kew1.jpg]]" <em>(eigen foto)</em></li> <li>14 jun 2004 09:45 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Kew.jpg|Kew.jpg]]" <em>(kew gardens - eigen foto)</em></li> <li>14 jun 2004 09:38 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Palmhuis.jpg|Palmhuis.jpg]]" <em>(palmhuis kew gardens - eigen foto)</em></li> <li>14 jun 2004 09:30 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Andorra_flag_large.png|Andorra_flag_large.png]]" <em>(andorravlag)</em></li> <li>14 jun 2004 09:20 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:StPauls.jpg|StPauls.jpg]]" <em>(Eigen foto)</em></li> <li>14 jun 2004 09:18 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Aljek.jpg|Aljek.jpg]]" <em>(Fritz8 - print)</em></li> <li>14 jun 2004 08:04 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Vlier_stengel_knoop.jpg|Vlier_stengel_knoop.jpg]]" <em>(zelfgemaakte foto van stengelklieren bij vlier half juni)</em></li> <li>14 jun 2004 06:43 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Vlier_stengel_lenticellen.jpg|Vlier_stengel_lenticellen.jpg]]" <em>(zelfgemaakte foto van lenticellen op vlier half juni)</em></li> <li>14 jun 2004 04:11 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Boun_oum.jpg|Boun_oum.jpg]]" <em>(En: wikipedia)</em></li> <li>13 jun 2004 23:24 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:LaEspero.mp3|LaEspero.mp3]]" <em>(LaEspero.mp3 van wiki-en verondersteld GFDL (geen externe links?))</em></li> <li>13 jun 2004 23:21 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:LaEspero.mid|LaEspero.mid]]" <em>(van wiki-en, verondersteld GFDL)</em></li> <li>13 jun 2004 22:36 [[Gebruiker:Hannes Karnoefel|Hannes Karnoefel]] heeft ge-upload: "[[:Afbeelding:Theophil.jpg|Theophil.jpg]]" <em>(Van de engelse wikipedia)</em></li> <li>13 jun 2004 22:34 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:HenriBergson.jpg|HenriBergson.jpg]]" <em>(van wiki-en, verondersteld GFDL)</em></li> <li>13 jun 2004 21:52 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Philip_macedon_coin.jpg|Philip_macedon_coin.jpg]]" <em>(En: wikipedia)</em></li> <li>13 jun 2004 21:04 [[Gebruiker:Hannes Karnoefel|Hannes Karnoefel]] heeft ge-upload: "[[:Afbeelding:Sagan-bibliotheek.jpeg|Sagan-bibliotheek.jpeg]]" <em>(Van de engelese wikipedia)</em></li> <li>13 jun 2004 20:49 [[Gebruiker:Hannes Karnoefel|Hannes Karnoefel]] heeft ge-upload: "[[:Afbeelding:Mouseion.jpeg|Mouseion.jpeg]]" <em>(van de engelse wikipedia zie aldaar)</em></li> <li>13 jun 2004 20:32 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Frans1BeideS.jpg|Frans1BeideS.jpg]]" <em>(&#91;&#91;Frans I der Beide Siciliën]] door &#91;&#91;Giuseppe Cammarano]] - Cammarano is in 1850 overleden en dus langer dan 70 jaar dood; daarom geen copyright.)</em></li> <li>13 jun 2004 20:11 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:AlbrechtAchilles.jpg|AlbrechtAchilles.jpg]]" <em>(Albrecht Achilles (afbeelding uit 1484, dus geen copyright))</em></li> <li>13 jun 2004 19:20 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Kaart_Griekenland_Pelion.png|Kaart_Griekenland_Pelion.png]]" <em>(Oorspronkelijk uit CIA Factbook; vertaald in Nederlands door Danielm; omgezet in PNG door BenTels, enkel Pelion met rood gemarkeerd door mij)</em></li> <li>13 jun 2004 19:08 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Botticelli_73.jpg|Botticelli_73.jpg]]" <em>(venus van bottichelli)</em></li> <li>13 jun 2004 19:08 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Abt.jpg|Abt.jpg]]" <em>(venus mural in pompeii)</em></li> <li>13 jun 2004 18:09 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Kaart_Griekenland_Kassandra.png|Kaart_Griekenland_Kassandra.png]]" <em>(Oorspronkelijk uit CIA Factbook; vertaald in Nederlan PNG door BenTels, enkel Kassandra met rood gemarkeerd door mijds door Danielm; omgezet in)</em></li> <li>13 jun 2004 18:09 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Kaart_Griekenland_Sithonia.png|Kaart_Griekenland_Sithonia.png]]" <em>(Oorspronkelijk uit CIA Factbook; vertaald in Nederlands door Dani PNG door BenTels, enkel Sithonia met rood gemarkeerd door mijelm; omgezet in)</em></li> <li>13 jun 2004 18:08 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Kaart_Griekenland_Athos.png|Kaart_Griekenland_Athos.png]]" <em>(Oorspronkelijk uit CIA Factbook; vertaald in Nederlands door Daniel PNG door BenTels, enkel Athos met rood gemarkeerd door mijm; omgezet in)</em></li> <li>13 jun 2004 18:06 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Coaafghanistan.jpg|Coaafghanistan.jpg]]" <em>(afghanistan wapenschild groot)</em></li> <li>13 jun 2004 18:01 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Afghanistan_flag_large.png|Afghanistan_flag_large.png]]" <em>(vlag afghanistan 2)</em></li> <li>13 jun 2004 18:01 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:DRAfghanistanEarlyFlag.png|DRAfghanistanEarlyFlag.png]]" <em>(vlag afghanistan 1)</em></li> <li>13 jun 2004 17:41 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Robespierre.PNG|Robespierre.PNG]]" <em>(PD tekening van UT Library, ingekleurd naar bestaande schilderijen)</em></li> <li>13 jun 2004 16:46 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Prairiehondjes2_mei_2004.jpg|Prairiehondjes2_mei_2004.jpg]]" <em>(Foto gemaakt door Fruggo, vrijgegeven onder GNU-FDL)</em></li> <li>13 jun 2004 16:46 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Prairiehondjes_mei_2004.jpg|Prairiehondjes_mei_2004.jpg]]" <em>(Foto gemaakt door Fruggo, vrijgegeven onder GNU-FDL)</em></li> <li>13 jun 2004 16:38 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Paard_mei_2004.jpg|Paard_mei_2004.jpg]]" <em>(Foto gemaakt door Fruggo, vrijgegeven onder GNU-FDL)</em></li> <li>13 jun 2004 15:47 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:KeizerlijkBezoek.gif|KeizerlijkBezoek.gif]]" <em>(Staatsbezoek van de tsaar aan de koning van Württemberg - &quot;Canadian Illustrated News, Vol. IV, No. 8, Page 124. Reproduced from the National Library of Canada&#39;s website Images in the News: Canadian Illustrated News.&quot; - http&#58;//www.collectionscanada.ca/index-e.html - vrij te gebruiken mits met voornoemde bronvermelding)</em></li> <li>13 jun 2004 13:49 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Karmijn.png|Karmijn.png]]" <em>(Karmijn, zelf gemaakt en ter beschikking gesteld onder GNU FDL)</em></li> <li>13 jun 2004 13:39 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cochineal.jpg|Cochineal.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Cochineal insects on a cactus plant &#91;&#91;en:Image:Cochineal.jpg]])</em></li> <li>13 jun 2004 13:36 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:KarelW.jpg|KarelW.jpg]]" <em>(Karel I van Württemberg - uitsnede uit afbeelding &quot;The Crowned Heads of Germany&quot; (Canadian Illustrated News, Vol. III, No. 13, Page 205. Reproduced from the National Library of Canada&#39;s website Images in the News: Canadian Illustrated News - http&#58;//www.collectionscanada.ca/index-e.html) )</em></li> <li>13 jun 2004 13:13 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Triode.jpg|Triode.jpg]]" <em>(Van Wikipedia.en&lt;BR&gt;Daar geupload door Stevan White met beschrijving &#39;&#39;(Diagram of Vacuum-Tube Triode)&#39;&#39;&lt;br&gt;Aangenomen licentie: &#123;&#123;GFDL}})</em></li> <li>13 jun 2004 13:12 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Diode.jpg|Diode.jpg]]" <em>(Van Wikipedia.en&lt;br&gt;Daar geupload door Stevan White met beschrijving &#39;&#39;(Diagram of Vacuum-Tube Diode)&#39;&#39;&lt;br&gt;Aangenomen licentie: &#123;&#123;GFDL}})</em></li> <li>13 jun 2004 13:11 [[Gebruiker:JeroenHoek|JeroenHoek]] heeft ge-upload: "[[:Afbeelding:Nederland_vlag_groot.png|Nederland_vlag_groot.png]]" <em>(Vlag van Nederland)</em></li> <li>13 jun 2004 13:00 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Prins_Philip.jpg|Prins_Philip.jpg]]" <em>(van Engelse pagina)</em></li> <li>13 jun 2004 12:41 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:House_Dust_Mite.jpg|House_Dust_Mite.jpg]]" <em>(En: wikipedia)</em></li> <li>13 jun 2004 12:33 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Lon_nol.jpg|Lon_nol.jpg]]" <em>(En: wikipedia)</em></li> <li>13 jun 2004 11:18 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:BlauweKamer3.JPG|BlauweKamer3.JPG]]" <em>(Eigen foto)</em></li> <li>13 jun 2004 11:17 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:BlauweKamer2.JPG|BlauweKamer2.JPG]]" <em>(Eigen foto)</em></li> <li>13 jun 2004 11:15 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:BlauweKamer1.JPG|BlauweKamer1.JPG]]" <em>(Eigen foto)</em></li> <li>13 jun 2004 11:14 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Gabon_flag_large.png|Gabon_flag_large.png]]" <em>(vlag gabon)</em></li> <li>13 jun 2004 11:12 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:PontOpheusden.JPG|PontOpheusden.JPG]]" <em>(Eigen foto)</em></li> <li>13 jun 2004 11:11 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Ethiopia_flag_large.png|Ethiopia_flag_large.png]]" <em>(vlag ethiopië)</em></li> <li>13 jun 2004 11:04 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Locatie_Dominica.png|Locatie_Dominica.png]]" <em>(Dominica kaart)</em></li> <li>13 jun 2004 11:04 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Dominica_Vlag.png|Dominica_Vlag.png]]" <em>(Dominica vlag)</em></li> <li>13 jun 2004 11:03 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Dominica23.png|Dominica23.png]]" <em>(Dominica wapenschild)</em></li> <li>13 jun 2004 10:38 [[Gebruiker:Hannes Karnoefel|Hannes Karnoefel]] heeft ge-upload: "[[:Afbeelding:Europa60AD.jpeg|Europa60AD.jpeg]]" <em>(romeinse rijk 60-400)</em></li> <li>13 jun 2004 10:37 [[Gebruiker:Amantine|Amantine]] heeft ge-upload: "[[:Afbeelding:Cellulose.png|Cellulose.png]]" <em>(zelf gemaakt)</em></li> <li>13 jun 2004 10:33 [[Gebruiker:Hannes Karnoefel|Hannes Karnoefel]] heeft ge-upload: "[[:Afbeelding:Europa60AD.jpeg|Europa60AD.jpeg]]" <em>(Romeinse Rijk 60-400 AD)</em></li> <li>13 jun 2004 09:36 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Offerjk.jpg|Offerjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>13 jun 2004 08:32 [[Gebruiker:Hannes Karnoefel|Hannes Karnoefel]] heeft ge-upload: "[[:Afbeelding:Scheven1.jpg|Scheven1.jpg]]" <em>(Gemaakt door [[Gebruiker:Quistnix|Quistnix]] met de &#91;&#91;GIMP]])</em></li> <li>13 jun 2004 08:23 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Eben_Moglen.jpg|Eben_Moglen.jpg]]" <em>(En: wikipedia)</em></li> <li>13 jun 2004 00:28 [[Gebruiker:Maarten van Vliet|Maarten van Vliet]] heeft ge-upload: "[[:Afbeelding:Riccardo_Chailly.jpg|Riccardo_Chailly.jpg]]" <em>(Riccardo Chailly, Italiaans dirigent - Engelse wiki: &#91;http&#58;//en.wikipedia.org/wiki/Image:Riccardo_Chailly.jpg])</em></li> <li>12 jun 2004 21:45 [[Gebruiker:Denkertje|Denkertje]] heeft ge-upload: "[[:Afbeelding:Byzantium_250px.jpg|Byzantium_250px.jpg]]" <em>(Afkomstig van Engelse Wiki)</em></li> <li>12 jun 2004 21:23 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:ViolaCurtisii-plant-kl.jpg|ViolaCurtisii-plant-kl.jpg]]" <em>(duinen wassenaar, mei 2004, &#123;&#123;eigenwerk}})</em></li> <li>12 jun 2004 21:22 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:ViolaCurtisii-overz-hr.jpg|ViolaCurtisii-overz-hr.jpg]]" <em>(duinen wassenaar, mei 2004, &#123;&#123;eigenwerk}})</em></li> <li>12 jun 2004 16:53 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Margherita.jpg|Margherita.jpg]]" <em>(Margaretha van Savoye (public domain van http&#58;//www.lib.utexas.edu/photodraw/portraits/index.html))</em></li> <li>12 jun 2004 15:26 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Residenzschloss_Ludwigsburg.jpg|Residenzschloss_Ludwigsburg.jpg]]" <em>(Slot Ludwigsburg (van Duitse Wiki))</em></li> <li>12 jun 2004 15:25 [[Gebruiker:Dr.Jelmer|Dr.Jelmer]] heeft ge-upload: "[[:Afbeelding:Mironovmethode.jpg|Mironovmethode.jpg]]" <em>(Afbeelding uit KijK, met daarop de methode van vleeskweken volgend Mironov. )</em></li> <li>12 jun 2004 14:30 [[Gebruiker:Hannes Karnoefel|Hannes Karnoefel]] heeft ge-upload: "[[:Afbeelding:Europa60AD.jpeg|Europa60AD.jpeg]]" <em>(Met de GIMP gemaakt door Hannes Karnoefel)</em></li> <li>12 jun 2004 14:07 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Wilhelma-1900.jpg|Wilhelma-1900.jpg]]" <em>(Wilhelma rond 1900 (van Duitse Wiki))</em></li> <li>12 jun 2004 14:01 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Mongkut.gif|Mongkut.gif]]"</li> <li>12 jun 2004 13:44 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Grabkapelle_fern.jpg|Grabkapelle_fern.jpg]]" <em>(Grabkapelle (mausoleum voor Willem I van Württemberg; vrij te gebruiken voor gratis doeleinden mits met de vermelding &quot;Copyright Stuttgart-Marketing GmbH&quot;))</em></li> <li>12 jun 2004 13:40 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:HansVanDenBroek.jpg|HansVanDenBroek.jpg]]" <em>(Foto Hans van den Broek. (c) European Communities. Reproduction is authorised, provided the source is acknowledged.)</em></li> <li>12 jun 2004 13:17 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Cu2..5.JPG|Cu2..5.JPG]]" <em>(Voor mij cu2 gemaakt door mijzelf)</em></li> <li>12 jun 2004 13:17 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Cu2..4.JPG|Cu2..4.JPG]]" <em>(Voor mij cu2 gemaakt door mijzelf)</em></li> <li>12 jun 2004 13:16 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Cu2..3.JPG|Cu2..3.JPG]]" <em>(Voor mij cu2 gemaakt door mijzelf)</em></li> <li>12 jun 2004 13:16 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Cu2..2.JPG|Cu2..2.JPG]]" <em>(Voor mij cu2 gemaakt door mijzelf)</em></li> <li>12 jun 2004 13:14 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Cu2..1.JPG|Cu2..1.JPG]]" <em>(Voor mij cu2 gemaakt door mijzelf)</em></li> <li>12 jun 2004 13:14 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Cu2..1.JPG|Cu2..1.JPG]]" <em>(Voor mij cu2 gemaakt door mijzelf)</em></li> <li>12 jun 2004 13:12 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:PietDankert.jpg|PietDankert.jpg]]" <em>(Foto Piet Dankert. (c) Europese Gemeenschappen, 2000. Reproductie met bronvermelding toegestaan.)</em></li> <li>12 jun 2004 13:06 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Ascona.lago.jpg|Ascona.lago.jpg]]" <em>(Bron is &#91;&#91;:de:Bild:Ascona.lago.jpg]] en volgens de aantekening vrijgegegeven onder GNU/FDL &#123;&#123;msg:GFDL}} &#91;&#91;de:Bild:Ascona.lago.jpg]])</em></li> <li>12 jun 2004 13:04 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LaurensJanBrinkhorst.jpg|LaurensJanBrinkhorst.jpg]]" <em>(Foto Laurens Jan Brinkhorst. (c) Europese Gemeenschappen, 2000. Reproductie met bronvermelding toegestaan.)</em></li> <li>12 jun 2004 12:25 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Tiel_Waterpoort.jpg|Tiel_Waterpoort.jpg]]" <em>(Tiel - Waterpoort, eigen foto)</em></li> <li>12 jun 2004 11:12 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Randjk.jpg|Randjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>12 jun 2004 08:31 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Heemjk.jpg|Heemjk.jpg]]" <em>(eigen archief)</em></li> <li>12 jun 2004 08:26 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Heemjk.jpg|Heemjk.jpg]]" <em>(erik)</em></li> <li>12 jun 2004 08:22 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Heemjk.jpg|Heemjk.jpg]]" <em>(eigen archief)</em></li> <li>11 jun 2004 21:47 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Stvking.jpg|Stvking.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: steven king (copyright ADGM) &#91;&#91;en:Image:stvking.jpg]])</em></li> <li>11 jun 2004 18:38 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Strom_Thurmond.jpg|Strom_Thurmond.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;&lt;nowiki&gt;http&#58;//www.va.gov/OCA/images/SC_SS_Thurmond2.jpg&lt;/nowiki&gt;&lt;p&gt;&#123;&#123;PD}}&lt;p&gt;&#91;&#91;en:Image:Strom Thurmond.jpg]])</em></li> <li>11 jun 2004 17:09 [[Gebruiker:G.J. Snoek|G.J. Snoek]] heeft ge-upload: "[[:Afbeelding:Zei-spreuk.png|Zei-spreuk.png]]" <em>(scan van boekomslag)</em></li> <li>11 jun 2004 16:50 [[Gebruiker:Maarten van Vliet|Maarten van Vliet]] heeft ge-upload: "[[:Afbeelding:Johannes_Brahms.jpg|Johannes_Brahms.jpg]]" <em>(Van de Engelse wiki, )</em></li> <li>11 jun 2004 15:09 [[Gebruiker:Bart|Bart]] heeft ge-upload: "[[:Afbeelding:Mozillalogo.png|Mozillalogo.png]]" <em>(engelse wikipedia)</em></li> <li>11 jun 2004 14:38 [[Gebruiker:SanderSpek|SanderSpek]] heeft ge-upload: "[[:Afbeelding:Gemckinsey.png|Gemckinsey.png]]" <em>(GE/McKinsey-matrix. Zelf in elkaar geknutselt.)</em></li> <li>11 jun 2004 12:33 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:WapenVanSavoye.jpg|WapenVanSavoye.jpg]]" <em>(Wapen van het Huis van Savoye)</em></li> <li>11 jun 2004 11:43 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Heemjk.jpg|Heemjk.jpg]]" <em>(eigen archief)</em></li> <li>11 jun 2004 11:42 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:FrederikIW.jpg|FrederikIW.jpg]]" <em>(Koning Frederik I van Württemberg (schilderij van rond 1806, daarom geen copyright))</em></li> <li>11 jun 2004 11:41 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Heemsoth.jpg|Heemsoth.jpg]]" <em>(eigen archief)</em></li> <li>11 jun 2004 11:25 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:SimeonIIBulgarije.jpg|SimeonIIBulgarije.jpg]]" <em>(Simeon II van Bulgarije (van Engelse Wiki))</em></li> <li>11 jun 2004 11:17 [[Gebruiker:Robk|Robk]] heeft ge-upload: "[[:Afbeelding:Sword_Beach.PNG|Sword_Beach.PNG]]" <em>(Fragment uit kaart van internet)</em></li> <li>11 jun 2004 11:09 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:MaximiliaanMexico3.jpg|MaximiliaanMexico3.jpg]]" <em>(Maximiliaan van Mexico (van Spaanse Wiki, de beschrijving was daar:Ofrecimiento de la corona de México por parte de la delegación mexicana a Maximiliano (dominio público)))</em></li> <li>11 jun 2004 11:08 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:MaximiliaanMexico2.jpg|MaximiliaanMexico2.jpg]]" <em>(Maximiliaan van Mexico (van Spaanse Wiki, de beschrijving was daar: Retrato de Maximiliano por Winterhalter (dominio público)))</em></li> <li>11 jun 2004 11:06 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Salovjk.jpg|Salovjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>11 jun 2004 10:53 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Salov2.jpg|Salov2.jpg]]" <em>(Titkov)</em></li> <li>11 jun 2004 10:44 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Salov2.jpg|Salov2.jpg]]" <em>(Titkov)</em></li> <li>11 jun 2004 08:23 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Arojk.jpg|Arojk.jpg]]" <em>(Fritz8 - print)</em></li> <li>11 jun 2004 07:28 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Moerasandijvie.JPG|Moerasandijvie.JPG]]" <em>(Eigen foto)</em></li> <li>10 jun 2004 23:48 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:SintHelenaVlag.png|SintHelenaVlag.png]]" <em>(vlag St Helena van wiki-en (orig CIA, GFDL))</em></li> <li>10 jun 2004 23:47 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:SintHelenaLocatie.png|SintHelenaLocatie.png]]" <em>(Locatie St Helena va wiki-en (GFDL))</em></li> <li>10 jun 2004 23:14 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Sint_Helena_(eiland)Locatie.png|Sint_Helena_(eiland)Locatie.png]]" <em>(Locatie St Helena va wiki-en (GFDL))</em></li> <li>10 jun 2004 23:07 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Sint_HelanaVlag.png|Sint_HelanaVlag.png]]" <em>(Vlag St Helena vanb wiki-de (CIA, GFDL))</em></li> <li>10 jun 2004 23:06 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Sint_HelenaKaart.png|Sint_HelenaKaart.png]]" <em>(van wiki-de (orig CIA, GFDL))</em></li> <li>10 jun 2004 21:01 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:RayCharles.jpg|RayCharles.jpg]]" <em>(En: wikipedia)</em></li> <li>10 jun 2004 20:20 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SileneLatofolia-plant-hr.jpg|SileneLatofolia-plant-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse poort, &#123;&#123;sjabloon:eigenwerk}})</em></li> <li>10 jun 2004 20:19 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SileneLatofolia-kelk-hr.jpg|SileneLatofolia-kelk-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse poort, &#123;&#123;sjabloon:eigenwerk}})</em></li> <li>10 jun 2004 20:19 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SileneLatofolia-kelk-hr.jpg|SileneLatofolia-kelk-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse poort, &#123;&#123;sjabloon:werk}})</em></li> <li>10 jun 2004 20:18 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SileneLatofolia-bloem-hr.jpg|SileneLatofolia-bloem-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse poort, &#123;&#123;sjabloon:werk}})</em></li> <li>10 jun 2004 20:11 [[Gebruiker:Bart|Bart]] heeft ge-upload: "[[:Afbeelding:Firefoxtest.png|Firefoxtest.png]]" <em>(engelse wikipedia)</em></li> <li>10 jun 2004 19:12 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Verkiezingen3.JPG|Verkiezingen3.JPG]]" <em>(Eigen foto)</em></li> <li>10 jun 2004 19:12 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Verkiezingen2.JPG|Verkiezingen2.JPG]]" <em>(Eigen foto)</em></li> <li>10 jun 2004 19:12 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Verkiezingen1.JPG|Verkiezingen1.JPG]]" <em>(Eigen foto)</em></li> <li>10 jun 2004 13:58 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SileneDioica-CloseUp1-hr.jpg|SileneDioica-CloseUp1-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse poort, &#123;&#123;sjabloon:eigenwerk}})</em></li> <li>10 jun 2004 13:53 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SileneDioica-CloseUp2-hr.jpg|SileneDioica-CloseUp2-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse poort, &#123;&#123;sjabloon:eigenwerk}})</em></li> <li>10 jun 2004 13:53 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SileneDioica-CloseUp2-hr1.jpg|SileneDioica-CloseUp2-hr1.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse poort, &#123;&#123;sjabloon:eigenwerk}})</em></li> <li>10 jun 2004 13:52 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SileneDioica-plant-hr.jpg|SileneDioica-plant-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse poort, &#123;&#123;sjabloon:eigenwerk}})</em></li> <li>10 jun 2004 13:51 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SileneDioica-overz-hr.jpg|SileneDioica-overz-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse poort, &#123;&#123;sjabloon:eigenwerk}})</em></li> <li>10 jun 2004 13:43 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Achterjk.jpg|Achterjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>10 jun 2004 10:24 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Suikermais_kiemplant_tekening.jpg|Suikermais_kiemplant_tekening.jpg]]" <em>(zelfgemaakte foto van kiemplant van suikermais; verbeterde versie)</em></li> <li>10 jun 2004 10:17 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:ReunionKaart.png|ReunionKaart.png]]" <em>(Kaart Reunion van wiki-de (org CIA, GFDL))</em></li> <li>10 jun 2004 06:40 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Lucienne_BoyerAlbum.gif|Lucienne_BoyerAlbum.gif]]" <em>(Lucienne Boyer, vanaf Engelse wikipedia, &#91;&#91;en:Image: Lucienne BoyerAlbum.gif]])</em></li> <li>10 jun 2004 06:38 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Lucienne_BoyerAlbum.gif|Lucienne_BoyerAlbum.gif]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Album - Lucienne Boyer &#91;&#91;en:Image: Lucienne BoyerAlbum.gif]])</em></li> <li>10 jun 2004 06:11 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:TammeKastanje1.JPG|TammeKastanje1.JPG]]" <em>(Eigen foto)</em></li> <li>10 jun 2004 06:11 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:TammeKastanje2.JPG|TammeKastanje2.JPG]]" <em>(Eigen foto)</em></li> <li>10 jun 2004 05:15 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Suikermais_kiemplant_tekening.jpg|Suikermais_kiemplant_tekening.jpg]]" <em>(zelfgemaakte foto met bijschriften van kiemplant suikermais half juni)</em></li> <li>9 jun 2004 21:26 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:MonumentMaximiliaan.gif|MonumentMaximiliaan.gif]]" <em>(Monument voor keizer Maximiliaan van Mexico te Triëst (Canadian Illustrated News, Vol. XI, No. 25, Page 388. Reproduced from the National Library of Canada&#39;s website Images in the News: http&#58;//www.collectionscanada.ca/cin/index-e.html&quot; (vrij te gebruiken mits met deze bronvermelding))</em></li> <li>9 jun 2004 20:44 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:VictorEmanuelBerlijn.gif|VictorEmanuelBerlijn.gif]]" <em>(Victor Emanuel II inspecteert de wacht in Berlijn (Canadian Illustrated News, Vol. VIII, No. 20, Page 316. Reproduced from the National Library of Canada&#39;s website Images in the News: http&#58;//www.collectionscanada.ca/cin/index-e.html&quot; (vrij te gebruiken mits met deze bronvermelding))</em></li> <li>9 jun 2004 20:26 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Apenbomen_mei_2004.jpg|Apenbomen_mei_2004.jpg]]" <em>(Foto door Fruggo, vrijgegeven onder GNU-FDL.)</em></li> <li>9 jun 2004 20:19 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:VIctorEmanuelFransJozef.gif|VIctorEmanuelFransJozef.gif]]" <em>(Victor Emanuel II wordt verwelkomd door keizer Frans Jozef op het station van Wenen (&quot;Canadian Illustrated News, Vol. VIII, No. 18, Page 283. Reproduced from the National Library of Canada&#39;s website Images in the News: Canadian Illustrated News.&quot; - http&#58;//www.collectionscanada.ca - vrij te gebruiken mits met deze bronvermelding))</em></li> <li>9 jun 2004 20:01 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Nijlpaard2_mei_2004.jpg|Nijlpaard2_mei_2004.jpg]]" <em>(Foto gemaakt door Fruggo in het Noorder Dierenpark Emmen, vrijgegeven onder GNU-FDL.)</em></li> <li>9 jun 2004 20:00 [[Gebruiker:G.J. Snoek|G.J. Snoek]] heeft ge-upload: "[[:Afbeelding:Beugel.png|Beugel.png]]" <em>(eigen foto van een orthese/beugel)</em></li> <li>9 jun 2004 19:59 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Nijlpaard_mei_2004.jpg|Nijlpaard_mei_2004.jpg]]" <em>(Foto gemaakt door Fruggo in het Noorder Dierenpark Emmen, vrijgegeven onder GNU-FDL.)</em></li> <li>9 jun 2004 19:58 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Midwolde_kerk_mei_2004.jpg|Midwolde_kerk_mei_2004.jpg]]" <em>(Foto gemaakt door Fruggo, vrijgegeven onder GNU-FDL.)</em></li> <li>9 jun 2004 19:50 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Maraboe_mei_2004.jpg|Maraboe_mei_2004.jpg]]" <em>(Foto gemaakt door Fruggo in Noorder Dierenpark Emmen, vrijgegeven onder GNU-FDL.)</em></li> <li>9 jun 2004 19:47 [[Gebruiker:Koenb|Koenb]] heeft ge-upload: "[[:Afbeelding:Esdoorn-bladeren.jpg|Esdoorn-bladeren.jpg]]" <em>(Esdoornbladeren in mei; foto genomen door KoenB in 2004 en ter beschikking gesteld onder GPL)</em></li> <li>9 jun 2004 19:45 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Luchtballon_mei_2004.jpg|Luchtballon_mei_2004.jpg]]" <em>(Foto gemaakt door Fruggo, vrijgegeven onder GNU-FDL.)</em></li> <li>9 jun 2004 19:38 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Colobusapen_mei_2004.jpg|Colobusapen_mei_2004.jpg]]" <em>(Foto gemaakt door Fruggo in Noorder Dierenpark Emmen, vrijgegeven onder GNU-FDL)</em></li> <li>9 jun 2004 19:31 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Apebroodbomen_oftewel_Baobabs_mei_2004.jpg|Apebroodbomen_oftewel_Baobabs_mei_2004.jpg]]" <em>(Foto gemaakt door Fruggo, vrijgegeven onder GNU-FDL)</em></li> <li>9 jun 2004 19:31 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:A7_afslag_Leek_mei_2004.jpg|A7_afslag_Leek_mei_2004.jpg]]" <em>(Foto gemaakt door Fruggo, vrijgegeven onder GNU-FDL.)</em></li> <li>9 jun 2004 17:00 [[Gebruiker:Bart|Bart]] heeft ge-upload: "[[:Afbeelding:OpenOffice.org.png|OpenOffice.org.png]]" <em>(engelse wikipedia)</em></li> <li>9 jun 2004 16:17 [[Gebruiker:Bart|Bart]] heeft ge-upload: "[[:Afbeelding:Ss4.jpg|Ss4.jpg]]" <em>(engelse wikipedia)</em></li> <li>9 jun 2004 11:10 [[Gebruiker:Bart|Bart]] heeft ge-upload: "[[:Afbeelding:Header-fedora_logo.png|Header-fedora_logo.png]]" <em>(website fedora)</em></li> <li>9 jun 2004 10:54 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Clementv.gif|Clementv.gif]]" <em>(En: wikipedia)</em></li> <li>9 jun 2004 06:29 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Lausanne.jpg|Lausanne.jpg]]" <em>(Van de:)</em></li> <li>9 jun 2004 05:31 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Ostrich140.jpg|Ostrich140.jpg]]" <em>(En: wikipedia)</em></li> <li>8 jun 2004 22:29 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Schwerin_locatie.png|Schwerin_locatie.png]]" <em>(Van de:)</em></li> <li>8 jun 2004 22:29 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Schwerin_schild.jpg|Schwerin_schild.jpg]]" <em>(Van de:)</em></li> <li>8 jun 2004 21:34 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Walstro.jpg|Walstro.jpg]]" <em>(Liggend walstro bosweg juni 2004 eigen foto)</em></li> <li>8 jun 2004 20:32 [[Gebruiker:Koenb|Koenb]] heeft ge-upload: "[[:Afbeelding:Sifon.png|Sifon.png]]" <em>(Gedeeltelijke doorsnede van een schematisch getekend wastafelsifon; door koenb beschikbaar gesteld onder GPL)</em></li> <li>8 jun 2004 19:48 [[Gebruiker:Bart|Bart]] heeft ge-upload: "[[:Afbeelding:Redhat_logo.png|Redhat_logo.png]]" <em>(engelse wiki)</em></li> <li>8 jun 2004 17:43 [[Gebruiker:Bart|Bart]] heeft ge-upload: "[[:Afbeelding:MDKlinux.jpg|MDKlinux.jpg]]" <em>(website mandrakelinux)</em></li> <li>8 jun 2004 17:38 [[Gebruiker:Bart|Bart]] heeft ge-upload: "[[:Afbeelding:MDKlinux.jpg|MDKlinux.jpg]]" <em>(website mandrakelinux)</em></li> <li>8 jun 2004 17:19 [[Gebruiker:Bart|Bart]] heeft ge-upload: "[[:Afbeelding:Slogan.jpg|Slogan.jpg]]" <em>(website linspire)</em></li> <li>8 jun 2004 16:15 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:OphrysApifera-plant-hr.jpg|OphrysApifera-plant-hr.jpg]]" <em>(Bedrijventerrein Goudsepoort in Gouda, &#123;&#123;sjabloon:eigenwerk}})</em></li> <li>8 jun 2004 16:14 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:OphrysApifera-CloseUp-hr.jpg|OphrysApifera-CloseUp-hr.jpg]]" <em>(Bedrijventerrein Goudsepoort in Gouda, &#123;&#123;sjabloon:eigenwerk}})</em></li> <li>8 jun 2004 16:12 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:OphrysApifera-bloem-hr.jpg|OphrysApifera-bloem-hr.jpg]]" <em>(Bedrijventerrein Goudsepoort in Gouda, &#123;&#123;sjabloon:eigenwerk}})</em></li> <li>8 jun 2004 16:08 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LychnisFlos-cuculi-overz-hr.jpg|LychnisFlos-cuculi-overz-hr.jpg]]" <em>(Bedrijventerrein Goudsepoort in Gouda, &#123;&#123;sjabloon:eigenwerk}})</em></li> <li>8 jun 2004 16:06 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LychnisFlos-cuculi-CloseUp-hr.jpg|LychnisFlos-cuculi-CloseUp-hr.jpg]]" <em>(Bedrijventerrein Goudsepoort in Gouda, &#123;&#123;sjabloon:eigenwerk}})</em></li> <li>8 jun 2004 14:19 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Zonnestelsel_108.540au.png|Zonnestelsel_108.540au.png]]" <em>(Vertaald, gekwantiseert op 64 kleuren)</em></li> <li>8 jun 2004 14:19 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Zonnestelsel_10.347au.png|Zonnestelsel_10.347au.png]]" <em>(Vertaald, gekwantiseert op 64 kleuren)</em></li> <li>8 jun 2004 14:20 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Pixeltent.jpg|Pixeltent.jpg]]" <em>(Tent. Auteur: &#91;http&#58;//www.sxc.hu/browse.phtml?f=profile&amp;l=pixelstar Laura Kennedy]. Vrij van rechten.)</em></li> <li>8 jun 2004 13:59 [[Gebruiker:Stijlloos|Stijlloos]] heeft ge-upload: "[[:Afbeelding:George-orwell.jpg|George-orwell.jpg]]" <em>(van de engelse wiki)</em></li> <li>8 jun 2004 12:52 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Brandnetel_kleine_closeup.jpg|Brandnetel_kleine_closeup.jpg]]" <em>(zelfgemaakt foto van bloeiwijze van de Kleine brandnetel)</em></li> <li>8 jun 2004 12:06 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Brandnetel_klein_plant.jpg|Brandnetel_klein_plant.jpg]]" <em>(zelfgemaakte foto van Kleine brandnetel eind mei in kas)</em></li> <li>8 jun 2004 12:05 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Brandnetel_Grote.jpg|Brandnetel_Grote.jpg]]" <em>(zelfgemaakte foto van brandnetel begin juni)</em></li> <li>8 jun 2004 11:46 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Premajk.jpg|Premajk.jpg]]" <em>(Fritz8 - print)</em></li> <li>8 jun 2004 10:14 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Hefbrug_Zuidkade.jpg|Hefbrug_Zuidkade.jpg]]" <em>(Hefbrug Waddinxveen vanaf de Zuidkade, eigen foto)</em></li> <li>8 jun 2004 10:01 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Dreigende_lucht.jpg|Dreigende_lucht.jpg]]" <em>(buienwolk, eigen foto)</em></li> <li>8 jun 2004 09:56 [[Gebruiker:Bontenbal|Bontenbal]] heeft ge-upload: "[[:Afbeelding:053004_Iyad_Allawi.jpg|053004_Iyad_Allawi.jpg]]" <em>(van Engelse wiki)</em></li> <li>8 jun 2004 09:27 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Veldbeemdgras.jpg|Veldbeemdgras.jpg]]" <em>(zelfgemaakte foto van veldbeemdgras)</em></li> <li>8 jun 2004 08:53 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Mais_halmheffer.jpg|Mais_halmheffer.jpg]]" <em>(zelfgemaakte foto van kiemplant van mais)</em></li> <li>8 jun 2004 08:50 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Stolonen_Aardappel.jpg|Stolonen_Aardappel.jpg]]" <em>(zelfgemaakt foto van stolonen bij aardappel)</em></li> <li>8 jun 2004 08:50 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Stolonen_Aardappel.jpg|Stolonen_Aardappel.jpg]]" <em>(zelfgemaakt foto van stolenen bij aardappel)</em></li> <li>8 jun 2004 08:46 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Stokslaboon.jpg|Stokslaboon.jpg]]" <em>(zelfgemaakte foto van stokslaboon rechtswindend)</em></li> <li>8 jun 2004 08:44 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Hop.jpg|Hop.jpg]]" <em>(zelfgemaakte foto van hoprank linksdraaiend)</em></li> <li>8 jun 2004 08:21 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Demer1.JPG|Demer1.JPG]]" <em>(Demer - eigen foto)</em></li> <li>8 jun 2004 08:18 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Stengel_Aardappel_dwarsdoorsnede.jpg|Stengel_Aardappel_dwarsdoorsnede.jpg]]" <em>(zelfgemaakte fot van dwarsdoorgesenden aardappelstengel)</em></li> <li>8 jun 2004 08:16 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Braam_gestekelde_stengel.jpg|Braam_gestekelde_stengel.jpg]]" <em>(zelfgemaakte foto van stengel van braam ras Himalaya)</em></li> <li>8 jun 2004 08:10 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Braam_gestekelde_stengel.jpg|Braam_gestekelde_stengel.jpg]]" <em>(zelfgemaakte foto van stengel van braam ras Himalaya)</em></li> <li>8 jun 2004 08:05 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Zwarte_bonenluis_Tuinboon.jpg|Zwarte_bonenluis_Tuinboon.jpg]]" <em>(zelfgemaakte foto van tuinboon met zwarte bonenluis begin juni)</em></li> <li>8 jun 2004 07:30 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Poortgebouw.JPG|Poortgebouw.JPG]]" <em>(Poortgebouw - eigen foto)</em></li> <li>8 jun 2004 07:15 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Herkenrodeabdij1.jpg|Herkenrodeabdij1.jpg]]" <em>(Herkenrodeabdij - eigen foto)</em></li> <li>8 jun 2004 06:58 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Cirrus.jpg|Cirrus.jpg]]" <em>(Cirrus juni 2004 eigen foto)</em></li> <li>8 jun 2004 06:58 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Herkenrodeabdij.jpg|Herkenrodeabdij.jpg]]" <em>(Abdij van Herkenrode - eigen foto)</em></li> <li>8 jun 2004 06:34 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Protoplanetaire_schijf.jpg|Protoplanetaire_schijf.jpg]]" <em>(Van de:)</em></li> <li>8 jun 2004 05:23 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Transit_diagram_angles.png|Transit_diagram_angles.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Diagram showing how &#91;&#91;transit of Venus&#124;transits of Venus]] occur and why they don&#39;t occur frequently. Drawn by &#91;&#91;Theresa Knott]]. &#123;&#123;GFDL}} &#91;&#91;en:Image:Transit diagram angles.png]])</em></li> <li>8 jun 2004 05:23 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:TV2004-Sun1b.gif|TV2004-Sun1b.gif]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;PD-USGov}} Source: http&#58;//sunearth.gsfc.nasa.gov/eclipse/transit/TV2004/TV2004-Sun1b.GIF See: http&#58;//sunearth.gsfc.nasa.gov/eclipse/transit/TV2004.html &#91;&#91;en:Image:TV2004-Sun1b.gif]])</em></li> <li>8 jun 2004 05:21 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:TV2004-Map1b.gif|TV2004-Map1b.gif]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;PD-USGov}} Visibility of the &#91;&#91;June 8]] &#91;&#91;2004]] &#91;&#91;transit of Venus]]. http&#58;//sunearth.gsfc.nasa.gov/eclipse/transit/TV2004.html &#91;&#91;en:Image:TV2004-Map1b.gif]])</em></li> <li>6 jun 2004 16:00 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Benizelos.jpg|Benizelos.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Photo of Eleftherios Benizelos (former PM of Greece) &#91;&#91;en:Image:Benizelos.jpg]])</em></li> <li>6 jun 2004 15:59 [[Gebruiker:Walter Holden-Belmont|Walter Holden-Belmont]] heeft ge-upload: "[[:Afbeelding:Niger_departementen.png|Niger_departementen.png]]" <em>(Kaart departementen van Niger - gemaakt door WHB)</em></li> <li>6 jun 2004 14:17 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Valve.radio.arp.600pix.jpg|Valve.radio.arp.600pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: A two-valve home-made radio from 1958. The leads connect to the low-voltage filament battery and the high-voltage anode battery.&lt;br&gt; Taken by Adrian Pingstone in 1958, prepared for Wikipedia in 2003, and released to the public domain. &#91;&#91;en:Image:valve.radio.arp.600pix.jpg]])</em></li> <li>6 jun 2004 14:11 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:EKG2.png|EKG2.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: EKG 2: time-strip &#123;&#123;GFDL}} My heart, my leads applied to my body with my hands, scanned on my scanner and converted to PNG on my computer. So any copyright that there may be in an EKG is mine, and I release it under GFDL. &#91;&#91;en:Image:EKG2.png]] EKG2.png)</em></li> <li>6 jun 2004 14:03 [[Gebruiker:Jan Lapère|Jan Lapère]] heeft ge-upload: "[[:Afbeelding:Teylers.jpg|Teylers.jpg]]" <em>(Ingang Teylers Museum in Haarlem. Foto Jan Lapère)</em></li> <li>6 jun 2004 14:00 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Mme.chiang_e.roosevelt.jpg|Mme.chiang_e.roosevelt.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Eleanor Roosevelt and Mme Chiang Kai,shek, 02/22/1943&lt;br&gt;&lt;br&gt;&#123;&#123;msg:PD}} (Source: &#91;http&#58;//www.fdrlibrary.marist.edu/fdrpho50.html]) &#91;&#91;en:Image:Mme.chiang e.roosevelt.jpg]])</em></li> <li>6 jun 2004 13:58 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Eleanor_Roosevelt.gif|Eleanor_Roosevelt.gif]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: public domain image from loc.gov &#91;&#91;en:Image:Eleanor Roosevelt.gif]])</em></li> <li>6 jun 2004 13:55 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:NEO_elbrus_big.jpg|NEO_elbrus_big.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#39;&#39;&#39;Credit(s):&#39;&#39;&#39; &#91;http&#58;//glcf.umiacs.umd.edu/index.shtml University of Maryland Global Land Cover Facility] &#39;&#39;&#39;Source:&#39;&#39;&#39; http&#58;//earthobservatory.nasa.gov/Newsroom/NewImages/images.php3?img_id=15340 &#39;&#39;”The purpose of NASA&#39;s Earth Observatory is to provide a freely-accessible publication on the Internet where the public can obtain new satellite imagery and scientific information about our home planet. The focus is on Earth&#39;s climate and environmental change. In particular, we hope our site is useful to public media and educators. Any and all materials published on the Earth Observatory are freely available for re-publication or re-use, except where copyright is indicated. We ask that NASA&#39;s Earth Observatory be given credit for its original materials.”&#39;&#39; &#91;&#91;en:Image:NEO elbrus big.jpg]])</em></li> <li>6 jun 2004 09:04 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Geetjk.jpg|Geetjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>6 jun 2004 07:35 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Jupiter_gallileische_manen_klein.gif|Jupiter_gallileische_manen_klein.gif]]" <em>(Wonder kwantisatieprogramma gevonden, hogere kwaliteit, betere compressie)</em></li> <li>5 jun 2004 23:46 [[Gebruiker:CE|CE]] heeft ge-upload: "[[:Afbeelding:CaponeMugShot.jpg|CaponeMugShot.jpg]]" <em>(engelse wiki, waarbij staat public domain)</em></li> <li>5 jun 2004 23:45 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Rbhayes.jpe|Rbhayes.jpe]]" <em>(Van het Amerikaanse Library of Congress&lt;br&gt;vie Wikipedia.en&lt;br&gt;Aangenomen licentie: &#123;&#123;PD}})</em></li> <li>5 jun 2004 23:18 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Margaretha_van_Schotland.jpg|Margaretha_van_Schotland.jpg]]" <em>(van engelse pagina )</em></li> <li>5 jun 2004 20:18 [[Gebruiker:Ptennekes|Ptennekes]] heeft ge-upload: "[[:Afbeelding:Ikzeidegek.jpg|Ikzeidegek.jpg]]" <em>(Foto van mezelf)</em></li> <li>5 jun 2004 18:30 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Aral06.jpg|Aral06.jpg]]" <em>(Het (voormalige) Aralmeer: schepen blijven achter op het droge.&lt;p&gt;Bron: &#91;http&#58;//www.uzland.uz/aral/ UzLand]. Overname toegestaan met bronvermelding.)</em></li> <li>5 jun 2004 16:16 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:GeulhemmerMolen2.JPG|GeulhemmerMolen2.JPG]]" <em>(eigen foto)</em></li> <li>5 jun 2004 16:13 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:GeulhemmerMolen.JPG|GeulhemmerMolen.JPG]]" <em>(eigen foto)</em></li> <li>5 jun 2004 16:11 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Rotswoning2.JPG|Rotswoning2.JPG]]" <em>(eigen foto)</em></li> <li>5 jun 2004 16:10 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Franciscus.jpg|Franciscus.jpg]]" <em>(van Franse pagina: (&quot;La vision de saint François d&#39;Assise&quot; (Luis Tristan, musée du Louvre)) domaine public)</em></li> <li>5 jun 2004 16:09 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Rotswoning1.JPG|Rotswoning1.JPG]]" <em>(eigen foto)</em></li> <li>5 jun 2004 15:54 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Hitlermusso.jpg|Hitlermusso.jpg]]" <em>(Hitler en Mussolini (van Engelse Wiki))</em></li> <li>5 jun 2004 15:27 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:HaileSelassie.jpg|HaileSelassie.jpg]]" <em>(Haile Selassie (van Engelse Wiki))</em></li> <li>5 jun 2004 15:10 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Petrarca.jpg|Petrarca.jpg]]" <em>(van italiaanse pagina: Immagine del poeta italiano Francesco Petrarca - in flip orizzontale)</em></li> <li>5 jun 2004 14:47 [[Gebruiker:Tedesco|Tedesco]] heeft ge-upload: "[[:Afbeelding:Ascona.lago.jpg|Ascona.lago.jpg]]" <em>(Ascona - Lago Maggiore)</em></li> <li>5 jun 2004 14:44 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:VictorEmanuelIII.jpg|VictorEmanuelIII.jpg]]" <em>(Victor Emanuel III van Italië (van Engelse Wiki))</em></li> <li>5 jun 2004 11:35 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:VlagAmersfoort.png|VlagAmersfoort.png]]" <em>(Eigen afbeelding (&#91;&#91;Gebuiker:Mtcv]]))</em></li> <li>5 jun 2004 07:36 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Chicxulub_inslag.jpg|Chicxulub_inslag.jpg]]" <em>(Artiestenindruk van de Chixculub-inslag)</em></li> <li>5 jun 2004 03:44 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:NormandyCover.jpg|NormandyCover.jpg]]" <em>( (Troops taking cover on Normandy beach (public domain from &#91;http&#58;//federalvoice.dscc.dla.mil/federalvoice/020605/dday.html])) )</em></li> <li>5 jun 2004 03:37 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:D-day_allied_assault_routes.jpg|D-day_allied_assault_routes.jpg]]" <em>(uit engelse wiki)</em></li> <li>5 jun 2004 03:36 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:D-day_allied_assault_routes.jpg|D-day_allied_assault_routes.jpg]]" <em>(uit engelse wiki)</em></li> <li>4 jun 2004 23:46 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:R_heinlein.jpg|R_heinlein.jpg]]" <em>(van wikipedia-EN)</em></li> <li>4 jun 2004 18:46 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Ruis-bruin-2s.wav|Ruis-bruin-2s.wav]]" <em>(bruine ruis gegenereerd in cooledit)</em></li> <li>4 jun 2004 18:31 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Ruis-rose-2s.wav|Ruis-rose-2s.wav]]" <em>(rose ruis gegenereerd in cooledit)</em></li> <li>4 jun 2004 18:29 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Ruis-wit-2s.wav|Ruis-wit-2s.wav]]" <em>(gegenereerd met cooledit)</em></li> <li>4 jun 2004 18:17 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Simon_Wiesenthal_Center-logo.gif|Simon_Wiesenthal_Center-logo.gif]]" <em>(Ik vraag toestemming)</em></li> <li>4 jun 2004 18:15 [[Gebruiker:CE|CE]] heeft ge-upload: "[[:Afbeelding:Bonte_kraai.jpg|Bonte_kraai.jpg]]" <em>(van duitse wiki)</em></li> <li>4 jun 2004 18:06 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Gebakkenaardappels.jpg|Gebakkenaardappels.jpg]]" <em>(Aardappels bij &#91;&#91;Gebruiker:Känsterle&#124;Känsterle]] in de pan. Vrij te gebruiken ;))</em></li> <li>4 jun 2004 17:42 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:PaleisSchwerin.gif|PaleisSchwerin.gif]]" <em>(Paleis van de groothertog te Schwerin - &quot;Canadian Illustrated News, Vol. IV, No. 1, Page 5. Reproduced from the National Library of Canada&#39;s website Images in the News: Canadian Illustrated News.&quot; (http&#58;//www.collectionscanada.ca) - vrij te gebruiken mits met voornoemde bronvermelding)</em></li> <li>4 jun 2004 16:33 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:NormandyLST.jpg|NormandyLST.jpg]]" <em>(uit engelse wiki)</em></li> <li>4 jun 2004 16:32 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Eisenhower_d-day.jpg|Eisenhower_d-day.jpg]]" <em>(uit engelse wiki)</em></li> <li>4 jun 2004 15:50 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:KarelAlbert.jpg|KarelAlbert.jpg]]" <em>(Karel Albert van Sardinië - schilderij uit de jaren 1830-1840 dus geen copyright meer)</em></li> <li>4 jun 2004 09:19 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Deinonychus.jpeg|Deinonychus.jpeg]]" <em>(correcte afbeelding van dezelfde bron)</em></li> <li>4 jun 2004 09:03 [[Gebruiker:Bontenbal|Bontenbal]] heeft ge-upload: "[[:Afbeelding:Tenet-th.jpg|Tenet-th.jpg]]" <em>(Engelse Wikipedia)</em></li> <li>3 jun 2004 23:12 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Chicxulub_krater.jpg|Chicxulub_krater.jpg]]" <em>(Afbeelding PIA03381 uit NASA/JPL planetary photojournal)</em></li> <li>3 jun 2004 22:50 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Deinonychus.jpeg|Deinonychus.jpeg]]" <em>(Deinonychus. Bron: Mike O&#39;Neill: Reptiles rule! Bureau of Land Management, http&#58;//www.blm.gov/education/00_resources/articles/paleo/reptilesrule.html. &quot;Information presented on this website is public information and may be distributed or copied. Use of appropriate byline/photo/image credit is requested.&quot; &#123;&#123;PD}})</em></li> <li>3 jun 2004 22:12 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Two-Skydiving.jpg|Two-Skydiving.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Picture of a friend of mine skydiving (wearing pink), strapped to her instructor (wearing black). Released under the GFDL with her permission. &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:Two-Skydiving.jpg]])</em></li> <li>3 jun 2004 22:07 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:NASA-apollo-15-splashdown.jpg|NASA-apollo-15-splashdown.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Apollo 15 spashdown; from NASA http&#58;//grin.hq.nasa.gov/ABSTRACTS/GPN-2000-001121.html &#123;&#123;msg:PD}} &#91;&#91;en:Image:NASA-apollo-15-splashdown.jpg]])</em></li> <li>3 jun 2004 22:06 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Gleitschirm.jpg|Gleitschirm.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Tandemsprung an einem Gleitschirm, Flugplatz Windelsbleiche, Bielefeld Quelle: Eigene Aufnahme von &#91;&#91;Benutzer:Fab]], Canon Digicam, 2 MP&lt;br&gt; Aufnahmedatum: 23.08.2003 &#91;&#91;de:Bild:Gleitschirm.jpg]])</em></li> <li>3 jun 2004 21:47 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Bungeejump_vlak_voor_losmaken_Scheveningen_31_mei_2004.JPG|Bungeejump_vlak_voor_losmaken_Scheveningen_31_mei_2004.JPG]]" <em>(Bungeejumper vlak voor het losmaken, eigen foto)</em></li> <li>3 jun 2004 21:37 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Bungeejump_met_gestrekt_koord_Scheveningen_31_mei_2004.JPG|Bungeejump_met_gestrekt_koord_Scheveningen_31_mei_2004.JPG]]" <em>(Bungee jump aan eind van de eerste val, met gestrekt koord, eigen foto)</em></li> <li>3 jun 2004 21:35 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Bungeejump_begin_Scheveningen_31_mei_2004.JPG|Bungeejump_begin_Scheveningen_31_mei_2004.JPG]]" <em>(Begin van een bungee jump, eigen foto)</em></li> <li>3 jun 2004 21:33 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Bungee_spring_toren_Pier_van_Scheveningen_31_mei_2004.JPG|Bungee_spring_toren_Pier_van_Scheveningen_31_mei_2004.JPG]]" <em>(Bungee spring toren Pier van Scheveningen 31 mei 2004, eigen foto)</em></li> <li>3 jun 2004 19:57 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Example2.png|Example2.png]]" <em>(eigen illustratie, enkel voor een overlegpagina)</em></li> <li>3 jun 2004 16:38 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Louis_XVI.PNG|Louis_XVI.PNG]]" <em>(PD tekening van UT Library, ingekleurd naar bestaand schilderij)</em></li> <li>3 jun 2004 14:22 [[Gebruiker:Herr Klugbeisser|Herr Klugbeisser]] heeft ge-upload: "[[:Afbeelding:Belem_in_Brazil.png|Belem_in_Brazil.png]]" <em>(Ligging van Belém)</em></li> <li>3 jun 2004 14:21 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Afrika.jpg|Kaart_Afrika.jpg]]" <em>(Ondertekening wat gekrompen)</em></li> <li>3 jun 2004 12:04 [[Gebruiker:Reinouts|Reinouts]] heeft ge-upload: "[[:Afbeelding:Kb-buitenhofdebat-close.jpeg|Kb-buitenhofdebat-close.jpeg]]" <em>(Kathalijne Buitenweg tijdens Buitenhof-debat. Webmaster groenlinks.nl heeft toestemming gegeven voor hergebruik mits voorzien van bronvermelding.)</em></li> <li>3 jun 2004 11:55 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:LekaAlbanie.jpg|LekaAlbanie.jpg]]" <em>(Krooprins Leka van Albanië (van Engelse Wiki))</em></li> <li>3 jun 2004 11:38 [[Gebruiker:Herr Klugbeisser|Herr Klugbeisser]] heeft ge-upload: "[[:Afbeelding:Cuiaba_in_Brazil.png|Cuiaba_in_Brazil.png]]" <em>(Ligging van Cuiabá)</em></li> <li>3 jun 2004 09:46 [[Gebruiker:Bontenbal|Bontenbal]] heeft ge-upload: "[[:Afbeelding:Al-Yawar.jpg|Al-Yawar.jpg]]" <em>(foto van Engelse Wikip.)</em></li> <li>2 jun 2004 22:29 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Alitalia.a321-112.i-bixd.250pix.jpg|Alitalia.a321-112.i-bixd.250pix.jpg]]" <em>(Grotere versie)</em></li> <li>2 jun 2004 20:32 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Victoria_Eugenie.jpg|Victoria_Eugenie.jpg]]" <em>(Victoria Eugenie van Battenberg (van Engelse Wiki))</em></li> <li>2 jun 2004 19:58 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:AlfonsXIII.jpg|AlfonsXIII.jpg]]" <em>(Alfonso XIII van Spanje (van Engelse Wiki))</em></li> <li>2 jun 2004 16:36 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:MalvaSylvestris-plant-hr.jpg|MalvaSylvestris-plant-hr.jpg]]" <em>(foto denhaag, leyweg, mei 2004, &#123;&#123;eigenwerk}})</em></li> <li>2 jun 2004 16:35 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:MalvaSylvestris-CloseUp-hr.jpg|MalvaSylvestris-CloseUp-hr.jpg]]" <em>(foto denhaag, leyweg, mei 2004, &#123;&#123;eigenwerk}})</em></li> <li>2 jun 2004 16:35 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:MalvaSylvestris-blad-hr.jpg|MalvaSylvestris-blad-hr.jpg]]" <em>(foto denhaag, leyweg, mei 2004, &#123;&#123;eigenwerk}})</em></li> <li>2 jun 2004 15:57 [[Gebruiker:Walter Holden-Belmont|Walter Holden-Belmont]] heeft ge-upload: "[[:Afbeelding:Tsjaad_departementen.png|Tsjaad_departementen.png]]" <em>(kaart van de nieuwe departementen van Tsjaad)</em></li> <li>2 jun 2004 13:11 [[Gebruiker:Herr Klugbeisser|Herr Klugbeisser]] heeft ge-upload: "[[:Afbeelding:Maringa_in_Brazil.png|Maringa_in_Brazil.png]]" <em>(Ligging van Maringá)</em></li> <li>2 jun 2004 11:32 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:F22_Raptor_large.jpg|F22_Raptor_large.jpg]]" <em>(&#91;&#91;Image:F22 Raptor large.jpg]] Large version of F/A-22 Raptor, from af.mil)</em></li> <li>2 jun 2004 08:06 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Tulp_drietallig.jpg|Tulp_drietallig.jpg]]" <em>(zelfgemaakte foto van tulp)</em></li> <li>2 jun 2004 08:01 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Bloemdiagram_tulp1.jpg|Bloemdiagram_tulp1.jpg]]" <em>(zelfgemaakte tekening; bloemdiagram van tulp)</em></li> <li>1 jun 2004 23:08 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Rickenbacker.jpg|Rickenbacker.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Eddie RIckenbacker, from http&#58;//raven.cc.ukans.edu/~kansite/ww_one/photos/greatwar.htm &#91;&#91;en:Image:rickenbacker.jpg]])</em></li> <li>1 jun 2004 23:04 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Schewardnadse.jpg|Schewardnadse.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Eduard Schewardnadse (mit Jacques Chirac, Bildausschnitt) &#61;= Quelle == Französisches Außenministerium, Abteilung Fotografien ministère des Affaires étrangères/Service photographique &#91;http&#58;//www.france.diplomatie.fr/photos/diplo/Asie/AsiN25.html#photo] &#61;= Lizenz == &#39;&#39;Les &quot;Instantanés diplomatiques&quot; sont libres de droits et peuvent être reproduits avec mention obligatoire &quot;ministère des Affaires étrangères/Service photographique&quot;. Pour tout usage exclusivement professionnel, des duplicatas sont disponibles sur demande auprès du service photographique du ministère des Affaires étrangères.&#39;&#39; (&#39;&#39;Die &quot;Schnapsschüsse diplomatischer Begegnungen&quot; sind copyrightfrei, sie dürfen mit dem Vermerk &quot;Französisches Außenministerium, Abteilung Fotografien&quot; reproduziert werden. Für rein kommerzielle Verwendungszwecke sind auf Anfrage bei der Abteilung Fotografien im französischen Außenministerium Kopien erhältlich.&#39;&#39;) &#61;= Beschreibung == &#39;&#39;Visite officielle de M. Édouard Chevardnadze, président de la République de Géorgie : Accueil par M. Jacques Chirac, président de la République française. 3 février 1997.&#39;&#39; &#91;&#91;de:Bild:Schewardnadse.jpg]])</em></li> <li>1 jun 2004 23:04 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Shewa.jpg|Shewa.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: shewarnnandze from http&#58;//www.batuminews.com/ge/index.php?ID=476 &#91;&#91;en:Image:Shewa.jpg]])</em></li> <li>1 jun 2004 22:56 [[Gebruiker:Gamekeeper|Gamekeeper]] heeft ge-upload: "[[:Afbeelding:Acetoneperoxide.gif|Acetoneperoxide.gif]]" <em>(vrij te gebruiken bestand )</em></li> <li>1 jun 2004 22:54 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Edsger_Dijkstra_large.jpg|Edsger_Dijkstra_large.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Larger version of the image of &#91;&#91;Edsger Dijkstra]]. Image courtesy of &#91;&#91;Brian Randell]], &#91;&#91;User:Nixdorf/Randell and McClure&#124;used by permission]]. &#91;&#91;en:Image:Edsger Dijkstra large.jpg]])</em></li> <li>1 jun 2004 22:10 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Afrika.jpg|Kaart_Afrika.jpg]]" <em>(Versie 4)</em></li> <li>1 jun 2004 21:34 [[Gebruiker:Ronald|Ronald]] heeft ge-upload: "[[:Afbeelding:Amsterdam-vogelvlucht-1544_kln.jpg|Amsterdam-vogelvlucht-1544_kln.jpg]]"</li> <li>1 jun 2004 21:31 [[Gebruiker:Ronald|Ronald]] heeft ge-upload: "[[:Afbeelding:Amsterdam-vogelvlucht-1544_grt.jpg|Amsterdam-vogelvlucht-1544_grt.jpg]]" <em>(maker is in de 16e eeuw overleden)</em></li> <li>1 jun 2004 20:41 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Eik.jpg|Eik.jpg]]" <em>(vrijstaande eik eigen foto)</em></li> <li>1 jun 2004 20:36 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Reigersbek-RIMG0035-kl.jpg|Reigersbek-RIMG0035-kl.jpg]]" <em>(test)</em></li> <li>1 jun 2004 20:36 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Paardebloemstreepzaad_blad.jpg|Paardebloemstreepzaad_blad.jpg]]" <em>(blad van Crepis vesicaria)</em></li> <li>1 jun 2004 20:34 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Paardebloemstreepzaad.jpg|Paardebloemstreepzaad.jpg]]" <em>(paardebloemstreepzaad juni eigen foto)</em></li> <li>1 jun 2004 20:24 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Rhodes0211.jpg|Rhodes0211.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#91;&#91;Colossus of Rhodes]] from &#39;&#39;The Book of Knowledge&#39;&#39;, The Grolier Society, 1911 &#91;&#91;en:Image:rhodes0211.jpg]] dus &#123;&#123;PD}} vanwege ouderdom)</em></li> <li>1 jun 2004 17:40 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Cumulus.jpg|Cumulus.jpg]]" <em>(cumuluswolken 1 juni eigen foto)</em></li> <li>1 jun 2004 17:03 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:KarelPortugalk.jpg|KarelPortugalk.jpg]]" <em>(Karel van Portugal - afbeelding ouder dan 70 jaar dus geen copyright - postcardman.net)</em></li> <li>1 jun 2004 16:59 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:KarelPortugal.jpg|KarelPortugal.jpg]]" <em>(Karel van Portugal - afbeelding ouder dan 70 jaar dus geen copyright - postcardman.net)</em></li> <li>1 jun 2004 16:59 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:KarelPortugal.jpg|KarelPortugal.jpg]]" <em>(Karel van Portugal - afbeelding ouder dan 70 jaar dus geen copyright)</em></li> <li>1 jun 2004 15:21 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:EmanuelIIPortugal.jpg|EmanuelIIPortugal.jpg]]" <em>(Emanuel II van Portugal (van Duitse Wiki))</em></li> <li>1 jun 2004 11:34 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Vaganjk.jpg|Vaganjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>1 jun 2004 07:34 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Tapetum_van_jonge_meeldraad.jpg|Tapetum_van_jonge_meeldraad.jpg]]" <em>(afbeelding overgenomen van Humboldt State University en aangevuld met Nederlandse benamingen)</em></li> <li>31 mei 2004 20:18 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:MaxJozef.jpg|MaxJozef.jpg]]" <em>(Maximiliaan I van Beieren (van Duitse Wiki))</em></li> <li>31 mei 2004 20:14 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Thomas_Jefferson.PNG|Thomas_Jefferson.PNG]]" <em>(PD tekening van UT Library, ingekleurd naar bestaand schilderij)</em></li> <li>31 mei 2004 18:40 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:IJssel_bij_Kampen_april04.jpg|IJssel_bij_Kampen_april04.jpg]]" <em>(Foto door Fruggo, mei 2004, vrijgegeven onder GNU-FDL)</em></li> <li>31 mei 2004 18:37 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Groningen_Diep_april04.jpg|Groningen_Diep_april04.jpg]]" <em>(Foto door Fruggo, april 2004, vrijgegeven onder GNU-FDL)</em></li> <li>31 mei 2004 18:26 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Groningen_Prinsentuin_april04.jpg|Groningen_Prinsentuin_april04.jpg]]" <em>(Foto door Fruggo, april 2004, vrijgegeven onder GNU-FDL)</em></li> <li>31 mei 2004 16:04 [[Gebruiker:Herr Klugbeisser|Herr Klugbeisser]] heeft ge-upload: "[[:Afbeelding:Belo_Horizonte_in_Brazil.png|Belo_Horizonte_in_Brazil.png]]" <em>(Ligging van Belo Horizonte)</em></li> <li>31 mei 2004 12:52 [[Gebruiker:Herr Klugbeisser|Herr Klugbeisser]] heeft ge-upload: "[[:Afbeelding:Boa_Vista_in_Brazil.png|Boa_Vista_in_Brazil.png]]" <em>(Ligging van Boa Vista)</em></li> <li>31 mei 2004 12:30 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Wapen2MexicaanseKeizerrijk.jpg|Wapen2MexicaanseKeizerrijk.jpg]]" <em>(Wapen van het Tweede Mexicaanse Keizerrijk (van Engelse Wiki))</em></li> <li>31 mei 2004 12:29 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:MaximiliaanMexico.JPG|MaximiliaanMexico.JPG]]" <em>(Keizer Maximiliaan van Mexico (van Engelse Wiki))</em></li> <li>31 mei 2004 10:37 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:JapanseOester.JPG|JapanseOester.JPG]]" <em>(Eigen foto)</em></li> <li>31 mei 2004 10:11 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Hogebeintum3.JPG|Hogebeintum3.JPG]]" <em>(Eigen foto)</em></li> <li>31 mei 2004 10:09 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Hogebeintum2.JPG|Hogebeintum2.JPG]]" <em>(Eigen foto)</em></li> <li>31 mei 2004 10:04 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Hogebeintum1.JPG|Hogebeintum1.JPG]]" <em>(Eigen foto)</em></li> <li>31 mei 2004 09:52 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Romanjvdk.jpg|Romanjvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>31 mei 2004 09:45 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Romanjk.jpg|Romanjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>31 mei 2004 09:39 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Romanjk.jpg|Romanjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>31 mei 2004 09:22 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:LakenvelderKoeien.JPG|LakenvelderKoeien.JPG]]" <em>(Eigen foto)</em></li> <li>31 mei 2004 09:20 [[Gebruiker:Herr Klugbeisser|Herr Klugbeisser]] heeft ge-upload: "[[:Afbeelding:Aracaju_in_Brazil.png|Aracaju_in_Brazil.png]]" <em>(Ligging van Aracaju)</em></li> <li>31 mei 2004 09:07 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Romanjk.jpg|Romanjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>31 mei 2004 08:56 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Groningen_Der_Aa-kerk_april04.jpg|Groningen_Der_Aa-kerk_april04.jpg]]" <em>(Foto door Fruggo, april 2004, vrijgegeven onder GNU-FDL)</em></li> <li>31 mei 2004 08:53 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Zonnestelsel.jpg|Zonnestelsel.jpg]]" <em>(Afbeelding PIA03153 uit NASA/JPL Planetary Photojournal)</em></li> <li>31 mei 2004 08:50 [[Gebruiker:Herr Klugbeisser|Herr Klugbeisser]] heeft ge-upload: "[[:Afbeelding:Pelotas_in_Brazil.png|Pelotas_in_Brazil.png]]" <em>(Ligging van Pelotas)</em></li> <li>31 mei 2004 08:37 [[Gebruiker:Herr Klugbeisser|Herr Klugbeisser]] heeft ge-upload: "[[:Afbeelding:Campo_Grande_in_Brazil.png|Campo_Grande_in_Brazil.png]]" <em>(Ligging van Campo Grande)</em></li> <li>31 mei 2004 07:36 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Arnhem_Nederrijn_Eusebiuskerk_april04.jpg|Arnhem_Nederrijn_Eusebiuskerk_april04.jpg]]" <em>(Foto door Fruggo, april 2004, vrijgegeven onder GNU/FDL)</em></li> <li>31 mei 2004 07:04 [[Gebruiker:Pierelint|Pierelint]] heeft ge-upload: "[[:Afbeelding:Cambium2.jpg|Cambium2.jpg]]" <em>(eigen werk)</em></li> <li>31 mei 2004 00:18 [[Gebruiker:Erik Zachte|Erik Zachte]] heeft ge-upload: "[[:Afbeelding:Composers.png|Composers.png]]" <em>(eigen EasyTimeline product (preview in engels, wordt straks online gerenderd))</em></li> <li>30 mei 2004 22:02 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Fb1kader.png|Fb1kader.png]]" <em>(Plaatje dat ik zelf maakte voor in de kroeg enkel)</em></li> <li>30 mei 2004 21:48 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Kaart_Griekenland_Chalkidiki.png|Kaart_Griekenland_Chalkidiki.png]]" <em>(Oorspronkelijk uit CIA Factbook; vertaald in Nederlands door Danielm; omgezet in PNG door BenTels, enkel Chalkidiki met rood gemarkeerd door mij)</em></li> <li>30 mei 2004 21:37 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Fast_Flying_Ferries.jpg|Fast_Flying_Ferries.jpg]]" <em>(iets lichter)</em></li> <li>30 mei 2004 21:20 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Fast_Flying_Ferries.jpg|Fast_Flying_Ferries.jpg]]" <em>(Draagvleugelboot te Amsterdam op weg naar Velsen, eigen foto, &#123;&#123;msg:PD}})</em></li> <li>30 mei 2004 21:18 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Planeetgroottes.jpg|Planeetgroottes.jpg]]" <em>(Vertaling afbeelding op website JPL)</em></li> <li>30 mei 2004 20:14 [[Gebruiker:Pierelint|Pierelint]] heeft ge-upload: "[[:Afbeelding:Cambium1.jpg|Cambium1.jpg]]" <em>(eigen werk)</em></li> <li>30 mei 2004 19:11 [[Gebruiker:Gamekeeper|Gamekeeper]] heeft ge-upload: "[[:Afbeelding:Goa.pls|Goa.pls]]" <em>(Goede GOA playlist)</em></li> <li>30 mei 2004 19:07 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:20040530_Wikipedia_ontmoeting.jpg|20040530_Wikipedia_ontmoeting.jpg]]" <em>(Wikipedianen ontmoeten elkaar in Utrecht, vlnr. DanielM, Erik Zachte, Ellywa en Andre Engels, foto door serveerster)</em></li> <li>30 mei 2004 18:52 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Kuiken.jpg|Kuiken.jpg]]" <em>(kuiken Leghorn 2 weken oud eigen foto)</em></li> <li>30 mei 2004 18:07 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:ZogCiano.jpeg|ZogCiano.jpeg]]" <em>(Koning Zog met Graaf Ciano (van Engelse Wiki))</em></li> <li>30 mei 2004 17:58 [[Gebruiker:Stijlloos|Stijlloos]] heeft ge-upload: "[[:Afbeelding:Quickscript_alfabet.png|Quickscript_alfabet.png]]" <em>(het volledige quickscript alfabet (eigen makelaardij))</em></li> <li>30 mei 2004 17:39 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:ZogMunt.jpg|ZogMunt.jpg]]" <em>(Munt met koning Zog van Albanië (van Engelse Wiki))</em></li> <li>30 mei 2004 17:15 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:KoningZog.jpg|KoningZog.jpg]]" <em>(Koning Zog van Albanië (van Engelse Wiki))</em></li> <li>30 mei 2004 16:38 [[Gebruiker:Herr Klugbeisser|Herr Klugbeisser]] heeft ge-upload: "[[:Afbeelding:Florianopolis_in_Brazil.png|Florianopolis_in_Brazil.png]]" <em>(Ligging van Florianopolis)</em></li> <li>30 mei 2004 15:24 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Klaproos_stempels.jpg|Klaproos_stempels.jpg]]" <em>(zelfgemaakte foto van klaproos eind mei)</em></li> <li>30 mei 2004 15:24 [[Gebruiker:Stijlloos|Stijlloos]] heeft ge-upload: "[[:Afbeelding:Quickscript.png|Quickscript.png]]" <em>(Dit is een stukje van de titelpagina van de handleiding van de steno-vorm Quickscript. Het komt uit de download uit de yahoo group die in het publiek domein is geplaatst.)</em></li> <li>30 mei 2004 15:16 [[Gebruiker:Pierelint|Pierelint]] heeft ge-upload: "[[:Afbeelding:Schemaschild.png|Schemaschild.png]]" <em>(zelf gemaakt)</em></li> <li>30 mei 2004 13:06 [[Gebruiker:Pierelint|Pierelint]] heeft ge-upload: "[[:Afbeelding:Regelschemath.png|Regelschemath.png]]" <em>(zelf gemaakt)</em></li> <li>30 mei 2004 12:27 [[Gebruiker:Pierelint|Pierelint]] heeft ge-upload: "[[:Afbeelding:Regelschemath.png|Regelschemath.png]]" <em>(zelf gemaakt)</em></li> <li>30 mei 2004 12:25 [[Gebruiker:Pierelint|Pierelint]] heeft ge-upload: "[[:Afbeelding:Feedback.png|Feedback.png]]" <em>(zelf gemaakt)</em></li> <li>30 mei 2004 11:42 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Seirjk.jpg|Seirjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>30 mei 2004 10:25 [[Gebruiker:Herr Klugbeisser|Herr Klugbeisser]] heeft ge-upload: "[[:Afbeelding:Caceres_in_Brazil.png|Caceres_in_Brazil.png]]" <em>(Ligging van Cáceres)</em></li> <li>30 mei 2004 03:21 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:LeopoldIIIFrederikFrans.jpg|LeopoldIIIFrederikFrans.jpg]]" <em>(Leopold III Frederik Frans van Anhalt-Dessau (schilderij uit 18e eeuw, dus geen copyright - http&#58;//www.andat.de/anhalt/anhalt_vat.htm))</em></li> <li>30 mei 2004 02:58 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:MichaelRoemenie.jpg|MichaelRoemenie.jpg]]" <em>(koning Michael van Roemenië, Vaticaan 1999 (van Roemeense Wiki))</em></li> <li>30 mei 2004 00:39 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Tsjechie.jpg|Tsjechie.jpg]]" <em>(Zelfde plaatje, vertaald door BenTels)</em></li> <li>30 mei 2004 00:15 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:George_Washington.PNG|George_Washington.PNG]]" <em>(PD tekening van UT Library, ingekleurd naar bestaand schilderij)</em></li> <li>29 mei 2004 20:02 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Betonning_groen.jpg|Betonning_groen.jpg]]" <em>(Groene betonning aan de IJssel bij Hattem, eigen foto, &#123;&#123;PD}})</em></li> <li>29 mei 2004 19:51 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Hamburger.jpg|Hamburger.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Hamburger Photograph available under GFDL license. I took this picture myself with a digital camera Olympus C-960. The picture was digitally edited. You do not need my permission to reuse it, but you may not claim that you took the photo yourself. &#91;&#91;en:Image:Hamburger.jpg]])</em></li> <li>29 mei 2004 19:51 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Hattem_Dijkpoort.jpg|Hattem_Dijkpoort.jpg]]" <em>(Dijkpoort in Hattem, eigen foto, &#123;&#123;PD}})</em></li> <li>29 mei 2004 19:50 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Hattem_kerk.jpg|Hattem_kerk.jpg]]" <em>(Kerk in Hattem, eigen foto, &#123;&#123;PD}})</em></li> <li>29 mei 2004 19:27 [[Gebruiker:DMakkin|DMakkin]] heeft ge-upload: "[[:Afbeelding:Aknikman.JPG|Aknikman.JPG]]" <em>(Aad Knikman (foto vrij van rechten))</em></li> <li>29 mei 2004 16:36 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:MaximiliaanIIBeieren.jpg|MaximiliaanIIBeieren.jpg]]" <em>(Maximiliaan II van Beieren (van Duitse Wiki))</em></li> <li>29 mei 2004 16:31 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:LuitpoldvanBeieren.jpg|LuitpoldvanBeieren.jpg]]" <em>(Prins-regent Luitpold van Beieren (van Duitse Wiki))</em></li> <li>29 mei 2004 15:58 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:8859-1_versus_utf-8.png|8859-1_versus_utf-8.png]]" <em>(Verminkte urls op UTF-8)</em></li> <li>29 mei 2004 13:40 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Nederjk.jpg|Nederjk.jpg]]" <em>(postzegel )</em></li> <li>29 mei 2004 13:19 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Parajk.jpg|Parajk.jpg]]" <em>(postzegel)</em></li> <li>29 mei 2004 12:51 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:OttoIBeieren.jpg|OttoIBeieren.jpg]]" <em>(Otto I van Beieren (van Duitse Wiki))</em></li> <li>29 mei 2004 12:47 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:LodewijkIIBeieren.jpg|LodewijkIIBeieren.jpg]]" <em>(Lodewijk II van Beieren (van Duitse Wiki))</em></li> <li>29 mei 2004 12:35 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:LodewijkIIIBeieren.jpg|LodewijkIIIBeieren.jpg]]" <em>(Lodewijk III van Beieren (van Duitse Wiki))</em></li> <li>29 mei 2004 12:33 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Hoodpagina_wikipedia_29mei_nieuwe_stijl.png|Hoodpagina_wikipedia_29mei_nieuwe_stijl.png]]" <em>(Hoofdpagina nieuwe stijl)</em></li> <li>29 mei 2004 12:32 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Hoofdpagina_wikipedia_29mei2004_oude_stijl.png|Hoofdpagina_wikipedia_29mei2004_oude_stijl.png]]" <em>(Hoofdpagina oude stijl)</em></li> <li>29 mei 2004 12:28 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Dzindjk.jpg|Dzindjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>29 mei 2004 12:13 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Dzindjk.jpg|Dzindjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>29 mei 2004 12:09 [[Gebruiker:Johanboie|Johanboie]] heeft ge-upload: "[[:Afbeelding:HOOFDPIJ.SYM|HOOFDPIJ.SYM]]" <em>(Hoofdpijn oorzaken en therapie, eigen file)</em></li> <li>29 mei 2004 11:27 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:LogoLB.png|LogoLB.png]]" <em>(aangepast tbv MonoBook)</em></li> <li>29 mei 2004 09:48 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Pronkboon_pluimpje_closeup1.jpg|Pronkboon_pluimpje_closeup1.jpg]]" <em>(zelfgemaakte foto; pronboonzaad met pluimpje (opengesneden))</em></li> <li>29 mei 2004 09:47 [[Gebruiker:DMakkin|DMakkin]] heeft ge-upload: "[[:Afbeelding:Aknikman.JPG|Aknikman.JPG]]" <em>(Foto Aad Knikman - Vrij van rechten)</em></li> <li>29 mei 2004 09:47 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeraniumRobertianum-CloseUp-hr.jpg|GeraniumRobertianum-CloseUp-hr.jpg]]" <em>(Staelduinse bos, mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>29 mei 2004 09:45 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeraniumRobertianum-bloem-hr.jpg|GeraniumRobertianum-bloem-hr.jpg]]" <em>(Staelduinse bos, mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>29 mei 2004 09:45 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeraniumRobertianum-blad-hr.jpg|GeraniumRobertianum-blad-hr.jpg]]" <em>(Staelduinse bos, mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>29 mei 2004 09:44 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeraniumRobertianum-plant-hr.jpg|GeraniumRobertianum-plant-hr.jpg]]" <em>(Staelduinse bos, mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>29 mei 2004 09:39 [[Gebruiker:DMakkin|DMakkin]] heeft ge-upload: "[[:Afbeelding:Aad.JPG|Aad.JPG]]" <em>(foto Aad Knikman, rechtenvrij)</em></li> <li>29 mei 2004 09:01 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:GG_-_Edmond_Halley.JPG|GG_-_Edmond_Halley.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: GG - Edmond Halley Photographie déclarée comme libre d&#39;utilisation - trouvée par &#91;&#91;Utilisateur:Semnoz]] &#91;&#91;fr:Image:GG - Edmond Halley.JPG]])</em></li> <li>29 mei 2004 08:47 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Poe.jpg|Poe.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Edgar Allan Poe, aus der eng. wikipedia PD von http&#58;//www.sru.edu/depts/cisba/compsci/dailey/217students/sgm8660/Final/ &#91;&#91;de:Bild:poe.jpg]])</em></li> <li>29 mei 2004 08:32 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Dermatitis.jpg|Dermatitis.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Photograph of typical, mild dermatitis &#91;&#91;en:Image:Dermatitis.jpg]])</em></li> <li>29 mei 2004 08:08 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Rozenjk.jpg|Rozenjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>29 mei 2004 07:28 [[Gebruiker:Edwtie|Edwtie]] heeft ge-upload: "[[:Afbeelding:Xs_logo_20mm.png|Xs_logo_20mm.png]]" <em>(Dit merk van Xs4all valt buiten GPL, maar om dit logo van dit Xs4all te zien.)</em></li> <li>29 mei 2004 00:00 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Armada.jpg|Armada.jpg]]" <em>(Van Engelse wikipedia: This image has been released into the public domain by the copyright holder, or its copyright has expired. This applies worldwide. )</em></li> <li>28 mei 2004 21:20 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:RanunculusSceleratus-plant-hr.jpg|RanunculusSceleratus-plant-hr.jpg]]" <em>(weiland bij &#91;&#91;Gouda]], 11 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>28 mei 2004 21:19 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:RanunculusSceleratus-bloem-hr.jpg|RanunculusSceleratus-bloem-hr.jpg]]" <em>(weiland bij &#91;&#91;Gouda]], 11 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>28 mei 2004 20:04 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Wapenwallis.png|Wapenwallis.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Kantonswappen des Kantons Wallis, sebstgezeichnet &#91;&#91;de:Bild:Ch wappen vs.png]])</em></li> <li>28 mei 2004 19:33 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:GeorgeStephenson.PNG|GeorgeStephenson.PNG]]" <em>(PD tekening van UT Library, ingekleurd naar bestaand schilderij)</em></li> <li>28 mei 2004 18:47 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Paardekastanje2.jpg|Paardekastanje2.jpg]]" <em>(Paardekastanje vrijstaand eigen foto)</em></li> <li>28 mei 2004 18:46 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Paardekastanje1.jpg|Paardekastanje1.jpg]]" <em>(Paardekastanje bloem en blad eigen foto)</em></li> <li>28 mei 2004 18:22 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Hulst.jpg|Hulst.jpg]]" <em>(hulst bloem mei eigen foto)</em></li> <li>28 mei 2004 18:02 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Linde.jpg|Linde.jpg]]" <em>(kleinbladige linde eigen foto)</em></li> <li>28 mei 2004 17:05 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Easyjet.ezyi.b737.750pix.jpg|Easyjet.ezyi.b737.750pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: easyJet Boeing 737 (G-EZYI) taking off from Bristol Airport (England).&lt;br&gt; Photographed by Adrian Pingstone in September 2003 and released to the public domain. &#123;&#123;msg:PD}} &#91;&#91;en:Image:easyjet.ezyi.b737.750pix.jpg]])</em></li> <li>28 mei 2004 16:44 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:FarceMajeure.jpg|FarceMajeure.jpg]]" <em>(eigen afbeelding (geen eigen muziek))</em></li> <li>28 mei 2004 15:42 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:E_coli.JPG|E_coli.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#39;&#39;&#91;&#91;E. coli]]&#39;&#39; bacteria &#91;&#91;en:Image:e coli.JPG]])</em></li> <li>28 mei 2004 15:39 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:EscherichiaColi_NIAID.jpg|EscherichiaColi_NIAID.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Escherichia coli: Scanning electron micrograph of Escherichia coli, grown in culture and adhered to a cover slip. Credit: Rocky Mountain Laboratories, NIAID, NIH Source: &#91;http&#58;//www2.niaid.nih.gov/biodefense/public/images.htm NIAID]: &#39;&#39;These high-resolution (300 dpi) images may be downloaded directly from this site. All the images, except specified ones from the World Health Organization (WHO), are in the public domain. For the public domain images, there is no copyright, no permission required, and no charge for their use.&#39;&#39; &#91;&#91;en:Image:EscherichiaColi NIAID.jpg]])</em></li> <li>28 mei 2004 13:54 [[Gebruiker:Herr Klugbeisser|Herr Klugbeisser]] heeft ge-upload: "[[:Afbeelding:Uruguaiana_in_Brazil.png|Uruguaiana_in_Brazil.png]]" <em>(Ligging van Uruguaiana)</em></li> <li>28 mei 2004 12:16 [[Gebruiker:Herr Klugbeisser|Herr Klugbeisser]] heeft ge-upload: "[[:Afbeelding:Sao_Borja_in_Brazil.png|Sao_Borja_in_Brazil.png]]" <em>(Ligging van São Borja)</em></li> <li>28 mei 2004 07:36 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:ErechtheumKaryatiden.jpg|ErechtheumKaryatiden.jpg]]" <em>(Kariatiden van het Erechtheum, Athene. (Eigen foto, 1965).)</em></li> <li>28 mei 2004 05:58 [[Gebruiker:Pven|Pven]] heeft ge-upload: "[[:Afbeelding:Parkroutes.JPG|Parkroutes.JPG]]" <em>(De routes van ontdekkingsreiziger &#91;&#91;Mungo Park]]. Kaart: CIA World Factbook, vertaling: &#91;&#91;Gebruiker:Danielm&#124;Danielm]] (zie &#91;&#91;Afbeelding:Kaart Afrika.jpg]]), toevoeging routes: &#91;&#91;Gebruiker:Andre Engels&#124;Andre Engels]]. Bij dezen publiek domein. &#123;&#123;msg:PD}})</em></li> <li>27 mei 2004 23:38 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Tsjaadmeer-1973-1997.jpg|Tsjaadmeer-1973-1997.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;msg:PD}} Adapted from NASA images at http&#58;//earthobservatory.nasa.gov/Newsroom/NewImages/images.php3?img_id=4714 &#91;&#91;en:Image:ShrinkingLakeChad-1973-1997-EO.JPG]])</em></li> <li>27 mei 2004 21:11 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:MedicagoArabica-plant-hr.jpg|MedicagoArabica-plant-hr.jpg]]" <em>(schouwen-duiverland, 7 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>27 mei 2004 21:10 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:MedicagoArabica-overz-hr.jpg|MedicagoArabica-overz-hr.jpg]]" <em>(schouwen-duiverland, 7 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>27 mei 2004 21:09 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:MedicagoArabica-blad-hr.jpg|MedicagoArabica-blad-hr.jpg]]" <em>(schouwen-duiverland, 7 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>27 mei 2004 21:07 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:MedicagoArabica-overz-hr.jpg|MedicagoArabica-overz-hr.jpg]]" <em>(schouwen-duiverland, 7 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>27 mei 2004 21:06 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:MedicagoArabica-blad-hr.jpg|MedicagoArabica-blad-hr.jpg]]" <em>(schouwen-duiverland, 7 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>27 mei 2004 19:25 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Napoleon3.PNG|Napoleon3.PNG]]" <em>(PD tekening van UT Library, ingekleurd naar bestaande schilderijen)</em></li> <li>27 mei 2004 19:07 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Parkroutes.PNG|Parkroutes.PNG]]" <em>(De routes van ontdekkingsreiziger &#91;&#91;Mungo Park]]. Kaart: CIA World Factbook, vertaling: &#91;&#91;Gebruiker:Danielm&#124;Danielm]] (zie &#91;&#91;Afbeelding:Kaart Afrika.jpg]]), toevoeging routes: &#91;&#91;Gebruiker:Andre Engels&#124;Andre Engels]]. Bij dezen publiek domein. &#123;&#123;msg:PD}})</em></li> <li>27 mei 2004 17:47 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Stempelvormen.jpg|Stempelvormen.jpg]]" <em>(naar Raedfort 1978)</em></li> <li>27 mei 2004 17:36 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:IrisGermanica-bloem-hr.jpg|IrisGermanica-bloem-hr.jpg]]" <em>(Laan van eik en duinen, braakliggend land, den haag, 27 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>27 mei 2004 17:35 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:IrisGermanica-CloseUp-hr.jpg|IrisGermanica-CloseUp-hr.jpg]]" <em>(Laan van eik en duinen, braakliggend land, den haag, 27 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>27 mei 2004 17:33 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:IrisGermanica-plant-hr.jpg|IrisGermanica-plant-hr.jpg]]" <em>(Laan van eik en duinen, braakliggend land, den haag, 27 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>27 mei 2004 17:28 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:IrisGermanica-plant-kl.jpg|IrisGermanica-plant-kl.jpg]]" <em>(Laan van eik en duinen, braakliggend land, den haag, 27 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>27 mei 2004 17:27 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:IrisGermanica-CloseUp-kl.jpg|IrisGermanica-CloseUp-kl.jpg]]" <em>(Laan van eik en duinen, braakliggend land, den haag, 27 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>27 mei 2004 17:27 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:IrisGermanica-bloem-kl.jpg|IrisGermanica-bloem-kl.jpg]]" <em>(Laan van eik en duinen, braakliggend land, den haag, 27 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>27 mei 2004 16:00 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Mungopark.png|Mungopark.png]]" <em>(Mungo Park. Uit: Stanley and the White Heroes in Africa, boek uit 1890, eigen scan)</em></li> <li>27 mei 2004 13:18 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Dwergmeeuw.jpg|Dwergmeeuw.jpg]]" <em>(zelfgemaakte foto van dwergmeeuw eind mei bij Texel)</em></li> <li>27 mei 2004 12:46 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Grote_Mantelmeeuw2.jpg|Grote_Mantelmeeuw2.jpg]]" <em>(zelfgemaakte foto eind mei van meeuw haven van Texel)</em></li> <li>27 mei 2004 12:16 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Karpjk.jpg|Karpjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>27 mei 2004 09:34 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Lutjk.jpg|Lutjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>27 mei 2004 07:25 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Amaterasu_door_Utagawa_Kunisada.jpg|Amaterasu_door_Utagawa_Kunisada.jpg]]" <em>(Amaterasu door Utagawa Kunisada (1786-1865). Veel gereproduceerde houtsnede)</em></li> <li>27 mei 2004 06:46 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Slufter_en_muy.png|Slufter_en_muy.png]]" <em>(tekening overgenomen uit folder &#39;De Slufter en De Muy&#39; van Staatsbosbeheer)</em></li> <li>27 mei 2004 06:15 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Izanami_en_izanagi.jpg|Izanami_en_izanagi.jpg]]" <em>(Izanami en Izanagi scheppen de onderwereld, vaak gereproduceerde Japanse zijdeschildering uit ongeveer 1855)</em></li> <li>27 mei 2004 05:53 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Caudex2.JPG|Caudex2.JPG]]" <em>(Eigen foto)</em></li> <li>27 mei 2004 05:50 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Caudex1.JPG|Caudex1.JPG]]" <em>(Eigen foto)</em></li> <li>27 mei 2004 05:12 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:IxusV2.JPG|IxusV2.JPG]]" <em>(Eigen foto)</em></li> <li>27 mei 2004 05:10 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Powershot.JPG|Powershot.JPG]]" <em>(Eigen foto)</em></li> <li>26 mei 2004 22:02 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Leinsterhouse.jpg|Leinsterhouse.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: image of Leinster House. No copyright, my photograph &#91;&#91;en:Image:Leinsterhouse.jpg]])</em></li> <li>26 mei 2004 22:01 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Firstdail.jpg|Firstdail.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: 1919 famous historic image regularly used on posters, leaflets, handouts to tourists etc EXTREMELY unlikely to be copyright (if it is, the entire country of Ireland has broken it continually for eighty years!) &#91;&#91;en:Image:firstdail.jpg]])</em></li> <li>26 mei 2004 21:58 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:ElectricalGenerators.jpeg|ElectricalGenerators.jpeg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#91;&#91;Alternator]]s made in &#91;&#91;Budapest]], &#91;&#91;Hungary]], in the power generating hall of a &#91;&#91;hydroelectric]] station in &#91;&#91;Iolotan]] on the &#91;&#91;Murghab River]] Photograph by &#91;&#91;Sergei Mikhailovich Prokudin-Gorskii]], between 1905 and 1915. From U.S. Library of Congress website &#91;http&#58;//memory.loc.gov/pnp/ppmsc/04400/04414v.jpg] &#123;&#123;msg:PD}} &#91;&#91;en:Image:ElectricalGenerators.jpeg]])</em></li> <li>26 mei 2004 21:44 [[Gebruiker:Pierelint|Pierelint]] heeft ge-upload: "[[:Afbeelding:Scannen.png|Scannen.png]]" <em>(zelf gemaakt)</em></li> <li>26 mei 2004 21:44 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Dusty.jpg|Dusty.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;msg:fairuse)) http&#58;//www.thisisbradford.co.uk/bradford__district/leisure/books/jpg/dusty.jpg &#91;&#91;en:Image:dusty.jpg]])</em></li> <li>26 mei 2004 21:31 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Dean_kamen.jpg|Dean_kamen.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#39;&#39;&#39;Description:&#39;&#39;&#39; Photograph of Dean Kamen on Segway Scooter speaking at the 4th Annual Assistive Technology Forum, Hampshire College, Amherst, MA, USA. &#39;&#39;&#39;Source:&#39;&#39;&#39; Photograph taken by Jared C. Benedict on 03 May 2002. &#39;&#39;&#39;Copyright:&#39;&#39;&#39; &amp;copy; Jared C. Benedict. Released under the GFDL by photographer Jared C. Benedict (myself). &#91;&#91;en:Image:Dean kamen.jpg]])</em></li> <li>26 mei 2004 21:16 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Meck_vopo.jpg|Meck_vopo.jpg]]" <em>(van de engelse wiki daar ge-upload door &#91;&#91;:de:Benutzer:Baldhur]] die mij op zijn overlegpagina vertelde dat hij zelf de afbeelding gemaakt heeft en under GNU/FDL vrijgegegen heeft.. &#123;&#123;msg:GFDL}})</em></li> <li>26 mei 2004 20:54 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Ac.boris3.jpg|Ac.boris3.jpg]]" <em>(Tsaar Boris III van Bulgarije met Adolf Hitler (van Engelse Wiki))</em></li> <li>26 mei 2004 20:54 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Ac.boris3.jpg|Ac.boris3.jpg]]" <em>(Tsaar Boris III van Bulgarije (van Engelse Wiki))</em></li> <li>26 mei 2004 20:08 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Ac.ferdinand.jpg|Ac.ferdinand.jpg]]" <em>(Tsaar Ferdinand van Bulgarije (van Engelse Wiki))</em></li> <li>26 mei 2004 18:34 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Dantealighieri.PNG|Dantealighieri.PNG]]" <em>(PD tekening van UT Library, ingekleurd naar bestaande schilderijen)</em></li> <li>26 mei 2004 10:10 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Ipomoea_indica.jpg|Ipomoea_indica.jpg]]" <em>(afbeelding afkomstig van Engelse Wikipedia)</em></li> <li>26 mei 2004 10:08 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Sadlerjk.jpg|Sadlerjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>26 mei 2004 10:07 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Sadlerjk.jpg|Sadlerjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>26 mei 2004 09:14 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Sadlerjk.jpg|Sadlerjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>26 mei 2004 07:46 [[Gebruiker:Walter|Walter]] heeft ge-upload: "[[:Afbeelding:Egypt_Hieroglyphe4.jpg|Egypt_Hieroglyphe4.jpg]]" <em>(&#91;&#91;fr:Image:Egypt Hieroglyphe4.jpg]] Afbeelding van hiërogliefen, afkomstig van gebruiker &#91;&#91;w:fr:Utilisateur:Aoineko]] en geplaatst onder de &#91;&#91;GNU Vrije Documentatie Licentie]] door deze.)</em></li> <li>26 mei 2004 07:34 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Cristaat4.JPG|Cristaat4.JPG]]" <em>(Eigen foto)</em></li> <li>26 mei 2004 07:31 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Cristaat3.JPG|Cristaat3.JPG]]" <em>(Eigen foto)</em></li> <li>26 mei 2004 07:28 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Cristaat2.JPG|Cristaat2.JPG]]" <em>(Eigen foto)</em></li> <li>26 mei 2004 07:25 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Narcis_zaadhokken.jpg|Narcis_zaadhokken.jpg]]" <em>(zelfgemaakte foto; dwarsdoorsnede vruchtbeginsel Narcis)</em></li> <li>26 mei 2004 07:22 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Cristaat1.JPG|Cristaat1.JPG]]" <em>(Eigen foto)</em></li> <li>26 mei 2004 07:16 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Gulkovdk.jpg|Gulkovdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>26 mei 2004 07:12 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Gulko.jpg|Gulko.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>26 mei 2004 07:08 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Melocactus.JPG|Melocactus.JPG]]" <em>(Eigen foto)</em></li> <li>25 mei 2004 22:11 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Ernstmach.jpg|Ernstmach.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: 19th century (or early 20th century) photograph. public domain. &#123;&#123;msg:PD}} &#91;&#91;en:Image:Ernstmach.jpg]])</em></li> <li>25 mei 2004 21:03 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Charlottebronte.PNG|Charlottebronte.PNG]]" <em>(PD tekening van UT Library, ingekleurd naar bestaand schilderij)</em></li> <li>25 mei 2004 20:20 [[Gebruiker:Panthouse|Panthouse]] heeft ge-upload: "[[:Afbeelding:HFB-cassetterecorder.JPG|HFB-cassetterecorder.JPG]]" <em>(Zelfgemaakte foto van een cassetterecorder uit eind jaren zeventig.)</em></li> <li>25 mei 2004 19:33 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Durrës.jpg|Durrës.jpg]]" <em>(General info: Durrës, Albania Size: 55.65 KB, Dimension: 640x480 pixels, Source: Marc Morell used, with permission, License: GFDL, &#91;&#91;en:Image:Durrës.jpg]])</em></li> <li>25 mei 2004 19:29 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:DurrÙs.jpg|DurrÙs.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#39;&#39;&#39;General info&#39;&#39;&#39;: &#91;&#91;Durrës]], &#91;&#91;Albania]]&lt;br&gt; &#39;&#39;&#39;Size&#39;&#39;&#39;: 55.65 KB&lt;br&gt; &#39;&#39;&#39;Dimension&#39;&#39;&#39;: 640x480 pixels&lt;br&gt; &#39;&#39;&#39;Source&#39;&#39;&#39;: &#91;http&#58;//2ie.mpl.ird.fr/mm/albania Marc Morell] used with &#91;&#91;User:Dori/Marc Morell permission&#124;permission]]&lt;br&gt; &#39;&#39;&#39;License&#39;&#39;&#39;: &#91;&#91;GFDL]]&lt;br&gt; &#91;&#91;en:Image:Durrës.jpg]])</em></li> <li>25 mei 2004 19:27 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Duranduran_weddingalbum_cover.jpg|Duranduran_weddingalbum_cover.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: wedding album cover (fair use) &#91;&#91;en:Image:Duranduran weddingalbum cover.jpg]])</em></li> <li>25 mei 2004 19:26 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Rio_cover.jpg|Rio_cover.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Rio album cover &#39;&#39;This image is copyrighted. Its use is contended to be &#91;&#91;fair use]] under &#91;&#91;United States]] law. See: &#91;&#91;Wikipedia:Copyrights&#124;Copyrights]]&#39;&#39;. &#91;&#91;en:Image:Rio cover.jpg]])</em></li> <li>25 mei 2004 19:23 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:DandDExpertSetBoxCover.jpg|DandDExpertSetBoxCover.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Cover of D &amp; D Expert set box, covered under &quot;fair use,&quot; original from &quot;The Acaeum&quot; (http&#58;//www.acaeum.com/), used with permission &#123;&#123;msg:PermissionAndFairUse}} &#91;&#91;en:Image:DandDExpertSetBoxCover.jpg]])</em></li> <li>25 mei 2004 19:23 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:DandDBasicSetBoxCover.jpg|DandDBasicSetBoxCover.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Cover of D &amp; D Basic set box, covered under &quot;fair use,&quot; original from &#91;http&#58;//www.acaeum.com &quot;The Acaeum&quot;], used with permission &#123;&#123;msg:PermissionAndFairUse}} &#91;&#91;en:Image:DandDBasicSetBoxCover.jpg]])</em></li> <li>25 mei 2004 19:22 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:DandDBasicSetBoxCover.jpg|DandDBasicSetBoxCover.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Cover of D &amp; D Basic set box, covered under &quot;fair use,&quot; original from &#91;http&#58;//www.acaeum.com &quot;The Acaeum&quot;], used with permission &#123;&#123;msg:PermissionAndFairUse}} &#91;&#91;en:Image:DandDBasicSetBoxCover.jpg]] 1)</em></li> <li>25 mei 2004 19:17 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:EgyptDumyat.png|EgyptDumyat.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:EgyptDumyat.png]])</em></li> <li>25 mei 2004 19:14 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Duke_Ellington_Instruments.jpg|Duke_Ellington_Instruments.jpg]]" <em>(Duke_Ellington_Instruments, vanaf Engelse wikipedia &#91;&#91;en:Image:Duke Ellington Instruments.jpg]])</em></li> <li>25 mei 2004 19:14 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Duke_Ellington_band.jpg|Duke_Ellington_band.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: http&#58;//uv201.com/index.html &#91;&#91;en:Image:Duke Ellington band.jpg]])</em></li> <li>25 mei 2004 19:13 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Duke_Ellington_hat.jpg|Duke_Ellington_hat.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Classic picture of Duke Ellington from Museum of the City of New York. &#91;&#91;en:Image:Duke Ellington hat.jpg]])</em></li> <li>25 mei 2004 19:04 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Dudleymoore.jpg|Dudleymoore.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Dudley Moore &#91;&#91;en:Image:dudleymoore.jpg]])</em></li> <li>25 mei 2004 18:07 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Ac.simeonst1postzegels.jpg|Ac.simeonst1postzegels.jpg]]" <em>(Simeon II, tsaar van Bulgarije (van Engelse Wiki))</em></li> <li>25 mei 2004 18:06 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Ac.simeon1.jpg|Ac.simeon1.jpg]]" <em>(Simeon II, premier van Bulgarije (van Engelse Wiki))</em></li> <li>25 mei 2004 13:15 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Pronkboon_worteltje.jpg|Pronkboon_worteltje.jpg]]" <em>(zelfgemaakte foto; 24 uur na vochtig maken van boon)</em></li> <li>25 mei 2004 12:55 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Hank_Marvin_2004.jpg|Hank_Marvin_2004.jpg]]" <em>(Hank Marvin -vrij ter beschikking gesteld via MSN community)</em></li> <li>25 mei 2004 10:11 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Moa.jpg|Moa.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-da. De beschrijving daar was: &#91;&#91;Billede:moa.jpg]] Rekonstruktion af moa udstillet på Auckland Museum på New Zealand. Foto: Auckland 1999, Malene Thyssen. &#91;&#91;da:Billede:moa.jpg]] &#123;&#123;msg:GNU/FDL}})</em></li> <li>25 mei 2004 09:52 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Symmetrie_twee_of_meer.png|Symmetrie_twee_of_meer.png]]" <em>(symbool voor bloemformule verbeterde versie)</em></li> <li>25 mei 2004 09:47 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Lalicjk.jpg|Lalicjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>25 mei 2004 09:38 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:G_tussenstandig.png|G_tussenstandig.png]]" <em>(symbool voor bloemformule )</em></li> <li>25 mei 2004 09:29 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:G_bovenstandig.png|G_bovenstandig.png]]" <em>(symbool voor bloemformule)</em></li> <li>25 mei 2004 09:24 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:AshmoreandCartierIslands.png|AshmoreandCartierIslands.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Ashmore and Cartier Islands From &#91;http&#58;//www.lib.utexas.edu/maps/index.html PCL map collection] &#91;&#91;en:Image:AshmoreandCartierIslands.png]])</em></li> <li>25 mei 2004 09:00 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Spiraal.png|Spiraal.png]]" <em>(symbool voor bloemformule verbeterde versie)</em></li> <li>25 mei 2004 08:55 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Symmetrie_twee_of_meer.png|Symmetrie_twee_of_meer.png]]" <em>(symbool voor bloemformule)</em></li> <li>25 mei 2004 07:57 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Spiraal.png|Spiraal.png]]" <em>(zelfgemaakte tekening voor bloemformule verbeterde versie)</em></li> <li>25 mei 2004 07:38 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Spiraal.png|Spiraal.png]]" <em>(zelfgemaakte tekening voor bloemformule)</em></li> <li>25 mei 2004 07:25 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Wheat.jpg|Wheat.jpg]]" <em>(En: wikipedia)</em></li> <li>25 mei 2004 06:32 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Oceanie.jpg|Kaart_Oceanie.jpg]]" <em>(Vertaling kaart Nederlands)</em></li> <li>25 mei 2004 06:18 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Ignatius_Loyola.jpg|Ignatius_Loyola.jpg]]" <em>(En: wikipedia)</em></li> <li>24 mei 2004 22:11 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Dubrovnik.jpg|Dubrovnik.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Dubrovnik &#91;&#91;en:Image:dubrovnik.jpg]])</em></li> <li>24 mei 2004 22:09 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:VictorEmanuelII2.jpg|VictorEmanuelII2.jpg]]" <em>(Victor Emanuel II van Italië (public domain van http&#58;//www.lib.utexas.edu/photodraw/portraits/))</em></li> <li>24 mei 2004 22:01 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:BurjalArab.jpg|BurjalArab.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Arabian Tower - Burj Al Arab - From: http&#58;//www.gardkarlsen.com/dubai.htm &#91;&#91;en:Image:BurjalArab.jpg]])</em></li> <li>24 mei 2004 21:54 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Pan_och_en_hamadryad_Mosaik_frÃ¥n_Pompeji.jpg|Pan_och_en_hamadryad_Mosaik_frÃ¥n_Pompeji.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-sv. De beschrijving daar was: Mosaik från Pompeji; Pan och en Hamadryad; från en &#91;&#91;sv:Bild:Pan och en hamadryad Mosaik från Pompeji.jpg]])</em></li> <li>24 mei 2004 21:51 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Dryad11.jpg|Dryad11.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: The Dryad Evelyn De Morgan (British, 1850-1919) &#91;&#91;en:Image:Dryad11.jpg]])</em></li> <li>24 mei 2004 21:44 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Printingpress.png|Printingpress.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: resized picture &#91;&#91;en:Image:Printingpress.png]])</em></li> <li>24 mei 2004 21:43 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Igflatbedcylinderpress.jpg|Igflatbedcylinderpress.jpg]]" <em>(Vanaf Engelse wikipedia, &#91;&#91;en:Image:Igflatbedcylinderpress.jpg]])</em></li> <li>24 mei 2004 21:36 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Drosm3.gif|Drosm3.gif]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: The copyright status of this image and the source of this image needs to clarified. --&#91;&#91;User:Lexor&#124;Lexor]] 11:17, 25 Nov 2003 (UTC) &#91;&#91;en:Image:Drosm3.gif]])</em></li> <li>24 mei 2004 21:23 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Bisdomkaart.png|Bisdomkaart.png]]" <em>(Bisdomkaart van Nederland, eigen werk, &#123;&#123;msg:PS}})</em></li> <li>24 mei 2004 21:16 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Triangulation.png|Triangulation.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: triangulation &#91;&#91;fr:Image:Triangulation.png]])</em></li> <li>24 mei 2004 20:58 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Napoleonbonaparte.PNG|Napoleonbonaparte.PNG]]" <em>(PD tekening van UT Library, ingekleurd naar bestaande schilderijen)</em></li> <li>24 mei 2004 20:34 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:ATB-kaart.png|ATB-kaart.png]]" <em>(spoorkaart van Nederland. toont waar ATB-EG, ATB-NG en PZB of geen treinbeïnvloeding ligt, eigen werk, &#123;&#123;msg:PD}})</em></li> <li>24 mei 2004 20:28 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Suid-Afrika-coa.png|Suid-Afrika-coa.png]]" <em>(test, uit afr wiki)</em></li> <li>24 mei 2004 20:26 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:South_africa_flag_medium.png|South_africa_flag_medium.png]]" <em>(test, uit afr wiki)</em></li> <li>24 mei 2004 20:22 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Collared.jpg|Collared.jpg]]" <em>(En: wikipedia)</em></li> <li>24 mei 2004 20:10 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Beachvolley.jpg|Beachvolley.jpg]]" <em>(De Nederlandse beachvolleybalster Marrit Leenstra in gevecht aan het net. Bron: http&#58;//www.volleybal.nl/. Overname toegestaan, maar alleen met bronvermelding.)</em></li> <li>24 mei 2004 19:21 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Onkruid.jpg|Onkruid.jpg]]" <em>(bloemen in verwaarloosd weiland eigen foto)</em></li> <li>24 mei 2004 19:08 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Grenspaal1.jpg|Grenspaal1.jpg]]" <em>(grenspaal tussen het vroegere Pruisen (Oostkantons) en België)</em></li> <li>24 mei 2004 18:50 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Hoogspanning2.jpg|Hoogspanning2.jpg]]" <em>(nabij centrale van Coo-Trois-Ponts eigen foto)</em></li> <li>24 mei 2004 18:49 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Hoogspanning1.jpg|Hoogspanning1.jpg]]" <em>(nabij centrale van Coo-Trois-Ponts eigen foto)</em></li> <li>24 mei 2004 12:45 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Beliavsky.jpg|Beliavsky.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>24 mei 2004 12:39 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Beliajk.jpg|Beliajk.jpg]]" <em>(friso)</em></li> <li>24 mei 2004 11:45 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kupreijk.jpg|Kupreijk.jpg]]" <em>(Fritz8 - print)</em></li> <li>24 mei 2004 10:40 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Sokoljk.jpg|Sokoljk.jpg]]" <em>(Fritz8 - print)</em></li> <li>24 mei 2004 09:08 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Qinjk.jpg|Qinjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>24 mei 2004 06:14 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:SavonarolaPlaque.jpg|SavonarolaPlaque.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Plaque commemorating the spot where Girolamo Savonarola was executed in the Piazza Della Signoria, Florence. Photograph by Greg O&#39;Beirne. &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:SavonarolaPlaque.jpg]])</em></li> <li>24 mei 2004 06:14 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Savonarola.jpg|Savonarola.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: savonarola &#123;&#123;msg:Unverified}} &#91;&#91;en:Image:Savonarola.jpg]])</em></li> <li>24 mei 2004 00:02 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Harmonischen.jpg|Harmonischen.jpg]]" <em>(eigen afbeelding)</em></li> <li>23 mei 2004 22:28 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Johanneskepler.PNG|Johanneskepler.PNG]]" <em>(PD tekening van UT Library, ingekleurd naar bestaande schilderijen)</em></li> <li>23 mei 2004 21:45 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Wappen_ar_1813.jpg|Wappen_ar_1813.jpg]]" <em>(Wapen van Argentinië (1813))</em></li> <li>23 mei 2004 19:22 [[Gebruiker:Dick Bos|Dick Bos]] heeft ge-upload: "[[:Afbeelding:Woodlark57.jpg|Woodlark57.jpg]]" <em>(Boomleeuwerik; plaatje uit een oude encyclopedie; van Engelse Wikipedia)</em></li> <li>23 mei 2004 18:56 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Virgo.arp.750pix.jpg|Virgo.arp.750pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: A star field in the Virgo Cluster.&lt;br&gt; &#39;&#39;&#39;CREDIT:&#39;&#39;&#39; ESO PR Photo 04a/03 &lt;br&gt; &#39;&#39;&#39;SOURCE:&#39;&#39;&#39; http&#58;//www.eso.org/outreach/press-rel/pr-2003/pr-02-03.html &lt;br&gt; &#39;&#39;&#39;COPYRIGHT:&#39;&#39;&#39; &#39;&#39;&quot;The photos displayed here may be reproduced for non-commercial purposes, if reference is made to the European Southern Observatory.&quot;&#39;&#39; &lt;br&gt; &#39;&#39;&#39;PREPARED BY&#39;&#39;&#39; Adrian Pingstone in December 2003. &#91;&#91;en:Image:virgo.arp.750pix.jpg]])</em></li> <li>23 mei 2004 18:31 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Mimas_moon.jpg|Mimas_moon.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Mimas, Saturn&#39;s moon. Taken by Voyager 1. NASA PD &#91;&#91;en:Image:Mimas moon.jpg]])</em></li> <li>23 mei 2004 18:28 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Microtuble.jpg|Microtuble.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: From &#91;http&#58;//www-vis.lbl.gov/Vignettes/KDowning-Microtubules/index.html], believed to be in the &#91;&#91;public domain]] &#91;&#91;en:Image:Microtuble.jpg]])</em></li> <li>23 mei 2004 18:26 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Prime_meridian.jpg|Prime_meridian.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: The Prime Meridian, Greenwich Image by &#91;&#91;User:ChrisO&#124;ChrisO]] &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:Prime meridian.jpg]])</em></li> <li>23 mei 2004 18:14 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Tony_Banks_S.jpg|Tony_Banks_S.jpg]]" <em>(Vanaf Poolse wikipedia &#91;&#91;pl:Grafika:Tony Banks S.jpg]])</em></li> <li>23 mei 2004 18:09 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Zanzibar_(tanzania).jpg|Zanzibar_(tanzania).jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Map of Zanzibar (Tanzania) from http&#58;//www.lib.utexas.edu/maps/tanzania.html &#91;&#91;en:Image:Zanzibar (tanzania).jpg]])</em></li> <li>23 mei 2004 16:57 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Royal_observatory_greenwich.jpg|Royal_observatory_greenwich.jpg]]" <em>(greenwich obrservatorium)</em></li> <li>23 mei 2004 16:20 [[Gebruiker:Bernard van der Wees|Bernard van der Wees]] heeft ge-upload: "[[:Afbeelding:Napoleon.png|Napoleon.png]]" <em>(Eerdere versie hersteld)</em></li> <li>23 mei 2004 16:20 [[Gebruiker:Bernard van der Wees|Bernard van der Wees]] heeft ge-upload: "[[:Afbeelding:Napoleon.png|Napoleon.png]]" <em>(Eerdere versie hersteld)</em></li> <li>23 mei 2004 16:14 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:WhiteHorseFromGround_CopyrightKaihsuTai.jpg|WhiteHorseFromGround_CopyrightKaihsuTai.jpg]]" <em>(en: wikipedia gfdl)</em></li> <li>23 mei 2004 14:16 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Symphony_in_White.jpg|Symphony_in_White.jpg]]" <em>(Van Engelse Wikipedia: Whistler, “Symphony in White, No.1: The White Girl”, National Gallery of Art, Washington DC, USA. Picture prepared for Wikipedia by Adrian Pingstone in May 2003. )</em></li> <li>23 mei 2004 13:09 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Antarctica_Map.png|Antarctica_Map.png]]" <em>(Kaart Antarctica&lt;br&gt;Vertaling door Ben Tels)</em></li> <li>23 mei 2004 11:36 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:NEO_ellesmere_small.jpg|NEO_ellesmere_small.jpg]]" <em>(nationaal park)</em></li> <li>23 mei 2004 11:28 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Ellesmere.png|Ellesmere.png]]" <em>(ellesmere eiland)</em></li> <li>23 mei 2004 11:09 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Baffin.png|Baffin.png]]" <em>(baffineiland)</em></li> <li>23 mei 2004 10:19 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Nansen.jpg|Nansen.jpg]]" <em>(nansen)</em></li> <li>23 mei 2004 10:15 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Grenspaal.jpg|Grenspaal.jpg]]" <em>(grenspaal 105 (grens tussen Pruisen en België tot 1918) op niet zichtbare zijde letters &quot;Pr&quot;)</em></li> <li>23 mei 2004 09:16 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Grenspaal.jpg|Grenspaal.jpg]]" <em>(grenspaal 105 (grens tussen Pruisen en België tot 1918) op niet zichtbare zijde letters &quot;Pr&quot;)</em></li> <li>23 mei 2004 08:54 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Bosbessen.jpg|Bosbessen.jpg]]" <em>(bosbessen langs bosweg mei eigen foto)</em></li> <li>23 mei 2004 08:43 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Look-zonder-look.JPG|Look-zonder-look.JPG]]" <em>(Look-zonder-look berm mei eigen foto)</em></li> <li>23 mei 2004 07:50 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Dragoon-illustration.jpeg|Dragoon-illustration.jpeg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Illustration of &#91;&#91;dragoon]] {&#124; align=center style=&quot;width:80%;background-color:white&quot; &#124; Light Dragoon &#124;- &#124; 1975 &#124;- &#124; Illustration by Don Troiani, &#91;&#91;National Park Service]] A trooper of &#91;&#91;William Washington]] cavalry, &#91;&#91;2nd Continental Light Dragoons]]. &#124;} From http&#58;//www.cr.nps.gov/museum/exhibits/revwar/vafo/vafohorse.html &#123;&#123;msg:PD}} &#91;&#91;en:Image:Dragoon-illustration.jpeg]])</em></li> <li>23 mei 2004 07:44 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Img1608.jpg|Img1608.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: 1998 nairobi bombing &#91;&#91;en:Image:img1608.jpg]])</em></li> <li>23 mei 2004 07:43 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Aanslag_nairobi.jpg|Aanslag_nairobi.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: 1998 nairobi bombing &#91;&#91;en:Image:img1608.jpg]])</em></li> <li>23 mei 2004 07:42 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Nairobiright.jpg|Nairobiright.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: city of nairobi (1980&#39;s) &#91;&#91;en:Image:nairobiright.jpg]])</em></li> <li>23 mei 2004 07:37 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Legree.png|Legree.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Simon Legree, from a &#91;&#91;magic lantern]] series of about &#91;&#91;1885]] of &#39;&#39;&#91;&#91;Uncle Tom&#39;s Cabin]]&#39;&#39; &#91;&#91;en:Image:legree.png]])</em></li> <li>23 mei 2004 03:05 [[Gebruiker:Branddobbe|Branddobbe]] heeft ge-upload: "[[:Afbeelding:Gebruiker_Branddobbe.jpg|Gebruiker_Branddobbe.jpg]]" <em>(ik)</em></li> <li>23 mei 2004 00:30 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Undergroundrailroadsmall2.jpg|Undergroundrailroadsmall2.jpg]]" <em>(Een kaart van routes van de Underground Railroad.&lt;br&gt;Bron: http&#58;//history.sandiego.edu/gen/CWPics/86139.jpg, via Wikipedia.en&lt;br&gt;Licentie onbekend, toestemming voor plaatsing aangenomen wegens publicatie op Wikipedia.en)</em></li> <li>23 mei 2004 00:07 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Harriet_beecher_stowe.jpg|Harriet_beecher_stowe.jpg]]" <em>(Harriet Beecher Stowe&lt;br&gt;Bron: Wikipedia.en&lt;br&gt;Beschrijving aldaar:Harriet Beecher Stowe (19th century photograph)&lt;br&gt;Aangenomen licentie (uit publicatie op Wikipedia): &#123;&#123;msg:GFDL}} )</em></li> <li>22 mei 2004 20:12 [[Gebruiker:Dick Bos|Dick Bos]] heeft ge-upload: "[[:Afbeelding:MarxKapitaal.jpg|MarxKapitaal.jpg]]" <em>(voorzijde omslag &#39;&#39;&#39;Karl Marx&#39;&#39;&#39;-&#39;&#39;Het Kapitaal&#39;&#39; (vert. I. Lipschits) 1976 )</em></li> <li>22 mei 2004 19:30 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:PuntlandLocatie.png|PuntlandLocatie.png]]" <em>(Locatie puntland (bewerking van SomalieLocatie: GFDL))</em></li> <li>22 mei 2004 19:18 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:RoaldAmundsen.jpg|RoaldAmundsen.jpg]]" <em>(Roald Amundsen)</em></li> <li>22 mei 2004 19:04 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:PuntlandVlag.png|PuntlandVlag.png]]" <em>(Vlag Puntland van wiki-en (GFDL))</em></li> <li>22 mei 2004 18:56 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Kinesisk_drake.PNG|Kinesisk_drake.PNG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-sv. De beschrijving daar was: från Nordisk familjbok &#91;&#91;sv:Bild:Kinesisk drake.PNG]])</em></li> <li>22 mei 2004 18:56 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Draak_uit_de_middeleeuwen.png|Draak_uit_de_middeleeuwen.png]]" <em>(Draak uit de middeleeuwen, vanaf Zweedse wikipedia, från Nordisk familjbok, &#91;&#91;sv:Bild:Drake på en medeltida väfvnad.png]])</em></li> <li>22 mei 2004 18:53 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Finn_Ronne.png|Finn_Ronne.png]]" <em>(finn ronne)</em></li> <li>22 mei 2004 18:53 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Drake_pÃ¥_en_medeltida_väfvnad.png|Drake_pÃ¥_en_medeltida_väfvnad.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-sv. De beschrijving daar was: från Nordisk familjbok &#91;&#91;sv:Bild:Drake på en medeltida väfvnad.png]])</em></li> <li>22 mei 2004 18:43 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Metal_lathe.png|Metal_lathe.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: A Lathe for Turning Metal From US Army training publication TC 9-524. &#123;&#123;Msg:PD}} &#91;&#91;en:Image:Metal lathe.png]])</em></li> <li>22 mei 2004 18:43 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Lathe.PNG|Lathe.PNG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: From http&#58;//www.sru.edu/depts/cisba/compsci/dailey/public/machines.html &#91;&#91;en:Image:Lathe.PNG]])</em></li> <li>22 mei 2004 18:41 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Nails.jpg|Nails.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: common nails &#91;&#91;en:Image:nails.jpg]])</em></li> <li>22 mei 2004 18:38 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Drill.jpg|Drill.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Jordan assembling a bookcase &#91;&#91;en:Image:Drill.jpg]])</em></li> <li>22 mei 2004 18:32 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:WhitecliffsDover.jpg|WhitecliffsDover.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Dover Harbour with White Cliffs, ca. 1980 &#91;&#91;en:Image:whitecliffsDover.jpg]])</em></li> <li>22 mei 2004 18:32 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Arms-dover.jpg|Arms-dover.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Arms of &#91;&#91;Dover]] District Council. From &#91;http&#58;//www.civicheraldry.co.uk civicheraldry.co.uk], with permission. &#91;&#91;User:Marnanel/CivicHeraldry pages&#124;About the civic heraldry images...]] &#61;=External links== * &#91;http&#58;//www.civicheraldry.co.uk/kent.html#dover%20dc Details of the arms] &#91;&#91;en:Image:arms-dover.jpg]])</em></li> <li>22 mei 2004 18:31 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Situationsplan_von_Dover.jpg|Situationsplan_von_Dover.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Situationsplan von Dover / Quelle: &#91;&#91;Meyers Konversationslexikon]] von 1888, Band 5, Seite 97 / Lizenz: Public Domain &#91;&#91;de:Bild:Situationsplan von Dover.jpg]])</em></li> <li>22 mei 2004 18:26 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Ha1.jpg|Ha1.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Angioplasty Owned by and taken of &#91;&#91;user:bleiglass&#124;Bleiglass]] &#91;&#91;en:Image:Ha1.jpg]])</em></li> <li>22 mei 2004 17:55 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:ZuidGeorgieSandwichEilandenKaart.png|ZuidGeorgieSandwichEilandenKaart.png]]" <em>(Kaart Sandwicheil van wiki-de (orig CIA) PD)</em></li> <li>22 mei 2004 17:53 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:ZuidGeorgiaSandwichVlag.jpg|ZuidGeorgiaSandwichVlag.jpg]]" <em>(vlag zuid georgie en zuidelijke sandwich eilanden)</em></li> <li>22 mei 2004 17:29 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Ferdinand_I_van_Roemenië.jpg|Ferdinand_I_van_Roemenië.jpg]]" <em>(Ferdinand I van Roemenië (van Zweedse Wiki))</em></li> <li>22 mei 2004 17:15 [[Gebruiker:Willemz|Willemz]] heeft ge-upload: "[[:Afbeelding:APB.JPG|APB.JPG]]" <em>(gemaakt met CabriGeometreIIplus)</em></li> <li>22 mei 2004 17:13 [[Gebruiker:Willemz|Willemz]] heeft ge-upload: "[[:Afbeelding:ABP.JPG|ABP.JPG]]" <em>(bemaakt met CabriGeometreIIplus)</em></li> <li>22 mei 2004 16:39 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:A-38.jpg|A-38.jpg]]" <em>(a-38 ijsschots)</em></li> <li>22 mei 2004 16:37 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:300px-A-38.jpg|300px-A-38.jpg]]" <em>(ijsschots a-38)</em></li> <li>22 mei 2004 16:36 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:300px-A-38.jpg|300px-A-38.jpg]]" <em>(ijsschots a-38)</em></li> <li>22 mei 2004 16:09 [[Gebruiker:Amantine|Amantine]] heeft ge-upload: "[[:Afbeelding:Chitine.png|Chitine.png]]" <em>(Structuurtekening chitine, door mij zelf gemaakt)</em></li> <li>22 mei 2004 15:45 [[Gebruiker:MrBrown|MrBrown]] heeft ge-upload: "[[:Afbeelding:Drr.jpg|Drr.jpg]]" <em>(De Rechtvaardige Rechters, kleurenfoto van het origineel door Agfa Gevaert)</em></li> <li>22 mei 2004 15:04 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Minoische_vaas_octopus.jpg|Minoische_vaas_octopus.jpg]]" <em>(Minoische vaas met octopus)</em></li> <li>22 mei 2004 15:02 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Ludwigvanbeethoven.PNG|Ludwigvanbeethoven.PNG]]" <em>(PD tekening van UT Library, ingekleurd naar bestaande schilderijen)</em></li> <li>22 mei 2004 14:49 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Antarctica_Map.png|Antarctica_Map.png]]" <em>(kaart antarctica)</em></li> <li>22 mei 2004 14:39 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Antarctica_shaded_topo_map.jpg|Antarctica_shaded_topo_map.jpg]]" <em>(kaart antarctica)</em></li> <li>22 mei 2004 14:13 [[Gebruiker:Puckly|Puckly]] heeft ge-upload: "[[:Afbeelding:Canada_Saskatchewan.png|Canada_Saskatchewan.png]]" <em>(Gemaakt door de Canadees &#91;&#91;w:en:User:Montrealais&#124;Montréalais]] voor WikipediaEN, dus GNU/FDL)</em></li> <li>22 mei 2004 14:13 [[Gebruiker:Puckly|Puckly]] heeft ge-upload: "[[:Afbeelding:Canada_Quebec.png|Canada_Quebec.png]]" <em>(Gemaakt door de Canadees &#91;&#91;w:en:User:Montrealais&#124;Montréalais]] voor WikipediaEN, dus GNU/FDL)</em></li> <li>22 mei 2004 14:11 [[Gebruiker:Puckly|Puckly]] heeft ge-upload: "[[:Afbeelding:Canada_Ontario.png|Canada_Ontario.png]]" <em>(Gemaakt door de Canadees &#91;&#91;en:User:montrealais]] voor WikipediaEN, dus GNU/FDL)</em></li> <li>22 mei 2004 14:11 [[Gebruiker:Puckly|Puckly]] heeft ge-upload: "[[:Afbeelding:Canada_Manitoba.png|Canada_Manitoba.png]]" <em>(Gemaakt door de Canadees &#91;&#91;en:User:montrealais]] voor WikipediaEN, dus GNU/FDL)</em></li> <li>22 mei 2004 14:10 [[Gebruiker:Puckly|Puckly]] heeft ge-upload: "[[:Afbeelding:Canada_BC.png|Canada_BC.png]]" <em>(Gemaakt door de Canadees &#91;&#91;en:User:montrealais]] voor WikipediaEN, dus GNU/FDL)</em></li> <li>22 mei 2004 14:10 [[Gebruiker:Puckly|Puckly]] heeft ge-upload: "[[:Afbeelding:Canada_Alberta.png|Canada_Alberta.png]]" <em>(Gemaakt door de Canadees &#91;&#91;en:User:montrealais]] voor WikipediaEN, dus GNU/FDL)</em></li> <li>22 mei 2004 13:14 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Rumsfeld_Isaias_Afewerki.jpg|Rumsfeld_Isaias_Afewerki.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: US Secretary of Defense Donald Rumsfeld and Eritrean President Isaias Afewerki, public domain image from defenselink.mil &#91;&#91;en:Image:Rumsfeld Isaias Afewerki.jpg]])</em></li> <li>22 mei 2004 13:11 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:PalauKaart.png|PalauKaart.png]]" <em>(Kaart Palaue van wiki-en (CIA, PD, conv naar .png))</em></li> <li>22 mei 2004 13:09 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:PalauLocatie.png|PalauLocatie.png]]" <em>(Locatie Paulau van wiki-en GFDL)</em></li> <li>22 mei 2004 11:47 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:ConstantijnIvanGriekenland.jpg|ConstantijnIvanGriekenland.jpg]]" <em>(Constantijn I van Griekenland (van Engelse Wiki))</em></li> <li>22 mei 2004 11:41 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Damejk.jpg|Damejk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 mei 2004 11:32 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:CassTape.JPG|CassTape.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;msg:PD}}. Cassette Tape, picture taken by &#91;&#91;User:Seth Ilys]] on 15 Mar 2004 and released into the public domain. &#91;&#91;en:Image:CassTape.JPG]])</em></li> <li>22 mei 2004 11:17 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Iceberg09.jpg|Iceberg09.jpg]]" <em>(ijsbergen)</em></li> <li>22 mei 2004 11:15 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:500px-Iceberg09.jpg|500px-Iceberg09.jpg]]" <em>(ijsbergen)</em></li> <li>22 mei 2004 10:16 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:FotoRuudLubbers.jpg|FotoRuudLubbers.jpg]]" <em>(Foto Ruud Lubbers)</em></li> <li>22 mei 2004 09:43 [[Gebruiker:Serassot|Serassot]] heeft ge-upload: "[[:Afbeelding:Markeren_kruis.jpg|Markeren_kruis.jpg]]" <em>(eigen foto)</em></li> <li>22 mei 2004 09:39 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Torenjk.jpg|Torenjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 mei 2004 08:49 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Rhinanthus-bloem-kl.jpg|Rhinanthus-bloem-kl.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein goudse poort, 19 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>22 mei 2004 08:40 [[Gebruiker:Waerth|Waerth]] heeft ge-upload: "[[:Afbeelding:Chad_Prefectures_numbered_300px.png|Chad_Prefectures_numbered_300px.png]]" <em>(kaartje gemaakt door user Snoyes van de engelse wikipedia voor het kaartenproject aldaar, vrij te gebruiken)</em></li> <li>22 mei 2004 08:20 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Koningjk.jpg|Koningjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 mei 2004 08:03 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:DornierLogo.png|DornierLogo.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Dornier company logo &#91;&#91;en:Image:DornierLogo.png]])</em></li> <li>22 mei 2004 07:58 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Dorycka.jpg|Dorycka.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-pl. De beschrijving daar was: ksi&amp;#261;&amp;#380;ka z r. 1902 &#91;&#91;pl:Grafika:dorycka.jpg]])</em></li> <li>22 mei 2004 07:56 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Grandtemp.jpg|Grandtemp.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Temple of the Delians &#91;&#91;en:Image:Grandtemp.jpg]])</em></li> <li>22 mei 2004 07:53 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Jonisk1.png|Jonisk1.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Ionic capital, from Nordisk familjebok. Image in public domain. &#91;&#91;en:Image:Jonisk1.png]])</em></li> <li>22 mei 2004 07:50 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Image:Grandtemp.jpg|Image:Grandtemp.jpg]]" <em>(Tempel met Dorische zuilen, vanaf Engelse wikipedia, &#91;&#91;en:Image:Image:Grandtemp.jpg]])</em></li> <li>22 mei 2004 07:48 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Image:Grandtemp.jpg|Image:Grandtemp.jpg]]" <em>(Give a description for the image:Tempel met Dorische zuilen)</em></li> <li>22 mei 2004 07:44 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Dorische_zuil.png|Dorische_zuil.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Corinthian capital, from Nordisk familjebok. Image in public domain. &#91;&#91;en:Image:Korintisk1.png]])</em></li> <li>22 mei 2004 01:32 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Othello.jpg|Othello.jpg]]" <em>(van Engelse Wikipedia: &quot;Othello and Desdemona in Venice&quot; door Théodore Chassériau (1819-1856) This image has been released into the public domain by the copyright holder, or its copyright has expired. This applies worldwide.)</em></li> <li>21 mei 2004 22:30 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bapti1.jpg|Bapti1.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Christian baptism ceremony &#91;&#91;en:Image:Bapti1.jpg]])</em></li> <li>21 mei 2004 22:11 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:DOOM253.png|DOOM253.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: Copie d&#39;&amp;#233;cran de Doom, fournie librement par &#91;&#91;Utilisateur:Ellisllk&#124;&amp;#8467;isllk]] Statut : Image probablement sous copyright, dont il est plausible que certains usages (tel que dans l&#39;article &#91;&#91;Doom]]) puissent &amp;#234;tre accept&amp;#233;s sous la doctrine du fair use Je (&#91;&#91;Utilisateur:Ellisllk&#124;Ellisllk]]) estime que cette image peut correspondre &amp;#224; l&#39;usage &quot;fair use&quot; parce que: * (1) c&#39;est une copie d&#39;&amp;#233;cran de faible qualit&amp;#233;, * (2) cela ne limite en aucune fa&amp;#231;on les droits du propri&amp;#233;taire du copyright &amp;#224; diffuser l&#39;image ou &amp;#224; l&#39;utiliser, * (3) l&#39;image est seulement employ&amp;#233; &amp;#224; but d&#39;illustration, * (4) l&#39;usage de l&#39;image ajoute quelque chose de significatif &amp;#224; l&#39;article &#91;&#91;Doom]] parce qu&#39;elle illustre le style du jeu. &#91;&#91;fr:Image:DOOM253.png]])</em></li> <li>21 mei 2004 22:10 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Doom-boxart.jpg|Doom-boxart.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;msg:fairuse}} &#91;&#91;en:Image:Doom-boxart.jpg]])</em></li> <li>21 mei 2004 22:01 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Trump.jpg|Trump.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Image credited to: Carl Cox 2004 at http&#58;//www.carlcoxphoto.com Recieved permission via email: &#39;&#39;&#39;To: Al Gore Support Center (Chris) &lt;webmaster@algoresupportcenter.zzn.com&gt;&#39;&#39;&#39;&#39; &#39;&#39;&#39;Subject Re: Your portraits&#39;&#39;&#39; &#39;&#39;&#39;From: ccox87@comcast.net&#39;&#39;&#39; &#39;&#39;&#39;Date: Mon, 23 Feb 2004 05:08:38 &#39;&#39;&#39; &#39;&#39;&#39;You can credit to: Carl Cox 2004 at www.carlcoxphoto.com &#39;&#39;&#39;Carl Cox&#39;&#39;&#39; &#39;&#39;&#39;301-670-0086&#39;&#39;&#39; &#39;&#39;&#39;www.carlcoxphoto.com&#39;&#39; &#39; &#123;&#123;msg:PermissionAndFairUse}} &#91;&#91;en:Image:Trump.jpg]])</em></li> <li>21 mei 2004 21:58 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Donald_Duck_suitcase_small2.jpg|Donald_Duck_suitcase_small2.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Donald Duck Die Originalvorlage stammt von &#91;&#91;Fantasy]], ich hab es nur etwas freigestellt, geschärft und gesättigt. &#39;&#39;&#39;Hinweis vom Urheber des Bildes:&#39;&#39;&#39; * Dieses Bild stammt von &#91;&#91;Fantasy]] und ist im Sinne der &#91;&#91;GFDL]] freigegeben (&#39;&#39;This Image is licensed to the public under the &#91;&#91;GNU Free Documentation License]]&#39;&#39;). * Die Verwendung dieses Bildes ist somit &#39;&#39;&#39;inner- und außerhalb von Wikipedia FREI&#39;&#39;&#39; und ausdrücklich erwünscht. &#91;&#91;Benutzer:Horst Frank&#124;Horst Frank]] 02:42, 20. Nov 2003 (CET) &#91;&#91;de:Bild:Donald Duck suitcase small2.jpg]])</em></li> <li>21 mei 2004 21:51 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cilinder.gif|Cilinder.gif]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: * On 2002-04-03 08:46:59, &#91;&#91;user:Cervantes&#124;Cervantes]] uploaded file cilinder.gif &#91;Cilinder] Simple diagram of a &#91;&#91;cylinder]]. Used on the &#91;http&#58;//eo.wikipedia.com/wiki/Cilindro Esperanto Wikipedia] and the Spanish &#91;http&#58;//enciclopedia.us.es/wiki.phtml?title=Cilindro Enciclopedia Libre Universal]. &#91;&#91;en:Image:Cilinder.gif]])</em></li> <li>21 mei 2004 21:50 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Kreiszylinder.PNG|Kreiszylinder.PNG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Gerader Kreiszylinder mit abgewickeltem Mantel, &#91;&#91;GFDL]] gezeichnet von &#91;&#91;Benutzer:Honina&#124;Honina]] &#91;&#91;de:Bild:Kreiszylinder.PNG]])</em></li> <li>21 mei 2004 21:07 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Moderniron.jpg|Moderniron.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: my pic. gfdl. pictures quite grainy. took it inside with no flash &#91;&#91;en:Image:moderniron.jpg]])</em></li> <li>21 mei 2004 21:05 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:SaoTomePrincipeKaart.png|SaoTomePrincipeKaart.png]]" <em>(Kaart SaoTome van wiki-en (orig: CIA))</em></li> <li>21 mei 2004 21:03 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:SaotomePrincipeWapen.png|SaotomePrincipeWapen.png]]" <em>(wapen van saotome van wiki-en)</em></li> <li>21 mei 2004 21:02 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:SaoTomePrincipeLocatie.png|SaoTomePrincipeLocatie.png]]" <em>(Locatie SaoTome van wiki-en (GFDL))</em></li> <li>21 mei 2004 21:01 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:SaoTemePrincipeKaart.png|SaoTemePrincipeKaart.png]]" <em>(Kaart SoaTome van wiki-en (orig: CIA))</em></li> <li>21 mei 2004 18:48 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SileneVulgaris-stengel-kl.jpg|SileneVulgaris-stengel-kl.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse Poort, 14 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>21 mei 2004 18:48 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SileneVulgaris-stengel-hr.jpg|SileneVulgaris-stengel-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse Poort, 14 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>21 mei 2004 18:46 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SileneVulgaris-plant-kl.jpg|SileneVulgaris-plant-kl.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse Poort, 14 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>21 mei 2004 18:46 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SileneVulgaris-plant-hr.jpg|SileneVulgaris-plant-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse Poort, 14 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>21 mei 2004 18:44 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SileneVulgaris-overz-kl.jpg|SileneVulgaris-overz-kl.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse Poort, 14 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>21 mei 2004 18:44 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SileneVulgaris-overz-hr.jpg|SileneVulgaris-overz-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse Poort, 14 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>21 mei 2004 18:41 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Furelise.mid|Furelise.mid]]" <em>(Fur Elise (overgetikt) PD aangezien componist meer dan 70 dood is)</em></li> <li>21 mei 2004 18:38 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SileneVulgaris-bloem-kl.jpg|SileneVulgaris-bloem-kl.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse Poort, 14 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>21 mei 2004 18:37 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SileneVulgaris-bloem-hr.jpg|SileneVulgaris-bloem-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein Goudse Poort, 14 mei 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>21 mei 2004 18:10 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Adrian_de_gerlache.jpg|Adrian_de_gerlache.jpg]]" <em>(Adrien de Gerlache)</em></li> <li>21 mei 2004 17:59 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Spar.jpg|Spar.jpg]]" <em>(spar in Trois-Ponts 3,5 m op 1m hoogte eigen foto)</em></li> <li>21 mei 2004 17:57 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Stekelbrem.jpg|Stekelbrem.jpg]]" <em>(stekelbrem naast bosweg Trois-Ponts 20 mei eigen foto)</em></li> <li>21 mei 2004 17:53 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Ganzebloem.jpg|Ganzebloem.jpg]]" <em>(gele ganzebloem berm naast boerderij Logbiermé 20 mei eigen foto)</em></li> <li>21 mei 2004 17:14 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:SevernayaZemlya.jpg|SevernayaZemlya.jpg]]" <em>(Severnaya afbeelding)</em></li> <li>21 mei 2004 17:12 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:180px-SevernayaZemlya.jpg|180px-SevernayaZemlya.jpg]]" <em>(Severnaya afbeelding)</em></li> <li>21 mei 2004 16:23 [[Gebruiker:RonaldW|RonaldW]] heeft ge-upload: "[[:Afbeelding:Herdersmat.jpg|Herdersmat.jpg]]" <em>(zelfgemaakt plaatje (mbv Fritz))</em></li> <li>21 mei 2004 16:01 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Belgica.jpg|Belgica.jpg]]" <em>(Belgica in de Antwerpse haven)</em></li> <li>21 mei 2004 13:31 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:ClaraSchumann.jpg|ClaraSchumann.jpg]]" <em>(van wiki-en (Clara_s.jpg) vanwege ouderdom waarschijnlijk PD)</em></li> <li>21 mei 2004 13:18 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:RobertSchumann.jpg|RobertSchumann.jpg]]" <em>(Schumann vanb wiki--en (oude foto, derhalve waarschijnlijk PD))</em></li> <li>21 mei 2004 12:35 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Vink.jpg|Vink.jpg]]" <em>(vink eigen foto )</em></li> <li>21 mei 2004 12:19 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Paardjk.jpg|Paardjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>21 mei 2004 10:53 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Chandjk.jpg|Chandjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>21 mei 2004 10:51 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:UmbertoIvanItalie.jpg|UmbertoIvanItalie.jpg]]" <em>(Umberto I van Italië (van Engelse Wiki))</em></li> <li>21 mei 2004 10:23 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Domenico_scarlatti.jpg|Domenico_scarlatti.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: Domenico Scarlatti * licence : domaine public * source : http&#58;//www.classicalarchives.com/bios/scarlatti_bio.html &#91;&#91;fr:Image:domenico scarlatti.jpg]])</em></li> <li>21 mei 2004 09:56 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:IrisPseudacorus-overz-kl.jpg|IrisPseudacorus-overz-kl.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein goudse poort, 17-5-2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>21 mei 2004 09:55 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:IrisPseudacorus-overz-hr.jpg|IrisPseudacorus-overz-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein goudse poort, 17-5-2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>21 mei 2004 09:55 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:MURRAY.jpg|MURRAY.jpg]]" <em>(permissie Levitt)</em></li> <li>21 mei 2004 09:54 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:IrisPseudacorus-CloseUp-kl.jpg|IrisPseudacorus-CloseUp-kl.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein goudse poort, 17-5-2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>21 mei 2004 09:53 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:IrisPseudacorus-CloseUp-hr.jpg|IrisPseudacorus-CloseUp-hr.jpg]]" <em>(&#91;&#91;Gouda]], bedrijventerrein goudse poort, 17-5-2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>21 mei 2004 09:48 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Duskydolphin17.jpg|Duskydolphin17.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Previously Dolphin.jpg renamed Note that &#91;&#91;User:203.109.157.194]] has written at &#91;&#91;Talk:Dusky Dolphin]] that these are not Dusky Dolphins but &#91;&#91;Pacific White-sided Dolphin]]s. I&#39;m neither agreeing nor disagreeing with this, but I thought I&#39;d better point it out. -- &#91;&#91;User:Oliver Pereira&#124;Oliver P.]] 02:27, 25 Oct 2003 (UTC) :The user is right. They are correctly attributed in the source: &#91;http&#58;//www.photolib.noaa.gov/animals/anim0802.htm] -- &#91;&#91;User:Baldhur&#124;Baldhur]] 19:30, 22 Apr 2004 (UTC) &#91;&#91;en:Image:Duskydolphin17.jpg]])</em></li> <li>21 mei 2004 09:29 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Gans.jpg|Gans.jpg]]" <em>(gans gedomesticeerd eigen foto)</em></li> <li>21 mei 2004 09:26 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Lahnojk.jpg|Lahnojk.jpg]]" <em>(Fritz8 - print)</em></li> <li>21 mei 2004 09:18 [[Gebruiker:Herr Klugbeisser|Herr Klugbeisser]] heeft ge-upload: "[[:Afbeelding:Santos_in_Brazil.png|Santos_in_Brazil.png]]" <em>(Locatie van Santos)</em></li> <li>21 mei 2004 09:15 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Roundworm.jpg|Roundworm.jpg]]" <em>(En: wikipedia)</em></li> <li>21 mei 2004 09:09 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Onmozet.jpg|Onmozet.jpg]]" <em>(Fritz8 - print)</em></li> <li>21 mei 2004 08:56 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Onmozet.jpg|Onmozet.jpg]]" <em>(Fritz8 - print)</em></li> <li>21 mei 2004 08:40 [[Gebruiker:Maarten van Vliet|Maarten van Vliet]] heeft ge-upload: "[[:Afbeelding:Rummy.jpg|Rummy.jpg]]" <em>(Officieel portret van Donald Rumsfeld. Komt van de engelse wiki. Het plaatje valt onder het publieke domein, &#91;&#91;en:work of the United States Government]].)</em></li> <li>21 mei 2004 08:32 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Stanleylivingstone.png|Stanleylivingstone.png]]" <em>(&#91;&#91;Henry Morton Stanley]] vindt &#91;&#91;David Livingstone]].&lt;p&gt;Bron: Stanley and the White Heroes in Africa, D.M. Kelsey, 1890. Eigen scan. &#123;&#123;msg:PD}})</em></li> <li>21 mei 2004 08:22 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Alhambra2.jpg|Alhambra2.jpg]]" <em>(Jardines del Partal in Alhambra foto van duitse Wiki bewerkt)</em></li> <li>21 mei 2004 08:21 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:|Afbeelding:]]" <em>(Jardines del Partal in Alhambra foto van duitse Wiki bewerkt)</em></li> <li>21 mei 2004 08:07 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Alhambra.jpg|Alhambra.jpg]]" <em>(Leeuwenpatio in Alhambra foto van Spaanse Wiki bewerkt)</em></li> <li>21 mei 2004 08:03 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Alhambra.jpg|Alhambra.jpg]]" <em>(Leuwenpatio in Alhamra foto van Spaanse Wiki)</em></li> <li>21 mei 2004 07:45 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Query_acces.png|Query_acces.png]]" <em>(Voorbeeld van een query met acces, eigen screendump)</em></li> <li>21 mei 2004 06:40 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeleHelmbloem-plant-hr.jpg|GeleHelmbloem-plant-hr.jpg]]" <em>(uit de serie onze tuin, 17 april 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>21 mei 2004 06:37 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeleHelmbloem-plant-kl.jpg|GeleHelmbloem-plant-kl.jpg]]" <em>(uit de serie onze tuin, 17 april 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>21 mei 2004 06:37 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeleHelmbloem-CloseUp-hr.jpg|GeleHelmbloem-CloseUp-hr.jpg]]" <em>(uit de serie onze tuin, 17 april 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>21 mei 2004 06:36 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeleHelmbloem-CloseUp-kl.jpg|GeleHelmbloem-CloseUp-kl.jpg]]" <em>(uit de serie onze tuin, 17 april 2004, &#123;&#123;msg:eigenwerk}})</em></li> <li>20 mei 2004 23:36 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Alexander_Pope.jpg|Alexander_Pope.jpg]]" <em>(Van Engelse Wikipedia: 1881 Young Persons&#39; Cyclopedia of Persons and Places )</em></li> <li>20 mei 2004 21:31 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Tiger.jpg|Tiger.jpg]]" <em>(En: wikipedia)</em></li> <li>20 mei 2004 20:57 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:VictorEmanuel.jpg|VictorEmanuel.jpg]]" <em>(Victor Emanuel II van Italië (van Duitse Wiki))</em></li> <li>20 mei 2004 19:59 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Iris_germanicus.JPG|Iris_germanicus.JPG]]" <em>(Eigen foto)</em></li> <li>20 mei 2004 19:31 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Ger_bw-filbinger.jpg|Ger_bw-filbinger.jpg]]"</li> <li>20 mei 2004 18:20 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Warsroses6193.jpg|Warsroses6193.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Wars of the Roses: Dukes York and Lancaster choose roses in the Temple Gardens, London from &#39;&#39;The Book of Knowledge&#39;&#39;, Vol. III, The Grolier Society, New York, 1911 &#91;&#91;en:Image:warsroses6193.jpg]])</em></li> <li>20 mei 2004 18:15 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Brem.jpg|Brem.jpg]]" <em>(brem 20 mei eigen foto)</em></li> <li>20 mei 2004 18:13 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Epidermis.jpg|Epidermis.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Darstellung der Epidermisschichten &#91;&#91;de:Bild:Epidermis.jpg]])</em></li> <li>20 mei 2004 18:06 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Sherpa.jpg|Sherpa.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-it. De beschrijving daar was: Sherpa-Famiglia &#91;&#91;it:Immagine:sherpa.jpg]])</em></li> <li>20 mei 2004 14:40 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Bath.jpg|Bath.jpg]]" <em>(Van Engelse Wikipedia: Pulteney Bridge in Bath, Foto: augustus 2002 door DrBob. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License)</em></li> <li>20 mei 2004 13:15 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:ETEY.jpg|ETEY.jpg]]" <em>(permissie Levitt)</em></li> <li>20 mei 2004 13:01 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Nunnjk.jpg|Nunnjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>20 mei 2004 12:36 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Nunn.jpg|Nunn.jpg]]" <em>(permissie Levitt)</em></li> <li>20 mei 2004 12:13 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:JONCONK.jpg|JONCONK.jpg]]" <em>(permissie Levitt)</em></li> <li>20 mei 2004 12:11 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:JONCONK.jpg|JONCONK.jpg]]" <em>(permissie Levitt)</em></li> <li>20 mei 2004 11:58 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:HEBDEN.jpg|HEBDEN.jpg]]" <em>(permissie levitt )</em></li> <li>20 mei 2004 11:56 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:JONCONK.jpg|JONCONK.jpg]]" <em>(permissie levitt )</em></li> <li>20 mei 2004 11:38 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:JONCONK.jpg|JONCONK.jpg]]" <em>(permissie Levitt)</em></li> <li>20 mei 2004 11:16 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:JONCONK.jpg|JONCONK.jpg]]" <em>(permissie Levitt)</em></li> <li>20 mei 2004 11:12 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Levittjk.jpg|Levittjk.jpg]]" <em>(friso)</em></li> <li>20 mei 2004 09:05 [[Gebruiker:Moribunt|Moribunt]] heeft ge-upload: "[[:Afbeelding:CannesHaven.jpg|CannesHaven.jpg]]" <em>(Eigen foto.)</em></li> <li>20 mei 2004 08:51 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Weer.jpg|Weer.jpg]]" <em>(weerfoto voor vrt 20 mei 2004 eigen foto)</em></li> <li>20 mei 2004 08:44 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Meidoorn.jpg|Meidoorn.jpg]]" <em>(bloem van eenstijlige meidoorn eigen foto 20 mei)</em></li> <li>20 mei 2004 08:42 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Paardekastanje.jpg|Paardekastanje.jpg]]" <em>(blad en bloem van witte paardekastanje eigen foto 20 mei 2004)</em></li> <li>20 mei 2004 08:30 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Hebdenjk.jpg|Hebdenjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>20 mei 2004 07:24 [[Gebruiker:Dick Bos|Dick Bos]] heeft ge-upload: "[[:Afbeelding:MarxKapital.jpg|MarxKapital.jpg]]" <em>(titelpagina Das Kapital 1867)</em></li> <li>20 mei 2004 03:10 [[Gebruiker:Bart van der Pligt|Bart van der Pligt]] heeft ge-upload: "[[:Afbeelding:Godsavethequeen.jpg|Godsavethequeen.jpg]]" <em>(This image is copyrighted. Its use is contended to be fair use under United States law. )</em></li> <li>20 mei 2004 03:02 [[Gebruiker:Bart van der Pligt|Bart van der Pligt]] heeft ge-upload: "[[:Afbeelding:|Afbeelding:]]" <em>(This image is copyrighted. Its use is contended to be fair use under United States law. )</em></li> <li>20 mei 2004 02:59 [[Gebruiker:Bart van der Pligt|Bart van der Pligt]] heeft ge-upload: "[[:Afbeelding:Godqueen.jpg|Godqueen.jpg]]" <em>(This image is copyrighted. Its use is contended to be fair use under United States law. )</em></li> <li>20 mei 2004 02:58 [[Gebruiker:Bart van der Pligt|Bart van der Pligt]] heeft ge-upload: "[[:Afbeelding:Godqueen.jpg|Godqueen.jpg]]" <em>(This image is copyrighted. Its use is contended to be fair use under United States law. )</em></li> <li>20 mei 2004 02:56 [[Gebruiker:Bart van der Pligt|Bart van der Pligt]] heeft ge-upload: "[[:Afbeelding:Godqueen.jpg|Godqueen.jpg]]" <em>(This image is copyrighted. Its use is contended to be fair use under United States law. )</em></li> <li>20 mei 2004 00:06 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Salisbury.jpg|Salisbury.jpg]]" <em>(Van Engelse Wikipedia. Omschrijving: schilderij van Salisbury Cathedral door John Constable (1776 - 1837). )</em></li> <li>19 mei 2004 23:05 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Dmendeleev.jpg|Dmendeleev.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: 19th century (or early 20th century) photograph. public domain. &#123;&#123;msg:PD}} &#91;&#91;en:Image:Dmendeleev.jpg]])</em></li> <li>19 mei 2004 23:03 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:230px-Wuerfel_rot.jpg|230px-Wuerfel_rot.jpg]]" <em>(Dobbelstenen vanaf Duitse wikipedia, Drei rote Würfel Fotograf: Walter J. Pilsak, Waldsassen 2004 Copyright Status: GNU Freie Dokumentationslizenz, &#91;&#91;de:Bild:Wuerfel rot.jpg]])</em></li> <li>19 mei 2004 23:01 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Windsor_Castle.jpg|Windsor_Castle.jpg]]" <em>(van Engelse pagina)</em></li> <li>19 mei 2004 22:57 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:DjosersPyramid_Saqqara01.jpg|DjosersPyramid_Saqqara01.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: Description de l&#39;image : Pyramide de Djoser&lt;br&gt; Source : Photo de &#91;&#91;w:Uer:Hjr]], original &#91;&#91;w:image:DjosersPyramid Saqqara01.jpg]]&lt;br&gt; Statut : &#91;&#91;GFDL]] &#91;&#91;fr:Image:DjosersPyramid Saqqara01.jpg]])</em></li> <li>19 mei 2004 22:42 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Kluisbestanden.zip|Kluisbestanden.zip]]" <em>(update)</em></li> <li>19 mei 2004 22:32 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Django_Reinhardt.jpg|Django_Reinhardt.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Django Reinhardt as a boy &#91;&#91;en:Image:Django Reinhardt.jpg]])</em></li> <li>19 mei 2004 22:29 [[Gebruiker:Wereldreiziger|Wereldreiziger]] heeft ge-upload: "[[:Afbeelding:P3300146.JPG|P3300146.JPG]]" <em>(Monument José Martí)</em></li> <li>19 mei 2004 22:29 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Waterstof.jpg|Waterstof.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-sv. De beschrijving daar was: &#91;&#91;Bild:H-utseende-stor.jpg]] ---- från eng. wikin &#91;&#91;sv:Bild:H-utseende.jpg]])</em></li> <li>19 mei 2004 22:26 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Waterstof.jpg|Waterstof.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: ;description: Photo de l&#39;&#91;&#91;élément chimique&#124;élément]] &#91;&#91;hydrogène]] sous sa forme pure ;source: Image produite pour Wikipédia par l&#39;utilisateur &#91;&#91;w:en:User:RTC]] ;copyright: &#91;&#91;GFDL]] &#91;&#91;fr:Image:H,1-thumb.jpg]])</em></li> <li>19 mei 2004 22:25 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Karte_Batavia_MKL1888.png|Karte_Batavia_MKL1888.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Historische Karte von Batavia - aus Meyers Konversionlexikon 1888 &#91;&#91;de:Bild:Karte Batavia MKL1888.png]])</em></li> <li>19 mei 2004 22:21 [[Gebruiker:Wereldreiziger|Wereldreiziger]] heeft ge-upload: "[[:Afbeelding:27-3_Binnenplaats_Palacio_de_los_Capitanes_Generales.JPG|27-3_Binnenplaats_Palacio_de_los_Capitanes_Generales.JPG]]" <em>(Eigen foto)</em></li> <li>19 mei 2004 22:18 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Outphase.png|Outphase.png]]" <em>(Golven in tegenfase, naar de Engelse wikipedia, &#91;&#91;en:Image:Outphase.png]])</em></li> <li>19 mei 2004 22:04 [[Gebruiker:Wereldreiziger|Wereldreiziger]] heeft ge-upload: "[[:Afbeelding:Chichicastenango.jpg|Chichicastenango.jpg]]" <em>(Foto zelf genomen)</em></li> <li>19 mei 2004 21:54 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Irrigated_blueberries4046.jpg|Irrigated_blueberries4046.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Irrigated blueberries &#91;&#91;en:Image:Irrigated blueberries4046.jpg]])</em></li> <li>19 mei 2004 20:38 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Alfonso_Portillo.jpg|Alfonso_Portillo.jpg]]" <em>(En: wikipedia)</em></li> <li>19 mei 2004 20:34 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Europa.jpg|Kaart_Europa.jpg]]" <em>(Versie 3)</em></li> <li>19 mei 2004 16:16 [[Gebruiker:Bart van der Pligt|Bart van der Pligt]] heeft ge-upload: "[[:Afbeelding:Nevermind.png|Nevermind.png]]" <em>(van engelse wikipedia: &#39;fair use&#39;)</em></li> <li>19 mei 2004 13:54 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Tand.png|Tand.png]]" <em>(Dwarsdoorsnede van een tand&lt;br&gt;Bron:Bron: National Institutes for Health, http&#58;//www.nidr.nih.gov/spectrum/NIDCR4/4grasec3.htm &lt;br&gt;Oorspronkelijk geupload door Andr&amp;eacute; Engels&lt;br&gt;Vertaald in het Nederlands, uitgebreid en geconverteerd naar PNG door Ben Tels&lt;br&gt;Materiaal op nih.gov-websites is publiek domein tenzij anders vermeld. &#123;&#123;msg:PD}})</em></li> <li>19 mei 2004 13:28 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Waterloo_Bridge.jpg|Waterloo_Bridge.jpg]]" <em>(van Engelse Wikpedia, Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License)</em></li> <li>19 mei 2004 12:57 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:AstronomieDeclinatieRechteKlimming.jpg|AstronomieDeclinatieRechteKlimming.jpg]]" <em>(Schematische weergave van declinatie en rechte klimming als hemelco&amp;ouml;rdinaten&lt;br&gt;Bron:Wikipedia.de&lt;br&gt;Originele naam: AstroDeklinationRektazension.jpg&lt;br&gt;Geupload door Marc Layer met beschrijving Astronomie - Skizze Ekliptik/Frühlingspunkt/Deklination/Rektazension&lt;br&gt;Vertaald in het Nederlands door Ben Tels&lt;br&gt;Aangenomen licentie (gegeven publicatie op Wikipedia.de zonder verdere uitleg): &#123;&#123;msg:GFDL}})</em></li> <li>19 mei 2004 11:44 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Mist.jpg|Mist.jpg]]" <em>(eigen foto )</em></li> <li>19 mei 2004 11:02 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Tomjk.jpg|Tomjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>19 mei 2004 08:07 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Ereprijs2.jpg|Ereprijs2.jpg]]" <em>(eigen foto voor Teun)</em></li> <li>19 mei 2004 08:06 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Ereprijs1.jpg|Ereprijs1.jpg]]" <em>(eigen foto voor Teun)</em></li> <li>19 mei 2004 06:28 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:AlbaniaNumberedDistricts.png|AlbaniaNumberedDistricts.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: numbered map of &#91;&#91;Albania]]n districts &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:AlbaniaNumberedDistricts.png]])</em></li> <li>19 mei 2004 06:20 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Discofeverstamp.jpg|Discofeverstamp.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Celebrate the Century stamps &#91;&#91;en:Image:Discofeverstamp.jpg]])</em></li> <li>19 mei 2004 06:05 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Dipole_field.jpg|Dipole_field.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Dipole field from NASA. Copied from http&#58;//geomag.usgs.gov/intro.html &#123;&#123;msg:PD}} &#91;&#91;en:Image:Dipole field.jpg]])</em></li> <li>19 mei 2004 05:44 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Wiktionary_en-Logo.png|Wiktionary_en-Logo.png]]" <em>(logo wiktionary)</em></li> <li>18 mei 2004 23:05 [[Gebruiker:Gidonb|Gidonb]] heeft ge-upload: "[[:Afbeelding:Israel_flag_medium.png|Israel_flag_medium.png]]" <em>(uit engelse wikipedia; i.p.v. &quot;israhel&quot;-vlag (wellicht freudiaanse fout...))</em></li> <li>18 mei 2004 22:14 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Diogenes_von_Sinope.jpg|Diogenes_von_Sinope.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Diogenes von Sinope aus: Baumeister: Denkmäler des klassischen Altertums. 1885. Band I., Seite 428 &#91;&#91;de:Bild:Diogenes von Sinope.jpg]])</em></li> <li>18 mei 2004 22:08 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Dilbert-animated.jpg|Dilbert-animated.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#91;&#91;Dilbert]] animated series, image from screenshot. Epsiode 212, &quot;The Virtual Employee&quot; &#123;&#123;msg:fairuse}} &#91;&#91;en:Image:Dilbert-animated.jpg]])</em></li> <li>18 mei 2004 22:01 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Dijon_Rue_vieille.jpg|Dijon_Rue_vieille.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: ;Description : Rue vernaculaire du centre de Dijon, bordée de maisons à &#91;&#91;colombage]]s à encorbellement (avancée du premier étage au-dessus de la rue pour gagner de la surface). La rue, aujourd&#39;hui piétonne, a été aménagée au moyen d&#39;un revêtement pavé respectant le caractère du lieu. ;Date : avril 2001, dans l&#39;après-midi ;Auteur : &#91;&#91;Utilisateur:Pontauxchats&#124;Pontauxchats Ier]] ;Licence: Domaine public &#91;&#91;fr:Image:Dijon Rue vieille.jpg]])</em></li> <li>18 mei 2004 22:00 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Dijon_Arc_de_Triomphe.jpg|Dijon_Arc_de_Triomphe.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: ;Description : Arc de Triomphe érigé au centre de Dijon ;Date : avril 2001, dans l&#39;après-midi ;Auteur : &#91;&#91;Utilisateur:Pontauxchats&#124;Pontauxchats Ier]] ;Licence: Domaine public &#91;&#91;fr:Image:Dijon Arc de Triomphe.jpg]])</em></li> <li>18 mei 2004 21:20 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Dickcheney1.jpg|Dickcheney1.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Photo of Dick Cheney as Vice President. &#123;&#123;msg:PD-USGov}} &#91;&#91;en:Image:Dickcheney1.jpg]])</em></li> <li>18 mei 2004 20:45 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Berndavi.JPG|Berndavi.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-es. De beschrijving daar was: imagen copiada de en.wikipedia (Berndavi.JPG) &#91;&#91;es:Imagen:Berndavi.JPG]])</em></li> <li>18 mei 2004 19:35 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Zebra's_Noorder_Dierenpark_Emmen_mei_2004.jpg|Zebra's_Noorder_Dierenpark_Emmen_mei_2004.jpg]]" <em>(Eigen foto Fruggo, vrijgegeven onder GNU-FDL)</em></li> <li>18 mei 2004 19:27 [[Gebruiker:Dick Bos|Dick Bos]] heeft ge-upload: "[[:Afbeelding:Bwsa2.jpg|Bwsa2.jpg]]" <em>(logo BWSA)</em></li> <li>18 mei 2004 17:44 [[Gebruiker:Moribunt|Moribunt]] heeft ge-upload: "[[:Afbeelding:UriGeller.jpg|UriGeller.jpg]]" <em>(Van Engelse Wikipedia, wordt daar omschreven als (fair use of photo from randi.org))</em></li> <li>18 mei 2004 17:16 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Cu2.JPG|Cu2.JPG]]" <em>(Cu2)</em></li> <li>18 mei 2004 14:13 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Tand.gif|Tand.gif]]" <em>(Dwarsdoorsnede van een &#91;&#91;tand]]. Bron: National Institutes for Health, http&#58;//www.nidr.nih.gov/spectrum/NIDCR4/4grasec3.htm. Materiaal op nih.gov-websites is publiek domein tenzij anders vermeld. &#123;&#123;msg:PD}})</em></li> <li>18 mei 2004 13:04 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Svesjk.jpg|Svesjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>18 mei 2004 10:07 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Pantocratorsinai.jpg|Pantocratorsinai.jpg]]" <em>(Afbeelding van Christus &#91;&#91;Pantocrator]]. &#91;&#91;Icoon]] van het Sint Catharinaklooster op de berg Sinai, 6e eeuw.)</em></li> <li>18 mei 2004 09:31 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Stuartjk.jpg|Stuartjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>18 mei 2004 06:50 [[Gebruiker:Wouterhagens|Wouterhagens]] heeft ge-upload: "[[:Afbeelding:Des_isomers.jpg|Des_isomers.jpg]]" <em>(isomeren van DES (Wouter Hagens))</em></li> <li>17 mei 2004 23:05 [[Gebruiker:Pven|Pven]] heeft ge-upload: "[[:Afbeelding:USB_flash_drive.jpg|USB_flash_drive.jpg]]" <em>(USB flash drive bron: Engelse wikipedia)</em></li> <li>17 mei 2004 22:10 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Diamant_gitter.png|Diamant_gitter.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Diamant-FCC-Gitter&lt;br&gt;Urheber: Anton (rp) 2004&lt;br&gt;Nutzungsrechte enspr. GNU free licence freigegeben. &#91;&#91;de:Bild:diamant gitter.png]])</em></li> <li>17 mei 2004 22:09 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Brillanten.jpg|Brillanten.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: *Beschreibung: **Diamanten im Brillantschliff *Quelle: **Fotografiert am 04.02.2004 *Fotograf: **Mario Sarto *Lizenzstatus: **GNU FDL &#91;&#91;de:Bild:Brillanten.jpg]])</em></li> <li>17 mei 2004 22:05 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Toonladder_van_Pythagoras-e.jpg|Toonladder_van_Pythagoras-e.jpg]]" <em>(eigen afbeelding, vernieuwd)</em></li> <li>17 mei 2004 21:53 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:DES_structure.png|DES_structure.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: DES structural drawing - Created using ISIS/Draw 2.5 and Paint Shop Pro 8.1 by Catbar. &#91;&#91;User:Catbar&#124;Brian Rock]] 03:48, 27 Jan 2004 (UTC) &#91;&#91;en:Image:DES structure.png]])</em></li> <li>17 mei 2004 21:26 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Large_Detroit_Landsat.jpg|Large_Detroit_Landsat.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: A large Landsat of Detroit &#91;&#91;en:Image:Large Detroit Landsat.jpg]])</em></li> <li>17 mei 2004 21:20 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Toonladder_van_Pythagoras3e.jpg|Toonladder_van_Pythagoras3e.jpg]]" <em>(eigen afbeelding)</em></li> <li>17 mei 2004 21:11 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Stellerskelett.png|Stellerskelett.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: nach einer Lithographie von J.F. Brandt (1802-1879) &#91;&#91;de:Bild:Stellerskelett.png]])</em></li> <li>17 mei 2004 21:11 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Stellerkuh.jpg|Stellerkuh.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: zeitgenössische Zeichnung von Sven Waxell &#91;&#91;de:Bild:Stellerkuh.jpg]])</em></li> <li>17 mei 2004 21:07 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:As11_36_5390.jpg|As11_36_5390.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Buzz in LM PD NASA image &#123;&#123;msg:PD}} &#91;&#91;en:Image:As11 36 5390.jpg]])</em></li> <li>17 mei 2004 21:07 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Aldrin_near_Module_leg.jpg|Aldrin_near_Module_leg.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Astronaut Edwin E. Aldrin near a leg of the Lunar Module, PD NASA photo &#91;&#91;en:Image:Aldrin near Module leg.jpg]])</em></li> <li>17 mei 2004 20:27 [[Gebruiker:Johanboie|Johanboie]] heeft ge-upload: "[[:Afbeelding:CYTOKINE.LAB|CYTOKINE.LAB]]" <em>(Cytokines en ziekten, eigen file in WP5.1)</em></li> <li>17 mei 2004 20:09 [[Gebruiker:Johanboie|Johanboie]] heeft ge-upload: "[[:Afbeelding:VACCINAT.THE|VACCINAT.THE]]" <em>(Vaccinaties , eigen file in WP5.1)</em></li> <li>17 mei 2004 20:01 [[Gebruiker:Johanboie|Johanboie]] heeft ge-upload: "[[:Afbeelding:ZWANGERS.GYN|ZWANGERS.GYN]]" <em>(Zwangerschap en ziekten, eigen file in WP5.1)</em></li> <li>17 mei 2004 19:58 [[Gebruiker:Johanboie|Johanboie]] heeft ge-upload: "[[:Afbeelding:CARLONG.TUM|CARLONG.TUM]]" <em>(Longkankerfile in WP5.1)</em></li> <li>17 mei 2004 19:55 [[Gebruiker:Johanboie|Johanboie]] heeft ge-upload: "[[:Afbeelding:ASTBRONC.COL|ASTBRONC.COL]]" <em>(Astma bronchiale)</em></li> <li>17 mei 2004 19:54 [[Gebruiker:Johanboie|Johanboie]] heeft ge-upload: "[[:Afbeelding:Astma_bronchiale|Astma_bronchiale]]" <em>(Astma bronchiale)</em></li> <li>17 mei 2004 18:15 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:London_Bridge3.jpg|London_Bridge3.jpg]]" <em>(Van Engelse pagina: Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License,)</em></li> <li>17 mei 2004 18:03 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:London_Bridge2.jpg|London_Bridge2.jpg]]" <em>(van Engelse pagina: This image is copyrighted. The license holder allows anyone to use it for any purpose, provided that photo credit is given to Aran Johnson. )</em></li> <li>17 mei 2004 18:01 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:|Afbeelding:]]" <em>(van Engelse pagina: This image is copyrighted. The license holder allows anyone to use it for any purpose, provided that photo credit is given to Aran Johnson. )</em></li> <li>17 mei 2004 17:52 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:London_Bridge1.jpg|London_Bridge1.jpg]]" <em>(van engelse pagina: This image has been released into the public domain by the copyright holder, or its copyright has expired. This applies worldwide.)</em></li> <li>17 mei 2004 17:48 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Des_Moines_skyline_night.jpg|Des_Moines_skyline_night.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: A photo of the downtown Des Moines, IA skyline at night. This image is in the public domain. &#91;&#91;en:Image:Des Moines skyline night.jpg]])</em></li> <li>17 mei 2004 17:46 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:|Afbeelding:]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: A photo of the downtown Des Moines, IA skyline at night. This image is in the public domain. &#91;&#91;en:Image:Des Moines skyline night.jpg]])</em></li> <li>17 mei 2004 17:44 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:|Afbeelding:]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: A photo of the downtown Des Moines, IA skyline at night. This image is in the public domain. &#91;&#91;en:Image:Des Moines skyline night.jpg]])</em></li> <li>17 mei 2004 17:43 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:IAMap-doton-DesMoines.PNG|IAMap-doton-DesMoines.PNG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;msg:GFDL}}&lt;br&gt;Adapted from Wikipedia&#39;s IA county maps by Seth Ilys. &#91;&#91;en:Image:IAMap-doton-DesMoines.PNG]])</em></li> <li>17 mei 2004 17:38 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Alotokoty001.png|Alotokoty001.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-pl. De beschrijving daar was: Lotokot malajski - ilustracja z pocz&amp;#261;tku wieku &#91;&#91;pl:Grafika:Alotokoty001.png]])</em></li> <li>17 mei 2004 14:31 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Noord_amerika.jpg|Noord_amerika.jpg]]" <em>(Kaart van Noord-Amerika&lt;br&gt;Bron:CIA World Factbook&lt;br&gt;Vertaald door Ben Tels&lt;br&gt;&#123;&#123;msg:CIA}})</em></li> <li>17 mei 2004 12:43 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:|Afbeelding:]]" <em>(Fritz8 - print)</em></li> <li>17 mei 2004 11:05 [[Gebruiker:Antonius|Antonius]] heeft ge-upload: "[[:Afbeelding:5-kruis-vlinders.gif|5-kruis-vlinders.gif]]" <em>(www10.brinkster.com via google)</em></li> <li>17 mei 2004 10:20 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Carte_France_Département_14.png|Carte_France_Département_14.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#39;&#39;&#39;Credit(s):&#39;&#39;&#39; &#91;&#91;:fr:Utilisateur:Rinaldum]] &#39;&#39;&#39;Source:&#39;&#39;&#39; french wikipedia &#39;&#39;&#39;License:&#39;&#39;&#39; &#91;&#91;GFDL]] &#91;&#91;fr:Image:Carte France Département 14.png]] &#91;&#91;en:Image:Carte France Département 14.png]])</em></li> <li>17 mei 2004 10:19 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:|Afbeelding:]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#39;&#39;&#39;Credit(s):&#39;&#39;&#39; &#91;&#91;:fr:Utilisateur:Rinaldum]] &#39;&#39;&#39;Source:&#39;&#39;&#39; french wikipedia &#39;&#39;&#39;License:&#39;&#39;&#39; &#91;&#91;GFDL]] &#91;&#91;fr:Image:Carte France Département 14.png]] &#91;&#91;en:Image:Carte France Département 14.png]])</em></li> <li>17 mei 2004 09:49 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Ken_n_dennis.jpg|Ken_n_dennis.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Photo of &#91;&#91;UNIX]] creators &#91;&#91;Ken Thompson]] and &#91;&#91;Dennis Ritchie]]. from the latest edition of the &#91;&#91;Jargon File]], http&#58;//www.catb.org/~esr/jargon/html/U/Unix.html &#91;&#91;en:Image:Ken n dennis.jpg]])</em></li> <li>17 mei 2004 09:46 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:|Afbeelding:]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Photo of &#91;&#91;UNIX]] creators &#91;&#91;Ken Thompson]] and &#91;&#91;Dennis Ritchie]]. from the latest edition of the &#91;&#91;Jargon File]], http&#58;//www.catb.org/~esr/jargon/html/U/Unix.html &#91;&#91;en:Image:Ken n dennis.jpg]])</em></li> <li>17 mei 2004 09:16 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kuzjk.jpg|Kuzjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>17 mei 2004 07:56 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:LocatieKibbelgaarn.png|LocatieKibbelgaarn.png]]" <em>(Locatie van Kibbelgaarn in de gemeente veendam, bewerkt kaartje van &#91;&#91;gebruiker:Mtcv]], &#123;&#123;msg:GFDL}} )</em></li> <li>17 mei 2004 07:53 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Ravel_bolero_drum_rhythtm.png|Ravel_bolero_drum_rhythtm.png]]" <em>(Vanaf Engelse wikipedia The snare drum ostinato from Maurice Ravel&#39;s Bolero. Only two bars of one part of a much larger orchestral work, so I believe this is fair use and would be fair use in almost all contexts. )</em></li> <li>17 mei 2004 07:46 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Hyssopus_officinalis.jpg|Hyssopus_officinalis.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: blühender Ysop *Beschreibung: blühender Ysop *Quelle: &#91;http&#58;//www.boga.ruhr-uni-bochum.de/html/Hyssopus_officinalis_Foto.html Bildersammlung Botanischer Garten der Ruhr-Universität Bochum] *Fotograf oder Zeichner: Armin Jagel *Andere Versionen: ./. *Lizenzstatus: GNU FDL &#61;= Lizenzstatus == Die Verwendung von Bildern aus der Sammlung wurde auf meine Anfrage (mit außdrücklichem Verweis auf die GNU-FDL) hin mit freundlicher Genehmigung zur Verfügung gestellt von &quot;Botanischer Garten Universität Bochum&quot; (Herr Jagel). Siehe &#91;http&#58;//de.wikipedia.org/wiki/Bild:Mahonia_aquifolium_ja.jpg] -- &#91;&#91;Benutzer:Rainer Bielefeld&#124;RainerBi]] 17:38, 2. Mai 2004 (CEST) &#91;&#91;de:Bild:Hyssopus officinalis.jpg]])</em></li> <li>17 mei 2004 07:35 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:|Afbeelding:]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: blühender Ysop *Beschreibung: blühender Ysop *Quelle: &#91;http&#58;//www.boga.ruhr-uni-bochum.de/html/Hyssopus_officinalis_Foto.html Bildersammlung Botanischer Garten der Ruhr-Universität Bochum] *Fotograf oder Zeichner: Armin Jagel *Andere Versionen: ./. *Lizenzstatus: GNU FDL &#61;= Lizenzstatus == Die Verwendung von Bildern aus der Sammlung wurde auf meine Anfrage (mit außdrücklichem Verweis auf die GNU-FDL) hin mit freundlicher Genehmigung zur Verfügung gestellt von &quot;Botanischer Garten Universität Bochum&quot; (Herr Jagel). Siehe &#91;http&#58;//de.wikipedia.org/wiki/Bild:Mahonia_aquifolium_ja.jpg] -- &#91;&#91;Benutzer:Rainer Bielefeld&#124;RainerBi]] 17:38, 2. Mai 2004 (CEST) &#91;&#91;de:Bild:Hyssopus officinalis.jpg]])</em></li> <li>17 mei 2004 07:32 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:LocatieKibbelgaarn.png|LocatieKibbelgaarn.png]]" <em>(Locatie van Kibbelgaarn in de gemeente veendam, bewerkt kaartje van &#91;&#91;gebruiker:Mtcv]], &#123;&#123;msg:GFDL}} Poging 3)</em></li> <li>17 mei 2004 07:27 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:|Afbeelding:]]" <em>(Locatie van Kibbelgaarn in de gemeente veendam, bewerkt kaartje van &#91;&#91;gebruiker:Mtcv]], &#123;&#123;msg:GFDL}})</em></li> <li>17 mei 2004 07:24 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:|Afbeelding:]]" <em>(Locatie van Kibbelgaarn in de gemeente veendam, bewerkt kaartje van &#91;&#91;gebruiker:Mtcv]], &#123;&#123;msg:GFDL}})</em></li> <li>17 mei 2004 06:27 [[Gebruiker:Jboie|Jboie]] heeft ge-upload: "[[:Afbeelding:ASTBRONC.COL|ASTBRONC.COL]]" <em>(eigen file)</em></li> <li>17 mei 2004 02:11 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Toonladder_van_Pythagoras3.jpg|Toonladder_van_Pythagoras3.jpg]]" <em>(herziene, eigen afbeelding)</em></li> <li>17 mei 2004 02:10 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Intervallen_van_Pythagoras3.jpg|Intervallen_van_Pythagoras3.jpg]]" <em>(herziene, eigen afbeelding)</em></li> <li>17 mei 2004 00:43 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Groepjes.PNG|Groepjes.PNG]]" <em>(Eerdere versie hersteld)</em></li> <li>17 mei 2004 00:38 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Toonladder_van_Pythagoras2.jpg|Toonladder_van_Pythagoras2.jpg]]" <em>(alweer eigen afbeelding...)</em></li> <li>17 mei 2004 00:34 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Toonladder_van_Pythagoras.jpg|Toonladder_van_Pythagoras.jpg]]" <em>(vernieuwde, eigen afbeelding)</em></li> <li>16 mei 2004 23:44 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Intervallen_van_Pythagoras.jpg|Intervallen_van_Pythagoras.jpg]]" <em>(eigen afbeelding)</em></li> <li>16 mei 2004 23:26 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Toonladder_van_Pythagoras.jpg|Toonladder_van_Pythagoras.jpg]]" <em>(eigen afbeelding, nogmaals...)</em></li> <li>16 mei 2004 23:20 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Toonladder_van_Pythagoras.jpg|Toonladder_van_Pythagoras.jpg]]" <em>(eigen afbeelding)</em></li> <li>16 mei 2004 23:16 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Toonladder_van_Pythagoras.png|Toonladder_van_Pythagoras.png]]" <em>(eigen afbeelding)</em></li> <li>16 mei 2004 20:58 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Motorpolitie.jpg|Motorpolitie.jpg]]" <em>(Motorpolitie tijdens de wielerwedstrijd &quot;De Ster van Walcheren&quot;. Foto: Frans Meijer, http&#58;//www.stervanwalcheren.nl. Overname toegestaan met bronvermelding.)</em></li> <li>16 mei 2004 20:05 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Demonstratie_tegen_softwarepatenten_16mei2004-2.jpeg|Demonstratie_tegen_softwarepatenten_16mei2004-2.jpeg]]" <em>(vrij van auteursrechten)</em></li> <li>16 mei 2004 20:04 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Demonstratie_tegen_softwarepatenten_16mei20041.jpeg|Demonstratie_tegen_softwarepatenten_16mei20041.jpeg]]" <em>(vrij van auteursrechten)</em></li> <li>16 mei 2004 20:00 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Leda.jpg|Leda.jpg]]" <em>(Leda met de zwaan van Da Vinci (van Duitse Wiki))</em></li> <li>16 mei 2004 19:58 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Pan.jpg|Pan.jpg]]" <em>(Pan met een geit (van Engelse Wiki))</em></li> <li>16 mei 2004 19:45 [[Gebruiker:Johi|Johi]] heeft ge-upload: "[[:Afbeelding:MuseumDeMoriaan2.jpg|MuseumDeMoriaan2.jpg]]" <em>(Pijpen en Plattelmuseum De Moriaan in Gouda. Eigen foto, gebruik vrij)</em></li> <li>16 mei 2004 19:28 [[Gebruiker:Johi|Johi]] heeft ge-upload: "[[:Afbeelding:GevelsteenDeMoriaan.jpg|GevelsteenDeMoriaan.jpg]]" <em>(Gevelsteen Pijpen en Plateelmuseum in Gouda. Eigen foto, gebruik vrij. )</em></li> <li>16 mei 2004 19:27 [[Gebruiker:Johi|Johi]] heeft ge-upload: "[[:Afbeelding:MuseumDeMoriaan.jpg|MuseumDeMoriaan.jpg]]" <em>(Pijpen en plateelmuseum De Moriaan in Gouda. Eigen foto, gebruik vrij. )</em></li> <li>16 mei 2004 19:25 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Westminster_Bridge.jpg|Westminster_Bridge.jpg]]" <em>(Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License)</em></li> <li>16 mei 2004 17:18 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Pronkboon_zaadcloseup.jpg|Pronkboon_zaadcloseup.jpg]]" <em>(zelfgemaakte foto van pronkboonzaad)</em></li> <li>16 mei 2004 16:00 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Victoriameer.png|Kaart_Victoriameer.png]]" <em>(Kaart Victoriameer, eigen brouwsel)</em></li> <li>16 mei 2004 13:36 [[Gebruiker:Dexsuperior|Dexsuperior]] heeft ge-upload: "[[:Afbeelding:Overzicht.jpg|Overzicht.jpg]]" <em>(Dit is een overzicht van beide restanten van de burchtmuur van kasteel Paddenpoel te Leiden. Gemaakt door Rob Honig, die vrijwillig afstand doet van alle rechten.)</em></li> <li>16 mei 2004 13:32 [[Gebruiker:Dexsuperior|Dexsuperior]] heeft ge-upload: "[[:Afbeelding:Paddenpoel.jpg|Paddenpoel.jpg]]" <em>(Dit is een overzicht van de restanten van kasteel Paddenpoel te Leiden. Gemaakt door Rob Honig, die vrijwillig afstand doet van alle rechten.)</em></li> <li>16 mei 2004 13:31 [[Gebruiker:Dexsuperior|Dexsuperior]] heeft ge-upload: "[[:Afbeelding:Muur2.jpg|Muur2.jpg]]" <em>(Dit is een van de restanten van de burchtmuur van kasteel Paddenpoel te Leiden. Gemaakt door Rob Honig, die vrijwillig afstand doet van alle rechten.)</em></li> <li>16 mei 2004 13:31 [[Gebruiker:Dexsuperior|Dexsuperior]] heeft ge-upload: "[[:Afbeelding:Muur1.jpg|Muur1.jpg]]" <em>(Dit is een van de restanten van de burchtmuur van kasteel Paddenpoel te Leiden. Gemaakt door Rob Honig, die vrijwillig afstand doet van alle rechten.)</em></li> <li>16 mei 2004 13:13 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:British_museum.jpg|British_museum.jpg]]" <em>(van engelse pagina: Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License,)</em></li> <li>16 mei 2004 12:35 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Unzjk.jpg|Unzjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>16 mei 2004 12:06 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:PisaUitzichtArno.jpg|PisaUitzichtArno.jpg]]" <em>(Uitzicht over de Arno in Pisa. Eigen foto, onder GFDL.)</em></li> <li>16 mei 2004 11:30 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:IndiaAssam.png|IndiaAssam.png]]" <em>(En: wikipedia)</em></li> <li>16 mei 2004 10:18 [[Gebruiker:Moribunt|Moribunt]] heeft ge-upload: "[[:Afbeelding:250px-NickBergandFiveMen.JPG|250px-NickBergandFiveMen.JPG]]" <em>(van Engelse Wikipedia)</em></li> <li>16 mei 2004 10:18 [[Gebruiker:Moribunt|Moribunt]] heeft ge-upload: "[[:Afbeelding:150px-NickBergAP.jpg|150px-NickBergAP.jpg]]" <em>(van Engelse Wikipedia)</em></li> <li>16 mei 2004 09:46 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Vink.jpg|Vink.jpg]]" <em>(vink eigen foto )</em></li> <li>16 mei 2004 09:45 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Vizsla.jpg|Vizsla.jpg]]" <em>(vizsla pup eigen foto en eigen hond)</em></li> <li>16 mei 2004 08:28 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Bougainville.gif|Bougainville.gif]]" <em>(van google afbeeldingen)</em></li> <li>16 mei 2004 08:20 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Bougainv.gif|Bougainv.gif]]"</li> <li>16 mei 2004 08:19 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Bmap.bmp|Bmap.bmp]]"</li> <li>15 mei 2004 22:47 [[Gebruiker:Johi|Johi]] heeft ge-upload: "[[:Afbeelding:Woonhuis_PBas.jpg|Woonhuis_PBas.jpg]]" <em>(Fictief woonhuis P. Bas, Gouda. Eigen foto, gebruik vrij)</em></li> <li>15 mei 2004 21:51 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:AnchusaSempervirens-plant-kl.jpg|AnchusaSempervirens-plant-kl.jpg]]" <em>(uit de serie onze tuin, &#123;&#123;msg:eigenwerk}})</em></li> <li>15 mei 2004 21:51 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:AnchusaSempervirens-plant-hr.jpg|AnchusaSempervirens-plant-hr.jpg]]" <em>(uit de serie onze tuin, &#123;&#123;msg:eigenwerk}})</em></li> <li>15 mei 2004 21:50 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:AnchusaSempervirens-bloem-kl.jpg|AnchusaSempervirens-bloem-kl.jpg]]" <em>(uit de serie onze tuin, &#123;&#123;msg:eigenwerk}})</em></li> <li>15 mei 2004 21:50 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:AnchusaSempervirens-bloem-hr.jpg|AnchusaSempervirens-bloem-hr.jpg]]" <em>(uit de serie onze tuin, &#123;&#123;msg:eigenwerk}})</em></li> <li>15 mei 2004 21:47 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:AnchusaSempervirens-blad-kl.jpg|AnchusaSempervirens-blad-kl.jpg]]" <em>(uit de serie onze tuin, &#123;&#123;msg:eigenwerk}})</em></li> <li>15 mei 2004 21:47 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:AnchusaSempervirens-blad-hr.jpg|AnchusaSempervirens-blad-hr.jpg]]" <em>(uit de serie onze tuin, &#123;&#123;msg:eigenwerk}})</em></li> <li>15 mei 2004 18:54 [[Gebruiker:Willemdd|Willemdd]] heeft ge-upload: "[[:Afbeelding:MoerzekeKerk.jpg|MoerzekeKerk.jpg]]" <em>(classicistische Sint-Martinuskerk te Moerzeke, eigen foto)</em></li> <li>15 mei 2004 15:36 [[Gebruiker:Koen079|Koen079]] heeft ge-upload: "[[:Afbeelding:Luchtsmal.JPG|Luchtsmal.JPG]]" <em>(Foto vanuit NH Hotel, uitzicht op station Zoetermeer &amp; omgeving. Foto is door mijzelf genomen, dus geen probleem.)</em></li> <li>15 mei 2004 15:22 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:BrabantStadLocatie.png|BrabantStadLocatie.png]]" <em>(Locatie BrabantStad. Eigen werk, vrij te gebruiken.)</em></li> <li>15 mei 2004 14:41 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Big_ben.jpg|Big_ben.jpg]]" <em>(The picture was taken by David Sky on vacation in 1998 on a 35mm flm camera and scanned. )</em></li> <li>15 mei 2004 13:28 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Downing_Street.jpg|Downing_Street.jpg]]" <em>(Prime Minister Tony Blair and Vice President Dick Cheney in front of Number 10 Downing Street on March 11, 2002. White House photo by David Bohrer. &#91;1] This image has been released into the public domain by the copyright holder, or its copyright has expired. This applies worldwide)</em></li> <li>15 mei 2004 13:06 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Magvdk.jpg|Magvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>15 mei 2004 12:45 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Dolmajk.jpg|Dolmajk.jpg]]" <em>(Fritz8 - print)</em></li> <li>15 mei 2004 12:08 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Dolmatov.jpg|Dolmatov.jpg]]" <em>(Titkov)</em></li> <li>15 mei 2004 11:27 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Kruipende_Boterbloem.jpg|Kruipende_Boterbloem.jpg]]" <em>(zelfgemaakte foto van bloem van kruipende boterbloem)</em></li> <li>15 mei 2004 11:23 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:SP1001.jpg|SP1001.jpg]]" <em>(Andre Engels. &#123;&#123;msg:eigenwerk}})</em></li> <li>15 mei 2004 11:18 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Aardbei_bloembodem_vlezig.jpg|Aardbei_bloembodem_vlezig.jpg]]" <em>(zelfgemaakte foto; dwarsdoorsnede door bloem van aardbei)</em></li> <li>15 mei 2004 09:55 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:NijlKrokodil.jpg|NijlKrokodil.jpg]]" <em>(Nijkrokodil van wiki-en (PD aldaar))</em></li> <li>15 mei 2004 09:48 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Alligator.jpg|Alligator.jpg]]" <em>(Alligator van wiki-en)</em></li> <li>15 mei 2004 09:45 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:MayotteKaart.jpg|MayotteKaart.jpg]]" <em>(Mayotte van wiki-en (oorspronkelijk van universioteit van texas, en derhalve PD) )</em></li> <li>15 mei 2004 09:22 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:SomalilandLocatie.png|SomalilandLocatie.png]]" <em>(2e poging - nu via .bmp en MS-photo-editor)</em></li> <li>15 mei 2004 09:20 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:SomalilandLocatie.png|SomalilandLocatie.png]]" <em>(Locatie somaliland (aangepast van Somalie-Locatie.png van wiki-nl) )</em></li> <li>15 mei 2004 09:08 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:SomalilandKaart.png|SomalilandKaart.png]]" <em>(Kaart Somaliland van wiki-en (indirect van CIA) )</em></li> <li>15 mei 2004 09:05 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:SomalilandVlag.png|SomalilandVlag.png]]" <em>(Vlag Somaliland van wiki-en verkleind en omgezet naar png)</em></li> <li>14 mei 2004 21:45 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SymphytumOfficinale-stengel-hr.jpg|SymphytumOfficinale-stengel-hr.jpg]]" <em>(&#123;&#123;msg:eigenwerk}})</em></li> <li>14 mei 2004 21:43 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SymphytumOfficinale-plant-hr.jpg|SymphytumOfficinale-plant-hr.jpg]]" <em>(&#123;&#123;msg:eigenwerk}})</em></li> <li>14 mei 2004 21:36 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SymphytumOfficinale-bloem-wit-hr.jpg|SymphytumOfficinale-bloem-wit-hr.jpg]]" <em>(eigen werk)</em></li> <li>14 mei 2004 21:34 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SymphytumOfficinale-bloem-roze-hr.jpg|SymphytumOfficinale-bloem-roze-hr.jpg]]" <em>(eigen werk)</em></li> <li>14 mei 2004 21:32 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SymphytumOfficinale-bloem-pa-hr.jpg|SymphytumOfficinale-bloem-pa-hr.jpg]]" <em>(eigen werk)</em></li> <li>14 mei 2004 21:27 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SymphytumOfficinale-bloem-wit-kl.jpg|SymphytumOfficinale-bloem-wit-kl.jpg]]" <em>(eigen werk)</em></li> <li>14 mei 2004 21:26 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SymphytumOfficinale-plant-kl.jpg|SymphytumOfficinale-plant-kl.jpg]]" <em>(eigen werk)</em></li> <li>14 mei 2004 21:26 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SymphytumOfficinale-stengel-kl.jpg|SymphytumOfficinale-stengel-kl.jpg]]" <em>(eigen werk)</em></li> <li>14 mei 2004 21:26 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SymphytumOfficinale-bloem-wit-kl.jpg|SymphytumOfficinale-bloem-wit-kl.jpg]]" <em>(eigen werk)</em></li> <li>14 mei 2004 21:25 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SymphytumOfficinale-bloem-roze-kl.jpg|SymphytumOfficinale-bloem-roze-kl.jpg]]" <em>(eigen werk)</em></li> <li>14 mei 2004 21:25 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SanguisorbaMinor-bloem-kl.jpg|SanguisorbaMinor-bloem-kl.jpg]]" <em>(Saffier)</em></li> <li>14 mei 2004 21:24 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SymphytumOfficinale-bloem-pa-kl.jpg|SymphytumOfficinale-bloem-pa-kl.jpg]]" <em>(eigen werk)</em></li> <li>14 mei 2004 20:01 [[Gebruiker:Koendw|Koendw]] heeft ge-upload: "[[:Afbeelding:Yahtzee_voorbeeld8.png|Yahtzee_voorbeeld8.png]]" <em>(Voorbeeld yahtzee-combinatie; eigen werk.)</em></li> <li>14 mei 2004 20:01 [[Gebruiker:Koendw|Koendw]] heeft ge-upload: "[[:Afbeelding:Yahtzee_voorbeeld7.png|Yahtzee_voorbeeld7.png]]" <em>(Voorbeeld yahtzee-combinatie; eigen werk.)</em></li> <li>14 mei 2004 20:01 [[Gebruiker:Koendw|Koendw]] heeft ge-upload: "[[:Afbeelding:Yahtzee_voorbeeld6.png|Yahtzee_voorbeeld6.png]]" <em>(Voorbeeld yahtzee-combinatie; eigen werk.)</em></li> <li>14 mei 2004 20:01 [[Gebruiker:Koendw|Koendw]] heeft ge-upload: "[[:Afbeelding:Yahtzee_voorbeeld5.png|Yahtzee_voorbeeld5.png]]" <em>(Voorbeeld yahtzee-combinatie; eigen werk.)</em></li> <li>14 mei 2004 20:00 [[Gebruiker:Koendw|Koendw]] heeft ge-upload: "[[:Afbeelding:Yahtzee_voorbeeld4.png|Yahtzee_voorbeeld4.png]]" <em>(Voorbeeld yahtzee-combinatie; eigen werk.)</em></li> <li>14 mei 2004 20:00 [[Gebruiker:Koendw|Koendw]] heeft ge-upload: "[[:Afbeelding:Yahtzee_voorbeeld3.png|Yahtzee_voorbeeld3.png]]" <em>(Voorbeeld yahtzee-combinatie; eigen werk.)</em></li> <li>14 mei 2004 20:00 [[Gebruiker:Koendw|Koendw]] heeft ge-upload: "[[:Afbeelding:Yahtzee_voorbeeld2.png|Yahtzee_voorbeeld2.png]]" <em>(Voorbeeld yahtzee-combinatie; eigen werk.)</em></li> <li>14 mei 2004 19:49 [[Gebruiker:Koendw|Koendw]] heeft ge-upload: "[[:Afbeelding:Yahtzee_voorbeeld1.png|Yahtzee_voorbeeld1.png]]" <em>(Voorbeeld yahtzee-combinatie; eigen werk.)</em></li> <li>14 mei 2004 18:22 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Montenei.gif|Montenei.gif]]"</li> <li>14 mei 2004 18:21 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Monteneg.gif|Monteneg.gif]]"</li> <li>14 mei 2004 12:39 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Belajk.jpg|Belajk.jpg]]" <em>(Fritz8 - print)</em></li> <li>14 mei 2004 11:43 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Scheergerei.JPG|Scheergerei.JPG]]" <em>(Eigen foto)</em></li> <li>14 mei 2004 11:33 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Ae_dachmarke_frei_rgb.jpg|Ae_dachmarke_frei_rgb.jpg]]" <em>(Restricted use: can be used with Wikipedia article)</em></li> <li>14 mei 2004 11:22 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:PRIXARS_RGB.jpg|PRIXARS_RGB.jpg]]" <em>(Beperkte toestemming)</em></li> <li>14 mei 2004 09:49 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Suspoljk.jpg|Suspoljk.jpg]]" <em>(Fritz8 - print)</em></li> <li>13 mei 2004 22:32 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Oostvaardersplassen3.JPG|Oostvaardersplassen3.JPG]]" <em>(Eigen foto)</em></li> <li>13 mei 2004 22:31 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Oostvaardersplassen2.JPG|Oostvaardersplassen2.JPG]]" <em>(Eigen foto)</em></li> <li>13 mei 2004 22:31 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Oostvaardersplassen1.JPG|Oostvaardersplassen1.JPG]]" <em>(Eigen foto)</em></li> <li>13 mei 2004 21:43 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Denia.jpg|Denia.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: The Denia fortress &#91;&#91;en:Image:denia.jpg]])</em></li> <li>13 mei 2004 21:38 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Demeter2_MKL1888.png|Demeter2_MKL1888.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Abbildung - aus &#91;&#91;Meyers Konversationslexikon]] von 1888 - Public Domain - Demeter und Persephone, den jungen Triptolemos weihend (Relief von Cleufis, Athen) &#91;&#91;de:Bild:Demeter2 MKL1888.png]])</em></li> <li>13 mei 2004 21:35 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Demeter_MKL1888.png|Demeter_MKL1888.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Abbildung aus &#91;&#91;Meyers Konversationslexikon]] von 1888 - Public Domain - Demeter (Relief aus Pompeji) &#91;&#91;de:Bild:Demeter MKL1888.png]])</em></li> <li>13 mei 2004 21:31 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:NileDelta-EO.JPG|NileDelta-EO.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;msg:PD}} NASA image of Nile Delta, taken by &#91;&#91;MISR]] sattelite on January 30, 2001. Cropped. &#91;&#91;en:Image:NileDelta-EO.JPG]])</em></li> <li>13 mei 2004 21:25 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Deimos2.jpg|Deimos2.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Deimos Gesamtansicht, Nasa Public Domain, Viking 2 (nachb.) &#91;&#91;de:Bild:Deimos2.jpg]])</em></li> <li>13 mei 2004 21:19 [[Gebruiker:R.f.pels|R.f.pels]] heeft ge-upload: "[[:Afbeelding:Screenie.png|Screenie.png]]" <em>(KDE Screenshot, GPL)</em></li> <li>13 mei 2004 21:15 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Boudiccastatue.jpg|Boudiccastatue.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-ms. De beschrijving daar was: Sumber Wikipedia Inggeris. &#91;&#91;ms:Imej:boudiccastatue.jpg]])</em></li> <li>13 mei 2004 21:14 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:NederlandRechterlijkeIndeling.png|NederlandRechterlijkeIndeling.png]]" <em>(foutje eruit)</em></li> <li>13 mei 2004 21:12 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Hindenburg_Zeppelin.jpg|Hindenburg_Zeppelin.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is an image of the infamous Hindenburg Zeppelin, which on May 6, 1937 was destroyed when its hydrogen gas-filled envelope caught fire. See &#91;&#91;Hindenburg disaster]] &#91;&#91;en:Image:Hindenburg.jpg]] )</em></li> <li>13 mei 2004 21:07 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Hindenburg.jpg|Hindenburg.jpg]]" <em>(Eerdere versie hersteld)</em></li> <li>13 mei 2004 21:06 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Hindenburg.jpg|Hindenburg.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is an image of the infamous Hindenburg Zeppelin, which on May 6, 1937 was destroyed when its hydrogen gas-filled envelope caught fire. See &#91;&#91;Hindenburg disaster]] &#91;&#91;en:Image:Hindenburg.jpg]])</em></li> <li>13 mei 2004 20:59 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:NederlandRechterlijkeIndeling.png|NederlandRechterlijkeIndeling.png]]" <em>(Kaart rechterlijke indeling, eigen werk, &#123;&#123;msg:PD}})</em></li> <li>13 mei 2004 20:50 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Lower_saxony_ol.png|Lower_saxony_ol.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Karte Niedersachsens mit dem Landkreis Oldenburg &#91;&#91;de:Bild:Lower saxony ol.png]])</em></li> <li>13 mei 2004 20:47 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cerebellum.png|Cerebellum.png]]" <em>(Vanaf Duitse wikipedia, &#91;&#91;de:Bild:Cerebellum.png]])</em></li> <li>13 mei 2004 20:38 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Acetylcholine.png|Acetylcholine.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Structure of &#91;&#91;acetylcholine]], created with JChemPaint. &#91;&#91;en:Image:acetylcholine.png]])</em></li> <li>13 mei 2004 20:16 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Tangram_diagram.png|Tangram_diagram.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Diagram of a tangram. Made by &#91;&#91;User:Tarquin&#124;Tarquin]] in Adobe Illustrator. Contact me if you need the source file. &#91;&#91;en:Image:Tangram diagram.png]])</em></li> <li>13 mei 2004 20:09 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:TrifoliumDubium-bloem-kl.jpg|TrifoliumDubium-bloem-kl.jpg]]" <em>(eigen foto, industrieterrein Goudse poort, Gouda, 12 mei 2004)</em></li> <li>13 mei 2004 20:08 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SanguisorbaMinor-plant-kl.jpg|SanguisorbaMinor-plant-kl.jpg]]" <em>(eigen foto, industrieterrein Goudse poort, Gouda, 12 mei 2004)</em></li> <li>13 mei 2004 20:08 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:TrifoliumDubium-bloem-hr.jpg|TrifoliumDubium-bloem-hr.jpg]]" <em>(eigen foto, industrieterrein Goudse poort, Gouda, 12 mei 2004)</em></li> <li>13 mei 2004 19:52 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Aardbevingen.gif|Aardbevingen.gif]]" <em>(Aardbevingen zijn geconcentreerd in bepaalde gordels. Deze komen overeen met de randen van de platen waaruit de aardkorst bestaat, zie &#91;&#91;plaattectoniek]].&lt;p&gt;Bron: U.S. Geological Survey, overgenomen van http&#58;//pubs.usgs.gov/gip/earthq4/severitygip.html.&lt;p&gt;&quot;Information presented on this website is considered public information (unless otherwise noted) and may be distributed or copied. Use of appropriate byline/photo/image credit is requested.&quot;)</em></li> <li>13 mei 2004 19:42 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SanguisorbaMinor-plant-kl.jpg|SanguisorbaMinor-plant-kl.jpg]]" <em>(eigen foto, industrieterrein Goudse poort, Gouda, mei 2004)</em></li> <li>13 mei 2004 19:42 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SanguisorbaMinor-plant-hr.jpg|SanguisorbaMinor-plant-hr.jpg]]" <em>(eigen foto, industrieterrein Goudse poort, Gouda, mei 2004)</em></li> <li>13 mei 2004 19:41 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Aerogel.jpg|Aerogel.jpg]]" <em>(Mooiere foto)</em></li> <li>13 mei 2004 19:41 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SanguisorbaMinor-bloem-kl.jpg|SanguisorbaMinor-bloem-kl.jpg]]" <em>(eigen foto, industrieterrein Goudse poort, Gouda, mei 2004)</em></li> <li>13 mei 2004 19:40 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SanguisorbaMinor-bloem-hr.jpg|SanguisorbaMinor-bloem-hr.jpg]]" <em>(eigen foto, industrieterrein Goudse poort, Gouda, mei 2004)</em></li> <li>13 mei 2004 19:39 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SanguisorbaMinor-blad-kl.jpg|SanguisorbaMinor-blad-kl.jpg]]" <em>(eigen foto, industrieterrein Goudse poort, Gouda, mei 2004)</em></li> <li>13 mei 2004 19:39 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:SanguisorbaMinor-blad-hr.jpg|SanguisorbaMinor-blad-hr.jpg]]" <em>(eigen foto, industrieterrein Goudse poort, Gouda, mei 2004)</em></li> <li>13 mei 2004 19:34 [[Gebruiker:RonaldW|RonaldW]] heeft ge-upload: "[[:Afbeelding:Narrenmat.jpg|Narrenmat.jpg]]" <em>(Zelfgemaakt plaatje (mbv Fritz))</em></li> <li>13 mei 2004 19:17 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Van_Beethoven.jpg|Van_Beethoven.jpg]]" <em>(handtekening L. Van Beethoven eigen bewerkte foto [[Gebruiker:Quistnix|Quistnix]] 28 nov 2004 16:07 (CET))</em></li> <li>13 mei 2004 19:10 [[Gebruiker:Toubib|Toubib]] heeft ge-upload: "[[:Afbeelding:Van_Beethoven.jpg|Van_Beethoven.jpg]]" <em>(eigen bewerkte foto[[Gebruiker:Quistnix|Quistnix]] 28 nov 2004 16:07 (CET))</em></li> <li>13 mei 2004 19:06 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Elektrificatiekaart.png|Elektrificatiekaart.png]]" <em>(elektrificatiekaart van Nederland, eigen werk, &#123;&#123;msg:PD}})</em></li> <li>13 mei 2004 18:53 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Garlick-nih.jpg|Garlick-nih.jpg]]" <em>(Glenn Garlick, cellist in het National Symphony Orchestra. Afkomstig van het Amerikaanse National Institutes of Health. Origineel op: http&#58;//www.nih.gov/news/NIH-Record/01_21_2003/story02.htm.&lt;p&gt;&quot;The majority of information at this site is in the public domain. Unless stated otherwise, documents and files on NIH web servers can be freely downloaded and reproduced&quot; &#123;&#123;msg:PD}})</em></li> <li>13 mei 2004 18:42 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Glenn-nih.jpg|Glenn-nih.jpg]]" <em>(&#91;&#91;John Glenn]]. Afkomstig van het Amerikaanse National Institutes of Health. Origineel op: http&#58;//www.nih.gov/news/NIH-Record/09_25_2000/briefs.htm.&lt;p&gt;&quot;The majority of information at this site is in the public domain. Unless stated otherwise, documents and files on NIH web servers can be freely downloaded and reproduced&quot; &#123;&#123;msg:PD}})</em></li> <li>13 mei 2004 18:36 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Armstrong-nih.jpg|Armstrong-nih.jpg]]" <em>(Lance Armstrong, afkomstig van het Amerikaanse National Institutes of Health. Origineel op: http&#58;//www.nih.gov/news/NIH-Record/09_30_2003/story02.htm.&lt;p&gt;&quot;The majority of information at this site is in the public domain. Unless stated otherwise, documents and files on NIH web servers can be freely downloaded and reproduced&quot; &#123;&#123;msg:PD}})</em></li> <li>13 mei 2004 17:47 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Teek4.jpg|Teek4.jpg]]" <em>(Teken kunnen door het opzuigen van bloed tot vele malen hun oorspronkelijke grootte uitgroeien.&lt;p&gt;Bron: Washington State Department of Health, http&#58;//www.doh.wa.gov. Origineel op: http&#58;//www.doh.wa.gov/ehp/ts/Zoo/WATickDiseases.htm.&lt;p&gt;&quot;Information presented by the government on this web site is considered public information and may be distributed or copied. Use of appropriate byline/image credits is requested.&quot; &#123;&#123;msg:PD}})</em></li> <li>13 mei 2004 16:15 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Guammp2.gif|Guammp2.gif]]" <em>(Kaart van het eiland &#91;&#91;Guam]].&lt;p&gt;&#123;&#123;msg:DOI}})</em></li> <li>13 mei 2004 14:47 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Tintoretto_christus_bij_galilea.jpg|Tintoretto_christus_bij_galilea.jpg]]" <em>(Tintoretto, vanaf http&#58;//www.ibiblio.org/wm/paint/auth/tintoretto/, vrije bron)</em></li> <li>13 mei 2004 14:42 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Tintoretto_christus_bij_galilee.jpg|Tintoretto_christus_bij_galilee.jpg]]" <em>(Tintoretto, vanaf http&#58;//www.ibiblio.org/wm/paint/auth/tintoretto/, vrije bron)</em></li> <li>13 mei 2004 11:57 [[Gebruiker:Ed solie|Ed solie]] heeft ge-upload: "[[:Afbeelding:Paarden_hakendover.jpg|Paarden_hakendover.jpg]]" <em>(Paardenprocessie te Hakendover op paasmaandag - de foto is vrij van auteursrechten en ter beschikking gesteld door Kris Merckx en www.hakendover.be)</em></li> <li>13 mei 2004 09:05 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Lahnojk.jpg|Lahnojk.jpg]]" <em>(Fritz8 - print)</em></li> <li>12 mei 2004 22:17 [[Gebruiker:Johi|Johi]] heeft ge-upload: "[[:Afbeelding:Gedenksteen_PBas.jpg|Gedenksteen_PBas.jpg]]" <em>(Gedenksteen in (fictief) woonhuis van Pieter Bas. Eigen foto, gebruik vrij. )</em></li> <li>12 mei 2004 21:48 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Dopamine.png|Dopamine.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Dopamine structural diagram Created by Maxim Iorsh with xymtex \documentclass{letter} \usepackage{epic,carom,hetarom} \pagestyle{empty} \begin{document} \begin{picture}(1200,1500) \put(0,0){\bzdrv{5==HO;6==HO}} \put(340,0){\sixunitv{}{2==NH$_2$}{bcde}} \end{picture} \end{document} &#91;&#91;en:Image:Dopamine.png]])</em></li> <li>12 mei 2004 20:49 [[Gebruiker:Johi|Johi]] heeft ge-upload: "[[:Afbeelding:Biesbosch_wetlands.jpg|Biesbosch_wetlands.jpg]]" <em>(Natgehouden land in de Biesbosch, mei 2004. Eigen foto, gebruik vrij)</em></li> <li>12 mei 2004 20:47 [[Gebruiker:Johi|Johi]] heeft ge-upload: "[[:Afbeelding:Biesbosch_kreek.jpg|Biesbosch_kreek.jpg]]" <em>(Kreek in de Biesbosch, mei 2004. Eigen foto, gebruik vrij)</em></li> <li>12 mei 2004 20:23 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:WapenHerford.png|WapenHerford.png]]" <em>(Wapen van Herford (van Engelse Wiki))</em></li> <li>12 mei 2004 19:32 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Europa.jpg|Kaart_Europa.jpg]]" <em>(Foutjes verbeterd)</em></li> <li>12 mei 2004 18:44 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Webbylogo.gif|Webbylogo.gif]]" <em>(Ik vraag om toestemming)</em></li> <li>12 mei 2004 17:30 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Kosovo.gif|Kosovo.gif]]"</li> <li>12 mei 2004 14:26 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Europa.jpg|Kaart_Europa.jpg]]" <em>(Nederlandse vertaling CIA kaart)</em></li> <li>12 mei 2004 13:15 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Mostertjk.jpg|Mostertjk.jpg]]" <em>(eigen archief)</em></li> <li>12 mei 2004 13:14 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Mostertjk.jpg|Mostertjk.jpg]]" <em>(eigen archief)</em></li> <li>12 mei 2004 12:21 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Timmerjk.jpg|Timmerjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>12 mei 2004 11:54 [[Gebruiker:DexieBoy|DexieBoy]] heeft ge-upload: "[[:Afbeelding:Blenheim_palace.jpg|Blenheim_palace.jpg]]" <em>(Engelse Wiki)</em></li> <li>12 mei 2004 11:36 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Gerttimjk.jpg|Gerttimjk.jpg]]" <em>(eigen archief)</em></li> <li>12 mei 2004 11:20 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Bramtaktk.jpg|Bramtaktk.jpg]]" <em>(eigen archief)</em></li> <li>12 mei 2004 10:49 [[Gebruiker:SanderSpek|SanderSpek]] heeft ge-upload: "[[:Afbeelding:Olomouc.png|Olomouc.png]]" <em>(Ligging Olomouc (op basis van eigen sjabloon))</em></li> <li>12 mei 2004 08:02 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Weljk.jpg|Weljk.jpg]]" <em>(Fritz8 - print)</em></li> <li>12 mei 2004 08:00 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Wellingjk.jpg|Wellingjk.jpg]]" <em>(dimitri)</em></li> <li>12 mei 2004 06:42 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:LowlandGorilla.jpg|LowlandGorilla.jpg]]" <em>(En: wikipedia)</em></li> <li>12 mei 2004 05:53 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Stigma3475.jpg|Stigma3475.jpg]]" <em>(foto afkomstig van Engelse Wikipedia)</em></li> <li>11 mei 2004 22:32 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:LorenzAttractor.png|LorenzAttractor.png]]" <em>(Lorenz attractor, vanaf Engelse wikipedia &#91;&#91;en:Image:LorenzAttractor.png]])</em></li> <li>11 mei 2004 22:06 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Deepspace1.jpg|Deepspace1.jpg]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Deepspace1.jpg]])</em></li> <li>11 mei 2004 22:06 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Ionentriebwerk.jpg|Ionentriebwerk.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: *&#39;&#39;&#39;Beschreibung:&#39;&#39;&#39; &#91;&#91;Ionentriebwerk]], das von der &#91;&#91;ESA]]-&#91;&#91;Raumsonde]] &#91;&#91;Smart-1]], die auf dem Weg zum &#91;&#91;Erdmond&#124;Mond]] ist, verwendet wird. *&#39;&#39;&#39;Quelle:&#39;&#39;&#39; &#91;http&#58;//sci.esa.int/science-e/www/area/index.cfm?fareaid=10 ESA Science] *&#39;&#39;&#39;Lizenzstatus:&#39;&#39;&#39; Public Domain &#91;&#91;de:Bild:Ionentriebwerk.jpg]])</em></li> <li>11 mei 2004 21:51 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Kaaba.jpg|Kaaba.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: The Kaaba in Makkah &#123;&#123;msg:unverified}} &#91;&#91;en:Image:kaaba.jpg]])</em></li> <li>11 mei 2004 21:51 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Mecca.jpg|Mecca.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#91;&#91;es:Imagen:Mecca.jpg]] &#123;&#123;msg:unverified}} &#91;&#91;en:Image:Mecca.jpg]])</em></li> <li>11 mei 2004 21:46 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Lion_King_Mufasa.jpg|Lion_King_Mufasa.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Mufasa from Disney&#39;s &#91;&#91;The Lion King]] &#123;&#123;msg:fairuse}} &#91;&#91;en:Image:Lion King Mufasa.jpg]])</em></li> <li>11 mei 2004 21:39 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Friedman_david.jpg|Friedman_david.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: David Friedman &#91;&#91;en:Image:friedman david.jpg]])</em></li> <li>11 mei 2004 21:25 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:DannyDevitoTaxi.jpg|DannyDevitoTaxi.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Danny Devito from Taxi &#91;&#91;en:Image:DannyDevitoTaxi.jpg]])</em></li> <li>11 mei 2004 21:20 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Danainternational.jpg|Danainternational.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:Danainternational.jpg]])</em></li> <li>11 mei 2004 21:19 [[Gebruiker:Nobody.de|Nobody.de]] heeft ge-upload: "[[:Afbeelding:Gelsenkirchen_in_Germany05.04.png|Gelsenkirchen_in_Germany05.04.png]]" <em>(free)</em></li> <li>11 mei 2004 21:16 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:EgyptDumyat.png|EgyptDumyat.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:EgyptDumyat.png]])</em></li> <li>11 mei 2004 14:18 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Tabla1.png|Tabla1.png]]" <em>(nogmaals: ikzelf op de tabla)</em></li> <li>11 mei 2004 14:15 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:|Afbeelding:]]" <em>(ikzelf op de tabla - liever een eigen afbeelding, toch?)</em></li> <li>11 mei 2004 11:22 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Stefajk.jpg|Stefajk.jpg]]" <em>(friso)</em></li> <li>11 mei 2004 10:49 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Konerjk.jpg|Konerjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>11 mei 2004 10:44 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:07300203.jpg|07300203.jpg]]" <em>(gratis download als screensaver)</em></li> <li>11 mei 2004 08:20 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Peterpaulrubens-portret.PNG|Peterpaulrubens-portret.PNG]]" <em>(PD tekening van UT Library, ingekleurd naar bestaande schilderijen)</em></li> <li>11 mei 2004 07:39 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kuijpersjk.jpg|Kuijpersjk.jpg]]" <em>(dimitri)</em></li> <li>11 mei 2004 05:40 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Stampervormen.jpg|Stampervormen.jpg]]" <em>(plaat van Radford e.a. 1974)</em></li> <li>11 mei 2004 05:34 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Stempelvormen.jpg|Stempelvormen.jpg]]" <em>(plaat van Radford e.a. 1974)</em></li> <li>11 mei 2004 05:27 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Hommel.jpg|Hommel.jpg]]" <em>(zelfgemaakte foto van hommel voor ingang nest )</em></li> <li>11 mei 2004 05:23 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Hommelnest.jpg|Hommelnest.jpg]]" <em>(zelfgemaakte foto van een hommelnest in de zomer)</em></li> <li>10 mei 2004 21:56 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Kelly_&_Niicky.jpg|Kelly_&_Niicky.jpg]]" <em>(Eerdere versie hersteld)</em></li> <li>10 mei 2004 21:56 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Kelly_&_Niicky.jpg|Kelly_&_Niicky.jpg]]" <em>(vervanging andere foto)</em></li> <li>10 mei 2004 21:53 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Kelly_&_Niicky.jpg|Kelly_&_Niicky.jpg]]" <em>(vervanging persoonlijke foto die niet weg wil)</em></li> <li>10 mei 2004 21:51 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Kelly_&_Niicky.jpg|Kelly_&_Niicky.jpg]]" <em>(Vervangen foto die niet weggegooid wil worden)</em></li> <li>10 mei 2004 21:43 [[Gebruiker:CE|CE]] heeft ge-upload: "[[:Afbeelding:JohnWilkesBooth.jpg|JohnWilkesBooth.jpg]]" <em>(engelse wiki)</em></li> <li>10 mei 2004 21:27 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:RoY.ft.sendY.JPG|RoY.ft.sendY.JPG]]" <em>(Smartiegirls)</em></li> <li>10 mei 2004 21:26 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Koen.jpg|Koen.jpg]]" <em>(smartiegirls rommel vervangen)</em></li> <li>10 mei 2004 21:26 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Bas.jpg|Bas.jpg]]" <em>(smartiegirlstroep vervangen)</em></li> <li>10 mei 2004 21:25 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Maarten.jpg|Maarten.jpg]]" <em>(vervanging smartiegirlstroep)</em></li> <li>10 mei 2004 21:25 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Tijs.jpg|Tijs.jpg]]" <em>(vervanging smartiegirlstroep)</em></li> <li>10 mei 2004 21:23 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Floor.jpg|Floor.jpg]]" <em>(vervanging smartiegirlstroep)</em></li> <li>10 mei 2004 21:22 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Bill.bmp|Bill.bmp]]" <em>(Smartygirls werk onzichtbaarmaken)</em></li> <li>10 mei 2004 20:42 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Bill.bmp|Bill.bmp]]" <em>(Bill)</em></li> <li>10 mei 2004 20:40 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Kadyrov.jpg|Kadyrov.jpg]]"</li> <li>10 mei 2004 20:28 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Houthem4.JPG|Houthem4.JPG]]" <em>(Eigen foto)</em></li> <li>10 mei 2004 20:27 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Houthem3.JPG|Houthem3.JPG]]" <em>(Eigen foto)</em></li> <li>10 mei 2004 20:26 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Houthem2.JPG|Houthem2.JPG]]" <em>(Eigen foto)</em></li> <li>10 mei 2004 20:25 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Houthem1.JPG|Houthem1.JPG]]" <em>(Eigen foto)</em></li> <li>10 mei 2004 17:29 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Wiki_on_or_offline.jpg|Wiki_on_or_offline.jpg]]" <em>(Online or offline status zelf in elkaar geflanst, GNU FDL)</em></li> <li>10 mei 2004 17:28 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Wiki_offline.jpg|Wiki_offline.jpg]]" <em>(Offline status zelf in elkaar geflanst, GNU FDL)</em></li> <li>10 mei 2004 17:27 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Wiki_online.jpg|Wiki_online.jpg]]" <em>(Online status, zelf in elkaar geflanst, GNU FDL)</em></li> <li>10 mei 2004 15:34 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Kilda2876.png|Kilda2876.png]]" <em>(Saint Kilda, vertaald van Engelse Wiki)</em></li> <li>10 mei 2004 15:28 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Floor.jpg|Floor.jpg]]" <em>(Floor)</em></li> <li>10 mei 2004 13:43 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:GevlekteAronskelk.jpg|GevlekteAronskelk.jpg]]" <em>(Eigen foto)</em></li> <li>10 mei 2004 12:29 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Taljvdk.jpg|Taljvdk.jpg]]" <em>(postzegel )</em></li> <li>10 mei 2004 12:23 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Fil.jpg|Fil.jpg]]" <em>(postzegel)</em></li> <li>10 mei 2004 11:39 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Pliesvdk.jpg|Pliesvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>10 mei 2004 11:02 [[Gebruiker:Wouterhagens|Wouterhagens]] heeft ge-upload: "[[:Afbeelding:Lindaan.jpg|Lindaan.jpg]]" <em>(formule lindaan (Wouter Hagens)</em></li> <li>10 mei 2004 10:45 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Pliesterjk.jpg|Pliesterjk.jpg]]" <em>(dimitri)</em></li> <li>10 mei 2004 10:27 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Hommel.JPG|Hommel.JPG]]" <em>(Eigen foto)</em></li> <li>10 mei 2004 10:17 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Horsterwold3.JPG|Horsterwold3.JPG]]" <em>(Eigen foto)</em></li> <li>10 mei 2004 10:15 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Horsterwold2.JPG|Horsterwold2.JPG]]" <em>(Eigen foto)</em></li> <li>10 mei 2004 10:14 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Horsterwold1.JPG|Horsterwold1.JPG]]" <em>(Eigen foto)</em></li> <li>10 mei 2004 08:26 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Meidoorn_aangevretenknop.jpg|Meidoorn_aangevretenknop.jpg]]" <em>(zelfgemaakte foto van door rups aangevreten knop bij meidoorn)</em></li> <li>10 mei 2004 08:15 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Grootvdk.jpg|Grootvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>10 mei 2004 07:49 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Akelei_meeldraden_eenbroederig.jpg|Akelei_meeldraden_eenbroederig.jpg]]" <em>(zelfgemaakte foto van éénbroederige meeldraden en ongelijke lengte van Akelei)</em></li> <li>10 mei 2004 07:20 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Geranium_macrorrhizum_ongelijke_rijping_stempel_meeldraad.jpg|Geranium_macrorrhizum_ongelijke_rijping_stempel_meeldraad.jpg]]" <em>(zelfgemaakte foto van onrijpe stempel van Geranium macrorrhizum)</em></li> <li>10 mei 2004 07:19 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Claesz-vanitas.jpg|Claesz-vanitas.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#91;&#91;Vanitas]], by &#91;&#91;Pieter Claesz]] &#91;&#91;en:Image:claesz-vanitas.jpg]])</em></li> <li>10 mei 2004 07:02 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Geranium_macrorrhizum_stempel_gespleten.jpg|Geranium_macrorrhizum_stempel_gespleten.jpg]]" <em>(zelfgemaakte foto van Geranium macrorrhizum met open gespleten stempel)</em></li> <li>9 mei 2004 22:25 [[Gebruiker:David Eerdmans|David Eerdmans]] heeft ge-upload: "[[:Afbeelding:Map1.png|Map1.png]]" <em>(Eigen kaart RhB)</em></li> <li>9 mei 2004 21:52 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Homomonument.jpg|Homomonument.jpg]]" <em>(van engelse pagina, geen beschrijving aanwezig)</em></li> <li>9 mei 2004 21:15 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Afrika.jpg|Kaart_Afrika.jpg]]" <em>(Versie 3)</em></li> <li>9 mei 2004 16:05 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Volksrepubliek_Tuva_vlag.gif|Volksrepubliek_Tuva_vlag.gif]]"</li> <li>9 mei 2004 16:04 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:2e_ita.png|2e_ita.png]]" <em>(Italiaanse 2 euro)</em></li> <li>9 mei 2004 16:03 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:1e_ita.png|1e_ita.png]]" <em>(Italiaanse 1 euro)</em></li> <li>9 mei 2004 16:02 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:10ec_ita.png|10ec_ita.png]]" <em>(Italiaanse 1 euro)</em></li> <li>9 mei 2004 16:02 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:1ec_ita.png|1ec_ita.png]]" <em>(Italiaanse 1 eurocent)</em></li> <li>9 mei 2004 16:01 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:20ec_ita.png|20ec_ita.png]]" <em>(Italiaanse 20 eurocent)</em></li> <li>9 mei 2004 16:01 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:2ec_ita.png|2ec_ita.png]]" <em>(Italiaanse 2 euro)</em></li> <li>9 mei 2004 16:01 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:50ec_ita.png|50ec_ita.png]]" <em>(Italiaanse 50 eurocent)</em></li> <li>9 mei 2004 16:00 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:5ec_ita.png|5ec_ita.png]]" <em>(Italiaanse 5 eurocent)</em></li> <li>9 mei 2004 15:58 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Shield.gif|Shield.gif]]"</li> <li>9 mei 2004 15:56 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Tuwa.gif|Tuwa.gif]]"</li> <li>9 mei 2004 15:54 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:RussiaTuva.png|RussiaTuva.png]]"</li> <li>9 mei 2004 15:46 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:10ec_ire.png|10ec_ire.png]]" <em>(Ierse 10 eurocent)</em></li> <li>9 mei 2004 15:46 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:1e_ire.png|1e_ire.png]]" <em>(Ierse 1 euro)</em></li> <li>9 mei 2004 15:45 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:1ec_ire.png|1ec_ire.png]]" <em>(Ierse 1 euro)</em></li> <li>9 mei 2004 15:44 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:20ec_ire.png|20ec_ire.png]]" <em>(Ierse 20 eurocent)</em></li> <li>9 mei 2004 15:44 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:2e_ire.png|2e_ire.png]]" <em>(Ierse 2 euro)</em></li> <li>9 mei 2004 15:43 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:2ec_ire.png|2ec_ire.png]]" <em>(Ierse 2 eurocent)</em></li> <li>9 mei 2004 15:43 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:50ec_ire.png|50ec_ire.png]]" <em>(Ierse 50 eurocent)</em></li> <li>9 mei 2004 15:42 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:5ec_ire.png|5ec_ire.png]]" <em>(Ierse 5 eurocent)</em></li> <li>9 mei 2004 15:05 [[Gebruiker:Moribunt|Moribunt]] heeft ge-upload: "[[:Afbeelding:Theo_avatar.jpg|Theo_avatar.jpg]]" <em>(Eigen foto t.b.v. test met avatar. )</em></li> <li>9 mei 2004 14:58 [[Gebruiker:Papaya|Papaya]] heeft ge-upload: "[[:Afbeelding:Eric.jpg|Eric.jpg]]" <em>(Eric)</em></li> <li>9 mei 2004 14:28 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Kaart_Cyprus.jpg|Kaart_Cyprus.jpg]]" <em>(Nieuwe upload van CIA Factbook&lt;br&gt;Vertaald in het Nederlands&lt;br&gt;&#123;&#123;msg:CIA}})</em></li> <li>9 mei 2004 13:14 [[Gebruiker:Opa|Opa]] heeft ge-upload: "[[:Afbeelding:Magriet.jpg|Magriet.jpg]]" <em>(eigen foto Margriet cultivar)</em></li> <li>9 mei 2004 12:56 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:China3.gif|China3.gif]]"</li> <li>9 mei 2004 12:50 [[Gebruiker:Papaya|Papaya]] heeft ge-upload: "[[:Afbeelding:Caravan1.jpg|Caravan1.jpg]]" <em>(onze caravan)</em></li> <li>9 mei 2004 12:48 [[Gebruiker:Papaya|Papaya]] heeft ge-upload: "[[:Afbeelding:Camping_1.jpg|Camping_1.jpg]]" <em>(Onze caravan)</em></li> <li>9 mei 2004 12:47 [[Gebruiker:Papaya|Papaya]] heeft ge-upload: "[[:Afbeelding:Camping_1.jpg|Camping_1.jpg]]" <em>(Onze caravan)</em></li> <li>9 mei 2004 12:45 [[Gebruiker:Papaya|Papaya]] heeft ge-upload: "[[:Afbeelding:Caravan.jpg|Caravan.jpg]]" <em>(Onze caravan)</em></li> <li>9 mei 2004 12:40 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:China-37.gif|China-37.gif]]"</li> <li>9 mei 2004 12:35 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Tabla.jpg|Tabla.jpg]]" <em>(uit de engelse wikipedia van sysop Jay)</em></li> <li>9 mei 2004 12:02 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:China2.gif|China2.gif]]"</li> <li>9 mei 2004 11:56 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:China-11.gif|China-11.gif]]"</li> <li>9 mei 2004 11:01 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Popovjk.jpg|Popovjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>9 mei 2004 10:31 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:10ec_fra.png|10ec_fra.png]]" <em>(Franse 10 eruocent)</em></li> <li>9 mei 2004 10:31 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:1e_fra.png|1e_fra.png]]" <em>(Franse 1 euro)</em></li> <li>9 mei 2004 10:30 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:1ec_fra.png|1ec_fra.png]]" <em>(Franse 1 eurocent)</em></li> <li>9 mei 2004 10:29 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:20ec_fra.png|20ec_fra.png]]" <em>(Franse 20 eurocent)</em></li> <li>9 mei 2004 10:28 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:2e_fra.png|2e_fra.png]]" <em>(Franse 2 euro)</em></li> <li>9 mei 2004 10:27 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:2ec_fra.png|2ec_fra.png]]" <em>(Franse 2 eurocent)</em></li> <li>9 mei 2004 10:27 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:50ec_fra.png|50ec_fra.png]]" <em>(Franse 50 eurocent)</em></li> <li>9 mei 2004 10:26 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:5ec_fra.png|5ec_fra.png]]" <em>(Franse 5 eurocent)</em></li> <li>9 mei 2004 10:20 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Hongarije.png|Kaart_Hongarije.png]]" <em>(Nederlandse vertaling CIA kaart)</em></li> <li>9 mei 2004 09:23 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Rafaelportret.gif|Rafaelportret.gif]]" <em>(PD tekening van UT Library, ingekleurd naar bestaand schilderij)</em></li> <li>9 mei 2004 08:35 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Rafael-portret.gif|Rafael-portret.gif]]" <em>(PD tekening van UT Library, ingekleurd naar bestaand schilderij)</em></li> <li>9 mei 2004 08:30 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Rafael-portret.gif|Rafael-portret.gif]]" <em>(Eerdere versie hersteld)</em></li> <li>9 mei 2004 06:58 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Schotse_hooglander.JPG|Schotse_hooglander.JPG]]" <em>(Eigen foto)</em></li> <li>9 mei 2004 01:59 [[Gebruiker:Jcwf|Jcwf]] heeft ge-upload: "[[:Afbeelding:Solit2.jpg|Solit2.jpg]]" <em>(amerikaanse bosruiter eigen foto)</em></li> <li>8 mei 2004 21:49 [[Gebruiker:Jcwf|Jcwf]] heeft ge-upload: "[[:Afbeelding:Page2.jpg|Page2.jpg]]" <em>(page swallowtail eigen foto)</em></li> <li>8 mei 2004 21:09 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LamiumGaleobdolonArgentum-plant-kl.jpg|LamiumGaleobdolonArgentum-plant-kl.jpg]]" <em>(eigen foto, 10 april Florence nightingalepark, den haag)</em></li> <li>8 mei 2004 21:06 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LamiumGaleobdolonArgentum-plant-hr.jpg|LamiumGaleobdolonArgentum-plant-hr.jpg]]" <em>(eigen foto, 10 april Florence nightingalepark, den haag)</em></li> <li>8 mei 2004 21:01 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:AlliumUrsinum-overz-kl.jpg|AlliumUrsinum-overz-kl.jpg]]" <em>(eigen foto, 30 april 2004)</em></li> <li>8 mei 2004 21:00 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:AlliumUrsinum-overz-hr.jpg|AlliumUrsinum-overz-hr.jpg]]" <em>(eigen foto, 30 april 2004)</em></li> <li>8 mei 2004 20:58 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:AlliumUrsinum-bloem-kl.jpg|AlliumUrsinum-bloem-kl.jpg]]" <em>(eigen foto, 30 april 2004)</em></li> <li>8 mei 2004 20:57 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:AlliumUrsinum-bloem-hr.jpg|AlliumUrsinum-bloem-hr.jpg]]" <em>(eigen foto, 30 april 2004)</em></li> <li>8 mei 2004 20:56 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:AlliumUrsinum-blad-kl.jpg|AlliumUrsinum-blad-kl.jpg]]" <em>(eigen foto, 30 april 2004)</em></li> <li>8 mei 2004 20:53 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:AlliumUrsinum-blad-hr.jpg|AlliumUrsinum-blad-hr.jpg]]" <em>(eigen foto, 30 april 2004)</em></li> <li>8 mei 2004 20:40 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LinariaCymbalaria-plant-hr.jpg|LinariaCymbalaria-plant-hr.jpg]]" <em>(eigen foto, Zierikzee)</em></li> <li>8 mei 2004 20:34 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LinariaCymbalaria-overz-hr.jpg|LinariaCymbalaria-overz-hr.jpg]]" <em>(eigen foto, Zierikzee, 6 mei 2004)</em></li> <li>8 mei 2004 20:31 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LinariaCymbalaria-CloseUp-hr.jpg|LinariaCymbalaria-CloseUp-hr.jpg]]" <em>(eigen foto, Zierikzee, 6 mei 2004)</em></li> <li>8 mei 2004 20:29 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LinariaCymbalaria-plant-kl.jpg|LinariaCymbalaria-plant-kl.jpg]]" <em>(eigen foto, Zierikzee, 6 mei 2004)</em></li> <li>8 mei 2004 20:23 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LinariaCymbalaria-overz-kl.jpg|LinariaCymbalaria-overz-kl.jpg]]" <em>(eigen foto, Zierikzee, 6 mei 2004)</em></li> <li>8 mei 2004 20:22 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Rafael-portret.gif|Rafael-portret.gif]]" <em>(PD tekening van UT Library, ingekleurd naar bestaande schilderijen)</em></li> <li>8 mei 2004 20:22 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LinariaCymbalaria-CloseUp-kl.jpg|LinariaCymbalaria-CloseUp-kl.jpg]]" <em>(eigen foto, Zierikzee, 6 mei 2004)</em></li> <li>8 mei 2004 20:16 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Rafael-portret.gif|Rafael-portret.gif]]" <em>(PD tekening van UT Library, ingekleurd naar bestaande schilderijen)</em></li> <li>8 mei 2004 18:06 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:ArzvillerPlanIncline.jpg|ArzvillerPlanIncline.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Beschreibung: Arzviller, Schrägaufzug im Rhein-Marne-Kanal Quelle: Fotografiert November 2003 Fotograf: Reinhard Kraasch Copyright Status: GNU Freie Dokumentationslizenz &#91;&#91;de:Bild:ArzvillerPlanIncline.jpg]])</em></li> <li>8 mei 2004 17:52 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Rafael-portret.gif|Rafael-portret.gif]]" <em>(PD tekening van UT Library, ingekleurd naar bestaande schilderijen)</em></li> <li>8 mei 2004 17:36 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Yshamir.jpg|Yshamir.jpg]]" <em>(Yitzhak Shamir&lt;br&gt;Bron: Wikipedia.en &#123;&#123;msg:GFDL}})</em></li> <li>8 mei 2004 16:43 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Franz_Courtens.jpg|Franz_Courtens.jpg]]" <em>(Franz Courtens - eigen foto)</em></li> <li>8 mei 2004 15:49 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Eshkol_levi.jpg|Eshkol_levi.jpg]]" <em>(Levi Eshkol&lt;br&gt;Bron: Wikipedia.en &#123;&#123;msg:GFDL}})</em></li> <li>8 mei 2004 15:07 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Msharett.jpg|Msharett.jpg]]" <em>(Moshe Sharett&lt;br&gt;Bron: Wikipedia.en &#123;&#123;msg:GFDL}})</em></li> <li>8 mei 2004 13:50 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:ConstantijnXI.jpg|ConstantijnXI.jpg]]" <em>(Vrijwel onherkenbaar portret van Constantijn XI op silveren munt geslagen gedurende de allerlaatste maanden van het Romeinse rijk. Bron: Classical Numismatic Group, Inc. (CNG))</em></li> <li>8 mei 2004 13:36 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Komkommer.jpg|Komkommer.jpg]]" <em>(kleinere afbeelding, public domain volgens engelse wiki)</em></li> <li>8 mei 2004 13:32 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Willem_Elsschot.jpg|Willem_Elsschot.jpg]]" <em>(van engelse pagina, Willem Elsschot on Belgian Stamp, daar geplaatst door gebruiker Andries )</em></li> <li>8 mei 2004 13:27 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Bananen.jpg|Bananen.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Bananas.&lt;br&gt; Photographed by Adrian Pingstone in March 2004 and released to the public domain. &#91;&#91;simple:Image:Banana.arp.750pix.jpg]] &#91;&#91;en:Image:Banana.arp.750pix.jpg]])</em></li> <li>8 mei 2004 13:26 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:Bananen.jpg|Bananen.jpg]]" <em>(nu fixed (vorige was html ipv de afbeelding). uit Engelse wiki: &quot;&#39;&#39;Photographed by Adrian Pingstone in March 2004 and released to the public domain&#39;&#39;&quot;)</em></li> <li>8 mei 2004 13:20 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Bouwjk.jpg|Bouwjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>8 mei 2004 13:15 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Phmanchu21a.jpg|Phmanchu21a.jpg]]"</li> <li>8 mei 2004 13:00 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.png|Test.png]]" <em>(Test &amp;#228;&amp;#246;&amp;#252;)</em></li> <li>8 mei 2004 12:56 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Mandschn.gif|Mandschn.gif]]"</li> <li>8 mei 2004 12:46 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.png|Test.png]]" <em>(Test äöü)</em></li> <li>8 mei 2004 12:46 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:GM_sugar_cane.jpg|GM_sugar_cane.jpg]]" <em>(van wiki:en orig:(http&#58;//www.ars.usda.gov/is/graphics/photos/dec97/k7151-3.htm&lt;br&gt;An experimental ARS sugarcane field near Canal Point, Florida.&lt;br&gt;Photo by Scott Bauer.&lt;p&gt;&#123;&#123;msg:PD}}) )</em></li> <li>8 mei 2004 12:32 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.png|Test.png]]" <em>(Test &amp;#228;&amp;#246;&amp;#252;)</em></li> <li>8 mei 2004 12:07 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Rabarber_stelen.jpg|Rabarber_stelen.jpg]]" <em>(zelfgemaakte foto van rabarberplant begin mei)</em></li> <li>8 mei 2004 12:04 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Afrika.jpg|Kaart_Afrika.jpg]]" <em>(Suggesties verwerkt)</em></li> <li>8 mei 2004 10:04 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.png|Test.png]]" <em>(test äöü)</em></li> <li>8 mei 2004 08:20 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Siege-alesia-vercingetorix-jules-cesar.jpg|Siege-alesia-vercingetorix-jules-cesar.jpg]]" <em>(Slag bij Alesia. Uit Franse Wikipedia. met vermelding: &quot;Vercingétorix jette ses armes aux pieds de César, 1899, par Lionel-Noël Royer; Source: Musée CROZATIER du Puy-en-Velay&quot; )</em></li> <li>8 mei 2004 08:19 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Gd_rd.gif|Gd_rd.gif]]"</li> <li>8 mei 2004 08:06 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Liza_whaha2.jpg|Liza_whaha2.jpg]]" <em>(Liza)</em></li> <li>8 mei 2004 08:04 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Emmaa.JPG|Emmaa.JPG]]" <em>(Emma)</em></li> <li>8 mei 2004 08:02 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Manchu_China.gif|Manchu_China.gif]]"</li> <li>8 mei 2004 07:58 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Poederkwast_meeldraden_helmhokje_rugzijde.jpg|Poederkwast_meeldraden_helmhokje_rugzijde.jpg]]" <em>(zelfgemaakte foto van helmhokjes aan rugzijde bevestigd op helmdraad (Poederkwast))</em></li> <li>8 mei 2004 07:55 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Vercingetorix.jpg|Vercingetorix.jpg]]" <em>(Portret van Vercingetorix op een Romeinse densrius. Met permissie van Classical Numismatic Group, Inc. (CNG))</em></li> <li>8 mei 2004 07:52 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:China1.gif|China1.gif]]"</li> <li>8 mei 2004 04:34 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Zaadknop_klaar_tekst.jpg|Zaadknop_klaar_tekst.jpg]]" <em>(zelfgemaakte tekening van een zaadknop)</em></li> <li>8 mei 2004 04:30 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Vruchtbeginselklaartekst.jpg|Vruchtbeginselklaartekst.jpg]]" <em>(zelfgemaakte tekening van vruchtbeginsel)</em></li> <li>8 mei 2004 04:23 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Tulp_stempel_gelobd_behaard.jpg|Tulp_stempel_gelobd_behaard.jpg]]" <em>(zelfgemaakte foto van tulp met behaarde en gelobde stempel)</em></li> <li>8 mei 2004 04:20 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Bosanemoon_stempels_knotsvormig_behaard.jpg|Bosanemoon_stempels_knotsvormig_behaard.jpg]]" <em>(zelfgemaakte foto; knotsvormige stempel van bosanemoon)</em></li> <li>8 mei 2004 04:17 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Meidoorn_stempel_vlak.jpg|Meidoorn_stempel_vlak.jpg]]" <em>(zelfgemaakte foto; stempelvorm bij éénstijlige meidoorn)</em></li> <li>7 mei 2004 21:47 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:RomulusAugustus.jpg|RomulusAugustus.jpg]]" <em>(Portret van Romulus Augustus op gouden Romeinse munt. Bron: Classical Numismatic Group, Inc. (CNG))</em></li> <li>7 mei 2004 21:38 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Anthemius.jpg|Anthemius.jpg]]" <em>(Portret van Anthemius op gouden Romeinse munt. Bron: Classical Numismatic Group, Inc. (CNG))</em></li> <li>7 mei 2004 21:28 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Afrika.jpg|Kaart_Afrika.jpg]]" <em>(Vertaling kaart Nederlands)</em></li> <li>7 mei 2004 21:25 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Jovianus.jpg|Jovianus.jpg]]" <em>(Portret van Jovianus op bronzen munt. Bron: Classical Numismatic Group, Inc. (CNG))</em></li> <li>7 mei 2004 21:24 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Tijs.jpg|Tijs.jpg]]" <em>(Tijs)</em></li> <li>7 mei 2004 21:23 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Maarten.jpg|Maarten.jpg]]" <em>(Maarten)</em></li> <li>7 mei 2004 21:22 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Bas.jpg|Bas.jpg]]" <em>(Bas)</em></li> <li>7 mei 2004 21:22 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Koen.jpg|Koen.jpg]]" <em>(Koen)</em></li> <li>7 mei 2004 21:21 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:RoY.ft.sendY.JPG|RoY.ft.sendY.JPG]]" <em>(Roy en Sendy)</em></li> <li>7 mei 2004 21:20 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Roy6.JPG|Roy6.JPG]]" <em>(Roy)</em></li> <li>7 mei 2004 21:20 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Marc0w.jpg|Marc0w.jpg]]" <em>(Marco)</em></li> <li>7 mei 2004 21:19 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Joery.jpg|Joery.jpg]]" <em>(Joery)</em></li> <li>7 mei 2004 21:18 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Matsje.jpg|Matsje.jpg]]" <em>(Mats)</em></li> <li>7 mei 2004 21:18 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Kefin2.jpg|Kefin2.jpg]]" <em>(Kefin)</em></li> <li>7 mei 2004 21:17 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Kevin.JPG|Kevin.JPG]]" <em>(Kevin)</em></li> <li>7 mei 2004 21:17 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:J0yceeH_ft._KeviiN.JPG|J0yceeH_ft._KeviiN.JPG]]" <em>(Joyce en Kevin)</em></li> <li>7 mei 2004 21:15 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Lotte.jpg|Lotte.jpg]]" <em>(Lotte)</em></li> <li>7 mei 2004 21:15 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:LotteeH.jpg|LotteeH.jpg]]" <em>(Lotte)</em></li> <li>7 mei 2004 21:13 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Liza_whaha.jpg|Liza_whaha.jpg]]" <em>(Liza)</em></li> <li>7 mei 2004 21:11 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Valerie2.jpg|Valerie2.jpg]]" <em>(Valerie)</em></li> <li>7 mei 2004 21:11 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Valerie2.jpg|Valerie2.jpg]]" <em>(Valerie)</em></li> <li>7 mei 2004 21:10 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Lhisa.jpg|Lhisa.jpg]]" <em>(Lhisa)</em></li> <li>7 mei 2004 21:10 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Lhisa.jpg|Lhisa.jpg]]" <em>(Lhisa)</em></li> <li>7 mei 2004 21:09 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Lisa.JPG|Lisa.JPG]]" <em>(Lisa)</em></li> <li>7 mei 2004 21:09 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Lisa.JPG|Lisa.JPG]]" <em>(Lisa)</em></li> <li>7 mei 2004 21:08 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Jessiej.jpg|Jessiej.jpg]]" <em>(Jessie)</em></li> <li>7 mei 2004 21:08 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Jessiej.jpg|Jessiej.jpg]]" <em>(Jessie)</em></li> <li>7 mei 2004 21:08 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:José_María_Aznar.jpg|José_María_Aznar.jpg]]" <em>(uit engelse wiki)</em></li> <li>7 mei 2004 21:08 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Liselore.JPG|Liselore.JPG]]" <em>(Lislore)</em></li> <li>7 mei 2004 21:07 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Liselore.JPG|Liselore.JPG]]" <em>(Lislore)</em></li> <li>7 mei 2004 21:06 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Kelly_&_Niicky.jpg|Kelly_&_Niicky.jpg]]" <em>(Kelly &amp; Nicky)</em></li> <li>7 mei 2004 21:06 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Kelly4.jpg|Kelly4.jpg]]" <em>(Kelly)</em></li> <li>7 mei 2004 21:05 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Kelly4.jpg|Kelly4.jpg]]" <em>(Kelly)</em></li> <li>7 mei 2004 21:03 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:Kopie_van_k0nteeh.jpg|Kopie_van_k0nteeh.jpg]]" <em>(kopie van konten)</em></li> <li>7 mei 2004 21:01 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Cy)trnc.gif|Cy)trnc.gif]]"</li> <li>7 mei 2004 21:00 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:EmmY2.jpg|EmmY2.jpg]]" <em>(Emmy)</em></li> <li>7 mei 2004 20:59 [[Gebruiker:Smartiegirl1|Smartiegirl1]] heeft ge-upload: "[[:Afbeelding:EmmY2.jpg|EmmY2.jpg]]" <em>(Emmy)</em></li> <li>7 mei 2004 20:48 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Bananen.jpg|Bananen.jpg]]" <em>(from english wiki, Bananas.)</em></li> <li>7 mei 2004 20:37 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Denktas.gif|Denktas.gif]]"</li> <li>7 mei 2004 19:41 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Leaning-tower-of-pisa-alternate.jpg|Leaning-tower-of-pisa-alternate.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Leaning tower of Pisa Photograph available under GFDL license. I took this picture myself with a Minolta XD-5 and a 24 f/2.8 Rokkor lens on Fujicolor 100. The picture has been scanned from a print and digitally edited (framing, color balance &amp; some blue was added in the sky). You do not need my permission to reuse it, but you may not claim that you took the photo yourself. &#91;&#91;en:Image:Leaning-tower-of-pisa-alternate.jpg]])</em></li> <li>7 mei 2004 18:56 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Karte_goerlitz_in_deutschland.png|Karte_goerlitz_in_deutschland.png]]" <em>(duitse wiki: Karte Görlitz in Deutschland)</em></li> <li>7 mei 2004 18:42 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Eleccurvimeter.jpg|Eleccurvimeter.jpg]]" <em>(Curvimeter, eigen cirvimeter op de scanner gelegd, &#123;&#123;msg:GFDL}})</em></li> <li>7 mei 2004 15:46 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Zypn.gif|Zypn.gif]]"</li> <li>7 mei 2004 15:41 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Cy-map.gif|Cy-map.gif]]"</li> <li>7 mei 2004 14:43 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Naamloos.bmp|Naamloos.bmp]]"</li> <li>7 mei 2004 14:34 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:|Afbeelding:]]"</li> <li>7 mei 2004 14:27 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Atjeh-kaart-det.jpg|Atjeh-kaart-det.jpg]]"</li> <li>7 mei 2004 11:49 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Matveejk.jpg|Matveejk.jpg]]" <em>(Fritz8 - print)</em></li> <li>7 mei 2004 09:47 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Tsaarpeterdegrote.PNG|Tsaarpeterdegrote.PNG]]" <em>(PD tekening van UT Library, ingekleurd naar bestaande schilderijen)</em></li> <li>7 mei 2004 06:52 [[Gebruiker:Deadstar|Deadstar]] heeft ge-upload: "[[:Afbeelding:IrelandMunster.png|IrelandMunster.png]]" <em>(van en: wiki - op GNU license)</em></li> <li>7 mei 2004 06:48 [[Gebruiker:Deadstar|Deadstar]] heeft ge-upload: "[[:Afbeelding:IrelandConnacht.png|IrelandConnacht.png]]" <em>(kaart van en: wiki onder GNU license)</em></li> <li>7 mei 2004 06:47 [[Gebruiker:Deadstar|Deadstar]] heeft ge-upload: "[[:Afbeelding:IrelandLeinster.png|IrelandLeinster.png]]" <em>(kaart van en: wiki onder GNU license)</em></li> <li>7 mei 2004 06:39 [[Gebruiker:Deadstar|Deadstar]] heeft ge-upload: "[[:Afbeelding:IrelandUlster.png|IrelandUlster.png]]" <em>(Ierland Ulster - wiki kaart)</em></li> <li>6 mei 2004 22:10 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:JustinianusI.jpg|JustinianusI.jpg]]" <em>(Portret van Justinianus I op een gouden munt uit Constantinopel. Bron: Classical Numismatic Group, Inc. (CNG))</em></li> <li>6 mei 2004 21:59 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Isaacnewton.PNG|Isaacnewton.PNG]]" <em>(PD tekening van UT Library, ingekleurd naar bestaande schilderijen)</em></li> <li>6 mei 2004 21:01 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Stadhuis_Dendermonde.jpg|Stadhuis_Dendermonde.jpg]]" <em>(staduis Dendermonde - eigen foto)</em></li> <li>6 mei 2004 20:27 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Dender1.jpg|Dender1.jpg]]" <em>(samenvloeiing Dender en Schelde - eigen foto)</em></li> <li>6 mei 2004 20:21 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Caroluslinnaeus.png|Caroluslinnaeus.png]]" <em>(PD tekening van UT Library, ingekleurd naar bestaand tekening)</em></li> <li>6 mei 2004 20:16 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Vijver.jpg|Vijver.jpg]]" <em>(vijver - eigen foto)</em></li> <li>6 mei 2004 20:07 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Alexiusbegijnhof.jpg|Alexiusbegijnhof.jpg]]" <em>(Sint-Alexiusbegijnhof Dendermonde - eigen foto)</em></li> <li>6 mei 2004 19:24 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Dender.jpg|Dender.jpg]]" <em>(Dender in Dendermonde - eigen foto)</em></li> <li>6 mei 2004 19:17 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Ros_Beiaard.jpg|Ros_Beiaard.jpg]]" <em>(Standbeeld Ros Beiaard - eigen foto)</em></li> <li>6 mei 2004 18:44 [[Gebruiker:Ronja|Ronja]] heeft ge-upload: "[[:Afbeelding:Prelude-scriabin.png|Prelude-scriabin.png]]" <em>(muzieknotatie Prelude Scriabin, vanaf Mutopia, open source, http&#58;//www.mutopiaproject.org/cgibin/piece-info.cgi?id=445)</em></li> <li>6 mei 2004 18:17 [[Gebruiker:Ronja|Ronja]] heeft ge-upload: "[[:Afbeelding:Staccato.png|Staccato.png]]" <em>(Vanaf engelse wikipedia &#91;&#91;en:Image:staccato.png]])</em></li> <li>6 mei 2004 15:36 [[Gebruiker:Opa|Opa]] heeft ge-upload: "[[:Afbeelding:Vlier2.jpg|Vlier2.jpg]]" <em>(eigen foto 6 mei 2004 meidoorn en vlier)</em></li> <li>6 mei 2004 15:35 [[Gebruiker:Opa|Opa]] heeft ge-upload: "[[:Afbeelding:Vlier.jpg|Vlier.jpg]]" <em>(eigen foto 6.5.2004 meidoorn en vlier)</em></li> <li>6 mei 2004 12:45 [[Gebruiker:Kriske|Kriske]] heeft ge-upload: "[[:Afbeelding:Olomouc.gif|Olomouc.gif]]" <em>(Situering Olomouc in Tsjechië)</em></li> <li>6 mei 2004 12:38 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kostenk.jpg|Kostenk.jpg]]" <em>(Fritz8 - print)</em></li> <li>6 mei 2004 12:00 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Cramjk.jpg|Cramjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>6 mei 2004 11:29 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Galileogalilei.png|Galileogalilei.png]]" <em>(PD tekening van UT Library, ingekleurd naar bestaand schilderij)</em></li> <li>6 mei 2004 11:03 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:JuliaDomna-Caracalla-Geta.jpg|JuliaDomna-Caracalla-Geta.jpg]]" <em>(Gouden munt met de portretten van de Romeinse keizerin Julia Domna en haar twee zoons Caracalla en Geta. Bron: Classical Numismatic Group, Inc. (CNG))</em></li> <li>6 mei 2004 10:51 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Margaret_Rutherford.jpg|Margaret_Rutherford.jpg]]" <em>(van engelse pagina, geen beschrijving aanwezig)</em></li> <li>6 mei 2004 10:18 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Cotenord.jpg|Cotenord.jpg]]" <em>(van engelse pagina)</em></li> <li>6 mei 2004 07:52 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Sophokles.jpg|Sophokles.jpg]]" <em>(Sophocles. Uit Duitse Wikipedia. Originele bronvermelding: &quot;Sophokles aus Baumeister: Denkmäler des klassischen Altertums. 1888. Band III., Seite 1685&quot;)</em></li> <li>6 mei 2004 06:58 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Paardebloem_weiland.jpg|Paardebloem_weiland.jpg]]" <em>(zelfgemaakte foto van paardebloemen in een weiland)</em></li> <li>6 mei 2004 06:45 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Vogelkers_bloesem.jpg|Vogelkers_bloesem.jpg]]" <em>(zelgemaakte foto van vogelkers eind april)</em></li> <li>6 mei 2004 05:48 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Witlof_wortels_kuil.jpg|Witlof_wortels_kuil.jpg]]" <em>(zelfgemaakte foto; ouderwets opzetten van witlofpennen in een kuil)</em></li> <li>6 mei 2004 05:46 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Wilof_pennenteelt.jpg|Wilof_pennenteelt.jpg]]" <em>(zelfgemaakte foto: pennen (wortel)teelt van witlof)</em></li> <li>6 mei 2004 05:09 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Pioenroos.jpg|Pioenroos.jpg]]" <em>(zelfgemaakte foto van pioenroos als voorbeeld van gevulde bloemen)</em></li> <li>5 mei 2004 19:29 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Benjaminfranklin.PNG|Benjaminfranklin.PNG]]" <em>(Benjamin Franklin van de Engelse wiki: &quot;Images of American Political History&quot;, ingekleurd naar bestaand schilderij)</em></li> <li>5 mei 2004 18:35 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Alexanderpavlovich.png|Alexanderpavlovich.png]]" <em>(PD tekening van UT Library, ingekleurd naar bestaande schilderijen)</em></li> <li>5 mei 2004 18:13 [[Gebruiker:Johi|Johi]] heeft ge-upload: "[[:Afbeelding:AchterdeKerk_klein.jpg|AchterdeKerk_klein.jpg]]" <em>(Achter de Kerk, Gouda Eigen foto gebruik vrij)</em></li> <li>5 mei 2004 18:12 [[Gebruiker:Johi|Johi]] heeft ge-upload: "[[:Afbeelding:Spieringstraat_klein.jpg|Spieringstraat_klein.jpg]]" <em>(Spieringstraat Gouda, eigen foto vrij gebruik)</em></li> <li>5 mei 2004 15:56 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Gejaagd_door_de_wind.jpg|Gejaagd_door_de_wind.jpg]]" <em>(van engelse pagina: fairuse GWTW original poster This image is copyrighted. Its use is contended to be fair use under United States law.)</em></li> <li>5 mei 2004 15:38 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Koning_Ferdinand_van_Roemenië.jpg|Koning_Ferdinand_van_Roemenië.jpg]]" <em>(Ferdinand van Roemenië (Roemeense Wiki))</em></li> <li>5 mei 2004 15:32 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Ferdinand_of_Romania.jpg|Ferdinand_of_Romania.jpg]]" <em>(Ferdinand van Roemenië (Engelse Wiki))</em></li> <li>5 mei 2004 14:37 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:CharlesOfRomania.JPG|CharlesOfRomania.JPG]]" <em>(Karel I van Roemenië, van Engelse Wiki)</em></li> <li>5 mei 2004 14:37 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Carol_I_of_Romania.jpg|Carol_I_of_Romania.jpg]]" <em>(Karel I van Roemenië, van Engelse Wiki)</em></li> <li>5 mei 2004 14:33 [[Gebruiker:Rm|Rm]] heeft ge-upload: "[[:Afbeelding:Judo_junior.png|Judo_junior.png]]" <em>(eigen foto)</em></li> <li>5 mei 2004 14:27 [[Gebruiker:Garo|Garo]] heeft ge-upload: "[[:Afbeelding:Kdescreen.jpg|Kdescreen.jpg]]" <em>(GPL, door mij genomen screenshot)</em></li> <li>5 mei 2004 14:20 [[Gebruiker:Garo|Garo]] heeft ge-upload: "[[:Afbeelding:Xmms2.jpg|Xmms2.jpg]]" <em>(GPL, door mij genomen screenshot)</em></li> <li>5 mei 2004 14:17 [[Gebruiker:Garo|Garo]] heeft ge-upload: "[[:Afbeelding:Xmms.jpg|Xmms.jpg]]" <em>(GPL, door mij genomen screenshot)</em></li> <li>5 mei 2004 14:00 [[Gebruiker:Garo|Garo]] heeft ge-upload: "[[:Afbeelding:Roemenie.png|Roemenie.png]]" <em>(GPL, door mij aangepast figuur dat al GPL was)</em></li> <li>5 mei 2004 13:48 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Nederlands-Indië.gif|Nederlands-Indië.gif]]"</li> <li>5 mei 2004 12:12 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Ponzik.jpg|Ponzik.jpg]]" <em>(Fritz8 - print)</em></li> <li>5 mei 2004 12:07 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Samischk.jpg|Samischk.jpg]]" <em>(Fritz8 - print)</em></li> <li>5 mei 2004 12:03 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Zaitsevk.jpg|Zaitsevk.jpg]]" <em>(Fritz8 - print)</em></li> <li>5 mei 2004 11:57 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Shirovk.jpg|Shirovk.jpg]]" <em>(Fritz8 - print)</em></li> <li>5 mei 2004 11:52 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Richterk.jpg|Richterk.jpg]]" <em>(Fritz8 - print)</em></li> <li>5 mei 2004 11:48 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Staunk.jpg|Staunk.jpg]]" <em>(Fritz8 - print)</em></li> <li>5 mei 2004 11:44 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Retivdk.jpg|Retivdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>5 mei 2004 11:37 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Tarrasch.jpg|Tarrasch.jpg]]" <em>(foto&#39;s van voor 1924 zijn vrij)</em></li> <li>5 mei 2004 11:25 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Simagink.jpg|Simagink.jpg]]" <em>(Fritz8 - print)</em></li> <li>5 mei 2004 11:21 [[Gebruiker:Rm|Rm]] heeft ge-upload: "[[:Afbeelding:Ecliptica.png|Ecliptica.png]]" <em>(omdat vorige versie er gehavend uitzag)</em></li> <li>5 mei 2004 11:20 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Rubjvdk.jpg|Rubjvdk.jpg]]" <em>(postzegel )</em></li> <li>5 mei 2004 11:04 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Rubinvdk.jpg|Rubinvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>5 mei 2004 10:59 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Resjvdk.jpg|Resjvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>5 mei 2004 10:53 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Polujvdk.jpg|Polujvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>5 mei 2004 10:49 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Rosjvdk.jpg|Rosjvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>5 mei 2004 10:45 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Rausjvdk.jpg|Rausjvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>5 mei 2004 10:15 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kiesjvdk.jpg|Kiesjvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>5 mei 2004 10:11 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Oliver-Cromwell.PNG|Oliver-Cromwell.PNG]]" <em>(PD tekening: ingekleurd naar het originele schilderij)</em></li> <li>5 mei 2004 10:06 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Olivercromwell.png|Olivercromwell.png]]" <em>(PD tekening: ingekleurd naar het originele schilderij)</em></li> <li>5 mei 2004 10:04 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Olivercromwell.png|Olivercromwell.png]]" <em>(PD tekening: ingekleurd naar het originele schilderij)</em></li> <li>5 mei 2004 10:01 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Olivercromwell.png|Olivercromwell.png]]" <em>(PD tekening: ingekleurd naar het originele schilderij)</em></li> <li>5 mei 2004 09:05 [[Gebruiker:Opa|Opa]] heeft ge-upload: "[[:Afbeelding:Prunus_avium.jpg|Prunus_avium.jpg]]" <em>(vogelkers eigen foto 23.4.2004 vrijstaand in weiland Ardennen)</em></li> <li>5 mei 2004 08:04 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Vlad-dracula.png|Vlad-dracula.png]]" <em>(PD tekening: ingekleurd naar het originele schilderij)</em></li> <li>5 mei 2004 08:03 [[Gebruiker:Opa|Opa]] heeft ge-upload: "[[:Afbeelding:Bergvlier.jpg|Bergvlier.jpg]]" <em>(eigen foto 4.5.2004 Ardennen )</em></li> <li>5 mei 2004 07:48 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Brutus_Eid_Mar.jpg|Brutus_Eid_Mar.jpg]]" <em>(Beroemde munt van van Brutus met zijn eigen portret en symbolen van de moord op Julius Caesar. Bron: Classical Numismatic Group, Inc. (CNG))</em></li> <li>5 mei 2004 07:26 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Vergeet_mij_nietje_closeup_groot.jpg|Vergeet_mij_nietje_closeup_groot.jpg]]" <em>(zelfgemaakte foto van vergeet-mij-nietje in tuin)</em></li> <li>5 mei 2004 07:15 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Vergeet_mij_nietje_closeup.jpg|Vergeet_mij_nietje_closeup.jpg]]" <em>(zelfgemaakte foto van tuin Vergeet-mij-nietje)</em></li> <li>5 mei 2004 06:58 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Sopraan_heeft_het_moeilijk.JPG|Sopraan_heeft_het_moeilijk.JPG]]" <em>(Cartoon van een sopraan die het moeilijk heeft. Tekening van Kjell &#39;t Hoen, ter beschikking gesteld voor gebruik met bronvermelding onder GNU/FDL licentie)</em></li> <li>5 mei 2004 04:58 [[Gebruiker:Ronja|Ronja]] heeft ge-upload: "[[:Afbeelding:Yin_and_yang.png|Yin_and_yang.png]]" <em>(Overgenomen vanaf Engelse wikipedia, &#91;&#91;en:Yin_and_yang.png]])</em></li> <li>5 mei 2004 04:47 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Kleine_watersalamander.JPG|Kleine_watersalamander.JPG]]" <em>(Eigen foto)</em></li> <li>4 mei 2004 18:04 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:BritishVirginIslands_coa.gif|BritishVirginIslands_coa.gif]]" <em>(En: wikipedia)</em></li> <li>4 mei 2004 17:45 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Gerb.jpg|Gerb.jpg]]" <em>(En: wikipedia)</em></li> <li>4 mei 2004 17:29 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:SaudiCoat.PNG|SaudiCoat.PNG]]" <em>(En: wikipedia)</em></li> <li>4 mei 2004 17:25 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Rwandaflag3.PNG|Rwandaflag3.PNG]]" <em>(En: wikipedia)</em></li> <li>4 mei 2004 17:11 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:LocationCaymanIslands.png|LocationCaymanIslands.png]]" <em>(En: wikipedia)</em></li> <li>4 mei 2004 17:07 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Cayman_islands_flag_medium.png|Cayman_islands_flag_medium.png]]" <em>(En: wikipedia)</em></li> <li>4 mei 2004 17:05 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Caymanislands_coa.jpg|Caymanislands_coa.jpg]]" <em>(En: wikipedia)</em></li> <li>4 mei 2004 16:08 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Togoarms22.PNG|Togoarms22.PNG]]" <em>(En: wikipedia)</em></li> <li>4 mei 2004 16:03 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Pitcairn-coa.jpg|Pitcairn-coa.jpg]]" <em>(En: wikipedia)</em></li> <li>4 mei 2004 15:55 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Kritikos.mid|Kritikos.mid]]" <em>(kritikos (traditioneel, midi bestand eigen maaksel))</em></li> <li>4 mei 2004 15:53 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Libyseal.gif|Libyseal.gif]]" <em>(En: wikipedia)</em></li> <li>4 mei 2004 15:43 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Capeverdearms22.PNG|Capeverdearms22.PNG]]" <em>(En: wikipedia)</em></li> <li>4 mei 2004 15:28 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Myanmararms22.PNG|Myanmararms22.PNG]]" <em>(En: wikipedia)</em></li> <li>4 mei 2004 14:57 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Guernsey_Coat_of_Arms.png|Guernsey_Coat_of_Arms.png]]" <em>(En: wikipedia)</em></li> <li>4 mei 2004 14:54 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Coaguinea-bissausmall.jpg|Coaguinea-bissausmall.jpg]]" <em>(En: wikipedia)</em></li> <li>4 mei 2004 14:45 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Greenland_Coat_of_Arms.gif|Greenland_Coat_of_Arms.gif]]" <em>(En: wikipedia)</em></li> <li>4 mei 2004 13:55 [[Gebruiker:Deadstar|Deadstar]] heeft ge-upload: "[[:Afbeelding:CapitolRecordslabel.jpg|CapitolRecordslabel.jpg]]" <em>(van en: wiki)</em></li> <li>4 mei 2004 13:51 [[Gebruiker:Opa|Opa]] heeft ge-upload: "[[:Afbeelding:Ardennen.jpg|Ardennen.jpg]]" <em>(eigen foto 3.5.2004 genomen op weg van Stavelot naar Wannes)</em></li> <li>4 mei 2004 13:42 [[Gebruiker:Opa|Opa]] heeft ge-upload: "[[:Afbeelding:Beauceron.jpg|Beauceron.jpg]]" <em>(eigen foto 25.3.2004 Beauceron volwassen teef)</em></li> <li>4 mei 2004 13:29 [[Gebruiker:Opa|Opa]] heeft ge-upload: "[[:Afbeelding:Pinus.jpg|Pinus.jpg]]" <em>(eigen foto 2.3.2004 Canarische pijnboom Caldera de Taburiente La Palma Islas Canarias)</em></li> <li>4 mei 2004 13:02 [[Gebruiker:DexieBoy|DexieBoy]] heeft ge-upload: "[[:Afbeelding:New_labour_new_britain_logo.jpg|New_labour_new_britain_logo.jpg]]" <em>(New Labour Logo (van Engelse wiki))</em></li> <li>4 mei 2004 12:59 [[Gebruiker:Bart van der Pligt|Bart van der Pligt]] heeft ge-upload: "[[:Afbeelding:Fransbauer_benjejong.jpg|Fransbauer_benjejong.jpg]]" <em>(This image is copyrighted. Its use is contended to be fair use under United States law. )</em></li> <li>4 mei 2004 11:44 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Zegeleerst.jpg|Zegeleerst.jpg]]" <em>(postzegel )</em></li> <li>4 mei 2004 10:46 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Sukkeljk.jpg|Sukkeljk.jpg]]" <em>(foto van voor 1924)</em></li> <li>4 mei 2004 10:03 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Zuckerjk.jpg|Zuckerjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>4 mei 2004 09:59 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Winajk.jpg|Winajk.jpg]]" <em>(Fritz8 - print)</em></li> <li>4 mei 2004 09:55 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Vidmarjk.jpg|Vidmarjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>4 mei 2004 09:51 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Uhljk.jpg|Uhljk.jpg]]" <em>(Fritz8 - print)</em></li> <li>4 mei 2004 09:47 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Torrejk.jpg|Torrejk.jpg]]" <em>(Fritz8 - print)</em></li> <li>4 mei 2004 09:35 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Tartajk.jpg|Tartajk.jpg]]" <em>(Fritz8 - print)</em></li> <li>4 mei 2004 09:31 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Tarraschjk.jpg|Tarraschjk.jpg]]" <em>(friso)</em></li> <li>4 mei 2004 09:18 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Taljaap.jpg|Taljaap.jpg]]" <em>(friso)</em></li> <li>4 mei 2004 09:12 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Szabojk.jpg|Szabojk.jpg]]" <em>(Fritz8 - print)</em></li> <li>4 mei 2004 09:05 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Steinjk.jpg|Steinjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>4 mei 2004 08:37 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Tschijk.jpg|Tschijk.jpg]]" <em>(postzegel)</em></li> <li>4 mei 2004 08:32 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Tschigorin.jpg|Tschigorin.jpg]]" <em>(postzegel)</em></li> <li>4 mei 2004 08:27 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Lopezjk.jpg|Lopezjk.jpg]]" <em>(postzegel)</em></li> <li>4 mei 2004 08:09 [[Gebruiker:Opa|Opa]] heeft ge-upload: "[[:Afbeelding:Perron.jpg|Perron.jpg]]" <em>(eigen foto 3 mei 2004 het perron op de Place St Remacle werd opgericht door de laatste abt van de abdij.)</em></li> <li>4 mei 2004 08:02 [[Gebruiker:Opa|Opa]] heeft ge-upload: "[[:Afbeelding:Abdij.jpg|Abdij.jpg]]" <em>(eigen foto 3 mei 2004 abdij van Stavelot, op de voorgrond opgravingen van de middeleeuwse abdij, links de musea, rechts tussen toegangspoort en toren het gebouw waar in de 18e eeuw de brouwerij, bakkerij en stallen waren gevestigd.)</em></li> <li>4 mei 2004 07:53 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Dtldr2wp.gif|Dtldr2wp.gif]]"</li> <li>4 mei 2004 07:51 [[Gebruiker:Opa|Opa]] heeft ge-upload: "[[:Afbeelding:Half-track.jpg|Half-track.jpg]]" <em>(eigen foto 3 mei 2004 Amerikaanse halftrack M3 bij de brug over de Ambleve te Stavelot herinnert aan de gevechten van 18 december 1944 tot 13 januari 1945. De half-track komt uit Frankrijk waar hij gebruikt werd tijdens de landing in Normandie.)</em></li> <li>4 mei 2004 07:49 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Dsachsw2.gif|Dsachsw2.gif]]"</li> <li>4 mei 2004 07:47 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:0302.gif|0302.gif]]"</li> <li>4 mei 2004 07:43 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Bayernwk.gif|Bayernwk.gif]]"</li> <li>4 mei 2004 07:40 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Preusskf.gif|Preusskf.gif]]"</li> <li>4 mei 2004 07:32 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Preuskt2.gif|Preuskt2.gif]]"</li> <li>4 mei 2004 06:54 [[Gebruiker:Nijman|Nijman]] heeft ge-upload: "[[:Afbeelding:Wojewodztwo_lubelskie.png|Wojewodztwo_lubelskie.png]]" <em>(Provincie Lublin, overgenomen van Poolse pagina http&#58;//pl.wikipedia.org/wiki/Grafika:Wojewodztwo_lubelskie.png)</em></li> <li>4 mei 2004 06:25 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Stokboon.jpg|Stokboon.jpg]]" <em>(zelfgemaakte foto van stokslabonen)</em></li> <li>4 mei 2004 06:18 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Stamslaboon_zomer1.jpg|Stamslaboon_zomer1.jpg]]" <em>(zelfgemaakte foto van stamslabonen)</em></li> <li>3 mei 2004 20:51 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Sachsen_Koenigreich_Wappen2_.gif|Sachsen_Koenigreich_Wappen2_.gif]]"</li> <li>3 mei 2004 20:50 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Sachsen_im_Deutschen_Reich_.gif|Sachsen_im_Deutschen_Reich_.gif]]"</li> <li>3 mei 2004 20:48 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Koenigreich_Sachsen_Flagge.gif|Koenigreich_Sachsen_Flagge.gif]]"</li> <li>3 mei 2004 20:33 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Waldeck_im_Deutschen_Reich_.gif|Waldeck_im_Deutschen_Reich_.gif]]"</li> <li>3 mei 2004 20:33 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Wappen_waldeck.gif|Wappen_waldeck.gif]]"</li> <li>3 mei 2004 20:17 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Koenigreich_Bayern_Flagge.gif|Koenigreich_Bayern_Flagge.gif]]"</li> <li>3 mei 2004 20:16 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Bayern_im_Deutschen_Reich_.gif|Bayern_im_Deutschen_Reich_.gif]]"</li> <li>3 mei 2004 20:15 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Bayern_Koenigreich_Wappen_.gif|Bayern_Koenigreich_Wappen_.gif]]"</li> <li>3 mei 2004 20:14 [[Gebruiker:Rm|Rm]] heeft ge-upload: "[[:Afbeelding:Jdbgmgr.exe.png|Jdbgmgr.exe.png]]" <em>(screenshot )</em></li> <li>3 mei 2004 19:53 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Tulp_geel2.jpg|Tulp_geel2.jpg]]" <em>(gele tulp april 2004 / foto door Fruggo, vrijgegeven onder GNU-FDL)</em></li> <li>3 mei 2004 19:24 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:SpoorwegenNederland.png|SpoorwegenNederland.png]]" <em>(Ned. spoorwegnet (reizigersvervoer), eigen werk, &#123;&#123;msg:PD}})</em></li> <li>3 mei 2004 17:19 [[Gebruiker:Bart van der Pligt|Bart van der Pligt]] heeft ge-upload: "[[:Afbeelding:Bobevers.jpg|Bobevers.jpg]]" <em>(This image is copyrighted. Its use is contended to be fair use under United States law.)</em></li> <li>3 mei 2004 16:44 [[Gebruiker:Bart van der Pligt|Bart van der Pligt]] heeft ge-upload: "[[:Afbeelding:Andrehazes.jpg|Andrehazes.jpg]]" <em>(This image is copyrighted. Its use is contended to be fair use under United States law. )</em></li> <li>3 mei 2004 16:28 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Preussen_Wappen.gif|Preussen_Wappen.gif]]"</li> <li>3 mei 2004 16:24 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Koenigreich_Preussen_Flagge.gif|Koenigreich_Preussen_Flagge.gif]]"</li> <li>3 mei 2004 16:23 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Koenigreich_Preussen.gif|Koenigreich_Preussen.gif]]"</li> <li>3 mei 2004 14:29 [[Gebruiker:Bart van der Pligt|Bart van der Pligt]] heeft ge-upload: "[[:Afbeelding:Commedhabitude.jpg|Commedhabitude.jpg]]" <em>(This image is copyrighted. Its use is contended to be fair use under United States law. )</em></li> <li>3 mei 2004 13:56 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Luther.png|Luther.png]]" <em>(PD: van wikipedia, maar nu ingekleurd)</em></li> <li>3 mei 2004 13:02 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:TariqAziz.jpg|TariqAziz.jpg]]" <em>(van engelse pagina: United States Central Command photo. )</em></li> <li>3 mei 2004 11:16 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Torresjk.jpg|Torresjk.jpg]]" <em>(postzegel)</em></li> <li>3 mei 2004 11:03 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Germany.gif|Germany.gif]]"</li> <li>3 mei 2004 11:01 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Turkjk.jpg|Turkjk.jpg]]" <em>(postzegel)</em></li> <li>3 mei 2004 11:00 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Roemreic.gif|Roemreic.gif]]"</li> <li>3 mei 2004 10:58 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Heilige_Roomse_Rijk_Vlag.gif|Heilige_Roomse_Rijk_Vlag.gif]]"</li> <li>3 mei 2004 10:38 [[Gebruiker:Bart van der Pligt|Bart van der Pligt]] heeft ge-upload: "[[:Afbeelding:Zangereszondernaam.jpg|Zangereszondernaam.jpg]]" <em>(This image is copyrighted. Its use is contended to be fair use under United States law. )</em></li> <li>3 mei 2004 10:34 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Vlagbrusselgroot.png|Vlagbrusselgroot.png]]" <em>(mooiere kleruen)</em></li> <li>3 mei 2004 10:24 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Kolibri.jpg|Kolibri.jpg]]" <em>(foto van http&#58;//www.pueblo.gsa.gov/cic_text/misc/forbirds/forbird.htm staat ook op Duitse Wikipedia)</em></li> <li>3 mei 2004 09:57 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Drittes_Reich_2.gif|Drittes_Reich_2.gif]]"</li> <li>3 mei 2004 09:50 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Fdas.gif|Fdas.gif]]"</li> <li>3 mei 2004 09:48 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Ruyjk.jpg|Ruyjk.jpg]]" <em>(postzegel)</em></li> <li>3 mei 2004 09:42 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kampjk.jpg|Kampjk.jpg]]" <em>(postzegel)</em></li> <li>3 mei 2004 09:22 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Drittes_Reich.gif|Drittes_Reich.gif]]"</li> <li>3 mei 2004 09:13 [[Gebruiker:Rianne|Rianne]] heeft ge-upload: "[[:Afbeelding:Globe_theatre.jpg|Globe_theatre.jpg]]" <em>(Foto door mij gemaakt in het globe theatre. )</em></li> <li>3 mei 2004 09:00 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Ernstjk.jpg|Ernstjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>3 mei 2004 08:56 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Kolibri_snavel.jpg|Kolibri_snavel.jpg]]" <em>(uitvergroting van kolibricomkl.jpg)</em></li> <li>3 mei 2004 08:28 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Suikermais_kiemplant_groot.jpg|Suikermais_kiemplant_groot.jpg]]" <em>(zelfgemaakte foto van kiemplant van suikermais)</em></li> <li>3 mei 2004 08:26 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Pape_innocent_3.jpg|Pape_innocent_3.jpg]]" <em>(fr: wikipedia)</em></li> <li>3 mei 2004 08:16 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Stamslaboon_eerste_drietallig_blad_(1).jpg|Stamslaboon_eerste_drietallig_blad_(1).jpg]]" <em>(zelfgemaakte foto van stamslaboon met eerste drietallige bladeren)</em></li> <li>3 mei 2004 07:58 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Appelboom.jpg|Appelboom.jpg]]" <em>(zelfgemaakte foto; Rij van spilvormige appelbomen in bloei eind april)</em></li> <li>3 mei 2004 07:30 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:HostilianusSest01.jpg|HostilianusSest01.jpg]]" <em>(Portret van Hostilianus op een sestertie. (eigen scan))</em></li> <li>3 mei 2004 06:12 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Tulp_meeldraden.jpg|Tulp_meeldraden.jpg]]" <em>(zelfgemaakte foto; tulp met zeer dikke helmdraden)</em></li> <li>3 mei 2004 06:10 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Kerstroos_meeldraad.jpg|Kerstroos_meeldraad.jpg]]" <em>(zelfgemaakte foto van kerstroos (Helleboris))</em></li> <li>3 mei 2004 06:08 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Aardbei-meeldraden.jpg|Aardbei-meeldraden.jpg]]" <em>(zelfgemaakte foto; platte helmhokjes bij aardbei)</em></li> <li>3 mei 2004 05:27 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Equisetumarvense.jpg|Equisetumarvense.jpg]]" <em>(Fertiel stengel van Heermoes door mij gefotografeerd in het Eemboerveld bij Smeerling &#123;&#123;msg:GFDL}})</em></li> <li>2 mei 2004 21:58 [[Gebruiker:Soliman|Soliman]] heeft ge-upload: "[[:Afbeelding:DSCN6184_watertoren_den_helder2002.jpg|DSCN6184_watertoren_den_helder2002.jpg]]" <em>(Watertoren Den Helder 2002)</em></li> <li>2 mei 2004 21:42 [[Gebruiker:Soliman|Soliman]] heeft ge-upload: "[[:Afbeelding:Hel297.jpg|Hel297.jpg]]" <em>(De oude watertoren centrum van Den Helder )</em></li> <li>2 mei 2004 19:22 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Gouda_Holl_IJssel.jpg|Gouda_Holl_IJssel.jpg]]" <em>(Gouda, Hollandse IJssel - eigen foto)</em></li> <li>2 mei 2004 19:12 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Hashemitearms.jpg|Hashemitearms.jpg]]" <em>(En: wikipedia)</em></li> <li>2 mei 2004 18:53 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Ecuador_coa.gif|Ecuador_coa.gif]]" <em>(En: wikipedia)</em></li> <li>2 mei 2004 18:53 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Liberty-delacroix.jpg|Liberty-delacroix.jpg]]" <em>(liberté)</em></li> <li>2 mei 2004 18:53 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Logo_republique4.jpg|Logo_republique4.jpg]]" <em>(logo)</em></li> <li>2 mei 2004 18:53 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Maria1.jpg|Maria1.jpg]]" <em>(marianne)</em></li> <li>2 mei 2004 18:52 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Mariannes_d'aujourd'hui_Paris_2003.jpg|Mariannes_d'aujourd'hui_Paris_2003.jpg]]" <em>(marianne)</em></li> <li>2 mei 2004 18:51 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Mariannes3.jpg|Mariannes3.jpg]]" <em>(marianne)</em></li> <li>2 mei 2004 18:51 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Timbpt2.jpg|Timbpt2.jpg]]" <em>(Marianne postzegel)</em></li> <li>2 mei 2004 18:05 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Ivorycoastarms55.png|Ivorycoastarms55.png]]" <em>(ivoorkust)</em></li> <li>2 mei 2004 17:46 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Biot-map.jpg|Biot-map.jpg]]" <em>(BIOT kaart)</em></li> <li>2 mei 2004 17:46 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:British_iot_flag_medium.png|British_iot_flag_medium.png]]" <em>(BIOT vlag)</em></li> <li>2 mei 2004 17:14 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:American_samoa_flag_large.png|American_samoa_flag_large.png]]" <em>(amerikaans samoa)</em></li> <li>2 mei 2004 17:13 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:125px-American_samoa_flag_large.png|125px-American_samoa_flag_large.png]]" <em>(samoa vlag)</em></li> <li>2 mei 2004 16:54 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Englishcoatofarms.png|Englishcoatofarms.png]]" <em>(engeland)</em></li> <li>2 mei 2004 16:50 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:100px-Englishcoatofarms.png|100px-Englishcoatofarms.png]]" <em>(engeland coa)</em></li> <li>2 mei 2004 16:45 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Cookislands_coa.jpg|Cookislands_coa.jpg]]" <em>(cook eilanden)</em></li> <li>2 mei 2004 16:44 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Comoros_coat_of_arms_small.gif|Comoros_coat_of_arms_small.gif]]" <em>(comoros)</em></li> <li>2 mei 2004 16:40 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Aruba_coa.png|Aruba_coa.png]]" <em>(aruba)</em></li> <li>2 mei 2004 16:37 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Dominican_republic_coa.gif|Dominican_republic_coa.gif]]" <em>(domirep)</em></li> <li>2 mei 2004 16:35 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Embelm_KZ.png|Embelm_KZ.png]]" <em>(yukf)</em></li> <li>2 mei 2004 16:34 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Emblem_of_India.png|Emblem_of_India.png]]" <em>(india)</em></li> <li>2 mei 2004 16:34 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Estonia_coa.png|Estonia_coa.png]]" <em>(estland)</em></li> <li>2 mei 2004 16:33 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Falklands_Coat_of_Arms.png|Falklands_Coat_of_Arms.png]]" <em>(falkland)</em></li> <li>2 mei 2004 16:33 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Faroe_Islands.png|Faroe_Islands.png]]" <em>(farao)</em></li> <li>2 mei 2004 16:32 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Fij-coa.gif|Fij-coa.gif]]" <em>(fiji)</em></li> <li>2 mei 2004 16:32 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Germany_coa.png|Germany_coa.png]]" <em>(duits)</em></li> <li>2 mei 2004 16:32 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Ghanaarms23.png|Ghanaarms23.png]]" <em>(ghana)</em></li> <li>2 mei 2004 16:32 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Guineaarms23.png|Guineaarms23.png]]" <em>(guine)</em></li> <li>2 mei 2004 16:31 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Guyana_coa.png|Guyana_coa.png]]" <em>(guyana)</em></li> <li>2 mei 2004 16:31 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Hong_Kong_coa.png|Hong_Kong_coa.png]]" <em>(honhkonh)</em></li> <li>2 mei 2004 16:31 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Hungary_coa.png|Hungary_coa.png]]" <em>(hongarije)</em></li> <li>2 mei 2004 16:31 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Indonesiacoatofarms.jpg|Indonesiacoatofarms.jpg]]" <em>(indonesie)</em></li> <li>2 mei 2004 16:30 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Iraq_arms.png|Iraq_arms.png]]" <em>(irak)</em></li> <li>2 mei 2004 16:30 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:ISLcoat.gif|ISLcoat.gif]]" <em>(ui)</em></li> <li>2 mei 2004 16:30 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Ireland_coa.png|Ireland_coa.png]]" <em>(ierland)</em></li> <li>2 mei 2004 16:30 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Isle_of_Man_Arms_Small.png|Isle_of_Man_Arms_Small.png]]" <em>(man eiland)</em></li> <li>2 mei 2004 16:30 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Israel-coa-medium.png|Israel-coa-medium.png]]" <em>(isreal)</em></li> <li>2 mei 2004 16:30 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Italy_coa.png|Italy_coa.png]]" <em>(italie)</em></li> <li>2 mei 2004 16:30 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Jamaica_coat_medium.gif|Jamaica_coat_medium.gif]]" <em>(jamaica)</em></li> <li>2 mei 2004 16:30 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Ivorycoastarms55.png|Ivorycoastarms55.png]]" <em>(ivoorkust)</em></li> <li>2 mei 2004 16:29 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Jersey_Coat_of_Arms.png|Jersey_Coat_of_Arms.png]]" <em>(jersey)</em></li> <li>2 mei 2004 16:29 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:KUW-coat.gif|KUW-coat.gif]]" <em>(kuw)</em></li> <li>2 mei 2004 16:29 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Kiribaticoatofarms.jpg|Kiribaticoatofarms.jpg]]" <em>(kirbiti)</em></li> <li>2 mei 2004 16:28 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Lambang_Mongolia.png|Lambang_Mongolia.png]]" <em>(mongolia)</em></li> <li>2 mei 2004 16:28 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Laos_coa.png|Laos_coa.png]]" <em>(laos)</em></li> <li>2 mei 2004 16:28 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Lesothoarms22.png|Lesothoarms22.png]]" <em>(lesoto)</em></li> <li>2 mei 2004 16:28 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Lib-coa.png|Lib-coa.png]]" <em>(liberia)</em></li> <li>2 mei 2004 16:27 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Luxarms.gif|Luxarms.gif]]" <em>(luxelmburg)</em></li> <li>2 mei 2004 16:27 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Liechtenstein_coa.png|Liechtenstein_coa.png]]" <em>(lichtenstein)</em></li> <li>2 mei 2004 16:27 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Mexico_coat_of_arms_(small).png|Mexico_coat_of_arms_(small).png]]" <em>(mexico)</em></li> <li>2 mei 2004 16:26 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Myanmararms22.png|Myanmararms22.png]]" <em>(myanamar)</em></li> <li>2 mei 2004 16:26 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Nantillescoa.png|Nantillescoa.png]]" <em>(nantilles)</em></li> <li>2 mei 2004 16:26 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:New_zealand_coa.png|New_zealand_coa.png]]" <em>(nieuw-zeeland)</em></li> <li>2 mei 2004 16:26 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:PapuaNewGuinea_coa.png|PapuaNewGuinea_coa.png]]" <em>(papua)</em></li> <li>2 mei 2004 16:26 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Paraguay_coa.png|Paraguay_coa.png]]" <em>(paraguay)</em></li> <li>2 mei 2004 16:25 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Philippines_coa.png|Philippines_coa.png]]" <em>(filips)</em></li> <li>2 mei 2004 16:25 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Pitcairn-coa.jpg|Pitcairn-coa.jpg]]" <em>(pitcairn)</em></li> <li>2 mei 2004 16:25 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Rwandaflag3.png|Rwandaflag3.png]]" <em>(rwanda)</em></li> <li>2 mei 2004 16:24 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Shield_cl.gif|Shield_cl.gif]]" <em>(cz)</em></li> <li>2 mei 2004 16:24 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Seychelles_coa.png|Seychelles_coa.png]]" <em>(seychelen)</em></li> <li>2 mei 2004 16:24 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:SmallNationalArmsofUAE.png|SmallNationalArmsofUAE.png]]" <em>(e)</em></li> <li>2 mei 2004 16:24 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Smarino.jpg|Smarino.jpg]]" <em>(san marino)</em></li> <li>2 mei 2004 16:23 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:St_lucia_coa.png|St_lucia_coa.png]]" <em>(lucia)</em></li> <li>2 mei 2004 16:23 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Suriname_coa.png|Suriname_coa.png]]" <em>(suri)</em></li> <li>2 mei 2004 16:23 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Swazicoa.jpg|Swazicoa.jpg]]" <em>(swaziland)</em></li> <li>2 mei 2004 16:23 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Switzerland_coa.png|Switzerland_coa.png]]" <em>(zwitser)</em></li> <li>2 mei 2004 16:23 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Symbol_crest.png|Symbol_crest.png]]" <em>(crest)</em></li> <li>2 mei 2004 16:22 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Tanzanian_Coat_of_Arms.png|Tanzanian_Coat_of_Arms.png]]" <em>(tanzania)</em></li> <li>2 mei 2004 16:22 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:The_small_Danish_Coat_of_Arms.jpg|The_small_Danish_Coat_of_Arms.jpg]]" <em>(denemark)</em></li> <li>2 mei 2004 16:22 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Togoarms22.png|Togoarms22.png]]" <em>(tongo2)</em></li> <li>2 mei 2004 16:22 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Tongaarms22.png|Tongaarms22.png]]" <em>(tongo)</em></li> <li>2 mei 2004 16:21 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Tuvalu-coa.jpg|Tuvalu-coa.jpg]]" <em>(tuvalu)</em></li> <li>2 mei 2004 16:21 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Ugandan_Coat_of_Arms.png|Ugandan_Coat_of_Arms.png]]" <em>(uganda)</em></li> <li>2 mei 2004 16:21 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:UK_Coat_of_Arms_Small.png|UK_Coat_of_Arms_Small.png]]" <em>(uk)</em></li> <li>2 mei 2004 16:21 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Ukraine_coa.png|Ukraine_coa.png]]" <em>(oekraine)</em></li> <li>2 mei 2004 16:21 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Uruguay_coa.png|Uruguay_coa.png]]" <em>(uruguay)</em></li> <li>2 mei 2004 16:21 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Vanuatu_coat_of_arms.jpg|Vanuatu_coat_of_arms.jpg]]" <em>(vanuatu)</em></li> <li>2 mei 2004 16:20 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Vatican_coa.png|Vatican_coa.png]]" <em>(vatikaan)</em></li> <li>2 mei 2004 16:20 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Viet-coa.png|Viet-coa.png]]" <em>(vietnam)</em></li> <li>2 mei 2004 16:20 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Westasmarms22.png|Westasmarms22.png]]" <em>(west)</em></li> <li>2 mei 2004 16:20 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Scottish_Royal_COA.jpg|Scottish_Royal_COA.jpg]]" <em>(En: wikipedia)</em></li> <li>2 mei 2004 16:19 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Za-coa.gif|Za-coa.gif]]" <em>(za)</em></li> <li>2 mei 2004 16:19 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Yemencoa.jpg|Yemencoa.jpg]]" <em>(jemen)</em></li> <li>2 mei 2004 16:19 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:ZaireCoat.png|ZaireCoat.png]]" <em>(zaire)</em></li> <li>2 mei 2004 16:19 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Zambian_Coat_of_Arms.png|Zambian_Coat_of_Arms.png]]" <em>(zambia)</em></li> <li>2 mei 2004 16:19 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Zimbabwe_Coat_of_Arms.png|Zimbabwe_Coat_of_Arms.png]]" <em>(zimbab)</em></li> <li>2 mei 2004 15:09 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:SWGUARD.JPG|SWGUARD.JPG]]" <em>(En: wikipedia)</em></li> <li>2 mei 2004 12:58 [[Gebruiker:Tbrugtje|Tbrugtje]] heeft ge-upload: "[[:Afbeelding:2003611212_tk48.jpg|2003611212_tk48.jpg]]" <em>(meisje word man)</em></li> <li>2 mei 2004 12:03 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Pircjvdk.jpg|Pircjvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>2 mei 2004 11:57 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Pillsjvdk.jpg|Pillsjvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>2 mei 2004 11:49 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Philijvdk.jpg|Philijvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>2 mei 2004 11:44 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Petrajvdk.jpg|Petrajvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>2 mei 2004 11:33 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Paulsenjvdk.jpg|Paulsenjvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>2 mei 2004 11:28 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Pannojvdk.jpg|Pannojvdk.jpg]]" <em>(foto -Dimitri-)</em></li> <li>2 mei 2004 11:23 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Pachjvdk.jpg|Pachjvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>2 mei 2004 11:08 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Nimzojvdk.jpg|Nimzojvdk.jpg]]" <em>(peng )</em></li> <li>2 mei 2004 11:03 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Petrosianjvdk.jpg|Petrosianjvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>2 mei 2004 10:57 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Staunjvdk.jpg|Staunjvdk.jpg]]" <em>(postzegel)</em></li> <li>2 mei 2004 10:53 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Rubinjvdk.jpg|Rubinjvdk.jpg]]" <em>(postzegel)</em></li> <li>2 mei 2004 10:49 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Resjvdk.jpg|Resjvdk.jpg]]" <em>(postzegel)</em></li> <li>2 mei 2004 09:17 [[Gebruiker:MD|MD]] heeft ge-upload: "[[:Afbeelding:Anti-aliasing.jpg|Anti-aliasing.jpg]]" <em>(Voorbeeld van Anti-Aliasing; zelfgemaakt met Fireworks)</em></li> <li>2 mei 2004 09:15 [[Gebruiker:Bart van der Pligt|Bart van der Pligt]] heeft ge-upload: "[[:Afbeelding:Vaderabraham.jpg|Vaderabraham.jpg]]" <em>(This image is copyrighted. Its use is contended to be fair use under United States law. )</em></li> <li>2 mei 2004 09:14 [[Gebruiker:Bart van der Pligt|Bart van der Pligt]] heeft ge-upload: "[[:Afbeelding:Wilmalandkroon.jpg|Wilmalandkroon.jpg]]" <em>(This image is copyrighted. Its use is contended to be fair use under United States law. )</em></li> <li>2 mei 2004 08:58 [[Gebruiker:Bart van der Pligt|Bart van der Pligt]] heeft ge-upload: "[[:Afbeelding:Arnoengradje.jpg|Arnoengradje.jpg]]" <em>(This image is copyrighted. Its use is contended to be fair use under United States law.)</em></li> <li>2 mei 2004 07:11 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Constantijn_VII_&_Romanus_I.jpg|Constantijn_VII_&_Romanus_I.jpg]]" <em>(Gestileerde bustes van Constantijn VII en Romanus I. Bron: Classical Numismatic Group, Inc. (CNG))</em></li> <li>2 mei 2004 02:30 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Peace_sign.jpg|Peace_sign.jpg]]" <em>(Zelf getekend vredesteken, ik hoop dat het genoeg lijkt, vervang het anders vooral. GNU FDL)</em></li> <li>1 mei 2004 20:45 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Amfiteatern_i_Pola.jpg|Amfiteatern_i_Pola.jpg]]" <em>(Van sv: wiki Den fjõttrade ankan (20990 bytes) (FrÕn Nordisk familjebok) )</em></li> <li>1 mei 2004 14:40 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:GamalNasser.jpg|GamalNasser.jpg]]" <em>(En: wikipedia)</em></li> <li>1 mei 2004 14:35 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Rubtovajk.jpg|Rubtovajk.jpg]]" <em>(postzegel)</em></li> <li>1 mei 2004 14:24 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Bikova.jpg|Bikova.jpg]]" <em>(postzegel)</em></li> <li>1 mei 2004 14:16 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Chiburjk.jpg|Chiburjk.jpg]]" <em>(postzegel)</em></li> <li>1 mei 2004 14:08 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Egypt_HosniMubarak.01.jpg|Egypt_HosniMubarak.01.jpg]]" <em>(En: wikipedia)</em></li> <li>1 mei 2004 14:07 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Rudenkojk.jpg|Rudenkojk.jpg]]" <em>(postzegel)</em></li> <li>1 mei 2004 13:42 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Klavecimbel_Pen.png|Klavecimbel_Pen.png]]" <em>(Pen van een klavecimbel; van Wikipedia.en; vertaald door mij &#123;&#123;msg:GFDL}})</em></li> <li>1 mei 2004 13:39 [[Gebruiker:Willemdd|Willemdd]] heeft ge-upload: "[[:Afbeelding:HRvissershaven.jpg|HRvissershaven.jpg]]" <em>(eigen foto, visser Njivice)</em></li> <li>1 mei 2004 13:31 [[Gebruiker:Willemdd|Willemdd]] heeft ge-upload: "[[:Afbeelding:Krk.jpg|Krk.jpg]]" <em>(Van De, kaart Krk)</em></li> <li>1 mei 2004 13:24 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Xiejun.jpg|Xiejun.jpg]]" <em>(postzegel)</em></li> <li>1 mei 2004 13:22 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Witte_dovenetel_closeup.jpg|Witte_dovenetel_closeup.jpg]]" <em>(zelfgemaakte foto: closeup van de bloemen van de witte dovenetel)</em></li> <li>1 mei 2004 13:12 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Witte_bes_onderstandig_vruchtbeginsel.jpg|Witte_bes_onderstandig_vruchtbeginsel.jpg]]" <em>(zelfgemaakte foto:witte bes met onderstandig vruchtbeginsel)</em></li> <li>1 mei 2004 12:44 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Karte_stuttgart_in_deutschland.png|Karte_stuttgart_in_deutschland.png]]" <em>(duitse wiki: Karte Stuttgart in Deutschland)</em></li> <li>1 mei 2004 12:38 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Karte_frankfurt_am_main_in_deutschland.png|Karte_frankfurt_am_main_in_deutschland.png]]" <em>(duitse wiki: Karte Frankfurt am Main in Deutschland)</em></li> <li>1 mei 2004 12:29 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Karte_trier_in_deutschland.png|Karte_trier_in_deutschland.png]]" <em>(duitse wiki: Karte Trier in Deutschland)</em></li> <li>1 mei 2004 12:25 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Karte_koeln_in_deutschland.png|Karte_koeln_in_deutschland.png]]" <em>(duitse wiki: Karte Köln in Deutschland)</em></li> <li>1 mei 2004 12:12 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Karte_dresden_in_deutschland.png|Karte_dresden_in_deutschland.png]]" <em>(duitse wiki: Karte Dresden in Deutschland)</em></li> <li>1 mei 2004 12:08 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Karte_halle_an_der_saale_in_deutschland.png|Karte_halle_an_der_saale_in_deutschland.png]]" <em>(duitse wiki: Karte Halle an der Saale in Deutschland)</em></li> <li>1 mei 2004 12:06 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Karte_erfurt_in_deutschland.png|Karte_erfurt_in_deutschland.png]]" <em>(duitse wiki: Karte Erfurt in Deutschland)</em></li> <li>1 mei 2004 12:01 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Karte_dortmund_in_deutschland.png|Karte_dortmund_in_deutschland.png]]" <em>(duitse wiki: Karte Dortmund in Deutschland)</em></li> <li>1 mei 2004 11:51 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Karte_berlin_in_deutschland.png|Karte_berlin_in_deutschland.png]]" <em>(duitse wiki: Karte Berlin in Deutschland (deelstaat = stad))</em></li> <li>1 mei 2004 11:47 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Karte_potsdam_in_deutschland.png|Karte_potsdam_in_deutschland.png]]" <em>(duitse wiki: Karte Potsdam in Deutschland)</em></li> <li>1 mei 2004 11:35 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Karte_magdeburg_in_deutschland.png|Karte_magdeburg_in_deutschland.png]]" <em>(duitse wiki: Karte Magdeburg Berlin in Deutschland)</em></li> <li>1 mei 2004 11:30 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Karte_osnabrueck_in_deutschland.png|Karte_osnabrueck_in_deutschland.png]]" <em>(duitse wiki: Karte Osnabrück in Deutschland)</em></li> <li>1 mei 2004 11:24 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Karte_hamburg_in_deutschland.png|Karte_hamburg_in_deutschland.png]]" <em>(duitse wiki: Karte Hamburg in Deutschland)</em></li> <li>1 mei 2004 11:21 [[Gebruiker:Willemdd|Willemdd]] heeft ge-upload: "[[:Afbeelding:CroatiaGradZagreb.png|CroatiaGradZagreb.png]]" <em>(Zagreb)</em></li> <li>1 mei 2004 11:20 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Karte_wismar_in_deutschland.png|Karte_wismar_in_deutschland.png]]" <em>(duitse wiki: Karte Wismar in Deutschland)</em></li> <li>1 mei 2004 11:15 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Karte_hannover_in_deutschland.png|Karte_hannover_in_deutschland.png]]" <em>(duitse wiki: Karte Hannover in Deutschland)</em></li> <li>1 mei 2004 10:56 [[Gebruiker:Willemdd|Willemdd]] heeft ge-upload: "[[:Afbeelding:CroatiaProv.png|CroatiaProv.png]]" <em>(van Wiki En)</em></li> <li>1 mei 2004 10:09 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Borspasjk.jpg|Borspasjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>1 mei 2004 09:44 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Borisjk.jpg|Borisjk.jpg]]" <em>(postzegel)</em></li> <li>1 mei 2004 09:21 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Keresjvdk.jpg|Keresjvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>1 mei 2004 09:10 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Keresjk.jpg|Keresjk.jpg]]" <em>(postzegel)</em></li> <li>1 mei 2004 09:06 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Botjvdk.jpg|Botjvdk.jpg]]" <em>(Fritz8 - print)</em></li> <li>1 mei 2004 08:53 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Botwinnikjk.jpg|Botwinnikjk.jpg]]" <em>(postzegel)</em></li> <li>1 mei 2004 08:53 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Croatia-Dalmatia.png|Croatia-Dalmatia.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Croatia with Dalmatia highlighted &#91;&#91;en:Image:Croatia-Dalmatia.png]])</em></li> <li>1 mei 2004 08:44 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Large_Dallas_Landsat.jpg|Large_Dallas_Landsat.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Large Landsat of Dallas A simulated-color satellite image of Dallas and Fort Worth, Texas, taken by &#91;&#91;NASA]]&#39;s &#91;&#91;Landsat 7]] satellite. Dallas makes up the right half of the urbanized area. &#123;&#123;msg:unverified}} &#91;&#91;en:Image:Large Dallas Landsat.jpg]])</em></li> <li>1 mei 2004 08:42 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Us-tx-da.png|Us-tx-da.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Dallas, Texas Flag. Image made by Blas Delgado. Image from http&#58;//fotw.vexillum.com/flags/us-tx-da.html &#91;&#91;en:Image:Us-tx-da.png]])</em></li> <li>1 mei 2004 08:41 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Dallas6.jpg|Dallas6.jpg]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Dallas6.jpg]])</em></li> <li>1 mei 2004 08:34 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Dalai_Lama1.jpg|Dalai_Lama1.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Der Dalai Lama &#91;&#91;de:Bild:Dalai Lama1.jpg]])</em></li> <li>1 mei 2004 08:31 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Petrosianjk.jpg|Petrosianjk.jpg]]" <em>(postzegel)</em></li> <li>1 mei 2004 08:25 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Nimzojk.jpg|Nimzojk.jpg]]" <em>(postzegel)</em></li> <li>1 mei 2004 08:16 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Nimzo2jvk.jpg|Nimzo2jvk.jpg]]" <em>(postzegel)</em></li> <li>1 mei 2004 08:16 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Rapsfeld.jpg|Rapsfeld.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Blühendes Rapsfeld *Fotograf: Walter J. Pilsak, Waldsassen *Copyright Status: **&#91;&#91;GNU Freie Dokumentationslizenz]] &#91;&#91;de:Bild:Rapsfeld.jpg]])</em></li> <li>1 mei 2004 08:15 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Raps.jpg|Raps.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Photo taken by the Swedish minitry of agriculture &#91;&#91;en:Image:raps.jpg]])</em></li> <li>1 mei 2004 07:59 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Clovis.jpg|Clovis.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: &#61;= Description == Baptême de Clovis Ier Photo d&#39;un extrait de la peinture, &#39;&#39;Le baptême de Clovis&#39;&#39;, du peintre français Saint-Gilles, actuellement au National Gallery of Art, Washington (http&#58;//www.kfki.hu/~arthp/html/m/master/stgilles/). &#91;&#91;Utilisateur:Yann&#124;Yann]] 26 jul 2003 à 22:01 (CEST) &#61;= Source == * http&#58;//www.kfki.hu/~arthp/html/m/master/stgilles/ &#61;= Licence == &#91;&#91;Fair use]] pour illustrer l&#39;article sur &#91;&#91;Clovis Ier]] &#91;&#91;fr:Image:Clovis.jpg]])</em></li> <li>1 mei 2004 07:59 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Laskerjk.jpg|Laskerjk.jpg]]" <em>(postzegel)</em></li> <li>1 mei 2004 07:57 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:CLOVISRoydeFrance.JPG|CLOVISRoydeFrance.JPG]]" <em>(Vanaf Engelse wikpeida &#91;&#91;en:Image:CLOVISRoydeFrance.JPG]])</em></li> <li>1 mei 2004 07:44 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Smyslovjk.jpg|Smyslovjk.jpg]]" <em>(postzegel)</em></li> <li>1 mei 2004 07:37 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Menchikjk.jpg|Menchikjk.jpg]]" <em>(postzegel)</em></li> <li>1 mei 2004 00:17 [[Gebruiker:Branko|Branko]] heeft ge-upload: "[[:Afbeelding:Hennepplanten.jpg|Hennepplanten.jpg]]" <em>(Om GIF-versie te vervangen.)</em></li> <li>1 mei 2004 00:14 [[Gebruiker:Branko|Branko]] heeft ge-upload: "[[:Afbeelding:Marihuanaproducten.jpg|Marihuanaproducten.jpg]]" <em>(Om GIF-versie te vervangen)</em></li> <li>30 apr 2004 23:54 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Cyclotron.png|Cyclotron.png]]" <em>(Schematische weergave van een cyclotron; overgenomen van Wikipedia.de; vertaald door mij &#123;&#123;msg:GFDL}})</em></li> <li>30 apr 2004 23:08 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Karte_luebeck_in_deutschland.png|Karte_luebeck_in_deutschland.png]]" <em>(duitse wiki: Karte Lübeck in Deutschland)</em></li> <li>30 apr 2004 22:52 [[Gebruiker:James|James]] heeft ge-upload: "[[:Afbeelding:Jubilee_Line_train_stopped_at_Canary_Wharf_underground_station_-_London_-_240404.jpg|Jubilee_Line_train_stopped_at_Canary_Wharf_underground_station_-_London_-_240404.jpg]]" <em>(Deze afbeelding is gevonden op de Engelstalige pagina over de Jubilee Line, te vinden op http&#58;//en.wikipedia.org/wiki/Jubilee_Line)</em></li> <li>30 apr 2004 22:51 [[Gebruiker:James|James]] heeft ge-upload: "[[:Afbeelding:Jubilee_Line_train_rushes_through_Canary_Wharf_underground_station_-_London_-_240404.jpg|Jubilee_Line_train_rushes_through_Canary_Wharf_underground_station_-_London_-_240404.jpg]]" <em>(Deze afbeelding is gevonden op de Engelstalige pagina over de Jubilee Line, te vinden op http&#58;//en.wikipedia.org/wiki/Jubilee_Line)</em></li> <li>30 apr 2004 22:33 [[Gebruiker:Amarant|Amarant]] heeft ge-upload: "[[:Afbeelding:Canadese_kano_2.jpg|Canadese_kano_2.jpg]]" <em>(eigen opname Gebruiker Amarant . Foto vrij onder de GNU/FDL)</em></li> <li>30 apr 2004 22:33 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Lorenzo_de_Medici.jpg|Lorenzo_de_Medici.jpg]]" <em>(van zweedse pagina: Legend: (nuvarande) = detta är den nuvarande bilden, (ta bort) = ta bort den gamla version, (återgå) = återgå till en gammal version. )</em></li> <li>30 apr 2004 22:14 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:LuebeckHolstentor.jpg|LuebeckHolstentor.jpg]]" <em>(Lubeck Holstentor stadspoort, Duitse wiki)</em></li> <li>30 apr 2004 22:14 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Tor.jpg|Tor.jpg]]" <em>(wat aangepast)</em></li> <li>30 apr 2004 21:02 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Ljubljana_parliament.jpg|Ljubljana_parliament.jpg]]" <em>(Van en: wiki Matthewmayer (13244 bytes) (reupload) Ljubljana parliament, photo taken by me. )</em></li> <li>30 apr 2004 20:59 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Lachgas.png|Lachgas.png]]" <em>(Van de: wiki Beschreibung: Strukturformel Lachgas N2O Quelle: ChemSketch Fotograf oder Zeichner: MarkusZi Andere Versionen: - Lizenzstatus: GNU FDL)</em></li> <li>30 apr 2004 20:56 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Crusade_damietta.JPG|Crusade_damietta.JPG]]" <em>(Van en: wiki Isis (31068 bytes) (louis ix of france leading the crusaders against damietta, egypt) )</em></li> <li>30 apr 2004 20:55 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Cross.png|Cross.png]]" <em>(Van en: wiki Nixdorf (5415 bytes) (A better &#91;&#91;cross]] illustration) A cross image. )</em></li> <li>30 apr 2004 20:53 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:UkraineCrimea.png|UkraineCrimea.png]]" <em>(Van en: wiki GNU FDL Morwen (17344 bytes) )</em></li> <li>30 apr 2004 20:52 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Vuurtoren_Urk.jpg|Vuurtoren_Urk.jpg]]" <em>(groter formaat)</em></li> <li>30 apr 2004 20:51 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Urk.jpg|Urk.jpg]]" <em>(Urk (andere foto en groter), eigen foto, &#123;&#123;msg:PD}})</em></li> <li>30 apr 2004 20:50 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Dampfma_kl.jpg|Dampfma_kl.jpg]]" <em>(Van de: wiki Ulrich.fuchs (39715 Byte) (Watt&#39;sche Niederdruck-Dampfmaschine (klein) aus dem alten Meyers-Lexikon) )</em></li> <li>30 apr 2004 20:48 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Tor.jpg|Tor.jpg]]" <em>(Van pl: wiki . Tsca (23520 bajt&amp;#9500;&amp;#9474;w) (tor kolejowy) Zdj&amp;#9472;&amp;#214;cie przedstawia tor kolejowy &amp;#9516;&amp;#174; 2003 by Tomasz Sienicki tsca#sdf.lonestar.org Licencja: GNU Free Documentation License -tsca 01:00, 25 lut 2004 (CET) )</em></li> <li>30 apr 2004 20:46 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Sleipner.jpg|Sleipner.jpg]]" <em>(Van da: stub-wiki Malene (33014 bytes) (Foto af Sleipner pÕ en Gotlandsk runesten))</em></li> <li>30 apr 2004 20:44 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Scorpius_constellation_map_small.png|Scorpius_constellation_map_small.png]]" <em>(Van ja: wiki Modeha (32032 &amp;#210;&amp;#226;&amp;#201;&amp;#210;&amp;#233;&amp;#241;&amp;#210;&amp;#226;&amp;#234;) (&amp;#210;&amp;#252;&amp;#242;&amp;#210;&amp;#252;&amp;#216;&amp;#210;&amp;#233;&amp;#232;&amp;#213;&amp;#9553;&amp;#186;&amp;#180;&amp;#9565;&amp;#234;&amp;#213;&amp;#9617;&amp;#197;&amp;#180;&amp;#9565;&amp;#235;&amp;#210;&amp;#199;&amp;#233;&amp;#222;&amp;#239;&amp;#9618;&amp;#222;&amp;#172;&amp;#215;&amp;#254;&amp;#235;&amp;#234;&amp;#210;&amp;#233;&amp;#234;&amp;#210;&amp;#233;&amp;#232;) )</em></li> <li>30 apr 2004 20:42 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Satyr_replica_small.jpg|Satyr_replica_small.jpg]]" <em>(Van en: wiki Jk (7111 bytes) (Replica of some Satyr statue) Cheap replica of some Satyr statue, about 10 cm in height, probably from some trashy Greek souvenir store, photographed on my window sill. )</em></li> <li>30 apr 2004 20:40 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:LocationVietnamHoChiMinh.png|LocationVietnamHoChiMinh.png]]" <em>(Van vi: wiki Mxn (33496 bytes) (Location map for Vietnam&#39;s Ho Chi Minh City muncipality; transferred from en:) Location map for Vietnam&#39;s Ho Chi Minh City muncipality. Originally uploaded to en: by en:User:Vardion (also at vi:); transferred by Minh Nguy&amp;#223;&amp;#9559;&amp;#224;n (talk, blog). )</em></li> <li>30 apr 2004 20:33 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Latin_alphabet_Nn.png|Latin_alphabet_Nn.png]]" <em>(Van en: wiki Nate Silva (1946 bytes) (Latin alphabet Nn in Helvetica 55 and Times LT Regular))</em></li> <li>30 apr 2004 20:30 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Homeo_taza.png|Homeo_taza.png]]" <em>(Van es: wiki Moriel (27098 bytes) (copiado de EL para el articulo TopologÝa) )</em></li> <li>30 apr 2004 20:06 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Vuurtoren_Urk.jpg|Vuurtoren_Urk.jpg]]" <em>(De vuurtoren van Urk, eigen foto &#123;&#123;msg:PD}})</em></li> <li>30 apr 2004 20:04 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Urk.jpg|Urk.jpg]]" <em>(op Urk, eigen foto &#123;&#123;msg:PD}})</em></li> <li>30 apr 2004 19:59 [[Gebruiker:Denkertje|Denkertje]] heeft ge-upload: "[[:Afbeelding:Dome_ofthe_rock_small.jpg|Dome_ofthe_rock_small.jpg]]" <em>(Rotskoepel Jeruzalem, afkomstig van Wikipedia EN)</em></li> <li>30 apr 2004 14:33 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Constable.cornfield.jpg|Constable.cornfield.jpg]]" <em>(John Constable, “The Cornfield”, painted 1826. Size: 56 by 48 inches (143 by 122 cm). National Gallery, London (UK). )</em></li> <li>30 apr 2004 13:44 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Berenike_II.jpg|Berenike_II.jpg]]" <em>(Portret van Berenice II. Bron: Classical Numismatic Group, Inc. (CNG))</em></li> <li>30 apr 2004 13:29 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Smysjk.jpg|Smysjk.jpg]]" <em>(postzegel)</em></li> <li>30 apr 2004 13:24 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Andersjk.jpg|Andersjk.jpg]]" <em>(postzegel)</em></li> <li>30 apr 2004 13:16 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:Spinozahuisje_Rijnsburg.jpg|Spinozahuisje_Rijnsburg.jpg]]" <em>(Spinozahuisje, Spinozalaan, Rijnsburg. Foto genomen op 17 april 2004 en geupload door maker.)</em></li> <li>30 apr 2004 13:16 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Botjk.jpg|Botjk.jpg]]" <em>(postzegel)</em></li> <li>30 apr 2004 13:12 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Aljechin.jpg|Aljechin.jpg]]" <em>(postzegel)</em></li> <li>30 apr 2004 13:10 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:Vroenhof_Warmond.jpg|Vroenhof_Warmond.jpg]]" <em>(Vroenhof, Herenweg, Warmond. Foto genomen op 17 april 2004 en geupload door maker.)</em></li> <li>30 apr 2004 13:10 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Ptolemaeus_III.jpg|Ptolemaeus_III.jpg]]" <em>(Portret van Ptolemeüs III Euergetes I. Bron: Classical Numismatic Group, Inc. (CNG))</em></li> <li>30 apr 2004 13:07 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:Huis_te_Warmond.jpg|Huis_te_Warmond.jpg]]" <em>(Huis te Warmond, Herenweg, Warmond. Ten tijde van de foto was het gebouw eigendom van de gelijknamige stichting en bewoond door particulieren. Foto genomen op 17 april 2004 en geupload door maker.)</em></li> <li>30 apr 2004 13:06 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Aljechin.jpg|Aljechin.jpg]]" <em>(postzegel)</em></li> <li>30 apr 2004 13:02 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:Oud_Poelgeest_Oegstgeest.jpg|Oud_Poelgeest_Oegstgeest.jpg]]" <em>(Oud Poelgeest, Laan van Oud Poelgeest, Oegstgeest. Foto genomen op 17 april 2004 en geupload door maker.)</em></li> <li>30 apr 2004 13:00 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Najdorfjk.jpg|Najdorfjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>30 apr 2004 12:52 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Morphyjk.jpg|Morphyjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>30 apr 2004 12:48 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Milesjk.jpg|Milesjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>30 apr 2004 12:45 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Mikenas.jpg|Mikenas.jpg]]" <em>(Fritz8 - print)</em></li> <li>30 apr 2004 12:39 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Miesesjk.jpg|Miesesjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>30 apr 2004 12:36 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Ptolemaeus_IV.jpg|Ptolemaeus_IV.jpg]]" <em>(Portret van Ptolemeüs IV Philopator. Bron: Classical Numismatic Group, Inc. (CNG))</em></li> <li>30 apr 2004 12:35 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:Cuneratoren_Rhenen.jpg|Cuneratoren_Rhenen.jpg]]" <em>(Cuneratoren, Rhenen. Foto genomen op 11 april 2004 en geupload door maker.)</em></li> <li>30 apr 2004 12:33 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:Erebegraafplaats_Rhenen.jpg|Erebegraafplaats_Rhenen.jpg]]" <em>(Militaire erebegraafplaats op de Grebbeberg, Grebbeweg 123 in Rhenen. Foto genomen op 11 april 2004 en geupload door maker.)</em></li> <li>30 apr 2004 12:31 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Marshalljk.jpg|Marshalljk.jpg]]" <em>(Fritz8 - print)</em></li> <li>30 apr 2004 12:28 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:Raadhuis_Maarn.jpg|Raadhuis_Maarn.jpg]]" <em>(Raadhuis, Raadhuisplein 1, Maarn. Foto genomen op 11 april 2004 en geupload door maker.)</em></li> <li>30 apr 2004 12:24 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Marocjk.jpg|Marocjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>30 apr 2004 12:23 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:Sparrendaal_Driebergen.jpg|Sparrendaal_Driebergen.jpg]]" <em>(Sparrendaal, Hoofdstraat 87-91, Driebergen. Foto genomen op 11 april 2004 en geupload door maker.)</em></li> <li>30 apr 2004 12:20 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Gufeld.jpg|Gufeld.jpg]]" <em>(Fritz8 - print)</em></li> <li>30 apr 2004 12:06 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Kern_splijting.png|Kern_splijting.png]]" <em>(Splijtingsreactie van uraan-235; overgenomen van Wikipedia.en door Evanherk; vertaald door mij)</em></li> <li>30 apr 2004 11:20 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Capajk.jpg|Capajk.jpg]]" <em>(postzegel)</em></li> <li>30 apr 2004 09:32 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Gufeldweb.jpg|Gufeldweb.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>30 apr 2004 09:28 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Bernagie-bloem-kl.jpg|Bernagie-bloem-kl.jpg]]" <em>(eigen foto 27-04-2004, uit de serie eigen tuin, hierbij toestemming publicatie onder gnu/fdl)</em></li> <li>30 apr 2004 09:28 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Bernagie-bloem-hr.jpg|Bernagie-bloem-hr.jpg]]" <em>(eigen foto 27-04-2004, uit de serie eigen tuin, hierbij toestemming publicatie onder gnu/fdl)</em></li> <li>30 apr 2004 09:26 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Bernagie-overz-kl.jpg|Bernagie-overz-kl.jpg]]" <em>(eigen foto 27-04-2004, uit de serie eigen tuin, hierbij toestemming publicatie onder gnu/fdl)</em></li> <li>30 apr 2004 09:26 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Bernagie-bloem-kl.JPG|Bernagie-bloem-kl.JPG]]" <em>(eigen foto 27-04-2004, uit de serie eigen tuin, hierbij toestemming publicatie onder gnu/fdl)</em></li> <li>30 apr 2004 09:22 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:1942Jeep.jpg|1942Jeep.jpg]]" <em>(En: wikipedia)</em></li> <li>30 apr 2004 09:12 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Quarry8093.JPG|Quarry8093.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Quarry: Coquina, SC Image taken by me, released under GFDL &#91;&#91;User:Pollinator&#124;Pollinator]] 05:40, 21 Mar 2004 (UTC) (&#123;&#123;msg:GFDL}}) &#91;&#91;en:Image:Quarry8093.JPG]])</em></li> <li>30 apr 2004 09:07 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bernini-a-d.jpg|Bernini-a-d.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Apollo and Daphne by Bernini &#91;&#91;en:Image:bernini-a-d.jpg]])</em></li> <li>30 apr 2004 09:02 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:IcarusandDaedalus.jpg|IcarusandDaedalus.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Icarus and Daedalus, Oil on canvas, 19th century painting by Charles-Paul Landon &#91;&#91;en:Image:IcarusandDaedalus.jpg]])</em></li> <li>30 apr 2004 08:52 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Dattelpalme.jpg|Dattelpalme.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Date Palm, Sinai, Egypt 2003 &#123;&#123;msg:Unverified}} &#91;&#91;en:Image:Dattelpalme.jpg]])</em></li> <li>30 apr 2004 08:42 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Fingerprintonpaper.jpg|Fingerprintonpaper.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: A &#91;&#91;fingerprint]] on paper. Done with a &#91;&#91;felt-tip pin]] and scanned, so the quality isn&#39;t very good. Released under &#91;&#91;GFDL]]. &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:fingerprintonpaper.jpg]])</em></li> <li>30 apr 2004 08:42 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Fingerprintonfinger.JPG|Fingerprintonfinger.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: A &#91;&#91;fingerprint]] on a &#91;&#91;finger]]. Hopefully this doesn&#39;t cause me too much trouble if i fly to the US again! Released under &#91;&#91;GFDL]]. &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:fingerprintonfinger.JPG]])</em></li> <li>30 apr 2004 08:19 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Ptolemaeus_VI.jpg|Ptolemaeus_VI.jpg]]" <em>(Portret van Ptolemeüs VI. Bron: Classical Numismatic Group, Inc. (CNG))</em></li> <li>30 apr 2004 08:17 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:LawrenceCyclotronDees.jpg|LawrenceCyclotronDees.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Cyclotron Dees at Lawrence Hall of Science. Copyleft by the photographer (Wiki ID: Leonard G.) &#91;&#91;en:Image:LawrenceCyclotronDees.jpg]])</em></li> <li>30 apr 2004 08:15 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:LawrenceCyclotronMagnet.jpg|LawrenceCyclotronMagnet.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Cyclotron Magnet at Lawrence Hall of Science Copyleft by the photographer (Wiki ID: Leonard G.) &#91;&#91;en:Image:LawrenceCyclotronMagnet.jpg]])</em></li> <li>30 apr 2004 08:10 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Polgar.jpg|Polgar.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>30 apr 2004 08:07 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:GreeceCyclades.png|GreeceCyclades.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: map &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:GreeceCyclades.png]])</em></li> <li>30 apr 2004 07:57 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:50Cent.jpg|50Cent.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: publicity photo from official site, upped as fair use &#91;&#91;en:Image:50Cent.jpg]])</em></li> <li>30 apr 2004 07:43 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Ptolemaeus_V.jpg|Ptolemaeus_V.jpg]]" <em>(Portret van Ptolemeus V. Foto met permissie Classical Numismatic Group, Inc. (CNG))</em></li> <li>30 apr 2004 07:28 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Stikmatjk.jpg|Stikmatjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>30 apr 2004 07:28 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:Sparrenheuvel_Zeist.jpg|Sparrenheuvel_Zeist.jpg]]" <em>(Sparrenheuvel, Driebergseweg 3, Zeist. Foto genomen op 11 april 2004 en geupload door maker.)</em></li> <li>30 apr 2004 07:25 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:De_Brink_Zeist.jpg|De_Brink_Zeist.jpg]]" <em>(De Brink, Utrechtseweg 82, Zeist. Ten tijde van de foto werd het gebouw gebruikt als kantoor door Bakkenist en Emmens NV. Foto genomen op 11 april 2004 en geupload door maker.)</em></li> <li>30 apr 2004 07:25 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Ghbrundtland.jpg|Ghbrundtland.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Gro Harlem Brundtland &#91;&#91;en:Image:Ghbrundtland.jpg]])</em></li> <li>30 apr 2004 07:21 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:Achterzijde_Slot_Zeist.jpg|Achterzijde_Slot_Zeist.jpg]]" <em>(Achterzijde Slot Zeist, Zinzendorflaan 1, Zeist. Foto genomen op 11 april 2004 en geupload door maker.)</em></li> <li>30 apr 2004 07:18 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:Raadhuis_Zeist.jpg|Raadhuis_Zeist.jpg]]" <em>(Gemeentehuis, Het Rond 1, Zeist. Foto genomen op 11 april 2004 en geupload door maker.)</em></li> <li>30 apr 2004 07:12 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:Voormalig_Raadhuis_Bunnik.jpg|Voormalig_Raadhuis_Bunnik.jpg]]" <em>(Voormalig raadhuis, Langstraat 2, Bunnik. Ten tijde van de foto was dit in gebruik als kantoor. Uiterst links de Hervormde kerk. Foto genomen op 11 april 2004 en geupload door maker.)</em></li> <li>30 apr 2004 07:09 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:Oud_Amelisweerd_Bunnik.jpg|Oud_Amelisweerd_Bunnik.jpg]]" <em>(Oud Amelisweerd, Koningslaan 9, Bunnik. Op de voorgrond de Kromme Rijn. Foto genomen op 11 april 2004 en geupload door maker.)</em></li> <li>30 apr 2004 07:06 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:De_Beesde_Bunnik.jpg|De_Beesde_Bunnik.jpg]]" <em>(De Beesde of &quot;Cammingha&quot;, Camminghalaan 36, Bunnik. Op de voorgrond de Kromme Rijn. Foto genomen op 11 april 2004 en geupload door maker.)</em></li> <li>30 apr 2004 05:54 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Sathya_Sai_Organisation_official_logo.jpg|Sathya_Sai_Organisation_official_logo.jpg]]" <em>(En: wikipedia)</em></li> <li>29 apr 2004 22:30 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Amiga.computer.750pix.jpg|Amiga.computer.750pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: From its launch in 1987, marketed as a games machine, the Amiga A500 was an amazing success for Commodore, reviving the ailing sales of its hardware. It was equipped with a 7.14MHz Motorola 68000 processor.&lt;br&gt; At the time, it was the only domestically-priced machine capable of displaying up to 4,096 colours on a display simultaneously, and was also capable of managing a 8-bit 4-track audio output at 22KHz.&lt;br&gt; Photographed by Adrian Pingstone in England in 1988 and released to the public domain. &#91;&#91;en:Image:amiga.computer.750pix.jpg]])</em></li> <li>29 apr 2004 21:30 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:SkyAltocumulusClouds.jpg|SkyAltocumulusClouds.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Altocumulus clouds&lt;br&gt;&lt;br&gt;http&#58;//geekphilosopher.com/MainPage/bkgAbout.htm&lt;br&gt;&lt;br&gt;&#123;&#123;msg:PD}} &#91;&#91;en:Image:skyAltocumulusClouds.jpg]])</em></li> <li>29 apr 2004 21:30 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Altocumulus_clouds_large.jpg|Altocumulus_clouds_large.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Larger altocumulus cloud image, taken by &#91;&#91;User:Ex1le&#124;Ex1le]]. &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:Altocumulus clouds large.jpg]])</em></li> <li>29 apr 2004 21:26 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Braque.woman.400pix.jpg|Braque.woman.400pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Braque: Woman with a guitar, painted 1913, in the Mus&amp;eacute;e Nationale d&amp;#8217;Art Moderne, Centre Georges Pompidou, Paris, France. Oil and charcoal on canvas, 51 by 29 inches (130 by 73 cms).&lt;br&gt; Source: http&#58;//artchive.com/ftp_site.htm &lt;br&gt; Picture prepared for Wikipedia by Adrian Pingstone in April 2003. &#91;&#91;en:Image:braque.woman.400pix.jpg]])</em></li> <li>29 apr 2004 21:20 [[Gebruiker:Marga|Marga]] heeft ge-upload: "[[:Afbeelding:Kea.jpg|Kea.jpg]]" <em>(zelfgemaakte foto)</em></li> <li>29 apr 2004 21:10 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:CricketWicket.jpg|CricketWicket.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Cricket Wicket &#91;&#91;de:Bild:CricketWicket.jpg]])</em></li> <li>29 apr 2004 21:09 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:CricketBall.jpg|CricketBall.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Cricket Ball &#91;&#91;de:Bild:CricketBall.jpg]])</em></li> <li>29 apr 2004 21:08 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:CricketBat.jpg|CricketBat.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Cricket Bat &#91;&#91;de:Bild:CricketBat.jpg]])</em></li> <li>29 apr 2004 21:07 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:CricketField.JPG|CricketField.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Cricket Field &#91;&#91;de:Bild:CricketField.JPG]])</em></li> <li>29 apr 2004 21:06 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:IndiaBowling.jpg|IndiaBowling.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: India Bowling &#91;&#91;de:Bild:IndiaBowling.jpg]])</em></li> <li>29 apr 2004 21:06 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:EngBatsman.jpg|EngBatsman.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Englische Batsman &#91;&#91;de:Bild:EngBatsman.jpg]])</em></li> <li>29 apr 2004 21:05 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:EngAus.jpg|EngAus.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: EngAus &#91;&#91;de:Bild:EngAus.jpg]])</em></li> <li>29 apr 2004 20:58 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cowboy.jpg|Cowboy.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Cowboy circa 1887 Free Public Domain Image from http&#58;//www.pdimages.com/web6.htm &#91;&#91;en:Image:Cowboy.jpg]])</em></li> <li>29 apr 2004 20:35 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Qantas.a330-201.vh-eba.250pix.jpg|Qantas.a330-201.vh-eba.250pix.jpg]]" <em>(Een tekening van kuifje met de Qantas naam (ter verwijdering))</em></li> <li>29 apr 2004 20:33 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Ptolemaeus_II&Arsinoë.jpg|Ptolemaeus_II&Arsinoë.jpg]]" <em>(Ptolemaeus II &amp; Arsinoë. Met permissie Classical Numismatic Group, Inc. (CNG))</em></li> <li>29 apr 2004 20:29 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:PtolemaeusII&Arsinoë.jpg|PtolemaeusII&Arsinoë.jpg]]" <em>(Ptolemaeus II &amp; Arsinoë. Met permissie Classical Numismatic Group, Inc. (CNG))</em></li> <li>29 apr 2004 20:27 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Ptolemaeus_I&Berenike_I.jpg|Ptolemaeus_I&Berenike_I.jpg]]" <em>(Ptolemaeus I &amp; Berenike I. Met permissie Classical Numismatic Group, Inc. (CNG))</em></li> <li>29 apr 2004 20:23 [[Gebruiker:Diederik|Diederik]] heeft ge-upload: "[[:Afbeelding:Sophie.jpg|Sophie.jpg]]" <em>(Foto sophie)</em></li> <li>29 apr 2004 19:14 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Meidoornbloesem.jpg|Meidoornbloesem.jpg]]" <em>(zelfgemaakte foto van eenstijlige meidoorn meind april)</em></li> <li>29 apr 2004 19:11 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Meidoornstruik.jpg|Meidoornstruik.jpg]]" <em>(zelfgemaakte foto van meidoornstruik eind april)</em></li> <li>29 apr 2004 19:02 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:Gemeentehuis_Breukelen.jpg|Gemeentehuis_Breukelen.jpg]]" <em>(Hoofdgebouw (&quot;Boom en Bosch&quot;) van het gemeentehuis van Breukelen, Markt 13. Foto genomen op 6 maart 2004 en geupload door maker.)</em></li> <li>29 apr 2004 18:59 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:Gunterstein_Breukelen.jpg|Gunterstein_Breukelen.jpg]]" <em>(Gunterstein, Zandpad 48, Breukelen. Foto genomen op 6 maart 2004 en geupload door maker.)</em></li> <li>29 apr 2004 18:58 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Pierre_de_Fermat.jpg|Pierre_de_Fermat.jpg]]" <em>(En: wikipedia)</em></li> <li>29 apr 2004 18:57 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:Nijenrode.jpg|Nijenrode.jpg]]" <em>(Kasteel Nijenrode, Straatweg 25, Breukelen. Ten tijde van de foto was hier Universiteit Nyenrode (The Netherlands Business School) gevestigd. Foto genomen op 6 maart 2004 en geupload door maker.)</em></li> <li>29 apr 2004 18:53 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:Poortgebouw_Nijenrode.jpg|Poortgebouw_Nijenrode.jpg]]" <em>(Poortgebouw van kasteel Nijenrode, Straatweg 25, Breukelen. Foto genomen op 6 maart 2004 en geupload door maker.)</em></li> <li>29 apr 2004 18:51 [[Gebruiker:Wolk|Wolk]] heeft ge-upload: "[[:Afbeelding:Gemeentehuis_Abcoude.jpg|Gemeentehuis_Abcoude.jpg]]" <em>(Gemeentehuis annex politiebureau Abcoude, Raadhuisplein 3. Foto genomen op 6 maart 2004 en geupload door maker.)</em></li> <li>29 apr 2004 17:53 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Vulpecula_constellation_map_small.png|Vulpecula_constellation_map_small.png]]" <em>(Van ja: wiki Modeha (23994 &amp;#210;&amp;#226;&amp;#201;&amp;#210;&amp;#233;&amp;#241;&amp;#210;&amp;#226;&amp;#234;) (&amp;#210;&amp;#252;&amp;#244;&amp;#210;&amp;#252;&amp;#196;&amp;#210;&amp;#252;&amp;#241;&amp;#210;&amp;#252;&amp;#161;&amp;#213;&amp;#9553;&amp;#186;&amp;#180;&amp;#9565;&amp;#234;&amp;#213;&amp;#9617;&amp;#197;&amp;#180;&amp;#9565;&amp;#235;&amp;#210;&amp;#199;&amp;#233;&amp;#222;&amp;#239;&amp;#9618;&amp;#222;&amp;#172;&amp;#215;&amp;#254;&amp;#235;&amp;#234;&amp;#210;&amp;#233;&amp;#234;&amp;#210;&amp;#233;&amp;#232;) )</em></li> <li>29 apr 2004 17:52 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Babyloniskt_tempeltorn.jpg|Babyloniskt_tempeltorn.jpg]]" <em>(Van sv: Den fjõttrade ankan (31024 bytes) (FrÕn Nordisk familjebok) )</em></li> <li>29 apr 2004 17:49 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Tongtester.jpg|Tongtester.jpg]]" <em>(Van en: wiki This is an original photograph by Andrew Alder, taken on 11 November 2003. Permission is granted to copy, distribute and/or modify under the GFDL, version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.)</em></li> <li>29 apr 2004 17:47 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:S100e59581.jpg|S100e59581.jpg]]" <em>(Van pl: wiki (bie&amp;#9532;&amp;#9565;) 13:30, 22 lis 2002 . . (Automated conversion) (25082 bajt&amp;#9500;&amp;#9474;w) (Nie ma jeszcze artyku&amp;#9532;&amp;#233;u o tym tytule. Wybierz Edytuj by go rozpocz&amp;#9472;&amp;#224;&amp;#9472;&amp;#231;.) )</em></li> <li>29 apr 2004 17:44 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Rosas.png|Rosas.png]]" <em>(Van en: wiki Muriel Gottrop (42561 bytes) (Simplified family tree of the Wars of the Roses )</em></li> <li>29 apr 2004 17:42 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Ruderausbildung.jpg|Ruderausbildung.jpg]]" <em>(Van de: wiki JeLuF (11978 Byte) (Ruderausbildung im Skiff.) )</em></li> <li>29 apr 2004 17:40 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Gemeine_Kiefer.jpg|Gemeine_Kiefer.jpg]]" <em>(Van de: wiki Aglarech (27166 Byte) (Gemeine Kiefer) )</em></li> <li>29 apr 2004 17:39 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Peyote2.jpg|Peyote2.jpg]]" <em>(Van de: wiki Head (16170 Byte) (Peyotl) Quelle: http&#58;//www.drugs.indiana.edu/prevention/iprcpics.html )</em></li> <li>29 apr 2004 17:37 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Palestine_flag_medium.png|Palestine_flag_medium.png]]" <em>(Van ja: wiki . Oxhop (396 &amp;#210;&amp;#226;&amp;#201;&amp;#210;&amp;#233;&amp;#241;&amp;#210;&amp;#226;&amp;#234;) (&amp;#210;&amp;#226;&amp;#230;&amp;#210;&amp;#226;&amp;#188;&amp;#210;&amp;#233;&amp;#9571;&amp;#210;&amp;#226;&amp;#252;&amp;#210;&amp;#226;&amp;#232;&amp;#210;&amp;#252;&amp;#171;&amp;#181;&amp;#249;&amp;#249; - &amp;#181;&amp;#239;&amp;#214;&amp;#245;&amp;#162;&amp;#163;) )</em></li> <li>29 apr 2004 17:36 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Masada01-400.jpg|Masada01-400.jpg]]" <em>(Van en: wiki Eloquence (419671 bytes) (Dovecote at Masada, was grotere versie, (FDL-licensed; &#91;http&#58;//eli-nati.com Elizabeth Thomas], eli at eli-nati dot com, December 2002)) GNU FDL)</em></li> <li>29 apr 2004 17:33 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Agris.png|Agris.png]]" <em>(Van fr: wiki Fphilibert (45990 octets) (Casque celte d&#39;Agris, en Charente (IIe &amp;#9500;&amp;#243;ge du fer)) Description: Casque celte d&#39;apparat en fer, bronze, or, argent et corail. IVe si&amp;#9500;&amp;#191;cle avant notre &amp;#9500;&amp;#191;re. D&amp;#9500;&amp;#174;couvert &amp;#9500;&amp;#225; Agris, en Charente et conserv&amp;#9500;&amp;#174; au mus&amp;#9500;&amp;#174;e d&#39;Angoul&amp;#9500;&amp;#172;me (IIe &amp;#9500;&amp;#243;ge du fer) Origine: Photocomposition r&amp;#9500;&amp;#174;alis&amp;#9500;&amp;#174;e avec the Gimp License: Cette image est plac&amp;#9500;&amp;#174;e sous licence GNU FDL )</em></li> <li>29 apr 2004 17:31 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Kar_map2.jpg|Kar_map2.jpg]]" <em>(Van en: wiki Lalakis? (20460 bytes) (Map of Karpathos and Kassos))</em></li> <li>29 apr 2004 17:28 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Joburg.iss.400pix.jpg|Joburg.iss.400pix.jpg]]" <em>(Van en: wiki Arpingstone (52062 bytes) (Johannesburg from the ISS) )</em></li> <li>29 apr 2004 17:26 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Jabber.JPG|Jabber.JPG]]" <em>(Van en: wiki YaronSh? (3903 bytes) (The Jabber Logo) )</em></li> <li>29 apr 2004 17:24 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Habsbourg_Flag.png|Habsbourg_Flag.png]]" <em>(Van en: wiki via fr: wiki Cham (2135 octets) (http&#58;//en.wikipedia.org/upload/1/1c/Habsburg_Flag.png) )</em></li> <li>29 apr 2004 17:23 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:VitamineB9.png|VitamineB9.png]]" <em>(Van fr: wiki Yohan (6375 octets) (Structure de la vitamine B9) Source : Cr&amp;#9500;&amp;#174;e avec MarvinSketch Licence : GFLD )</em></li> <li>29 apr 2004 17:21 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Faust2.gif|Faust2.gif]]" <em>(Van pl: wiki Niki K (14311 bajt&amp;#9500;&amp;#9474;w) (Faust i Mefisto) )</em></li> <li>29 apr 2004 17:20 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Estonia_flag_medium.png|Estonia_flag_medium.png]]" <em>(Van en: wiki . Scipius (410 bytes) (Medium flag of Estonia) Image originally derived from the public domain flags of the CIA World Factbook. Als iemand een toepasselijkere afbeelding voor de taal heeft, graag vervangen/aanvullen)</em></li> <li>29 apr 2004 17:18 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:GreeceDodecanese.png|GreeceDodecanese.png]]" <em>(Van en: wiki 23:14, 8 Feb 2004 . . Morwen (28507 bytes) (map) GNU FDL)</em></li> <li>29 apr 2004 17:17 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Dill.jpg|Dill.jpg]]" <em>(Van en: wiki Dmsar (57886 bytes) (Dill plant) )</em></li> <li>29 apr 2004 17:15 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Bjerg_i_alaska.jpg|Bjerg_i_alaska.jpg]]" <em>(Van da: stub-wiki Glenn (99885 bytes) (Public domain billede fra &#91;http&#58;//images.fws.gov/default.cfm?fuseaction=records.display&amp;CFID=3964099&amp;CFTOKEN=30434891&amp;id=U.S. Fish and Wildlife Service: Becharof National Wildlife Refuge,Alaska].) Public domain billede fra U.S. Fish and Wildlife Service: Becharof National Wildlife Refuge,Alaska)</em></li> <li>29 apr 2004 17:13 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Antiferro.png|Antiferro.png]]" <em>(Van ja: wiki Ozuma (1635 &amp;#210;&amp;#226;&amp;#201;&amp;#210;&amp;#233;&amp;#241;&amp;#210;&amp;#226;&amp;#234;) (&amp;#213;&amp;#197;&amp;#236;&amp;#213;&amp;#9565;&amp;#192;&amp;#254;&amp;#250;&amp;#252;&amp;#181;&amp;#199;&amp;#186;&amp;#181;&amp;#191;&amp;#237;&amp;#213;&amp;#9565;&amp;#197;&amp;#213;&amp;#248;&amp;#9474;))</em></li> <li>29 apr 2004 15:53 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Vlag_de_Marne.jpg|Vlag_de_Marne.jpg]]" <em>(Beperkte toestemming)</em></li> <li>29 apr 2004 15:49 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Gemeentewapen_De_Marne.jpg|Gemeentewapen_De_Marne.jpg]]" <em>(Toestemming beperkt)</em></li> <li>29 apr 2004 15:35 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Swatch.jpg|Swatch.jpg]]" <em>(Eigen foto)</em></li> <li>29 apr 2004 14:20 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Herder.jpg|Herder.jpg]]" <em>(Fritz8 - print)</em></li> <li>29 apr 2004 13:58 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Korjk.jpg|Korjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>29 apr 2004 13:11 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Levenjk.jpg|Levenjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>29 apr 2004 13:02 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Spaanjk.jpg|Spaanjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>29 apr 2004 12:53 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Lasjk.jpg|Lasjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>29 apr 2004 12:47 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Larsenjk.jpg|Larsenjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>29 apr 2004 12:42 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Langjk.jpg|Langjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>29 apr 2004 12:35 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kramjk.jpg|Kramjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>29 apr 2004 12:26 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kortjk.jpg|Kortjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>29 apr 2004 12:20 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kortjk.jpg|Kortjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>29 apr 2004 12:11 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Topajk.jpg|Topajk.jpg]]" <em>(Fritz8 - print)</em></li> <li>29 apr 2004 10:52 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Kaiser_Wilhelm_I_.jpg|Kaiser_Wilhelm_I_.jpg]]"</li> <li>29 apr 2004 10:24 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Frederik_Willem_van_Brandenburg.jpg|Frederik_Willem_van_Brandenburg.jpg]]" <em>(Frederik Willem van Brandenburg (van Duitse Wiki))</em></li> <li>29 apr 2004 10:20 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Adler_Deutsches-Reich.gif|Adler_Deutsches-Reich.gif]]"</li> <li>29 apr 2004 10:11 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Deutsches_Reich_1871-1918_small.gif|Deutsches_Reich_1871-1918_small.gif]]"</li> <li>29 apr 2004 10:10 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Germany_flag_empire.png|Germany_flag_empire.png]]"</li> <li>29 apr 2004 10:08 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Deutsches_Reich_1871-1918_.gif|Deutsches_Reich_1871-1918_.gif]]"</li> <li>29 apr 2004 10:02 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Triangulum_australe_constellation_map.png|Triangulum_australe_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Triangulum Australe, the Southern Triangle. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/09/08. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 15.7 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Triangulum australe constellation map.png]])</em></li> <li>29 apr 2004 10:01 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cygnus_constellation_map.png|Cygnus_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Cygnus, the Swan Copyright &amp;copy; 2003 &#91;mailto:bronger@physik.rwth-aachen.de Torsten Bronger]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 18/02/1003. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the azimuthal equidistant projection (the azimuth being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 9.4 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Cygnus constellation map.png]])</em></li> <li>29 apr 2004 09:57 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Lupus_constellation_map.png|Lupus_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Lupus, the Wolf. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/08/30. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Lupus constellation map.png]])</em></li> <li>29 apr 2004 09:56 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Norma_constellation_map_small.png|Norma_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Norma constellation map small.png]])</em></li> <li>29 apr 2004 09:53 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Libra_constellation_map_small.png|Libra_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Libra constellation map small.png]])</em></li> <li>29 apr 2004 09:50 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Vulpecula_constellation_map_small.png|Vulpecula_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Vulpecula constellation map small.png]])</em></li> <li>29 apr 2004 09:49 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Volans_constellation_map.png|Volans_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Volans, the Flying Fish. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/11/10. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &quot;LMC&quot; is the Large Magellanic Cloud. &#91;&#91;en:Image:Volans constellation map.png]])</em></li> <li>29 apr 2004 09:44 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Vela_constellation_map_small.png|Vela_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Vela constellation map small.png]])</em></li> <li>29 apr 2004 09:32 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Telescopium_constellation_map.png|Telescopium_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Telescopium, the Telescope. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/09/07. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Telescopium constellation map.png]])</em></li> <li>29 apr 2004 09:29 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Taurus_constellation_map_small.png|Taurus_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Taurus constellation map small.png]])</em></li> <li>29 apr 2004 09:23 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Sextans_constellation_map.png|Sextans_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Sextans, the Sextant. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/09/03. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Sextans constellation map.png]])</em></li> <li>29 apr 2004 09:19 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Scutum_constellation_map.png|Scutum_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Scutum, the Shield. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/08/20. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 15.7 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Scutum constellation map.png]])</em></li> <li>29 apr 2004 09:15 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Sagitta_constellation_map.png|Sagitta_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Sagitta, the Arrow. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/09/03. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Sagitta constellation map.png]])</em></li> <li>29 apr 2004 09:10 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Plei_scheme.jpg|Plei_scheme.jpg]]" <em>(Vanaf Duitse wikipedia &#91;&#91;de:Bild:plei scheme.jpg]])</em></li> <li>29 apr 2004 09:09 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Pleiades.arp.300pix.jpg|Pleiades.arp.300pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: The Pleiades star cluster, M45, is one of the brightest star clusters visible in the northern hemisphere. It consists of many bright, hot stars that were all formed at the same time within a large cloud of interstellar dust and gas. The blue haze that accompanies them is due to very fine dust which still remains and preferentially reflects the blue light from the stars.&lt;br&gt; &#39;&#39;&#39;CREDIT:&#39;&#39;&#39; Mount Wilson Observatory.&lt;br&gt; &#39;&#39;&#39;SOURCE:&#39;&#39;&#39; http&#58;//antwrp.gsfc.nasa.gov/apod/ap950620.html &lt;br&gt; &#39;&#39;&#39;COPYRIGHT:&#39;&#39;&#39; No copyright statement can be found on the source website (Mount Wilson) at www.mtwilson.edu but “Astronomy Picture of the Day” (my source for this photo) indicates there are no special copyright requirements.&lt;br&gt; &#39;&#39;&#39;PREPARED BY&#39;&#39;&#39; Adrian Pingstone in December 2003. &#91;&#91;en:Image:pleiades.arp.300pix.jpg]])</em></li> <li>29 apr 2004 09:02 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Topalov.jpg|Topalov.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>29 apr 2004 08:58 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Piscis_austrinus_constellation_map.png|Piscis_austrinus_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Piscis Austrinus, the Southern Fish. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/08/29. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Piscis austrinus constellation map.png]])</em></li> <li>29 apr 2004 08:55 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Pisces_constellation_map_small.png|Pisces_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Pisces constellation map small.png]])</em></li> <li>29 apr 2004 08:44 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Pictor_constellation_map.png|Pictor_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Pictor. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/08/27. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Pictor constellation map.png]])</em></li> <li>29 apr 2004 08:18 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Ftachnik.jpg|Ftachnik.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>29 apr 2004 08:12 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Phoenix_constellation_map.png|Phoenix_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Phoenix. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/08/26. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 9.4 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Phoenix constellation map.png]])</em></li> <li>29 apr 2004 08:08 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Pegasus_constellation_map_small.png|Pegasus_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Pegasus constellation map small.png]])</em></li> <li>29 apr 2004 08:03 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Pavo_constellation_map_small.png|Pavo_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Pavo constellation map small.png]])</em></li> <li>29 apr 2004 07:53 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Ftachnik.jpg|Ftachnik.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>29 apr 2004 07:41 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Ophiuchus_constellation_map_small.png|Ophiuchus_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Ophiuchus constellation map small.png]])</em></li> <li>29 apr 2004 07:34 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Octans_constellation_map.png|Octans_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Octans, the Octant. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/08/29. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). SMC is the Small Magellanic Cloud. &#91;&#91;en:Image:Octans constellation map.png]])</em></li> <li>29 apr 2004 07:24 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Musca_constellation_map.png|Musca_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Musca, the Fly. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/11/10. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Musca constellation map.png]])</em></li> <li>29 apr 2004 06:55 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Microscopium_constellation_map.png|Microscopium_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Microscopium. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/08/27. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 15.7 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Microscopium constellation map.png]])</em></li> <li>29 apr 2004 06:52 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Mensa_constellation_map.png|Mensa_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Dorado, the Table Mountain. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/10/11. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &quot;LMC&quot; is the Large Magellanic Cloud. &#91;&#91;en:Image:Mensa constellation map.png]])</em></li> <li>29 apr 2004 06:44 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Virgo_constellation_map_small.png|Virgo_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia, &#91;&#91;en:Image:Virgo constellation map small.png]])</em></li> <li>29 apr 2004 06:37 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Virgo_constellation_map.png|Virgo_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: ;description: Carte pour la constellation &#91;&#91;Vierge (constellation)&#124;Vierge]] ;source: produite à l&#39;aide du logiciel &#91;http&#58;//pp3.sourceforge.net/ PP3] de &#91;&#91;w:en:User:Bronger]] ;copyright: &#91;&#91;GFDL]] &#91;&#91;fr:Image:Virgo constellation map.png]])</em></li> <li>29 apr 2004 06:28 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Hemerocallis_zweefvliegen.jpg|Hemerocallis_zweefvliegen.jpg]]" <em>(zelfgemaakte foto van zweefvliegen op Hemerocallis stuifmeeldraden)</em></li> <li>29 apr 2004 06:27 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Lyra_constellation_map.png|Lyra_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Lyra, the Lyre. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/08/30. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 15.7 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Lyra constellation map.png]])</em></li> <li>29 apr 2004 06:22 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Leo_minor_constellation_map.png|Leo_minor_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Leo Minor, the Small Lion. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/08/31. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Leo minor constellation map.png]])</em></li> <li>29 apr 2004 06:17 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Indus_constellation_map.png|Indus_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Indus, the Indian. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/08/29. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Indus constellation map.png]])</em></li> <li>29 apr 2004 05:53 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Tinwhistles.jpg|Tinwhistles.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Tinwhistles: Overton aluminum D by Colin Goldie, Tony Dixon PVC D, Feadog brass D, all cylindrical; Clarke &quot;Sweetone&quot; D, conical; Generation nickel low Bb and high G; Howard low D. &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:Tinwhistles.jpg]])</em></li> <li>29 apr 2004 04:20 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Forfour3.JPG|Forfour3.JPG]]" <em>(Toestemming fotograaf)</em></li> <li>29 apr 2004 04:20 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Forfour2.JPG|Forfour2.JPG]]" <em>(Toestemming fotograaf)</em></li> <li>29 apr 2004 04:19 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Forfour1.JPG|Forfour1.JPG]]" <em>(Toestemming fotograaf)</em></li> <li>29 apr 2004 03:53 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Smart_fortwo.JPG|Smart_fortwo.JPG]]" <em>(Eigen foto)</em></li> <li>29 apr 2004 02:19 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Fat.png|Fat.png]]" <em>(Van pl: wiki 13:30, 22 lis 2002 . . (Automated conversion) (2320 bajt&amp;#9500;&amp;#9474;w) )</em></li> <li>29 apr 2004 02:17 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Label-two-horses.png|Label-two-horses.png]]" <em>(Van en: wiki . Greenmountainboy (33558 bytes) (From user talk:MyRedDice), &quot;Yes, all my images are in public domain. I will indicate the date of the photo from now on. Thank you for being concerned.&quot; -- Greenmountainboy 18:01, 13 Dec 2003 (UTC))</em></li> <li>29 apr 2004 02:15 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Sorbitol.png|Sorbitol.png]]" <em>(Van en: wiki (Automated conversion) (1206 bytes) Brion VIBBER (1292 bytes) (Resaved image; might work in IE now?))</em></li> <li>29 apr 2004 02:14 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Australian-Pelicans-s.jpg|Australian-Pelicans-s.jpg]]" <em>(Van en: wiki Tannin (16094 bytes) (My own picture - thumbnail) )</em></li> <li>29 apr 2004 02:11 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Papyrus.jpg|Papyrus.jpg]]" <em>(Eerdere versie van Jcwf terug, per ongeluk overschreven)</em></li> <li>29 apr 2004 02:08 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Papyrus.jpg|Papyrus.jpg]]" <em>(Van fr: wiki . Treanna (10555 octets) )</em></li> <li>29 apr 2004 02:06 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Mercury_Capsule.png|Mercury_Capsule.png]]" <em>(Van en: wiki Audin (11081 bytes) (Mercury Spacecraft) his image has been released into the public domain by the author, or its copyright has expired. This applies worldwide. this is a cropped and rotated version of NASA image S62-04976.jpg.)</em></li> <li>29 apr 2004 02:02 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Moden1912.jpg|Moden1912.jpg]]" <em>(Van da: stub-wiki)</em></li> <li>29 apr 2004 02:00 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Eurasian_lynx.jpg|Eurasian_lynx.jpg]]" <em>(Van ja: wiki Yahoooh (35969 ÒâÉÒéñÒâê) (eng site))</em></li> <li>29 apr 2004 01:57 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Bandwidth.gif|Bandwidth.gif]]" <em>(Van en: wiki Waveguy (4126 bytes) (bandwitdth as filter frequency response ) )</em></li> <li>29 apr 2004 01:54 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Herringuwe.jpg|Herringuwe.jpg]]" <em>(Van en: wiki Kils (4317 bytes) (herring) herring photo Uwe Kils)</em></li> <li>28 apr 2004 22:01 [[Gebruiker:David Eerdmans|David Eerdmans]] heeft ge-upload: "[[:Afbeelding:BOOGERD.jpg|BOOGERD.jpg]]" <em>(Eigen foto)</em></li> <li>28 apr 2004 21:35 [[Gebruiker:Johi|Johi]] heeft ge-upload: "[[:Afbeelding:WBrakman.jpg|WBrakman.jpg]]" <em>(Schrijver Willem Brakman, publiek domein, internet.)</em></li> <li>28 apr 2004 21:12 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Dryden.jpg|Dryden.jpg]]" <em>(van engelse pagina over john dryden)</em></li> <li>28 apr 2004 20:40 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:LogoLB.png|LogoLB.png]]" <em>(paar kleine wijzigingetjes)</em></li> <li>28 apr 2004 20:23 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:LogoLB.png|LogoLB.png]]" <em>(oeps)</em></li> <li>28 apr 2004 20:21 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:LogoLB.png|LogoLB.png]]" <em>(Een Combino met 230.000 kilometer op de teller...)</em></li> <li>28 apr 2004 19:45 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Karte_weimar_in_deutschland.png|Karte_weimar_in_deutschland.png]]" <em>(Van de: wiki (4019 Byte) (Karte von Weimar in Deutschland , selbstgezeichnet, &#91;&#91;GNU Freie Dokumentationslizenz&#124;GNU FDL]]) dankeschoen Stefan)</em></li> <li>28 apr 2004 19:43 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Wilno_widok_ogolny22.jpg|Wilno_widok_ogolny22.jpg]]" <em>(Van pl: wiki Kpjas (16202 bajt&amp;#9500;&amp;#9474;w) (Wilno (PD)) )</em></li> <li>28 apr 2004 19:42 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Securitycouncil.jpg|Securitycouncil.jpg]]" <em>(Van en: wiki J.J. (30470 bytes) (UN Secuirty Council from UN site) )</em></li> <li>28 apr 2004 19:41 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Tucana_constellation_map.png|Tucana_constellation_map.png]]" <em>(Van jp: wiki, help ik kan het Japans niet lezen . Suisui (15626 &amp;#210;&amp;#226;&amp;#201;&amp;#210;&amp;#233;&amp;#241;&amp;#210;&amp;#226;&amp;#234;) (&amp;#210;&amp;#252;&amp;#236;&amp;#210;&amp;#233;&amp;#231;&amp;#210;&amp;#252;&amp;#249;&amp;#210;&amp;#252;&amp;#237;&amp;#210;&amp;#233;&amp;#231;&amp;#210;&amp;#252;&amp;#229;&amp;#213;&amp;#9553;&amp;#186;&amp;#210;&amp;#199;&amp;#199;&amp;#181;&amp;#255;&amp;#402;&amp;#213;&amp;#248;&amp;#9474;&amp;#210;&amp;#199;&amp;#199;&amp;#213;&amp;#241;&amp;#186;&amp;#210;&amp;#199;&amp;#199;&amp;#222;&amp;#239;&amp;#9618;&amp;#222;&amp;#172;&amp;#215;&amp;#254;&amp;#235;&amp;#234;&amp;#210;&amp;#233;&amp;#234;&amp;#210;&amp;#233;&amp;#232;) )</em></li> <li>28 apr 2004 19:38 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Karte-tirol-NSO.png|Karte-tirol-NSO.png]]" <em>(Van de: wiki Jensens (3775 Byte) (Tirol (Schema: Nord, Sued, Ost)) )</em></li> <li>28 apr 2004 19:36 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:GreeceThessalonika.png|GreeceThessalonika.png]]" <em>(Van en: wiki)</em></li> <li>28 apr 2004 19:35 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Mole.jpg|Mole.jpg]]" <em>(Van en: wiki Donarreiskoffer (8084 bytes) (European Mole))</em></li> <li>28 apr 2004 19:32 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Tabun.png|Tabun.png]]" <em>(Van en: wiki Iorsh (3437 bytes) (Tabun structural diagram) Created by Maxim Iorsh with xymtex)</em></li> <li>28 apr 2004 19:31 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Sculptor_constellation_map.png|Sculptor_constellation_map.png]]" <em>(Van jp: wiki, help, ik kan het Japans niet lezen, Modeha (13773 &amp;#210;&amp;#226;&amp;#201;&amp;#210;&amp;#233;&amp;#241;&amp;#210;&amp;#226;&amp;#234;) (&amp;#210;&amp;#252;&amp;#237;&amp;#210;&amp;#233;&amp;#231;&amp;#210;&amp;#252;&amp;#229;&amp;#210;&amp;#252;&amp;#244;&amp;#210;&amp;#252;&amp;#197;&amp;#210;&amp;#252;&amp;#249;&amp;#210;&amp;#252;&amp;#241;&amp;#213;&amp;#9553;&amp;#186;&amp;#210;&amp;#199;&amp;#233;&amp;#222;&amp;#239;&amp;#9618;&amp;#222;&amp;#172;&amp;#215;&amp;#254;&amp;#235;&amp;#234;&amp;#210;&amp;#233;&amp;#234;&amp;#210;&amp;#233;&amp;#232;) )</em></li> <li>28 apr 2004 19:29 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Omskiftere.jpg|Omskiftere.jpg]]" <em>(Van da: stub-wiki (Billede af elektriske omskiftere. Fra venstre: Enkeltpolet vippeomskifter. Enpolet mikroswitch. PrintmotÚrbar enkeltpolet omskifter. 2 stk flerpolede)</em></li> <li>28 apr 2004 19:27 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Pyridin.png|Pyridin.png]]" <em>(Van de: wiki Thomasgl (559 Byte) (selbstgezeichnete Strukuturformel von Pyridin) mit chemischen Zeichenprogramm selbstgezeichnete Strukuturformel von Pyridin, als .gif gespeichert und dann unter Linux mit xv nachbearbeitet und als .png abgespeichert (von thomasgl))</em></li> <li>28 apr 2004 19:24 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:JezykiProgPasc.png|JezykiProgPasc.png]]" <em>( Borkowsk (22127 bajt&amp;#9500;&amp;#9474;w) (Drzewo genealogiczne j&amp;#9472;&amp;#214;zyk&amp;#9500;&amp;#9474;w programowania - rodzina Algolu i Fortranu) Van pl: wiki)</em></li> <li>28 apr 2004 19:23 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Polio.jpg|Polio.jpg]]" <em>(Van en: wiki Public domain image, from http&#58;//www.epa.gov/ )</em></li> <li>28 apr 2004 19:20 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Gb-nthum.JPG|Gb-nthum.JPG]]" <em>(Van en: wiki Grinner? (5037 bytes) (Northumbrian Flag) )</em></li> <li>28 apr 2004 19:18 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Bonobo.jpg|Bonobo.jpg]]" <em>(Van de: wiki Head (14954 Byte) (Bonobo) )</em></li> <li>28 apr 2004 19:15 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:00866r_kl.jpg|00866r_kl.jpg]]" <em>(Van de: stub-wiki Stefan K³hn (10948 Byte) (kleinere Version) )</em></li> <li>28 apr 2004 19:11 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Turmeric.jpg|Turmeric.jpg]]" <em>(Van en: wiki WormRunner (12 bytes) (picture of turmeric rhizomes from http&#58;//www.cdfa.ca.gov/phpps/pe/page65.jpg))</em></li> <li>28 apr 2004 19:09 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:ChannelIslands.png|ChannelIslands.png]]" <em>(Van it: wiki Snowdog (10395 bytes) (Mappa delle Isole del Canale) )</em></li> <li>28 apr 2004 19:05 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Hammer_small.jpg|Hammer_small.jpg]]" <em>(Van en: wiki TakuyaMurata (8521 bytes) (from &#91;&#91;openphoto.net]]))</em></li> <li>28 apr 2004 19:04 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Samoa_flag_medium.png|Samoa_flag_medium.png]]" <em>(samoa)</em></li> <li>28 apr 2004 19:04 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:San_marino_flag_medium.png|San_marino_flag_medium.png]]" <em>(san marino)</em></li> <li>28 apr 2004 19:04 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Saudi_arabia_flag_medium.png|Saudi_arabia_flag_medium.png]]" <em>(saudi-arab)</em></li> <li>28 apr 2004 19:03 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Senegal_flag_medium.png|Senegal_flag_medium.png]]" <em>(senegal)</em></li> <li>28 apr 2004 19:03 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Seychelles_flag_medium.png|Seychelles_flag_medium.png]]" <em>(seychellen)</em></li> <li>28 apr 2004 19:03 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Sierra_leone_flag_medium.png|Sierra_leone_flag_medium.png]]" <em>(sierra leone)</em></li> <li>28 apr 2004 19:02 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Singapore_flag_medium.png|Singapore_flag_medium.png]]" <em>(singapore)</em></li> <li>28 apr 2004 19:02 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Slovenia_flag_medium.png|Slovenia_flag_medium.png]]" <em>(slovenie)</em></li> <li>28 apr 2004 19:01 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Solomon_islands_flag_medium.png|Solomon_islands_flag_medium.png]]" <em>(solomon)</em></li> <li>28 apr 2004 19:01 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Wecandoit.jpg|Wecandoit.jpg]]" <em>(Joaotg (26724 bytes) (imagem da wiki de l&amp;#9500;&amp;#161;ngua inglesa mmo nome) van pt: wiki, vreemd, de en: wiki afbeelding werd kennelijk niet gevonden)</em></li> <li>28 apr 2004 19:01 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:South_africa_flag_medium.png|South_africa_flag_medium.png]]" <em>(zd afrika)</em></li> <li>28 apr 2004 19:01 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:South_korea_flag_medium.png|South_korea_flag_medium.png]]" <em>(zd korea)</em></li> <li>28 apr 2004 19:01 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Sri_lanka_flag_medium.png|Sri_lanka_flag_medium.png]]" <em>(sri lanka)</em></li> <li>28 apr 2004 19:00 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:St_helena_flag_medium.png|St_helena_flag_medium.png]]" <em>(helena)</em></li> <li>28 apr 2004 19:00 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:St_kitts_and_nevis_flag_medium.png|St_kitts_and_nevis_flag_medium.png]]" <em>(kitts)</em></li> <li>28 apr 2004 19:00 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:St_lucia_flag_medium.png|St_lucia_flag_medium.png]]" <em>(lucia)</em></li> <li>28 apr 2004 18:59 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:St_vincent_grenadines_flag_medium.png|St_vincent_grenadines_flag_medium.png]]" <em>(vincent)</em></li> <li>28 apr 2004 18:59 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Suriname_flag_medium.png|Suriname_flag_medium.png]]" <em>(surin)</em></li> <li>28 apr 2004 18:59 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Engel.JPG|Engel.JPG]]" <em>(Van de: wiki Alex Anlicker (48578 Byte) (Engel) Engel, k³nstlerische Darstellung in der weit verbreiteten Form eines kleinen Jungen mit Fl³geln, Keramik mit Goldlack)</em></li> <li>28 apr 2004 18:59 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Swaziland_flag_medium.png|Swaziland_flag_medium.png]]" <em>(swazi)</em></li> <li>28 apr 2004 18:58 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Sweden_flag_medium.png|Sweden_flag_medium.png]]" <em>(zweden)</em></li> <li>28 apr 2004 18:58 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Switzerland_flag_medium.png|Switzerland_flag_medium.png]]" <em>(zwit)</em></li> <li>28 apr 2004 18:58 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Taiwan_flag_medium.png|Taiwan_flag_medium.png]]" <em>(taiwan)</em></li> <li>28 apr 2004 18:57 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Tajikistan_flag_medium.png|Tajikistan_flag_medium.png]]" <em>(tadj)</em></li> <li>28 apr 2004 18:57 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Sparganium.jpg|Sparganium.jpg]]" <em>(Van fr: wiki Jeffdelonge (28521 octets) (rubanier photo perso) )</em></li> <li>28 apr 2004 18:57 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Tanzania_flag_medium.png|Tanzania_flag_medium.png]]" <em>(tanz)</em></li> <li>28 apr 2004 18:55 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:IC_EPROM_2716.jpg|IC_EPROM_2716.jpg]]" <em>(Van da: stub-wiki (78485 bytes) (Billedet viser en EPROM chip med typenummeret 2716 (16 kbit) fremstillet i 49 uge Õr 1979.) )</em></li> <li>28 apr 2004 18:51 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Togo_flag_medium.png|Togo_flag_medium.png]]" <em>(togo)</em></li> <li>28 apr 2004 18:51 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Tonga_flag_medium.png|Tonga_flag_medium.png]]" <em>(tonga)</em></li> <li>28 apr 2004 18:51 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:B2.spirit.2.300pix.jpg|B2.spirit.2.300pix.jpg]]" <em>(Van en: wiki Arpingstone (11016 bytes) (B-2 Spirit) )</em></li> <li>28 apr 2004 18:51 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Trinidad_and_tobago_flag_medium.png|Trinidad_and_tobago_flag_medium.png]]" <em>(trinidad)</em></li> <li>28 apr 2004 18:50 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Tunisia_flag_medium.png|Tunisia_flag_medium.png]]" <em>(tunesia)</em></li> <li>28 apr 2004 18:50 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Turkmenistan_flag_medium.png|Turkmenistan_flag_medium.png]]" <em>(turkmenistan)</em></li> <li>28 apr 2004 18:50 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Turks_and_caicos_flag_medium.png|Turks_and_caicos_flag_medium.png]]" <em>(turks)</em></li> <li>28 apr 2004 18:49 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Tuvalu_flag_medium.png|Tuvalu_flag_medium.png]]" <em>(tuvalu)</em></li> <li>28 apr 2004 18:49 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Uae_flag_medium.png|Uae_flag_medium.png]]" <em>(uae)</em></li> <li>28 apr 2004 18:48 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Uganda_flag_medium.png|Uganda_flag_medium.png]]" <em>(uganda)</em></li> <li>28 apr 2004 18:48 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Uk_flag_medium.png|Uk_flag_medium.png]]" <em>(uk)</em></li> <li>28 apr 2004 18:48 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Uruguay_flag_medium.png|Uruguay_flag_medium.png]]" <em>(uruguay)</em></li> <li>28 apr 2004 18:48 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Us_flag_medium.png|Us_flag_medium.png]]" <em>(us)</em></li> <li>28 apr 2004 18:47 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Us_virgin_islands_flag_medium.png|Us_virgin_islands_flag_medium.png]]" <em>(us virgin)</em></li> <li>28 apr 2004 18:47 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Vanuatu_flag_medium.png|Vanuatu_flag_medium.png]]" <em>(vanatu)</em></li> <li>28 apr 2004 18:47 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Vatican_flag_medium.png|Vatican_flag_medium.png]]" <em>(vatikaan)</em></li> <li>28 apr 2004 18:47 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Boethius.jpg|Boethius.jpg]]" <em>(Van ru: wiki . Ctac (21905 &amp;#240;&amp;#9618;&amp;#240;&amp;#9617;&amp;#240;&amp;#9571;&amp;#208;&amp;#233;(&amp;#240;&amp;#165;&amp;#240;&amp;#9619;)) (&amp;#240;&amp;#230;&amp;#240;&amp;#165;&amp;#208;&amp;#236;&amp;#208;&amp;#229;&amp;#240;&amp;#169;&amp;#240;&amp;#9571;) )</em></li> <li>28 apr 2004 18:46 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Vietnam_flag_medium.png|Vietnam_flag_medium.png]]" <em>(vietnam)</em></li> <li>28 apr 2004 18:46 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Vlaanderenvlag_image.png|Vlaanderenvlag_image.png]]" <em>(vlaanderen)</em></li> <li>28 apr 2004 18:46 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Wallonievlag_image.png|Wallonievlag_image.png]]" <em>(wallonie)</em></li> <li>28 apr 2004 18:46 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Yemen_flag_medium.png|Yemen_flag_medium.png]]" <em>(jemen)</em></li> <li>28 apr 2004 18:45 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Yugoslavia_flag_medium.png|Yugoslavia_flag_medium.png]]" <em>(yugo)</em></li> <li>28 apr 2004 18:45 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Zambia_flag_medium.png|Zambia_flag_medium.png]]" <em>(zambia)</em></li> <li>28 apr 2004 18:44 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Zimbabwe_flag_medium.png|Zimbabwe_flag_medium.png]]" <em>(zim)</em></li> <li>28 apr 2004 18:16 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Akcja_Parowoz_m.jpg|Akcja_Parowoz_m.jpg]]" <em>(Van pl: wiki Topory (26150 bajt&amp;#9500;&amp;#9474;w) )</em></li> <li>28 apr 2004 17:54 [[Gebruiker:Dick Bos|Dick Bos]] heeft ge-upload: "[[:Afbeelding:GierzwaluwZweden250888.jpg|GierzwaluwZweden250888.jpg]]" <em>(Gierzwaluw, postzegel Zweden 1988)</em></li> <li>28 apr 2004 16:45 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Egyptevlag_image.png|Egyptevlag_image.png]]" <em>(Vlag Egypte)</em></li> <li>28 apr 2004 16:38 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Tsjaadvlag_image.png|Tsjaadvlag_image.png]]" <em>(Vlag Tsjaad)</em></li> <li>28 apr 2004 16:36 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Ivoorkustvlag_image.jpg|Ivoorkustvlag_image.jpg]]" <em>(Vlag van Ivoorkust)</em></li> <li>28 apr 2004 16:30 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Cameroenvlag_image.png|Cameroenvlag_image.png]]" <em>(Vlag van Ivoorkust)</em></li> <li>28 apr 2004 16:20 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Cameroenvlag_image.png|Cameroenvlag_image.png]]" <em>(Vlag Cameroen)</em></li> <li>28 apr 2004 16:15 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Tricolore_image.png|Tricolore_image.png]]" <em>(Tricolore)</em></li> <li>28 apr 2004 15:53 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Logo_Protestantse_Kerk.jpg|Logo_Protestantse_Kerk.jpg]]" <em>(Toestemming wordt gevraagd)</em></li> <li>28 apr 2004 14:26 [[Gebruiker:SanderSpek|SanderSpek]] heeft ge-upload: "[[:Afbeelding:Vraagenaanbod.png|Vraagenaanbod.png]]" <em>(Gemaakt door Sander Spek.)</em></li> <li>28 apr 2004 13:58 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Rijkswegenkaart.png|Rijkswegenkaart.png]]" <em>(Bestandsgrootte teruggebracht.)</em></li> <li>28 apr 2004 13:44 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Keresjk.jpg|Keresjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 13:40 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Keenejk.jpg|Keenejk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 13:33 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Rijkswegenkaart.png|Rijkswegenkaart.png]]" <em>(rijkswegenkaart, eigen werk, &#123;&#123;msg:PD}})</em></li> <li>28 apr 2004 13:32 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kasparjk.jpg|Kasparjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 13:16 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Karpovjk.jpg|Karpovjk.jpg]]" <em>(friso)</em></li> <li>28 apr 2004 13:02 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kamskyjk.jpg|Kamskyjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 12:56 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Jungjk.jpg|Jungjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 12:51 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Ptolemy_I_of_Egypt.jpg|Ptolemy_I_of_Egypt.jpg]]" <em>(En: wikipedia)</em></li> <li>28 apr 2004 12:51 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Jaenischjk.jpg|Jaenischjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 12:47 [[Gebruiker:Rm|Rm]] heeft ge-upload: "[[:Afbeelding:Kleurpotloden.jpg|Kleurpotloden.jpg]]" <em>(Eigen foto)</em></li> <li>28 apr 2004 12:46 [[Gebruiker:Rm|Rm]] heeft ge-upload: "[[:Afbeelding:Grafietpotloden.jpg|Grafietpotloden.jpg]]" <em>(Eigen foto)</em></li> <li>28 apr 2004 12:44 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Hubnerjk.jpg|Hubnerjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 12:40 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Hortjk.jpg|Hortjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 12:37 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Wilgstruik2.JPG|Wilgstruik2.JPG]]" <em>(Eigen foto)</em></li> <li>28 apr 2004 12:36 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Grunjk.jpg|Grunjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 12:32 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Gligojk.jpg|Gligojk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 12:25 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Flohrjk.jpg|Flohrjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 12:15 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Fischerjk.jpg|Fischerjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 12:03 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Finejk.jpg|Finejk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 12:00 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Falkjk.jpg|Falkjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 11:55 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Evansjk.jpg|Evansjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 11:48 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Cunjk.jpg|Cunjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 11:41 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Collejk.jpg|Collejk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 11:37 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Cochjk.jpg|Cochjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 11:33 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Chigorinjk.jpg|Chigorinjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 11:33 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Irakvlag5_image.gif|Irakvlag5_image.gif]]" <em>(5e vlag Irak)</em></li> <li>28 apr 2004 11:32 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Irakvlag4_image.png|Irakvlag4_image.png]]" <em>(4e vlag irak)</em></li> <li>28 apr 2004 11:32 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Irakvlag3_image.png|Irakvlag3_image.png]]" <em>(3e vlag Irak)</em></li> <li>28 apr 2004 11:32 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Irakvlag2_image.gif|Irakvlag2_image.gif]]" <em>(2e vlag Irak)</em></li> <li>28 apr 2004 11:31 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Irakvlag1_image.gif|Irakvlag1_image.gif]]" <em>(1e Vlag Irak)</em></li> <li>28 apr 2004 11:28 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Doorjk.jpg|Doorjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 09:22 [[Gebruiker:ChAoZ|ChAoZ]] heeft ge-upload: "[[:Afbeelding:Galvihara.jpg|Galvihara.jpg]]" <em>(eigen gemaakte foto van een van de beelden van de Gal Vihara in Polonnaruwa, Sri Lanka)</em></li> <li>28 apr 2004 09:18 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Goudzoeker.jpg|Goudzoeker.jpg]]" <em>(zonet verkeerde versie)</em></li> <li>28 apr 2004 09:16 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Goudzoeker.jpg|Goudzoeker.jpg]]" <em>(licht aangepast)</em></li> <li>28 apr 2004 09:06 [[Gebruiker:Mirjam678|Mirjam678]] heeft ge-upload: "[[:Afbeelding:Coverboekbeter.jpg|Coverboekbeter.jpg]]" <em>(Cover Verlaten Hotel)</em></li> <li>28 apr 2004 07:03 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Bronjk.jpg|Bronjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 06:59 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Breyerjk.jpg|Breyerjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 06:54 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Botjk.jpg|Botjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 06:47 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Bolesjk.jpg|Bolesjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>28 apr 2004 06:46 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Jules_vernes_octopus.bmp|Jules_vernes_octopus.bmp]]" <em>(Uit het boek 20.000 mijlen onder zee)</em></li> <li>28 apr 2004 06:35 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Viola_tricolor_Jan_Wesenberg01_05.jpg|Viola_tricolor_Jan_Wesenberg01_05.jpg]]" <em>(foto afkomstig van Duitse Wikipedia gemaakt door Jan Wesenberg)</em></li> <li>28 apr 2004 05:34 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Bosanemoon_slootberm.jpg|Bosanemoon_slootberm.jpg]]" <em>(zelfgemaakte foto van bosanemoon op noordkant van sloot)</em></li> <li>28 apr 2004 02:03 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Provmap-on.png|Provmap-on.png]]" <em>(Van en: wiki Montrealais (20707 bytes) (Locator map for Ontario - drawn by montrealais) )</em></li> <li>28 apr 2004 01:56 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Chess_latvian_gambit.png|Chess_latvian_gambit.png]]" <em>(Van en: wiki (Automated conversion) (5193 bytes))</em></li> <li>28 apr 2004 01:27 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Holbein_danse_macabre.png|Holbein_danse_macabre.png]]" <em>(Van en: wiki Ihcoyc (36344 bytes) (From the Dance of &#91;&#91;Death]] by &#91;&#91;Hans Holbein]] (&#91;&#91;1491]])))</em></li> <li>27 apr 2004 23:02 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Horologium_constellation_map.png|Horologium_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Horologium, the Pendulum Clock. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/10/03. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Horologium constellation map.png]])</em></li> <li>27 apr 2004 23:01 [[Gebruiker:Rm|Rm]] heeft ge-upload: "[[:Afbeelding:Martinitoren_groningen.jpg|Martinitoren_groningen.jpg]]" <em>(Eigen foto vanaf dak AzG)</em></li> <li>27 apr 2004 22:58 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Grus_constellation_map.png|Grus_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Grus, the Crane. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/08/28. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Grus constellation map.png]])</em></li> <li>27 apr 2004 22:55 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Hercules_constellation_map_small.png|Hercules_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Hercules constellation map small.png]])</em></li> <li>27 apr 2004 22:52 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Gemini_constellation_map_small.png|Gemini_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia, &#91;&#91;en:Image:Gemini constellation map small.png]])</em></li> <li>27 apr 2004 22:51 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Sternkarte_Gemini.png|Sternkarte_Gemini.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Dies ist eine Sternkarte des Sternbildes Gemini, die Zwillinge. Copyright &amp;copy; 2004 &#91;mailto:bronger@physik.rwth-aachen.de Torsten Bronger]. Sie wurde von &#91;&#91;Benutzer:Bronger&#124;Torsten Bronger]] unter Benutzung von &#91;http&#58;//pp3.sourceforge.net PP3] am 2004/03/21 erstellt. Die gelben gestrichelten Linien sind die Sternbildgrenzen, die rote Linie ist die Ekliptik, und die Blaubabstufenungen sind unterschiedlich intensive Gebiete der Milchstraße. Die Karte enthält alle Messier-Objekte, außer bei Überlappungen. Die zugrunde liegende Datenbank enthält alle Sterne heller als 6.5m. Alle Koordinaten beziehen sich auf 2000.0. Die Karte ist in der äquidistanten Azimuthalprojektion berechnet, mit dem Azimuth in der Kartenmitte. Dementsprechend kommt es zum Kartenrand hin zu einer leichten Vergrößerung und Verzerrung. Die Nordrichtung weist nach oben. Die Deklinationslinien sind alle 10° gezeichnet, die Rektaszensionslinien für jede volle Stunde. &#91;Dies ist nur ein experimentelles Hochladen; es ist noch nicht klar, wie die Sternkarten für die deutsche Wikipedia letztenendes gemacht werden.] &#91;&#91;en:Image:Gemini constellation map.png]] &#91;&#91;de:Bild: Sternkarte Gemini.png]])</em></li> <li>27 apr 2004 22:45 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Fornax_constellation_map.png|Fornax_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Fornax, the Chemical Oven. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/08/26. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Fornax constellation map.png]])</em></li> <li>27 apr 2004 22:43 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Eridanus_constellation_map_small.png|Eridanus_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Eridanus constellation map small.png]])</em></li> <li>27 apr 2004 22:40 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Equuleus_constellation_map.png|Equuleus_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Equuleus, the Little Horse. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/08/31. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 15.7 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Equuleus constellation map.png]])</em></li> <li>27 apr 2004 22:37 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Monoceros_constellation_map.png|Monoceros_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Monoceros, the Unicorn. Copyright &amp;copy; 2003 &#91;mailto:bronger@physik.rwth-aachen.de Torsten Bronger]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 15/02/1003. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line isx the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the azimuthal equidistant projection (the azimuth being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). : Part of Orion was cropped to make image better fit the table. (the rendering with my browser and screen settings did not make sense.) &#91;&#91;User:Caid Raspa&#124;Caid Raspa]] 12:43 15 Jul 2003 (UTC) &#91;&#91;en:Image:Monoceros constellation map.png]])</em></li> <li>27 apr 2004 22:32 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Triangulum_constellation_map.png|Triangulum_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Triangulum, the Triangle. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/08/31. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Triangulum constellation map.png]])</em></li> <li>27 apr 2004 22:29 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Draco_constellation_map.png|Draco_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Draco, the Dragon. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/08/21. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 9.4 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Draco constellation map.png]])</em></li> <li>27 apr 2004 22:26 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Delphinus_constellation_map_small.png|Delphinus_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Delphinus constellation map small.png]])</em></li> <li>27 apr 2004 22:20 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Crux_constellation_map.png|Crux_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Crux, the Southern Cross. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 22/02/1003. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the azimuthal equidistant projection (the azimuth being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Crux constellation map.png]])</em></li> <li>27 apr 2004 22:19 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Neutron_proton_verhouding.png|Neutron_proton_verhouding.png]]" <em>(Overgenomen van Wikipedia.en door Evanherk; vertaald door mij &#123;&#123;msg:GFDL}})</em></li> <li>27 apr 2004 22:17 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Corvus_constellation_map_small.png|Corvus_constellation_map_small.png]]" <em>(Give a description for the image:Vanaf Engelse wikipedia &#91;&#91;en:Image:Corvus constellation map small.png]])</em></li> <li>27 apr 2004 22:13 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Camelopardalis_constellation_map_small.png|Camelopardalis_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Camelopardalis constellation map small.png]])</em></li> <li>27 apr 2004 22:10 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Sagittarius_constellation_map_small.png|Sagittarius_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Sagittarius constellation map small.png]])</em></li> <li>27 apr 2004 22:07 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Crater_constellation_map.png|Crater_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Crater, the Cup. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/09/05. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Crater constellation map.png]])</em></li> <li>27 apr 2004 22:07 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Schauffelradbagger.jpg|Schauffelradbagger.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: *Beschreibung: **Schauffelradbagger in Ferropolis *Quelle: **Fotografiert im Juni 2000 *Fotograf oder Zeichner: **&#91;&#91;Benutzer:Stefan Kühn&#124;Stefan Kühn]] *Andere Versionen: **&#91;&#91;Media:Schauffelradbagger_kl.jpg&#124;kleinere Version]] (&#91;&#91;:Bild:Schauffelradbagger_kl.jpg&#124;Info]]) *Copyright Status: **&#91;&#91;GNU Freie Dokumentationslizenz]] &#91;&#91;de:Bild:Schauffelradbagger.jpg]])</em></li> <li>27 apr 2004 22:04 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Auriga_constellation_map_small.png|Auriga_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia, &#91;&#91;en:Image:Auriga constellation map small.png]])</em></li> <li>27 apr 2004 22:01 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Aries_constellation_map_small.png|Aries_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Aries_constellation_map_small.png]])</em></li> <li>27 apr 2004 21:54 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Aquila_constellation_map_small.png|Aquila_constellation_map_small.png]]" <em>(Give a description for the image: &#91;&#91;en:Image:Aquila_constellation_map_small.png]] vanaf Engelse wikipedia)</em></li> <li>27 apr 2004 21:49 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Puppis_constellation_map.png|Puppis_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: ;description: Carte pour la constellation &#91;&#91;Poupe (constellation)&#124;Poupe]] ;source: produite à l&#39;aide du logiciel &#91;http&#58;//pp3.sourceforge.net/ PP3] de &#91;&#91;w:en:User:Bronger]] ;copyright: &#123;&#123;msg:GFDL}} &#91;&#91;fr:Image:Puppis constellation map.png]])</em></li> <li>27 apr 2004 21:46 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Corona_borealis_constellation_map.png|Corona_borealis_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Corona Borealis, the Northern Crown. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/09/04. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Corona borealis constellation map.png]])</em></li> <li>27 apr 2004 21:44 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Corona_australis_constellation_map.png|Corona_australis_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Corona Australis, the Southern Crown. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/09/07. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 15.7 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Corona australis constellation map.png]])</em></li> <li>27 apr 2004 21:14 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Nokia-mobilephoneearpiece010.jpg|Nokia-mobilephoneearpiece010.jpg]]" <em>(Van en: wiki LarryGilbert (16270 bytes) (<nowiki>&#123;&#123;msg:CopyrightedFreeUseProvided}} the terms of the &#91;http&#58;//www.freeimages.co.uk/terms.htm Freeimages User License] are followed) See the terms on the site of freeimages)</em></li> <li>27 apr 2004 20:55 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:MarilynMonroe.jpg|MarilynMonroe.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Marilyn Monroe from cover of &#39;&#39;&#91;&#91;Marilyn Monroe (book)&#124;Marilyn Monroe]]&#39;&#39; by &#91;&#91;Barbara Leaming]] &#91;&#91;en:Image:MarilynMonroe.jpg]])</em></li> <li>27 apr 2004 20:30 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Maison_carree_side.jpg|Maison_carree_side.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Side view of the Maison Carrée, Nimes Image by &#91;&#91;User:ChrisO&#124;ChrisO]] &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:Maison carree side.jpg]])</em></li> <li>27 apr 2004 20:25 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Corinth_Temple_of_Apollon.jpg|Corinth_Temple_of_Apollon.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Large version of the Apollon Temple in Ancient Corinth, taken by &lt;mdoege@compuserve.com&gt; &#91;&#91;en:Image: Corinth Temple of Apollon.jpg]])</em></li> <li>27 apr 2004 20:24 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:GreeceCorinth.png|GreeceCorinth.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: map &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:GreeceCorinth.png]])</em></li> <li>27 apr 2004 20:23 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Nagasaki_bei_Nacht.jpg|Nagasaki_bei_Nacht.jpg]]" <em>(Van en: wiki TakuyaMurata (25455 bytes) (copyright-free) )</em></li> <li>27 apr 2004 20:23 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:GreeceCorinth.png|GreeceCorinth.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: map &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:GreeceCorinth.png]] 1)</em></li> <li>27 apr 2004 20:22 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Corinthische_zuil.jpg|Corinthische_zuil.jpg]]" <em>(Corinthische zuil, vertaald vanaf Poolse wikipedia, &#91;&#91;pl:Grafika:Porz&amp;#261;dek koryncki popr.JPG]])</em></li> <li>27 apr 2004 20:08 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:GreeceCorfu.png|GreeceCorfu.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: map &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:GreeceCorfu.png]])</em></li> <li>27 apr 2004 20:06 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Karte_Korfu.png|Karte_Korfu.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Karte der griechischen Insel Krofu, stark verfremdete Vorlage von einer inzwischen nicht mehr erreichbaren Touristikseite, neue Farben, andere Orte, weniger Orte, Pictogramm zum Flughafen entfernt, Schalgschatten gestaltet. Bearbeitet Sep. 03 von Bodo Wiska. &#91;&#91;de:Bild:Karte Korfu.png]])</em></li> <li>27 apr 2004 20:04 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bild_Korfu.png|Bild_Korfu.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Bild Korfu 2000 von Bodo Wiska, eigene Aufnahme von Strand von Glyfada, nachbearbeitet 2003 für WIKI &#91;&#91;Benutzer:Wiska Bodo&#124;Bo]] 03:06, 26. Jul 2003 (CEST) &#91;&#91;de:Bild:Bild Korfu.png]])</em></li> <li>27 apr 2004 19:59 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Fuji_mt_s.jpg|Fuji_mt_s.jpg]]" <em>(Van en: wiki copyright-free from http&#58;//www.mars.dti.ne.jp/~blues/pps/index-photo.html#landscape_1 TakuyaMurata (12359 bytes) (small version) )</em></li> <li>27 apr 2004 19:46 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:VitamineB2.png|VitamineB2.png]]" <em>(Van fr: wiki . Yohan (5084 octets) (Structure de la vitamine B2) Auteur : Yohan Source : Cr&amp;#9500;&amp;#174;e avec MarvinSketch Licence : GFLD )</em></li> <li>27 apr 2004 19:36 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Beke_image.jpg|Beke_image.jpg]]" <em>(Frank Beke)</em></li> <li>27 apr 2004 19:32 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Hamburg_Hafen_Containerterminal.jpg|Hamburg_Hafen_Containerterminal.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Containerterminal im Hafen Hamburg Selbst fotografiert am 02. Januar 2004. Das Foto unterliegt der GFDL. &#91;&#91;de:Bild:Hamburg Hafen Containerterminal.jpg]])</em></li> <li>27 apr 2004 19:21 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Freya_image.jpg|Freya_image.jpg]]" <em>(Freya Van den Bossche)</em></li> <li>27 apr 2004 19:18 [[Gebruiker:Gidonb|Gidonb]] heeft ge-upload: "[[:Afbeelding:250px-Iraq-flag.gif|250px-Iraq-flag.gif]]" <em>(van en: wikipedia)</em></li> <li>27 apr 2004 19:18 [[Gebruiker:Gidonb|Gidonb]] heeft ge-upload: "[[:Afbeelding:150px-Iraq-flag.gif|150px-Iraq-flag.gif]]" <em>(van en: wikipedia)</em></li> <li>27 apr 2004 19:14 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Container_ship_loading-700px.jpg|Container_ship_loading-700px.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Photo of container ship loading at Copenhagen, taken August 2003 by Stan Shebs and licensed under GFDL, 700px across &#91;&#91;en:Image:Container ship loading-700px.jpg]])</em></li> <li>27 apr 2004 19:04 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Carte_Localisation_Région_France_Alsace.png|Carte_Localisation_Région_France_Alsace.png]]" <em>(Van fr: wiki Rinaldum (17766 octets) (\Carte_Localisation_R&amp;#9500;&amp;#174;gion_France_Auvergne licence GPL) Source:Cr&amp;#9500;&amp;#174;e par Rinaldum a partir d&#39;un image libre de droits de l&#39;IGN a cette adresse icence: GFDL )</em></li> <li>27 apr 2004 18:56 [[Gebruiker:Maartentje|Maartentje]] heeft ge-upload: "[[:Afbeelding:Voskenslaan_image.jpg|Voskenslaan_image.jpg]]" <em>(Voskenslaan)</em></li> <li>27 apr 2004 18:53 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Gemeine_Kiefer.jpg|Gemeine_Kiefer.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Gemeine Kiefer aus englischer Wikipedia: selbst fotographiert von Ramin Nakisa (siehe dessen Benutzerdiskussion) &#91;&#91;de:Bild:Gemeine Kiefer.jpg]])</em></li> <li>27 apr 2004 18:52 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Douglas_fir_malecone_reduced.jpg|Douglas_fir_malecone_reduced.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Douglas-fir (&#39;&#39;Pseudotsuga&#39;&#39;) branch close up. Taken by Eric Guiinther and released under the GNU Free Documentation License. Reduced version of photo at &#91;&#91;:Image:Douglas_fir_malecone.jpg]]. &#91;&#91;en:Image:Douglas fir malecone reduced.jpg]])</em></li> <li>27 apr 2004 18:47 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:LocationDRCongo.png|LocationDRCongo.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Location map for the Democratic Republic of the Congo &#91;&#91;en:Image:LocationDRCongo.png]])</em></li> <li>27 apr 2004 18:39 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Fanglomerate-above_Mesquite_Springs_in_Death_Valley_NP.JPG|Fanglomerate-above_Mesquite_Springs_in_Death_Valley_NP.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Photo by &#91;&#91;user:maveric149&#124;Daniel Mayer]]. Released under terms of the &#91;&#91;GNU FDL]] &#91;&#91;en:Image:Fanglomerate-above Mesquite Springs in Death Valley NP.JPG]])</em></li> <li>27 apr 2004 18:34 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Variable_kondensatorer.jpg|Variable_kondensatorer.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-da. De beschrijving daar was: Fra venstre; trimmekondensatorer ke-, luft-, folie-, folie-, ke-, glimmer-, folie-, folie-kondensator. Den sidste er en afstemningskondensator. Billedet er udgivet under GFDL. &#91;&#91;da:Billede:Variable kondensatorer.jpg]])</em></li> <li>27 apr 2004 18:34 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Tantalkondensatorer.jpg|Tantalkondensatorer.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-da. De beschrijving daar was: Billede af tantalkondensatorer. &#91;&#91;da:Billede:tantalkondensatorer.jpg]])</em></li> <li>27 apr 2004 18:33 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Elektrolytkondensatorer.jpg|Elektrolytkondensatorer.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-da. De beschrijving daar was: Billede af elektrolytkondensatorer. &#91;&#91;da:Billede:elektrolytkondensatorer.jpg]])</em></li> <li>27 apr 2004 18:26 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Keramiske_kondensatorer.jpg|Keramiske_kondensatorer.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-da. De beschrijving daar was: Billede af keramiske kondensatorer. &#91;&#91;da:Billede:keramiske kondensatorer.jpg]])</em></li> <li>27 apr 2004 18:25 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Principtegning_af_elektrisk_kondensator.jpg|Principtegning_af_elektrisk_kondensator.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-da. De beschrijving daar was: Hjemmelavet computergrafik der viser en elektrisk kondensators principielle opbygning.&lt;BR&gt; Udarbejdet af &#91;&#91;Bruger:Peo&#124;Peo]] 26/10-2003, prim&amp;aelig;rt ved hj&amp;aelig;l af programmet &amp;quot;Persistence of Vision Raytracer&amp;quot;. &lt;B&gt;BEM&amp;AElig;RK&lt;/B&gt;: Ved en fejl &amp;quot;lykkedes&amp;quot; det mig at uploade et billede magen til under navnet &amp;quot;Principtegning af lektrisk kondensator.jpg&amp;quot; (f&amp;oslash;rste &amp;quot;e&amp;quot; udeladt i ordet &amp;quot;elektrisk&amp;quot;). Kunne en administrator med beh&amp;oslash;rige rettigheder v&amp;aelig;re rar at slette billedet med det fejlgtige navn &amp;quot;Principtegning af en lektrisk kondensator&amp;quot;? &#91;&#91;da:Billede:Principtegning af elektrisk kondensator.jpg]])</em></li> <li>27 apr 2004 18:22 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Condensators.JPG|Condensators.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Capacitors/Condensators from German wiki &#91;&#91;en:Image:Condensators.JPG]])</em></li> <li>27 apr 2004 18:19 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Kondensator.png|Kondensator.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Kondensator &#91;&#91;de:Bild:Kondensator.png]])</em></li> <li>27 apr 2004 18:06 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Diag_phase_eau.png|Diag_phase_eau.png]]" <em>(Van fr: wiki, . Cdang (2747 octets) (Diagramme de phase de l&#39;eau pour des pression et temp&amp;#9500;&amp;#174;ratures terrestres) in de afbeelding enkel vertaald in het Nederlands)</em></li> <li>27 apr 2004 17:56 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Tennyson.jpg|Tennyson.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Public domain image from http&#58;//www.lib.utexas.edu/photodraw/portraits/ Cropped and resized. Original source:&lt;br&gt;Duyckinick, Evert A. &#39;&#39;Portrait Gallery of Eminent Men and Women in Europe and America&#39;&#39;. New York: Johnson, Wilson &amp; Company, 1873. &#91;&#91;en:Image:tennyson.jpg]])</em></li> <li>27 apr 2004 17:54 [[Gebruiker:Gidonb|Gidonb]] heeft ge-upload: "[[:Afbeelding:120px-Iraq-flag.gif|120px-Iraq-flag.gif]]" <em>(van en:wikipedia)</em></li> <li>27 apr 2004 17:30 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Harvestman-lg.jpg|Harvestman-lg.jpg]]" <em>(Van en: wiki CatherineMunro (79011 bytes) (Harvestman/Opiliones, large) )</em></li> <li>27 apr 2004 16:31 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Interferens_bag_dobbeltspalte.jpg|Interferens_bag_dobbeltspalte.jpg]]" <em>(Van da: wiki Peo (13207 bytes) (Viser b°lger der passerer en dobbeltspalte, med angivelse af alle relevante mÕl, vinkler og ordener) Lavet af Peo torsdag den 29. januar 2004, ved hjµlp af POV-Ray. )</em></li> <li>27 apr 2004 14:10 [[Gebruiker:Kafr9333|Kafr9333]] heeft ge-upload: "[[:Afbeelding:Koperen_Tuin.doc|Koperen_Tuin.doc]]" <em>(Bespreking &quot;Koperen Tuin&quot; van Simon Vestdijk)</em></li> <li>27 apr 2004 13:50 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Test.gif|Test.gif]]" <em>(Tijdelijk bestand, voldoet NIET aan GNU/FDL)</em></li> <li>27 apr 2004 13:44 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Bogojk.jpg|Bogojk.jpg]]" <em>(Fritz8 - print)</em></li> <li>27 apr 2004 13:39 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Blackjk.jpg|Blackjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>27 apr 2004 13:34 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Birdjk.jpg|Birdjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>27 apr 2004 13:29 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Benkojk.jpg|Benkojk.jpg]]" <em>(Fritz8 - print)</em></li> <li>27 apr 2004 13:22 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Damejk.jpg|Damejk.jpg]]" <em>(Fritz8 - print)</em></li> <li>27 apr 2004 13:18 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Byrnejk.jpg|Byrnejk.jpg]]" <em>(Fritz8 - print)</em></li> <li>27 apr 2004 13:11 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Awerjk.jpg|Awerjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>27 apr 2004 13:05 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Hugorm-Ravnsholt-Kattehale-040424.jpg|Hugorm-Ravnsholt-Kattehale-040424.jpg]]" <em>(da: wikipedia)</em></li> <li>27 apr 2004 13:05 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Alljk.jpg|Alljk.jpg]]" <em>(Fritz8 - print)</em></li> <li>27 apr 2004 13:00 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Aljechinjk.jpg|Aljechinjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>27 apr 2004 12:57 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Albinjk.jpg|Albinjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>27 apr 2004 12:52 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Water_hyacinth.jpg|Water_hyacinth.jpg]]" <em>(En: wikipedia)</em></li> <li>27 apr 2004 12:51 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Alapinjk.jpg|Alapinjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>27 apr 2004 12:39 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Gellerjk.jpg|Gellerjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>27 apr 2004 12:29 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Landaujk.jpg|Landaujk.jpg]]" <em>(Fritz8 - print)</em></li> <li>27 apr 2004 11:49 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Munnikezijlsterriet3.JPG|Munnikezijlsterriet3.JPG]]" <em>(Eigen foto)</em></li> <li>27 apr 2004 11:49 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Munnikezijlsterriet2.JPG|Munnikezijlsterriet2.JPG]]" <em>(Eigen foto)</em></li> <li>27 apr 2004 11:48 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Munnikezijlsterriet1.JPG|Munnikezijlsterriet1.JPG]]" <em>(Eigen foto)</em></li> <li>27 apr 2004 08:43 [[Gebruiker:Bontenbal|Bontenbal]] heeft ge-upload: "[[:Afbeelding:Margot_wallstrom.jpg|Margot_wallstrom.jpg]]" <em>(Website EU, mag voor niet commerciele doeleinden gebruikt worden)</em></li> <li>27 apr 2004 07:07 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Reitdiep_2.JPG|Reitdiep_2.JPG]]" <em>(Eigen foto)</em></li> <li>27 apr 2004 07:07 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Reitdiep_1.JPG|Reitdiep_1.JPG]]" <em>(Eigen foto)</em></li> <li>27 apr 2004 06:34 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Lapwing352.jpg|Lapwing352.jpg]]" <em>(En: wikipedia)</em></li> <li>27 apr 2004 06:27 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Klein_kruiskruid_plant.jpg|Klein_kruiskruid_plant.jpg]]" <em>(zelfgemaakte foto; klein kruiskruid plant eind april)</em></li> <li>27 apr 2004 06:22 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Klein_kruiskruid_closeup.jpg|Klein_kruiskruid_closeup.jpg]]" <em>(zelfgemaakte foto; klein kruiskruid bloemhoofdje met zaadpluis)</em></li> <li>27 apr 2004 05:25 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Pd3.jpg|Pd3.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Renderbild aus AutoCAD &#91;&#91;de:Bild:Pd3.jpg]])</em></li> <li>27 apr 2004 05:24 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Lautsprecher_gr.jpg|Lautsprecher_gr.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Lautsprecher mit dem CAD-Programm CATIA V5 erstellt Quelle: selbst Lizenz: GNU Freie Dokumentationslizenz &#91;&#91;de:Bild:Lautsprecher gr.jpg]])</em></li> <li>27 apr 2004 05:23 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Qcad_gr.jpg|Qcad_gr.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: CAD Programm QCad - Darstellung einer Schraube Quelle: selbst / Lizenz: GNU Freie Dokumentationslizenz &#91;&#91;de:Bild:Qcad gr.jpg]])</em></li> <li>27 apr 2004 03:44 [[Gebruiker:Jcwf|Jcwf]] heeft ge-upload: "[[:Afbeelding:Pommerenriet.jpg|Pommerenriet.jpg]]" <em>(eigen foto mrt toestemming eigenaars instrumenten, pommers met rieten)</em></li> <li>27 apr 2004 02:37 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Gaskessel_kl.jpg|Gaskessel_kl.jpg]]" <em>(Van de: wiki Igelball (15539 Byte) (Gaskessel (kleines Bild)) )</em></li> <li>27 apr 2004 01:13 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Nipkow-scheibe.png|Nipkow-scheibe.png]]" <em>(Van de: wiki Hzeller (14010 Byte) (Schematische Darstellung einer)</em></li> <li>27 apr 2004 00:14 [[Gebruiker:Nobody.de|Nobody.de]] heeft ge-upload: "[[:Afbeelding:200px-Brancusi.JPG|200px-Brancusi.JPG]]"</li> <li>26 apr 2004 22:01 [[Gebruiker:Nobody.de|Nobody.de]] heeft ge-upload: "[[:Afbeelding:Eishockey_Eisbaeren_gegen_Capitals.jpg|Eishockey_Eisbaeren_gegen_Capitals.jpg]]" <em>(David Herrmann (mit Genehmigung des EHC Eisbären))</em></li> <li>26 apr 2004 21:55 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Ba.concorde.g-boac.719pix.jpg|Ba.concorde.g-boac.719pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: British Airways Concorde G-BOAC&lt;br&gt; Photographed by Derek Pedley and used with his permission.&lt;br&gt; Picture prepared for this site in March 2003 by Adrian Pingstone. &#91;&#91;en:Image:ba.concorde.g-boac.719pix.jpg]])</em></li> <li>26 apr 2004 21:49 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Concorde_crash.jpg|Concorde_crash.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: A picture of the concorde moments before the crash. Taken by an ameteur photographer Photo from BBC news &#61;=Enternal Links== &#91;http&#58;//news.bbc.co.uk/1/hi/world/europe/851119.stm This is the page where this image comes from.] &#91;&#91;en:Image:Concorde crash.jpg]])</em></li> <li>26 apr 2004 21:48 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Concorde.lastflight.arp.750pix.jpg|Concorde.lastflight.arp.750pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Concorde 216 (G-BOAF) passes over the A38 road on the final ever Concorde landing at Filton, Bristol, England.&lt;br&gt; Taken by Adrian Pingstone on 26th November 2003 and placed in the public domain. &#91;&#91;en:Image:concorde.lastflight.arp.750pix.jpg]])</em></li> <li>26 apr 2004 21:21 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:CD-ROM.jpg|CD-ROM.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Eine CD zur Illustration bei &#91;&#91;Information]]. Von http&#58;//www.sxc.hu/browse.phtml?f=view&amp;id=66755 - &quot;There are no usage restrictions for this photo&quot; &#91;&#91;de:Bild:Information.jpg]])</em></li> <li>26 apr 2004 21:16 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:LakeComoFromTheSky.jpg|LakeComoFromTheSky.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: A view of the &#91;&#91;Lake of Como]] from the sky taken by &#91;&#91;User:LazLong&#124;Laz]] on June 15, 2003 &#91;&#91;en:Image:LakeComoFromTheSky.jpg]])</em></li> <li>26 apr 2004 21:14 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Communist-manifesto.png|Communist-manifesto.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: the cover of communist-manifesto, from www.marxists.org, under Free Documentation License &#91;&#91;en:Image:communist-manifesto.png]])</em></li> <li>26 apr 2004 21:07 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Hmrsckl.png|Hmrsckl.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Hammer and sickle, symbol representing Communism, Communist parties, Communist countries, etc. &#91;&#91;en:Image:hmrsckl.png]])</em></li> <li>26 apr 2004 20:49 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:MOS_Technologies.jpg|MOS_Technologies.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Image of circuits from &#91;&#91;MOS Technologies]]. Taken by myself, placed under the &#91;&#91;GNU FDL]]. &#91;&#91;User:Nixdorf&#124;Nixdorf]] 19:51, 4 Feb 2004 (UTC) &#91;&#91;en:Image:MOS Technologies.jpg]])</em></li> <li>26 apr 2004 20:46 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Coma_berenices_constellation_map.png|Coma_berenices_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Coma Berenices, Berenice&#39;s Hair. Copyright &amp;copy; 2003 &#91;mailto:bronger@physik.rwth-aachen.de Torsten Bronger]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 15/02/1003. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line isx the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the azimuthal equidistant projection (the azimuth being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Coma berenices constellation map.png]])</em></li> <li>26 apr 2004 20:45 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:RMOV0020.rm|RMOV0020.rm]]" <em>(test)</em></li> <li>26 apr 2004 20:43 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Columba_constellation_map.png|Columba_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Columba, the Dove. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/09/06. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Columba constellation map.png]])</em></li> <li>26 apr 2004 20:42 [[Gebruiker:Snoop|Snoop]] heeft ge-upload: "[[:Afbeelding:ClarkGable.jpg|ClarkGable.jpg]]" <em>(Clark Gable van Spaanse wiki)</em></li> <li>26 apr 2004 20:37 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:RMOV0020.rm|RMOV0020.rm]]" <em>(test4, nu als rm)</em></li> <li>26 apr 2004 20:36 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Colisee.jpg|Colisee.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: Copyright: Arnaud Gaillard (arnaud at amarys.com) Cette image est sous license &#39;&#39;&#39;Creative common Attribution-ShareAlike License&#39;&#39;&#39; &#91;&#91;http&#58;//creativecommons.org/licenses/by-sa/1.0/]] &#91;&#91;fr:Image:Colisee.jpg]])</em></li> <li>26 apr 2004 20:35 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Colisee-romain.png|Colisee-romain.png]]" <em>(Vanaf Franse wikipedia &#91;&#91;fr:Image:colisee-romain.png]])</em></li> <li>26 apr 2004 20:23 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Corn_production_in_Colorado.jpg|Corn_production_in_Colorado.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Image Number K4250-8 Corn production in Colorado. Photo by Scott Bauer. &#39;&#39;&#39;Source&#39;&#39;&#39;: http&#58;//www.ars.usda.gov/is/graphics/photos/k4250-8.htm ---- &#123;&#123;msg:PD}} &#91;&#91;en:Image:Corn production in Colorado.jpg]])</em></li> <li>26 apr 2004 20:22 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Longs_Peak.jpg|Longs_Peak.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Image Number K7679-3 Snowpack accumulation at 14,255 ft. on Longs Peak in Rocky Mountain National Park, Colorado. Photo by Scott Bauer. &#39;&#39;&#39;Source&#39;&#39;&#39;: http&#58;//www.ars.usda.gov/is/graphics/photos/k7679-3.htm ---- &#123;&#123;msg:PD}} &#91;&#91;en:Image:Longs Peak.jpg]])</em></li> <li>26 apr 2004 20:20 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Coloradostateseal.jpg|Coloradostateseal.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: from www.usembassy.de &#91;&#91;en:Image:Coloradostateseal.jpg]])</em></li> <li>26 apr 2004 20:19 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Us-co.png|Us-co.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: converting gif to png and uploading from metawikipedia &#91;&#91;en:Image:us-co.png]])</em></li> <li>26 apr 2004 20:10 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Bluequail05.jpg|Bluequail05.jpg]]" <em>(Van en: wiki Jimfbleak (27393 bytes) (Blue-breasted Quail, my photo) )</em></li> <li>26 apr 2004 20:05 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Latin_alphabet_Xx.png|Latin_alphabet_Xx.png]]" <em>(Van en: wiki Nate Silva (2182 bytes) (Latin alphabet Xx in Helvetica 55 and Times LT Regular))</em></li> <li>26 apr 2004 19:59 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Coleman_Hawkins.jpg|Coleman_Hawkins.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: from www.cs.princeton.edu/ ~ken/gallery.html &#123;&#123;msg:unverified}} &#91;&#91;en:Image:Hawkins2.jpg]])</em></li> <li>26 apr 2004 19:53 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:RMOV0024.AVI|RMOV0024.AVI]]" <em>(test2)</em></li> <li>26 apr 2004 19:52 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Codeine.jpg|Codeine.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: http&#58;//www.drugs.indiana.edu/prevention/iprcpics.html &#91;&#91;en:Image:Codeine.jpg]])</em></li> <li>26 apr 2004 19:51 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Bevolkingsdichtheid.jpg|Bevolkingsdichtheid.jpg]]" <em>(Vergat het jaartal erbij te zetten)</em></li> <li>26 apr 2004 19:50 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Kokosinseln.jpg|Kokosinseln.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Karte der Kokosinseln, public domain aus dem CIA World Factbook &#91;&#91;de:Bild:Kokosinseln.jpg]])</em></li> <li>26 apr 2004 19:47 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Bevolkingsdichtheid.jpg|Bevolkingsdichtheid.jpg]]" <em>(Van de: wiki (Weltkarte: Bev÷lkerungsdichte, Stand 1994) created by: The National Center for Geographic Information and Analysis (NCGIA) http&#58;//www.ncgia.ucsb.edu/ enkel vertaald in het Nederlands)</em></li> <li>26 apr 2004 19:34 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Ferromagnetism.png|Ferromagnetism.png]]" <em>(Van jp: wiki, help, ik kan het Japans niet lezen)</em></li> <li>26 apr 2004 19:32 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cocaine.png|Cocaine.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: molécule de cocaine Copyright: Arnaud Gaillard (arnaud at amarys.com) Cette image est sous license &#39;&#39;&#39;Creative common Attribution-ShareAlike License&#39;&#39;&#39; &#91;&#91;http&#58;//creativecommons.org/licenses/by-sa/1.0/]] &#91;&#91;fr:Image:cocaine.png]])</em></li> <li>26 apr 2004 19:30 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cocaine3.jpg|Cocaine3.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Cocaine powder &#91;&#91;en:Image:Cocaine3.jpg]])</em></li> <li>26 apr 2004 19:08 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Guy_Verhofstadt.jpg|Guy_Verhofstadt.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Guy Verhofstadt &#61;= Quelle == http&#58;//www.france.diplomatie.fr/photos/diplo/partenair/belgique15.html#photo Französisches Außenministerium, Abteilung Fotografien ministère des Affaires étrangères/Service photographique &#61;= Lizenz == &#39;&#39;Les &quot;Instantanés diplomatiques&quot; sont libres de droits et peuvent être reproduits avec mention obligatoire &quot;ministère des Affaires étrangères/Service photographique&quot;. Pour tout usage exclusivement professionnel, des duplicatas sont disponibles sur demande auprès du service photographique du ministère des Affaires étrangères.&#39;&#39; (&#39;&#39;Die &quot;Schnappschüsse diplomatischer Begegnungen&quot; sind copyrightfrei, sie dürfen mit dem Vermerk &quot;Französisches Außenministerium, Abteilung Fotografien&quot; reproduziert werden. Für rein kommerzielle Verwendungszwecke sind auf Anfrage bei der Abteilung Fotografien im französischen Außenministerium Kopien erhältlich.&#39;&#39;) &#61;= Originalbeschreibung == &#39;&#39;Accueil de M. Guy Verhofstadt, Premier ministre belge, par M. Jacques Chirac, président de la République (perron de l&#39;Elysée). 10 septembre 2002.&#39;&#39; &#91;&#91;de:Bild:Guy Verhofstadt.jpg]])</em></li> <li>26 apr 2004 19:06 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Gallapfel2.jpg|Gallapfel2.jpg]]" <em>(Van de: wiki Thomasgl (5961 Byte) (Makroaufnahme eines Gallapfels) Makroaufnahme eines Gallapfels, aufgenommen mit einer Digitalkamera von Thomasgl, am 12.10.2003 Der Durchmesser des Objektes betrõgt knapp 1 cm)</em></li> <li>26 apr 2004 18:56 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Kernfusie_dt_reactie.png|Kernfusie_dt_reactie.png]]" <em>(Deuterium fusie-reactie; Bron: Wikipedia.en; geupload door Kristof vt, vertaald door mij; &#123;&#123;msg:GFDL}})</em></li> <li>26 apr 2004 18:47 [[Gebruiker:Nobody.de|Nobody.de]] heeft ge-upload: "[[:Afbeelding:Tors_strid_med_jättarna_av_Mårten_Eskil_Winge.jpg|Tors_strid_med_jättarna_av_Mårten_Eskil_Winge.jpg]]" <em>(återgå till en gammal version)</em></li> <li>26 apr 2004 18:04 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Human-woman.png|Human-woman.png]]" <em>(Van en: wiki Sverdrup (8081 bytes) (Cropped from &#91;&#91;Image:Human.png]]) Detail from Pioneer 11 spacecraft picture, showing a man and a woman. Derived from a public domain NASA image GNU FDL Modemac (15724 bytes) )</em></li> <li>26 apr 2004 17:59 [[Gebruiker:Evanherk|Evanherk]] heeft ge-upload: "[[:Afbeelding:Neutron_proton_ratio.gif|Neutron_proton_ratio.gif]]" <em>(Overgenomen uit engelse wiki)</em></li> <li>26 apr 2004 17:57 [[Gebruiker:Evanherk|Evanherk]] heeft ge-upload: "[[:Afbeelding:Nuclear_fission.gif|Nuclear_fission.gif]]" <em>(overgenomen uit engelse wiki)</em></li> <li>26 apr 2004 17:34 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Chnum.jpg|Chnum.jpg]]" <em>(Van en: wiki RickK (3820 bytes) (Chnum) )</em></li> <li>26 apr 2004 17:23 [[Gebruiker:Nobody.de|Nobody.de]] heeft ge-upload: "[[:Afbeelding:Karte_gelsenkirchen_in_deutschland.png|Karte_gelsenkirchen_in_deutschland.png]]" <em>(GNU free)</em></li> <li>26 apr 2004 17:22 [[Gebruiker:Nobody.de|Nobody.de]] heeft ge-upload: "[[:Afbeelding:Gelsenkirchen-wappen_kl.jpg|Gelsenkirchen-wappen_kl.jpg]]" <em>(GNU free)</em></li> <li>26 apr 2004 14:40 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Ferdinand_i_twosicilies.jpeg.jpeg|Ferdinand_i_twosicilies.jpeg.jpeg]]" <em>(Ferdinand I der Beide Siciliën (van Engelse Wiki))</em></li> <li>26 apr 2004 11:48 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Pconcorde.jpg|Pconcorde.jpg]]" <em>(Place de la Concorde, Parijs, in de richting van de Madeleine-kerk. Foto: &#91;http&#58;//www.sxc.hu/browse.phtml?f=profile&amp;l=holson Jake Holson]. Vrij te gebruiken.)</em></li> <li>26 apr 2004 11:02 [[Gebruiker:Roepersbot|Roepersbot]] heeft ge-upload: "[[:Afbeelding:Wien_hundertwasserhaus.jpg|Wien_hundertwasserhaus.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Wien, Hundertwasserhaus, 2002-09-17 / selbstfotografiert / der GNU-Lizenz unterstellt &#91;&#91;de:Bild:Wien hundertwasserhaus.jpg]] &#123;&#123;msg:GFDL}})</em></li> <li>26 apr 2004 10:49 [[Gebruiker:Nobody.de|Nobody.de]] heeft ge-upload: "[[:Afbeelding:FCSchalke04.png|FCSchalke04.png]]" <em>(from http&#58;//www.hqfl.dk (free to use as long credits remain).&quot;))</em></li> <li>26 apr 2004 10:45 [[Gebruiker:Nobody.de|Nobody.de]] heeft ge-upload: "[[:Afbeelding:Schalke_04.png|Schalke_04.png]]" <em>(from http&#58;//www.hqfl.dk (free to use as long credits remain).&quot;))</em></li> <li>26 apr 2004 10:43 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Vierkant2.jpg|Vierkant2.jpg]]" <em>(Fritz8 - print)</em></li> <li>26 apr 2004 10:31 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Schalke_04.png|Schalke_04.png]]" <em>(Ik dacht slim te zijn...)</em></li> <li>26 apr 2004 10:30 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Schalke_04.png|Schalke_04.png]]" <em>(&#91;&#91;en:Image:Schalke 04.png]] Afbeelding van de Engelse wiki: &quot;Symbol of &#91;&#91;soccer]] team &#91;&#91;FC Schalke 04]], from http&#58;//www.hqfl.dk (free to use as long credits remain).&quot;)</em></li> <li>26 apr 2004 10:07 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Vierkant2.jpg|Vierkant2.jpg]]" <em>(Fritz8 - print)</em></li> <li>26 apr 2004 10:03 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Vierkant1.jpg|Vierkant1.jpg]]" <em>(Fritz8 - print)</em></li> <li>26 apr 2004 09:40 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Meranerjk.jpg|Meranerjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>26 apr 2004 09:35 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Dreev.jpg|Dreev.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>26 apr 2004 09:32 [[Gebruiker:SanderSpek|SanderSpek]] heeft ge-upload: "[[:Afbeelding:Enci2.JPG|Enci2.JPG]]" <em>(ENCI in Maastricht. Eigen foto.)</em></li> <li>26 apr 2004 09:32 [[Gebruiker:SanderSpek|SanderSpek]] heeft ge-upload: "[[:Afbeelding:Enci1.JPG|Enci1.JPG]]" <em>(ENCI in Maastricht. Eigen foto.)</em></li> <li>26 apr 2004 07:52 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Georg_Victor_II.bmp|Georg_Victor_II.bmp]]" <em>(Uit boekje over Koningin Emma)</em></li> <li>26 apr 2004 07:47 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:GreeceCrete.png|GreeceCrete.png]]" <em>(Van en: wiki Morwen (21914 bytes) (map of greek prefecture) GNU FDL)</em></li> <li>26 apr 2004 07:27 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Friedrich_Waldeck_Pyrmont_1_.jpg|Friedrich_Waldeck_Pyrmont_1_.jpg]]" <em>(Afkomstig van http&#58;//www.deutsche-schutzgebiete.de/fuerstentum_waldeck.htm)</em></li> <li>26 apr 2004 03:52 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Ecliptica.png|Ecliptica.png]]" <em>(xfig vervormde het plaatje, ik heb er een eigen versie van gemaakt)</em></li> <li>26 apr 2004 03:32 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Ecliptica.png|Ecliptica.png]]" <em>(Van de: wiki G.Piezinger (4436 Byte) Quelle: Selber schnell mit AppleWorks zusammengeklickt Autor: Gerhard Piezinger Lizenzstatus: GNU FDL Enkel vertaald in het Nederlands in de afbeelding)</em></li> <li>26 apr 2004 03:11 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GewoneVogelmelk-plant-hr.jpg|GewoneVogelmelk-plant-hr.jpg]]" <em>(eigen foto, laan van eik en duinen den haag)</em></li> <li>26 apr 2004 03:06 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GewoneVogelmelk-bloem-hr.jpg|GewoneVogelmelk-bloem-hr.jpg]]" <em>(eigen foto, laan van eik en duinen den haag)</em></li> <li>26 apr 2004 02:48 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Pireuslejonet.jpg|Pireuslejonet.jpg]]" <em>(Van sv: wiki . Den fjõttrade ankan (26485 bytes) (PD-bild))</em></li> <li>26 apr 2004 01:23 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Ribosome.png|Ribosome.png]]" <em>(Van en: wiki http&#58;//www.nupedia.com/newsystem/upload_file/869/ribosome.png Dominus 06:18 Apr 20, 2003 (UTC) Dominus (2252 bytes) (Operation of ribosome) )</em></li> <li>26 apr 2004 01:20 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:American-Bison-s.jpg|American-Bison-s.jpg]]" <em>(Van en: wiki Tannin (8225 bytes) (cropped version of American_bison_thumbnail.jpg) )</em></li> <li>26 apr 2004 00:16 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Sextant.gif|Sextant.gif]]" <em>(sextant van wiki-en (lijkt me oud genoeg))</em></li> <li>26 apr 2004 00:10 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Maulwurf.jpg|Maulwurf.jpg]]" <em>( Anne Simon: heeft toegestemd dat foto gebruikt wordt mits copyright vermeld wordt.)</em></li> <li>25 apr 2004 23:38 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Bladluis_kerstroos.jpg|Bladluis_kerstroos.jpg]]" <em>(zelfgemaakte foto; kolonie bladluizen op kerstroos (volwassen en jonge bladluizen)</em></li> <li>25 apr 2004 22:24 [[Gebruiker:Gidonb|Gidonb]] heeft ge-upload: "[[:Afbeelding:Lambang_sahara_barat.png|Lambang_sahara_barat.png]]" <em>(Wapen van Westelijke Sahara - overgenomen van en:Wikipedia)</em></li> <li>25 apr 2004 21:15 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:UtrechtLocatie.png|UtrechtLocatie.png]]" <em>(Slordig opgeslagen. Bestandsgrootte gevierendeeld.)</em></li> <li>25 apr 2004 21:09 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:FlevolandLocatie.png|FlevolandLocatie.png]]" <em>(Slordig opgeslagen. Bestandsgrootte gevierendeeld.)</em></li> <li>25 apr 2004 21:08 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:FlevolandLocatie.png|FlevolandLocatie.png]]" <em>(Slordig opgeslagen. Bestandsgrootte gevierendeeld.)</em></li> <li>25 apr 2004 21:02 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:NoordBrabantLocatie.png|NoordBrabantLocatie.png]]" <em>(Slordig opgeslagen. Bestandsgrootte gevierendeeld.)</em></li> <li>25 apr 2004 20:15 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Pentium.jpg|Pentium.jpg]]" <em>(Foto Pentium CPU-World)</em></li> <li>25 apr 2004 19:12 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Coca-Cola.jpg|Coca-Cola.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Coca-Cola-Dosen &#61;= Quelle == PixelQuelle.de &#91;http&#58;//www.pixelquelle.de/download.php?image_id=196] &#61;= Fotograf == Markus Hein &#61;= Lizenz == Alle PixelQuelle.de Fotos dürfen ohne weitere Kosten für kommerzielle und nicht kommerzielle Projekte/Werke genutzt werden. Ausgeschlossen hiervon sind Bilddatenbanken, Bildkataloge oder ähnliche, bei denen PixelQuelle.de Fotos zum Download oder Verkauf angeboten werden. Bei jeglicher Verwendung von PixelQuelle.de Fotos ist im Impressum PixelQuelle.de als Bildquelle anzugeben. Die pornographische, diffamierend, verleumderische oder anderweitig gesetzwidrige Verwendung der PixelQuelle.de Fotos ist nicht gestattet und wird gegebenenfalls strafrechtlich verfolgt. &#91;&#91;de:Bild:Coca-Cola.jpg]])</em></li> <li>25 apr 2004 19:12 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cokebottle.jpg|Cokebottle.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: http&#58;//www.cdf.org/cdf/atissue/vol2_2/cocacola/cocacola.html &#91;&#91;en:Image:Cokebottle.jpg]])</em></li> <li>25 apr 2004 19:01 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Kongo-Kinshasa_med_Katanga.png|Kongo-Kinshasa_med_Katanga.png]]" <em>(Van en: wiki Morwen (15949 bytes) (locator map showing a province of the &#91;&#91;Democratic)</em></li> <li>25 apr 2004 18:54 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Rockeye.jpg|Rockeye.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Marquardt CBU Mark 20 &quot;Rockeye II&quot; Cluster Bomb Quelle: http&#58;//www.hill.af.mil/museum/photos/coldwar/coldwar.htm public domain &#91;&#91;de:Bild:Rockeye.jpg]])</em></li> <li>25 apr 2004 18:47 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Faeroer-briefmarke-europa-2002.jpg|Faeroer-briefmarke-europa-2002.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: *Beschreibung: Europa-Marke 2002 der &#91;&#91;Färöer]] zum Thema &#91;&#91;Zirkus]] *Künstlerin: &#39;&#39;&#39;Anna Katrina Olsen&#39;&#39;&#39; (damals 13 Jahre alt) *Lizenz: &#91;&#91;Public Domain]] &#91;&#91;de:Bild:Faeroer-briefmarke-europa-2002.jpg]])</em></li> <li>25 apr 2004 18:47 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Betonning.jpg|Betonning.jpg]]" <em>(Betonning langs de IJssel bij Wijhe, eigen foto, &#123;&#123;msg:PD}})</em></li> <li>25 apr 2004 18:34 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Pope-paul3.jpg|Pope-paul3.jpg]]" <em>(En: wikipedia)</em></li> <li>25 apr 2004 18:32 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Filmed_cleopatra_plays.JPG|Filmed_cleopatra_plays.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: videotape covers for shaw &amp; shakespeare plays about cleopatra &#91;&#91;en:Image:filmed cleopatra plays.JPG]])</em></li> <li>25 apr 2004 18:31 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Ac.cleopatra.jpg|Ac.cleopatra.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Cleopatra &#91;&#91;en:Image:ac.cleopatra.jpg]])</em></li> <li>25 apr 2004 18:27 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Flemish_harpsichord_Small.jpg|Flemish_harpsichord_Small.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Smaller version of User:Gerard&#39;s Flemish harpsichord image &#91;&#91;en:Image:Flemish harpsichord Small.jpg]])</em></li> <li>25 apr 2004 18:12 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:ClaraHughes-cycle.jpg|ClaraHughes-cycle.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Clara Huges image (cropped)from: http&#58;//www.nlc-bnc.ca/olympians/h15-114-e.html From the National Library and Archives of Canada : &quot;&#39;&#39;Images contributed to this database by the Canadian Olympic Committee (COC) may be reproduced for non-commercial purposes without asking permission from the COC or paying copyright royalty&#39;&#39;.&quot; &#123;&#123;msg:noncommercial}} &#91;&#91;en:Image: ClaraHughes-cycle.jpg]])</em></li> <li>25 apr 2004 18:11 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:ClaraHughes-skate.jpg|ClaraHughes-skate.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Image from: http&#58;//www.nlc-bnc.ca/olympians/h15-114-e.html From the National Library and Archives of Canada : &quot;&#39;&#39;Images contributed to this database by the Canadian Olympic Committee (COC) may be reproduced for non-commercial purposes without asking permission from the COC or paying copyright royalty&#39;&#39;.&quot; &#123;&#123;msg:noncommercial}} &#91;&#91;en:Image: ClaraHughes-skate.jpg]])</em></li> <li>25 apr 2004 18:10 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:ClaraHughes-skate.jpg|ClaraHughes-skate.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Image from: http&#58;//www.nlc-bnc.ca/olympians/h15-114-e.html From the National Library and Archives of Canada : &quot;&#39;&#39;Images contributed to this database by the Canadian Olympic Committee (COC) may be reproduced for non-commercial purposes without asking permission from the COC or paying copyright royalty&#39;&#39;.&quot; &#123;&#123;msg:noncommercial}} &#91;&#91;en:Image: ClaraHughes-skate.jpg]])</em></li> <li>25 apr 2004 18:08 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Citrus_fruits_thumbnail.jpg|Citrus_fruits_thumbnail.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Citrus fruits thumbnail from http&#58;//www.ars.usda.gov/is/graphics/photos/&lt;br&gt; &#91;&#91;:Image:Citrus fruits.jpg&#124;Larger citrus fruits]] Image Number K7226-29 More than 70 percent of all citrus fruits grown in the United States are varieties developed by the ARS citrus breeding program. In Florida, we&#39;ve come up with citrus varieties that are higher yielding with increased disease resistance, better color, and longer shelf life. A major success story is Ambersweet, a cold-hardy citrus that&#39;s been approved for use in orange juice products. Because it withstands Florida&#39;s occasional cold snaps that can ruin most citrus, Ambersweet is being widely planted in the Sunshine State. It took 20 years of patient breeding to develop it, but the payoff is huge. If there&#39;s usually a grapefruit in your shopping cart, you may already have met up with a favorite ARS-created variety. It&#39;s a red-fleshed, thin-skinned, seedless grapefruit that was developed and released in 1987. Since then, over 4 million Flame nursery trees have been propagated in Florida. No other grapefruit variety has ever been so widely accepted and planted. Orange sections can now be prepared by a patented ARS process that uses commercially available food-grade enzymes. The process also removes the bitter white portion of grapefruit peel, eliminating hand-peeling and allowing more precise portion control. And the prepeeled fruit is ideal for school lunch programs and restaurants. Keeping oranges fresh is another citrus-oriented task we&#39;ve taken on. Oranges that have been covered with our specially designed coating will stay fresh for up to 3 weeks at room temperature. In that time, fruit treated with the usual grocer&#39;s coatings will look shrunken and discolored. Photo by Scott Bauer. &#91;&#91;en:Image:Citrus fruits thumbnail.jpg]])</em></li> <li>25 apr 2004 18:04 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Lemon_8FruitAndFlower_wb.jpg|Lemon_8FruitAndFlower_wb.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#39;&#39;&#39;Lemon fruit and flower&#39;&#39;&#39; Taken by &#91;&#91;User:Elf&#124;Elf]] &#124; &#91;&#91;User talk:Elf&#124;Talk]] Apr 15, 2004, San Jose, California &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:Lemon 8FruitAndFlower wb.jpg]])</em></li> <li>25 apr 2004 18:03 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Lemon-fruit.jpg|Lemon-fruit.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: A complete lemon, and a half lemon showing the flesh. From &lt;code&gt;&#91;http&#58;//sxc.hu/browse.phtml?f=view&amp;id=32619 http&#58;//sxc.hu/browse.phtml?f=view&amp;id=32619]&lt;/code&gt;, 2003-07-02: &quot;There are no usage restrictions for this photo.&quot; &#91;&#91;en:Image:Lemon-fruit.jpg]])</em></li> <li>25 apr 2004 18:03 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Reticulum_constellation_map.png|Reticulum_constellation_map.png]]" <em>(Van en: wiki Bronger (13280 bytes) (Constellation map of Reticulum) )</em></li> <li>25 apr 2004 17:50 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:LordByron.jpg|LordByron.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: public domain-copy of painting &#91;&#91;en:Image:LordByron.jpg]])</em></li> <li>25 apr 2004 17:28 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Alchemy.jpg|Alchemy.jpg]]" <em>(Van jp: wiki, kan iemand het Japans lezen? Ikkenie)</em></li> <li>25 apr 2004 17:27 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Chemistry_view_01.jpg|Chemistry_view_01.jpg]]" <em>(Van jp: wiki, kan iemand het Japans lezen? Ikkenie)</em></li> <li>25 apr 2004 17:05 [[Gebruiker:Willemdd|Willemdd]] heeft ge-upload: "[[:Afbeelding:BloemenC.jpg|BloemenC.jpg]]" <em>(Eigen foto / bloemencorso)</em></li> <li>25 apr 2004 16:00 [[Gebruiker:Opa|Opa]] heeft ge-upload: "[[:Afbeelding:|Afbeelding:]]" <em>(kind dat zong: &quot;Mijn eigen opa, niemand zo aardig als hij.&quot;)</em></li> <li>25 apr 2004 15:54 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Babyleatherbackseaturtle.jpg|Babyleatherbackseaturtle.jpg]]" <em>(Van en: wiki Karen Johnson (22094 bytes) (Newly hatched baby leatherback &#91;&#91;sea turtle]],)</em></li> <li>25 apr 2004 14:45 [[Gebruiker:Willemdd|Willemdd]] heeft ge-upload: "[[:Afbeelding:Phspaak.jpg|Phspaak.jpg]]" <em>(Van Engelse wiki)</em></li> <li>25 apr 2004 13:43 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Maag2.png|Maag2.png]]" <em>(De maag; vertaling van een upload van Lennart Bolks (Estomago2.jpg))</em></li> <li>25 apr 2004 13:14 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Duerer-paulus.jpg|Duerer-paulus.jpg]]" <em>(Van de: wiki Irmgard (10621 Byte) (Apostel Paulus von D³rer) )</em></li> <li>25 apr 2004 13:05 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GewoneVogelmelk-plant2-kl.jpg|GewoneVogelmelk-plant2-kl.jpg]]" <em>(eigen foto, laan van eik en duinen den haag)</em></li> <li>25 apr 2004 13:04 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GewoneVogelmelk-plant-kl.jpg|GewoneVogelmelk-plant-kl.jpg]]" <em>(eigen foto, laan van eik en duinen den haag)</em></li> <li>25 apr 2004 13:04 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GewoneVogelmelk-overz-kl.jpg|GewoneVogelmelk-overz-kl.jpg]]" <em>(eigen foto, laan van eik en duinen den haag)</em></li> <li>25 apr 2004 13:03 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GewoneVogelmelk-bloem-kl.jpg|GewoneVogelmelk-bloem-kl.jpg]]" <em>(eigen foto, laan van eik en duinen den haag)</em></li> <li>25 apr 2004 12:50 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Ac.bengurion.jpg|Ac.bengurion.jpg]]" <em>(David Ben-Gurion in gesprek met Harry Truman; van Wikipedia.en; &#123;&#123;msg:GFDL}})</em></li> <li>25 apr 2004 12:49 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Dben-gurion.jpg|Dben-gurion.jpg]]" <em>(David Ben-Gurion; van Wikipedia.en &#123;&#123;msg:GFDL}})</em></li> <li>25 apr 2004 12:43 [[Gebruiker:Willemdd|Willemdd]] heeft ge-upload: "[[:Afbeelding:Guyves.jpg|Guyves.jpg]]" <em>(Van Engelse wiki)</em></li> <li>25 apr 2004 10:04 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:PopeInnocentX.jpg|PopeInnocentX.jpg]]" <em>(En: wikipedia)</em></li> <li>25 apr 2004 09:30 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Img0007.jpg|Img0007.jpg]]" <em>(Van en: wiki Charalampos? (45640 bytes) (One monastery from the 20 on Mount Athos) )</em></li> <li>25 apr 2004 09:22 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:MyanmarYangon.png|MyanmarYangon.png]]" <em>(Van en: wiki Morwen (20549 bytes) (&#123;&#123;msg:GFDL}}) )</em></li> <li>25 apr 2004 09:17 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Antlia_small.png|Antlia_small.png]]" <em>(Van en: wiki, (C) Bronger, maar Torsten Bronger heeft het zelf geupload daar, ik zal meer info toevoegen zo)</em></li> <li>25 apr 2004 09:12 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Riesenschildkröte_kl.jpg|Riesenschildkröte_kl.jpg]]" <em>(Van de: wiki Igelball (9852 Byte) (Riesenschildkr÷te (kleineres Bild)) )</em></li> <li>25 apr 2004 09:01 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Kompas2_s.jpg|Kompas2_s.jpg]]" <em>(Van pl: wiki Topory (16720 bajt&amp;#9500;&amp;#9474;w) )</em></li> <li>25 apr 2004 08:50 [[Gebruiker:Moose1960|Moose1960]] heeft ge-upload: "[[:Afbeelding:GraafWillemIV.jpg|GraafWillemIV.jpg]]"</li> <li>25 apr 2004 08:48 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Greatbustard54.jpg|Greatbustard54.jpg]]" <em>(En: wikipedia)</em></li> <li>25 apr 2004 08:33 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Davidhume.png|Davidhume.png]]" <em>((Hume van de Engelse wiki: &quot;David Hume&quot;))</em></li> <li>25 apr 2004 08:23 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:1O20.jpg|1O20.jpg]]" <em>(Van en: wiki . (Automated conversion) (34680 bytes) )</em></li> <li>25 apr 2004 06:33 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Jeker4.JPG|Jeker4.JPG]]" <em>(Eigen foto)</em></li> <li>25 apr 2004 06:30 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Jeker3.JPG|Jeker3.JPG]]" <em>(Eigen foto)</em></li> <li>25 apr 2004 06:29 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Jeker2.JPG|Jeker2.JPG]]" <em>(Eigen foto)</em></li> <li>25 apr 2004 06:29 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Jeker1.JPG|Jeker1.JPG]]" <em>(Eigen foto)</em></li> <li>25 apr 2004 00:07 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Leo_III.jpg|Leo_III.jpg]]" <em>(&#91;&#91;Paus Leo III&#124;Leo III]] legt de eed af. Fragment van een muurschildering van &#91;&#91;Rafael]].)</em></li> <li>24 apr 2004 23:18 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:MicronesiaLocatie.png|MicronesiaLocatie.png]]" <em>(Locatie van Micronesia (Location map for the Federated States of Micronesia) gemaakt door &#91;&#91;:en:User:Vardion]].)</em></li> <li>24 apr 2004 23:14 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Alexander_I.jpg|Alexander_I.jpg]]" <em>(Tweede poging)</em></li> <li>24 apr 2004 23:12 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Alexander_I.jpg|Alexander_I.jpg]]" <em>(&#91;&#91;Paus Alexander I]], wandschildering in de &#91;&#91;Sixtijnse kapel]].)</em></li> <li>24 apr 2004 23:04 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Evaristus.jpg|Evaristus.jpg]]" <em>(Paus Evaristus. Muurschildering uit de &#91;&#91;Sixtijnse kapel]].)</em></li> <li>24 apr 2004 23:00 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:GoldaMeir.jpg|GoldaMeir.jpg]]" <em>(Golda Meir; Bron: Wikipedia.en &#123;&#123;msg:GFDL}})</em></li> <li>24 apr 2004 22:54 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Clemens_I.jpg|Clemens_I.jpg]]" <em>(Paus Clemens I. Van een muurschilderij in het klooster Sveti Kliment, Ohrid, Macedoni%EB, 1295.)</em></li> <li>24 apr 2004 22:43 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Anacletus.jpg|Anacletus.jpg]]" <em>(Paus Anacletus I. Fragment van een wandschildering in de &#91;&#91;Sixtijnse kapel]] (diverse Italiaanse meesters uit de 15e eeuw).)</em></li> <li>24 apr 2004 22:30 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Petrus.jpg|Petrus.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Apostel Petrus von Dürer &#91;&#91;de:Bild:petrus.jpg]] &#123;&#123;msg:PD}})</em></li> <li>24 apr 2004 21:58 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Aarde_Saturnus.png|Aarde_Saturnus.png]]" <em>(Grootteverhouding Aarde en Saturnus; door Christiaan; geconverteerd tot PNG door mij &#123;&#123;msg:GFDL}})</em></li> <li>24 apr 2004 21:34 [[Gebruiker:Diddle 1988|Diddle 1988]] heeft ge-upload: "[[:Afbeelding:Rotation_of_DSC00012.JPG|Rotation_of_DSC00012.JPG]]" <em>(Jk en Marjolein)</em></li> <li>24 apr 2004 21:22 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:WildeHyacint-bloem-hr.jpg|WildeHyacint-bloem-hr.jpg]]" <em>(eigen foto, 24-0404 in scheveningse duinen, blauwe variant)</em></li> <li>24 apr 2004 21:20 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:WildeHyacint-bloem-kl.jpg|WildeHyacint-bloem-kl.jpg]]" <em>(eigen foto, 24-0404 in scheveningse duinen, blauwe variant)</em></li> <li>24 apr 2004 21:15 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:WildeHyacint-overz-hr.jpg|WildeHyacint-overz-hr.jpg]]" <em>(eigen foto, 24-0404 in scheveningse duinen, roze variant)</em></li> <li>24 apr 2004 21:13 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:WildeHyacint-overz-kl.jpg|WildeHyacint-overz-kl.jpg]]" <em>(eigen foto, 24-0404 in scheveningse duinen, roze variant)</em></li> <li>24 apr 2004 21:11 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Saturnus_ringenstelsel.jpg|Saturnus_ringenstelsel.jpg]]" <em>(Afbeelding PIA01531 uit NASA/JPL Planetary Photojournal)</em></li> <li>24 apr 2004 19:24 [[Gebruiker:Dick Bos|Dick Bos]] heeft ge-upload: "[[:Afbeelding:VriesBoomklever2.jpg|VriesBoomklever2.jpg]]" <em>(voorzijde omslag boekje Anne de Vries - De boomklever)</em></li> <li>24 apr 2004 16:48 [[Gebruiker:GuakBot|GuakBot]] heeft ge-upload: "[[:Afbeelding:Sofia_Magdalena,_Gustav_III_och_Adolf_Fredrik_Munck.jpg|Sofia_Magdalena,_Gustav_III_och_Adolf_Fredrik_Munck.jpg]]"</li> <li>24 apr 2004 16:47 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Julius_Caesar.jpg|Julius_Caesar.jpg]]" <em>(Julius Caesar in generaals-pose; Bron: website VRoma.org; geplaatst met toestemming van de auteur, onder voorwaarde van bronvermelding &#123;&#123;msg:PD}})</em></li> <li>24 apr 2004 16:24 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Verendael_bloemenstilleven.jpg|Verendael_bloemenstilleven.jpg]]" <em>(Verendael, Nicolaes van (Flemish, 1640-1691), Een tulp, anjer en andere bloemen in een vaas, vanaf CGFA http&#58;//cgfa.sunsite.dk/v/index.html#verendael, overname van een beperkt aantal afbeeldingen is toegestaan)</em></li> <li>24 apr 2004 16:10 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Tulpenvelden2.JPG|Tulpenvelden2.JPG]]" <em>(Eigen foto)</em></li> <li>24 apr 2004 16:10 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Julius_Caesar.jpg|Julius_Caesar.jpg]]" <em>(Van website VRoma.org; geplaatst met toestemming van de auteur &#123;&#123;msg:PD}})</em></li> <li>24 apr 2004 16:06 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:SouthAfricaBantustanCiskei.png|SouthAfricaBantustanCiskei.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:SouthAfricaBantustanCiskei.png]])</em></li> <li>24 apr 2004 16:03 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cirrus_clouds.jpg|Cirrus_clouds.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: By &lt;mdoege@compuserve.com&gt; on 2001-06-04 &#91;&#91;en:Image:Cirrus clouds.jpg]])</em></li> <li>24 apr 2004 15:59 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Vogelen.JPG|Vogelen.JPG]]" <em>(Eigen foto)</em></li> <li>24 apr 2004 15:54 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Sawspin.gif|Sawspin.gif]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: animated circular saw icon &#91;&#91;en:Image:Sawspin.gif]])</em></li> <li>24 apr 2004 15:50 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:CD_en_lezer.png|CD_en_lezer.png]]" <em>(Schematische afbeelding van het uitlezen van een CD; uit het octrooi Optisch uitleesbare informatieschijf, werkwijze voor de vervaardiging ervan alsmede een inrichting voor het uitvoeren van deze werkwijze.&quot; van Philips, nr NL7904113, uit 1981 &#123;&#123;msg:PD}})</em></li> <li>24 apr 2004 15:49 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Circinus_constellation_map.png|Circinus_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Circinus, the Pair of Compasses. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/11/10. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Circinus constellation map.png]])</em></li> <li>24 apr 2004 15:48 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Sierkers_closeup_gevuldbloemig.jpg|Sierkers_closeup_gevuldbloemig.jpg]]" <em>(zelfgemaakte foto van een japanse sierkers met gevulde bloemen)</em></li> <li>24 apr 2004 15:43 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Soli_byz_mosaic_01.jpg|Soli_byz_mosaic_01.jpg]]" <em>(Mozaiek te Soli, van Engelse wiki)</em></li> <li>24 apr 2004 15:38 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Perenboom_bloei.jpg|Perenboom_bloei.jpg]]" <em>(zelfgemaakte foto van een perenboom)</em></li> <li>24 apr 2004 15:33 [[Gebruiker:Henricus|Henricus]] heeft ge-upload: "[[:Afbeelding:North_rhine_w_kle.png|North_rhine_w_kle.png]]" <em>(Kaart van Kleef (uit en: wiki))</em></li> <li>24 apr 2004 15:32 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Schweiz_Flagge_be.png|Schweiz_Flagge_be.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Flagge des Kantons Zürich; selbsgezeichnet &#91;&#91;de:Bild:Schweiz Flagge be.png]])</em></li> <li>24 apr 2004 15:31 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Ch_wh_be.png|Ch_wh_be.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Map showing the location of the canton of Berne; drawn myself. &#91;&#91;en:Image:Ch wh be.png]])</em></li> <li>24 apr 2004 15:24 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Peer_bloem.jpg|Peer_bloem.jpg]]" <em>(zelfgemaakte foto van een perebloem)</em></li> <li>24 apr 2004 15:11 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Hosta_witblad.jpg|Hosta_witblad.jpg]]" <em>(zelfgemaakte foto van een zelfgekweekte Hosta met bijna witblad)</em></li> <li>24 apr 2004 14:20 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Magen_David_in_Double_lines_black.jpg|Magen_David_in_Double_lines_black.jpg]]" <em>(Van en: wiki IZAK (3967 bytes) (Magen David black double lines) )</em></li> <li>24 apr 2004 14:19 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Abraham_and_Isaac_small.jpg|Abraham_and_Isaac_small.jpg]]" <em>(This image has been released into the public domain by the author, or its copyright has expired. This applies worldwide. See Copyright. Oil painting, Marc Chagall, 1960-1965, Sacrifice of Isaac (small), from http&#58;//www.hum.huji.ac.il/cja/Index_pres/Chagall.htm Van en: wiki)</em></li> <li>24 apr 2004 14:06 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Shelley.jpg|Shelley.jpg]]" <em>(van engelse pagina)</em></li> <li>24 apr 2004 14:05 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Fur-elise-preview.png|Fur-elise-preview.png]]" <em>(Van de: wiki Head (6309 Byte) (Notation des Anfangs von Beethovens F³r)</em></li> <li>24 apr 2004 14:01 [[Gebruiker:AdaM|AdaM]] heeft ge-upload: "[[:Afbeelding:Geul_4.JPG|Geul_4.JPG]]" <em>(Eigen foto)</em></li> <li>24 apr 2004 14:01 [[Gebruiker:AdaM|AdaM]] heeft ge-upload: "[[:Afbeelding:Geul_3.JPG|Geul_3.JPG]]" <em>(Eigen foto)</em></li> <li>24 apr 2004 13:56 [[Gebruiker:AdaM|AdaM]] heeft ge-upload: "[[:Afbeelding:Geul_1_.JPG|Geul_1_.JPG]]" <em>(Eigen foto)</em></li> <li>24 apr 2004 13:56 [[Gebruiker:AdaM|AdaM]] heeft ge-upload: "[[:Afbeelding:Geul_2.JPG|Geul_2.JPG]]" <em>(Eigen foto)</em></li> <li>24 apr 2004 13:46 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Pallaswarbler.jpg|Pallaswarbler.jpg]]" <em>(Van en: wiki Pallas&#39;s warbler from the usual 1905 german source Jimfbleak (20269 bytes) (pallas&#39;s warbler) )</em></li> <li>24 apr 2004 13:40 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Podmnozica.png|Podmnozica.png]]" <em>(Van sl: wiki, met fig gemaakt, Romanm (1702 bitov) (X je podmno&amp;#9532;&amp;#165;ica Y) )</em></li> <li>24 apr 2004 13:36 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Masked-Lapwing-331.jpg|Masked-Lapwing-331.jpg]]" <em>(Van en: wiki Tannin (28132 bytes) (My own picture) )</em></li> <li>24 apr 2004 13:05 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Lepus_constellation_map.png|Lepus_constellation_map.png]]" <em>(Van en: wiki This is a celestial map of the constellation Lepus, the Hare. )</em></li> <li>24 apr 2004 12:59 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Bieszczady.jpg|Bieszczady.jpg]]" <em>(Van en: wiki 11:49, 20 Jul 2002 . . (Automated conversion) (18046 bytes) )</em></li> <li>24 apr 2004 12:53 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Sack_of_jerusalem.JPG|Sack_of_jerusalem.JPG]]" <em>(Van en: wiki Isis (58272 bytes) (sack of jerusalem on inside wall ot arch of titus in rome,)</em></li> <li>24 apr 2004 12:30 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Keats.JPG|Keats.JPG]]" <em>(van engelse pagina)</em></li> <li>24 apr 2004 12:08 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Californiangullimm.jpg|Californiangullimm.jpg]]" <em>(Van en: wiki Californian Gull public domain USFWS Jimfbleak (42785 bytes) (Californian Gull) )</em></li> <li>24 apr 2004 11:42 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Jamaciajudge.jpg|Jamaciajudge.jpg]]" <em>(Van en: wiki J.J. (20816 bytes) (A Jamaican wig-wearing judge, used with permission) )</em></li> <li>24 apr 2004 11:35 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Paralaksa_ani.gif|Paralaksa_ani.gif]]" <em>(Van pl: wiki, zeer mooie animated plaatje! Pixel (16334 bajt&amp;#9500;&amp;#9474;w) (animka paralaksy (szczegolnie astronomia)) )</em></li> <li>24 apr 2004 11:22 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:FlorDeLis.png|FlorDeLis.png]]" <em>(Van es: wiki melo (2385 bytes) (flor de lis :: sÝmbolo de los scouts) symbool van padvinders)</em></li> <li>24 apr 2004 11:13 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Rusty_fence.jpg|Rusty_fence.jpg]]" <em>(van en: wiki Dori (22913 bytes) (&#91;&#91;rust]]y, &#91;&#91;barbed wire]] &#91;&#91;fence]] &#123;&#123;msg:GFDL}}) )</em></li> <li>24 apr 2004 11:06 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:CarnisseGrienden002.jpg|CarnisseGrienden002.jpg]]" <em>(vegetatie: eigen foto)</em></li> <li>24 apr 2004 10:45 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Wale.jpg|Wale.jpg]]" <em>(van de: wiki US National Marine Fishery Service, National Ocean and Atmospheric Administration &#91;1] )</em></li> <li>24 apr 2004 10:34 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Oostfriesland.jpg|Kaart_Oostfriesland.jpg]]" <em>(Kopie de: Wikipedia)</em></li> <li>24 apr 2004 10:33 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Aum.png|Aum.png]]" <em>(Van sv: wiki, E23 (4093 bytes) (Aum-tecknet i sanskrit) )</em></li> <li>24 apr 2004 10:22 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Wapen_Oostfriesland.png|Wapen_Oostfriesland.png]]" <em>(Kopie de: Wikipedia)</em></li> <li>24 apr 2004 10:06 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:ICQ_Logo.gif|ICQ_Logo.gif]]" <em>(van en: wiki YaronSh? (1270 bytes) (The ICQ Logo) )</em></li> <li>24 apr 2004 10:06 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:IndonesieNoord-Molukken.png|IndonesieNoord-Molukken.png]]" <em>(Slordig aangemaakt bestand factor 5 in bestandsgrootte omlaag gebracht.)</em></li> <li>24 apr 2004 10:05 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Tabla.jpg|Tabla.jpg]]" <em>(uit de Engelse Wikipedia)</em></li> <li>24 apr 2004 10:02 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:AKW-LeibstadtCH.jpg|AKW-LeibstadtCH.jpg]]" <em>(van en: wiki Alphadynamico? (20084 bytes) (Nuclear power plant) )</em></li> <li>24 apr 2004 09:59 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Wolin.png|Wolin.png]]" <em>(Van pl: wiki Kpjas (6994 bajt&amp;#9500;&amp;#9474;w) (Wolin) )</em></li> <li>24 apr 2004 09:59 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Defirmian.jpg|Defirmian.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>24 apr 2004 09:53 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Aa_med.jpg|Aa_med.jpg]]" <em>(Van en: wiki Small photo of aa lava taken from USGS website http&#58;//volcanoes.usgs.gov/Products/Pglossary/aa.html Bryan Derksen (26172 bytes) )</em></li> <li>24 apr 2004 09:48 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:CarnisseGrienden001.jpg|CarnisseGrienden001.jpg]]" <em>(eigen foto bij vloed)</em></li> <li>24 apr 2004 09:40 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:IndonesieNoord-Molukken.png|IndonesieNoord-Molukken.png]]" <em>(Kaart van provincie Noord-Molukken in Indonesië (van en.wikipedia))</em></li> <li>24 apr 2004 09:30 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Flyingbot.jpg|Flyingbot.jpg]]" <em>(Ill. voor Flyingbot, zelf gemaakt)</em></li> <li>24 apr 2004 09:29 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:HostilianSest01.jpg|HostilianSest01.jpg]]" <em>(Portret van Hostilianus op een sestertie. Bron: wcnconline)</em></li> <li>24 apr 2004 09:26 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Midi.png|Midi.png]]" <em>(van pl: wiki Jonasz (11333 bajt&amp;#9500;&amp;#9474;w) )</em></li> <li>24 apr 2004 09:13 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Latin_alphabet_Gg.png|Latin_alphabet_Gg.png]]" <em>(Van en: wiki Nate Silva (2936 bytes) (Latin alphabet Gg in Helvetica 55 and Times LT)</em></li> <li>24 apr 2004 09:00 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Bus.png|Bus.png]]" <em>(databus van ja: wiki, oeps, ik kan de ja: tekens niet lezen %-()</em></li> <li>24 apr 2004 08:48 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:ASTP_Soyuz_Spacecraft.jpg|ASTP_Soyuz_Spacecraft.jpg]]" <em>(beschrijving volgt zo)</em></li> <li>24 apr 2004 08:39 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Piciformes.jpg|Piciformes.jpg]]" <em>(Van pl: wiki . Radomil (57337 bajt&amp;#9500;&amp;#9474;w) (z enWiki) )</em></li> <li>24 apr 2004 08:23 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Speelman.jpg|Speelman.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>24 apr 2004 08:02 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Thoth.jpg|Thoth.jpg]]" <em>(beschrijving volgt zo)</em></li> <li>24 apr 2004 07:55 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:MSX-SonyHB-F1XDJ_2.jpg|MSX-SonyHB-F1XDJ_2.jpg]]" <em>(van es: wiki Bitvision (38568 bytes) (Ejemplo Hardware MSX2+) )</em></li> <li>24 apr 2004 07:49 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Gnostic_cross.png|Gnostic_cross.png]]" <em>(beschrijving volgt zo)</em></li> <li>24 apr 2004 07:45 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Stomach_diagram.gif|Stomach_diagram.gif]]" <em>(Nederlandse vertaling)</em></li> <li>24 apr 2004 07:40 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Stomach_diagram.gif|Stomach_diagram.gif]]" <em>(beschr. volgt zo)</em></li> <li>24 apr 2004 07:38 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Estomago2.jpg|Estomago2.jpg]]" <em>(beschrijving volgt zo)</em></li> <li>24 apr 2004 07:35 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Serveurs.jpg|Serveurs.jpg]]" <em>(beschrijving volgt zo)</em></li> <li>24 apr 2004 07:30 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Dogville-small.jpg|Dogville-small.jpg]]" <em>(beschrijving volgt zo)</em></li> <li>24 apr 2004 07:23 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Strait.png|Strait.png]]" <em>(Nederlandse versie van gemaakt)</em></li> <li>24 apr 2004 07:18 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Strait.png|Strait.png]]" <em>(beschrijving volgt zo)</em></li> <li>24 apr 2004 07:02 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Galahad9701.jpg|Galahad9701.jpg]]" <em>(beschrijving volgt zo)</em></li> <li>24 apr 2004 06:31 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Groene_specht.jpg|Groene_specht.jpg]]" <em>(beschrijving volgt zo)</em></li> <li>24 apr 2004 06:23 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Moliere.jpg|Moliere.jpg]]" <em>(beschrijving volgt zo)</em></li> <li>24 apr 2004 06:01 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Bosanemoon.jpg|Bosanemoon.jpg]]" <em>(Bosanemoon, eigen foto, genomen in het Metbroekbos bij &#91;&#91;Smeerling]] waar hij in het wild voorkomt terwijl hij 20 kilomter noordelijker bij de Ennemaborg een stinzenplant is. &#123;&#123;Msg:GFDL}})</em></li> <li>24 apr 2004 05:40 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Wijgaardslak.JPG|Wijgaardslak.JPG]]" <em>(Eigen foto)</em></li> <li>24 apr 2004 05:28 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Markt.JPG|Markt.JPG]]" <em>(Eigen foto)</em></li> <li>24 apr 2004 05:21 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Hujintao.jpg|Hujintao.jpg]]" <em>(En: wikipedia)</em></li> <li>24 apr 2004 05:12 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Karte_cloppenburg_in_deutschland.png|Karte_cloppenburg_in_deutschland.png]]" <em>(beschrijving volgt zo)</em></li> <li>24 apr 2004 04:50 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:GVB_ram.JPG|GVB_ram.JPG]]" <em>(Eigen foto)</em></li> <li>24 apr 2004 04:47 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:GVB_Voedster_met_jong.JPG|GVB_Voedster_met_jong.JPG]]" <em>(Eigen foto)</em></li> <li>24 apr 2004 00:56 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Chromatografie_tank.png|Chromatografie_tank.png]]" <em>(TLC tank (schematisch) door Theresa Knott; vertaald van Wikipedia.en door mij &#123;&#123;msg:GFDL}})</em></li> <li>24 apr 2004 00:41 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Borst_(mentor18).jpg|Borst_(mentor18).jpg]]" <em>(Bron: fda.gov; door MBecker op wikipedia.en gezet; vertaald door mij &#123;&#123;msg:PD}})</em></li> <li>24 apr 2004 00:22 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Borst_(mentor10).png|Borst_(mentor10).png]]" <em>(Bron: fda.gov; door MBecker op wikipedia.en gezet; vertaald door mij &#123;&#123;msg:PD}})</em></li> <li>24 apr 2004 00:05 [[Gebruiker:GuakBot|GuakBot]] heeft ge-upload: "[[:Afbeelding:Michaeljacksonm.jpg|Michaeljacksonm.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: I believe this is to be in the public domain. It is from Santa Barbara County Sheriff&#39;s office. &#91;&#91;en:Image:Michaeljacksonm.jpg]])</em></li> <li>24 apr 2004 00:01 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Centraal-europa.png|Centraal-europa.png]]" <em>(Origineel door Brion VIBBER; aangepast door Sinuhe voor Wikipedia.en; vertaald in het Nederlands door mij &#123;&#123;msg:GFDL}})</em></li> <li>23 apr 2004 23:40 [[Gebruiker:GuakBot|GuakBot]] heeft ge-upload: "[[:Afbeelding:Smiley-2.png|Smiley-2.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#91;&#91;User:Robbrown]] replaced the original version of this image with something different without specifying the new image&#39;s source. &#123;&#123;msg:unverified}} &#91;&#91;en:Image:Smiley.png]])</em></li> <li>23 apr 2004 23:30 [[Gebruiker:GuakBot|GuakBot]] heeft ge-upload: "[[:Afbeelding:TV_turnoff_logo.gif|TV_turnoff_logo.gif]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Nl: wikipedia &#91;&#91;nl:afbeelding::TV turnoff logo.gif]] &#91;&#91;en:Image:TV turnoff logo.gif]])</em></li> <li>23 apr 2004 23:28 [[Gebruiker:GuakBot|GuakBot]] heeft ge-upload: "[[:Afbeelding:Wikimedia-logo.png|Wikimedia-logo.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &lt;center&gt;&#39;&#39;Logo of the Wikimedia foundation, designed by Wikipedia user &quot;Neolux&quot;&#39;&#39;&lt;/center&gt; &#91;&#91;en:Image:Wikimedia.png]])</em></li> <li>23 apr 2004 23:10 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Coleridge.gif|Coleridge.gif]]" <em>(van engelse pagina)</em></li> <li>23 apr 2004 22:45 [[Gebruiker:GuakBot|GuakBot]] heeft ge-upload: "[[:Afbeelding:Sub_marcos.jpg|Sub_marcos.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-eo. De beschrijving daar was: Subcomandante Marcos &#91;&#91;eo:Dosiero:sub marcos.jpg]])</em></li> <li>23 apr 2004 22:43 [[Gebruiker:Moose1960|Moose1960]] heeft ge-upload: "[[:Afbeelding:Veersegat.jpg|Veersegat.jpg]]"</li> <li>23 apr 2004 22:41 [[Gebruiker:GuakBot|GuakBot]] heeft ge-upload: "[[:Afbeelding:Vicente_Fox.jpg|Vicente_Fox.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-es. De beschrijving daar was: Fotografía a colores de Vicente Fox Quesada, Presidente de México (2000-2006), recortada de la fotografía original de Henry Bonilla en la Cámara de Representantes de los EE.UU. (dominio público): &#91;http&#58;//www.house.gov/bonilla/photogallery/gallerypages/1004fox.jpg] &#91;&#91;en:Image:Mexico.FoxSahagun.01.jpg]] &#91;&#91;es:Imagen:Vicente Fox.jpg]])</em></li> <li>23 apr 2004 22:38 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Pope_Pius_VII.jpg|Pope_Pius_VII.jpg]]" <em>(En: wikipedia)</em></li> <li>23 apr 2004 22:05 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Europese_Unie.jpg|Europese_Unie.jpg]]" <em>(Vertaling Duitse kaart http&#58;//wp.mphase.net/karte/eu.svg in jpeg formaat)</em></li> <li>23 apr 2004 21:50 [[Gebruiker:Henricus|Henricus]] heeft ge-upload: "[[:Afbeelding:Lower_saxony_clp.png|Lower_saxony_clp.png]]" <em>(Kaart van Cloppenburg (uit en: wiki - &#91;http&#58;//en.wikipedia.org/wiki/Wikipedia:WikiProject_German_districts/Maptemplates bron]))</em></li> <li>23 apr 2004 20:45 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Tartu_suurvapp.png|Tartu_suurvapp.png]]" <em>(beschrijving volgt zo)</em></li> <li>23 apr 2004 20:43 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Tartu_suurlipp.png|Tartu_suurlipp.png]]" <em>(beschrijving volgt zo cd -)</em></li> <li>23 apr 2004 20:06 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Jan_Hus.jpg|Jan_Hus.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Scanned from German &quot;Meyer&#39;s Encyclopedia&quot;, 1906 &#91;&#91;en:Image:Jan Hus.jpg]] &#123;&#123;msg:PD}})</em></li> <li>23 apr 2004 20:00 [[Gebruiker:GuakBot|GuakBot]] heeft ge-upload: "[[:Afbeelding:Helmut_Kohl.jpg|Helmut_Kohl.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Helmut Kohl Quelle: http&#58;//usinfo.state.gov/topical/econ/group8/summit98/profiles/kohl.htm &#39;&#39;Links to Department sites are welcomed. Unless a copyright is indicated, information on the Department of State Web Site is in the public domain and may be copied and distributed without permission. Citation of the U.S. State Department as source of the information is appreciated.&#39;&#39; &#39;&#39;If a copyright is indicated on a photo, graphic, or other material, permission to copy these materials must be obtained from the original source. Please note that the U.S. Government has an international copyright on Country Commercial Guides.&#39;&#39; &#91;&#91;de:Bild:Helmut Kohl.jpg]])</em></li> <li>23 apr 2004 19:50 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Blad_zwarte_populier.jpg|Blad_zwarte_populier.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-eo. De beschrijving daar was: folio de Populus nigra italica La bildo eligxas el tiu TTT-ejo, kies estro &quot;Pierre-Yves&quot; donis konsenton pri kopio: http&#58;//les.arbres.free.fr/fiche-peuplier.php &#91;&#91;eo:Dosiero:Tn peupliernf JPG.jpg]])</em></li> <li>23 apr 2004 19:45 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Alterna.jpg|Alterna.jpg]]" <em>(van es: wiki daar geupload door user PACO, omschrijving Forma de onda de una corriente alterna senoidal)</em></li> <li>23 apr 2004 19:20 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Ismail_Enver.jpg|Ismail_Enver.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;msg:PD}} from http&#58;//www.lib.utexas.edu/photodraw/portraits/index.html &#91;&#91;en:Image:Ismail Enver.jpg]])</em></li> <li>23 apr 2004 18:54 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:NK-pyongyang.png|NK-pyongyang.png]]"</li> <li>23 apr 2004 18:44 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:SchizophreniaPEG1935.png|SchizophreniaPEG1935.png]]" <em>(Image from en: wiki uploaded by user Vaughan descr: Pneumoencephalogram from Moore et al (1935) Encephalographic studies in mental disease - American Journal of Psychiatry))</em></li> <li>23 apr 2004 18:35 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:SchizophreniaPEG1935.png|SchizophreniaPEG1935.png]]" <em>(Image from en: wiki uploaded by user Vaughan descr: Pneumoencephalogram from Moore et al (1935) Encephalographic studies in mental disease - American Journal of Psychiatry))</em></li> <li>23 apr 2004 17:12 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:VincaMinor-plant-kl.jpg|VincaMinor-plant-kl.jpg]]" <em>(eigen foto, zoetermeer, 22 april 2004)</em></li> <li>23 apr 2004 17:10 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:VincaMinor-plant-hr.jpg|VincaMinor-plant-hr.jpg]]" <em>(eigen foto, zoetermeer, 22 april 2004)</em></li> <li>23 apr 2004 17:08 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:VincaMinor-overz-kl.jpg|VincaMinor-overz-kl.jpg]]" <em>(eigen foto, zoetermeer, 22 april 2004)</em></li> <li>23 apr 2004 17:06 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:VincaMinor-overz-hr.jpg|VincaMinor-overz-hr.jpg]]" <em>(eigen foto, zoetermeer, 22 april 2004)</em></li> <li>23 apr 2004 17:05 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:VincaMinor-CloseUp-hr.jpg|VincaMinor-CloseUp-hr.jpg]]" <em>(eigen foto, zoetermeer, 22 april 2004)</em></li> <li>23 apr 2004 17:03 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:VincaMinor-CloseUp-kl.jpg|VincaMinor-CloseUp-kl.jpg]]" <em>(eigen foto, zoetermeer, 22 april 2004)</em></li> <li>23 apr 2004 14:09 [[Gebruiker:Vijverln|Vijverln]] heeft ge-upload: "[[:Afbeelding:Hellevoetsluis_Haaven.jpg|Hellevoetsluis_Haaven.jpg]]" <em>(H&#39;sluis Haaven, eigen foto)</em></li> <li>23 apr 2004 13:51 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Wordsworth.jpg|Wordsworth.jpg]]" <em>(van engelse pagina. PD image from http&#58;//www.sru.edu/depts/cisba/compsci/dailey/217students/sgm8660/Final/ )</em></li> <li>23 apr 2004 13:21 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:TetricusIIanton(CNG).jpg|TetricusIIanton(CNG).jpg]]" <em>(Portret van Tetricus II. Foto Classical Numismatic Group, Inc. (CNG))</em></li> <li>23 apr 2004 13:03 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:TetricusIanton(CNG).jpg|TetricusIanton(CNG).jpg]]" <em>(Portret van Tetricus I. Foto Classical Numismatic Group, Inc. (CNG))</em></li> <li>23 apr 2004 12:49 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Bareev.jpg|Bareev.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>23 apr 2004 12:32 [[Gebruiker:Robk|Robk]] heeft ge-upload: "[[:Afbeelding:Wapen_ElSalvador.PNG|Wapen_ElSalvador.PNG]]" <em>(Van Engelse Wikipedia)</em></li> <li>23 apr 2004 12:30 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:VictorinusAntoninianus(CNG).jpg|VictorinusAntoninianus(CNG).jpg]]" <em>(Portret van Gallo-Romeinse keizer Victorinus op een antoninianus uit 269/270. Foto: Classical Numismatic Group, Inc. (CNG))</em></li> <li>23 apr 2004 12:29 [[Gebruiker:Robk|Robk]] heeft ge-upload: "[[:Afbeelding:Wapen_Honduras.PNG|Wapen_Honduras.PNG]]" <em>(Van Italiaanse Wikipedia)</em></li> <li>23 apr 2004 12:02 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Vroegeling.jpg|Vroegeling.jpg]]" <em>(Vroegeling, eigen foto en gefotografeerd in april 2004 aan de kerklaan in &#91;&#91;Onstwedde]] &#123;&#123;msg:GFDL}})</em></li> <li>23 apr 2004 11:59 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Vroegeling.jpg|Vroegeling.jpg]]" <em>(Vroegeling, eigen foto en gefotografeerd in april 2004 aan de kerklaan in &#91;&#91;Onstwedde]] &#123;&#123;msg:GFDL}})</em></li> <li>23 apr 2004 11:57 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:MariusAntoninianus(CNG).jpg|MariusAntoninianus(CNG).jpg]]" <em>(Portret van Gallo-Romeinse keizer Marius op een antoninianus uit 269. Foto: Classical Numismatic Group, Inc. (CNG))</em></li> <li>23 apr 2004 11:43 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Gepionjk.jpg|Gepionjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>23 apr 2004 11:18 [[Gebruiker:SanderSpek|SanderSpek]] heeft ge-upload: "[[:Afbeelding:GebruikerSanderSpek.jpg|GebruikerSanderSpek.jpg]]" <em>(Er ging iets mis met de kleuren. Nu hopelijk wel goed.)</em></li> <li>23 apr 2004 11:12 [[Gebruiker:SanderSpek|SanderSpek]] heeft ge-upload: "[[:Afbeelding:GebruikerSanderSpek.jpg|GebruikerSanderSpek.jpg]]" <em>(Gebruiker:SanderSpek, gemaakt door een fotograaf (die vast geen auteursrechten op zijn pasfoto&#39;s wil claimen), en tot Guevara-lookalike bewerkt door Gebruiker:SanderSpek.)</em></li> <li>23 apr 2004 11:00 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Postumus-2sest.jpg|Postumus-2sest.jpg]]" <em>(Portret van keizer &#91;&#91;Postumus]]. Met toestemming van Classical Numismatic Group, Inc. (CNG))</em></li> <li>23 apr 2004 10:53 [[Gebruiker:Snoop|Snoop]] heeft ge-upload: "[[:Afbeelding:Snoop_art.jpg|Snoop_art.jpg]]" <em>(eigen werk snoop)</em></li> <li>23 apr 2004 10:01 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:BenjaminJo.jpg|BenjaminJo.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>23 apr 2004 09:26 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Dolmatov.jpg|Dolmatov.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>23 apr 2004 09:18 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:ClaudiusII(CNG).jpg|ClaudiusII(CNG).jpg]]" <em>(Zilveren munt uit 268/9 met het portret van keizer Claudius II &#39;Gothicus&#39;. Met toestemming van Classical Numismatic Group, Inc. (CNG))</em></li> <li>23 apr 2004 09:09 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(Test Jazeker... Test!)</em></li> <li>23 apr 2004 08:22 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Chiburdanidze.jpg|Chiburdanidze.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>23 apr 2004 08:19 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Belgicaromana.gif|Belgicaromana.gif]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;msg:unverified}} Belgica, Belgium, België, Belgae, Belgians &#91;&#91;en:Image:belgicaromana.gif]])</em></li> <li>23 apr 2004 07:58 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(Dit is een test.)</em></li> <li>23 apr 2004 07:55 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(test ok)</em></li> <li>23 apr 2004 07:55 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(test)</em></li> <li>23 apr 2004 07:36 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:CiceroBust.jpg|CiceroBust.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Scanned from a book dated &#91;&#91;1900]]. Original caption: &quot;MARCUS TULLIUS CICERO. Photogravure from the marble bust in the Prado Gallery at Madrid. This is the most pleasing of all extant likenesses of the great Roman orator. It represents Cicero when he was about sixty years of age and at the zenith of his career.&quot; Presumably the bust is now in Madrid&#39;s Museum of Archeology, where most or all of the &#91;&#91;Museo del Prado]]&#39;s collection of works from Classical Antiquity were moved. &#123;&#123;msg:PD}} &#91;&#91;en:Image:CiceroBust.jpg]])</em></li> <li>23 apr 2004 07:27 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Human_karyogram.png|Human_karyogram.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: From Nupedia (caption copied from Chromosome article): &#39;&#39;&lt;b&gt;Figure 3 :&lt;/b&gt; Karyogram of a human female.&lt;br&gt; (copyright 1995 Department of Pathology, University of Washington, Cytogenetics Gallery. Reproduced with permission.)&#39;&#39; &#91;&#91;en:Image:human karyogram.png]])</em></li> <li>23 apr 2004 07:23 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Chromatin_chromosome.png|Chromatin_chromosome.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: From Nupedia &#91;&#91;en:Image:chromatin chromosome.png]])</em></li> <li>23 apr 2004 07:21 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Chromosome.png|Chromosome.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: From Nupedia &#91;&#91;en:Image:chromosome.png]])</em></li> <li>23 apr 2004 07:12 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:GreeceKavala.png|GreeceKavala.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:GreeceKavala.png]])</em></li> <li>23 apr 2004 07:09 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Freestate_christiania_flag.png|Freestate_christiania_flag.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: &#91;&#91;Flagge]] der &#91;&#91;Freistadt Christiania]]. * Zeichnung: Harvester &#91;http&#58;//en.wikipedia.org/wiki/Main_Page Englische Wikipedia] * Lizenz: &#91;&#91;GNU FDL]] &#91;&#91;de:Bild:Freestate christiania flag.png]])</em></li> <li>23 apr 2004 07:04 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Medalje_Kristian_I.jpg|Medalje_Kristian_I.jpg]]" <em>(Vanaf Zweedse wikipedia)</em></li> <li>23 apr 2004 07:04 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Centjk.jpg|Centjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>23 apr 2004 07:02 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Basisjk.jpg|Basisjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>23 apr 2004 07:00 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Medalje_Kristian_I.jpg|Medalje_Kristian_I.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-sv. De beschrijving daar was: Från Nordisk familjebok &#91;&#91;sv:Bild:Medalj över Kristian I, slagen under hans resa i Italien.jpg]])</em></li> <li>23 apr 2004 06:57 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Chris_Patten.jpg|Chris_Patten.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: State Department photo by Michael Gross. (Source: http&#58;//www.state.gov/r/pa/ei/pix/events/secretary/30033.htm) &#123;&#123;msg:PD}} &#91;&#91;en:Image:Chris Patten.jpg]])</em></li> <li>23 apr 2004 06:53 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cholesterol.png|Cholesterol.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Cholesterol structural diagram Created by Maxim Iorsh with xymtex \documentclass{letter} \usepackage{epic,carom} \pagestyle{empty} \begin{document} \steroidchain&#91;e]{3==HO;&#123;&#123;10}}==\lmoiety{H$_{3}$C};&#123;&#123;13}}==\lmoiety{H$_{3}$C};&#123;&#123;20}}==H$_3$C} \end{document} &#91;&#91;en:Image:Cholesterol.png]])</em></li> <li>23 apr 2004 06:37 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Chlorophyll_spectra.png|Chlorophyll_spectra.png]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:chlorophyll spectra.png]])</em></li> <li>23 apr 2004 06:32 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:CFCs.jpg|CFCs.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: CFC molecules - PD image from science.nasa.gov &#91;&#91;en:Image:CFCs.jpg]])</em></li> <li>23 apr 2004 05:57 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Wappen_Plowdiw.png|Wappen_Plowdiw.png]]" <em>(Afbeelding van de: wiki, meer detail volgt binnenkort)</em></li> <li>23 apr 2004 05:56 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Plowdiw_in_BG.png|Plowdiw_in_BG.png]]" <em>(Plovdiv ill. van de: wiki, meer detail volgt binnenkort)</em></li> <li>23 apr 2004 05:11 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Louis-ix.jpg|Louis-ix.jpg]]" <em>(Afbeelding van en: wiki, meer detail volgt zo)</em></li> <li>23 apr 2004 03:50 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Den_lille_havfrue_statue.jpg|Den_lille_havfrue_statue.jpg]]" <em>(De kleine zeemeermin, van en: wiki, daar geupload door C64lives)</em></li> <li>22 apr 2004 22:49 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:GWC-from-space-VE.JPG|GWC-from-space-VE.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;msg:PD}} NSA radar image of Great Wall of China, image form http&#58;//www.visibleearth.nasa.gov/cgi-bin/viewrecord?1508 NASA places this image at about 700 km west of &#91;&#91;Beijing]], at roughly 37.7 deg N, 107.5 deg East. &#91;&#91;en:Image:GWC-from-space-VE.JPG]])</em></li> <li>22 apr 2004 22:47 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:GR_Amorgos_IMG0032_asb_1987.jpg|GR_Amorgos_IMG0032_asb_1987.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: * Motiv: Steilküste von Amorgos * Fotograf: Agon S. Buchholz (&#91;&#91;Benutzer:Asb&#124;asb]]) * Aufnahmedatum: 1987 * Kamera: Minolta 9000 (von Kodak Photo CD) &#91;&#91;de:Bild:GR Amorgos IMG0032 asb 1987.jpg]])</em></li> <li>22 apr 2004 22:46 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Greatwall.jpg|Greatwall.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#39;&#39;The Great Wall of China&#39;&#39; Picture: US National Oceanic &amp; Atmospheric Adminstration (NOAA) Original at: &#91;http&#58;//www.photolib.noaa.gov/mvey/mvey0502.htm] &#91;&#91;en:Image:Greatwall.jpg]])</em></li> <li>22 apr 2004 22:44 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(test)</em></li> <li>22 apr 2004 22:42 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:MattiParkkonen_chimpanze1.jpg|MattiParkkonen_chimpanze1.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: Chimpanzé d&#39;après photo issue de http&#58;//www.777life.com/photos/index.html libre de droits &#91;&#91;fr:Image:MattiParkkonen chimpanze1.jpg]])</em></li> <li>22 apr 2004 22:41 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Chimpanzee.jpg|Chimpanzee.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Chimpanzee (&#39;&#39;Pan troglodytes&#39;&#39;) from the &#91;http&#58;//www.lbl.gov/Science-Articles/Archive/LSD-fittest-molecules-Fay.html Lawrence Berkeley National Laboratory]. &#123;&#123;msg:noncommercial}} &#91;&#91;en:Image:chimpanzee.jpg]])</em></li> <li>22 apr 2004 22:41 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Katakana_origine.png|Katakana_origine.png]]" <em>(Van fr: wikipedia, geupload door Aoineko, Vous avez la permission de copier, distribuer et/ou modifier ce document selon les termes de la Licence de documentation libre GNU, version 1.2 ou plus récente publiée par la Free Software Foundation; sans sections inaltérables, sans texte de première page de couverture et sans texte de dernière page de couverture. )</em></li> <li>22 apr 2004 22:34 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:CHIHUAHUA_DOG.JPG|CHIHUAHUA_DOG.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: I, &#91;&#91;David depaoli]], own this image and hereby license it to the public under the GFDL &#91;&#91;en:Image:CHIHUAHUA DOG.JPG]])</em></li> <li>22 apr 2004 22:26 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Tchernobyl.jpg|Tchernobyl.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: &#61;= Description == Photo de la centrale nucléaire de Tchernobyl après l&#39;accident &#61;= Source == * http&#58;//www.ac-nancy-metz.fr/IA57/CourcellesSurNied/journal_062002_tchernobyl.html * http&#58;//www.ac-nancy-metz.fr/IA57/CourcellesSurNied/images/tcherno_grand.jpg &#61;= Licence == Image sous copyright (de Sygma ?) &#91;&#91;Fair use]] pour illustrer l&#39;article sur &#91;&#91;Tchernobyl]] &#91;&#91;fr:Image:Tchernobyl.jpg]])</em></li> <li>22 apr 2004 22:23 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Musee_madras.jpg|Musee_madras.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: Musée de Madras source : &#91;&#91;Utilisateur:Nataraja&#124;Nataraja]] statut : sous licence GFDL dans ce format &#91;&#91;fr:Image:musee madras.jpg]])</em></li> <li>22 apr 2004 22:15 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Rembrandt_Civilis.jpg|Rembrandt_Civilis.jpg]]" <em>(&#91;&#91;Rembrandt]]: &#39;&#39;De Samenzwering van Julius Civilis&#39;&#39;, 1661)</em></li> <li>22 apr 2004 22:13 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Sid_Vicious.jpg|Sid_Vicious.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#91;&#91;Sid Vicious]] mugshot (NYC), obtained from &#91;http&#58;//www.thesmokinggun.com/mugshots/viciousmug1.html The Smoking Gun]. I believe it&#39;s a document in public record of a newsworthy figure, and that this use of it qualifies as Fair Use. &#91;&#91;en:Image:Fm sidmug.jpg]])</em></li> <li>22 apr 2004 22:09 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Plinyelder.jpg|Plinyelder.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#91;&#91;Pliny the Elder]] from &#91;http&#58;//www.nlm.nih.gov/hmd/breath/Faces_asthma/VIIA29.html] &#91;&#91;en:Image:plinyelder.jpg]])</em></li> <li>22 apr 2004 22:07 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Decamerone.jpg|Decamerone.jpg]]" <em>(van en: wiki, daar geupload door Magnus Manske)</em></li> <li>22 apr 2004 21:42 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Formula_one_car.jpg|Formula_one_car.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: A modern Formula One car, by Rick Dikeman &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:formula one car.jpg]])</em></li> <li>22 apr 2004 21:41 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Baikalzo.jpg|Baikalzo.jpg]]" <em>(test)</em></li> <li>22 apr 2004 21:39 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Medusa1.jpg|Medusa1.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Arnold Böcklin circa 1878 &#91;&#91;en:Image:Medusa1.jpg]])</em></li> <li>22 apr 2004 21:01 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:CalthaPalustris-CloseUp-hr.jpg|CalthaPalustris-CloseUp-hr.jpg]]" <em>(eigen foto, 20 april industriegebied goudse poort, gouda)</em></li> <li>22 apr 2004 20:53 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:CalthaPalustris-overz-hr.jpg|CalthaPalustris-overz-hr.jpg]]" <em>(eigen foto, 20 april industriegebied goudse poort, gouda)</em></li> <li>22 apr 2004 20:50 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:CalthaPalustris-bloem-hr.jpg|CalthaPalustris-bloem-hr.jpg]]" <em>(eigen foto, 20 april industriegebied goudse poort, gouda)</em></li> <li>22 apr 2004 20:46 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:CalthaPalustris-blad-hr.jpg|CalthaPalustris-blad-hr.jpg]]" <em>(eigen foto, 20 april industriegebied goudse poort, gouda)</em></li> <li>22 apr 2004 20:44 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:CalthaPalustris-overz-kl.jpg|CalthaPalustris-overz-kl.jpg]]" <em>(eigen foto, 20 april industriegebied goudse poort, gouda)</em></li> <li>22 apr 2004 20:44 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:CalthaPalustris-CloseUp-kl.jpg|CalthaPalustris-CloseUp-kl.jpg]]" <em>(eigen foto, 20 april industriegebied goudse poort, gouda)</em></li> <li>22 apr 2004 20:43 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:CalthaPalustris-bloem-kl.jpg|CalthaPalustris-bloem-kl.jpg]]" <em>(eigen foto, 20 april industriegebied goudse poort, gouda)</em></li> <li>22 apr 2004 20:43 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:CalthaPalustris-blad-kl.jpg|CalthaPalustris-blad-kl.jpg]]" <em>(eigen foto, 20 april industriegebied goudse poort, gouda)</em></li> <li>22 apr 2004 20:17 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:ApollinaireArmy.jpg|ApollinaireArmy.jpg]]" <em>(Publiek domein (foto is gemaakt voor 1918, het sterfjaar van Apollinaire))</em></li> <li>22 apr 2004 20:14 [[Gebruiker:Nijman|Nijman]] heeft ge-upload: "[[:Afbeelding:Blackmadonna_van_Czestochowa.jpg|Blackmadonna_van_Czestochowa.jpg]]" <em>(overgenomen van http&#58;//en.wikipedia.org/wiki/Image:Blackmadonna.jpeg)</em></li> <li>22 apr 2004 20:04 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Lasvegas.strip.arp.750pix.jpg|Lasvegas.strip.arp.750pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: The Las Vegas strip in 2003.&lt;br&gt; &#39;&#39;&#39;SOURCE:&#39;&#39;&#39; http&#58;//pdphoto.org/PictureDetail.php?mat=pdef&amp;pg=5231 &lt;br&gt; &#39;&#39;&#39;COPYRIGHT:&#39;&#39;&#39; &#39;&#39;&quot;This image is public domain. You may use this image for any purpose, including commercial.&quot;&#39;&#39;&lt;br&gt; &#39;&#39;&#39;PICTURE PREPARED&#39;&#39;&#39; by Adrian Pingstone in December 2003. &#91;&#91;en:Image:lasvegas.strip.arp.750pix.jpg]])</em></li> <li>22 apr 2004 20:02 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeraniumMolle-overz-hr.jpg|GeraniumMolle-overz-hr.jpg]]" <em>(Gouda, 21 april 2004, berm groningenweg, eigen foto)</em></li> <li>22 apr 2004 19:58 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Oostzee.jpg|Oostzee.jpg]]" <em>(Foutjes verbeterd)</em></li> <li>22 apr 2004 19:57 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeraniumMolle-CloseUp-hr.jpg|GeraniumMolle-CloseUp-hr.jpg]]" <em>(Gouda, 21 april 2004, berm groningenweg, eigen foto)</em></li> <li>22 apr 2004 19:56 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Marseille.arp.750pix.jpg|Marseille.arp.750pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Marseille.&lt;br&gt; Photographed by Adrian Pingstone.&lt;br&gt; Prepared for Wikipedia by Adrian Pingstone in January 2004, and released to the public domain. &#91;&#91;en:Image:marseille.arp.750pix.jpg]])</em></li> <li>22 apr 2004 19:56 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeraniumMolle-blad-hr.jpg|GeraniumMolle-blad-hr.jpg]]" <em>(Gouda, 21 april 2004, berm groningenweg, eigen foto)</em></li> <li>22 apr 2004 19:53 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeraniumMolle-overz-kl.jpg|GeraniumMolle-overz-kl.jpg]]" <em>(Gouda, 21 april 2004, berm groningenweg)</em></li> <li>22 apr 2004 19:53 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeraniumMolle-CloseUp-kl.jpg|GeraniumMolle-CloseUp-kl.jpg]]" <em>(Gouda, 21 april 2004, berm groningenweg)</em></li> <li>22 apr 2004 19:52 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeraniumMolle-blad-kl.jpg|GeraniumMolle-blad-kl.jpg]]" <em>(Gouda, 21 april 2004, berm groningenweg)</em></li> <li>22 apr 2004 19:41 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Chen-shui-bian.jpg|Chen-shui-bian.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Chen Shui-bian (&amp;#38515;&amp;#27700;&amp;#25153;) &#123;&#123;msg:unverified}} &#91;&#91;en:Image:Chen-shui-bian.jpg]])</em></li> <li>22 apr 2004 19:31 [[Gebruiker:Roepersbot|Roepersbot]] heeft ge-upload: "[[:Afbeelding:Eemslandwapen.png|Eemslandwapen.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Emsland Wappen &#91;&#91;de:Bild:Emslandwappen.png]] Wapen van Kreis Eemsland van de:wikipedia)</em></li> <li>22 apr 2004 19:25 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Berlin-Checkpoint_Charlie-Richtung_Osten.jpg|Berlin-Checkpoint_Charlie-Richtung_Osten.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Checkpoint Charlie - Richtung Osten *&#39;&#39;&#39;Beschreibung:&#39;&#39;&#39; **Checkpoint Charlie - Blickrichtung Osten *&#39;&#39;&#39;Quelle:&#39;&#39;&#39; **Fotografiert am &#91;&#91;22. März]] &#91;&#91;2004]] *&#39;&#39;&#39;Fotograf:&#39;&#39;&#39; **&#91;&#91;Benutzer:Raymond&#124;Raymond]] - Raimond Spekking *&#39;&#39;&#39;Copyright Status:&#39;&#39;&#39; **&#91;&#91;GNU Freie Dokumentationslizenz]] &#91;&#91;de:Bild:Berlin-Checkpoint Charlie-Richtung Osten.jpg]])</em></li> <li>22 apr 2004 19:14 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Che_guevara_icoon.jpg|Che_guevara_icoon.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Che icon This is a photo portrait taken by the &#91;&#91;Cuba]]n photographer &#91;&#91;Alberto Korda]] and printed with strong contrast. Cuba didn&#39;t sign the &#91;&#91;Berne convention]] thus the copyright status is unclear. --- wji says: Actually, Korda successfully claimed copyright over the image three years ago to prevent it being used in a Vodka ad. The guy was a lifelong communist, though, and only wanted to cut down on blatant commercialization of the image, telling reporters: ` As a supporter of the ideals for which Che Guevara died, I am not averse to its reproduction by those who wish to propagate his memory and the cause of social justice throughout the world. ` So it&#39;s used with permission. See http&#58;//edition.cnn.com/2000/WORLD/europe/09/16/cheguevaraphoto.ap/. ---- The uncropped version can be see here : &#91;&#91;Image:Che.jpg]] &#91;&#91;en:Image:Cheicon.jpg]])</em></li> <li>22 apr 2004 18:52 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Charlestaylor.jpg|Charlestaylor.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Charles Taylor, image from government Tv &#91;&#91;en:Image:charlestaylor.jpg]])</em></li> <li>22 apr 2004 18:49 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Graf_charles_taze_russel.jpg|Graf_charles_taze_russel.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;msg:unverified}} &#91;&#91;en:Image:pyr 1.jpg]])</em></li> <li>22 apr 2004 18:46 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Charles_de_Secondat,_Baron_de_Montesquieu.jpg|Charles_de_Secondat,_Baron_de_Montesquieu.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: In the &#91;&#91;public domain]] by age &#91;&#91;en:Image:Charles de Secondat, Baron de Montesquieu.jpg]])</em></li> <li>22 apr 2004 18:42 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Darwin_ape.png|Darwin_ape.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: From Nupedia &#91;&#91;en:Image:Darwin ape.png]])</em></li> <li>22 apr 2004 18:31 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:POH.jpg|POH.jpg]]" <em>(met url werkt het nog niet, nu maar weer een poging met locale file)</em></li> <li>22 apr 2004 18:28 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Chandrika.jpg|Chandrika.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Chandrika Kumaratunga, president of Sri Lanka Source: http&#58;//www.presidentsl.org/data/new/photos/10_may02.jpg &#123;&#123;msg:fairuse}} &#91;&#91;en:Image:Chandrika.jpg]])</em></li> <li>22 apr 2004 18:27 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Chandrika_Bandaranaike_Kumaratunga.jpg|Chandrika_Bandaranaike_Kumaratunga.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Chandrika Bandaranaike Kumaratunga (mit Jacques Chirac, Bildausschnitt) &#61;= Quelle == http&#58;//www.france.diplomatie.fr/photos/diplo/paysest/kossovo02.html#photo Französisches Außenministerium, Abteilung Fotografien ministère des Affaires étrangères/Service photographique &#61;= Lizenz == &#39;&#39;Les &quot;Instantanés diplomatiques&quot; sont libres de droits et peuvent être reproduits avec mention obligatoire &quot;ministère des Affaires étrangères/Service photographique&quot;. Pour tout usage exclusivement professionnel, des duplicatas sont disponibles sur demande auprès du service photographique du ministère des Affaires étrangères.&#39;&#39; (&#39;&#39;Die &quot;Schnappschüsse diplomatischer Begegnungen&quot; sind copyrightfrei, sie dürfen mit dem Vermerk &quot;Französisches Außenministerium, Abteilung Fotografien&quot; reproduziert werden. Für rein kommerzielle Verwendungszwecke sind auf Anfrage bei der Abteilung Fotografien im französischen Außenministerium Kopien erhältlich.&#39;&#39;) &#61;= Originalbeschreibung == &#39;&#39;Entretien de M. Jacques Chirac, président de la République, avec Mme Chandrika Bandaranaike-Kumaratunga, présidente de la République démocratique socialiste du Sri Lanka (Elysée). 28 mars 2001.&#39;&#39; &#91;&#91;de:Bild:Chandrika Bandaranaike Kumaratunga.jpg]])</em></li> <li>22 apr 2004 18:21 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:ChampignonMushroom.jpg|ChampignonMushroom.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: White mushroom - i believe. Bought in the supermarket yesterday, photo taken by me -- &#91;&#91;User:Chris 73&#124;chris_73]] 12:23, 12 Apr 2004 (UTC) &#123;&#123;msg:PD}} &#91;&#91;en:Image:ChampignonMushroom.jpg]])</em></li> <li>22 apr 2004 18:19 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Champagnegrot.jpg|Champagnegrot.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-pl. De beschrijving daar was: Piwnice producenta szampana w Reims (zdj&amp;#281;cie w&amp;#322;asne) &#91;&#91;pl:Grafika:szampan.jpg]])</em></li> <li>22 apr 2004 18:17 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Veuve_clicquot_bottle_sizes.jpg|Veuve_clicquot_bottle_sizes.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#91;&#91;Veuve Clicquot]] bottle size display. Taken on vacation in June 2003 at VC&#39;s cellars in Reims. Photo by Walter Nissen (&#91;&#91;User:Wnissen&#124;Wnissen]]) Placed in public domain by photographer See also &#91;&#91;:Image:Veuve clicquot bottle sizes thumb.jpg]] &#91;&#91;en:Image:Veuve clicquot bottle sizes.jpg]])</em></li> <li>22 apr 2004 18:16 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Champagne.jpeg|Champagne.jpeg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: A glass of champagne (public domain from &#91;http&#58;//pdphoto.org/PictureDetail.php?mat=pdef&amp;pg=7836]) &#91;&#91;en:Image:Champagne.jpeg]])</em></li> <li>22 apr 2004 18:16 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:POH.jpg|POH.jpg]]" <em>(viermaal is geen scheepsrecht :()</em></li> <li>22 apr 2004 18:12 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:POH.jpg|POH.jpg]]" <em>(nog een poging, de aanhouder wint)</em></li> <li>22 apr 2004 18:11 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Champa_kunst.jpg|Champa_kunst.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Beispiel für die Kunst der Champa &#61;=Source== http&#58;//www.sxc.hu/ &#61;=statut== You may use any of the photos in our system free of charge for any commercial or personal design work if you obey the specified restrictions concerning each photo you download. &#91;&#91;de:Bild:Art cham.jpg]])</em></li> <li>22 apr 2004 18:10 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Champa.jpg|Champa.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Lage des ehemailgen Königreich Champa Aus der französischen Wikipedia: carte de l&#39;emplacement du royaume de Champâ image DM CIA retravaillée source : &#91;&#91;fr:Utilisateur:Nataraja&#124;Nataraja]] &#91;&#91;de:Bild:Champa.jpg]])</em></li> <li>22 apr 2004 18:07 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Chamaeleon_constellation_map.png|Chamaeleon_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Chamaeleon. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/11/10. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Chamaeleon constellation map.png]])</em></li> <li>22 apr 2004 18:06 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:POH.jpg|POH.jpg]]" <em>(Port of Houston van en: wiki, daar geupload door Chayves4u)</em></li> <li>22 apr 2004 18:03 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:POH.jpg|POH.jpg]]"</li> <li>22 apr 2004 17:58 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Demosthenes.jpg|Demosthenes.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: 1881 Young Peoples&#39; Cyclopedia of Persons and Places &#91;&#91;en:Image:Demosthenes.jpg]])</em></li> <li>22 apr 2004 17:30 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Zucker.jpg|Zucker.jpg]]" <em>(tweede poging, nu met local file)</em></li> <li>22 apr 2004 17:17 [[Gebruiker:Flyingbot|Flyingbot]] heeft ge-upload: "[[:Afbeelding:Zucker.jpg|Zucker.jpg]]" <em>(afbeelding suiker van en: wikipedia, daar geupload door Sanders muc)</em></li> <li>22 apr 2004 16:55 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Betelgeuze.jpg|Betelgeuze.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: picture of Betelguese &#91;&#91;en:Image:star.jpg]] Betelgeuze, publiek-domein foto van &#91;&#91;NASA]], genomen met de &#91;&#91;Hubble ruimtetelescoop]]. Overgenomen van de Engelse Wikipedia. &#91;&#91;en:Image:star.jpg]])</em></li> <li>22 apr 2004 16:41 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Veronicahederifolia.jpg|Veronicahederifolia.jpg]]" <em>(Akkerklimopereprijs, eigen foto, genomen in Onstwedde aan de Kerklaan april 2004 &#123;&#123;msg:GFDL}})</em></li> <li>22 apr 2004 16:17 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:DiocletianusFollis.jpg|DiocletianusFollis.jpg]]" <em>(Romeinse bronzen munt met portret van keizer &#91;&#91;Diocletianus]]. Met toestemming van Classic Numismatic Group, Inc. (CNG))</em></li> <li>22 apr 2004 15:57 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Oostzee.jpg|Oostzee.jpg]]" <em>(Vertaling Duitse afbeelding. Hoge kwaliteit truecolour jpeg.)</em></li> <li>22 apr 2004 15:41 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Hhoudini.jpg|Hhoudini.jpg]]" <em>(Harry Houdini, van Engelse Wikipedia. Daar geen beschrijving. Vermoedelijk, maar niet zeker, publiek domein vanwege Amerikaans van voor 1923.)</em></li> <li>22 apr 2004 15:23 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Herbert_Hoover.jpg|Herbert_Hoover.jpg]]" <em>(Naar mijn mening mooiere afbeelding.)</em></li> <li>22 apr 2004 15:16 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Hookevlo.jpg|Hookevlo.jpg]]" <em>(dan moet ik het zelf maar doen...)</em></li> <li>22 apr 2004 15:05 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Hookevlo.jpg|Hookevlo.jpg]]" <em>(&#91;&#91;Vlo]]. Afbeelding uit &#91;&#91;Robert Hooke]]&#39;s &#39;&#39;Micrographia&#39;&#39;, 1664. &#123;&#123;msg:PD}})</em></li> <li>22 apr 2004 15:00 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Hook_micro.jpg|Hook_micro.jpg]]" <em>(&#91;&#91;Microscoop]] van &#91;&#91;Robert Hooke]]. Afbeelding uit Hooke&#39;s &#39;&#39;Micrographia&#39;&#39;, Londen, 1664. &#123;&#123;msg:PD}})</em></li> <li>22 apr 2004 14:41 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:NumerianusAntoninianus.jpg|NumerianusAntoninianus.jpg]]" <em>(Antoninianus geslagen in 283/4 in Lugdunum met het portret van keizer Numerianus. Met toestemming Classical Numismatic Group, Inc. (CNG))</em></li> <li>22 apr 2004 14:36 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:CarinusAureus.jpg|CarinusAureus.jpg]]" <em>(Gouden Romeinse munt met het portret van keizer &#91;&#91;Carinus]]. Met toestemming van Classical Numismatic Group, Inc. (CNG))</em></li> <li>22 apr 2004 14:29 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Zweden.png|Kaart_Zweden.png]]" <em>(Nederlandse vertaling CIA kaart)</em></li> <li>22 apr 2004 13:32 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Ruiten_Aa.jpg|Ruiten_Aa.jpg]]" <em>(helderder versie, wederom eigen foto e eigen bewerking natuurlijk)</em></li> <li>22 apr 2004 13:15 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Florianus-Antoninianus(3.6g)-Lugdunum-276(CNG).jpg|Florianus-Antoninianus(3.6g)-Lugdunum-276(CNG).jpg]]" <em>(Antoninianus geslagen in 276 in Lugdunum met het portret van keizer Florianus. Met toestemming Classical Numismatic Group, Inc. (CNG) )</em></li> <li>22 apr 2004 13:11 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Florianus-Antoninianus(3.6g)-Lugdunum-276-(CNG).jpg|Florianus-Antoninianus(3.6g)-Lugdunum-276-(CNG).jpg]]" <em>(Antoninianus geslagen in 276 in Lugdunum met het portret van keizer Florianus. Met toestemming Classical Numismatic Group, Inc. (CNG))</em></li> <li>22 apr 2004 13:06 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Pioncent.jpg|Pioncent.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 13:03 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Ruiten_Aa.jpg|Ruiten_Aa.jpg]]" <em>(Ruiten Aa gefotgrafeerd bij het Eemboerveld en het Metbroekbos bij Smeerling, eigen foto &#123;&#123;msg:GFDL}})</em></li> <li>22 apr 2004 13:03 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Pionjk.jpg|Pionjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 12:59 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Basiscenjk.jpg|Basiscenjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 12:51 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:TacitusAntoninianus(3.9g)-Ticinum-275-276-(CNG).jpg|TacitusAntoninianus(3.9g)-Ticinum-275-276-(CNG).jpg]]" <em>(Antoninianus geslagen rond 275 in Ticinum met het portret van keizer Tacitus. Met toestemming Classical Numismatic Group, Inc. (CNG))</em></li> <li>22 apr 2004 12:45 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Paasvuur.jpg|Paasvuur.jpg]]" <em>(Paasvuur te Onstwedde op 2e paasdag 2004, eigen foto, &#123;&#123;msg:GFDL}})</em></li> <li>22 apr 2004 12:05 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:HolbergRoed.jpg|HolbergRoed.jpg]]" <em>(&#91;&#91;Ludvig Holberg]], schilder van &#91;&#91;J&amp;oslash;rgen Roed]] (1808-1888) uit 1847. Kopie van een schildreij van &#91;&#91;Johan Roselius]] (1725-1803) uit 1752. &#123;&#123;msg:PD}})</em></li> <li>22 apr 2004 12:03 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Quintillus-270-Antoninianus-2,51g-(CNG).jpg|Quintillus-270-Antoninianus-2,51g-(CNG).jpg]]" <em>(Portret van keizer &#91;&#91;Quintillus]] op een antoninianus. Foto met toestemming van Classical Numismatic Group, Inc. (CNG).)</em></li> <li>22 apr 2004 11:51 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Dubbjk.jpg|Dubbjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 11:19 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Elvest.jpg|Elvest.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>22 apr 2004 11:13 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Heinrich_rudolf_hertz.jpg|Heinrich_rudolf_hertz.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: Heinrich Rudolf Hertz *licence : domaine public *source : http&#58;//www.sciences.univ-nantes.fr/physique/enseignement/tp/hist/hertz.html &#91;&#91;fr:Image:heinrich rudolf hertz.jpg]])</em></li> <li>22 apr 2004 10:56 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Tempelberg-Herodes.jpg|Tempelberg-Herodes.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Tempelberg zu Zeiten Herodes - Rekonstruktion; aus: Paul Volz, Die biblischen Altertümer. 1914. Seite 51, Tafel 8 &#91;&#91;de:Bild:Tempelberg zu Zeiten Herodes - Rekonstruktion.JPG]])</em></li> <li>22 apr 2004 10:53 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Jhenry.jpg|Jhenry.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: 19th century photograph. public domain. &#123;&#123;msg:PD}} &#91;&#91;en:Image:Jhenry.jpg]])</em></li> <li>22 apr 2004 09:54 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Psakhis.jpg|Psakhis.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>22 apr 2004 09:12 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Carojk.jpg|Carojk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 09:09 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Ponzijk.jpg|Ponzijk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 09:05 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Schaljk.jpg|Schaljk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 08:51 [[Gebruiker:Maikie|Maikie]] heeft ge-upload: "[[:Afbeelding:BandUlysses.jpg|BandUlysses.jpg]]" <em>(Eclectic Productions)</em></li> <li>22 apr 2004 08:41 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Hanjk.jpg|Hanjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 08:39 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Portrait_frederic_mistral.jpg|Portrait_frederic_mistral.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: Portrait de Frédéric Mistral. Domaine public &#91;&#91;fr:Image:portrait frederic mistral.jpg]])</em></li> <li>22 apr 2004 08:37 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Cunjk.jpg|Cunjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 08:34 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Keidjk.jpg|Keidjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 08:33 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Herzl_large.jpg|Herzl_large.jpg]]" <em>(Give a description for the image: Vanaf de Engelse wikipedia &#91;&#91;en:Image:Herzl large.jpg]])</em></li> <li>22 apr 2004 08:31 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Adamjk.jpg|Adamjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 08:28 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Olijk.jpg|Olijk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 08:26 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Zappa.jpg|Zappa.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Publicity photo, fair use assumed &#91;&#91;en:Image:zappa.jpg]])</em></li> <li>22 apr 2004 08:26 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kostjk.jpg|Kostjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 08:25 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Zappa1.jpg|Zappa1.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: publicity photo, fair use assumed &#91;&#91;en:Image:zappa1.jpg]])</em></li> <li>22 apr 2004 08:23 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Schotsjk.jpg|Schotsjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 08:21 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Snake's_head_fritillaria.jpg|Snake's_head_fritillaria.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Snake&#39;s head fritillaria (&#39;&#39;Fritillaria meleagris&#39;&#39;); cropped image from &#91;http&#58;//www.claquin.com/200103/index.html claquin.com]. &#123;&#123;msg:PD}} &#91;&#91;en:Image:snake&#39;s head fritillaria.jpg]])</em></li> <li>22 apr 2004 08:19 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Goringjk.jpg|Goringjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 08:16 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Belgjk.jpg|Belgjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 08:16 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Aerial_jordan.jpg|Aerial_jordan.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Jordan River viewed from space. Permission to use granted by NASA according to NASA Image guidelines: http&#58;//www.nasa.gov/audience/formedia/features/MP_Photo_Guidelines.html &#91;&#91;en:Image:Aerial jordan.jpg]])</em></li> <li>22 apr 2004 08:13 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Rosenjk.jpg|Rosenjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 08:09 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Ccaa-ceuta.png|Ccaa-ceuta.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Locator map of Ceuta &#91;&#91;en:Image:ccaa-ceuta.png]])</em></li> <li>22 apr 2004 08:04 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cetus_constellation_map_small.png|Cetus_constellation_map_small.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Constellation map of Cetus, small version &#91;&#91;en:Image:Cetus constellation map small.png]])</em></li> <li>22 apr 2004 07:58 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Ceres_planetoide.jpg|Ceres_planetoide.jpg]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Image:1 ceres.jpg]])</em></li> <li>22 apr 2004 07:53 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Human_Brain_NIH.jpg|Human_Brain_NIH.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: NIH image of human brain &#91;&#91;en:Image:Human Brain NIH.jpg]])</em></li> <li>22 apr 2004 07:53 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cat_brain_NASA.jpg|Cat_brain_NASA.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: NASA image of cat brain &#91;&#91;en:Image:cat brain NASA.jpg]])</em></li> <li>22 apr 2004 07:52 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Mouse_brain.jpg|Mouse_brain.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: NIH image of mouse brain &#91;&#91;en:Image:Mouse brain.jpg]])</em></li> <li>22 apr 2004 07:43 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Pfeifjk.jpg|Pfeifjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 07:41 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Paris.pompidou.500pix.jpg|Paris.pompidou.500pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: The Pompidou Centre, Paris, France.&lt;br&gt; Photographed by Adrian Pingstone in July 2001 and released to the public domain. &#91;&#91;en:Image:paris.pompidou.500pix.jpg]])</em></li> <li>22 apr 2004 07:41 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Paris.pompidou.200pix.jpg|Paris.pompidou.200pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: aus der englischen Wikipedia: &#39;&#39;The Pompidou Centre, Paris, France.&#39;&#39; &#39;&#39;Photographed by Adrian Pingstone in July 2001 and released to the public domain.&#39;&#39; &#91;&#91;de:Bild:paris.pompidou.200pix.jpg]])</em></li> <li>22 apr 2004 07:40 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Noajk.jpg|Noajk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 07:37 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Italjk.jpg|Italjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 07:36 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Commodus-AnniusVerus_tarsos_161-165_AE17_CNG.jpg|Commodus-AnniusVerus_tarsos_161-165_AE17_CNG.jpg]]" <em>(De broers &#91;&#91;Commodus]] en &#91;&#91;Annius Verus]] op een bronzen munt uit Tarsos, &#91;&#91;Cilicië]] uit &#91;&#91;161]]-&#91;&#91;165]]. Foto: Classical Numismatic Group, Inc. (CNG))</em></li> <li>22 apr 2004 07:34 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Albinjk.jpg|Albinjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 07:30 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Middenjk.jpg|Middenjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 07:27 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Spaanjk.jpg|Spaanjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 07:24 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Schliejk.jpg|Schliejk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 07:22 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Celkern.png|Celkern.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-es. De beschrijving daar was: Desde Wki Inglés &#91;&#91;es:Imagen:Nucleo.png]])</em></li> <li>22 apr 2004 07:21 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Davenjk.jpg|Davenjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 07:17 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Krogjk.jpg|Krogjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 07:15 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Holtjk.jpg|Holtjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 07:11 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Krausjk.jpg|Krausjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 07:07 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Wiljk.jpg|Wiljk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 07:05 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Landjk.jpg|Landjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 07:03 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Keenjk.jpg|Keenjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 07:00 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Tarjk.jpg|Tarjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 06:57 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Romanjk.jpg|Romanjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>22 apr 2004 04:29 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GlanzendeOoievaarsbek-overz-hr.jpg|GlanzendeOoievaarsbek-overz-hr.jpg]]" <em>(gouda, eigen foto, 22 april 2004)</em></li> <li>22 apr 2004 04:26 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GlanzendeOoievaarsbek-overz-kl.jpg|GlanzendeOoievaarsbek-overz-kl.jpg]]" <em>(gouda, eigen foto, 21 april 2004)</em></li> <li>22 apr 2004 04:23 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GlanzendeOoievaarsbek-overz-kl.jpg|GlanzendeOoievaarsbek-overz-kl.jpg]]" <em>(gouda, eigen foto, 22 april 2004)</em></li> <li>22 apr 2004 04:21 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GlanzendeOoievaarsbek-CloseUp-kl.jpg|GlanzendeOoievaarsbek-CloseUp-kl.jpg]]" <em>(gouda, eigen foto, 22 april 2004)</em></li> <li>22 apr 2004 04:21 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GlanzendeOoievaarsbek-CloseUp-hr.jpg|GlanzendeOoievaarsbek-CloseUp-hr.jpg]]" <em>(gouda, eigen foto, 22 april 2004)</em></li> <li>22 apr 2004 04:19 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GlanzendeOoievaarsbek-blad-kl.jpg|GlanzendeOoievaarsbek-blad-kl.jpg]]" <em>(gouda, eigen foto, 22 april 2004)</em></li> <li>22 apr 2004 04:18 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GlanzendeOoievaarsbek-blad-hr.jpg|GlanzendeOoievaarsbek-blad-hr.jpg]]" <em>(gouda, eigen foto, 22 april 2004)</em></li> <li>22 apr 2004 00:26 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Hemmingway.jpg|Hemmingway.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Picture of Ernest Hemingway from LOC (http&#58;//www.loc.gov/loc/lcib/9911/heming.html ) &#91;&#91;en:Image:Hemmingway.jpg]] &#123;&#123;msg:PD}})</em></li> <li>22 apr 2004 00:23 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Vanhelmont.jpg|Vanhelmont.jpg]]" <em>(&#91;&#91;Jan Baptista van Helmont]] (1580-1644). Maker &amp; datum onbekend, maar ongetwjifeld Publiek Domein wegens ouderdom.)</em></li> <li>21 apr 2004 21:08 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Witboi.jpg|Witboi.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Hendrik Witboi &#61;= Beschreibung == Text auf dem Bild: &#39;&#39;Südwestafrika.I. Gibeon. Hendrik Witboi. Oberhäuptling der - Witboihottentotten.&#39;&#39; Text auf der Hülle: &#39;&#39;Deutsch-Südwestafrika 1 37. Gibeon. Hendrik Witboi. - Oberhäuptling der Witboihottentotten.&#39;&#39; Entstehungsjahr Vorlage: 1892/1894 oder früher formale Bemerkung: Repro Photograph: Dove-Sammlung Region: Namibia - Gibeon - DSWA &#61;= Quelle == Der Bildbestand der Deutschen Kolonialgesellschaft in der Stadt- und Universitätsbibliothek Frankfurt am Main &#91;http&#58;//www.stub.bildarchiv-dkg.uni-frankfurt.de/dfg-projekt/Bildprojekt/frames/hauptframe.html] &#61;= Lizenz == Einige der vom Kolonialen Bildarchiv in Frankfurt a. Main &#91;http&#58;//www.stub.bildarchiv-dkg.uni-frankfurt.de/dfg-projekt/Default.htm] veröffentlichten Bilder wurden von Mitarbeitern des Bildarchivs nachbearbeitet oder dort erstveröffentlicht. Eine Weiterverwendung ist unter der Auflage einer deutlichen Quellenangabe gestattet. &#91;&#91;de:Bild:Witboi.jpg]])</em></li> <li>21 apr 2004 21:07 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Herero.jpg|Herero.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Herero &#61;= Beschreibung == Text auf der Hülle: &#39;&#39;Heidnische Hereros&#39;&#39; formale Bemerkung: Repro Retuschen kleiner Schichtfehler Photograph: Schutz; Heuberg, M. Region: DSWA Namibia &#61;= Quelle == Der Bildbestand der Deutschen Kolonialgesellschaft in der Stadt- und Universitätsbibliothek Frankfurt am Main &#91;http&#58;//www.stub.bildarchiv-dkg.uni-frankfurt.de/dfg-projekt/Bildprojekt/frames/hauptframe.html] &#61;= Lizenz == Einige der vom Kolonialen Bildarchiv in Frankfurt a. Main &#91;http&#58;//www.stub.bildarchiv-dkg.uni-frankfurt.de/dfg-projekt/Default.htm] veröffentlichten Bilder wurden von Mitarbeitern des Bildarchivs nachbearbeitet oder dort erstveröffentlicht. Eine Weiterverwendung ist unter der Auflage einer deutlichen Quellenangabe gestattet. &#91;&#91;de:Bild:Herero.jpg]])</em></li> <li>21 apr 2004 20:57 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:LocationHowlandIsland.png|LocationHowlandIsland.png]]" <em>(Vanaf de spaanse wikipedia &#91;&#91;es:Imagen:LocationHowlandIsland.png]])</em></li> <li>21 apr 2004 20:53 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Basel.tinguely.jpg|Basel.tinguely.jpg]]" <em>(Give a description for the image:* On 2002-05-28 15:17:27, &#91;&#91;user:Flups&#124;Flups]] uploaded file basel.tinguely.jpg &#91;Tinguely fountain at Basel, Switzerland] Used in German wiki article &#91;http&#58;//de.wikipedia.com/wiki.cgi?Jean_Tinguely Jean Tinguely].)</em></li> <li>21 apr 2004 20:42 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Jamesknoxpolk.jpg|Jamesknoxpolk.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Image of James K. Polk from the Library of Congress &#91;&#91;en:Image:jamesknoxpolk.jpg]])</em></li> <li>21 apr 2004 20:38 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Harry-truman-thumbnail.jpg|Harry-truman-thumbnail.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Public domain image from Truman Presidential Library * &#91;http&#58;//www.wikipedia.com/images/uploads/harry-truman.jpg full size image] &#91;&#91;en:Image:harry-truman-thumbnail.jpg]])</em></li> <li>21 apr 2004 20:36 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Truman_initiating_Korean_involvement.jpg|Truman_initiating_Korean_involvement.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#39;&#39;&#39;Description&#39;&#39;&#39;: &quot;President Harry S. Truman is shown at his desk at the White House signing a proclaimation declaring a national emergency.&quot; December 16, 1950. &#39;&#39;&#39;Credit&#39;&#39;&#39;: National Archives and Records Administration &#39;&#39;&#39;Source&#39;&#39;&#39;: http&#58;//teachpol.tcnj.edu/amer_pol_hist/thumbnail413.html ---- &#123;&#123;msg:PD}} &#91;&#91;en:Image:Truman initiating Korean involvement.jpg]])</em></li> <li>21 apr 2004 19:06 [[Gebruiker:Deadstar|Deadstar]] heeft ge-upload: "[[:Afbeelding:NorthernIrelandBelfast.png|NorthernIrelandBelfast.png]]" <em>(kaart belfast van en: wiki)</em></li> <li>21 apr 2004 15:31 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Ceesveerman.jpg|Ceesveerman.jpg]]" <em>(Minister Cees Veerman. Bron: &#91;http&#58;//www.minlnv.nl Ministerie van Landbouw, Natuur en Voedselkwaliteit])</em></li> <li>21 apr 2004 15:31 [[Gebruiker:Head|Head]] heeft ge-upload: "[[:Afbeelding:Wilde_eend.jpg|Wilde_eend.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Stockente Fotografiert von: &#91;&#91;Benutzer:Softeis&#124;Softeis]] 21:22, 28. Jun 2003 (CEST) &#91;&#91;de:Bild:Ente 1.jpg]])</em></li> <li>21 apr 2004 15:29 [[Gebruiker:Head|Head]] heeft ge-upload: "[[:Afbeelding:Wilde_eend.jpg|Wilde_eend.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Stockente Fotografiert von: &#91;&#91;Benutzer:Softeis&#124;Softeis]] 21:22, 28. Jun 2003 (CEST) &#91;&#91;de:Bild:Ente 1.jpg]])</em></li> <li>21 apr 2004 15:15 [[Gebruiker:Conget|Conget]] heeft ge-upload: "[[:Afbeelding:Image45.jpg|Image45.jpg]]" <em>((plaatje erbij))</em></li> <li>21 apr 2004 15:13 [[Gebruiker:Conget|Conget]] heeft ge-upload: "[[:Afbeelding:Image44.jpg|Image44.jpg]]" <em>(plaatje)</em></li> <li>21 apr 2004 15:11 [[Gebruiker:Conget|Conget]] heeft ge-upload: "[[:Afbeelding:Image45.gif|Image45.gif]]" <em>(een plaatje)</em></li> <li>21 apr 2004 15:06 [[Gebruiker:Conget|Conget]] heeft ge-upload: "[[:Afbeelding:Sosabowski.jpg|Sosabowski.jpg]]" <em>((zeker te weten geen auteurs recht) http&#58;//arnhem1944.civ.pl/sosabowski/1.jpg)</em></li> <li>21 apr 2004 14:57 [[Gebruiker:Conget|Conget]] heeft ge-upload: "[[:Afbeelding:Zyklonb_2.jpg|Zyklonb_2.jpg]]" <em>(Zyklon B plaatje)</em></li> <li>21 apr 2004 13:57 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:FaustinaIaureus(141).jpg|FaustinaIaureus(141).jpg]]" <em>(Portret van &#91;&#91;Faustina de Oudere]] op een aureus. Foto met toestemming van Classical Numismatic Group, Inc. (CNG).)</em></li> <li>21 apr 2004 13:45 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:FaustinaIaureus.jpg|FaustinaIaureus.jpg]]" <em>(Portret van &#91;&#91;Faustina de Oudere]] op een aureus. Foto met toestemming van Classical Numismatic Group, Inc. (CNG).)</em></li> <li>21 apr 2004 13:20 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Romanjk.jpg|Romanjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>21 apr 2004 13:17 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Mannjk.jpg|Mannjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>21 apr 2004 13:13 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Grobjk.jpg|Grobjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>21 apr 2004 12:06 [[Gebruiker:Deadstar|Deadstar]] heeft ge-upload: "[[:Afbeelding:Ireland-Inishmore6.jpg|Ireland-Inishmore6.jpg]]" <em>(van en: wiki)</em></li> <li>21 apr 2004 11:24 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:OthoDen.jpg|OthoDen.jpg]]" <em>(Portret van &#91;&#91;Otho]] op een denarius. Foto met toestemming van: Classical Numismatic Group, Inc. (CNG))</em></li> <li>21 apr 2004 09:27 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:MarcianaDen(114).jpg|MarcianaDen(114).jpg]]" <em>(Portret van &#91;&#91;Marciana]] op een denarius. Foto met toestemming van Classical Numismatic Group, Inc. (CNG).)</em></li> <li>21 apr 2004 08:06 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:UN_John_D._Negroponte.jpg|UN_John_D._Negroponte.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: John D. Negroponte, Permanent Representative of the United States to the United Nations, briefing correspondents at UN Headquarters. (UN Photo #UNE7020 by Evan Schneider), deemed fair use. http&#58;//www.un.org/av/photo/contactus.htm -- Terms &amp; conditions, United Nations Photo Library &#39;&#39;&lt;s&gt;This image has no information on its source.&lt;/s&gt; It may be &#91;&#91;fair use]] but this has yet to be verified. If it is an old image it might be &#91;&#91;public domain]] or under a licence compatible with the &#91;&#91;GNU FDL]].&#39;&#39; &#91;&#91;en:Image:UN John D. Negroponte.jpg]])</em></li> <li>21 apr 2004 08:03 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Montelbaanstoren.jpg|Montelbaanstoren.jpg]]" <em>(Montelbaanstoren, vanaf http&#58;//www.bma.amsterdam.nl/adam/nl/torens.html, Monumentenzorg Amsterdam, overnemen toegestaan)</em></li> <li>21 apr 2004 07:59 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Oval_Office_from_above.jpg|Oval_Office_from_above.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;msg:PD}} &#91;&#91;en:Image:Oval Office from above.jpg]])</em></li> <li>21 apr 2004 07:44 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Vandenberg.jpg|Vandenberg.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Astronaut van den Berg &#91;&#91;en:Image:vandenberg.jpg]])</em></li> <li>21 apr 2004 07:34 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Maradona1.bmp|Maradona1.bmp]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: WM 1994, das letzteMal &#91;&#91;de:Bild:Wm1994.bmp]])</em></li> <li>21 apr 2004 07:34 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Maradona2.bmp|Maradona2.bmp]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Weltmeister &#91;&#91;de:Bild:Mara2.bmp]])</em></li> <li>21 apr 2004 07:25 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:AbbeyRoad.jpg|AbbeyRoad.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;msg:fairuse}} &#91;&#91;en:Image:AbbeyRoad.jpg]])</em></li> <li>21 apr 2004 07:24 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Hazelnoot_bloeiend.jpg|Hazelnoot_bloeiend.jpg]]" <em>(zelfgemaakte foto; mannelijke bloeiwijze van de hazelnoot)</em></li> <li>21 apr 2004 07:11 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Akkerviooltje_moestuin.jpg|Akkerviooltje_moestuin.jpg]]" <em>(zelfgemaakte foto; onkruid in de moestuin april 2004)</em></li> <li>21 apr 2004 06:34 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Xorp-logo.jpg|Xorp-logo.jpg]]" <em>(Ik vraag om toestemming)</em></li> <li>21 apr 2004 05:40 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Netanyahu_bibi.jpg|Netanyahu_bibi.jpg]]" <em>(he: wikipedia)</em></li> <li>21 apr 2004 05:26 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:EBarak.jpg|EBarak.jpg]]" <em>(En: wikipedia)</em></li> <li>21 apr 2004 00:49 [[Gebruiker:Db-inf|Db-inf]] heeft ge-upload: "[[:Afbeelding:Wapen_van_Zwake.gif|Wapen_van_Zwake.gif]]" <em>(Eerdere versie hersteld)</em></li> <li>21 apr 2004 00:48 [[Gebruiker:Db-inf|Db-inf]] heeft ge-upload: "[[:Afbeelding:Wapen_van_Zwake.gif|Wapen_van_Zwake.gif]]" <em>(Eerdere versie hersteld)</em></li> <li>21 apr 2004 00:47 [[Gebruiker:Db-inf|Db-inf]] heeft ge-upload: "[[:Afbeelding:Wapen_van_Zwake.gif|Wapen_van_Zwake.gif]]" <em>(Wapen van de oude gemeente Zwake, ontleent aan de familie de Recourt de Lens et de Licques)</em></li> <li>21 apr 2004 00:38 [[Gebruiker:Db-inf|Db-inf]] heeft ge-upload: "[[:Afbeelding:Wapen_van_Zwake.gif|Wapen_van_Zwake.gif]]" <em>(Wapen van de oude gemeente Zwake, ontleent aan de familie de Recourt de Lens et de Licques)</em></li> <li>20 apr 2004 23:13 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Haendel.jpg|Haendel.jpg]]" <em>(&#91;&#91;Georg Friedrich Händel]], portret door &#91;&#91;Balthasar Denner]] (1685-1749), 1733.)</em></li> <li>20 apr 2004 23:04 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Hallerbause.jpg|Hallerbause.jpg]]" <em>(&#91;&#91;Albrecht von Haller]]. Gravure van Johann Friedrich Bause (1738-1814) naar een werk van &#91;&#91;Sigmund Freudenberger]] (1745-1801))</em></li> <li>20 apr 2004 22:58 [[Gebruiker:Henricus|Henricus]] heeft ge-upload: "[[:Afbeelding:Lower_saxony_el.png|Lower_saxony_el.png]]" <em>(Kaart van het Eemsland (uit en: wiki - &#91;http&#58;//en.wikipedia.org/wiki/Wikipedia:WikiProject_German_districts/Maptemplates bron]))</em></li> <li>20 apr 2004 22:39 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Zahnradsysteme.JPG|Zahnradsysteme.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Zahnradsysteme vlnr: Riggenbach, Strub, Abt (2 oder 3 Lamellen), Locher *Beschreibung: Zahnradsysteme *Quelle: Aus einem eigenen Vortrag 1972 *Fotograf oder Zeichner: selber *Andere Versionen: keine *Lizenzstatus: Public Domain &#91;&#91;de:Bild:Zahnradsysteme.JPG]])</em></li> <li>20 apr 2004 22:19 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Arezzo.jpg|Arezzo.jpg]]" <em>(Guido van Arezzo. Bron onbekend, maar kennelijk Middeleeuws.)</em></li> <li>20 apr 2004 22:16 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:HagiaSofia.jpg|HagiaSofia.jpg]]" <em>(Hagia Sofia, Istanbul, June 1994, 400 x 235 pixels; © 1994, by Wikipedia user:alex756, all rights reserved; the license granted herein is to Wikimedia Foundation, Inc. for non-exclusive distribution under the GNU FDL. Please contact user:alex756 for permission to use in any other (i.e. non-GFDL or CC) context. Alex756 03:09, 21 Aug 2003 (UTC) )</em></li> <li>20 apr 2004 22:10 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Grunewald.jpg|Grunewald.jpg]]" <em>(Matthias Grünewald. Kopergravure. Verschenen in: Academia Picturae, 1683.)</em></li> <li>20 apr 2004 22:08 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Crucifixion.jpg|Crucifixion.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#39;&#39;The &#91;&#91;Crucifixion]]&#39;&#39;, by &#91;&#91;Matthias Grunewald]] &#91;&#91;en:Image:crucifixion.jpg]])</em></li> <li>20 apr 2004 21:44 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Towergateway.jpg|Towergateway.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: tower gateway dlr taken 27/11/03 by a brady &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:Towergateway.jpg]])</em></li> <li>20 apr 2004 21:37 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Celje-rscd.png|Celje-rscd.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: resized image &#91;&#91;en:Image:Celje-rscd.png]])</em></li> <li>20 apr 2004 21:36 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Celje-1441.JPG|Celje-1441.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Celje on the picture from 1441 &#91;&#91;en:Image:Celje-1441.JPG]])</em></li> <li>20 apr 2004 21:21 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Salamander.jpg|Salamander.jpg]]" <em>(Vanaf Duitse wikipedia, &#91;&#91;de:Bild:Sal.jpg]], Salamander (Bild von http&#58;//gimp-savvy.com/cgi-bin/img.cgi?ufwsGMESuqvyMyo1330) )</em></li> <li>20 apr 2004 21:21 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GeraniumMolle-overz-kl.jpg|GeraniumMolle-overz-kl.jpg]]" <em>(eigen foto, hierbij onder gnu/fdl gebracht)</em></li> <li>20 apr 2004 21:18 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Goldkroete_klein.jpg|Goldkroete_klein.jpg]]" <em>(Vanaf duitse wikipedia, &#91;&#91;de:Bild:Goldkroete klein.jpg]])</em></li> <li>20 apr 2004 21:15 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:FaustinaIIaureus.jpg|FaustinaIIaureus.jpg]]" <em>(Portret van &#91;&#91;Faustina de Jongere]] op een aureus. Foto met toestemming van Classical Numismatic Group, Inc. (CNG).)</em></li> <li>20 apr 2004 21:14 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bluesalamander5488.jpg|Bluesalamander5488.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Blue-spotted salamander. U.S. postage stamp. Legally reproduced under U.S. Code: Title 18: Section 504 &#91;&#91;en:Image:Bluesalamander5488.jpg]])</em></li> <li>20 apr 2004 21:07 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:CLemayDoan.jpg|CLemayDoan.jpg]]" <em>(Image from: &lt;http&#58;//www.nlc-bnc.ca/olympians/h15-114-e.html&gt; From the National Library and Archives of Canada : &quot;Images contributed to this database by the Canadian Olympic Committee (COC) may be reproduced for non-commercial purposes without asking permission from the COC or paying copyright royalty.&quot; )</em></li> <li>20 apr 2004 21:02 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:CLemayDoan.jpg|CLemayDoan.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Image from: http&#58;//www.nlc-bnc.ca/olympians/h15-114-e.html From the National Library and Archives of Canada : &quot;&#39;&#39;Images contributed to this database by the Canadian Olympic Committee (COC) may be reproduced for non-commercial purposes without asking permission from the COC or paying copyright royalty&#39;&#39;.&quot; &#123;&#123;msg:noncommercial}} &#91;&#91;en:Image: CLemayDoan.jpg]])</em></li> <li>20 apr 2004 20:58 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:CLemayDoan.jpg|CLemayDoan.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Image from: http&#58;//www.nlc-bnc.ca/olympians/h15-114-e.html From the National Library and Archives of Canada : &quot;&#39;&#39;Images contributed to this database by the Canadian Olympic Committee (COC) may be reproduced for non-commercial purposes without asking permission from the COC or paying copyright royalty&#39;&#39;.&quot; &#123;&#123;msg:noncommercial}} &#91;&#91;en:Image: CLemayDoan.jpg]])</em></li> <li>20 apr 2004 20:55 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cathars_expelled.JPG|Cathars_expelled.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: cathars being expelled from carcassone, france &#91;&#91;en:Image:cathars expelled.JPG]])</em></li> <li>20 apr 2004 20:40 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:EscCyL.jpg|EscCyL.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-es. De beschrijving daar was: Escudo de Castilla y Leon desde en: &#91;&#91;es:Imagen:EscCyL.jpg]])</em></li> <li>20 apr 2004 20:37 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Wappen.jpg|Wappen.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Wappen von Kastilien und León in der Kathedrale von Burgos, selbst fotografiert 1993 &#91;&#91;de:Bild:Wappen.jpg]])</em></li> <li>20 apr 2004 20:36 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Goddardrocket.jpg|Goddardrocket.jpg]]" <em>(Robert Goddard met een raket. Bron: NASA/Goddard Space Flight Center. Publiek domein wegens Amerikaanse overheidsinstelling.)</em></li> <li>20 apr 2004 20:28 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Esskastanien.jpg|Esskastanien.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Esskastanie von Marian Szengel Bild steht unter der FDL &#91;&#91;de:Bild:Esskastanien.jpg]])</em></li> <li>20 apr 2004 20:28 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Castanea_sativa.jpg|Castanea_sativa.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Esskastanie &#91;&#91;de:Bild:Castanea sativa.jpg]])</em></li> <li>20 apr 2004 20:21 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cassiopeia_constellation_map_small.png|Cassiopeia_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Cassiopeia_constellation_map_small.png]])</em></li> <li>20 apr 2004 20:18 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cassiopeia_constellation_map.png|Cassiopeia_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: ;description: Carte pour la constellation &#91;&#91;Cassiopée (constellation)&#124;Cassiopée]] ;source: produite à l&#39;aide du logiciel &#91;http&#58;//pp3.sourceforge.net/ PP3] de &#91;&#91;w:en:User:Bronger]] ;copyright: &#123;&#123;msg:GFDL}} &#91;&#91;fr:Image:Cassiopeia constellation map.png]])</em></li> <li>20 apr 2004 19:40 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Carus.jpg|Carus.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Carus aus Baumeister: Denkmäler des klassischen Altertums. 1885. Band I., Seite 374 &#91;&#91;de:Bild:Carus.jpg]])</em></li> <li>20 apr 2004 19:33 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Carthage.jpg|Carthage.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Ruins of Carthage Photograph available under GFDL license. I took this picture myself with a Minolta XD-5 on Kodakcolor 100. It has been scanned from a print and digitally edited (framing, color balance). You do not need my permission to reuse it, but you may not claim that you took the photo yourself. &#91;&#91;en:Image:Carthage.jpg]])</em></li> <li>20 apr 2004 19:32 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Ruines_de_Carthage.jpg|Ruines_de_Carthage.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: &#39;&#39;&#39;Description :&#39;&#39;&#39; Ruines de &#91;&#91;Carthage]]. &#39;&#39;&#39;Source :&#39;&#39;&#39; http&#58;//patrick.verdier.free.fr/Search.php?keyword=Carthage &#39;&#39;&#39;Licence :&#39;&#39;&#39; &#91;&#91;domaine public]]. :Free On Line Photos est un site de photos gratuites et libres de droits à télécharger. Toutes les photos respectent les bonnes moeurs et sont dégagées de droits sur la propriété intellectuelle &#91;&#91;fr:Image:Ruines de Carthage.jpg]])</em></li> <li>20 apr 2004 19:24 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Carter_Family|Carter_Family]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Carter Family album cover, fair use &#91;&#91;en:Image:Carter Family]])</em></li> <li>20 apr 2004 19:22 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cartagena_co_2.jpg|Cartagena_co_2.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Cartagena, Colombia &#91;&#91;en:Image:Cartagena co 2.jpg]])</em></li> <li>20 apr 2004 19:22 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cartagena_co_1.jpg|Cartagena_co_1.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Downtown Cartagena, Colombia &lt;BR&gt;Chris Ashton &lt;BR&gt;September 2, 2003 &#91;&#91;en:Image:Cartagena co 1.jpg]])</em></li> <li>20 apr 2004 19:18 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Nevada_map_showing_Carson_City.png|Nevada_map_showing_Carson_City.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Overview map of Nevada showing county &#91;&#91;en:Image:Nevada map showing Carson City.png]])</em></li> <li>20 apr 2004 19:15 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Hainbuche.jpg|Hainbuche.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: *Beschreibung: **Früchte der Hainbuche *Quelle: **Fotografiert am 14. September 2002 *Fotograf: **&#91;&#91;Benutzer:ArtMechanic&#124;ArtMechanic]] *Copyright Status: **&#91;&#91;GNU Freie Dokumentationslizenz]] &#91;&#91;de:Bild:Hainbuche.jpg]])</em></li> <li>20 apr 2004 19:07 [[Gebruiker:Moose1960|Moose1960]] heeft ge-upload: "[[:Afbeelding:Radiospectrum.png|Radiospectrum.png]]" <em>(Het EM-spectrum, van Wikepedia UK)</em></li> <li>20 apr 2004 18:58 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Locatie_Alteveer.png|Locatie_Alteveer.png]]" <em>(Locatie Alteveer, zelfgemaakt kaartje op basis van gemeente kaartje Mtcv &#123;&#123;msg:GFDL}})</em></li> <li>20 apr 2004 18:57 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Carina_constellation_map_small.png|Carina_constellation_map_small.png]]" <em>(Vanaf engelse wikipedia &#91;&#91;en:Image:Carina constellation map small.png]])</em></li> <li>20 apr 2004 18:50 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Carcasonne_spel.jpg|Carcasonne_spel.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Carcassonne Hans im Glück offizielle Pressefoto, zur allgemeinen Verwendung freigegeben &#91;&#91;de:Bild:carcassonne.jpg]])</em></li> <li>20 apr 2004 18:23 [[Gebruiker:Conget|Conget]] heeft ge-upload: "[[:Afbeelding:Sarin.jpg|Sarin.jpg]]" <em>(sarin structuur formule 3D)</em></li> <li>20 apr 2004 15:41 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Goyathlay.gif|Goyathlay.gif]]" <em>(Portret van Goyathlay, beter bekend als &#91;&#91;Geronimo]], leider der Apachen. Fotograaf: Vermoedelijk &#91;&#91;Frank Rinehart]] (1862-1928).)</em></li> <li>20 apr 2004 13:17 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Gauguin2.jpg|Gauguin2.jpg]]" <em>(Zelfportret van &#91;&#91;Paul Gauguin]] (1848-1903))</em></li> <li>20 apr 2004 13:11 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Gassmann.jpg|Gassmann.jpg]]" <em>(&#91;&#91;Leopold Gassmann]]. Graveur onbekend, doch ongetwijfeld Publiek Domein wegens ouderdom.)</em></li> <li>20 apr 2004 13:08 [[Gebruiker:Evanherk|Evanherk]] heeft ge-upload: "[[:Afbeelding:PGWodehouse.jpg|PGWodehouse.jpg]]" <em>(PG Wodehouse in 1904, van engelse wiki, copyright velopen op grond van tijd.)</em></li> <li>20 apr 2004 12:46 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Vasco_da_gama.jpg|Vasco_da_gama.jpg]]" <em>(Vasco da Gama. Uit: &quot;Vasco da Gama&quot;, ca. 1510, Biblioth&amp;egrave;que Nationale, Parijs)</em></li> <li>20 apr 2004 12:40 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Galileo-picture.jpg|Galileo-picture.jpg]]" <em>(Galileo Galilei, publiek domein wegens ouderdom. Afkomstig van http&#58;//www.galileo-galilei.org/pictures-galileo-galilei.html, waar staat: &quot;As far as I know these pictures of Galileo are in the public domain. You are welcome to use it freely as well.&quot;)</em></li> <li>20 apr 2004 12:34 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Janvangalen.gif|Janvangalen.gif]]" <em>(&#91;&#91;Jan van Galen]], Nederlands vlootvoogd. Vrijwel zeker Publiek Domein wegens ouderdom.)</em></li> <li>20 apr 2004 12:31 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Bernhardvongalen.jpg|Bernhardvongalen.jpg]]" <em>(&#91;&#91;Christoph Bernhard von Galen]] (1606-1678), bisschop van Münster. Maker onbekend, maar ongetwijfeld publiek domein wegens ouderdom.)</em></li> <li>20 apr 2004 12:22 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Gainsborough.jpg|Gainsborough.jpg]]" <em>(Zelfportret van &#91;&#91;Thomas Gainsborough]] (1727-1788), ca. 1758. Thans in het National Portrait Gallery, Londen.)</em></li> <li>20 apr 2004 12:10 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Nielsgade.jpg|Nielsgade.jpg]]" <em>(De Deense componist Niels Wilhelm Gade. Foto naar aangenomen publiek domein wegens ouderdom (Gade stierf in 1890).)</em></li> <li>20 apr 2004 11:42 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Speres.jpg|Speres.jpg]]" <em>(En: wikipedia)</em></li> <li>20 apr 2004 11:35 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Ivanchuk4a.jpg|Ivanchuk4a.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>20 apr 2004 11:24 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Adamsjk.jpg|Adamsjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>20 apr 2004 10:41 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Morozevich1.jpg|Morozevich1.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>20 apr 2004 10:01 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Shirov.jpg|Shirov.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>20 apr 2004 09:52 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Adams.jpg|Adams.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>20 apr 2004 09:42 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Gelfand.jpg|Gelfand.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>20 apr 2004 09:36 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:GurevichD.jpg|GurevichD.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>20 apr 2004 09:30 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Ponomariov.jpg|Ponomariov.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>20 apr 2004 09:26 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Tiviakov.jpg|Tiviakov.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>20 apr 2004 09:16 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Anand.jpg|Anand.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>20 apr 2004 09:11 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kamskiy.jpg|Kamskiy.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>20 apr 2004 08:57 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Münsteraner_Rathaus_mittel.jpg|Münsteraner_Rathaus_mittel.jpg]]" <em>(Foto van de:Wikipedia.org. gemaakt door &#91;&#91;:de:Benutzer:El&#124;El]] &#123;&#123;msg:GFDL}})</em></li> <li>20 apr 2004 08:25 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Korchnoi.jpg|Korchnoi.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>20 apr 2004 08:20 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Leko.jpg|Leko.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>20 apr 2004 08:14 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Miles.jpg|Miles.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>20 apr 2004 08:08 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Short.jpg|Short.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>20 apr 2004 08:01 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:KramnikVegas150.jpg|KramnikVegas150.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>20 apr 2004 07:25 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Karpov4.jpg|Karpov4.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>20 apr 2004 07:10 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Akkerviooltje.jpg|Akkerviooltje.jpg]]" <em>(zelfgemaakte foto; akkerviooltje in april in de moestuin)</em></li> <li>20 apr 2004 06:48 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Carbonyl.png|Carbonyl.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: modified from &#91;&#91;:Image:Carboxy.png]] &#91;&#91;en:Image:Carbonyl.png]])</em></li> <li>20 apr 2004 06:41 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Papuan_Frogmouth.jpg|Papuan_Frogmouth.jpg]]" <em>(Vanaf engelse wikipedia)</em></li> <li>20 apr 2004 06:36 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Kievitsbloem.jpg|Kievitsbloem.jpg]]" <em>(zelfgemaakte foto; van de bloem zijn twee kelkbladen en een meeldraad verwijderd om goed zicht te krijgen op de bloemonderdelen)</em></li> <li>20 apr 2004 06:29 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Swedish_helbard_(16th_century).jpg|Swedish_helbard_(16th_century).jpg]]" <em>(Van de Engelse Wiki, volgens de uploader aldar afkomstig van de Zweedse wiki (inderdaad) en public domein (wegens taalproblemen niet te controleren voor mij))</em></li> <li>20 apr 2004 06:18 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Arms-canterbury.jpg|Arms-canterbury.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Arms of &#91;&#91;Canterbury, England&#124;Canterbury]] City Council. From &#91;http&#58;//www.civicheraldry.co.uk civicheraldry.co.uk], with permission. &#91;&#91;User:Marnanel/CivicHeraldry pages&#124;About the civic heraldry images...]] &#61;=External links== * &#91;http&#58;//www.civicheraldry.co.uk/kent.html#canterbury%20city Details of the arms] &#91;&#91;en:Image:arms-canterbury.jpg]])</em></li> <li>20 apr 2004 06:17 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:KentCanterbury.png|KentCanterbury.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: district of &#91;&#91;Kent]] &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:KentCanterbury.png]])</em></li> <li>20 apr 2004 06:11 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Blason_Canne.png|Blason_Canne.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: &#39;&#39;&#39;Titre:&#39;&#39;&#39; Blason de Canne r&amp;#233;alis&amp;#233; pour le &#91;&#91;Wikip&amp;#233;dia:Projet, Blasons&#124;Projet, Blasons]] de Wikip&amp;#233;dia &#39;&#39;&#39;Source:&#39;&#39;&#39; Dessin&amp;#233;e par &#91;&#91;Utilisateur:Rinaldum&#124;&amp;#422;inaldum]] 4 mar 2004 &amp;#224; 23:31 (CET) &#39;&#39;&#39;Licence:&#39;&#39;&#39; GPL, GFDL, Cr&amp;#233;ative C. &#91;&#91;fr:Image:Blason Canne.png]])</em></li> <li>20 apr 2004 05:20 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Egon_Schiele_zelfportret.jpg|Egon_Schiele_zelfportret.jpg]]" <em>(Egon Schiele, zelfportret, vanaf een poster bij het Haags Gemeentemuseum, ter beschikking gesteld onder GFDL, foto &#91;&#91;gebruiker:Ellywa]])</em></li> <li>20 apr 2004 05:15 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Ahmed_II.jpg|Ahmed_II.jpg]]" <em>(En: wikipedia)</em></li> <li>20 apr 2004 05:14 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Bloesem_den_haag_april_2004.JPG|Bloesem_den_haag_april_2004.JPG]]" <em>(Bloesem, Den Haag, april 2004, eigen foto, ter beschikking gesteld onder GFDL licentie)</em></li> <li>20 apr 2004 04:55 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Breiwerk.jpg|Breiwerk.jpg]]" <em>(Gekopieerd vanaf Engelse wikipedia, Description: Photo of knitted hat, yarn, and knitting needles )</em></li> <li>20 apr 2004 04:52 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Mustafa_II.jpg|Mustafa_II.jpg]]" <em>(En: wikipedia)</em></li> <li>20 apr 2004 04:46 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:CMi_bode.jpg|CMi_bode.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Sternbild Kleiner Hund, Stich von 1782 &#91;&#91;de:Bild:CMi bode.jpg]])</em></li> <li>20 apr 2004 04:46 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Canis_minor_constellation_map.png|Canis_minor_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This is a celestial map of the constellation Canis Minor, the Small Dog. Copyright &amp;copy; 2003 &#91;mailto:bronger@physik.rwth-aachen.de Torsten Bronger]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 22/02/1003. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line isx the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the azimuthal equidistant projection (the azimuth being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Canis minor constellation map.png]])</em></li> <li>20 apr 2004 04:42 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Canis_major_constellation_map_small.png|Canis_major_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia)</em></li> <li>20 apr 2004 04:42 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:CMa_bode.jpg|CMa_bode.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Sternbild grosser Hund, Stich von 1782 &#91;&#91;de:Bild:CMa bode.jpg]])</em></li> <li>20 apr 2004 04:36 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:CVn_bode.jpg|CVn_bode.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Sterbild Jagdhunde, Stich von 1782 &#91;&#91;de:Bild:CVn bode.jpg]])</em></li> <li>20 apr 2004 04:36 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:M51.arp.250pix.jpg|M51.arp.250pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: M51, known as the Whirlpool Galaxy, is a bright spiral galaxy fairly close to us (25 million light years). At the top of the picture, is a companion galaxy which is being disrupted by the gravitational tidal forces of the main galaxy. &lt;br&gt; &#39;&#39;&#39;CREDIT&#39;&#39;&#39;: Javier Méndez (ING) and Nik Szymanek, 2nd June 2000 &lt;br&gt; &#39;&#39;&#39;SOURCE&#39;&#39;&#39;: http&#58;//www.ing.iac.es/PR/science/m51_high.html &lt;br&gt; &#39;&#39;&#39;COPYRIGHT MESSAGE&#39;&#39;&#39;: &#39;&#39;For publication or display (electronic or otherwise), all the images on these web pages must be credited: &quot;Photo courtesy of the Isaac Newton Group of Telescopes, La Palma&quot; unless otherwise stated. Please send a message to Javier Méndez (PR Officer) with all the details of the publication&#39;&#39;. (Note from Adrian Pingstone: Javier Mendez has been informed).&lt;br&gt; &#39;&#39;&#39;EXTRA INFORMATION&#39;&#39;&#39;: The Isaac Newton Group of Telescopes (ING) consists of the 4.2 metre William Herschel Telescope, the 2.5 metre Isaac Newton Telescope and the 1.0 metre Jacobus Kapteyn Telescope. The telescopes are owned and operated jointly by the Particle Physics and Astronomy Research Council (PPARC) of the United Kingdom, the Nederlandse Organisatie voor Wetenschappelijk Onderzoek (NWO) of the Netherlands and the Instituto de Astrofísica de Canarias (IAC) of Spain. The telescopes are located in the Spanish Observatorio del Roque de Los Muchachos on La Palma which is operated by the Instituto de Astrofísica de Canarias (IAC).&lt;br&gt; &#39;&#39;&#39;PICTURE PREPARED&#39;&#39;&#39; by Adrian Pingstone in November 2003. &#91;&#91;en:Image:m51.arp.250pix.jpg]])</em></li> <li>20 apr 2004 04:33 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Canes_venatici_constellation_map_small.png|Canes_venatici_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia)</em></li> <li>20 apr 2004 04:30 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cancer_constellation_map_small.png|Cancer_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia)</em></li> <li>20 apr 2004 04:27 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Canberra_Old_parliament_house.jpg|Canberra_Old_parliament_house.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: old parliament house &#91;&#91;en:Image:Old parliament house.jpg]])</em></li> <li>20 apr 2004 04:10 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:5_dollar_kanada_b.jpg|5_dollar_kanada_b.jpg]]" <em>(Vanaf poolse wikipedia &#91;&#91;pl:5_dollar_kanada_b.jpg]])</em></li> <li>20 apr 2004 04:10 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:5_dollar_kanada_f.jpg|5_dollar_kanada_f.jpg]]" <em>(Vanaf poolse wikipedia &#91;&#91;pl:5_dollar_kanada_f.jpg]])</em></li> <li>20 apr 2004 04:09 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Canadian-coins.jpg|Canadian-coins.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Canadian circulation coins (scanned and edited by Montréalais) &#91;&#91;en:Image:canadian-coins.jpg]])</em></li> <li>20 apr 2004 03:57 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Anole_8172.JPG|Anole_8172.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Carolina anole Photo by Pollinator, on goldenrod, South Carolina, October, 2001 &#91;&#91;en:Image:Anole 8172.JPG]])</em></li> <li>20 apr 2004 03:52 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Camera_obscura.jpg|Camera_obscura.jpg]]" <em>(Vanaf Engelse wikipedia, komt overeen met de eerdere versie)</em></li> <li>20 apr 2004 03:50 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Camera_obscura_m.jpg|Camera_obscura_m.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-pl. De beschrijving daar was: Fizyka z 1910 &#91;&#91;pl:Grafika:camera obscura m.jpg]])</em></li> <li>20 apr 2004 03:50 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Camera_obscura.jpg|Camera_obscura.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: ;description: Planche de l&#39;Encyclopédie sur la camera obscura ;source: Scan de l&#39;&#91;&#91;Encyclopédie ou dictionnaire raisonné des sciences, des arts et des métiers]] (édité entre 1751 et 1772) ;copyright: &#91;&#91;domaine public]] (copyrigth expiré) &#91;&#91;fr:Image:Camera obscura.jpg]])</em></li> <li>20 apr 2004 03:40 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Caelum_constellation_map_small.png|Caelum_constellation_map_small.png]]" <em>(Give a description for the image:Vanaf Engelse wikipedia)</em></li> <li>20 apr 2004 03:37 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:CFlockhart.jpg|CFlockhart.jpg]]" <em>(Vanaf Engelse wikipedia)</em></li> <li>20 apr 2004 03:32 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Calcite.double.750pix.jpg|Calcite.double.750pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Banded agate. The specimen is one inch (2.5 cm) wide.&lt;br&gt; Picture made without a camera by laying the carving on a flat bed scanner.&lt;br&gt; Released to the public domain by Adrian Pingstone in May 2003. &#91;&#91;en:Image:calcite.double.750pix.jpg]])</em></li> <li>20 apr 2004 03:26 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Large_Cairo_Landsat.jpg|Large_Cairo_Landsat.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Large Landsat of Cairo &#91;&#91;en:Image:Large Cairo Landsat.jpg]])</em></li> <li>20 apr 2004 03:25 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:EgyptAlQahirah.png|EgyptAlQahirah.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:EgyptAlQahirah.png]])</em></li> <li>20 apr 2004 03:24 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Kairo_001.jpg|Kairo_001.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: *&#39;&#39;&#39;Beschreibung: &#39;&#39;&#39; **Blick vom Cairo Tower auf das Zentrum von &#91;&#91;Kairo]] *&#39;&#39;&#39;Quelle:&#39;&#39;&#39; **Fotografiert am &#91;&#91;6. Oktober]] &#91;&#91;2003]] *&#39;&#39;&#39;Fotograf: &#39;&#39;&#39; **&#91;http&#58;//www.martinsteiger.ch Martin Steiger] *&#39;&#39;&#39;Copyright Status: &#39;&#39;&#39; **&#91;&#91;GNU Freie Dokumentationslizenz]], Publikation mit Genehmigung des Fotografen &#91;&#91;en:Image:Egypt.Cairo.Panorama.01.jpg]] &#91;&#91;de:Bild:Kairo 001.jpg]])</em></li> <li>20 apr 2004 03:14 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cadiz_Rathaus.jpg|Cadiz_Rathaus.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Rathaus von Cadiz (Spanien, 2003), Fotograf: Falkue &#91;&#91;de:Bild:Cadiz Rathaus.jpg]])</em></li> <li>20 apr 2004 03:10 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cadillac.series62.750pix.jpg|Cadillac.series62.750pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: 1941 Cadillac Series 62, seen at a Classics Rally at Slimbridge, Gloucestershire, England, in June 2003.&lt;br&gt; Picture taken by Adrian Pingstone and released to the public domain.&lt;br&gt; &#91;&#91;en:Image:cadillac.series62.750pix.jpg]])</em></li> <li>20 apr 2004 03:04 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Babshrinenight.jpg|Babshrinenight.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Shrine of the Bab in Haifa Israel at night viewed from above looking down Ben Gurion Avenue Photo distributed for public use by the Baha&#39;i World Center, re-sized from a photo on the press materials page at http&#58;//www.bahaiworldnews.org/terraces/photos.en.html &#91;&#91;en:Image:Babshrinenight.jpg]])</em></li> <li>20 apr 2004 02:55 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Butrint_2.jpg|Butrint_2.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#39;&#39;&#39;General info&#39;&#39;&#39;: &#91;&#91;Butrint]], &#91;&#91;Albania]]&lt;br&gt; &#39;&#39;&#39;Size&#39;&#39;&#39;: 85.4 KB&lt;br&gt; &#39;&#39;&#39;Dimension&#39;&#39;&#39;: 640x480 pixels&lt;br&gt; &#39;&#39;&#39;Source&#39;&#39;&#39;: &#91;http&#58;//2ie.mpl.ird.fr/mm/albania Marc Morell] used with &#91;&#91;User:Dori/Marc Morell permission&#124;permission]]&lt;br&gt; &#39;&#39;&#39;License&#39;&#39;&#39;: &#91;&#91;GFDL]]&lt;br&gt; &#91;&#91;en:Image:Butrint 2.jpg]])</em></li> <li>20 apr 2004 02:53 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Butan.png|Butan.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: *Beschreibung: Strukturformel n-Butan *Quelle: ChemSketch *Fotograf oder Zeichner: MarkusZi *Andere Versionen: - *Lizenzstatus: GNU FDL &#91;&#91;de:Bild:Butan.png]])</em></li> <li>20 apr 2004 02:26 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:ScotlandWesternIsles.png|ScotlandWesternIsles.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: council area of Scotland &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:ScotlandWesternIsles.png]])</em></li> <li>20 apr 2004 02:24 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Congresoba.jpg|Congresoba.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-es. De beschrijving daar was: cd http&#58;//www.sxc.hu &#91;&#91;es:Imagen:congresoba.jpg]])</em></li> <li>20 apr 2004 02:23 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Argentina_Buenos_Aires_province.png|Argentina_Buenos_Aires_province.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: von der englischen Wikipedia &#91;&#91;de:Bild:Argentina Buenos Aires province.png]])</em></li> <li>19 apr 2004 22:02 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Alexander_the_great_1.jpg|Alexander_the_great_1.jpg]]" <em>(En: wikipedia)</em></li> <li>19 apr 2004 21:47 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Prodi2.jpg|Prodi2.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: © European Communities, 1995-2003 &#91;&#91;en:Image:Prodi.jpg]])</em></li> <li>19 apr 2004 21:46 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Prodi.jpg|Prodi.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Romano Prodi Quelle: http&#58;//usinfo.state.gov/topical/econ/group8/summit01/wwwhdeleuro.html public domain &#91;&#91;de:Bild:Prodi.jpg]])</em></li> <li>19 apr 2004 21:22 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Brooklyn-Pana-05.jpg|Brooklyn-Pana-05.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Panorama drawing of Brooklyn c. 1890s, public domain 600x368 &#91;&#91;en:Image:Brooklyn-Pana-05.jpg]])</em></li> <li>19 apr 2004 21:21 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Map_of_New_York_highlighting_Kings_County.png|Map_of_New_York_highlighting_Kings_County.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Public domain map courtesy of &#91;http&#58;//www.lib.utexas.edu/ The General Libraries, The University of Texas at Austin], modified to show counties. Released under GFDL. See &#91;&#91;Wikipedia:U.S. county map]]s. &#91;&#91;en:Image:Map of New York highlighting Kings County.png]])</em></li> <li>19 apr 2004 21:12 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Cablecar.zelllamsee.500pix.jpg|Cablecar.zelllamsee.500pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: The Sonnenalmbahn cable car at Zell am See in the Austrian Alps.&lt;br&gt; Photographed by Adrian Pingstone in 1998 and released to the public domain. &#91;&#91;en:Image:cablecar.zelllamsee.500pix.jpg]])</em></li> <li>19 apr 2004 21:02 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Commonthen.jpg|Commonthen.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Little graphic I made showing change of Commonwealth &#91;&#91;en:Image:commonthen.jpg]])</em></li> <li>19 apr 2004 21:00 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Britney_Spears.jpg|Britney_Spears.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Britney Spears performs on the National Mall, public domain image from navy.mil. Original: &#91;http&#58;//www.news.navy.mil/view_single.asp?id=9384] &#123;&#123;msg:PD}} &#91;&#91;en:Image:Britney Spears.jpg]])</em></li> <li>19 apr 2004 20:57 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Suleyman_I.jpg|Suleyman_I.jpg]]" <em>(En: wikipedia)</em></li> <li>19 apr 2004 20:51 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:BrighamYoung.jpg|BrighamYoung.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Statue of Brigham Young From &#91;http&#58;//teachpol.tcnj.edu/amer_pol_hist/thumbnail176.html http&#58;//teachpol.tcnj.edu/amer_pol_hist/thumbnail176.html], in the public domain &#91;&#91;en:Image:BrighamYoung.jpg]])</em></li> <li>19 apr 2004 20:46 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Klm.b737.750pix.jpg|Klm.b737.750pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: KLM Boeing 737-400 (PH-BTA) on the approach to London (Heathrow) Airport (UK).&lt;br&gt; Photographed by Adrian Pingstone in August 2002 and released to the public domain. &#123;&#123;msg:PD}} &#91;&#91;en:Image:klm.b737.750pix.jpg]])</em></li> <li>19 apr 2004 20:42 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Alitalia.a321-112.i-bixd.250pix.jpg|Alitalia.a321-112.i-bixd.250pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Airbus A321-100 of Alitalia landing at London (Heathrow) Airport.&lt;br&gt; Photographed by Adrian Pingstone in August 2002 and released to the public domain. &#91;&#91;en:Image:alitalia.a321-112.i-bixd.250pix.jpg]])</em></li> <li>19 apr 2004 20:38 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Air.france.a320.750pix.jpg|Air.france.a320.750pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Air France Airbus A320-200 (F-GFKM) on the approach to London (Heathrow) Airport (UK).&lt;br&gt; Photographed by Adrian Pingstone in September 2003 and released to the public domain. &#91;&#91;en:Image:air.france.a320.750pix.jpg]])</em></li> <li>19 apr 2004 20:35 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Ahmed_III.jpg|Ahmed_III.jpg]]" <em>(En: wikipedia)</em></li> <li>19 apr 2004 20:33 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Paris.seine.750pix.jpg|Paris.seine.750pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: The river Seine in Paris. &lt;br&gt; Photographed by Adrian Pingstone in June 2002 and released to the public domain. &#91;&#91;en:Image:paris.seine.750pix.jpg]])</em></li> <li>19 apr 2004 20:29 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Mahmud_I_ottoman.jpg|Mahmud_I_ottoman.jpg]]" <em>(En: wikipedia)</em></li> <li>19 apr 2004 20:29 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Fault4734.jpg|Fault4734.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Appalachian geologic fault &#91;&#91;en:Image:Fault4734.jpg]])</em></li> <li>19 apr 2004 20:14 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Blason_Bretagne.jpg|Blason_Bretagne.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: &#39;&#39;&#39;Titre:&#39;&#39;&#39; Blason de la r&amp;#233;gion Bretagne r&amp;#233;alis&amp;#233; pour le &#91;&#91;Wikip&amp;#233;dia:Projet, Blasons&#124;Projet, Blasons]] de Wikip&amp;#233;dia &#39;&#39;&#39;Source:&#39;&#39;&#39; Dessin&amp;#233;e par &#91;&#91;Utilisateur:Rinaldum&#124;&amp;#422;inaldum]] &#39;&#39;&#39;Licence:&#39;&#39;&#39; GPL, GFDL, Cr&amp;#233;ative C. &#91;&#91;fr:Image:Blason Bretagne.jpg]])</em></li> <li>19 apr 2004 20:01 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Karel-ii-miranda.jpg|Karel-ii-miranda.jpg]]" <em>(Portret van &#91;&#91;Karel II van Spanje&#124;Karel II]] (1685) door &#91;&#91;Juan Carre&amp;ntilde;o de Miranda]] (1614-1685))</em></li> <li>19 apr 2004 20:00 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Osman_III.jpg|Osman_III.jpg]]" <em>(En: wikipedia)</em></li> <li>19 apr 2004 19:57 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Costume_traditionnel_bretagne_couple_petit.jpg|Costume_traditionnel_bretagne_couple_petit.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: Costume traditionnel de bretagne (couple) en petit format No d&#39;image 6&lt;br&gt; Titre Homme et femme. &#91;Cote :PYO40P]&lt;br&gt; Auteur Puyo, Constant (1857-1933)&lt;br&gt; Titre &#91; Bretagne vers 1900] / Constant Puyo, photogr.&lt;br&gt; Publication &#91;St Cyr] : &#91;Direction du patrimoine. Archives photographiques], &#91;1890-1910]&lt;br&gt; Description 21 photogr. pos. sur verre, 1 photogr. nég.sur verre. : n. et b. ; 13 x 18 cm et moins (épr.)&lt;br&gt; Licence GPL et GFDL&lt;br&gt; Notes Acq. : Archives photographiques (Médiathèque du Patrimoine) (c) Caisse nationale des Monuments historiques&lt;br&gt; Thème Ethnologie&lt;br&gt; Sujet(s) Costume -- France -- Bretagne (France) -- 1870-1914&lt;br&gt; Rites et cérémonies -- France -- Bretagne (France) -- 1870-1914&lt;br&gt; Vie rurale -- France -- Bretagne (France) -- 1870-1914&lt;br&gt; Recadré par &#91;&#91;Utilisateur:Rinaldum&#124;Rinaldum]] 11 jan 2004 à 19:02 (CET) Trouvé sur le site &#91;&#91;Gallica]] de la &#91;&#91;Bibliothèque nationale de France&#124;BNF]] &#91;&#91;fr:Image:Costume traditionnel bretagne couple petit.jpg]])</em></li> <li>19 apr 2004 19:51 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Mustafa_III.jpg|Mustafa_III.jpg]]" <em>(En: wikipedia)</em></li> <li>19 apr 2004 19:51 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Map_of_New_York_highlighting_Bronx_County.png|Map_of_New_York_highlighting_Bronx_County.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Public domain map courtesy of &#91;http&#58;//www.lib.utexas.edu/ The General Libraries, The University of Texas at Austin], modified to show counties. Released under GFDL. See &#91;&#91;Wikipedia:U.S. county map]]s. &#91;&#91;en:Image:Map of New York highlighting Bronx County.png]])</em></li> <li>19 apr 2004 19:46 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Lu_roundel_westminster.jpg|Lu_roundel_westminster.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: The London Underground Roundel at Westminster tube station * Date: 29th October 2001 20:24 * Camera: Olympus C-1 * Exposure: 1/30 sec. * Focal Length: 4mm * Aperture: F/2.8 * ISO: 200 * Flash: On * Photograph: &#91;&#91;user:ed_g2s&#124;Ed Sanders]] &#91;&#91;en:Image:lu roundel westminster.jpg]])</em></li> <li>19 apr 2004 19:41 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Abdulhamid_I.jpg|Abdulhamid_I.jpg]]" <em>(En: wikipedia)</em></li> <li>19 apr 2004 19:34 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Breslau_um_1900.jpg|Breslau_um_1900.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Breslau um 1900 Quelle: http&#58;//hdl.loc.gov/loc.pnp/ppmsca.01058 Public Domain &#91;&#91;de:Bild:Breslau um 1900.jpg]])</em></li> <li>19 apr 2004 19:32 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Wroclaw_crest.jpg|Wroclaw_crest.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: The crest of &#91;&#91;Wroclaw]] &#91;&#91;en:Image:Wroclaw crest.jpg]])</em></li> <li>19 apr 2004 19:30 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Selim_III.jpg|Selim_III.jpg]]" <em>(En: wikipedia)</em></li> <li>19 apr 2004 19:25 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Bouw_der_bacterie.png|Bouw_der_bacterie.png]]" <em>(Schematische weergave van een bacterie; dooe Michael Chlistalla; van Wikipedia.de; vertaald door mij &#123;&#123;msg:GFDL}})</em></li> <li>19 apr 2004 19:25 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Windermere.jpg|Windermere.jpg]]" <em>(van engelse pagina, Daar gebruit met toestemming van http&#58;//www.beautifulbritain.co.uk )</em></li> <li>19 apr 2004 19:25 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Walmartlogo.png|Walmartlogo.png]]" <em>(En: wikipedia)</em></li> <li>19 apr 2004 19:23 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bremen.rathaus.750pix.jpg|Bremen.rathaus.750pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Bremen Town Hall.&lt;br&gt; Taken by Adrian Pingstone in 1990 and released to the public domain. &#91;&#91;en:Image:bremen.rathaus.750pix.jpg]])</em></li> <li>19 apr 2004 19:19 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Karte_bremen_in_deutschland.png|Karte_bremen_in_deutschland.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Karte Bremen in Deutschland &#91;&#91;de:Bild:Karte bremen in deutschland.png]])</em></li> <li>19 apr 2004 19:18 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bremen_coa.jpg|Bremen_coa.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Bremen coat of arms &#91;&#91;en:Image:bremen coa.jpg]])</em></li> <li>19 apr 2004 19:10 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Ottoman_1683.png|Ottoman_1683.png]]" <em>(En: wikipedia)</em></li> <li>19 apr 2004 19:10 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Ottoman_Coat_of_Arms.jpg|Ottoman_Coat_of_Arms.jpg]]" <em>(En: wikipedia)</em></li> <li>19 apr 2004 19:09 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Bakeliet_Reactie.png|Bakeliet_Reactie.png]]" <em>(Bakeliet condensatie reactie; door MarkZi via ChemQuelle onder GFDL; vertaald vanaf Wikipedia DE door mij)</em></li> <li>19 apr 2004 19:08 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Knitting.jpg|Knitting.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#39;&#39;&#39;Description:&#39;&#39;&#39; Photo of knitted hat, yarn, and knitting needles &#39;&#39;&#39;Source:&#39;&#39;&#39; Photograph taken by Jared C. Benedict on 06 March 2004. &#39;&#39;&#39;Copyright:&#39;&#39;&#39; &amp;copy; Jared C. Benedict. Licensed under the &#91;&#91;GFDL]] by photographer Jared C. Benedict (myself). &#39;&#39;&#39;Other versions:&#39;&#39;&#39; &#91;&#91;Media:Knitting.jpg&#124;larger version]] (&#91;&#91;:Image:Knitting.jpg&#124;Info Page]]) &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:Knitting.jpg]])</em></li> <li>19 apr 2004 19:02 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Stamp-ctc-hiphop-breakdancing.jpg|Stamp-ctc-hiphop-breakdancing.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Celebrate the Century - 1980s - Breakdancing &amp; Hiphop &#91;&#91;en:Image:Stamp-ctc-hiphop-breakdancing.jpg]])</em></li> <li>19 apr 2004 18:59 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:A4_RIJSWIJK.JPG|A4_RIJSWIJK.JPG]]" <em>(Eerdere versie hersteld)</em></li> <li>19 apr 2004 18:58 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Brunswick_cathedral.JPG|Brunswick_cathedral.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Photo of Cathedral at Brunswick (Germany), with the Lion statue (taken Feb. 12, 2002 by &#91;&#91;User:Djmutex&#124;djmutex]]), herewith licensed under GFDL. &#91;&#91;en:Image:Brunswick cathedral.JPG]])</em></li> <li>19 apr 2004 18:56 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Burg_Dankwarderode.jpg|Burg_Dankwarderode.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: *Beschreibung: **Burg Dankwarderode im Zentrum Braunschweigs *Quelle: **Fotografiert am 20. Februar 2003 *Fotograf: **&#91;&#91;Benutzer:ArtMechanic&#124;ArtMechanic]] *Copyright Status: **&#91;&#91;GNU Freie Dokumentationslizenz]] &#91;&#91;de:Bild:Burg Dankwarderode.jpg]])</em></li> <li>19 apr 2004 18:55 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Karte_braunschweig_in_deutschland.png|Karte_braunschweig_in_deutschland.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Karte Braunschweig in Deutschland &#91;&#91;de:Bild:Karte braunschweig in deutschland.png]])</em></li> <li>19 apr 2004 18:53 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Filipsiii-velazaquez.jpg|Filipsiii-velazaquez.jpg]]" <em>(&#91;&#91;Filips III]] te paard door &#91;&#91;Diego Vel&amp;aacute;zquez]], ca. 1634/35. Museo del Prado, Madrid.)</em></li> <li>19 apr 2004 18:48 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bratislava_view.jpg|Bratislava_view.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Bratislava townscape &#91;&#91;en:Image:bratislava view.jpg]])</em></li> <li>19 apr 2004 18:48 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Brat_burg.jpg|Brat_burg.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Burg in Bratislava Autor: Denis Barthel GNU Freie Dokumentationslizenz &#91;&#91;de:Bild:brat burg.jpg]])</em></li> <li>19 apr 2004 18:43 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Brazil.Brasilia.01.jpg|Brazil.Brasilia.01.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &lt;center&gt;Brasilia Cathedral &lt;br&gt;Source: Victor Soares/ABr. 13/8/2003 &lt;/center&gt;&lt;small&gt;Photograph copied from the website of &#91;http&#58;//img.radiobras.gov.br/ Agência Brasil], which states: :The Agência Brasil makes images and photos available free of charge. To comply with existing law, we kindly request our users to list the credits as in the example: photographer&#39;s name/ABr. &amp;mdash; A Agência Brasil disponibiliza, gratuitamente, imagens e fotos. Para cumprir a legislação em vigor, solicitamos aos nossos usuários a gentileza de registrar os créditos como no exemplo: nome do fotógrafo/ABr. This photo appeared as 8253.jpg on 13/8/2003. The photo was downloaded, cropped, and resized by Hajor. &#123;&#123;msg:CopyrightedFreeUseProvided}} credit is given to ABr and the photographer.&#39;&#39; 8253.jpg. Brasília, 13/8/2003 (Agência Brasil - ABr) - Imagem da Esplanada dos Ministérios na primeira chuva em Brasília depois de 72 dias de seca (foto: Victor Soares - hor. 38) &#91;&#91;en:Image:Brazil.Brasilia.01.jpg]])</em></li> <li>19 apr 2004 18:36 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:BrandonLee.jpg|BrandonLee.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Brandon Lee, from cover of &#39;&#39;&#91;&#91;Brandon Lee (They Died Too Young)]]&#39;&#39; by &#91;&#91;Cindy Dyson]] &#91;&#91;en:Image:BrandonLee.jpg]])</em></li> <li>19 apr 2004 18:36 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:TV_turnoff_logo.gif|TV_turnoff_logo.gif]]" <em>(Ik vraag om toestemming)</em></li> <li>19 apr 2004 18:20 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Mahmud_II.jpg|Mahmud_II.jpg]]" <em>(En: wikipedia)</em></li> <li>19 apr 2004 18:12 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bourtange06.jpg|Bourtange06.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Karte der Festung Bourtange von 1742, copyright: &#91;&#91;Gemeinfreiheit]] &#91;&#91;de:Bild:bourtange06.jpg]])</em></li> <li>19 apr 2004 18:11 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bourtange04.jpg|Bourtange04.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Festung Bourtange, Blick von einer Bastion, von mir selbst in SW fotografiert, Copyright: &#91;&#91;GNU FDL]] &#91;&#91;de:Bild:bourtange04.jpg]])</em></li> <li>19 apr 2004 18:11 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bourtange03.jpg|Bourtange03.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Festung Bourtange, Detail einer der Bastionen, von mir selbst in SW fotografiert, Copyright: &#91;&#91;GNU FDL]] &#91;&#91;de:Bild:bourtange03.jpg]])</em></li> <li>19 apr 2004 18:10 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bourtange02.jpg|Bourtange02.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Festung Bourtange, Detail Münstersches Tor, von mir selbst in SW fotografiert, Copyright: &#91;&#91;GNU FDL]] &#91;&#91;de:Bild:bourtange02.jpg]])</em></li> <li>19 apr 2004 18:09 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bourtange01.jpg|Bourtange01.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Festung Bourtange, Zugbrücke und Münstersches Tor, von mir selbst in Farbe fotografiert, Copyright: &#91;&#91;GNU FDL]] &#91;&#91;de:Bild:bourtange01.jpg]])</em></li> <li>19 apr 2004 17:56 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Karte_bottrop_in_deutschland.png|Karte_bottrop_in_deutschland.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Karte Bottrop in Deutschland &#91;&#91;de:Bild:Karte bottrop in deutschland.png]])</em></li> <li>19 apr 2004 17:53 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:ButterMakingPalestine1914.jpg|ButterMakingPalestine1914.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: traditional butter making in the Paletine, from March 1914 &#91;&#91;National Geographic Magazine]] &#123;&#123;msg:PD-US}} &#91;&#91;en:Image:ButterMakingPalestine1914.jpg]])</em></li> <li>19 apr 2004 17:48 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Boston_Landsat.jpg|Boston_Landsat.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Boston LANDSAT &#91;&#91;en:Image:Boston Landsat.jpg]])</em></li> <li>19 apr 2004 17:46 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Boston20040307-03.jpg|Boston20040307-03.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: photo of Boston across the Charles River Basin by Brian Corr, March 7, 2004 &#91;&#91;en:Image:Boston20040307-03.jpg]])</em></li> <li>19 apr 2004 17:45 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Boston_Old_SH-200px.jpg|Boston_Old_SH-200px.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Photo of Old State House in Boston, taken September 1993 by Stan Shebs and licensed under GFDL, 200px across &#91;&#91;en:Image:Boston Old SH-200px.jpg]])</em></li> <li>19 apr 2004 17:40 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Sultan_abd-ul-aziz.jpg|Sultan_abd-ul-aziz.jpg]]" <em>(En: wikipedia)</em></li> <li>19 apr 2004 17:38 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Basic_bossa_nova_guitar_rhythm.PNG|Basic_bossa_nova_guitar_rhythm.PNG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Trimmed PNG version of User:Hyacinth&#39;s Image:Basic bossa-nova guitar rhythm.bmp &#91;&#91;en:Image:Basic bossa nova guitar rhythm.PNG]])</em></li> <li>19 apr 2004 17:33 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bose_Einstein_condensate.png|Bose_Einstein_condensate.png]]" <em>(Vanaf Engelse wikipedia, &#91;&#91;en:Bose_Einstein_condensate.png]])</em></li> <li>19 apr 2004 17:29 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Waldbrand.jpg|Waldbrand.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Waldbrand Quelle: http&#58;//www.accessnoaa.noaa.gov/sep0101/ public domain Photo by Todd Heitkamp, Riverton, Wyoming acting meteorologist-in-charge &#91;&#91;de:Bild:Waldbrand.jpg]])</em></li> <li>19 apr 2004 17:12 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:PCB.png|PCB.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: Molécule de pyralène &#91;&#91;fr:Image:pyralene.png]])</em></li> <li>19 apr 2004 16:51 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Murad_V.jpg|Murad_V.jpg]]" <em>(En: wikipedia)</em></li> <li>19 apr 2004 16:19 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Sultan_abdul-hamid_II.jpg|Sultan_abdul-hamid_II.jpg]]" <em>(En: wikipedia)</em></li> <li>19 apr 2004 16:08 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:MehmedV.jpg|MehmedV.jpg]]" <em>(En: wikipedia)</em></li> <li>19 apr 2004 15:55 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:MehmedVI.jpg|MehmedVI.jpg]]" <em>(En: wikipedia)</em></li> <li>19 apr 2004 15:33 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Mustafa_IV.jpg|Mustafa_IV.jpg]]" <em>(en:wikipedia)</em></li> <li>19 apr 2004 15:32 [[Gebruiker:Conget|Conget]] heeft ge-upload: "[[:Afbeelding:Atoomb2.gif|Atoomb2.gif]]" <em>(Eigen gemaakt. Makelijke forumle voor Atoombom)</em></li> <li>19 apr 2004 15:22 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Eifel.png|Eifel.png]]" <em>(van de Duitse Wiki, eigen tekening van de uploader aldaar)</em></li> <li>19 apr 2004 13:41 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Bord2jk.jpg|Bord2jk.jpg]]" <em>(Fritz8 - print)</em></li> <li>19 apr 2004 13:36 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Bord2jk.jpg|Bord2jk.jpg]]" <em>(Fritz8 - print)</em></li> <li>19 apr 2004 13:23 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Bord1jk.jpg|Bord1jk.jpg]]" <em>(Fritz8 - print)</em></li> <li>19 apr 2004 11:15 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Capajk.jpg|Capajk.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>19 apr 2004 11:08 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Maxeuwe.jpg|Maxeuwe.jpg]]" <em>(toestemming Titkov (zie overleg))</em></li> <li>19 apr 2004 09:30 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Osdl_logo.png|Osdl_logo.png]]"</li> <li>19 apr 2004 09:19 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Minijk.jpg|Minijk.jpg]]" <em>(Fritz8 - print)</em></li> <li>19 apr 2004 08:16 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:EHS.jpg|EHS.jpg]]" <em>(Publiek domein zie: artikel 15b, auteurswet 1912)</em></li> <li>19 apr 2004 08:14 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Alsalogo.gif|Alsalogo.gif]]"</li> <li>18 apr 2004 23:10 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.png|Test.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-eo. De beschrijving daar was: nl wikipedia &#91;&#91;eo:Dosiero:idor2.png]])</em></li> <li>18 apr 2004 22:28 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Cumbria.png|Cumbria.png]]" <em>(van engelse pagina)</em></li> <li>18 apr 2004 22:00 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Surrey.png|Surrey.png]]" <em>(van engelse pagina)</em></li> <li>18 apr 2004 20:43 [[Gebruiker:Geus|Geus]] heeft ge-upload: "[[:Afbeelding:IJssel_Wijhe.jpg|IJssel_Wijhe.jpg]]" <em>(Eerdere versie hersteld)</em></li> <li>18 apr 2004 20:42 [[Gebruiker:Geus|Geus]] heeft ge-upload: "[[:Afbeelding:IJssel_Wijhe.jpg|IJssel_Wijhe.jpg]]" <em>(Eerdere versie hersteld)</em></li> <li>18 apr 2004 20:40 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Triceratops.jpg|Triceratops.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Triceratop, fotografiert von M. Zibelius, Museum, GNU FDL erteilt &#91;&#91;de:Bild:mus1.jpeg]])</em></li> <li>18 apr 2004 19:59 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Somerset.png|Somerset.png]]" <em>(van engelse pagina)</em></li> <li>18 apr 2004 19:52 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:LogoLinuxbase.png|LogoLinuxbase.png]]" <em>(Logo Linuxbase)</em></li> <li>18 apr 2004 19:48 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:7of9.jpg|7of9.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#91;&#91;Seven of Nine]] of &#91;&#91;Star Trek]] Fair use screenshot &#91;&#91;en:Image:7of9.jpg]])</em></li> <li>18 apr 2004 19:42 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Karte_Bophuthatswana_in_Suedafrika.png|Karte_Bophuthatswana_in_Suedafrika.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Lage von Bophuthatswana in Südafrika (aus en-Wikipedia) &#91;&#91;de:Bild:Karte Bophuthatswana in Suedafrika.png]])</em></li> <li>18 apr 2004 19:42 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Image:SouthAfricaBantustanBophuthatswana.png|Image:SouthAfricaBantustanBophuthatswana.png]]"</li> <li>18 apr 2004 19:40 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Image:SouthAfricaBantustanBophuthatswana.png|Image:SouthAfricaBantustanBophuthatswana.png]]" <em>(Vanaf Engelse wikipedia)</em></li> <li>18 apr 2004 19:35 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bootes_constellation_map_small.png|Bootes_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Bootes_constellation_map_small.png]])</em></li> <li>18 apr 2004 19:34 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Dorset.png|Dorset.png]]" <em>(van engelse pagina)</em></li> <li>18 apr 2004 19:25 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bodnik1.jpg|Bodnik1.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Jagdbogenschütze mit Langbogen &#91;&#91;de:Bild:Bodnik1.jpg]])</em></li> <li>18 apr 2004 19:20 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bonner_Rathaus.jpg|Bonner_Rathaus.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Altes Bonner Rathaus &#91;&#91;de:Bild:Bonner Rathaus.jpg]])</em></li> <li>18 apr 2004 19:13 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bombardes.jpg|Bombardes.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &quot;Bombardes&quot; from Kevrenn an Arvorig &#91;&#91;en:Image:Bombardes.jpg]])</em></li> <li>18 apr 2004 19:10 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:1919-Trotsky_Lenin_Kamenev-Party-Congress.gif|1919-Trotsky_Lenin_Kamenev-Party-Congress.gif]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: L to R: Trotsky, Lenin, Kamenev in 1919 &#91;&#91;en:Image:1919-Trotsky Lenin Kamenev-Party-Congress.gif]])</em></li> <li>18 apr 2004 19:09 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bolshevik-meeting.jpg|Bolshevik-meeting.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Bolshevik meeting. public domain. &#91;&#91;en:Image:Bolshevik-meeting.jpg]])</em></li> <li>18 apr 2004 19:04 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bologna_3.jpg|Bologna_3.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Typische Arkaden in Bologna Fotografiert von: &#91;&#91;Benutzer:Softeis&#124;Softeis]] 11:43, 27. Jun 2003 (CEST) im Juni 2003 &#91;&#91;de:Bild:bologna 3.jpg]])</em></li> <li>18 apr 2004 19:03 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bologna_2.jpg|Bologna_2.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Marktplatz von Bologna Fotografiert von: &#91;&#91;Benutzer:Softeis&#124;Softeis]] 11:42, 27. Jun 2003 (CEST) im Juni 2003 &#91;&#91;de:Bild:bologna 2.jpg]])</em></li> <li>18 apr 2004 19:02 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bologna_1.jpg|Bologna_1.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Bologna: einer der schiefen Türme Fotografiert von: &#91;&#91;Benutzer:Softeis&#124;Softeis]] 11:42, 27. Jun 2003 (CEST), Juni 2003 &#91;&#91;de:Bild:bologna 1.jpg]])</em></li> <li>18 apr 2004 18:56 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Armedforces_boxing.jpg|Armedforces_boxing.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Armed Forces members boxing at the 2004 Armed Forces Boxing Championships, Picture from: http&#58;//www-p.afsv.af.mil/AFSports/Sports/Boxing.htm License: Information presented on Air Force Services Agency Website is considered public information and may be distributed or copied. Use of appropriate byline/photo/image credits is requested. - http&#58;//www.afsv.af.mil/ &#91;&#91;en:Image:Armedforces boxing.jpg]])</em></li> <li>18 apr 2004 18:51 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bogota_co.jpg|Bogota_co.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Bogota, Colombia from Monserrate Chris Ashton September 6, 2003 &#91;&#91;en:Image: Bogota co.jpg]])</em></li> <li>18 apr 2004 18:34 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Karte_Bukowina.jpg|Karte_Bukowina.jpg]]" <em>(Vanaf duitse wikipedia)</em></li> <li>18 apr 2004 18:31 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Mayflower2.jpg|Mayflower2.jpg]]" <em>(van engelse pagina)</em></li> <li>18 apr 2004 18:30 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bucuresti.jpg|Bucuresti.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-ro. De beschrijving daar was: Bucure&amp;#351;ti &#91;&#91;ro:Imagine:Bucuresti.jpg]])</em></li> <li>18 apr 2004 18:30 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bucuresti-localization.png|Bucuresti-localization.png]]" <em>(Ligging van Boekarest, vanaf Engelse wikipedia &#91;&#91;en:Image:Bucuresti-localization.png]])</em></li> <li>18 apr 2004 18:29 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bucuresti-stema.png|Bucuresti-stema.png]]" <em>(Wapen Boekarest, vanaf engelse wikipedia &#91;&#91;en:Image:Bucuresti-stema.png]])</em></li> <li>18 apr 2004 18:26 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Singapore.b747.london.750pix.jpg|Singapore.b747.london.750pix.jpg]]" <em>(Boeing 747, vanaf Engelse wikipedia, Singapore Airlines Boeing 747-412 (9V-SPM), on the approach to London (Heathrow) Airport (UK). &#91;&#91;en:Image:Singapore.b747.london.750pix.jpg]])</em></li> <li>18 apr 2004 18:22 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Singapore.b747.london.750pix.jpg|Singapore.b747.london.750pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Singapore Airlines Boeing 747-412 (9V-SPM), on the approach to London (Heathrow) Airport (UK).&lt;br&gt; Photographed by Adrian Pingstone in September 2003 and released to the public domain. &#91;&#91;en:Image: singapore.b747.london.750pix.jpg]])</em></li> <li>18 apr 2004 18:18 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Ba.b737-436.g-docp.800pix.jpg|Ba.b737-436.g-docp.800pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: A Boeing 737-400 of British Airways (G-DOCP) on the approach to London (Heathrow) Airport.&lt;br&gt; This picture is 800 pixels wide.&lt;br&gt; Photographed by Adrian Pingstone (myself) in August 2002 and released to the public domain. &#123;&#123;msg:PD}} &#91;&#91;en:Image:ba.b737-436.g-docp.800pix.jpg]])</em></li> <li>18 apr 2004 18:14 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Buddha_lantau.jpg|Buddha_lantau.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Buddha on Lantau Island &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:Buddha lantau.jpg]])</em></li> <li>18 apr 2004 18:05 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:BobbyFischer.jpg|BobbyFischer.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#123;&#123;msg:unverified}} &#91;&#91;en:Image:BobbyFischer.jpg]])</em></li> <li>18 apr 2004 17:53 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Hazelnoot_struik.jpg|Hazelnoot_struik.jpg]]" <em>(zelfgemaakte foto van hazelnoot (Corylus spp.) struik)</em></li> <li>18 apr 2004 17:47 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Flor.png|Flor.png]]" <em>(Doorsnede bloem, vanaf eo wikipedia, Mi prenis la bildon el la reta vortaro. GNU-libera. upload op en door (for) (nun) 09:20, 24. Mar 2004 . . Razilklingo (39884 bitokoj) )</em></li> <li>18 apr 2004 17:40 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Violeta.jpg|Violeta.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-es. De beschrijving daar was: Copiado de fr.wikipedia &#91;&#91;es:Imagen:Violeta.jpg]])</em></li> <li>18 apr 2004 17:34 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Arteriessystem.png|Arteriessystem.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: The syetm or arteries, from Nordisk familjebok. Image in public domain. &#91;&#91;en:Image:Arteriessystem.png]])</em></li> <li>18 apr 2004 15:46 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Arundel.jpg|Arundel.jpg]]" <em>(eigen foto)</em></li> <li>18 apr 2004 15:34 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bjork.jjm.jpg|Bjork.jjm.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#39;&#39;&#39;Source&#39;&#39;&#39;: Taken from the &#91;http&#58;//unit.bjork.com/specials/pics/frame.htm Bjork.com photo gallery] &#39;&#39;This image is copyrighted. Its use is contended to be &#91;&#91;fair use]] under &#91;&#91;United States]] law. See: &#91;&#91;Wikipedia:Copyrights&#124;Copyrights]]&#39;&#39;. &#61;= Fair use for &#91;&#91;bjork.jjm.jpg]] == The image bjork.jjm.jpg is being linked here; though the picture is originally copyright I (swidly) feel it is covered by fair use because: 1) It is located in a picture gallery section of the website, which usually implies it is available for public download and use. 2) The picture is not being used for commercial purposes. &#39;&#39;&#39;Description&#39;&#39;&#39;: A picture of Icelandic musical artist Bjork &#91;&#91;en:Image:bjork.jjm.jpg]])</em></li> <li>18 apr 2004 15:19 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Newforest.jpg|Newforest.jpg]]" <em>(eigen foto)</em></li> <li>18 apr 2004 15:06 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:EGKSvlag.png|EGKSvlag.png]]" <em>(van duitse pagina)</em></li> <li>18 apr 2004 14:29 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Torquay2.jpg|Torquay2.jpg]]" <em>(torquay, eigen foto)</em></li> <li>18 apr 2004 14:29 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Torquay1.jpg|Torquay1.jpg]]" <em>(torquay, eigen foto)</em></li> <li>18 apr 2004 13:48 [[Gebruiker:Henricus|Henricus]] heeft ge-upload: "[[:Afbeelding:Lower_saxony_aur.png|Lower_saxony_aur.png]]" <em>(Kaart van Aurich (uit en: wiki - &#91;http&#58;//en.wikipedia.org/wiki/Wikipedia:WikiProject_German_districts/Maptemplates bron]))</em></li> <li>18 apr 2004 12:48 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Oppo2jk.jpg|Oppo2jk.jpg]]" <em>(Fritz8 - print)</em></li> <li>18 apr 2004 12:20 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Oppo1jk.jpg|Oppo1jk.jpg]]" <em>(Fritz8 - print)</em></li> <li>18 apr 2004 10:57 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Kerf4.jpg|Kerf4.jpg]]" <em>(Eigen foto)</em></li> <li>18 apr 2004 10:55 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Kerf3.jpg|Kerf3.jpg]]" <em>(Eigen foto)</em></li> <li>18 apr 2004 10:54 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Kerf2.jpg|Kerf2.jpg]]" <em>(Eigen foto)</em></li> <li>18 apr 2004 10:52 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Kerf1.jpg|Kerf1.jpg]]" <em>(Eigen foto)</em></li> <li>18 apr 2004 09:59 [[Gebruiker:Moose1960|Moose1960]] heeft ge-upload: "[[:Afbeelding:Papageno1.jpg|Papageno1.jpg]]"</li> <li>18 apr 2004 09:59 [[Gebruiker:Moose1960|Moose1960]] heeft ge-upload: "[[:Afbeelding:Papageno.jpg|Papageno.jpg]]" <em>(Eerdere versie hersteld)</em></li> <li>18 apr 2004 09:55 [[Gebruiker:Moose1960|Moose1960]] heeft ge-upload: "[[:Afbeelding:Papageno.jpg|Papageno.jpg]]" <em>(Emanuel Schikaneder als eerste Papageno)</em></li> <li>18 apr 2004 09:48 [[Gebruiker:Moose1960|Moose1960]] heeft ge-upload: "[[:Afbeelding:Papageno.jpg|Papageno.jpg]]" <em>(Emanuel Schikaneder als eerste Papageno)</em></li> <li>18 apr 2004 09:15 [[Gebruiker:Waerth|Waerth]] heeft ge-upload: "[[:Afbeelding:CambodiaPhnomPenh.png|CambodiaPhnomPenh.png]]" <em>(kaart van en wikipedia)</em></li> <li>18 apr 2004 09:07 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Abdijkapel.jpg|Abdijkapel.jpg]]" <em>(abdijkapel - eigen foto)</em></li> <li>18 apr 2004 08:34 [[Gebruiker:Moribunt|Moribunt]] heeft ge-upload: "[[:Afbeelding:Rantisi.jpg|Rantisi.jpg]]" <em>(Van de Arabische Wikipedia)</em></li> <li>17 apr 2004 22:45 [[Gebruiker:Puckly|Puckly]] heeft ge-upload: "[[:Afbeelding:De_vrouw_uit_1001_nacht.jpg|De_vrouw_uit_1001_nacht.jpg]]" <em>(Boekcover van De vrouw uit 1001 nacht)</em></li> <li>17 apr 2004 22:44 [[Gebruiker:Puckly|Puckly]] heeft ge-upload: "[[:Afbeelding:1001nacht.gif|1001nacht.gif]]" <em>(Boekcover van verhalen uit 1001 nacht)</em></li> <li>17 apr 2004 22:13 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Eigernoord.jpg|Eigernoord.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Ein Zug der &#91;&#91;Jungfraubahn]] am Fuße der &#91;&#91;Eiger]]nordwand. ---- &#39;&#39;Dieses Foto wurde von &#91;&#91;Benutzer:LosHawlos&#124;Martin Hawlisch]] fotografiert und unter der &#91;&#91;GFDL]] veröffentlicht.&#39;&#39; ---- &#91;&#91;de:Bild:Mh eigernordwand winter.jpeg]] &#123;&#123;msg:GFDL}})</em></li> <li>17 apr 2004 21:56 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Alcatraz.jpg|Alcatraz.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: This image of &#91;&#91;Alcatraz Island]] comes from the &#91;http&#58;//GIMP-savvy.com/cgi-bin/img.cgi?noaauH1zY36LdMg2344 GIMP photo archive] &#91;&#91;en:Image:Alcatraz.jpg]] Originele bron: US National Oceanic and Atmospheric Administration.&lt;p&gt;&#123;&#123;msg:PD}})</em></li> <li>17 apr 2004 21:21 [[Gebruiker:Geus|Geus]] heeft ge-upload: "[[:Afbeelding:Berkel.jpg|Berkel.jpg]]" <em>(Berkel bij Eibergen, foto Cees Kuppens, 16-04-04 vrijgegeven voor public domain)</em></li> <li>17 apr 2004 20:23 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Laddermolen_Octrooi.png|Laddermolen_Octrooi.png]]" <em>(Schamatische weergave van de laddermolen; uit eht octrooi op die uitvinding; Bron: Esp@cenet)</em></li> <li>17 apr 2004 20:02 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:WildeHyacint-plant-kl.jpg|WildeHyacint-plant-kl.jpg]]" <em>(omgebogen top van de as van de bloemtros en daarnaast de roomwitte helmknoppen in de bloemen)</em></li> <li>17 apr 2004 20:01 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:WildeHyacint-plant-hr.jpg|WildeHyacint-plant-hr.jpg]]" <em>(eigen foto, 2e paasdag, scheveningse duinen)</em></li> <li>17 apr 2004 19:59 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:WildeHyacint-overz-kl.jpg|WildeHyacint-overz-kl.jpg]]" <em>(eigen foto, 2e paasdag, scheveningse duinen)</em></li> <li>17 apr 2004 19:58 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:WildeHyacint-overz-hr.jpg|WildeHyacint-overz-hr.jpg]]" <em>(eigen foto, 2e paasdag, scheveningse duinen)</em></li> <li>17 apr 2004 19:51 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:WildeHyacint-CloseUp-kl.jpg|WildeHyacint-CloseUp-kl.jpg]]" <em>(eigen foto, 2e paasdag, scheveningse duinen)</em></li> <li>17 apr 2004 19:51 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:WildeHyacint-CloseUp-hr.jpg|WildeHyacint-CloseUp-hr.jpg]]" <em>(eigen foto, 2e paasdag, scheveningse duinen)</em></li> <li>17 apr 2004 19:10 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Boccaccio.jpg|Boccaccio.jpg]]" <em>(van italiaanse pagina: http&#58;//www.news.harvard.edu/gazette/2001/05.03/photos/03-hankins2-200.jpg)</em></li> <li>17 apr 2004 18:58 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Riemanngrap.png|Riemanngrap.png]]" <em>(De Riemanngrap; zelf gemaakt)</em></li> <li>17 apr 2004 18:57 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Riemannsom.png|Riemannsom.png]]" <em>(Een Riemannsom; zelf gemaakt)</em></li> <li>17 apr 2004 18:18 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Duin1.JPG|Duin1.JPG]]" <em>(eigen foto)</em></li> <li>17 apr 2004 18:16 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Duin3.JPG|Duin3.JPG]]" <em>(eigen foto)</em></li> <li>17 apr 2004 18:10 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Duin4.JPG|Duin4.JPG]]" <em>(Eigen foto)</em></li> <li>17 apr 2004 18:06 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Duin2.JPG|Duin2.JPG]]" <em>(Eigen foto)</em></li> <li>17 apr 2004 17:50 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:NASA_NorthSea1.jpg|NASA_NorthSea1.jpg]]" <em>(&#91;&#91;de:Bild:NASA NorthSea1.jpg]] Nordsee, NASA-Aufnahme Public Domain. Saharasand über die Nordsee. Die roten Punkte markieren Feuer. Von: http&#58;//visibleearth.nasa.gov/cgi-bin/viewrecord?25413 Bilder sind Public Domain, ausser beim Bild stated otherwise (ist es nicht) )</em></li> <li>17 apr 2004 17:42 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Noordzee.JPG|Noordzee.JPG]]" <em>(eigen foto)</em></li> <li>17 apr 2004 16:34 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Stalingrad.jpg|Stalingrad.jpg]]" <em>(&#91;&#91;en:Image:Stalingrad.jpg]] Soliders at Stalingrad from http&#58;//www-cgsc.army.mil/milrev/portuguese/2ndQtr01/hahn.asp License: Information presented on the CGSC web site is considered public information and may be distributed or copied. Use of appropriate byline/photo/image credits is requested. - http&#58;//www-cgsc.army.mil/notice.asp This image has been released into the public domain by the author, or its copyright has expired. This applies worldwide. See Copyright. )</em></li> <li>17 apr 2004 15:42 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Italy_Regions_Latium_220px.png|Italy_Regions_Latium_220px.png]]" <em>(Latium (van Engelse Wiki))</em></li> <li>17 apr 2004 15:41 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Flagge_Latiums.png|Flagge_Latiums.png]]" <em>(Vlag van Latium (van Duitse Wiki))</em></li> <li>17 apr 2004 14:39 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Billy_the_Kid.jpg|Billy_the_Kid.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Public domain photo &#91;&#91;en:Image:Billy the Kid.jpg]])</em></li> <li>17 apr 2004 14:22 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:RichardFrancisBurton.jpeg|RichardFrancisBurton.jpeg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Richard Francis Burton, portrait by Frederic Leighton (1830-1896), National Portrait Gallery, London &#91;&#91;en:Image:RichardFrancisBurton.jpeg]])</em></li> <li>17 apr 2004 14:18 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Billmonroe.jpg|Billmonroe.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Bill Monroe &#91;&#91;de:Bild:billmonroe.jpg]])</em></li> <li>17 apr 2004 14:15 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Meidoorn_Den_Haag_april_2004.jpg|Meidoorn_Den_Haag_april_2004.jpg]]" <em>(Meidoornboom, eigen foto, ter beschikking gesteld onder GUN/FDL )</em></li> <li>17 apr 2004 14:09 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Magnolia,_Alphen_aan_den_Rijn,_april_2004.jpg|Magnolia,_Alphen_aan_den_Rijn,_april_2004.jpg]]" <em>(Magnoliaboom, eigen foto, ter beschikking gesteld onder GNU/FDL licentie)</em></li> <li>17 apr 2004 14:00 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Human_eyesight_two_children_and_ball_with_myopia_short-sightedness.png|Human_eyesight_two_children_and_ball_with_myopia_short-sightedness.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: human eyesight two children and ball with myopia short-sightedness Copyright: public domain, US gov. Source: &#91;http&#58;//www.nei.nih.gov/photo/sims/index.asp] Credit of &#91;&#91;National Institutes of Health&#124;NIH]] &#91;&#91;National Eye Institute]] requested. Part of a set of eye pictures: *&#91;&#91;:Image:Human eyesight two children and ball normal vision.jpg]] *&#91;&#91;:Image:Human eyesight two children and ball with age-related macular degeneration.jpg]] *&#91;&#91;:Image:Human eyesight two children and ball with cataract.jpg]] *&#91;&#91;:Image:Human eyesight two children and ball with diabetic retinopathy.jpg]] *&#91;&#91;:Image:Human eyesight two children and ball with glaucoma.jpg]] *&#91;&#91;:Image:Human_eyesight two_children and ball with retinitis pigmentosa or tunnel vision.png]] *&#91;&#91;:Image:Human eyesight two children and ball with myopia short-sightedness.png]] &#91;http&#58;//www.nei.nih.gov/photo/index.asp Other NEI NIH images] &#91;&#91;en:Image:Human eyesight two children and ball with myopia short-sightedness.png]])</em></li> <li>17 apr 2004 13:58 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Human_eyesight_two_children_and_ball_normal_vision.jpg|Human_eyesight_two_children_and_ball_normal_vision.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: human eyesight two children and ball normal vision Copyright: public domain, US gov.&#91;http&#58;//www.nei.nih.gov/nehep/what.htm] Credit of &#91;&#91;National Institutes of Health&#124;NIH]] &#91;&#91;National Eye Institute]] requested. Part of a set of eye pictures: *&#91;&#91;:Image:Human eyesight two children and ball normal vision.jpg]] *&#91;&#91;:Image:Human eyesight two children and ball with age-related macular degeneration.jpg]] *&#91;&#91;:Image:Human eyesight two children and ball with cataract.jpg]] *&#91;&#91;:Image:Human eyesight two children and ball with diabetic retinopathy.jpg]] *&#91;&#91;:Image:Human eyesight two children and ball with glaucoma.jpg]] &#91;http&#58;//www.nei.nih.gov/photo/index.asp Other NEI NIH images] &#91;&#91;en:Image:Human eyesight two children and ball normal vision.jpg]])</em></li> <li>17 apr 2004 13:21 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:AndreKuipers.jpg|AndreKuipers.jpg]]" <em>(Foto André Kuipers. Afkomstig van NASA.)</em></li> <li>17 apr 2004 13:18 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Piemont_in_Italien.png|Piemont_in_Italien.png]]" <em>(Kaart van Piëmont (van Duitse Wiki))</em></li> <li>17 apr 2004 13:13 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Flagge_Piemonts.png|Flagge_Piemonts.png]]" <em>(Vlag van Piëmont (van Duitse Wiki))</em></li> <li>17 apr 2004 12:18 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Ulvejk.jpg|Ulvejk.jpg]]" <em>(Fritz8 - print)</em></li> <li>17 apr 2004 12:09 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Traxjk.jpg|Traxjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>17 apr 2004 12:03 [[Gebruiker:Wamzuurstra|Wamzuurstra]] heeft ge-upload: "[[:Afbeelding:Kippenopschouders.jpg|Kippenopschouders.jpg]]"</li> <li>17 apr 2004 11:59 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Langejk.jpg|Langejk.jpg]]" <em>(Fritz8 - print)</em></li> <li>17 apr 2004 11:56 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bernadette.gif|Bernadette.gif]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Saint Bernadette &#91;&#91;en:Image:bernadette.gif]])</em></li> <li>17 apr 2004 11:53 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Fuhrerjk.jpg|Fuhrerjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>17 apr 2004 11:49 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Siekiera_kamienna_z_otworem_1.jpg|Siekiera_kamienna_z_otworem_1.jpg]]" <em>(Give a description for the image:vanaf Poolse wikipedia prehistorische bijl)</em></li> <li>17 apr 2004 11:47 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Feuersteinaxt.jpg|Feuersteinaxt.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: *Beschreibung: Aus Feuerstein hergestellte steinzeitliche Axt. Die Länge der Axt beträgt 31 cm, an der Schneide ist die Axt ca. 8 cm breit. *Quelle: Selbst fotografiert *Fotograf oder Zeichner: Dr. Henning Krämer, Geesthacht *Andere Versionen: *Lizenzstatus: GNU FDL &#91;&#91;de:Bild:Feuersteinaxt.jpg]])</em></li> <li>17 apr 2004 11:47 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Axe_of_iron_from_Swedish_Iron_Age,_found_at_Gotland,_Sweden.jpg|Axe_of_iron_from_Swedish_Iron_Age,_found_at_Gotland,_Sweden.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: PD image, from Swedish Wikipedia &#91;&#91;en:Image:Axe of iron from Swedish Iron Age, found at Gotland, Sweden.jpg]])</em></li> <li>17 apr 2004 11:46 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Rubinjk.jpg|Rubinjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>17 apr 2004 11:39 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Letjk.jpg|Letjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>17 apr 2004 11:35 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(test)</em></li> <li>17 apr 2004 11:33 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Canaljk.jpg|Canaljk.jpg]]" <em>(Fritz8 - print)</em></li> <li>17 apr 2004 11:30 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Bernadette.gif|Bernadette.gif]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Saint Bernadette &#91;&#91;en:Image:bernadette.gif]])</em></li> <li>17 apr 2004 11:28 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Noordsjk.jpg|Noordsjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>17 apr 2004 11:23 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Lenkdrachen_in_Tunesien.jpg|Lenkdrachen_in_Tunesien.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Beschreibung: Lenkdrachen in der tunesischen Sahara. Fotografiert und gesteuert von Katharina Bleuer (was gar nicht so einfach ist :-) im Dezember 2001. Bild darf selbstverständlich weiterverwendet werden, wenn die Autorin genannt wird. &#91;&#91;de:Bild:Lenkdrachen in Tunesien.jpg]])</em></li> <li>17 apr 2004 11:05 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Beso-hieroglifa_nomo.png|Beso-hieroglifa_nomo.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-eo. De beschrijving daar was: hieroglifa nomo de dio Beso &#91;&#91;eo:Dosiero:Beso-hieroglifa nomo.png]])</em></li> <li>17 apr 2004 11:04 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bes_(Egyptian_Mythology).jpg|Bes_(Egyptian_Mythology).jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Egyptian god Bes, Dendera, Egypt. Photo taken by Hajor, December 2002.&lt;br&gt;&#123;&#123;msg:GFDL}} &#91;&#91;en:Image:Bes (Egyptian Mythology).jpg]])</em></li> <li>17 apr 2004 10:56 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bernhard_riemann.jpg|Bernhard_riemann.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: Bernhard Riemann *licence : domaine public *source : http&#58;//www.ifs.csic.es/pres.htm &#91;&#91;fr:Image:bernhard riemann.jpg]])</em></li> <li>17 apr 2004 10:51 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bernard_Law_Montgomery.jpg|Bernard_Law_Montgomery.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was: Bernard Law Montgomery Source: http&#58;//www.maxwell.af.mil/au/afhra/wwwroot/photo_galleries/merhar/Photos/01097635_017.jpg License: &#39;&#39;Information presented on the Maxwell Web Site is considered public information and may be distributed or copied. Use of appropriate byline/photo/image credits is requested.&#39;&#39; http&#58;//www.maxwell.af.mil/privacy.htm &#91;&#91;fr:Image:Bernard Law Montgomery.jpg]])</em></li> <li>17 apr 2004 10:30 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Berlin-wall3.jpg|Berlin-wall3.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-it. De beschrijving daar was: Il Muro di Berlino &#91;&#91;it:Immagine:berlin-wall3.jpg]])</em></li> <li>17 apr 2004 10:30 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Middenjk.jpg|Middenjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>17 apr 2004 10:27 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Conrad_Schumann.jpg|Conrad_Schumann.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: East German border guard, Conrad Schumann leaps to freedom over barbed wire in Berlin on 15 August, 1961; picture in the public domain. Photo by Peter Leibing &#91;&#91;en:Image:Conrad Schumann.jpg]])</em></li> <li>17 apr 2004 10:24 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bethanien06.jpg|Bethanien06.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Public Domain &#91;&#91;de:Bild:bethanien06.jpg]])</em></li> <li>17 apr 2004 10:22 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Lancjk.jpg|Lancjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>17 apr 2004 09:44 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Pope_Innocent_XI.jpg|Pope_Innocent_XI.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: In the &#91;&#91;public domain]] by age &#123;&#123;msg:PD}} &#91;&#91;en:Image:Pope Innocent XI.jpg]])</em></li> <li>17 apr 2004 09:36 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Ben_Affleck.jpg|Ben_Affleck.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#39;&#39;&#39;Caption&#39;&#39;&#39;: 031222-N-7408M-001 Bahrain (Dec. 22, 2003) -- Aboard USS Enterprise (CVN 65) Academy Award winning actor Ben Affleck addresses the crew on the flight deck in front of the ship’s island while kicking off a United Service Organization (USO) sponsored tour of the Arabian Gulf. He is visiting deployed service members throughout the Gulf region. U.S. Navy photo by Photographer&#39;s Mate Airman Justin N. McGarry. (Released) &#39;&#39;&#39;Source&#39;&#39;&#39;: &#91;http&#58;//www.news.navy.mil/view_single.asp?id=11126 navy.mil] &#123;&#123;msg:PD}} &#91;&#91;en:Image:Ben Affleck.jpg]])</em></li> <li>17 apr 2004 09:26 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Delphi_small.jpg|Delphi_small.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Thumbnail version, by mdoege@compuserve.com on 2003-05-19 &#91;&#91;en:Image:Delphi small.jpg]])</em></li> <li>17 apr 2004 09:18 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bhsunnythu.jpg|Bhsunnythu.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: pic of Belo Horizonte, Dec 11, sunny &#91;&#91;en:Image:Bhsunnythu.jpg]])</em></li> <li>17 apr 2004 09:10 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:BelleStarr.jpeg|BelleStarr.jpeg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Belle Starr (19th century photograph) &#91;&#91;en:Image:BelleStarr.jpeg]])</em></li> <li>17 apr 2004 08:52 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Blockfloeten.jpg|Blockfloeten.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Verschiedene &#39;&#39;&#39;Blockflöten&#39;&#39;&#39;. Von oben nach unten: *Tenor in c&#39;, Birnbaumholz *Alt in f&#39;, Maracaibo-Buchs *Sopran in c&quot;, Palisander (zerlegt) *Sopranino in f&quot;, Palisander Fotografiert von &#91;&#91;Benutzer:Mussklprozz&#124;Mussklprozz]] am 2004-04-16. GNU-FDL &#91;&#91;de:Bild:Blockfloeten.jpg]])</em></li> <li>17 apr 2004 08:49 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Chisel.jpeg|Chisel.jpeg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Image of a steel woodworking chisel.&#123;&#123;msg:GFDL}} &#91;&#91;en:Image:Chisel.jpeg]])</em></li> <li>17 apr 2004 08:42 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Forbidden_City_of_China.jpg|Forbidden_City_of_China.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Image from http&#58;//www.ibiblio.org/chinese-music/html/images/GuGong.jpg &#91;&#91;en:Image:Forbidden City of China.jpg]])</em></li> <li>17 apr 2004 08:40 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:China_Beijing.png|China_Beijing.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Map of Beijing &#91;&#91;en:Image:China Beijing.png]])</em></li> <li>17 apr 2004 08:34 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Graves-at-Green-Wood.jpg|Graves-at-Green-Wood.jpg]]" <em>(Vanaf Engelse wikipedia, &#91;&#91;en:Graves-at-Green-Wood.jpg]])</em></li> <li>17 apr 2004 08:31 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Image:Graves-at-Green-Wood.jpg|Image:Graves-at-Green-Wood.jpg]]" <em>(Vanaf Engelse wikipedia &#91;&#91;en:Image:Graves-at-Green-Wood.jpg]])</em></li> <li>17 apr 2004 08:29 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Graves.jpg|Graves.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: A scenic cemetery in rural Spain showing marble headstones Copyright (c) 1996 Steven J. Dunlop, Nerstrand, MN; released under GFDL; all other rights reserved. &#91;&#91;en:Image:graves.jpg]])</em></li> <li>17 apr 2004 08:16 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Posag_zeusa.jpg|Posag_zeusa.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-pl. De beschrijving daar was: z ksi&amp;#261;&amp;#380;ki z 1912 r &#91;&#91;pl:Grafika:posag zeusa.jpg]])</em></li> <li>17 apr 2004 08:13 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Beck.lmb1.jpg|Beck.lmb1.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Beck Hansen, courtesy Spanish Wikipedia &#91;&#91;en:Image:Beck.lmb1.jpg]])</em></li> <li>17 apr 2004 08:07 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Jk_beatles_ringo.jpg|Jk_beatles_ringo.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: John Kelley photo of &#91;&#91;Ringo Starr]] from the &#91;&#91;The Beatles]]&#39; &#91;&#91;The Beatles (album)&#124;white album]]. Apparently not copyrighted, since the law in 1968 required specific notice, and no such notice is present on the album. &#91;&#91;en:Image:jk beatles ringo.jpg]])</em></li> <li>17 apr 2004 08:05 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Jk_beatles_george.jpg|Jk_beatles_george.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: John Kelley photo of &#91;&#91;George Harrison]] from the &#91;&#91;The Beatles]]&#39; &#91;&#91;The Beatles (album)&#124;white album]]. Apparently not copyrighted, since the law in 1968 required specific notice, and no such notice is present on the album. &#91;&#91;en:Image:jk beatles george.jpg]])</em></li> <li>17 apr 2004 08:02 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Jk_beatles_paul.jpg|Jk_beatles_paul.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: John Kelley photo of &#91;&#91;Paul McCartney]] from the &#91;&#91;The Beatles]]&#39; &#91;&#91;The Beatles (album)&#124;white album]]. Apparently not copyrighted, since the law in 1968 required specific notice, and no such notice is present on the album. &#91;&#91;en:Image:jk beatles paul.jpg]] Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: John Kelley photo of &#91;&#91;Paul McCartney]] from the &#91;&#91;The Beatles]]&#39; &#91;&#91;The Beatles (album)&#124;white album]]. Apparently not copyrighted, since the law in 1968 required specific notice, and no such notice is present on the album. &#91;&#91;en:Image:jk beatles paul.jpg]])</em></li> <li>17 apr 2004 06:03 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Bladstandscharnier_rechtop.jpg|Bladstandscharnier_rechtop.jpg]]" <em>(zelfgemaakte foto; blad rechtop door werking bladscharnier bij boon)</em></li> <li>17 apr 2004 06:00 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Bladscharnier_boon.jpg|Bladscharnier_boon.jpg]]" <em>(zelfgemaakte foto; bladscharnier bij boon)</em></li> <li>17 apr 2004 05:57 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Bladscharnier_slapend_boon.jpg|Bladscharnier_slapend_boon.jpg]]" <em>(zelfgemaakte foto;werking bladscharnier bij boon)</em></li> <li>17 apr 2004 00:21 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: PD photo Basil plant &#91;&#91;en:Image:Basil 1511.jpg]])</em></li> <li>16 apr 2004 23:29 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Thomasbayes.jpg|Thomasbayes.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: PD image of Rev. Thomas Bayes &#91;&#91;en:Image:thomasbayes.jpg]])</em></li> <li>16 apr 2004 23:24 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Batterien.JPG|Batterien.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was: Photo einiger Batterien, &#91;&#91;GFDL]] aufgenommen von &#91;&#91;Benutzer:Honina&#124;Honina]] 18:08, 9. Okt 2003 (CEST) &#91;&#91;de:Bild:Batterien.JPG]])</em></li> <li>16 apr 2004 23:16 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:BatonRougeOldCapitalCastle.jpg|BatonRougeOldCapitalCastle.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:Baton Rouge, Louisiana: The old State Capital Castle, from early 20th century postcard&#123;&#123;msg:PD-US}} &#91;&#91;en:Image:BatonRougeOldCapitalCastle.jpg]])</em></li> <li>16 apr 2004 23:13 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Justice_league_batman.jpg|Justice_league_batman.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:Justice League&#39;s Batman, fair use &#91;&#91;en:Image:Justice league batman.jpg]])</em></li> <li>16 apr 2004 23:09 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Batik.jpg|Batik.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:Conversion from bmp to jpg (original version uploaded by Markewilliams). See &#91;&#91;:Image:Batik.bmp]]&#91;&#91;en:Image:Batik.jpg]])</em></li> <li>16 apr 2004 22:51 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Lucrezia_Borgia.jpg|Lucrezia_Borgia.jpg]]" <em>(Vanaf Engelse wikipedia, schilderij door &#91;&#91;Bartolomeo Veneziano]]. &#91;&#91;en:Lucrezia Borgia.jpg]])</em></li> <li>16 apr 2004 19:24 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Peer-bloesem-kl.JPG|Peer-bloesem-kl.JPG]]" <em>(zelfgemaakte foto, eigen tuin)</em></li> <li>16 apr 2004 18:49 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Akkerhoornbloem-CloseUp-kl.jpg|Akkerhoornbloem-CloseUp-kl.jpg]]" <em>(eigen foto 2e paasdag scheveningse duinen)</em></li> <li>16 apr 2004 18:48 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Akkerhoornbloem-overz-hr.jpg|Akkerhoornbloem-overz-hr.jpg]]" <em>(eigen foto 2e paasdag scheveningse duinen)</em></li> <li>16 apr 2004 18:46 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Akkerhoornbloem-overz-kl.jpg|Akkerhoornbloem-overz-kl.jpg]]" <em>(eigen foto 2e paasdag scheveningse duinen)</em></li> <li>16 apr 2004 18:45 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Akkerhoornbloem-CloseUp-hr.jpg|Akkerhoornbloem-CloseUp-hr.jpg]]" <em>(eigen foto 2e paasdag scheveningse duinen)</em></li> <li>16 apr 2004 18:44 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Akkerhoornbloem-bloem-hr.jpg|Akkerhoornbloem-bloem-hr.jpg]]" <em>(eigen foto 2e paasdag scheveningse duinen)</em></li> <li>16 apr 2004 18:42 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Akkerhoornbloem-bloem-kl.jpg|Akkerhoornbloem-bloem-kl.jpg]]" <em>(eigen foto 2e paasdag scheveningse duinen)</em></li> <li>16 apr 2004 17:35 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Kreeft.jpg|Kreeft.jpg]]" <em>(Photo Credit:US National Oceanic and Atmospheric Administration &#91;&#91;en:Image:Lobster.jpg]])</em></li> <li>16 apr 2004 16:08 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Basketball.jpg|Basketball.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:Basketball, 1977, by Rick Dikeman&#123;&#123;msg:GFDL}} &#91;&#91;en:Image:basketball.jpg]])</em></li> <li>16 apr 2004 16:01 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Unknow_lizard2_belize.jpg|Unknow_lizard2_belize.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:Striped basilisk lizard, also known as a &quot;Jesus Christ lizard&quot; in the Belizian jungle.&#91;&#91;en:Image:Unknow lizard2 belize.jpg]])</em></li> <li>16 apr 2004 15:56 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Basilika_(Pompeji).png|Basilika_(Pompeji).png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:Grundri einer Basilika aus Pompeji aus Meyers Konversationslexikon 1888 http&#58;//susi.e-technik.uni-ulm.de:8080/meyers/servlet/showSeite?SeiteNr=0425&amp;BandNr=2&amp;textmode=false &#91;&#91;de:Bild:Basilika (Pompeji).png]])</em></li> <li>16 apr 2004 15:51 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Basilisk.gif|Basilisk.gif]]" <em>(Vanaf russische wikipedia)</em></li> <li>16 apr 2004 15:46 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:OcimumBasilicum.jpg|OcimumBasilicum.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: &#91;&#91;Basil (plant)]] plants on my back porch.&#91;&#91;en:Image:OcimumBasilicum.jpg]])</em></li> <li>16 apr 2004 15:44 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Basil_1511.jpg|Basil_1511.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: PD photo Basil plant &#91;&#91;en:Image:Basil 1511.jpg]])</em></li> <li>16 apr 2004 15:44 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Basil_1511.jpg|Basil_1511.jpg]]" <em>(&#91;&#91;en:Image:Basil 1511.jpg]] PD photo Basil plant )</em></li> <li>16 apr 2004 15:20 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Syria.BasharAlAssad.01.jpg|Syria.BasharAlAssad.01.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was: Pres Bashar al-Assad of Syria &lt;br&gt;Source: Ricardo Stuckert/ABr. 03.Dec.2003 &lt;small&gt;Photograph copied from the website of &#91;http&#58;//www.radiobras.gov.br/ Agiencia Brasil], which states::The Agiencia Brasil makes images and photos available free of charge. To comply with existing law, we kindly request our users to list the credits as in the example: photographers name/ABr. This photo appeared as 11673.jpg on 03.Dec.2003. The photo was downloaded, cropped, and resized by Hajor.&#123;&#123;msg:CopyrightedFreeUseProvided}} credit is given to ABr and the photographer.&#39;&#39;&#91;&#91;en:Image:Syria.BasharAlAssad.01.jpg]])</em></li> <li>16 apr 2004 11:46 [[Gebruiker:Rm|Rm]] heeft ge-upload: "[[:Afbeelding:Reed_relais.jpg|Reed_relais.jpg]]" <em>(eigen compilatie)</em></li> <li>16 apr 2004 11:38 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Dubbeljk.jpg|Dubbeljk.jpg]]" <em>(Fritz8 - print)</em></li> <li>16 apr 2004 11:34 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Evansjk.jpg|Evansjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>16 apr 2004 10:57 [[Gebruiker:Bart|Bart]] heeft ge-upload: "[[:Afbeelding:SuSE-logo.png|SuSE-logo.png]]" <em>(van engelse wikipedia)</em></li> <li>16 apr 2004 10:38 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Pol2jk.jpg|Pol2jk.jpg]]" <em>(Fritz8 - print)</em></li> <li>16 apr 2004 10:35 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Pol1jk.jpg|Pol1jk.jpg]]" <em>(Fritz8 - print)</em></li> <li>16 apr 2004 09:49 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Weensjk.jpg|Weensjk.jpg]]" <em>(Fritz8 - print)</em></li> <li>16 apr 2004 09:12 [[Gebruiker:Bart|Bart]] heeft ge-upload: "[[:Afbeelding:Lojban.png|Lojban.png]]" <em>(van engelse wikipedia)</em></li> <li>16 apr 2004 07:25 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Fietscomputer.jpg|Fietscomputer.jpg]]" <em>(Fietscomputer, mijn eigen computer op de scanner gelegd &#123;&#123;msg:GFDL}})</em></li> <li>16 apr 2004 07:13 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Barracuda_with_prey.jpg|Barracuda_with_prey.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:Image ID: &#91;http&#58;//www.photolib.noaa.gov/reef/reef2567.htm reef2567, The Coral Kingdom Collection]&lt;br&gt;Photographer: Florida Keys National Marine Sanctuary Staff&lt;br&gt;Credit: Florida Keys National Marine Sanctuary&lt;br&gt;&#91;&#91;en:Image:Barracuda with prey.jpg]])</em></li> <li>16 apr 2004 05:48 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:FBISeal.png|FBISeal.png]]" <em>(En: wikipedia)</em></li> <li>16 apr 2004 05:45 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Nsa_seal.png|Nsa_seal.png]]" <em>(En: wikipedia)</em></li> <li>15 apr 2004 23:28 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Marconi.jpg|Marconi.jpg]]" <em>(Marcoini van wike-en (nobelprijsinstituut, 1909 derhalve in PD?))</em></li> <li>15 apr 2004 22:20 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Nz_seebaeren.jpg|Nz_seebaeren.jpg]]" <em>(Fotograf: Mirko Thiessen (Baldhur) Ort: Neuseeland, Südinsel, Februar 1992 Lizenz: GNU FDL &#91;&#91;de:Bild:Nz seebaeren.jpg]])</em></li> <li>15 apr 2004 22:10 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Nord_seebaer_1.jpg|Nord_seebaer_1.jpg]]" <em>(Quelle: U.S. Fish &amp; Wildlife Service (http&#58;//images.fws.gov) &#91;&#91;de:Bild:Nord seebaer 1.jpg]])</em></li> <li>15 apr 2004 21:49 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Barbara_Bush.jpg|Barbara_Bush.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&#91;&#91;Barbara Bush]]: Official White House photo &#91;&#91;en:Image:Barbara Bush.jpg]])</em></li> <li>15 apr 2004 21:44 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Riesenotter.jpg|Riesenotter.jpg]]" <em>(&#91;&#91;de:Bild:Riesenotter.JPG]] Riesenotter, Public-Domain-Bild von U.S. Fish &amp; Wildlife Service (http&#58;//images.fws.gov) )</em></li> <li>15 apr 2004 21:28 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Stokstaartje.jpg|Stokstaartje.jpg]]" <em>(Erdmännchen; Public-Domain-Bild von http&#58;//www.junglewalk.com/frames.asp; fotografiert von Ralf Schmode &#91;&#91;de:Bild:Erdmaennchen.jpg]])</em></li> <li>15 apr 2004 21:19 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Fuchsmanguste.jpg|Fuchsmanguste.jpg]]" <em>(Fuchsmanguste; Public-Domain-Bild von http&#58;//www.junglewalk.com/frames.asp; fotografiert von Ralf Schmode &#91;&#91;de:Bild:Fuchsmanguste.jpg]])</em></li> <li>15 apr 2004 21:16 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:LocationPaysBalte.png|LocationPaysBalte.png]]" <em>(Emplacement des &#91;&#91;Pays baltes]]&lt;br&gt;Source Carte effectu&amp;eacute; par &#91;&#91;:en:User:Vardion]]&lt;br&gt;&#91;&#91;GFDL]] &#91;&#91;fr:Image:LocationPaysBalte.png]])</em></li> <li>15 apr 2004 21:10 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Balthasar_Bekker.jpg|Balthasar_Bekker.jpg]]" <em>(Von Diana Kremer angefertigte Tuschezeichnung von Balthasar Bekker nach dem Titelblatt des 1693 ver&amp;ouml;ffentlichten Hexentraktates Die bezauberte Welt von Balthasar Bekker.)</em></li> <li>15 apr 2004 21:08 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Grey_fox.jpg|Grey_fox.jpg]]" <em>(Grey Fox (thumbnail); public domain image from U.S. Fish &amp; Wildlife Service (http&#58;//images.fws.gov) &#91;&#91;en:Image:Grey fox small.jpg]])</em></li> <li>15 apr 2004 20:58 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Kugelschreiber.jpg|Kugelschreiber.jpg]]" <em>(Kugelschreiber-Spitze&lt;br&gt;Urheber: Anton (rp) 2003&lt;br&gt;Nutzungsrechte an GNU free licence, vanaf Duitse wikipedia)</em></li> <li>15 apr 2004 20:33 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Aquarius_constellation_map_small.png|Aquarius_constellation_map_small.png]]" <em>(Vanaf Engelse wikipedia)</em></li> <li>15 apr 2004 20:21 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LookZonderLook-plant-kl.jpg|LookZonderLook-plant-kl.jpg]]" <em>(gouda, eigen foto, hiermee onder gnu/fdl gebracht)</em></li> <li>15 apr 2004 20:21 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LookZonderLook-plant-hr.jpg|LookZonderLook-plant-hr.jpg]]" <em>(gouda, eigen foto, hiermee onder gnu/fdl gebracht)</em></li> <li>15 apr 2004 20:19 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LookZonderLook-overz-kl.jpg|LookZonderLook-overz-kl.jpg]]" <em>(gouda, eigen foto, hiermee onder gnu/fdl gebracht)</em></li> <li>15 apr 2004 20:19 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LookZonderLook-overz-hr.jpg|LookZonderLook-overz-hr.jpg]]" <em>(gouda, eigen foto, hiermee onder gnu/fdl gebracht)</em></li> <li>15 apr 2004 20:19 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Human.png|Human.png]]" <em>(Detail from Pioneer 11 spacecraft picture, showing a man and a woman. Derived from a public domain NASA image. The original image was a JPEG, and there are still some slight traces of JPEG artifacts &#91;&#91;en:Image:Human.png]])</em></li> <li>15 apr 2004 20:17 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LookZonderLook-bloem-hr.jpg|LookZonderLook-bloem-hr.jpg]]" <em>(gouda, eigen foto, hiermee onder gnu/fdl gebracht)</em></li> <li>15 apr 2004 20:16 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LookZonderLook-bloem-kl.jpg|LookZonderLook-bloem-kl.jpg]]" <em>(gouda, eigen foto, hiermee onder gnu/fdl gebracht)</em></li> <li>15 apr 2004 20:15 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LookZonderLook-blad-kl.jpg|LookZonderLook-blad-kl.jpg]]" <em>(gouda, eigen foto, hiermee onder gnu/fdl gebracht)</em></li> <li>15 apr 2004 20:15 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LookZonderLook-blad-hr.jpg|LookZonderLook-blad-hr.jpg]]" <em>(gouda, eigen foto, hiermee onder gnu/fdl gebracht)</em></li> <li>15 apr 2004 19:51 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Balkan.png|Balkan.png]]" <em>(balkanlanden anders ingekleurd)</em></li> <li>15 apr 2004 19:02 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Tokelau.png|Tokelau.png]]" <em>(http&#58;//www.cia.gov/cia/publications/factbook/geos/tl.html public domain &#91;&#91;de:Bild:Tokelau.PNG]])</em></li> <li>15 apr 2004 18:43 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Michielderuyter.jpg|Michielderuyter.jpg]]" <em>(&#91;&#91;Michiel de Ruyter]], portret (1673) door &#91;&#91;Hendrik Bary]] (1640-1707), naar &#91;&#91;Ferdinand Bol]])</em></li> <li>15 apr 2004 18:41 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Peachblossom9202.jpg|Peachblossom9202.jpg]]" <em>(Image copyleft: Image taken by me, released under GFDL Pollinator 02:59, 13 Mar 2004 (UTC) &#91;&#91;en:Image:Peachblossom9202.JPG]])</em></li> <li>15 apr 2004 18:39 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Autumn_Red_peaches.jpg|Autumn_Red_peaches.jpg]]" <em>(Autumn Red peaches from http&#58;//www.ars.usda.gov/is/graphics/photos/ Image Number K6084-1 Autumn Red peach. Photo by Jack Dykinga. &#91;&#91;en:Image:Autumn Red peaches.jpg]])</em></li> <li>15 apr 2004 18:26 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Apricot.jpg|Apricot.jpg]]" <em>(&#91;&#91;en:Image:Apricot.jpg]] Apricot thumbnail from http&#58;//www.ars.usda.gov/is/graphics/photos/ Image Number K5613-1 Castlebrite is the nation&#39;s No. 1 apricot in fresh-market sales. Photo by Scott Bauer. )</em></li> <li>15 apr 2004 17:56 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Caf.f5.750pix|Caf.f5.750pix]]" <em>(&#91;&#91;en:Image:Caf.f5.750pix.jpg]] Canadian Air Force CF-5 Freedom Fighters. These are three 419 (Moose) Tactical Fighter Training Squadron CF-5s of CFB Cold Lake, Alberta. The two rearmost aircraft display bolt-on refueling probes to configure the fighter for long-range flight through the support of an air-to-air refueler.Quote from http&#58;//www.airforce.forces.ca/index_e.htm :&lt;br&gt;&lt;i&gt;Information on this site has been posted with the intent that it be readily available for personal and public non-commercial use and may be reproduced, in part or in whole and by any means, without charge or further permission by the Department of National Defence. We ask only that:&lt;br&gt;- users exercise due diligence in ensuring the accuracy of the materials reproduced&lt;br&gt;- the Department of National Defence be identified as the source department&lt;br&gt;Picture prepared for Wikipedia by Adrian Pingstone in April 2003. )</em></li> <li>15 apr 2004 17:40 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Usaf.phantom.f4.686pix|Usaf.phantom.f4.686pix]]" <em>((&#91;&#91;en:Image:Usaf.phantom.f4.686pix.jpg]] The USAF&#39;s Phantom II, designated F-4C, made its first flight on May 27, 1963. Production deliveries began in November 1963. Phantom II production ended in 1979 after over 5,000 had been built--more than 2,600 for t))</em></li> <li>15 apr 2004 17:38 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Usaf.f15.eagle.750pix|Usaf.f15.eagle.750pix]]" <em>(&#91;&#91;en:Image:Usaf.phantom.f4.686pix.jpg]] The USAF&#39;s Phantom II, designated F-4C, made its first flight on May 27, 1963. Production deliveries began in November 1963. Phantom II production ended in 1979 after over 5,000 had been built--more than 2,600 for the USAF, about 1,200 for the Navy and Marine Corps, and the rest for friendly foreign nations. F-4s are no longer in the USAF inventory but are still flown by foreign nations. Reproduced with the permission of Airforce Link: http&#58;//www.af.mil/photos U.S. Air Force photo. Quote from af.mil: &quot;Information presented on Airforce Link is considered public information and may be distributed or copied. Use of appropriate byline/photo/image credits is requested.&quot; Picture prepared for Wikipedia by Adrian Pingstone in April 2003. )</em></li> <li>15 apr 2004 16:11 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Weerribben4.JPG|Weerribben4.JPG]]" <em>(eigen foto)</em></li> <li>15 apr 2004 16:10 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Weerribben3.JPG|Weerribben3.JPG]]" <em>(eigen foto)</em></li> <li>15 apr 2004 16:08 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Weerribben2.JPG|Weerribben2.JPG]]" <em>(eigen foto)</em></li> <li>15 apr 2004 16:07 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Weerribben1.JPG|Weerribben1.JPG]]" <em>(eigen foto)</em></li> <li>15 apr 2004 15:48 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:B17.sallyb.shuttle.050801.650pix|B17.sallyb.shuttle.050801.650pix]]" <em>(B-17 &quot;Sally B&quot; at the Shuttleworth Military Pageant (UK) in August 2001. Taken from http&#58;//futurshox.net with the permission of the photographer (Jo Mitchell). &#91;&#91;en:Image:B17.sallyb.shuttle.050801.250pix.jpg]])</em></li> <li>15 apr 2004 15:33 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Hornet.f18.750pix|Hornet.f18.750pix]]" <em>(Two F/A-18 Hornets assigned to Carrier Air Wing Three prepare to launch from the flight deck of the aircraft carrier USS Harry S. Truman.U.S. Navy photo by Photographer’s Mate 1st Class Michael W. Pendergrass. Quote from www.navy.mil: the purpose of this site is to provide information about the United States Navy to the general public. All information on this site is considered public information and may be distributed or copied unless otherwise specified. Use of appropriate byline/photo/image credits is requested Picture prepared for Wikipedia by Adrian Pingstone in April 2003. )</em></li> <li>15 apr 2004 15:21 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Lockheed_F-104_Starfighter.jpg|Lockheed_F-104_Starfighter.jpg]]" <em>(&#91;&#91;en:Image:Lockheed F-104 Starfighter.jpg]] Image from NASA, no copyrights http&#58;//www.dfrc.nasa.gov/gallery/photo/F-104/Small/EC88-0029-04.jpg )</em></li> <li>15 apr 2004 14:48 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Fby0.jpg|Fby0.jpg]]" <em>(Eerdere versie hersteld)</em></li> <li>15 apr 2004 13:07 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Dolletoren.jpg|Dolletoren.jpg]]" <em>(Fritz8 - print)</em></li> <li>15 apr 2004 13:01 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Nimzo.jpg|Nimzo.jpg]]" <em>(Fritz8 - print)</em></li> <li>15 apr 2004 12:55 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Rio.jpg|Rio.jpg]]" <em>(Fritz8 - print)</em></li> <li>15 apr 2004 12:44 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Tomcat.f14.750pix|Tomcat.f14.750pix]]" <em>(Quote from www.navy.mil: the purpose of this site is to provide information about the United States Navy to the general public. All information on this site is considered public information and may be distributed or copied unless otherwise specified. Use of appropriate byline/photo/image credits is requested. Picture prepared for Wikipedia by Adrian Pingstone in April 2003. )</em></li> <li>15 apr 2004 12:25 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Usaf.f15.eagle.750pix|Usaf.f15.eagle.750pix]]"</li> <li>15 apr 2004 11:32 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Twee.jpg|Twee.jpg]]" <em>(Fritz8 - print)</em></li> <li>15 apr 2004 11:29 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Een.jpg|Een.jpg]]" <em>(Fritz8 - print)</em></li> <li>15 apr 2004 11:22 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kies.jpg|Kies.jpg]]" <em>(Fritz8 - print)</em></li> <li>15 apr 2004 10:58 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Aftrek.jpg|Aftrek.jpg]]" <em>(Fritz8 - print)</em></li> <li>15 apr 2004 10:54 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Aftrek.jpg|Aftrek.jpg]]" <em>(Fritz8 - print)</em></li> <li>15 apr 2004 10:16 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Moenchsrobbe_1.jpg|Moenchsrobbe_1.jpg]]" <em>(Hawaii-Mönchsrobbe; Public-Domain-Bild von U.S. Fish &amp; Wildlife Service (http&#58;//images.fws.gov) &#91;&#91;de:Bild:Moenchsrobbe 1.JPG]])</em></li> <li>15 apr 2004 10:09 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Bartrobbe.jpg|Bartrobbe.jpg]]" <em>(&#91;&#91;en:Bild:Bartrobbe.jpg]] Fotograf: Budd Christman Ort: Beringsee, Mai 1979 Quelle: National Oceanic and Atmospheric Administration (http&#58;//www.noaa.gov) Lizenz: Public Domain )</em></li> <li>15 apr 2004 10:03 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Klappmuetze.jpg|Klappmuetze.jpg]]" <em>(Quelle: National Oceanic and Atmospheric Administration (http&#58;//www.noaa.gov) Lizenz: Public Domain &#91;&#91;de:Bild:Klappmuetze.jpg]])</em></li> <li>15 apr 2004 09:59 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Bandrobbe.jpg|Bandrobbe.jpg]]" <em>(&#91;&#91;de:Bild:Bandrobbe2.jpg]] Fotograf: Budd Christman Ort: Beringsee, Mai 1979 Quelle: National Oceanic and Atmospheric Administration Lizenz: Public Domain )</em></li> <li>15 apr 2004 09:51 [[Gebruiker:Luijt|Luijt]] heeft ge-upload: "[[:Afbeelding:Wapenkss.png|Wapenkss.png]]" <em>(Wapen KSS)</em></li> <li>15 apr 2004 09:51 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Sattelrobbe.jpg|Sattelrobbe.jpg]]" <em>(&#91;&#91;de:Bild:Sattelrobbe.jpg]] Männchen, Weibchen und Jungtier Quelle: National Oceanic and Atmospheric Administration (http&#58;//www.noaa.gov) Lizenz: Public Domain )</em></li> <li>15 apr 2004 09:48 [[Gebruiker:Luijt|Luijt]] heeft ge-upload: "[[:Afbeelding:Wapen.gif|Wapen.gif]]" <em>(Wapen KSS)</em></li> <li>15 apr 2004 09:43 [[Gebruiker:Luijt|Luijt]] heeft ge-upload: "[[:Afbeelding:Stoet.jpg|Stoet.jpg]]" <em>(KSS op het binnenhof, eigen foto)</em></li> <li>15 apr 2004 09:20 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Königstiger4.jpg|Königstiger4.jpg]]" <em>(Tiger II achterzijde - eigen foto)</em></li> <li>15 apr 2004 09:06 [[Gebruiker:Degaaf|Degaaf]] heeft ge-upload: "[[:Afbeelding:Groenemeyer2003.jpg|Groenemeyer2003.jpg]]" <em>(Herbert Grönemeyer)</em></li> <li>15 apr 2004 08:04 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Königstiger1.jpg|Königstiger1.jpg]]" <em>(Tiger II (Königstiger) - eigen foto)</em></li> <li>15 apr 2004 07:51 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(Test upload.)</em></li> <li>15 apr 2004 07:50 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.png|Test.png]]" <em>(Dit is een test.)</em></li> <li>15 apr 2004 07:41 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.png|Test.png]]" <em>(blablabla)</em></li> <li>15 apr 2004 06:14 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Aardappel_Doré_Phytophthora.jpg|Aardappel_Doré_Phytophthora.jpg]]" <em>(zelfgemaakte foto; aardappelziekte op &#39;Doré&#39;)</em></li> <li>15 apr 2004 06:09 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Aardappel_Parel_Phytophthora.jpg|Aardappel_Parel_Phytophthora.jpg]]" <em>(zelfgemaakte foto; close up van bladaantasting op het ras &#39;Parel&#39;)</em></li> <li>15 apr 2004 05:54 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Mais_kiemplant_eerste_blad.jpg|Mais_kiemplant_eerste_blad.jpg]]" <em>(zelfgemaakte foto; kiemplant met eerste blad uit coleoptyl)</em></li> <li>15 apr 2004 04:49 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Fb0.jpg|Fb0.jpg]]" <em>(zelfgemaakte tekening, achtergrond geel gemaakt door Erik, ik weet niet, waarom die met die gele achtergrond weer overschreven is )</em></li> <li>15 apr 2004 04:44 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Fb0.jpg|Fb0.jpg]]" <em>(zelfgemaakt plaatje waarbij Erik een gele achtergrond had gemaakt, ik weet niet waarom iemand anders de eerdere versie zonder gele achtergrond heeft teruggezet???)</em></li> <li>14 apr 2004 23:29 [[Gebruiker:Kneiphof|Kneiphof]] heeft ge-upload: "[[:Afbeelding:Draaibank2.jpg|Draaibank2.jpg]]" <em>(eigen foto, vervanging van vorige wegens foute aanduiding)</em></li> <li>14 apr 2004 23:25 [[Gebruiker:Kneiphof|Kneiphof]] heeft ge-upload: "[[:Afbeelding:Draaibank.jpg|Draaibank.jpg]]" <em>(eigen foto, vervanging van vorige wegens foute aanduiding)</em></li> <li>14 apr 2004 22:58 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Weddellrobbe.jpg|Weddellrobbe.jpg]]" <em>(&#91;&#91;de:Bild:Weddellrobbe.jpg]] Fotograf: John Bortniak Ort: Antarktis, November 1978 Quelle: National Oceanic and Atmospheric Administration (http&#58;//www.noaa.gov) Lizenz: Public Domain )</em></li> <li>14 apr 2004 22:56 [[Gebruiker:Kneiphof|Kneiphof]] heeft ge-upload: "[[:Afbeelding:Draaibank.jpg|Draaibank.jpg]]" <em>(Door mezelf (gebruiker Kneiphof) genomen foto)</em></li> <li>14 apr 2004 22:51 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Verbondsark.png|Verbondsark.png]]" <em>(van engelse pagina)</em></li> <li>14 apr 2004 22:47 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Rossrobbe.jpg|Rossrobbe.jpg]]" <em>(&#91;&#91;de:Bild:Rossrobbe.jpg]] Fotograf: Mike Cameron Quelle: National Marine Mammal Laboratory (Unterorganisation der National Oceanic and Atmospheric Administration), http&#58;//nmml.afsc.noaa.gov/ Lizenz: Public Domain )</em></li> <li>14 apr 2004 22:36 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Ringelrob.jpg|Ringelrob.jpg]]" <em>(Zeichnung zweier Ringelrobben auf einer Eisscholle.Quelle: National Oceanic and Atmospheric Administration (http&#58;//www.noaa.gov) Lizenz: Public Domain &#91;&#91;de:Bild:Ringelrobbe.jpg]])</em></li> <li>14 apr 2004 22:28 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Krabbenfresser.jpg|Krabbenfresser.jpg]]" <em>(&#91;&#91;de:Bild:Krabbenfresser.jpg]] Quelle: National Marine Mammal Laboratory (Unterorganisation der National Oceanic and Atmospheric Administration), http&#58;//nmml.afsc.noaa.gov/ Fotograf: Mike Cameron Lizenz: Public Domain )</em></li> <li>14 apr 2004 22:24 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:GreySealBottling.jpg|GreySealBottling.jpg]]" <em>(&#91;&#91;en:Image:GreySealBottling.jpg]] Photograph taken by Stephen Lea off the north coast of Lundy Island (bottom of Trinity House steps) on 11th April 2003 )</em></li> <li>14 apr 2004 21:51 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Steller_sea_lion_bull.jpg|Steller_sea_lion_bull.jpg]]"</li> <li>14 apr 2004 21:41 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:RedPanda.jpg|RedPanda.jpg]]" <em>(Original from http&#58;//dlp.cs.berkeley.edu/cgi/img_query?seq_num=27210&amp;one=T &quot;This photo may be freely used for any non-commercial purpose, but please include copyright information with the photo and credit John White. For commercial use, or for other questions, contact John White, john.white161@verizon.net.&quot; &#91;&#91;en:Image:RedPanda.jpeg]])</em></li> <li>14 apr 2004 21:30 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Ferret_USFWS.jpg|Ferret_USFWS.jpg]]" <em>(&#91;&#91;en:Image:Ferret USFWS.jpg]] http&#58;//gimp-savvy.com/cgi-bin/img.cgi?ufwsdwjvA0ddck2846 Photo Credit:US Fish and Wildlife Service This image has been released into the public domain by the author, or its copyright has expired. This applies worldwide. See Copyright. )</em></li> <li>14 apr 2004 21:23 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:WEASEL.jpg|WEASEL.jpg]]" <em>(&#91;&#91;en:Image:WEASEL.JPG]] North American Longtail Weasel Public domain image from U.S. National Park Service www.nps.gov/yell/kidstuff/Alphabet/l.htm )</em></li> <li>14 apr 2004 20:55 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Skunk.jpg|Skunk.jpg]]" <em>(striped skunk - public domain Downloaded from: http&#58;//www.freestuff.co.uk/photos/animals/00000171.html &#91;&#91;en:Image:Skunk.jpg]])</em></li> <li>14 apr 2004 20:53 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Westenberg.jpg|Westenberg.jpg]]" <em>(actieshot uit een frisbee-wedstrijd. Bron: NFB, fotograaf: Rene Westenberg. Vrij bruikbaar met bronvermelding. Afkomstig van: http&#58;//www.frisbeesport.nl/NFB/pers/foto/ultimate1.htm)</em></li> <li>14 apr 2004 20:52 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Kaart_Italië.png|Kaart_Italië.png]]" <em>(Oorspronkelijk uit CIA Factbook; vertaald in Nederlands door Danielm; omgezet in PNG door mij + verbetering spelling)</em></li> <li>14 apr 2004 20:51 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Kaart_Israël.png|Kaart_Israël.png]]" <em>(Oorspronkelijk uit CIA Factbook; vertaald in Nederlands door Danielm; omgezet in PNG door mij + verbetering spelling)</em></li> <li>14 apr 2004 20:41 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Snow_leopard.jpg|Snow_leopard.jpg]]" <em>(Snow Leopard; public domain image from U.S. Fish &amp; Wildlife Service (http&#58;//images.fws.gov/) &#91;&#91;en:Image:Snow leopard.jpg]])</em></li> <li>14 apr 2004 20:32 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Serval_Cat.jpg|Serval_Cat.jpg]]" <em>(Serval (thumbnail); public domain photo from U.S. fish &amp; wildlife service &#91;&#91;en:Image:Serval cat small.jpg]])</em></li> <li>14 apr 2004 20:21 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Aristophanes.jpg|Aristophanes.jpg]]" <em>(Aristophanes, van Engelse Wiki.)</em></li> <li>14 apr 2004 20:22 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Kaart_Oostenrijk.png|Kaart_Oostenrijk.png]]" <em>(Oorspronkelijk uit CIA Factbook; vertaald in Nederlands door Danielm; omgezet in PNG door mij)</em></li> <li>14 apr 2004 20:21 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Margay_cat.jpg|Margay_cat.jpg]]" <em>(Margay in Corcovado National Park, Costa Rica. Public domain image by Jerry Bauer, from U.S. National Park Service. &#91;&#91;en:Image:Margay cat.jpg]])</em></li> <li>14 apr 2004 20:14 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Ocelot.jpg|Ocelot.jpg]]" <em>(Ocelot (thumbnail); public domain photo from Fish &amp; Wildlife Service, Image Archive &#91;&#91;en:Image:Ocelot small.jpg]])</em></li> <li>14 apr 2004 20:09 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Kaart_Griekenland.png|Kaart_Griekenland.png]]" <em>(Oorspronkelijk uit CIA Factbook; vertaald in Nederlands door Danielm; omgezet in PNG door mij)</em></li> <li>14 apr 2004 20:06 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Caracal.jpg|Caracal.jpg]]" <em>(Karakal; Public-Domain-Bild von http&#58;//images.fws.gov &#91;&#91;de:Bild:Karakal.jpg]])</em></li> <li>14 apr 2004 19:52 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:FennecFox.jpg|FennecFox.jpg]]" <em>(&#91;&#91;en:Image:FennecFox.jpg]] Fennec Fox; public domain image from http&#58;//www.junglewalk.com/frames.asp; image taken by Ralf Schmode )</em></li> <li>14 apr 2004 19:44 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Asian_red_dog.jpg|Asian_red_dog.jpg]]" <em>(Asian Red Dog (Dhole); public domain image from http&#58;//www.junglewalk.com/frames.asp; photographer: Ralf Schmode &#91;&#91;en:Image:Asian red dog.jpg]])</em></li> <li>14 apr 2004 19:41 [[Gebruiker:Henricus|Henricus]] heeft ge-upload: "[[:Afbeelding:Lower_saxony_fri.png|Lower_saxony_fri.png]]" <em>(Kaart van Landkreis Friesland (en: wiki --&gt; Wikiproject German districts)</em></li> <li>14 apr 2004 19:40 [[Gebruiker:Henricus|Henricus]] heeft ge-upload: "[[:Afbeelding:Friesland_district_coa.png|Friesland_district_coa.png]]" <em>(Kaart van Landkreis Friesland (en: wiki --&gt; Wikiproject German districts))</em></li> <li>14 apr 2004 19:38 [[Gebruiker:Henricus|Henricus]] heeft ge-upload: "[[:Afbeelding:Friesland_district_coa.png|Friesland_district_coa.png]]" <em>(Kaart van Landkreis Friesland (en: wiki --&gt; Wikiproject German districts))</em></li> <li>14 apr 2004 19:19 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Arcticfox.jpg|Arcticfox.jpg]]" <em>(&#91;&#91;en:Image:Arcticfox.jpg]] Arctic fox (North Slope, Alaska, 1959) Public domain image from U.S. National Oceanic and Atmospheric Administration )</em></li> <li>14 apr 2004 19:07 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Katfret.jpg|Katfret.jpg]]" <em>(&#91;&#91;de:Bild:Katzenfrett.jpg]] Katzenfrett; aus der engl. Wikipedia )</em></li> <li>14 apr 2004 18:56 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Kinky.jpg|Kinky.jpg]]" <em>(&#91;&#91;en:Image:Kinky.jpg]])</em></li> <li>14 apr 2004 18:46 [[Gebruiker:Henricus|Henricus]] heeft ge-upload: "[[:Afbeelding:Niedersachsen_rbweser-ems.png|Niedersachsen_rbweser-ems.png]]" <em>(Kaart van Weser-Ems (uit en: wiki - &#91;http&#58;//en.wikipedia.org/wiki/Wikipedia:WikiProject_German_districts/Maptemplates bron]))</em></li> <li>14 apr 2004 18:37 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Civetkat.jpg|Civetkat.jpg]]" <em>(Afrikanische Zibetkatze; Public-Domain-Bild von http&#58;//www.animalsvoice.com/PAGES/archive/civet.html &#91;&#91;de:Bild:Afrikan zibetkatze.jpg]])</em></li> <li>14 apr 2004 18:31 [[Gebruiker:Robk|Robk]] heeft ge-upload: "[[:Afbeelding:Vlag_Cos.PNG|Vlag_Cos.PNG]]" <em>(Vlag COS voor MediaWiki:COS)</em></li> <li>14 apr 2004 18:26 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Black_bear.jpg|Black_bear.jpg]]" <em>(&#91;&#91;en:Image:Black bear small.jpg]] Black bear (small image) from USFWS Public domain image from U.S. Fish and Wildlife Service web site: http&#58;//images.fws.gov/default.cfm?fuseaction=records.display&amp;CFID=3245898&amp;CFTOKEN=68104586&amp;id=0E26EF9E%2DA57E%2D4AE8%2D9E5D6EED1AAE5A7A Credit: Mike Bender, USFWS )</em></li> <li>14 apr 2004 18:13 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Jaguarundi.jpg|Jaguarundi.jpg]]" <em>(&#91;&#91;de:Bild:Jaguarundi.jpg]] Quelle: http&#58;//images.fws.gov, U.S. Fish &amp; Wildlife Service Lizenz: Public Domain )</em></li> <li>14 apr 2004 17:41 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Herderstasje-overz-kl.jpg|Herderstasje-overz-kl.jpg]]" <em>(eigen foto, leyweg den haag, vandaag, hiermee in p.d. gebracht)</em></li> <li>14 apr 2004 17:41 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Herderstasje-bloem-kl.jpg|Herderstasje-bloem-kl.jpg]]" <em>(eigen foto, leyweg den haag, vandaag, hiermee in p.d. gebracht)</em></li> <li>14 apr 2004 17:01 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Alpensteenbok.jpg|Alpensteenbok.jpg]]" <em>(&#91;&#91;de:Bild:Steinbock.jpg]] Bild eines Steinbocks - thinknact.com)</em></li> <li>14 apr 2004 16:34 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Alpaca.png|Alpaca.png]]" <em>(This image has been released into the public domain by the author, or its copyright has expired. This applies worldwide. See Copyright. Webster&#39;s Dictionary, 1911 &#91;&#91;en:Image:Alpaca.png]])</em></li> <li>14 apr 2004 15:39 [[Gebruiker:Henricus|Henricus]] heeft ge-upload: "[[:Afbeelding:Lower_saxony_wst.png|Lower_saxony_wst.png]]" <em>(Kaart van Ammerland (uit en: wiki - &#91;http&#58;//en.wikipedia.org/wiki/Wikipedia:WikiProject_German_districts/Maptemplates bron]))</em></li> <li>14 apr 2004 15:30 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Telefooncel001.jpg|Telefooncel001.jpg]]" <em>(Oude telefooncel, bij een antiekzaakje hier in Koblenz. Foto: &#91;&#91;Gebruiker:Andre Engels&#124;Andre Engels]], door fotograaf in publiek domein geplaatst.)</em></li> <li>14 apr 2004 14:23 [[Gebruiker:Peter bankers|Peter bankers]] heeft ge-upload: "[[:Afbeelding:Klein_Kasteel_Deurne_-_vooraanzicht.jpg|Klein_Kasteel_Deurne_-_vooraanzicht.jpg]]" <em>(Klein Kasteel DEURNE &#39;the little castle&#39; c pbankers)</em></li> <li>14 apr 2004 13:58 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Fis.jpg|Fis.jpg]]" <em>(Fritz8 - print)</em></li> <li>14 apr 2004 13:42 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Modern.jpg|Modern.jpg]]" <em>(Fritz8 - print)</em></li> <li>14 apr 2004 13:31 [[Gebruiker:Moribunt|Moribunt]] heeft ge-upload: "[[:Afbeelding:Klompen.jpg|Klompen.jpg]]" <em>(Van Engelse Wikipedia (!))</em></li> <li>14 apr 2004 13:03 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Dingo.jpg|Dingo.jpg]]" <em>(Australian dingo, photo taken by user:Karen Johnson &#91;&#91;en:Image:Dingo.jpg]])</em></li> <li>14 apr 2004 12:54 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Coyote.jpg|Coyote.jpg]]" <em>(&#91;&#91;en:Image:Coyote-thumbnail.jpg]] Public domain image from U.S. Fish and Wildlife Service / George Harrison )</em></li> <li>14 apr 2004 12:45 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Cetacea_range_map_Short-beaked_Common_Dolphin.png|Cetacea_range_map_Short-beaked_Common_Dolphin.png]]" <em>(&#91;&#91;en:Image:Cetacea range map Short-beaked Common Dolphin.PNG]] Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 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 &quot;Text of the GNU Free Documentation License&quot;. Subject to disclaimers.User:Pcb21 after User:Vardion. See Wikipedia:WikiProject Cetaceans for further details )</em></li> <li>14 apr 2004 12:43 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Common_dolphin.jpg|Common_dolphin.jpg]]" <em>(&#91;&#91;en:Image:Common dolphin.jpg]] This picture was taken from http&#58;//nmml.afsc.noaa.gov/gallery/cetaceans/dd-14_comdolphin.htm. The photo was taken Scott Hill of the NOAA corps. As a American government employee working on government business, this picture is the public domain under American law. )</em></li> <li>14 apr 2004 12:24 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Bengaalse_tijger.jpg|Bengaalse_tijger.jpg]]" <em>(&#91;&#91;en:Image:BengalTiger.jpg]] Image courtesy of David B. Jack )</em></li> <li>14 apr 2004 11:39 [[Gebruiker:Deadstar|Deadstar]] heeft ge-upload: "[[:Afbeelding:IrelandProvincesNumbered.png|IrelandProvincesNumbered.png]]" <em>(van en:)</em></li> <li>14 apr 2004 10:15 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:TobiasAsser.jpg|TobiasAsser.jpg]]" <em>(TMCasser van wiki-en (public domain wegens datum))</em></li> <li>14 apr 2004 09:02 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Vrij.jpg|Vrij.jpg]]" <em>(Fritz8 - print)</em></li> <li>14 apr 2004 08:35 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Cetacea_range_map_Bryde's_Whale.png|Cetacea_range_map_Bryde's_Whale.png]]" <em>(&#91;&#91;en:Image:Cetacea range map Bryde&#39;s Whale.PNG]] Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. User:Pcb21 after User:Vardion, See Wikipedia:WikiProject Cetaceans )</em></li> <li>14 apr 2004 08:31 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Brydes-whale.jpg|Brydes-whale.jpg]]" <em>(pub dom image from US National Marine Fisheries Service, Wayne Hoggard &#91;&#91;en:Image:Brydes-whale.jpg]])</em></li> <li>14 apr 2004 08:28 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Scan1.jpg|Scan1.jpg]]" <em>(Fritz8 - print)</em></li> <li>14 apr 2004 08:17 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Dat.jpg|Dat.jpg]]" <em>(Fritz8 - print)</em></li> <li>14 apr 2004 08:12 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Flap.jpg|Flap.jpg]]" <em>(Fritz8 - print)</em></li> <li>14 apr 2004 08:06 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Schaak.jpg|Schaak.jpg]]" <em>(Fritz8 - print)</em></li> <li>14 apr 2004 08:05 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Yitzhak_Rabin.jpg|Yitzhak_Rabin.jpg]]" <em>(Yitzak Rabin van wiki-en)</em></li> <li>14 apr 2004 08:02 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Schaak.jpg|Schaak.jpg]]" <em>(Fritz8 - print)</em></li> <li>14 apr 2004 08:03 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Schaak.jpg|Schaak.jpg]]" <em>(Fritz8 - print)</em></li> <li>14 apr 2004 07:36 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Saye.jpg|Saye.jpg]]" <em>(Fritz8 - print)</em></li> <li>14 apr 2004 07:30 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:StarttoRun2004.jpg|StarttoRun2004.jpg]]" <em>(Toestemming fotograaf)</em></li> <li>14 apr 2004 07:21 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Princessdi.jpg|Princessdi.jpg]]" <em>(En: wikipedia)</em></li> <li>14 apr 2004 07:08 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kwal.jpg|Kwal.jpg]]" <em>(Fritz8 - print)</em></li> <li>14 apr 2004 06:52 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:LogoICBL.gif|LogoICBL.gif]]" <em>(Ik vraag om toestemming)</em></li> <li>14 apr 2004 06:31 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Fam.jpg|Fam.jpg]]" <em>(Fritz8 - print)</em></li> <li>14 apr 2004 06:10 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Fian.jpg|Fian.jpg]]" <em>(Fritz8 - print)</em></li> <li>13 apr 2004 22:14 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Mangoesten.jpg|Mangoesten.jpg]]" <em>(&#91;&#91;de:Bild:Erdmaennchen.jpg]] Erdmännchen; Public-Domain-Bild von http&#58;//www.junglewalk.com/frames.asp; fotografiert von Ralf Schmode )</em></li> <li>13 apr 2004 21:48 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Leopard_seal.jpg|Leopard_seal.jpg]]" <em>(Leopard Seal; public domain image from http&#58;//www.noaa.gov &#91;&#91;en:Image:Leopard seal.jpg]])</em></li> <li>13 apr 2004 21:39 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Balkan.png|Balkan.png]]" <em>(Balkan, vertaald van Finse Wiki door &#91;&#91;Gebruiker:Känsterle&#124;Känsterle]] (oorspr. bron: http&#58;//leuksman.com/misc/maps.php))</em></li> <li>13 apr 2004 21:37 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Zeeolifant.jpg|Zeeolifant.jpg]]" <em>(&#91;&#91;de:Bild:See elefanten.jpg]] ==Nördlicher See-Elefant== Bulle und Kuh vor der Paarung Fotograf: Jan Roletto Ort: Gulf of the Farallones National Marine Sanctuary (Kalifornien) Quelle: National Oceanic and Atmospheric Administration (http&#58;//www.noaa.gov) Lizenz: Public Domain)</em></li> <li>13 apr 2004 21:21 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Walrus.jpg|Walrus.jpg]]" <em>(&#91;&#91;de:Bild:Walrus.jpg]] aus en: Copyright: &quot;Public domain image from U.S. National Oceanic and Atmospheric Administration &quot; )</em></li> <li>13 apr 2004 21:15 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:SEEurope-small.jpg|SEEurope-small.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;SE Europe, cut from http&#58;//earthobservatory.nasa.gov/Newsroom/LCC/Images/eur_web.jpeg &#91;&#91;en:Image:SEEurope-small.jpg]])</em></li> <li>13 apr 2004 21:13 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Raccoonsm.jpg|Raccoonsm.jpg]]" <em>(&#91;&#91;en:Image:Raccoonsm.jpg]] Photo of a raccoon drinking, taken from the North American Parks and Wildlife website. )</em></li> <li>13 apr 2004 21:07 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Badminton_veld_groot.png|Badminton_veld_groot.png]]" <em>(Vertaling engelse afbeelding)</em></li> <li>13 apr 2004 21:03 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Canterbury.jpg|Canterbury.jpg]]" <em>(van engelse pagina)</em></li> <li>13 apr 2004 21:02 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Wombat.jpg|Wombat.jpg]]" <em>(&#91;&#91;de:Bild:Wombat.jpg]] Bild eines australischen Wombats, aufgenommen mit Digitalkamera, Dezember 200 von thomasgl )</em></li> <li>13 apr 2004 21:01 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Balibeach.jpg|Balibeach.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Bali beach, Sanur &#91;&#91;en:Image:balibeach.jpg]])</em></li> <li>13 apr 2004 21:00 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bali.jpg|Bali.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;*Beschreibung: Topographie Bali *Quelle: &#91;http&#58;//earthobservatory.nasa.gov/Newsroom/NewImages/images.php3?img_id=16436 NASA] *Lizenzstatus: Public Domain &#91;&#91;de:Bild:Bali.jpg]])</em></li> <li>13 apr 2004 20:59 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:IndonesiaBali.png|IndonesiaBali.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;province of &#91;&#91;Indonesia]] &#123;&#123;msg:GFDL}} &#91;&#91;en:Image:IndonesiaBali.png]])</em></li> <li>13 apr 2004 20:50 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Map_of_Azerbaijan_with_cities.png|Map_of_Azerbaijan_with_cities.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-sv. De beschrijving daar was:&lt;p&gt;Karta över Azerbaijan från eng. &#39;pedian &#91;&#91;sv:Bild:Map of Azerbaijan with cities.png]])</em></li> <li>13 apr 2004 20:41 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bakelit_Struktur.png|Bakelit_Struktur.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;*Beschreibung: Strukturformelausschnitt Bakelit *Quelle: ChemSketch *Fotograf oder Zeichner: MarkusZi *Andere Versionen: - *Lizenzstatus: GNU FDL &#91;&#91;de:Bild:Bakelit Struktur.png]])</em></li> <li>13 apr 2004 19:48 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:ZeevanAzov.jpg|ZeevanAzov.jpg]]" <em>(Vertaald van http&#58;//seawifs.gsfc.nasa.gov/SEAWIFS/IMAGES/SEAWIFS/S1998196102555.L1A_HROM.BlackSea.jpg)</em></li> <li>13 apr 2004 19:47 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Bacteria_shape.png|Bacteria_shape.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;from &#91;&#91;Nupedia]] article on &#91;&#91;bacteria]] - see http&#58;//www.nupedia.com/article/500/ by Nagina Parmar &#39;&#39;(Image created by the author and donated to Nupedia.)&#39;&#39; - Nupedia is a GFDL work, so this image is presumably also under the GFDL. &#91;&#91;en:Image:bacteria shape.png]])</em></li> <li>13 apr 2004 19:24 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Codice_azteca.jpg|Codice_azteca.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-es. De beschrijving daar was:&lt;p&gt;Fragmento de un códice azteca previo al siglo XVII (dominio público) &#91;&#91;es:Imagen:Codice azteca.jpg]])</em></li> <li>13 apr 2004 19:22 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Aztec_calendar_stone.JPG|Aztec_calendar_stone.JPG]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;scan of gold pendant replica of aztec calendar stone &#91;&#91;en:Image:aztec calendar stone.JPG]])</em></li> <li>13 apr 2004 19:07 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Satellitenfoto-Azoren-kl.jpg|Satellitenfoto-Azoren-kl.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Satellitenfoto Azoren public domain Quelle: NASA - http&#58;//visibleearth.nasa.gov/cgi-bin/viewrecord?25535 Credit: Jeff Schmaltz, MODIS Rapid Response Team, NASA/GSFC Satellite: Terra Sensor: MODIS Data Start Date: 05-01-2003 Data End Date: 05-01-2003 VE Record ID: 25535 &#39;&#39;Description: Hundreds of miles off the coast of Portugal, the nine islands of the Azores chains are stretched out over the Atlantic Ocean. This Moderate Resolution Imaging Spectroradiometer (MODIS) image from the Terra satellite on May 1, 2003, shows seven of the nine islands: (from left to right) Faial, Pico, Sao Jorge, Graciosa (north), Terceira, Sao Miguel, and Santa Maria.&#39;&#39; &#91;&#91;de:Bild:Satellitenfoto-Azoren-kl.jpg]])</em></li> <li>13 apr 2004 19:06 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Pt-acores.png|Pt-acores.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;upload to replace offsite gif &#91;&#91;en:Image:pt-acores.png]])</em></li> <li>13 apr 2004 18:58 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Acetic-acid.png|Acetic-acid.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;molecular structure of acetic acid &#91;&#91;en:Image:acetic-acid.png]])</em></li> <li>13 apr 2004 18:25 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Manatee_photo.jpg|Manatee_photo.jpg]]" <em>(&#91;&#91;en:Image:Manatee photo.jpg]] From http&#58;//www-pao.ksc.nasa.gov/kscpao/visit/kscovrv.htm. This image has been released into the public domain by the author, or its copyright has expired. This applies worldwide. See Copyright. )</em></li> <li>13 apr 2004 18:04 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Thomasbecket.jpg|Thomasbecket.jpg]]" <em>(van engelse pagina)</em></li> <li>13 apr 2004 17:31 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Mandrill.jpg|Mandrill.jpg]]" <em>(&#91;&#91;en:Image:Mandrill-thumbnail.jpg]])</em></li> <li>13 apr 2004 17:11 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Ibex-jpatokal.jpg|Ibex-jpatokal.jpg]]" <em>(&#91;&#91;en:Image:Ibex-jpatokal.jpg]] http&#58;//jpatokal.iki.fi/photo/travel/Israel/MitzpeRamon/Ibex_Resting.JPG Released to Wikipedia by Jpatokal )</em></li> <li>13 apr 2004 16:54 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Baboon.jpg|Baboon.jpg]]" <em>(&#91;&#91;en:Image:00969 Baboon.jpg]] van &#91;&#91;en:User:Wildlifelands]])</em></li> <li>13 apr 2004 16:39 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Spotted_hyena.jpg|Spotted_hyena.jpg]]" <em>(&#91;&#91;en:Image:Spotted hyena.jpg]] Spotted hyena; public domain image from http&#58;//www.junglewalk.com/frames.asp )</em></li> <li>13 apr 2004 16:21 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Stekelvarken.jpg|Stekelvarken.jpg]]" <em>(&#91;&#91;de:Bild:Stachelschwein2.jpg]] Stachelschweine von mir aufgenommen. Bild steht unter der FDL )</em></li> <li>13 apr 2004 16:12 [[Gebruiker:Bartux|Bartux]] heeft ge-upload: "[[:Afbeelding:Kubus.png|Kubus.png]]" <em>(Eerdere versie hersteld)</em></li> <li>13 apr 2004 16:03 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Gordeldier.jpg|Gordeldier.jpg]]" <em>(&#91;&#91;en:Image:Armadillo-thumbnail.jpg]] Armadillo Dasypus novemcinctus. Location: Sequoyah NWR, OK. Public domain picture from U.S. Fish and Wildlife Service, John and Karen Hollingsworth )</em></li> <li>13 apr 2004 15:27 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Grienden.jpg|Grienden.jpg]]" <em>(This photo of two Long-finned Pilot Whales is taken from http&#58;//nmml.afsc.noaa.gov/gallery/cetaceans/gl-5_pilot.htm. The photo was taken by Sally Mizroch of the National Marine Mammal Laboratory sometime prior to November 2003. The copyright permissions of the NMML are described at http&#58;//nmml.afsc.noaa.gov/gallery/images.htm. The full credit for this photo is due to Sally Mizroch, National Oceanic and Atmospheric Administration, National Marine Fisheries Service, Alaska Fisheries Science Center, National Marine Mammal Laboratory. In order to maintain compatiblity with the GFDL and the Laboratory&#39;s request, please do not remove the credit. &#91;&#91;en:Image:Two pilot whales.jpg]])</em></li> <li>13 apr 2004 15:14 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:Kaart_Finland.png|Kaart_Finland.png]]" <em>(Gehercomprimeerd (zonder kwaliteitsverlies), is nu *kleiner* dan de gif. Nederlandse vertaling CIA-kaart)</em></li> <li>13 apr 2004 14:33 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Buckinghampalace.jpg|Buckinghampalace.jpg]]" <em>(van engelse pagina)</em></li> <li>13 apr 2004 14:27 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Bladinsnijding_veervormig_goed.jpg|Bladinsnijding_veervormig_goed.jpg]]" <em>(zelfgemaakte tekening; geeft aan wanneer wat in wat overgaat)</em></li> <li>13 apr 2004 13:51 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Eeuwig.jpg|Eeuwig.jpg]]" <em>(Fritz8 - print)</em></li> <li>13 apr 2004 13:35 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Stamboon_kiemplant.jpg|Stamboon_kiemplant.jpg]]" <em>(zelfgemaakte foto; de eerste twee ware blaadjes ontvouwen zich)</em></li> <li>13 apr 2004 12:52 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Passant.jpg|Passant.jpg]]" <em>(Fritz8 - print)</em></li> <li>13 apr 2004 12:50 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:M1_Abrams.jpg|M1_Abrams.jpg]]" <em>(&#91;&#91;en:Image:Abrams mbt.jpg]] M1A1 from US government site )</em></li> <li>13 apr 2004 12:50 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:M1_Abrams.jpg|M1_Abrams.jpg]]" <em>(&#91;&#91;en:Image:Abrams mbt.jpg]] M1A1 from US government site )</em></li> <li>13 apr 2004 12:45 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Ferret.png|Ferret.png]]" <em>(&#91;&#91;en:Image:Ferret.png]] from http&#58;//www.sru.edu/depts/cisba/compsci/dailey/public/mammals/mammals.html This image has been released into the public domain by the author, or its copyright has expired. This applies worldwide. See Copyright. )</em></li> <li>13 apr 2004 12:37 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Rus.jpg|Rus.jpg]]" <em>(Fritz8 - print)</em></li> <li>13 apr 2004 12:24 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Platypus.jpg|Platypus.jpg]]" <em>(stolen from german wikipedia (&#91;&#91;:de:Bild:Platypus.jpg]])) &#91;&#91;en:Image:Platypus 300px.jpg]])</em></li> <li>13 apr 2004 12:05 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Okapi.jpg|Okapi.jpg]]" <em>(Okapi at Bristol Zoo, Bristol, England. Taken by Adrian Pingstone in August 2003 and placed in the public domain. &#91;&#91;en:Image:Okapi.bristol.250pix.jpg]])</em></li> <li>13 apr 2004 11:59 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:JulianusII-antioch(360-363)-CNG.jpg|JulianusII-antioch(360-363)-CNG.jpg]]" <em>(Portret van &#91;&#91;Julianus Apostata]] op bronzen munt van Antiochië, 360-363. Foto met toestemming van Classical Numismatic Group, Inc. (CNG))</em></li> <li>13 apr 2004 11:53 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:JulianusII-antioch(360-363).jpg|JulianusII-antioch(360-363).jpg]]" <em>(Portret van &#91;&#91;Julianus Apostata]], 360-363. Foto met toestemming van Classical Numismatic Group, Inc. (CNG))</em></li> <li>13 apr 2004 11:38 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Schaak.jpg|Schaak.jpg]]" <em>(Fritz8 - print)</em></li> <li>13 apr 2004 11:12 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Wladyslaw_Warnenczyk0312.jpg|Wladyslaw_Warnenczyk0312.jpg]]" <em>(pl:Wikipedia)</em></li> <li>13 apr 2004 11:08 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:BritishIslesMan.png|BritishIslesMan.png]]" <em>(&#91;&#91;en:Image:BritishIslesMan.png]] map showing &#91;&#91;Isle of Man]] within the &#91;&#91;British Isles]] &#123;&#123;msg:GFDL}} )</em></li> <li>13 apr 2004 11:02 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:WapenMAn.png|WapenMAn.png]]" <em>(&#91;&#91;en:Image:Isle of Man Arms Small.png]] Isle of Man Coat of Arms (Small) uit engekse wiki)</em></li> <li>13 apr 2004 10:50 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:LadislausIIIvanPolen.jpg|LadislausIIIvanPolen.jpg]]" <em>(Ladislaus III van Polen / Wladislaw I van Hongarije (van de Poolse Wiki))</em></li> <li>13 apr 2004 10:48 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Niue_flag_medium.png|Niue_flag_medium.png]]" <em>(Image originally derived from the public domain flags of the CIA World Factbook. Most of the flags have had their colours improved and many have been resized to the proper ratios. For a complete list of Wikipedia flags, see List of flags. &#91;&#91;en:Image:Niue flag medium.png]])</em></li> <li>13 apr 2004 10:46 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:LocatieNiue.png|LocatieNiue.png]]" <em>(&#91;&#91;en:Image:LocationNiue.png]] Location map for Niue &#91;&#91;:en:User:Vardion]])</em></li> <li>13 apr 2004 10:32 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:LocatieMontserrat.png|LocatieMontserrat.png]]" <em>(&#91;&#91;en:Image:LocationMontserrat.png]] location map for Montserrat - made for Wikipedia &#91;&#91;:en:User:Vardion]])</em></li> <li>13 apr 2004 10:16 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:St_Chamond.jpg|St_Chamond.jpg]]" <em>(&#91;&#91;en:Image:St. Chamond.jpg]] French St. Chamond tanks. Photo from the site : &#91;http&#58;//raven.cc.ukans.edu/~kansite/ww_one/photos/greatwar.htm Photos of the Great War] &#91;http&#58;//raven.cc.ukans.edu/~kansite/ww_one/photos/use.htm Image Use Policy and Source Information])</em></li> <li>13 apr 2004 09:52 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:SaloninaSest-(255-257)-CNG.jpg|SaloninaSest-(255-257)-CNG.jpg]]" <em>(Portret van &#91;&#91;Salonina]] op een Romeinse &#91;&#91;sestertie]]. Foto met toestemming van Classical Numismatic Group, Inc. (CNG))</em></li> <li>13 apr 2004 09:26 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Euwe.jpg|Euwe.jpg]]" <em>(Fritz8 - print)</em></li> <li>13 apr 2004 08:54 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:US_Renault_FT-17.jpg|US_Renault_FT-17.jpg]]" <em>(&#91;&#91;en:Image:US Renault FT-17.jpg]] US army Renault FT-17 tanks going forward in the Argonne, France, September 26, 1918 Photo from the site : &#91;http&#58;//raven.cc.ukans.edu/~kansite/ww_one/photos/greatwar.htm Photos of the Great War] &#91;http&#58;//raven.cc.ukans.edu/~kansite/ww_one/photos/use.htm Image Use Policy and Source Information])</em></li> <li>13 apr 2004 08:40 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Stamboon_poortje.jpg|Stamboon_poortje.jpg]]" <em>(zelfgemaakte foto; begin kieming van boon)</em></li> <li>13 apr 2004 08:38 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Herne_(Duitsland).png|Herne_(Duitsland).png]]" <em>(&#91;&#91;de:Bild:Lage von Herne.png]] uit duise wiki Lage von Herne in Deutschland (GNU-FDL) )</em></li> <li>13 apr 2004 08:29 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Beukennoot.png|Beukennoot.png]]" <em>(&#91;&#91;en:Image:European Beech nut.png]] Copied from &#91;&#91;:fr:Image:Hêtre fruit.png]], credited to Guillaume Bokiau. &#123;&#123;msg:GFDL}})</em></li> <li>13 apr 2004 08:04 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Mais_kiemplant.jpg|Mais_kiemplant.jpg]]" <em>(zelfgemaakte foto; rechts het coleoptyl en links het eerste ware blad komt net door coleoptyl heen)</em></li> <li>13 apr 2004 07:59 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Fagus_sylvatica.JPG|Fagus_sylvatica.JPG]]" <em>(Eigen foto)</em></li> <li>13 apr 2004 07:52 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Guttatie_aardbeiblad.jpg|Guttatie_aardbeiblad.jpg]]" <em>(zelfgemaakte foto; als parels langs de bladrand van aardbeiplant)</em></li> <li>13 apr 2004 07:50 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:HetLoo4.JPG|HetLoo4.JPG]]" <em>(Eigen foto)</em></li> <li>13 apr 2004 07:48 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:HetLoo3.JPG|HetLoo3.JPG]]" <em>(Eigen foto)</em></li> <li>13 apr 2004 07:47 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:HetLoo2.JPG|HetLoo2.JPG]]" <em>(Eigen foto)</em></li> <li>13 apr 2004 07:47 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Bladinsnijding_veervormig.jpg|Bladinsnijding_veervormig.jpg]]" <em>(Eerdere versie hersteld)</em></li> <li>13 apr 2004 07:46 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:HetLoo1.JPG|HetLoo1.JPG]]" <em>(Eigen foto)</em></li> <li>13 apr 2004 07:46 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Bladinsnijding_veervormig.jpg|Bladinsnijding_veervormig.jpg]]" <em>(zelfgemaakte tekening; geeft aan wanneer wat in wat overgaat)</em></li> <li>13 apr 2004 07:28 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Bladinsnijding_lobbig.jpg|Bladinsnijding_lobbig.jpg]]" <em>(zelfgemaakte tekening: geeft aan wanneer wat in wat overgaat)</em></li> <li>13 apr 2004 07:28 [[Gebruiker:Deadstar|Deadstar]] heeft ge-upload: "[[:Afbeelding:Tiger_Woods.jpg|Tiger_Woods.jpg]]" <em>(040303-N-5319A-009 Arabian Gulf (Mar. 3, 2004) – Sailors watch professional golfer Tiger Woods hit a few golf balls during a demonstration in the hanger bay of the nuclear powered aircraft carrier USS George Washington (CVN 73). Tiger Woods accompanied by his fiancé Elin Nordegren, PGA player Mark O&#39;Meara, and caddies Steve Williams and Greg Rita visited the Norfolk, Va. Based carrier in the Arabian Gulf before participating in the European PGA Tour&#39;s Dubai Desert Classic on Thursday. The George Washington Carrier Strike Group (CSG) and Carrier Air Wing Seven (CVW-7) are deployed to the Arabian Gulf in support of Operations Iraqi and Enduring Freedom. U.S. Navy photo by Photographer&#39;s Mate 1st Class Brien Aho. (RELEASED) )</em></li> <li>13 apr 2004 07:21 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Bladinsnijding_veervormig.jpg|Bladinsnijding_veervormig.jpg]]" <em>(zelfgemaakte tekening; geeft grenzen aan wanneer wat naar wat overgaat)</em></li> <li>13 apr 2004 07:05 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:Xiangqiboard.png|Xiangqiboard.png]]" <em>(chinees schaakbord van chinese wikipedia)</em></li> <li>13 apr 2004 00:29 [[Gebruiker:Bluppfisk|Bluppfisk]] heeft ge-upload: "[[:Afbeelding:Laplandschild.jpg|Laplandschild.jpg]]" <em>(van http&#58;//www.infoschweden.de/infos/prov2.htm - geen copyright vermeld.)</em></li> <li>13 apr 2004 00:21 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:ConstantineIBuste.jpg|ConstantineIBuste.jpg]]" <em>(van Duitse wikipedia: http&#58;//de.wikipedia.org/wiki/Bild:Constantine.jpg )</em></li> <li>13 apr 2004 00:06 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:ZenobiaAnt.jpg|ZenobiaAnt.jpg]]" <em>(Portret van koningin &#91;&#91;Zenobia]] op een &#91;&#91;antoninianus]]. Foto met toestemming van Classical Numismatic Group, Inc. (CNG).)</em></li> <li>12 apr 2004 23:33 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Beckett.jpg|Beckett.jpg]]" <em>(van engelse pagina)</em></li> <li>12 apr 2004 23:18 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:SaloninusAnt.jpg|SaloninusAnt.jpg]]" <em>(Portret van &#91;&#91;Saloninus]] op een &#91;&#91;antoninianus]]. Foto met toestemming van Classical Numismatic Group, Inc. (CNG))</em></li> <li>12 apr 2004 23:11 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:ValerianusIIae.jpg|ValerianusIIae.jpg]]" <em>(Portret van &#91;&#91;Valerianus II]] op een bronzen munt. Foto met toestemming van Classical Numismatic Group, Inc. (CNG).)</em></li> <li>12 apr 2004 23:00 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:GallienusSest.jpg|GallienusSest.jpg]]" <em>(Portret van &#91;&#91;Gallienus]] op een &#91;&#91;sestertie]]. Foto met toestemming van Classical Numismatic Group, Inc. (CNG))</em></li> <li>12 apr 2004 22:50 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:ValarianusIsest.jpg|ValarianusIsest.jpg]]" <em>(Portret van &#91;&#91;Valerianus I]] op een &#91;&#91;sestertie]]. Foto met toestemming van Classical Numismatic Group, Inc. (CNG).)</em></li> <li>12 apr 2004 22:40 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:CorneliaSuperaAnt.jpg|CorneliaSuperaAnt.jpg]]" <em>(Portret van &#91;&#91;Cornelia SUpera]] op een &#91;&#91;antoninianus]]. Foto met toestemming van Classical Numismatic Group, Inc. (CNG))</em></li> <li>12 apr 2004 22:29 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Kermis.JPG|Kermis.JPG]]" <em>(Eigen foto)</em></li> <li>12 apr 2004 22:28 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Wiltshire.png|Wiltshire.png]]" <em>(van engelse pagina)</em></li> <li>12 apr 2004 22:24 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:AemilianusAnt.jpg|AemilianusAnt.jpg]]" <em>(Portret van &#91;&#91;Aemilianus]] op een &#91;&#91;antoninianus]]. Foto met toestemming van Classical Numismatic Group, Inc. (CNG))</em></li> <li>12 apr 2004 22:22 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Devon.png|Devon.png]]" <em>(van engelse pagina)</em></li> <li>12 apr 2004 22:14 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Kent.png|Kent.png]]" <em>(van engelse pagina)</em></li> <li>12 apr 2004 22:13 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:HostilianusSest.jpg|HostilianusSest.jpg]]" <em>(Portret van &#91;&#91;Hostilianus]] op een &#91;&#91;sestertie]]. Foto met toestemming van Classical Numismatic Group, Inc. (CNG))</em></li> <li>12 apr 2004 22:06 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Milet_theater_therme_2003.jpg|Milet_theater_therme_2003.jpg]]" <em>(Milete, van de Duitse Wiki, door I. Panteleon GNU)</em></li> <li>12 apr 2004 22:06 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Milet_stadtmitte_1997.jpg|Milet_stadtmitte_1997.jpg]]" <em>(Milete, van de Duitse Wiki, door I. Panteleon GNU)</em></li> <li>12 apr 2004 22:06 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Milet_stadtmitte_1997.jpg|Milet_stadtmitte_1997.jpg]]" <em>(Milete, van de Duitse Wiki, door I. Panteleon GNU)</em></li> <li>12 apr 2004 22:05 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Milet_faustina_therme_1997.jpg|Milet_faustina_therme_1997.jpg]]" <em>(Milete, van de Duitse Wiki, door I. Panteleon GNU)</em></li> <li>12 apr 2004 22:05 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:250px-Milet_theater_therme_2003.jpg|250px-Milet_theater_therme_2003.jpg]]" <em>(Milete, van de Duitse Wiki, door I. Panteleon GNU)</em></li> <li>12 apr 2004 22:05 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:250px-Milet_stadtmitte_1997.jpg|250px-Milet_stadtmitte_1997.jpg]]" <em>(Milete, van de Duitse Wiki, door I. Panteleon GNU)</em></li> <li>12 apr 2004 22:05 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:250px-Milet_faustina_therme_1997.jpg|250px-Milet_faustina_therme_1997.jpg]]" <em>(Milete, van de Duitse Wiki, door I. Panteleon GNU)</em></li> <li>12 apr 2004 22:05 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:HerenniusEtruscusSest.jpg|HerenniusEtruscusSest.jpg]]" <em>(Portret van &#91;&#91;Herennius Etruscus]] op een &#91;&#91;sestertie]]. Foto met toestemming van Classical Numismatic Group, Inc. (CNG))</em></li> <li>12 apr 2004 21:55 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:PupienusSest.jpg|PupienusSest.jpg]]" <em>(Portret van &#91;&#91;Pupienus]] op een &#91;&#91;sestertie]]. Foto met toestemming van Classical Numismatic Group, Inc. (CNG).)</em></li> <li>12 apr 2004 21:50 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Vinkebus.jpg|Vinkebus.jpg]]" <em>(Met toestemming fotograaf)</em></li> <li>12 apr 2004 21:43 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:PescenniusNigerDen.jpg|PescenniusNigerDen.jpg]]" <em>(Portret van &#91;&#91;Pescennius Niger]] op een &#91;&#91;denarius]]. Foto met toestemming van Classical Numismatic Group, Inc. (CNG))</em></li> <li>12 apr 2004 21:30 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:DidiusJulianusSest.jpg|DidiusJulianusSest.jpg]]" <em>(Portret van &#91;&#91;Didius Julianus]] op een &#91;&#91;sestertie]]. Foto met toestemming van Classical Numismatic Group, Inc. (CNG))</em></li> <li>12 apr 2004 21:24 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:SamaritaanBlokker.JPG|SamaritaanBlokker.JPG]]" <em>(Eigen foto)</em></li> <li>12 apr 2004 21:20 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Denemarken.gif|Kaart_Denemarken.gif]]" <em>(Vertaling bestaande engelse kaart in Nederlands)</em></li> <li>12 apr 2004 21:20 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:PertinaxSest.jpg|PertinaxSest.jpg]]" <em>(Portret van &#91;&#91;Pertinax]] op een &#91;&#91;sestertie]]. Foto met toestemming van Classical Numismatic Group, Inc. (CNG).)</em></li> <li>12 apr 2004 21:16 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:KrijgsmanBlokker.JPG|KrijgsmanBlokker.JPG]]" <em>(Eigen foto)</em></li> <li>12 apr 2004 21:04 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:LucillaSest.jpg|LucillaSest.jpg]]" <em>(Portret van &#91;&#91;Lucilla]] op &#91;&#91;sestertie]]. Foto met toestemming van Classical Numismatic Group, Inc. (CNG))</em></li> <li>12 apr 2004 20:54 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:MatidiaDen.jpg|MatidiaDen.jpg]]" <em>(Portret van &#91;&#91;Matidia]] op een Romeinse &#91;&#91;denarius]]. Foto met toestemming van Classical Numismatic Group, Inc. (CNG))</em></li> <li>12 apr 2004 20:43 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:PlotinaSest.jpg|PlotinaSest.jpg]]" <em>(Portret van &#91;&#91;Plotina]] op een Romeinse &#91;&#91;sestertie]]. Foto met toestemming van: Classical Numismatic Group, Inc. (CNG))</em></li> <li>12 apr 2004 19:58 [[Gebruiker:Kristof vt|Kristof vt]] heeft ge-upload: "[[:Afbeelding:Dromedaris.jpg|Dromedaris.jpg]]" <em>(&#91;&#91;en:Image:Dromedary.jpg]] uit engelse wiki Camelus dromedarius. 226x283 px. Photo taken by Hajor, December 2002 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 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 &quot;Text of the GNU Free Documentation License&quot;. Subject to disclaimers )</em></li> <li>12 apr 2004 19:23 [[Gebruiker:Bart|Bart]] heeft ge-upload: "[[:Afbeelding:Idor2.png|Idor2.png]]" <em>(van de site http&#58;//www.geocities.com/Athens/Forum/5037/ido-nl.html gekopiëerd)</em></li> <li>12 apr 2004 18:37 [[Gebruiker:Bartux|Bartux]] heeft ge-upload: "[[:Afbeelding:Kubus3.png|Kubus3.png]]" <em>(kubus - zelfgemaakt met povray)</em></li> <li>12 apr 2004 18:35 [[Gebruiker:Bartux|Bartux]] heeft ge-upload: "[[:Afbeelding:Kubus2.png|Kubus2.png]]" <em>(kubus - zelfgemaakt met povray)</em></li> <li>12 apr 2004 18:32 [[Gebruiker:Bartux|Bartux]] heeft ge-upload: "[[:Afbeelding:Kubus.png|Kubus.png]]" <em>(kubus - zelfgemaakt met povray)</em></li> <li>12 apr 2004 18:30 [[Gebruiker:Bartux|Bartux]] heeft ge-upload: "[[:Afbeelding:Bol.png|Bol.png]]" <em>(bol - zelfgemaakt met povray)</em></li> <li>12 apr 2004 18:18 [[Gebruiker:Bartux|Bartux]] heeft ge-upload: "[[:Afbeelding:Torus.png|Torus.png]]" <em>(torus - zelfgemaakt met povray)</em></li> <li>12 apr 2004 17:19 [[Gebruiker:Bluppfisk|Bluppfisk]] heeft ge-upload: "[[:Afbeelding:Veelvraat.jpg|Veelvraat.jpg]]" <em>(veelvraat. deze afbeelding is public domain.)</em></li> <li>12 apr 2004 17:19 [[Gebruiker:Albert|Albert]] heeft ge-upload: "[[:Afbeelding:Haspengouw.jpg|Haspengouw.jpg]]" <em>(Haspengouws dorp)</em></li> <li>12 apr 2004 17:03 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:GordianusIIsest.jpg|GordianusIIsest.jpg]]" <em>(Portret van &#91;&#91;Gordianus I]] op een sestertie. Foto met toestemming van: Classical Numismatic Group, Inc. (CNG))</em></li> <li>12 apr 2004 16:54 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:GordianusIsest.jpg|GordianusIsest.jpg]]" <em>(Portret van &#91;&#91;Gordianus I]] op een sestertie. Foto met toestemming van: Classical Numismatic Group, Inc. (CNG))</em></li> <li>12 apr 2004 16:39 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:BalbinusSest.jpg|BalbinusSest.jpg]]" <em>(Portret van keizer &#91;&#91;Balbinus]] op een Romeinse sestertie. Foto: Classical Numismatic Group, Inc. (CNG))</em></li> <li>12 apr 2004 16:27 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:TranquillinaDen.jpg|TranquillinaDen.jpg]]" <em>(Portret van &#91;&#91;Tranuillina]] op een &#91;&#91;denariu&#39;]]. Foto: Classical Numismatic Group, Inc. (CNG).)</em></li> <li>12 apr 2004 16:04 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Jacobsdraaistel.jpg|Jacobsdraaistel.jpg]]" <em>(Een PCC-draaistel onder een Haagse tram, eigen foto, &#123;&#123;msg:PD}})</em></li> <li>12 apr 2004 15:50 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Fortis_Circustheater.jpg|Fortis_Circustheater.jpg]]" <em>(Fortis Circustheater in Scheveningen, eigen foto, &#123;&#123;msg:PD}})</em></li> <li>12 apr 2004 15:09 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Scheveningse_pier.jpg|Scheveningse_pier.jpg]]" <em>(Pier van Scheveningen, eigen foto. &#123;&#123;msg:PD}})</em></li> <li>12 apr 2004 14:48 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Aardatmosfeer.png|Aardatmosfeer.png]]" <em>(Schematische weergave van de atmosfeer van de aarde; zelf gemaakt)</em></li> <li>12 apr 2004 14:35 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Kurhaus_achterkant.jpg|Kurhaus_achterkant.jpg]]" <em>(Achterkant Kurhaus, eigen foto, &#123;&#123;msg:PD}})</em></li> <li>12 apr 2004 14:35 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Kurhaus_voorkant.jpg|Kurhaus_voorkant.jpg]]" <em>(Voorkant Kurhaus, eigen foto &#123;&#123;msg:PD}})</em></li> <li>12 apr 2004 13:51 [[Gebruiker:RonaldW|RonaldW]] heeft ge-upload: "[[:Afbeelding:ImmerGrune.jpg|ImmerGrune.jpg]]" <em>(Zelfgemaakt plaatje (mbv Fritz))</em></li> <li>12 apr 2004 13:41 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Holland_Casino_Scheveningen.jpg|Holland_Casino_Scheveningen.jpg]]" <em>(Holland Casino te Scheveningen, eigen foto, &#123;&#123;msg:PD}})</em></li> <li>12 apr 2004 13:24 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Vuurtoren_Scheveningen.jpg|Vuurtoren_Scheveningen.jpg]]" <em>(De vuurtoren van Scheveningen, eigen foto, &#123;&#123;msg:PD}})</em></li> <li>12 apr 2004 13:20 [[Gebruiker:RonaldW|RonaldW]] heeft ge-upload: "[[:Afbeelding:OnsterfelijkePartij.jpg|OnsterfelijkePartij.jpg]]" <em>(Zelfgemaakt plaatje (mbv Fritz))</em></li> <li>12 apr 2004 13:16 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:HTM_Bus.jpg|HTM_Bus.jpg]]" <em>(HTM-bus in Scheveningen, eigen foto &#123;&#123;msg:PD}})</em></li> <li>12 apr 2004 13:15 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:GTL_Interieur.jpg|GTL_Interieur.jpg]]" <em>(Interieur van een GTL8-II-tram, eigen foto &#123;&#123;msg:PD}})</em></li> <li>12 apr 2004 13:14 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:GTL.jpg|GTL.jpg]]" <em>(GTL8-II-tram (Den Haag) bij het eindpunt van lijn 11, eigen foto. &#123;&#123;msg:PD}})</em></li> <li>12 apr 2004 12:52 [[Gebruiker:Evanherk|Evanherk]] heeft ge-upload: "[[:Afbeelding:Mammoth.gif|Mammoth.gif]]" <em>(van engelse wiki)</em></li> <li>12 apr 2004 12:14 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Scan7.jpg|Scan7.jpg]]" <em>(Fritz8 - print)</em></li> <li>12 apr 2004 12:13 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Costume_traditonnel_france_Auvergne_grand_01.jpg|Costume_traditonnel_france_Auvergne_grand_01.jpg]]" <em>(Kopie fr: wikipedia)</em></li> <li>12 apr 2004 12:05 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Carte_Localisation_Region_France_Auvergne.gif|Carte_Localisation_Region_France_Auvergne.gif]]" <em>(Kopie fr: wikipedia)</em></li> <li>12 apr 2004 11:57 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Blason_Auvergne_petit.gif|Blason_Auvergne_petit.gif]]" <em>(Kopie fr: wikipedia)</em></li> <li>12 apr 2004 11:46 [[Gebruiker:Evanherk|Evanherk]] heeft ge-upload: "[[:Afbeelding:Spinkleinmettekst.jpg|Spinkleinmettekst.jpg]]" <em>(Eigen foto e van herk 2004)</em></li> <li>12 apr 2004 11:45 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:Sunny-Orange-small.jpg|Sunny-Orange-small.jpg]]" <em>(Foto Keukenhof. Afkomstig van keukenhof.nl: &quot;Persfoto&#39;s. Deze foto&#39;s kunnen rechtenvrij gebruikt worden.&quot;)</em></li> <li>12 apr 2004 11:27 [[Gebruiker:RonaldW|RonaldW]] heeft ge-upload: "[[:Afbeelding:ParelVanZandvoort.jpg|ParelVanZandvoort.jpg]]" <em>(Zelfgemaakt plaatje (mbv Fritz))</em></li> <li>12 apr 2004 10:42 [[Gebruiker:Falcongj|Falcongj]] heeft ge-upload: "[[:Afbeelding:Deltametropool.JPG|Deltametropool.JPG]]" <em>(Zelfgemaakt plaatje (met dank aan Mctv). Vrij te gebruiken...)</em></li> <li>12 apr 2004 10:38 [[Gebruiker:Falcongj|Falcongj]] heeft ge-upload: "[[:Afbeelding:Deltametropool.PNG|Deltametropool.PNG]]" <em>(Zelfgemaakt plaatje (met dank aan Mctv). Vrij te gebruiken...)</em></li> <li>12 apr 2004 10:33 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Locmuenchen.png|Locmuenchen.png]]" <em>(Locatie München van &#91;http&#58;//www.opengeodb.de/suche/index.php?id=21179&amp;q=M%FCnchen www.OpenGeoDb.de Licentie: lgpl)</em></li> <li>12 apr 2004 10:32 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Frygische_muts.png|Frygische_muts.png]]" <em>(Frygische muts, van de Duitse Wiki, Public Domain)</em></li> <li>12 apr 2004 10:22 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Oostenrijk.gif|Kaart_Oostenrijk.gif]]" <em>(Foutje verbeterd)</em></li> <li>12 apr 2004 10:21 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Oostenrijk.gif|Kaart_Oostenrijk.gif]]" <em>(Nederlandse vertaling CIA-kaart)</em></li> <li>12 apr 2004 09:46 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Lemmers.jpg|Lemmers.jpg]]" <em>(foto -Dimitri-)</em></li> <li>12 apr 2004 09:43 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Finland.gif|Kaart_Finland.gif]]" <em>(Nederlandse vertaling CIA-kaart)</em></li> <li>12 apr 2004 09:42 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Finland.png|Kaart_Finland.png]]" <em>(Nederlandse vertaling CIA-kaart)</em></li> <li>12 apr 2004 08:59 [[Gebruiker:PeterMeuris|PeterMeuris]] heeft ge-upload: "[[:Afbeelding:Margaretha_van_Oostenrijk.jpg|Margaretha_van_Oostenrijk.jpg]]" <em>(eigen foto, hierbij onder gnu/fdl gebracht)</em></li> <li>12 apr 2004 08:57 [[Gebruiker:PeterMeuris|PeterMeuris]] heeft ge-upload: "[[:Afbeelding:Margaretha_van_Oostenrijk.jpg|Margaretha_van_Oostenrijk.jpg]]" <em>(Eigen foto nu GPL)</em></li> <li>12 apr 2004 08:53 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Scan6.jpg|Scan6.jpg]]" <em>(Fritz8 - print)</em></li> <li>12 apr 2004 08:52 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Smilodon.jpg|Smilodon.jpg]]" <em>(&#39;&#39;Smilodon californicus&#39;&#39;, van WikipediaDE, oorspronkelijk van http&#58;//www.library.ca.gov. &quot;In general, information presented on this web site, unless otherwise indicated, is considered in the public domain.&quot;)</em></li> <li>12 apr 2004 08:49 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Smilodon.jpg|Smilodon.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Säbelzahnkatze (Smilodon californicus), von www.library.ca.gov &#91;&#91;de:Bild:Smilodon.jpg]])</em></li> <li>12 apr 2004 08:37 [[Gebruiker:PeterMeuris|PeterMeuris]] heeft ge-upload: "[[:Afbeelding:Margaretha_van_Oostenrijk.jpg|Margaretha_van_Oostenrijk.jpg]]" <em>(Margaretha_van_Oostenrijk.jpg)</em></li> <li>12 apr 2004 07:19 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:LogoAPEC.png|LogoAPEC.png]]" <em>((toestemming wordt gevraagd))</em></li> <li>12 apr 2004 07:13 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LamiumMaculatum-hr.jpg|LamiumMaculatum-hr.jpg]]" <em>(eigen foto, hierbij onder gnu/fdl gebracht)</em></li> <li>12 apr 2004 07:09 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:LamiumMaculatum-kl.JPG|LamiumMaculatum-kl.JPG]]" <em>(eigen foto, hierbij onder gnu/fdl gebracht)</em></li> <li>12 apr 2004 05:28 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:LogoAPEC.png|LogoAPEC.png]]" <em>(voor gebruik in de boxjes)</em></li> <li>12 apr 2004 05:24 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:LogoAPEC.png|LogoAPEC.png]]" <em>(voor gebruik in de boxjes)</em></li> <li>12 apr 2004 05:08 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:ApecLogo-2003.jpg|ApecLogo-2003.jpg]]" <em>(Official logo)</em></li> <li>12 apr 2004 04:02 [[Gebruiker:Gidonb|Gidonb]] heeft ge-upload: "[[:Afbeelding:Islamic_Jihad.jpg|Islamic_Jihad.jpg]]" <em>(uit de Hebreeuwse Wikipedia)</em></li> <li>12 apr 2004 03:51 [[Gebruiker:Gidonb|Gidonb]] heeft ge-upload: "[[:Afbeelding:Hamas.jpg|Hamas.jpg]]" <em>(uit de Hebreeuwse Wikipedia)</em></li> <li>11 apr 2004 22:14 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:TuringMachine13som.png|TuringMachine13som.png]]" <em>(2 + 3 = 5 op een Turing machine; zelf gemaakt)</em></li> <li>11 apr 2004 22:13 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:TuringMachine.png|TuringMachine.png]]" <em>(Turing Machine (schematisch); zelf gemaakt)</em></li> <li>11 apr 2004 22:13 [[Gebruiker:Johi|Johi]] heeft ge-upload: "[[:Afbeelding:Fby0.jpg|Fby0.jpg]]" <em>(Eerdere versie hersteld)</em></li> <li>11 apr 2004 22:03 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Griekenland.gif|Kaart_Griekenland.gif]]" <em>(Nederlandse vertaling CIA-kaart)</em></li> <li>11 apr 2004 21:51 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Nicholas1.jpg|Nicholas1.jpg]]" <em>(En: wikipedia)</em></li> <li>11 apr 2004 20:44 [[Gebruiker:Gidonb|Gidonb]] heeft ge-upload: "[[:Afbeelding:HaifaLogo.PNG|HaifaLogo.PNG]]" <em>(uit de Hebreeuwse Wikipedia)</em></li> <li>11 apr 2004 20:39 [[Gebruiker:Gidonb|Gidonb]] heeft ge-upload: "[[:Afbeelding:EilatLogo.jpg|EilatLogo.jpg]]" <em>(uit de Hebreeuwse Wikipedia)</em></li> <li>11 apr 2004 20:36 [[Gebruiker:Gidonb|Gidonb]] heeft ge-upload: "[[:Afbeelding:JerLogo.jpg|JerLogo.jpg]]" <em>(uit de Hebreeuwse Wikipedia)</em></li> <li>11 apr 2004 20:34 [[Gebruiker:Gidonb|Gidonb]] heeft ge-upload: "[[:Afbeelding:NetanyaLogo.jpg|NetanyaLogo.jpg]]" <em>(uit de Hebreeuwse Wikipedia)</em></li> <li>11 apr 2004 20:32 [[Gebruiker:Gidonb|Gidonb]] heeft ge-upload: "[[:Afbeelding:AshdodLogo.png|AshdodLogo.png]]" <em>(uit de Hebreeuwse Wikipedia)</em></li> <li>11 apr 2004 20:16 [[Gebruiker:Gidonb|Gidonb]] heeft ge-upload: "[[:Afbeelding:AshkelonLogo.jpg|AshkelonLogo.jpg]]" <em>(uit de Hebreeuwse Wikipedia)</em></li> <li>11 apr 2004 19:16 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:JohnCollierSchilderij.jpg|JohnCollierSchilderij.jpg]]" <em>(Zelfde plaatje maar nu het en:Formaat)</em></li> <li>11 apr 2004 18:34 [[Gebruiker:Puckly|Puckly]] heeft ge-upload: "[[:Afbeelding:JohnCollierSchilderij.jpg|JohnCollierSchilderij.jpg]]" <em>(Van Engelse wiki: This image has been released into the public domain by the author, or its copyright has expired. This applies worldwide)</em></li> <li>11 apr 2004 16:17 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Hklarenbeek.jpg|Hklarenbeek.jpg]]" <em>(foto -Dimitri-)</em></li> <li>11 apr 2004 15:55 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Italië.gif|Kaart_Italië.gif]]" <em>(Nederlandse vertaling van Engelse kaart)</em></li> <li>11 apr 2004 14:32 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Avignon-palais.jpg|Avignon-palais.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;== Description == Photo of Avignon &#61;= Source == &#91;&#91;:fr:Image:Avignon-palais.jpg]] (Author: Greudin, summer 2003) &#61;= Licence == GFDL &#91;&#91;en:Image:Avignon-palais.jpg]])</em></li> <li>11 apr 2004 14:30 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Avignon-palais-des-papes.jpg|Avignon-palais-des-papes.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;== Description == Photo of Avignon &#61;= Source == &#91;&#91;:fr:Image:Avignon-palais-des-papes.jpg]] (Author: Greudin, summer 2003 ) &#61;= Licence == GFDL &#91;&#91;en:Image:Avignon-palais-des-papes.jpg]])</em></li> <li>11 apr 2004 14:29 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Avignon-place-palais.jpg|Avignon-place-palais.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;== Description == Photo of Avignon &#61;= Source == &#91;&#91;:fr:Image:Avignon-place-palais.jpg]] (Author: Greudin, summer 2003 ) &#61;= Licence == GFDL &#91;&#91;en:Image:Avignon-place-palais.jpg]])</em></li> <li>11 apr 2004 14:28 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Avignon_coat_of_arms.jpg|Avignon_coat_of_arms.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Avignon coat of arms, from fr: From the French wikipedia &#91;http&#58;//fr.wikipedia.org/wiki/Image:Avignon_armoirie.jpg] &#91;&#91;en:Image:Avignon coat of arms.jpg]])</em></li> <li>11 apr 2004 14:24 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:Hudsonbaymap_nl.png|Hudsonbaymap_nl.png]]" <em>(Kaart van de Hudson baai; zelf gemaakte vertaling van dezelfde kaart op de Engelstalige Wikipedia)</em></li> <li>11 apr 2004 14:17 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Avicenna.jpg|Avicenna.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;In the &#91;&#91;public domain]] by age &#123;&#123;msg:PD}} &#91;&#91;en:Image:Avicenna.jpg]])</em></li> <li>11 apr 2004 14:01 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:ACT_in_Australia_map.png|ACT_in_Australia_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;&#123;&#123;msg:GFDL}} &#91;&#91;en:Image:ACT in Australia map.png]])</em></li> <li>11 apr 2004 14:01 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:ACT_in_Australia_map.png|ACT_in_Australia_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;&#123;&#123;msg:GFDL}} &#91;&#91;en:Image:ACT in Australia map.png]])</em></li> <li>11 apr 2004 13:55 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Lucius_Domitius_Aurelianus.jpg|Lucius_Domitius_Aurelianus.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-sv. De beschrijving daar was:&lt;p&gt;Från Nordisk familjebok &#91;&#91;sv:Bild:Lucius Domitius Aurelianus.jpg]])</em></li> <li>11 apr 2004 13:55 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Aurelian.jpg|Aurelian.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;&#39;&#39;&#39;Aurelian&#39;&#39;&#39; (&#91;&#91;270]]-&#91;&#91;275]]) silvered &#91;&#91;antoninianus]] Obverse: IMP AVRELIANVS AVG; radiate bust of Aurelian right Reverse: ORIENS AVG; &#91;&#91;Sol]] holding globe, standing over captives &#91;&#91;en:Image:Aurelian.jpg]])</em></li> <li>11 apr 2004 13:39 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Atrium_1.jpg|Atrium_1.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-sv. De beschrijving daar was:&lt;p&gt;Från Nordisk familjebok &#91;&#91;sv:Bild:Atrium 1.jpg]])</em></li> <li>11 apr 2004 13:33 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Littleboy.jpg|Littleboy.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;1:1 Modell der Little-Boy Bombe von http&#58;//www.lanl.gov/museum/defense.shtml Copyright notice: Unless otherwise indicated, this information has been authored by an employee or employees of the University of California, operator of the Los Alamos National Laboratory under Contract No. W-7405-ENG-36 with the U.S. Department of Energy. The U.S. Government has rights to use, reproduce, and distribute this information. The public may copy and use this information without charge, provided that this Notice and any statement of authorship are reproduced on all copies. Neither the Government nor the University makes any warranty, express or implied, or assumes any liability or responsibility for the use of this information. &#91;&#91;de:Bild:littleboy.jpg]])</em></li> <li>11 apr 2004 13:32 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Fatman.jpg|Fatman.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;1:1 Modell der Fat-Man Bombe von http&#58;//www.lanl.gov/museum/defense.shtml Copyright notice: Unless otherwise indicated, this information has been authored by an employee or employees of the University of California, operator of the Los Alamos National Laboratory under Contract No. W-7405-ENG-36 with the U.S. Department of Energy. The U.S. Government has rights to use, reproduce, and distribute this information. The public may copy and use this information without charge, provided that this Notice and any statement of authorship are reproduced on all copies. Neither the Government nor the University makes any warranty, express or implied, or assumes any liability or responsibility for the use of this information. &#91;&#91;de:Bild:fatman.jpg]])</em></li> <li>11 apr 2004 13:25 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Aten_disk.jpg|Aten_disk.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Painting of the Aten from Amarna &#91;&#91;en:Image:Aten disk.jpg]])</em></li> <li>11 apr 2004 12:54 [[Gebruiker:Wietse Venema|Wietse Venema]] heeft ge-upload: "[[:Afbeelding:Tricolour.jpg|Tricolour.jpg]]" <em>(Illustratie tricolor-effect. Fotograaf Wietse Venema, stemt toe in publicatie onder GNU/FDL, mits fotograaf vermeldt blijft.)</em></li> <li>11 apr 2004 12:52 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Kaart_Israël.gif|Kaart_Israël.gif]]" <em>(Vertaling bestaande engelse kaart in Nederlands)</em></li> <li>11 apr 2004 12:31 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Scan8.jpg|Scan8.jpg]]" <em>(Fritz8 - print)</em></li> <li>11 apr 2004 12:25 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Scan2.jpg|Scan2.jpg]]" <em>(Fritz8 - print)</em></li> <li>11 apr 2004 12:19 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Scan2.jpg|Scan2.jpg]]" <em>(Fritz8 - print)</em></li> <li>11 apr 2004 12:02 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Wiersma.jpg|Wiersma.jpg]]" <em>(foto -Dimitri-)</em></li> <li>11 apr 2004 11:23 [[Gebruiker:Wouterhagens|Wouterhagens]] heeft ge-upload: "[[:Afbeelding:Chloroform.jpg|Chloroform.jpg]]" <em>(formule chloroform (Wouter Hagens))</em></li> <li>11 apr 2004 10:51 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:HenryHudson.jpg|HenryHudson.jpg]]" <em>(Henry Hudson, uit Cyclopaedia of Universal History, 1885&lt;p&gt;&#123;&#123;msg:Auteursrecht verlopen}})</em></li> <li>11 apr 2004 10:32 [[Gebruiker:Wouterhagens|Wouterhagens]] heeft ge-upload: "[[:Afbeelding:Tetrahydrofuraan.jpg|Tetrahydrofuraan.jpg]]" <em>(formule THF (Wouter Hagens))</em></li> <li>11 apr 2004 10:24 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Axolotl.jpg|Axolotl.jpg]]" <em>(En: wikipedia)</em></li> <li>11 apr 2004 09:34 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Ministerpresidentcals.jpg|Ministerpresidentcals.jpg]]" <em>(Jo Cals. Bron: Ministerie van Algemene Zaken)</em></li> <li>11 apr 2004 09:27 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Willem_Bilderdijk.png|Willem_Bilderdijk.png]]" <em>(Willem Bilderdijk. Bron: Museum van de Vaderlandse Geschiedenis)</em></li> <li>11 apr 2004 09:23 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Willembilderdijk.png|Willembilderdijk.png]]" <em>(Willem Bilderdijk. Bron: Museum van de Vaderlandse Geschiedenis)</em></li> <li>11 apr 2004 09:20 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Willembilderdijk.png|Willembilderdijk.png]]" <em>(Willem Bilderdijk. Bron: Museum van de Vaderlandse Geschiedenis)</em></li> <li>11 apr 2004 09:17 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Arjanerkel.jpg|Arjanerkel.jpg]]" <em>(Arjan Erkel, deze foto circuleert op tientallen websites op Internet, kan als fair use beschouwd worden om hem ook hier te gebruiken.)</em></li> <li>11 apr 2004 09:15 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Barendbiesheuvel.jpg|Barendbiesheuvel.jpg]]" <em>(Barend Biesheuvel. Bron: Ministerie van Algemene Zaken)</em></li> <li>11 apr 2004 09:10 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Nicolaasbeets.png|Nicolaasbeets.png]]" <em>(Nicolaas Beets. Bron: Museum van de Vaderlandse Geschiedenis)</em></li> <li>11 apr 2004 09:08 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Arabië.png|Arabië.png]]" <em>(Versie 3)</em></li> <li>11 apr 2004 09:00 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Louisjosephmariabeel.jpg|Louisjosephmariabeel.jpg]]" <em>(Minister-President Beel. Bron Minaz)</em></li> <li>11 apr 2004 08:48 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Behoudenhuis.png|Behoudenhuis.png]]" <em>(Behouden Huys. Bron: het museum van de vaderlandse geschiedenis)</em></li> <li>11 apr 2004 08:18 [[Gebruiker:Jan Arkesteijn|Jan Arkesteijn]] heeft ge-upload: "[[:Afbeelding:Driesvanagt.jpg|Driesvanagt.jpg]]" <em>(Dries van Agt, bron Minaz)</em></li> <li>11 apr 2004 08:00 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Athena.png|Athena.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Athena (Pallas Velletri) from the Louvre. Public domain image from Nordisk familjebok. &#91;&#91;en:Image:Athena.png]])</em></li> <li>11 apr 2004 07:55 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Atef.jpg|Atef.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Mohammed Atef - http&#58;//www.fbi.gov/mostwant/terrorists/teratef.htm &#91;&#91;en:Image:Atef.jpg]])</em></li> <li>11 apr 2004 07:39 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Mordechai_Vanunu.jpg|Mordechai_Vanunu.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Israeli prisoner (nuclear secrets) Source: http&#58;//www.vanunu.freeserve.co.uk/ Credit unknown/untraceable &#123;&#123;msg:fairuse}} &#91;&#91;en:Image:Mordechai Vanunu.jpg]])</em></li> <li>11 apr 2004 07:35 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Paul_Kruger.jpg|Paul_Kruger.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;From &#91;http&#58;//www.lib.utexas.edu], in the &#91;&#91;public domain]] &#91;&#91;en:Image:Paul Kruger.jpg]])</em></li> <li>11 apr 2004 07:08 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:Frisbee-1.jpg|Frisbee-1.jpg]]" <em>(&#91;&#91;en:Image:Frisbee-1.jpg]] Professionele &#91;&#91;frisbee]] van &#91;&#91;:en:Image:Frisbee-1.jpg&#124;Engelstalige Wikipedia]]. De tekst daar was:Professional Frisbee The uploader wrote: &quot;I owned the copyright to this image, but gave it away to Wikipedia. Feel free to copy/distribute.&quot; )</em></li> <li>11 apr 2004 05:53 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:LogoAlterra.gif|LogoAlterra.gif]]"</li> <li>11 apr 2004 05:32 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:LogoAPEC.png|LogoAPEC.png]]" <em>(Toestemming wordt gevraagd)</em></li> <li>11 apr 2004 03:18 [[Gebruiker:Bluppfisk|Bluppfisk]] heeft ge-upload: "[[:Afbeelding:Ghentopn.jpg|Ghentopn.jpg]]" <em>(Het Lam Gods)</em></li> <li>11 apr 2004 02:48 [[Gebruiker:Bluppfisk|Bluppfisk]] heeft ge-upload: "[[:Afbeelding:180px-Karta_över_Uppsala_1920.jpg|180px-Karta_över_Uppsala_1920.jpg]]" <em>(Kaart van Uppsala)</em></li> <li>11 apr 2004 02:46 [[Gebruiker:Bluppfisk|Bluppfisk]] heeft ge-upload: "[[:Afbeelding:Uppsalas_stadsvapen.png|Uppsalas_stadsvapen.png]]" <em>(Uppsalas Wapenschild)</em></li> <li>11 apr 2004 00:18 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:1-over-x-plus-x.png|1-over-x-plus-x.png]]" <em>(1 gedeeld door x + x)</em></li> <li>11 apr 2004 00:18 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Johannes_paulus_2.jpg|Johannes_paulus_2.jpg]]" <em>(van italiaanse pagina)</em></li> <li>11 apr 2004 00:16 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:1-over-x.png|1-over-x.png]]" <em>(1 gedeeld door x)</em></li> <li>11 apr 2004 00:06 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Astronaut.jpg|Astronaut.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;&lt;table border=0 cellpadding=0 cellspacing=1 xwidth=500 width=640&gt; &lt;tr bgcolor=#DEDFDE&gt; &lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot; align=&quot;center&quot; valign=&quot;bottom&quot; nowrap&gt;&lt;/td&gt; &lt;td valign=&quot;top&quot; nowrap&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&#91;&#91;NASA]] Photo ID:&lt;/b&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;S84-27017&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/td&gt; &lt;td valign=top nowrap&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;Program:&lt;/b&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&#91;&#91;Space Shuttle&#124;Shuttle]]&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/td&gt; &lt;td valign=top&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;Mission:&lt;/b&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&#91;&#91;STS-41-B]] &lt;/td&gt; &lt;td valign=top nowrap&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;Date Taken:&lt;/b&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&#91;&#91;February 11]], &#91;&#91;1984]] &lt;/td&gt; &lt;td valign=top nowrap&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;Film Type:&lt;/b&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&#91;&#91;70mm film&#124;70mm]] &lt;/td&gt; &lt;/tr&gt; &lt;tr bgcolor=#DEDFDE&gt; &lt;td colspan=6&gt; &lt;table width=&quot;100%&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;12&quot;&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;Title:&lt;/b&gt;&lt;br&gt; Views of the extravehicular activity during STS 41-B&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr bgcolor=#DEDFDE&gt; &lt;td colspan=6&gt; &lt;table width=&quot;100%&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;12&quot;&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br&gt; Astronaut &#91;&#91;Bruce McCandless II]], mission specialist, participates in a extravehicular activity (EVA), a few meters away from the cabin of the shuttle Challenger. He is using a nitrogen-propelled hand-controlled &#91;&#91;manned maneuvering unit]] (MMU). He is performing this EVA without being tethered to the shuttle. &lt;BR&gt;The picture shows a cloud view of the earth in the background. &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/td&gt; &lt;/tr bgcolor=#DEDFDE&gt; &lt;tr bgcolor=#DEDFDE&gt; &lt;td colspan=6&gt; &lt;table width=&quot;100%&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;12&quot;&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;Subject Terms:&lt;/b&gt;&lt;br&gt; &#91;&#91;astronaut&#124;ASTRONAUTS]] &#91;&#91;Space Shuttle Challenger&#124;CHALLENGER (ORBITER)]] &#91;&#91;crew&#124;CREW]] PROCEDURES (INFLIGHT) &#91;&#91;extravehicular activity&#124;EXTRAVEHICULAR ACTIVITY]] &#91;&#91;extravehicular mobility unit&#124;EXTRAVEHICULAR MOBILITY UNITS]] &#91;&#91;manned maneuvering unit&#124;MANNED MANEUVERING UNITS]] &#91;&#91;STS-41-B&#124;SPACE SHUTTLE MISSION 41-B]] &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &#91;&#91;en:Image:astronaut.jpg]])</em></li> <li>11 apr 2004 00:05 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Astronaut_wings.png|Astronaut_wings.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;USAF Astronaut Insignia Badge, Public domain illustration from &#91;http&#58;//www.af.mil/art.html af.mil art gallery]. &#91;&#91;en:Image:Astronaut wings.png]])</em></li> <li>10 apr 2004 23:45 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Renfe252.jpg|Renfe252.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Zu den neueren Fahrzeugen der &#91;&#91;Red Nacional de los Ferrocarriles Espanoles&#124;RENFE]] zählt die Baureihe 252 ( &#91;&#91;25. Juni]] &#91;&#91;2002]] in L&#39;Aldea-Amposta-Tortosa). *Aufnahme: Steffen Mokosch *Lizenz: &#91;&#91;GNU FDL]] &#91;&#91;de:Bild:Renfe252.jpg]])</em></li> <li>10 apr 2004 23:44 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Wappen_augsburg.png|Wappen_augsburg.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Wappen von Augsburg &#91;&#91;de:Bild:Wappen augsburg.png]])</em></li> <li>10 apr 2004 23:43 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Karte_augsburg_in_deutschland.png|Karte_augsburg_in_deutschland.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Karte Augsburg in Deutschland &#91;&#91;de:Bild:Karte augsburg in deutschland.png]])</em></li> <li>10 apr 2004 23:36 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:StichtingArkLogo.gif|StichtingArkLogo.gif]]"</li> <li>10 apr 2004 23:37 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Spargelkraut-a-2003-10-12.jpg|Spargelkraut-a-2003-10-12.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Spargelkraut bei Dambach, Stadtteil von Fürth (12. Okt. 2003) &#91;&#91;de:Bild:spargelkraut-a-2003-10-12.jpg]])</em></li> <li>10 apr 2004 23:30 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Asklepios_MK1888.png|Asklepios_MK1888.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Abbildung aus Meyers Konversionlexikon 1888 - Asklepios &#91;&#91;de:Bild:Asklepios MK1888.png]])</em></li> <li>10 apr 2004 23:23 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Logo_ASEAN.png|Logo_ASEAN.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-ms. De beschrijving daar was:&lt;p&gt;Logo ASEAN &#91;&#91;ms:Imej:Logo ASEAN.png]])</em></li> <li>10 apr 2004 23:15 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Littlebittern43.jpg|Littlebittern43.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Little Bittern from old enc &#91;&#91;en:Image:Littlebittern43.jpg]])</em></li> <li>10 apr 2004 23:11 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Holzschnitt_Woody_Allen.jpg|Holzschnitt_Woody_Allen.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;*Beschreibung: Holzschnitt &quot;Woody Allen&quot; von Manfred Behrens - Druck und Druckplatte *Quelle: Der abgebildete Holzschnitt und die hier eingstellte Fotografie davon stammen von Manfred Behrens (&#91;&#91;Benutzer: Kielradio]]) *Fotograf und Hersteller: Manfred Behrens (Benutzer: Kielradio) *Andere Versionen: - *Lizenzstatus: Public Domain &#91;&#91;de:Bild:Holzschnitt Woody Allen.jpg]])</em></li> <li>10 apr 2004 22:54 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Conley.jpg|Conley.jpg]]" <em>(Vanaf engelse wikipedia)</em></li> <li>10 apr 2004 22:50 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Lens_universite.jpg|Lens_universite.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was:&lt;p&gt;Universite d&#39;Artois à Lens en 2000 Prise de vue par mes soins, placée sous licence GNU &#91;&#91;fr:Image:Lens universite.jpg]])</em></li> <li>10 apr 2004 22:46 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Arabië.png|Arabië.png]]" <em>(Versie 2)</em></li> <li>10 apr 2004 22:46 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:ArtemisFromVersailles.png|ArtemisFromVersailles.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Artemsi statue from Versailles. Public domain image from Nordisk familjebok. &#91;&#91;en:Image:ArtemisFromVersailles.png]])</em></li> <li>10 apr 2004 22:40 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Arsenal_fc_old_crest_small.png|Arsenal_fc_old_crest_small.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Arsenal FC&#39;s Old Crest (No longer in use due to lack of copyright control) &#91;&#91;en:Image:arsenal fc old crest small.png]])</em></li> <li>10 apr 2004 22:25 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Schwarzenegger.jpg|Schwarzenegger.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Arnold schwarzenegger genaric campaign photo. Fair use &#91;&#91;en:Image:schwarzenegger.jpg]])</em></li> <li>10 apr 2004 22:19 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Schoenberg_la_1948.jpg|Schoenberg_la_1948.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Photo of Arnold Schoenberg in Los Angeles, believed to be taken in 1948. Source of photo is the &#91;http&#58;//www.usc.edu/isd/archives/schoenberg Schoenberg Archives at USC]. The archive grants permission to publish this image, provided that the photographer is credited.&#91;http&#58;//www.usc.edu/isd/archives/schoenberg/faqla_as.htm] Photographer: &#91;&#91;Florence Homolka]] &#91;&#91;en:Image:Schoenberg la 1948.jpg]])</em></li> <li>10 apr 2004 22:17 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Arabië.png|Arabië.png]]" <em>(Arabisch schiereiland)</em></li> <li>10 apr 2004 22:14 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Harissa.jpg|Harissa.jpg]]" <em>(Zelfgemaakte foto van Harissa, GNU FDL)</em></li> <li>10 apr 2004 22:05 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Lombardei_in_Italien.png|Lombardei_in_Italien.png]]" <em>(Lombarije in Italië, &#123;&#123;msg:GFDL}} volgens de uploader)</em></li> <li>10 apr 2004 22:03 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Ariane.png|Ariane.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Image from &#91;&#91;http&#58;//fr.wikipedia.org/wiki/Image:Ariane.gif]] &#91;&#91;en:Image:Ariane.png]])</em></li> <li>10 apr 2004 21:54 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Manila_dwarf_coconut_palm.jpg|Manila_dwarf_coconut_palm.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Manila dwarf coconut palm from http&#58;//www.ars.usda.gov/is/graphics/photos/&lt;br&gt; &#91;&#91;:Image:Manila dwarf coconut palm thumbnail.jpg&#124;Manila dwarf coconut palm thumbnail]] Image Number K5728-13&lt;br&gt; A Manila dwarf coconut palm on the grounds of the Tropical Agriculture Research Station in Mayaguez, Puerto Rico. Photo by Scott Bauer. &#91;&#91;en:Image:Manila dwarf coconut palm.jpg]])</em></li> <li>10 apr 2004 21:43 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Woodywalk2.jpg|Woodywalk2.jpg]]" <em>(Vanaf Engelse wikipedia)</em></li> <li>10 apr 2004 21:28 [[Gebruiker:Puckly|Puckly]] heeft ge-upload: "[[:Afbeelding:ArabischSchiereiland.JPG|ArabischSchiereiland.JPG]]" <em>(Kuweit veranderd in Koeweit)</em></li> <li>10 apr 2004 21:19 [[Gebruiker:Puckly|Puckly]] heeft ge-upload: "[[:Afbeelding:ArabischSchiereiland.JPG|ArabischSchiereiland.JPG]]" <em>(Elly had deze van de Duitse wiki; ik heb hem een beetje bewerkt)</em></li> <li>10 apr 2004 21:08 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Arabien-gross.jpg|Arabien-gross.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Politische Asien-Karte Copyright 2001-3 Brion L. Vibber http&#58;//leuksman.com/misc/maps.php &#39;&#39;These are primarily intended for use in the Wikipedia free encyclopedia project. Fill in the country names etc. for your target language, size to taste, and use as you wish.&#39;&#39; &#91;&#91;de:Bild:Arabien-gross.jpg]])</em></li> <li>10 apr 2004 20:59 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:MeyersRossbach.jpg|MeyersRossbach.jpg]]" <em>(Uit Meyers konversationzlexicon, uitgave 1888, erheblich frei)</em></li> <li>10 apr 2004 20:16 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Johanna.png|Johanna.png]]" <em>(Johanna de Waanzinnige (van Spaanse Wiki))</em></li> <li>10 apr 2004 20:16 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Sicilia-kaart.png|Sicilia-kaart.png]]" <em>(Kopie it: wikipedia)</em></li> <li>10 apr 2004 20:04 [[Gebruiker:Puckly|Puckly]] heeft ge-upload: "[[:Afbeelding:GelderschLandschap.gif|GelderschLandschap.gif]]" <em>(Logo van het Geldersch Landschap afkomstig van hun site)</em></li> <li>10 apr 2004 20:02 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Sicilia-vlag.png|Sicilia-vlag.png]]" <em>(Kopie en: wikipedia)</em></li> <li>10 apr 2004 19:32 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Altea_parochiekerk_maart_2004.jpg|Altea_parochiekerk_maart_2004.jpg]]" <em>(Eigen foto Fruggo (vrijgegeven onder GNU), maart 2004. Parochiekerk in Altea (Spanje).)</em></li> <li>10 apr 2004 19:29 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Liguria-kaart.png|Liguria-kaart.png]]" <em>(Kopie de: wikipedia)</em></li> <li>10 apr 2004 19:28 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Liguria-vlag.png|Liguria-vlag.png]]" <em>(Kopie de: wikipedia)</em></li> <li>10 apr 2004 19:25 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Altea_straatje_maart_2004.jpg|Altea_straatje_maart_2004.jpg]]" <em>(Eigen foto Fruggo (vrijgegeven onder GNU), maart 2004. Straatje in Altea (Spanje).)</em></li> <li>10 apr 2004 19:21 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Beard3.jpg|Beard3.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;A white man with a &#91;&#91;beard]]. Photo by &#91;&#91;User:KF&#124;KF]] &#91;&#91;en:Image:Beard3.jpg]])</em></li> <li>10 apr 2004 19:17 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Alicante_haven_vanaf_Sta_Barbara.jpg|Alicante_haven_vanaf_Sta_Barbara.jpg]]" <em>(Eigen foto Fruggo (vrijgegeven onder GNU), maart 2004. De haven van Alicante gezien vanaf het kasteel van Santa Barbara.)</em></li> <li>10 apr 2004 19:14 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:R4_1973_klein.jpg|R4_1973_klein.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Renault R4 (Anzeigenmotiv von 1973; gescannt aus stern 10/73 vom 01.03.1973, Seite 89); klein Veröffentlichungsgenehmigung bei Renault angefragt. Bitte solange nicht löschen (Renault sieht sich die Seite an). &#91;&#91;Benutzer:Schattenraum&#124;schattenraum]] 05:31, 14. Jan 2004 (CET) &#91;&#91;de:Bild:R4 1973 klein.jpg]])</em></li> <li>10 apr 2004 19:12 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Ch-Babbage.jpg|Ch-Babbage.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Charles Babbage (a better pic) &#91;&#91;en:Image:Ch-Babbage.jpg]])</em></li> <li>10 apr 2004 19:07 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Sitar-1927.jpg|Sitar-1927.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;http&#58;//memory.loc.gov Chicago Daily News negatives collection, reproduction #: DN-0082981. Courtesy of the Chicago Historical Society. &#123;&#123;msg:fairuse}} Summary: Three-quarter length portrait of Premla Shahane, a Hindu, playing a sitar and looking down, sitting in front of a building on the University of Chicago campus, located in the Hyde Park community area of Chicago, Illinois. (1927) &#91;&#91;en:Image:Sitar-1927.jpg]])</em></li> <li>10 apr 2004 19:06 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Sitar.jpg|Sitar.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;A model sitar &#91;&#91;en:Image:Sitar.jpg]])</em></li> <li>10 apr 2004 19:05 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Schiermonnikoog_2004_twee_vuurtorens_vanaf_Noordzee.jpg|Schiermonnikoog_2004_twee_vuurtorens_vanaf_Noordzee.jpg]]" <em>(Eigen foto Fruggo (vrijgegeven onder GNU). Uitzicht vanaf Noordzee op Schiermonnikoog met de twee vuurtorens. Februari 2004.)</em></li> <li>10 apr 2004 19:02 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Apus_constellation_map.png|Apus_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;This is a celestial map of the constellation Apus, the Bird of Paradise. Copyright &amp;copy; 2003 &#91;&#91;User:Bronger&#124;Torsten Bronger]]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 2003/08/22. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line is the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the equidistant azimuthal projection (the zenith being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 15.7 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Apus constellation map.png]])</em></li> <li>10 apr 2004 19:00 [[Gebruiker:Fruggo|Fruggo]] heeft ge-upload: "[[:Afbeelding:Mandarijn_met_steeltje_en_twee_blaadjes_Spanje.jpg|Mandarijn_met_steeltje_en_twee_blaadjes_Spanje.jpg]]" <em>(Eigen foto Fruggo (vrijgegeven onder GNU). Foto gemaakt maart 2004 in Benidorm. Spaanse mandarijn.)</em></li> <li>10 apr 2004 18:55 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Flagge_Apuliens.png|Flagge_Apuliens.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Flagge Apuliens &#91;&#91;de:Bild:Flagge Apuliens.png]])</em></li> <li>10 apr 2004 18:51 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Italy_Regions_Apulia_220px.png|Italy_Regions_Apulia_220px.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;&#39;&#39;&#39;Credit:&#39;&#39;&#39; &#91;&#91;user:ahoerstemeier&#124;Ahoerstemeier]] (outline), &#91;&#91;user:snoyes&#124;Sascha Noyes]] (other stuff), 2004 &#39;&#39;&#39;License:&#39;&#39;&#39; &#91;&#91;GFDL]] &#39;&#39;&#39;Info:&#39;&#39;&#39; Map of the regions of Italy with the individual region highlighted. &#91;&#91;en:Image:Italy Regions Apulia 220px.png]])</em></li> <li>10 apr 2004 17:05 [[Gebruiker:Wil Gipman|Wil Gipman]] heeft ge-upload: "[[:Afbeelding:046_Campanile.jpg|046_Campanile.jpg]]" <em>(Eigen foto volgens GNU/FDL Licentie)</em></li> <li>10 apr 2004 17:01 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Delphi_temple-250px.jpg|Delphi_temple-250px.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Photo of temple of Apollo at Delphi, taken October 1992 by Stan Shebs and licensed under GFDL, 250px across &#91;&#91;en:Image:Delphi temple-250px.jpg]])</em></li> <li>10 apr 2004 17:00 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Apollon_lycien_louvre.jpg|Apollon_lycien_louvre.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was:&lt;p&gt;&lt;br&gt; &#39;&#39;&#39;Description :&#39;&#39;&#39; &#91;&#91;Apollon]] lycien&lt;br&gt; &#39;&#39;&#39;Lieu :&#39;&#39;&#39; &#91;&#91;musée du Louvre]], &#91;&#91;Paris]]&lt;br&gt; &#39;&#39;&#39;Licence :&#39;&#39;&#39; &#91;&#91;domaine public]]&lt;br&gt; &#39;&#39;&#39;Source :&#39;&#39;&#39; photo personnelle&lt;br&gt; &#39;&#39;&#39;Date :&#39;&#39;&#39; &#91;&#91;2003]] &#91;&#91;fr:Image:Apollon lycien louvre.jpg]])</em></li> <li>10 apr 2004 16:41 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:ZwevegemLocatie.png|ZwevegemLocatie.png]]" <em>(Anzegemfix)</em></li> <li>10 apr 2004 16:40 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:ZonnebekeLocatie.png|ZonnebekeLocatie.png]]" <em>(Anzegemfix)</em></li> <li>10 apr 2004 16:40 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:MeulebekeLocatie.png|MeulebekeLocatie.png]]" <em>(Anzegemfix)</em></li> <li>10 apr 2004 16:40 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:WingeneLocatie.png|WingeneLocatie.png]]" <em>(Anzegemfix)</em></li> <li>10 apr 2004 16:40 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:TorhoutLocatie.png|TorhoutLocatie.png]]" <em>(Anzegemfix)</em></li> <li>10 apr 2004 16:39 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:PittemLocatie.png|PittemLocatie.png]]" <em>(Anzegemfix)</em></li> <li>10 apr 2004 16:39 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:OostrozebekeLocatie.png|OostrozebekeLocatie.png]]" <em>(Anzegemfix)</em></li> <li>10 apr 2004 15:53 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Wounded_Knee.jpg|Wounded_Knee.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Wounded Knee Fotografie wurde im Sommer 1997 erstellt von &#91;&#91;Benutzer:Napa]]. Das Bild ist unter der &#91;&#91;GNU FDL]] zur weiteren Verwendung freigegeben. &#91;&#91;de:Bild:Wounded Knee.jpg]])</em></li> <li>10 apr 2004 15:50 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Guttatie.jpg|Guttatie.jpg]]" <em>(zelfgemaakte foto; guttatie van eerste ware blad van komkommerplant)</em></li> <li>10 apr 2004 15:35 [[Gebruiker:Johi|Johi]] heeft ge-upload: "[[:Afbeelding:Verzetsmuseum.jpg|Verzetsmuseum.jpg]]" <em>(Verzetsmuseum Zuid-Holland)</em></li> <li>10 apr 2004 15:20 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Laptop.jpg|Laptop.jpg]]" <em>(Mijn eigen slaafje)</em></li> <li>10 apr 2004 14:45 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Garuda.jpg|Garuda.jpg]]" <em>(aanwezig op diverse anderstalige wikipedia&#39;s)</em></li> <li>10 apr 2004 14:17 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Eenhoorn.jpg|Eenhoorn.jpg]]" <em>(van de franse pagina, rechtenvrij: Celle-ci provient du site http&#58;//www.desiderenzia.net/. Elle est libre de droit. )</em></li> <li>10 apr 2004 14:16 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Blad_van_monocotyl_Suikermais.jpg|Blad_van_monocotyl_Suikermais.jpg]]" <em>(zelfgemaakte foto; monocotyl blad, lijnnervig, bladschede als een koker om stengel heen)</em></li> <li>10 apr 2004 13:31 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Transrapid.jpg|Transrapid.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Transrapid auf der Emslandstrecke, eigenes Bild, GNU-FDL &#91;&#91;de:Bild:Transrapid.jpg]])</em></li> <li>10 apr 2004 13:18 [[Gebruiker:Emesbe|Emesbe]] heeft ge-upload: "[[:Afbeelding:Vlag_Aragon.JPG|Vlag_Aragon.JPG]]" <em>(Vlag_Aragon uit WIKI-esperanto)</em></li> <li>10 apr 2004 13:03 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Kroeze.jpg|Kroeze.jpg]]" <em>(Fritz8 - print)</em></li> <li>10 apr 2004 12:38 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Bladbeharing_geranium.jpg|Bladbeharing_geranium.jpg]]" <em>(zelfgekaakte foto; bladbeharing van geranium)</em></li> <li>10 apr 2004 12:30 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Sydney_Subway.jpg|Sydney_Subway.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;View of the Sydney monorail from the top. More pictures of Sydney at : http&#58;//www.chmouel.com/geeklog/gallery/show_gallery.php/new_zeland/ &#91;&#91;en:Image:Sydney Subway.jpg]])</em></li> <li>10 apr 2004 12:28 [[Gebruiker:Emesbe|Emesbe]] heeft ge-upload: "[[:Afbeelding:Kaart_Aragon.jpg|Kaart_Aragon.jpg]]" <em>(Kaart_Aragon_Spanje)</em></li> <li>10 apr 2004 11:45 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Scan3.jpg|Scan3.jpg]]" <em>(Fritz8 - print)</em></li> <li>10 apr 2004 11:20 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Bosch.jpg|Bosch.jpg]]" <em>(foto -Dimitri-)</em></li> <li>10 apr 2004 11:05 [[Gebruiker:NeoGeo-x|NeoGeo-x]] heeft ge-upload: "[[:Afbeelding:Wiki-hagelslag.jpg|Wiki-hagelslag.jpg]]" <em>(een eigen afbeelding)</em></li> <li>10 apr 2004 10:42 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Antonbruckner.jpg|Antonbruckner.jpg]]" <em>(Anton Bruckner denkmal, Wenen. Eigen foto &#91;&#91;Gebruiker:Hooft]], verbeterd contrast)</em></li> <li>10 apr 2004 10:39 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:352px-Antonbruckner.jpg|352px-Antonbruckner.jpg]]" <em>(Verbeterde versie van deze foto, Anton Bruckner denkmal, Wenen. Eigen foto van &#91;&#91;Gebruiker:Hooft]])</em></li> <li>10 apr 2004 10:34 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:AntonBruckner.jpeg|AntonBruckner.jpeg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Anton Bruckner (pre-1897 photo) &#91;&#91;en:Image:AntonBruckner.jpeg]])</em></li> <li>10 apr 2004 10:30 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Saint-exupery.jpg|Saint-exupery.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Antoine Saint-Exupery &#91;&#91;en:Image:Saint-exupery.jpg]])</em></li> <li>10 apr 2004 10:25 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Sb,51-thumb.jpg|Sb,51-thumb.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Antimony sample, small version of &lt;br&gt;&#91;&#91;image:Sb,51.jpg]] The &#91;&#91;User:RTC/element photos&#124;Element Photos]] (both the large and small versions, which are the same photo just scaled differently) are ALL photos I took this summer and anyone can do anything they want with them that is allowed with anything else here. -- &#91;&#91;User:RTC&#124;RTC]] 03:15, 7 Nov 2003 (UTC) &#91;&#91;en:Image:Sb,51-thumb.jpg]])</em></li> <li>10 apr 2004 10:15 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Pillpacketopen.jpg|Pillpacketopen.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Photograph of a half-used blister pack of Levlen®ED &#91;&#91;oral contraceptive pill]]. Photo taken by me. (Pills not mine). Released under &#91;&#91;GFDL]]. Photoshop was used to make the background white. &#91;&#91;User:Tristanb&#124;tb]] 02:51, 19 Jan 2004 (UTC) It&#39;s a bit out of focus, and i used a sharpen filter on it (before it was resized). I used the same camera as for &#91;&#91;vegemite]] and &#91;&#91;flavoured milk]]. &#91;&#91;en:Image:pillpacketopen.jpg]])</em></li> <li>10 apr 2004 10:11 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Autoritratto_di_Antoon_van_Dyck.jpg|Autoritratto_di_Antoon_van_Dyck.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-it. De beschrijving daar was:&lt;p&gt;Antoon van Dyke in un autoritratto &#91;&#91;it:Immagine:Autoritratto di Antoon van Dyck.jpg]])</em></li> <li>10 apr 2004 10:05 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Anthony_Quinn.jpg|Anthony_Quinn.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Picture of Anthony Quinn, actor, taken from U.S. Equal Employment Opportunity Commission (public domain): http&#58;//www.eeoc.gov/abouteeoc/35th/1965-71/educating.html &#91;&#91;en:Image:Anthony Quinn.jpg]])</em></li> <li>10 apr 2004 09:59 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Anklam.jpg|Anklam.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Anklam coat of arms &#91;&#91;en:Image:anklam.jpg]])</em></li> <li>10 apr 2004 09:58 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Karte_anklam_in_deutschland.png|Karte_anklam_in_deutschland.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Karte Anklam in Deutschland &#91;&#91;de:Bild:Karte anklam in deutschland.png]])</em></li> <li>10 apr 2004 09:54 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:AndorralaVella.jpg|AndorralaVella.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was:&lt;p&gt;Andorre-la-Vieille, blason &#91;&#91;fr:Image:AndorralaVella.jpg]])</em></li> <li>10 apr 2004 09:53 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Scan2.jpg|Scan2.jpg]]" <em>(Fritz8 - print)</em></li> <li>10 apr 2004 09:50 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Andre_Agassi.jpg|Andre_Agassi.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Andre Agassi, tennis player The photo has been taken from the location http&#58;//home.comcast.net/~bartell/usopen/agassi97a.jpg . The tennis photos on the site have been taken by Randy Bartell and reproduced here with his permission. &#91;&#91;en:Image:Andre Agassi.jpg]])</em></li> <li>10 apr 2004 09:50 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Scan2.jpg|Scan2.jpg]]" <em>(Fritz8 - print)</em></li> <li>10 apr 2004 09:45 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Andromeda_constellation_map.png|Andromeda_constellation_map.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;This is a celestial map of the constellation Andromeda. Copyright &amp;copy; 2003 &#91;mailto:bronger@physik.rwth-aachen.de Torsten Bronger]. It was created by &#91;&#91;User:Bronger&#124;Torsten Bronger]] using the program PP3 on 22/02/1003. At &#91;http&#58;//pp3.sourceforge.net PP3&#39;s homepage], you also get the input scripts necessary for re-compiling the map. The yellow dashed lines are constellation boundaries, the red dashed line isx the ecliptic, and the shades of blue show Milky Way areas of different brightness. The map contains all Messier objects, except for colliding ones. The underlying database contains all stars brighter than 6.5. All coordinates refer to equinox 2000.0. The map is calculated with the azimuthal equidistant projection (the azimuth being in the center of the image). The north pole is to the top. The (horizontal) lines of equal declination are drawn for 0&amp;deg;, &amp;plusmn;10&amp;deg;, &amp;plusmn;20&amp;deg; etc. The lines of equal rectascension are drawn for all 24&amp;nbsp;hours. The scale of the map is (approx.) 11.8 pixel per degree at the centre of the bitmap. Towards the rim there is a very slight magnification (and distortion). &#91;&#91;en:Image:Andromeda constellation map.png]])</em></li> <li>10 apr 2004 09:42 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Electronisch_orgel.jpg|Electronisch_orgel.jpg]]" <em>(Mijn eigen orgeltje)</em></li> <li>10 apr 2004 09:36 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Hommeles.jpg|Hommeles.jpg]]" <em>(foto -Dimitri-)</em></li> <li>10 apr 2004 09:16 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Prohibition.jpg|Prohibition.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;DN-0072930, Chicago Daily News negatives collection, Chicago Historical Society. &#91;&#91;en:Image:Prohibition.jpg]])</em></li> <li>10 apr 2004 09:04 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Philippe_IV_espagne.jpg|Philippe_IV_espagne.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was:&lt;p&gt;Philippe IV d&#39;Espagne *licence : domaine public *source : http&#58;//www.artrenewal.org/asp/database/art.asp?aid=132&amp;page=7 *infos : 1644 Oil on canvas 53.15 x 38.58 inches / 135 x 98 cm Frick Collection, New York, USA &#91;&#91;fr:Image:philippe IV espagne.jpg]])</em></li> <li>10 apr 2004 08:57 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Aepyornism.jpg|Aepyornism.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;&#91;&#91;Aepyornis]] skeleton. From &#91;http&#58;//digimorph.org/specimens/Aepyornis_maximus/Aepyornis.phtml digimorph.org]. Original source: &#39;&#39;Quaternary of Madagascar&#39;&#39; by Monnier, &#91;&#91;1913]]. &#123;&#123;msg:PD-US}} &#91;&#91;en:Image:Aepyornism.jpg]])</em></li> <li>10 apr 2004 08:53 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:CharlesTheBold.jpg|CharlesTheBold.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Charles the Bold, from Cyclopaedia of Universial History, 1885 &#123;&#123;msg:PD}} &#91;&#91;en:Image:CharlesTheBold.jpg]])</em></li> <li>10 apr 2004 08:42 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Lancelot3344.jpg|Lancelot3344.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Lancelot from &#39;&#39;The Book of Knowledge&#39;&#39;, p. 869, Vol. III, The Grolier Society, New York, 1911 &#91;&#91;en:Image:lancelot3344.jpg]])</em></li> <li>10 apr 2004 08:34 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:LocatieMeinweg.png|LocatieMeinweg.png]]" <em>(Locatie Meinweg op grond van kaartje Mtcv Roerdalen, &#123;&#123;msg:GFDL}})</em></li> <li>10 apr 2004 08:20 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Simbolo-croce-rossa.jpg|Simbolo-croce-rossa.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-it. De beschrijving daar was:&lt;p&gt;Croce Rossa Simbolo &#91;&#91;it:Immagine:simbolo-croce-rossa.jpg]])</em></li> <li>10 apr 2004 08:13 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Edvard_Munch.jpg|Edvard_Munch.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-no. De beschrijving daar was:&lt;p&gt;Bilde av &#91;&#91;Edvard Munch]] fra en: &quot;12:22, 2 May 2003 Egil&quot; &#91;&#91;no:Bilde:Edvard Munch.jpg]])</em></li> <li>10 apr 2004 08:11 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Jonkman.jpg|Jonkman.jpg]]" <em>(foto -Dimitri-)</em></li> <li>10 apr 2004 07:09 [[Gebruiker:Nijman|Nijman]] heeft ge-upload: "[[:Afbeelding:Hejnal.mp3|Hejnal.mp3]]" <em>(Hejanal, download vanaf http&#58;//www.krakow.pl/kamera/duzy.html, het trompetgeluid dat elk uur vanaf Mariakerk in Krakau gespeeld wordt)</em></li> <li>10 apr 2004 05:33 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Scheepvaart.JPG|Scheepvaart.JPG]]" <em>(Eigen foto)</em></li> <li>10 apr 2004 00:51 [[Gebruiker:DomienH|DomienH]] heeft ge-upload: "[[:Afbeelding:Hof64003b.jpg|Hof64003b.jpg]]" <em>(Willem Hofhuizen, Raadsel vrouw 1964, auteursrechten Domien Hofhuizen.)</em></li> <li>10 apr 2004 00:20 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:SpaanseGitaar.jpg|SpaanseGitaar.jpg]]" <em>(Gitaar van wiki-fr (lijkt GFDL))</em></li> <li>9 apr 2004 22:40 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:GeldersePoort6.JPG|GeldersePoort6.JPG]]" <em>(Eigen foto)</em></li> <li>9 apr 2004 22:36 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:SchleiferTeken.jpg|SchleiferTeken.jpg]]" <em>(Schleiferteken (eigen brouwsel) GFDL nu zonder onnodig wit)</em></li> <li>9 apr 2004 22:34 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:SchleiferTeken.jpg|SchleiferTeken.jpg]]" <em>(Schleiferteken (eingen brouwsel) GFDL)</em></li> <li>9 apr 2004 22:29 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:GeldersePoort4.JPG|GeldersePoort4.JPG]]" <em>(Eigen foto)</em></li> <li>9 apr 2004 22:28 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:GeldersePoort3.JPG|GeldersePoort3.JPG]]" <em>(Eigen foto)</em></li> <li>9 apr 2004 22:27 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:GeldersePoort2.JPG|GeldersePoort2.JPG]]" <em>(Eigen foto)</em></li> <li>9 apr 2004 22:25 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:GeldersePoort1.JPG|GeldersePoort1.JPG]]" <em>(Eigen foto)</em></li> <li>9 apr 2004 22:14 [[Gebruiker:Johi|Johi]] heeft ge-upload: "[[:Afbeelding:Gheraert_Leeu.jpg|Gheraert_Leeu.jpg]]" <em>(Beeld van drukker Gheraert leeu, eigen fot, gebruik vrij)</em></li> <li>9 apr 2004 22:11 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:KleinKlauwOtter.JPG|KleinKlauwOtter.JPG]]" <em>(Eigen foto)</em></li> <li>9 apr 2004 22:10 [[Gebruiker:Johi|Johi]] heeft ge-upload: "[[:Afbeelding:Gheraert_Leeu.jpg|Gheraert_Leeu.jpg]]" <em>(Beeld van Geraert Leeu, boekdrukker in Gouda, eigen foto, gebruik vrij)</em></li> <li>9 apr 2004 22:07 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:PDHerten.JPG|PDHerten.JPG]]" <em>(Eigen foto)</em></li> <li>9 apr 2004 22:05 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:WildeZwaan.JPG|WildeZwaan.JPG]]" <em>(Eigen foto)</em></li> <li>9 apr 2004 22:02 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:SegnoTeken.jpg|SegnoTeken.jpg]]" <em>(Segno-teken (eigen maaksel) GFDL)</em></li> <li>9 apr 2004 22:00 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Zwijnen.JPG|Zwijnen.JPG]]" <em>(Eigen foto)</em></li> <li>9 apr 2004 21:57 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:CodaTeken.jpg|CodaTeken.jpg]]" <em>(Coda-teken (eigen maaksel) GFDL (nu als jpg))</em></li> <li>9 apr 2004 21:55 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:CodaTeken.png|CodaTeken.png]]" <em>(Coda-teken (eigen maaksel) GFDL)</em></li> <li>9 apr 2004 21:54 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Raapzaad-overz-kl.JPG|Raapzaad-overz-kl.JPG]]" <em>(eigen foto, eind maart in zuiderpark den haag, hierbij onder gnu/fdl gebracht)</em></li> <li>9 apr 2004 21:53 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Raapzaad-overz-hr.jpg|Raapzaad-overz-hr.jpg]]" <em>(eigen foto, eind maart in zuiderpark den haag, hierbij onder gnu/fdl gebracht)</em></li> <li>9 apr 2004 21:52 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Raapzaad-CloseUp-kl.JPG|Raapzaad-CloseUp-kl.JPG]]" <em>(eigen foto, eind maart in zoetermeer, hierbij onder gnu/fdl gebracht)</em></li> <li>9 apr 2004 21:52 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Raapzaad-CloseUp-hr.jpg|Raapzaad-CloseUp-hr.jpg]]" <em>(eigen foto, eind maart in zoetermeer, hierbij onder gnu/fdl gebracht)</em></li> <li>9 apr 2004 21:50 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Raapzaad-bloem-kl.JPG|Raapzaad-bloem-kl.JPG]]" <em>(eigen foto, eind maart in zoetermeer, hierbij onder gnu/fdl gebracht)</em></li> <li>9 apr 2004 21:50 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Raapzaad-bloem-hr.jpg|Raapzaad-bloem-hr.jpg]]" <em>(eigen foto, eind maart in zoetermeer, hierbij onder gnu/fdl gebracht)</em></li> <li>9 apr 2004 21:49 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Raapzaad-blad-kl.JPG|Raapzaad-blad-kl.JPG]]" <em>(eigen foto, eind maart in zoetermeer, hierbij onder gnu/fdl gebracht)</em></li> <li>9 apr 2004 21:47 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Raapzaad-blad-hr.jpg|Raapzaad-blad-hr.jpg]]" <em>(eigen foto, eind maart in zoetermeer, onder gnu/fdl)</em></li> <li>9 apr 2004 21:45 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Rivierduin.JPG|Rivierduin.JPG]]" <em>(Eigen foto)</em></li> <li>9 apr 2004 21:12 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:LogoOVB.jpg|LogoOVB.jpg]]" <em>(Met toestemming OVB)</em></li> <li>9 apr 2004 21:09 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:GallowayMetKalf.JPG|GallowayMetKalf.JPG]]" <em>(eigen foto)</em></li> <li>9 apr 2004 20:48 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Beardsley.png|Beardsley.png]]" <em>(tekening van beardsley: peacock skirt, van engelse pagina)</em></li> <li>9 apr 2004 20:15 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Cadran-solaire-st-remy-de-provence.jpg|Cadran-solaire-st-remy-de-provence.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was:&lt;p&gt;&#91;&#91;Cadran solaire]] à &#91;&#91;Saint-Rémy-de-Provence]] Auteur: &#91;&#91;Utilisateur:Greudin&#124;Greudin]], &#91;&#91;2002]] Licence: &#91;&#91;Domaine public]] &#123;&#123;msg:DomainePublic}} &#91;&#91;fr:Image:cadran-solaire-st-remy-de-provence.jpg]])</em></li> <li>9 apr 2004 17:13 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:AntiochosIITheos.jpg|AntiochosIITheos.jpg]]" <em>(Portret van Antiochis II Theos, koning der Seleukiden, op een tetradrachme uit Antiochië, 261-246 v. Chr.)</em></li> <li>9 apr 2004 16:26 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Lilith.jpg|Lilith.jpg]]" <em>(lilith door john collier van engelse pagina)</em></li> <li>9 apr 2004 15:40 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Adameva.jpg|Adameva.jpg]]" <em>(schikderij van albrecht durer uit 1507)</em></li> <li>9 apr 2004 14:22 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:Audi_a8.png|Audi_a8.png]]" <em>(PNG gehercomprimeerd: van 19K naar 4.8K (zonder enige kwaliteitsverlies))</em></li> <li>9 apr 2004 14:09 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Audi_a8.png|Audi_a8.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Audi A8. PD aus einer Atari-Sammlung Ende der 80er. als +.gif-Datei wäre sie nur 6 kB groß gewesen &#91;&#91;de:Bild:Audi a8.png]])</em></li> <li>9 apr 2004 13:55 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Shapur_I.jpg|Shapur_I.jpg]]" <em>(Shapur I, van Duitse Wikipedia Schapur I.)</em></li> <li>9 apr 2004 13:43 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Mh_rhb_bernina.jpeg|Mh_rhb_bernina.jpeg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Ein Zug der &#91;&#91;Rhätische Bahn&#124;Rhätischen Bahn]] nahe dem &#91;&#91;Berninapass]]. ---- &#39;&#39;Dieses Foto wurde von &#91;&#91;Benutzer:LosHawlos&#124;Martin Hawlisch]] fotografiert und unter der &#91;&#91;GFDL]] veröffentlicht.&#39;&#39; ---- &#91;&#91;de:Bild:Mh rhb bernina.jpeg]])</em></li> <li>9 apr 2004 13:41 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Egypt_Asouan.jpg|Egypt_Asouan.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was:&lt;p&gt;Description de l&#39;image : Egypte Asouan&lt;br&gt; Source : &#91;&#91;Aoineko]]&lt;br&gt; Statut : &#91;&#91;GFDL]]&lt;br&gt; &#91;&#91;fr:Image:Egypt Asouan.jpg]])</em></li> <li>9 apr 2004 13:39 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Cleo.needle.200pix.jpg|Cleo.needle.200pix.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Cleopatra&#39;s Needle, an Egyptian obelisk on the banks of the River Thames in London, England.&lt;br&gt; Taken by Adrian Pingstone and released to the public domain. &#123;&#123;msg:PD}} &#91;&#91;en:Image:cleo.needle.200pix.jpg]])</em></li> <li>9 apr 2004 13:36 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Mh_rhb_disentis.jpeg|Mh_rhb_disentis.jpeg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Ein &#91;&#91;Glacier Express]] der &#91;&#91;Rhätische Bahn&#124;Rhätischen Bahn]] in &#91;&#91;Disentis]]. ---- &#39;&#39;Dieses Foto wurde von &#91;&#91;Benutzer:LosHawlos&#124;Martin Hawlisch]] fotografiert und unter der &#91;&#91;GFDL]] veröffentlicht.&#39;&#39; ---- &#91;&#91;de:Bild:Mh rhb disentis.jpeg]])</em></li> <li>9 apr 2004 13:31 [[Gebruiker:BolksBot|BolksBot]] heeft ge-upload: "[[:Afbeelding:Mh_RhB_arosabahn_in_chur.jpeg|Mh_RhB_arosabahn_in_chur.jpeg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Ein Zur der &#91;&#91;Rhätische Bahn&#124;Rhätischen Bahn]] nach &#91;&#91;Arosa]] bei der engen Ortsdurchfahrt in &#91;&#91;Chur]]. ---- &#39;&#39;Dieses Foto wurde von &#91;&#91;Benutzer:LosHawlos&#124;Martin Hawlisch]] fotografiert und unter der &#91;&#91;GFDL]] veröffentlicht.&#39;&#39; ---- &#91;&#91;de:Bild:Mh RhB arosabahn in chur.jpeg]])</em></li> <li>9 apr 2004 13:21 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Tuileries.jpg|Tuileries.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Tuileries &#91;&#91;en:Image:Tuileries.jpg]])</em></li> <li>9 apr 2004 13:18 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Champs_elysees.700px.jpg|Champs_elysees.700px.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Looking east along the Champs Elysees towards Place de la Concorde from the Arc de Triomphe. Photograph taken by Michael Reeve, 29 January 2004. &#91;&#91;en:Image:Champs elysees.700px.jpg]])</em></li> <li>9 apr 2004 13:09 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Sa97_miguel_rhythm.jpg|Sa97_miguel_rhythm.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;mariachi &#91;&#91;en:Image:Sa97 miguel rhythm.jpg]])</em></li> <li>9 apr 2004 12:33 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:Trademark-symbool.png|Trademark-symbool.png]]" <em>(Trademark symbool - copyrightinfo van het font schrijf ik er zo direct bij)</em></li> <li>9 apr 2004 12:15 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Hendriks.jpg|Hendriks.jpg]]" <em>(foto -Dimitri-)</em></li> <li>9 apr 2004 11:26 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Fongers.jpg|Fongers.jpg]]" <em>(foto -Dimitri-)</em></li> <li>9 apr 2004 10:54 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:80486.jpg|80486.jpg]]" <em>(Intel 80486SX/16)</em></li> <li>9 apr 2004 10:49 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Demie.jpg|Demie.jpg]]" <em>(foto -Dimitri-)</em></li> <li>9 apr 2004 08:08 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Compost.jpg|Compost.jpg]]" <em>(Compost - foto van de Engelstalige wiki)</em></li> <li>9 apr 2004 06:44 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Cambodiaarms4.png|Cambodiaarms4.png]]" <em>(En: wikipedia)</em></li> <li>9 apr 2004 04:34 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Azeriarms2.PNG|Azeriarms2.PNG]]"</li> <li>9 apr 2004 00:51 [[Gebruiker:BenTels|BenTels]] heeft ge-upload: "[[:Afbeelding:WapenEindhoven.png|WapenEindhoven.png]]" <em>(Het gemeentewapen van Eindhoven; vele eeuwen ouder dan eender welke auteursrechtenwetgeving.)</em></li> <li>8 apr 2004 22:40 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Akhenaton.jpg|Akhenaton.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;pharoah akhenaton uncopyrighted image from www.tmgnow.com/repository/ cosmology/akhnaton.html &#91;&#91;en:Image:akhenaton.jpg]])</em></li> <li>8 apr 2004 22:31 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Oilfield.jpg|Oilfield.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Oilfields, California, 1938 Photographer: Dorothea Lange Public domain image from &#91;http&#58;//memory.loc.gov/cgi-bin/query/D?fsaall:1:./temp/~ammem_Un8W:: Library of Congress] &#91;&#91;en:Image:oilfield.jpg]])</em></li> <li>8 apr 2004 22:30 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Oil_well3419.jpg|Oil_well3419.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Oil Well near Sarnia, Ontario &#91;&#91;en:Image:Oil well3419.jpg]])</em></li> <li>8 apr 2004 22:14 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Ac.redribbon.jpg|Ac.redribbon.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Red Ribbon Better quality image can be found at &#91;&#91;ES:Imagen:Lazo_rojo.jpg]] &#91;&#91;en:Image:ac.redribbon.jpg]])</em></li> <li>8 apr 2004 22:09 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Television_remote_control.jpg|Television_remote_control.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;&#39;&#39;&#39;General info&#39;&#39;&#39;: &#91;&#91;Television]] &#91;&#91;remote control]]&lt;br&gt; &#39;&#39;&#39;Size&#39;&#39;&#39;: 6769 bytes&lt;br&gt; &#39;&#39;&#39;Dimension&#39;&#39;&#39;: 200x159 pixels&lt;br&gt; &#39;&#39;&#39;Source&#39;&#39;&#39;: Image taken by &#91;&#91;User:Dori&#124;Dori]]&lt;br&gt; &#39;&#39;&#39;License&#39;&#39;&#39;: &#91;&#91;GFDL]]&lt;br&gt; &#91;&#91;en:Image:Television remote control.jpg]])</em></li> <li>8 apr 2004 22:06 [[Gebruiker:Fransvannes|Fransvannes]] heeft ge-upload: "[[:Afbeelding:Paris.notre.dame.250pix.jpg|Paris.notre.dame.250pix.jpg]]" <em>(Bron: Wikipedia EN, foto: Adrian Pingstone, juli 2001)</em></li> <li>8 apr 2004 22:05 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Aerogel.jpg|Aerogel.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Aerogel (Public domain image from NASA: http&#58;//stardust.jpl.nasa.gov/photo/aerogel.html) &#91;&#91;en:Image:aerogel.jpg]])</em></li> <li>8 apr 2004 21:27 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Agamemnon.jpg|Agamemnon.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;copied from http&#58;//ouray.cudenver.edu/~cwwhitti/root/four.html &#123;&#123;msg:fairuse}} &#91;&#91;en:Image:Agamemnon.jpg]])</em></li> <li>8 apr 2004 21:23 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Aerosmith.jpg|Aerosmith.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Aerosmith performs on the National Mall, public domain image from navy.mil. Original: &#91;http&#58;//www.news.navy.mil/view_single.asp?id=9357]. &#91;&#91;en:Image:Aerosmith.jpg]])</em></li> <li>8 apr 2004 21:14 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Accordion.png|Accordion.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;&#91;&#91;Accordion]], from &#91;&#91;Nordisk familjebok]]. Image in &#91;&#91;public domain]]. &#91;&#91;en:Image:Accordion.png]])</em></li> <li>8 apr 2004 21:07 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:BobHopegettingOsca.jpg|BobHopegettingOsca.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;public domain US gov photo from NARA. Bob Hope receiving an Oscar. &#91;&#91;en:Image:BobHopegettingOsca.jpg]])</em></li> <li>8 apr 2004 21:07 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Oscars.jpg|Oscars.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Oscars collage, (c) AMPAS, marked as such on pic. Fair use. You &#39;&#39;SURE&#39;&#39; about the fair use in this image? &#91;&#91;en:Image:oscars.jpg]])</em></li> <li>8 apr 2004 20:55 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Polwanderung.jpg|Polwanderung.jpg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-de. De beschrijving daar was:&lt;p&gt;Wanderung des magn. Nordpols Bild Polarmeer (aus &#91;&#91;Nordpolarmeer]]) mit einigen Daten aus http&#58;//www.physik.uni-muenchen.de/didaktik/U_materialien/leifiphysik/web_ph10/umwelt-technik/08erdfeld/erdfeld.htm &#91;&#91;Benutzer:Hubi&#124;Hubi]] 21:38, 15. Nov 2003 (CET) &#91;&#91;de:Bild:Polwanderung.jpg]])</em></li> <li>8 apr 2004 20:53 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:RM10C03B.png|RM10C03B.png]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-fr. De beschrijving daar was:&lt;p&gt;géomagnétisme &#91;&#91;fr:Image:RM10C03B.png]])</em></li> <li>8 apr 2004 20:26 [[Gebruiker:RobotE|RobotE]] heeft ge-upload: "[[:Afbeelding:Avocado.jpeg|Avocado.jpeg]]" <em>(Afbeelding gekopieerd vanaf Wikipedia-en. De beschrijving daar was:&lt;p&gt;Avocado Modified from image at http&#58;//www.nass.usda.gov/fl/apfp.htm &#91;&#91;en:Image:Avocado.jpeg]])</em></li> <li>8 apr 2004 20:08 [[Gebruiker:Wouterhagens|Wouterhagens]] heeft ge-upload: "[[:Afbeelding:TDisocyanaat.gif|TDisocyanaat.gif]]" <em>(formule TDI (Wouter Hagens))</em></li> <li>8 apr 2004 20:05 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Aardbei_Karina.jpg|Aardbei_Karina.jpg]]" <em>(zelfgemaakte foto; vruchten van &#39;Karina&#39;)</em></li> <li>8 apr 2004 19:57 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Aardbei_uitlopers_Korona.jpg|Aardbei_uitlopers_Korona.jpg]]" <em>(zelfgemaakte foto; uitlopers van aardbei)</em></li> <li>8 apr 2004 19:52 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Aardbei-bloemcloseup.jpg|Aardbei-bloemcloseup.jpg]]" <em>(zelfgemaakte foto; close-up van aardbeibloem)</em></li> <li>8 apr 2004 19:51 [[Gebruiker:Robk|Robk]] heeft ge-upload: "[[:Afbeelding:Wapen_Lesotho.png|Wapen_Lesotho.png]]" <em>((en-wiki))</em></li> <li>8 apr 2004 19:44 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Aardbei_plant.jpg|Aardbei_plant.jpg]]" <em>(zelfgemaakte foto; aardbeiplant in bloei)</em></li> <li>8 apr 2004 19:14 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:PontEemdijk.JPG|PontEemdijk.JPG]]" <em>(Eigen foto)</em></li> <li>8 apr 2004 17:50 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Duerre.jpg|Duerre.jpg]]" <em>(de: wikipedia)</em></li> <li>8 apr 2004 16:46 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:LocatieOnstwedde.png|LocatieOnstwedde.png]]" <em>(Locatie Onstwedde in de gemeente Stadskanaal op basis van van kaart van mtcv &#123;&#123;msg:FDL}})</em></li> <li>8 apr 2004 16:03 [[Gebruiker:Falcongj|Falcongj]] heeft ge-upload: "[[:Afbeelding:KPN_Hoofdkantoor.JPG|KPN_Hoofdkantoor.JPG]]" <em>(KPN Hoofdkantoor Den Haag. Foto gemaakt door Falcongj en vrijgegeven voor GNU/FDL)</em></li> <li>8 apr 2004 15:02 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:SDR_SDRAM.jpg|SDR_SDRAM.jpg]]" <em>(&quot;There are no usage restrictions for this photo.&quot; - http&#58;//www.sxc.hu/browse.phtml?f=view&amp;id=109574)</em></li> <li>8 apr 2004 14:38 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:PCI_sloten_op_een_moederbord.jpg|PCI_sloten_op_een_moederbord.jpg]]" <em>(PCI sloten op een moederbord - http&#58;//www.sxc.hu/browse.phtml?f=view&amp;id=103914)</em></li> <li>8 apr 2004 13:23 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:LocatieTerWupping.png|LocatieTerWupping.png]]" <em>(Locatie ter Wupping, bewerkt kaartje van mtcv &#123;&#123;msg:GFDL}})</em></li> <li>8 apr 2004 12:35 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:Harde-schijf-open-2.5inch.jpg|Harde-schijf-open-2.5inch.jpg]]" <em>(Een 2.5inch geopende harde schijf van: http&#58;//www.sxc.hu/browse.phtml?f=view&amp;id=97614 - &quot;There are no usage restrictions for this photo.&quot; - &quot;© 2000-2004 Dream Interactive. All rights reserved. &quot;)</em></li> <li>8 apr 2004 12:27 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Foot-bones.jpg|Foot-bones.jpg]]" <em>(voetbeenderen van wiki-en vrijgegeven onder GFDL)</em></li> <li>8 apr 2004 10:33 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Amsterdam.jpg|Amsterdam.jpg]]" <em>(Eerdere versie hersteld)</em></li> <li>8 apr 2004 09:39 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Borm.jpg|Borm.jpg]]" <em>(foto -Dimitri-)</em></li> <li>8 apr 2004 09:01 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Boersma.jpg|Boersma.jpg]]" <em>(foto -Dimitri-)</em></li> <li>8 apr 2004 08:21 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Blees.jpg|Blees.jpg]]" <em>(foto -Dimitri-)</em></li> <li>8 apr 2004 06:31 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Blad_dwarsdoorsnede.jpg|Blad_dwarsdoorsnede.jpg]]" <em>(eigen tekening; dwarsdoorsnede standaardblad)</em></li> <li>8 apr 2004 06:24 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Bladdoorsnede.jpg|Bladdoorsnede.jpg]]" <em>(eigen tekening; dwars doorsnede standaardblad)</em></li> <li>8 apr 2004 06:14 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Bladdoorsnede.jpg|Bladdoorsnede.jpg]]" <em>(eigen tekening; dwarsdoorsnede van een standaard blad)</em></li> <li>8 apr 2004 00:29 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:JerseyNASAeo.jpg|JerseyNASAeo.jpg]]" <em>(Afbeelding gekopieerd vanaf de en Wikipedia. De beschrijving daar was:&lt;p&gt;This image was acquired on September 23, 2000, by the Advanced Spaceborne Thermal Emission and Reflection Radiometer (ASTER) on NASAÂ’s Terra satellite. ASTER is one of five Earth-observing instruments launched December 18, 1999, on NASAÂ’s Terra satellite. The instrument was built by JapanÂ’s Ministry of Economy, Trade and Industry.&lt;br&gt; Image courtesy NASA/GSFC/METI/ERSDAC/JAROS, and U.S./Japan ASTER Science Team SOURCE: &lt;br&gt; http&#58;//earthobservatory.nasa.gov/Newsroom/NewImages/images.php3?img_id=10809 &lt;br&gt; &lt;i&gt;”The purpose of NASA&#39;s Earth Observatory is to provide a freely-accessible publication on the Internet where the public can obtain new satellite imagery and scientific information about our home planet. The focus is on Earth&#39;s climate and environmental change. In particular, we hope our site is useful to public media and educators. Any and all materials published on the Earth Observatory are freely available for re-publication or re-use, except where copyright is indicated. We ask that NASA&#39;s Earth Observatory be given credit for its original materials.”&lt;/i&gt; Picture prepared for Wikipedia by Adrian Pingstone in November 2003. &#91;&#91;en:Image:Jersey.arp.750pix.jpg]])</em></li> <li>8 apr 2004 00:28 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Jersey_vlag.png|Jersey_vlag.png]]" <em>(Afbeelding gekopieerd vanaf de en Wikipedia. De beschrijving daar was:&lt;p&gt;Medium flag of &#91;&#91;Jersey]] Image originally derived from the &#91;&#91;public domain]] flags of the &#91;&#91;CIA World Factbook]]. Most of the flags have had their colours improved and many have been resized to the proper ratios. For a complete list of Wikipedia flags, see &#91;&#91;List of flags]]. &#91;&#91;en:Image:Jersey flag medium.png]])</em></li> <li>7 apr 2004 23:40 [[Gebruiker:Head|Head]] heeft ge-upload: "[[:Afbeelding:Kaart_Düsseldorf.png|Kaart_Düsseldorf.png]]" <em>(This image was copied from the de Wikipedia. The original description was: Karte Düsseldorf in Deutschland Quelle: OpenGeoDB &#91;http&#58;//www.opengeodb.de] GFDL &#91;&#91;de:Bild:Karte duesseldorf in deutschland.png]])</em></li> <li>7 apr 2004 23:40 [[Gebruiker:Head|Head]] heeft ge-upload: "[[:Afbeelding:Wapen_Düsseldorf.jpg|Wapen_Düsseldorf.jpg]]" <em>(This image was copied from the de Wikipedia. The original description was: Wappen von Düsseldorf &#91;&#91;de:Bild:Dusseldo.jpg]])</em></li> <li>7 apr 2004 23:37 [[Gebruiker:Head|Head]] heeft ge-upload: "[[:Afbeelding:Wapen_Düsseldorf.jpg|Wapen_Düsseldorf.jpg]]" <em>(This image was copied from the de Wikipedia. The original description was:&lt;br&gt;Wappen von Düsseldorf &#91;&#91;de:Bild:Dusseldo.jpg]])</em></li> <li>7 apr 2004 21:51 [[Gebruiker:Cogito|Cogito]] heeft ge-upload: "[[:Afbeelding:Cogito.jpg|Cogito.jpg]]" <em>(cogitologo)</em></li> <li>7 apr 2004 21:43 [[Gebruiker:Cogito|Cogito]] heeft ge-upload: "[[:Afbeelding:Cogito.png|Cogito.png]]" <em>(cogitologo)</em></li> <li>7 apr 2004 19:41 [[Gebruiker:Wouterhagens|Wouterhagens]] heeft ge-upload: "[[:Afbeelding:Golfveld.jpg|Golfveld.jpg]]" <em>(golfveld (foto Wouter Hagens))</em></li> <li>7 apr 2004 18:19 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:LewisCarroll.jpg|LewisCarroll.jpg]]" <em>(Afbeelding gekopieerd vanaf de en Wikipedia. De beschrijving daar was:&lt;p&gt;&#39;&#39;Credit: Library of Congress&#39;&#39; &#91;&#91;en:Image:LewisCarroll.jpg]])</em></li> <li>7 apr 2004 15:55 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:LewisCarroll.jpg|LewisCarroll.jpg]]" <em>(Lewis Carroll. Bron: Library of Congress.&lt;p&gt;&#123;&#123;msg:PD}})</em></li> <li>7 apr 2004 15:27 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:SchiedamMolens1981.jpg|SchiedamMolens1981.jpg]]" <em>(Twee van de vijf Schiedamse molens - eigen foto)</em></li> <li>7 apr 2004 14:35 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Nicolaas_1.JPG|Nicolaas_1.JPG]]" <em>(Eigen foto)</em></li> <li>7 apr 2004 14:33 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Church_on_spilled_blood.JPG|Church_on_spilled_blood.JPG]]" <em>(Eigen foto)</em></li> <li>7 apr 2004 14:19 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:KoepelHermitage.JPG|KoepelHermitage.JPG]]" <em>(Eigen foto)</em></li> <li>7 apr 2004 13:45 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Isaac_kathedraal.JPG|Isaac_kathedraal.JPG]]" <em>(Eigen foto)</em></li> <li>7 apr 2004 13:30 [[Gebruiker:Evanherk|Evanherk]] heeft ge-upload: "[[:Afbeelding:Paperclipklein.jpg|Paperclipklein.jpg]]" <em>(Eigen foto e van herk 2004)</em></li> <li>7 apr 2004 13:17 [[Gebruiker:Dick Bos|Dick Bos]] heeft ge-upload: "[[:Afbeelding:VinkStamp.jpg|VinkStamp.jpg]]" <em>(Vink (&#39;&#39;Fringilla coelebs&#39;&#39;))</em></li> <li>7 apr 2004 13:06 [[Gebruiker:Evanherk|Evanherk]] heeft ge-upload: "[[:Afbeelding:Punaiseklein.jpg|Punaiseklein.jpg]]" <em>(Eigen foto e van herk 2004)</em></li> <li>7 apr 2004 12:32 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Harrynelsonpillsbury.jpg|Harrynelsonpillsbury.jpg]]" <em>(foto van voor 1924)</em></li> <li>7 apr 2004 12:24 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:LogoHenegouwen.jpg|LogoHenegouwen.jpg]]" <em>(Met toestemming provincie Henegouwen)</em></li> <li>7 apr 2004 12:23 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Wilhelmsteinitz.jpg|Wilhelmsteinitz.jpg]]" <em>(foto van voor 1924)</em></li> <li>7 apr 2004 12:22 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:WapenHenegouwen.jpg|WapenHenegouwen.jpg]]" <em>(Met toestemming provincie Henegouwen)</em></li> <li>7 apr 2004 12:10 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Simonwinawer.jpg|Simonwinawer.jpg]]" <em>(foto&#39;s van voor 1924 zijn vrij)</em></li> <li>7 apr 2004 11:16 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:IJsland.jpg|IJsland.jpg]]" <em>(Fritz8 - print)</em></li> <li>7 apr 2004 09:24 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Bosboom.jpg|Bosboom.jpg]]" <em>(foto -Dimitri-)</em></li> <li>7 apr 2004 07:49 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Cochrane.jpg|Cochrane.jpg]]" <em>(Fritz8 - print)</em></li> <li>6 apr 2004 20:33 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Pantheon.jpg|Pantheon.jpg]]" <em>(van it: wikipedia)</em></li> <li>6 apr 2004 20:12 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:180px-Priapus.jpg|180px-Priapus.jpg]]" <em>(Priapus (van de Engelse Wiki))</em></li> <li>6 apr 2004 20:12 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Priapus.jpg|Priapus.jpg]]" <em>(Priapus (van de Engelse Wiki))</em></li> <li>6 apr 2004 19:51 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Rietland.JPG|Rietland.JPG]]" <em>(Eigen foto)</em></li> <li>6 apr 2004 19:26 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:HansEichel.jpg|HansEichel.jpg]]" <em>(vervangen door een grotere foto)</em></li> <li>6 apr 2004 19:24 [[Gebruiker:Gamekeeper|Gamekeeper]] heeft ge-upload: "[[:Afbeelding:Paintball.jpg|Paintball.jpg]]" <em>(newpaintball.com)</em></li> <li>6 apr 2004 18:55 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(test vanwege problemen met bot afbeeldings-upload. De Ierse popzanger en activist Bono (Paul David Hewson). Tijdens een gesprek met Horst K&amp;#246;hler, Praag, 2000. Origineel van &#91;http&#58;//www.imf.org/external/photo/showall.asp?d=9%2F25%2F2000&amp;g=12 IMF], gecropt.&lt;p&gt;&#123;&#123;msg:PD}})</em></li> <li>6 apr 2004 18:43 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Bono.jpg|Bono.jpg]]" <em>(verkeerde foto ge-upload)</em></li> <li>6 apr 2004 17:02 [[Gebruiker:Geus|Geus]] heeft ge-upload: "[[:Afbeelding:Tetrahydrocannabinol.png|Tetrahydrocannabinol.png]]" <em>(van engelse wiki gepikt)</em></li> <li>6 apr 2004 15:09 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Hoeksema.jpg|Hoeksema.jpg]]" <em>(foto -Dimitri-)</em></li> <li>6 apr 2004 14:30 [[Gebruiker:Meursault2004|Meursault2004]] heeft ge-upload: "[[:Afbeelding:FrontUBofHeid.jpg|FrontUBofHeid.jpg]]" <em>(Eigen foto)</em></li> <li>6 apr 2004 13:48 [[Gebruiker:Fransvannes|Fransvannes]] heeft ge-upload: "[[:Afbeelding:300px-Brasov_Piata_Sfatului.jpg|300px-Brasov_Piata_Sfatului.jpg]]" <em>(marktplein van Brasov (bron: Wikipedia DE))</em></li> <li>6 apr 2004 13:31 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Bladinsnijdingen.png|Bladinsnijdingen.png]]" <em>((Auteur : Guillaume Bokiau overgenomen van Franse Wikipedia))</em></li> <li>6 apr 2004 13:21 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Bladranden.png|Bladranden.png]]" <em>(Auteur : Guillaume Bokiau overgenomen van Franse Wikipedia)</em></li> <li>6 apr 2004 11:23 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:OV-autoriteiten2004.png|OV-autoriteiten2004.png]]" <em>(zat nog een klein foutje in)</em></li> <li>6 apr 2004 11:19 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:OV-autoriteiten2004.png|OV-autoriteiten2004.png]]" <em>(BRU-gebied aangepast)</em></li> <li>6 apr 2004 11:05 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:BRU.png|BRU.png]]" <em>(Kleurprobleem opgelost)</em></li> <li>6 apr 2004 11:04 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Kaderwetgebieden.png|Kaderwetgebieden.png]]" <em>(aangepast (BRU-gebied))</em></li> <li>6 apr 2004 10:52 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:BRU.png|BRU.png]]" <em>(Eerdere versie hersteld)</em></li> <li>6 apr 2004 10:51 [[Gebruiker:Waerth|Waerth]] heeft ge-upload: "[[:Afbeelding:BRU.png|BRU.png]]" <em>(Eerdere versie hersteld)</em></li> <li>6 apr 2004 10:48 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:BRU.png|BRU.png]]" <em>(23 &gt; 10 gemeenten)</em></li> <li>6 apr 2004 10:35 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Winkel.jpg|Winkel.jpg]]" <em>(Fritz8 - print)</em></li> <li>6 apr 2004 10:31 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Ticulat.jpg|Ticulat.jpg]]" <em>(Fritz8 - print)</em></li> <li>6 apr 2004 10:03 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Sorensen.jpg|Sorensen.jpg]]" <em>(Fritz8 - print)</em></li> <li>6 apr 2004 09:59 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Duhm.jpg|Duhm.jpg]]" <em>(Fritz8 - print)</em></li> <li>6 apr 2004 09:56 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Duhm.jpg|Duhm.jpg]]" <em>(Fritz8 - print)</em></li> <li>6 apr 2004 09:54 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Chatard.jpg|Chatard.jpg]]" <em>(Fritz8 - print)</em></li> <li>6 apr 2004 09:49 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Alapin.jpg|Alapin.jpg]]" <em>(Fritz8 - print)</em></li> <li>6 apr 2004 09:46 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Vleug.jpg|Vleug.jpg]]" <em>(Fritz8 - print)</em></li> <li>6 apr 2004 09:41 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Vleugsic.jpg|Vleugsic.jpg]]" <em>(Fritz8 - print)</em></li> <li>6 apr 2004 09:37 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Tal.jpg|Tal.jpg]]" <em>(Fritz8 - print)</em></li> <li>6 apr 2004 09:34 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Morra.jpg|Morra.jpg]]" <em>(Fritz8 - print)</em></li> <li>6 apr 2004 09:32 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Morphy.jpg|Morphy.jpg]]" <em>(Fritz8 - print)</em></li> <li>6 apr 2004 09:31 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:CaudataTOL.gif|CaudataTOL.gif]]"</li> <li>6 apr 2004 09:29 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Najdorf.jpg|Najdorf.jpg]]" <em>(Fritz8 - print)</em></li> <li>6 apr 2004 07:12 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:P9060875.jpg|P9060875.jpg]]" <em>(toestemming van: diego@kosteniuk.com)</em></li> <li>6 apr 2004 07:02 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Zar_Alexander_II.jpg|Zar_Alexander_II.jpg]]" <em>(de: wikipedia)</em></li> <li>6 apr 2004 06:57 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Kramskoy_Alexander_III.jpg|Kramskoy_Alexander_III.jpg]]" <em>(En: wikipedia)</em></li> <li>6 apr 2004 06:35 [[Gebruiker:Babette Paping|Babette Paping]] heeft ge-upload: "[[:Afbeelding:P1010070.jpg|P1010070.jpg]]" <em>(Babette Paping)</em></li> <li>6 apr 2004 06:19 [[Gebruiker:Mister J.|Mister J.]] heeft ge-upload: "[[:Afbeelding:Franz_II._(HRR)|Franz_II._(HRR)]]" <em>(Franz II van Oostenrijk)</em></li> <li>6 apr 2004 01:05 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:TheemsLonden.jpg|TheemsLonden.jpg]]" <em>(De Theems in Londen, gezien vanaf de Millenniumbrug.&lt;p&gt;Foto: &#91;&#91;w:fr:Utilisateur:Cham&#124;Cham]], 15 juli 2002.&lt;p&gt;&#123;&#123;msg:GFDL}})</em></li> <li>6 apr 2004 01:03 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Rvrthames.jpg|Rvrthames.jpg]]"</li> <li>6 apr 2004 01:00 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Thames_kaart.png|Thames_kaart.png]]" <em>(Kaart van de rivier de Thames. Gemaakt door &#91;&#91;w:en:User:ChrisO&#124;ChrisO]], 15 februari 2004)</em></li> <li>6 apr 2004 00:50 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Freudsm.jpg|Freudsm.jpg]]" <em>(mooiere versie van hetzelfde portret)</em></li> <li>5 apr 2004 23:24 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:F1_barrichello.jpg|F1_barrichello.jpg]]" <em>(Rubens Barrichello, 2003. Foto: &#91;&#91;w:en:user:rdikeman&#124;Rick Dikeman]].&lt;p&gt;&#123;&#123;msg:GFDL}})</em></li> <li>5 apr 2004 23:23 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Barrichello.jpg|Barrichello.jpg]]" <em>(Rubens Barrichello, Indianapolis, 2002. Foto: &#91;&#91;w:en:user:rdikeman&#124;Rick Dikeman]].&lt;p&gt;&#123;&#123;msg:GFDL}})</em></li> <li>5 apr 2004 22:49 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Hakkinen.jpg|Hakkinen.jpg]]" <em>(Mika H&amp;auml;kkinen, USGP, 2000. Foto: &#91;&#91;w:en:User:Rdikeman&#124;Rick Dikeman]].&lt;p&gt;&#123;&#123;msg:GFDL}})</em></li> <li>5 apr 2004 22:45 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Rschumacher.jpg|Rschumacher.jpg]]" <em>(Ralf Schumacher, Indianapolis, 2002. Foto: &#91;&#91;w:en:User:rdikeman&#124;Rick Dikeman]].&lt;p&gt;&#123;&#123;msg:GFDL}})</em></li> <li>5 apr 2004 22:12 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Jpmontoya.jpg|Jpmontoya.jpg]]" <em>(Juan Pablo Montoya, Indianapolis, 2002. Foto: &#91;&#91;w:en:User:rdikeman&#124;Rick Dikeman]].&lt;p&gt;&#123;&#123;msg:GFDL}} &#91;&#91;en:Image:j p montoya.jpg]])</em></li> <li>5 apr 2004 22:06 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Mansell.jpg|Mansell.jpg]]" <em>(Nigel Mansell, CART, Mid-Ohio Sports Car Course, 1993.,Fotograaf: &#91;&#91;w:en:user:Rdikeman&#124;Rick Dikeman]].&lt;P&gt;&#123;&#123;msg:GFDL}} &#91;&#91;en:Image:mansell_cart.jpg]])</em></li> <li>5 apr 2004 21:52 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Coulthard.jpg|Coulthard.jpg]]" <em>(David Coulthard, Montreal, 1998. Fotograaf: Rick Dikeman&lt;p&gt;&#123;&#123;msg:GFDL}})</em></li> <li>5 apr 2004 21:30 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Den_Haag_stadhuis_april_2004.JPG|Den_Haag_stadhuis_april_2004.JPG]]" <em>(Den Haag, stadhuis, april 2004, foto door &#91;&#91;Gebruiker:Ellywa]] ter beschikking gesteld onder GNU/FDL licentie)</em></li> <li>5 apr 2004 21:24 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Jugendstil_versieringen_Den_Haag_april_2004.JPG|Jugendstil_versieringen_Den_Haag_april_2004.JPG]]" <em>(Jugenstil versieringen in Den Haag, april 2004, eigen foto van &#91;&#91;Gebruiker:Ellywa]], ter beschikking gesteld onder de GNU/FDL licentie)</em></li> <li>5 apr 2004 21:14 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Triumph_auto_Den_Haag_april_2004.JPG|Triumph_auto_Den_Haag_april_2004.JPG]]" <em>(Auto Triumph Den Haag april 2004, voor de opgebroken trambaan, eigen foto, ter beschikking gesteld onder GNU/FDL)</em></li> <li>5 apr 2004 20:43 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Swalm_groot.jpg|Swalm_groot.jpg]]" <em>(Swalm... Grote versie ook maar uploaden.....)</em></li> <li>5 apr 2004 20:36 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Swalm.jpg|Swalm.jpg]]" <em>(Kopie de: wikipedia)</em></li> <li>5 apr 2004 20:07 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Chagall.jpg|Chagall.jpg]]" <em>(Marc Chagall. Foto: Carl Van Vechten, 1941.&lt;p&gt;Bron: &#91;http&#58;//memory.loc.gov/cgi-bin/query/D?vv:3:./temp/~ammen_pJSr: Library of Congress].&lt;p&gt;&#123;&#123;msg:PD}} &#91;&#91;en:Image:Chagall.jpeg)</em></li> <li>5 apr 2004 19:55 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Classededanse.jpg|Classededanse.jpg]]" <em>(Edgar Degas (1834-1917), La classe de danse (ca. 1874). Musee d&#39;Orsay, Parijs.)</em></li> <li>5 apr 2004 19:30 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:80386.jpg|80386.jpg]]" <em>(AMD 30386 processor)</em></li> <li>5 apr 2004 18:27 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:80186.jpg|80186.jpg]]" <em>(Betere resolutie)</em></li> <li>5 apr 2004 18:24 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:80186.jpg|80186.jpg]]" <em>(Intel 80186 processor)</em></li> <li>5 apr 2004 18:02 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Dompedro-II.jpg|Dompedro-II.jpg]]" <em>(En: wikipedia)</em></li> <li>5 apr 2004 17:53 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:OmgevallenBoom.JPG|OmgevallenBoom.JPG]]" <em>(Eigen foto)</em></li> <li>5 apr 2004 16:24 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:L_IBM-CG80286-6C.jpg|L_IBM-CG80286-6C.jpg]]" <em>(Intel 80286 processor)</em></li> <li>5 apr 2004 16:20 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Alexander_I_of_Russia.jpg|Alexander_I_of_Russia.jpg]]" <em>(En: wikipedia)</em></li> <li>5 apr 2004 16:17 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:L_Intel-C8086-pbs.jpg|L_Intel-C8086-pbs.jpg]]" <em>(Intel 8086 processor)</em></li> <li>5 apr 2004 15:46 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:L_MOS-6510CBM.jpg|L_MOS-6510CBM.jpg]]" <em>(Commodore MOS 6510 processor)</em></li> <li>5 apr 2004 15:12 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:TsaarNicolaasII.jpg|TsaarNicolaasII.jpg]]" <em>(NicolaasII van wiki-en)</em></li> <li>5 apr 2004 13:26 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Katarina_den_stora.jpg|Katarina_den_stora.jpg]]" <em>(sv: wikipedia)</em></li> <li>5 apr 2004 13:05 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Th_p9060875.jpg|Th_p9060875.jpg]]" <em>(toestemming van: diego@kosteniuk.com)</em></li> <li>5 apr 2004 12:55 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Th_p9060875.jpg|Th_p9060875.jpg]]" <em>(toestemming van: diego@kosteniuk.com)</em></li> <li>5 apr 2004 12:50 [[Gebruiker:Oscar|Oscar]] heeft ge-upload: "[[:Afbeelding:KarolingischeMinuskel.jpg|KarolingischeMinuskel.jpg]]" <em>(eigen afbeelding!)</em></li> <li>5 apr 2004 12:46 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:P9060875.jpg|P9060875.jpg]]" <em>(toestemming van: diego@kosteniuk.com)</em></li> <li>5 apr 2004 12:34 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Th_p9060875.jpg|Th_p9060875.jpg]]" <em>(toestemming van: diego@kosteniuk.com)</em></li> <li>5 apr 2004 12:24 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Th_p9060875.jpg|Th_p9060875.jpg]]"</li> <li>5 apr 2004 11:57 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Hypoxia-map.gif|Hypoxia-map.gif]]" <em>(EPA US government public domain)</em></li> <li>5 apr 2004 11:28 [[Gebruiker:Puf|Puf]] heeft ge-upload: "[[:Afbeelding:SwordTail.jpg|SwordTail.jpg]]" <em>(Foto van een zwaarddrager, overgenomen van de Engelstalige Wikipedia-pagina)</em></li> <li>5 apr 2004 11:18 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:Abit-kt7-large.jpg|Abit-kt7-large.jpg]]" <em>(aangezien er wel een link naar deze afbeelding is maar de afbeelding zelf niet - van en: wikipedia)</em></li> <li>5 apr 2004 11:15 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Nielshenrikabel.jpg|Nielshenrikabel.jpg]]" <em>(Nog een keer, om te zien of de bug verholpen is.)</em></li> <li>5 apr 2004 11:05 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Nielshenrikabel.jpg|Nielshenrikabel.jpg]]" <em>(tweede pogin)</em></li> <li>5 apr 2004 11:02 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Nielshenrikabel.jpg|Nielshenrikabel.jpg]]" <em>(Niels Henrik Abel, bron http&#58;//finanz.math.tu-graz.ac.at/~predota/history/mathematiker/abel.html&lt;p&gt;&#123;&#123;msg:PD}} &#91;&#91;fr:Image:niels henrik abel.jpg]])</em></li> <li>5 apr 2004 10:50 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Rama_III.jpg|Rama_III.jpg]]" <em>(Standbeeld voor &#91;&#91;Rama III]] in &#91;&#91;Bangkok]]. Foto: &#91;&#91;w:en:User:Ahoerstemeier&#124;Ahoerstemeier]], 12 juli 2003.&lt;p&gt;&#123;&#123;msg:GFDL}})</em></li> <li>5 apr 2004 10:43 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Beeld_Rama_I.jpg|Beeld_Rama_I.jpg]]" <em>(Gedenkbeeld van koning &#91;&#91;Rama I]] in &#91;&#91;Bangkok]]. Foto: &#91;&#91;w:en:User:Ahoerstemeier&#124;Ahoerstemeier]], 18 juli 2003.&lt;p&gt;&#123;&#123;msg:GFDL}})</em></li> <li>5 apr 2004 09:42 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Pythagoras.jpg|Pythagoras.jpg]]" <em>(Pythagoras, uit het &#91;&#91;Nordisk familjebok]], Zweedse encyclopedie uit 1876-1899.)</em></li> <li>5 apr 2004 09:37 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:M_schumacher.jpg|M_schumacher.jpg]]" <em>(En: wikipedia)</em></li> <li>5 apr 2004 07:32 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Bladvormen.jpg|Bladvormen.jpg]]" <em>(zelfgemaakte foto; bladvormen in de vorm van menselijke organen)</em></li> <li>5 apr 2004 07:21 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Amylopectine.png|Amylopectine.png]]" <em>(zelfgemaakte tekening; amylopectine molecuul)</em></li> <li>5 apr 2004 07:18 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Amylose.png|Amylose.png]]" <em>(zelfgemaakte tekening; amylose molecuul)</em></li> <li>5 apr 2004 06:59 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Suikermaispluim.jpg|Suikermaispluim.jpg]]" <em>(zelfgemaakte foto; mannelijke bloeiwijze)</em></li> <li>5 apr 2004 06:56 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Suikermaiskolf.jpg|Suikermaiskolf.jpg]]" <em>(zelfgemaakte foto; vrouwelijke bloeiwijze)</em></li> <li>5 apr 2004 06:45 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Suikermaiskorrels.jpg|Suikermaiskorrels.jpg]]" <em>(zelfgemaakte foto; zaad van extra zoete suikermais)</em></li> <li>5 apr 2004 06:08 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:DARPA_Challenge_RedTeam.jpg|DARPA_Challenge_RedTeam.jpg]]" <em>(En: wikipedia)</em></li> <li>5 apr 2004 00:00 [[Gebruiker:Donderwolk|Donderwolk]] heeft ge-upload: "[[:Afbeelding:Schneider.jpg|Schneider.jpg]]" <em>(Schneider)</em></li> <li>4 apr 2004 23:55 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:SnelwegenNederland.png|SnelwegenNederland.png]]" <em>(Kaartje van Nederland met alle autosnelwegen.)</em></li> <li>4 apr 2004 23:26 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Belgrado1888.png|Belgrado1888.png]]" <em>(Kaart van Belgrado uit Meyers Konversionlexikon 1888, overgenomen van de Duitse Wikipedia.)</em></li> <li>4 apr 2004 23:02 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Straatsburgwapen.jpg|Straatsburgwapen.jpg]]" <em>(Wapen van Straatsburg. Gemaakt met 3D-effect door &#91;&#91;w:fr:Utilisateur:Alibaba&#124;Alibaba]]. Valt onder de &#91;&#91;GNU/FDL]].)</em></li> <li>4 apr 2004 22:52 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Lyonwapen.png|Lyonwapen.png]]" <em>(Wapen van de stad Lyon.&lt;p&gt;Gemaakt door &#91;&#91;w:fr:Rinaldum&#124;&amp;#422;inaldum]], 2004. Mag worden verspreid onder de &#91;&#91;GPL]], de &#91;&#91;GNU/FDL]] of een &#91;&#91;Creative Commons]]-licentie (staat niet bij welke).)</em></li> <li>4 apr 2004 22:30 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Inri.jpg|Inri.jpg]]" <em>(fragment uit een schilderij van Matthias Grunewald, ca. 1510)</em></li> <li>4 apr 2004 22:26 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Lillewapen.png|Lillewapen.png]]" <em>(Bug in bot nu gerepareerd.)</em></li> <li>4 apr 2004 22:18 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Lillewapen.png|Lillewapen.png]]" <em>(Wapen van Lille. Afbeelding onder de &#91;&#91;GNU/FDL]]-licentie van &#91;&#91;w:fr:Utilisateur:Alibaba&#124;Alibaba]].)</em></li> <li>4 apr 2004 22:02 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:DenisDiderot.jpg|DenisDiderot.jpg]]" <em>(kleurenafbeelding van hetzelfde schilderij)</em></li> <li>4 apr 2004 21:57 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Flag-westsahara.png|Flag-westsahara.png]]" <em>(tweede poging)</em></li> <li>4 apr 2004 21:55 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Flag-westsahara.png|Flag-westsahara.png]]" <em>(Vlag van de westelijke Sahara)</em></li> <li>4 apr 2004 21:50 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Vlag-canarisch.png|Vlag-canarisch.png]]" <em>(tweede poging)</em></li> <li>4 apr 2004 21:46 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Vlag-canarisch.png|Vlag-canarisch.png]]" <em>(Vlag van de Canarische eilanden (gekopieerd van de Duitse Wikipedia, die het zelf weer van de Esperanto Wikipedia heeft))</em></li> <li>4 apr 2004 21:36 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Nice_vanaf_haven.jpg|Nice_vanaf_haven.jpg]]" <em>(De stad Nice, gefotografeerd vanaf de haven. Foto &#91;&#91;w:de:Benutzer:Urbanus&#124;Urbanus]].)</em></li> <li>4 apr 2004 21:27 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Wyomingstateseal.jpg|Wyomingstateseal.jpg]]" <em>(Zegel van de staat &#91;&#91;Wyoming]]. Van http&#58;//www.usembassy.org. Publiek domein.)</em></li> <li>4 apr 2004 21:05 [[Gebruiker:Danielm|Danielm]] heeft ge-upload: "[[:Afbeelding:Abit-kt7-small.jpg|Abit-kt7-small.jpg]]" <em>(Kopie Wikipedia en:)</em></li> <li>4 apr 2004 21:00 [[Gebruiker:Robbot2|Robbot2]] heeft ge-upload: "[[:Afbeelding:Cnut.jpg|Cnut.jpg]]" <em>(Koning &#91;&#91;Knoet de Grote&#124;Knoet]]. Afbeelding uit een Middeleeuws manuscript.)</em></li> <li>4 apr 2004 20:19 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Sealjohn.jpg|Sealjohn.jpg]]" <em>(tweede poging, Robbot ging mis.)</em></li> <li>4 apr 2004 20:16 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Sealjohn.jpg|Sealjohn.jpg]]" <em>(Zegel van koning &#91;&#91;Jan zonder Land]] op de &#91;&#91;Magna Charta]].)</em></li> <li>4 apr 2004 20:15 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Neva-StPetersburg2.JPG|Neva-StPetersburg2.JPG]]" <em>(Toestemming fotograaf)</em></li> <li>4 apr 2004 20:04 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Ballet.JPG|Ballet.JPG]]" <em>(Toestemming fotograaf)</em></li> <li>4 apr 2004 19:17 [[Gebruiker:IMFJ|IMFJ]] heeft ge-upload: "[[:Afbeelding:Jc_bad_rabbit_vap_1987_voor_het_bolletjescafé.jpg|Jc_bad_rabbit_vap_1987_voor_het_bolletjescafé.jpg]]" <em>(JC Bad Rabbit VAP 1987 voor Café de Klok)</em></li> <li>4 apr 2004 18:11 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:LodewijkFilips.JPG|LodewijkFilips.JPG]]" <em>(Lodewijk Filips (van de Engelse Wiki))</em></li> <li>4 apr 2004 17:34 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Ferdinand_van_Bulgarije.jpg|Ferdinand_van_Bulgarije.jpg]]" <em>(Koning Ferdinand van Bulgarije (van de Engelse Wiki))</em></li> <li>4 apr 2004 16:38 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Essex.png|Essex.png]]" <em>(van en:)</em></li> <li>4 apr 2004 16:36 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Dupondii.jpg|Dupondii.jpg]]" <em>(Dupondii uit verschillende periodes van het Romeinse rijk)</em></li> <li>4 apr 2004 14:38 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Bodhran.jpg|Bodhran.jpg]]" <em>(Bohdran van wiki-en)</em></li> <li>4 apr 2004 14:18 [[Gebruiker:Bemoeial|Bemoeial]] heeft ge-upload: "[[:Afbeelding:Eisenhower.jpg|Eisenhower.jpg]]" <em>(Eisenhower van wiki-en)</em></li> <li>4 apr 2004 14:14 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Burg_Hohenzollern.jpg|Burg_Hohenzollern.jpg]]" <em>(Burcht Hohenzollern bij Hechingen (van Duitse Wiki))</em></li> <li>4 apr 2004 12:55 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:FrederikIIIklein.jpg|FrederikIIIklein.jpg]]" <em>(Keizer Frederik III van Duitsland (van Engelse Wiki))</em></li> <li>4 apr 2004 12:54 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:FrederikIIIGroot.jpeg|FrederikIIIGroot.jpeg]]" <em>(Keizer Frederik III van Duitsland (van Engelse Wiki))</em></li> <li>4 apr 2004 10:53 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Benzinepomp003.jpg|Benzinepomp003.jpg]]" <em>(Benzinepomp (Shell) in Koblenz-Metternich. Foto van &#91;&#91;Gebruiker:Andre Engels&#124;Andre Engels]], en door hem in het publiek domein geplaatst.)</em></li> <li>4 apr 2004 09:57 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Hirohito.jpg|Hirohito.jpg]]" <em>(En: wikipedia)</em></li> <li>4 apr 2004 07:28 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:Saturnus2.jpg|Saturnus2.jpg]]" <em>(gecropt)</em></li> <li>4 apr 2004 07:23 [[Gebruiker:Wilinckx|Wilinckx]] heeft ge-upload: "[[:Afbeelding:Saturn_-_Voyager_1.jpg|Saturn_-_Voyager_1.jpg]]" <em>(Saturnus, (omgezet van tiff naar jpg) vanaf openbare bron http&#58;//nssdc.gsfc.nasa.gov/imgcat/html/object_page/vg1_p22994c.html)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieZeewolde.png|LocatieZeewolde.png]]" <em>(Locatie gemeente Zeewolde. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieWoerden.png|LocatieWoerden.png]]" <em>(Locatie gemeente Woerden. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieVlissingen.png|LocatieVlissingen.png]]" <em>(Locatie gemeente Vlissingen. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieVeere.png|LocatieVeere.png]]" <em>(Locatie gemeente Veere. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieUtrecht.png|LocatieUtrecht.png]]" <em>(Locatie gemeente Utrecht. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieTerneuzen.png|LocatieTerneuzen.png]]" <em>(Locatie gemeente Terneuzen. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieSluis.png|LocatieSluis.png]]" <em>(Locatie gemeente Sluis. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieReimerswaal.png|LocatieReimerswaal.png]]" <em>(Locatie gemeente Reimerswaal. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieOudewater.png|LocatieOudewater.png]]" <em>(Locatie gemeente Oudewater. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieNoord-Beveland.png|LocatieNoord-Beveland.png]]" <em>(Locatie gemeente Noord-Beveland. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieMontfoort.png|LocatieMontfoort.png]]" <em>(Locatie gemeente Montfoort. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieMiddelburg.png|LocatieMiddelburg.png]]" <em>(Locatie gemeente Middelburg. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieMaarssen.png|LocatieMaarssen.png]]" <em>(Locatie gemeente Maarssen. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieLelystad.png|LocatieLelystad.png]]" <em>(Locatie gemeente Lelystad. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieKapelle.png|LocatieKapelle.png]]" <em>(Locatie gemeente Kapelle. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieHulst.png|LocatieHulst.png]]" <em>(Locatie gemeente Hulst. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieGoes.png|LocatieGoes.png]]" <em>(Locatie gemeente Goes. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieDeRondeVenen.png|LocatieDeRondeVenen.png]]" <em>(Locatie gemeente De Ronde Venen. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieDeBilt.png|LocatieDeBilt.png]]" <em>(Locatie gemeente De Bilt. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieBreukelen.png|LocatieBreukelen.png]]" <em>(Locatie gemeente Breukelen. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieBorsele.png|LocatieBorsele.png]]" <em>(Locatie gemeente Borsele. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:11 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:LocatieAlmere.png|LocatieAlmere.png]]" <em>(Locatie gemeente Almere. Afbeelding gemaakt door &#91;&#91;gebruiker:Mtcv]] en vrij te gebruiken.)</em></li> <li>4 apr 2004 02:09 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Phoe-nl.jpg|Phoe-nl.jpg]]" <em>(nog een poging)</em></li> <li>4 apr 2004 02:03 [[Gebruiker:Flyingbird|Flyingbird]] heeft ge-upload: "[[:Afbeelding:Phoe-nl.jpg|Phoe-nl.jpg]]" <em>(Fenicische i.p.v. Phoenicisch/Foenicisch, was niet echt nodig denk ik, maar goed...)</em></li> <li>4 apr 2004 01:15 [[Gebruiker:Arrowman|Arrowman]] heeft ge-upload: "[[:Afbeelding:IMG_0102.JPG|IMG_0102.JPG]]" <em>(Eigen foto)</em></li> <li>4 apr 2004 01:13 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Phoe-nl.jpg|Phoe-nl.jpg]]" <em>(Gewijzigd)</em></li> <li>3 apr 2004 23:01 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Scrabble.png|Scrabble.png]]" <em>(van en:)</em></li> <li>3 apr 2004 23:00 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:AgrippinaSrSest.JPG|AgrippinaSrSest.JPG]]" <em>(Portret van &#91;&#91;Agrippina de Oudere]] op een sestertius uitgegeven door haar zwager, keizer &#91;&#91;Claudius]])</em></li> <li>3 apr 2004 21:58 [[Gebruiker:Johi|Johi]] heeft ge-upload: "[[:Afbeelding:Hanepraai_Gouda.jpg|Hanepraai_Gouda.jpg]]" <em>(Voormalige Hanepraaisluis in Gouda, Eigen foto, gebruik vrij)</em></li> <li>3 apr 2004 20:56 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:GrootHoefbladCloseUp-kl.jpg|GrootHoefbladCloseUp-kl.jpg]]" <em>(Foto door mij genomen maart 2004, Gouda.)</em></li> <li>3 apr 2004 20:28 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:WitteDovenetelOvz-hr.jpg|WitteDovenetelOvz-hr.jpg]]" <em>(Foto genomen maart 2004 in Industriegebied Goudse poort, Gouda. Rechten hierbij onder gnu/fdl gebracht)</em></li> <li>3 apr 2004 20:25 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:WitteDovenetelOvz-kl.jpg|WitteDovenetelOvz-kl.jpg]]" <em>(Foto genomen maart 2004 in Industriegebied Goudse poort, Gouda. Rechten hierbij onder gnu/fdl gebracht)</em></li> <li>3 apr 2004 20:06 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:KleineWinterPosteleinCloseUp-kl.jpg|KleineWinterPosteleinCloseUp-kl.jpg]]" <em>(Kleine winter postelein, zelf genomen foto berm zuiderpark, maart 2004)</em></li> <li>3 apr 2004 20:05 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:KleineWinterPosteleinOvz-kl.jpg|KleineWinterPosteleinOvz-kl.jpg]]" <em>(Kleine winter postelein, zelf genomen foto berm zuiderpark, maart 2004)</em></li> <li>3 apr 2004 20:00 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(test)</em></li> <li>3 apr 2004 18:49 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(test)</em></li> <li>3 apr 2004 18:48 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(test)</em></li> <li>3 apr 2004 18:19 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:GemeentenZuid-HollandNrs.png|GemeentenZuid-HollandNrs.png]]" <em>(Gemeenten in Zuid-Holland (genummerd). Eigen werk, vrij te gebruiken.)</em></li> <li>3 apr 2004 18:08 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(test)</em></li> <li>3 apr 2004 17:33 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:LimburgBGemeenten.png|LimburgBGemeenten.png]]" <em>(grotere nummertjes)</em></li> <li>3 apr 2004 17:11 [[Gebruiker:Ashley|Ashley]] heeft ge-upload: "[[:Afbeelding:Onze_vakantie_|Onze_vakantie_]]"</li> <li>3 apr 2004 16:14 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Arundel.jpg|Arundel.jpg]]" <em>(eigen foto)</em></li> <li>3 apr 2004 16:08 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Sussex.png|Sussex.png]]" <em>(van en:)</em></li> <li>3 apr 2004 15:55 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Haruspex.png|Haruspex.png]]" <em>(Schapenlever, van de Engelse Wiki)</em></li> <li>3 apr 2004 15:36 [[Gebruiker:Känsterle|Känsterle]] heeft ge-upload: "[[:Afbeelding:Augur.jpg|Augur.jpg]]" <em>(Vogelwichelaar (van de Zweedse Wikipedia))</em></li> <li>3 apr 2004 15:27 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:HeuvelsRome.png|HeuvelsRome.png]]" <em>(Kaartje met de zeven heuvels van Rome. Eigen werk, vrij te gebruiken.)</em></li> <li>3 apr 2004 15:25 [[Gebruiker:Mtcv|Mtcv]] heeft ge-upload: "[[:Afbeelding:RomeKleinHeuvels.png|RomeKleinHeuvels.png]]" <em>(Overzicht Rome met locatie heuvelgebied. Eigen werk, vrij te gebruiken.)</em></li> <li>3 apr 2004 14:54 [[Gebruiker:Head|Head]] heeft ge-upload: "[[:Afbeelding:LocBonn.png|LocBonn.png]]" <em>(Kaart van Duitsland met de locatie van Bonn)</em></li> <li>3 apr 2004 13:13 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Nicaragua-coa.jpg|Nicaragua-coa.jpg]]" <em>(En: wikipedia)</em></li> <li>3 apr 2004 12:59 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Grenadaarms22.PNG|Grenadaarms22.PNG]]" <em>(En: wikipedia)</em></li> <li>3 apr 2004 12:04 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Logooas.jpg|Logooas.jpg]]" <em>(OAS beperkte toestemming)</em></li> <li>3 apr 2004 11:45 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Adold_Eichmann.jpg|Adold_Eichmann.jpg]]" <em>(En: wikipedia)</em></li> <li>3 apr 2004 10:25 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Messalina.jpg|Messalina.jpg]]" <em>(Messalina, 3de vrouw van keizer &#91;&#91;Claudius]]. van Engelse Wikipedia (galleria Uffizi, Florence, Italië) )</em></li> <li>3 apr 2004 09:47 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(test)</em></li> <li>3 apr 2004 09:47 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(test)</em></li> <li>3 apr 2004 09:28 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(test)</em></li> <li>3 apr 2004 09:15 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(test)</em></li> <li>3 apr 2004 09:11 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(test)</em></li> <li>3 apr 2004 08:44 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(test)</em></li> <li>3 apr 2004 08:43 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(test)</em></li> <li>3 apr 2004 08:41 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(test)</em></li> <li>3 apr 2004 08:40 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(test)</em></li> <li>3 apr 2004 08:36 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(upload test)</em></li> <li>3 apr 2004 08:29 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Lem.jpg|Lem.jpg]]"</li> <li>3 apr 2004 08:25 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Black.jpg|Black.jpg]]"</li> <li>3 apr 2004 08:23 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Tschi.jpg|Tschi.jpg]]"</li> <li>3 apr 2004 08:19 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Anti.jpg|Anti.jpg]]"</li> <li>3 apr 2004 07:57 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Test.jpg|Test.jpg]]" <em>(test)</em></li> <li>3 apr 2004 07:42 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Telluur.jpg|Telluur.jpg]]" <em>(tweede poging)</em></li> <li>3 apr 2004 07:37 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Telluur.jpg|Telluur.jpg]]" <em>(Telluur. Eigen foto van &#91;&#91;w:en:User:RTC&#124;RTC]].)</em></li> <li>3 apr 2004 07:20 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Locaken.png|Locaken.png]]" <em>(Locatie van Aken van &#91;http&#58;//www.opengeodb.de/suche/index.php?id=13352&amp;q=Aachen www.OpenGeoDb])</em></li> <li>3 apr 2004 06:26 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Locemmerik.png|Locemmerik.png]]" <em>(De locatie van &#91;&#91;Emmerik]] van &#91;http&#58;//www.opengeodb.de/suche/index.php?id=16185&amp;q=Emmerich www.OpenGeoDb.de]])</em></li> <li>3 apr 2004 06:18 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Locwesel.png|Locwesel.png]]" <em>(De locatie van Wesel van &#91;http&#58;//www.opengeodb.de/suche/index.php?id=26001&amp;q=Wesel www.OpenGeoDb])</em></li> <li>3 apr 2004 06:12 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Locwürzburg.png|Locwürzburg.png]]" <em>(Locatie van Würzburg van &#91;http&#58;//www.opengeodb.de/suche/index.php?id=26466&amp;q=W%FCrzburg www.OpenGeoDb.de])</em></li> <li>2 apr 2004 22:31 [[Gebruiker:Johi|Johi]] heeft ge-upload: "[[:Afbeelding:Woonhuis_Leo_Vroman_Gouda.jpg|Woonhuis_Leo_Vroman_Gouda.jpg]]" <em>(Gedenkbord ouderlijk huis Leo Vroman. Eigen foto gebruik vrij)</em></li> <li>2 apr 2004 21:52 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Locbadbentheim.png|Locbadbentheim.png]]" <em>(Locatie van Bad Bentheim. Kaart van &#91;http&#58;//www.opengeodb.de/suche/index.php?id=13867&amp;q=Bad%20Bentheim www.OpenGeoDb.de])</em></li> <li>2 apr 2004 21:32 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:LocAschaffenburg.png|LocAschaffenburg.png]]" <em>(Locatie van Aschaffenburg van &#91;http&#58;//www.opengeodb.de/suche/index.php?id=13756&amp;q=Aschaffenburg www.OpenGeoDb.de])</em></li> <li>2 apr 2004 19:56 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:LogoLB.png|LogoLB.png]]" <em>(Zelfgetekend Combinootje)</em></li> <li>2 apr 2004 19:46 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:MondingEem.JPG|MondingEem.JPG]]" <em>(Eigen foto)</em></li> <li>2 apr 2004 19:37 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Heide.JPG|Heide.JPG]]" <em>(eigen foto)</em></li> <li>2 apr 2004 17:45 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Helgoland.png|Helgoland.png]]" <em>(Helgoland van &#91;http&#58;//www.opengeodb.de/suche/index.php?id=18129&amp;q=Helgoland www.openGeoDb.de])</em></li> <li>2 apr 2004 17:42 [[Gebruiker:Robk|Robk]] heeft ge-upload: "[[:Afbeelding:Wapen_Macedonie.PNG|Wapen_Macedonie.PNG]]" <em>(Van Engelse wiki; verkleind)</em></li> <li>2 apr 2004 17:26 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Locbodenwerder.png|Locbodenwerder.png]]" <em>(Locatie van Bodenwerder van &#91;http&#58;//www.opengeodb.de/suche/index.php?id=14658&amp;q=Bodenwerder www.opengeoDb.de])</em></li> <li>2 apr 2004 17:15 [[Gebruiker:Chreng|Chreng]] heeft ge-upload: "[[:Afbeelding:Condoleezza_Rice.jpg|Condoleezza_Rice.jpg]]" <em>(engelse wiki)</em></li> <li>2 apr 2004 16:50 [[Gebruiker:Roepers|Roepers]] heeft ge-upload: "[[:Afbeelding:Kaarthameln.png|Kaarthameln.png]]" <em>(Kaart van Hamelen van &#91;http&#58;//www.opengeodb.de/suche/index.php?id=17840&amp;q=Hameln www.openGeoDb.de])</em></li> <li>2 apr 2004 16:39 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Lacerta_constellation_map.png|Lacerta_constellation_map.png]]" <em>(laatste poging)</em></li> <li>2 apr 2004 16:35 [[Gebruiker:Andre Engels|Andre Engels]] heeft ge-upload: "[[:Afbeelding:Lacerta_constellation_map.png|Lacerta_constellation_map.png]]" <em>(Iets misgegaan bij Robbot; correcte versie)</em></li> <li>2 apr 2004 16:34 [[Gebruiker:Robbot|Robbot]] heeft ge-upload: "[[:Afbeelding:Lacerta_constellation_map.png|Lacerta_constellation_map.png]]" <em>(Kaart van het sterrenbeeld &#91;&#91;Lacerta]]. Gemaakt door &#91;&#91;w:en:User:Bronger&#124;Torsten Bronger]].)</em></li> <li>2 apr 2004 16:05 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Schroef_van_archimedes.jpg|Schroef_van_archimedes.jpg]]" <em>(Schroef van Archimedes, vanaf Engelse wikipedi, alwaar vermeldt: Image from http&#58;//www.probertencyclopaedia.com/SA.HTM , used by permission )</em></li> <li>2 apr 2004 15:27 [[Gebruiker:Avanschelven|Avanschelven]] heeft ge-upload: "[[:Afbeelding:Wight.png|Wight.png]]" <em>(van en:)</em></li> <li>2 apr 2004 13:25 [[Gebruiker:CE|CE]] heeft ge-upload: "[[:Afbeelding:Orangoetan.jpg|Orangoetan.jpg]]" <em>(engelse wiki)</em></li> <li>2 apr 2004 11:18 [[Gebruiker:Mels Lenstra|Mels Lenstra]] heeft ge-upload: "[[:Afbeelding:Relais.bmp|Relais.bmp]]" <em>(Schematische tekening van een relais, gemaakt door Mels Lenstra - ik geef deze afbeelding vrij op grond van de GNU public license)</em></li> <li>2 apr 2004 10:54 [[Gebruiker:Mels Lenstra|Mels Lenstra]] heeft ge-upload: "[[:Afbeelding:Dagobert.gif|Dagobert.gif]]" <em>(Dagobert Duck (zwemt in zijn geld) - public domain)</em></li> <li>2 apr 2004 09:52 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Gambietal.jpg|Gambietal.jpg]]"</li> <li>2 apr 2004 09:44 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Gambiettd.jpg|Gambiettd.jpg]]"</li> <li>2 apr 2004 09:43 [[Gebruiker:Pieterrr|Pieterrr]] heeft ge-upload: "[[:Afbeelding:Bobross.jpg|Bobross.jpg]]" <em>(Bob Ross!)</em></li> <li>2 apr 2004 09:37 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Gambiet.jpg|Gambiet.jpg]]"</li> <li>2 apr 2004 09:34 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Gambietsd.jpg|Gambietsd.jpg]]"</li> <li>2 apr 2004 09:26 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Gambietwi.jpg|Gambietwi.jpg]]"</li> <li>2 apr 2004 09:21 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Gambietsl.jpg|Gambietsl.jpg]]"</li> <li>2 apr 2004 09:15 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Gambietni.jpg|Gambietni.jpg]]"</li> <li>2 apr 2004 09:12 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Romeinse_As.jpg|Romeinse_As.jpg]]" <em>(Romeinse as. Enkele voorbeelden van 210 v. Chr. tot 161 na Chr,)</em></li> <li>2 apr 2004 08:19 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:RomeinseAs.jpg|RomeinseAs.jpg]]" <em>(Romeinse as. Enkele voorbeelden van 210 v. Chr. tot 180 na Chr,)</em></li> <li>1 apr 2004 21:59 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Hans_Asperger.jpg|Hans_Asperger.jpg]]" <em>(En: wikipedia)</em></li> <li>1 apr 2004 21:07 [[Gebruiker:Ellywa|Ellywa]] heeft ge-upload: "[[:Afbeelding:Nederlandse_vlag_halfstok.jpg|Nederlandse_vlag_halfstok.jpg]]" <em>(Nederlandse vlag halfstok, uitsnede van &#91;&#91;:Afbeelding:Dieselgemaal Gouda maart 2004.JPG]], foto van &#91;&#91;Gebruiker:Johi]])</em></li> <li>1 apr 2004 20:57 [[Gebruiker:LennartBolks|LennartBolks]] heeft ge-upload: "[[:Afbeelding:Halfstok.jpg|Halfstok.jpg]]" <em>(fragment van Afbeelding:Dieselgemaal Gouda maart 2004.JPG:)</em></li> <li>1 apr 2004 20:15 [[Gebruiker:Johi|Johi]] heeft ge-upload: "[[:Afbeelding:Vroman_zwwt.jpg|Vroman_zwwt.jpg]]" <em>(De dichter wetenschapper Leo Vroman, publiek domein, internet )</em></li> <li>1 apr 2004 17:02 [[Gebruiker:Marco j|Marco j]] heeft ge-upload: "[[:Afbeelding:Marvin_Gaye.jpg|Marvin_Gaye.jpg]]" <em>(Marvin Gaye, 1983 (from the show &quot;from I Love The 80s: 1987 &quot; www.vh1.com))</em></li> <li>1 apr 2004 15:23 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Sloot.JPG|Sloot.JPG]]" <em>(Eigen foto)</em></li> <li>1 apr 2004 15:15 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:Denarii.jpg|Denarii.jpg]]" <em>(&#91;&#91;Denarii]] uit uiteenlopende perioden van het Romeinse rijk)</em></li> <li>1 apr 2004 14:00 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Gamfrans.jpg|Gamfrans.jpg]]" <em>(gambietvariant)</em></li> <li>1 apr 2004 13:56 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Gamfrans.jpg|Gamfrans.jpg]]" <em>(de gambietvariant in de franse opening)</em></li> <li>1 apr 2004 12:34 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Klase6.jpg|Klase6.jpg]]"</li> <li>1 apr 2004 12:25 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Klasa6.jpg|Klasa6.jpg]]"</li> <li>1 apr 2004 12:01 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Bogodg.jpg|Bogodg.jpg]]"</li> <li>1 apr 2004 11:50 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:AquiliaSevera.jpg|AquiliaSevera.jpg]]" <em>(Portret van keizerin &#91;&#91;Aquilia Severa]] op een Romeinse &#91;&#91;denarius]] uit &#91;&#91;221]])</em></li> <li>1 apr 2004 11:49 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Bognimzo.jpg|Bognimzo.jpg]]"</li> <li>1 apr 2004 11:34 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:JuliaPaula.jpg|JuliaPaula.jpg]]" <em>(Portret van keizerin &#91;&#91;Julia Paula]] op een Romeinse &#91;&#91;denarius]] uit &#91;&#91;219]])</em></li> <li>1 apr 2004 11:27 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:Kantoor_Flevolandschap.JPG|Kantoor_Flevolandschap.JPG]]" <em>(Eigen foto)</em></li> <li>1 apr 2004 11:25 [[Gebruiker:Bezeh.nl|Bezeh.nl]] heeft ge-upload: "[[:Afbeelding:Galop-bew.gif|Galop-bew.gif]]" <em>(arbeidsgalop)</em></li> <li>1 apr 2004 11:18 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:OrbianaSest.jpg|OrbianaSest.jpg]]" <em>(Portret van keizerin &#91;&#91;Orbiana]] op een Romeinse &#91;&#91;sestertius]] uit &#91;&#91;225]])</em></li> <li>1 apr 2004 10:56 [[Gebruiker:CharlesS|CharlesS]] heeft ge-upload: "[[:Afbeelding:AlbinusSest.jpg|AlbinusSest.jpg]]" <em>(Portret van &#91;&#91;Clodius Albinus]] als &#39;&#39;Caesar&#39;&#39; op Romeinse sestertius uit 194)</em></li> <li>1 apr 2004 09:37 [[Gebruiker:Waerth|Waerth]] heeft ge-upload: "[[:Afbeelding:Ultramanenzijnmoeder.jpg|Ultramanenzijnmoeder.jpg]]" <em>(eigen foto waerth)</em></li> <li>1 apr 2004 09:30 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Aldg.jpg|Aldg.jpg]]"</li> <li>1 apr 2004 09:25 [[Gebruiker:Waerth|Waerth]] heeft ge-upload: "[[:Afbeelding:Ultramangroep.jpg|Ultramangroep.jpg]]" <em>(eigen foto waerth)</em></li> <li>1 apr 2004 09:24 [[Gebruiker:Waerth|Waerth]] heeft ge-upload: "[[:Afbeelding:Userwaerth.jpg|Userwaerth.jpg]]" <em>(eigen foto waerth)</em></li> <li>1 apr 2004 09:06 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Alfr.jpg|Alfr.jpg]]"</li> <li>1 apr 2004 08:55 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Pendame.jpg|Pendame.jpg]]"</li> <li>1 apr 2004 08:31 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Penpaard.jpg|Penpaard.jpg]]"</li> <li>1 apr 2004 08:27 [[Gebruiker:Jaapvanderkooij|Jaapvanderkooij]] heeft ge-upload: "[[:Afbeelding:Pentoren.jpg|Pentoren.jpg]]"</li> <li>1 apr 2004 06:45 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Suikermais.jpg|Suikermais.jpg]]" <em>(zelfgemaakte foto van suikermais &#39;Tasty sweet&#39;)</em></li> <li>1 apr 2004 06:33 [[Gebruiker:Rasbak|Rasbak]] heeft ge-upload: "[[:Afbeelding:Paardebloem_zaadpluis.JPG|Paardebloem_zaadpluis.JPG]]" <em>(zelfgemaakte foto; bloemhoofdje met rijp zaad)</em></li> <li>1 apr 2004 06:02 [[Gebruiker:GerardM|GerardM]] heeft ge-upload: "[[:Afbeelding:CommonMurre23.jpg|CommonMurre23.jpg]]" <em>(En: wikipedia)</em></li> <li>1 apr 2004 04:37 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:MPD-large.jpg|MPD-large.jpg]]" <em>(valt onder gnu/fdl, van engelse wiki)</em></li> <li>1 apr 2004 04:02 [[Gebruiker:TeunSpaans|TeunSpaans]] heeft ge-upload: "[[:Afbeelding:Image_MPD.jpg|Image_MPD.jpg]]" <em>(valt onder gnu/fdl)</em></li> </ul> Oudere uploads: * [[Wikipedia:Upload_logboek_archief_maart_2004|december 2003-maart 2004]] * [http://nl.wikipedia.org/w/wiki.phtml?title=Wikipedia:Upload_logboek&oldid=137067 mei-november 2003] libzeep-5.1.8/lib-xml/test/XPath-Test-Suite/data-014.xml0000664000175000017500000000034014324170113022322 0ustar maartenmaarten ]> libzeep-5.1.8/lib-xml/test/XPath-Test-Suite/xpath-tests.xml0000664000175000017500000001360514324170113023403 0ustar maartenmaarten ]> libzeep-5.1.8/lib-xml/test/parser-test.cpp0000664000175000017500000002655714324170113020334 0ustar maartenmaarten#include #if defined(_MSC_VER) #include #include #endif #include #include #include #include #include #include #include #include #include // #include #include #include using namespace std; using namespace zeep; namespace po = boost::program_options; namespace fs = std::filesystem; int VERBOSE; int TRACE; int error_tests, should_have_failed, total_tests, wrong_exception, skipped_tests; bool run_valid_test(istream& is, fs::path& outfile) { bool result = true; xml::document indoc; is >> indoc; stringstream s; indoc.set_collapse_empty_tags(false); indoc.set_suppress_comments(true); indoc.set_escape_white_space(true); indoc.set_wrap_prolog(false); s << indoc; string s1 = s.str(); trim(s1); if (TRACE) cout << s1 << endl; if (fs::is_directory(outfile)) ; else if (fs::exists(outfile)) { std::ifstream out(outfile, ios::binary); string s2, line; while (not out.eof()) { getline(out, line); s2 += line + "\n"; } trim(s2); if (s1 != s2) { stringstream ss; ss << "output differs: " << endl << endl << s1 << endl << endl << s2 << endl << endl; throw zeep::exception(ss.str()); } } else cout << "skipped output compare for " << outfile << endl; return result; } void dump(xml::element& e, int level = 0) { cout << level << "> " << e.get_qname() << endl; for (auto& [name, ign]: e.attributes()) cout << level << " (a)> " << name << endl; for (auto& c: e) dump(c, level + 1); } bool run_test(const xml::element& test, fs::path base_dir) { bool result = true; fs::path input(base_dir / test.get_attribute("URI")); fs::path output(base_dir / test.get_attribute("OUTPUT")); ++total_tests; if (not fs::exists(input)) { cout << "test file " << input << " does not exist" << endl; return false; } // if (test.attr("SECTIONS") == "B.") // { // if (VERBOSE) // cout << "skipping unicode character validation tests" << endl; // ++skipped_tests; // return true; // } fs::current_path(input.parent_path()); std::ifstream is(input, ios::binary); if (not is.is_open()) throw zeep::exception("test file not open"); string error; try { fs::current_path(input.parent_path()); if (test.get_attribute("TYPE") == "valid") result = run_valid_test(is, output); else if (test.get_attribute("TYPE") == "not-wf" or test.get_attribute("TYPE") == "invalid") { bool failed = false; try { xml::document doc; doc.set_validating(test.get_attribute("TYPE") == "invalid"); doc.set_validating_ns(test.get_attribute("RECOMMENDATION") == "NS1.0"); is >> doc; ++should_have_failed; result = false; } catch (zeep::xml::not_wf_exception& e) { if (test.get_attribute("TYPE") != "not-wf") { ++wrong_exception; throw zeep::exception(string("Wrong exception (should have been invalid):\n\t") + e.what()); } failed = true; if (VERBOSE > 1) cout << e.what() << endl; } catch (zeep::xml::invalid_exception& e) { if (test.get_attribute("TYPE") != "invalid") { ++wrong_exception; throw zeep::exception(string("Wrong exception (should have been not-wf):\n\t") + e.what()); } failed = true; if (VERBOSE > 1) cout << e.what() << endl; } catch (std::exception& e) { throw zeep::exception(string("Wrong exception:\n\t") + e.what()); } if (VERBOSE and not failed) throw zeep::exception("invalid document, should have failed"); } else { bool failed = false; try { xml::document doc; is >> doc; ++should_have_failed; result = false; } catch (std::exception& e) { if (VERBOSE > 1) cout << e.what() << endl; failed = true; } if (VERBOSE and not failed) { if (test.get_attribute("TYPE") == "not-wf") throw zeep::exception("document should have been not well formed"); else // or test.attr("TYPE") == "error" throw zeep::exception("document should have been invalid"); } } } catch (std::exception& e) { if (test.get_attribute("TYPE") == "valid") ++error_tests; result = false; error = e.what(); } if ((result == false and VERBOSE == 1) or (VERBOSE > 1)) { cout << "-----------------------------------------------" << endl << "ID: " << test.get_attribute("ID") << endl << "FILE: " << /*fs::system_complete*/(input) << endl << "TYPE: " << test.get_attribute("TYPE") << endl << "SECTION: " << test.get_attribute("SECTIONS") << endl << "EDITION: " << test.get_attribute("EDITION") << endl << "RECOMMENDATION: " << test.get_attribute("RECOMMENDATION") << endl; istringstream s(test.get_content()); for (;;) { string line; getline(s, line); trim(line); if (line.empty()) { if (s.eof()) break; continue; } cout << "DESCR: " << line << endl; } cout << endl; if (result == false) { istringstream iss(error); for (;;) { string line; getline(iss, line); trim(line); if (line.empty() and iss.eof()) break; cout << " " << line << endl; } cout << endl; // cout << "exception: " << error << endl; } } return result; } void run_test_case(const xml::element& testcase, const string& id, const set& skip, const string& type, int edition, fs::path base_dir, vector& failed_ids) { if (VERBOSE > 1 and id.empty()) cout << "Running testcase " << testcase.get_attribute("PROFILE") << endl; if (not testcase.get_attribute("xml:base").empty()) { base_dir /= testcase.get_attribute("xml:base"); if (fs::exists(base_dir)) fs::current_path(base_dir); } string path; if (id.empty()) path = ".//TEST"; else path = string(".//TEST[@ID='") + id + "']"; regex ws_re(" "); // whitespace for (const xml::element* n: xml::xpath(path).evaluate(testcase)) { auto testID = n->get_attribute("ID"); if (skip.count(testID)) continue; if (not id.empty() and testID != id) continue; if (not type.empty() and type != n->get_attribute("TYPE")) continue; if (edition != 0) { auto es = n->get_attribute("EDITION"); if (not es.empty()) { auto b = sregex_token_iterator(es.begin(), es.end(), ws_re, -1); auto e = sregex_token_iterator(); auto ei = find_if(b, e, [edition](const string& e) { return stoi(e) == edition; }); if (ei == e) continue; } } if (fs::exists(base_dir / n->get_attribute("URI")) and not run_test(*n, base_dir)) { failed_ids.push_back(n->get_attribute("ID")); } } } void test_testcases(const fs::path& testFile, const string& id, const set& skip, const string& type, int edition, vector& failed_ids) { std::ifstream file(testFile, ios::binary); int saved_verbose = VERBOSE; VERBOSE = 0; int saved_trace = TRACE; TRACE = 0; fs::path base_dir = fs::weakly_canonical(testFile.parent_path()); fs::current_path(base_dir); xml::document doc(file); VERBOSE = saved_verbose; TRACE = saved_trace; for (auto test: doc.find("//TESTCASES")) { if (test->get_qname() != "TESTCASES") continue; run_test_case(*test, id, skip, type, edition, base_dir, failed_ids); } } int main(int argc, char* argv[]) { int result = 0; po::options_description desc("Allowed options"); desc.add_options() ("help", "produce help message") ("verbose", "verbose output") ("id", po::value(), "ID for the test to run from the test suite") ("skip", po::value>(), "Skip this test, can be specified multiple times") ("questionable", po::value>(), "Questionable tests, do not consider failure of these to be an error") ("test", "Run SUN test suite") ("edition", po::value(), "XML 1.0 specification edition to test, default is 5, 0 which means run all tests") ("trace", "Trace productions in parser") ("type", po::value(), "Type of test to run (valid|not-wf|invalid|error)") ("single", po::value(), "Test a single XML file") ("dump", po::value(), "Dump the structure of a single XML file") ("print-ids", "Print the ID's of failed tests") ("conf", po::value(), "Configuration file") ; po::positional_options_description p; p.add("test", -1); po::variables_map vm; po::store(po::command_line_parser(argc, argv). options(desc).positional(p).run(), vm); po::notify(vm); if (vm.count("help")) { cout << desc << endl; return 1; } VERBOSE = static_cast(vm.count("verbose")); TRACE = static_cast(vm.count("trace")); fs::path savedwd = fs::current_path(); try { if (vm.count("single")) { fs::path path(vm["single"].as()); std::ifstream file(path, ios::binary); if (not file.is_open()) throw zeep::exception("could not open file"); fs::path dir(path.parent_path()); fs::current_path(dir); run_valid_test(file, dir); } else if (vm.count("dump")) { fs::path path(vm["dump"].as()); std::ifstream file(path, ios::binary); if (not file.is_open()) throw zeep::exception("could not open file"); fs::path dir(path.parent_path()); fs::current_path(dir); xml::document doc; file >> doc; dump(doc.front()); } else { fs::path xmlconfFile("XML-Test-Suite/xmlconf/xmlconf.xml"); if (vm.count("test")) xmlconfFile = vm["test"].as(); if (not fs::exists(xmlconfFile)) throw std::runtime_error("Config file not found: " + xmlconfFile.string()); string id; if (vm.count("id")) id = vm["id"].as(); vector skip; if (vm.count("skip")) skip = vm["skip"].as>(); string type; if (vm.count("type")) type = vm["type"].as(); int edition = 5; if (vm.count("edition")) edition = vm["edition"].as(); vector failed_ids; test_testcases(xmlconfFile, id, {skip.begin(), skip.end()}, type, edition, failed_ids); cout << endl << "summary: " << endl << " ran " << total_tests - skipped_tests << " out of " << total_tests << " tests" << endl << " " << error_tests << " threw an exception" << endl << " " << wrong_exception << " wrong exception" << endl << " " << should_have_failed << " should have failed but didn't" << endl; vector questionable; if (vm.count("questionable")) questionable = vm["questionable"].as>(); set erronous; for (auto fid: failed_ids) { if (std::find(questionable.begin(), questionable.end(), fid) == questionable.end()) erronous.insert(fid); } if (not erronous.empty()) result = 1; if (vm.count("print-ids") and not failed_ids.empty()) { cout << endl; if (erronous.empty()) cout << "All the failed tests were questionable" << endl; else { cout << endl << "ID's for the failed, non-questionable tests: " << endl; copy(erronous.begin(), erronous.end(), ostream_iterator(cout, "\n")); cout << endl; } } } } catch (std::exception& e) { cout << e.what() << endl; return 1; } fs::current_path(savedwd); // #if defined(_MSC_VER) // cout << "press any key to continue..."; // char ch = _getch(); // #endif return result; } libzeep-5.1.8/lib-xml/test/serializer-test.cpp0000664000175000017500000001552714324170113021204 0ustar maartenmaarten#define BOOST_TEST_MODULE Serializer_Test #include #include #include #include #include using namespace std; using namespace zeep::xml; namespace tt = boost::test_tools; struct st_1 { int i; string s; template void serialize(Archive& ar, unsigned long v) { ar & ZEEP_ELEMENT_NAME_VALUE(i) & ZEEP_ELEMENT_NAME_VALUE(s); } bool operator==(const st_1& rhs) const { return i == rhs.i and s == rhs.s; } }; typedef vector v_st_1; BOOST_AUTO_TEST_CASE(serializer_1) { using namespace zeep::xml::literals; auto doc = R"(42)"_xml; int32_t i = -1; deserializer ds(doc); ds.deserialize_element("test", i); BOOST_TEST(i == 42); document doc2; serializer sr(doc2); sr.serialize_element("test", i); BOOST_TEST(doc == doc2); } struct S { int8_t a; float b; string c; bool operator==(const S& s) const { return a == s.a and b == s.b and c == s.c; } template void serialize(Archive& ar, unsigned long version) { ar & element_nvp("a", a) & element_nvp("b", b) & element_nvp("c", c); } }; BOOST_AUTO_TEST_CASE(serializer_2) { using namespace zeep::xml::literals; auto doc = R"(10.2aap)"_xml; S s; deserializer ds(doc); ds.deserialize_element("test", s); BOOST_TEST(s.a == 1); BOOST_TEST(s.b == 0.2, tt::tolerance(0.01)); BOOST_TEST(s.c == "aap"); document doc2; serializer sr(doc2); sr.serialize_element("test", s); BOOST_TEST(doc == doc2); } BOOST_AUTO_TEST_CASE(test_s_1) { st_1 s1 = { 1, "aap" }; document doc; doc.serialize("s1", s1); static_assert(zeep::has_serialize_v, "Oeps"); stringstream s; s << doc; BOOST_CHECK_EQUAL(s.str(), "1aap"); doc.clear(); serializer sr(doc); sr.serialize_element("s1", s1); stringstream ss2; ss2 << doc; BOOST_CHECK_EQUAL(ss2.str(), "1aap"); st_1 s2; doc.deserialize("s1", s2); BOOST_CHECK(s1 == s2); } struct S_arr { vector vi; deque ds; template void serialize(Archive& ar, unsigned long) { ar & element_nvp("vi", vi) & element_nvp("ds", ds); } }; BOOST_AUTO_TEST_CASE(test_serialize_arrays) { static_assert(std::experimental::is_detected_v, "oeps"); static_assert(not std::experimental::is_detected_v>, "oeps"); static_assert(not std::experimental::is_detected_v, "oeps"); vector ii{ 1, 2, 3, 4 }; element e("test"); serializer sr(e); sr.serialize_element("i", ii); document doc; doc.insert(doc.begin(), e);// copy vector ii2; deserializer dsr(e); dsr.deserialize_element("i", ii2); BOOST_TEST(ii == ii2); } BOOST_AUTO_TEST_CASE(test_serialize_arrays2) { S_arr sa{ { 1, 2, 3, 4 }, { { 1, 0.5f, "aap" }, { 2, 1.5f, "noot" } } }; static_assert(zeep::has_serialize_v, "oeps"); static_assert(not zeep::has_serialize_v, "oeps"); static_assert(zeep::is_serializable_type_v, "oeps"); static_assert(zeep::is_serializable_type_v, "oeps"); document doc; doc.serialize("test", sa); S_arr sa2; doc.deserialize("test", sa2); BOOST_TEST(sa.vi == sa2.vi); BOOST_TEST(sa.ds == sa2.ds); } BOOST_AUTO_TEST_CASE(serialize_arrays_2) { using namespace zeep::xml::literals; element e("test"); int i[] = { 1, 2, 3 }; serializer sr(e); sr.serialize_element("i", i); ostringstream os; os << e; BOOST_TEST(os.str() == R"(123)"); } BOOST_AUTO_TEST_CASE(serialize_container_1) { using namespace zeep::xml::literals; element e("test"); array i = { 1, 2, 3 }; serializer sr(e); sr.serialize_element("i", i); array j; deserializer dsr(e); dsr.deserialize_element("i", j); BOOST_TEST(i == j); ostringstream os; os << e; BOOST_TEST(os.str() == R"(123)"); } enum class E { aap, noot, mies }; struct Se { E m_e; template void serialize(Archive& ar, unsigned long) { ar & make_element_nvp("e", m_e); } }; BOOST_AUTO_TEST_CASE(test_s_2) { zeep::value_serializer::instance("my-enum") (E::aap, "aap") (E::noot, "noot") (E::mies, "mies"); vector e = { E::aap, E::noot, E:: mies }; document doc; // cannot create more than one root element in a doc: BOOST_CHECK_THROW(doc.serialize("test", e), zeep::exception); element test("test"); serializer sr(test); sr.serialize_element("e", e); vector e2; deserializer dsr(test); dsr.deserialize_element("e", e2); BOOST_TEST(e == e2); ostringstream s; s << test; BOOST_TEST(s.str() == "aapnootmies"); Se se{E::aap}; document doc2; doc2.serialize("s", se); ostringstream os; os << doc2; BOOST_TEST(os.str() == "aap"); } BOOST_AUTO_TEST_CASE(test_optional) { using namespace zeep::xml::literals; std::optional s; document doc; // doc.serialize("test", s); // BOOST_TEST(doc == ""_xml); s.emplace("aap"); doc.clear(); doc.serialize("test", s); BOOST_TEST(doc == "aap"_xml); s.reset(); doc.deserialize("test", s); BOOST_TEST((bool)s); BOOST_TEST(*s == "aap"); } BOOST_AUTO_TEST_CASE(test_schema) { using namespace zeep::xml::literals; element schema; type_map types; // schema_creator } // BOOST_AUTO_TEST_CASE(test_s_2) // { // st_1 s1 = { 1, "aap" }; // v_st_1 v1; // v1.push_back(s1); // v1.push_back(s1); // xml::document doc; // BOOST_CHECK_THROW(doc.serialize("v1", v1), zeep::exception); // } // BOOST_AUTO_TEST_CASE(test_s_3) // { // st_1 st[] = { { 1, "aap" }, { 2, "noot" } }; // v_st_1 v1; // v1.push_back(st[0]); // v1.push_back(st[1]); // xml::document doc(""); // xml::serializer sr(doc.front()); // sr.serialize_element("s1", v1); // stringstream s; // s << doc; // cout << s.str() << endl; // BOOST_CHECK_EQUAL(s.str(), "1aap2noot"); // v_st_1 v2; // BOOST_CHECK_THROW(doc.deserialize("v1", v2), zeep::exception); // xml::deserializer dr(doc.front()); // dr.deserialize_element("s1", v2); // BOOST_CHECK(v1 == v2); // } // struct st_2 // { // vector s; // template // void serialize(Archive& ar, unsigned long v) // { // ar & ZEEP_ELEMENT_NAME_VALUE(s); // } // }; // BOOST_AUTO_TEST_CASE(test_s_4) // { // st_2 s1; // s1.s.push_back("aap"); // s1.s.push_back("noot"); // xml::document doc; // doc.serialize("st2", s1); // stringstream s; // s << doc; // BOOST_CHECK_EQUAL(s.str(), "aapnoot"); // st_2 s2; // doc.deserialize("st2", s2); // BOOST_CHECK(s1.s == s2.s); // } libzeep-5.1.8/lib-xml/test/unit-test.cpp0000664000175000017500000003234714324170113020011 0ustar maartenmaarten#define BOOST_TEST_MODULE Processor_Test #include #include #include #include using namespace std; namespace zx = zeep::xml; BOOST_AUTO_TEST_CASE(xml_1) { zx::element n("data", { { "attr1", "value-1" }, { "attr2", "value-2" } }); BOOST_TEST(n.name() == "data"); BOOST_TEST(n.attributes().empty() == false); BOOST_TEST(n.attributes().size() == 2); BOOST_TEST(n.attributes().begin() != n.attributes().end()); size_t i = 0; for (auto& [name, value]: n.attributes()) { switch (i++) { case 0: BOOST_TEST(name == "attr1"); BOOST_TEST(value == "value-1"); break; case 1: BOOST_TEST(name == "attr2"); BOOST_TEST(value == "value-2"); break; } } ostringstream s; s << n; BOOST_TEST(s.str() == R"()"); ostringstream s2; s2 << setw(2) << setiosflags(ios_base::left) << n << endl; const char* test = R"( )"; BOOST_TEST(s2.str() == test); n.validate(); } BOOST_AUTO_TEST_CASE(xml_2) { zx::element e("test"); e.nodes().emplace_back(zx::comment("commentaar")); zx::element::node_iterator i = e.nodes().begin(); BOOST_TEST(i == e.nodes().begin()); BOOST_TEST(i != e.nodes().end()); BOOST_TEST(i->str() == "commentaar"); zx::element::iterator j = e.begin(); BOOST_TEST(j == e.begin()); BOOST_TEST(j == e.end()); } BOOST_AUTO_TEST_CASE(xml_3) { zx::element e("test"); zx::element a("aap"); e.nodes().emplace(e.end(), a); BOOST_TEST(a.name() == "aap"); e.nodes().emplace(e.end(), std::move(a)); BOOST_TEST(a.name() == ""); zx::element b("noot"); zx::node& n = b; e.nodes().emplace(e.end(), n); BOOST_TEST(b.name() == "noot"); const zx::node& n2 = b; e.nodes().emplace(e.end(), n2); BOOST_TEST(b.name() == "noot"); // zx::node&& n3 = std::move(b); // e.nodes().emplace(e.end(), n3); // BOOST_TEST(b.name() == ""); e.attributes().emplace("attr1", "value1"); ostringstream s; s << e; BOOST_TEST(s.str() == R"()"); } BOOST_AUTO_TEST_CASE(xml_attributes_1) { using namespace zx::literals; auto doc = R"( )"_xml; auto& t = doc.front().front(); for (auto& a: t.attributes()) { BOOST_TEST(a.name() == "a"); BOOST_TEST(a.get_qname() == "m:a"); BOOST_TEST(a.get_ns() == "http://www.hekkelman.com"); } for (auto a: t.attributes()) { BOOST_TEST(a.name() == "a"); BOOST_TEST(a.get_qname() == "m:a"); // the attribute was copied and thus lost namespace information BOOST_TEST(a.get_ns() != "http://www.hekkelman.com"); } } BOOST_AUTO_TEST_CASE(xml_emplace) { zx::element e("test"); e.emplace_back("test2", { { "a1", "v1" }, { "a2", "v2" }}); ostringstream s; s << e; BOOST_TEST(s.str() == R"()"); e.emplace_front("test1", { { "a1", "v1" }, { "a2", "v2" }}); ostringstream s2; s2 << e; BOOST_TEST(s2.str() == R"()"); } BOOST_AUTO_TEST_CASE(xml_4) { zx::element e("test"); e.emplace_back(zx::element("test2", { { "attr1", "een" }, { "attr2", "twee" } })); ostringstream s; s << e; BOOST_TEST(s.str() == R"()"); } BOOST_AUTO_TEST_CASE(xml_5_compare) { zx::element a("test", { { "a", "v1" }, { "b", "v2" } }); zx::element b("test", { { "b", "v2" }, { "a", "v1" } }); BOOST_TEST(a == b); } BOOST_AUTO_TEST_CASE(xml_container_and_iterators) { zx::element e("test"); zx::element n("a"); e.insert(e.begin(), move(n)); e.back().set_content("aap "); e.emplace_back("b").set_content("noot "); e.emplace_back("c").set_content("mies"); BOOST_TEST(e.size() == 3); BOOST_TEST(not e.empty()); BOOST_TEST(e.front().parent() == &e); BOOST_TEST(e.back().parent() == &e); BOOST_TEST(e.begin() != e.end()); BOOST_TEST(e.str() == "aap noot mies"); e.erase(next(e.begin())); BOOST_TEST(e.str() == "aap mies"); ostringstream s1; s1 << setw(2) << left << e << endl; BOOST_TEST(s1.str() == R"( aap mies )"); e.validate(); ostringstream s2; s2 << e; BOOST_TEST(s2.str() == R"(aap mies)"); e.pop_front(); BOOST_TEST(e.size() == 1); BOOST_TEST(e.front().name() == "c"); e.push_front({"aa"}); BOOST_TEST(e.size() == 2); BOOST_TEST(e.front().name() == "aa"); e.pop_back(); BOOST_TEST(e.size() == 1); BOOST_TEST(e.back().name() == "aa"); BOOST_TEST(e.front().name() == "aa"); e.pop_back(); BOOST_TEST(e.empty()); e.validate(); } BOOST_AUTO_TEST_CASE(xml_copy) { zx::element e("test", { { "a", "een" }, { "b", "twee" } }); e.push_back(e); e.push_back(e); zx::element c("c", { { "x", "0" }}); c.push_back(e); c.push_front(e); zx::element c2 = c; BOOST_TEST(c == c2); } BOOST_AUTO_TEST_CASE(xml_copy2) { zx::element e("test", { { "a", "een" }, { "b", "twee" } }); e.emplace_back("x1"); e.nodes().emplace_back(zx::comment("bla")); e.emplace_back("x2"); auto e1 = e; zx::element c1("test"); c1.emplace_back(std::move(e)); auto c2 = c1; zx::element c3("test"); for (auto& n: c1) c3.emplace_back(std::move(n)); BOOST_TEST(c2 == c3); zx::element e2("test", { { "a", "een" }, { "b", "twee" } }); for (auto& n: c2.front().nodes()) e2.nodes().emplace_back(std::move(n)); BOOST_TEST(e2 == e1); e1.validate(); e2.validate(); } BOOST_AUTO_TEST_CASE(xml_iterators) { zx::element e("test"); for (int i = 0; i < 10; ++i) e.emplace_back("n").set_content(to_string(i)); auto bi = e.begin(); auto ei = e.end(); for (int i = 0; i < 10; ++i) { BOOST_TEST((bi + i)->get_content() == to_string(i)); BOOST_TEST((ei - i - 1)->get_content() == to_string(9 - i)); } } BOOST_AUTO_TEST_CASE(xml_iterators_2) { zx::element e("test"); for (int i = 0; i < 10; ++i) e.emplace_back("n").set_content(to_string(i)); auto bi = e.begin(); auto ei = e.end(); for (int i = 0; i < 10; ++i) { BOOST_TEST((bi + i)->get_content() == to_string(i)); BOOST_TEST((ei - i - 1)->get_content() == to_string(9 - i)); } std::vector nodes; for (auto& n: e.nodes()) nodes.push_back(&n); BOOST_TEST(nodes.size() == 10); for (int i = 0; i < 10; ++i) { zx::element* el = dynamic_cast(nodes[i]); BOOST_TEST(el != nullptr); BOOST_TEST(el->get_content() == to_string(i)); } } BOOST_AUTO_TEST_CASE(xml_attributes) { zx::element e("test", { { "a", "1" }, { "b", "2" } }); auto& attr = e.attributes(); BOOST_TEST(attr.contains("a")); BOOST_TEST(attr.contains("b")); BOOST_TEST(not attr.contains("c")); BOOST_TEST(attr.find("a")->value() == "1"); BOOST_TEST(attr.find("b")->value() == "2"); BOOST_TEST(attr.find("c") == attr.end()); auto i = attr.emplace("c", "3"); BOOST_TEST(attr.contains("c")); BOOST_TEST(attr.find("c") == i.first); BOOST_TEST(attr.find("c")->value() == "3"); BOOST_TEST(i.second == true); i = attr.emplace("c", "3a"); BOOST_TEST(attr.contains("c")); BOOST_TEST(attr.find("c") == i.first); BOOST_TEST(attr.find("c")->value() == "3a"); BOOST_TEST(i.second == false); } BOOST_AUTO_TEST_CASE(xml_doc) { zx::document doc; zx::element e("test", { { "a", "1" }, { "b", "2" } }); doc.push_back(move(e)); zx::document doc2(R"()"); BOOST_TEST(doc == doc2); using namespace zx::literals; auto doc3 = R"()"_xml; BOOST_TEST(doc == doc3); auto doc4 = R"()"_xml; BOOST_TEST(doc4.size() == 1); auto l1 = doc4.front(); BOOST_TEST(l1.get_qname() == "l1"); BOOST_TEST(l1.size() == 1); auto l2 = l1.front(); BOOST_TEST(l2.get_qname() == "l2"); BOOST_TEST(l2.size() == 1); auto l3 = l2.front(); BOOST_TEST(l3.get_qname() == "l3"); BOOST_TEST(l3.size() == 1); auto l4 = l3.front(); BOOST_TEST(l4.get_qname() == "l4"); BOOST_TEST(l4.empty()); auto i = l3.find_first("./l4"); BOOST_TEST(i != l3.end()); l3.erase(i); BOOST_TEST(l3.empty()); i = l1.find_first(".//l3"); BOOST_TEST(i != l1.end()); BOOST_CHECK_THROW(l1.erase(i), zeep::exception); l1.erase(l1.begin()); BOOST_TEST(l1.empty()); } BOOST_AUTO_TEST_CASE(xml_doc2) { zx::document doc; doc.emplace_back("first", { { "a1", "v1" }}); BOOST_CHECK_THROW(doc.emplace_back("second"), zeep::exception); } BOOST_AUTO_TEST_CASE(xml_xpath) { using namespace zx::literals; auto doc = R"()"_xml; auto r = doc.find("//a"); BOOST_TEST(r.size() == 3); BOOST_TEST(r.front()->get_qname() == "a"); } BOOST_AUTO_TEST_CASE(xml_xpath_2) { using namespace zx::literals; auto doc = R"( x y )"_xml; auto r = doc.find("//b[c/a[contains(text(),'x')]]"); BOOST_TEST(r.size() == 2); BOOST_TEST(r.front()->get_qname() == "b"); auto r2 = doc.find("//b/c[@z='z']/a[text()='y']"); BOOST_TEST(r2.size() == 1); BOOST_TEST(r2.front()->get_qname() == "a"); } BOOST_AUTO_TEST_CASE(xml_namespaces) { using namespace zx::literals; auto doc = R"(