From Alessandro.DeSalvo at roma1.infn.it Mon May 30 05:02:11 2016 Content-Type: multipart/mixed; boundary="===============2855739608500119901==" MIME-Version: 1.0 From: Alessandro De Salvo To: users at ovirt.org Subject: [ovirt-users] Using ceph volumes with ovirt Date: Mon, 30 May 2016 10:55:39 +0200 Message-ID: <9e1c7728-c143-0835-33ce-10e761a2d9b0@roma1.infn.it> --===============2855739608500119901== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable This is a multi-part message in MIME format. --------------C7D3C76DD1E6339049812313 Content-Type: text/plain; charset=3Diso-8859-15; format=3Dflowed Content-Transfer-Encoding: 7bit Hi, I'm happily using our research cluster in Italy via gluster, and now I'm = trying to hotplug a ceph disk on a VM of my cluster, without success. The ceph cluster is managed via openstack cinder and I can create = correctly the disk via ovirt (3.6.6.2-1 on CentOS 7.2). The problem comes when trying to hotplug, or start a machine with the = given disk attached. In the vdsm log of the host where the VM is running or starting I see = the following error: jsonrpc.Executor/5::INFO::2016-05-30 = 10:35:29,197::vm::2729::virt.vm::(hotplugDisk) = vmId=3D`c189472e-25d2-4df1-b089-590009856dd3`::Hotplug disk xml: "/> jsonrpc.Executor/5::ERROR::2016-05-30 = 10:35:29,198::vm::2737::virt.vm::(hotplugDisk) = vmId=3D`c189472e-25d2-4df1-b089-590009856dd3`::Hotplug failed Traceback (most recent call last): File "/usr/share/vdsm/virt/vm.py", line 2735, in hotplugDisk self._dom.attachDevice(driveXml) File "/usr/share/vdsm/virt/virdomain.py", line 68, in f ret =3D attr(*args, **kwargs) File "/usr/lib/python2.7/site-packages/vdsm/libvirtconnection.py", = line 124, in wrapper ret =3D f(*args, **kwargs) File "/usr/lib/python2.7/site-packages/vdsm/utils.py", line 1313, in = wrapper return func(inst, *args, **kwargs) File "/usr/lib64/python2.7/site-packages/libvirt.py", line 530, in = attachDevice if ret =3D=3D -1: raise libvirtError ('virDomainAttachDevice() failed'= , = dom=3Dself) libvirtError: XML error: invalid auth secret uuid In fact the uuid of the secret used by ovirt to hotplug seems to be the = ceph secret (masked here as ), while libvirt = expects the uuid of the libvirt secret, by looking at the instructions = http://docs.ceph.com/docs/jewel/rbd/libvirt/. Anyone got it working? Thanks, Alessandro --------------C7D3C76DD1E6339049812313 Content-Type: text/html; charset=3Diso-8859-15 Content-Transfer-Encoding: 8bit

Hi,
I'm happily using our research cluster in Italy via gluster, and now I'm trying to hotplug a ceph disk on a VM of my cluster, without success.
The ceph cluster is managed via openstack cinder and I can create correctly the disk via ovirt (3.6.6.2-1 on CentOS 7.2).
The problem comes when trying to hotplug, or start a machine with the given disk attached.
In the vdsm log of the host where the VM is running or starting I see the following error:


jsonrpc.Executor/5::INFO::2016-05-30 10:35:29,197::vm::2729::virt.vm::(hotplugDisk) vmId=3D`c189472e-25d2-4df1-b089-590009856dd3`::Hotplug disk xml: <disk address=3D"" device=3D"disk" snapshot=3D"no" type=3D"network= ">
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <source name=3D"images/volume-9134b639-c23c-4ff1-91ca-0462c80026d2" protocol=3D"rbd">
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 <host name=3D"141.108.X.Y1" port=3D"6789" transport=3D"tcp"/>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 <host name=3D"141.108.X.Y2" port=3D"6789" transport=3D"tcp"/>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </source>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <auth username=3D"cinde= r">
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 <secret type=3D"ceph" uuid=3D"<base 64 ceph secret>"/>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </auth>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <target bus=3D"virtio" = dev=3D"vdb"/>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <driver cache=3D"none" = error_policy=3D"stop" io=3D"threads" name=3D"qemu" type=3D"raw"/>
</disk>

