summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@collabora.com>2022-06-24 13:52:46 +0200
committerLuboš Luňák <l.lunak@collabora.com>2022-06-26 20:27:19 +0200
commit423f277cc0c185ff7eaf79aa9237585c52e0c652 (patch)
tree9f29ac37cc07db27800781b350240394f19ea4fa /sc
parentc92b92a3da7ac877337eb73a75cbce427b5ae8e5 (diff)
fix ByValue lookups with ScSortedRangeCache
My fix for tdf#149071 actually disabled the optimization for all ByValue lookups, because in fact all such lookups have maString set. So lookups where the cells are a mix of numeric and string values need different handling. A simple solution is detecting such a mix when collecting the values for ScSortedRangeCache and disabling the optimization in such a case. But it turns out that queries containing such a mix are not that rare, as documents may e.g. do COUNTIF($C:$C) where the given column has numeric values that start with a textual header. So bail out only if the string cell actually could affect the numeric query. Also fix ScSortedRangeCache usage depending on query parameters, different instances are needed for e.g. different ScQueryOp, because the ScQueryEvaluator functions may return different results (isQueryByString() is automatically true for SC_EQUAL). Change-Id: Ib4565cbf6194e7c525c4d10d00b1c31707952a79 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136403 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
Diffstat (limited to 'sc')
-rw-r--r--sc/inc/queryevaluator.hxx16
-rw-r--r--sc/inc/queryiter.hxx10
-rw-r--r--sc/inc/rangecache.hxx26
-rw-r--r--sc/qa/unit/data/functions/statistical/fods/countif.fods191
-rw-r--r--sc/qa/unit/data/functions/statistical/fods/countif2.fods3157
-rw-r--r--sc/source/core/data/queryevaluator.cxx57
-rw-r--r--sc/source/core/data/queryiter.cxx37
-rw-r--r--sc/source/core/tool/interpr1.cxx8
-rw-r--r--sc/source/core/tool/rangecache.cxx69
9 files changed, 3411 insertions, 160 deletions
diff --git a/sc/inc/queryevaluator.hxx b/sc/inc/queryevaluator.hxx
index 13e3f6ae93c8..f5724083444d 100644
--- a/sc/inc/queryevaluator.hxx
+++ b/sc/inc/queryevaluator.hxx
@@ -72,10 +72,10 @@ class ScQueryEvaluator
std::vector<std::vector<double>> mCachedSortedItemValues;
std::vector<std::vector<const rtl_uString*>> mCachedSortedItemStrings;
- static bool isPartialTextMatchOp(const ScQueryEntry& rEntry);
- static bool isTextMatchOp(const ScQueryEntry& rEntry);
- static bool isMatchWholeCellHelper(bool docMatchWholeCell, const ScQueryEntry& rEntry);
- bool isMatchWholeCell(const ScQueryEntry& rEntry) const;
+ static bool isPartialTextMatchOp(ScQueryOp eOp);
+ static bool isTextMatchOp(ScQueryOp eOp);
+ static bool isMatchWholeCellHelper(bool docMatchWholeCell, ScQueryOp eOp);
+ bool isMatchWholeCell(ScQueryOp eOp) const;
void setupTransliteratorIfNeeded();
void setupCollatorIfNeeded();
@@ -114,13 +114,13 @@ public:
bool ValidQuery(SCROW nRow, const ScRefCellValue* pCell = nullptr,
sc::TableColumnBlockPositionSet* pBlockPos = nullptr);
- static bool isQueryByValue(const ScQueryEntry& rEntry, const ScQueryEntry::Item& rItem,
+ static bool isQueryByValue(ScQueryOp eOp, ScQueryEntry::QueryType eType,
const ScRefCellValue& rCell);
- static bool isQueryByString(const ScQueryEntry& rEntry, const ScQueryEntry::Item& rItem,
+ static bool isQueryByString(ScQueryOp eOp, ScQueryEntry::QueryType eType,
const ScRefCellValue& rCell);
- OUString getCellString(const ScRefCellValue& rCell, SCROW nRow, const ScQueryEntry& rEntry,
+ OUString getCellString(const ScRefCellValue& rCell, SCROW nRow, SCCOL nCol,
const svl::SharedString** sharedString);
- static bool isMatchWholeCell(const ScDocument& rDoc, const ScQueryEntry& rEntry);
+ static bool isMatchWholeCell(const ScDocument& rDoc, ScQueryOp eOp);
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/inc/queryiter.hxx b/sc/inc/queryiter.hxx
index fa8f08083981..1d0066de7fb8 100644
--- a/sc/inc/queryiter.hxx
+++ b/sc/inc/queryiter.hxx
@@ -323,8 +323,9 @@ public:
SCTAB nTable, const ScQueryParam& aParam, bool bMod)
: Base( rDocument, rContext, nTable, aParam, bMod ) {}
// Returns true if this iterator can be used for the given query.
- static bool CanBeUsed(const ScDocument& rDoc, const ScQueryParam& aParam,
- const ScFormulaCell* cell, const ScComplexRefData* refData);
+ static bool CanBeUsed(ScDocument& rDoc, const ScQueryParam& aParam,
+ SCTAB nTab, const ScFormulaCell* cell, const ScComplexRefData* refData,
+ ScInterpreterContext& context);
};
@@ -372,8 +373,9 @@ public:
SCTAB nTable, const ScQueryParam& aParam, bool bMod)
: Base( rDocument, rContext, nTable, aParam, bMod ) {}
// Returns true if this iterator can be used for the given query.
- static bool CanBeUsed(const ScDocument& rDoc, const ScQueryParam& aParam,
- const ScFormulaCell* cell, const ScComplexRefData* refData);
+ static bool CanBeUsed(ScDocument& rDoc, const ScQueryParam& aParam,
+ SCTAB nTab, const ScFormulaCell* cell, const ScComplexRefData* refData,
+ ScInterpreterContext& context);
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/inc/rangecache.hxx b/sc/inc/rangecache.hxx
index 048d9b9ba046..7490a570f20a 100644
--- a/sc/inc/rangecache.hxx
+++ b/sc/inc/rangecache.hxx
@@ -20,6 +20,7 @@
#pragma once
#include "address.hxx"
+#include "queryentry.hxx"
#include <o3tl/hash_combine.hxx>
#include <svl/listener.hxx>
@@ -47,11 +48,13 @@ public:
ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange, const ScQueryParam& param,
ScInterpreterContext* context);
+ /// Returns if the cache is usable.
+ bool isValid() const { return mValid; }
+
/// Remove from document structure and delete (!) cache on modify hint.
virtual void Notify(const SfxHint& rHint) override;
const ScRange& getRange() const { return maRange; }
- bool isDescending() const { return mDescending; }
enum class ValueType
{
@@ -62,14 +65,16 @@ public:
struct HashKey
{
ScRange range;
- bool descending;
- ValueType type;
+ ValueType valueType;
+ ScQueryOp queryOp;
+ ScQueryEntry::QueryType queryType;
bool operator==(const HashKey& other) const
{
- return range == other.range && descending == other.descending && type == other.type;
+ return range == other.range && valueType == other.valueType && queryOp == other.queryOp
+ && queryType == other.queryType;
}
};
- HashKey getHashKey() const { return { maRange, mDescending, mValues }; }
+ HashKey getHashKey() const { return { maRange, mValueType, mQueryOp, mQueryType }; }
static HashKey makeHashKey(const ScRange& range, const ScQueryParam& param);
struct Hash
@@ -78,8 +83,9 @@ public:
{
// Range should be just one column.
size_t hash = key.range.hashStartColumn();
- o3tl::hash_combine(hash, key.descending);
- o3tl::hash_combine(hash, key.type);
+ o3tl::hash_combine(hash, key.valueType);
+ o3tl::hash_combine(hash, key.queryOp);
+ o3tl::hash_combine(hash, key.queryType);
return hash;
}
};
@@ -100,8 +106,10 @@ private:
std::vector<size_t> mRowToIndex; // indexed by 'SCROW - maRange.aStart.Row()'
ScRange maRange;
ScDocument* mpDoc;
- bool mDescending;
- ValueType mValues;
+ bool mValid;
+ ValueType mValueType;
+ ScQueryOp mQueryOp;
+ ScQueryEntry::QueryType mQueryType;
ScSortedRangeCache(const ScSortedRangeCache&) = delete;
ScSortedRangeCache& operator=(const ScSortedRangeCache&) = delete;
diff --git a/sc/qa/unit/data/functions/statistical/fods/countif.fods b/sc/qa/unit/data/functions/statistical/fods/countif.fods
index 41ee8f439791..e144a049d059 100644
--- a/sc/qa/unit/data/functions/statistical/fods/countif.fods
+++ b/sc/qa/unit/data/functions/statistical/fods/countif.fods
@@ -3726,7 +3726,7 @@
<table:table-cell office:value-type="float" office:value="12" calcext:value-type="float">
<text:p>12</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce65" table:formula="of:=ROUND([.A32];12)=ROUND([.B32];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A32];12)=ROUND([.B32];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
<text:p>PRAVDA</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce34" table:formula="of:=FORMULA([.A32])" office:value-type="string" office:string-value="=COUNTIF(P20:R23;&quot;&quot;)" calcext:value-type="string">
@@ -3755,7 +3755,7 @@
<table:table-cell office:value-type="float" office:value="2" calcext:value-type="float">
<text:p>2</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce65" table:formula="of:=ROUND([.A33];12)=ROUND([.B33];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A33];12)=ROUND([.B33];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
<text:p>PRAVDA</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce34" table:formula="of:=FORMULA([.A33])" office:value-type="string" office:string-value="=COUNTIF(N33:N35;&quot;&lt;&gt;7&quot;)" calcext:value-type="string">
@@ -3784,7 +3784,7 @@
<table:table-cell office:value-type="float" office:value="9" calcext:value-type="float">
<text:p>9</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce65" table:formula="of:=ROUND([.A34];12)=ROUND([.B34];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A34];12)=ROUND([.B34];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
<text:p>TRUE</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce34" table:formula="of:=FORMULA([.A34])" office:value-type="string" office:string-value="=COUNTIF($Q$3:$Q$11;&quot;.*&quot;)" calcext:value-type="string">
@@ -3815,7 +3815,7 @@
<table:table-cell office:value-type="float" office:value="5" calcext:value-type="float">
<text:p>5</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce65" table:formula="of:=ROUND([.A35];12)=ROUND([.B35];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A35];12)=ROUND([.B35];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
<text:p>TRUE</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce34" table:formula="of:=FORMULA([.A35])" office:value-type="string" office:string-value="=COUNTIF($Q$3:$Q$11;&quot;abc&quot;)" calcext:value-type="string">
@@ -3846,7 +3846,7 @@
<table:table-cell office:value-type="float" office:value="5" calcext:value-type="float">
<text:p>5</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce65" table:formula="of:=ROUND([.A36];12)=ROUND([.B36];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A36];12)=ROUND([.B36];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
<text:p>TRUE</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce34" table:formula="of:=FORMULA([.A36])" office:value-type="string" office:string-value="=COUNTIF($Q$3:$Q$11;&quot;ABC&quot;)" calcext:value-type="string">
@@ -3866,7 +3866,7 @@
<table:table-cell office:value-type="float" office:value="4" calcext:value-type="float">
<text:p>4</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce65" table:formula="of:=ROUND([.A37];12)=ROUND([.B37];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A37];12)=ROUND([.B37];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
<text:p>TRUE</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce34" table:formula="of:=FORMULA([.A37])" office:value-type="string" office:string-value="=COUNTIF($Q$3:$Q$11;&quot;a&quot;)" calcext:value-type="string">
@@ -3886,7 +3886,7 @@
<table:table-cell office:value-type="float" office:value="4" calcext:value-type="float">
<text:p>4</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce65" table:formula="of:=ROUND([.A38];12)=ROUND([.B38];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A38];12)=ROUND([.B38];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
<text:p>TRUE</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce34" table:formula="of:=FORMULA([.A38])" office:value-type="string" office:string-value="=COUNTIF($Q$3:$Q$11;&quot;A&quot;)" calcext:value-type="string">
@@ -3906,7 +3906,7 @@
<table:table-cell office:value-type="float" office:value="1" calcext:value-type="float">
<text:p>1</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce65" table:formula="of:=ROUND([.A39];12)=ROUND([.B39];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A39];12)=ROUND([.B39];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
<text:p>TRUE</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce34" table:formula="of:=FORMULA([.A39])" office:value-type="string" office:string-value="=COUNTIF($Q$3:$Q$11;&quot;(?-i)abc&quot;)" calcext:value-type="string">
@@ -3926,7 +3926,7 @@
<table:table-cell office:value-type="float" office:value="2" calcext:value-type="float">
<text:p>2</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce65" table:formula="of:=ROUND([.A40];12)=ROUND([.B40];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A40];12)=ROUND([.B40];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
<text:p>TRUE</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce34" table:formula="of:=FORMULA([.A40])" office:value-type="string" office:string-value="=COUNTIF($Q$3:$Q$11;&quot;(?-i)Abc&quot;)" calcext:value-type="string">
@@ -3946,7 +3946,7 @@
<table:table-cell office:value-type="float" office:value="3" calcext:value-type="float">
<text:p>3</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce65" table:formula="of:=ROUND([.A41];12)=ROUND([.B41];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A41];12)=ROUND([.B41];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
<text:p>TRUE</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce34" table:formula="of:=FORMULA([.A41])" office:value-type="string" office:string-value="=COUNTIF($Q$3:$Q$11;&quot;(?-i)A&quot;)" calcext:value-type="string">
@@ -3966,7 +3966,7 @@
<table:table-cell office:value-type="float" office:value="2" calcext:value-type="float">
<text:p>2</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce65" table:formula="of:=ROUND([.A42];12)=ROUND([.B42];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A42];12)=ROUND([.B42];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
<text:p>TRUE</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce34" table:formula="of:=FORMULA([.A42])" office:value-type="string" office:string-value="=COUNTIF($Q$3:$Q$11;&quot;a(?-i)B(?i)c&quot;)" calcext:value-type="string">
@@ -3986,7 +3986,7 @@
<table:table-cell office:value-type="float" office:value="0" calcext:value-type="float">
<text:p>0</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce65" table:formula="of:=ROUND([.A43];12)=ROUND([.B43];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A43];12)=ROUND([.B43];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
<text:p>TRUE</text:p>
</table:table-cell>
<table:table-cell table:style-name="ce34" table:formula="of:=FORMULA([.A43])" office:value-type="string" office:string-value="=COUNTIF(BM5:BM9,0)" calcext:value-type="string">
@@ -4006,7 +4006,7 @@
<table:table-cell office:value-type="float" office:value="3" calcext:value-type="float">
<text:p>3</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce65" table:formula="of:=ROUND([.A44];12)=ROUND([.B44];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A44];12)=ROUND([.B44];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
<text:p>TRUE</text:p>
</table:table-cell>
<table:table-cell table:formula="of:=FORMULA([.A44])" office:value-type="string" office:string-value="=COUNTIF(I44:L44;&quot;=&quot;)" calcext:value-type="string">
@@ -4030,7 +4030,7 @@
<table:table-cell office:value-type="float" office:value="1" calcext:value-type="float">
<text:p>1</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce65" table:formula="of:=ROUND([.A45];12)=ROUND([.B45];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A45];12)=ROUND([.B45];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
<text:p>TRUE</text:p>
</table:table-cell>
<table:table-cell table:formula="of:=FORMULA([.A45])" office:value-type="string" office:string-value="=COUNTIF(I45:L45;&quot;&lt;&gt;&quot;)" calcext:value-type="string">
@@ -4054,7 +4054,7 @@
<table:table-cell office:value-type="float" office:value="1" calcext:value-type="float">
<text:p>1</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce65" table:formula="of:=ROUND([.A46];12)=ROUND([.B46];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A46];12)=ROUND([.B46];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
<text:p>TRUE</text:p>
</table:table-cell>
<table:table-cell table:formula="of:=FORMULA([.A46])" office:value-type="string" office:string-value="=COUNTIF(I46:L46;&quot;&lt;&gt;&quot;)" calcext:value-type="string">
@@ -4078,7 +4078,7 @@
<table:table-cell office:value-type="float" office:value="0" calcext:value-type="float">
<text:p>0</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce65" table:formula="of:=ROUND([.A47];12)=ROUND([.B47];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A47];12)=ROUND([.B47];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
<text:p>TRUE</text:p>
</table:table-cell>
<table:table-cell table:formula="of:=FORMULA([.A47])" office:value-type="string" office:string-value="=COUNTIF(I47:L47;&quot;&lt;&gt;&quot;)" calcext:value-type="string">
@@ -4096,75 +4096,122 @@
</table:table-cell>
</table:table-row>
<table:table-row table:style-name="ro2">
- <table:table-cell/>
- <table:table-cell table:style-name="ce23"/>
- <table:table-cell table:style-name="ce64"/>
- <table:table-cell table:style-name="ce34"/>
+ <table:table-cell table:formula="of:=COUNTIF([.J48:.J51];&quot;&gt;2&quot;)" office:value-type="float" office:value="1" calcext:value-type="float">
+ <text:p>1</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="1" calcext:value-type="float">
+ <text:p>1</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A48];12)=ROUND([.B48];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <text:p>TRUE</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=FORMULA([.A48])" office:value-type="string" office:string-value="=COUNTIF(J48:J51,&quot;&gt;2&quot;)" calcext:value-type="string">
+ <text:p>=COUNTIF(J48:J51,&quot;&gt;2&quot;)</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>mixed numeric and string</text:p>
+ </table:table-cell>
<table:table-cell table:number-columns-repeated="4"/>
- <table:table-cell table:style-name="ce20"/>
- <table:table-cell table:number-columns-repeated="16"/>
- <table:table-cell table:style-name="ce56"/>
- <table:table-cell table:style-name="ce58"/>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>A2</text:p>
+ </table:table-cell>
</table:table-row>
<table:table-row table:style-name="ro2">
- <table:table-cell/>
- <table:table-cell table:style-name="ce23"/>
- <table:table-cell table:style-name="ce64"/>
- <table:table-cell table:style-name="ce34"/>
+ <table:table-cell table:formula="of:=COUNTIF([.J48:.J51];&quot;=2&quot;)" office:value-type="float" office:value="1" calcext:value-type="float">
+ <text:p>1</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="1" calcext:value-type="float">
+ <text:p>1</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A49];12)=ROUND([.B49];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <text:p>TRUE</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=FORMULA([.A49])" office:value-type="string" office:string-value="=COUNTIF(J48:J51,&quot;=2&quot;)" calcext:value-type="string">
+ <text:p>=COUNTIF(J48:J51,&quot;=2&quot;)</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>mixed numeric and string</text:p>
+ </table:table-cell>
<table:table-cell table:number-columns-repeated="3"/>
- <table:table-cell table:style-name="ce24"/>
- <table:table-cell table:style-name="ce20"/>
- <table:table-cell table:number-columns-repeated="16"/>
- <table:table-cell table:style-name="ce56"/>
- <table:table-cell table:style-name="ce58"/>
+ <table:table-cell office:value-type="float" office:value="5" calcext:value-type="float">
+ <text:p>5</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="1" calcext:value-type="float">
+ <text:p>1</text:p>
+ </table:table-cell>
</table:table-row>
<table:table-row table:style-name="ro2">
- <table:table-cell/>
- <table:table-cell table:style-name="ce23"/>
- <table:table-cell table:style-name="ce64"/>
- <table:table-cell table:style-name="ce34"/>
- <table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce40"/>
- <table:table-cell/>
- <table:table-cell table:style-name="ce20"/>
- <table:table-cell table:number-columns-repeated="16"/>
- <table:table-cell table:style-name="ce56"/>
- <table:table-cell table:style-name="ce58"/>
- </table:table-row>
- <table:table-row table:style-name="ro2" table:number-rows-repeated="4">
- <table:table-cell/>
- <table:table-cell table:style-name="ce23"/>
- <table:table-cell table:style-name="ce64"/>
- <table:table-cell table:style-name="ce34"/>
+ <table:table-cell table:formula="of:=COUNTIF([.J48:.J51];&quot;&lt;2&quot;)" office:value-type="float" office:value="1" calcext:value-type="float">
+ <text:p>1</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="1" calcext:value-type="float">
+ <text:p>1</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A50];12)=ROUND([.B50];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <text:p>TRUE</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=FORMULA([.A50])" office:value-type="string" office:string-value="=COUNTIF(J48:J51,&quot;&lt;2&quot;)" calcext:value-type="string">
+ <text:p>=COUNTIF(J48:J51,&quot;&lt;2&quot;)</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>mixed numeric and string</text:p>
+ </table:table-cell>
<table:table-cell table:number-columns-repeated="3"/>
- <table:table-cell table:style-name="ce42"/>
- <table:table-cell table:style-name="ce20"/>
- <table:table-cell table:number-columns-repeated="16"/>
- <table:table-cell table:style-name="ce56"/>
- <table:table-cell table:style-name="ce58"/>
+ <table:table-cell table:style-name="ce25" office:value-type="string" calcext:value-type="string">
+ <text:p>5</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="2" calcext:value-type="float">
+ <text:p>2</text:p>
+ </table:table-cell>
</table:table-row>
<table:table-row table:style-name="ro2">
- <table:table-cell/>
- <table:table-cell table:style-name="ce23"/>
- <table:table-cell table:style-name="ce64"/>
- <table:table-cell table:style-name="ce34"/>
+ <table:table-cell table:formula="of:=COUNTIF([.I49:.I52];&quot;&gt;2&quot;)" office:value-type="float" office:value="2" calcext:value-type="float">
+ <text:p>2</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="2" calcext:value-type="float">
+ <text:p>2</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A51];12)=ROUND([.B51];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <text:p>TRUE</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=FORMULA([.A51])" office:value-type="string" office:string-value="=COUNTIF(I49:I52,&quot;&gt;2&quot;)" calcext:value-type="string">
+ <text:p>=COUNTIF(I49:I52,&quot;&gt;2&quot;)</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>mixed numeric and string</text:p>
+ </table:table-cell>
<table:table-cell table:number-columns-repeated="3"/>
- <table:table-cell table:style-name="ce42"/>
- <table:table-cell table:style-name="science"/>
- <table:table-cell table:number-columns-repeated="16"/>
- <table:table-cell table:style-name="ce56"/>
- <table:table-cell table:style-name="ce58"/>
+ <table:table-cell table:style-name="ce25" office:value-type="float" office:value="55" calcext:value-type="float">
+ <text:p>55</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="3" calcext:value-type="float">
+ <text:p>3</text:p>
+ </table:table-cell>
</table:table-row>
<table:table-row table:style-name="ro2">
- <table:table-cell/>
- <table:table-cell table:style-name="ce23"/>
+ <table:table-cell table:formula="of:=COUNTIF([.I49:.I52];&quot;=5&quot;)" office:value-type="float" office:value="2" calcext:value-type="float">
+ <text:p>2</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="2" calcext:value-type="float">
+ <text:p>2</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="ce64" table:formula="of:=ROUND([.A52];12)=ROUND([.B52];12)" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <text:p>TRUE</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=FORMULA([.A52])" office:value-type="string" office:string-value="=COUNTIF(I49:I52,&quot;=5&quot;)" calcext:value-type="string">
+ <text:p>=COUNTIF(I49:I52,&quot;=5&quot;)</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>mixed numeric and string</text:p>
+ </table:table-cell>
+ <table:table-cell table:number-columns-repeated="3"/>
+ <table:table-cell table:style-name="ce25" office:value-type="string" calcext:value-type="string">
+ <text:p>55</text:p>
+ </table:table-cell>
+ </table:table-row>
+ <table:table-row table:style-name="ro2" table:number-rows-repeated="4">
+ <table:table-cell table:number-columns-repeated="2"/>
<table:table-cell table:style-name="ce64"/>
- <table:table-cell table:style-name="ce34"/>
- <table:table-cell table:number-columns-repeated="4"/>
- <table:table-cell table:style-name="science"/>
- <table:table-cell table:number-columns-repeated="16"/>
- <table:table-cell table:style-name="ce56"/>
- <table:table-cell table:style-name="ce58"/>
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:formula="of:=COUNTIF([.I53];[.I53])" office:value-type="float" office:value="0" calcext:value-type="float">
diff --git a/sc/qa/unit/data/functions/statistical/fods/countif2.fods b/sc/qa/unit/data/functions/statistical/fods/countif2.fods
new file mode 100644
index 000000000000..35a61b34c642
--- /dev/null
+++ b/sc/qa/unit/data/functions/statistical/fods/countif2.fods
@@ -0,0 +1,3157 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.spreadsheet">
+ <office:meta><dc:date>2022-06-24T17:18:16.764582540</dc:date><meta:editing-duration>PT11M4S</meta:editing-duration><meta:editing-cycles>2</meta:editing-cycles><meta:generator>LibreOfficeDev/7.5.0.0.alpha0$Linux_X86_64 LibreOffice_project/d25a8aa5225fce111a477486d5664e80977f0dbe</meta:generator><meta:document-statistic meta:table-count="2" meta:cell-count="63" meta:object-count="0"/></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="VisibleAreaTop" config:type="int">0</config:config-item>
+ <config:config-item config:name="VisibleAreaLeft" config:type="int">0</config:config-item>
+ <config:config-item config:name="VisibleAreaWidth" config:type="int">23857</config:config-item>
+ <config:config-item config:name="VisibleAreaHeight" config:type="int">4064</config:config-item>
+ <config:config-item-map-indexed config:name="Views">
+ <config:config-item-map-entry>
+ <config:config-item config:name="ViewId" config:type="string">view1</config:config-item>
+ <config:config-item-map-named config:name="Tables">
+ <config:config-item-map-entry config:name="Sheet1">
+ <config:config-item config:name="CursorPositionX" config:type="int">0</config:config-item>
+ <config:config-item config:name="CursorPositionY" config:type="int">9</config:config-item>
+ <config:config-item config:name="ActiveSplitRange" config:type="short">2</config:config-item>
+ <config:config-item config:name="PositionLeft" config:type="int">0</config:config-item>
+ <config:config-item config:name="PositionRight" config:type="int">0</config:config-item>
+ <config:config-item config:name="PositionTop" config:type="int">0</config:config-item>
+ <config:config-item config:name="PositionBottom" config:type="int">0</config:config-item>
+ <config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
+ <config:config-item config:name="ZoomValue" config:type="int">100</config:config-item>
+ <config:config-item config:name="PageViewZoomValue" config:type="int">60</config:config-item>
+ <config:config-item config:name="ShowGrid" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AnchoredTextOverflowLegacy" config:type="boolean">false</config:config-item>
+ </config:config-item-map-entry>
+ <config:config-item-map-entry config:name="Sheet2">
+ <config:config-item config:name="CursorPositionX" config:type="int">3</config:config-item>
+ <config:config-item config:name="CursorPositionY" config:type="int">11</config:config-item>
+ <config:config-item config:name="ActiveSplitRange" config:type="short">2</config:config-item>
+ <config:config-item config:name="PositionLeft" config:type="int">0</config:config-item>
+ <config:config-item config:name="PositionRight" config:type="int">0</config:config-item>
+ <config:config-item config:name="PositionTop" config:type="int">0</config:config-item>
+ <config:config-item config:name="PositionBottom" config:type="int">0</config:config-item>
+ <config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
+ <config:config-item config:name="ZoomValue" config:type="int">100</config:config-item>
+ <config:config-item config:name="PageViewZoomValue" config:type="int">60</config:config-item>
+ <config:config-item config:name="ShowGrid" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AnchoredTextOverflowLegacy" config:type="boolean">false</config:config-item>
+ </config:config-item-map-entry>
+ </config:config-item-map-named>
+ <config:config-item config:name="ActiveTable" config:type="string">Sheet1</config:config-item>
+ <config:config-item config:name="HorizontalScrollbarWidth" config:type="int">1860</config:config-item>
+ <config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
+ <config:config-item config:name="ZoomValue" config:type="int">100</config:config-item>
+ <config:config-item config:name="PageViewZoomValue" config:type="int">60</config:config-item>
+ <config:config-item config:name="ShowPageBreakPreview" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ShowZeroValues" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ShowNotes" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ShowGrid" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="GridColor" config:type="int">12632256</config:config-item>
+ <config:config-item config:name="ShowPageBreaks" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="HasColumnRowHeaders" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FormulaBarHeight" config:type="short">1</config:config-item>
+ <config:config-item config:name="IsOutlineSymbolsSet" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsValueHighlightingEnabled" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IsSnapToRaster" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RasterIsVisible" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RasterResolutionX" config:type="int">1000</config:config-item>
+ <config:config-item config:name="RasterResolutionY" config:type="int">1000</config:config-item>
+ <config:config-item config:name="RasterSubdivisionX" config:type="int">1</config:config-item>
+ <config:config-item config:name="RasterSubdivisionY" config:type="int">1</config:config-item>
+ <config:config-item config:name="IsRasterAxisSynchronized" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AnchoredTextOverflowLegacy" config:type="boolean">false</config:config-item>
+ </config:config-item-map-entry>
+ </config:config-item-map-indexed>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AutoCalculate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="GridColor" config:type="int">12632256</config:config-item>
+ <config:config-item config:name="HasColumnRowHeaders" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="HasSheetTabs" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ImagePreferredDPI" config:type="int">0</config:config-item>
+ <config:config-item config:name="IsDocumentShared" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IsOutlineSymbolsSet" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsRasterAxisSynchronized" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsSnapToRaster" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">3</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string">CUPS-PDF</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary">kQH+/0NVUFMtUERGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ1VQUzpDVVBTLVBERgAAAAAAAAAAAAAAAAAAAAAAAAAWAAMArgAAAAAAAAAEAAhSAAAEdAAASm9iRGF0YSAxCnByaW50ZXI9Q1VQUy1QREYKb3JpZW50YXRpb249UG9ydHJhaXQKY29waWVzPTEKY29sbGF0ZT1mYWxzZQptYXJnaW5hZGp1c3RtZW50PTAsMCwwLDAKY29sb3JkZXB0aD0yNApwc2xldmVsPTAKcGRmZGV2aWNlPTEKY29sb3JkZXZpY2U9MApQUERDb250ZXh0RGF0YQpQYWdlU2l6ZTpBNAAAEgBDT01QQVRfRFVQTEVYX01PREUTAER1cGxleE1vZGU6OlVua25vd24=</config:config-item>
+ <config:config-item config:name="RasterIsVisible" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RasterResolutionX" config:type="int">1000</config:config-item>
+ <config:config-item config:name="RasterResolutionY" config:type="int">1000</config:config-item>
+ <config:config-item config:name="RasterSubdivisionX" config:type="int">1</config:config-item>
+ <config:config-item config:name="RasterSubdivisionY" config:type="int">1</config:config-item>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ShowGrid" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ShowNotes" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ShowPageBreaks" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ShowZeroValues" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SyntaxStringRef" config:type="short">7</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item-map-named config:name="ScriptConfiguration">
+ <config:config-item-map-entry config:name="Sheet1">
+ <config:config-item config:name="CodeName" config:type="string">Sheet1</config:config-item>
+ </config:config-item-map-entry>
+ <config:config-item-map-entry config:name="Sheet2">
+ <config:config-item config:name="CodeName" config:type="string">Sheet2</config:config-item>
+ </config:config-item-map-entry>
+ </config:config-item-map-named>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="Arial" svg:font-family="Arial" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Droid Sans Devanagari" svg:font-family="&apos;Droid Sans Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Droid Sans Devanagari1" svg:font-family="&apos;Droid Sans Devanagari&apos;" style:font-family-generic="swiss"/>
+ <style:font-face style:name="Droid Sans Fallback" svg:font-family="&apos;Droid Sans Fallback&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="table-cell">
+ <style:paragraph-properties style:tab-stop-distance="0.5in"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-size="10pt" fo:language="en" fo:country="US" style:font-name-asian="Arial" style:font-size-asian="10pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Droid Sans Devanagari" style:font-size-complex="10pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <number:number-style style:name="N0">
+ <number:number number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:currency-style style:name="N122P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N122">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N122P0"/>
+ </number:currency-style>
+ <number:currency-style style:name="N417P0" style:volatile="true">
+ <number:number number:decimal-places="11" number:min-decimal-places="11" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N417">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="11" number:min-decimal-places="11" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N417P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N413P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N413">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N413P0"/>
+ </number:number-style>
+ <number:percentage-style style:name="N411">
+ <number:number number:decimal-places="17" number:min-decimal-places="17" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:currency-style style:name="N406P0" style:volatile="true">
+ <number:number number:decimal-places="14" number:min-decimal-places="14" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N406">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="14" number:min-decimal-places="14" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N406P0"/>
+ </number:currency-style>
+ <number:currency-style style:name="N404P0" style:volatile="true">
+ <number:number number:decimal-places="8" number:min-decimal-places="8" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N404">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="8" number:min-decimal-places="8" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N404P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N402P0" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N402P1" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:text>(</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ </number:number-style>
+ <number:number-style style:name="N402P2" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:text>- </number:text>
+ </number:number-style>
+ <number:text-style style:name="N402">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N402P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N402P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N402P2"/>
+ </number:text-style>
+ <number:currency-style style:name="N391P0" style:volatile="true">
+ <number:number number:decimal-places="5" number:min-decimal-places="5" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N391">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="5" number:min-decimal-places="5" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N391P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N389P0" style:volatile="true">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> €</number:text>
+ </number:number-style>
+ <number:number-style style:name="N389">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> €</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N389P0"/>
+ </number:number-style>
+ <number:currency-style style:name="N384P0" style:volatile="true">
+ <number:currency-symbol number:language="de" number:country="AT">€</number:currency-symbol>
+ <number:text> </number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ </number:currency-style>
+ <number:currency-style style:name="N384">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:currency-symbol number:language="de" number:country="AT">€</number:currency-symbol>
+ <number:text> </number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N384P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N382P0" style:volatile="true">
+ <number:text> $</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N382P1" style:volatile="true">
+ <number:text> $</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>(</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ </number:number-style>
+ <number:number-style style:name="N382P2" style:volatile="true">
+ <number:text> $</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:text-style style:name="N382">
+ <number:text> </number:text>
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N382P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N382P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N382P2"/>
+ </number:text-style>
+ <number:number-style style:name="N379P0" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N379P1" style:volatile="true">
+ <number:text>-</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N379P2" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:text-style style:name="N379">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N379P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N379P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N379P2"/>
+ </number:text-style>
+ <number:number-style style:name="N367">
+ <number:number number:decimal-places="13" number:min-decimal-places="13" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:number-style style:name="N365P0" style:volatile="true">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N365P1" style:volatile="true">
+ <number:text>-</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N365P2" style:volatile="true">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>- </number:text>
+ </number:number-style>
+ <number:text-style style:name="N365">
+ <number:text> </number:text>
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N365P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N365P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N365P2"/>
+ </number:text-style>
+ <number:currency-style style:name="N359P0" style:volatile="true">
+ <number:currency-symbol number:language="ja" number:country="JP">¥</number:currency-symbol>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ </number:currency-style>
+ <number:currency-style style:name="N359">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:currency-symbol number:language="ja" number:country="JP">¥</number:currency-symbol>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N359P0"/>
+ </number:currency-style>
+ <number:percentage-style style:name="N357P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:percentage-style style:name="N357">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N357P0"/>
+ </number:percentage-style>
+ <number:number-style style:name="N356P0" style:volatile="true">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> € </number:text>
+ </number:number-style>
+ <number:number-style style:name="N356P1" style:volatile="true">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> € </number:text>
+ </number:number-style>
+ <number:number-style style:name="N356P2" style:volatile="true">
+ <number:text> - € </number:text>
+ </number:number-style>
+ <number:text-style style:name="N356">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N356P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N356P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N356P2"/>
+ </number:text-style>
+ <number:number-style style:name="N350P0" style:volatile="true">
+ <number:text>\</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ </number:number-style>
+ <number:number-style style:name="N350">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>\-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N350P0"/>
+ </number:number-style>
+ <number:percentage-style style:name="N349P0" style:volatile="true">
+ <number:number number:decimal-places="1" number:min-decimal-places="1" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:percentage-style style:name="N349">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="1" number:min-decimal-places="1" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>%</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N349P0"/>
+ </number:percentage-style>
+ <number:number-style style:name="N345P0" style:volatile="true">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N345P1" style:volatile="true">
+ <number:text>-</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N345P2" style:volatile="true">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:text-style style:name="N345">
+ <number:text> </number:text>
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N345P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N345P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N345P2"/>
+ </number:text-style>
+ <number:percentage-style style:name="N329">
+ <number:number number:decimal-places="16" number:min-decimal-places="16" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:number-style style:name="N325P0" style:volatile="true">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N325">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N325P0"/>
+ </number:number-style>
+ <number:number-style style:name="N324P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> DM</number:text>
+ </number:number-style>
+ <number:number-style style:name="N324">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> DM</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N324P0"/>
+ </number:number-style>
+ <number:currency-style style:name="N322P0" style:volatile="true">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N322">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N322P0"/>
+ </number:currency-style>
+ <number:percentage-style style:name="N320">
+ <number:number number:decimal-places="20" number:min-decimal-places="20" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:number-style style:name="N315P0" style:volatile="true">
+ <number:text> £</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N315P1" style:volatile="true">
+ <number:text>-£</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N315P2" style:volatile="true">
+ <number:text> £</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:text-style style:name="N315">
+ <number:text> </number:text>
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N315P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N315P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N315P2"/>
+ </number:text-style>
+ <number:currency-style style:name="N311P0" style:volatile="true">
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="3" number:min-decimal-places="3" number:min-integer-digits="1" number:grouping="true"/>
+ </number:currency-style>
+ <number:currency-style style:name="N311">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="3" number:min-decimal-places="3" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N311P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N309P0" style:volatile="true">
+ <number:text>\</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ </number:number-style>
+ <number:number-style style:name="N309">
+ <number:text>\-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N309P0"/>
+ </number:number-style>
+ <number:currency-style style:name="N308P0" style:volatile="true">
+ <number:number number:decimal-places="13" number:min-decimal-places="13" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N308">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="13" number:min-decimal-places="13" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N308P0"/>
+ </number:currency-style>
+ <number:text-style style:name="N306">
+ <number:text-content/>
+ <number:text> - Result=0 - No Errordetection</number:text>
+ </number:text-style>
+ <number:number-style style:name="N305P0" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> Kč </number:text>
+ </number:number-style>
+ <number:number-style style:name="N305P1" style:volatile="true">
+ <number:text>-</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> Kč </number:text>
+ </number:number-style>
+ <number:number-style style:name="N305P2" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:text>- Kč </number:text>
+ </number:number-style>
+ <number:text-style style:name="N305">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N305P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N305P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N305P2"/>
+ </number:text-style>
+ <number:number-style style:name="N301P0" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N301P1" style:volatile="true">
+ <number:text>-</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N301P2" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:text>- </number:text>
+ </number:number-style>
+ <number:text-style style:name="N301">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N301P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N301P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N301P2"/>
+ </number:text-style>
+ <number:date-style style:name="N297">
+ <number:day/>
+ <number:text>/</number:text>
+ <number:month/>
+ <number:text>/</number:text>
+ <number:year/>
+ </number:date-style>
+ <number:number-style style:name="N296P0" style:volatile="true">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> DM </number:text>
+ </number:number-style>
+ <number:number-style style:name="N296P1" style:volatile="true">
+ <number:text>-</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> DM </number:text>
+ </number:number-style>
+ <number:number-style style:name="N296P2" style:volatile="true">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>- DM </number:text>
+ </number:number-style>
+ <number:text-style style:name="N296">
+ <number:text> </number:text>
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N296P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N296P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N296P2"/>
+ </number:text-style>
+ <number:number-style style:name="N292P0" style:volatile="true">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ </number:number-style>
+ <number:number-style style:name="N292">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N292P0"/>
+ </number:number-style>
+ <number:currency-style style:name="N291P0" style:volatile="true">
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ </number:currency-style>
+ <number:currency-style style:name="N291">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N291P0"/>
+ </number:currency-style>
+ <number:currency-style style:name="N289P0" style:volatile="true">
+ <number:currency-symbol number:language="en" number:country="US">$</number:currency-symbol>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ </number:currency-style>
+ <number:currency-style style:name="N289">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>(</number:text>
+ <number:currency-symbol number:language="en" number:country="US">$</number:currency-symbol>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N289P0"/>
+ </number:currency-style>
+ <number:date-style style:name="N287">
+ <number:day-of-week number:style="long"/>
+ <number:text> </number:text>
+ <number:day number:style="long"/>
+ <number:text>/</number:text>
+ <number:month number:style="long"/>
+ <number:text>/</number:text>
+ <number:year/>
+ </number:date-style>
+ <number:currency-style style:name="N279P0" style:volatile="true">
+ <number:number number:decimal-places="12" number:min-decimal-places="12" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N279">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="12" number:min-decimal-places="12" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N279P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N277P0" style:volatile="true">
+ <number:text> \</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N277P1" style:volatile="true">
+ <number:text> \</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N277P2" style:volatile="true">
+ <number:text> \</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:text-style style:name="N277">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N277P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N277P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N277P2"/>
+ </number:text-style>
+ <number:number-style style:name="N269P0" style:volatile="true">
+ <number:text>Yes</number:text>
+ </number:number-style>
+ <number:number-style style:name="N269P1" style:volatile="true">
+ <number:text>Yes</number:text>
+ </number:number-style>
+ <number:number-style style:name="N269">
+ <number:text>No</number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N269P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N269P1"/>
+ </number:number-style>
+ <number:number-style style:name="N267P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="0" number:grouping="true"/>
+ </number:number-style>
+ <number:number-style style:name="N267">
+ <style:text-properties fo:color="#000000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="0" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N267P0"/>
+ </number:number-style>
+ <number:currency-style style:name="N261P0" style:volatile="true">
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="2" number:min-decimal-places="0" number:min-integer-digits="1" number:decimal-replacement="--" number:grouping="true"/>
+ </number:currency-style>
+ <number:currency-style style:name="N261">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="2" number:min-decimal-places="0" number:min-integer-digits="1" number:decimal-replacement="--" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N261P0"/>
+ </number:currency-style>
+ <number:currency-style style:name="N259P0" style:volatile="true">
+ <number:currency-symbol number:language="cs" number:country="CZ">¥€</number:currency-symbol>
+ <number:text> </number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="3">
+ <number:embedded-text number:position="5"> </number:embedded-text>
+ </number:number>
+ <number:text> </number:text>
+ </number:currency-style>
+ <number:currency-style style:name="N259">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>(</number:text>
+ <number:currency-symbol number:language="cs" number:country="CZ">€</number:currency-symbol>
+ <number:text> </number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="3">
+ <number:embedded-text number:position="5"> </number:embedded-text>
+ </number:number>
+ <number:text>)</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N259P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N257P0" style:volatile="true">
+ <number:text> $</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N257P1" style:volatile="true">
+ <number:text> $</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>(</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ </number:number-style>
+ <number:number-style style:name="N257P2" style:volatile="true">
+ <number:text> $</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>- </number:text>
+ </number:number-style>
+ <number:text-style style:name="N257">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N257P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N257P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N257P2"/>
+ </number:text-style>
+ <number:date-style style:name="N256">
+ <number:day number:style="long"/>
+ <number:text>/</number:text>
+ <number:month number:style="long"/>
+ <number:text>/</number:text>
+ <number:year/>
+ </number:date-style>
+ <number:number-style style:name="N255P0" style:volatile="true">
+ <number:text>$</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N255">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>($</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N255P0"/>
+ </number:number-style>
+ <number:number-style style:name="N238">
+ <number:scientific-number number:decimal-places="16" number:min-decimal-places="16" number:min-integer-digits="1" number:min-exponent-digits="3" number:exponent-interval="1" number:forced-exponent-sign="true"/>
+ </number:number-style>
+ <number:number-style style:name="N226">
+ <number:number number:decimal-places="3" number:min-decimal-places="3" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:number-style style:name="N225P0" style:volatile="true">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> DM</number:text>
+ </number:number-style>
+ <number:number-style style:name="N225">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> DM</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N225P0"/>
+ </number:number-style>
+ <number:number-style style:name="N224P0" style:volatile="true">
+ <number:text>\</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ </number:number-style>
+ <number:number-style style:name="N224">
+ <number:text>\-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N224P0"/>
+ </number:number-style>
+ <number:number-style style:name="N419">
+ <number:number number:decimal-places="19" number:min-decimal-places="19" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:number-style style:name="N222">
+ <number:number number:decimal-places="4" number:min-decimal-places="4" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:number-style style:name="N415">
+ <number:scientific-number number:decimal-places="15" number:min-decimal-places="15" number:min-integer-digits="1" number:min-exponent-digits="3" number:exponent-interval="1" number:forced-exponent-sign="true"/>
+ </number:number-style>
+ <number:number-style style:name="N218">
+ <number:number number:decimal-places="7" number:min-decimal-places="7" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:number-style style:name="N414P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> DM</number:text>
+ </number:number-style>
+ <number:number-style style:name="N414">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> DM</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N414P0"/>
+ </number:number-style>
+ <number:number-style style:name="N217P0" style:volatile="true">
+ <number:text>\</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ </number:number-style>
+ <number:number-style style:name="N217">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>\-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N217P0"/>
+ </number:number-style>
+ <number:number-style style:name="N412">
+ <number:scientific-number number:decimal-places="1" number:min-decimal-places="1" number:min-integer-digits="1" number:min-exponent-digits="1" number:exponent-interval="3" number:forced-exponent-sign="true"/>
+ </number:number-style>
+ <number:number-style style:name="N215P0" style:volatile="true">
+ <number:text/>
+ </number:number-style>
+ <number:currency-style style:name="N215">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="fr" number:country="FR">€</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N215P0"/>
+ </number:currency-style>
+ <number:currency-style style:name="N410P0" style:volatile="true">
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ </number:currency-style>
+ <number:currency-style style:name="N410">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N410P0"/>
+ </number:currency-style>
+ <number:date-style style:name="N213">
+ <number:day-of-week/>
+ <number:text> </number:text>
+ <number:day number:style="long"/>
+ <number:text>/</number:text>
+ <number:month number:style="long"/>
+ <number:text>/</number:text>
+ <number:year/>
+ </number:date-style>
+ <number:number-style style:name="N409P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N409P1" style:volatile="true">
+ <number:text> (</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ </number:number-style>
+ <number:number-style style:name="N409P2" style:volatile="true">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:text-style style:name="N409">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N409P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N409P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N409P2"/>
+ </number:text-style>
+ <number:number-style style:name="N212P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> Kč</number:text>
+ </number:number-style>
+ <number:number-style style:name="N212">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> Kč</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N212P0"/>
+ </number:number-style>
+ <number:number-style style:name="N210P0" style:volatile="true">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N210">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N210P0"/>
+ </number:number-style>
+ <number:number-style style:name="N208P0" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> Kč </number:text>
+ </number:number-style>
+ <number:number-style style:name="N208P1" style:volatile="true">
+ <number:text>-</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> Kč </number:text>
+ </number:number-style>
+ <number:number-style style:name="N208P2" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/>
+ <number:text> Kč </number:text>
+ </number:number-style>
+ <number:text-style style:name="N208">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N208P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N208P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N208P2"/>
+ </number:text-style>
+ <number:percentage-style style:name="N204">
+ <number:number number:decimal-places="14" number:min-decimal-places="14" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:number-style style:name="N400P0" style:volatile="true">
+ <number:text> £</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N400P1" style:volatile="true">
+ <number:text>-£</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N400P2" style:volatile="true">
+ <number:text> £</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>- </number:text>
+ </number:number-style>
+ <number:text-style style:name="N400">
+ <number:text> </number:text>
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N400P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N400P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N400P2"/>
+ </number:text-style>
+ <number:number-style style:name="N203P0" style:volatile="true">
+ <number:text>£</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ </number:number-style>
+ <number:number-style style:name="N203">
+ <number:text>-£</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N203P0"/>
+ </number:number-style>
+ <number:number-style style:name="N202P0" style:volatile="true">
+ <number:text>£</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ </number:number-style>
+ <number:number-style style:name="N202">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-£</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N202P0"/>
+ </number:number-style>
+ <number:percentage-style style:name="N200">
+ <number:number number:decimal-places="3" number:min-decimal-places="3" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:number-style style:name="N396P0" style:volatile="true">
+ <number:text> \</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N396P1" style:volatile="true">
+ <number:text> \</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N396P2" style:volatile="true">
+ <number:text> \</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>- </number:text>
+ </number:number-style>
+ <number:text-style style:name="N396">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N396P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N396P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N396P2"/>
+ </number:text-style>
+ <number:percentage-style style:name="N199">
+ <number:number number:decimal-places="4" number:min-decimal-places="4" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:percentage-style style:name="N392">
+ <number:number number:decimal-places="19" number:min-decimal-places="19" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:currency-style style:name="N195P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N195">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N195P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N285P0" style:volatile="true">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N285P1" style:volatile="true">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>(</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ </number:number-style>
+ <number:number-style style:name="N285P2" style:volatile="true">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>- </number:text>
+ </number:number-style>
+ <number:text-style style:name="N285">
+ <number:text> </number:text>
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N285P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N285P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N285P2"/>
+ </number:text-style>
+ <number:number-style style:name="N188P0" style:volatile="true">
+ <number:text>$</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N188">
+ <number:text>($</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N188P0"/>
+ </number:number-style>
+ <number:number-style style:name="N281P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ </number:number-style>
+ <number:number-style style:name="N281">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N281P0"/>
+ </number:number-style>
+ <number:currency-style style:name="N381P0" style:volatile="true">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N381">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N381P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N184">
+ <number:scientific-number number:decimal-places="1" number:min-decimal-places="1" number:min-integer-digits="1" number:min-exponent-digits="1" number:exponent-interval="1" number:forced-exponent-sign="true"/>
+ </number:number-style>
+ <number:percentage-style style:name="N179">
+ <number:number number:decimal-places="5" number:min-decimal-places="5" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:currency-style style:name="N273P0" style:volatile="true">
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ </number:currency-style>
+ <number:currency-style style:name="N273">
+ <number:text>-</number:text>
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N273P0"/>
+ </number:currency-style>
+ <number:percentage-style style:name="N176">
+ <number:number number:decimal-places="8" number:min-decimal-places="8" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:number-style style:name="N372">
+ <number:number number:decimal-places="1" number:min-decimal-places="1" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:percentage-style style:name="N175">
+ <number:number number:decimal-places="9" number:min-decimal-places="9" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:currency-style style:name="N271P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N271">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N271P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N371P0" style:volatile="true">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N371P1" style:volatile="true">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N371P2" style:volatile="true">
+ <number:text> - </number:text>
+ </number:number-style>
+ <number:text-style style:name="N371">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N371P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N371P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N371P2"/>
+ </number:text-style>
+ <number:percentage-style style:name="N174">
+ <number:number number:decimal-places="10" number:min-decimal-places="10" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:number-style style:name="N264P0" style:volatile="true">
+ <number:text>True</number:text>
+ </number:number-style>
+ <number:number-style style:name="N264P1" style:volatile="true">
+ <number:text>True</number:text>
+ </number:number-style>
+ <number:number-style style:name="N264">
+ <number:text>False</number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N264P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N264P1"/>
+ </number:number-style>
+ <number:number-style style:name="N167">
+ <number:number number:decimal-places="20" number:min-decimal-places="20" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:number-style style:name="N363P0" style:volatile="true">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N363P1" style:volatile="true">
+ <number:text>-</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N363P2" style:volatile="true">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>- </number:text>
+ </number:number-style>
+ <number:text-style style:name="N363">
+ <number:text> </number:text>
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N363P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N363P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N363P2"/>
+ </number:text-style>
+ <number:percentage-style style:name="N166">
+ <number:number number:decimal-places="18" number:min-decimal-places="18" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:date-style style:name="N262">
+ <number:day/>
+ <number:text>-</number:text>
+ <number:month number:textual="true"/>
+ <number:text>-</number:text>
+ <number:year/>
+ </number:date-style>
+ <number:number-style style:name="N165P0" style:volatile="true">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N165P1" style:volatile="true">
+ <number:text>-</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N165P2" style:volatile="true">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:text-style style:name="N165">
+ <number:text> </number:text>
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N165P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N165P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N165P2"/>
+ </number:text-style>
+ <number:number-style style:name="N161P0" style:volatile="true">
+ <number:text> $</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N161P1" style:volatile="true">
+ <number:text> $</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>(</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ </number:number-style>
+ <number:number-style style:name="N161P2" style:volatile="true">
+ <number:text> $</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>- </number:text>
+ </number:number-style>
+ <number:text-style style:name="N161">
+ <number:text> </number:text>
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N161P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N161P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N161P2"/>
+ </number:text-style>
+ <number:number-style style:name="N252P0" style:volatile="true">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> DM </number:text>
+ </number:number-style>
+ <number:number-style style:name="N252P1" style:volatile="true">
+ <number:text>-</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> DM </number:text>
+ </number:number-style>
+ <number:number-style style:name="N252P2" style:volatile="true">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/>
+ <number:text> DM </number:text>
+ </number:number-style>
+ <number:text-style style:name="N252">
+ <number:text> </number:text>
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N252P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N252P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N252P2"/>
+ </number:text-style>
+ <number:currency-style style:name="N352P0" style:volatile="true">
+ <number:number number:decimal-places="10" number:min-decimal-places="10" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N352">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="10" number:min-decimal-places="10" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N352P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N155P0" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N155P1" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:text>(</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ </number:number-style>
+ <number:number-style style:name="N155P2" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:text-style style:name="N155">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N155P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N155P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N155P2"/>
+ </number:text-style>
+ <number:number-style style:name="N198P0" style:volatile="true">
+ <number:text>£</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ </number:number-style>
+ <number:number-style style:name="N198">
+ <number:text>-£</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N198P0"/>
+ </number:number-style>
+ <number:currency-style style:name="N248P0" style:volatile="true">
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ </number:currency-style>
+ <number:currency-style style:name="N248">
+ <number:text>-</number:text>
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N248P0"/>
+ </number:currency-style>
+ <number:time-style style:name="N151">
+ <number:minutes number:style="long"/>
+ <number:text>:</number:text>
+ <number:seconds number:style="long" number:decimal-places="1"/>
+ </number:time-style>
+ <number:number-style style:name="N197P0" style:volatile="true">
+ <number:text>On</number:text>
+ </number:number-style>
+ <number:number-style style:name="N197P1" style:volatile="true">
+ <number:text>On</number:text>
+ </number:number-style>
+ <number:number-style style:name="N197">
+ <number:text>Off</number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N197P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N197P1"/>
+ </number:number-style>
+ <number:currency-style style:name="N347P0" style:volatile="true">
+ <number:number number:decimal-places="16" number:min-decimal-places="16" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N347">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="16" number:min-decimal-places="16" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N347P0"/>
+ </number:currency-style>
+ <number:time-style style:name="N150">
+ <number:minutes number:style="long"/>
+ <number:text>:</number:text>
+ <number:seconds number:style="long"/>
+ </number:time-style>
+ <number:number-style style:name="N290P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> €</number:text>
+ </number:number-style>
+ <number:number-style style:name="N290">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> €</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N290P0"/>
+ </number:number-style>
+ <number:number-style style:name="N193P0" style:volatile="true">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> €</number:text>
+ </number:number-style>
+ <number:number-style style:name="N193">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> €</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N193P0"/>
+ </number:number-style>
+ <number:number-style style:name="N146">
+ <number:number number:decimal-places="15" number:min-decimal-places="15" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:currency-style style:name="N388P0" style:volatile="true">
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="4" number:min-decimal-places="4" number:min-integer-digits="1" number:grouping="true"/>
+ </number:currency-style>
+ <number:currency-style style:name="N388">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="4" number:min-decimal-places="4" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N388P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N191P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> €</number:text>
+ </number:number-style>
+ <number:number-style style:name="N191">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> €</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N191P0"/>
+ </number:number-style>
+ <number:number-style style:name="N341P0" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N341P1" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N341P2" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:text>- </number:text>
+ </number:number-style>
+ <number:text-style style:name="N341">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N341P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N341P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N341P2"/>
+ </number:text-style>
+ <number:number-style style:name="N144">
+ <number:number number:decimal-places="10" number:min-decimal-places="10" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:number-style style:name="N143">
+ <number:number number:decimal-places="8" number:min-decimal-places="8" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:percentage-style style:name="N286">
+ <number:number number:decimal-places="15" number:min-decimal-places="15" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:number-style style:name="N386P0" style:volatile="true">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N386P1" style:volatile="true">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>(</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ </number:number-style>
+ <number:number-style style:name="N386P2" style:volatile="true">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:text-style style:name="N386">
+ <number:text> </number:text>
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N386P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N386P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N386P2"/>
+ </number:text-style>
+ <number:number-style style:name="N189">
+ <number:scientific-number number:decimal-places="1" number:min-decimal-places="1" number:min-integer-digits="3" number:min-exponent-digits="1" number:exponent-interval="3" number:forced-exponent-sign="true"/>
+ </number:number-style>
+ <number:number-style style:name="N142P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N142">
+ <number:text>(</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N142P0"/>
+ </number:number-style>
+ <number:text-style style:name="N237">
+ <number:text>Ouch! - </number:text>
+ <number:text-content/>
+ <number:text> - Error detected!</number:text>
+ </number:text-style>
+ <number:currency-style style:name="N337P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="0" number:min-integer-digits="1" number:decimal-replacement="--" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N337">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="0" number:min-integer-digits="1" number:decimal-replacement="--" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N337P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N140P0" style:volatile="true">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ </number:number-style>
+ <number:number-style style:name="N140">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N140P0"/>
+ </number:number-style>
+ <number:number-style style:name="N186P0" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N186P1" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N186P2" style:volatile="true">
+ <number:fill-character> </number:fill-character>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:text-style style:name="N186">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N186P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N186P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N186P2"/>
+ </number:text-style>
+ <number:number-style style:name="N236P0" style:volatile="true">
+ <number:text> $</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N236P1" style:volatile="true">
+ <number:text> $</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>(</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ </number:number-style>
+ <number:number-style style:name="N236P2" style:volatile="true">
+ <number:text> $</number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:text-style style:name="N236">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N236P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N236P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N236P2"/>
+ </number:text-style>
+ <number:number-style style:name="N139">
+ <number:number number:decimal-places="9" number:min-decimal-places="9" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:currency-style style:name="N335P0" style:volatile="true">
+ <number:number number:decimal-places="7" number:min-decimal-places="7" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N335">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="7" number:min-decimal-places="7" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N335P0"/>
+ </number:currency-style>
+ <number:currency-style style:name="N138P0" style:volatile="true">
+ <number:currency-symbol number:language="en" number:country="IE">€</number:currency-symbol>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ </number:currency-style>
+ <number:currency-style style:name="N138">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:currency-symbol number:language="en" number:country="IE">€</number:currency-symbol>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N138P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N280">
+ <number:scientific-number number:decimal-places="14" number:min-decimal-places="14" number:min-integer-digits="1" number:min-exponent-digits="3" number:exponent-interval="1" number:forced-exponent-sign="true"/>
+ </number:number-style>
+ <number:time-style style:name="N380" number:truncate-on-overflow="false">
+ <number:hours/>
+ <number:text>:</number:text>
+ <number:minutes number:style="long"/>
+ <number:text>:</number:text>
+ <number:seconds number:style="long"/>
+ </number:time-style>
+ <number:number-style style:name="N183P0" style:volatile="true">
+ <number:text> $</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N183P1" style:volatile="true">
+ <number:text> $(</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ </number:number-style>
+ <number:number-style style:name="N183P2" style:volatile="true">
+ <number:text> $- </number:text>
+ </number:number-style>
+ <number:text-style style:name="N183">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N183P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N183P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N183P2"/>
+ </number:text-style>
+ <number:number-style style:name="N333P0" style:volatile="true">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> Kč</number:text>
+ </number:number-style>
+ <number:number-style style:name="N333">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> Kč</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N333P0"/>
+ </number:number-style>
+ <number:number-style style:name="N136P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ </number:number-style>
+ <number:number-style style:name="N136">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N136P0"/>
+ </number:number-style>
+ <number:currency-style style:name="N254P0" style:volatile="true">
+ <number:number number:decimal-places="15" number:min-decimal-places="15" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N254">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="15" number:min-decimal-places="15" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N254P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N157P0" style:volatile="true">
+ <number:text>£</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ </number:number-style>
+ <number:number-style style:name="N157">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-£</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N157P0"/>
+ </number:number-style>
+ <number:percentage-style style:name="N331">
+ <number:number number:decimal-places="1" number:min-decimal-places="1" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:number-style style:name="N134">
+ <number:scientific-number number:decimal-places="8" number:min-decimal-places="8" number:min-integer-digits="1" number:min-exponent-digits="3" number:exponent-interval="1" number:forced-exponent-sign="true"/>
+ </number:number-style>
+ <number:currency-style style:name="N374P0" style:volatile="true">
+ <number:number number:decimal-places="6" number:min-decimal-places="6" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N374">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="6" number:min-decimal-places="6" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N374P0"/>
+ </number:currency-style>
+ <number:percentage-style style:name="N177">
+ <number:number number:decimal-places="7" number:min-decimal-places="7" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:number-style style:name="N327P0" style:volatile="true">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> Kč</number:text>
+ </number:number-style>
+ <number:number-style style:name="N327">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> Kč</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N327P0"/>
+ </number:number-style>
+ <number:number-style style:name="N130P0" style:volatile="true">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N130P1" style:volatile="true">
+ <number:text> (</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ </number:number-style>
+ <number:number-style style:name="N130P2" style:volatile="true">
+ <number:text> - </number:text>
+ </number:number-style>
+ <number:text-style style:name="N130">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N130P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N130P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N130P2"/>
+ </number:text-style>
+ <number:number-style style:name="N375P0" style:volatile="true">
+ <number:text>$</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N375">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>($</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N375P0"/>
+ </number:number-style>
+ <number:percentage-style style:name="N178">
+ <number:number number:decimal-places="6" number:min-decimal-places="6" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:currency-style style:name="N228P0" style:volatile="true">
+ <number:currency-symbol>€</number:currency-symbol>
+ <number:text> </number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:currency-style>
+ <number:currency-style style:name="N228">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>(</number:text>
+ <number:currency-symbol>€</number:currency-symbol>
+ <number:text> </number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N228P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N328">
+ <number:number number:decimal-places="6" number:min-decimal-places="6" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:number-style style:name="N131">
+ <number:number number:decimal-places="16" number:min-decimal-places="16" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:number-style style:name="N246P0" style:volatile="true">
+ <number:text>$</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N246">
+ <number:text>($</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N246P0"/>
+ </number:number-style>
+ <number:currency-style style:name="N149P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="fr" number:country="FR">€</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N149">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="fr" number:country="FR">€</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N149P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N270P0" style:volatile="true">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N270">
+ <number:text>(</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N270P0"/>
+ </number:number-style>
+ <number:currency-style style:name="N173P0" style:volatile="true">
+ <number:number number:decimal-places="3" number:min-decimal-places="3" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N173">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="3" number:min-decimal-places="3" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N173P0"/>
+ </number:currency-style>
+ <number:currency-style style:name="N126P0" style:volatile="true">
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ </number:currency-style>
+ <number:currency-style style:name="N126">
+ <number:text>-</number:text>
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N126P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N232P0" style:volatile="true">
+ <number:text> $</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N232P1" style:volatile="true">
+ <number:text> $(</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ </number:number-style>
+ <number:number-style style:name="N232P2" style:volatile="true">
+ <number:text> $-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:text-style style:name="N232">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N232P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N232P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N232P2"/>
+ </number:text-style>
+ <number:number-style style:name="N332">
+ <number:number number:decimal-places="11" number:min-decimal-places="11" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:number-style style:name="N135">
+ <number:number number:decimal-places="18" number:min-decimal-places="18" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:currency-style style:name="N244P0" style:volatile="true">
+ <number:number number:decimal-places="17" number:min-decimal-places="17" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N244">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="17" number:min-decimal-places="17" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N244P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N147">
+ <number:number number:decimal-places="17" number:min-decimal-places="17" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:currency-style style:name="N171P0" style:volatile="true">
+ <number:number number:decimal-places="4" number:min-decimal-places="4" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N171">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="4" number:min-decimal-places="4" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N171P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N418">
+ <number:number number:decimal-places="14" number:min-decimal-places="14" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:number-style style:name="N221P0" style:volatile="true">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> DM</number:text>
+ </number:number-style>
+ <number:number-style style:name="N221">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> DM</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N221P0"/>
+ </number:number-style>
+ <number:currency-style style:name="N124P0" style:volatile="true">
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ </number:currency-style>
+ <number:currency-style style:name="N124">
+ <number:text>-</number:text>
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N124P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N330P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> Kč</number:text>
+ </number:number-style>
+ <number:number-style style:name="N330">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> Kč</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N330P0"/>
+ </number:number-style>
+ <number:number-style style:name="N133P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N133">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N133P0"/>
+ </number:number-style>
+ <number:number-style style:name="N242P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> € </number:text>
+ </number:number-style>
+ <number:number-style style:name="N242P1" style:volatile="true">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> € </number:text>
+ </number:number-style>
+ <number:number-style style:name="N242P2" style:volatile="true">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/>
+ <number:text> € </number:text>
+ </number:number-style>
+ <number:text-style style:name="N242">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N242P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N242P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N242P2"/>
+ </number:text-style>
+ <number:number-style style:name="N145">
+ <number:number number:decimal-places="12" number:min-decimal-places="12" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:currency-style style:name="N266P0" style:volatile="true">
+ <number:currency-symbol number:language="pt" number:country="BR">R$</number:currency-symbol>
+ <number:text> </number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ </number:currency-style>
+ <number:currency-style style:name="N266">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:currency-symbol number:language="pt" number:country="BR">R$</number:currency-symbol>
+ <number:text> </number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N266P0"/>
+ </number:currency-style>
+ <number:percentage-style style:name="N366">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:currency-style style:name="N169P0" style:volatile="true">
+ <number:number number:decimal-places="9" number:min-decimal-places="9" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ </number:currency-style>
+ <number:currency-style style:name="N169">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="9" number:min-decimal-places="9" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N169P0"/>
+ </number:currency-style>
+ <number:number-style style:name="N219">
+ <number:number number:decimal-places="5" number:min-decimal-places="5" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:number-style style:name="N319P0" style:volatile="true">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N319P1" style:volatile="true">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N319P2" style:volatile="true">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:text-style style:name="N319">
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N319P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N319P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N319P2"/>
+ </number:text-style>
+ <number:date-style style:name="N10163" number:language="en" number:country="US">
+ <number:day number:style="long"/>
+ <number:text>-</number:text>
+ <number:month number:textual="true"/>
+ </number:date-style>
+ <number:time-style style:name="N10162" number:language="en" number:country="US" number:truncate-on-overflow="false">
+ <number:hours/>
+ <number:text>:</number:text>
+ <number:minutes number:style="long"/>
+ <number:text>:</number:text>
+ <number:seconds number:style="long"/>
+ </number:time-style>
+ <number:time-style style:name="N10161" number:language="en" number:country="US">
+ <number:minutes number:style="long"/>
+ <number:text>:</number:text>
+ <number:seconds number:style="long" number:decimal-places="1"/>
+ </number:time-style>
+ <number:number-style style:name="N10160P0" style:volatile="true" number:language="en" number:country="US">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N10160" number:language="en" number:country="US">
+ <number:text>(</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N10160P0"/>
+ </number:number-style>
+ <number:number-style style:name="N10159" number:language="en" number:country="US">
+ <number:number number:decimal-places="6" number:min-decimal-places="6" number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:percentage-style style:name="N10158" number:language="en" number:country="US">
+ <number:number number:decimal-places="1" number:min-decimal-places="1" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:number-style style:name="N10157" number:language="en" number:country="US">
+ <number:number number:decimal-places="3" number:min-decimal-places="3" number:min-integer-digits="1" number:grouping="true"/>
+ </number:number-style>
+ <number:number-style style:name="N10156" number:language="en" number:country="US" number:title="User-defined">
+ <number:scientific-number number:decimal-places="14" number:min-decimal-places="14" number:min-integer-digits="1" number:min-exponent-digits="3" number:exponent-interval="1" number:forced-exponent-sign="true"/>
+ </number:number-style>
+ <number:currency-style style:name="N10155P0" style:volatile="true" number:language="en" number:country="US">
+ <number:currency-symbol/>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:currency-style>
+ <number:currency-style style:name="N10155P1" style:volatile="true" number:language="en" number:country="US">
+ <number:currency-symbol/>
+ <number:fill-character> </number:fill-character>
+ <number:text>(</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ </number:currency-style>
+ <number:currency-style style:name="N10155P2" style:volatile="true" number:language="en" number:country="US">
+ <number:currency-symbol/>
+ <number:fill-character> </number:fill-character>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/>
+ <number:text> </number:text>
+ </number:currency-style>
+ <number:text-style style:name="N10155" number:language="en" number:country="US">
+ <number:text> </number:text>
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N10155P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N10155P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N10155P2"/>
+ </number:text-style>
+ <number:number-style style:name="N10151P0" style:volatile="true" number:language="en" number:country="US">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N10151P1" style:volatile="true" number:language="en" number:country="US">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>(</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ </number:number-style>
+ <number:number-style style:name="N10151P2" style:volatile="true" number:language="en" number:country="US">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:text-style style:name="N10151" number:language="en" number:country="US">
+ <number:text> </number:text>
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N10151P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N10151P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N10151P2"/>
+ </number:text-style>
+ <number:currency-style style:name="N10147P0" style:volatile="true" number:language="en" number:country="US">
+ <number:currency-symbol/>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:currency-style>
+ <number:currency-style style:name="N10147P1" style:volatile="true" number:language="en" number:country="US">
+ <number:currency-symbol/>
+ <number:fill-character> </number:fill-character>
+ <number:text>(</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ </number:currency-style>
+ <number:currency-style style:name="N10147P2" style:volatile="true" number:language="en" number:country="US">
+ <number:currency-symbol/>
+ <number:fill-character> </number:fill-character>
+ <number:text>- </number:text>
+ </number:currency-style>
+ <number:text-style style:name="N10147" number:language="en" number:country="US">
+ <number:text> </number:text>
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N10147P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N10147P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N10147P2"/>
+ </number:text-style>
+ <number:number-style style:name="N10143P0" style:volatile="true" number:language="en" number:country="US">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N10143P1" style:volatile="true" number:language="en" number:country="US">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>(</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ </number:number-style>
+ <number:number-style style:name="N10143P2" style:volatile="true" number:language="en" number:country="US">
+ <number:text> </number:text>
+ <number:fill-character> </number:fill-character>
+ <number:text>- </number:text>
+ </number:number-style>
+ <number:text-style style:name="N10143" number:language="en" number:country="US">
+ <number:text> </number:text>
+ <number:text-content/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N10143P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N10143P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N10143P2"/>
+ </number:text-style>
+ <number:number-style style:name="N10139P0" style:volatile="true" number:language="en" number:country="US">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N10139" number:language="en" number:country="US">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>(</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N10139P0"/>
+ </number:number-style>
+ <number:number-style style:name="N10137P0" style:volatile="true" number:language="en" number:country="US">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N10137" number:language="en" number:country="US">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>(</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N10137P0"/>
+ </number:number-style>
+ <number:date-style style:name="N10135" number:language="en" number:country="US">
+ <number:month/>
+ <number:text>/</number:text>
+ <number:day/>
+ <number:text>/</number:text>
+ <number:year number:style="long"/>
+ <number:text> </number:text>
+ <number:hours/>
+ <number:text>:</number:text>
+ <number:minutes number:style="long"/>
+ </number:date-style>
+ <number:time-style style:name="N10134" number:language="en" number:country="US">
+ <number:hours/>
+ <number:text>:</number:text>
+ <number:minutes number:style="long"/>
+ <number:text>:</number:text>
+ <number:seconds number:style="long"/>
+ </number:time-style>
+ <number:time-style style:name="N10133" number:language="en" number:country="US">
+ <number:hours/>
+ <number:text>:</number:text>
+ <number:minutes number:style="long"/>
+ </number:time-style>
+ <number:time-style style:name="N10132" number:language="en" number:country="US">
+ <number:hours/>
+ <number:text>:</number:text>
+ <number:minutes number:style="long"/>
+ <number:text>:</number:text>
+ <number:seconds number:style="long"/>
+ <number:text> </number:text>
+ <number:am-pm/>
+ </number:time-style>
+ <number:time-style style:name="N10131" number:language="en" number:country="US">
+ <number:hours/>
+ <number:text>:</number:text>
+ <number:minutes number:style="long"/>
+ <number:text> </number:text>
+ <number:am-pm/>
+ </number:time-style>
+ <number:date-style style:name="N10130" number:language="en" number:country="US">
+ <number:month number:textual="true"/>
+ <number:text>-</number:text>
+ <number:year/>
+ </number:date-style>
+ <number:date-style style:name="N10129" number:language="en" number:country="US">
+ <number:day/>
+ <number:text>-</number:text>
+ <number:month number:textual="true"/>
+ </number:date-style>
+ <number:date-style style:name="N10128" number:language="en" number:country="US">
+ <number:day/>
+ <number:text>-</number:text>
+ <number:month number:textual="true"/>
+ <number:text>-</number:text>
+ <number:year/>
+ </number:date-style>
+ <number:date-style style:name="N10127" number:language="en" number:country="US">
+ <number:month/>
+ <number:text>/</number:text>
+ <number:day/>
+ <number:text>/</number:text>
+ <number:year number:style="long"/>
+ </number:date-style>
+ <number:currency-style style:name="N10126P0" style:volatile="true" number:language="en" number:country="US">
+ <number:currency-symbol/>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:currency-style>
+ <number:currency-style style:name="N10126" number:language="en" number:country="US">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>(</number:text>
+ <number:currency-symbol/>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N10126P0"/>
+ </number:currency-style>
+ <number:currency-style style:name="N10125P0" style:volatile="true" number:language="en" number:country="US">
+ <number:currency-symbol/>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:currency-style>
+ <number:currency-style style:name="N10125" number:language="en" number:country="US">
+ <number:text>(</number:text>
+ <number:currency-symbol/>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N10125P0"/>
+ </number:currency-style>
+ <number:currency-style style:name="N10123P0" style:volatile="true" number:language="en" number:country="US">
+ <number:currency-symbol/>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:currency-style>
+ <number:currency-style style:name="N10123" number:language="en" number:country="US">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>(</number:text>
+ <number:currency-symbol/>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N10123P0"/>
+ </number:currency-style>
+ <number:currency-style style:name="N10122P0" style:volatile="true" number:language="en" number:country="US">
+ <number:currency-symbol/>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:currency-style>
+ <number:currency-style style:name="N10122" number:language="en" number:country="US">
+ <number:text>(</number:text>
+ <number:currency-symbol/>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text>)</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N10122P0"/>
+ </number:currency-style>
+ <number:date-style style:name="N20123" number:language="de" number:country="DE">
+ <number:day number:style="long"/>
+ <number:text>. </number:text>
+ <number:month number:textual="true"/>
+ <number:text> </number:text>
+ <number:year/>
+ </number:date-style>
+ <number:date-style style:name="N20122" number:language="de" number:country="DE">
+ <number:day number:style="long"/>
+ <number:text>. </number:text>
+ <number:month number:textual="true"/>
+ </number:date-style>
+ <number:date-style style:name="N20121" number:language="de" number:country="DE">
+ <number:month number:textual="true"/>
+ <number:text> </number:text>
+ <number:year/>
+ </number:date-style>
+ <number:time-style style:name="N20120" number:language="de" number:country="DE">
+ <number:hours/>
+ <number:text>:</number:text>
+ <number:minutes number:style="long"/>
+ <number:text> </number:text>
+ <number:am-pm/>
+ </number:time-style>
+ <number:time-style style:name="N20119" number:language="de" number:country="DE">
+ <number:hours/>
+ <number:text>:</number:text>
+ <number:minutes number:style="long"/>
+ <number:text>:</number:text>
+ <number:seconds number:style="long"/>
+ <number:text> </number:text>
+ <number:am-pm/>
+ </number:time-style>
+ <number:number-style style:name="N20118P0" style:volatile="true" number:language="de" number:country="DE">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N20118" number:language="de" number:country="DE">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N20118P0"/>
+ </number:number-style>
+ <number:number-style style:name="N20117P0" style:volatile="true" number:language="de" number:country="DE">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N20117" number:language="de" number:country="DE">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N20117P0"/>
+ </number:number-style>
+ <number:number-style style:name="N20115P0" style:volatile="true" number:language="de" number:country="DE">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N20115" number:language="de" number:country="DE">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N20115P0"/>
+ </number:number-style>
+ <number:number-style style:name="N20114P0" style:volatile="true" number:language="de" number:country="DE">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ </number:number-style>
+ <number:number-style style:name="N20114" number:language="de" number:country="DE">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> </number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N20114P0"/>
+ </number:number-style>
+ <number:number-style style:name="N20112P0" style:volatile="true" number:language="de" number:country="DE">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> €</number:text>
+ </number:number-style>
+ <number:number-style style:name="N20112" number:language="de" number:country="DE">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> €</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N20112P0"/>
+ </number:number-style>
+ <number:number-style style:name="N20111P0" style:volatile="true" number:language="de" number:country="DE">
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> €</number:text>
+ </number:number-style>
+ <number:number-style style:name="N20111" number:language="de" number:country="DE">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> €</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N20111P0"/>
+ </number:number-style>
+ <number:number-style style:name="N20109P0" style:volatile="true" number:language="de" number:country="DE">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> €</number:text>
+ </number:number-style>
+ <number:number-style style:name="N20109" number:language="de" number:country="DE">
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> €</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N20109P0"/>
+ </number:number-style>
+ <number:number-style style:name="N20108P0" style:volatile="true" number:language="de" number:country="DE">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> €</number:text>
+ </number:number-style>
+ <number:number-style style:name="N20108" number:language="de" number:country="DE">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <number:text> €</number:text>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N20108P0"/>
+ </number:number-style>
+ <style:style style:name="Default" style:family="table-cell">
+ <style:text-properties style:font-name-asian="Droid Sans Fallback" style:font-family-asian="&apos;Droid Sans Fallback&apos;" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-name-complex="Droid Sans Devanagari" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="system" style:font-pitch-complex="variable"/>
+ </style:style>
+ <style:style style:name="Heading" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center"/>
+ <style:text-properties fo:font-size="16pt" fo:font-style="italic" fo:font-weight="bold"/>
+ </style:style>
+ <style:style style:name="Heading_20_1" style:display-name="Heading 1" style:family="table-cell" style:parent-style-name="Heading">
+ <style:table-cell-properties style:rotation-angle="90"/>
+ </style:style>
+ <style:style style:name="Heading_20_2" style:display-name="Heading 2" style:family="table-cell" style:parent-style-name="Heading">
+ <style:text-properties fo:color="#000000" fo:font-size="12pt" fo:font-style="normal" fo:font-weight="normal"/>
+ </style:style>
+ <style:style style:name="Text" style:family="table-cell" style:parent-style-name="Default"/>
+ <style:style style:name="Note" style:family="table-cell" style:parent-style-name="Text">
+ <style:table-cell-properties fo:background-color="#ffffcc" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" fo:border="0.74pt solid #808080"/>
+ <style:text-properties fo:color="#333333" fo:font-size="10pt" fo:font-style="normal" fo:font-weight="normal"/>
+ </style:style>
+ <style:style style:name="Footnote" style:family="table-cell" style:parent-style-name="Text">
+ <style:text-properties fo:color="#808080" fo:font-size="10pt" fo:font-style="italic" fo:font-weight="normal"/>
+ </style:style>
+ <style:style style:name="Hyperlink" style:family="table-cell" style:parent-style-name="Text">
+ <style:text-properties fo:color="#0000ee" fo:font-size="10pt" fo:font-style="normal" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="#0000ee" fo:font-weight="normal"/>
+ </style:style>
+ <style:style style:name="Status" style:family="table-cell" style:parent-style-name="Default"/>
+ <style:style style:name="Good" style:family="table-cell" style:parent-style-name="Status">
+ <style:table-cell-properties fo:background-color="#ccffcc"/>
+ <style:text-properties fo:color="#006600" fo:font-size="10pt" fo:font-style="normal" fo:font-weight="normal"/>
+ </style:style>
+ <style:style style:name="Neutral" style:family="table-cell" style:parent-style-name="Status">
+ <style:table-cell-properties fo:background-color="#ffffcc"/>
+ <style:text-properties fo:color="#996600" fo:font-size="10pt" fo:font-style="normal" fo:font-weight="normal"/>
+ </style:style>
+ <style:style style:name="Bad" style:family="table-cell" style:parent-style-name="Status">
+ <style:table-cell-properties fo:background-color="#ffcccc"/>
+ <style:text-properties fo:color="#cc0000" fo:font-size="10pt" fo:font-style="normal" fo:font-weight="normal"/>
+ </style:style>
+ <style:style style:name="Warning" style:family="table-cell" style:parent-style-name="Status">
+ <style:text-properties fo:color="#cc0000" fo:font-size="10pt" fo:font-style="normal" fo:font-weight="normal"/>
+ </style:style>
+ <style:style style:name="Error" style:family="table-cell" style:parent-style-name="Status">
+ <style:table-cell-properties fo:background-color="#cc0000"/>
+ <style:text-properties fo:color="#ffffff" fo:font-size="10pt" fo:font-style="normal" fo:font-weight="bold"/>
+ </style:style>
+ <style:style style:name="Accent" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties fo:color="#000000" fo:font-size="10pt" fo:font-style="normal" fo:font-weight="bold"/>
+ </style:style>
+ <style:style style:name="Accent_20_1" style:display-name="Accent 1" style:family="table-cell" style:parent-style-name="Accent">
+ <style:table-cell-properties fo:background-color="#000000"/>
+ <style:text-properties fo:color="#ffffff" fo:font-size="10pt" fo:font-style="normal" fo:font-weight="normal"/>
+ </style:style>
+ <style:style style:name="Accent_20_2" style:display-name="Accent 2" style:family="table-cell" style:parent-style-name="Accent">
+ <style:table-cell-properties fo:background-color="#808080"/>
+ <style:text-properties fo:color="#ffffff" fo:font-size="10pt" fo:font-style="normal" fo:font-weight="normal"/>
+ </style:style>
+ <style:style style:name="Accent_20_3" style:display-name="Accent 3" style:family="table-cell" style:parent-style-name="Accent">
+ <style:table-cell-properties fo:background-color="#dddddd"/>
+ </style:style>
+ <style:style style:name="Result" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties fo:font-style="italic" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color" fo:font-weight="bold"/>
+ </style:style>
+ <style:style style:name="Result2" style:family="table-cell" style:parent-style-name="Result" style:data-style-name="N122"/>
+ <style:style style:name="Untitled1" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties fo:background-color="#ff3333"/>
+ </style:style>
+ <style:style style:name="Untitled2" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties fo:background-color="#99ff66"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_45" style:display-name="ConditionalStyle_45" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_44" style:display-name="ConditionalStyle_44" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_43" style:display-name="ConditionalStyle_43" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_42" style:display-name="ConditionalStyle_42" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_41" style:display-name="ConditionalStyle_41" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_40" style:display-name="ConditionalStyle_40" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_39" style:display-name="ConditionalStyle_39" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_38" style:display-name="ConditionalStyle_38" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_37" style:display-name="ConditionalStyle_37" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_36" style:display-name="ConditionalStyle_36" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_35" style:display-name="ConditionalStyle_35" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_34" style:display-name="ConditionalStyle_34" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_33" style:display-name="ConditionalStyle_33" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_32" style:display-name="ConditionalStyle_32" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_31" style:display-name="ConditionalStyle_31" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_30" style:display-name="ConditionalStyle_30" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_29" style:display-name="ConditionalStyle_29" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_28" style:display-name="ConditionalStyle_28" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_27" style:display-name="ConditionalStyle_27" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_26" style:display-name="ConditionalStyle_26" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_25" style:display-name="ConditionalStyle_25" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_24" style:display-name="ConditionalStyle_24" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_23" style:display-name="ConditionalStyle_23" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_22" style:display-name="ConditionalStyle_22" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_21" style:display-name="ConditionalStyle_21" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_20" style:display-name="ConditionalStyle_20" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_19" style:display-name="ConditionalStyle_19" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_15" style:display-name="ConditionalStyle_15" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_14" style:display-name="ConditionalStyle_14" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_13" style:display-name="ConditionalStyle_13" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_3" style:display-name="ConditionalStyle_3" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_2" style:display-name="ConditionalStyle_2" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="ConditionalStyle_5f_1" style:display-name="ConditionalStyle_1" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari1" style:font-family-complex="&apos;Droid Sans Devanagari&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="co1" style:family="table-column">
+ <style:table-column-properties fo:break-before="auto" style:column-width="2.5791in"/>
+ </style:style>
+ <style:style style:name="co2" style:family="table-column">
+ <style:table-column-properties fo:break-before="auto" style:column-width="4.7839in"/>
+ </style:style>
+ <style:style style:name="co4" style:family="table-column">
+ <style:table-column-properties fo:break-before="auto" style:column-width="0.911in"/>
+ </style:style>
+ <style:style style:name="co5" style:family="table-column">
+ <style:table-column-properties fo:break-before="auto" style:column-width="0.7327in"/>
+ </style:style>
+ <style:style style:name="co6" style:family="table-column">
+ <style:table-column-properties fo:break-before="auto" style:column-width="1.0075in"/>
+ </style:style>
+ <style:style style:name="co7" style:family="table-column">
+ <style:table-column-properties fo:break-before="auto" style:column-width="2.4783in"/>
+ </style:style>
+ <style:style style:name="co8" style:family="table-column">
+ <style:table-column-properties fo:break-before="auto" style:column-width="2.0236in"/>
+ </style:style>
+ <style:style style:name="co9" style:family="table-column">
+ <style:table-column-properties fo:break-before="auto" style:column-width="0.2283in"/>
+ </style:style>
+ <style:style style:name="co10" style:family="table-column">
+ <style:table-column-properties fo:break-before="auto" style:column-width="0.6646in"/>
+ </style:style>
+ <style:style style:name="co3" style:family="table-column">
+ <style:table-column-properties fo:break-before="auto" style:column-width="0.889in"/>
+ </style:style>
+ <style:style style:name="co11" style:family="table-column">
+ <style:table-column-properties fo:break-before="auto" style:column-width="1.2598in"/>
+ </style:style>
+ <style:style style:name="co12" style:family="table-column">
+ <style:table-column-properties fo:break-before="auto" style:column-width="0.5339in"/>
+ </style:style>
+ <style:style style:name="ro1" style:family="table-row">
+ <style:table-row-properties style:row-height="0.3398in" fo:break-before="auto" style:use-optimal-row-height="true"/>
+ </style:style>
+ <style:style style:name="ro2" style:family="table-row">
+ <style:table-row-properties style:row-height="0.178in" fo:break-before="auto" style:use-optimal-row-height="true"/>
+ </style:style>
+ <style:style style:name="ro3" style:family="table-row">
+ <style:table-row-properties style:row-height="0.2409in" fo:break-before="auto" style:use-optimal-row-height="true"/>
+ </style:style>
+ <style:style style:name="ro4" style:family="table-row">
+ <style:table-row-properties style:row-height="0.2083in" fo:break-before="auto" style:use-optimal-row-height="true"/>
+ </style:style>
+ <style:style style:name="ta1" style:family="table" style:master-page-name="Default">
+ <style:table-properties table:display="true" style:writing-mode="lr-tb"/>
+ </style:style>
+ <number:percentage-style style:name="N11">
+ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1"/>
+ <number:text>%</number:text>
+ </number:percentage-style>
+ <number:boolean-style style:name="N99">
+ <number:boolean/>
+ </number:boolean-style>
+ <style:style style:name="ce2" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="start" fo:margin-left="0in"/>
+ <style:text-properties fo:font-size="20pt" fo:font-weight="bold" style:font-size-asian="20pt" style:font-weight-asian="bold" style:font-size-complex="20pt" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="ce3" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center" fo:margin-left="0in"/>
+ <style:text-properties fo:font-size="14pt" fo:font-weight="bold" style:font-size-asian="14pt" style:font-weight-asian="bold" style:font-size-complex="14pt" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="ce4" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center" fo:margin-left="0in"/>
+ <style:text-properties fo:font-size="12pt" fo:font-weight="bold" style:font-size-asian="12pt" style:font-weight-asian="bold" style:font-size-complex="12pt" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="ce5" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center" fo:margin-left="0in"/>
+ </style:style>
+ <style:style style:name="ce6" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N99">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center" fo:margin-left="0in"/>
+ <style:map style:condition="cell-content()=&quot;&quot;" style:apply-style-name="Default" style:base-cell-address="Sheet1.B3"/>
+ <style:map style:condition="cell-content()=0" style:apply-style-name="Untitled1" style:base-cell-address="Sheet1.B3"/>
+ <style:map style:condition="cell-content()=1" style:apply-style-name="Untitled2" style:base-cell-address="Sheet1.B3"/>
+ </style:style>
+ <style:style style:name="ce8" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center" fo:margin-left="0in"/>
+ <style:map style:condition="cell-content()=&quot;&quot;" style:apply-style-name="Default" style:base-cell-address="Sheet1.B3"/>
+ <style:map style:condition="cell-content()=0" style:apply-style-name="Untitled1" style:base-cell-address="Sheet1.B3"/>
+ <style:map style:condition="cell-content()=1" style:apply-style-name="Untitled2" style:base-cell-address="Sheet1.B3"/>
+ </style:style>
+ <style:style style:name="ce14" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties fo:wrap-option="wrap"/>
+ <style:text-properties style:use-window-font-color="true" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" fo:font-size="10pt" fo:language="en" fo:country="US" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:text-underline-mode="continuous" style:text-overline-mode="continuous" style:text-line-through-mode="continuous" style:font-size-asian="10pt" style:language-asian="zh" style:country-asian="CN" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-size-complex="10pt" style:language-complex="hi" style:country-complex="IN" style:font-style-complex="normal" style:font-weight-complex="normal" style:text-emphasize="none" style:font-relief="none" style:text-overline-style="none" style:text-overline-color="font-color"/>
+ </style:style>
+ <style:style style:name="ce15" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="ce17" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties fo:wrap-option="wrap"/>
+ <style:text-properties style:use-window-font-color="true" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" fo:font-size="10pt" fo:language="en" fo:country="US" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="bold" style:text-underline-mode="continuous" style:text-overline-mode="continuous" style:text-line-through-mode="continuous" style:font-size-asian="10pt" style:language-asian="zh" style:country-asian="CN" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-size-complex="10pt" style:language-complex="hi" style:country-complex="IN" style:font-style-complex="normal" style:font-weight-complex="normal" style:text-emphasize="none" style:font-relief="none" style:text-overline-style="none" style:text-overline-color="font-color"/>
+ </style:style>
+ <style:style style:name="ce21" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N99">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center" fo:margin-left="0in"/>
+ <style:map style:condition="cell-content()=&quot;&quot;" style:apply-style-name="Default" style:base-cell-address="Sheet2.C2"/>
+ <style:map style:condition="cell-content()=0" style:apply-style-name="Untitled1" style:base-cell-address="Sheet2.C2"/>
+ <style:map style:condition="cell-content()=1" style:apply-style-name="Untitled2" style:base-cell-address="Sheet2.C2"/>
+ </style:style>
+ <style:style style:name="ce22" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N0"/>
+ <style:style style:name="ce24" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N320">
+ <style:table-cell-properties fo:background-color="transparent"/>
+ </style:style>
+ <style:style style:name="ce25" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N11"/>
+ <style:style style:name="ce26" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties fo:border="none"/>
+ </style:style>
+ <style:style style:name="ce28" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties fo:wrap-option="wrap"/>
+ <style:text-properties style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" fo:language="en" fo:country="US" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="bold" style:text-underline-mode="continuous" style:text-overline-mode="continuous" style:text-line-through-mode="continuous" style:language-asian="zh" style:country-asian="CN" style:font-style-asian="normal" style:font-weight-asian="normal" style:language-complex="hi" style:country-complex="IN" style:font-style-complex="normal" style:font-weight-complex="normal" style:text-emphasize="none" style:font-relief="none" style:text-overline-style="none" style:text-overline-color="font-color"/>
+ </style:style>
+ <style:style style:name="ce29" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties fo:wrap-option="wrap"/>
+ <style:text-properties style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" fo:language="en" fo:country="US" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:text-underline-mode="continuous" style:text-overline-mode="continuous" style:text-line-through-mode="continuous" style:language-asian="zh" style:country-asian="CN" style:font-style-asian="normal" style:font-weight-asian="normal" style:language-complex="hi" style:country-complex="IN" style:font-style-complex="normal" style:font-weight-complex="normal" style:text-emphasize="none" style:font-relief="none" style:text-overline-style="none" style:text-overline-color="font-color"/>
+ </style:style>
+ <style:style style:name="ce32" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties fo:font-weight="normal" style:font-weight-asian="normal" style:font-weight-complex="normal"/>
+ </style:style>
+ <style:style style:name="ce37" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false" style:vertical-align="middle"/>
+ <style:paragraph-properties fo:text-align="center"/>
+ <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="ce9" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center" fo:margin-left="0in"/>
+ <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="ce39" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="start" fo:margin-left="0in"/>
+ <style:text-properties fo:font-size="20pt" fo:font-weight="bold" style:font-size-asian="20pt" style:font-weight-asian="bold" style:font-size-complex="20pt" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="ce40" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center" fo:margin-left="0in"/>
+ <style:text-properties fo:font-size="14pt" fo:font-weight="bold" style:font-size-asian="14pt" style:font-weight-asian="bold" style:font-size-complex="14pt" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="ce41" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center" fo:margin-left="0in"/>
+ <style:text-properties fo:font-size="12pt" fo:font-weight="bold" style:font-size-asian="12pt" style:font-weight-asian="bold" style:font-size-complex="12pt" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="ce42" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center" fo:margin-left="0in"/>
+ </style:style>
+ <style:style style:name="ce43" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N99">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center" fo:margin-left="0in"/>
+ <style:map style:condition="cell-content()=&quot;&quot;" style:apply-style-name="Default" style:base-cell-address="Sheet1.B3"/>
+ <style:map style:condition="cell-content()=0" style:apply-style-name="Untitled1" style:base-cell-address="Sheet1.B3"/>
+ <style:map style:condition="cell-content()=1" style:apply-style-name="Untitled2" style:base-cell-address="Sheet1.B3"/>
+ </style:style>
+ <style:style style:name="ce44" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center" fo:margin-left="0in"/>
+ <style:map style:condition="cell-content()=&quot;&quot;" style:apply-style-name="Default" style:base-cell-address="Sheet1.B3"/>
+ <style:map style:condition="cell-content()=0" style:apply-style-name="Untitled1" style:base-cell-address="Sheet1.B3"/>
+ <style:map style:condition="cell-content()=1" style:apply-style-name="Untitled2" style:base-cell-address="Sheet1.B3"/>
+ </style:style>
+ <style:style style:name="ce45" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center" fo:margin-left="0in"/>
+ <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="ce46" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N0"/>
+ <style:style style:name="ce47" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N99">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center" fo:margin-left="0in"/>
+ <style:map style:condition="cell-content()=&quot;&quot;" style:apply-style-name="Default" style:base-cell-address="Sheet2.C2"/>
+ <style:map style:condition="cell-content()=0" style:apply-style-name="Untitled1" style:base-cell-address="Sheet2.C2"/>
+ <style:map style:condition="cell-content()=1" style:apply-style-name="Untitled2" style:base-cell-address="Sheet2.C2"/>
+ </style:style>
+ <style:style style:name="ce48" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N320">
+ <style:table-cell-properties fo:background-color="transparent"/>
+ </style:style>
+ <style:style style:name="ce49" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N11"/>
+ <style:style style:name="ce50" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties fo:border="none"/>
+ </style:style>
+ <style:style style:name="ce51" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties fo:wrap-option="wrap"/>
+ <style:text-properties style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" fo:language="en" fo:country="US" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="bold" style:text-underline-mode="continuous" style:text-overline-mode="continuous" style:text-line-through-mode="continuous" style:language-asian="zh" style:country-asian="CN" style:font-style-asian="normal" style:font-weight-asian="normal" style:language-complex="hi" style:country-complex="IN" style:font-style-complex="normal" style:font-weight-complex="normal" style:text-emphasize="none" style:font-relief="none" style:text-overline-style="none" style:text-overline-color="font-color"/>
+ </style:style>
+ <style:style style:name="ce52" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties fo:wrap-option="wrap"/>
+ <style:text-properties style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" fo:language="en" fo:country="US" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:text-underline-mode="continuous" style:text-overline-mode="continuous" style:text-line-through-mode="continuous" style:language-asian="zh" style:country-asian="CN" style:font-style-asian="normal" style:font-weight-asian="normal" style:language-complex="hi" style:country-complex="IN" style:font-style-complex="normal" style:font-weight-complex="normal" style:text-emphasize="none" style:font-relief="none" style:text-overline-style="none" style:text-overline-color="font-color"/>
+ </style:style>
+ <style:style style:name="ce53" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties fo:wrap-option="wrap"/>
+ <style:text-properties style:use-window-font-color="true" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" fo:font-size="10pt" fo:language="en" fo:country="US" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="bold" style:text-underline-mode="continuous" style:text-overline-mode="continuous" style:text-line-through-mode="continuous" style:font-size-asian="10pt" style:language-asian="zh" style:country-asian="CN" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-size-complex="10pt" style:language-complex="hi" style:country-complex="IN" style:font-style-complex="normal" style:font-weight-complex="normal" style:text-emphasize="none" style:font-relief="none" style:text-overline-style="none" style:text-overline-color="font-color"/>
+ </style:style>
+ <style:style style:name="ce54" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties fo:wrap-option="wrap"/>
+ <style:text-properties style:use-window-font-color="true" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" fo:font-size="10pt" fo:language="en" fo:country="US" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:text-underline-mode="continuous" style:text-overline-mode="continuous" style:text-line-through-mode="continuous" style:font-size-asian="10pt" style:language-asian="zh" style:country-asian="CN" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-size-complex="10pt" style:language-complex="hi" style:country-complex="IN" style:font-style-complex="normal" style:font-weight-complex="normal" style:text-emphasize="none" style:font-relief="none" style:text-overline-style="none" style:text-overline-color="font-color"/>
+ </style:style>
+ <style:style style:name="ce55" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties fo:font-weight="normal" style:font-weight-asian="normal" style:font-weight-complex="normal"/>
+ </style:style>
+ <style:style style:name="ce56" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="ce57" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false" style:vertical-align="middle"/>
+ <style:paragraph-properties fo:text-align="center"/>
+ <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties style:writing-mode="lr-tb"/>
+ <style:header-style>
+ <style:header-footer-properties fo:min-height="0.2953in" fo:margin-left="0in" fo:margin-right="0in" fo:margin-bottom="0.0984in"/>
+ </style:header-style>
+ <style:footer-style>
+ <style:header-footer-properties fo:min-height="0.2953in" fo:margin-left="0in" fo:margin-right="0in" fo:margin-top="0.0984in"/>
+ </style:footer-style>
+ </style:page-layout>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Default" style:page-layout-name="pm1">
+ <style:header>
+ <text:p><text:sheet-name>???</text:sheet-name></text:p>
+ </style:header>
+ <style:header-left style:display="false"/>
+ <style:header-first style:display="false"/>
+ <style:footer>
+ <text:p>Page <text:page-number>1</text:page-number></text:p>
+ </style:footer>
+ <style:footer-left style:display="false"/>
+ <style:footer-first style:display="false"/>
+ </style:master-page>
+ </office:master-styles>
+ <office:body>
+ <office:spreadsheet>
+ <table:calculation-settings table:search-criteria-must-apply-to-whole-cell="false" table:automatic-find-labels="false"/>
+ <table:table table:name="Sheet1" table:style-name="ta1">
+ <table:table-column table:style-name="co1" table:default-cell-style-name="Default"/>
+ <table:table-column table:style-name="co1" table:default-cell-style-name="ce42"/>
+ <table:table-column table:style-name="co2" table:default-cell-style-name="Default"/>
+ <table:table-row table:style-name="ro1">
+ <table:table-cell table:style-name="ce39" office:value-type="string" calcext:value-type="string">
+ <text:p>COUNTIF Function</text:p>
+ </table:table-cell>
+ <table:table-cell table:number-columns-repeated="2"/>
+ </table:table-row>
+ <table:table-row table:style-name="ro2">
+ <table:table-cell table:number-columns-repeated="3"/>
+ </table:table-row>
+ <table:table-row table:style-name="ro3">
+ <table:table-cell table:style-name="ce40" office:value-type="string" calcext:value-type="string">
+ <text:p>Result</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="ce43" table:formula="of:=AND([.B8:.B95])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <text:p>TRUE</text:p>
+ </table:table-cell>
+ <table:table-cell/>
+ </table:table-row>
+ <table:table-row table:style-name="ro2" table:number-rows-repeated="3">
+ <table:table-cell table:number-columns-repeated="3"/>
+ </table:table-row>
+ <table:table-row table:style-name="ro4">
+ <table:table-cell table:style-name="ce41" office:value-type="string" calcext:value-type="string">
+ <text:p>Sheet</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="ce41" office:value-type="string" calcext:value-type="string">
+ <text:p>Result</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="ce41" office:value-type="string" calcext:value-type="string">
+ <text:p>Description</text:p>
+ </table:table-cell>
+ </table:table-row>
+ <table:table-row table:style-name="ro2">
+ <table:table-cell office:value-type="float" office:value="1" calcext:value-type="float">
+ <text:p>1</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="ce43" table:formula="of:=AND([Sheet2.C2:.C100])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <text:p>TRUE</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>Simple COUNTIF formulas with local references and values</text:p>
+ </table:table-cell>
+ </table:table-row>
+ <table:table-row table:style-name="ro2">
+ <table:table-cell/>
+ <table:table-cell table:style-name="ce44"/>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>when the document option of “search on whole cell” is turned off.</text:p>
+ </table:table-cell>
+ </table:table-row>
+ <table:table-row table:style-name="ro2" table:number-rows-repeated="29">
+ <table:table-cell/>
+ <table:table-cell table:style-name="ce44"/>
+ <table:table-cell/>
+ </table:table-row>
+ <table:table-row table:style-name="ro2" table:number-rows-repeated="1048537">
+ <table:table-cell table:number-columns-repeated="3"/>
+ </table:table-row>
+ <table:table-row table:style-name="ro2">
+ <table:table-cell table:number-columns-repeated="3"/>
+ </table:table-row>
+ <calcext:conditional-formats>
+ <calcext:conditional-format calcext:target-range-address="Sheet1.B8:Sheet1.B38 Sheet1.B3:Sheet1.B3">
+ <calcext:condition calcext:apply-style-name="Default" calcext:value="=&quot;&quot;" calcext:base-cell-address="Sheet1.B3"/>
+ <calcext:condition calcext:apply-style-name="Untitled1" calcext:value="=0" calcext:base-cell-address="Sheet1.B3"/>
+ <calcext:condition calcext:apply-style-name="Untitled2" calcext:value="=1" calcext:base-cell-address="Sheet1.B3"/>
+ </calcext:conditional-format>
+ </calcext:conditional-formats>
+ </table:table>
+ <table:table table:name="Sheet2" table:style-name="ta1" table:print="false">
+ <table:table-column table:style-name="co4" table:default-cell-style-name="Default"/>
+ <table:table-column table:style-name="co5" table:default-cell-style-name="Default"/>
+ <table:table-column table:style-name="co6" table:default-cell-style-name="ce47"/>
+ <table:table-column table:style-name="co7" table:default-cell-style-name="Default"/>
+ <table:table-column table:style-name="co8" table:default-cell-style-name="Default"/>
+ <table:table-column table:style-name="co9" table:number-columns-repeated="3" table:default-cell-style-name="Default"/>
+ <table:table-column table:style-name="co10" table:default-cell-style-name="Default"/>
+ <table:table-column table:style-name="co3" table:default-cell-style-name="Default"/>
+ <table:table-column table:style-name="co3" table:default-cell-style-name="ce54"/>
+ <table:table-column table:style-name="co11" table:default-cell-style-name="Default"/>
+ <table:table-column table:style-name="co3" table:default-cell-style-name="Default"/>
+ <table:table-column table:style-name="co12" table:number-columns-repeated="6" table:default-cell-style-name="Default"/>
+ <table:table-column table:style-name="co3" table:number-columns-repeated="9" table:default-cell-style-name="Default"/>
+ <table:table-column table:style-name="co3" table:default-cell-style-name="ce42"/>
+ <table:table-column table:style-name="co3" table:number-columns-repeated="2" table:default-cell-style-name="Default"/>
+ <table:table-column table:style-name="co3" table:default-cell-style-name="ce42"/>
+ <table:table-column table:style-name="co3" table:default-cell-style-name="Default"/>
+ <table:table-row table:style-name="ro2">
+ <table:table-cell table:style-name="ce45" office:value-type="string" calcext:value-type="string">
+ <text:p>Function</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="ce45" office:value-type="string" calcext:value-type="string">
+ <text:p>Expected</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="ce45" office:value-type="string" calcext:value-type="string">
+ <text:p>Correct</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="ce45" office:value-type="string" calcext:value-type="string">
+ <text:p>FunctionString</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="ce45" office:value-type="string" calcext:value-type="string">
+ <text:p>Comment</text:p>
+ </table:table-cell>
+ <table:table-cell table:number-columns-repeated="5"/>
+ <table:table-cell table:style-name="ce53"/>
+ <table:table-cell table:style-name="ce55"/>
+ <table:table-cell table:number-columns-repeated="3"/>
+ <table:table-cell table:style-name="ce56"/>
+ <table:table-cell table:number-columns-repeated="12"/>
+ <table:table-cell table:style-name="ce57" table:number-columns-spanned="2" table:number-rows-spanned="1"/>
+ <table:covered-table-cell/>
+ <table:table-cell/>
+ <table:table-cell table:style-name="ce45" table:number-columns-repeated="2"/>
+ </table:table-row>
+ <table:table-row table:style-name="ro2">
+ <table:table-cell table:style-name="ce46" table:formula="of:=COUNTIF([.I2:.I4];&quot;one&quot;)" office:value-type="float" office:value="2" calcext:value-type="float">
+ <text:p>2</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="2" calcext:value-type="float">
+ <text:p>2</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=[.A2]=[.B2]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <text:p>TRUE</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=FORMULA([.A2])" office:value-type="string" office:string-value="=COUNTIF(I2:I4,&quot;one&quot;)" calcext:value-type="string">
+ <text:p>=COUNTIF(I2:I4,&quot;one&quot;)</text:p>
+ </table:table-cell>
+ <table:table-cell table:number-columns-repeated="4"/>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>one</text:p>
+ </table:table-cell>
+ <table:table-cell table:number-columns-repeated="24"/>
+ </table:table-row>
+ <table:table-row table:style-name="ro2">
+ <table:table-cell table:style-name="ce46" table:formula="of:=COUNTIF([.I2:.I4];&quot;two&quot;)" office:value-type="float" office:value="1" calcext:value-type="float">
+ <text:p>1</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="1" calcext:value-type="float">
+ <text:p>1</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=[.A3]=[.B3]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <text:p>TRUE</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=FORMULA([.A3])" office:value-type="string" office:string-value="=COUNTIF(I2:I4,&quot;two&quot;)" calcext:value-type="string">
+ <text:p>=COUNTIF(I2:I4,&quot;two&quot;)</text:p>
+ </table:table-cell>
+ <table:table-cell table:number-columns-repeated="4"/>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>two</text:p>
+ </table:table-cell>
+ <table:table-cell table:number-columns-repeated="24"/>
+ </table:table-row>
+ <table:table-row table:style-name="ro2">
+ <table:table-cell table:style-name="ce46" table:formula="of:=COUNTIF([.I3:.I5];&quot;tones&quot;)" office:value-type="float" office:value="0" calcext:value-type="float">
+ <text:p>0</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="0" calcext:value-type="float">
+ <text:p>0</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=[.A4]=[.B4]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <text:p>TRUE</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=FORMULA([.A4])" office:value-type="string" office:string-value="=COUNTIF(I3:I5,&quot;tones&quot;)" calcext:value-type="string">
+ <text:p>=COUNTIF(I3:I5,&quot;tones&quot;)</text:p>
+ </table:table-cell>
+ <table:table-cell table:number-columns-repeated="4"/>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>oneone</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>A2</text:p>
+ </table:table-cell>
+ <table:table-cell table:number-columns-repeated="23"/>
+ </table:table-row>
+ <table:table-row table:style-name="ro2">
+ <table:table-cell table:formula="of:=COUNTIF([.J4:.J7];&quot;&gt;2&quot;)" office:value-type="float" office:value="1" calcext:value-type="float">
+ <text:p>1</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="1" calcext:value-type="float">
+ <text:p>1</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=[.A5]=[.B5]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <text:p>TRUE</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=FORMULA([.A5])" office:value-type="string" office:string-value="=COUNTIF(J4:J7,&quot;&gt;2&quot;)" calcext:value-type="string">
+ <text:p>=COUNTIF(J4:J7,&quot;&gt;2&quot;)</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>mixed numeric and string</text:p>
+ </table:table-cell>
+ <table:table-cell table:number-columns-repeated="3"/>
+ <table:table-cell table:style-name="ce51"/>
+ <table:table-cell office:value-type="float" office:value="1" calcext:value-type="float">
+ <text:p>1</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="ce53"/>
+ <table:table-cell table:number-columns-repeated="11"/>
+ <table:table-cell table:style-name="ce56" table:number-columns-repeated="6"/>
+ <table:table-cell table:number-columns-repeated="5"/>
+ </table:table-row>
+ <table:table-row table:style-name="ro2">
+ <table:table-cell table:formula="of:=COUNTIF([.J4:.J7];&quot;=2&quot;)" office:value-type="float" office:value="2" calcext:value-type="float">
+ <text:p>2</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="2" calcext:value-type="float">
+ <text:p>2</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=[.A6]=[.B6]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <text:p>TRUE</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=FORMULA([.A6])" office:value-type="string" office:string-value="=COUNTIF(J4:J7,&quot;=2&quot;)" calcext:value-type="string">
+ <text:p>=COUNTIF(J4:J7,&quot;=2&quot;)</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>mixed numeric and string</text:p>
+ </table:table-cell>
+ <table:table-cell table:number-columns-repeated="2"/>
+ <table:table-cell table:style-name="ce49"/>
+ <table:table-cell table:style-name="ce52" office:value-type="float" office:value="5" calcext:value-type="float">
+ <text:p>5</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="2" calcext:value-type="float">
+ <text:p>2</text:p>
+ </table:table-cell>
+ <table:table-cell table:number-columns-repeated="18"/>
+ <table:table-cell table:style-name="Default"/>
+ <table:table-cell table:number-columns-repeated="2"/>
+ <table:table-cell table:style-name="Default"/>
+ <table:table-cell/>
+ </table:table-row>
+ <table:table-row table:style-name="ro2">
+ <table:table-cell table:formula="of:=COUNTIF([.J4:.J7];&quot;&lt;2&quot;)" office:value-type="float" office:value="1" calcext:value-type="float">
+ <text:p>1</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="1" calcext:value-type="float">
+ <text:p>1</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=[.A7]=[.B7]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <text:p>TRUE</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=FORMULA([.A7])" office:value-type="string" office:string-value="=COUNTIF(J4:J7,&quot;&lt;2&quot;)" calcext:value-type="string">
+ <text:p>=COUNTIF(J4:J7,&quot;&lt;2&quot;)</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>mixed numeric and string</text:p>
+ </table:table-cell>
+ <table:table-cell/>
+ <table:table-cell table:style-name="ce48"/>
+ <table:table-cell/>
+ <table:table-cell table:style-name="ce52" office:value-type="string" calcext:value-type="string">
+ <text:p>5</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="3" calcext:value-type="float">
+ <text:p>3</text:p>
+ </table:table-cell>
+ <table:table-cell table:number-columns-repeated="18"/>
+ <table:table-cell table:style-name="Default"/>
+ <table:table-cell table:number-columns-repeated="2"/>
+ <table:table-cell table:style-name="Default"/>
+ <table:table-cell/>
+ </table:table-row>
+ <table:table-row table:style-name="ro2">
+ <table:table-cell table:formula="of:=COUNTIF([.I6:.I9];&quot;&gt;2&quot;)" office:value-type="float" office:value="2" calcext:value-type="float">
+ <text:p>2</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="2" calcext:value-type="float">
+ <text:p>2</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=[.A8]=[.B8]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <text:p>TRUE</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=FORMULA([.A8])" office:value-type="string" office:string-value="=COUNTIF(I6:I9,&quot;&gt;2&quot;)" calcext:value-type="string">
+ <text:p>=COUNTIF(I6:I9,&quot;&gt;2&quot;)</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>mixed numeric and string</text:p>
+ </table:table-cell>
+ <table:table-cell table:number-columns-repeated="2"/>
+ <table:table-cell table:style-name="ce50"/>
+ <table:table-cell office:value-type="float" office:value="55" calcext:value-type="float">
+ <text:p>55</text:p>
+ </table:table-cell>
+ <table:table-cell table:number-columns-repeated="19"/>
+ <table:table-cell table:style-name="Default"/>
+ <table:table-cell table:number-columns-repeated="2"/>
+ <table:table-cell table:style-name="Default"/>
+ <table:table-cell/>
+ </table:table-row>
+ <table:table-row table:style-name="ro2">
+ <table:table-cell table:formula="of:=COUNTIF([.I6:.I9];&quot;=5&quot;)" office:value-type="float" office:value="3" calcext:value-type="float">
+ <text:p>3</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="3" calcext:value-type="float">
+ <text:p>3</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=[.A9]=[.B9]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <text:p>TRUE</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=FORMULA([.A9])" office:value-type="string" office:string-value="=COUNTIF(I6:I9,&quot;=5&quot;)" calcext:value-type="string">
+ <text:p>=COUNTIF(I6:I9,&quot;=5&quot;)</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>mixed numeric and string</text:p>
+ </table:table-cell>
+ <table:table-cell table:number-columns-repeated="2"/>
+ <table:table-cell table:style-name="ce50"/>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>55</text:p>
+ </table:table-cell>
+ <table:table-cell table:number-columns-repeated="2"/>
+ <table:table-cell table:style-name="ce54"/>
+ <table:table-cell table:number-columns-repeated="16"/>
+ <table:table-cell table:style-name="Default"/>
+ <table:table-cell table:number-columns-repeated="2"/>
+ <table:table-cell table:style-name="Default"/>
+ <table:table-cell/>
+ </table:table-row>
+ <calcext:conditional-formats>
+ <calcext:conditional-format calcext:target-range-address="Sheet2.C2:Sheet2.C9">
+ <calcext:condition calcext:apply-style-name="Default" calcext:value="=&quot;&quot;" calcext:base-cell-address="Sheet2.C2"/>
+ <calcext:condition calcext:apply-style-name="Untitled1" calcext:value="=0" calcext:base-cell-address="Sheet2.C2"/>
+ <calcext:condition calcext:apply-style-name="Untitled2" calcext:value="=1" calcext:base-cell-address="Sheet2.C2"/>
+ </calcext:conditional-format>
+ </calcext:conditional-formats>
+ </table:table>
+ <table:named-expressions/>
+ </office:spreadsheet>
+ </office:body>
+</office:document> \ No newline at end of file
diff --git a/sc/source/core/data/queryevaluator.cxx b/sc/source/core/data/queryevaluator.cxx
index 27968cbf22b3..b5ff8a354c84 100644
--- a/sc/source/core/data/queryevaluator.cxx
+++ b/sc/source/core/data/queryevaluator.cxx
@@ -35,9 +35,9 @@
#include <svl/zformat.hxx>
#include <unotools/collatorwrapper.hxx>
-bool ScQueryEvaluator::isPartialTextMatchOp(const ScQueryEntry& rEntry)
+bool ScQueryEvaluator::isPartialTextMatchOp(ScQueryOp eOp)
{
- switch (rEntry.eOp)
+ switch (eOp)
{
// these operators can only be used with textural comparisons.
case SC_CONTAINS:
@@ -52,12 +52,12 @@ bool ScQueryEvaluator::isPartialTextMatchOp(const ScQueryEntry& rEntry)
return false;
}
-bool ScQueryEvaluator::isTextMatchOp(const ScQueryEntry& rEntry)
+bool ScQueryEvaluator::isTextMatchOp(ScQueryOp eOp)
{
- if (isPartialTextMatchOp(rEntry))
+ if (isPartialTextMatchOp(eOp))
return true;
- switch (rEntry.eOp)
+ switch (eOp)
{
// these operators can be used for either textural or value comparison.
case SC_EQUAL:
@@ -68,23 +68,23 @@ bool ScQueryEvaluator::isTextMatchOp(const ScQueryEntry& rEntry)
return false;
}
-bool ScQueryEvaluator::isMatchWholeCellHelper(bool docMatchWholeCell, const ScQueryEntry& rEntry)
+bool ScQueryEvaluator::isMatchWholeCellHelper(bool docMatchWholeCell, ScQueryOp eOp)
{
bool bMatchWholeCell = docMatchWholeCell;
- if (isPartialTextMatchOp(rEntry))
+ if (isPartialTextMatchOp(eOp))
// may have to do partial textural comparison.
bMatchWholeCell = false;
return bMatchWholeCell;
}
-bool ScQueryEvaluator::isMatchWholeCell(const ScQueryEntry& rEntry) const
+bool ScQueryEvaluator::isMatchWholeCell(ScQueryOp eOp) const
{
- return isMatchWholeCellHelper(mbMatchWholeCell, rEntry);
+ return isMatchWholeCellHelper(mbMatchWholeCell, eOp);
}
-bool ScQueryEvaluator::isMatchWholeCell(const ScDocument& rDoc, const ScQueryEntry& rEntry)
+bool ScQueryEvaluator::isMatchWholeCell(const ScDocument& rDoc, ScQueryOp eOp)
{
- return isMatchWholeCellHelper(rDoc.GetDocOptions().IsMatchWholeCell(), rEntry);
+ return isMatchWholeCellHelper(rDoc.GetDocOptions().IsMatchWholeCell(), eOp);
}
void ScQueryEvaluator::setupTransliteratorIfNeeded()
@@ -133,7 +133,7 @@ bool ScQueryEvaluator::isRealWildOrRegExp(const ScQueryEntry& rEntry) const
if (mrParam.eSearchType == utl::SearchParam::SearchType::Normal)
return false;
- return isTextMatchOp(rEntry);
+ return isTextMatchOp(rEntry.eOp);
}
bool ScQueryEvaluator::isTestWildOrRegExp(const ScQueryEntry& rEntry) const
@@ -147,10 +147,10 @@ bool ScQueryEvaluator::isTestWildOrRegExp(const ScQueryEntry& rEntry) const
return (rEntry.eOp == SC_LESS_EQUAL || rEntry.eOp == SC_GREATER_EQUAL);
}
-bool ScQueryEvaluator::isQueryByValue(const ScQueryEntry& rEntry, const ScQueryEntry::Item& rItem,
+bool ScQueryEvaluator::isQueryByValue(ScQueryOp eOp, ScQueryEntry::QueryType eType,
const ScRefCellValue& rCell)
{
- if (rItem.meType == ScQueryEntry::ByString || isPartialTextMatchOp(rEntry))
+ if (eType == ScQueryEntry::ByString || isPartialTextMatchOp(eOp))
return false;
return isQueryByValueForCell(rCell);
@@ -166,13 +166,13 @@ bool ScQueryEvaluator::isQueryByValueForCell(const ScRefCellValue& rCell)
return rCell.hasNumeric();
}
-bool ScQueryEvaluator::isQueryByString(const ScQueryEntry& rEntry, const ScQueryEntry::Item& rItem,
+bool ScQueryEvaluator::isQueryByString(ScQueryOp eOp, ScQueryEntry::QueryType eType,
const ScRefCellValue& rCell)
{
- if (isTextMatchOp(rEntry))
+ if (isTextMatchOp(eOp))
return true;
- if (rItem.meType != ScQueryEntry::ByString)
+ if (eType != ScQueryEntry::ByString)
return false;
return rCell.hasString();
@@ -298,8 +298,7 @@ std::pair<bool, bool> ScQueryEvaluator::compareByValue(const ScRefCellValue& rCe
return std::pair<bool, bool>(bOk, bTestEqual);
}
-OUString ScQueryEvaluator::getCellString(const ScRefCellValue& rCell, SCROW nRow,
- const ScQueryEntry& rEntry,
+OUString ScQueryEvaluator::getCellString(const ScRefCellValue& rCell, SCROW nRow, SCCOL nCol,
const svl::SharedString** sharedString)
{
if (rCell.getType() == CELLTYPE_FORMULA
@@ -326,10 +325,8 @@ OUString ScQueryEvaluator::getCellString(const ScRefCellValue& rCell, SCROW nRow
else
{
sal_uInt32 nFormat
- = mpContext
- ? mrTab.GetNumberFormat(*mpContext, ScAddress(static_cast<SCCOL>(rEntry.nField),
- nRow, mrTab.GetTab()))
- : mrTab.GetNumberFormat(static_cast<SCCOL>(rEntry.nField), nRow);
+ = mpContext ? mrTab.GetNumberFormat(*mpContext, ScAddress(nCol, nRow, mrTab.GetTab()))
+ : mrTab.GetNumberFormat(nCol, nRow);
SvNumberFormatter* pFormatter
= mpContext ? mpContext->GetFormatTable() : mrDoc.GetFormatTable();
return ScCellFormat::GetInputString(rCell, nFormat, *pFormatter, mrDoc, sharedString, true);
@@ -346,7 +343,7 @@ bool ScQueryEvaluator::isFastCompareByString(const ScQueryEntry& rEntry) const
const bool bTestWildOrRegExp = isTestWildOrRegExp(rEntry);
// SC_EQUAL is part of isTextMatchOp(rEntry)
return rEntry.eOp == SC_EQUAL && !bRealWildOrRegExp && !bTestWildOrRegExp
- && isMatchWholeCell(rEntry);
+ && isMatchWholeCell(rEntry.eOp);
}
// The value is placed inside one parameter: [pValueSource1] or [pValueSource2] but never in both.
@@ -363,7 +360,7 @@ std::pair<bool, bool> ScQueryEvaluator::compareByString(const ScQueryEntry& rEnt
if (bFast)
bMatchWholeCell = true;
else
- bMatchWholeCell = isMatchWholeCell(rEntry);
+ bMatchWholeCell = isMatchWholeCell(rEntry.eOp);
const bool bRealWildOrRegExp = !bFast && isRealWildOrRegExp(rEntry);
const bool bTestWildOrRegExp = !bFast && isTestWildOrRegExp(rEntry);
@@ -431,7 +428,7 @@ std::pair<bool, bool> ScQueryEvaluator::compareByString(const ScQueryEntry& rEnt
if (bFast || !bRealWildOrRegExp)
{
// Simple string matching i.e. no regexp match.
- if (bFast || isTextMatchOp(rEntry))
+ if (bFast || isTextMatchOp(rEntry.eOp))
{
// Check this even with bFast.
if (rItem.meType != ScQueryEntry::ByString && rItem.maString.isEmpty())
@@ -779,7 +776,7 @@ std::pair<bool, bool> ScQueryEvaluator::processEntry(SCROW nRow, SCCOL nCol, ScR
// and simple matching is used, see compareByString()
if (!cellStringSet)
{
- cellString = getCellString(aCell, nRow, rEntry, &cellSharedString);
+ cellString = getCellString(aCell, nRow, rEntry.nField, &cellSharedString);
cellStringSet = true;
}
// Allow also checking ScQueryEntry::ByValue if the cell is not numeric,
@@ -853,17 +850,17 @@ std::pair<bool, bool> ScQueryEvaluator::processEntry(SCROW nRow, SCCOL nCol, ScR
aRes.first |= aThisRes.first;
aRes.second |= aThisRes.second;
}
- else if (isQueryByValue(rEntry, rItem, aCell))
+ else if (isQueryByValue(rEntry.eOp, rItem.meType, aCell))
{
std::pair<bool, bool> aThisRes = compareByValue(aCell, nCol, nRow, rEntry, rItem);
aRes.first |= aThisRes.first;
aRes.second |= aThisRes.second;
}
- else if (isQueryByString(rEntry, rItem, aCell))
+ else if (isQueryByString(rEntry.eOp, rItem.meType, aCell))
{
if (!cellStringSet)
{
- cellString = getCellString(aCell, nRow, rEntry, &cellSharedString);
+ cellString = getCellString(aCell, nRow, rEntry.nField, &cellSharedString);
cellStringSet = true;
}
std::pair<bool, bool> aThisRes;
diff --git a/sc/source/core/data/queryiter.cxx b/sc/source/core/data/queryiter.cxx
index 5156385c4b8f..e712b24d4443 100644
--- a/sc/source/core/data/queryiter.cxx
+++ b/sc/source/core/data/queryiter.cxx
@@ -1219,8 +1219,9 @@ ScQueryCellIteratorAccessSpecific< ScQueryCellIteratorAccess::SortedCache >::Mak
return SortedCacheIndexer(rCells, nStartRow, nEndRow, sortedCache);
}
-static bool CanBeUsedForSorterCache(const ScDocument& rDoc, const ScQueryParam& rParam,
- const ScFormulaCell* cell, const ScComplexRefData* refData)
+static bool CanBeUsedForSorterCache(ScDocument& rDoc, const ScQueryParam& rParam,
+ SCTAB nTab, const ScFormulaCell* cell, const ScComplexRefData* refData,
+ ScInterpreterContext& context)
{
if(!rParam.GetEntry(0).bDoQuery || rParam.GetEntry(1).bDoQuery
|| rParam.GetEntry(0).GetQueryItems().size() != 1 )
@@ -1237,19 +1238,12 @@ static bool CanBeUsedForSorterCache(const ScDocument& rDoc, const ScQueryParam&
if(rParam.mbRangeLookup)
return false;
if(rParam.GetEntry(0).GetQueryItem().meType == ScQueryEntry::ByString
- && !ScQueryEvaluator::isMatchWholeCell(rDoc, rParam.GetEntry(0)))
+ && !ScQueryEvaluator::isMatchWholeCell(rDoc, rParam.GetEntry(0).eOp))
return false; // substring matching cannot be sorted
if(rParam.GetEntry(0).eOp != SC_LESS && rParam.GetEntry(0).eOp != SC_LESS_EQUAL
&& rParam.GetEntry(0).eOp != SC_GREATER && rParam.GetEntry(0).eOp != SC_GREATER_EQUAL
&& rParam.GetEntry(0).eOp != SC_EQUAL)
return false;
- // tdf#149071 - numbers entered as string can be compared both as numbers
- // and as strings, depending on the cell content, and that makes it hard to pre-sort
- // the data; such queries are ScQueryEntry::ByValue but have maString set too
- // (see ScQueryParamBase::FillInExcelSyntax())
- if(rParam.GetEntry(0).GetQueryItem().meType == ScQueryEntry::ByValue
- && rParam.GetEntry(0).GetQueryItem().maString.isValid())
- return false;
// For unittests allow inefficient caching, in order for the code to be checked.
static bool inUnitTest = getenv("LO_TESTNAME") != nullptr;
if(refData == nullptr || refData->Ref1.IsRowRel() || refData->Ref2.IsRowRel())
@@ -1270,6 +1264,15 @@ static bool CanBeUsedForSorterCache(const ScDocument& rDoc, const ScQueryParam&
if(!inUnitTest)
return false;
}
+ // Check that all the relevant caches would be valid (may not be the case when mixing
+ // numeric and string cells for ByValue lookups).
+ for(SCCOL col : rDoc.GetAllocatedColumnsRange(nTab, rParam.nCol1, rParam.nCol2))
+ {
+ ScRange aSortedRangeRange( col, rParam.nRow1, nTab, col, rParam.nRow2, nTab);
+ ScSortedRangeCache& cache = rDoc.GetSortedRangeCache( aSortedRangeRange, rParam, &context );
+ if(!cache.isValid())
+ return false;
+ }
return true;
}
@@ -1329,10 +1332,11 @@ bool ScQueryCellIterator< ScQueryCellIteratorAccess::SortedCache >::GetNext()
return GetThis();
}
-bool ScQueryCellIteratorSortedCache::CanBeUsed(const ScDocument& rDoc, const ScQueryParam& rParam,
- const ScFormulaCell* cell, const ScComplexRefData* refData)
+bool ScQueryCellIteratorSortedCache::CanBeUsed(ScDocument& rDoc, const ScQueryParam& rParam,
+ SCTAB nTab, const ScFormulaCell* cell, const ScComplexRefData* refData,
+ ScInterpreterContext& context)
{
- return CanBeUsedForSorterCache(rDoc, rParam, cell, refData);
+ return CanBeUsedForSorterCache(rDoc, rParam, nTab, cell, refData, context);
}
// Countifs implementation.
@@ -1359,10 +1363,11 @@ sal_uInt64 ScCountIfCellIterator< accessType >::GetCount()
}
-bool ScCountIfCellIteratorSortedCache::CanBeUsed(const ScDocument& rDoc, const ScQueryParam& rParam,
- const ScFormulaCell* cell, const ScComplexRefData* refData)
+bool ScCountIfCellIteratorSortedCache::CanBeUsed(ScDocument& rDoc, const ScQueryParam& rParam,
+ SCTAB nTab, const ScFormulaCell* cell, const ScComplexRefData* refData,
+ ScInterpreterContext& context)
{
- return CanBeUsedForSorterCache(rDoc, rParam, cell, refData);
+ return CanBeUsedForSorterCache(rDoc, rParam, nTab, cell, refData, context);
}
template<>
diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx
index dbffd939d53d..957d93005375 100644
--- a/sc/source/core/tool/interpr1.cxx
+++ b/sc/source/core/tool/interpr1.cxx
@@ -5803,7 +5803,8 @@ void ScInterpreter::ScCountIf()
}
else
{
- if(ScCountIfCellIteratorSortedCache::CanBeUsed(mrDoc, rParam, pMyFormulaCell, refData))
+ if(ScCountIfCellIteratorSortedCache::CanBeUsed(mrDoc, rParam, nTab1, pMyFormulaCell,
+ refData, mrContext))
{
ScCountIfCellIteratorSortedCache aCellIter(mrDoc, mrContext, nTab1, rParam, false);
fCount += aCellIter.GetCount();
@@ -6198,7 +6199,8 @@ void ScInterpreter::IterateParametersIfs( double(*ResultFunc)( const sc::ParamIf
}
else
{
- if( ScQueryCellIteratorSortedCache::CanBeUsed( mrDoc, rParam, pMyFormulaCell, refData ))
+ if( ScQueryCellIteratorSortedCache::CanBeUsed( mrDoc, rParam, nTab1, pMyFormulaCell,
+ refData, mrContext ))
{
ScQueryCellIteratorSortedCache aCellIter(mrDoc, mrContext, nTab1, rParam, false);
// Increment Entry.nField in iterator when switching to next column.
@@ -10045,7 +10047,7 @@ static bool lcl_LookupQuery( ScAddress & o_rResultPos, ScDocument& rDoc, ScInter
}
else // EQUAL
{
- if( ScQueryCellIteratorSortedCache::CanBeUsed( rDoc, rParam, cell, refData ))
+ if( ScQueryCellIteratorSortedCache::CanBeUsed( rDoc, rParam, rParam.nTab, cell, refData, rContext ))
{
ScQueryCellIteratorSortedCache aCellIter( rDoc, rContext, rParam.nTab, rParam, false);
if (aCellIter.GetFirst())
diff --git a/sc/source/core/tool/rangecache.cxx b/sc/source/core/tool/rangecache.cxx
index 6a80ca786082..7f1e9cfe8235 100644
--- a/sc/source/core/tool/rangecache.cxx
+++ b/sc/source/core/tool/rangecache.cxx
@@ -25,18 +25,16 @@
#include <queryparam.hxx>
#include <sal/log.hxx>
+#include <svl/numformat.hxx>
#include <unotools/collatorwrapper.hxx>
-static bool needsDescending(const ScQueryParam& param)
+static bool needsDescending(ScQueryOp op)
{
- assert(param.GetEntry(0).bDoQuery && !param.GetEntry(1).bDoQuery
- && param.GetEntry(0).GetQueryItems().size() == 1);
- assert(param.GetEntry(0).eOp == SC_GREATER || param.GetEntry(0).eOp == SC_GREATER_EQUAL
- || param.GetEntry(0).eOp == SC_LESS || param.GetEntry(0).eOp == SC_LESS_EQUAL
- || param.GetEntry(0).eOp == SC_EQUAL);
+ assert(op == SC_GREATER || op == SC_GREATER_EQUAL || op == SC_LESS || op == SC_LESS_EQUAL
+ || op == SC_EQUAL);
// We want all matching values to start in the sort order,
// since the data is searched from start until the last matching one.
- return param.GetEntry(0).eOp == SC_GREATER || param.GetEntry(0).eOp == SC_GREATER_EQUAL;
+ return op == SC_GREATER || op == SC_GREATER_EQUAL;
}
static ScSortedRangeCache::ValueType toValueType(const ScQueryParam& param)
@@ -55,8 +53,8 @@ ScSortedRangeCache::ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange,
const ScQueryParam& param, ScInterpreterContext* context)
: maRange(rRange)
, mpDoc(pDoc)
- , mDescending(needsDescending(param))
- , mValues(toValueType(param))
+ , mValid(false)
+ , mValueType(toValueType(param))
{
assert(maRange.aStart.Col() == maRange.aEnd.Col());
assert(maRange.aStart.Tab() == maRange.aEnd.Tab());
@@ -66,6 +64,8 @@ ScSortedRangeCache::ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange,
&& param.GetEntry(0).GetQueryItems().size() == 1);
const ScQueryEntry& entry = param.GetEntry(0);
const ScQueryEntry::Item& item = entry.GetQueryItem();
+ mQueryOp = entry.eOp;
+ mQueryType = item.meType;
SCROW startRow = maRange.aStart.Row();
SCROW endRow = maRange.aEnd.Row();
@@ -73,9 +73,9 @@ ScSortedRangeCache::ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange,
SCCOL endCol = maRange.aEnd.Col();
if (!item.mbMatchEmpty)
if (!pDoc->ShrinkToDataArea(nTab, startCol, startRow, endCol, endRow))
- return;
+ return; // no data cells, no need for a cache
- if (mValues == ValueType::Values)
+ if (mValueType == ValueType::Values)
{
struct RowData
{
@@ -86,12 +86,32 @@ ScSortedRangeCache::ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange,
for (SCROW nRow = startRow; nRow <= endRow; ++nRow)
{
ScRefCellValue cell(pDoc->GetRefCellValue(ScAddress(nCol, nRow, nTab)));
- if (ScQueryEvaluator::isQueryByValue(entry, item, cell))
+ if (ScQueryEvaluator::isQueryByValue(mQueryOp, mQueryType, cell))
rowData.push_back(RowData{ nRow, cell.getValue() });
+ else if (ScQueryEvaluator::isQueryByString(mQueryOp, mQueryType, cell))
+ {
+ // Make sure that other possibilities in the generic handling
+ // in ScQueryEvaluator::processEntry() do not alter the results.
+ // (ByTextColor/ByBackgroundColor are blocked by CanBeUsedForSorterCache(),
+ // but isQueryByString() is possible if the cell content is a string.
+ // And including strings here would be tricky, as the string comparison
+ // may possibly(?) be different than a numeric one. So check if the string
+ // may possibly match a number, by converting it to one. If it can't match,
+ // then it's fine to ignore it (and it can happen e.g. if the query uses
+ // the whole column which includes a textual header). But if it can possibly
+ // match, then bail out and leave it to the unoptimized case.
+ // TODO Maybe it would actually work to use the numeric value obtained here?
+ if (!ScQueryEvaluator::isMatchWholeCell(*pDoc, mQueryOp))
+ return; // substring matching cannot be sorted
+ sal_uInt32 format = 0;
+ double value;
+ if (context->GetFormatTable()->IsNumberFormat(cell.getString(pDoc), format, value))
+ return;
+ }
}
std::stable_sort(rowData.begin(), rowData.end(),
[](const RowData& d1, const RowData& d2) { return d1.value < d2.value; });
- if (mDescending)
+ if (needsDescending(entry.eOp))
for (auto it = rowData.rbegin(); it != rowData.rend(); ++it)
mSortedRows.emplace_back(it->row);
else
@@ -113,31 +133,40 @@ ScSortedRangeCache::ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange,
for (SCROW nRow = startRow; nRow <= endRow; ++nRow)
{
ScRefCellValue cell(pDoc->GetRefCellValue(ScAddress(nCol, nRow, nTab)));
- if (ScQueryEvaluator::isQueryByString(entry, item, cell))
+ // This should be used only with ScQueryEntry::ByString, and that
+ // means that ScQueryEvaluator::isQueryByString() should be the only
+ // possibility in the generic handling in ScQueryEvaluator::processEntry()
+ // (ByTextColor/ByBackgroundColor are blocked by CanBeUsedForSorterCache(),
+ // and isQueryByValue() is blocked by ScQueryEntry::ByString).
+ assert(mQueryType == ScQueryEntry::ByString);
+ assert(!ScQueryEvaluator::isQueryByValue(mQueryOp, mQueryType, cell));
+ if (ScQueryEvaluator::isQueryByString(mQueryOp, mQueryType, cell))
{
const svl::SharedString* sharedString = nullptr;
- OUString string = evaluator.getCellString(cell, nRow, entry, &sharedString);
+ OUString string = evaluator.getCellString(cell, nRow, nCol, &sharedString);
if (sharedString)
string = sharedString->getString();
rowData.push_back(RowData{ nRow, string });
}
}
CollatorWrapper& collator
- = ScGlobal::GetCollator(mValues == ValueType::StringsCaseSensitive);
+ = ScGlobal::GetCollator(mValueType == ValueType::StringsCaseSensitive);
std::stable_sort(rowData.begin(), rowData.end(),
[&collator](const RowData& d1, const RowData& d2) {
return collator.compareString(d1.string, d2.string) < 0;
});
- if (mDescending)
+ if (needsDescending(entry.eOp))
for (auto it = rowData.rbegin(); it != rowData.rend(); ++it)
mSortedRows.emplace_back(it->row);
else
for (const RowData& d : rowData)
mSortedRows.emplace_back(d.row);
}
+
mRowToIndex.resize(maRange.aEnd.Row() - maRange.aStart.Row() + 1, mSortedRows.max_size());
for (size_t i = 0; i < mSortedRows.size(); ++i)
mRowToIndex[mSortedRows[i] - maRange.aStart.Row()] = i;
+ mValid = true;
}
void ScSortedRangeCache::Notify(const SfxHint& rHint)
@@ -157,7 +186,11 @@ void ScSortedRangeCache::Notify(const SfxHint& rHint)
ScSortedRangeCache::HashKey ScSortedRangeCache::makeHashKey(const ScRange& range,
const ScQueryParam& param)
{
- return { range, needsDescending(param), toValueType(param) };
+ assert(param.GetEntry(0).bDoQuery && !param.GetEntry(1).bDoQuery
+ && param.GetEntry(0).GetQueryItems().size() == 1);
+ const ScQueryEntry& entry = param.GetEntry(0);
+ const ScQueryEntry::Item& item = entry.GetQueryItem();
+ return { range, toValueType(param), entry.eOp, item.meType };
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */