[Zope-dev] [ZOPE 2.6 B1] Unicode/locale problems with OFS/dtml/properties.dtml

Arnar Lundesgaard arnar.lundesgaard@creuna.no
Thu, 26 Sep 2002 18:47:50 +0200


This is a multi-part message in MIME format.

------_=_NextPart_001_01C2657C.737AD4D8
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

> what do you mean by "inserted into the form"?

Put there by the dtml-method in a dtml-var statement.

> That the response contains a single byte where you properties=20
> contain character whose unicode value is greater than 127 ?=20

Yes

> how have you checked this? if so, thats a bug.

In a Hex editor...

The character '=E6' for instance is inserted as '0xE6' in the
returned HTML.=20

> > Secondly, the type attribute of all inputfields contain an extra
> > ':utf8:' that we assumed is a server directive to interpret the
> > contents as UTF-8. This apperently what crashes when storing the
> > second time.
>=20
> This is a directive to tell zope when you submit the form=20
> that your browser will have encoded the form response using=20
> utf-8. Browsers stupidly dont put this information anywhere=20
> more suitable.

Yeah, we figured this would be similar to ':method'.

> What browser are you using? is it correctly using utf8 for=20
> this page?  (for example, Mozilla has a View/Encoding menu=20
> that can override server-supplied encoding information)

We have so far tried Opera 6, IE 6 and Mozilla 1.1.

> > lib/python/OFS/dtml/properties.dtml contains the following=20
> > that seems to us to be debug code:
> >    <dtml-call "REQUEST.set('management_page_charset','UTF-8')">
> >    <dtml-var "u''">
> > and several ':utf8:' directives.
> >
> > When we removed those, it worked fine. Was this dtml-method=20
> > merged in mistakenly
>=20
> Those are supposed to be there.  The first inserts the=20
> text/html;charset=3Dutf-8  header into the management page.
> The second ensures that the dtml which computes this page=20
> content returns a unicode object.
>
> If the dtml returns a unicode object, then ZPublisher looks=20
> at the charset header to determine how to encode it.

This is DTML/ZOPE internal, right? I though the first two=20
letters to signify endianness 'FFFE' or 'FEFF', tells you=20
that this is UTF-8. The u'' string is not on the firs line.

> please put ib/python/OFS/dtml/properties.dtml back the way is=20
> was originally, then send me=20
>=20
> 1. which browser you are using

I am using Opera 6.02, but we are seeing it on all browsers.

> 2. a export file containing one object that demonstrates the problem.

It is on every property page in the whole site, but see the attached=20
.zexp of /standard_template.pt

> 3. a copy of the page obtained using wget or similar. =20
> (please dont use your browsers 'save' feature because=20
>  that sometimes performs transcoding)

I used wget...



 -- Arnar Lundesgaard

------_=_NextPart_001_01C2657C.737AD4D8
Content-Type: application/octet-stream;
	name="standard_template.pt.zexp"
Content-Transfer-Encoding: base64
Content-Description: standard_template.pt.zexp
Content-Disposition: attachment;
	filename="standard_template.pt.zexp"

WkVYUAAAAAAAABpAAAAAAAAAAoYoKFUnUHJvZHVjdHMuUGFnZVRlbXBsYXRlcy5ab3BlUGFnZVRl
bXBsYXRlcQFVEFpvcGVQYWdlVGVtcGxhdGVxAnRxA050Ln1xBChVBmV4cGFuZHEFSwBVAmlkcQZV
FHN0YW5kYXJkX3RlbXBsYXRlLnB0cQdVEl9fYWNfbG9jYWxfcm9sZXNfX3EIfXEJVRBTeXN0ZW0g
UHJvY2Vzc2VzcQpdcQtVBU93bmVycQxhc1ULX2JpbmRfbmFtZXNxDShjU2hhcmVkLkRDLlNjcmlw
dHMuQmluZGluZ3MKTmFtZUFzc2lnbm1lbnRzCnEOb3EPfXEQVQZfYXNnbnNxEX1xElUMbmFtZV9z
dWJwYXRocRNVEHRyYXZlcnNlX3N1YnBhdGhxFHNzYlUFX3RleHRxFVQaAQAAPGh0bWwgbWV0YWw6
ZGVmaW5lLW1hY3JvPSJwYWdlIj4KICA8aGVhZD4KICAgPG1ldGFsOmJsb2NrIGRlZmluZS1zbG90
PSJoZWFkIj4KICAgPHRpdGxlIHRhbDpjb250ZW50PSJ0ZW1wbGF0ZS90aXRsZSI+VGhlIFRpdGxl
PC90aXRsZT4KICAgPC9tZXRhbDpibG9jaz4KICA8L2hlYWQ+CiAgPGJvZHk+IAogICAgPGRpdiBt
ZXRhbDpkZWZpbmUtc2xvdD0iYm9keSI+CiAgICBUaGlzIGlzIHdoZXJlIHRoZSBwYWdlJ3MgYm9k
eSB0ZXh0IGdvZXMuCiAgICA8L2Rpdj4KICA8L2JvZHk+CjwvaHRtbD4KcRZVDGNvbnRlbnRfdHlw
ZXEXVQl0ZXh0L2h0bWxxGFUFdGl0bGVxGVUIdGVzdCDm+OVxGnUu/////////////////////w==

