metanorma-un 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.github/workflows/macos.yml +39 -0
- data/.github/workflows/ubuntu.yml +39 -0
- data/.github/workflows/windows.yml +42 -0
- data/.gitignore +1 -0
- data/.hound.yml +3 -0
- data/.rubocop.yml +10 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +11 -0
- data/LICENSE +25 -0
- data/README.adoc +141 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/rspec +17 -0
- data/bin/setup +8 -0
- data/lib/asciidoctor/un.rb +7 -0
- data/lib/asciidoctor/un/basicdoc.rng +1059 -0
- data/lib/asciidoctor/un/biblio.rng +1142 -0
- data/lib/asciidoctor/un/boilerplate.xml +57 -0
- data/lib/asciidoctor/un/converter.rb +209 -0
- data/lib/asciidoctor/un/isodoc.rng +1028 -0
- data/lib/asciidoctor/un/reqt.rng +171 -0
- data/lib/asciidoctor/un/un.rng +242 -0
- data/lib/asciidoctor/un/validate.rb +22 -0
- data/lib/isodoc/un.rb +10 -0
- data/lib/isodoc/un/base_convert.rb +227 -0
- data/lib/isodoc/un/html/header.html +225 -0
- data/lib/isodoc/un/html/html_unece_intro.html +15 -0
- data/lib/isodoc/un/html/html_unece_plenary_titlepage.html +100 -0
- data/lib/isodoc/un/html/html_unece_titlepage.html +81 -0
- data/lib/isodoc/un/html/htmlstyle.scss +1174 -0
- data/lib/isodoc/un/html/logo.jpg +0 -0
- data/lib/isodoc/un/html/scripts.html +84 -0
- data/lib/isodoc/un/html/scripts.pdf.html +72 -0
- data/lib/isodoc/un/html/unece.scss +801 -0
- data/lib/isodoc/un/html/word_unece_intro.html +15 -0
- data/lib/isodoc/un/html/word_unece_plenary_titlepage.html +160 -0
- data/lib/isodoc/un/html/word_unece_titlepage.html +30 -0
- data/lib/isodoc/un/html/wordstyle.scss +1141 -0
- data/lib/isodoc/un/html_convert.rb +121 -0
- data/lib/isodoc/un/metadata.rb +115 -0
- data/lib/isodoc/un/pdf_convert.rb +133 -0
- data/lib/isodoc/un/word_convert.rb +180 -0
- data/lib/metanorma-un.rb +8 -0
- data/lib/metanorma/un.rb +12 -0
- data/lib/metanorma/un/UN_emblem_blue.svg +193 -0
- data/lib/metanorma/un/input.rb +18 -0
- data/lib/metanorma/un/processor.rb +43 -0
- data/lib/metanorma/un/version.rb +5 -0
- data/metanorma-unece.gemspec +48 -0
- metadata +334 -0
@@ -0,0 +1,227 @@
|
|
1
|
+
require_relative "metadata"
|
2
|
+
require "fileutils"
|
3
|
+
require "roman-numerals"
|
4
|
+
|
5
|
+
module IsoDoc
|
6
|
+
module UN
|
7
|
+
module BaseConvert
|
8
|
+
def metadata_init(lang, script, labels)
|
9
|
+
@meta = Metadata.new(lang, script, labels)
|
10
|
+
@meta.set(:toc, @toc)
|
11
|
+
end
|
12
|
+
|
13
|
+
def annex_name(annex, name, div)
|
14
|
+
div.h1 **{ class: "Annex" } do |t|
|
15
|
+
t << "#{anchor(annex['id'], :label)}"
|
16
|
+
t.br
|
17
|
+
t.b do |b|
|
18
|
+
name&.children&.each { |c2| parse(c2, b) }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def i18n_init(lang, script)
|
24
|
+
super
|
25
|
+
@admonition_lbl = "Box"
|
26
|
+
@abstract_lbl = "Summary"
|
27
|
+
end
|
28
|
+
|
29
|
+
def fileloc(loc)
|
30
|
+
File.join(File.dirname(__FILE__), loc)
|
31
|
+
end
|
32
|
+
|
33
|
+
MIDDLE_CLAUSE = "//clause[parent::sections]".freeze
|
34
|
+
|
35
|
+
def initial_anchor_names(d)
|
36
|
+
preface_names(d.at(ns("//abstract")))
|
37
|
+
preface_names(d.at(ns("//foreword")))
|
38
|
+
preface_names(d.at(ns("//introduction")))
|
39
|
+
sequential_asset_names(d.xpath(ns("//foreword | //introduction")))
|
40
|
+
middle_section_asset_names(d)
|
41
|
+
clause_names(d, 0)
|
42
|
+
termnote_anchor_names(d)
|
43
|
+
termexample_anchor_names(d)
|
44
|
+
end
|
45
|
+
|
46
|
+
def clause_names(docxml, sect_num)
|
47
|
+
q = "//clause[parent::sections]"
|
48
|
+
@paranumber = 0
|
49
|
+
docxml.xpath(ns(q)).each_with_index do |c, i|
|
50
|
+
section_names(c, (i + sect_num), 1)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def levelnumber(num, lvl)
|
55
|
+
case lvl % 3
|
56
|
+
when 1 then RomanNumerals.to_roman(num)
|
57
|
+
when 2 then ("A".ord + num - 1).chr
|
58
|
+
when 0 then num.to_s
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def annex_levelnum(num, lvl)
|
63
|
+
case lvl % 3
|
64
|
+
when 0 then RomanNumerals.to_roman(num)
|
65
|
+
when 1 then ("A".ord + num - 1).chr
|
66
|
+
when 2 then num.to_s
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
NONTERMINAL =
|
71
|
+
"./clause | ./term | ./terms | ./definitions | ./references".freeze
|
72
|
+
|
73
|
+
def leaf_section?(clause)
|
74
|
+
!clause.at(ns(NONTERMINAL)) &&
|
75
|
+
!%w(definitions annex terms).include?(clause.name) &&
|
76
|
+
clause.at(ns("./p | ./bibitem"))
|
77
|
+
end
|
78
|
+
|
79
|
+
def label_leaf_section(clause, lvl)
|
80
|
+
@paranumber += 1
|
81
|
+
@anchors[clause["id"]] = {label: @paranumber.to_s,
|
82
|
+
xref: "paragraph #{@paranumber}",
|
83
|
+
level: lvl, type: "paragraph" }
|
84
|
+
end
|
85
|
+
|
86
|
+
def label_annex_leaf_section(clause, num, lvl)
|
87
|
+
@paranumber += 1
|
88
|
+
@anchors[clause["id"]] = {label: @paranumber.to_s,
|
89
|
+
xref: "paragraph #{num}.#{@paranumber}",
|
90
|
+
level: lvl, type: "paragraph" }
|
91
|
+
end
|
92
|
+
|
93
|
+
def section_names(clause, num, lvl)
|
94
|
+
return num if clause.nil?
|
95
|
+
leaf_section?(clause) and label_leaf_section(clause, lvl) and return
|
96
|
+
num = num + 1
|
97
|
+
lbl = levelnumber(num, 1)
|
98
|
+
@anchors[clause["id"]] = { label: lbl, level: lvl, type: "clause",
|
99
|
+
xref: l10n("#{@clause_lbl} #{lbl}") }
|
100
|
+
i = 1
|
101
|
+
clause.xpath(ns(NONTERMINAL)).each do |c|
|
102
|
+
section_names1(c, "#{lbl}.#{levelnumber(i, lvl + 1)}", lvl + 1)
|
103
|
+
i += 1 if !leaf_section?(c)
|
104
|
+
end
|
105
|
+
num
|
106
|
+
end
|
107
|
+
|
108
|
+
def section_names1(clause, num, level)
|
109
|
+
leaf_section?(clause) and label_leaf_section(clause, level) and return
|
110
|
+
/\.(?<leafnum>[^.]+$)/ =~ num
|
111
|
+
@anchors[clause["id"]] = { label: leafnum, level: level, type: "clause",
|
112
|
+
xref: l10n("#{@clause_lbl} #{num}") }
|
113
|
+
i = 1
|
114
|
+
clause.xpath(ns(NONTERMINAL)).each do |c|
|
115
|
+
section_names1(c, "#{num}.#{levelnumber(i, level + 1)}", level + 1)
|
116
|
+
i += 1 if !leaf_section?(c)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
def annex_name_lbl(clause, num)
|
121
|
+
l10n("<b>#{@annex_lbl} #{num}</b>")
|
122
|
+
end
|
123
|
+
|
124
|
+
def annex_names(clause, num)
|
125
|
+
hierarchical_asset_names(clause, num)
|
126
|
+
leaf_section?(clause) and
|
127
|
+
label_annex_leaf_section(clause, num, 1) and return
|
128
|
+
@anchors[clause["id"]] = { label: annex_name_lbl(clause, num),
|
129
|
+
type: "clause",
|
130
|
+
xref: "#{@annex_lbl} #{num}", level: 1 }
|
131
|
+
i = 1
|
132
|
+
clause.xpath(ns("./clause")).each do |c|
|
133
|
+
annex_names1(c, "#{num}.#{annex_levelnum(i, 2)}", 2)
|
134
|
+
i += 1 if !leaf_section?(c)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
def annex_names1(clause, num, level)
|
139
|
+
leaf_section?(clause) and
|
140
|
+
label_annex_leaf_section(clause, num, level) and return
|
141
|
+
/\.(?<leafnum>[^.]+$)/ =~ num
|
142
|
+
@anchors[clause["id"]] = { label: leafnum, xref: "#{@annex_lbl} #{num}",
|
143
|
+
level: level, type: "clause" }
|
144
|
+
i = 1
|
145
|
+
clause.xpath(ns("./clause | ./references")).each do |c|
|
146
|
+
annex_names1(c, "#{num}.#{annex_levelnum(i, level + 1)}", level + 1)
|
147
|
+
i += 1 if !leaf_section?(c)
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
def back_anchor_names(docxml)
|
152
|
+
docxml.xpath(ns("//annex")).each_with_index do |c, i|
|
153
|
+
@paranumber = 0
|
154
|
+
annex_names(c, RomanNumerals.to_roman(i + 1))
|
155
|
+
end
|
156
|
+
docxml.xpath(ns("//bibliography/clause |"\
|
157
|
+
"//bibliography/references")).each do |b|
|
158
|
+
preface_names(b)
|
159
|
+
end
|
160
|
+
docxml.xpath(ns("//bibitem[not(ancestor::bibitem)]")).each do |ref|
|
161
|
+
reference_names(ref)
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
def sequential_admonition_names(clause)
|
166
|
+
i = 0
|
167
|
+
clause.xpath(ns(".//admonition")).each do |t|
|
168
|
+
i += 1 unless t["unnumbered"]
|
169
|
+
next if t["id"].nil? || t["id"].empty?
|
170
|
+
@anchors[t["id"]] = anchor_struct(i.to_s, nil, @admonition_lbl,
|
171
|
+
"box", t["unnumbered"])
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
def hierarchical_admonition_names(clause, num)
|
176
|
+
i = 0
|
177
|
+
clause.xpath(ns(".//admonition")).each do |t|
|
178
|
+
i += 1 unless t["unnumbered"]
|
179
|
+
next if t["id"].nil? || t["id"].empty?
|
180
|
+
@anchors[t["id"]] =
|
181
|
+
anchor_struct("#{num}.#{i}", nil, @admonition_lbl, "box",
|
182
|
+
t["unnumbered"])
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
def sequential_asset_names(clause)
|
187
|
+
super
|
188
|
+
sequential_admonition_names(clause)
|
189
|
+
end
|
190
|
+
|
191
|
+
def hierarchical_asset_names(clause, num)
|
192
|
+
super
|
193
|
+
hierarchical_admonition_names(clause, num)
|
194
|
+
end
|
195
|
+
|
196
|
+
def admonition_name_parse(node, div, name)
|
197
|
+
div.p **{ class: "AdmonitionTitle", style: "text-align:center;" } do |p|
|
198
|
+
lbl = anchor(node['id'], :label)
|
199
|
+
lbl.nil? or p << l10n("#{@admonition_lbl} #{lbl}")
|
200
|
+
name and !lbl.nil? and p << " — "
|
201
|
+
name and name.children.each { |n| parse(n, div) }
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
def admonition_parse(node, out)
|
206
|
+
name = node.at(ns("./name"))
|
207
|
+
out.div **{ class: "Admonition" } do |t|
|
208
|
+
admonition_name_parse(node, t, name) if name
|
209
|
+
node.children.each do |n|
|
210
|
+
parse(n, t) unless n.name == "name"
|
211
|
+
end
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
def inline_header_title(out, node, c1)
|
216
|
+
title = c1&.content || ""
|
217
|
+
out.span **{ class: "zzMoveToFollowing" } do |s|
|
218
|
+
if lbl = anchor(node['id'], :label)
|
219
|
+
s << "#{lbl}. " unless @suppressheadingnumbers
|
220
|
+
insert_tab(s, 1)
|
221
|
+
end
|
222
|
+
s << "#{title} "
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
@@ -0,0 +1,225 @@
|
|
1
|
+
<html xmlns:v="urn:schemas-microsoft-com:vml"
|
2
|
+
xmlns:o="urn:schemas-microsoft-com:office:office"
|
3
|
+
xmlns:w="urn:schemas-microsoft-com:office:word"
|
4
|
+
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
|
5
|
+
xmlns:mv="http://macVmlSchemaUri" xmlns="http://www.w3.org/TR/REC-html40">
|
6
|
+
|
7
|
+
<head>
|
8
|
+
<meta name=Title content="">
|
9
|
+
<meta name=Keywords content="">
|
10
|
+
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
|
11
|
+
<meta name=ProgId content=Word.Document>
|
12
|
+
<meta name=Generator content="Microsoft Word 15">
|
13
|
+
<meta name=Originator content="Microsoft Word 15">
|
14
|
+
<link id=Main-File rel=Main-File href="../{{ filename }}.html">
|
15
|
+
<!--[if gte mso 9]><xml>
|
16
|
+
<o:shapedefaults v:ext="edit" spidmax="2049"/>
|
17
|
+
</xml><![endif]-->
|
18
|
+
</head>
|
19
|
+
|
20
|
+
<body lang=EN link=blue vlink="#954F72">
|
21
|
+
|
22
|
+
<div style='mso-element:footnote-separator' id=fs>
|
23
|
+
|
24
|
+
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
|
25
|
+
normal'><span lang=EN-GB><span style='mso-special-character:footnote-separator'><![if !supportFootnotes]>
|
26
|
+
|
27
|
+
<hr align=left size=1 width="33%">
|
28
|
+
|
29
|
+
<![endif]></span></span></p>
|
30
|
+
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<div style='mso-element:footnote-continuation-separator' id=fcs>
|
34
|
+
|
35
|
+
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
|
36
|
+
normal'><span lang=EN-GB><span style='mso-special-character:footnote-continuation-separator'><![if !supportFootnotes]>
|
37
|
+
|
38
|
+
<hr align=left size=1>
|
39
|
+
|
40
|
+
<![endif]></span></span></p>
|
41
|
+
|
42
|
+
</div>
|
43
|
+
|
44
|
+
<div style='mso-element:endnote-separator' id=es>
|
45
|
+
|
46
|
+
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
|
47
|
+
normal'><span lang=EN-GB><span style='mso-special-character:footnote-separator'><![if !supportFootnotes]>
|
48
|
+
|
49
|
+
<hr align=left size=1 width="33%">
|
50
|
+
|
51
|
+
<![endif]></span></span></p>
|
52
|
+
|
53
|
+
</div>
|
54
|
+
|
55
|
+
<div style='mso-element:endnote-continuation-separator' id=ecs>
|
56
|
+
|
57
|
+
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
|
58
|
+
normal'><span lang=EN-GB><span style='mso-special-character:footnote-continuation-separator'><![if !supportFootnotes]>
|
59
|
+
|
60
|
+
<hr align=left size=1>
|
61
|
+
|
62
|
+
<![endif]></span></span></p>
|
63
|
+
|
64
|
+
</div>
|
65
|
+
|
66
|
+
<div style='mso-element:header' id=eh1>
|
67
|
+
|
68
|
+
<p class=MsoHeader align=center style='text-align:center;line-height:12.0pt;
|
69
|
+
mso-line-height-rule:exactly'></p>
|
70
|
+
|
71
|
+
</div>
|
72
|
+
|
73
|
+
<div style='mso-element:header' id=h1>
|
74
|
+
|
75
|
+
<p class=MsoHeader align=center style='text-align:center;line-height:12.0pt;
|
76
|
+
mso-line-height-rule:exactly'></span></p>
|
77
|
+
</div>
|
78
|
+
|
79
|
+
<div style='mso-element:footer' id=ef1>
|
80
|
+
|
81
|
+
<p class=MsoFooter style='margin-top:12.0pt;line-height:12.0pt;mso-line-height-rule:
|
82
|
+
exactly'></p>
|
83
|
+
|
84
|
+
</div>
|
85
|
+
|
86
|
+
<div style='mso-element:header' id=eh2>
|
87
|
+
<p class=MsoHeader align=center style='text-align:center;line-height:12.0pt;
|
88
|
+
mso-line-height-rule:exactly'><span lang=EN-GB><b>{{ formatted_docnumber }}</b></span></p>
|
89
|
+
|
90
|
+
<div style='mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;
|
91
|
+
mso-border-bottom-alt:solid windowtext .5pt;padding:0cm 0cm 1.0pt 0cm'>
|
92
|
+
|
93
|
+
<p class=MsoHeader align=center style='margin-bottom:12.0pt;text-align:center;
|
94
|
+
line-height:12.0pt;mso-line-height-rule:exactly;border:none;mso-border-bottom-alt:
|
95
|
+
solid windowtext .5pt;padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><span
|
96
|
+
lang=EN-US><o:p> </o:p></span></p>
|
97
|
+
|
98
|
+
</div>
|
99
|
+
</div>
|
100
|
+
|
101
|
+
<div style='mso-element:header' id=eh2l>
|
102
|
+
<p class=MsoHeaderLandscape align=center style='text-align:center;line-height:12.0pt;
|
103
|
+
mso-line-height-rule:exactly'><span lang=EN-GB><b>{{ formatted_docnumber }}</b></span></p>
|
104
|
+
|
105
|
+
<div style='mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;
|
106
|
+
mso-border-bottom-alt:solid windowtext .5pt;padding:0cm 0cm 1.0pt 0cm'>
|
107
|
+
|
108
|
+
<p class=MsoHeaderLandscape align=center style='margin-bottom:12.0pt;text-align:center;
|
109
|
+
line-height:12.0pt;mso-line-height-rule:exactly;border:none;mso-border-bottom-alt:
|
110
|
+
solid windowtext .5pt;padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><span
|
111
|
+
lang=EN-US><o:p> </o:p></span></p>
|
112
|
+
|
113
|
+
</div>
|
114
|
+
</div>
|
115
|
+
|
116
|
+
<div style='mso-element:header' id=h2>
|
117
|
+
|
118
|
+
<p class=MsoHeader align=center style='text-align:center;line-height:12.0pt;
|
119
|
+
mso-line-height-rule:exactly'><span lang=EN-GB><b>{{ formatted_docnumber }}</b></span></p>
|
120
|
+
|
121
|
+
<div style='mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;
|
122
|
+
mso-border-bottom-alt:solid windowtext .5pt;padding:0cm 0cm 1.0pt 0cm'>
|
123
|
+
|
124
|
+
<p class=MsoHeader align=center style='margin-bottom:12.0pt;text-align:center;
|
125
|
+
line-height:12.0pt;mso-line-height-rule:exactly;border:none;mso-border-bottom-alt:
|
126
|
+
solid windowtext .5pt;padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><span
|
127
|
+
lang=EN-US><o:p> </o:p></span></p>
|
128
|
+
|
129
|
+
</div>
|
130
|
+
</div>
|
131
|
+
|
132
|
+
<div style='mso-element:header' id=h2l>
|
133
|
+
|
134
|
+
<p class=MsoHeaderLandscape align=center style='text-align:center;line-height:12.0pt;
|
135
|
+
mso-line-height-rule:exactly'><span lang=EN-GB><b>{{ formatted_docnumber }}</b></span></p>
|
136
|
+
|
137
|
+
<div style='mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;
|
138
|
+
mso-border-bottom-alt:solid windowtext .5pt;padding:0cm 0cm 1.0pt 0cm'>
|
139
|
+
|
140
|
+
<p class=MsoHeaderLandscape align=center style='margin-bottom:12.0pt;text-align:center;
|
141
|
+
line-height:12.0pt;mso-line-height-rule:exactly;border:none;mso-border-bottom-alt:
|
142
|
+
solid windowtext .5pt;padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><span
|
143
|
+
lang=EN-US><o:p> </o:p></span></p>
|
144
|
+
|
145
|
+
</div>
|
146
|
+
</div>
|
147
|
+
|
148
|
+
|
149
|
+
<div style='mso-element:footer' id=ef2>
|
150
|
+
<p class=MsoFooter style='line-height:12.0pt;mso-line-height-rule:exactly'></p>
|
151
|
+
</div>
|
152
|
+
|
153
|
+
<div style='mso-element:footer' id=ef2l>
|
154
|
+
<p class=MsoFooterLandscape style='line-height:12.0pt;mso-line-height-rule:exactly'></p>
|
155
|
+
</div>
|
156
|
+
|
157
|
+
<div style='mso-element:footer' id=f2>
|
158
|
+
<p class=MsoFooter style='line-height:12.0pt'></p>
|
159
|
+
</div>
|
160
|
+
|
161
|
+
<div style='mso-element:footer' id=f2l>
|
162
|
+
<p class=MsoFooterLandscape style='line-height:12.0pt'></p>
|
163
|
+
</div>
|
164
|
+
|
165
|
+
<div style='mso-element:footer' id=ef3>
|
166
|
+
<p class=MsoFooter align="center" style='text-align:center;margin-top:12.0pt;line-height:12.0pt;mso-line-height-rule:
|
167
|
+
exactly'><!--[if supportFields]><b><span
|
168
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
169
|
+
style='mso-element:field-begin'></span><span
|
170
|
+
style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>
|
171
|
+
</span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span></b><![endif]--><b>
|
172
|
+
<span lang=EN-GB style='font-size:10.0pt;
|
173
|
+
mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>2</span></span></b><!--[if supportFields]><b>
|
174
|
+
<span lang=EN-GB style='font-size:10.0pt;
|
175
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
|
176
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
177
|
+
style='mso-tab-count:0'> </span></span></p>
|
178
|
+
</div>
|
179
|
+
|
180
|
+
<div style='mso-element:footer' id=ef3l>
|
181
|
+
<p class=MsoFooterLandscape align="center" style='text-align:center;margin-top:12.0pt;line-height:12.0pt;mso-line-height-rule:
|
182
|
+
exactly'><!--[if supportFields]><b><span
|
183
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
184
|
+
style='mso-element:field-begin'></span><span
|
185
|
+
style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>
|
186
|
+
</span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span></b><![endif]--><b>
|
187
|
+
<span lang=EN-GB style='font-size:10.0pt;
|
188
|
+
mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>2</span></span></b><!--[if supportFields]><b>
|
189
|
+
<span lang=EN-GB style='font-size:10.0pt;
|
190
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
|
191
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
192
|
+
style='mso-tab-count:0'> </span></span></p>
|
193
|
+
</div>
|
194
|
+
|
195
|
+
<div style='mso-element:footer' id=f3>
|
196
|
+
<p class=MsoFooter align="center" style='text-align:center;line-height:12.0pt'><span lang=EN-GB
|
197
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span style='mso-tab-count:0'> </span></span><!--[if supportFields]><b>
|
198
|
+
<span lang=EN-GB style='font-size:10.0pt;
|
199
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-begin'></span>
|
200
|
+
PAGE<span style='mso-spacerun:yes'> </span>\* MERGEFORMAT <span
|
201
|
+
style='mso-element:field-separator'></span></span></b><![endif]--><b>
|
202
|
+
<span lang=EN-GB style='font-size:10.0pt;
|
203
|
+
mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>3</span></span></b><!--[if supportFields]><b>
|
204
|
+
<span lang=EN-GB style='font-size:10.0pt;
|
205
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
|
206
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
|
207
|
+
</div>
|
208
|
+
|
209
|
+
<div style='mso-element:footer' id=f3l>
|
210
|
+
<p class=MsoFooterLandscape align="center" style='text-align:center;line-height:12.0pt'><span lang=EN-GB
|
211
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span style='mso-tab-count:0'> </span></span><!--[if supportFields]><b>
|
212
|
+
<span lang=EN-GB style='font-size:10.0pt;
|
213
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-begin'></span>
|
214
|
+
PAGE<span style='mso-spacerun:yes'> </span>\* MERGEFORMAT <span
|
215
|
+
style='mso-element:field-separator'></span></span></b><![endif]--><b>
|
216
|
+
<span lang=EN-GB style='font-size:10.0pt;
|
217
|
+
mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>3</span></span></b><!--[if supportFields]><b>
|
218
|
+
<span lang=EN-GB style='font-size:10.0pt;
|
219
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
|
220
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
|
221
|
+
</div>
|
222
|
+
|
223
|
+
</body>
|
224
|
+
|
225
|
+
</html>
|