jsonrpc.Executor/5::ERROR::2016-05-30 10:35:29,198::vm::2737::virt.vm::(hotplugDisk) vmId=3D`c189472e-25d2-4df1-b089-590009856dd3`::Hotplug failed
Traceback (most recent call last):
=C2=A0 File "/usr/share/vdsm/virt/vm.py", line 2735, in hotplugDisk
=C2=A0=C2=A0=C2=A0 self._dom.attachDevice(driveXml)
=C2=A0 File "/usr/share/vdsm/virt/virdomain.py", line 68, in f
=C2=A0=C2=A0=C2=A0 ret =3D attr(*args, **kwargs)
=C2=A0 File "/usr/lib/python2.7/site-packages/vdsm/libvirtconnection.py", line 124, in wrapper
=C2=A0=C2=A0=C2=A0 ret =3D f(*args, **kwargs)
=C2=A0 File "/usr/lib/python2.7/site-packages/vdsm/utils.py", line 1313, in wrapper
=C2=A0=C2=A0=C2=A0 return func(inst, *args, **kwargs)
=C2=A0 File "/usr/lib64/python2.7/site-packages/libvirt.py", line 530, in attachDevice
=C2=A0=C2=A0=C2=A0 if ret =3D=3D -1: raise libvirtError ('virDomainAt= tachDevice() failed', dom=3Dself)
libvirtError: XML error: invalid auth secret uuid



In fact the uuid of the secret used by ovirt to hotplug seems to be the ceph secret (masked here as <base 64 ceph secret>), while libvirt expects the uuid of the libvirt secret, by looking at the instructions http://docs.c= eph.com/docs/jewel/rbd/libvirt/.
Anyone got it working?
Thanks,

