From wlbleaboy at 126.com Thu Jul 25 22:20:52 2013 Content-Type: multipart/mixed; boundary="===============6585943705346437615==" MIME-Version: 1.0 From: wlbleaboy at 126 To: devel at ovirt.org Subject: [Engine-devel] get certificate with SDK Date: Fri, 26 Jul 2013 10:20:47 +0800 Message-ID: <000001ce89a6$be34a260$3a9de720$@com> --===============6585943705346437615== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable =C3=95=C3=A2=C3=8A=C3=87=C3=92=C2=BB=C2=B7=C3=A2 MIME =C5=BE=C3=B1=C3=8A=C5= =93=C2=B5=C3=84=C2=B6=C3=A0=C2=B2=C2=BF=C2=B7=C3=96=C3=93=C3=8A=C5=92=C3=BE= =C2=A1=C2=A3 ------=3D_NextPart_000_0001_01CE89E9.CC57E260 Content-Type: text/plain; charset=3D"gb2312" Content-Transfer-Encoding: quoted-printable Hi, all: I can got all the VM=3DA1=3DAFs information in https://{ovirt-engine}/api/vms/{id} , and I can=3D20 get mostly VM=3DA1=3DAFs informations via ovirt-engine-sdk, but I can=3DA1= =3DAFt =3D got via SDK. =3D20 This is a part of XML in https://{ovirt-engine}/api/vms/{id} =3D20 spice
192.168.1.241
5914 5915 1 false O=3D3Dthtfc.com,CN=3D3Dallinone241.thtfc.com false
=3D20 For example, I can port like vm.get_display().get_port() =3D20 but when I want CN, I tyied use vm.get_display().get_certificate().get_subject() it return =3D20 >>> vm.get_display().get_certificate().get_subject() Traceback (most recent call last): File "", line 1, in AttributeError: 'NoneType' object has no attribute 'get_subject' ------=3D_NextPart_000_0001_01CE89E9.CC57E260 Content-Type: text/html; charset=3D"gb2312" Content-Transfer-Encoding: quoted-printable

Hi, all:

         I can got all the VM=3DA1=3DAFs information in https://{ovirt-engin= =3D e}/api/vms/{id}, and I can

get mostly VM=3DA1=3DAFs =3D informations via ovirt-engine-sdk, but I can=3DA1=3DAFt got <certificate> via =3D SDK.

 

         This is a part of XML in https://{ovirt-engin= =3D e}/api/vms/{id}

         =3D <display>

<type>spice</type>

<address>192.168.1.241</address>

<port>5914</port>

<secure_port>5915</secure_port>

<monitors>1</monitors>

<allow_override>false</allow_override>

<certificate>

<subject>O=3D3Dthtfc.com,CN=3D3Dallinone241.thtfc.com&= lt;/=3D subject>

</certificate>

<smartcard_enabled>false</smartcard_enabled>

</display>

 

= For =3D example, I can port like

         =3D vm.get_display().get_port()

 

= but =3D when I want CN, I tyied use

         =3D vm.get_display().get_certificate().get_subject()

= it =3D return

 

>>> vm.get_display().get_certificate().get_subject()

Traceback (most recent call =3D last):

  File =3D "<stdin>", line 1, in <module>

AttributeError: 'NoneType' object = =3D has no attribute 'get_subject'

------=3D_NextPart_000_0001_01CE89E9.CC57E260-- --===============6585943705346437615== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" 1eLKx9K7t+IgTUlNRSC48cq9tcS24LK/t9bTyrz+oaMKCi0tLS0tLT1fTmV4dFBhcnRfMDAwXzAw MDFfMDFDRTg5RTkuQ0M1N0UyNjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOwoJY2hhcnNldD0i Z2IyMzEyIgpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlCgpIaSwg YWxsOgoKICAgICAgICAgSSBjYW4gZ290IGFsbCB0aGUgVk09QTE9QUZzIGluZm9ybWF0aW9uIGlu Cmh0dHBzOi8ve292aXJ0LWVuZ2luZX0vYXBpL3Ztcy97aWR9CjxodHRwczovLyU3Ym92aXJ0LWVu Z2luZSU3ZC9hcGkvdm1zLyU3YmlkJTdkPiAsIGFuZCBJIGNhbj0yMAoKZ2V0IG1vc3RseSBWTT1B MT1BRnMgaW5mb3JtYXRpb25zIHZpYSBvdmlydC1lbmdpbmUtc2RrLCBidXQgSSBjYW49QTE9QUZ0 ID0KZ290CjxjZXJ0aWZpY2F0ZT4gdmlhIFNESy4KCj0yMAoKICAgICAgICAgVGhpcyBpcyBhIHBh cnQgb2YgWE1MIGluIGh0dHBzOi8ve292aXJ0LWVuZ2luZX0vYXBpL3Ztcy97aWR9CjxodHRwczov LyU3Ym92aXJ0LWVuZ2luZSU3ZC9hcGkvdm1zLyU3YmlkJTdkPiA9MjAKCiAgICAgICAgIDxkaXNw bGF5PgoKPHR5cGU+c3BpY2U8L3R5cGU+Cgo8YWRkcmVzcz4xOTIuMTY4LjEuMjQxPC9hZGRyZXNz PgoKPHBvcnQ+NTkxNDwvcG9ydD4KCjxzZWN1cmVfcG9ydD41OTE1PC9zZWN1cmVfcG9ydD4KCjxt b25pdG9ycz4xPC9tb25pdG9ycz4KCjxhbGxvd19vdmVycmlkZT5mYWxzZTwvYWxsb3dfb3ZlcnJp ZGU+Cgo8Y2VydGlmaWNhdGU+Cgo8c3ViamVjdD5PPTNEdGh0ZmMuY29tLENOPTNEYWxsaW5vbmUy NDEudGh0ZmMuY29tPC9zdWJqZWN0PgoKPC9jZXJ0aWZpY2F0ZT4KCjxzbWFydGNhcmRfZW5hYmxl ZD5mYWxzZTwvc21hcnRjYXJkX2VuYWJsZWQ+Cgo8L2Rpc3BsYXk+Cgo9MjAKCkZvciBleGFtcGxl LCBJIGNhbiBwb3J0IGxpa2UKCiAgICAgICAgIHZtLmdldF9kaXNwbGF5KCkuZ2V0X3BvcnQoKQoK PTIwCgpidXQgd2hlbiBJIHdhbnQgQ04sIEkgdHlpZWQgdXNlCgogICAgICAgICB2bS5nZXRfZGlz cGxheSgpLmdldF9jZXJ0aWZpY2F0ZSgpLmdldF9zdWJqZWN0KCkKCml0IHJldHVybgoKPTIwCgo+ Pj4gdm0uZ2V0X2Rpc3BsYXkoKS5nZXRfY2VydGlmaWNhdGUoKS5nZXRfc3ViamVjdCgpCgpUcmFj ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CgogIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEs IGluIDxtb2R1bGU+CgpBdHRyaWJ1dGVFcnJvcjogJ05vbmVUeXBlJyBvYmplY3QgaGFzIG5vIGF0 dHJpYnV0ZSAnZ2V0X3N1YmplY3QnCgoKLS0tLS0tPV9OZXh0UGFydF8wMDBfMDAwMV8wMUNFODlF OS5DQzU3RTI2MApDb250ZW50LVR5cGU6IHRleHQvaHRtbDsKCWNoYXJzZXQ9ImdiMjMxMiIKQ29u dGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQoKPGh0bWwgeG1sbnM6dj0z RCJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnZtbCIgPQp4bWxuczpvPTNEInVybjpzY2hlbWFz LW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgPQp4bWxuczp3PTNEInVybjpzY2hlbWFzLW1p Y3Jvc29mdC1jb206b2ZmaWNlOndvcmQiID0KeG1sbnM6bT0zRCJodHRwOi8vc2NoZW1hcy5taWNy b3NvZnQuY29tL29mZmljZS8yMDA0LzEyL29tbWwiID0KeG1sbnM9M0QiaHR0cDovL3d3dy53My5v cmcvVFIvUkVDLWh0bWw0MCI+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0zRENvbnRlbnQtVHlw ZSBjb250ZW50PTNEInRleHQvaHRtbDsgY2hhcnNldD0zRGdiMjMxMiI+CjxtZXRhIG5hbWU9M0RH ZW5lcmF0b3IgY29udGVudD0zRCJNaWNyb3NvZnQgV29yZCAxMiAoZmlsdGVyZWQgbWVkaXVtKSI+ CjxzdHlsZT4KPCEtLQogLyogRm9udCBEZWZpbml0aW9ucyAqLwogQGZvbnQtZmFjZQoJe2ZvbnQt ZmFtaWx5Oj1DQj1DRT1DQz1FNTsKCXBhbm9zZS0xOjIgMSA2IDAgMyAxIDEgMSAxIDE7fQpAZm9u dC1mYWNlCgl7Zm9udC1mYW1pbHk6IkNhbWJyaWEgTWF0aCI7CglwYW5vc2UtMToyIDQgNSAzIDUg NCA2IDMgMiA0O30KQGZvbnQtZmFjZQoJe2ZvbnQtZmFtaWx5OkNhbGlicmk7CglwYW5vc2UtMToy IDE1IDUgMiAyIDIgNCAzIDIgNDt9CkBmb250LWZhY2UKCXtmb250LWZhbWlseToiXEA9Q0I9Q0U9 Q0M9RTUiOwoJcGFub3NlLTE6MiAxIDYgMCAzIDEgMSAxIDEgMTt9CiAvKiBTdHlsZSBEZWZpbml0 aW9ucyAqLwogcC5Nc29Ob3JtYWwsIGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbAoJe21hcmdp bjowY207CgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Cgl0ZXh0LWFsaWduOmp1c3RpZnk7Cgl0ZXh0 LWp1c3RpZnk6aW50ZXItaWRlb2dyYXBoOwoJZm9udC1zaXplOjEwLjVwdDsKCWZvbnQtZmFtaWx5 OiJDYWxpYnJpIiwic2Fucy1zZXJpZiI7fQphOmxpbmssIHNwYW4uTXNvSHlwZXJsaW5rCgl7bXNv LXN0eWxlLXByaW9yaXR5Ojk5OwoJY29sb3I6Ymx1ZTsKCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxp bmU7fQphOnZpc2l0ZWQsIHNwYW4uTXNvSHlwZXJsaW5rRm9sbG93ZWQKCXttc28tc3R5bGUtcHJp b3JpdHk6OTk7Cgljb2xvcjpwdXJwbGU7Cgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30Kc3Bh bi5FbWFpbFN0eWxlMTcKCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbC1jb21wb3NlOwoJZm9udC1m YW1pbHk6IkNhbGlicmkiLCJzYW5zLXNlcmlmIjsKCWNvbG9yOndpbmRvd3RleHQ7fQouTXNvQ2hw RGVmYXVsdAoJe21zby1zdHlsZS10eXBlOmV4cG9ydC1vbmx5O30KIC8qIFBhZ2UgRGVmaW5pdGlv bnMgKi8KIEBwYWdlIFNlY3Rpb24xCgl7c2l6ZTo2MTIuMHB0IDc5Mi4wcHQ7CgltYXJnaW46NzIu MHB0IDkwLjBwdCA3Mi4wcHQgOTAuMHB0O30KZGl2LlNlY3Rpb24xCgl7cGFnZTpTZWN0aW9uMTt9 Ci0tPgo8L3N0eWxlPgo8IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KIDxvOnNoYXBlZGVmYXVsdHMg djpleHQ9M0QiZWRpdCIgc3BpZG1heD0zRCIxMDI2IiAvPgo8L3htbD48IVtlbmRpZl0tLT48IS0t W2lmIGd0ZSBtc28gOV0+PHhtbD4KIDxvOnNoYXBlbGF5b3V0IHY6ZXh0PTNEImVkaXQiPgogIDxv OmlkbWFwIHY6ZXh0PTNEImVkaXQiIGRhdGE9M0QiMSIgLz4KIDwvbzpzaGFwZWxheW91dD48L3ht bD48IVtlbmRpZl0tLT4KPC9oZWFkPgoKPGJvZHkgbGFuZz0zRFpILUNOIGxpbms9M0RibHVlIHZs aW5rPTNEcHVycGxlID0Kc3R5bGU9M0QndGV4dC1qdXN0aWZ5LXRyaW06cHVuY3R1YXRpb24nPgoK PGRpdiBjbGFzcz0zRFNlY3Rpb24xPgoKPHAgY2xhc3M9M0RNc29Ob3JtYWw+PHNwYW4gbGFuZz0z REVOLVVTPkhpLCBhbGw6PG86cD48L286cD48L3NwYW4+PC9wPgoKPHAgY2xhc3M9M0RNc29Ob3Jt YWw+PHNwYW4gPQpsYW5nPTNERU4tVVM+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7IEkKY2FuIGdvdCBhbGwgdGhlIFZNPUExPUFGcyBpbmZvcm1hdGlvbiBp biA8YQpocmVmPTNEImh0dHBzOi8vJTdib3ZpcnQtZW5naW5lJTdkL2FwaS92bXMvJTdiaWQlN2Qi Pmh0dHBzOi8ve292aXJ0LWVuZ2luPQplfS9hcGkvdm1zL3tpZH08L2E+LAphbmQgSSBjYW4gPG86 cD48L286cD48L3NwYW4+PC9wPgoKPHAgY2xhc3M9M0RNc29Ob3JtYWw+PHNwYW4gbGFuZz0zREVO LVVTPmdldCBtb3N0bHkgVk09QTE9QUZzID0KaW5mb3JtYXRpb25zIHZpYQpvdmlydC1lbmdpbmUt c2RrLCBidXQgSSBjYW49QTE9QUZ0IGdvdCAmbHQ7Y2VydGlmaWNhdGUmZ3Q7IHZpYSA9ClNESy48 bzpwPjwvbzpwPjwvc3Bhbj48L3A+Cgo8cCBjbGFzcz0zRE1zb05vcm1hbD48c3BhbiBsYW5nPTNE RU4tVVM+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPgoKPHAgY2xhc3M9M0RNc29Ob3JtYWw+ PHNwYW4gPQpsYW5nPTNERU4tVVM+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7IFRoaXMKaXMgYSBwYXJ0IG9mIFhNTCBpbiA8YSA9CmhyZWY9M0QiaHR0cHM6 Ly8lN2JvdmlydC1lbmdpbmUlN2QvYXBpL3Ztcy8lN2JpZCU3ZCI+aHR0cHM6Ly97b3ZpcnQtZW5n aW49CmV9L2FwaS92bXMve2lkfTwvYT4KPG86cD48L286cD48L3NwYW4+PC9wPgoKPHAgY2xhc3M9 M0RNc29Ob3JtYWw+PHNwYW4gPQpsYW5nPTNERU4tVVM+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ID0KJmx0O2Rpc3BsYXkmZ3Q7PG86cD48L286cD48L3Nw YW4+PC9wPgoKPHAgY2xhc3M9M0RNc29Ob3JtYWwgPQpzdHlsZT0zRCdtYXJnaW4tbGVmdDoyMS4w cHQ7dGV4dC1pbmRlbnQ6MjEuMHB0Jz48c3BhbgpsYW5nPTNERU4tVVM+Jmx0O3R5cGUmZ3Q7c3Bp Y2UmbHQ7L3R5cGUmZ3Q7PG86cD48L286cD48L3NwYW4+PC9wPgoKPHAgY2xhc3M9M0RNc29Ob3Jt YWwgPQpzdHlsZT0zRCdtYXJnaW4tbGVmdDoyMS4wcHQ7dGV4dC1pbmRlbnQ6MjEuMHB0Jz48c3Bh bgpsYW5nPTNERU4tVVM+Jmx0O2FkZHJlc3MmZ3Q7MTkyLjE2OC4xLjI0MSZsdDsvYWRkcmVzcyZn dDs8bzpwPjwvbzpwPjwvc3BhPQpuPjwvcD4KCjxwIGNsYXNzPTNETXNvTm9ybWFsID0Kc3R5bGU9 M0QnbWFyZ2luLWxlZnQ6MjEuMHB0O3RleHQtaW5kZW50OjIxLjBwdCc+PHNwYW4KbGFuZz0zREVO LVVTPiZsdDtwb3J0Jmd0OzU5MTQmbHQ7L3BvcnQmZ3Q7PG86cD48L286cD48L3NwYW4+PC9wPgoK PHAgY2xhc3M9M0RNc29Ob3JtYWwgPQpzdHlsZT0zRCdtYXJnaW4tbGVmdDoyMS4wcHQ7dGV4dC1p bmRlbnQ6MjEuMHB0Jz48c3BhbgpsYW5nPTNERU4tVVM+Jmx0O3NlY3VyZV9wb3J0Jmd0OzU5MTUm bHQ7L3NlY3VyZV9wb3J0Jmd0OzxvOnA+PC9vOnA+PC9zcGFuPQo+PC9wPgoKPHAgY2xhc3M9M0RN c29Ob3JtYWwgPQpzdHlsZT0zRCdtYXJnaW4tbGVmdDoyMS4wcHQ7dGV4dC1pbmRlbnQ6MjEuMHB0 Jz48c3BhbgpsYW5nPTNERU4tVVM+Jmx0O21vbml0b3JzJmd0OzEmbHQ7L21vbml0b3JzJmd0Ozxv OnA+PC9vOnA+PC9zcGFuPjwvcD4KCjxwIGNsYXNzPTNETXNvTm9ybWFsID0Kc3R5bGU9M0QnbWFy Z2luLWxlZnQ6MjEuMHB0O3RleHQtaW5kZW50OjIxLjBwdCc+PHNwYW4KbGFuZz0zREVOLVVTPiZs dDthbGxvd19vdmVycmlkZSZndDtmYWxzZSZsdDsvYWxsb3dfb3ZlcnJpZGUmZ3Q7PG86cD48L286 cD0KPjwvc3Bhbj48L3A+Cgo8cCBjbGFzcz0zRE1zb05vcm1hbCA9CnN0eWxlPTNEJ21hcmdpbi1s ZWZ0OjIxLjBwdDt0ZXh0LWluZGVudDoyMS4wcHQnPjxiPjxzcGFuCmxhbmc9M0RFTi1VUz4mbHQ7 Y2VydGlmaWNhdGUmZ3Q7PG86cD48L286cD48L3NwYW4+PC9iPjwvcD4KCjxwIGNsYXNzPTNETXNv Tm9ybWFsID0Kc3R5bGU9M0QnbWFyZ2luLWxlZnQ6NDIuMHB0O3RleHQtaW5kZW50OjIxLjBwdCc+ PGI+PHNwYW4KbGFuZz0zREVOLVVTPiZsdDtzdWJqZWN0Jmd0O089M0R0aHRmYy5jb20sQ049M0Rh bGxpbm9uZTI0MS50aHRmYy5jb20mbHQ7Lz0Kc3ViamVjdCZndDs8bzpwPjwvbzpwPjwvc3Bhbj48 L2I+PC9wPgoKPHAgY2xhc3M9M0RNc29Ob3JtYWwgPQpzdHlsZT0zRCdtYXJnaW4tbGVmdDoyMS4w cHQ7dGV4dC1pbmRlbnQ6MjEuMHB0Jz48Yj48c3BhbgpsYW5nPTNERU4tVVM+Jmx0Oy9jZXJ0aWZp Y2F0ZSZndDs8bzpwPjwvbzpwPjwvc3Bhbj48L2I+PC9wPgoKPHAgY2xhc3M9M0RNc29Ob3JtYWwg PQpzdHlsZT0zRCdtYXJnaW4tbGVmdDoyMS4wcHQ7dGV4dC1pbmRlbnQ6MjEuMHB0Jz48c3Bhbgps YW5nPTNERU4tVVM+Jmx0O3NtYXJ0Y2FyZF9lbmFibGVkJmd0O2ZhbHNlJmx0Oy9zbWFydGNhcmRf ZW5hYmxlZCZndDs8bzpwPQo+PC9vOnA+PC9zcGFuPjwvcD4KCjxwIGNsYXNzPTNETXNvTm9ybWFs IHN0eWxlPTNEJ3RleHQtaW5kZW50OjIxLjBwdCc+PHNwYW4gPQpsYW5nPTNERU4tVVM+Jmx0Oy9k aXNwbGF5Jmd0OzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KCjxwIGNsYXNzPTNETXNvTm9ybWFsIHN0 eWxlPTNEJ3RleHQtaW5kZW50OjIxLjBwdCc+PHNwYW4gPQpsYW5nPTNERU4tVVM+PG86cD4mbmJz cDs8L286cD48L3NwYW4+PC9wPgoKPHAgY2xhc3M9M0RNc29Ob3JtYWwgc3R5bGU9M0QndGV4dC1p bmRlbnQ6MjEuMHB0Jz48c3BhbiBsYW5nPTNERU4tVVM+Rm9yID0KZXhhbXBsZSwgSSBjYW4KcG9y dCBsaWtlPG86cD48L286cD48L3NwYW4+PC9wPgoKPHAgY2xhc3M9M0RNc29Ob3JtYWwgc3R5bGU9 M0QndGV4dC1pbmRlbnQ6MjEuMHB0Jz48c3BhbiA9Cmxhbmc9M0RFTi1VUz4mbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPQp2bS5nZXRfZGlzcGxheSgpLmdl dF9wb3J0KCk8bzpwPjwvbzpwPjwvc3Bhbj48L3A+Cgo8cCBjbGFzcz0zRE1zb05vcm1hbCBzdHls ZT0zRCd0ZXh0LWluZGVudDoyMS4wcHQnPjxzcGFuID0KbGFuZz0zREVOLVVTPjxvOnA+Jm5ic3A7 PC9vOnA+PC9zcGFuPjwvcD4KCjxwIGNsYXNzPTNETXNvTm9ybWFsIHN0eWxlPTNEJ3RleHQtaW5k ZW50OjIxLjBwdCc+PHNwYW4gbGFuZz0zREVOLVVTPmJ1dCA9CndoZW4gSSB3YW50IENOLApJIHR5 aWVkIHVzZTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KCjxwIGNsYXNzPTNETXNvTm9ybWFsIHN0eWxl PTNEJ3RleHQtaW5kZW50OjIxLjBwdCc+PHNwYW4gPQpsYW5nPTNERU4tVVM+Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ID0Kdm0uZ2V0X2Rpc3BsYXkoKS5n ZXRfY2VydGlmaWNhdGUoKS5nZXRfc3ViamVjdCgpPG86cD48L286cD48L3NwYW4+PC9wPgoKPHAg Y2xhc3M9M0RNc29Ob3JtYWwgc3R5bGU9M0QndGV4dC1pbmRlbnQ6MjEuMHB0Jz48c3BhbiBsYW5n PTNERU4tVVM+aXQgPQpyZXR1cm48bzpwPjwvbzpwPjwvc3Bhbj48L3A+Cgo8cCBjbGFzcz0zRE1z b05vcm1hbCBzdHlsZT0zRCd0ZXh0LWluZGVudDoyMS4wcHQnPjxzcGFuID0KbGFuZz0zREVOLVVT PiZuYnNwOzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KCjxwIGNsYXNzPTNETXNvTm9ybWFsID0Kc3R5 bGU9M0QnbWFyZ2luLWxlZnQ6MTAuNXB0O21zby1wYXJhLW1hcmdpbi1sZWZ0OjEuMGdkOwp0ZXh0 LWluZGVudDoyMS4wcHQnPjxzcGFuIGxhbmc9M0RFTi1VUz4mZ3Q7Jmd0OyZndDsKdm0uZ2V0X2Rp c3BsYXkoKS5nZXRfY2VydGlmaWNhdGUoKS5nZXRfc3ViamVjdCgpPG86cD48L286cD48L3NwYW4+ PC9wPgoKPHAgY2xhc3M9M0RNc29Ob3JtYWwgPQpzdHlsZT0zRCdtYXJnaW4tbGVmdDoxMC41cHQ7 bXNvLXBhcmEtbWFyZ2luLWxlZnQ6MS4wZ2Q7CnRleHQtaW5kZW50OjIxLjBwdCc+PHNwYW4gbGFu Zz0zREVOLVVTPlRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCA9Cmxhc3QpOjxvOnA+PC9vOnA+ PC9zcGFuPjwvcD4KCjxwIGNsYXNzPTNETXNvTm9ybWFsID0Kc3R5bGU9M0QnbWFyZ2luLWxlZnQ6 MTAuNXB0O21zby1wYXJhLW1hcmdpbi1sZWZ0OjEuMGdkOwp0ZXh0LWluZGVudDoyMS4wcHQnPjxz cGFuIGxhbmc9M0RFTi1VUz4mbmJzcDsgRmlsZSA9CiZxdW90OyZsdDtzdGRpbiZndDsmcXVvdDss CmxpbmUgMSwgaW4gJmx0O21vZHVsZSZndDs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+Cgo8cCBjbGFz cz0zRE1zb05vcm1hbCA9CnN0eWxlPTNEJ21hcmdpbi1sZWZ0OjEwLjVwdDttc28tcGFyYS1tYXJn aW4tbGVmdDoxLjBnZDsKdGV4dC1pbmRlbnQ6MjEuMHB0Jz48c3BhbiBsYW5nPTNERU4tVVM+QXR0 cmlidXRlRXJyb3I6ICdOb25lVHlwZScgb2JqZWN0ID0KaGFzIG5vCmF0dHJpYnV0ZSAnZ2V0X3N1 YmplY3QnPG86cD48L286cD48L3NwYW4+PC9wPgoKPC9kaXY+Cgo8L2JvZHk+Cgo8L2h0bWw+Cgot LS0tLS09X05leHRQYXJ0XzAwMF8wMDAxXzAxQ0U4OUU5LkNDNTdFMjYwLS0KCgo= --===============6585943705346437615==--