------_=_NextPart_001_01C2657C.737AD4D8
Content-Type: application/octet-stream;
	name="manage_propertiesForm.1"
Content-Transfer-Encoding: base64
Content-Description: manage_propertiesForm.1
Content-Disposition: attachment;
	filename="manage_propertiesForm.1"

Cgo8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25h
bC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL2xvb3NlLmR0ZCI+CjxodG1s
Pgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7Y2hhcnNldD1VVEYtOCI+Cgo8dGl0bGU+Wm9wZSDmPC90aXRsZT4KPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iL21hbmFnZV9wYWdlX3N0eWxlLmNzcyI+Cgo8
L2hlYWQ+Cjxib2R5IGJnY29sb3I9IiNmZmZmZmYiIGxpbms9IiMwMDAwOTkiIGFsaW5rPSIjMDAw
MDk5IiB2bGluaz0iIzAwMDA5OSI+CgoKCgoKCgo8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxz
cGFjaW5nPSIwIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KCjx0cj4KICA8dGQgYmdjb2xvcj0i
IzAwMDAwMCIgcm93c3Bhbj0iNSIgd2lkdGg9IjEwJSIgdmFsaWduPSJib3R0b20iIAogICBhbGln
bj0ibGVmdCI+Jm5ic3A7Jm5ic3A7PGltZyBzcmM9Ii9wXy9zcCIgCiAgIHdpZHRoPSIyIiBoZWln
aHQ9IjEiIGFsdD0iIiAvPgogIDwvdGQ+CiAgPHRkIGJnY29sb3I9IiMwMDAwMDAiIGNvbHNwYW49
IjI4Ij48aW1nIAogICBzcmM9Ii9wXy9zcCIgd2lkdGg9IjEiIGhlaWdodD0iNSIgYWx0PSIiIC8+
PC90ZD4KPC90cj4KCjx0cj4KICA8dGQgYmdjb2xvcj0iI2VmZWZlZiIgcm93c3Bhbj0iMiIgdmFs
aWduPSJ0b3AiIAogICBhbGlnbj0ibGVmdCI+PGltZyBzcmM9Ii9wXy9sdGFiIiB3aWR0aD0iNSIg
CiAgIGhlaWdodD0iNSIgYWx0PSIiIC8+PC90ZD4KICA8dGQgYmdjb2xvcj0iI2VmZWZlZiI+PGlt
ZyBzcmM9Ii9wXy9zcCIKIHdpZHRoPSIxIiBoZWlnaHQ9IjIiIGFsdD0iIiAvPjwvdGQ+CiAgPHRk
IGJnY29sb3I9IiNlZmVmZWYiIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIiAKICAgYWxpZ249InJp
Z2h0Ij48aW1nIHNyYz0iL3BfL3J0YWIiIHdpZHRoPSI1IiAKICAgaGVpZ2h0PSI1IiBhbHQ9IiIg
Lz48L3RkPgogIDx0ZCBiZ2NvbG9yPSIjMDAwMDAwIiByb3dzcGFuPSI0Ij48aW1nIHNyYz0iL3Bf
L3NwIgogd2lkdGg9IjIiIGhlaWdodD0iMSIgYWx0PSIiIC8+PC90ZD4KICA8dGQgYmdjb2xvcj0i
I2VmZWZlZiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiIAogICBhbGlnbj0ibGVmdCI+PGltZyBz
cmM9Ii9wXy9sdGFiIiB3aWR0aD0iNSIgCiAgIGhlaWdodD0iNSIgYWx0PSIiIC8+PC90ZD4KICA8
dGQgYmdjb2xvcj0iI2VmZWZlZiI+PGltZyBzcmM9Ii9wXy9zcCIKIHdpZHRoPSIxIiBoZWlnaHQ9
IjIiIGFsdD0iIiAvPjwvdGQ+CiAgPHRkIGJnY29sb3I9IiNlZmVmZWYiIHJvd3NwYW49IjIiIHZh
bGlnbj0idG9wIiAKICAgYWxpZ249InJpZ2h0Ij48aW1nIHNyYz0iL3BfL3J0YWIiIHdpZHRoPSI1
IiAKICAgaGVpZ2h0PSI1IiBhbHQ9IiIgLz48L3RkPgogIDx0ZCBiZ2NvbG9yPSIjMDAwMDAwIiBy
b3dzcGFuPSI0Ij48aW1nIHNyYz0iL3BfL3NwIgogd2lkdGg9IjIiIGhlaWdodD0iMSIgYWx0PSIi
IC8+PC90ZD4KICA8dGQgYmdjb2xvcj0iI2ZmZmZmZiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3Ai
IAogICBhbGlnbj0ibGVmdCI+PGltZyBzcmM9Ii9wXy9sdGFiIiB3aWR0aD0iNSIgCiAgIGhlaWdo
dD0iNSIgYWx0PSIiIC8+PC90ZD4KICA8dGQgYmdjb2xvcj0iI2ZmZmZmZiI+PGltZyBzcmM9Ii9w
Xy9zcCIKICAgd2lkdGg9IjEiIGhlaWdodD0iMiIgYWx0PSIiIC8+PC90ZD4KICA8dGQgYmdjb2xv
cj0iI2ZmZmZmZiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiIAogICBhbGlnbj0icmlnaHQiPjxp
bWcgc3JjPSIvcF8vcnRhYiIgd2lkdGg9IjUiIAogICBoZWlnaHQ9IjUiIGFsdD0iIiAvPjwvdGQ+
CiAgPHRkIGJnY29sb3I9IiMwMDAwMDAiIHJvd3NwYW49IjQiPjxpbWcgc3JjPSIvcF8vc3AiCiB3
aWR0aD0iMiIgaGVpZ2h0PSIxIiBhbHQ9IiIgLz48L3RkPgogIDx0ZCBiZ2NvbG9yPSIjZWZlZmVm
IiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCIgCiAgIGFsaWduPSJsZWZ0Ij48aW1nIHNyYz0iL3Bf
L2x0YWIiIHdpZHRoPSI1IiAKICAgaGVpZ2h0PSI1IiBhbHQ9IiIgLz48L3RkPgogIDx0ZCBiZ2Nv
bG9yPSIjZWZlZmVmIj48aW1nIHNyYz0iL3BfL3NwIgogd2lkdGg9IjEiIGhlaWdodD0iMiIgYWx0
PSIiIC8+PC90ZD4KICA8dGQgYmdjb2xvcj0iI2VmZWZlZiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0
b3AiIAogICBhbGlnbj0icmlnaHQiPjxpbWcgc3JjPSIvcF8vcnRhYiIgd2lkdGg9IjUiIAogICBo
ZWlnaHQ9IjUiIGFsdD0iIiAvPjwvdGQ+CiAgPHRkIGJnY29sb3I9IiMwMDAwMDAiIHJvd3NwYW49
IjQiPjxpbWcgc3JjPSIvcF8vc3AiCiB3aWR0aD0iMiIgaGVpZ2h0PSIxIiBhbHQ9IiIgLz48L3Rk
PgogIDx0ZCBiZ2NvbG9yPSIjZWZlZmVmIiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCIgCiAgIGFs
aWduPSJsZWZ0Ij48aW1nIHNyYz0iL3BfL2x0YWIiIHdpZHRoPSI1IiAKICAgaGVpZ2h0PSI1IiBh
bHQ9IiIgLz48L3RkPgogIDx0ZCBiZ2NvbG9yPSIjZWZlZmVmIj48aW1nIHNyYz0iL3BfL3NwIgog
d2lkdGg9IjEiIGhlaWdodD0iMiIgYWx0PSIiIC8+PC90ZD4KICA8dGQgYmdjb2xvcj0iI2VmZWZl
ZiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiIAogICBhbGlnbj0icmlnaHQiPjxpbWcgc3JjPSIv
cF8vcnRhYiIgd2lkdGg9IjUiIAogICBoZWlnaHQ9IjUiIGFsdD0iIiAvPjwvdGQ+CiAgPHRkIGJn
Y29sb3I9IiMwMDAwMDAiIHJvd3NwYW49IjQiPjxpbWcgc3JjPSIvcF8vc3AiCiB3aWR0aD0iMiIg
aGVpZ2h0PSIxIiBhbHQ9IiIgLz48L3RkPgogIDx0ZCBiZ2NvbG9yPSIjZWZlZmVmIiByb3dzcGFu
PSIyIiB2YWxpZ249InRvcCIgCiAgIGFsaWduPSJsZWZ0Ij48aW1nIHNyYz0iL3BfL2x0YWIiIHdp
ZHRoPSI1IiAKICAgaGVpZ2h0PSI1IiBhbHQ9IiIgLz48L3RkPgogIDx0ZCBiZ2NvbG9yPSIjZWZl
ZmVmIj48aW1nIHNyYz0iL3BfL3NwIgogd2lkdGg9IjEiIGhlaWdodD0iMiIgYWx0PSIiIC8+PC90
ZD4KICA8dGQgYmdjb2xvcj0iI2VmZWZlZiIgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiIAogICBh
bGlnbj0icmlnaHQiPjxpbWcgc3JjPSIvcF8vcnRhYiIgd2lkdGg9IjUiIAogICBoZWlnaHQ9IjUi
IGFsdD0iIiAvPjwvdGQ+CiAgPHRkIGJnY29sb3I9IiMwMDAwMDAiIHJvd3NwYW49IjQiPjxpbWcg
c3JjPSIvcF8vc3AiCiB3aWR0aD0iMiIgaGVpZ2h0PSIxIiBhbHQ9IiIgLz48L3RkPgogIDx0ZCBi
Z2NvbG9yPSIjZWZlZmVmIiByb3dzcGFuPSIyIiB2YWxpZ249InRvcCIgCiAgIGFsaWduPSJsZWZ0
Ij48aW1nIHNyYz0iL3BfL2x0YWIiIHdpZHRoPSI1IiAKICAgaGVpZ2h0PSI1IiBhbHQ9IiIgLz48
L3RkPgogIDx0ZCBiZ2NvbG9yPSIjZWZlZmVmIj48aW1nIHNyYz0iL3BfL3NwIgogd2lkdGg9IjEi
IGhlaWdodD0iMiIgYWx0PSIiIC8+PC90ZD4KICA8dGQgYmdjb2xvcj0iI2VmZWZlZiIgcm93c3Bh
bj0iMiIgdmFsaWduPSJ0b3AiIAogICBhbGlnbj0icmlnaHQiPjxpbWcgc3JjPSIvcF8vcnRhYiIg
d2lkdGg9IjUiIAogICBoZWlnaHQ9IjUiIGFsdD0iIiAvPjwvdGQ+CiAgPHRkIGJnY29sb3I9IiMw
MDAwMDAiIHJvd3NwYW49IjQiPjxpbWcgc3JjPSIvcF8vc3AiCiB3aWR0aD0iMiIgaGVpZ2h0PSIx
IiBhbHQ9IiIgLz48L3RkPgo8L3RyPgo8dHI+CiAgPHRkIGJnY29sb3I9IiNlZmVmZWYiIHZhbGln
bj0iYm90dG9tIiBjbGFzcz0idGFiLXNtYWxsIiAKICAgYWxpZ249ImNlbnRlciI+PGZvbnQgZmFj
ZT0iVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSIgCiAgIHNpemU9IjEiIGNvbG9yPSIjMDAwMDAw
Ij4mbmJzcDs8YSBocmVmPSJwdF9lZGl0Rm9ybSI+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDAwMDAw
OyI+PHN0cm9uZz5FZGl0PC9zdHJvbmc+PC9zcGFuPjwvYT4mbmJzcDs8L2ZvbnQ+PC90ZD4KICA8
dGQgYmdjb2xvcj0iI2VmZWZlZiIgdmFsaWduPSJib3R0b20iIGNsYXNzPSJ0YWItc21hbGwiIAog
ICBhbGlnbj0iY2VudGVyIj48Zm9udCBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhIiAK
ICAgc2l6ZT0iMSIgY29sb3I9IiMwMDAwMDAiPiZuYnNwOzxhIGhyZWY9IlpTY3JpcHRIVE1MX3Ry
eUZvcm0iPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsiPjxzdHJvbmc+VGVzdDwvc3Ryb25n
Pjwvc3Bhbj48L2E+Jm5ic3A7PC9mb250PjwvdGQ+CiAgPHRkIGJnY29sb3I9IiNmZmZmZmYiIHZh
bGlnbj0iYm90dG9tIiBjbGFzcz0idGFiLXNtYWxsIiAKICAgYWxpZ249ImNlbnRlciI+PGZvbnQg
ZmFjZT0iVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSIgCiAgIHNpemU9IjEiIGNvbG9yPSIjMDAw
MDAwIj4mbmJzcDs8YSBocmVmPSJtYW5hZ2VfcHJvcGVydGllc0Zvcm0iPjxzcGFuIHN0eWxlPSJj
b2xvcjogIzAwMDAwMDsiPjxzdHJvbmc+UHJvcGVydGllczwvc3Ryb25nPjwvc3Bhbj48L2E+Jm5i
c3A7PC9mb250PjwvdGQ+CiAgPHRkIGJnY29sb3I9IiNlZmVmZWYiIHZhbGlnbj0iYm90dG9tIiBj
bGFzcz0idGFiLXNtYWxsIiAKICAgYWxpZ249ImNlbnRlciI+PGZvbnQgZmFjZT0iVmVyZGFuYSwg
QXJpYWwsIEhlbHZldGljYSIgCiAgIHNpemU9IjEiIGNvbG9yPSIjMDAwMDAwIj4mbmJzcDs8YSBo
cmVmPSJtYW5hZ2VfY2hhbmdlX2hpc3RvcnlfcGFnZSI+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDAw
MDAwOyI+PHN0cm9uZz5IaXN0b3J5PC9zdHJvbmc+PC9zcGFuPjwvYT4mbmJzcDs8L2ZvbnQ+PC90
ZD4KICA8dGQgYmdjb2xvcj0iI2VmZWZlZiIgdmFsaWduPSJib3R0b20iIGNsYXNzPSJ0YWItc21h
bGwiIAogICBhbGlnbj0iY2VudGVyIj48Zm9udCBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0
aWNhIiAKICAgc2l6ZT0iMSIgY29sb3I9IiMwMDAwMDAiPiZuYnNwOzxhIGhyZWY9Im1hbmFnZV9V
bmRvRm9ybSI+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDAwMDAwOyI+PHN0cm9uZz5VbmRvPC9zdHJv
bmc+PC9zcGFuPjwvYT4mbmJzcDs8L2ZvbnQ+PC90ZD4KICA8dGQgYmdjb2xvcj0iI2VmZWZlZiIg
dmFsaWduPSJib3R0b20iIGNsYXNzPSJ0YWItc21hbGwiIAogICBhbGlnbj0iY2VudGVyIj48Zm9u
dCBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhIiAKICAgc2l6ZT0iMSIgY29sb3I9IiMw
MDAwMDAiPiZuYnNwOzxhIGhyZWY9Im1hbmFnZV9vd25lciI+PHNwYW4gc3R5bGU9ImNvbG9yOiAj
MDAwMDAwOyI+PHN0cm9uZz5Pd25lcnNoaXA8L3N0cm9uZz48L3NwYW4+PC9hPiZuYnNwOzwvZm9u
dD48L3RkPgogIDx0ZCBiZ2NvbG9yPSIjZWZlZmVmIiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InRh
Yi1zbWFsbCIgCiAgIGFsaWduPSJjZW50ZXIiPjxmb250IGZhY2U9IlZlcmRhbmEsIEFyaWFsLCBI
ZWx2ZXRpY2EiIAogICBzaXplPSIxIiBjb2xvcj0iIzAwMDAwMCI+Jm5ic3A7PGEgaHJlZj0ibWFu
YWdlX2FjY2VzcyI+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDAwMDAwOyI+PHN0cm9uZz5TZWN1cml0
eTwvc3Ryb25nPjwvc3Bhbj48L2E+Jm5ic3A7PC9mb250PjwvdGQ+CjwvdHI+Cjx0cj4KICA8dGQg
Y29sc3Bhbj0iMyIgYmdjb2xvcj0iI2VmZWZlZiI+PGltZyBzcmM9Ii9wXy9zcCIKIHdpZHRoPSIy
IiBoZWlnaHQ9IjEiIGFsdD0iIiAvPjwvdGQ+CiAgPHRkIGNvbHNwYW49IjMiIGJnY29sb3I9IiNl
ZmVmZWYiPjxpbWcgc3JjPSIvcF8vc3AiCiB3aWR0aD0iMiIgaGVpZ2h0PSIxIiBhbHQ9IiIgLz48
L3RkPgogIDx0ZCBjb2xzcGFuPSIzIiBiZ2NvbG9yPSIjZmZmZmZmIj48aW1nIHNyYz0iL3BfL3Nw
Igogd2lkdGg9IjIiIGhlaWdodD0iMSIgYWx0PSIiIC8+PC90ZD4KICA8dGQgY29sc3Bhbj0iMyIg
Ymdjb2xvcj0iI2VmZWZlZiI+PGltZyBzcmM9Ii9wXy9zcCIKIHdpZHRoPSIyIiBoZWlnaHQ9IjEi
IGFsdD0iIiAvPjwvdGQ+CiAgPHRkIGNvbHNwYW49IjMiIGJnY29sb3I9IiNlZmVmZWYiPjxpbWcg
c3JjPSIvcF8vc3AiCiB3aWR0aD0iMiIgaGVpZ2h0PSIxIiBhbHQ9IiIgLz48L3RkPgogIDx0ZCBj
b2xzcGFuPSIzIiBiZ2NvbG9yPSIjZWZlZmVmIj48aW1nIHNyYz0iL3BfL3NwIgogd2lkdGg9IjIi
IGhlaWdodD0iMSIgYWx0PSIiIC8+PC90ZD4KICA8dGQgY29sc3Bhbj0iMyIgYmdjb2xvcj0iI2Vm
ZWZlZiI+PGltZyBzcmM9Ii9wXy9zcCIKIHdpZHRoPSIyIiBoZWlnaHQ9IjEiIGFsdD0iIiAvPjwv
dGQ+CjwvdHI+Cjx0cj4KICA8dGQgY29sc3Bhbj0iMyIgYmdjb2xvcj0iI2MwYzBjMCI+PGltZyBz
cmM9Ii9wXy9zcCIKIHdpZHRoPSIyIiBoZWlnaHQ9IjEiIGFsdD0iIiAvPjwvdGQ+CiAgPHRkIGNv
bHNwYW49IjMiIGJnY29sb3I9IiNjMGMwYzAiPjxpbWcgc3JjPSIvcF8vc3AiCiB3aWR0aD0iMiIg
aGVpZ2h0PSIxIiBhbHQ9IiIgLz48L3RkPgogIDx0ZCBjb2xzcGFuPSIzIiBiZ2NvbG9yPSIjZmZm
ZmZmIj48aW1nIHNyYz0iL3BfL3NwIgogd2lkdGg9IjIiIGhlaWdodD0iMSIgYWx0PSIiIC8+PC90
ZD4KICA8dGQgY29sc3Bhbj0iMyIgYmdjb2xvcj0iI2MwYzBjMCI+PGltZyBzcmM9Ii9wXy9zcCIK
IHdpZHRoPSIyIiBoZWlnaHQ9IjEiIGFsdD0iIiAvPjwvdGQ+CiAgPHRkIGNvbHNwYW49IjMiIGJn
Y29sb3I9IiNjMGMwYzAiPjxpbWcgc3JjPSIvcF8vc3AiCiB3aWR0aD0iMiIgaGVpZ2h0PSIxIiBh
bHQ9IiIgLz48L3RkPgogIDx0ZCBjb2xzcGFuPSIzIiBiZ2NvbG9yPSIjYzBjMGMwIj48aW1nIHNy
Yz0iL3BfL3NwIgogd2lkdGg9IjIiIGhlaWdodD0iMSIgYWx0PSIiIC8+PC90ZD4KICA8dGQgY29s
c3Bhbj0iMyIgYmdjb2xvcj0iI2MwYzBjMCI+PGltZyBzcmM9Ii9wXy9zcCIKIHdpZHRoPSIyIiBo
ZWlnaHQ9IjEiIGFsdD0iIiAvPjwvdGQ+CjwvdHI+CjwvdGFibGU+CgogIDxiciAvPgogIDx0YWJs
ZSB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIyIiBib3JkZXI9IjAi
PgogIDx0ciBjbGFzcz0ibG9jYXRpb24tYmFyIj4KICAgIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWdu
PSJ0b3AiPgogICAgPGRpdiBjbGFzcz0ic3RkLXRleHQiPgogICAgICAgIDxpbWcgc3JjPSIvbWlz
Y18vUGFnZVRlbXBsYXRlcy96cHQuZ2lmIiAKICAgICAgICAgYWx0PSJQYWdlIFRlbXBsYXRlIiBi
b3JkZXI9IjAiIC8+CiAgICAgICAgPHN0cm9uZz4KICAgICAgICAgICAgICBQYWdlIFRlbXBsYXRl
CiAgICAgICAgICAgICAgYXQgPGEgaHJlZj0iL21hbmFnZV93b3Jrc3BhY2UiPiZuYnNwOy88L2E+
PGEgY2xhc3M9InN0cm9uZy1saW5rIiBocmVmPSIvc3RhbmRhcmRfdGVtcGxhdGUucHQvbWFuYWdl
X3dvcmtzcGFjZSI+c3RhbmRhcmRfdGVtcGxhdGUucHQ8L2E+CiAgICA8L3N0cm9uZz4KICAgICAg
ICAgICAgPC9kaXY+CiAgICA8L3RkPgogICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWdu
PSJ0b3AiPgogIDxkaXYgY2xhc3M9InN0ZC10ZXh0Ij4KICA8YSBocmVmPSJodHRwOi8vem9vdC5j
cmV1bmEubm86NDA4MC9IZWxwU3lzP2hlbHBfdXJsPS9Db250cm9sX1BhbmVsL1Byb2R1Y3RzL09G
U1AvSGVscC9Qcm9wZXJ0aWVzLnN0eCIgb25DbGljaz0id2luZG93Lm9wZW4oJ2h0dHA6Ly96b290
LmNyZXVuYS5ubzo0MDgwL0hlbHBTeXM/aGVscF91cmw9L0NvbnRyb2xfUGFuZWwvUHJvZHVjdHMv
T0ZTUC9IZWxwL1Byb3BlcnRpZXMuc3R4Jywnem9wZV9oZWxwJywnd2lkdGg9NjAwLGhlaWdodD01
MDAsbWVudWJhcj15ZXMsdG9vbGJhcj15ZXMsc2Nyb2xsYmFycz15ZXMscmVzaXphYmxlPXllcycp
OyByZXR1cm4gZmFsc2U7IiBvbk1vdXNlT3Zlcj0id2luZG93LnN0YXR1cz0nT3BlbiBvbmxpbmUg
aGVscCc7IHJldHVybiB0cnVlOyIgb25Nb3VzZU91dD0id2luZG93LnN0YXR1cz0nJzsgcmV0dXJu
IHRydWU7Ij5IZWxwITwvYT4KICA8L2Rpdj4KICA8L3RkPgogICAgICAgICAgPC90cj4KICA8L3Rh
YmxlPgoKCgoKCgo8Zm9ybSBhY3Rpb249Imh0dHA6Ly96b290LmNyZXVuYS5ubzo0MDgwL3N0YW5k
YXJkX3RlbXBsYXRlLnB0IiBtZXRob2Q9InBvc3QiPgo8cCBjbGFzcz0iZm9ybS1oZWxwIj4KUHJv
cGVydGllcyBhbGxvdyB5b3UgdG8gYXNzaWduIHNpbXBsZSB2YWx1ZXMgdG8gWm9wZSBvYmplY3Rz
LiBUbyBjaGFuZ2UgCnByb3BlcnR5IHZhbHVlcywgZWRpdCB0aGUgdmFsdWVzIGFuZCBjbGljayAm
cXVvdDtTYXZlIENoYW5nZXMmcXVvdDsuIAo8L3A+Cgo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNl
bGxwYWRkaW5nPSIyIiBib3JkZXI9IjAiPgo8dHIgY2xhc3M9Imxpc3QtaGVhZGVyIj4KICA8dGQg
YWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTYiPgogICZuYnNwOwogIDwvdGQ+CiAg
PHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CiAgPGRpdiBjbGFzcz0iZm9ybS1sYWJlbCI+
CiAgTmFtZQogIDwvZGl2PgogIDwvdGQ+CiAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+
CiAgPGRpdiBjbGFzcz0iZm9ybS1sYWJlbCI+CiAgVmFsdWUKICA8L2Rpdj4KICA8L3RkPgogIDx0
ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgogIDxkaXYgY2xhc3M9ImZvcm0tbGFiZWwiPgog
IFR5cGUKICA8L2Rpdj4KICA8L3RkPgo8L3RyPgoKPHRyPgogIDx0ZCBhbGlnbj0ibGVmdCIgdmFs
aWduPSJ0b3AiIHdpZHRoPSIxNiI+CiAgICAgIDwvdGQ+CiAgPHRkIGFsaWduPSJsZWZ0IiB2YWxp
Z249InRvcCI+CiAgPGRpdiBjbGFzcz0iZm9ybS1sYWJlbCI+CiAgPGxhYmVsIGZvcj0iY2ItdGl0
bGUiPnRpdGxlPC9sYWJlbD4KICA8L2Rpdj4KICA8L3RkPgogIDx0ZCBhbGlnbj0ibGVmdCIgdmFs
aWduPSJ0b3AiPgoKICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InRpdGxlOnV0Zjg6c3Ry
aW5nIiBzaXplPSIzNSIKICAgdmFsdWU9InRlc3Qg5vjlIj4KICAgICAgPC90ZD4KICA8dGQgYWxp
Z249ImxlZnQiIHZhbGlnbj0idG9wIj4KICA8ZGl2IGNsYXNzPSJsaXN0LWl0ZW0iPgogIHN0cmlu
ZwogIDwvZGl2PgogIDwvdGQ+CjwvdHI+Cjx0cj4KICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0i
dG9wIiB3aWR0aD0iMTYiPgogICAgICA8L3RkPgogIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0
b3AiPgogIDxkaXYgY2xhc3M9ImZvcm0tbGFiZWwiPgogIDxsYWJlbCBmb3I9ImNiLWNvbnRlbnRf
dHlwZSI+Y29udGVudF90eXBlPC9sYWJlbD4KICA8L2Rpdj4KICA8L3RkPgogIDx0ZCBhbGlnbj0i
bGVmdCIgdmFsaWduPSJ0b3AiPgoKICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNvbnRl
bnRfdHlwZTp1dGY4OnN0cmluZyIgc2l6ZT0iMzUiCiAgIHZhbHVlPSJ0ZXh0L2h0bWwiPgogICAg
ICA8L3RkPgogIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgogIDxkaXYgY2xhc3M9Imxp
c3QtaXRlbSI+CiAgc3RyaW5nCiAgPC9kaXY+CiAgPC90ZD4KPC90cj4KPHRyPgogIDx0ZCBhbGln
bj0ibGVmdCIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNiI+CiAgICAgIDwvdGQ+CiAgPHRkIGFsaWdu
PSJsZWZ0IiB2YWxpZ249InRvcCI+CiAgPGRpdiBjbGFzcz0iZm9ybS1sYWJlbCI+CiAgPGxhYmVs
IGZvcj0iY2ItZXhwYW5kIj5leHBhbmQ8L2xhYmVsPgogIDwvZGl2PgogIDwvdGQ+CiAgPHRkIGFs
aWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CgogICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5h
bWU9ImV4cGFuZDpib29sZWFuIiBzaXplPSIzNSIKICAgPgogICAgICA8L3RkPgogIDx0ZCBhbGln
bj0ibGVmdCIgdmFsaWduPSJ0b3AiPgogIDxkaXYgY2xhc3M9Imxpc3QtaXRlbSI+CiAgYm9vbGVh
bgogIDwvZGl2PgogIDwvdGQ+CjwvdHI+Cjx0cj4KICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90
ZD4KICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KICA8ZGl2IGNsYXNzPSJmb3JtLWVs
ZW1lbnQiPgogIDxpbnB1dCBuYW1lPSJtYW5hZ2VfZWRpdFByb3BlcnRpZXM6bWV0aG9kIiB0eXBl
PSJzdWJtaXQiIAogICBjbGFzcz0iZm9ybS1lbGVtZW50IiB2YWx1ZT0iU2F2ZSBDaGFuZ2VzIiAv
PgogIDxpbnB1dCBuYW1lPSJtYW5hZ2VfZGVsUHJvcGVydGllczptZXRob2QiIHR5cGU9InN1Ym1p
dCIgCiAgIGNsYXNzPSJmb3JtLWVsZW1lbnQiIHZhbHVlPSJEZWxldGUiIC8+CiAgPC9kaXY+CiAg
PC90ZD4KICA8dGQ+CiAgICA8L3RkPgogIDwvdGQ+CjwvdHI+CjwvdGFibGU+Cgo8L2Zvcm0+CgoK
PGZvcm0gYWN0aW9uPSJodHRwOi8vem9vdC5jcmV1bmEubm86NDA4MC9zdGFuZGFyZF90ZW1wbGF0
ZS5wdC9tYW5hZ2VfYWRkUHJvcGVydHkiIG1ldGhvZD0icG9zdCI+Cgo8cCBjbGFzcz0iZm9ybS1o
ZWxwIj4KVG8gYWRkIGEgbmV3IHByb3BlcnR5LCBlbnRlciBhIG5hbWUsIHR5cGUgYW5kIHZhbHVl
IGZvciB0aGUgbmV3IApwcm9wZXJ0eSBhbmQgY2xpY2sgdGhlICZxdW90O0FkZCZxdW90OyBidXR0
b24uIAo8L3A+Cgo8dGFibGU+Cjx0cj4KICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4K
ICA8ZGl2IGNsYXNzPSJmb3JtLWxhYmVsIj4KICBOYW1lCiAgPC9kaXY+CiAgPC90ZD4KICA8dGQg
YWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iaWQ6
dXRmODpzdHJpbmciIHNpemU9IjMwIiB2YWx1ZT0iIi8+CiAgPC90ZD4KICA8dGQgYWxpZ249Imxl
ZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0iZm9ybS1sYWJlbCI+CiAgVHlwZQogIDwvdGQ+CiAgPHRk
IGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CiAgPGRpdiBjbGFzcz0iZm9ybS1lbGVtZW50Ij4K
ICAgIDxzZWxlY3QgbmFtZT0idHlwZSI+CiAgICAgIDxvcHRpb24+Ym9vbGVhbjwvb3B0aW9uPgog
ICAgICA8b3B0aW9uPmRhdGU8L29wdGlvbj4KICAgICAgPG9wdGlvbj5mbG9hdDwvb3B0aW9uPgog
ICAgICA8b3B0aW9uPmludDwvb3B0aW9uPgogICAgICA8b3B0aW9uPmxpbmVzPC9vcHRpb24+CiAg
ICAgIDxvcHRpb24+bG9uZzwvb3B0aW9uPgogICAgICA8b3B0aW9uIHNlbGVjdGVkPnN0cmluZzwv
b3B0aW9uPgogICAgICA8b3B0aW9uPnVzdHJpbmc8L29wdGlvbj4KICAgICAgPG9wdGlvbj50ZXh0
PC9vcHRpb24+CiAgICAgIDxvcHRpb24+dG9rZW5zPC9vcHRpb24+CiAgICAgIDxvcHRpb24+dXRl
eHQ8L29wdGlvbj4KICAgICAgPG9wdGlvbj51dG9rZW5zPC9vcHRpb24+CiAgICAgIDxvcHRpb24+
dWxpbmVzPC9vcHRpb24+CiAgICAgIDxvcHRpb24+c2VsZWN0aW9uPC9vcHRpb24+CiAgICAgIDxv
cHRpb24+bXVsdGlwbGUgc2VsZWN0aW9uPC9vcHRpb24+CiAgICA8L3NlbGVjdD4KICA8L2Rpdj4K
ICA8L3RkPgo8L3RyPgo8dHI+CiAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CiAgPGRp
diBjbGFzcz0iZm9ybS1sYWJlbCI+CiAgVmFsdWUKICA8L2Rpdj4KICA8L3RkPgogIDx0ZCBjb2xz
cGFuPTIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KICA8aW5wdXQgdHlwZT0idGV4dCIgbmFt
ZT0idmFsdWU6dXRmODp1c3RyaW5nIiBzaXplPSIzMCIgLz4KICA8L3RkPgogIDx0ZCBhbGlnbj0i
cmlnaHQiIHZhbGlnbj0idG9wIj4KICA8ZGl2IGNsYXNzPSJmb3JtLWVsZW1lbnQiPgogIDxpbnB1
dCBjbGFzcz0iZm9ybS1lbGVtZW50IiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9
IiBBZGQgIiAvPgogIDwvZGl2PgogIDwvdGQ+CjwvdHI+CjwvdGFibGU+CjwvZm9ybT4KCjwvYm9k
eT4KPC9odG1sPgoKCgo=

------_=_NextPart_001_01C2657C.737AD4D8--