=C2=A0=C2=A0=C2=A0 Alessandro
--------------C7D3C76DD1E6339049812313-- --===============2855739608500119901== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" VGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC4KLS0tLS0tLS0tLS0t LS1DN0QzQzc2REQxRTYzMzkwNDk4MTIzMTMKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFy c2V0PWlzby04ODU5LTE1OyBmb3JtYXQ9Zmxvd2VkCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6 IDdiaXQKCkhpLApJJ20gaGFwcGlseSB1c2luZyBvdXIgcmVzZWFyY2ggY2x1c3RlciBpbiBJdGFs eSB2aWEgZ2x1c3RlciwgYW5kIG5vdyBJJ20gCnRyeWluZyB0byBob3RwbHVnIGEgY2VwaCBkaXNr IG9uIGEgVk0gb2YgbXkgY2x1c3Rlciwgd2l0aG91dCBzdWNjZXNzLgpUaGUgY2VwaCBjbHVzdGVy IGlzIG1hbmFnZWQgdmlhIG9wZW5zdGFjayBjaW5kZXIgYW5kIEkgY2FuIGNyZWF0ZSAKY29ycmVj dGx5IHRoZSBkaXNrIHZpYSBvdmlydCAoMy42LjYuMi0xIG9uIENlbnRPUyA3LjIpLgpUaGUgcHJv YmxlbSBjb21lcyB3aGVuIHRyeWluZyB0byBob3RwbHVnLCBvciBzdGFydCBhIG1hY2hpbmUgd2l0 aCB0aGUgCmdpdmVuIGRpc2sgYXR0YWNoZWQuCkluIHRoZSB2ZHNtIGxvZyBvZiB0aGUgaG9zdCB3 aGVyZSB0aGUgVk0gaXMgcnVubmluZyBvciBzdGFydGluZyBJIHNlZSAKdGhlIGZvbGxvd2luZyBl cnJvcjoKCgpqc29ucnBjLkV4ZWN1dG9yLzU6OklORk86OjIwMTYtMDUtMzAgCjEwOjM1OjI5LDE5 Nzo6dm06OjI3Mjk6OnZpcnQudm06Oihob3RwbHVnRGlzaykgCnZtSWQ9YGMxODk0NzJlLTI1ZDIt NGRmMS1iMDg5LTU5MDAwOTg1NmRkM2A6OkhvdHBsdWcgZGlzayB4bWw6IDxkaXNrIAphZGRyZXNz PSIiIGRldmljZT0iZGlzayIgc25hcHNob3Q9Im5vIiB0eXBlPSJuZXR3b3JrIj4KICAgICAgICAg PHNvdXJjZSAKbmFtZT0iaW1hZ2VzL3ZvbHVtZS05MTM0YjYzOS1jMjNjLTRmZjEtOTFjYS0wNDYy YzgwMDI2ZDIiIHByb3RvY29sPSJyYmQiPgogICAgICAgICAgICAgICAgIDxob3N0IG5hbWU9IjE0 MS4xMDguWC5ZMSIgcG9ydD0iNjc4OSIgdHJhbnNwb3J0PSJ0Y3AiLz4KICAgICAgICAgICAgICAg ICA8aG9zdCBuYW1lPSIxNDEuMTA4LlguWTIiIHBvcnQ9IjY3ODkiIHRyYW5zcG9ydD0idGNwIi8+ CiAgICAgICAgIDwvc291cmNlPgogICAgICAgICA8YXV0aCB1c2VybmFtZT0iY2luZGVyIj4KICAg ICAgICAgICAgICAgICA8c2VjcmV0IHR5cGU9ImNlcGgiIHV1aWQ9IjxiYXNlIDY0IGNlcGggc2Vj cmV0PiIvPgogICAgICAgICA8L2F1dGg+CiAgICAgICAgIDx0YXJnZXQgYnVzPSJ2aXJ0aW8iIGRl dj0idmRiIi8+CiAgICAgICAgIDxkcml2ZXIgY2FjaGU9Im5vbmUiIGVycm9yX3BvbGljeT0ic3Rv cCIgaW89InRocmVhZHMiIApuYW1lPSJxZW11IiB0eXBlPSJyYXciLz4KPC9kaXNrPgoKanNvbnJw Yy5FeGVjdXRvci81OjpFUlJPUjo6MjAxNi0wNS0zMCAKMTA6MzU6MjksMTk4Ojp2bTo6MjczNzo6 dmlydC52bTo6KGhvdHBsdWdEaXNrKSAKdm1JZD1gYzE4OTQ3MmUtMjVkMi00ZGYxLWIwODktNTkw MDA5ODU2ZGQzYDo6SG90cGx1ZyBmYWlsZWQKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogICBGaWxlICIvdXNyL3NoYXJlL3Zkc20vdmlydC92bS5weSIsIGxpbmUgMjczNSwgaW4g aG90cGx1Z0Rpc2sKICAgICBzZWxmLl9kb20uYXR0YWNoRGV2aWNlKGRyaXZlWG1sKQogICBGaWxl ICIvdXNyL3NoYXJlL3Zkc20vdmlydC92aXJkb21haW4ucHkiLCBsaW5lIDY4LCBpbiBmCiAgICAg cmV0ID0gYXR0cigqYXJncywgKiprd2FyZ3MpCiAgIEZpbGUgIi91c3IvbGliL3B5dGhvbjIuNy9z aXRlLXBhY2thZ2VzL3Zkc20vbGlidmlydGNvbm5lY3Rpb24ucHkiLCAKbGluZSAxMjQsIGluIHdy YXBwZXIKICAgICByZXQgPSBmKCphcmdzLCAqKmt3YXJncykKICAgRmlsZSAiL3Vzci9saWIvcHl0 aG9uMi43L3NpdGUtcGFja2FnZXMvdmRzbS91dGlscy5weSIsIGxpbmUgMTMxMywgaW4gCndyYXBw ZXIKICAgICByZXR1cm4gZnVuYyhpbnN0LCAqYXJncywgKiprd2FyZ3MpCiAgIEZpbGUgIi91c3Iv bGliNjQvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvbGlidmlydC5weSIsIGxpbmUgNTMwLCBpbiAK YXR0YWNoRGV2aWNlCiAgICAgaWYgcmV0ID09IC0xOiByYWlzZSBsaWJ2aXJ0RXJyb3IgKCd2aXJE b21haW5BdHRhY2hEZXZpY2UoKSBmYWlsZWQnLCAKZG9tPXNlbGYpCmxpYnZpcnRFcnJvcjogWE1M IGVycm9yOiBpbnZhbGlkIGF1dGggc2VjcmV0IHV1aWQKCgoKSW4gZmFjdCB0aGUgdXVpZCBvZiB0 aGUgc2VjcmV0IHVzZWQgYnkgb3ZpcnQgdG8gaG90cGx1ZyBzZWVtcyB0byBiZSB0aGUgCmNlcGgg c2VjcmV0IChtYXNrZWQgaGVyZSBhcyA8YmFzZSA2NCBjZXBoIHNlY3JldD4pLCB3aGlsZSBsaWJ2 aXJ0IApleHBlY3RzIHRoZSB1dWlkIG9mIHRoZSBsaWJ2aXJ0IHNlY3JldCwgYnkgbG9va2luZyBh dCB0aGUgaW5zdHJ1Y3Rpb25zIApodHRwOi8vZG9jcy5jZXBoLmNvbS9kb2NzL2pld2VsL3JiZC9s aWJ2aXJ0Ly4KQW55b25lIGdvdCBpdCB3b3JraW5nPwpUaGFua3MsCgogICAgIEFsZXNzYW5kcm8K Ci0tLS0tLS0tLS0tLS0tQzdEM0M3NkREMUU2MzM5MDQ5ODEyMzEzCkNvbnRlbnQtVHlwZTogdGV4 dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTE1CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhi aXQKCjxodG1sPgogIDxoZWFkPgoKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIg Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTE1Ij4KICA8L2hlYWQ+CiAgPGJv ZHkgYmdjb2xvcj0iI0ZGRkZGRiIgdGV4dD0iIzAwMDAwMCI+CiAgICA8cD4KICAgIDwvcD4KICAg IDxkaXYgY2xhc3M9Im1vei10ZXh0LWZsb3dlZCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAtbW96LWZp eGVkOwogICAgICBmb250LXNpemU6IDEycHg7IiBsYW5nPSJ4LXdlc3Rlcm4iPkhpLAogICAgICA8 YnI+CiAgICAgIEknbSBoYXBwaWx5IHVzaW5nIG91ciByZXNlYXJjaCBjbHVzdGVyIGluIEl0YWx5 IHZpYSBnbHVzdGVyLCBhbmQKICAgICAgbm93IEknbSB0cnlpbmcgdG8gaG90cGx1ZyBhIGNlcGgg ZGlzayBvbiBhIFZNIG9mIG15IGNsdXN0ZXIsCiAgICAgIHdpdGhvdXQgc3VjY2Vzcy4KICAgICAg PGJyPgogICAgICBUaGUgY2VwaCBjbHVzdGVyIGlzIG1hbmFnZWQgdmlhIG9wZW5zdGFjayBjaW5k ZXIgYW5kIEkgY2FuIGNyZWF0ZQogICAgICBjb3JyZWN0bHkgdGhlIGRpc2sgdmlhIG92aXJ0ICgz LjYuNi4yLTEgb24gQ2VudE9TIDcuMikuCiAgICAgIDxicj4KICAgICAgVGhlIHByb2JsZW0gY29t ZXMgd2hlbiB0cnlpbmcgdG8gaG90cGx1Zywgb3Igc3RhcnQgYSBtYWNoaW5lIHdpdGgKICAgICAg dGhlIGdpdmVuIGRpc2sgYXR0YWNoZWQuCiAgICAgIDxicj4KICAgICAgSW4gdGhlIHZkc20gbG9n IG9mIHRoZSBob3N0IHdoZXJlIHRoZSBWTSBpcyBydW5uaW5nIG9yIHN0YXJ0aW5nIEkKICAgICAg c2VlIHRoZSBmb2xsb3dpbmcgZXJyb3I6CiAgICAgIDxicj4KICAgICAgPGJyPgogICAgICA8YnI+ CiAgICAgIGpzb25ycGMuRXhlY3V0b3IvNTo6SU5GTzo6MjAxNi0wNS0zMAogICAgICAxMDozNToy OSwxOTc6OnZtOjoyNzI5Ojp2aXJ0LnZtOjooaG90cGx1Z0Rpc2spCiAgICAgIHZtSWQ9YGMxODk0 NzJlLTI1ZDItNGRmMS1iMDg5LTU5MDAwOTg1NmRkM2A6OkhvdHBsdWcgZGlzayB4bWw6CiAgICAg ICZsdDtkaXNrIGFkZHJlc3M9IiIgZGV2aWNlPSJkaXNrIiBzbmFwc2hvdD0ibm8iIHR5cGU9Im5l dHdvcmsiJmd0OwogICAgICA8YnI+CiAgICAgIKCgoKCgoKAgJmx0O3NvdXJjZQogICAgICBuYW1l PSJpbWFnZXMvdm9sdW1lLTkxMzRiNjM5LWMyM2MtNGZmMS05MWNhLTA0NjJjODAwMjZkMiIKICAg ICAgcHJvdG9jb2w9InJiZCImZ3Q7CiAgICAgIDxicj4KICAgICAgoKCgoKCgoKCgoKCgoKCgICZs dDtob3N0IG5hbWU9IjE0MS4xMDguWC5ZMSIgcG9ydD0iNjc4OSIKICAgICAgdHJhbnNwb3J0PSJ0 Y3AiLyZndDsKICAgICAgPGJyPgogICAgICCgoKCgoKCgoKCgoKCgoKAgJmx0O2hvc3QgbmFtZT0i MTQxLjEwOC5YLlkyIiBwb3J0PSI2Nzg5IgogICAgICB0cmFuc3BvcnQ9InRjcCIvJmd0OwogICAg ICA8YnI+CiAgICAgIKCgoKCgoKAgJmx0Oy9zb3VyY2UmZ3Q7CiAgICAgIDxicj4KICAgICAgoKCg oKCgoCAmbHQ7YXV0aCB1c2VybmFtZT0iY2luZGVyIiZndDsKICAgICAgPGJyPgogICAgICCgoKCg oKCgoKCgoKCgoKAgJmx0O3NlY3JldCB0eXBlPSJjZXBoIiB1dWlkPSImbHQ7YmFzZSA2NCBjZXBo CiAgICAgIHNlY3JldCZndDsiLyZndDsKICAgICAgPGJyPgogICAgICCgoKCgoKCgICZsdDsvYXV0 aCZndDsKICAgICAgPGJyPgogICAgICCgoKCgoKCgICZsdDt0YXJnZXQgYnVzPSJ2aXJ0aW8iIGRl dj0idmRiIi8mZ3Q7CiAgICAgIDxicj4KICAgICAgoKCgoKCgoCAmbHQ7ZHJpdmVyIGNhY2hlPSJu b25lIiBlcnJvcl9wb2xpY3k9InN0b3AiIGlvPSJ0aHJlYWRzIgogICAgICBuYW1lPSJxZW11IiB0 eXBlPSJyYXciLyZndDsKICAgICAgPGJyPgogICAgICAmbHQ7L2Rpc2smZ3Q7CiAgICAgIDxicj4K ICAgICAgPGJyPgogICAgICBqc29ucnBjLkV4ZWN1dG9yLzU6OkVSUk9SOjoyMDE2LTA1LTMwCiAg ICAgIDEwOjM1OjI5LDE5ODo6dm06OjI3Mzc6OnZpcnQudm06Oihob3RwbHVnRGlzaykKICAgICAg dm1JZD1gYzE4OTQ3MmUtMjVkMi00ZGYxLWIwODktNTkwMDA5ODU2ZGQzYDo6SG90cGx1ZyBmYWls ZWQKICAgICAgPGJyPgogICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAg ICAgIDxicj4KICAgICAgoCBGaWxlICIvdXNyL3NoYXJlL3Zkc20vdmlydC92bS5weSIsIGxpbmUg MjczNSwgaW4gaG90cGx1Z0Rpc2sKICAgICAgPGJyPgogICAgICCgoKAgc2VsZi5fZG9tLmF0dGFj aERldmljZShkcml2ZVhtbCkKICAgICAgPGJyPgogICAgICCgIEZpbGUgIi91c3Ivc2hhcmUvdmRz bS92aXJ0L3ZpcmRvbWFpbi5weSIsIGxpbmUgNjgsIGluIGYKICAgICAgPGJyPgogICAgICCgoKAg cmV0ID0gYXR0cigqYXJncywgKiprd2FyZ3MpCiAgICAgIDxicj4KICAgICAgoCBGaWxlCiAgICAg ICIvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy92ZHNtL2xpYnZpcnRjb25uZWN0aW9u LnB5IiwgbGluZQogICAgICAxMjQsIGluIHdyYXBwZXIKICAgICAgPGJyPgogICAgICCgoKAgcmV0 ID0gZigqYXJncywgKiprd2FyZ3MpCiAgICAgIDxicj4KICAgICAgoCBGaWxlICIvdXNyL2xpYi9w eXRob24yLjcvc2l0ZS1wYWNrYWdlcy92ZHNtL3V0aWxzLnB5IiwgbGluZQogICAgICAxMzEzLCBp biB3cmFwcGVyCiAgICAgIDxicj4KICAgICAgoKCgIHJldHVybiBmdW5jKGluc3QsICphcmdzLCAq Kmt3YXJncykKICAgICAgPGJyPgogICAgICCgIEZpbGUgIi91c3IvbGliNjQvcHl0aG9uMi43L3Np dGUtcGFja2FnZXMvbGlidmlydC5weSIsIGxpbmUgNTMwLAogICAgICBpbiBhdHRhY2hEZXZpY2UK ICAgICAgPGJyPgogICAgICCgoKAgaWYgcmV0ID09IC0xOiByYWlzZSBsaWJ2aXJ0RXJyb3IgKCd2 aXJEb21haW5BdHRhY2hEZXZpY2UoKQogICAgICBmYWlsZWQnLCBkb209c2VsZikKICAgICAgPGJy PgogICAgICBsaWJ2aXJ0RXJyb3I6IFhNTCBlcnJvcjogaW52YWxpZCBhdXRoIHNlY3JldCB1dWlk CiAgICAgIDxicj4KICAgICAgPGJyPgogICAgICA8YnI+CiAgICAgIDxicj4KICAgICAgSW4gZmFj dCB0aGUgdXVpZCBvZiB0aGUgc2VjcmV0IHVzZWQgYnkgb3ZpcnQgdG8gaG90cGx1ZyBzZWVtcyB0 bwogICAgICBiZSB0aGUgY2VwaCBzZWNyZXQgKG1hc2tlZCBoZXJlIGFzICZsdDtiYXNlIDY0IGNl cGggc2VjcmV0Jmd0OyksCiAgICAgIHdoaWxlIGxpYnZpcnQgZXhwZWN0cyB0aGUgdXVpZCBvZiB0 aGUgbGlidmlydCBzZWNyZXQsIGJ5IGxvb2tpbmcKICAgICAgYXQgdGhlIGluc3RydWN0aW9ucyA8 YSBjbGFzcz0ibW96LXR4dC1saW5rLWZyZWV0ZXh0IgogICAgICAgIGhyZWY9Imh0dHA6Ly9kb2Nz LmNlcGguY29tL2RvY3MvamV3ZWwvcmJkL2xpYnZpcnQvIj5odHRwOi8vZG9jcy5jZXBoLmNvbS9k b2NzL2pld2VsL3JiZC9saWJ2aXJ0LzwvYT4uCiAgICAgIDxicj4KICAgICAgQW55b25lIGdvdCBp dCB3b3JraW5nPwogICAgICA8YnI+CiAgICAgIFRoYW5rcywKICAgICAgPGJyPgogICAgICA8YnI+ CiAgICAgIKCgoCBBbGVzc2FuZHJvCiAgICAgIDxicj4KICAgIDwvZGl2PgogIDwvYm9keT4KPC9o dG1sPgoKLS0tLS0tLS0tLS0tLS1DN0QzQzc2REQxRTYzMzkwNDk4MTIzMTMtLQo= --===============2855739608500119901==--