Diff
Modified: branches/safari-605-branch/Source/WebCore/ChangeLog (228510 => 228511)
--- branches/safari-605-branch/Source/WebCore/ChangeLog 2018-02-15 16:06:49 UTC (rev 228510)
+++ branches/safari-605-branch/Source/WebCore/ChangeLog 2018-02-15 16:06:54 UTC (rev 228511)
@@ -1,5 +1,61 @@
2018-02-15 Jason Marcell <[email protected]>
+ Cherry-pick r228482. rdar://problem/37559826
+
+ 2018-02-12 Ryosuke Niwa <[email protected]>
+
+ REGRESSION (r223440): Copying & pasting a list from Microsoft Word to TinyMCE fails
+ https://bugs.webkit.org/show_bug.cgi?id=182564
+
+ Reviewed by Wenson Hsieh.
+
+ Unfortunately, r228352 was inadaquate to fix copying & pasting of a list item from Microsoft Word into TinyMCE
+ in older verions of TinyMCE. This patch amends the approach taken by r228352 to make it work across the board
+ as well as unbreak GMail.
+
+ Turns out older versions of TinyMCE can't handle list items when computed styles are added as inline style
+ declarations by WebKit. To make this work, avoid adding any computed styles as inline styles within mso-list
+ conditionals as well as any p elements whose style attribute contains "mso-list" property. We would instead
+ preserve these styles by keeping Microsoft Word's CSS style rules in addition to special @list rules.
+
+ In addition, not keeping the style element of Microsoft Word in a head element as done in r228352 causes some
+ versions of TinyMCE to treat it as regular text, and inserting a bunch of @list rules as user visible text.
+ To work around this problem, we serialize the style rules as a comment (<!-- ~ -->) within a head element.
+
+ Furthermore, when Microsoft Word is in the compatibility mode, it does not generate xmlns:o as the first xmlns
+ declaration. Generalized the code to detect Microsoft Word's HTML declaration by looking for xmlns:o and xmlns:w
+ xmls declarations.
+
+ Finally, it turns out that Gmail has its own handling of list items copy & pasted from Microsoft Word, and also
+ needs this quirks but in the pasted HTML, not the one exposed in getData. As such, this patch also enables the
+ MSO list quirks in the pasted content as well as the one exposed in getData.
+
+ Tests: PasteHTML.PreservesMSOList
+ PasteHTML.PreservesMSOListInCompatibilityMode
+ PasteHTML.StripsMSOListWhenMissingMSOHTMLElement
+ PasteWebArchive.PreservesMSOList
+ PasteWebArchive.PreservesMSOListInCompatibilityMode
+ PasteWebArchive.StripsMSOListWhenMissingMSOHTMLElement
+
+ * editing/HTMLInterchange.h:
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::removeHeadContents): Don't remove the special style element needed for the MSO list quirks since we
+ don't keep the computed style as inline styles in this case.
+ * editing/cocoa/WebContentReaderCocoa.mm:
+ (WebCore::WebContentReader::readWebArchive): Enable the quirks in the pasted content as well as opposed to
+ just in DataTransfer API exposed to the _javascript_.
+ (WebCore::WebContentReader::readHTML): Ditto.
+ * editing/markup.cpp:
+ (WebCore::shouldPreserveMSOLists): Added. Generalized the logic to detect a Microsoft Word document.
+ more xmlns declarations.
+ (WebCore::StyledMarkupAccumulator::shouldPreserveMSOListStyleForElement): Added.
+ (WebCore::StyledMarkupAccumulator::appendElement): Don't generate the second style element here for elements
+ with most-list properties. Instead, avoid overriding inline styles with computed styles altogether.
+ (WebCore::StyledMarkupAccumulator::appendNodeToPreserveMSOList): Include the style rules as well as list rules
+ and wrap the "style" element in a "head" element to make it compatible with older versions of TinyMCE.
+
+2018-02-15 Jason Marcell <[email protected]>
+
Cherry-pick r228352. rdar://problem/37559826
2018-02-08 Ryosuke Niwa <[email protected]>
Modified: branches/safari-605-branch/Source/WebCore/editing/HTMLInterchange.h (228510 => 228511)
--- branches/safari-605-branch/Source/WebCore/editing/HTMLInterchange.h 2018-02-15 16:06:49 UTC (rev 228510)
+++ branches/safari-605-branch/Source/WebCore/editing/HTMLInterchange.h 2018-02-15 16:06:54 UTC (rev 228511)
@@ -36,6 +36,7 @@
#define ApplePasteAsQuotation "Apple-paste-as-quotation"
#define AppleStyleSpanClass "Apple-style-span"
#define AppleTabSpanClass "Apple-tab-span"
+#define WebKitMSOListQuirksStyle "WebKit-mso-list-quirks-style"
enum EAnnotateForInterchange { DoNotAnnotateForInterchange, AnnotateForInterchange };
Modified: branches/safari-605-branch/Source/WebCore/editing/ReplaceSelectionCommand.cpp (228510 => 228511)
--- branches/safari-605-branch/Source/WebCore/editing/ReplaceSelectionCommand.cpp 2018-02-15 16:06:49 UTC (rev 228510)
+++ branches/safari-605-branch/Source/WebCore/editing/ReplaceSelectionCommand.cpp 2018-02-15 16:06:54 UTC (rev 228511)
@@ -728,7 +728,8 @@
auto it = descendantsOfType<Element>(*fragment.fragment()).begin();
auto end = descendantsOfType<Element>(*fragment.fragment()).end();
while (it != end) {
- if (is<HTMLBaseElement>(*it) || is<HTMLLinkElement>(*it) || is<HTMLMetaElement>(*it) || is<HTMLStyleElement>(*it) || is<HTMLTitleElement>(*it)) {
+ if (is<HTMLBaseElement>(*it) || is<HTMLLinkElement>(*it) || is<HTMLMetaElement>(*it) || is<HTMLTitleElement>(*it)
+ || (is<HTMLStyleElement>(*it) && it->getAttribute(classAttr) != WebKitMSOListQuirksStyle)) {
toRemove.append(&*it);
it.traverseNextSkippingChildren();
continue;
Modified: branches/safari-605-branch/Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm (228510 => 228511)
--- branches/safari-605-branch/Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm 2018-02-15 16:06:49 UTC (rev 228510)
+++ branches/safari-605-branch/Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm 2018-02-15 16:06:54 UTC (rev 228511)
@@ -429,7 +429,7 @@
return true;
}
- String sanitizedMarkup = sanitizeMarkupWithArchive(*frame.document(), *result, MSOListQuirks::Disabled, [&] (const String& type) {
+ String sanitizedMarkup = sanitizeMarkupWithArchive(*frame.document(), *result, msoListQuirksForMarkup(), [&] (const String& type) {
return frame.loader().client().canShowMIMETypeAsHTML(type);
});
fragment = createFragmentFromMarkup(*frame.document(), sanitizedMarkup, blankURL(), DisallowScriptingAndPluginContent);
@@ -490,7 +490,7 @@
String markup;
if (RuntimeEnabledFeatures::sharedFeatures().customPasteboardDataEnabled() && shouldSanitize()) {
- markup = sanitizeMarkup(stringOmittingMicrosoftPrefix, MSOListQuirks::Disabled, WTF::Function<void (DocumentFragment&)> { [] (DocumentFragment& fragment) {
+ markup = sanitizeMarkup(stringOmittingMicrosoftPrefix, msoListQuirksForMarkup(), WTF::Function<void (DocumentFragment&)> { [] (DocumentFragment& fragment) {
removeSubresourceURLAttributes(fragment, [] (const URL& url) {
return shouldReplaceSubresourceURL(url);
});
Modified: branches/safari-605-branch/Source/WebCore/editing/markup.cpp (228510 => 228511)
--- branches/safari-605-branch/Source/WebCore/editing/markup.cpp 2018-02-15 16:06:49 UTC (rev 228510)
+++ branches/safari-605-branch/Source/WebCore/editing/markup.cpp 2018-02-15 16:06:54 UTC (rev 228511)
@@ -236,6 +236,8 @@
String renderedText(const Node&, const Range*);
String stringValueForRange(const Node&, const Range*);
+ bool shouldPreserveMSOListStyleForElement(const Element&);
+
void appendElement(StringBuilder& out, const Element&, bool addDisplayInline, RangeFullySelectsNode);
void appendCustomAttributes(StringBuilder&, const Element&, Namespaces*) override;
@@ -420,6 +422,11 @@
#endif
}
+bool StyledMarkupAccumulator::shouldPreserveMSOListStyleForElement(const Element& element)
+{
+ return m_inMSOList || (m_shouldPreserveMSOList && element.hasTagName(pTag) && element.getAttribute(styleAttr).contains(";mso-list:"));
+}
+
void StyledMarkupAccumulator::appendElement(StringBuilder& out, const Element& element, bool addDisplayInline, RangeFullySelectsNode rangeFullySelectsNode)
{
const bool documentIsHTML = element.document().isHTMLDocument();
@@ -428,16 +435,12 @@
appendCustomAttributes(out, element, nullptr);
const bool shouldAnnotateOrForceInline = element.isHTMLElement() && (shouldAnnotate() || addDisplayInline);
- const bool shouldOverrideStyleAttr = shouldAnnotateOrForceInline || shouldApplyWrappingStyle(element);
- bool containsMSOList = false;
+ bool shouldOverrideStyleAttr = (shouldAnnotateOrForceInline || shouldApplyWrappingStyle(element)) && !shouldPreserveMSOListStyleForElement(element);
if (element.hasAttributes()) {
for (const Attribute& attribute : element.attributesIterator()) {
// We'll handle the style attribute separately, below.
- if (attribute.name() == styleAttr && shouldOverrideStyleAttr) {
- if (m_shouldPreserveMSOList && attribute.value().contains(";mso-list:"))
- containsMSOList = true;
+ if (attribute.name() == styleAttr && shouldOverrideStyleAttr)
continue;
- }
if (element.isEventHandlerAttribute(attribute) || element.isJavaScriptURLAttribute(attribute))
continue;
appendAttribute(out, element, attribute, 0);
@@ -480,16 +483,6 @@
appendAttributeValue(out, newInlineStyle->style()->asText(), documentIsHTML);
out.append('\"');
}
-
- if (containsMSOList) {
- ASSERT(m_shouldPreserveMSOList);
- // Unfortunately, TinyMCE doesn't recognize mso-list inline style if the style attribute contains properties.
- // Generate a separate, second style attribute if newInlineStyle is not empty above.
- // The inline style is preserved because the first attribute always wins but TinyMCE can still recognize the list.
- out.appendLiteral(" style=\"");
- appendAttributeValue(out, element.getAttribute(styleAttr), documentIsHTML);
- out.append('\"');
- }
}
appendCloseTag(out, element);
@@ -614,18 +607,21 @@
auto& textChild = downcast<Text>(*firstChild);
auto& styleContent = textChild.data();
+ const auto msoStyleDefinitionsStart = styleContent.find("/* Style Definitions */");
const auto msoListDefinitionsStart = styleContent.find("/* List Definitions */");
const auto lastListItem = styleContent.reverseFind("\n@list");
if (msoListDefinitionsStart == notFound || lastListItem == notFound)
return false;
+ const auto start = msoStyleDefinitionsStart != notFound && msoStyleDefinitionsStart < msoListDefinitionsStart ? msoStyleDefinitionsStart : msoListDefinitionsStart;
const auto msoListDefinitionsEnd = styleContent.find(";}\n", lastListItem);
- if (msoListDefinitionsEnd == notFound || msoListDefinitionsStart >= msoListDefinitionsEnd)
+ if (msoListDefinitionsEnd == notFound || start >= msoListDefinitionsEnd)
return false;
- appendStartTag(node);
- appendTextSubstring(textChild, msoListDefinitionsStart, msoListDefinitionsEnd - msoListDefinitionsStart + 1);
- appendEndTag(node);
+ appendString("<head><style class=\"" WebKitMSOListQuirksStyle "\">\n<!--\n");
+ appendTextSubstring(textChild, start, msoListDefinitionsEnd - start + 3);
+ appendString("\n-->\n</style></head>");
+
return true;
}
return false;
@@ -838,11 +834,22 @@
return createMarkupInternal(range.ownerDocument(), range, nodes, shouldAnnotate, convertBlocksToInlines, shouldResolveURLs, MSOListMode::DoNotPreserve);
}
+static bool shouldPreserveMSOLists(const String& markup)
+{
+ if (!markup.startsWith("<html xmlns:"))
+ return false;
+ auto tagClose = markup.find('>');
+ if (tagClose == notFound)
+ return false;
+ auto htmlTag = markup.substring(0, tagClose);
+ return htmlTag.contains("xmlns:o=\"urn:schemas-microsoft-com:office:office\"")
+ && htmlTag.contains("xmlns:w=\"urn:schemas-microsoft-com:office:word\"");
+}
+
String sanitizedMarkupForFragmentInDocument(Ref<DocumentFragment>&& fragment, Document& document, MSOListQuirks msoListQuirks, const String& originalMarkup)
{
- MSOListMode msoListMode = MSOListMode::DoNotPreserve;
- if (msoListQuirks == MSOListQuirks::CheckIfNeeded && originalMarkup.startsWith("<html xmlns:o=\"urn:schemas-microsoft-com:office:office\""))
- msoListMode = MSOListMode::Preserve;
+ MSOListMode msoListMode = msoListQuirks == MSOListQuirks::CheckIfNeeded && shouldPreserveMSOLists(originalMarkup)
+ ? MSOListMode::Preserve : MSOListMode::DoNotPreserve;
auto bodyElement = makeRefPtr(document.body());
ASSERT(bodyElement);
Modified: branches/safari-605-branch/Tools/ChangeLog (228510 => 228511)
--- branches/safari-605-branch/Tools/ChangeLog 2018-02-15 16:06:49 UTC (rev 228510)
+++ branches/safari-605-branch/Tools/ChangeLog 2018-02-15 16:06:54 UTC (rev 228511)
@@ -1,5 +1,30 @@
2018-02-15 Jason Marcell <[email protected]>
+ Cherry-pick r228482. rdar://problem/37559826
+
+ 2018-02-12 Ryosuke Niwa <[email protected]>
+
+ REGRESSION (r223440): Copying & pasting a list from Microsoft Word to TinyMCE fails
+ https://bugs.webkit.org/show_bug.cgi?id=182564
+
+ Reviewed by Wenson Hsieh.
+
+ Updated assertions to make sure the trailing "}" of @list rules is includd in the style, the "style" element
+ is wrapped by "head" element (not present in the pasted markup since the fragment parsing algorithm strips away),
+ and the style content is enclosed in "<!--" and "-->".
+
+ Also use execCommand('insertHTML', ~) to insert the HTML obtained via dataTransfer.getData instead of innerHTML
+ to make sure our pasting code preserves the special style element for MSO list quirks.
+
+ Finally, added two more test cases for pasting content from Microsoft Word's compatibility mode.
+
+ * TestWebKitAPI/Tests/WebKitCocoa/PasteHTML.mm:
+ (TEST):
+ * TestWebKitAPI/Tests/WebKitCocoa/PasteWebArchive.mm:
+ (TEST):
+
+2018-02-15 Jason Marcell <[email protected]>
+
Cherry-pick r228352. rdar://problem/37559826
2018-02-08 Ryosuke Niwa <[email protected]>
Modified: branches/safari-605-branch/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (228510 => 228511)
--- branches/safari-605-branch/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2018-02-15 16:06:49 UTC (rev 228510)
+++ branches/safari-605-branch/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2018-02-15 16:06:54 UTC (rev 228511)
@@ -573,6 +573,7 @@
9B26FCCA159D16DE00CC3765 /* HTMLFormCollectionNamedItem.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 9B26FCB4159D15E700CC3765 /* HTMLFormCollectionNamedItem.html */; };
9B270FEE1DDC2C0B002D53F3 /* closed-shadow-tree-test.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 9B270FED1DDC25FD002D53F3 /* closed-shadow-tree-test.html */; };
9B4F8FA7159D52DD002D9F94 /* HTMLCollectionNamedItem.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 9B4F8FA6159D52CA002D9F94 /* HTMLCollectionNamedItem.html */; };
+ 9B59F12A2034086F009E63D5 /* mso-list-compat-mode.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 9B59F12920340854009E63D5 /* mso-list-compat-mode.html */; };
9B62630C1F8C25C8007EE29B /* copy-url.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 9B62630B1F8C2510007EE29B /* copy-url.html */; };
9B7A37C41F8AEBA5004AA228 /* CopyURL.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9B7A37C21F8AEBA5004AA228 /* CopyURL.mm */; };
9B7D740F1F8378770006C432 /* paste-rtfd.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 9B7D740E1F8377E60006C432 /* paste-rtfd.html */; };
@@ -1015,6 +1016,7 @@
51CD1C721B38D48400142CA5 /* modal-alerts-in-new-about-blank-window.html in Copy Resources */,
7A1458FC1AD5C07000E06772 /* mouse-button-listener.html in Copy Resources */,
33E79E06137B5FD900E32D99 /* mouse-move-listener.html in Copy Resources */,
+ 9B59F12A2034086F009E63D5 /* mso-list-compat-mode.html in Copy Resources */,
9BF356CD202D458500F71160 /* mso-list.html in Copy Resources */,
5797FE331EB15AB100B2F4A0 /* navigation-client-default-crypto.html in Copy Resources */,
C99B675F1E39736F00FC6C80 /* no-autoplay-with-controls.html in Copy Resources */,
@@ -1589,6 +1591,7 @@
9B270FED1DDC25FD002D53F3 /* closed-shadow-tree-test.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "closed-shadow-tree-test.html"; sourceTree = "<group>"; };
9B4F8FA3159D52B1002D9F94 /* HTMLCollectionNamedItem.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = HTMLCollectionNamedItem.mm; sourceTree = "<group>"; };
9B4F8FA6159D52CA002D9F94 /* HTMLCollectionNamedItem.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = HTMLCollectionNamedItem.html; sourceTree = "<group>"; };
+ 9B59F12920340854009E63D5 /* mso-list-compat-mode.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = "mso-list-compat-mode.html"; sourceTree = "<group>"; };
9B62630B1F8C2510007EE29B /* copy-url.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = "copy-url.html"; sourceTree = "<group>"; };
9B79164F1BD89D0D00D50B8F /* FirstResponderScrollingPosition.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FirstResponderScrollingPosition.mm; sourceTree = "<group>"; };
9B7A37C21F8AEBA5004AA228 /* CopyURL.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = CopyURL.mm; sourceTree = "<group>"; };
@@ -2435,6 +2438,7 @@
46C519E31D35629600DAA51A /* LocalStorageNullEntries.localstorage */,
46C519E41D35629600DAA51A /* LocalStorageNullEntries.localstorage-shm */,
7A6A2C711DCCFB0200C0D085 /* LocalStorageQuirkEnabled.html */,
+ 9B59F12920340854009E63D5 /* mso-list-compat-mode.html */,
9BF356CC202D44F200F71160 /* mso-list.html */,
93E2D2751ED7D51700FA76F6 /* offscreen-iframe-of-media-document.html */,
7CCB99221D3B44E7003922F6 /* open-multiple-external-url.html */,
Modified: branches/safari-605-branch/Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteHTML.mm (228510 => 228511)
--- branches/safari-605-branch/Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteHTML.mm 2018-02-15 16:06:49 UTC (rev 228510)
+++ branches/safari-605-branch/Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteHTML.mm 2018-02-15 16:06:54 UTC (rev 228511)
@@ -170,32 +170,74 @@
[webView stringByEvaluatingJavaScript:@"window.pastedHTML = editor.innerHTML"];
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue);
- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* List Definitions */')"].boolValue);
- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('@list l0:level1')"].boolValue);
- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[if !supportLists]')"].boolValue);
- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[endif]')"].boolValue);
- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes(' style=\"text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue);
- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* Style Definitions */')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('<style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* Style Definitions */')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* List Definitions */')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('@list l0:level1')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('}\\n\\n-->\\n</style>')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[if !supportLists]')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[endif]')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes(' style=\"text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/Users/webkitten/Library/')"].boolValue);
+
[webView stringByEvaluatingJavaScript:@"getSelection().setPosition(document.querySelector('.MsoListParagraphCxSpLast'));"];
[webView stringByEvaluatingJavaScript:@"getSelection().modify('move', 'forward', 'lineboundary');"];
EXPECT_WK_STREQ("rgb(255, 0, 0)", [webView stringByEvaluatingJavaScript:@"document.queryCommandValue('foreColor')"]);
EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('<head><style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue);
EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* List Definitions */')"].boolValue);
EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('@list l0:level1')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('}\\n\\n-->\\n</style></head>')"].boolValue);
EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[if !supportLists]')"].boolValue);
EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[endif]')"].boolValue);
EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes(' style=\"text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue);
- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/Users/webkitten/Library/')"].boolValue);
- [webView stringByEvaluatingJavaScript:@"editor.innerHTML = htmlInDataTransfer"];
+ [webView stringByEvaluatingJavaScript:@"editor.innerHTML = ''; editor.focus();"];
+ [webView stringByEvaluatingJavaScript:@"document.execCommand('insertHTML', false, htmlInDataTransfer);"];
[webView stringByEvaluatingJavaScript:@"getSelection().setPosition(document.querySelector('.MsoListParagraphCxSpLast'));"];
[webView stringByEvaluatingJavaScript:@"getSelection().modify('move', 'forward', 'lineboundary');"];
EXPECT_WK_STREQ("rgb(255, 0, 0)", [webView stringByEvaluatingJavaScript:@"document.queryCommandValue('foreColor')"]);
}
+TEST(PasteHTML, PreservesMSOListInCompatibilityMode)
+{
+ writeHTMLToPasteboard([NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"mso-list-compat-mode" ofType:@"html" inDirectory:@"TestWebKitAPI.resources"]
+ encoding:NSUTF8StringEncoding error:NULL]);
+
+ auto webView = createWebViewWithCustomPasteboardDataSetting(true);
+ [webView synchronouslyLoadTestPageNamed:@"paste-rtfd"];
+ [webView paste:nil];
+
+ EXPECT_WK_STREQ("[\"text/html\"]", [webView stringByEvaluatingJavaScript:@"JSON.stringify(clipboardData.types)"]);
+ [webView stringByEvaluatingJavaScript:@"window.htmlInDataTransfer = clipboardData.values[0]"];
+ [webView stringByEvaluatingJavaScript:@"window.pastedHTML = editor.innerHTML"];
+
+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('<style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* Style Definitions */')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* List Definitions */')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('@list l0:level1')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('}\\n\\n-->\\n</style>')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[if !supportLists]')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[endif]')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('<p style=\"margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue);
+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/Users/webkitten/Library/')"].boolValue);
+
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('<head><style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* List Definitions */')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('@list l0:level1')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('}\\n\\n-->\\n</style></head>')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[if !supportLists]')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[endif]')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('<p style=\"margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue);
+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/Users/webkitten/Library/')"].boolValue);
+}
+
TEST(PasteHTML, StripsMSOListWhenMissingMSOHTMLElement)
{
auto *markup = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"mso-list" ofType:@"html" inDirectory:@"TestWebKitAPI.resources"] encoding:NSUTF8StringEncoding error:NULL];
@@ -211,26 +253,33 @@
[webView stringByEvaluatingJavaScript:@"window.pastedHTML = editor.innerHTML"];
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue);
+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('<style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue);
+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* Style Definitions */')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* List Definitions */')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('@list l0:level1')"].boolValue);
+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('}\\n\\n-->\\n</style>')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[if !supportLists]')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[endif]')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes(' style=\"text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue);
- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* Style Definitions */')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/Users/webkitten/Library/')"].boolValue);
+
[webView stringByEvaluatingJavaScript:@"getSelection().setPosition(document.querySelector('.MsoListParagraphCxSpLast'));"];
[webView stringByEvaluatingJavaScript:@"getSelection().modify('move', 'forward', 'lineboundary');"];
EXPECT_WK_STREQ("rgb(255, 0, 0)", [webView stringByEvaluatingJavaScript:@"document.queryCommandValue('foreColor')"]);
+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue);
+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('<head><style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue);
+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* List Definitions */')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('@list l0:level1')"].boolValue);
+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('}\\n\\n-->\\n</style></head>')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[if !supportLists]')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[endif]')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes(' style=\"text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue);
- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/Users/webkitten/Library/')"].boolValue);
- [webView stringByEvaluatingJavaScript:@"editor.innerHTML = htmlInDataTransfer"];
+ [webView stringByEvaluatingJavaScript:@"editor.innerHTML = ''; editor.focus();"];
+ [webView stringByEvaluatingJavaScript:@"document.execCommand('insertHTML', false, htmlInDataTransfer);"];
[webView stringByEvaluatingJavaScript:@"getSelection().setPosition(document.querySelector('.MsoListParagraphCxSpLast'));"];
[webView stringByEvaluatingJavaScript:@"getSelection().modify('move', 'forward', 'lineboundary');"];
EXPECT_WK_STREQ("rgb(255, 0, 0)", [webView stringByEvaluatingJavaScript:@"document.queryCommandValue('foreColor')"]);
Modified: branches/safari-605-branch/Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteWebArchive.mm (228510 => 228511)
--- branches/safari-605-branch/Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteWebArchive.mm 2018-02-15 16:06:49 UTC (rev 228510)
+++ branches/safari-605-branch/Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteWebArchive.mm 2018-02-15 16:06:54 UTC (rev 228511)
@@ -120,31 +120,77 @@
[webView stringByEvaluatingJavaScript:@"window.pastedHTML = editor.innerHTML"];
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue);
- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* List Definitions */')"].boolValue);
- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('@list l0:level1')"].boolValue);
- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[if !supportLists]')"].boolValue);
- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[endif]')"].boolValue);
- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes(' style=\"text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue);
- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* Style Definitions */')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('<style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* Style Definitions */')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* List Definitions */')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('@list l0:level1')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('}\\n\\n-->\\n</style>')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[if !supportLists]')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[endif]')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes(' style=\"text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/Users/webkitten/Library/')"].boolValue);
+
[webView stringByEvaluatingJavaScript:@"getSelection().setPosition(document.querySelector('.MsoListParagraphCxSpLast'));"];
[webView stringByEvaluatingJavaScript:@"getSelection().modify('move', 'forward', 'lineboundary');"];
EXPECT_WK_STREQ("rgb(255, 0, 0)", [webView stringByEvaluatingJavaScript:@"document.queryCommandValue('foreColor')"]);
EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('<head><style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue);
EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* List Definitions */')"].boolValue);
EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('@list l0:level1')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('}\\n\\n-->\\n</style></head>')"].boolValue);
EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[if !supportLists]')"].boolValue);
EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[endif]')"].boolValue);
EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes(' style=\"text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue);
- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/Users/webkitten/Library/')"].boolValue);
- [webView stringByEvaluatingJavaScript:@"editor.innerHTML = htmlInDataTransfer"];
+ [webView stringByEvaluatingJavaScript:@"editor.innerHTML = ''; editor.focus();"];
+ [webView stringByEvaluatingJavaScript:@"document.execCommand('insertHTML', false, htmlInDataTransfer);"];
[webView stringByEvaluatingJavaScript:@"getSelection().setPosition(document.querySelector('.MsoListParagraphCxSpLast'));"];
[webView stringByEvaluatingJavaScript:@"getSelection().modify('move', 'forward', 'lineboundary');"];
EXPECT_WK_STREQ("rgb(255, 0, 0)", [webView stringByEvaluatingJavaScript:@"document.queryCommandValue('foreColor')"]);
+}
+TEST(PasteWebArchive, PreservesMSOListInCompatibilityMode)
+{
+ auto *url = "" URLWithString:@"file:///some-file.html"];
+ auto *markup = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"mso-list-compat-mode" ofType:@"html" inDirectory:@"TestWebKitAPI.resources"]];
+ auto mainResource = adoptNS([[WebResource alloc] initWithData:markup URL:url MIMEType:@"text/html" textEncodingName:@"utf-8" frameName:nil]);
+ auto archive = adoptNS([[WebArchive alloc] initWithMainResource:mainResource.get() subresources:nil subframeArchives:nil]);
+
+ [[NSPasteboard generalPasteboard] declareTypes:@[WebArchivePboardType] owner:nil];
+ [[NSPasteboard generalPasteboard] setData:[archive data] forType:WebArchivePboardType];
+
+ auto webView = createWebViewWithCustomPasteboardDataEnabled();
+ [webView synchronouslyLoadTestPageNamed:@"paste-rtfd"];
+ [webView paste:nil];
+
+ EXPECT_WK_STREQ("[\"text/html\"]", [webView stringByEvaluatingJavaScript:@"JSON.stringify(clipboardData.types)"]);
+ [webView stringByEvaluatingJavaScript:@"window.htmlInDataTransfer = clipboardData.values[0]"];
+ [webView stringByEvaluatingJavaScript:@"window.pastedHTML = editor.innerHTML"];
+
+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('<style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* Style Definitions */')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* List Definitions */')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('@list l0:level1')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('}\\n\\n-->\\n</style>')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[if !supportLists]')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[endif]')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('<p style=\"margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue);
+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/Users/webkitten/Library/')"].boolValue);
+
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('<head><style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* List Definitions */')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('@list l0:level1')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('}\\n\\n-->\\n</style></head>')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[if !supportLists]')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[endif]')"].boolValue);
+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('<p style=\"margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue);
+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/Users/webkitten/Library/')"].boolValue);
}
static NSData *msoListMarkupWithoutProperHTMLElement()
@@ -177,15 +223,18 @@
EXPECT_WK_STREQ("[\"text/html\"]", [webView stringByEvaluatingJavaScript:@"JSON.stringify(clipboardData.types)"]);
[webView stringByEvaluatingJavaScript:@"window.htmlInDataTransfer = clipboardData.values[0]"];
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue);
+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('<head><style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue);
+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* List Definitions */')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('@list l0:level1')"].boolValue);
+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('}\\n\\n-->\\n</style></head>')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[if !supportLists]')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[endif]')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes(' style=\"text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue);
- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue);
EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/Users/webkitten/Library/')"].boolValue);
- [webView stringByEvaluatingJavaScript:@"editor.innerHTML = htmlInDataTransfer"];
+ [webView stringByEvaluatingJavaScript:@"editor.innerHTML = ''; editor.focus();"];
+ [webView stringByEvaluatingJavaScript:@"document.execCommand('insertHTML', false, htmlInDataTransfer);"];
[webView stringByEvaluatingJavaScript:@"getSelection().setPosition(document.querySelector('.MsoListParagraphCxSpLast'));"];
[webView stringByEvaluatingJavaScript:@"getSelection().modify('move', 'forward', 'lineboundary');"];
EXPECT_WK_STREQ("rgb(255, 0, 0)", [webView stringByEvaluatingJavaScript:@"document.queryCommandValue('foreColor')"]);
Added: branches/safari-605-branch/Tools/TestWebKitAPI/Tests/WebKitCocoa/mso-list-compat-mode.html (0 => 228511)
--- branches/safari-605-branch/Tools/TestWebKitAPI/Tests/WebKitCocoa/mso-list-compat-mode.html (rev 0)
+++ branches/safari-605-branch/Tools/TestWebKitAPI/Tests/WebKitCocoa/mso-list-compat-mode.html 2018-02-15 16:06:54 UTC (rev 228511)
@@ -0,0 +1,836 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=utf-8">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 15">
+<meta name=Originator content="Microsoft Word 15">
+<link rel=File-List
+href=""
+<!--[if gte mso 9]><xml>
+ <o:OfficeDocumentSettings>
+ <o:TargetScreenSize>800x600</o:TargetScreenSize>
+ </o:OfficeDocumentSettings>
+</xml><![endif]-->
+<link rel=themeData
+href=""
+<link rel=colorSchemeMapping
+href=""
+<!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:View>Normal</w:View>
+ <w:Zoom>0</w:Zoom>
+ <w:TrackMoves/>
+ <w:TrackFormatting/>
+ <w:PunctuationKerning/>
+ <w:ValidateAgainstSchemas/>
+ <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+ <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+ <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+ <w:DoNotPromoteQF/>
+ <w:LidThemeOther>EN-US</w:LidThemeOther>
+ <w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
+ <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
+ <w:Compatibility>
+ <w:BreakWrappedTables/>
+ <w:SnapToGridInCell/>
+ <w:WrapTextWithPunct/>
+ <w:UseAsianBreakRules/>
+ <w:DontGrowAutofit/>
+ <w:SplitPgBreakAndParaMark/>
+ <w:EnableOpenTypeKerning/>
+ <w:DontFlipMirrorIndents/>
+ <w:OverrideTableStyleHps/>
+ </w:Compatibility>
+ <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ <m:mathPr>
+ <m:mathFont m:val="Cambria Math"/>
+ <m:brkBin m:val="before"/>
+ <m:brkBinSub m:val="--"/>
+ <m:smallFrac m:val="off"/>
+ <m:dispDef/>
+ <m:lMargin m:val="0"/>
+ <m:rMargin m:val="0"/>
+ <m:defJc m:val="centerGroup"/>
+ <m:wrapIndent m:val="1440"/>
+ <m:intLim m:val="subSup"/>
+ <m:naryLim m:val="undOvr"/>
+ </m:mathPr></w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
+ DefSemiHidden="false" DefQFormat="false" DefPriority="99"
+ LatentStyleCount="375">
+ <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
+ <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+ UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
+ <w:LsdException Locked="false" Priority="0" SemiHidden="true"
+ UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
+ <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+ UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
+ <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+ UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
+ <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+ UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
+ <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+ UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
+ <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+ UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
+ <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+ UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="index 1"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="index 2"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="index 3"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="index 4"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="index 5"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="index 6"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="index 7"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="index 8"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="index 9"/>
+ <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+ UnhideWhenUsed="true" Name="toc 1"/>
+ <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+ UnhideWhenUsed="true" Name="toc 2"/>
+ <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+ UnhideWhenUsed="true" Name="toc 3"/>
+ <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+ UnhideWhenUsed="true" Name="toc 4"/>
+ <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+ UnhideWhenUsed="true" Name="toc 5"/>
+ <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+ UnhideWhenUsed="true" Name="toc 6"/>
+ <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+ UnhideWhenUsed="true" Name="toc 7"/>
+ <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+ UnhideWhenUsed="true" Name="toc 8"/>
+ <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+ UnhideWhenUsed="true" Name="toc 9"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Normal Indent"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="footnote text"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="annotation text"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="header"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="footer"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="index heading"/>
+ <w:LsdException Locked="false" Priority="35" SemiHidden="true"
+ UnhideWhenUsed="true" QFormat="true" Name="caption"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="table of figures"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="envelope address"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="envelope return"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="footnote reference"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="annotation reference"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="line number"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="page number"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="endnote reference"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="endnote text"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="table of authorities"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="macro"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="toa heading"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List Bullet"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List Number"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List 2"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List 3"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List 4"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List 5"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List Bullet 2"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List Bullet 3"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List Bullet 4"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List Bullet 5"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List Number 2"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List Number 3"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List Number 4"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List Number 5"/>
+ <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Closing"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Signature"/>
+ <w:LsdException Locked="false" Priority="0" SemiHidden="true"
+ UnhideWhenUsed="true" Name="Default Paragraph Font"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Body Text"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Body Text Indent"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List Continue"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List Continue 2"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List Continue 3"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List Continue 4"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="List Continue 5"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Message Header"/>
+ <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Salutation"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Date"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Body Text First Indent"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Body Text First Indent 2"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Note Heading"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Body Text 2"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Body Text 3"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Body Text Indent 2"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Body Text Indent 3"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Block Text"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Hyperlink"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="FollowedHyperlink"/>
+ <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
+ <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Document Map"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Plain Text"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="E-mail Signature"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="HTML Top of Form"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="HTML Bottom of Form"/>
+ <w:LsdException Locked="false" Priority="0" SemiHidden="true"
+ UnhideWhenUsed="true" Name="Normal (Web)"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="HTML Acronym"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="HTML Address"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="HTML Cite"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="HTML Code"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="HTML Definition"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="HTML Keyboard"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="HTML Preformatted"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="HTML Sample"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="HTML Typewriter"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="HTML Variable"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Normal Table"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="annotation subject"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="No List"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Outline List 1"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Outline List 2"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Outline List 3"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Simple 1"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Simple 2"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Simple 3"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Classic 1"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Classic 2"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Classic 3"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Classic 4"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Colorful 1"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Colorful 2"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Colorful 3"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Columns 1"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Columns 2"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Columns 3"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Columns 4"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Columns 5"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Grid 1"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Grid 2"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Grid 3"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Grid 4"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Grid 5"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Grid 6"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Grid 7"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Grid 8"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table List 1"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table List 2"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table List 3"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table List 4"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table List 5"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table List 6"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table List 7"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table List 8"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table 3D effects 1"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table 3D effects 2"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table 3D effects 3"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Contemporary"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Elegant"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Professional"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Subtle 1"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Subtle 2"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Web 1"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Web 2"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Web 3"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Balloon Text"/>
+ <w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Table Theme"/>
+ <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
+ <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
+ <w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
+ <w:LsdException Locked="false" Priority="61" Name="Light List"/>
+ <w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
+ <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
+ <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
+ <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
+ <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
+ <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
+ <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
+ <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
+ <w:LsdException Locked="false" Priority="70" Name="Dark List"/>
+ <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
+ <w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
+ <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
+ <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
+ <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
+ <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
+ <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
+ <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
+ <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
+ <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
+ <w:LsdException Locked="false" Priority="34" QFormat="true"
+ Name="List Paragraph"/>
+ <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
+ <w:LsdException Locked="false" Priority="30" QFormat="true"
+ Name="Intense Quote"/>
+ <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
+ <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
+ <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
+ <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
+ <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
+ <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
+ <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
+ <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
+ <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
+ <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
+ <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
+ <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
+ <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
+ <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
+ <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
+ <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
+ <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
+ <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
+ <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
+ <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
+ <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
+ <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
+ <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
+ <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
+ <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
+ <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
+ <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
+ <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
+ <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
+ <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
+ <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
+ <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
+ <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
+ <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
+ <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
+ <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
+ <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
+ <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
+ <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
+ <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
+ <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
+ <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
+ <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
+ <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
+ <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
+ <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
+ <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
+ <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
+ <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
+ <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
+ <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
+ <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
+ <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
+ <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
+ <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
+ <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
+ <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
+ <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
+ <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
+ <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
+ <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
+ <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
+ <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
+ <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
+ <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
+ <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
+ <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
+ <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
+ <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
+ <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
+ <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
+ <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
+ <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
+ <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
+ <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
+ <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
+ <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
+ <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
+ <w:LsdException Locked="false" Priority="19" QFormat="true"
+ Name="Subtle Emphasis"/>
+ <w:LsdException Locked="false" Priority="21" QFormat="true"
+ Name="Intense Emphasis"/>
+ <w:LsdException Locked="false" Priority="31" QFormat="true"
+ Name="Subtle Reference"/>
+ <w:LsdException Locked="false" Priority="32" QFormat="true"
+ Name="Intense Reference"/>
+ <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
+ <w:LsdException Locked="false" Priority="37" SemiHidden="true"
+ UnhideWhenUsed="true" Name="Bibliography"/>
+ <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+ UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
+ <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
+ <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
+ <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
+ <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
+ <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
+ <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
+ <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
+ <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
+ <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
+ <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
+ <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
+ <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
+ <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
+ <w:LsdException Locked="false" Priority="46"
+ Name="Grid Table 1 Light Accent 1"/>
+ <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
+ <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
+ <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
+ <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
+ <w:LsdException Locked="false" Priority="51"
+ Name="Grid Table 6 Colorful Accent 1"/>
+ <w:LsdException Locked="false" Priority="52"
+ Name="Grid Table 7 Colorful Accent 1"/>
+ <w:LsdException Locked="false" Priority="46"
+ Name="Grid Table 1 Light Accent 2"/>
+ <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
+ <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
+ <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
+ <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
+ <w:LsdException Locked="false" Priority="51"
+ Name="Grid Table 6 Colorful Accent 2"/>
+ <w:LsdException Locked="false" Priority="52"
+ Name="Grid Table 7 Colorful Accent 2"/>
+ <w:LsdException Locked="false" Priority="46"
+ Name="Grid Table 1 Light Accent 3"/>
+ <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
+ <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
+ <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
+ <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
+ <w:LsdException Locked="false" Priority="51"
+ Name="Grid Table 6 Colorful Accent 3"/>
+ <w:LsdException Locked="false" Priority="52"
+ Name="Grid Table 7 Colorful Accent 3"/>
+ <w:LsdException Locked="false" Priority="46"
+ Name="Grid Table 1 Light Accent 4"/>
+ <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
+ <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
+ <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
+ <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
+ <w:LsdException Locked="false" Priority="51"
+ Name="Grid Table 6 Colorful Accent 4"/>
+ <w:LsdException Locked="false" Priority="52"
+ Name="Grid Table 7 Colorful Accent 4"/>
+ <w:LsdException Locked="false" Priority="46"
+ Name="Grid Table 1 Light Accent 5"/>
+ <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
+ <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
+ <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
+ <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
+ <w:LsdException Locked="false" Priority="51"
+ Name="Grid Table 6 Colorful Accent 5"/>
+ <w:LsdException Locked="false" Priority="52"
+ Name="Grid Table 7 Colorful Accent 5"/>
+ <w:LsdException Locked="false" Priority="46"
+ Name="Grid Table 1 Light Accent 6"/>
+ <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
+ <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
+ <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
+ <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
+ <w:LsdException Locked="false" Priority="51"
+ Name="Grid Table 6 Colorful Accent 6"/>
+ <w:LsdException Locked="false" Priority="52"
+ Name="Grid Table 7 Colorful Accent 6"/>
+ <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
+ <w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
+ <w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
+ <w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
+ <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
+ <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
+ <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
+ <w:LsdException Locked="false" Priority="46"
+ Name="List Table 1 Light Accent 1"/>
+ <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
+ <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
+ <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
+ <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
+ <w:LsdException Locked="false" Priority="51"
+ Name="List Table 6 Colorful Accent 1"/>
+ <w:LsdException Locked="false" Priority="52"
+ Name="List Table 7 Colorful Accent 1"/>
+ <w:LsdException Locked="false" Priority="46"
+ Name="List Table 1 Light Accent 2"/>
+ <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
+ <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
+ <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
+ <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
+ <w:LsdException Locked="false" Priority="51"
+ Name="List Table 6 Colorful Accent 2"/>
+ <w:LsdException Locked="false" Priority="52"
+ Name="List Table 7 Colorful Accent 2"/>
+ <w:LsdException Locked="false" Priority="46"
+ Name="List Table 1 Light Accent 3"/>
+ <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
+ <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
+ <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
+ <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
+ <w:LsdException Locked="false" Priority="51"
+ Name="List Table 6 Colorful Accent 3"/>
+ <w:LsdException Locked="false" Priority="52"
+ Name="List Table 7 Colorful Accent 3"/>
+ <w:LsdException Locked="false" Priority="46"
+ Name="List Table 1 Light Accent 4"/>
+ <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
+ <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
+ <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
+ <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
+ <w:LsdException Locked="false" Priority="51"
+ Name="List Table 6 Colorful Accent 4"/>
+ <w:LsdException Locked="false" Priority="52"
+ Name="List Table 7 Colorful Accent 4"/>
+ <w:LsdException Locked="false" Priority="46"
+ Name="List Table 1 Light Accent 5"/>
+ <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
+ <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
+ <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
+ <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
+ <w:LsdException Locked="false" Priority="51"
+ Name="List Table 6 Colorful Accent 5"/>
+ <w:LsdException Locked="false" Priority="52"
+ Name="List Table 7 Colorful Accent 5"/>
+ <w:LsdException Locked="false" Priority="46"
+ Name="List Table 1 Light Accent 6"/>
+ <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
+ <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
+ <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
+ <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
+ <w:LsdException Locked="false" Priority="51"
+ Name="List Table 6 Colorful Accent 6"/>
+ <w:LsdException Locked="false" Priority="52"
+ Name="List Table 7 Colorful Accent 6"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Mention"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Smart Hyperlink"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Hashtag"/>
+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+ Name="Unresolved Mention"/>
+ </w:LatentStyles>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+ {font-family:"Cambria Math";
+ panose-1:2 4 5 3 5 4 6 3 2 4;
+ mso-font-charset:0;
+ mso-generic-font-family:roman;
+ mso-font-pitch:variable;
+ mso-font-signature:-536870145 1107305727 0 0 415 0;}
+@font-face
+ {font-family:Calibri;
+ panose-1:2 15 5 2 2 2 4 3 2 4;
+ mso-font-charset:0;
+ mso-generic-font-family:swiss;
+ mso-font-pitch:variable;
+ mso-font-signature:-536859905 -1073697537 9 0 511 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-unhide:no;
+ mso-style-qformat:yes;
+ mso-style-parent:"";
+ margin-top:0in;
+ margin-right:0in;
+ margin-bottom:10.0pt;
+ margin-left:0in;
+ line-height:115%;
+ mso-pagination:widow-orphan;
+ font-size:11.0pt;
+ font-family:"Calibri",sans-serif;
+ mso-fareast-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";
+ mso-fareast-language:EN-US;}
+h3
+ {mso-style-unhide:no;
+ mso-style-qformat:yes;
+ mso-style-link:"Heading 3 Char";
+ mso-style-next:Normal;
+ margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ line-height:115%;
+ mso-pagination:widow-orphan;
+ page-break-after:avoid;
+ mso-outline-level:3;
+ font-size:13.0pt;
+ font-family:"Arial",sans-serif;
+ mso-fareast-language:EN-US;
+ font-weight:bold;}
+p
+ {mso-style-update:auto;
+ mso-style-unhide:no;
+ mso-margin-top-alt:auto;
+ margin-right:0in;
+ margin-bottom:0in;
+ margin-left:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:11.0pt;
+ mso-bidi-font-size:12.0pt;
+ font-family:"Arial",sans-serif;
+ mso-fareast-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";
+ mso-fareast-language:EN-US;}
+span.Heading3Char
+ {mso-style-name:"Heading 3 Char";
+ mso-style-unhide:no;
+ mso-style-locked:yes;
+ mso-style-link:"Heading 3";
+ mso-ansi-font-size:13.0pt;
+ mso-bidi-font-size:13.0pt;
+ font-family:"Arial",sans-serif;
+ mso-ascii-font-family:Arial;
+ mso-hansi-font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-fareast-language:EN-US;
+ font-weight:bold;}
+.MsoChpDefault
+ {mso-style-type:export-only;
+ mso-default-props:yes;
+ font-size:10.0pt;
+ mso-ansi-font-size:10.0pt;
+ mso-bidi-font-size:10.0pt;
+ font-family:"Calibri",sans-serif;
+ mso-ascii-font-family:Calibri;
+ mso-hansi-font-family:Calibri;}
+@page WordSection1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.0in 1.0in 1.0in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.WordSection1
+ {page:WordSection1;}
+ /* List Definitions */
+ @list l0
+ {mso-list-id:337470154;
+ mso-list-type:hybrid;
+ mso-list-template-ids:1678785270 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
+@list l0:level1
+ {mso-level-tab-stop:none;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level2
+ {mso-level-number-format:alpha-lower;
+ mso-level-tab-stop:none;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level3
+ {mso-level-number-format:roman-lower;
+ mso-level-tab-stop:none;
+ mso-level-number-position:right;
+ text-indent:-9.0pt;}
+@list l0:level4
+ {mso-level-tab-stop:none;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level5
+ {mso-level-number-format:alpha-lower;
+ mso-level-tab-stop:none;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level6
+ {mso-level-number-format:roman-lower;
+ mso-level-tab-stop:none;
+ mso-level-number-position:right;
+ text-indent:-9.0pt;}
+@list l0:level7
+ {mso-level-tab-stop:none;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level8
+ {mso-level-number-format:alpha-lower;
+ mso-level-tab-stop:none;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level9
+ {mso-level-number-format:roman-lower;
+ mso-level-tab-stop:none;
+ mso-level-number-position:right;
+ text-indent:-9.0pt;}
+ol
+ {margin-bottom:0in;}
+ul
+ {margin-bottom:0in;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+ {mso-style-name:"Table Normal";
+ mso-tstyle-rowband-size:0;
+ mso-tstyle-colband-size:0;
+ mso-style-noshow:yes;
+ mso-style-priority:99;
+ mso-style-parent:"";
+ mso-padding-alt:0in 5.4pt 0in 5.4pt;
+ mso-para-margin:0in;
+ mso-para-margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Calibri",sans-serif;
+ mso-bidi-font-family:"Times New Roman";}
+</style>
+<![endif]--><!--[if gte mso 9]><xml>
+ <o:shapedefaults v:ext="edit" spidmax="1026"/>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data=""
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body lang=EN-US style='tab-interval:.5in'>
+<!--StartFragment-->
+
+<h3>Some text <o:p></o:p></h3>
+
+<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span
+style='mso-fareast-font-family:Arial;mso-bidi-font-family:Arial'><span
+style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>
+</span></span></span><![endif]>Hello<o:p></o:p></p>
+
+<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span
+style='mso-fareast-font-family:Arial;mso-bidi-font-family:Arial'><span
+style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>
+</span></span></span><![endif]>world<o:p></o:p></p>
+
+<p>some other text <o:p></o:p></p>
+
+<!--EndFragment-->
+</body>
+
+</html>
+