diff options
author | Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | 2010-04-12 14:02:38 (GMT) |
---|---|---|
committer | Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | 2010-04-12 14:02:38 (GMT) |
commit | 50a8b8782ab3dab6446cca9a5528d6287df9d7d1 (patch) | |
tree | 1d53792f2fa08423bc8145cf5c2f7dc3d09f50cf /src/3rdparty | |
parent | 0d288fa2112a00ecd8e160dd6ff70ba2e54153ee (diff) | |
download | Qt-50a8b8782ab3dab6446cca9a5528d6287df9d7d1.zip Qt-50a8b8782ab3dab6446cca9a5528d6287df9d7d1.tar.gz Qt-50a8b8782ab3dab6446cca9a5528d6287df9d7d1.tar.bz2 |
Update src/3rdparty/webkit from trunk.
Imported from 862268aeb7150d3795d05bfc05f661bb5c598a27
in branch qtwebkit-2.0 of repository
git://gitorious.org/+qtwebkit-developers/webkit/qtwebkit.git
Reviewed-by: TrustMe
Diffstat (limited to 'src/3rdparty')
64 files changed, 1800 insertions, 1038 deletions
diff --git a/src/3rdparty/webkit/.tag b/src/3rdparty/webkit/.tag index 12573f4..4813e1e 100644 --- a/src/3rdparty/webkit/.tag +++ b/src/3rdparty/webkit/.tag @@ -1 +1 @@ -839d8709327f925aacb3b6362c06152594def97e +862268aeb7150d3795d05bfc05f661bb5c598a27 diff --git a/src/3rdparty/webkit/ChangeLog b/src/3rdparty/webkit/ChangeLog index 001dddb..70eff7d 100644 --- a/src/3rdparty/webkit/ChangeLog +++ b/src/3rdparty/webkit/ChangeLog @@ -1,3 +1,32 @@ +2010-04-09 Simon Hausmann <simon.hausmann@nokia.com> + + Unreviewed crash fix. + + Revert part of 57320 that would remove NDEBUG in release builds for + DRT, etc. + + * WebKit.pri: + +2010-04-09 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Fix crashes with package builds in release + + * WebKit.pri: Don't randomly add NDEBUG to the defines. + +2010-04-07 Laszlo Gombos <laszlo.1.gombos@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Fix trunk (non-standalone) builds for Symbian + https://bugs.webkit.org/show_bug.cgi?id=37136 + + Test for source files before building instead of relying on + standalone_package config. + + * WebKit.pro: + 2010-03-26 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> Reviewed by Simon Hausmann. diff --git a/src/3rdparty/webkit/JavaScriptCore/ChangeLog b/src/3rdparty/webkit/JavaScriptCore/ChangeLog index 7ce0787..53fde39 100644 --- a/src/3rdparty/webkit/JavaScriptCore/ChangeLog +++ b/src/3rdparty/webkit/JavaScriptCore/ChangeLog @@ -1,3 +1,38 @@ +2010-04-09 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Fix crashes with package builds in release + + Add NDEBUG to the defines for package build in JavaScriptCore.pri, + so that it's consistently used for JavaScriptCore, WebCore, jsc and all + other tools using wtf, etc. data structures directly. Mixing NDEBUG with + non-NDEBUG builds causes crashes due to differences in data structures when + assertions/checks are enabled. + + * JavaScriptCore.pri: + +2010-03-31 Laszlo Gombos <laszlo.1.gombos@nokia.com> + + Unreviewed, fix after r56842. + + Add UNUSED_PARAM a to silence warning. + + * jit/JITStubs.cpp: + (JSC::DEFINE_STUB_FUNCTION): + +2010-03-31 Laszlo Gombos <laszlo.1.gombos@nokia.com> + + Unreviewed, Symbian build fix. + + Refactor JITStubs.cpp so that the list of STUB_FUNCTIONs + are not dependent on the JSVALUE32_64 guard. + + * jit/JITStubs.cpp: Place the JSVALUE32_64 guard inside + the body of cti_op_eq_strings. + * jit/JITStubs.h: Remove JSVALUE32_64 guard from + cti_op_eq_strings stub. + 2010-04-05 Laszlo Gombos <laszlo.1.gombos@nokia.com> Reviewed by Kenneth Rohde Christiansen. diff --git a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri index 902e6f3..c55c48b 100644 --- a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri +++ b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri @@ -1,11 +1,6 @@ # JavaScriptCore - Qt4 build info VPATH += $$PWD -# Output in JavaScriptCore/<config> -CONFIG(debug, debug|release): JAVASCRIPTCORE_DESTDIR = debug -CONFIG(release, debug|release): JAVASCRIPTCORE_DESTDIR = release -# Use different targets to prevent parallel builds file clashes on Mac -CONFIG(debug, debug|release): JAVASCRIPTCORE_TARGET = jscored -CONFIG(release, debug|release): JAVASCRIPTCORE_TARGET = jscore +JAVASCRIPTCORE_TARGET = jscore CONFIG(standalone_package) { isEmpty(JSC_GENERATED_SOURCES_DIR):JSC_GENERATED_SOURCES_DIR = $$PWD/generated @@ -61,15 +56,13 @@ contains(JAVASCRIPTCORE_JIT,no) { wince* { INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/ce-compat DEFINES += WINCEBASIC - - INCLUDEPATH += $$PWD/../JavaScriptCore/os-wince - INCLUDEPATH += $$PWD/../JavaScriptCore/os-win32 } defineTest(addJavaScriptCoreLib) { - # Argument is the relative path to JavaScriptCore.pro's qmake output - pathToJavaScriptCoreOutput = $$ARGS/$$JAVASCRIPTCORE_DESTDIR + pathToJavaScriptCoreOutput = $$ARGS + CONFIG(debug_and_release):CONFIG(debug, debug|release): pathToJavaScriptCoreOutput = $$pathToJavaScriptCoreOutput/debug + CONFIG(debug_and_release):CONFIG(release, debug|release): pathToJavaScriptCoreOutput = $$pathToJavaScriptCoreOutput/release win32-msvc* { LIBS += -L$$pathToJavaScriptCoreOutput diff --git a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro index d71977d..4056787 100644 --- a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro +++ b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro @@ -8,18 +8,16 @@ CONFIG += staticlib # Don't use JavaScriptCore as the target name. qmake would create a JavaScriptCore.vcproj for msvc # which already exists as a directory TARGET = $$JAVASCRIPTCORE_TARGET -DESTDIR = $$JAVASCRIPTCORE_DESTDIR QT += core CONFIG += depend_includepath contains(QT_CONFIG, embedded):CONFIG += embedded -CONFIG(QTDIR_build) { - # Make sure we compile both debug and release on mac when inside Qt. - # This line was extracted from qbase.pri instead of including the whole file - win32|mac:!macx-xcode:CONFIG += debug_and_release -} else { +CONFIG(debug_and_release):CONFIG(debug, debug|release): DESTDIR = debug +CONFIG(debug_and_release):CONFIG(release, debug|release): DESTDIR = release + +!CONFIG(QTDIR_build) { CONFIG(debug, debug|release) { OBJECTS_DIR = obj/debug } else { # Release diff --git a/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp b/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp index 4d3c847..dd1db4e 100644 --- a/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp @@ -27,10 +27,10 @@ #include "ExecutableAllocator.h" -#if ENABLE(ASSEMBLER) && OS(DARWIN) && CPU(X86_64) - #include <errno.h> +#if ENABLE(ASSEMBLER) && OS(DARWIN) && CPU(X86_64) + #include "TCSpinLock.h" #include <mach/mach_init.h> #include <mach/vm_map.h> diff --git a/src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.cpp b/src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.cpp index 8169268..daa945c 100644 --- a/src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.cpp @@ -2489,10 +2489,9 @@ DEFINE_STUB_FUNCTION(int, op_eq) #endif // USE(JSVALUE32_64) } -#if USE(JSVALUE32_64) - DEFINE_STUB_FUNCTION(int, op_eq_strings) { +#if USE(JSVALUE32_64) STUB_INIT_STACK_FRAME(stackFrame); JSString* string1 = stackFrame.args[0].jsString(); @@ -2501,9 +2500,12 @@ DEFINE_STUB_FUNCTION(int, op_eq_strings) ASSERT(string1->isString()); ASSERT(string2->isString()); return string1->value(stackFrame.callFrame) == string2->value(stackFrame.callFrame); -} - +#else + UNUSED_PARAM(args); + ASSERT_NOT_REACHED(); + return 0; #endif +} DEFINE_STUB_FUNCTION(EncodedJSValue, op_lshift) { diff --git a/src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.h b/src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.h index dad4f12..cf3a7f8 100644 --- a/src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.h +++ b/src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.h @@ -334,9 +334,7 @@ extern "C" { JSPropertyNameIterator* JIT_STUB cti_op_get_pnames(STUB_ARGS_DECLARATION); VoidPtrPair JIT_STUB cti_op_call_arityCheck(STUB_ARGS_DECLARATION); int JIT_STUB cti_op_eq(STUB_ARGS_DECLARATION); -#if USE(JSVALUE32_64) int JIT_STUB cti_op_eq_strings(STUB_ARGS_DECLARATION); -#endif int JIT_STUB cti_op_jless(STUB_ARGS_DECLARATION); int JIT_STUB cti_op_jlesseq(STUB_ARGS_DECLARATION); int JIT_STUB cti_op_jtrue(STUB_ARGS_DECLARATION); diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog index 3eedeff..f52872c 100644 --- a/src/3rdparty/webkit/WebCore/ChangeLog +++ b/src/3rdparty/webkit/WebCore/ChangeLog @@ -1,3 +1,240 @@ +2010-04-09 Kenneth Rohde Christiansen <kenneth@webkit.org> + + Reviewed by Simon Fraser. + + Remove "all" value from the view-mode media feature (as agreed on + 1-Apr-2010) in the Widgets voice conf. + + * css/CSSValueKeywords.in: + * css/MediaQueryEvaluator.cpp: + (WebCore::view_modeMediaFeatureEval): + +2010-04-09 Tasuku Suzuki <tasuku.suzuki@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt]Fix compile error with QT_NO_PROPERTIES + https://bugs.webkit.org/show_bug.cgi?id=36526 + + Disable dynamic properties when QT_NO_PROPERTIES is defined. + + * bridge/qt/qt_class.cpp: + (JSC::Bindings::QtClass::fieldNamed): + * bridge/qt/qt_instance.cpp: + (JSC::Bindings::QtInstance::getPropertyNames): + (JSC::Bindings::QtField::name): + (JSC::Bindings::QtField::valueFromInstance): + (JSC::Bindings::QtField::setValueToInstance): + * bridge/qt/qt_runtime.h: + (JSC::Bindings::QtField::): + +2010-03-25 Tasuku Suzuki <tasuku.suzuki@nokia.com> + + Reviewed by Eric Seidel. + + [Qt]Fix compile error with QT_NO_ANIMATION + https://bugs.webkit.org/show_bug.cgi?id=36526 + + * platform/graphics/qt/GraphicsLayerQt.cpp: + (WebCore::GraphicsLayerQtImpl::~GraphicsLayerQtImpl): + * platform/graphics/qt/GraphicsLayerQt.h: + +2010-04-09 David Leong <david.leong@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Symbian apps crash on exit due to a bad qObject_cast. + + https://bugs.webkit.org/show_bug.cgi?id=37303 + + Added check for NULL to avoid the crash. + + * plugins/symbian/PluginViewSymbian.cpp: + (WebCore::PluginView::platformDestroy): + +2010-04-09 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Fix crashes with package builds in release + + * WebCore.pro: Don't add NDEBUG to the defines here, add it from JavaScriptCore.pri + +2010-04-09 Andras Becsi <abecsi@webkit.org> + + Reviewed by Simon Hausmann. + + [Qt] User agent style sheets are crippled by moc -E in make-css-file-arrays.pl + https://bugs.webkit.org/show_bug.cgi?id=37296 + + Do not use moc to preprocess user agent style sheets because it removes at-symbols + and hexadecimal colours from declarations. + Remove unneeded preprocessor usage from make-css-file-arrays.pl since the script + processes default css files using regular expressions therefore preprocessing is redundant. + + * WebCore.pri: remove --preprocessor usage + * css/make-css-file-arrays.pl: remove gcc dependency + +2010-04-01 Antonio Gomes <tonikitoo@webkit.org> + + Reviewed by David Hyatt. + + [Qt] REGRESSION:(r50665) QWebFrame::setScrollBarPolicy(Qt::Vertical,Qt::ScrollBarAlwaysOff) has no effect. + https://bugs.webkit.org/show_bug.cgi?id=29431 + + Test: fast/overflow/scrollbar-restored-and-then-locked.html + + Patch introduces a lock scrollbars concept to ScrollView, as in WebDynamicScrollBarsView.mm/h + on WebKit/mac. It is needed because in QtWebKit, we have Api for setting both vertical and + horizontal scrollbars on/off/auto. When it is set to off, for example, it should remain + as such, unless unset. + + For the locking concept, optional 'lock' parameters were added to setScrollbarModes, + setHorizontalScrollbarMode and setVerticalScrollbarMode methods of ScrollView. As these + are all optional, any previous code calling them do not need modification. + + Two optional parameters were also added to Frame's createView method, for horizontal and vertical + lock state persistence cross page loads. + + * page/Frame.cpp: + (WebCore::Frame::createView): + * platform/ScrollView.cpp: + (WebCore::ScrollView::ScrollView): + (WebCore::ScrollView::setScrollbarModes): + (WebCore::ScrollView::setHorizontalScrollbarMode): + (WebCore::ScrollView::setVerticalScrollbarMode): + * platform/ScrollView.h: + (WebCore::ScrollView::setHorizontalScrollbarLock): + (WebCore::ScrollView::isHorizontalScrollbarLocked): + (WebCore::ScrollView::setVerticalScrollbarLock): + (WebCore::ScrollView::isVerticalScrollbarLocked): + (WebCore::ScrollView::setScrollingModesLocked): + +2010-04-08 Jarkko Sakkinen <jarkko.sakkinen@tieto.com> + + Reviewed by Simon Hausmann. + + [Qt] Remove shaderSource manipulation from GraphicsContext3DQt.cpp + https://bugs.webkit.org/show_bug.cgi?id=37226 + + * platform/graphics/qt/GraphicsContext3DQt.cpp: + (WebCore::GraphicsContext3D::shaderSource): + +2010-04-07 Rodrigo Belem <rodrigo.belem@openbossa.org> + + Reviewed by Simon Hausmann. + + [Qt] The build system is not installing the generated headers (QGraphicsWebView, QWebDatabase, etc) + https://bugs.webkit.org/show_bug.cgi?id=37173 + + This patch sets the correct path to the classheaders.pri and then + fixes the installation of the generated headers. + + * WebCore.pro: + +2010-04-07 Kenneth Rohde Christiansen <kenneth@webkit.org> + + Reviewed by Darin Adler. + + Poor rendering on lala.com with frame flattening + https://bugs.webkit.org/show_bug.cgi?id=37164 + + Do not flatten offscreen iframes. + + Test: fast/frames/flattening/iframe-flattening-offscreen.html + + * rendering/RenderPartObject.cpp: + (WebCore::RenderPartObject::flattenFrame): + * rendering/RenderPartObject.h: + +2010-04-07 Dawit Alemayehu <adawit@kde.org> + + Reviewed by Simon Hausmann. + + https://bugs.webkit.org/show_bug.cgi?id=36827 + + Replaced the 'shouldTreatAsAttachment' function with a more generic + function that returns the content disposition type. + + See comments 39-42 in https://bugs.webkit.org/show_bug.cgi?id=36395 + + * platform/network/HTTPParsers.cpp: + (WebCore::contentDispositionType): + * platform/network/HTTPParsers.h: + (WebCore::): + +2010-04-07 Simon Hausmann <simon.hausmann@nokia.com> + + Reviewed by Laszlo Gombos. + + https://bugs.webkit.org/show_bug.cgi?id=36750 + + [Qt] Package build without touch support is broken + + Use the conditional attribute instead of #ifdefs in the idl file for the + touch specific properties, to make the generated files compile with and + without the touch events enabled. + + * dom/Document.idl: Use conditional instead of #ifdef. + * dom/Element.idl: Ditto. + * page/DOMWindow.idl: Ditto. + +2010-04-07 Simon Hausmann <simon.hausmann@nokia.com> + + Reviewed by Holger Freyther. + + Add the touch event related IDL files to the idl generation, so that + they can be safely included from generated JS bindings files. The + generated files have #ifdef feature guards. + + * DerivedSources.cpp: + * DerivedSources.make: + * GNUmakefile.am: + +2010-03-25 yael aharon <yael.aharon@nokia.com> + + Reviewed by Laszlo Gombos. + + [Qt] Windowed netscape plugins don't work with QGraphicsWebView on Symbian + https://bugs.webkit.org/show_bug.cgi?id=35112 + + Add a proxy widget when loading a QWidget based plugin in a QGraphicsWebView. + + * plugins/symbian/PluginContainerSymbian.cpp: + (PluginContainerSymbian::PluginContainerSymbian): + (PluginContainerSymbian::focusInEvent): + * plugins/symbian/PluginContainerSymbian.h: + (WebCore::PluginContainerSymbian::proxy): + * plugins/symbian/PluginViewSymbian.cpp: + (WebCore::PluginView::updatePluginWidget): + (WebCore::PluginView::platformStart): + (WebCore::PluginView::platformDestroy): + +2010-04-06 Simon Hausmann <simon.hausmann@nokia.com> + + Reviewed by Darin Adler. + + JS code generator does not support feature conditional attributes that are writable + https://bugs.webkit.org/show_bug.cgi?id=37149 + + Write out the feature #ifdef not only for the getter, but also for the setter + function. + + * bindings/scripts/CodeGeneratorJS.pm: + +2010-04-06 Abhinav Mithal <abhinav.mithal@nokia.com> + + Reviewed by Laszlo Gombos. + + [Qt] npapi header leaves XP_WIN flag defined even when __SYMBIAN32__ flag is found + https://bugs.webkit.org/show_bug.cgi?id=34614 + + Do not define XP_WIN if WebKit is compiled for Symbian. + + No new tests as there is no new functionality. + + * bridge/npapi.h: + 2010-04-05 Luiz Agostini <luiz.agostini@openbossa.org> Reviewed by Kenneth Rohde Christiansen. diff --git a/src/3rdparty/webkit/WebCore/WebCore.pri b/src/3rdparty/webkit/WebCore/WebCore.pri index be1d56b..039f26c 100644 --- a/src/3rdparty/webkit/WebCore/WebCore.pri +++ b/src/3rdparty/webkit/WebCore/WebCore.pri @@ -698,7 +698,7 @@ addExtraCompiler(colordata) stylesheets.wkScript = $$PWD/css/make-css-file-arrays.pl stylesheets.output = $${WC_GENERATED_SOURCES_DIR}/UserAgentStyleSheetsData.cpp stylesheets.input = stylesheets.wkScript -stylesheets.commands = perl $$stylesheets.wkScript --preprocessor \"$${QMAKE_MOC} -E\" $${WC_GENERATED_SOURCES_DIR}/UserAgentStyleSheets.h ${QMAKE_FILE_OUT} $$STYLESHEETS_EMBED +stylesheets.commands = perl $$stylesheets.wkScript $${WC_GENERATED_SOURCES_DIR}/UserAgentStyleSheets.h ${QMAKE_FILE_OUT} $$STYLESHEETS_EMBED stylesheets.depends = $$STYLESHEETS_EMBED stylesheets.clean = ${QMAKE_FILE_OUT} ${QMAKE_VAR_WC_GENERATED_SOURCES_DIR}/UserAgentStyleSheets.h addExtraCompiler(stylesheets, $${WC_GENERATED_SOURCES_DIR}/UserAgentStyleSheets.h) diff --git a/src/3rdparty/webkit/WebCore/WebCore.pro b/src/3rdparty/webkit/WebCore/WebCore.pro index 714b021..e942167 100644 --- a/src/3rdparty/webkit/WebCore/WebCore.pro +++ b/src/3rdparty/webkit/WebCore/WebCore.pro @@ -99,6 +99,15 @@ win32-msvc2005|win32-msvc2008:{ QMAKE_CXXFLAGS_RELEASE -= -GL } +wince* { +# DEFINES += ENABLE_SVG=0 ENABLE_XPATH=0 ENABLE_XBL=0 \ +# ENABLE_SVG_ANIMATION=0 ENABLE_SVG_USE=0 \ +# ENABLE_SVG_FOREIGN_OBJECT=0 ENABLE_SVG_AS_IMAGE=0 + + INCLUDEPATH += $$PWD/../JavaScriptCore/os-wince + INCLUDEPATH += $$PWD/../JavaScriptCore/os-win32 +} + # Pick up 3rdparty libraries from INCLUDE/LIB just like with MSVC win32-g++ { TMPPATH = $$quote($$(INCLUDE)) @@ -2370,7 +2379,7 @@ contains(DEFINES, ENABLE_VIDEO=1) { HEADERS += platform/graphics/qt/MediaPlayerPrivateQt.h SOURCES += platform/graphics/qt/MediaPlayerPrivateQt.cpp - tobe|!tobe: QT += multimedia + QT += multimedia } else { HEADERS += \ platform/graphics/qt/MediaPlayerPrivatePhonon.h @@ -2745,7 +2754,7 @@ contains(DEFINES, ENABLE_WEB_SOCKETS=1) { } contains(DEFINES, ENABLE_3D_CANVAS=1) { -tobe|!tobe: QT += opengl +QT += opengl HEADERS += \ bindings/js/JSWebGLArrayBufferConstructor.h \ bindings/js/JSWebGLArrayHelper.h \ @@ -2836,7 +2845,7 @@ include($$PWD/../WebKit/qt/Api/headers.pri) HEADERS += $$WEBKIT_API_HEADERS !CONFIG(QTDIR_build) { - exists(../include/QtWebKit/classheaders.pri):include(../include/QtWebKit/classheaders.pri) + exists($$OUTPUT_DIR/include/QtWebKit/classheaders.pri): include($$OUTPUT_DIR/include/QtWebKit/classheaders.pri) WEBKIT_INSTALL_HEADERS = $$WEBKIT_API_HEADERS $$WEBKIT_CLASS_HEADERS !symbian { diff --git a/src/3rdparty/webkit/WebCore/bindings/scripts/CodeGeneratorJS.pm b/src/3rdparty/webkit/WebCore/bindings/scripts/CodeGeneratorJS.pm index 1aed11d..3e9b521 100644 --- a/src/3rdparty/webkit/WebCore/bindings/scripts/CodeGeneratorJS.pm +++ b/src/3rdparty/webkit/WebCore/bindings/scripts/CodeGeneratorJS.pm @@ -1466,6 +1466,12 @@ sub GenerateImplementation my $putFunctionName = "setJS" . $interfaceName . $codeGenerator->WK_ucfirst($name) . ($attribute->signature->type =~ /Constructor$/ ? "Constructor" : ""); my $implSetterFunctionName = $codeGenerator->WK_ucfirst($name); + my $conditional = $attribute->signature->extendedAttributes->{"Conditional"}; + if ($conditional) { + $conditionalString = "ENABLE(" . join(") && ENABLE(", split(/&/, $conditional)) . ")"; + push(@implContent, "#if ${conditionalString}\n"); + } + push(@implContent, "void ${putFunctionName}(ExecState* exec, JSObject* thisObject, JSValue value)\n"); push(@implContent, "{\n"); @@ -1529,7 +1535,13 @@ sub GenerateImplementation } } - push(@implContent, "}\n\n"); + push(@implContent, "}\n"); + + if ($conditional) { + push(@implContent, "#endif\n"); + } + + push(@implContent, "\n"); } } } diff --git a/src/3rdparty/webkit/WebCore/bridge/npapi.h b/src/3rdparty/webkit/WebCore/bridge/npapi.h index c6cd557..4a8492e 100644 --- a/src/3rdparty/webkit/WebCore/bridge/npapi.h +++ b/src/3rdparty/webkit/WebCore/bridge/npapi.h @@ -50,7 +50,7 @@ #define JRIEnv void #endif -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__SYMBIAN32__) # ifndef XP_WIN # define XP_WIN 1 # endif /* XP_WIN */ diff --git a/src/3rdparty/webkit/WebCore/bridge/qt/qt_class.cpp b/src/3rdparty/webkit/WebCore/bridge/qt/qt_class.cpp index 9ecf19f..cfd74d9 100644 --- a/src/3rdparty/webkit/WebCore/bridge/qt/qt_class.cpp +++ b/src/3rdparty/webkit/WebCore/bridge/qt/qt_class.cpp @@ -139,6 +139,7 @@ Field* QtClass::fieldNamed(const Identifier& identifier, Instance* instance) con // other types so we can delete them later if (f->fieldType() == QtField::MetaProperty) return f; +#ifndef QT_NO_PROPERTIES else if (f->fieldType() == QtField::DynamicProperty) { if (obj->dynamicPropertyNames().indexOf(ba) >= 0) return f; @@ -147,7 +148,9 @@ Field* QtClass::fieldNamed(const Identifier& identifier, Instance* instance) con qtinst->m_fields.remove(objName); delete f; } - } else { + } +#endif + else { QList<QObject*> children = obj->children(); for (int index = 0; index < children.count(); ++index) { QObject *child = children.at(index); @@ -172,6 +175,7 @@ Field* QtClass::fieldNamed(const Identifier& identifier, Instance* instance) con } } +#ifndef QT_NO_PROPERTIES // Dynamic properties index = obj->dynamicPropertyNames().indexOf(ba); if (index >= 0) { @@ -179,6 +183,7 @@ Field* QtClass::fieldNamed(const Identifier& identifier, Instance* instance) con qtinst->m_fields.insert(objName, f); return f; } +#endif // Child objects @@ -202,12 +207,14 @@ Field* QtClass::fieldNamed(const Identifier& identifier, Instance* instance) con if (qtinst->m_methods.contains(ba)) return 0; +#ifndef QT_NO_PROPERTIES // deleted qobject, but can't throw an error from here (no exec) // create a fake QtField that will throw upon access if (!f) { f = new QtField(ba); qtinst->m_fields.insert(objName, f); } +#endif return f; } } diff --git a/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.cpp b/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.cpp index 3df6a89..dc6df14 100644 --- a/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.cpp +++ b/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.cpp @@ -220,10 +220,12 @@ void QtInstance::getPropertyNames(ExecState* exec, PropertyNameArray& array) } } +#ifndef QT_NO_PROPERTIES QList<QByteArray> dynProps = obj->dynamicPropertyNames(); foreach(QByteArray ba, dynProps) { array.add(Identifier(exec, ba.constData())); } +#endif for (i=0; i < meta->methodCount(); i++) { QMetaMethod method = meta->method(i); @@ -325,8 +327,10 @@ const char* QtField::name() const return m_property.name(); else if (m_type == ChildObject && m_childObject) return m_childObject->objectName().toLatin1(); +#ifndef QT_NO_PROPERTIES else if (m_type == DynamicProperty) return m_dynamicProperty.constData(); +#endif return ""; // deleted child object } @@ -344,9 +348,10 @@ JSValue QtField::valueFromInstance(ExecState* exec, const Instance* inst) const return jsUndefined(); } else if (m_type == ChildObject) val = QVariant::fromValue((QObject*) m_childObject); +#ifndef QT_NO_PROPERTIES else if (m_type == DynamicProperty) val = obj->property(m_dynamicProperty); - +#endif return convertQVariantToValue(exec, inst->rootObject(), val); } else { QString msg = QString(QLatin1String("cannot access member `%1' of deleted QObject")).arg(QLatin1String(name())); @@ -371,8 +376,11 @@ void QtField::setValueToInstance(ExecState* exec, const Instance* inst, JSValue if (m_type == MetaProperty) { if (m_property.isWritable()) m_property.write(obj, val); - } else if (m_type == DynamicProperty) + } +#ifndef QT_NO_PROPERTIES + else if (m_type == DynamicProperty) obj->setProperty(m_dynamicProperty.constData(), val); +#endif } else { QString msg = QString(QLatin1String("cannot access member `%1' of deleted QObject")).arg(QLatin1String(name())); throwError(exec, GeneralError, msg.toLatin1().constData()); diff --git a/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.h b/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.h index 0e0ee68..0951e5b 100644 --- a/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.h +++ b/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.h @@ -40,7 +40,9 @@ public: typedef enum { MetaProperty, +#ifndef QT_NO_PROPERTIES DynamicProperty, +#endif ChildObject } QtFieldType; @@ -48,9 +50,11 @@ public: : m_type(MetaProperty), m_property(p) {} +#ifndef QT_NO_PROPERTIES QtField(const QByteArray &b) : m_type(DynamicProperty), m_dynamicProperty(b) {} +#endif QtField(QObject *child) : m_type(ChildObject), m_childObject(child) diff --git a/src/3rdparty/webkit/WebCore/css/CSSValueKeywords.in b/src/3rdparty/webkit/WebCore/css/CSSValueKeywords.in index 9d7ed6c..09d969a 100644 --- a/src/3rdparty/webkit/WebCore/css/CSSValueKeywords.in +++ b/src/3rdparty/webkit/WebCore/css/CSSValueKeywords.in @@ -715,4 +715,3 @@ mini floating application fullscreen -#all diff --git a/src/3rdparty/webkit/WebCore/css/MediaQueryEvaluator.cpp b/src/3rdparty/webkit/WebCore/css/MediaQueryEvaluator.cpp index 8eaa1e3..4fda075 100644 --- a/src/3rdparty/webkit/WebCore/css/MediaQueryEvaluator.cpp +++ b/src/3rdparty/webkit/WebCore/css/MediaQueryEvaluator.cpp @@ -501,8 +501,6 @@ static bool view_modeMediaFeatureEval(CSSValue* value, RenderStyle*, Frame* fram if (value) { String mode = static_cast<CSSPrimitiveValue*>(value)->getStringValue(); if (ChromeClient* client = frame->page()->chrome()->client()) { - if (mode == "all") - return true; if (mode == "mini" && client->isDocked()) return true; if (mode == "floating" && client->isFloating()) @@ -514,7 +512,7 @@ static bool view_modeMediaFeatureEval(CSSValue* value, RenderStyle*, Frame* fram return false; } } - return false; + return true; } #endif diff --git a/src/3rdparty/webkit/WebCore/css/make-css-file-arrays.pl b/src/3rdparty/webkit/WebCore/css/make-css-file-arrays.pl index 9ffeaa7..dad530c 100755 --- a/src/3rdparty/webkit/WebCore/css/make-css-file-arrays.pl +++ b/src/3rdparty/webkit/WebCore/css/make-css-file-arrays.pl @@ -23,21 +23,6 @@ use strict; use Getopt::Long; -my $preprocessor; - -GetOptions('preprocessor=s' => \$preprocessor); - -if (!$preprocessor) { - require Config; - my $gccLocation = ""; - if (($Config::Config{'osname'}) =~ /solaris/i) { - $gccLocation = "/usr/sfw/bin/gcc"; - } else { - $gccLocation = "/usr/bin/gcc"; - } - $preprocessor = $gccLocation . " -E -P -x c++"; -} - my $header = $ARGV[0]; shift; @@ -55,7 +40,7 @@ for my $in (@ARGV) { my $name = $1; # Slurp in the CSS file. - open IN, $preprocessor . " " . $in . "|" or die; + open IN, "<", $in or die; my $text; { local $/; $text = <IN>; } close IN; diff --git a/src/3rdparty/webkit/WebCore/dom/Document.idl b/src/3rdparty/webkit/WebCore/dom/Document.idl index 26ed7fd..88bd639 100644 --- a/src/3rdparty/webkit/WebCore/dom/Document.idl +++ b/src/3rdparty/webkit/WebCore/dom/Document.idl @@ -306,12 +306,10 @@ module core { attribute [DontEnum] EventListener onreset; attribute [DontEnum] EventListener onsearch; attribute [DontEnum] EventListener onselectstart; -#if defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS - attribute [DontEnum] EventListener ontouchstart; - attribute [DontEnum] EventListener ontouchmove; - attribute [DontEnum] EventListener ontouchend; - attribute [DontEnum] EventListener ontouchcancel; -#endif + attribute [DontEnum,Conditional=TOUCH_EVENTS] EventListener ontouchstart; + attribute [DontEnum,Conditional=TOUCH_EVENTS] EventListener ontouchmove; + attribute [DontEnum,Conditional=TOUCH_EVENTS] EventListener ontouchend; + attribute [DontEnum,Conditional=TOUCH_EVENTS] EventListener ontouchcancel; #endif }; diff --git a/src/3rdparty/webkit/WebCore/dom/Element.idl b/src/3rdparty/webkit/WebCore/dom/Element.idl index e565bc0..1368503 100644 --- a/src/3rdparty/webkit/WebCore/dom/Element.idl +++ b/src/3rdparty/webkit/WebCore/dom/Element.idl @@ -195,12 +195,10 @@ module core { attribute [DontEnum] EventListener onreset; attribute [DontEnum] EventListener onsearch; attribute [DontEnum] EventListener onselectstart; -#if defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS - attribute [DontEnum] EventListener ontouchstart; - attribute [DontEnum] EventListener ontouchmove; - attribute [DontEnum] EventListener ontouchend; - attribute [DontEnum] EventListener ontouchcancel; -#endif + attribute [DontEnum,Conditional=TOUCH_EVENTS] EventListener ontouchstart; + attribute [DontEnum,Conditional=TOUCH_EVENTS] EventListener ontouchmove; + attribute [DontEnum,Conditional=TOUCH_EVENTS] EventListener ontouchend; + attribute [DontEnum,Conditional=TOUCH_EVENTS] EventListener ontouchcancel; #endif }; diff --git a/src/3rdparty/webkit/WebCore/generated/JSDOMWindow.cpp b/src/3rdparty/webkit/WebCore/generated/JSDOMWindow.cpp index 42b847f..04238bc 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSDOMWindow.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSDOMWindow.cpp @@ -468,10 +468,18 @@ static const HashTableValue JSDOMWindowTableValues[409] = { "onwebkitanimationiteration", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDOMWindowOnwebkitanimationiteration), (intptr_t)setJSDOMWindowOnwebkitanimationiteration }, { "onwebkitanimationstart", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDOMWindowOnwebkitanimationstart), (intptr_t)setJSDOMWindowOnwebkitanimationstart }, { "onwebkittransitionend", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDOMWindowOnwebkittransitionend), (intptr_t)setJSDOMWindowOnwebkittransitionend }, +#if ENABLE(TOUCH_EVENTS) { "ontouchstart", DontDelete|DontEnum, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDOMWindowOntouchstart), (intptr_t)setJSDOMWindowOntouchstart }, +#endif +#if ENABLE(TOUCH_EVENTS) { "ontouchmove", DontDelete|DontEnum, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDOMWindowOntouchmove), (intptr_t)setJSDOMWindowOntouchmove }, +#endif +#if ENABLE(TOUCH_EVENTS) { "ontouchend", DontDelete|DontEnum, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDOMWindowOntouchend), (intptr_t)setJSDOMWindowOntouchend }, +#endif +#if ENABLE(TOUCH_EVENTS) { "ontouchcancel", DontDelete|DontEnum, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDOMWindowOntouchcancel), (intptr_t)setJSDOMWindowOntouchcancel }, +#endif { "StyleSheet", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDOMWindowStyleSheetConstructor), (intptr_t)setJSDOMWindowStyleSheetConstructor }, { "CSSStyleSheet", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDOMWindowCSSStyleSheetConstructor), (intptr_t)setJSDOMWindowCSSStyleSheetConstructor }, { "CSSValue", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDOMWindowCSSValueConstructor), (intptr_t)setJSDOMWindowCSSValueConstructor }, @@ -797,7 +805,9 @@ static const HashTableValue JSDOMWindowTableValues[409] = { "SVGFETileElement", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDOMWindowSVGFETileElementConstructor), (intptr_t)setJSDOMWindowSVGFETileElementConstructor }, { "SVGFETurbulenceElement", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDOMWindowSVGFETurbulenceElementConstructor), (intptr_t)setJSDOMWindowSVGFETurbulenceElementConstructor }, { "SVGFilterElement", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDOMWindowSVGFilterElementConstructor), (intptr_t)setJSDOMWindowSVGFilterElementConstructor }, +#if ENABLE(TOUCH_EVENTS) { "TouchEvent", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDOMWindowTouchEventConstructor), (intptr_t)setJSDOMWindowTouchEventConstructor }, +#endif { "FormData", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDOMWindowFormDataConstructor), (intptr_t)setJSDOMWindowFormDataConstructor }, { 0, 0, 0, 0 } }; @@ -2433,6 +2443,7 @@ JSValue jsDOMWindowOnwebkittransitionend(ExecState* exec, JSValue slotBase, cons return jsNull(); } +#if ENABLE(TOUCH_EVENTS) JSValue jsDOMWindowOntouchstart(ExecState* exec, JSValue slotBase, const Identifier&) { JSDOMWindow* castedThis = static_cast<JSDOMWindow*>(asObject(slotBase)); @@ -2448,7 +2459,9 @@ JSValue jsDOMWindowOntouchstart(ExecState* exec, JSValue slotBase, const Identif } return jsNull(); } +#endif +#if ENABLE(TOUCH_EVENTS) JSValue jsDOMWindowOntouchmove(ExecState* exec, JSValue slotBase, const Identifier&) { JSDOMWindow* castedThis = static_cast<JSDOMWindow*>(asObject(slotBase)); @@ -2464,7 +2477,9 @@ JSValue jsDOMWindowOntouchmove(ExecState* exec, JSValue slotBase, const Identifi } return jsNull(); } +#endif +#if ENABLE(TOUCH_EVENTS) JSValue jsDOMWindowOntouchend(ExecState* exec, JSValue slotBase, const Identifier&) { JSDOMWindow* castedThis = static_cast<JSDOMWindow*>(asObject(slotBase)); @@ -2480,7 +2495,9 @@ JSValue jsDOMWindowOntouchend(ExecState* exec, JSValue slotBase, const Identifie } return jsNull(); } +#endif +#if ENABLE(TOUCH_EVENTS) JSValue jsDOMWindowOntouchcancel(ExecState* exec, JSValue slotBase, const Identifier&) { JSDOMWindow* castedThis = static_cast<JSDOMWindow*>(asObject(slotBase)); @@ -2496,6 +2513,7 @@ JSValue jsDOMWindowOntouchcancel(ExecState* exec, JSValue slotBase, const Identi } return jsNull(); } +#endif JSValue jsDOMWindowStyleSheetConstructor(ExecState* exec, JSValue slotBase, const Identifier&) { @@ -4845,6 +4863,7 @@ JSValue jsDOMWindowSVGFilterElementConstructor(ExecState* exec, JSValue slotBase return JSSVGFilterElement::getConstructor(exec, castedThis); } +#if ENABLE(TOUCH_EVENTS) JSValue jsDOMWindowTouchEventConstructor(ExecState* exec, JSValue slotBase, const Identifier&) { JSDOMWindow* castedThis = static_cast<JSDOMWindow*>(asObject(slotBase)); @@ -4852,6 +4871,7 @@ JSValue jsDOMWindowTouchEventConstructor(ExecState* exec, JSValue slotBase, cons return jsUndefined(); return JSTouchEvent::getConstructor(exec, castedThis); } +#endif JSValue jsDOMWindowFormDataConstructor(ExecState* exec, JSValue slotBase, const Identifier&) { @@ -5729,6 +5749,7 @@ void setJSDOMWindowOnwebkittransitionend(ExecState* exec, JSObject* thisObject, imp->setOnwebkittransitionend(createJSAttributeEventListener(exec, value, thisObject)); } +#if ENABLE(TOUCH_EVENTS) void setJSDOMWindowOntouchstart(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -5737,7 +5758,9 @@ void setJSDOMWindowOntouchstart(ExecState* exec, JSObject* thisObject, JSValue v DOMWindow* imp = static_cast<DOMWindow*>(static_cast<JSDOMWindow*>(thisObject)->impl()); imp->setOntouchstart(createJSAttributeEventListener(exec, value, thisObject)); } +#endif +#if ENABLE(TOUCH_EVENTS) void setJSDOMWindowOntouchmove(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -5746,7 +5769,9 @@ void setJSDOMWindowOntouchmove(ExecState* exec, JSObject* thisObject, JSValue va DOMWindow* imp = static_cast<DOMWindow*>(static_cast<JSDOMWindow*>(thisObject)->impl()); imp->setOntouchmove(createJSAttributeEventListener(exec, value, thisObject)); } +#endif +#if ENABLE(TOUCH_EVENTS) void setJSDOMWindowOntouchend(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -5755,7 +5780,9 @@ void setJSDOMWindowOntouchend(ExecState* exec, JSObject* thisObject, JSValue val DOMWindow* imp = static_cast<DOMWindow*>(static_cast<JSDOMWindow*>(thisObject)->impl()); imp->setOntouchend(createJSAttributeEventListener(exec, value, thisObject)); } +#endif +#if ENABLE(TOUCH_EVENTS) void setJSDOMWindowOntouchcancel(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -5764,6 +5791,7 @@ void setJSDOMWindowOntouchcancel(ExecState* exec, JSObject* thisObject, JSValue DOMWindow* imp = static_cast<DOMWindow*>(static_cast<JSDOMWindow*>(thisObject)->impl()); imp->setOntouchcancel(createJSAttributeEventListener(exec, value, thisObject)); } +#endif void setJSDOMWindowStyleSheetConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { @@ -6181,6 +6209,7 @@ void setJSDOMWindowHTMLCanvasElementConstructor(ExecState* exec, JSObject* thisO static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "HTMLCanvasElement"), value); } +#if ENABLE(DATAGRID) void setJSDOMWindowHTMLDataGridElementConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -6188,7 +6217,9 @@ void setJSDOMWindowHTMLDataGridElementConstructor(ExecState* exec, JSObject* thi // Shadowing a built-in constructor static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "HTMLDataGridElement"), value); } +#endif +#if ENABLE(DATAGRID) void setJSDOMWindowHTMLDataGridCellElementConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -6196,7 +6227,9 @@ void setJSDOMWindowHTMLDataGridCellElementConstructor(ExecState* exec, JSObject* // Shadowing a built-in constructor static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "HTMLDataGridCellElement"), value); } +#endif +#if ENABLE(DATAGRID) void setJSDOMWindowHTMLDataGridColElementConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -6204,6 +6237,7 @@ void setJSDOMWindowHTMLDataGridColElementConstructor(ExecState* exec, JSObject* // Shadowing a built-in constructor static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "HTMLDataGridColElement"), value); } +#endif void setJSDOMWindowHTMLDListElementConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { @@ -6621,6 +6655,7 @@ void setJSDOMWindowImageDataConstructor(ExecState* exec, JSObject* thisObject, J static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "ImageData"), value); } +#if ENABLE(3D_CANVAS) void setJSDOMWindowWebGLRenderingContextConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -6628,6 +6663,7 @@ void setJSDOMWindowWebGLRenderingContextConstructor(ExecState* exec, JSObject* t // Shadowing a built-in constructor static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "WebGLRenderingContext"), value); } +#endif void setJSDOMWindowTextMetricsConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { @@ -6637,6 +6673,7 @@ void setJSDOMWindowTextMetricsConstructor(ExecState* exec, JSObject* thisObject, static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "TextMetrics"), value); } +#if ENABLE(3D_CANVAS) void setJSDOMWindowWebGLArrayBufferConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -6644,7 +6681,9 @@ void setJSDOMWindowWebGLArrayBufferConstructor(ExecState* exec, JSObject* thisOb // Shadowing a built-in constructor static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "WebGLArrayBuffer"), value); } +#endif +#if ENABLE(3D_CANVAS) void setJSDOMWindowWebGLByteArrayConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -6652,7 +6691,9 @@ void setJSDOMWindowWebGLByteArrayConstructor(ExecState* exec, JSObject* thisObje // Shadowing a built-in constructor static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "WebGLByteArray"), value); } +#endif +#if ENABLE(3D_CANVAS) void setJSDOMWindowWebGLUnsignedByteArrayConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -6660,7 +6701,9 @@ void setJSDOMWindowWebGLUnsignedByteArrayConstructor(ExecState* exec, JSObject* // Shadowing a built-in constructor static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "WebGLUnsignedByteArray"), value); } +#endif +#if ENABLE(3D_CANVAS) void setJSDOMWindowWebGLShortArrayConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -6668,7 +6711,9 @@ void setJSDOMWindowWebGLShortArrayConstructor(ExecState* exec, JSObject* thisObj // Shadowing a built-in constructor static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "WebGLShortArray"), value); } +#endif +#if ENABLE(3D_CANVAS) void setJSDOMWindowWebGLUnsignedShortArrayConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -6676,7 +6721,9 @@ void setJSDOMWindowWebGLUnsignedShortArrayConstructor(ExecState* exec, JSObject* // Shadowing a built-in constructor static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "WebGLUnsignedShortArray"), value); } +#endif +#if ENABLE(3D_CANVAS) void setJSDOMWindowWebGLIntArrayConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -6684,7 +6731,9 @@ void setJSDOMWindowWebGLIntArrayConstructor(ExecState* exec, JSObject* thisObjec // Shadowing a built-in constructor static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "WebGLIntArray"), value); } +#endif +#if ENABLE(3D_CANVAS) void setJSDOMWindowWebGLUnsignedIntArrayConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -6692,7 +6741,9 @@ void setJSDOMWindowWebGLUnsignedIntArrayConstructor(ExecState* exec, JSObject* t // Shadowing a built-in constructor static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "WebGLUnsignedIntArray"), value); } +#endif +#if ENABLE(3D_CANVAS) void setJSDOMWindowWebGLFloatArrayConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -6700,6 +6751,7 @@ void setJSDOMWindowWebGLFloatArrayConstructor(ExecState* exec, JSObject* thisObj // Shadowing a built-in constructor static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "WebGLFloatArray"), value); } +#endif void setJSDOMWindowEventConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { @@ -6965,6 +7017,7 @@ void setJSDOMWindowXMLHttpRequestExceptionConstructor(ExecState* exec, JSObject* static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "XMLHttpRequestException"), value); } +#if ENABLE(XSLT) void setJSDOMWindowXSLTProcessorConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -6972,6 +7025,7 @@ void setJSDOMWindowXSLTProcessorConstructor(ExecState* exec, JSObject* thisObjec // Shadowing a built-in constructor static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "XSLTProcessor"), value); } +#endif void setJSDOMWindowMessagePortConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { @@ -7077,6 +7131,7 @@ void setJSDOMWindowStorageEventConstructor(ExecState* exec, JSObject* thisObject static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "StorageEvent"), value); } +#if ENABLE(VIDEO) void setJSDOMWindowAudioConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -7084,7 +7139,9 @@ void setJSDOMWindowAudioConstructor(ExecState* exec, JSObject* thisObject, JSVal // Shadowing a built-in constructor static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "Audio"), value); } +#endif +#if ENABLE(VIDEO) void setJSDOMWindowHTMLAudioElementConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -7092,7 +7149,9 @@ void setJSDOMWindowHTMLAudioElementConstructor(ExecState* exec, JSObject* thisOb // Shadowing a built-in constructor static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "HTMLAudioElement"), value); } +#endif +#if ENABLE(VIDEO) void setJSDOMWindowHTMLMediaElementConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -7100,7 +7159,9 @@ void setJSDOMWindowHTMLMediaElementConstructor(ExecState* exec, JSObject* thisOb // Shadowing a built-in constructor static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "HTMLMediaElement"), value); } +#endif +#if ENABLE(VIDEO) void setJSDOMWindowHTMLVideoElementConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -7108,7 +7169,9 @@ void setJSDOMWindowHTMLVideoElementConstructor(ExecState* exec, JSObject* thisOb // Shadowing a built-in constructor static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "HTMLVideoElement"), value); } +#endif +#if ENABLE(VIDEO) void setJSDOMWindowMediaErrorConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -7116,6 +7179,7 @@ void setJSDOMWindowMediaErrorConstructor(ExecState* exec, JSObject* thisObject, // Shadowing a built-in constructor static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "MediaError"), value); } +#endif void setJSDOMWindowXPathEvaluatorConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { @@ -8077,6 +8141,7 @@ void setJSDOMWindowSVGFilterElementConstructor(ExecState* exec, JSObject* thisOb static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "SVGFilterElement"), value); } +#if ENABLE(TOUCH_EVENTS) void setJSDOMWindowTouchEventConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec)) @@ -8084,6 +8149,7 @@ void setJSDOMWindowTouchEventConstructor(ExecState* exec, JSObject* thisObject, // Shadowing a built-in constructor static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "TouchEvent"), value); } +#endif void setJSDOMWindowFormDataConstructor(ExecState* exec, JSObject* thisObject, JSValue value) { diff --git a/src/3rdparty/webkit/WebCore/generated/JSDocument.cpp b/src/3rdparty/webkit/WebCore/generated/JSDocument.cpp index 055cc4d..a1821a2 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSDocument.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSDocument.cpp @@ -167,10 +167,18 @@ static const HashTableValue JSDocumentTableValues[75] = { "onreset", DontDelete|DontEnum, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDocumentOnreset), (intptr_t)setJSDocumentOnreset }, { "onsearch", DontDelete|DontEnum, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDocumentOnsearch), (intptr_t)setJSDocumentOnsearch }, { "onselectstart", DontDelete|DontEnum, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDocumentOnselectstart), (intptr_t)setJSDocumentOnselectstart }, +#if ENABLE(TOUCH_EVENTS) { "ontouchstart", DontDelete|DontEnum, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDocumentOntouchstart), (intptr_t)setJSDocumentOntouchstart }, +#endif +#if ENABLE(TOUCH_EVENTS) { "ontouchmove", DontDelete|DontEnum, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDocumentOntouchmove), (intptr_t)setJSDocumentOntouchmove }, +#endif +#if ENABLE(TOUCH_EVENTS) { "ontouchend", DontDelete|DontEnum, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDocumentOntouchend), (intptr_t)setJSDocumentOntouchend }, +#endif +#if ENABLE(TOUCH_EVENTS) { "ontouchcancel", DontDelete|DontEnum, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDocumentOntouchcancel), (intptr_t)setJSDocumentOntouchcancel }, +#endif { "constructor", DontEnum|ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsDocumentConstructor), (intptr_t)0 }, { 0, 0, 0, 0 } }; @@ -1123,6 +1131,7 @@ JSValue jsDocumentOnselectstart(ExecState* exec, JSValue slotBase, const Identif return jsNull(); } +#if ENABLE(TOUCH_EVENTS) JSValue jsDocumentOntouchstart(ExecState* exec, JSValue slotBase, const Identifier&) { JSDocument* castedThis = static_cast<JSDocument*>(asObject(slotBase)); @@ -1136,7 +1145,9 @@ JSValue jsDocumentOntouchstart(ExecState* exec, JSValue slotBase, const Identifi } return jsNull(); } +#endif +#if ENABLE(TOUCH_EVENTS) JSValue jsDocumentOntouchmove(ExecState* exec, JSValue slotBase, const Identifier&) { JSDocument* castedThis = static_cast<JSDocument*>(asObject(slotBase)); @@ -1150,7 +1161,9 @@ JSValue jsDocumentOntouchmove(ExecState* exec, JSValue slotBase, const Identifie } return jsNull(); } +#endif +#if ENABLE(TOUCH_EVENTS) JSValue jsDocumentOntouchend(ExecState* exec, JSValue slotBase, const Identifier&) { JSDocument* castedThis = static_cast<JSDocument*>(asObject(slotBase)); @@ -1164,7 +1177,9 @@ JSValue jsDocumentOntouchend(ExecState* exec, JSValue slotBase, const Identifier } return jsNull(); } +#endif +#if ENABLE(TOUCH_EVENTS) JSValue jsDocumentOntouchcancel(ExecState* exec, JSValue slotBase, const Identifier&) { JSDocument* castedThis = static_cast<JSDocument*>(asObject(slotBase)); @@ -1178,6 +1193,7 @@ JSValue jsDocumentOntouchcancel(ExecState* exec, JSValue slotBase, const Identif } return jsNull(); } +#endif JSValue jsDocumentConstructor(ExecState* exec, JSValue slotBase, const Identifier&) { @@ -1540,33 +1556,41 @@ void setJSDocumentOnselectstart(ExecState* exec, JSObject* thisObject, JSValue v imp->setOnselectstart(createJSAttributeEventListener(exec, value, thisObject)); } +#if ENABLE(TOUCH_EVENTS) void setJSDocumentOntouchstart(ExecState* exec, JSObject* thisObject, JSValue value) { UNUSED_PARAM(exec); Document* imp = static_cast<Document*>(static_cast<JSDocument*>(thisObject)->impl()); imp->setOntouchstart(createJSAttributeEventListener(exec, value, thisObject)); } +#endif +#if ENABLE(TOUCH_EVENTS) void setJSDocumentOntouchmove(ExecState* exec, JSObject* thisObject, JSValue value) { UNUSED_PARAM(exec); Document* imp = static_cast<Document*>(static_cast<JSDocument*>(thisObject)->impl()); imp->setOntouchmove(createJSAttributeEventListener(exec, value, thisObject)); } +#endif +#if ENABLE(TOUCH_EVENTS) void setJSDocumentOntouchend(ExecState* exec, JSObject* thisObject, JSValue value) { UNUSED_PARAM(exec); Document* imp = static_cast<Document*>(static_cast<JSDocument*>(thisObject)->impl()); imp->setOntouchend(createJSAttributeEventListener(exec, value, thisObject)); } +#endif +#if ENABLE(TOUCH_EVENTS) void setJSDocumentOntouchcancel(ExecState* exec, JSObject* thisObject, JSValue value) { UNUSED_PARAM(exec); Document* imp = static_cast<Document*>(static_cast<JSDocument*>(thisObject)->impl()); imp->setOntouchcancel(createJSAttributeEventListener(exec, value, thisObject)); } +#endif JSValue JSDocument::getConstructor(ExecState* exec, JSGlobalObject* globalObject) { diff --git a/src/3rdparty/webkit/WebCore/generated/JSElement.cpp b/src/3rdparty/webkit/WebCore/generated/JSElement.cpp index f62a0f3..cea426f 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSElement.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSElement.cpp @@ -112,10 +112,18 @@ static const HashTableValue JSElementTableValues[65] = { "onreset", DontDelete|DontEnum, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsElementOnreset), (intptr_t)setJSElementOnreset }, { "onsearch", DontDelete|DontEnum, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsElementOnsearch), (intptr_t)setJSElementOnsearch }, { "onselectstart", DontDelete|DontEnum, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsElementOnselectstart), (intptr_t)setJSElementOnselectstart }, +#if ENABLE(TOUCH_EVENTS) { "ontouchstart", DontDelete|DontEnum, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsElementOntouchstart), (intptr_t)setJSElementOntouchstart }, +#endif +#if ENABLE(TOUCH_EVENTS) { "ontouchmove", DontDelete|DontEnum, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsElementOntouchmove), (intptr_t)setJSElementOntouchmove }, +#endif +#if ENABLE(TOUCH_EVENTS) { "ontouchend", DontDelete|DontEnum, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsElementOntouchend), (intptr_t)setJSElementOntouchend }, +#endif +#if ENABLE(TOUCH_EVENTS) { "ontouchcancel", DontDelete|DontEnum, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsElementOntouchcancel), (intptr_t)setJSElementOntouchcancel }, +#endif { "constructor", DontEnum|ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsElementConstructor), (intptr_t)0 }, { 0, 0, 0, 0 } }; @@ -971,6 +979,7 @@ JSValue jsElementOnselectstart(ExecState* exec, JSValue slotBase, const Identifi return jsNull(); } +#if ENABLE(TOUCH_EVENTS) JSValue jsElementOntouchstart(ExecState* exec, JSValue slotBase, const Identifier&) { JSElement* castedThis = static_cast<JSElement*>(asObject(slotBase)); @@ -984,7 +993,9 @@ JSValue jsElementOntouchstart(ExecState* exec, JSValue slotBase, const Identifie } return jsNull(); } +#endif +#if ENABLE(TOUCH_EVENTS) JSValue jsElementOntouchmove(ExecState* exec, JSValue slotBase, const Identifier&) { JSElement* castedThis = static_cast<JSElement*>(asObject(slotBase)); @@ -998,7 +1009,9 @@ JSValue jsElementOntouchmove(ExecState* exec, JSValue slotBase, const Identifier } return jsNull(); } +#endif +#if ENABLE(TOUCH_EVENTS) JSValue jsElementOntouchend(ExecState* exec, JSValue slotBase, const Identifier&) { JSElement* castedThis = static_cast<JSElement*>(asObject(slotBase)); @@ -1012,7 +1025,9 @@ JSValue jsElementOntouchend(ExecState* exec, JSValue slotBase, const Identifier& } return jsNull(); } +#endif +#if ENABLE(TOUCH_EVENTS) JSValue jsElementOntouchcancel(ExecState* exec, JSValue slotBase, const Identifier&) { JSElement* castedThis = static_cast<JSElement*>(asObject(slotBase)); @@ -1026,6 +1041,7 @@ JSValue jsElementOntouchcancel(ExecState* exec, JSValue slotBase, const Identifi } return jsNull(); } +#endif JSValue jsElementConstructor(ExecState* exec, JSValue slotBase, const Identifier&) { @@ -1324,33 +1340,41 @@ void setJSElementOnselectstart(ExecState* exec, JSObject* thisObject, JSValue va imp->setOnselectstart(createJSAttributeEventListener(exec, value, thisObject)); } +#if ENABLE(TOUCH_EVENTS) void setJSElementOntouchstart(ExecState* exec, JSObject* thisObject, JSValue value) { UNUSED_PARAM(exec); Element* imp = static_cast<Element*>(static_cast<JSElement*>(thisObject)->impl()); imp->setOntouchstart(createJSAttributeEventListener(exec, value, thisObject)); } +#endif +#if ENABLE(TOUCH_EVENTS) void setJSElementOntouchmove(ExecState* exec, JSObject* thisObject, JSValue value) { UNUSED_PARAM(exec); Element* imp = static_cast<Element*>(static_cast<JSElement*>(thisObject)->impl()); imp->setOntouchmove(createJSAttributeEventListener(exec, value, thisObject)); } +#endif +#if ENABLE(TOUCH_EVENTS) void setJSElementOntouchend(ExecState* exec, JSObject* thisObject, JSValue value) { UNUSED_PARAM(exec); Element* imp = static_cast<Element*>(static_cast<JSElement*>(thisObject)->impl()); imp->setOntouchend(createJSAttributeEventListener(exec, value, thisObject)); } +#endif +#if ENABLE(TOUCH_EVENTS) void setJSElementOntouchcancel(ExecState* exec, JSObject* thisObject, JSValue value) { UNUSED_PARAM(exec); Element* imp = static_cast<Element*>(static_cast<JSElement*>(thisObject)->impl()); imp->setOntouchcancel(createJSAttributeEventListener(exec, value, thisObject)); } +#endif JSValue JSElement::getConstructor(ExecState* exec, JSGlobalObject* globalObject) { diff --git a/src/3rdparty/webkit/WebCore/generated/UserAgentStyleSheets.h b/src/3rdparty/webkit/WebCore/generated/UserAgentStyleSheets.h index 58403d3..3d1f3f6 100644 --- a/src/3rdparty/webkit/WebCore/generated/UserAgentStyleSheets.h +++ b/src/3rdparty/webkit/WebCore/generated/UserAgentStyleSheets.h @@ -1,9 +1,9 @@ namespace WebCore { -extern const char htmlUserAgentStyleSheet[9303]; +extern const char htmlUserAgentStyleSheet[9324]; extern const char quirksUserAgentStyleSheet[359]; -extern const char svgUserAgentStyleSheet[350]; -extern const char sourceUserAgentStyleSheet[2016]; -extern const char wmlUserAgentStyleSheet[3039]; +extern const char svgUserAgentStyleSheet[351]; +extern const char sourceUserAgentStyleSheet[2022]; +extern const char wmlUserAgentStyleSheet[3060]; extern const char mediaControlsUserAgentStyleSheet[2813]; extern const char mediaControlsQtUserAgentStyleSheet[2653]; extern const char themeQtNoListboxesUserAgentStyleSheet[180]; diff --git a/src/3rdparty/webkit/WebCore/generated/UserAgentStyleSheetsData.cpp b/src/3rdparty/webkit/WebCore/generated/UserAgentStyleSheetsData.cpp index 0220fb7..75e549c 100644 --- a/src/3rdparty/webkit/WebCore/generated/UserAgentStyleSheetsData.cpp +++ b/src/3rdparty/webkit/WebCore/generated/UserAgentStyleSheetsData.cpp @@ -1,587 +1,588 @@ namespace WebCore { -extern const char htmlUserAgentStyleSheet[9303] = { - 110, 97, 109, 101, 115, 112, 97, 99, 101, 32, 34, 104, 116, 116, 112, 58, - 47, 47, 119, 119, 119, 46, 119, 51, 46, 111, 114, 103, 47, 49, 57, 57, - 57, 47, 120, 104, 116, 109, 108, 34, 59, 32, 104, 116, 109, 108, 32, 123, - 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, - 125, 32, 104, 101, 97, 100, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, - 58, 32, 110, 111, 110, 101, 32, 125, 32, 109, 101, 116, 97, 32, 123, 32, +extern const char htmlUserAgentStyleSheet[9324] = { + 64, 110, 97, 109, 101, 115, 112, 97, 99, 101, 32, 34, 104, 116, 116, 112, + 58, 47, 47, 119, 119, 119, 46, 119, 51, 46, 111, 114, 103, 47, 49, 57, + 57, 57, 47, 120, 104, 116, 109, 108, 34, 59, 32, 104, 116, 109, 108, 32, + 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, + 32, 125, 32, 104, 101, 97, 100, 32, 123, 32, 100, 105, 115, 112, 108, 97, + 121, 58, 32, 110, 111, 110, 101, 32, 125, 32, 109, 101, 116, 97, 32, 123, + 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, 125, + 32, 116, 105, 116, 108, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, + 58, 32, 110, 111, 110, 101, 32, 125, 32, 108, 105, 110, 107, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, 125, 32, - 116, 105, 116, 108, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, - 32, 110, 111, 110, 101, 32, 125, 32, 108, 105, 110, 107, 32, 123, 32, 100, - 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, 125, 32, 115, - 116, 121, 108, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, - 110, 111, 110, 101, 32, 125, 32, 115, 99, 114, 105, 112, 116, 32, 123, 32, - 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, 125, 32, - 98, 111, 100, 121, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, - 98, 108, 111, 99, 107, 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, 56, - 112, 120, 32, 125, 32, 112, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, - 58, 32, 98, 108, 111, 99, 107, 59, 32, 109, 97, 114, 103, 105, 110, 58, - 32, 49, 46, 48, 95, 95, 113, 101, 109, 32, 48, 112, 120, 32, 125, 32, - 100, 105, 118, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, - 108, 111, 99, 107, 32, 125, 32, 108, 97, 121, 101, 114, 32, 123, 32, 100, - 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, - 97, 114, 116, 105, 99, 108, 101, 44, 32, 97, 115, 105, 100, 101, 44, 32, - 102, 111, 111, 116, 101, 114, 44, 32, 104, 101, 97, 100, 101, 114, 44, 32, - 104, 103, 114, 111, 117, 112, 44, 32, 110, 97, 118, 44, 32, 115, 101, 99, - 116, 105, 111, 110, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, - 98, 108, 111, 99, 107, 32, 125, 32, 109, 97, 114, 113, 117, 101, 101, 32, - 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, - 101, 45, 98, 108, 111, 99, 107, 59, 32, 111, 118, 101, 114, 102, 108, 111, - 119, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 113, 117, - 101, 101, 32, 125, 32, 97, 100, 100, 114, 101, 115, 115, 32, 123, 32, 100, - 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, - 98, 108, 111, 99, 107, 113, 117, 111, 116, 101, 32, 123, 32, 100, 105, 115, - 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 109, 97, 114, - 103, 105, 110, 58, 32, 49, 95, 95, 113, 101, 109, 32, 52, 48, 112, 120, - 32, 49, 101, 109, 32, 52, 48, 112, 120, 32, 125, 32, 113, 32, 123, 32, - 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 32, - 125, 32, 113, 58, 98, 101, 102, 111, 114, 101, 32, 123, 32, 99, 111, 110, - 116, 101, 110, 116, 58, 32, 39, 34, 39, 32, 125, 32, 113, 58, 97, 102, - 116, 101, 114, 32, 123, 32, 99, 111, 110, 116, 101, 110, 116, 58, 32, 39, - 34, 39, 32, 125, 32, 99, 101, 110, 116, 101, 114, 32, 123, 32, 100, 105, - 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 116, 101, - 120, 116, 45, 97, 108, 105, 103, 110, 58, 32, 45, 119, 101, 98, 107, 105, - 116, 45, 99, 101, 110, 116, 101, 114, 32, 125, 32, 104, 114, 32, 123, 32, - 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, - 109, 97, 114, 103, 105, 110, 58, 32, 48, 46, 53, 101, 109, 32, 97, 117, - 116, 111, 59, 32, 98, 111, 114, 100, 101, 114, 45, 115, 116, 121, 108, 101, - 58, 32, 105, 110, 115, 101, 116, 59, 32, 98, 111, 114, 100, 101, 114, 45, - 119, 105, 100, 116, 104, 58, 32, 49, 112, 120, 32, 125, 32, 109, 97, 112, - 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, - 110, 101, 32, 125, 32, 104, 49, 32, 123, 32, 100, 105, 115, 112, 108, 97, - 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 102, 111, 110, 116, 45, 115, - 105, 122, 101, 58, 32, 50, 101, 109, 59, 32, 109, 97, 114, 103, 105, 110, - 58, 32, 46, 54, 55, 95, 95, 113, 101, 109, 32, 48, 32, 46, 54, 55, - 101, 109, 32, 48, 59, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, - 116, 58, 32, 98, 111, 108, 100, 32, 125, 32, 104, 50, 32, 123, 32, 100, - 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 102, - 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 49, 46, 53, 101, 109, 59, - 32, 109, 97, 114, 103, 105, 110, 58, 32, 46, 56, 51, 95, 95, 113, 101, - 109, 32, 48, 32, 46, 56, 51, 101, 109, 32, 48, 59, 32, 102, 111, 110, - 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 32, 125, - 32, 104, 51, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, - 108, 111, 99, 107, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, - 32, 49, 46, 49, 55, 101, 109, 59, 32, 109, 97, 114, 103, 105, 110, 58, - 32, 49, 95, 95, 113, 101, 109, 32, 48, 32, 49, 101, 109, 32, 48, 59, - 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, - 108, 100, 32, 125, 32, 104, 52, 32, 123, 32, 100, 105, 115, 112, 108, 97, + 115, 116, 121, 108, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, + 32, 110, 111, 110, 101, 32, 125, 32, 115, 99, 114, 105, 112, 116, 32, 123, + 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, 125, + 32, 98, 111, 100, 121, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, + 32, 98, 108, 111, 99, 107, 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, + 56, 112, 120, 32, 125, 32, 112, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 109, 97, 114, 103, 105, 110, - 58, 32, 49, 46, 51, 51, 95, 95, 113, 101, 109, 32, 48, 32, 49, 46, - 51, 51, 101, 109, 32, 48, 59, 32, 102, 111, 110, 116, 45, 119, 101, 105, - 103, 104, 116, 58, 32, 98, 111, 108, 100, 32, 125, 32, 104, 53, 32, 123, + 58, 32, 49, 46, 48, 95, 95, 113, 101, 109, 32, 48, 112, 120, 32, 125, + 32, 100, 105, 118, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, + 98, 108, 111, 99, 107, 32, 125, 32, 108, 97, 121, 101, 114, 32, 123, 32, + 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, + 32, 97, 114, 116, 105, 99, 108, 101, 44, 32, 97, 115, 105, 100, 101, 44, + 32, 102, 111, 111, 116, 101, 114, 44, 32, 104, 101, 97, 100, 101, 114, 44, + 32, 104, 103, 114, 111, 117, 112, 44, 32, 110, 97, 118, 44, 32, 115, 101, + 99, 116, 105, 111, 110, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, + 32, 98, 108, 111, 99, 107, 32, 125, 32, 109, 97, 114, 113, 117, 101, 101, + 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, + 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 111, 118, 101, 114, 102, 108, + 111, 119, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 113, + 117, 101, 101, 32, 125, 32, 97, 100, 100, 114, 101, 115, 115, 32, 123, 32, + 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, + 32, 98, 108, 111, 99, 107, 113, 117, 111, 116, 101, 32, 123, 32, 100, 105, + 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 109, 97, + 114, 103, 105, 110, 58, 32, 49, 95, 95, 113, 101, 109, 32, 52, 48, 112, + 120, 32, 49, 101, 109, 32, 52, 48, 112, 120, 32, 125, 32, 113, 32, 123, + 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, + 32, 125, 32, 113, 58, 98, 101, 102, 111, 114, 101, 32, 123, 32, 99, 111, + 110, 116, 101, 110, 116, 58, 32, 39, 34, 39, 32, 125, 32, 113, 58, 97, + 102, 116, 101, 114, 32, 123, 32, 99, 111, 110, 116, 101, 110, 116, 58, 32, + 39, 34, 39, 32, 125, 32, 99, 101, 110, 116, 101, 114, 32, 123, 32, 100, + 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 116, + 101, 120, 116, 45, 97, 108, 105, 103, 110, 58, 32, 45, 119, 101, 98, 107, + 105, 116, 45, 99, 101, 110, 116, 101, 114, 32, 125, 32, 104, 114, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, - 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 46, 56, 51, 101, - 109, 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, 49, 46, 54, 55, 95, - 95, 113, 101, 109, 32, 48, 32, 49, 46, 54, 55, 101, 109, 32, 48, 59, - 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, - 108, 100, 32, 125, 32, 104, 54, 32, 123, 32, 100, 105, 115, 112, 108, 97, - 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 102, 111, 110, 116, 45, 115, - 105, 122, 101, 58, 32, 46, 54, 55, 101, 109, 59, 32, 109, 97, 114, 103, - 105, 110, 58, 32, 50, 46, 51, 51, 95, 95, 113, 101, 109, 32, 48, 32, - 50, 46, 51, 51, 101, 109, 32, 48, 59, 32, 102, 111, 110, 116, 45, 119, - 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 32, 125, 32, 116, 97, - 98, 108, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, - 97, 98, 108, 101, 59, 32, 98, 111, 114, 100, 101, 114, 45, 99, 111, 108, - 108, 97, 112, 115, 101, 58, 32, 115, 101, 112, 97, 114, 97, 116, 101, 59, - 32, 98, 111, 114, 100, 101, 114, 45, 115, 112, 97, 99, 105, 110, 103, 58, - 32, 50, 112, 120, 59, 32, 98, 111, 114, 100, 101, 114, 45, 99, 111, 108, - 111, 114, 58, 32, 103, 114, 97, 121, 32, 125, 32, 116, 104, 101, 97, 100, - 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, 98, 108, - 101, 45, 104, 101, 97, 100, 101, 114, 45, 103, 114, 111, 117, 112, 59, 32, - 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, - 109, 105, 100, 100, 108, 101, 59, 32, 98, 111, 114, 100, 101, 114, 45, 99, + 32, 109, 97, 114, 103, 105, 110, 58, 32, 48, 46, 53, 101, 109, 32, 97, + 117, 116, 111, 59, 32, 98, 111, 114, 100, 101, 114, 45, 115, 116, 121, 108, + 101, 58, 32, 105, 110, 115, 101, 116, 59, 32, 98, 111, 114, 100, 101, 114, + 45, 119, 105, 100, 116, 104, 58, 32, 49, 112, 120, 32, 125, 32, 109, 97, + 112, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, + 105, 110, 101, 32, 125, 32, 104, 49, 32, 123, 32, 100, 105, 115, 112, 108, + 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 102, 111, 110, 116, 45, + 115, 105, 122, 101, 58, 32, 50, 101, 109, 59, 32, 109, 97, 114, 103, 105, + 110, 58, 32, 46, 54, 55, 95, 95, 113, 101, 109, 32, 48, 32, 46, 54, + 55, 101, 109, 32, 48, 59, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, + 104, 116, 58, 32, 98, 111, 108, 100, 32, 125, 32, 104, 50, 32, 123, 32, + 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, + 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 49, 46, 53, 101, 109, + 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, 46, 56, 51, 95, 95, 113, + 101, 109, 32, 48, 32, 46, 56, 51, 101, 109, 32, 48, 59, 32, 102, 111, + 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 32, + 125, 32, 104, 51, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, + 98, 108, 111, 99, 107, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, + 58, 32, 49, 46, 49, 55, 101, 109, 59, 32, 109, 97, 114, 103, 105, 110, + 58, 32, 49, 95, 95, 113, 101, 109, 32, 48, 32, 49, 101, 109, 32, 48, + 59, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, + 111, 108, 100, 32, 125, 32, 104, 52, 32, 123, 32, 100, 105, 115, 112, 108, + 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 109, 97, 114, 103, 105, + 110, 58, 32, 49, 46, 51, 51, 95, 95, 113, 101, 109, 32, 48, 32, 49, + 46, 51, 51, 101, 109, 32, 48, 59, 32, 102, 111, 110, 116, 45, 119, 101, + 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 32, 125, 32, 104, 53, 32, + 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, + 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 46, 56, 51, + 101, 109, 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, 49, 46, 54, 55, + 95, 95, 113, 101, 109, 32, 48, 32, 49, 46, 54, 55, 101, 109, 32, 48, + 59, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, + 111, 108, 100, 32, 125, 32, 104, 54, 32, 123, 32, 100, 105, 115, 112, 108, + 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 102, 111, 110, 116, 45, + 115, 105, 122, 101, 58, 32, 46, 54, 55, 101, 109, 59, 32, 109, 97, 114, + 103, 105, 110, 58, 32, 50, 46, 51, 51, 95, 95, 113, 101, 109, 32, 48, + 32, 50, 46, 51, 51, 101, 109, 32, 48, 59, 32, 102, 111, 110, 116, 45, + 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 32, 125, 32, 116, + 97, 98, 108, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, + 116, 97, 98, 108, 101, 59, 32, 98, 111, 114, 100, 101, 114, 45, 99, 111, + 108, 108, 97, 112, 115, 101, 58, 32, 115, 101, 112, 97, 114, 97, 116, 101, + 59, 32, 98, 111, 114, 100, 101, 114, 45, 115, 112, 97, 99, 105, 110, 103, + 58, 32, 50, 112, 120, 59, 32, 98, 111, 114, 100, 101, 114, 45, 99, 111, + 108, 111, 114, 58, 32, 103, 114, 97, 121, 32, 125, 32, 116, 104, 101, 97, + 100, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, 98, + 108, 101, 45, 104, 101, 97, 100, 101, 114, 45, 103, 114, 111, 117, 112, 59, + 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, + 32, 109, 105, 100, 100, 108, 101, 59, 32, 98, 111, 114, 100, 101, 114, 45, + 99, 111, 108, 111, 114, 58, 32, 105, 110, 104, 101, 114, 105, 116, 32, 125, + 32, 116, 98, 111, 100, 121, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, + 58, 32, 116, 97, 98, 108, 101, 45, 114, 111, 119, 45, 103, 114, 111, 117, + 112, 59, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, + 110, 58, 32, 109, 105, 100, 100, 108, 101, 59, 32, 98, 111, 114, 100, 101, + 114, 45, 99, 111, 108, 111, 114, 58, 32, 105, 110, 104, 101, 114, 105, 116, + 32, 125, 32, 116, 102, 111, 111, 116, 32, 123, 32, 100, 105, 115, 112, 108, + 97, 121, 58, 32, 116, 97, 98, 108, 101, 45, 102, 111, 111, 116, 101, 114, + 45, 103, 114, 111, 117, 112, 59, 32, 118, 101, 114, 116, 105, 99, 97, 108, + 45, 97, 108, 105, 103, 110, 58, 32, 109, 105, 100, 100, 108, 101, 59, 32, + 98, 111, 114, 100, 101, 114, 45, 99, 111, 108, 111, 114, 58, 32, 105, 110, + 104, 101, 114, 105, 116, 32, 125, 32, 116, 97, 98, 108, 101, 32, 62, 32, + 116, 114, 32, 123, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, + 105, 103, 110, 58, 32, 109, 105, 100, 100, 108, 101, 59, 32, 125, 32, 99, + 111, 108, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, + 98, 108, 101, 45, 99, 111, 108, 117, 109, 110, 32, 125, 32, 99, 111, 108, + 103, 114, 111, 117, 112, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, + 32, 116, 97, 98, 108, 101, 45, 99, 111, 108, 117, 109, 110, 45, 103, 114, + 111, 117, 112, 32, 125, 32, 116, 114, 32, 123, 32, 100, 105, 115, 112, 108, + 97, 121, 58, 32, 116, 97, 98, 108, 101, 45, 114, 111, 119, 59, 32, 118, + 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 105, + 110, 104, 101, 114, 105, 116, 59, 32, 98, 111, 114, 100, 101, 114, 45, 99, 111, 108, 111, 114, 58, 32, 105, 110, 104, 101, 114, 105, 116, 32, 125, 32, - 116, 98, 111, 100, 121, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, - 32, 116, 97, 98, 108, 101, 45, 114, 111, 119, 45, 103, 114, 111, 117, 112, - 59, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, - 58, 32, 109, 105, 100, 100, 108, 101, 59, 32, 98, 111, 114, 100, 101, 114, - 45, 99, 111, 108, 111, 114, 58, 32, 105, 110, 104, 101, 114, 105, 116, 32, - 125, 32, 116, 102, 111, 111, 116, 32, 123, 32, 100, 105, 115, 112, 108, 97, - 121, 58, 32, 116, 97, 98, 108, 101, 45, 102, 111, 111, 116, 101, 114, 45, - 103, 114, 111, 117, 112, 59, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, - 97, 108, 105, 103, 110, 58, 32, 109, 105, 100, 100, 108, 101, 59, 32, 98, - 111, 114, 100, 101, 114, 45, 99, 111, 108, 111, 114, 58, 32, 105, 110, 104, - 101, 114, 105, 116, 32, 125, 32, 116, 97, 98, 108, 101, 32, 62, 32, 116, - 114, 32, 123, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, - 103, 110, 58, 32, 109, 105, 100, 100, 108, 101, 59, 32, 125, 32, 99, 111, - 108, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, 98, - 108, 101, 45, 99, 111, 108, 117, 109, 110, 32, 125, 32, 99, 111, 108, 103, - 114, 111, 117, 112, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, - 116, 97, 98, 108, 101, 45, 99, 111, 108, 117, 109, 110, 45, 103, 114, 111, - 117, 112, 32, 125, 32, 116, 114, 32, 123, 32, 100, 105, 115, 112, 108, 97, - 121, 58, 32, 116, 97, 98, 108, 101, 45, 114, 111, 119, 59, 32, 118, 101, + 116, 100, 44, 32, 116, 104, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, + 58, 32, 116, 97, 98, 108, 101, 45, 99, 101, 108, 108, 59, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 105, 110, - 104, 101, 114, 105, 116, 59, 32, 98, 111, 114, 100, 101, 114, 45, 99, 111, - 108, 111, 114, 58, 32, 105, 110, 104, 101, 114, 105, 116, 32, 125, 32, 116, - 100, 44, 32, 116, 104, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, - 32, 116, 97, 98, 108, 101, 45, 99, 101, 108, 108, 59, 32, 118, 101, 114, - 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 105, 110, 104, - 101, 114, 105, 116, 32, 125, 32, 116, 104, 32, 123, 32, 102, 111, 110, 116, - 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 32, 125, 32, - 99, 97, 112, 116, 105, 111, 110, 32, 123, 32, 100, 105, 115, 112, 108, 97, - 121, 58, 32, 116, 97, 98, 108, 101, 45, 99, 97, 112, 116, 105, 111, 110, - 59, 32, 116, 101, 120, 116, 45, 97, 108, 105, 103, 110, 58, 32, 45, 119, - 101, 98, 107, 105, 116, 45, 99, 101, 110, 116, 101, 114, 32, 125, 32, 117, - 108, 44, 32, 109, 101, 110, 117, 44, 32, 100, 105, 114, 32, 123, 32, 100, - 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 108, - 105, 115, 116, 45, 115, 116, 121, 108, 101, 45, 116, 121, 112, 101, 58, 32, - 100, 105, 115, 99, 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, 49, 95, - 95, 113, 101, 109, 32, 48, 32, 49, 101, 109, 32, 48, 59, 32, 45, 119, - 101, 98, 107, 105, 116, 45, 112, 97, 100, 100, 105, 110, 103, 45, 115, 116, - 97, 114, 116, 58, 32, 52, 48, 112, 120, 32, 125, 32, 111, 108, 32, 123, - 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, - 32, 108, 105, 115, 116, 45, 115, 116, 121, 108, 101, 45, 116, 121, 112, 101, - 58, 32, 100, 101, 99, 105, 109, 97, 108, 59, 32, 109, 97, 114, 103, 105, - 110, 58, 32, 49, 95, 95, 113, 101, 109, 32, 48, 32, 49, 101, 109, 32, - 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 112, 97, 100, 100, 105, - 110, 103, 45, 115, 116, 97, 114, 116, 58, 32, 52, 48, 112, 120, 32, 125, - 32, 108, 105, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 108, - 105, 115, 116, 45, 105, 116, 101, 109, 32, 125, 32, 117, 108, 32, 117, 108, - 44, 32, 111, 108, 32, 117, 108, 32, 123, 32, 108, 105, 115, 116, 45, 115, - 116, 121, 108, 101, 45, 116, 121, 112, 101, 58, 32, 99, 105, 114, 99, 108, - 101, 32, 125, 32, 111, 108, 32, 111, 108, 32, 117, 108, 44, 32, 111, 108, - 32, 117, 108, 32, 117, 108, 44, 32, 117, 108, 32, 111, 108, 32, 117, 108, - 44, 32, 117, 108, 32, 117, 108, 32, 117, 108, 32, 123, 32, 108, 105, 115, - 116, 45, 115, 116, 121, 108, 101, 45, 116, 121, 112, 101, 58, 32, 115, 113, - 117, 97, 114, 101, 32, 125, 32, 100, 100, 32, 123, 32, 100, 105, 115, 112, - 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 45, 119, 101, 98, - 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, - 58, 32, 52, 48, 112, 120, 32, 125, 32, 100, 108, 32, 123, 32, 100, 105, + 104, 101, 114, 105, 116, 32, 125, 32, 116, 104, 32, 123, 32, 102, 111, 110, + 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 32, 125, + 32, 99, 97, 112, 116, 105, 111, 110, 32, 123, 32, 100, 105, 115, 112, 108, + 97, 121, 58, 32, 116, 97, 98, 108, 101, 45, 99, 97, 112, 116, 105, 111, + 110, 59, 32, 116, 101, 120, 116, 45, 97, 108, 105, 103, 110, 58, 32, 45, + 119, 101, 98, 107, 105, 116, 45, 99, 101, 110, 116, 101, 114, 32, 125, 32, + 117, 108, 44, 32, 109, 101, 110, 117, 44, 32, 100, 105, 114, 32, 123, 32, + 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, + 108, 105, 115, 116, 45, 115, 116, 121, 108, 101, 45, 116, 121, 112, 101, 58, + 32, 100, 105, 115, 99, 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, 49, + 95, 95, 113, 101, 109, 32, 48, 32, 49, 101, 109, 32, 48, 59, 32, 45, + 119, 101, 98, 107, 105, 116, 45, 112, 97, 100, 100, 105, 110, 103, 45, 115, + 116, 97, 114, 116, 58, 32, 52, 48, 112, 120, 32, 125, 32, 111, 108, 32, + 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, + 59, 32, 108, 105, 115, 116, 45, 115, 116, 121, 108, 101, 45, 116, 121, 112, + 101, 58, 32, 100, 101, 99, 105, 109, 97, 108, 59, 32, 109, 97, 114, 103, + 105, 110, 58, 32, 49, 95, 95, 113, 101, 109, 32, 48, 32, 49, 101, 109, + 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 112, 97, 100, 100, + 105, 110, 103, 45, 115, 116, 97, 114, 116, 58, 32, 52, 48, 112, 120, 32, + 125, 32, 108, 105, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, + 108, 105, 115, 116, 45, 105, 116, 101, 109, 32, 125, 32, 117, 108, 32, 117, + 108, 44, 32, 111, 108, 32, 117, 108, 32, 123, 32, 108, 105, 115, 116, 45, + 115, 116, 121, 108, 101, 45, 116, 121, 112, 101, 58, 32, 99, 105, 114, 99, + 108, 101, 32, 125, 32, 111, 108, 32, 111, 108, 32, 117, 108, 44, 32, 111, + 108, 32, 117, 108, 32, 117, 108, 44, 32, 117, 108, 32, 111, 108, 32, 117, + 108, 44, 32, 117, 108, 32, 117, 108, 32, 117, 108, 32, 123, 32, 108, 105, + 115, 116, 45, 115, 116, 121, 108, 101, 45, 116, 121, 112, 101, 58, 32, 115, + 113, 117, 97, 114, 101, 32, 125, 32, 100, 100, 32, 123, 32, 100, 105, 115, + 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 45, 119, 101, + 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, + 116, 58, 32, 52, 48, 112, 120, 32, 125, 32, 100, 108, 32, 123, 32, 100, + 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 109, + 97, 114, 103, 105, 110, 58, 32, 49, 95, 95, 113, 101, 109, 32, 48, 32, + 49, 101, 109, 32, 48, 32, 125, 32, 100, 116, 32, 123, 32, 100, 105, 115, + 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, 111, 108, + 32, 117, 108, 44, 32, 117, 108, 32, 111, 108, 44, 32, 117, 108, 32, 117, + 108, 44, 32, 111, 108, 32, 111, 108, 32, 123, 32, 109, 97, 114, 103, 105, + 110, 45, 116, 111, 112, 58, 32, 48, 59, 32, 109, 97, 114, 103, 105, 110, + 45, 98, 111, 116, 116, 111, 109, 58, 32, 48, 32, 125, 32, 102, 111, 114, + 109, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, + 99, 107, 59, 32, 109, 97, 114, 103, 105, 110, 45, 116, 111, 112, 58, 32, + 48, 95, 95, 113, 101, 109, 32, 125, 32, 108, 97, 98, 101, 108, 32, 123, + 32, 99, 117, 114, 115, 111, 114, 58, 32, 100, 101, 102, 97, 117, 108, 116, + 59, 32, 125, 32, 108, 101, 103, 101, 110, 100, 32, 123, 32, 100, 105, 115, + 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 112, 97, 100, + 100, 105, 110, 103, 45, 108, 101, 102, 116, 58, 32, 50, 112, 120, 59, 32, + 112, 97, 100, 100, 105, 110, 103, 45, 114, 105, 103, 104, 116, 58, 32, 50, + 112, 120, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 110, 111, 110, 101, + 32, 125, 32, 102, 105, 101, 108, 100, 115, 101, 116, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 109, 97, - 114, 103, 105, 110, 58, 32, 49, 95, 95, 113, 101, 109, 32, 48, 32, 49, - 101, 109, 32, 48, 32, 125, 32, 100, 116, 32, 123, 32, 100, 105, 115, 112, - 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, 111, 108, 32, - 117, 108, 44, 32, 117, 108, 32, 111, 108, 44, 32, 117, 108, 32, 117, 108, - 44, 32, 111, 108, 32, 111, 108, 32, 123, 32, 109, 97, 114, 103, 105, 110, - 45, 116, 111, 112, 58, 32, 48, 59, 32, 109, 97, 114, 103, 105, 110, 45, - 98, 111, 116, 116, 111, 109, 58, 32, 48, 32, 125, 32, 102, 111, 114, 109, - 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, - 107, 59, 32, 109, 97, 114, 103, 105, 110, 45, 116, 111, 112, 58, 32, 48, - 95, 95, 113, 101, 109, 32, 125, 32, 108, 97, 98, 101, 108, 32, 123, 32, - 99, 117, 114, 115, 111, 114, 58, 32, 100, 101, 102, 97, 117, 108, 116, 59, - 32, 125, 32, 108, 101, 103, 101, 110, 100, 32, 123, 32, 100, 105, 115, 112, - 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 112, 97, 100, 100, - 105, 110, 103, 45, 108, 101, 102, 116, 58, 32, 50, 112, 120, 59, 32, 112, - 97, 100, 100, 105, 110, 103, 45, 114, 105, 103, 104, 116, 58, 32, 50, 112, - 120, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 110, 111, 110, 101, 32, - 125, 32, 102, 105, 101, 108, 100, 115, 101, 116, 32, 123, 32, 100, 105, 115, - 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 109, 97, 114, - 103, 105, 110, 45, 108, 101, 102, 116, 58, 32, 50, 112, 120, 59, 32, 109, - 97, 114, 103, 105, 110, 45, 114, 105, 103, 104, 116, 58, 32, 50, 112, 120, - 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 48, 46, 51, 53, 101, - 109, 32, 48, 46, 55, 53, 101, 109, 32, 48, 46, 54, 50, 53, 101, 109, - 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 50, 112, 120, 32, 103, 114, - 111, 111, 118, 101, 32, 84, 104, 114, 101, 101, 68, 70, 97, 99, 101, 32, - 125, 32, 98, 117, 116, 116, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, - 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 98, - 117, 116, 116, 111, 110, 59, 32, 125, 32, 105, 110, 112, 117, 116, 44, 32, - 116, 101, 120, 116, 97, 114, 101, 97, 44, 32, 107, 101, 121, 103, 101, 110, - 44, 32, 115, 101, 108, 101, 99, 116, 44, 32, 98, 117, 116, 116, 111, 110, - 44, 32, 105, 115, 105, 110, 100, 101, 120, 44, 32, 100, 97, 116, 97, 103, - 114, 105, 100, 32, 123, 32, 109, 97, 114, 103, 105, 110, 58, 32, 48, 95, - 95, 113, 101, 109, 59, 32, 102, 111, 110, 116, 58, 32, 45, 119, 101, 98, - 107, 105, 116, 45, 115, 109, 97, 108, 108, 45, 99, 111, 110, 116, 114, 111, - 108, 59, 32, 99, 111, 108, 111, 114, 58, 32, 105, 110, 105, 116, 105, 97, - 108, 59, 32, 108, 101, 116, 116, 101, 114, 45, 115, 112, 97, 99, 105, 110, - 103, 58, 32, 110, 111, 114, 109, 97, 108, 59, 32, 119, 111, 114, 100, 45, - 115, 112, 97, 99, 105, 110, 103, 58, 32, 110, 111, 114, 109, 97, 108, 59, - 32, 108, 105, 110, 101, 45, 104, 101, 105, 103, 104, 116, 58, 32, 110, 111, - 114, 109, 97, 108, 59, 32, 116, 101, 120, 116, 45, 116, 114, 97, 110, 115, - 102, 111, 114, 109, 58, 32, 110, 111, 110, 101, 59, 32, 116, 101, 120, 116, - 45, 105, 110, 100, 101, 110, 116, 58, 32, 48, 59, 32, 116, 101, 120, 116, - 45, 115, 104, 97, 100, 111, 119, 58, 32, 110, 111, 110, 101, 59, 32, 100, - 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, - 108, 111, 99, 107, 59, 32, 116, 101, 120, 116, 45, 97, 108, 105, 103, 110, - 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 117, 116, 111, 59, 32, - 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 104, 105, - 100, 100, 101, 110, 34, 93, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, - 58, 32, 110, 111, 110, 101, 32, 125, 32, 105, 110, 112, 117, 116, 44, 32, - 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 112, 97, 115, 115, - 119, 111, 114, 100, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, - 112, 101, 61, 34, 115, 101, 97, 114, 99, 104, 34, 93, 44, 32, 105, 115, - 105, 110, 100, 101, 120, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, - 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 116, 101, 120, 116, - 102, 105, 101, 108, 100, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, - 49, 112, 120, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, - 99, 111, 108, 111, 114, 58, 32, 119, 104, 105, 116, 101, 59, 32, 98, 111, - 114, 100, 101, 114, 58, 32, 50, 112, 120, 32, 105, 110, 115, 101, 116, 59, - 32, 45, 119, 101, 98, 107, 105, 116, 45, 114, 116, 108, 45, 111, 114, 100, - 101, 114, 105, 110, 103, 58, 32, 108, 111, 103, 105, 99, 97, 108, 59, 32, - 45, 119, 101, 98, 107, 105, 116, 45, 117, 115, 101, 114, 45, 115, 101, 108, - 101, 99, 116, 58, 32, 116, 101, 120, 116, 59, 32, 99, 117, 114, 115, 111, - 114, 58, 32, 97, 117, 116, 111, 59, 32, 125, 32, 105, 110, 112, 117, 116, - 91, 116, 121, 112, 101, 61, 34, 115, 101, 97, 114, 99, 104, 34, 93, 32, - 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, - 97, 110, 99, 101, 58, 32, 115, 101, 97, 114, 99, 104, 102, 105, 101, 108, - 100, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, - 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, - 120, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, - 34, 115, 101, 97, 114, 99, 104, 34, 93, 58, 58, 45, 119, 101, 98, 107, - 105, 116, 45, 115, 101, 97, 114, 99, 104, 45, 99, 97, 110, 99, 101, 108, - 45, 98, 117, 116, 116, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, - 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 115, 101, - 97, 114, 99, 104, 102, 105, 101, 108, 100, 45, 99, 97, 110, 99, 101, 108, - 45, 98, 117, 116, 116, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, 121, - 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, - 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 101, - 97, 114, 99, 104, 34, 93, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, - 115, 101, 97, 114, 99, 104, 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, - 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, - 97, 114, 97, 110, 99, 101, 58, 32, 115, 101, 97, 114, 99, 104, 102, 105, - 101, 108, 100, 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, 110, 59, 32, + 114, 103, 105, 110, 45, 108, 101, 102, 116, 58, 32, 50, 112, 120, 59, 32, + 109, 97, 114, 103, 105, 110, 45, 114, 105, 103, 104, 116, 58, 32, 50, 112, + 120, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 48, 46, 51, 53, + 101, 109, 32, 48, 46, 55, 53, 101, 109, 32, 48, 46, 54, 50, 53, 101, + 109, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 50, 112, 120, 32, 103, + 114, 111, 111, 118, 101, 32, 84, 104, 114, 101, 101, 68, 70, 97, 99, 101, + 32, 125, 32, 98, 117, 116, 116, 111, 110, 32, 123, 32, 45, 119, 101, 98, + 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, + 98, 117, 116, 116, 111, 110, 59, 32, 125, 32, 105, 110, 112, 117, 116, 44, + 32, 116, 101, 120, 116, 97, 114, 101, 97, 44, 32, 107, 101, 121, 103, 101, + 110, 44, 32, 115, 101, 108, 101, 99, 116, 44, 32, 98, 117, 116, 116, 111, + 110, 44, 32, 105, 115, 105, 110, 100, 101, 120, 44, 32, 100, 97, 116, 97, + 103, 114, 105, 100, 32, 123, 32, 109, 97, 114, 103, 105, 110, 58, 32, 48, + 95, 95, 113, 101, 109, 59, 32, 102, 111, 110, 116, 58, 32, 45, 119, 101, + 98, 107, 105, 116, 45, 115, 109, 97, 108, 108, 45, 99, 111, 110, 116, 114, + 111, 108, 59, 32, 99, 111, 108, 111, 114, 58, 32, 105, 110, 105, 116, 105, + 97, 108, 59, 32, 108, 101, 116, 116, 101, 114, 45, 115, 112, 97, 99, 105, + 110, 103, 58, 32, 110, 111, 114, 109, 97, 108, 59, 32, 119, 111, 114, 100, + 45, 115, 112, 97, 99, 105, 110, 103, 58, 32, 110, 111, 114, 109, 97, 108, + 59, 32, 108, 105, 110, 101, 45, 104, 101, 105, 103, 104, 116, 58, 32, 110, + 111, 114, 109, 97, 108, 59, 32, 116, 101, 120, 116, 45, 116, 114, 97, 110, + 115, 102, 111, 114, 109, 58, 32, 110, 111, 110, 101, 59, 32, 116, 101, 120, + 116, 45, 105, 110, 100, 101, 110, 116, 58, 32, 48, 59, 32, 116, 101, 120, + 116, 45, 115, 104, 97, 100, 111, 119, 58, 32, 110, 111, 110, 101, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, - 98, 108, 111, 99, 107, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, - 121, 112, 101, 61, 34, 115, 101, 97, 114, 99, 104, 34, 93, 58, 58, 45, - 119, 101, 98, 107, 105, 116, 45, 115, 101, 97, 114, 99, 104, 45, 114, 101, - 115, 117, 108, 116, 115, 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, 110, + 98, 108, 111, 99, 107, 59, 32, 116, 101, 120, 116, 45, 97, 108, 105, 103, + 110, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 117, 116, 111, 59, + 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 104, + 105, 100, 100, 101, 110, 34, 93, 32, 123, 32, 100, 105, 115, 112, 108, 97, + 121, 58, 32, 110, 111, 110, 101, 32, 125, 32, 105, 110, 112, 117, 116, 44, + 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 112, 97, 115, + 115, 119, 111, 114, 100, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, + 121, 112, 101, 61, 34, 115, 101, 97, 114, 99, 104, 34, 93, 44, 32, 105, + 115, 105, 110, 100, 101, 120, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, + 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 116, 101, 120, + 116, 102, 105, 101, 108, 100, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, + 32, 49, 112, 120, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, + 45, 99, 111, 108, 111, 114, 58, 32, 119, 104, 105, 116, 101, 59, 32, 98, + 111, 114, 100, 101, 114, 58, 32, 50, 112, 120, 32, 105, 110, 115, 101, 116, + 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 114, 116, 108, 45, 111, 114, + 100, 101, 114, 105, 110, 103, 58, 32, 108, 111, 103, 105, 99, 97, 108, 59, + 32, 45, 119, 101, 98, 107, 105, 116, 45, 117, 115, 101, 114, 45, 115, 101, + 108, 101, 99, 116, 58, 32, 116, 101, 120, 116, 59, 32, 99, 117, 114, 115, + 111, 114, 58, 32, 97, 117, 116, 111, 59, 32, 125, 32, 105, 110, 112, 117, + 116, 91, 116, 121, 112, 101, 61, 34, 115, 101, 97, 114, 99, 104, 34, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 115, 101, 97, 114, 99, 104, 102, 105, 101, - 108, 100, 45, 114, 101, 115, 117, 108, 116, 115, 45, 100, 101, 99, 111, 114, - 97, 116, 105, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, + 108, 100, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, + 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, + 111, 120, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, + 61, 34, 115, 101, 97, 114, 99, 104, 34, 93, 58, 58, 45, 119, 101, 98, + 107, 105, 116, 45, 115, 101, 97, 114, 99, 104, 45, 99, 97, 110, 99, 101, + 108, 45, 98, 117, 116, 116, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, + 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 115, + 101, 97, 114, 99, 104, 102, 105, 101, 108, 100, 45, 99, 97, 110, 99, 101, + 108, 45, 98, 117, 116, 116, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, + 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, + 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, + 101, 97, 114, 99, 104, 34, 93, 58, 58, 45, 119, 101, 98, 107, 105, 116, + 45, 115, 101, 97, 114, 99, 104, 45, 100, 101, 99, 111, 114, 97, 116, 105, + 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, + 101, 97, 114, 97, 110, 99, 101, 58, 32, 115, 101, 97, 114, 99, 104, 102, + 105, 101, 108, 100, 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, 110, 59, + 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, + 45, 98, 108, 111, 99, 107, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, + 116, 121, 112, 101, 61, 34, 115, 101, 97, 114, 99, 104, 34, 93, 58, 58, + 45, 119, 101, 98, 107, 105, 116, 45, 115, 101, 97, 114, 99, 104, 45, 114, + 101, 115, 117, 108, 116, 115, 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, + 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, + 97, 114, 97, 110, 99, 101, 58, 32, 115, 101, 97, 114, 99, 104, 102, 105, + 101, 108, 100, 45, 114, 101, 115, 117, 108, 116, 115, 45, 100, 101, 99, 111, + 114, 97, 116, 105, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, + 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 125, + 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 101, 97, + 114, 99, 104, 34, 93, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 115, + 101, 97, 114, 99, 104, 45, 114, 101, 115, 117, 108, 116, 115, 45, 98, 117, + 116, 116, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, + 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 115, 101, 97, 114, 99, + 104, 102, 105, 101, 108, 100, 45, 114, 101, 115, 117, 108, 116, 115, 45, 98, + 117, 116, 116, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 125, 32, - 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 101, 97, 114, - 99, 104, 34, 93, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 115, 101, - 97, 114, 99, 104, 45, 114, 101, 115, 117, 108, 116, 115, 45, 98, 117, 116, - 116, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, - 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 115, 101, 97, 114, 99, 104, - 102, 105, 101, 108, 100, 45, 114, 101, 115, 117, 108, 116, 115, 45, 98, 117, - 116, 116, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, - 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 125, 32, 105, - 110, 112, 117, 116, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 105, 110, - 112, 117, 116, 45, 108, 105, 115, 116, 45, 98, 117, 116, 116, 111, 110, 32, - 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, - 97, 110, 99, 101, 58, 32, 108, 105, 115, 116, 45, 98, 117, 116, 116, 111, - 110, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, - 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 125, 32, 105, 110, 112, 117, - 116, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 105, 110, 110, 101, 114, - 45, 115, 112, 105, 110, 45, 98, 117, 116, 116, 111, 110, 32, 123, 32, 45, - 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, - 101, 58, 32, 105, 110, 110, 101, 114, 45, 115, 112, 105, 110, 45, 98, 117, - 116, 116, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, - 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 125, 32, 105, - 110, 112, 117, 116, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 111, 117, - 116, 101, 114, 45, 115, 112, 105, 110, 45, 98, 117, 116, 116, 111, 110, 32, - 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, - 97, 110, 99, 101, 58, 32, 111, 117, 116, 101, 114, 45, 115, 112, 105, 110, - 45, 98, 117, 116, 116, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, 121, - 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, - 109, 97, 114, 103, 105, 110, 45, 108, 101, 102, 116, 58, 32, 50, 112, 120, - 59, 32, 125, 32, 116, 101, 120, 116, 97, 114, 101, 97, 32, 123, 32, 45, - 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, - 101, 58, 32, 116, 101, 120, 116, 97, 114, 101, 97, 59, 32, 98, 97, 99, - 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 119, - 104, 105, 116, 101, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, 112, - 120, 32, 115, 111, 108, 105, 100, 59, 32, 45, 119, 101, 98, 107, 105, 116, - 45, 114, 116, 108, 45, 111, 114, 100, 101, 114, 105, 110, 103, 58, 32, 108, - 111, 103, 105, 99, 97, 108, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, - 117, 115, 101, 114, 45, 115, 101, 108, 101, 99, 116, 58, 32, 116, 101, 120, - 116, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 111, - 114, 105, 101, 110, 116, 58, 32, 118, 101, 114, 116, 105, 99, 97, 108, 59, - 32, 114, 101, 115, 105, 122, 101, 58, 32, 97, 117, 116, 111, 59, 32, 99, - 117, 114, 115, 111, 114, 58, 32, 97, 117, 116, 111, 59, 32, 112, 97, 100, - 100, 105, 110, 103, 58, 32, 50, 112, 120, 59, 32, 119, 104, 105, 116, 101, - 45, 115, 112, 97, 99, 101, 58, 32, 112, 114, 101, 45, 119, 114, 97, 112, - 59, 32, 119, 111, 114, 100, 45, 119, 114, 97, 112, 58, 32, 98, 114, 101, - 97, 107, 45, 119, 111, 114, 100, 59, 32, 125, 32, 105, 110, 112, 117, 116, - 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 105, 110, 112, 117, 116, 45, - 112, 108, 97, 99, 101, 104, 111, 108, 100, 101, 114, 44, 32, 105, 115, 105, - 110, 100, 101, 120, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 105, 110, - 112, 117, 116, 45, 112, 108, 97, 99, 101, 104, 111, 108, 100, 101, 114, 44, - 32, 116, 101, 120, 116, 97, 114, 101, 97, 58, 58, 45, 119, 101, 98, 107, - 105, 116, 45, 105, 110, 112, 117, 116, 45, 112, 108, 97, 99, 101, 104, 111, - 108, 100, 101, 114, 32, 123, 32, 99, 111, 108, 111, 114, 58, 32, 100, 97, - 114, 107, 71, 114, 97, 121, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, - 116, 121, 112, 101, 61, 34, 112, 97, 115, 115, 119, 111, 114, 100, 34, 93, - 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 116, 101, 120, 116, 45, - 115, 101, 99, 117, 114, 105, 116, 121, 58, 32, 100, 105, 115, 99, 32, 33, - 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 125, 32, 105, 110, 112, - 117, 116, 91, 116, 121, 112, 101, 61, 34, 104, 105, 100, 100, 101, 110, 34, - 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 105, - 109, 97, 103, 101, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, - 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 32, 123, 32, 45, 119, 101, - 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, - 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 112, 97, 100, 100, 105, 110, - 103, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 98, 97, 99, 107, - 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 105, 110, - 105, 116, 105, 97, 108, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 105, - 110, 105, 116, 105, 97, 108, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, - 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 32, 123, 32, 45, - 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 97, 108, 105, 103, 110, - 58, 32, 98, 97, 115, 101, 108, 105, 110, 101, 59, 32, 116, 101, 120, 116, - 45, 97, 108, 105, 103, 110, 58, 32, 115, 116, 97, 114, 116, 32, 33, 105, - 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 125, 32, 105, 110, 112, 117, - 116, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 117, 116, 111, 102, 105, - 108, 108, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, - 99, 111, 108, 111, 114, 58, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, - 100, 45, 105, 109, 97, 103, 101, 58, 110, 111, 110, 101, 32, 33, 105, 109, - 112, 111, 114, 116, 97, 110, 116, 59, 32, 125, 32, 105, 110, 112, 117, 116, - 91, 116, 121, 112, 101, 61, 34, 114, 97, 100, 105, 111, 34, 93, 44, 32, - 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 99, 104, 101, 99, - 107, 98, 111, 120, 34, 93, 32, 123, 32, 109, 97, 114, 103, 105, 110, 58, - 32, 51, 112, 120, 32, 48, 46, 53, 101, 120, 59, 32, 112, 97, 100, 100, - 105, 110, 103, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 98, 97, + 105, 110, 112, 117, 116, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 105, + 110, 112, 117, 116, 45, 108, 105, 115, 116, 45, 98, 117, 116, 116, 111, 110, + 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, + 114, 97, 110, 99, 101, 58, 32, 108, 105, 115, 116, 45, 98, 117, 116, 116, + 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, + 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 125, 32, 105, 110, 112, + 117, 116, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 105, 110, 110, 101, + 114, 45, 115, 112, 105, 110, 45, 98, 117, 116, 116, 111, 110, 32, 123, 32, + 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, + 99, 101, 58, 32, 105, 110, 110, 101, 114, 45, 115, 112, 105, 110, 45, 98, + 117, 116, 116, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, + 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 125, 32, + 105, 110, 112, 117, 116, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 111, + 117, 116, 101, 114, 45, 115, 112, 105, 110, 45, 98, 117, 116, 116, 111, 110, + 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, + 114, 97, 110, 99, 101, 58, 32, 111, 117, 116, 101, 114, 45, 115, 112, 105, + 110, 45, 98, 117, 116, 116, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, + 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, + 32, 109, 97, 114, 103, 105, 110, 45, 108, 101, 102, 116, 58, 32, 50, 112, + 120, 59, 32, 125, 32, 116, 101, 120, 116, 97, 114, 101, 97, 32, 123, 32, + 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, + 99, 101, 58, 32, 116, 101, 120, 116, 97, 114, 101, 97, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, - 105, 110, 105, 116, 105, 97, 108, 59, 32, 98, 111, 114, 100, 101, 114, 58, - 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 125, 32, 105, 110, 112, 117, - 116, 91, 116, 121, 112, 101, 61, 34, 98, 117, 116, 116, 111, 110, 34, 93, - 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 117, - 98, 109, 105, 116, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, - 112, 101, 61, 34, 114, 101, 115, 101, 116, 34, 93, 44, 32, 105, 110, 112, - 117, 116, 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 58, - 58, 45, 119, 101, 98, 107, 105, 116, 45, 102, 105, 108, 101, 45, 117, 112, - 108, 111, 97, 100, 45, 98, 117, 116, 116, 111, 110, 32, 123, 32, 45, 119, + 119, 104, 105, 116, 101, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, + 112, 120, 32, 115, 111, 108, 105, 100, 59, 32, 45, 119, 101, 98, 107, 105, + 116, 45, 114, 116, 108, 45, 111, 114, 100, 101, 114, 105, 110, 103, 58, 32, + 108, 111, 103, 105, 99, 97, 108, 59, 32, 45, 119, 101, 98, 107, 105, 116, + 45, 117, 115, 101, 114, 45, 115, 101, 108, 101, 99, 116, 58, 32, 116, 101, + 120, 116, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, + 111, 114, 105, 101, 110, 116, 58, 32, 118, 101, 114, 116, 105, 99, 97, 108, + 59, 32, 114, 101, 115, 105, 122, 101, 58, 32, 97, 117, 116, 111, 59, 32, + 99, 117, 114, 115, 111, 114, 58, 32, 97, 117, 116, 111, 59, 32, 112, 97, + 100, 100, 105, 110, 103, 58, 32, 50, 112, 120, 59, 32, 119, 104, 105, 116, + 101, 45, 115, 112, 97, 99, 101, 58, 32, 112, 114, 101, 45, 119, 114, 97, + 112, 59, 32, 119, 111, 114, 100, 45, 119, 114, 97, 112, 58, 32, 98, 114, + 101, 97, 107, 45, 119, 111, 114, 100, 59, 32, 125, 32, 105, 110, 112, 117, + 116, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 105, 110, 112, 117, 116, + 45, 112, 108, 97, 99, 101, 104, 111, 108, 100, 101, 114, 44, 32, 105, 115, + 105, 110, 100, 101, 120, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 105, + 110, 112, 117, 116, 45, 112, 108, 97, 99, 101, 104, 111, 108, 100, 101, 114, + 44, 32, 116, 101, 120, 116, 97, 114, 101, 97, 58, 58, 45, 119, 101, 98, + 107, 105, 116, 45, 105, 110, 112, 117, 116, 45, 112, 108, 97, 99, 101, 104, + 111, 108, 100, 101, 114, 32, 123, 32, 99, 111, 108, 111, 114, 58, 32, 100, + 97, 114, 107, 71, 114, 97, 121, 59, 32, 125, 32, 105, 110, 112, 117, 116, + 91, 116, 121, 112, 101, 61, 34, 112, 97, 115, 115, 119, 111, 114, 100, 34, + 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 116, 101, 120, 116, + 45, 115, 101, 99, 117, 114, 105, 116, 121, 58, 32, 100, 105, 115, 99, 32, + 33, 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 125, 32, 105, 110, + 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 104, 105, 100, 100, 101, 110, + 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, + 105, 109, 97, 103, 101, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, + 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, - 58, 32, 112, 117, 115, 104, 45, 98, 117, 116, 116, 111, 110, 59, 32, 119, - 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 112, 114, 101, 32, - 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 98, 117, - 116, 116, 111, 110, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, - 112, 101, 61, 34, 115, 117, 98, 109, 105, 116, 34, 93, 44, 32, 105, 110, - 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 101, 115, 101, 116, 34, - 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 102, - 105, 108, 101, 34, 93, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 102, - 105, 108, 101, 45, 117, 112, 108, 111, 97, 100, 45, 98, 117, 116, 116, 111, - 110, 44, 32, 98, 117, 116, 116, 111, 110, 32, 123, 32, 45, 119, 101, 98, - 107, 105, 116, 45, 98, 111, 120, 45, 97, 108, 105, 103, 110, 58, 32, 99, - 101, 110, 116, 101, 114, 59, 32, 116, 101, 120, 116, 45, 97, 108, 105, 103, - 110, 58, 32, 99, 101, 110, 116, 101, 114, 59, 32, 99, 117, 114, 115, 111, - 114, 58, 32, 100, 101, 102, 97, 117, 108, 116, 59, 32, 99, 111, 108, 111, - 114, 58, 32, 66, 117, 116, 116, 111, 110, 84, 101, 120, 116, 59, 32, 112, - 97, 100, 100, 105, 110, 103, 58, 32, 50, 112, 120, 32, 54, 112, 120, 32, - 51, 112, 120, 32, 54, 112, 120, 59, 32, 98, 111, 114, 100, 101, 114, 58, - 32, 50, 112, 120, 32, 111, 117, 116, 115, 101, 116, 32, 66, 117, 116, 116, - 111, 110, 70, 97, 99, 101, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, - 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 66, 117, 116, 116, 111, 110, - 70, 97, 99, 101, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, - 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, - 45, 98, 111, 120, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, - 101, 61, 34, 114, 97, 110, 103, 101, 34, 93, 32, 123, 32, 45, 119, 101, - 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, - 32, 115, 108, 105, 100, 101, 114, 45, 104, 111, 114, 105, 122, 111, 110, 116, - 97, 108, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 105, 110, 105, - 116, 105, 97, 108, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 105, 110, - 105, 116, 105, 97, 108, 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, 50, - 112, 120, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, - 61, 34, 114, 97, 110, 103, 101, 34, 93, 58, 58, 45, 119, 101, 98, 107, - 105, 116, 45, 115, 108, 105, 100, 101, 114, 45, 116, 104, 117, 109, 98, 32, + 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 112, 97, 100, 100, 105, + 110, 103, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 98, 97, 99, + 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 105, + 110, 105, 116, 105, 97, 108, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, + 105, 110, 105, 116, 105, 97, 108, 59, 32, 125, 32, 105, 110, 112, 117, 116, + 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 32, 123, 32, + 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 97, 108, 105, 103, + 110, 58, 32, 98, 97, 115, 101, 108, 105, 110, 101, 59, 32, 116, 101, 120, + 116, 45, 97, 108, 105, 103, 110, 58, 32, 115, 116, 97, 114, 116, 32, 33, + 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 125, 32, 105, 110, 112, + 117, 116, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 117, 116, 111, 102, + 105, 108, 108, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, + 45, 99, 111, 108, 111, 114, 58, 32, 35, 70, 65, 70, 70, 66, 68, 32, + 33, 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 98, 97, 99, 107, + 103, 114, 111, 117, 110, 100, 45, 105, 109, 97, 103, 101, 58, 110, 111, 110, + 101, 32, 33, 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 125, 32, + 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 97, 100, 105, + 111, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, + 34, 99, 104, 101, 99, 107, 98, 111, 120, 34, 93, 32, 123, 32, 109, 97, + 114, 103, 105, 110, 58, 32, 51, 112, 120, 32, 48, 46, 53, 101, 120, 59, + 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 105, 110, 105, 116, 105, 97, + 108, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, + 108, 111, 114, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 98, 111, + 114, 100, 101, 114, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 125, + 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 98, 117, 116, + 116, 111, 110, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, + 101, 61, 34, 115, 117, 98, 109, 105, 116, 34, 93, 44, 32, 105, 110, 112, + 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 101, 115, 101, 116, 34, 93, + 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 102, 105, + 108, 101, 34, 93, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 102, 105, + 108, 101, 45, 117, 112, 108, 111, 97, 100, 45, 98, 117, 116, 116, 111, 110, + 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, + 114, 97, 110, 99, 101, 58, 32, 112, 117, 115, 104, 45, 98, 117, 116, 116, + 111, 110, 59, 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, + 32, 112, 114, 101, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, + 101, 61, 34, 98, 117, 116, 116, 111, 110, 34, 93, 44, 32, 105, 110, 112, + 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 117, 98, 109, 105, 116, 34, + 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, + 101, 115, 101, 116, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, + 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 58, 58, 45, 119, 101, 98, + 107, 105, 116, 45, 102, 105, 108, 101, 45, 117, 112, 108, 111, 97, 100, 45, + 98, 117, 116, 116, 111, 110, 44, 32, 98, 117, 116, 116, 111, 110, 32, 123, + 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 97, 108, 105, + 103, 110, 58, 32, 99, 101, 110, 116, 101, 114, 59, 32, 116, 101, 120, 116, + 45, 97, 108, 105, 103, 110, 58, 32, 99, 101, 110, 116, 101, 114, 59, 32, + 99, 117, 114, 115, 111, 114, 58, 32, 100, 101, 102, 97, 117, 108, 116, 59, + 32, 99, 111, 108, 111, 114, 58, 32, 66, 117, 116, 116, 111, 110, 84, 101, + 120, 116, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 50, 112, 120, + 32, 54, 112, 120, 32, 51, 112, 120, 32, 54, 112, 120, 59, 32, 98, 111, + 114, 100, 101, 114, 58, 32, 50, 112, 120, 32, 111, 117, 116, 115, 101, 116, + 32, 66, 117, 116, 116, 111, 110, 70, 97, 99, 101, 59, 32, 98, 97, 99, + 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 66, + 117, 116, 116, 111, 110, 70, 97, 99, 101, 59, 32, 45, 119, 101, 98, 107, + 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, + 111, 114, 100, 101, 114, 45, 98, 111, 120, 32, 125, 32, 105, 110, 112, 117, + 116, 91, 116, 121, 112, 101, 61, 34, 114, 97, 110, 103, 101, 34, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, - 97, 110, 99, 101, 58, 32, 115, 108, 105, 100, 101, 114, 116, 104, 117, 109, - 98, 45, 104, 111, 114, 105, 122, 111, 110, 116, 97, 108, 59, 32, 125, 32, - 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 98, 117, 116, 116, - 111, 110, 34, 93, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 105, - 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 117, 98, 109, 105, - 116, 34, 93, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 105, 110, - 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 101, 115, 101, 116, 34, - 93, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 105, 110, 112, 117, - 116, 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 58, 100, - 105, 115, 97, 98, 108, 101, 100, 58, 58, 45, 119, 101, 98, 107, 105, 116, - 45, 102, 105, 108, 101, 45, 117, 112, 108, 111, 97, 100, 45, 98, 117, 116, - 116, 111, 110, 44, 32, 98, 117, 116, 116, 111, 110, 58, 100, 105, 115, 97, - 98, 108, 101, 100, 44, 32, 115, 101, 108, 101, 99, 116, 58, 100, 105, 115, - 97, 98, 108, 101, 100, 44, 32, 107, 101, 121, 103, 101, 110, 58, 100, 105, - 115, 97, 98, 108, 101, 100, 44, 32, 111, 112, 116, 103, 114, 111, 117, 112, - 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 111, 112, 116, 105, 111, - 110, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 100, 97, 116, 97, - 103, 114, 105, 100, 58, 100, 105, 115, 97, 98, 108, 101, 100, 32, 123, 32, - 99, 111, 108, 111, 114, 58, 32, 71, 114, 97, 121, 84, 101, 120, 116, 32, - 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 98, 117, - 116, 116, 111, 110, 34, 93, 58, 97, 99, 116, 105, 118, 101, 44, 32, 105, - 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 117, 98, 109, 105, - 116, 34, 93, 58, 97, 99, 116, 105, 118, 101, 44, 32, 105, 110, 112, 117, - 116, 91, 116, 121, 112, 101, 61, 34, 114, 101, 115, 101, 116, 34, 93, 58, - 97, 99, 116, 105, 118, 101, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, - 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 58, 97, 99, 116, 105, 118, - 101, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 102, 105, 108, 101, 45, - 117, 112, 108, 111, 97, 100, 45, 98, 117, 116, 116, 111, 110, 44, 32, 98, - 117, 116, 116, 111, 110, 58, 97, 99, 116, 105, 118, 101, 32, 123, 32, 98, - 111, 114, 100, 101, 114, 45, 115, 116, 121, 108, 101, 58, 32, 105, 110, 115, - 101, 116, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, - 34, 98, 117, 116, 116, 111, 110, 34, 93, 58, 97, 99, 116, 105, 118, 101, - 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 105, 110, 112, 117, 116, - 91, 116, 121, 112, 101, 61, 34, 115, 117, 98, 109, 105, 116, 34, 93, 58, - 97, 99, 116, 105, 118, 101, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, + 97, 110, 99, 101, 58, 32, 115, 108, 105, 100, 101, 114, 45, 104, 111, 114, + 105, 122, 111, 110, 116, 97, 108, 59, 32, 112, 97, 100, 100, 105, 110, 103, + 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 98, 111, 114, 100, 101, + 114, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 109, 97, 114, 103, + 105, 110, 58, 32, 50, 112, 120, 59, 32, 125, 32, 105, 110, 112, 117, 116, + 91, 116, 121, 112, 101, 61, 34, 114, 97, 110, 103, 101, 34, 93, 58, 58, + 45, 119, 101, 98, 107, 105, 116, 45, 115, 108, 105, 100, 101, 114, 45, 116, + 104, 117, 109, 98, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, + 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 115, 108, 105, 100, 101, + 114, 116, 104, 117, 109, 98, 45, 104, 111, 114, 105, 122, 111, 110, 116, 97, + 108, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, + 34, 98, 117, 116, 116, 111, 110, 34, 93, 58, 100, 105, 115, 97, 98, 108, + 101, 100, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, + 115, 117, 98, 109, 105, 116, 34, 93, 58, 100, 105, 115, 97, 98, 108, 101, + 100, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, + 101, 115, 101, 116, 34, 93, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, + 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, + 101, 34, 93, 58, 100, 105, 115, 97, 98, 108, 101, 100, 58, 58, 45, 119, + 101, 98, 107, 105, 116, 45, 102, 105, 108, 101, 45, 117, 112, 108, 111, 97, + 100, 45, 98, 117, 116, 116, 111, 110, 44, 32, 98, 117, 116, 116, 111, 110, + 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 115, 101, 108, 101, 99, + 116, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 107, 101, 121, 103, + 101, 110, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 111, 112, 116, + 103, 114, 111, 117, 112, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, + 111, 112, 116, 105, 111, 110, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, + 32, 100, 97, 116, 97, 103, 114, 105, 100, 58, 100, 105, 115, 97, 98, 108, + 101, 100, 32, 123, 32, 99, 111, 108, 111, 114, 58, 32, 71, 114, 97, 121, + 84, 101, 120, 116, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, + 101, 61, 34, 98, 117, 116, 116, 111, 110, 34, 93, 58, 97, 99, 116, 105, + 118, 101, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, + 115, 117, 98, 109, 105, 116, 34, 93, 58, 97, 99, 116, 105, 118, 101, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 101, 115, - 101, 116, 34, 93, 58, 97, 99, 116, 105, 118, 101, 58, 100, 105, 115, 97, + 101, 116, 34, 93, 58, 97, 99, 116, 105, 118, 101, 44, 32, 105, 110, 112, + 117, 116, 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 58, + 97, 99, 116, 105, 118, 101, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, + 102, 105, 108, 101, 45, 117, 112, 108, 111, 97, 100, 45, 98, 117, 116, 116, + 111, 110, 44, 32, 98, 117, 116, 116, 111, 110, 58, 97, 99, 116, 105, 118, + 101, 32, 123, 32, 98, 111, 114, 100, 101, 114, 45, 115, 116, 121, 108, 101, + 58, 32, 105, 110, 115, 101, 116, 32, 125, 32, 105, 110, 112, 117, 116, 91, + 116, 121, 112, 101, 61, 34, 98, 117, 116, 116, 111, 110, 34, 93, 58, 97, + 99, 116, 105, 118, 101, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, + 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 117, 98, 109, + 105, 116, 34, 93, 58, 97, 99, 116, 105, 118, 101, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, - 61, 34, 102, 105, 108, 101, 34, 93, 58, 97, 99, 116, 105, 118, 101, 58, - 100, 105, 115, 97, 98, 108, 101, 100, 58, 58, 45, 119, 101, 98, 107, 105, - 116, 45, 102, 105, 108, 101, 45, 117, 112, 108, 111, 97, 100, 45, 98, 117, - 116, 116, 111, 110, 44, 32, 98, 117, 116, 116, 111, 110, 58, 97, 99, 116, - 105, 118, 101, 58, 100, 105, 115, 97, 98, 108, 101, 100, 32, 123, 32, 98, - 111, 114, 100, 101, 114, 45, 115, 116, 121, 108, 101, 58, 32, 111, 117, 116, - 115, 101, 116, 32, 125, 32, 97, 114, 101, 97, 44, 32, 112, 97, 114, 97, - 109, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, - 101, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, - 99, 104, 101, 99, 107, 98, 111, 120, 34, 93, 32, 123, 32, 45, 119, 101, - 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, - 32, 99, 104, 101, 99, 107, 98, 111, 120, 59, 32, 45, 119, 101, 98, 107, - 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, - 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 125, 32, 105, 110, 112, - 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 97, 100, 105, 111, 34, 93, - 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, - 114, 97, 110, 99, 101, 58, 32, 114, 97, 100, 105, 111, 59, 32, 45, 119, - 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, - 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 125, 32, - 107, 101, 121, 103, 101, 110, 44, 32, 115, 101, 108, 101, 99, 116, 32, 123, - 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, - 110, 99, 101, 58, 32, 109, 101, 110, 117, 108, 105, 115, 116, 59, 32, 45, - 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, - 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 45, + 61, 34, 114, 101, 115, 101, 116, 34, 93, 58, 97, 99, 116, 105, 118, 101, + 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 105, 110, 112, 117, 116, + 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 58, 97, 99, + 116, 105, 118, 101, 58, 100, 105, 115, 97, 98, 108, 101, 100, 58, 58, 45, + 119, 101, 98, 107, 105, 116, 45, 102, 105, 108, 101, 45, 117, 112, 108, 111, + 97, 100, 45, 98, 117, 116, 116, 111, 110, 44, 32, 98, 117, 116, 116, 111, + 110, 58, 97, 99, 116, 105, 118, 101, 58, 100, 105, 115, 97, 98, 108, 101, + 100, 32, 123, 32, 98, 111, 114, 100, 101, 114, 45, 115, 116, 121, 108, 101, + 58, 32, 111, 117, 116, 115, 101, 116, 32, 125, 32, 97, 114, 101, 97, 44, + 32, 112, 97, 114, 97, 109, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, + 58, 32, 110, 111, 110, 101, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, + 121, 112, 101, 61, 34, 99, 104, 101, 99, 107, 98, 111, 120, 34, 93, 32, + 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, + 97, 110, 99, 101, 58, 32, 99, 104, 101, 99, 107, 98, 111, 120, 59, 32, + 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, + 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, + 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 97, + 100, 105, 111, 34, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, + 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 114, 97, 100, 105, + 111, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, + 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, + 120, 59, 32, 125, 32, 107, 101, 121, 103, 101, 110, 44, 32, 115, 101, 108, + 101, 99, 116, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, + 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 109, 101, 110, 117, 108, 105, + 115, 116, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, + 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, + 111, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, + 97, 108, 105, 103, 110, 58, 32, 99, 101, 110, 116, 101, 114, 59, 32, 98, + 111, 114, 100, 101, 114, 58, 32, 49, 112, 120, 32, 115, 111, 108, 105, 100, + 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 114, 100, 101, 114, + 45, 114, 97, 100, 105, 117, 115, 58, 32, 53, 112, 120, 59, 32, 119, 104, + 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 112, 114, 101, 59, 32, + 45, 119, 101, 98, 107, 105, 116, 45, 114, 116, 108, 45, 111, 114, 100, 101, + 114, 105, 110, 103, 58, 32, 108, 111, 103, 105, 99, 97, 108, 59, 32, 99, + 111, 108, 111, 114, 58, 32, 98, 108, 97, 99, 107, 59, 32, 98, 97, 99, + 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 119, + 104, 105, 116, 101, 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, 100, 101, + 102, 97, 117, 108, 116, 59, 32, 125, 32, 115, 101, 108, 101, 99, 116, 91, + 115, 105, 122, 101, 93, 44, 32, 115, 101, 108, 101, 99, 116, 91, 109, 117, + 108, 116, 105, 112, 108, 101, 93, 44, 32, 115, 101, 108, 101, 99, 116, 91, + 115, 105, 122, 101, 93, 91, 109, 117, 108, 116, 105, 112, 108, 101, 93, 32, + 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, + 97, 110, 99, 101, 58, 32, 108, 105, 115, 116, 98, 111, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 97, 108, 105, 103, 110, - 58, 32, 99, 101, 110, 116, 101, 114, 59, 32, 98, 111, 114, 100, 101, 114, - 58, 32, 49, 112, 120, 32, 115, 111, 108, 105, 100, 59, 32, 45, 119, 101, - 98, 107, 105, 116, 45, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, - 117, 115, 58, 32, 53, 112, 120, 59, 32, 119, 104, 105, 116, 101, 45, 115, - 112, 97, 99, 101, 58, 32, 112, 114, 101, 59, 32, 45, 119, 101, 98, 107, - 105, 116, 45, 114, 116, 108, 45, 111, 114, 100, 101, 114, 105, 110, 103, 58, - 32, 108, 111, 103, 105, 99, 97, 108, 59, 32, 99, 111, 108, 111, 114, 58, - 32, 98, 108, 97, 99, 107, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, - 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 119, 104, 105, 116, 101, 59, - 32, 99, 117, 114, 115, 111, 114, 58, 32, 100, 101, 102, 97, 117, 108, 116, - 59, 32, 125, 32, 115, 101, 108, 101, 99, 116, 91, 115, 105, 122, 101, 93, - 44, 32, 115, 101, 108, 101, 99, 116, 91, 109, 117, 108, 116, 105, 112, 108, - 101, 93, 44, 32, 115, 101, 108, 101, 99, 116, 91, 115, 105, 122, 101, 93, - 91, 109, 117, 108, 116, 105, 112, 108, 101, 93, 32, 123, 32, 45, 119, 101, - 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, - 32, 108, 105, 115, 116, 98, 111, 120, 59, 32, 45, 119, 101, 98, 107, 105, - 116, 45, 98, 111, 120, 45, 97, 108, 105, 103, 110, 58, 32, 115, 116, 97, - 114, 116, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, 112, 120, 32, - 105, 110, 115, 101, 116, 32, 103, 114, 97, 121, 59, 32, 45, 119, 101, 98, - 107, 105, 116, 45, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, 117, - 115, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 119, 104, 105, 116, - 101, 45, 115, 112, 97, 99, 101, 58, 32, 105, 110, 105, 116, 105, 97, 108, - 59, 32, 125, 32, 115, 101, 108, 101, 99, 116, 91, 115, 105, 122, 101, 61, - 34, 48, 34, 93, 44, 32, 115, 101, 108, 101, 99, 116, 91, 115, 105, 122, - 101, 61, 34, 49, 34, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, - 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 109, 101, 110, - 117, 108, 105, 115, 116, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, - 111, 120, 45, 97, 108, 105, 103, 110, 58, 32, 99, 101, 110, 116, 101, 114, - 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, 112, 120, 32, 115, 111, - 108, 105, 100, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 114, - 100, 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 53, 112, 120, 59, - 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 112, 114, - 101, 59, 32, 125, 32, 100, 97, 116, 97, 108, 105, 115, 116, 32, 123, 32, - 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 59, 32, 125, - 32, 111, 112, 116, 103, 114, 111, 117, 112, 32, 123, 32, 102, 111, 110, 116, - 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 101, 114, 59, - 32, 125, 32, 111, 112, 116, 105, 111, 110, 32, 123, 32, 102, 111, 110, 116, - 45, 119, 101, 105, 103, 104, 116, 58, 32, 110, 111, 114, 109, 97, 108, 59, - 32, 125, 32, 112, 114, 111, 103, 114, 101, 115, 115, 32, 123, 32, 45, 119, + 58, 32, 115, 116, 97, 114, 116, 59, 32, 98, 111, 114, 100, 101, 114, 58, + 32, 49, 112, 120, 32, 105, 110, 115, 101, 116, 32, 103, 114, 97, 121, 59, + 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 114, 100, 101, 114, 45, + 114, 97, 100, 105, 117, 115, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, + 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 105, 110, + 105, 116, 105, 97, 108, 59, 32, 125, 32, 115, 101, 108, 101, 99, 116, 91, + 115, 105, 122, 101, 61, 34, 48, 34, 93, 44, 32, 115, 101, 108, 101, 99, + 116, 91, 115, 105, 122, 101, 61, 34, 49, 34, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, - 58, 32, 112, 114, 111, 103, 114, 101, 115, 115, 45, 98, 97, 114, 59, 32, - 112, 97, 100, 100, 105, 110, 103, 58, 32, 105, 110, 105, 116, 105, 97, 108, - 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 105, 110, 105, 116, 105, 97, - 108, 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, 50, 112, 120, 59, 32, - 125, 32, 112, 114, 111, 103, 114, 101, 115, 115, 58, 58, 45, 119, 101, 98, - 107, 105, 116, 45, 112, 114, 111, 103, 114, 101, 115, 115, 45, 98, 97, 114, + 58, 32, 109, 101, 110, 117, 108, 105, 115, 116, 59, 32, 45, 119, 101, 98, + 107, 105, 116, 45, 98, 111, 120, 45, 97, 108, 105, 103, 110, 58, 32, 99, + 101, 110, 116, 101, 114, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, + 112, 120, 32, 115, 111, 108, 105, 100, 59, 32, 45, 119, 101, 98, 107, 105, + 116, 45, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, + 32, 53, 112, 120, 59, 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, + 101, 58, 32, 112, 114, 101, 59, 32, 125, 32, 100, 97, 116, 97, 108, 105, + 115, 116, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, + 110, 101, 59, 32, 125, 32, 111, 112, 116, 103, 114, 111, 117, 112, 32, 123, + 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, + 108, 100, 101, 114, 59, 32, 125, 32, 111, 112, 116, 105, 111, 110, 32, 123, + 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 110, 111, + 114, 109, 97, 108, 59, 32, 125, 32, 112, 114, 111, 103, 114, 101, 115, 115, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 112, 114, 111, 103, 114, 101, 115, 115, 45, - 98, 97, 114, 59, 32, 125, 32, 100, 97, 116, 97, 103, 114, 105, 100, 32, - 123, 32, 104, 101, 105, 103, 104, 116, 58, 32, 49, 53, 48, 112, 120, 59, - 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, - 110, 99, 101, 58, 32, 100, 97, 116, 97, 103, 114, 105, 100, 59, 32, 45, - 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, - 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 45, - 119, 101, 98, 107, 105, 116, 45, 114, 116, 108, 45, 111, 114, 100, 101, 114, - 105, 110, 103, 58, 32, 108, 111, 103, 105, 99, 97, 108, 59, 32, 99, 111, - 108, 111, 114, 58, 32, 98, 108, 97, 99, 107, 59, 32, 98, 97, 99, 107, - 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 119, 104, - 105, 116, 101, 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, 100, 101, 102, - 97, 117, 108, 116, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, 112, - 120, 32, 105, 110, 115, 101, 116, 32, 103, 114, 97, 121, 59, 32, 119, 104, - 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 105, 110, 105, 116, 105, - 97, 108, 59, 32, 125, 32, 117, 44, 32, 105, 110, 115, 32, 123, 32, 116, - 101, 120, 116, 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, 110, 58, 32, - 117, 110, 100, 101, 114, 108, 105, 110, 101, 32, 125, 32, 115, 116, 114, 111, - 110, 103, 44, 32, 98, 32, 123, 32, 102, 111, 110, 116, 45, 119, 101, 105, - 103, 104, 116, 58, 32, 98, 111, 108, 100, 101, 114, 32, 125, 32, 105, 44, - 32, 99, 105, 116, 101, 44, 32, 101, 109, 44, 32, 118, 97, 114, 44, 32, - 97, 100, 100, 114, 101, 115, 115, 32, 123, 32, 102, 111, 110, 116, 45, 115, - 116, 121, 108, 101, 58, 32, 105, 116, 97, 108, 105, 99, 32, 125, 32, 116, - 116, 44, 32, 99, 111, 100, 101, 44, 32, 107, 98, 100, 44, 32, 115, 97, - 109, 112, 32, 123, 32, 102, 111, 110, 116, 45, 102, 97, 109, 105, 108, 121, - 58, 32, 109, 111, 110, 111, 115, 112, 97, 99, 101, 32, 125, 32, 112, 114, - 101, 44, 32, 120, 109, 112, 44, 32, 112, 108, 97, 105, 110, 116, 101, 120, - 116, 44, 32, 108, 105, 115, 116, 105, 110, 103, 32, 123, 32, 100, 105, 115, - 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 102, 111, 110, - 116, 45, 102, 97, 109, 105, 108, 121, 58, 32, 109, 111, 110, 111, 115, 112, - 97, 99, 101, 59, 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, - 58, 32, 112, 114, 101, 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, 49, - 95, 95, 113, 101, 109, 32, 48, 32, 125, 32, 98, 105, 103, 32, 123, 32, - 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 108, 97, 114, 103, 101, - 114, 32, 125, 32, 115, 109, 97, 108, 108, 32, 123, 32, 102, 111, 110, 116, - 45, 115, 105, 122, 101, 58, 32, 115, 109, 97, 108, 108, 101, 114, 32, 125, - 32, 115, 44, 32, 115, 116, 114, 105, 107, 101, 44, 32, 100, 101, 108, 32, - 123, 32, 116, 101, 120, 116, 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, - 110, 58, 32, 108, 105, 110, 101, 45, 116, 104, 114, 111, 117, 103, 104, 32, - 125, 32, 115, 117, 98, 32, 123, 32, 118, 101, 114, 116, 105, 99, 97, 108, - 45, 97, 108, 105, 103, 110, 58, 32, 115, 117, 98, 59, 32, 102, 111, 110, - 116, 45, 115, 105, 122, 101, 58, 32, 115, 109, 97, 108, 108, 101, 114, 32, - 125, 32, 115, 117, 112, 32, 123, 32, 118, 101, 114, 116, 105, 99, 97, 108, - 45, 97, 108, 105, 103, 110, 58, 32, 115, 117, 112, 101, 114, 59, 32, 102, - 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 115, 109, 97, 108, 108, 101, - 114, 32, 125, 32, 110, 111, 98, 114, 32, 123, 32, 119, 104, 105, 116, 101, - 45, 115, 112, 97, 99, 101, 58, 32, 110, 111, 119, 114, 97, 112, 32, 125, - 32, 58, 102, 111, 99, 117, 115, 32, 123, 32, 111, 117, 116, 108, 105, 110, - 101, 58, 32, 97, 117, 116, 111, 32, 53, 112, 120, 32, 45, 119, 101, 98, - 107, 105, 116, 45, 102, 111, 99, 117, 115, 45, 114, 105, 110, 103, 45, 99, - 111, 108, 111, 114, 32, 125, 32, 104, 116, 109, 108, 58, 102, 111, 99, 117, - 115, 44, 32, 98, 111, 100, 121, 58, 102, 111, 99, 117, 115, 44, 32, 105, - 110, 112, 117, 116, 91, 114, 101, 97, 100, 111, 110, 108, 121, 93, 58, 102, - 111, 99, 117, 115, 32, 123, 32, 111, 117, 116, 108, 105, 110, 101, 58, 32, - 110, 111, 110, 101, 32, 125, 32, 105, 110, 112, 117, 116, 58, 102, 111, 99, - 117, 115, 44, 32, 116, 101, 120, 116, 97, 114, 101, 97, 58, 102, 111, 99, - 117, 115, 44, 32, 105, 115, 105, 110, 100, 101, 120, 58, 102, 111, 99, 117, - 115, 44, 32, 107, 101, 121, 103, 101, 110, 58, 102, 111, 99, 117, 115, 44, - 32, 115, 101, 108, 101, 99, 116, 58, 102, 111, 99, 117, 115, 32, 123, 32, - 111, 117, 116, 108, 105, 110, 101, 45, 111, 102, 102, 115, 101, 116, 58, 32, - 45, 50, 112, 120, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, - 101, 61, 34, 98, 117, 116, 116, 111, 110, 34, 93, 58, 102, 111, 99, 117, - 115, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 99, - 104, 101, 99, 107, 98, 111, 120, 34, 93, 58, 102, 111, 99, 117, 115, 44, - 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, - 101, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, - 91, 116, 121, 112, 101, 61, 34, 104, 105, 100, 100, 101, 110, 34, 93, 58, - 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, - 101, 61, 34, 105, 109, 97, 103, 101, 34, 93, 58, 102, 111, 99, 117, 115, - 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 97, - 100, 105, 111, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, - 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 101, 115, 101, 116, 34, 93, + 98, 97, 114, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 105, 110, + 105, 116, 105, 97, 108, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 105, + 110, 105, 116, 105, 97, 108, 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, + 50, 112, 120, 59, 32, 125, 32, 112, 114, 111, 103, 114, 101, 115, 115, 58, + 58, 45, 119, 101, 98, 107, 105, 116, 45, 112, 114, 111, 103, 114, 101, 115, + 115, 45, 98, 97, 114, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, + 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 112, 114, 111, 103, + 114, 101, 115, 115, 45, 98, 97, 114, 59, 32, 125, 32, 100, 97, 116, 97, + 103, 114, 105, 100, 32, 123, 32, 104, 101, 105, 103, 104, 116, 58, 32, 49, + 53, 48, 112, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, + 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 100, 97, 116, 97, 103, 114, + 105, 100, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, + 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, + 111, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 114, 116, 108, 45, + 111, 114, 100, 101, 114, 105, 110, 103, 58, 32, 108, 111, 103, 105, 99, 97, + 108, 59, 32, 99, 111, 108, 111, 114, 58, 32, 98, 108, 97, 99, 107, 59, + 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, + 114, 58, 32, 119, 104, 105, 116, 101, 59, 32, 99, 117, 114, 115, 111, 114, + 58, 32, 100, 101, 102, 97, 117, 108, 116, 59, 32, 98, 111, 114, 100, 101, + 114, 58, 32, 49, 112, 120, 32, 105, 110, 115, 101, 116, 32, 103, 114, 97, + 121, 59, 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, + 105, 110, 105, 116, 105, 97, 108, 59, 32, 125, 32, 117, 44, 32, 105, 110, + 115, 32, 123, 32, 116, 101, 120, 116, 45, 100, 101, 99, 111, 114, 97, 116, + 105, 111, 110, 58, 32, 117, 110, 100, 101, 114, 108, 105, 110, 101, 32, 125, + 32, 115, 116, 114, 111, 110, 103, 44, 32, 98, 32, 123, 32, 102, 111, 110, + 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 101, 114, + 32, 125, 32, 105, 44, 32, 99, 105, 116, 101, 44, 32, 101, 109, 44, 32, + 118, 97, 114, 44, 32, 97, 100, 100, 114, 101, 115, 115, 32, 123, 32, 102, + 111, 110, 116, 45, 115, 116, 121, 108, 101, 58, 32, 105, 116, 97, 108, 105, + 99, 32, 125, 32, 116, 116, 44, 32, 99, 111, 100, 101, 44, 32, 107, 98, + 100, 44, 32, 115, 97, 109, 112, 32, 123, 32, 102, 111, 110, 116, 45, 102, + 97, 109, 105, 108, 121, 58, 32, 109, 111, 110, 111, 115, 112, 97, 99, 101, + 32, 125, 32, 112, 114, 101, 44, 32, 120, 109, 112, 44, 32, 112, 108, 97, + 105, 110, 116, 101, 120, 116, 44, 32, 108, 105, 115, 116, 105, 110, 103, 32, + 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, + 59, 32, 102, 111, 110, 116, 45, 102, 97, 109, 105, 108, 121, 58, 32, 109, + 111, 110, 111, 115, 112, 97, 99, 101, 59, 32, 119, 104, 105, 116, 101, 45, + 115, 112, 97, 99, 101, 58, 32, 112, 114, 101, 59, 32, 109, 97, 114, 103, + 105, 110, 58, 32, 49, 95, 95, 113, 101, 109, 32, 48, 32, 125, 32, 98, + 105, 103, 32, 123, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, + 108, 97, 114, 103, 101, 114, 32, 125, 32, 115, 109, 97, 108, 108, 32, 123, + 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 115, 109, 97, 108, + 108, 101, 114, 32, 125, 32, 115, 44, 32, 115, 116, 114, 105, 107, 101, 44, + 32, 100, 101, 108, 32, 123, 32, 116, 101, 120, 116, 45, 100, 101, 99, 111, + 114, 97, 116, 105, 111, 110, 58, 32, 108, 105, 110, 101, 45, 116, 104, 114, + 111, 117, 103, 104, 32, 125, 32, 115, 117, 98, 32, 123, 32, 118, 101, 114, + 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 115, 117, 98, + 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 115, 109, 97, + 108, 108, 101, 114, 32, 125, 32, 115, 117, 112, 32, 123, 32, 118, 101, 114, + 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 115, 117, 112, + 101, 114, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 115, + 109, 97, 108, 108, 101, 114, 32, 125, 32, 110, 111, 98, 114, 32, 123, 32, + 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 110, 111, 119, + 114, 97, 112, 32, 125, 32, 58, 102, 111, 99, 117, 115, 32, 123, 32, 111, + 117, 116, 108, 105, 110, 101, 58, 32, 97, 117, 116, 111, 32, 53, 112, 120, + 32, 45, 119, 101, 98, 107, 105, 116, 45, 102, 111, 99, 117, 115, 45, 114, + 105, 110, 103, 45, 99, 111, 108, 111, 114, 32, 125, 32, 104, 116, 109, 108, + 58, 102, 111, 99, 117, 115, 44, 32, 98, 111, 100, 121, 58, 102, 111, 99, + 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 114, 101, 97, 100, 111, 110, + 108, 121, 93, 58, 102, 111, 99, 117, 115, 32, 123, 32, 111, 117, 116, 108, + 105, 110, 101, 58, 32, 110, 111, 110, 101, 32, 125, 32, 105, 110, 112, 117, + 116, 58, 102, 111, 99, 117, 115, 44, 32, 116, 101, 120, 116, 97, 114, 101, + 97, 58, 102, 111, 99, 117, 115, 44, 32, 105, 115, 105, 110, 100, 101, 120, + 58, 102, 111, 99, 117, 115, 44, 32, 107, 101, 121, 103, 101, 110, 58, 102, + 111, 99, 117, 115, 44, 32, 115, 101, 108, 101, 99, 116, 58, 102, 111, 99, + 117, 115, 32, 123, 32, 111, 117, 116, 108, 105, 110, 101, 45, 111, 102, 102, + 115, 101, 116, 58, 32, 45, 50, 112, 120, 32, 125, 32, 105, 110, 112, 117, + 116, 91, 116, 121, 112, 101, 61, 34, 98, 117, 116, 116, 111, 110, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, - 112, 101, 61, 34, 115, 101, 97, 114, 99, 104, 34, 93, 58, 102, 111, 99, - 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, - 115, 117, 98, 109, 105, 116, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, - 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, - 34, 93, 58, 102, 111, 99, 117, 115, 58, 58, 45, 119, 101, 98, 107, 105, - 116, 45, 102, 105, 108, 101, 45, 117, 112, 108, 111, 97, 100, 45, 98, 117, - 116, 116, 111, 110, 32, 123, 32, 111, 117, 116, 108, 105, 110, 101, 45, 111, - 102, 102, 115, 101, 116, 58, 32, 48, 32, 125, 32, 97, 58, 45, 119, 101, - 98, 107, 105, 116, 45, 97, 110, 121, 45, 108, 105, 110, 107, 32, 123, 32, - 99, 111, 108, 111, 114, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 108, - 105, 110, 107, 59, 32, 116, 101, 120, 116, 45, 100, 101, 99, 111, 114, 97, - 116, 105, 111, 110, 58, 32, 117, 110, 100, 101, 114, 108, 105, 110, 101, 59, - 32, 99, 117, 114, 115, 111, 114, 58, 32, 97, 117, 116, 111, 59, 32, 125, - 32, 97, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 45, 108, - 105, 110, 107, 58, 97, 99, 116, 105, 118, 101, 32, 123, 32, 99, 111, 108, - 111, 114, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 99, 116, 105, - 118, 101, 108, 105, 110, 107, 32, 125, 32, 114, 117, 98, 121, 44, 32, 114, - 116, 32, 123, 32, 116, 101, 120, 116, 45, 105, 110, 100, 101, 110, 116, 58, - 32, 48, 59, 32, 108, 105, 110, 101, 45, 104, 101, 105, 103, 104, 116, 58, - 32, 110, 111, 114, 109, 97, 108, 59, 32, 125, 32, 114, 117, 98, 121, 32, - 62, 32, 114, 116, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, - 98, 108, 111, 99, 107, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, - 58, 32, 54, 48, 37, 59, 32, 116, 101, 120, 116, 45, 97, 108, 105, 103, - 110, 58, 32, 99, 101, 110, 116, 101, 114, 59, 32, 125, 32, 114, 117, 98, - 121, 32, 62, 32, 114, 112, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, - 58, 32, 110, 111, 110, 101, 59, 32, 125, 32, 110, 111, 102, 114, 97, 109, - 101, 115, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, - 110, 101, 32, 125, 32, 102, 114, 97, 109, 101, 115, 101, 116, 44, 32, 102, - 114, 97, 109, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, - 98, 108, 111, 99, 107, 32, 125, 32, 102, 114, 97, 109, 101, 115, 101, 116, - 32, 123, 32, 98, 111, 114, 100, 101, 114, 45, 99, 111, 108, 111, 114, 58, - 32, 105, 110, 104, 101, 114, 105, 116, 32, 125, 32, 105, 102, 114, 97, 109, - 101, 32, 123, 32, 98, 111, 114, 100, 101, 114, 58, 32, 50, 112, 120, 32, - 105, 110, 115, 101, 116, 32, 125 + 112, 101, 61, 34, 99, 104, 101, 99, 107, 98, 111, 120, 34, 93, 58, 102, + 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, + 61, 34, 102, 105, 108, 101, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, + 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 104, 105, 100, 100, + 101, 110, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, + 116, 91, 116, 121, 112, 101, 61, 34, 105, 109, 97, 103, 101, 34, 93, 58, + 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, + 101, 61, 34, 114, 97, 100, 105, 111, 34, 93, 58, 102, 111, 99, 117, 115, + 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 101, + 115, 101, 116, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, + 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 101, 97, 114, 99, 104, 34, + 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 116, + 121, 112, 101, 61, 34, 115, 117, 98, 109, 105, 116, 34, 93, 58, 102, 111, + 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, + 34, 102, 105, 108, 101, 34, 93, 58, 102, 111, 99, 117, 115, 58, 58, 45, + 119, 101, 98, 107, 105, 116, 45, 102, 105, 108, 101, 45, 117, 112, 108, 111, + 97, 100, 45, 98, 117, 116, 116, 111, 110, 32, 123, 32, 111, 117, 116, 108, + 105, 110, 101, 45, 111, 102, 102, 115, 101, 116, 58, 32, 48, 32, 125, 32, + 97, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 45, 108, 105, + 110, 107, 32, 123, 32, 99, 111, 108, 111, 114, 58, 32, 45, 119, 101, 98, + 107, 105, 116, 45, 108, 105, 110, 107, 59, 32, 116, 101, 120, 116, 45, 100, + 101, 99, 111, 114, 97, 116, 105, 111, 110, 58, 32, 117, 110, 100, 101, 114, + 108, 105, 110, 101, 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, 97, 117, + 116, 111, 59, 32, 125, 32, 97, 58, 45, 119, 101, 98, 107, 105, 116, 45, + 97, 110, 121, 45, 108, 105, 110, 107, 58, 97, 99, 116, 105, 118, 101, 32, + 123, 32, 99, 111, 108, 111, 114, 58, 32, 45, 119, 101, 98, 107, 105, 116, + 45, 97, 99, 116, 105, 118, 101, 108, 105, 110, 107, 32, 125, 32, 114, 117, + 98, 121, 44, 32, 114, 116, 32, 123, 32, 116, 101, 120, 116, 45, 105, 110, + 100, 101, 110, 116, 58, 32, 48, 59, 32, 108, 105, 110, 101, 45, 104, 101, + 105, 103, 104, 116, 58, 32, 110, 111, 114, 109, 97, 108, 59, 32, 125, 32, + 114, 117, 98, 121, 32, 62, 32, 114, 116, 32, 123, 32, 100, 105, 115, 112, + 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 102, 111, 110, 116, + 45, 115, 105, 122, 101, 58, 32, 54, 48, 37, 59, 32, 116, 101, 120, 116, + 45, 97, 108, 105, 103, 110, 58, 32, 99, 101, 110, 116, 101, 114, 59, 32, + 125, 32, 114, 117, 98, 121, 32, 62, 32, 114, 112, 32, 123, 32, 100, 105, + 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 59, 32, 125, 32, 110, + 111, 102, 114, 97, 109, 101, 115, 32, 123, 32, 100, 105, 115, 112, 108, 97, + 121, 58, 32, 110, 111, 110, 101, 32, 125, 32, 102, 114, 97, 109, 101, 115, + 101, 116, 44, 32, 102, 114, 97, 109, 101, 32, 123, 32, 100, 105, 115, 112, + 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, 102, 114, 97, + 109, 101, 115, 101, 116, 32, 123, 32, 98, 111, 114, 100, 101, 114, 45, 99, + 111, 108, 111, 114, 58, 32, 105, 110, 104, 101, 114, 105, 116, 32, 125, 32, + 105, 102, 114, 97, 109, 101, 32, 123, 32, 98, 111, 114, 100, 101, 114, 58, + 32, 50, 112, 120, 32, 105, 110, 115, 101, 116, 32, 125 }; extern const char quirksUserAgentStyleSheet[359] = { 105, 109, 103, 91, 97, 108, 105, 103, 110, 61, 34, 108, 101, 102, 116, 34, @@ -608,31 +609,31 @@ extern const char quirksUserAgentStyleSheet[359] = { 32, 123, 32, 109, 97, 114, 103, 105, 110, 45, 98, 111, 116, 116, 111, 109, 58, 32, 49, 101, 109, 32, 125 }; -extern const char svgUserAgentStyleSheet[350] = { - 110, 97, 109, 101, 115, 112, 97, 99, 101, 32, 34, 104, 116, 116, 112, 58, - 47, 47, 119, 119, 119, 46, 119, 51, 46, 111, 114, 103, 47, 50, 48, 48, - 48, 47, 115, 118, 103, 34, 59, 32, 115, 118, 103, 58, 110, 111, 116, 40, - 58, 114, 111, 111, 116, 41, 44, 32, 115, 121, 109, 98, 111, 108, 44, 32, - 105, 109, 97, 103, 101, 44, 32, 109, 97, 114, 107, 101, 114, 44, 32, 112, - 97, 116, 116, 101, 114, 110, 44, 32, 102, 111, 114, 101, 105, 103, 110, 79, - 98, 106, 101, 99, 116, 32, 123, 32, 111, 118, 101, 114, 102, 108, 111, 119, - 58, 32, 104, 105, 100, 100, 101, 110, 32, 125, 32, 115, 118, 103, 32, 123, - 32, 119, 105, 100, 116, 104, 58, 32, 49, 48, 48, 37, 59, 32, 104, 101, - 105, 103, 104, 116, 58, 32, 49, 48, 48, 37, 59, 32, 125, 32, 116, 101, - 120, 116, 44, 32, 102, 111, 114, 101, 105, 103, 110, 79, 98, 106, 101, 99, - 116, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, - 99, 107, 32, 125, 32, 116, 101, 120, 116, 44, 32, 116, 115, 112, 97, 110, - 44, 32, 116, 101, 120, 116, 80, 97, 116, 104, 32, 123, 32, 119, 104, 105, - 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 110, 111, 119, 114, 97, 112, - 32, 125, 32, 116, 101, 120, 116, 44, 32, 116, 115, 112, 97, 110, 44, 32, - 116, 114, 101, 102, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 116, - 101, 120, 116, 45, 115, 105, 122, 101, 45, 97, 100, 106, 117, 115, 116, 58, - 32, 110, 111, 110, 101, 59, 32, 125, 32, 58, 102, 111, 99, 117, 115, 32, - 123, 32, 111, 117, 116, 108, 105, 110, 101, 58, 32, 97, 117, 116, 111, 32, - 53, 112, 120, 32, 45, 119, 101, 98, 107, 105, 116, 45, 102, 111, 99, 117, - 115, 45, 114, 105, 110, 103, 45, 99, 111, 108, 111, 114, 32, 125 +extern const char svgUserAgentStyleSheet[351] = { + 64, 110, 97, 109, 101, 115, 112, 97, 99, 101, 32, 34, 104, 116, 116, 112, + 58, 47, 47, 119, 119, 119, 46, 119, 51, 46, 111, 114, 103, 47, 50, 48, + 48, 48, 47, 115, 118, 103, 34, 59, 32, 115, 118, 103, 58, 110, 111, 116, + 40, 58, 114, 111, 111, 116, 41, 44, 32, 115, 121, 109, 98, 111, 108, 44, + 32, 105, 109, 97, 103, 101, 44, 32, 109, 97, 114, 107, 101, 114, 44, 32, + 112, 97, 116, 116, 101, 114, 110, 44, 32, 102, 111, 114, 101, 105, 103, 110, + 79, 98, 106, 101, 99, 116, 32, 123, 32, 111, 118, 101, 114, 102, 108, 111, + 119, 58, 32, 104, 105, 100, 100, 101, 110, 32, 125, 32, 115, 118, 103, 32, + 123, 32, 119, 105, 100, 116, 104, 58, 32, 49, 48, 48, 37, 59, 32, 104, + 101, 105, 103, 104, 116, 58, 32, 49, 48, 48, 37, 59, 32, 125, 32, 116, + 101, 120, 116, 44, 32, 102, 111, 114, 101, 105, 103, 110, 79, 98, 106, 101, + 99, 116, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, + 111, 99, 107, 32, 125, 32, 116, 101, 120, 116, 44, 32, 116, 115, 112, 97, + 110, 44, 32, 116, 101, 120, 116, 80, 97, 116, 104, 32, 123, 32, 119, 104, + 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 110, 111, 119, 114, 97, + 112, 32, 125, 32, 116, 101, 120, 116, 44, 32, 116, 115, 112, 97, 110, 44, + 32, 116, 114, 101, 102, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, + 116, 101, 120, 116, 45, 115, 105, 122, 101, 45, 97, 100, 106, 117, 115, 116, + 58, 32, 110, 111, 110, 101, 59, 32, 125, 32, 58, 102, 111, 99, 117, 115, + 32, 123, 32, 111, 117, 116, 108, 105, 110, 101, 58, 32, 97, 117, 116, 111, + 32, 53, 112, 120, 32, 45, 119, 101, 98, 107, 105, 116, 45, 102, 111, 99, + 117, 115, 45, 114, 105, 110, 103, 45, 99, 111, 108, 111, 114, 32, 125 }; -extern const char sourceUserAgentStyleSheet[2016] = { +extern const char sourceUserAgentStyleSheet[2022] = { 98, 111, 100, 121, 32, 123, 32, 109, 97, 114, 103, 105, 110, 58, 32, 48, 32, 125, 32, 116, 97, 98, 108, 101, 32, 123, 32, 119, 105, 100, 116, 104, 58, 32, 49, 48, 48, 37, 59, 32, 98, 111, 114, 100, 101, 114, 45, 115, @@ -703,254 +704,257 @@ extern const char sourceUserAgentStyleSheet[2016] = { 45, 104, 116, 109, 108, 45, 101, 120, 116, 101, 114, 110, 97, 108, 45, 108, 105, 110, 107, 44, 32, 46, 119, 101, 98, 107, 105, 116, 45, 104, 116, 109, 108, 45, 114, 101, 115, 111, 117, 114, 99, 101, 45, 108, 105, 110, 107, 32, - 123, 32, 99, 111, 108, 111, 114, 58, 32, 125, 32, 46, 119, 101, 98, 107, - 105, 116, 45, 104, 116, 109, 108, 45, 101, 120, 116, 101, 114, 110, 97, 108, - 45, 108, 105, 110, 107, 32, 123, 32, 116, 101, 120, 116, 45, 100, 101, 99, - 111, 114, 97, 116, 105, 111, 110, 58, 32, 110, 111, 110, 101, 59, 32, 125, + 123, 32, 99, 111, 108, 111, 114, 58, 32, 35, 48, 48, 101, 59, 32, 125, 32, 46, 119, 101, 98, 107, 105, 116, 45, 104, 116, 109, 108, 45, 101, 120, - 116, 101, 114, 110, 97, 108, 45, 108, 105, 110, 107, 58, 104, 111, 118, 101, - 114, 32, 123, 32, 116, 101, 120, 116, 45, 100, 101, 99, 111, 114, 97, 116, - 105, 111, 110, 58, 32, 117, 110, 100, 101, 114, 108, 105, 110, 101, 59, 32, - 125, 32, 46, 119, 101, 98, 107, 105, 116, 45, 104, 116, 109, 108, 45, 99, - 111, 109, 109, 101, 110, 116, 32, 123, 32, 99, 111, 108, 111, 114, 58, 32, - 114, 103, 98, 40, 51, 53, 44, 32, 49, 49, 48, 44, 32, 51, 55, 41, - 59, 32, 125, 32, 46, 119, 101, 98, 107, 105, 116, 45, 104, 116, 109, 108, - 45, 100, 111, 99, 116, 121, 112, 101, 32, 123, 32, 99, 111, 108, 111, 114, - 58, 32, 114, 103, 98, 40, 49, 57, 50, 44, 32, 49, 57, 50, 44, 32, - 49, 57, 50, 41, 59, 32, 125, 32, 46, 119, 101, 98, 107, 105, 116, 45, - 104, 116, 109, 108, 45, 101, 110, 116, 105, 116, 121, 32, 123, 32, 114, 103, - 98, 40, 49, 51, 54, 44, 32, 49, 56, 44, 32, 49, 50, 56, 41, 59, - 32, 125, 32, 46, 119, 101, 98, 107, 105, 116, 45, 104, 116, 109, 108, 45, - 109, 101, 115, 115, 97, 103, 101, 45, 98, 117, 98, 98, 108, 101, 32, 123, - 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 104, 97, - 100, 111, 119, 58, 32, 98, 108, 97, 99, 107, 32, 48, 112, 120, 32, 50, - 112, 120, 32, 53, 112, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, - 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 57, - 112, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 114, 100, - 101, 114, 45, 102, 105, 116, 58, 32, 108, 105, 110, 101, 115, 59, 32, 109, - 105, 110, 45, 104, 101, 105, 103, 104, 116, 58, 32, 49, 51, 112, 120, 59, - 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 57, 112, 120, 59, - 32, 102, 111, 110, 116, 45, 102, 97, 109, 105, 108, 121, 58, 32, 76, 117, - 99, 105, 100, 97, 32, 71, 114, 97, 110, 100, 101, 44, 32, 115, 97, 110, - 115, 45, 115, 101, 114, 105, 102, 59, 32, 102, 111, 110, 116, 45, 119, 101, - 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 59, 32, 109, 97, 114, 103, - 105, 110, 58, 32, 54, 112, 120, 32, 50, 53, 112, 120, 59, 32, 112, 97, - 100, 100, 105, 110, 103, 58, 32, 48, 32, 55, 112, 120, 32, 49, 112, 120, - 59, 32, 125, 32, 46, 119, 101, 98, 107, 105, 116, 45, 104, 116, 109, 108, - 45, 119, 97, 114, 110, 105, 110, 103, 45, 109, 101, 115, 115, 97, 103, 101, - 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, - 108, 111, 114, 58, 32, 114, 103, 98, 40, 49, 48, 48, 37, 44, 32, 54, - 50, 37, 44, 32, 52, 50, 37, 41, 59, 32, 98, 111, 114, 100, 101, 114, - 58, 32, 50, 112, 120, 32, 115, 111, 108, 105, 100, 32, 114, 103, 98, 40, - 49, 48, 48, 37, 44, 32, 53, 50, 37, 44, 32, 50, 49, 37, 41, 59, - 32, 125, 32, 46, 119, 101, 98, 107, 105, 116, 45, 104, 116, 109, 108, 45, - 101, 114, 114, 111, 114, 45, 109, 101, 115, 115, 97, 103, 101, 32, 123, 32, - 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, - 58, 32, 114, 103, 98, 40, 49, 48, 48, 37, 44, 32, 52, 50, 37, 44, - 32, 52, 50, 37, 41, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 50, - 112, 120, 32, 115, 111, 108, 105, 100, 32, 114, 103, 98, 40, 49, 48, 48, - 37, 44, 32, 51, 49, 37, 44, 32, 51, 49, 37, 41, 59, 32, 125, 32, - 46, 119, 101, 98, 107, 105, 116, 45, 104, 116, 109, 108, 45, 109, 101, 115, - 115, 97, 103, 101, 45, 108, 105, 110, 101, 32, 123, 32, 112, 97, 100, 100, - 105, 110, 103, 45, 108, 101, 102, 116, 58, 32, 50, 51, 112, 120, 59, 32, - 116, 101, 120, 116, 45, 105, 110, 100, 101, 110, 116, 58, 32, 45, 50, 48, - 112, 120, 59, 32, 125, 32, 46, 119, 101, 98, 107, 105, 116, 45, 104, 116, - 109, 108, 45, 109, 101, 115, 115, 97, 103, 101, 45, 105, 99, 111, 110, 32, - 123, 32, 112, 111, 115, 105, 116, 105, 111, 110, 58, 32, 114, 101, 108, 97, - 116, 105, 118, 101, 59, 32, 116, 111, 112, 58, 32, 50, 112, 120, 59, 32, - 109, 97, 114, 103, 105, 110, 58, 32, 48, 32, 52, 112, 120, 59, 32, 125 + 116, 101, 114, 110, 97, 108, 45, 108, 105, 110, 107, 32, 123, 32, 116, 101, + 120, 116, 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, 110, 58, 32, 110, + 111, 110, 101, 59, 32, 125, 32, 46, 119, 101, 98, 107, 105, 116, 45, 104, + 116, 109, 108, 45, 101, 120, 116, 101, 114, 110, 97, 108, 45, 108, 105, 110, + 107, 58, 104, 111, 118, 101, 114, 32, 123, 32, 116, 101, 120, 116, 45, 100, + 101, 99, 111, 114, 97, 116, 105, 111, 110, 58, 32, 117, 110, 100, 101, 114, + 108, 105, 110, 101, 59, 32, 125, 32, 46, 119, 101, 98, 107, 105, 116, 45, + 104, 116, 109, 108, 45, 99, 111, 109, 109, 101, 110, 116, 32, 123, 32, 99, + 111, 108, 111, 114, 58, 32, 114, 103, 98, 40, 51, 53, 44, 32, 49, 49, + 48, 44, 32, 51, 55, 41, 59, 32, 125, 32, 46, 119, 101, 98, 107, 105, + 116, 45, 104, 116, 109, 108, 45, 100, 111, 99, 116, 121, 112, 101, 32, 123, + 32, 99, 111, 108, 111, 114, 58, 32, 114, 103, 98, 40, 49, 57, 50, 44, + 32, 49, 57, 50, 44, 32, 49, 57, 50, 41, 59, 32, 125, 32, 46, 119, + 101, 98, 107, 105, 116, 45, 104, 116, 109, 108, 45, 101, 110, 116, 105, 116, + 121, 32, 123, 32, 114, 103, 98, 40, 49, 51, 54, 44, 32, 49, 56, 44, + 32, 49, 50, 56, 41, 59, 32, 125, 32, 46, 119, 101, 98, 107, 105, 116, + 45, 104, 116, 109, 108, 45, 109, 101, 115, 115, 97, 103, 101, 45, 98, 117, + 98, 98, 108, 101, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, + 111, 120, 45, 115, 104, 97, 100, 111, 119, 58, 32, 98, 108, 97, 99, 107, + 32, 48, 112, 120, 32, 50, 112, 120, 32, 53, 112, 120, 59, 32, 45, 119, + 101, 98, 107, 105, 116, 45, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, + 105, 117, 115, 58, 32, 57, 112, 120, 59, 32, 45, 119, 101, 98, 107, 105, + 116, 45, 98, 111, 114, 100, 101, 114, 45, 102, 105, 116, 58, 32, 108, 105, + 110, 101, 115, 59, 32, 109, 105, 110, 45, 104, 101, 105, 103, 104, 116, 58, + 32, 49, 51, 112, 120, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, + 58, 32, 57, 112, 120, 59, 32, 102, 111, 110, 116, 45, 102, 97, 109, 105, + 108, 121, 58, 32, 76, 117, 99, 105, 100, 97, 32, 71, 114, 97, 110, 100, + 101, 44, 32, 115, 97, 110, 115, 45, 115, 101, 114, 105, 102, 59, 32, 102, + 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, + 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, 54, 112, 120, 32, 50, 53, + 112, 120, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 48, 32, 55, + 112, 120, 32, 49, 112, 120, 59, 32, 125, 32, 46, 119, 101, 98, 107, 105, + 116, 45, 104, 116, 109, 108, 45, 119, 97, 114, 110, 105, 110, 103, 45, 109, + 101, 115, 115, 97, 103, 101, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, + 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 114, 103, 98, 40, 49, + 48, 48, 37, 44, 32, 54, 50, 37, 44, 32, 52, 50, 37, 41, 59, 32, + 98, 111, 114, 100, 101, 114, 58, 32, 50, 112, 120, 32, 115, 111, 108, 105, + 100, 32, 114, 103, 98, 40, 49, 48, 48, 37, 44, 32, 53, 50, 37, 44, + 32, 50, 49, 37, 41, 59, 32, 125, 32, 46, 119, 101, 98, 107, 105, 116, + 45, 104, 116, 109, 108, 45, 101, 114, 114, 111, 114, 45, 109, 101, 115, 115, + 97, 103, 101, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, + 45, 99, 111, 108, 111, 114, 58, 32, 114, 103, 98, 40, 49, 48, 48, 37, + 44, 32, 52, 50, 37, 44, 32, 52, 50, 37, 41, 59, 32, 98, 111, 114, + 100, 101, 114, 58, 32, 50, 112, 120, 32, 115, 111, 108, 105, 100, 32, 114, + 103, 98, 40, 49, 48, 48, 37, 44, 32, 51, 49, 37, 44, 32, 51, 49, + 37, 41, 59, 32, 125, 32, 46, 119, 101, 98, 107, 105, 116, 45, 104, 116, + 109, 108, 45, 109, 101, 115, 115, 97, 103, 101, 45, 108, 105, 110, 101, 32, + 123, 32, 112, 97, 100, 100, 105, 110, 103, 45, 108, 101, 102, 116, 58, 32, + 50, 51, 112, 120, 59, 32, 116, 101, 120, 116, 45, 105, 110, 100, 101, 110, + 116, 58, 32, 45, 50, 48, 112, 120, 59, 32, 125, 32, 46, 119, 101, 98, + 107, 105, 116, 45, 104, 116, 109, 108, 45, 109, 101, 115, 115, 97, 103, 101, + 45, 105, 99, 111, 110, 32, 123, 32, 112, 111, 115, 105, 116, 105, 111, 110, + 58, 32, 114, 101, 108, 97, 116, 105, 118, 101, 59, 32, 116, 111, 112, 58, + 32, 50, 112, 120, 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, 48, 32, + 52, 112, 120, 59, 32, 125 }; -extern const char wmlUserAgentStyleSheet[3039] = { - 110, 97, 109, 101, 115, 112, 97, 99, 101, 32, 34, 104, 116, 116, 112, 58, - 47, 47, 119, 119, 119, 46, 119, 97, 112, 102, 111, 114, 117, 109, 46, 111, - 114, 103, 47, 68, 84, 68, 47, 119, 109, 108, 95, 49, 46, 49, 46, 120, - 109, 108, 34, 32, 119, 109, 108, 32, 123, 32, 100, 105, 115, 112, 108, 97, - 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, 104, 101, 97, 100, 32, - 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, - 125, 32, 109, 101, 116, 97, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, - 58, 32, 110, 111, 110, 101, 32, 125, 32, 97, 99, 99, 101, 115, 115, 32, - 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, - 125, 32, 99, 97, 114, 100, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, - 58, 32, 98, 108, 111, 99, 107, 59, 32, 109, 97, 114, 103, 105, 110, 58, - 32, 56, 112, 120, 32, 125, 32, 112, 32, 123, 32, 100, 105, 115, 112, 108, - 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 109, 97, 114, 103, 105, - 110, 58, 32, 49, 46, 48, 95, 95, 113, 101, 109, 32, 48, 112, 120, 32, - 125, 32, 116, 97, 98, 108, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, - 121, 58, 32, 116, 97, 98, 108, 101, 59, 32, 98, 111, 114, 100, 101, 114, - 45, 99, 111, 108, 108, 97, 112, 115, 101, 58, 32, 115, 101, 112, 97, 114, - 97, 116, 101, 59, 32, 98, 111, 114, 100, 101, 114, 45, 115, 112, 97, 99, - 105, 110, 103, 58, 32, 50, 112, 120, 59, 32, 98, 111, 114, 100, 101, 114, - 45, 99, 111, 108, 111, 114, 58, 32, 103, 114, 97, 121, 32, 125, 32, 116, - 97, 98, 108, 101, 32, 62, 32, 116, 114, 32, 123, 32, 118, 101, 114, 116, - 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 109, 105, 100, 100, - 108, 101, 59, 32, 125, 32, 116, 114, 32, 123, 32, 100, 105, 115, 112, 108, - 97, 121, 58, 32, 116, 97, 98, 108, 101, 45, 114, 111, 119, 59, 32, 118, - 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 105, - 110, 104, 101, 114, 105, 116, 59, 32, 98, 111, 114, 100, 101, 114, 45, 99, - 111, 108, 111, 114, 58, 32, 105, 110, 104, 101, 114, 105, 116, 32, 125, 32, - 116, 100, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, - 98, 108, 101, 45, 99, 101, 108, 108, 59, 32, 118, 101, 114, 116, 105, 99, - 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 105, 110, 104, 101, 114, 105, - 116, 32, 125, 32, 103, 111, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, - 58, 32, 98, 108, 111, 99, 107, 59, 32, 109, 97, 114, 103, 105, 110, 45, - 116, 111, 112, 58, 32, 48, 95, 95, 113, 101, 109, 32, 125, 32, 105, 110, - 115, 101, 114, 116, 101, 100, 76, 101, 103, 101, 110, 100, 32, 123, 32, 100, - 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 112, - 97, 100, 100, 105, 110, 103, 45, 108, 101, 102, 116, 58, 32, 50, 112, 120, - 59, 32, 112, 97, 100, 100, 105, 110, 103, 45, 114, 105, 103, 104, 116, 58, - 32, 50, 112, 120, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 110, 111, - 110, 101, 32, 125, 32, 102, 105, 101, 108, 100, 115, 101, 116, 32, 123, 32, +extern const char wmlUserAgentStyleSheet[3060] = { + 64, 110, 97, 109, 101, 115, 112, 97, 99, 101, 32, 34, 104, 116, 116, 112, + 58, 47, 47, 119, 119, 119, 46, 119, 97, 112, 102, 111, 114, 117, 109, 46, + 111, 114, 103, 47, 68, 84, 68, 47, 119, 109, 108, 95, 49, 46, 49, 46, + 120, 109, 108, 34, 32, 119, 109, 108, 32, 123, 32, 100, 105, 115, 112, 108, + 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, 104, 101, 97, 100, + 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, + 32, 125, 32, 109, 101, 116, 97, 32, 123, 32, 100, 105, 115, 112, 108, 97, + 121, 58, 32, 110, 111, 110, 101, 32, 125, 32, 97, 99, 99, 101, 115, 115, + 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, + 32, 125, 32, 99, 97, 114, 100, 32, 123, 32, 100, 105, 115, 112, 108, 97, + 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 109, 97, 114, 103, 105, 110, + 58, 32, 56, 112, 120, 32, 125, 32, 112, 32, 123, 32, 100, 105, 115, 112, + 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 109, 97, 114, 103, + 105, 110, 58, 32, 49, 46, 48, 95, 95, 113, 101, 109, 32, 48, 112, 120, + 32, 125, 32, 116, 97, 98, 108, 101, 32, 123, 32, 100, 105, 115, 112, 108, + 97, 121, 58, 32, 116, 97, 98, 108, 101, 59, 32, 98, 111, 114, 100, 101, + 114, 45, 99, 111, 108, 108, 97, 112, 115, 101, 58, 32, 115, 101, 112, 97, + 114, 97, 116, 101, 59, 32, 98, 111, 114, 100, 101, 114, 45, 115, 112, 97, + 99, 105, 110, 103, 58, 32, 50, 112, 120, 59, 32, 98, 111, 114, 100, 101, + 114, 45, 99, 111, 108, 111, 114, 58, 32, 103, 114, 97, 121, 32, 125, 32, + 116, 97, 98, 108, 101, 32, 62, 32, 116, 114, 32, 123, 32, 118, 101, 114, + 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 109, 105, 100, + 100, 108, 101, 59, 32, 125, 32, 116, 114, 32, 123, 32, 100, 105, 115, 112, + 108, 97, 121, 58, 32, 116, 97, 98, 108, 101, 45, 114, 111, 119, 59, 32, + 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, + 105, 110, 104, 101, 114, 105, 116, 59, 32, 98, 111, 114, 100, 101, 114, 45, + 99, 111, 108, 111, 114, 58, 32, 105, 110, 104, 101, 114, 105, 116, 32, 125, + 32, 116, 100, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, + 97, 98, 108, 101, 45, 99, 101, 108, 108, 59, 32, 118, 101, 114, 116, 105, + 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 105, 110, 104, 101, 114, + 105, 116, 32, 125, 32, 103, 111, 32, 123, 32, 100, 105, 115, 112, 108, 97, + 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 109, 97, 114, 103, 105, 110, + 45, 116, 111, 112, 58, 32, 48, 95, 95, 113, 101, 109, 32, 125, 32, 105, + 110, 115, 101, 114, 116, 101, 100, 76, 101, 103, 101, 110, 100, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, - 109, 97, 114, 103, 105, 110, 45, 108, 101, 102, 116, 58, 32, 50, 112, 120, - 59, 32, 109, 97, 114, 103, 105, 110, 45, 114, 105, 103, 104, 116, 58, 32, - 50, 112, 120, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 48, 46, - 51, 53, 101, 109, 32, 48, 46, 55, 53, 101, 109, 32, 48, 46, 54, 50, - 53, 101, 109, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 50, 112, 120, - 32, 103, 114, 111, 111, 118, 101, 32, 84, 104, 114, 101, 101, 68, 70, 97, - 99, 101, 32, 125, 32, 100, 111, 32, 123, 32, 45, 119, 101, 98, 107, 105, - 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 98, 117, - 116, 116, 111, 110, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, - 120, 45, 97, 108, 105, 103, 110, 58, 32, 99, 101, 110, 116, 101, 114, 59, - 32, 116, 101, 120, 116, 45, 97, 108, 105, 103, 110, 58, 32, 99, 101, 110, - 116, 101, 114, 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, 100, 101, 102, - 97, 117, 108, 116, 59, 32, 99, 111, 108, 111, 114, 58, 32, 66, 117, 116, - 116, 111, 110, 84, 101, 120, 116, 59, 32, 112, 97, 100, 100, 105, 110, 103, - 58, 32, 50, 112, 120, 32, 54, 112, 120, 32, 51, 112, 120, 32, 54, 112, - 120, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 50, 112, 120, 32, 111, - 117, 116, 115, 101, 116, 32, 66, 117, 116, 116, 111, 110, 70, 97, 99, 101, - 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, - 111, 114, 58, 32, 66, 117, 116, 116, 111, 110, 70, 97, 99, 101, 59, 32, - 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, - 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 32, 125, - 32, 105, 110, 112, 117, 116, 44, 32, 115, 101, 108, 101, 99, 116, 44, 32, - 100, 111, 32, 123, 32, 109, 97, 114, 103, 105, 110, 58, 32, 48, 95, 95, - 113, 101, 109, 59, 32, 102, 111, 110, 116, 58, 32, 45, 119, 101, 98, 107, - 105, 116, 45, 115, 109, 97, 108, 108, 45, 99, 111, 110, 116, 114, 111, 108, - 59, 32, 99, 111, 108, 111, 114, 58, 32, 105, 110, 105, 116, 105, 97, 108, - 59, 32, 108, 101, 116, 116, 101, 114, 45, 115, 112, 97, 99, 105, 110, 103, - 58, 32, 110, 111, 114, 109, 97, 108, 59, 32, 119, 111, 114, 100, 45, 115, - 112, 97, 99, 105, 110, 103, 58, 32, 110, 111, 114, 109, 97, 108, 59, 32, - 108, 105, 110, 101, 45, 104, 101, 105, 103, 104, 116, 58, 32, 110, 111, 114, - 109, 97, 108, 59, 32, 116, 101, 120, 116, 45, 116, 114, 97, 110, 115, 102, - 111, 114, 109, 58, 32, 110, 111, 110, 101, 59, 32, 116, 101, 120, 116, 45, - 105, 110, 100, 101, 110, 116, 58, 32, 48, 59, 32, 116, 101, 120, 116, 45, - 115, 104, 97, 100, 111, 119, 58, 32, 110, 111, 110, 101, 59, 32, 100, 105, - 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, - 111, 99, 107, 59, 32, 116, 101, 120, 116, 45, 97, 108, 105, 103, 110, 58, - 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 117, 116, 111, 59, 32, 125, - 32, 105, 110, 112, 117, 116, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, - 112, 101, 61, 34, 112, 97, 115, 115, 119, 111, 114, 100, 34, 93, 32, 123, - 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, - 110, 99, 101, 58, 32, 116, 101, 120, 116, 102, 105, 101, 108, 100, 59, 32, - 112, 97, 100, 100, 105, 110, 103, 58, 32, 49, 112, 120, 59, 32, 98, 97, - 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, - 119, 104, 105, 116, 101, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 50, - 112, 120, 32, 105, 110, 115, 101, 116, 59, 32, 45, 119, 101, 98, 107, 105, - 116, 45, 114, 116, 108, 45, 111, 114, 100, 101, 114, 105, 110, 103, 58, 32, - 108, 111, 103, 105, 99, 97, 108, 59, 32, 45, 119, 101, 98, 107, 105, 116, - 45, 117, 115, 101, 114, 45, 115, 101, 108, 101, 99, 116, 58, 32, 116, 101, - 120, 116, 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, 97, 117, 116, 111, - 59, 32, 125, 32, 105, 110, 112, 117, 116, 58, 58, 45, 119, 101, 98, 107, - 105, 116, 45, 105, 110, 112, 117, 116, 45, 112, 108, 97, 99, 101, 104, 111, - 108, 100, 101, 114, 32, 123, 32, 99, 111, 108, 111, 114, 58, 32, 100, 97, - 114, 107, 71, 114, 97, 121, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, - 116, 121, 112, 101, 61, 34, 112, 97, 115, 115, 119, 111, 114, 100, 34, 93, - 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 116, 101, 120, 116, 45, - 115, 101, 99, 117, 114, 105, 116, 121, 58, 32, 100, 105, 115, 99, 32, 33, - 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 125, 32, 105, 110, 112, - 117, 116, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 117, 116, 111, 102, - 105, 108, 108, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, - 45, 99, 111, 108, 111, 114, 58, 32, 98, 97, 99, 107, 103, 114, 111, 117, - 110, 100, 45, 105, 109, 97, 103, 101, 58, 110, 111, 110, 101, 32, 33, 105, - 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 125, 32, 100, 111, 58, 100, - 105, 115, 97, 98, 108, 101, 100, 44, 32, 115, 101, 108, 101, 99, 116, 58, - 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 111, 112, 116, 103, 114, 111, - 117, 112, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 111, 112, 116, - 105, 111, 110, 58, 100, 105, 115, 97, 98, 108, 101, 100, 32, 123, 32, 99, - 111, 108, 111, 114, 58, 32, 71, 114, 97, 121, 84, 101, 120, 116, 32, 125, - 32, 100, 111, 58, 97, 99, 116, 105, 118, 101, 32, 123, 32, 98, 111, 114, - 100, 101, 114, 45, 115, 116, 121, 108, 101, 58, 32, 105, 110, 115, 101, 116, - 32, 125, 32, 100, 111, 58, 97, 99, 116, 105, 118, 101, 58, 100, 105, 115, - 97, 98, 108, 101, 100, 32, 123, 32, 98, 111, 114, 100, 101, 114, 45, 115, - 116, 121, 108, 101, 58, 32, 111, 117, 116, 115, 101, 116, 32, 125, 32, 115, - 101, 108, 101, 99, 116, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, - 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 109, 101, 110, 117, - 108, 105, 115, 116, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, - 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, - 45, 98, 111, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, - 120, 45, 97, 108, 105, 103, 110, 58, 32, 99, 101, 110, 116, 101, 114, 59, - 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, 112, 120, 32, 115, 111, 108, - 105, 100, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 114, 100, - 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 53, 112, 120, 59, 32, - 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 112, 114, 101, - 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 114, 116, 108, 45, 111, 114, - 100, 101, 114, 105, 110, 103, 58, 32, 108, 111, 103, 105, 99, 97, 108, 59, - 32, 99, 111, 108, 111, 114, 58, 32, 98, 108, 97, 99, 107, 59, 32, 98, + 112, 97, 100, 100, 105, 110, 103, 45, 108, 101, 102, 116, 58, 32, 50, 112, + 120, 59, 32, 112, 97, 100, 100, 105, 110, 103, 45, 114, 105, 103, 104, 116, + 58, 32, 50, 112, 120, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 110, + 111, 110, 101, 32, 125, 32, 102, 105, 101, 108, 100, 115, 101, 116, 32, 123, + 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, + 32, 109, 97, 114, 103, 105, 110, 45, 108, 101, 102, 116, 58, 32, 50, 112, + 120, 59, 32, 109, 97, 114, 103, 105, 110, 45, 114, 105, 103, 104, 116, 58, + 32, 50, 112, 120, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 48, + 46, 51, 53, 101, 109, 32, 48, 46, 55, 53, 101, 109, 32, 48, 46, 54, + 50, 53, 101, 109, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 50, 112, + 120, 32, 103, 114, 111, 111, 118, 101, 32, 84, 104, 114, 101, 101, 68, 70, + 97, 99, 101, 32, 125, 32, 100, 111, 32, 123, 32, 45, 119, 101, 98, 107, + 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 98, + 117, 116, 116, 111, 110, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, + 111, 120, 45, 97, 108, 105, 103, 110, 58, 32, 99, 101, 110, 116, 101, 114, + 59, 32, 116, 101, 120, 116, 45, 97, 108, 105, 103, 110, 58, 32, 99, 101, + 110, 116, 101, 114, 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, 100, 101, + 102, 97, 117, 108, 116, 59, 32, 99, 111, 108, 111, 114, 58, 32, 66, 117, + 116, 116, 111, 110, 84, 101, 120, 116, 59, 32, 112, 97, 100, 100, 105, 110, + 103, 58, 32, 50, 112, 120, 32, 54, 112, 120, 32, 51, 112, 120, 32, 54, + 112, 120, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 50, 112, 120, 32, + 111, 117, 116, 115, 101, 116, 32, 66, 117, 116, 116, 111, 110, 70, 97, 99, + 101, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, + 108, 111, 114, 58, 32, 66, 117, 116, 116, 111, 110, 70, 97, 99, 101, 59, + 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, + 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 32, + 125, 32, 105, 110, 112, 117, 116, 44, 32, 115, 101, 108, 101, 99, 116, 44, + 32, 100, 111, 32, 123, 32, 109, 97, 114, 103, 105, 110, 58, 32, 48, 95, + 95, 113, 101, 109, 59, 32, 102, 111, 110, 116, 58, 32, 45, 119, 101, 98, + 107, 105, 116, 45, 115, 109, 97, 108, 108, 45, 99, 111, 110, 116, 114, 111, + 108, 59, 32, 99, 111, 108, 111, 114, 58, 32, 105, 110, 105, 116, 105, 97, + 108, 59, 32, 108, 101, 116, 116, 101, 114, 45, 115, 112, 97, 99, 105, 110, + 103, 58, 32, 110, 111, 114, 109, 97, 108, 59, 32, 119, 111, 114, 100, 45, + 115, 112, 97, 99, 105, 110, 103, 58, 32, 110, 111, 114, 109, 97, 108, 59, + 32, 108, 105, 110, 101, 45, 104, 101, 105, 103, 104, 116, 58, 32, 110, 111, + 114, 109, 97, 108, 59, 32, 116, 101, 120, 116, 45, 116, 114, 97, 110, 115, + 102, 111, 114, 109, 58, 32, 110, 111, 110, 101, 59, 32, 116, 101, 120, 116, + 45, 105, 110, 100, 101, 110, 116, 58, 32, 48, 59, 32, 116, 101, 120, 116, + 45, 115, 104, 97, 100, 111, 119, 58, 32, 110, 111, 110, 101, 59, 32, 100, + 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, + 108, 111, 99, 107, 59, 32, 116, 101, 120, 116, 45, 97, 108, 105, 103, 110, + 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 117, 116, 111, 59, 32, + 125, 32, 105, 110, 112, 117, 116, 44, 32, 105, 110, 112, 117, 116, 91, 116, + 121, 112, 101, 61, 34, 112, 97, 115, 115, 119, 111, 114, 100, 34, 93, 32, + 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, + 97, 110, 99, 101, 58, 32, 116, 101, 120, 116, 102, 105, 101, 108, 100, 59, + 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 49, 112, 120, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, - 32, 119, 104, 105, 116, 101, 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, - 100, 101, 102, 97, 117, 108, 116, 59, 32, 125, 32, 115, 101, 108, 101, 99, - 116, 91, 115, 105, 122, 101, 93, 44, 32, 115, 101, 108, 101, 99, 116, 91, - 109, 117, 108, 116, 105, 112, 108, 101, 93, 44, 32, 115, 101, 108, 101, 99, - 116, 91, 115, 105, 122, 101, 93, 91, 109, 117, 108, 116, 105, 112, 108, 101, - 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, - 97, 114, 97, 110, 99, 101, 58, 32, 108, 105, 115, 116, 98, 111, 120, 59, - 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 97, 108, 105, - 103, 110, 58, 32, 115, 116, 97, 114, 116, 59, 32, 98, 111, 114, 100, 101, - 114, 58, 32, 49, 112, 120, 32, 105, 110, 115, 101, 116, 32, 103, 114, 97, - 121, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 114, 100, 101, - 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 105, 110, 105, 116, 105, 97, - 108, 59, 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, - 105, 110, 105, 116, 105, 97, 108, 59, 32, 125, 32, 115, 101, 108, 101, 99, - 116, 91, 115, 105, 122, 101, 61, 34, 48, 34, 93, 44, 32, 115, 101, 108, - 101, 99, 116, 91, 115, 105, 122, 101, 61, 34, 49, 34, 93, 32, 123, 32, - 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, - 99, 101, 58, 32, 109, 101, 110, 117, 108, 105, 115, 116, 59, 32, 45, 119, - 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 97, 108, 105, 103, 110, 58, - 32, 99, 101, 110, 116, 101, 114, 59, 32, 98, 111, 114, 100, 101, 114, 58, - 32, 49, 112, 120, 32, 115, 111, 108, 105, 100, 59, 32, 45, 119, 101, 98, - 107, 105, 116, 45, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, 117, - 115, 58, 32, 53, 112, 120, 59, 32, 119, 104, 105, 116, 101, 45, 115, 112, - 97, 99, 101, 58, 32, 112, 114, 101, 59, 32, 125, 32, 111, 112, 116, 103, - 114, 111, 117, 112, 32, 123, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, - 104, 116, 58, 32, 98, 111, 108, 100, 101, 114, 59, 32, 125, 32, 111, 112, - 116, 105, 111, 110, 32, 123, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, - 104, 116, 58, 32, 110, 111, 114, 109, 97, 108, 59, 32, 125, 32, 117, 32, - 123, 32, 116, 101, 120, 116, 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, - 110, 58, 32, 117, 110, 100, 101, 114, 108, 105, 110, 101, 32, 125, 32, 115, - 116, 114, 111, 110, 103, 44, 32, 98, 32, 123, 32, 102, 111, 110, 116, 45, - 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 101, 114, 32, 125, - 32, 105, 44, 32, 101, 109, 32, 123, 32, 102, 111, 110, 116, 45, 115, 116, - 121, 108, 101, 58, 32, 105, 116, 97, 108, 105, 99, 32, 125, 32, 98, 105, - 103, 32, 123, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 108, - 97, 114, 103, 101, 114, 32, 125, 32, 115, 109, 97, 108, 108, 32, 123, 32, - 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 115, 109, 97, 108, 108, - 101, 114, 32, 125, 32, 112, 114, 101, 32, 123, 32, 100, 105, 115, 112, 108, - 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 102, 111, 110, 116, 45, - 102, 97, 109, 105, 108, 121, 58, 32, 109, 111, 110, 111, 115, 112, 97, 99, - 101, 59, 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, - 112, 114, 101, 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, 49, 95, 95, - 113, 101, 109, 32, 48, 32, 125, 32, 58, 102, 111, 99, 117, 115, 32, 123, - 32, 111, 117, 116, 108, 105, 110, 101, 58, 32, 97, 117, 116, 111, 32, 53, - 112, 120, 32, 45, 119, 101, 98, 107, 105, 116, 45, 102, 111, 99, 117, 115, - 45, 114, 105, 110, 103, 45, 99, 111, 108, 111, 114, 32, 125, 32, 119, 109, - 108, 58, 102, 111, 99, 117, 115, 44, 32, 99, 97, 114, 100, 58, 102, 111, - 99, 117, 115, 32, 123, 32, 111, 117, 116, 108, 105, 110, 101, 58, 32, 110, - 111, 110, 101, 32, 125, 32, 105, 110, 112, 117, 116, 58, 102, 111, 99, 117, - 115, 44, 32, 115, 101, 108, 101, 99, 116, 58, 102, 111, 99, 117, 115, 32, - 123, 32, 111, 117, 116, 108, 105, 110, 101, 45, 111, 102, 102, 115, 101, 116, - 58, 32, 45, 50, 112, 120, 32, 125, 32, 97, 58, 45, 119, 101, 98, 107, - 105, 116, 45, 97, 110, 121, 45, 108, 105, 110, 107, 44, 32, 97, 110, 99, - 104, 111, 114, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 45, - 108, 105, 110, 107, 32, 123, 32, 99, 111, 108, 111, 114, 58, 32, 45, 119, - 101, 98, 107, 105, 116, 45, 108, 105, 110, 107, 59, 32, 116, 101, 120, 116, - 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, 110, 58, 32, 117, 110, 100, - 101, 114, 108, 105, 110, 101, 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, - 97, 117, 116, 111, 59, 32, 125, 32, 97, 58, 45, 119, 101, 98, 107, 105, - 116, 45, 97, 110, 121, 45, 108, 105, 110, 107, 58, 97, 99, 116, 105, 118, - 101, 44, 32, 97, 110, 99, 104, 111, 114, 58, 45, 119, 101, 98, 107, 105, - 116, 45, 97, 110, 121, 45, 108, 105, 110, 107, 58, 97, 99, 116, 105, 118, - 101, 32, 123, 32, 99, 111, 108, 111, 114, 58, 32, 45, 119, 101, 98, 107, - 105, 116, 45, 97, 99, 116, 105, 118, 101, 108, 105, 110, 107, 32, 125 + 32, 119, 104, 105, 116, 101, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, + 50, 112, 120, 32, 105, 110, 115, 101, 116, 59, 32, 45, 119, 101, 98, 107, + 105, 116, 45, 114, 116, 108, 45, 111, 114, 100, 101, 114, 105, 110, 103, 58, + 32, 108, 111, 103, 105, 99, 97, 108, 59, 32, 45, 119, 101, 98, 107, 105, + 116, 45, 117, 115, 101, 114, 45, 115, 101, 108, 101, 99, 116, 58, 32, 116, + 101, 120, 116, 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, 97, 117, 116, + 111, 59, 32, 125, 32, 105, 110, 112, 117, 116, 58, 58, 45, 119, 101, 98, + 107, 105, 116, 45, 105, 110, 112, 117, 116, 45, 112, 108, 97, 99, 101, 104, + 111, 108, 100, 101, 114, 32, 123, 32, 99, 111, 108, 111, 114, 58, 32, 100, + 97, 114, 107, 71, 114, 97, 121, 59, 32, 125, 32, 105, 110, 112, 117, 116, + 91, 116, 121, 112, 101, 61, 34, 112, 97, 115, 115, 119, 111, 114, 100, 34, + 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 116, 101, 120, 116, + 45, 115, 101, 99, 117, 114, 105, 116, 121, 58, 32, 100, 105, 115, 99, 32, + 33, 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 125, 32, 105, 110, + 112, 117, 116, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 117, 116, 111, + 102, 105, 108, 108, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, + 100, 45, 99, 111, 108, 111, 114, 58, 32, 35, 70, 65, 70, 70, 66, 68, + 32, 33, 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 98, 97, 99, + 107, 103, 114, 111, 117, 110, 100, 45, 105, 109, 97, 103, 101, 58, 110, 111, + 110, 101, 32, 33, 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 125, + 32, 100, 111, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 115, 101, + 108, 101, 99, 116, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 111, + 112, 116, 103, 114, 111, 117, 112, 58, 100, 105, 115, 97, 98, 108, 101, 100, + 44, 32, 111, 112, 116, 105, 111, 110, 58, 100, 105, 115, 97, 98, 108, 101, + 100, 32, 123, 32, 99, 111, 108, 111, 114, 58, 32, 71, 114, 97, 121, 84, + 101, 120, 116, 32, 125, 32, 100, 111, 58, 97, 99, 116, 105, 118, 101, 32, + 123, 32, 98, 111, 114, 100, 101, 114, 45, 115, 116, 121, 108, 101, 58, 32, + 105, 110, 115, 101, 116, 32, 125, 32, 100, 111, 58, 97, 99, 116, 105, 118, + 101, 58, 100, 105, 115, 97, 98, 108, 101, 100, 32, 123, 32, 98, 111, 114, + 100, 101, 114, 45, 115, 116, 121, 108, 101, 58, 32, 111, 117, 116, 115, 101, + 116, 32, 125, 32, 115, 101, 108, 101, 99, 116, 32, 123, 32, 45, 119, 101, + 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, + 32, 109, 101, 110, 117, 108, 105, 115, 116, 59, 32, 45, 119, 101, 98, 107, + 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, + 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 45, 119, 101, 98, 107, + 105, 116, 45, 98, 111, 120, 45, 97, 108, 105, 103, 110, 58, 32, 99, 101, + 110, 116, 101, 114, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, 112, + 120, 32, 115, 111, 108, 105, 100, 59, 32, 45, 119, 101, 98, 107, 105, 116, + 45, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, + 53, 112, 120, 59, 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, + 58, 32, 112, 114, 101, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 114, + 116, 108, 45, 111, 114, 100, 101, 114, 105, 110, 103, 58, 32, 108, 111, 103, + 105, 99, 97, 108, 59, 32, 99, 111, 108, 111, 114, 58, 32, 98, 108, 97, + 99, 107, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, + 111, 108, 111, 114, 58, 32, 119, 104, 105, 116, 101, 59, 32, 99, 117, 114, + 115, 111, 114, 58, 32, 100, 101, 102, 97, 117, 108, 116, 59, 32, 125, 32, + 115, 101, 108, 101, 99, 116, 91, 115, 105, 122, 101, 93, 44, 32, 115, 101, + 108, 101, 99, 116, 91, 109, 117, 108, 116, 105, 112, 108, 101, 93, 44, 32, + 115, 101, 108, 101, 99, 116, 91, 115, 105, 122, 101, 93, 91, 109, 117, 108, + 116, 105, 112, 108, 101, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, + 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 108, 105, 115, + 116, 98, 111, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, + 120, 45, 97, 108, 105, 103, 110, 58, 32, 115, 116, 97, 114, 116, 59, 32, + 98, 111, 114, 100, 101, 114, 58, 32, 49, 112, 120, 32, 105, 110, 115, 101, + 116, 32, 103, 114, 97, 121, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, + 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 105, + 110, 105, 116, 105, 97, 108, 59, 32, 119, 104, 105, 116, 101, 45, 115, 112, + 97, 99, 101, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 125, 32, + 115, 101, 108, 101, 99, 116, 91, 115, 105, 122, 101, 61, 34, 48, 34, 93, + 44, 32, 115, 101, 108, 101, 99, 116, 91, 115, 105, 122, 101, 61, 34, 49, + 34, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, + 101, 97, 114, 97, 110, 99, 101, 58, 32, 109, 101, 110, 117, 108, 105, 115, + 116, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 97, + 108, 105, 103, 110, 58, 32, 99, 101, 110, 116, 101, 114, 59, 32, 98, 111, + 114, 100, 101, 114, 58, 32, 49, 112, 120, 32, 115, 111, 108, 105, 100, 59, + 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 114, 100, 101, 114, 45, + 114, 97, 100, 105, 117, 115, 58, 32, 53, 112, 120, 59, 32, 119, 104, 105, + 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 112, 114, 101, 59, 32, 125, + 32, 111, 112, 116, 103, 114, 111, 117, 112, 32, 123, 32, 102, 111, 110, 116, + 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 101, 114, 59, + 32, 125, 32, 111, 112, 116, 105, 111, 110, 32, 123, 32, 102, 111, 110, 116, + 45, 119, 101, 105, 103, 104, 116, 58, 32, 110, 111, 114, 109, 97, 108, 59, + 32, 125, 32, 117, 32, 123, 32, 116, 101, 120, 116, 45, 100, 101, 99, 111, + 114, 97, 116, 105, 111, 110, 58, 32, 117, 110, 100, 101, 114, 108, 105, 110, + 101, 32, 125, 32, 115, 116, 114, 111, 110, 103, 44, 32, 98, 32, 123, 32, + 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, + 100, 101, 114, 32, 125, 32, 105, 44, 32, 101, 109, 32, 123, 32, 102, 111, + 110, 116, 45, 115, 116, 121, 108, 101, 58, 32, 105, 116, 97, 108, 105, 99, + 32, 125, 32, 98, 105, 103, 32, 123, 32, 102, 111, 110, 116, 45, 115, 105, + 122, 101, 58, 32, 108, 97, 114, 103, 101, 114, 32, 125, 32, 115, 109, 97, + 108, 108, 32, 123, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, + 115, 109, 97, 108, 108, 101, 114, 32, 125, 32, 112, 114, 101, 32, 123, 32, + 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, + 102, 111, 110, 116, 45, 102, 97, 109, 105, 108, 121, 58, 32, 109, 111, 110, + 111, 115, 112, 97, 99, 101, 59, 32, 119, 104, 105, 116, 101, 45, 115, 112, + 97, 99, 101, 58, 32, 112, 114, 101, 59, 32, 109, 97, 114, 103, 105, 110, + 58, 32, 49, 95, 95, 113, 101, 109, 32, 48, 32, 125, 32, 58, 102, 111, + 99, 117, 115, 32, 123, 32, 111, 117, 116, 108, 105, 110, 101, 58, 32, 97, + 117, 116, 111, 32, 53, 112, 120, 32, 45, 119, 101, 98, 107, 105, 116, 45, + 102, 111, 99, 117, 115, 45, 114, 105, 110, 103, 45, 99, 111, 108, 111, 114, + 32, 125, 32, 119, 109, 108, 58, 102, 111, 99, 117, 115, 44, 32, 99, 97, + 114, 100, 58, 102, 111, 99, 117, 115, 32, 123, 32, 111, 117, 116, 108, 105, + 110, 101, 58, 32, 110, 111, 110, 101, 32, 125, 32, 105, 110, 112, 117, 116, + 58, 102, 111, 99, 117, 115, 44, 32, 115, 101, 108, 101, 99, 116, 58, 102, + 111, 99, 117, 115, 32, 123, 32, 111, 117, 116, 108, 105, 110, 101, 45, 111, + 102, 102, 115, 101, 116, 58, 32, 45, 50, 112, 120, 32, 125, 32, 97, 58, + 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 45, 108, 105, 110, 107, + 44, 32, 97, 110, 99, 104, 111, 114, 58, 45, 119, 101, 98, 107, 105, 116, + 45, 97, 110, 121, 45, 108, 105, 110, 107, 32, 123, 32, 99, 111, 108, 111, + 114, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 108, 105, 110, 107, 59, + 32, 116, 101, 120, 116, 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, 110, + 58, 32, 117, 110, 100, 101, 114, 108, 105, 110, 101, 59, 32, 99, 117, 114, + 115, 111, 114, 58, 32, 97, 117, 116, 111, 59, 32, 125, 32, 97, 58, 45, + 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 45, 108, 105, 110, 107, 58, + 97, 99, 116, 105, 118, 101, 44, 32, 97, 110, 99, 104, 111, 114, 58, 45, + 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 45, 108, 105, 110, 107, 58, + 97, 99, 116, 105, 118, 101, 32, 123, 32, 99, 111, 108, 111, 114, 58, 32, + 45, 119, 101, 98, 107, 105, 116, 45, 97, 99, 116, 105, 118, 101, 108, 105, + 110, 107, 32, 125 }; extern const char mediaControlsUserAgentStyleSheet[2813] = { 97, 117, 100, 105, 111, 32, 123, 32, 119, 105, 100, 116, 104, 58, 32, 50, diff --git a/src/3rdparty/webkit/WebCore/page/DOMWindow.idl b/src/3rdparty/webkit/WebCore/page/DOMWindow.idl index d457bdc..31e4d4f 100644 --- a/src/3rdparty/webkit/WebCore/page/DOMWindow.idl +++ b/src/3rdparty/webkit/WebCore/page/DOMWindow.idl @@ -293,12 +293,10 @@ module window { #if defined(ENABLE_ORIENTATION_EVENTS) && ENABLE_ORIENTATION_EVENTS attribute EventListener onorientationchange; #endif - #if defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS - attribute [DontEnum] EventListener ontouchstart; - attribute [DontEnum] EventListener ontouchmove; - attribute [DontEnum] EventListener ontouchend; - attribute [DontEnum] EventListener ontouchcancel; - #endif + attribute [DontEnum,Conditional=TOUCH_EVENTS] EventListener ontouchstart; + attribute [DontEnum,Conditional=TOUCH_EVENTS] EventListener ontouchmove; + attribute [DontEnum,Conditional=TOUCH_EVENTS] EventListener ontouchend; + attribute [DontEnum,Conditional=TOUCH_EVENTS] EventListener ontouchcancel; // EventTarget interface [Custom] void addEventListener(in DOMString type, @@ -712,9 +710,7 @@ module window { #endif #endif -#if defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS - attribute TouchEventConstructor TouchEvent; -#endif + attribute [Conditional=TOUCH_EVENTS] TouchEventConstructor TouchEvent; attribute DOMFormDataConstructor FormData; diff --git a/src/3rdparty/webkit/WebCore/page/Frame.cpp b/src/3rdparty/webkit/WebCore/page/Frame.cpp index 614bbb9..6dbca69 100644 --- a/src/3rdparty/webkit/WebCore/page/Frame.cpp +++ b/src/3rdparty/webkit/WebCore/page/Frame.cpp @@ -1770,7 +1770,8 @@ Document* Frame::documentAtPoint(const IntPoint& point) void Frame::createView(const IntSize& viewportSize, const Color& backgroundColor, bool transparent, const IntSize& fixedLayoutSize, bool useFixedLayout, - ScrollbarMode horizontalScrollbarMode, ScrollbarMode verticalScrollbarMode) + ScrollbarMode horizontalScrollbarMode, bool horizontalLock, + ScrollbarMode verticalScrollbarMode, bool verticalLock) { ASSERT(this); ASSERT(m_page); @@ -1790,7 +1791,7 @@ void Frame::createView(const IntSize& viewportSize, } else frameView = FrameView::create(this); - frameView->setScrollbarModes(horizontalScrollbarMode, verticalScrollbarMode); + frameView->setScrollbarModes(horizontalScrollbarMode, verticalScrollbarMode, horizontalLock, verticalLock); setView(frameView); diff --git a/src/3rdparty/webkit/WebCore/page/Frame.h b/src/3rdparty/webkit/WebCore/page/Frame.h index 65bdeb0..67761f9 100644 --- a/src/3rdparty/webkit/WebCore/page/Frame.h +++ b/src/3rdparty/webkit/WebCore/page/Frame.h @@ -119,7 +119,8 @@ namespace WebCore { void setExcludeFromTextSearch(bool); void createView(const IntSize&, const Color&, bool, const IntSize &, bool, - ScrollbarMode = ScrollbarAuto, ScrollbarMode = ScrollbarAuto); + ScrollbarMode = ScrollbarAuto, bool horizontalLock = false, + ScrollbarMode = ScrollbarAuto, bool verticalLock = false); void injectUserScripts(UserScriptInjectionTime); diff --git a/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp b/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp index fdd9749..5c70eff 100644 --- a/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp +++ b/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp @@ -42,6 +42,8 @@ namespace WebCore { ScrollView::ScrollView() : m_horizontalScrollbarMode(ScrollbarAuto) , m_verticalScrollbarMode(ScrollbarAuto) + , m_horizontalScrollbarLock(false) + , m_verticalScrollbarLock(false) , m_prohibitsScrolling(false) , m_canBlitOnScroll(true) , m_scrollbarsAvoidingResizer(0) @@ -115,12 +117,30 @@ PassRefPtr<Scrollbar> ScrollView::createScrollbar(ScrollbarOrientation orientati return Scrollbar::createNativeScrollbar(this, orientation, RegularScrollbar); } -void ScrollView::setScrollbarModes(ScrollbarMode horizontalMode, ScrollbarMode verticalMode) +void ScrollView::setScrollbarModes(ScrollbarMode horizontalMode, ScrollbarMode verticalMode, + bool horizontalLock, bool verticalLock) { - if (horizontalMode == horizontalScrollbarMode() && verticalMode == verticalScrollbarMode()) + bool needsUpdate = false; + + if (horizontalMode != horizontalScrollbarMode() && !m_horizontalScrollbarLock) { + m_horizontalScrollbarMode = horizontalMode; + needsUpdate = true; + } + + if (verticalMode != verticalScrollbarMode() && !m_verticalScrollbarLock) { + m_verticalScrollbarMode = verticalMode; + needsUpdate = true; + } + + if (horizontalLock) + setHorizontalScrollbarLock(); + + if (verticalLock) + setVerticalScrollbarLock(); + + if (!needsUpdate) return; - m_horizontalScrollbarMode = horizontalMode; - m_verticalScrollbarMode = verticalMode; + if (platformWidget()) platformSetScrollbarModes(); else diff --git a/src/3rdparty/webkit/WebCore/platform/ScrollView.h b/src/3rdparty/webkit/WebCore/platform/ScrollView.h index c356a60..9134ddf 100644 --- a/src/3rdparty/webkit/WebCore/platform/ScrollView.h +++ b/src/3rdparty/webkit/WebCore/platform/ScrollView.h @@ -83,12 +83,20 @@ public: // Auto means show a scrollbar only when one is needed. // Note that for platforms with native widgets, these modes are considered advisory. In other words the underlying native // widget may choose not to honor the requested modes. - void setScrollbarModes(ScrollbarMode horizontalMode, ScrollbarMode verticalMode); - void setHorizontalScrollbarMode(ScrollbarMode mode) { setScrollbarModes(mode, verticalScrollbarMode()); } - void setVerticalScrollbarMode(ScrollbarMode mode) { setScrollbarModes(horizontalScrollbarMode(), mode); } + void setScrollbarModes(ScrollbarMode horizontalMode, ScrollbarMode verticalMode, bool horizontalLock = false, bool verticalLock = false); + void setHorizontalScrollbarMode(ScrollbarMode mode, bool lock = false) { setScrollbarModes(mode, verticalScrollbarMode(), lock, verticalScrollbarLock()); } + void setVerticalScrollbarMode(ScrollbarMode mode, bool lock = false) { setScrollbarModes(horizontalScrollbarMode(), mode, horizontalScrollbarLock(), lock); }; void scrollbarModes(ScrollbarMode& horizontalMode, ScrollbarMode& verticalMode) const; ScrollbarMode horizontalScrollbarMode() const { ScrollbarMode horizontal, vertical; scrollbarModes(horizontal, vertical); return horizontal; } ScrollbarMode verticalScrollbarMode() const { ScrollbarMode horizontal, vertical; scrollbarModes(horizontal, vertical); return vertical; } + + void setHorizontalScrollbarLock(bool lock = true) { m_horizontalScrollbarLock = lock; } + bool horizontalScrollbarLock() const { return m_horizontalScrollbarLock; } + void setVerticalScrollbarLock(bool lock = true) { m_verticalScrollbarLock = lock; } + bool verticalScrollbarLock() const { return m_verticalScrollbarLock; } + + void setScrollingModesLock(bool lock = true) { m_horizontalScrollbarLock = m_verticalScrollbarLock = lock; } + virtual void setCanHaveScrollbars(bool); bool canHaveScrollbars() const { return horizontalScrollbarMode() != ScrollbarAlwaysOff || verticalScrollbarMode() != ScrollbarAlwaysOff; } @@ -260,6 +268,10 @@ private: RefPtr<Scrollbar> m_verticalScrollbar; ScrollbarMode m_horizontalScrollbarMode; ScrollbarMode m_verticalScrollbarMode; + + bool m_horizontalScrollbarLock; + bool m_verticalScrollbarLock; + bool m_prohibitsScrolling; HashSet<RefPtr<Widget> > m_children; diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/GraphicsLayer.h b/src/3rdparty/webkit/WebCore/platform/graphics/GraphicsLayer.h index 7c8731f..5a97c86 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/GraphicsLayer.h +++ b/src/3rdparty/webkit/WebCore/platform/graphics/GraphicsLayer.h @@ -60,9 +60,7 @@ typedef WKCACFLayer PlatformLayer; typedef void* NativeLayer; } #elif PLATFORM(QT) -QT_BEGIN_NAMESPACE class QGraphicsItem; -QT_END_NAMESPACE typedef QGraphicsItem PlatformLayer; typedef QGraphicsItem* NativeLayer; #elif PLATFORM(CHROMIUM) diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/Tile.h b/src/3rdparty/webkit/WebCore/platform/graphics/Tile.h index c623ec9..c55fcaf 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/Tile.h +++ b/src/3rdparty/webkit/WebCore/platform/graphics/Tile.h @@ -29,10 +29,8 @@ #include <wtf/RefCounted.h> #if PLATFORM(QT) -QT_BEGIN_NAMESPACE class QPixmap; class QRegion; -QT_END_NAMESPACE #endif namespace WebCore { diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp index 242c29c..a84ad31 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp @@ -1019,27 +1019,15 @@ void GraphicsContext3D::scissor(long x, long y, unsigned long width, unsigned lo glScissor(x, y, width, height); } -void GraphicsContext3D::shaderSource(WebGLShader* shader, const String& string) +void GraphicsContext3D::shaderSource(WebGLShader* shader, const String& source) { ASSERT(shader); m_internal->m_glWidget->makeCurrent(); - // Force the use of GLSL 1.0: - // https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/WebGL-spec.html#4.4 - // FIXME: Lines beginning with "#version" should be stripped out. - - String prepared; - - prepared.append("#version 100\n"); -#if defined(QT_OPENGL_ES_2) - prepared.append("precision mediump float;\n"); -#endif - prepared.append(string); - - CString preparedCS = prepared.utf8(); - const char* data = preparedCS.data(); - int length = prepared.length(); + CString sourceCS = source.utf8(); + const char* data = sourceCS.data(); + int length = source.length(); m_internal->shaderSource((GLuint) shader->object(), /* count */ 1, &data, &length); } diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp index 324956b..2913eef 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp @@ -207,7 +207,9 @@ public: int m_changeMask; QSizeF m_size; +#ifndef QT_NO_ANIMATION QList<QWeakPointer<QAbstractAnimation> > m_animations; +#endif QTimer m_suspendTimer; struct State { @@ -238,7 +240,9 @@ public: } } m_state; +#ifndef QT_NO_ANIMATION friend class AnimationQtBase; +#endif }; GraphicsLayerQtImpl::GraphicsLayerQtImpl(GraphicsLayerQt* newLayer) @@ -274,11 +278,13 @@ GraphicsLayerQtImpl::~GraphicsLayerQtImpl() item->setParentItem(0); } } - + +#ifndef QT_NO_ANIMATION // we do, however, own the animations... for (QList<QWeakPointer<QAbstractAnimation> >::iterator it = m_animations.begin(); it != m_animations.end(); ++it) if (QAbstractAnimation* anim = it->data()) delete anim; +#endif } void GraphicsLayerQtImpl::adjustCachingRecursively(bool animationIsRunning) @@ -995,6 +1001,7 @@ static void webkitAnimationToQtAnimationValue(const AnimationValue* animationVal realValue = animationValue ? static_cast<const FloatAnimationValue*>(animationValue)->value() : 0; } +#ifndef QT_NO_ANIMATION // we put a bit of the functionality in a base class to allow casting and to save some code size class AnimationQtBase : public QAbstractAnimation { public: @@ -1328,6 +1335,7 @@ void GraphicsLayerQt::resumeAnimations() } } +#endif // QT_NO_ANIMATION } #include <GraphicsLayerQt.moc> diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.h b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.h index 4132d7d..9e5832f 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.h +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.h @@ -63,12 +63,14 @@ public: virtual void setBackfaceVisibility(bool b); virtual void setOpacity(float opacity); virtual void setContentsRect(const IntRect& r); +#ifndef QT_NO_ANIMATION virtual bool addAnimation(const KeyframeValueList&, const IntSize& boxSize, const Animation*, const String& keyframesName, double timeOffset); virtual void removeAnimationsForProperty(AnimatedPropertyID); virtual void removeAnimationsForKeyframes(const String& keyframesName); virtual void pauseAnimation(const String& keyframesName, double timeOffset); virtual void suspendAnimations(double time); virtual void resumeAnimations(); +#endif // QT_NO_ANIMATION virtual void setContentsToImage(Image*); virtual void setContentsToMedia(PlatformLayer*); virtual void setContentsBackgroundColor(const Color&); diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/MediaPlayerPrivateQt.h b/src/3rdparty/webkit/WebCore/platform/graphics/qt/MediaPlayerPrivateQt.h index d72404c..8f8229b 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/MediaPlayerPrivateQt.h +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/MediaPlayerPrivateQt.h @@ -25,11 +25,9 @@ #include <QMediaPlayer> #include <QObject> -QT_BEGIN_NAMESPACE class QMediaPlayerControl; class QGraphicsVideoItem; class QGraphicsScene; -QT_END_NAMESPACE namespace WebCore { diff --git a/src/3rdparty/webkit/WebCore/platform/network/HTTPParsers.cpp b/src/3rdparty/webkit/WebCore/platform/network/HTTPParsers.cpp index fc0c245..a461280 100644 --- a/src/3rdparty/webkit/WebCore/platform/network/HTTPParsers.cpp +++ b/src/3rdparty/webkit/WebCore/platform/network/HTTPParsers.cpp @@ -72,36 +72,34 @@ static inline bool skipToken(const String& str, int& pos, const char* token) return true; } -bool shouldTreatAsAttachment(const ResourceResponseBase& response) -{ - const String& contentDisposition = response.httpHeaderField("Content-Disposition"); - +ContentDispositionType contentDispositionType(const String& contentDisposition) +{ if (contentDisposition.isEmpty()) - return false; + return ContentDispositionNone; // Some broken sites just send // Content-Disposition: ; filename="file" // screen those out here. if (contentDisposition.startsWith(";")) - return false; + return ContentDispositionNone; if (contentDisposition.startsWith("inline", false)) - return false; + return ContentDispositionInline; // Some broken sites just send // Content-Disposition: filename="file" // without a disposition token... screen those out. if (contentDisposition.startsWith("filename", false)) - return false; + return ContentDispositionNone; // Also in use is Content-Disposition: name="file" if (contentDisposition.startsWith("name", false)) - return false; + return ContentDispositionNone; // We have a content-disposition of "attachment" or unknown. // RFC 2183, section 2.8 says that an unknown disposition // value should be treated as "attachment" - return true; + return ContentDispositionAttachment; } bool parseHTTPRefresh(const String& refresh, bool fromHttpEquivMeta, double& delay, String& url) diff --git a/src/3rdparty/webkit/WebCore/platform/network/HTTPParsers.h b/src/3rdparty/webkit/WebCore/platform/network/HTTPParsers.h index d568bd4..be4c4d3 100644 --- a/src/3rdparty/webkit/WebCore/platform/network/HTTPParsers.h +++ b/src/3rdparty/webkit/WebCore/platform/network/HTTPParsers.h @@ -41,8 +41,14 @@ enum XSSProtectionDisposition { XSSProtectionBlockEnabled }; - -bool shouldTreatAsAttachment(const ResourceResponseBase& response); +typedef enum { + ContentDispositionNone, + ContentDispositionInline, + ContentDispositionAttachment, + ContentDispositionOther +} ContentDispositionType; + +ContentDispositionType contentDispositionType(const String&); bool parseHTTPRefresh(const String& refresh, bool fromHttpEquivMeta, double& delay, String& url); double parseDate(const String&); String filenameFromHTTPContentDisposition(const String&); diff --git a/src/3rdparty/webkit/WebCore/platform/network/qt/NetworkStateNotifierPrivate.h b/src/3rdparty/webkit/WebCore/platform/network/qt/NetworkStateNotifierPrivate.h index 15a48cd..86b367b 100644 --- a/src/3rdparty/webkit/WebCore/platform/network/qt/NetworkStateNotifierPrivate.h +++ b/src/3rdparty/webkit/WebCore/platform/network/qt/NetworkStateNotifierPrivate.h @@ -27,9 +27,7 @@ namespace QtMobility { class QNetworkConfigurationManager; } #else -QT_BEGIN_NAMESPACE class QNetworkConfigurationManager; -QT_END_NAMESPACE #endif namespace WebCore { diff --git a/src/3rdparty/webkit/WebCore/plugins/PluginView.cpp b/src/3rdparty/webkit/WebCore/plugins/PluginView.cpp index 38acdd9..51a43ac 100644 --- a/src/3rdparty/webkit/WebCore/plugins/PluginView.cpp +++ b/src/3rdparty/webkit/WebCore/plugins/PluginView.cpp @@ -1298,7 +1298,6 @@ void PluginView::keepAlive(NPP instance) } #endif -#if ENABLE(NETSCAPE_PLUGIN_API) NPError PluginView::getValueStatic(NPNVariable variable, void* value) { LOG(Plugins, "PluginView::getValueStatic(%s)", prettyNameForNPNVariable(variable).data()); @@ -1309,7 +1308,6 @@ NPError PluginView::getValueStatic(NPNVariable variable, void* value) return NPERR_GENERIC_ERROR; } -#endif NPError PluginView::getValue(NPNVariable variable, void* value) { @@ -1319,10 +1317,8 @@ NPError PluginView::getValue(NPNVariable variable, void* value) if (platformGetValue(variable, value, &result)) return result; -#if ENABLE(NETSCAPE_PLUGIN_API) if (platformGetValueStatic(variable, value, &result)) return result; -#endif switch (variable) { #if ENABLE(NETSCAPE_PLUGIN_API) diff --git a/src/3rdparty/webkit/WebCore/plugins/PluginViewNone.cpp b/src/3rdparty/webkit/WebCore/plugins/PluginViewNone.cpp index ed5ad1b..16383cc 100644 --- a/src/3rdparty/webkit/WebCore/plugins/PluginViewNone.cpp +++ b/src/3rdparty/webkit/WebCore/plugins/PluginViewNone.cpp @@ -126,4 +126,12 @@ void PluginView::keepAlive(NPP) } #endif +void PluginView::privateBrowsingStateChanged(bool) +{ +} + +void PluginView::setJavaScriptPaused(bool) +{ +} + } // namespace WebCore diff --git a/src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.cpp b/src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.cpp index aece0e4..b839870 100644 --- a/src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.cpp +++ b/src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.cpp @@ -32,12 +32,12 @@ using namespace WebCore; -PluginContainerSymbian::PluginContainerSymbian(PluginView* view, QWidget* parent) - : m_parent(parent) +PluginContainerSymbian::PluginContainerSymbian(PluginView* view, QWidget* parent, QGraphicsProxyWidget* proxy) + : QWidget(parent) , m_pluginView(view) + , m_proxy(proxy) , m_hasPendingGeometryChange(false) { - setParent(m_parent); } PluginContainerSymbian::~PluginContainerSymbian() @@ -62,7 +62,7 @@ void PluginContainerSymbian::adjustGeometry() } } -void PluginContainerSymbian::focusInEvent(QFocusEvent* event) +void PluginContainerSymbian::focusInEvent(QFocusEvent*) { if (Page* page = m_pluginView->parentFrame()->page()) page->focusController()->setActive(true); diff --git a/src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.h b/src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.h index fce4a71..fead872 100644 --- a/src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.h +++ b/src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.h @@ -22,6 +22,8 @@ #include <QWidget> +class QGraphicsProxyWidget; + namespace WebCore { class PluginView; @@ -29,18 +31,19 @@ namespace WebCore { class PluginContainerSymbian : public QWidget { Q_OBJECT public: - PluginContainerSymbian(PluginView*, QWidget* parent); + PluginContainerSymbian(PluginView*, QWidget* parent, QGraphicsProxyWidget* proxy = 0); ~PluginContainerSymbian(); void requestGeometry(const QRect&, const QRegion& clip = QRegion()); void adjustGeometry(); + QGraphicsProxyWidget* proxy() { return m_proxy; } protected: virtual void focusInEvent(QFocusEvent*); virtual void focusOutEvent(QFocusEvent*); private: PluginView* m_pluginView; - QWidget* m_parent; + QGraphicsProxyWidget* m_proxy; QRect m_windowRect; QRegion m_clipRegion; bool m_hasPendingGeometryChange; diff --git a/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp b/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp index 3f3e2c0..bae3b7f 100644 --- a/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp +++ b/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp @@ -52,7 +52,9 @@ #include "npfunctions.h" #include "npinterface.h" #include "npruntime_impl.h" +#include "qgraphicswebview.h" #include "runtime_root.h" +#include <QGraphicsProxyWidget> #include <QKeyEvent> #include <QPixmap> #include <QRegion> @@ -85,6 +87,7 @@ void PluginView::updatePluginWidget() IntRect oldClipRect = m_clipRect; m_windowRect = IntRect(frameView->contentsToWindow(frameRect().location()), frameRect().size()); + m_clipRect = windowClipRect(); m_clipRect.move(-m_windowRect.x(), -m_windowRect.y()); if (m_windowRect == oldWindowRect && m_clipRect == oldClipRect) @@ -387,12 +390,15 @@ bool PluginView::platformStart() if (m_isWindowed) { QWebPageClient* client = m_parentFrame->view()->hostWindow()->platformPageClient(); - // FIXME this will not work for QGraphicsView. - // But we cannot use winId because it will create a window and on S60, - // QWidgets should not create a window. - Q_ASSERT(qobject_cast<QWidget*>(client->pluginParent())); - setPlatformWidget(new PluginContainerSymbian(this, - qobject_cast<QWidget*>(client->pluginParent()))); + QGraphicsProxyWidget* proxy = 0; + if (QGraphicsWebView *webView = qobject_cast<QGraphicsWebView*>(client->pluginParent())) + proxy = new QGraphicsProxyWidget(webView); + + PluginContainerSymbian* container = new PluginContainerSymbian(this, proxy ? 0 : client->ownerWidget(), proxy); + setPlatformWidget(container); + if (proxy) + proxy->setWidget(container); + m_npWindow.type = NPWindowTypeWindow; m_npWindow.window = (void*)platformPluginWidget(); @@ -408,7 +414,11 @@ bool PluginView::platformStart() void PluginView::platformDestroy() { - delete platformPluginWidget(); + QWebPageClient* client = m_parentFrame->view()->hostWindow()->platformPageClient(); + if (client && qobject_cast<QGraphicsWebView*>(client->pluginParent())) + delete static_cast<PluginContainerSymbian*>(platformPluginWidget())->proxy(); + else + delete platformPluginWidget(); } void PluginView::halt() diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderPartObject.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderPartObject.cpp index c4c515e..0958942 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderPartObject.cpp +++ b/src/3rdparty/webkit/WebCore/rendering/RenderPartObject.cpp @@ -51,19 +51,30 @@ RenderPartObject::RenderPartObject(Element* element) { } -bool RenderPartObject::flattenFrame() const +bool RenderPartObject::flattenFrame() { if (!node() || !node()->hasTagName(iframeTag)) return false; - HTMLIFrameElement* frame = static_cast<HTMLIFrameElement*>(node()); - bool isScrollable = frame->scrollingMode() != ScrollbarAlwaysOff; + HTMLIFrameElement* element = static_cast<HTMLIFrameElement*>(node()); + bool isScrollable = element->scrollingMode() != ScrollbarAlwaysOff; if (!isScrollable && style()->width().isFixed() && style()->height().isFixed()) return false; - return frame->document()->frame() && frame->document()->frame()->settings()->frameFlatteningEnabled(); + Frame* frame = element->document()->frame(); + bool enabled = frame && frame->settings()->frameFlatteningEnabled(); + + if (!enabled || !frame->page()) + return false; + + FrameView* view = frame->page()->mainFrame()->view(); + if (!view) + return false; + + // Do not flatten offscreen inner frames during frame flattening. + return absoluteBoundingBoxRect().intersects(IntRect(IntPoint(0, 0), view->contentsSize())); } void RenderPartObject::calcHeight() diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderPartObject.h b/src/3rdparty/webkit/WebCore/rendering/RenderPartObject.h index 5c7277e..5898960 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderPartObject.h +++ b/src/3rdparty/webkit/WebCore/rendering/RenderPartObject.h @@ -42,7 +42,7 @@ private: virtual void viewCleared(); - bool flattenFrame() const; + bool flattenFrame(); }; inline RenderPartObject* toRenderPartObject(RenderObject* object) diff --git a/src/3rdparty/webkit/WebKit.pri b/src/3rdparty/webkit/WebKit.pri index 662932c..e737039 100644 --- a/src/3rdparty/webkit/WebKit.pri +++ b/src/3rdparty/webkit/WebKit.pri @@ -43,6 +43,10 @@ greaterThan(QT_MINOR_VERSION, 5):DEFINES += WTF_USE_ACCELERATED_COMPOSITING DEFINES += USE_SYSTEM_MALLOC } +CONFIG(release, debug|release) { + DEFINES += NDEBUG +} + BASE_DIR = $$PWD INCLUDEPATH += $$OUTPUT_DIR/include/QtWebKit diff --git a/src/3rdparty/webkit/WebKit.pro b/src/3rdparty/webkit/WebKit.pro index 3c6b1a7..6d466e2 100644 --- a/src/3rdparty/webkit/WebKit.pro +++ b/src/3rdparty/webkit/WebKit.pro @@ -5,19 +5,17 @@ include(WebKit.pri) SUBDIRS += \ JavaScriptCore \ - WebCore \ - WebKitTools/QtLauncher + WebCore -!CONFIG(standalone_package) { - SUBDIRS += JavaScriptCore/jsc.pro \ - WebKit/qt/tests \ - WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro - - !win32:!symbian { - SUBDIRS += WebKitTools/DumpRenderTree/qt/ImageDiff.pro - SUBDIRS += WebKitTools/DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro - } +# If the source exists, built it +exists($$PWD/WebKitTools/QtLauncher): SUBDIRS += WebKitTools/QtLauncher +exists($$PWD/JavaScriptCore/jsc.pro): SUBDIRS += JavaScriptCore/jsc.pro +exists($$PWD/WebKit/qt/tests): SUBDIRS += WebKit/qt/tests +exists($$PWD/WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro): SUBDIRS += WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro +!win32:!symbian { + exists($$PWD/WebKitTools/DumpRenderTree/qt/ImageDiff.pro): SUBDIRS += WebKitTools/DumpRenderTree/qt/ImageDiff.pro + exists($$PWD/WebKitTools/DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro): SUBDIRS += WebKitTools/DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro } build-qtscript { diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp index 2878960..ad66750 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp @@ -1059,7 +1059,12 @@ QWebSettings* QGraphicsWebView::settings() const */ QAction *QGraphicsWebView::pageAction(QWebPage::WebAction action) const { +#ifdef QT_NO_ACTION + Q_UNUSED(action) + return 0; +#else return page()->action(action); +#endif } /*! diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp index 06c82ba..394ea17 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp @@ -277,10 +277,11 @@ void QWEBKIT_EXPORT qt_drt_evaluateScriptInIsolatedWorld(QWebFrame* qFrame, int static bool webframe_scrollOverflow(WebCore::Frame* frame, int dx, int dy, const QPoint& pos) { - if (!frame || !frame->document() || !frame->eventHandler()) + if (!frame || !frame->document() || !frame->view() || !frame->eventHandler()) return false; - Node* node = frame->document()->elementFromPoint(pos.x(), pos.y()); + QPoint contentsPos = frame->view()->windowToContents(pos); + Node* node = frame->document()->elementFromPoint(contentsPos.x(), contentsPos.y()); if (!node) return false; @@ -321,37 +322,33 @@ static bool webframe_scrollOverflow(WebCore::Frame* frame, int dx, int dy, const */ void QWEBKIT_EXPORT qtwebkit_webframe_scrollRecursively(QWebFrame* qFrame, int dx, int dy, const QPoint& pos) { - Frame* frame = QWebFramePrivate::core(qFrame); + if (!qFrame) + return; - if (!frame || !frame->view()) + if (webframe_scrollOverflow(QWebFramePrivate::core(qFrame), dx, dy, pos)) return; - - if (!webframe_scrollOverflow(frame, dx, dy, pos)) { - do { - bool scrolledHorizontal = false; - bool scrolledVertical = false; - - IntSize scrollOffset = frame->view()->scrollOffset(); - IntPoint maxScrollOffset = frame->view()->maximumScrollPosition(); - if (dx > 0) // scroll right - scrolledHorizontal = scrollOffset.width() < maxScrollOffset.x(); - else if (dx < 0) // scroll left - scrolledHorizontal = scrollOffset.width() > 0; + bool scrollHorizontal = false; + bool scrollVertical = false; + + do { + if (dx > 0) // scroll right + scrollHorizontal = qFrame->scrollBarValue(Qt::Horizontal) < qFrame->scrollBarMaximum(Qt::Horizontal); + else if (dx < 0) // scroll left + scrollHorizontal = qFrame->scrollBarValue(Qt::Horizontal) > qFrame->scrollBarMinimum(Qt::Horizontal); - if (dy > 0) // scroll down - scrolledVertical = scrollOffset.height() < maxScrollOffset.y(); + if (dy > 0) // scroll down + scrollVertical = qFrame->scrollBarValue(Qt::Vertical) < qFrame->scrollBarMaximum(Qt::Vertical); else if (dy < 0) //scroll up - scrolledVertical = scrollOffset.height() > 0; + scrollVertical = qFrame->scrollBarValue(Qt::Vertical) > qFrame->scrollBarMinimum(Qt::Vertical); - if (scrolledHorizontal || scrolledVertical) { - frame->view()->scrollBy(IntSize(dx, dy)); - return; - } - - frame = frame->tree()->parent(); - } while (frame && frame->view()); - } + if (scrollHorizontal || scrollVertical) { + qFrame->scroll(dx, dy); + return; + } + + qFrame = qFrame->parentFrame(); + } while (qFrame); } @@ -1048,13 +1045,13 @@ void QWebFrame::setScrollBarPolicy(Qt::Orientation orientation, Qt::ScrollBarPol if (orientation == Qt::Horizontal) { d->horizontalScrollBarPolicy = policy; if (d->frame->view()) { - d->frame->view()->setHorizontalScrollbarMode((ScrollbarMode)policy); + d->frame->view()->setHorizontalScrollbarMode((ScrollbarMode)policy, policy != Qt::ScrollBarAsNeeded /* lock */); d->frame->view()->updateCanHaveScrollbars(); } } else { d->verticalScrollBarPolicy = policy; if (d->frame->view()) { - d->frame->view()->setVerticalScrollbarMode((ScrollbarMode)policy); + d->frame->view()->setVerticalScrollbarMode((ScrollbarMode)policy, policy != Qt::ScrollBarAsNeeded /* lock */); d->frame->view()->updateCanHaveScrollbars(); } } diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebkitglobal.h b/src/3rdparty/webkit/WebKit/qt/Api/qwebkitglobal.h index 9e8979f..665bf1b 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebkitglobal.h +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebkitglobal.h @@ -22,6 +22,12 @@ #include <QtCore/qglobal.h> +#define QTWEBKIT_VERSION_STR "2.0.0" +// QTWEBKIT_VERSION is (major << 16) + (minor << 8) + patch. Similar to Qt. +#define QTWEBKIT_VERSION 0x020000 +// Use: #if (QTWEBKIT_VERSION >= QTWEBKIT_VERSION_CHECK(2, 0, 0)). Similar to Qt. +#define QTWEBKIT_VERSION_CHECK(major, minor, patch) ((major<<16)|(minor<<8)|(patch)) + #if defined(QT_MAKEDLL) /* create a Qt DLL library */ # if defined(BUILD_WEBKIT) # define QWEBKIT_EXPORT Q_DECL_EXPORT diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp index 4c92c9f..007aeac 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp @@ -619,6 +619,7 @@ QMenu *QWebPagePrivate::createContextMenu(const WebCore::ContextMenu *webcoreMen } #endif // QT_NO_CONTEXTMENU +#ifndef QT_NO_ACTION void QWebPagePrivate::_q_webActionTriggered(bool checked) { QAction *a = qobject_cast<QAction *>(q->sender()); @@ -627,6 +628,7 @@ void QWebPagePrivate::_q_webActionTriggered(bool checked) QWebPage::WebAction action = static_cast<QWebPage::WebAction>(a->data().toInt()); q->triggerAction(action, checked); } +#endif // QT_NO_ACTION void QWebPagePrivate::_q_cleanupLeakMessages() { @@ -638,6 +640,9 @@ void QWebPagePrivate::_q_cleanupLeakMessages() void QWebPagePrivate::updateAction(QWebPage::WebAction action) { +#ifdef QT_NO_ACTION + Q_UNUSED(action) +#else QAction *a = actions[action]; if (!a || !mainFrame) return; @@ -697,6 +702,7 @@ void QWebPagePrivate::updateAction(QWebPage::WebAction action) if (a->isCheckable()) a->setChecked(checked); +#endif // QT_NO_ACTION } void QWebPagePrivate::updateNavigationActions() @@ -1320,7 +1326,7 @@ void QWebPagePrivate::inputMethodEvent(QInputMethodEvent *ev) case QInputMethodEvent::TextFormat: { QTextCharFormat textCharFormat = a.value.value<QTextFormat>().toCharFormat(); QColor qcolor = textCharFormat.underlineColor(); - underlines.append(CompositionUnderline(a.start, a.length, Color(makeRGBA(qcolor.red(), qcolor.green(), qcolor.blue(), qcolor.alpha())), false)); + underlines.append(CompositionUnderline(qMin(a.start, (a.start + a.length)), qMax(a.start, (a.start + a.length)), Color(makeRGBA(qcolor.red(), qcolor.green(), qcolor.blue(), qcolor.alpha())), false)); break; } case QInputMethodEvent::Cursor: { @@ -2297,6 +2303,7 @@ QString QWebPage::selectedText() const return d->page->focusController()->focusedOrMainFrame()->selectedText(); } +#ifndef QT_NO_ACTION /*! Returns a QAction for the specified WebAction \a action. @@ -2569,6 +2576,7 @@ QAction *QWebPage::action(WebAction action) const d->updateAction(action); return a; } +#endif // QT_NO_ACTION /*! \property QWebPage::modified @@ -2838,6 +2846,7 @@ bool QWebPage::swallowContextMenuEvent(QContextMenuEvent *event) */ void QWebPage::updatePositionDependentActions(const QPoint &pos) { +#ifndef QT_NO_ACTION // First we disable all actions, but keep track of which ones were originally enabled. QBitArray originallyEnabledWebActions(QWebPage::WebActionCount); for (int i = ContextMenuItemTagNoAction; i < ContextMenuItemBaseApplicationTag; ++i) { @@ -2847,6 +2856,7 @@ void QWebPage::updatePositionDependentActions(const QPoint &pos) a->setEnabled(false); } } +#endif // QT_NO_ACTION d->createMainFrame(); WebCore::Frame* focusedFrame = d->page->focusController()->focusedOrMainFrame(); @@ -2873,6 +2883,7 @@ void QWebPage::updatePositionDependentActions(const QPoint &pos) d->currentContextMenu = d->createContextMenu(&menu, menu.platformDescription(), &visitedWebActions); #endif // QT_NO_CONTEXTMENU +#ifndef QT_NO_ACTION // Finally, we restore the original enablement for the actions that were not put into the menu. originallyEnabledWebActions &= ~visitedWebActions; // Mask out visited actions (they're part of the menu) for (int i = 0; i < QWebPage::WebActionCount; ++i) { @@ -2881,6 +2892,7 @@ void QWebPage::updatePositionDependentActions(const QPoint &pos) a->setEnabled(true); } } +#endif // QT_NO_ACTION // This whole process ensures that any actions put into to the context menu has the right // enablement, while also keeping the correct enablement for actions that were left out of @@ -3377,7 +3389,7 @@ QString QWebPage::userAgentForUrl(const QUrl& url) const // Language QLocale locale; - if (d->client) + if (d->client && d->client->ownerWidget()) locale = d->client->ownerWidget()->locale(); QString name = locale.name(); name[2] = QLatin1Char('-'); diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.h b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.h index 24d0ed9..1adde06 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.h +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.h @@ -220,7 +220,9 @@ public: QString selectedText() const; +#ifndef QT_NO_ACTION QAction *action(WebAction action) const; +#endif virtual void triggerAction(WebAction action, bool checked = false); QSize viewportSize() const; @@ -348,7 +350,9 @@ protected: private: Q_PRIVATE_SLOT(d, void _q_onLoadProgressChanged(int)) +#ifndef QT_NO_ACTION Q_PRIVATE_SLOT(d, void _q_webActionTriggered(bool checked)) +#endif Q_PRIVATE_SLOT(d, void _q_cleanupLeakMessages()) QWebPagePrivate *d; diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp index 4387f4a..fcd1f4b 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp @@ -585,6 +585,7 @@ QString QWebView::selectedText() const return QString(); } +#ifndef QT_NO_ACTION /*! Returns a pointer to a QAction that encapsulates the specified web action \a action. */ @@ -592,6 +593,7 @@ QAction *QWebView::pageAction(QWebPage::WebAction action) const { return page()->action(action); } +#endif /*! Triggers the specified \a action. If it is a checkable action the specified diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebview.h b/src/3rdparty/webkit/WebKit/qt/Api/qwebview.h index f681fbc..1d651d5 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebview.h +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebview.h @@ -75,7 +75,9 @@ public: QString selectedText() const; +#ifndef QT_NO_ACTION QAction* pageAction(QWebPage::WebAction action) const; +#endif void triggerPageAction(QWebPage::WebAction action, bool checked = false); bool isModified() const; diff --git a/src/3rdparty/webkit/WebKit/qt/ChangeLog b/src/3rdparty/webkit/WebKit/qt/ChangeLog index b6176de..5e550f9 100644 --- a/src/3rdparty/webkit/WebKit/qt/ChangeLog +++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog @@ -1,3 +1,160 @@ +2010-04-09 Yi Shen <yi.4.shen@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] tst_QWebFrame::popupFocus() fails + https://bugs.webkit.org/show_bug.cgi?id=37320 + + The QWebPopup class has been moved & renamed, so tst_QWebFrame::popupFocus() should use + the class name "QComboBox", rather than "WebCore::QWebPopup" to find the popup menu. + + * tests/qwebframe/tst_qwebframe.cpp: + +2010-04-09 Tasuku Suzuki <tasuku.suzuki@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Fix compile error with QT_NO_ACTION + https://bugs.webkit.org/show_bug.cgi?id=36529 + + Make sure QT_NO_ACTION is not defined to use QAction + + * Api/qgraphicswebview.cpp: + (QGraphicsWebView::pageAction): + * Api/qwebpage.cpp: + (QWebPagePrivate::updateAction): + (QWebPage::updatePositionDependentActions): + * Api/qwebpage.h: + * Api/qwebview.cpp: + * Api/qwebview.h: + +2010-04-09 Simon Hausmann <simon.hausmann@nokia.com> + + Reviewed by Lars Knoll. + + [Qt] tests/qgraphicswebview fails + https://bugs.webkit.org/show_bug.cgi?id=37317 + + * Api/qwebpage.cpp: + (QWebPage::userAgentForUrl): Don't crash if the ownerWidget is null. + +2010-04-08 Benjamin Poulain <benjamin.poulain@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Warnings when compiling InspectorClientQt.cpp + https://bugs.webkit.org/show_bug.cgi?id=37266 + + Add a default: for the switch()-case to avoid + warnings. + + * WebCoreSupport/InspectorClientQt.cpp: + (WebCore::variantToSetting): + +2010-04-08 Joe Ligman <joseph.ligman@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] WebKit crashes while input text through input method. + The formatted text underline painting crashes when painting with invalid indexes. + https://bugs.webkit.org/show_bug.cgi?id=36870 + + * Api/qwebpage.cpp: + (QWebPagePrivate::inputMethodEvent): + * tests/qwebpage/tst_qwebpage.cpp: + (tst_QWebPage::inputMethodsTextFormat_data): + (tst_QWebPage::inputMethodsTextFormat): + +2010-04-01 Antonio Gomes <tonikitoo@webkit.org> + + Reviewed by David Hyatt. + + [Qt] REGRESSION:(r50665) QWebFrame::setScrollBarPolicy(Qt::Vertical,Qt::ScrollBarAlwaysOff) has no effect. + https://bugs.webkit.org/show_bug.cgi?id=29431 + + Make use of the new lock parameter of set{Vertical,Horizontal}ScrollbarMode. + + Always added a qt auto test for set scrollbar policy feature. + + * Api/qwebframe.cpp: + (QWebFrame::setScrollBarPolicy): + * tests/qwebframe/tst_qwebframe.cpp: + * WebCoreSupport/FrameLoaderClientQt.cpp: + (FrameLoaderClientQt::transitionToCommittedForNewPage): + +2010-04-08 Joe Ligman <joseph.ligman@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] qtwebkit_webframe_scrollRecursively scrolls when body.style.overflow="hidden" + https://bugs.webkit.org/show_bug.cgi?id=36674 + + The scrolling check was based on the frameview's scrolloffset, and + maximumScrollPosition, which does not acknowledge the overflow properties. + + I am now basing the scrolling off the scrollbar position. The scrollbars are + affected by the overflow properties indicating when not to scroll. The scrollbar + positions also continue to work for CSS ::-webkit-scrollbar styles. + + * Api/qwebframe.cpp: + (qtwebkit_webframe_scrollRecursively): + +2010-04-07 Andreas Kling <andreas.kling@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] When providing a widget for the PDF mime type it will cause a crash + + m_pluginView may actually be a Widget (for embedded Qt widgets), + so always check isPluginView() before calling PluginView specific methods. + + https://bugs.webkit.org/show_bug.cgi?id=29450 + + * WebCoreSupport/FrameLoaderClientQt.cpp: + (WebCore::FrameLoaderClientQt::finishedLoading): + (WebCore::FrameLoaderClientQt::setMainDocumentError): + (WebCore::FrameLoaderClientQt::committedLoad): + +2010-04-07 Dawit Alemayehu <adawit@kde.org> + + Reviewed by Simon Hausmann. + + https://bugs.webkit.org/show_bug.cgi?id=36827 + + Updated the WebCore::shouldTreatAsAttachement function call with the + new more generic replacement WebCore::contentDispositionType. + + See comments 39-42 in https://bugs.webkit.org/show_bug.cgi?id=36395 + + * WebCoreSupport/FrameLoaderClientQt.cpp: + (WebCore::FrameLoaderClientQt::dispatchDecidePolicyForMIMEType): + +2010-04-02 Laszlo Gombos <laszlo.1.gombos@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] [Symbian] Rebaseline Symbian def file + https://bugs.webkit.org/show_bug.cgi?id=37038 + + Switch the ordinal numbers for qtwebkit_webframe_scrollRecursively + and QWebInspector::closeEvent to match QtWebkit 4.6 branch + + Fix the signature for qt_drt_setFrameFlatteningEnabled + after r56718. + + Add new QtWebKit API symbols introduced not listed in the file yet. + + * symbian/eabi/QtWebKitu.def: + +2010-04-06 Diego Gonzalez <diego.gonzalez@openbossa.org> + + Reviewed by Simon Hausmann. + + [Qt] Add mechanism to detect QtWebKit 2.0 via the preprocessor + https://bugs.webkit.org/show_bug.cgi?id=36538 + + * Api/qwebkitglobal.h: + 2010-04-02 Luiz Agostini <luiz.agostini@openbossa.org> Reviewed by Kenneth Rohde Christiansen. diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.h b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.h index f8f217b..90ad29e 100644 --- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.h +++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.h @@ -34,10 +34,7 @@ #include "KURL.h" #include "PlatformString.h" -QT_BEGIN_NAMESPACE class QEventLoop; -QT_END_NAMESPACE - class QWebPage; namespace WebCore { diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp index c5c5739..5b1dd30 100644 --- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp +++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp @@ -215,12 +215,17 @@ void FrameLoaderClientQt::transitionToCommittedForNewPage() QWebPage* page = m_webFrame->page(); const QSize preferredLayoutSize = page->preferredContentsSize(); + ScrollbarMode hScrollbar = (ScrollbarMode) m_webFrame->scrollBarPolicy(Qt::Horizontal); + ScrollbarMode vScrollbar = (ScrollbarMode) m_webFrame->scrollBarPolicy(Qt::Vertical); + bool hLock = hScrollbar != ScrollbarAuto; + bool vLock = vScrollbar != ScrollbarAuto; + m_frame->createView(m_webFrame->page()->viewportSize(), backgroundColor, !backgroundColor.alpha(), preferredLayoutSize.isValid() ? IntSize(preferredLayoutSize) : IntSize(), preferredLayoutSize.isValid(), - (ScrollbarMode)m_webFrame->scrollBarPolicy(Qt::Horizontal), - (ScrollbarMode)m_webFrame->scrollBarPolicy(Qt::Vertical)); + hScrollbar, hLock, + vScrollbar, vLock); } @@ -517,7 +522,8 @@ void FrameLoaderClientQt::finishedLoading(DocumentLoader* loader) } } else { - m_pluginView->didFinishLoading(); + if (m_pluginView->isPluginView()) + m_pluginView->didFinishLoading(); m_pluginView = 0; m_hasSentResponseToPlugin = false; } @@ -706,7 +712,8 @@ void FrameLoaderClientQt::setMainDocumentError(WebCore::DocumentLoader* loader, m_firstData = false; } } else { - m_pluginView->didFail(error); + if (m_pluginView->isPluginView()) + m_pluginView->didFail(error); m_pluginView = 0; m_hasSentResponseToPlugin = false; } @@ -726,7 +733,7 @@ void FrameLoaderClientQt::committedLoad(WebCore::DocumentLoader* loader, const c } // We re-check here as the plugin can have been created - if (m_pluginView) { + if (m_pluginView && m_pluginView->isPluginView()) { if (!m_hasSentResponseToPlugin) { m_pluginView->didReceiveResponse(loader->response()); // didReceiveResponse sets up a new stream to the plug-in. on a full-page plug-in, a failure in @@ -967,8 +974,9 @@ WebCore::Frame* FrameLoaderClientQt::dispatchCreatePage() void FrameLoaderClientQt::dispatchDecidePolicyForMIMEType(FramePolicyFunction function, const WebCore::String& MIMEType, const WebCore::ResourceRequest&) { // we need to call directly here - if (WebCore::shouldTreatAsAttachment(m_frame->loader()->activeDocumentLoader()->response())) - callPolicyFunction(function, PolicyDownload); + const ResourceResponse& response = m_frame->loader()->activeDocumentLoader()->response(); + if (WebCore::contentDispositionType(response.httpHeaderField("Content-Disposition")) == WebCore::ContentDispositionAttachment) + callPolicyFunction(function, PolicyDownload); else if (canShowMIMEType(MIMEType)) callPolicyFunction(function, PolicyUse); else diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp index 139499d..c0c78ba 100644 --- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp +++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp @@ -149,6 +149,8 @@ static String variantToSetting(const QVariant& qvariant) retVal = qvariant.toBool() ? "true" : "false"; case QVariant::String: retVal = qvariant.toString(); + default: + break; } return retVal; diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/QtFallbackWebPopup.h b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/QtFallbackWebPopup.h index 62b8aea..9d1183f 100644 --- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/QtFallbackWebPopup.h +++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/QtFallbackWebPopup.h @@ -23,9 +23,7 @@ #include "QtAbstractWebPopup.h" #include <QComboBox> -QT_BEGIN_NAMESPACE class QGraphicsProxyWidget; -QT_END_NAMESPACE namespace WebCore { diff --git a/src/3rdparty/webkit/WebKit/qt/symbian/eabi/QtWebKitu.def b/src/3rdparty/webkit/WebKit/qt/symbian/eabi/QtWebKitu.def index 582305f..145fe0b 100644 --- a/src/3rdparty/webkit/WebKit/qt/symbian/eabi/QtWebKitu.def +++ b/src/3rdparty/webkit/WebKit/qt/symbian/eabi/QtWebKitu.def @@ -694,7 +694,7 @@ EXPORTS _Z25qt_resumeActiveDOMObjectsP9QWebFrame @ 693 NONAME _Z26qt_suspendActiveDOMObjectsP9QWebFrame @ 694 NONAME _Z35qtwebkit_webframe_scrollRecursivelyP9QWebFrameii @ 695 NONAME ABSENT - _ZN13QWebInspector10closeEventEP11QCloseEvent @ 696 NONAME + _Z35qtwebkit_webframe_scrollRecursivelyP9QWebFrameiiRK6QPoint @ 696 NONAME _ZN9QWebFrame17scrollRecursivelyEii @ 697 NONAME ABSENT _ZN16QGraphicsWebView20setResizesToContentsEb @ 698 NONAME _ZNK16QGraphicsWebView17resizesToContentsEv @ 699 NONAME @@ -707,12 +707,16 @@ EXPORTS _Z31qt_drt_pageNumberForElementByIdP9QWebFrameRK7QStringff @ 706 NONAME _Z33qt_drt_webinspector_executeScriptP8QWebPagelRK7QString @ 707 NONAME _Z34qt_drt_setTimelineProfilingEnabledP8QWebPageb @ 708 NONAME - _Z35qt_drt_setFrameFlatteningEnabledP8QWebPageb @ 709 NONAME + _Z32qt_drt_setFrameFlatteningEnabledP8QWebPageb @ 709 NONAME _Z36qt_drt_evaluateScriptInIsolatedWorldP9QWebFrameiRK7QString @ 710 NONAME _Z47qt_drt_setDomainRelaxationForbiddenForURLSchemebRK7QString @ 711 NONAME _ZN9QWebFrame11pageChangedEv @ 712 NONAME _ZN9QWebFrame14scrollToAnchorERK7QString @ 713 NONAME _ZN12QWebSettings15setInspectorUrlERK4QUrl @ 714 NONAME - _Z35qtwebkit_webframe_scrollRecursivelyP9QWebFrameiiRK6QPoint @ 715 NONAME + _ZN13QWebInspector10closeEventEP11QCloseEvent @ 715 NONAME _ZN16QGraphicsWebView26setTiledBackingStoreFrozenEb @ 716 NONAME _ZNK16QGraphicsWebView25isTiledBackingStoreFrozenEv @ 717 NONAME + _Z18qt_wrt_setViewModeP8QWebPageRK7QString @ 718 NONAME + _Z19qt_drt_setMediaTypeP9QWebFrameRK7QString @ 719 NONAME + _Z26qt_drt_enableCaretBrowsingP8QWebPageb @ 720 NONAME + _ZNK12QWebSettings12inspectorUrlEv @ 721 NONAME diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp index 37f7b88..72370ad 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp +++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp @@ -585,6 +585,7 @@ private slots: void render(); void scrollPosition(); void scrollToAnchor(); + void scrollbarsOff(); void evaluateWillCauseRepaint(); void qObjectWrapperWithSameIdentity(); void introspectQtMethods_data(); @@ -2514,7 +2515,7 @@ void tst_QWebFrame::popupFocus() // open the popup by clicking. check if focus is on the popup QTest::mouseClick(&view, Qt::LeftButton, 0, QPoint(25, 25)); - QObject* webpopup = firstChildByClassName(&view, "WebCore::QWebPopup"); + QObject* webpopup = firstChildByClassName(&view, "QComboBox"); QComboBox* combo = qobject_cast<QComboBox*>(webpopup); QVERIFY(combo != 0); QTRY_VERIFY(!view.hasFocus() && combo->view()->hasFocus()); // Focus should be on the popup @@ -2796,6 +2797,38 @@ void tst_QWebFrame::scrollToAnchor() QVERIFY(frame->scrollPosition().y() != 0); } + +void tst_QWebFrame::scrollbarsOff() +{ + QWebView view; + QWebFrame* mainFrame = view.page()->mainFrame(); + + mainFrame->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff); + mainFrame->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff); + + QString html("<script>" \ + " function checkScrollbar() {" \ + " if (innerWidth === document.documentElement.offsetWidth)" \ + " document.getElementById('span1').innerText = 'SUCCESS';" \ + " else" \ + " document.getElementById('span1').innerText = 'FAIL';" \ + " }" \ + "</script>" \ + "<body>" \ + " <div style='margin-top:1000px ; margin-left:1000px'>" \ + " <a id='offscreen' href='a'>End</a>" \ + " </div>" \ + "<span id='span1'></span>" \ + "</body>"); + + + view.setHtml(html); + ::waitForSignal(&view, SIGNAL(loadFinished(bool))); + + mainFrame->evaluateJavaScript("checkScrollbar();"); + QCOMPARE(mainFrame->documentElement().findAll("span").at(0).toPlainText(), QString("SUCCESS")); +} + void tst_QWebFrame::evaluateWillCauseRepaint() { QWebView view; diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp index 4425bac..1f97e69 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp +++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp @@ -26,6 +26,7 @@ #include <QMenu> #include <QPushButton> #include <QtTest/QtTest> +#include <QTextCharFormat> #include <qgraphicsscene.h> #include <qgraphicsview.h> #include <qgraphicswebview.h> @@ -98,6 +99,8 @@ private slots: void consoleOutput(); void inputMethods_data(); void inputMethods(); + void inputMethodsTextFormat_data(); + void inputMethodsTextFormat(); void defaultTextEncoding(); void errorPageExtension(); void errorPageExtensionInIFrames(); @@ -1479,6 +1482,56 @@ void tst_QWebPage::inputMethods() delete container; } +void tst_QWebPage::inputMethodsTextFormat_data() +{ + QTest::addColumn<QString>("string"); + QTest::addColumn<int>("start"); + QTest::addColumn<int>("length"); + + QTest::newRow("") << QString("") << 0 << 0; + QTest::newRow("Q") << QString("Q") << 0 << 1; + QTest::newRow("Qt") << QString("Qt") << 0 << 1; + QTest::newRow("Qt") << QString("Qt") << 0 << 2; + QTest::newRow("Qt") << QString("Qt") << 1 << 1; + QTest::newRow("Qt ") << QString("Qt ") << 0 << 1; + QTest::newRow("Qt ") << QString("Qt ") << 1 << 1; + QTest::newRow("Qt ") << QString("Qt ") << 2 << 1; + QTest::newRow("Qt ") << QString("Qt ") << 2 << -1; + QTest::newRow("Qt ") << QString("Qt ") << -2 << 3; + QTest::newRow("Qt ") << QString("Qt ") << 0 << 3; + QTest::newRow("Qt by") << QString("Qt by") << 0 << 1; + QTest::newRow("Qt by Nokia") << QString("Qt by Nokia") << 0 << 1; +} + + +void tst_QWebPage::inputMethodsTextFormat() +{ + QWebPage* page = new QWebPage; + QWebView* view = new QWebView; + view->setPage(page); + page->settings()->setFontFamily(QWebSettings::SerifFont, "FooSerifFont"); + page->mainFrame()->setHtml("<html><body>" \ + "<input type='text' id='input1' style='font-family: serif' value='' maxlength='20'/>"); + page->mainFrame()->evaluateJavaScript("document.getElementById('input1').focus()"); + page->mainFrame()->setFocus(); + view->show(); + + QFETCH(QString, string); + QFETCH(int, start); + QFETCH(int, length); + + QList<QInputMethodEvent::Attribute> attrs; + QTextCharFormat format; + format.setUnderlineStyle(QTextCharFormat::SingleUnderline); + format.setUnderlineColor(Qt::red); + attrs.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, start, length, format)); + QInputMethodEvent im(string, attrs); + page->event(&im); + + QTest::qWait(1000); + + delete view; +} // import a little DRT helper function to trigger the garbage collector void QWEBKIT_EXPORT qt_drt_garbageCollector_collect(); |