From fabrice.bacchella at orange.fr Fri Apr 28 10:43:57 2017 Content-Type: multipart/mixed; boundary="===============5921866486626173985==" MIME-Version: 1.0 From: Fabrice Bacchella To: users at ovirt.org Subject: [ovirt-users] Ovirt 4, the missing python sdk Date: Fri, 28 Apr 2017 12:43:52 +0200 Message-ID: --===============5921866486626173985== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable --Apple-Mail=3D_F30DEBD8-5156-4EC2-BE2E-C421F2B60768 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=3Dus-ascii I have started to write a custom sdk/cli in python for Ovirt 4. It =3D provides helpers and wrapper for the rather raw level sdk4 provided. It's still a work in progress, but a big improvement from my previous =3D version, made for ovirt 3. It allows to write simple commands on shell : $ ./ovcmd host -n hostname maintenance $ ./ovcmd host -n hostname activate It also allows to do fine exports: $ ./ovcmd vm -n vmname export os type rhel_6x64 $ ./ovcmd capabilities -n 4.1 export cpu_types name Intel Conroe Family Intel Penryn Family Intel Nehalem Family Intel Westmere Family Intel SandyBridge Family Intel Haswell-noTSX Family Intel Haswell Family Intel Broadwell-noTSX Family Intel Broadwell Family Intel Skylake Family AMD Opteron G1 AMD Opteron G2 AMD Opteron G3 AMD Opteron G4 AMD Opteron G5 IBM POWER8 Or to get a display console on a mac os: $open $(./ovcmd vm -n vmname console ) It can be found at https://github.com/fbacchella/ovirtcmd/tree/sdk4 It's still works in progress, I need to finish to remove sdk3 code. Some example of object written to sdk4 can be found at: https://github.com/fbacchella/ovirtcmd/blob/sdk4/ovlib/vms/__init__.py=3D --Apple-Mail=3D_F30DEBD8-5156-4EC2-BE2E-C421F2B60768 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=3Dus-ascii I have started to write a custom sdk/cli in python for Ovirt = =3D 4. It provides helpers and wrapper for the rather raw level sdk4 =3D provided.

It's st= ill =3D a work in progress, but a big improvement from my previous version, made = =3D for ovirt 3.

It =3D allows to write simple commands on shell :

$ =3D ./ovcmd host -n hostname maintenance
$ ./ovcmd host =3D -n hostname activate

It also allows to do fine exports:

$ ./ovcmd vm -n vmname export = =3D os type
rhel_6x64

./ovcmd capabilities -n 4.1 export cpu_types =3D name
<= div=3D style=3D3D"font-family: Menlo; font-size: 11px; margin: 0px; line-height: = =3D normal;" class=3D3D"">Intel Conroe Family
Intel Penryn Family
Intel Nehalem Family
Intel Westmere Family
Intel SandyBridge =3D Family
Intel = =3D Haswell-noTSX Family
Intel = =3D Haswell Family
Intel = =3D Broadwell-noTSX Family
Intel = =3D Broadwell Family
Intel = =3D Skylake Family
AMD = =3D Opteron G1
AMD = =3D Opteron G2
AMD = =3D Opteron G3
AMD = =3D Opteron G4
AMD = =3D Opteron G5
IBM = =3D POWER8

Or to = =3D get a display console on a mac os:

$open = =3D $(./ovcmd vm -n vmname console )


It can= =3D be found at https://github.com/fbacchella/ovirtcmd/tree/sdk4
It's = =3D still works in progress, I need to finish to remove sdk3 code.

Some example of object written to sdk4 can be found =3D at:

=3D --Apple-Mail=3D_F30DEBD8-5156-4EC2-BE2E-C421F2B60768-- --===============5921866486626173985== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" Ci0tQXBwbGUtTWFpbD1fRjMwREVCRDgtNTE1Ni00RUMyLUJFMkUtQzQyMUYyQjYwNzY4CkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKQ29udGVudC1UeXBlOiB0ZXh0 L3BsYWluOwoJY2hhcnNldD11cy1hc2NpaQoKSSBoYXZlIHN0YXJ0ZWQgdG8gd3JpdGUgYSBjdXN0 b20gc2RrL2NsaSBpbiBweXRob24gZm9yIE92aXJ0IDQuIEl0ID0KcHJvdmlkZXMgaGVscGVycyBh bmQgd3JhcHBlciBmb3IgdGhlIHJhdGhlciByYXcgbGV2ZWwgc2RrNCBwcm92aWRlZC4KCkl0J3Mg c3RpbGwgYSB3b3JrIGluIHByb2dyZXNzLCBidXQgYSBiaWcgaW1wcm92ZW1lbnQgZnJvbSBteSBw cmV2aW91cyA9CnZlcnNpb24sIG1hZGUgZm9yIG92aXJ0IDMuCgpJdCBhbGxvd3MgdG8gd3JpdGUg c2ltcGxlIGNvbW1hbmRzIG9uIHNoZWxsIDoKCiQgLi9vdmNtZCBob3N0IC1uIGhvc3RuYW1lIG1h aW50ZW5hbmNlCiQgLi9vdmNtZCBob3N0IC1uIGhvc3RuYW1lIGFjdGl2YXRlCgpJdCBhbHNvIGFs bG93cyB0byBkbyBmaW5lIGV4cG9ydHM6CgokIC4vb3ZjbWQgdm0gLW4gdm1uYW1lIGV4cG9ydCBv cyB0eXBlCnJoZWxfNng2NAoKJCAuL292Y21kIGNhcGFiaWxpdGllcyAtbiA0LjEgZXhwb3J0IGNw dV90eXBlcyBuYW1lCkludGVsIENvbnJvZSBGYW1pbHkKSW50ZWwgUGVucnluIEZhbWlseQpJbnRl bCBOZWhhbGVtIEZhbWlseQpJbnRlbCBXZXN0bWVyZSBGYW1pbHkKSW50ZWwgU2FuZHlCcmlkZ2Ug RmFtaWx5CkludGVsIEhhc3dlbGwtbm9UU1ggRmFtaWx5CkludGVsIEhhc3dlbGwgRmFtaWx5Cklu dGVsIEJyb2Fkd2VsbC1ub1RTWCBGYW1pbHkKSW50ZWwgQnJvYWR3ZWxsIEZhbWlseQpJbnRlbCBT a3lsYWtlIEZhbWlseQpBTUQgT3B0ZXJvbiBHMQpBTUQgT3B0ZXJvbiBHMgpBTUQgT3B0ZXJvbiBH MwpBTUQgT3B0ZXJvbiBHNApBTUQgT3B0ZXJvbiBHNQpJQk0gUE9XRVI4CgpPciB0byBnZXQgYSBk aXNwbGF5IGNvbnNvbGUgb24gYSBtYWMgb3M6Cgokb3BlbiAkKC4vb3ZjbWQgdm0gLW4gdm1uYW1l IGNvbnNvbGUgKQoKCkl0IGNhbiBiZSBmb3VuZCBhdCBodHRwczovL2dpdGh1Yi5jb20vZmJhY2No ZWxsYS9vdmlydGNtZC90cmVlL3NkazQKSXQncyBzdGlsbCB3b3JrcyBpbiBwcm9ncmVzcywgSSBu ZWVkIHRvIGZpbmlzaCB0byByZW1vdmUgc2RrMyBjb2RlLgoKU29tZSBleGFtcGxlIG9mIG9iamVj dCB3cml0dGVuIHRvIHNkazQgY2FuIGJlIGZvdW5kIGF0OgoKaHR0cHM6Ly9naXRodWIuY29tL2Zi YWNjaGVsbGEvb3ZpcnRjbWQvYmxvYi9zZGs0L292bGliL3Ztcy9fX2luaXRfXy5weT0KCi0tQXBw bGUtTWFpbD1fRjMwREVCRDgtNTE1Ni00RUMyLUJFMkUtQzQyMUYyQjYwNzY4CkNvbnRlbnQtVHJh bnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7 CgljaGFyc2V0PXVzLWFzY2lpCgo8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PTNEIkNvbnRl bnQtVHlwZSIgY29udGVudD0zRCJ0ZXh0L2h0bWwgPQpjaGFyc2V0PTNEdXMtYXNjaWkiPjwvaGVh ZD48Ym9keSBzdHlsZT0zRCJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7ID0KLXdlYmtpdC1uYnNwLW1v ZGU6IHNwYWNlOyAtd2Via2l0LWxpbmUtYnJlYWs6IGFmdGVyLXdoaXRlLXNwYWNlOyIgPQpjbGFz cz0zRCIiPkkgaGF2ZSBzdGFydGVkIHRvIHdyaXRlIGEgY3VzdG9tIHNkay9jbGkgaW4gcHl0aG9u IGZvciBPdmlydCA9CjQuIEl0IHByb3ZpZGVzIGhlbHBlcnMgYW5kIHdyYXBwZXIgZm9yIHRoZSBy YXRoZXIgcmF3IGxldmVsIHNkazQgPQpwcm92aWRlZC48ZGl2IGNsYXNzPTNEIiI+PGJyIGNsYXNz PTNEIiI+PC9kaXY+PGRpdiBjbGFzcz0zRCIiPkl0J3Mgc3RpbGwgPQphIHdvcmsgaW4gcHJvZ3Jl c3MsIGJ1dCBhIGJpZyBpbXByb3ZlbWVudCBmcm9tIG15IHByZXZpb3VzIHZlcnNpb24sIG1hZGUg PQpmb3Igb3ZpcnQgMy48L2Rpdj48ZGl2IGNsYXNzPTNEIiI+PGJyIGNsYXNzPTNEIiI+PC9kaXY+ PGRpdiBjbGFzcz0zRCIiPkl0ID0KYWxsb3dzIHRvIHdyaXRlIHNpbXBsZSBjb21tYW5kcyBvbiBz aGVsbCA6PC9kaXY+PGRpdiBjbGFzcz0zRCIiPjxiciA9CmNsYXNzPTNEIiI+PC9kaXY+PGRpdiBj bGFzcz0zRCIiPjxkaXYgc3R5bGU9M0QibWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogPQoxMXB4OyBs aW5lLWhlaWdodDogbm9ybWFsOyBmb250LWZhbWlseTogTWVubG87IiBjbGFzcz0zRCIiPjxzcGFu ID0Kc3R5bGU9M0QiZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm8tY29tbW9uLWxpZ2F0dXJlcyIg Y2xhc3M9M0QiIj4kID0KLi9vdmNtZCBob3N0IC1uIGhvc3RuYW1lIG1haW50ZW5hbmNlPC9zcGFu PjwvZGl2PjwvZGl2PjxkaXYgPQpzdHlsZT0zRCJtYXJnaW46IDBweDsgZm9udC1zaXplOiAxMXB4 OyBsaW5lLWhlaWdodDogbm9ybWFsOyBmb250LWZhbWlseTogPQpNZW5sbzsiIGNsYXNzPTNEIiI+ PHNwYW4gc3R5bGU9M0QiZm9udC12YXJpYW50LWxpZ2F0dXJlczogPQpuby1jb21tb24tbGlnYXR1 cmVzIiBjbGFzcz0zRCIiPiQgLi9vdmNtZCBob3N0ID0KLW4mbmJzcDtob3N0bmFtZSZuYnNwO2Fj dGl2YXRlPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9M0QibWFyZ2luOiAwcHg7ID0KZm9udC1zaXpl OiAxMXB4OyBsaW5lLWhlaWdodDogbm9ybWFsOyBmb250LWZhbWlseTogTWVubG87IiA9CmNsYXNz PTNEIiI+PHNwYW4gc3R5bGU9M0QiZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm8tY29tbW9uLWxp Z2F0dXJlcyIgPQpjbGFzcz0zRCIiPjxiciBjbGFzcz0zRCIiPjwvc3Bhbj48L2Rpdj48ZGl2IHN0 eWxlPTNEIm1hcmdpbjogMHB4OyA9CmZvbnQtc2l6ZTogMTFweDsgbGluZS1oZWlnaHQ6IG5vcm1h bDsgZm9udC1mYW1pbHk6IE1lbmxvOyIgPQpjbGFzcz0zRCIiPjxzcGFuIHN0eWxlPTNEImZvbnQt dmFyaWFudC1saWdhdHVyZXM6IG5vLWNvbW1vbi1saWdhdHVyZXMiID0KY2xhc3M9M0QiIj5JdCBh bHNvIGFsbG93cyB0byBkbyBmaW5lIGV4cG9ydHM6PC9zcGFuPjwvZGl2PjxkaXYgPQpzdHlsZT0z RCJtYXJnaW46IDBweDsgZm9udC1zaXplOiAxMXB4OyBsaW5lLWhlaWdodDogbm9ybWFsOyBmb250 LWZhbWlseTogPQpNZW5sbzsiIGNsYXNzPTNEIiI+PHNwYW4gc3R5bGU9M0QiZm9udC12YXJpYW50 LWxpZ2F0dXJlczogPQpuby1jb21tb24tbGlnYXR1cmVzIiBjbGFzcz0zRCIiPjxiciBjbGFzcz0z RCIiPjwvc3Bhbj48L2Rpdj48ZGl2ID0Kc3R5bGU9M0QibWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTog MTFweDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsgZm9udC1mYW1pbHk6ID0KTWVubG87IiBjbGFzcz0z RCIiPjxzcGFuIHN0eWxlPTNEImZvbnQtdmFyaWFudC1saWdhdHVyZXM6ID0Kbm8tY29tbW9uLWxp Z2F0dXJlcyIgY2xhc3M9M0QiIj4kIC4vb3ZjbWQgdm0gLW4mbmJzcDt2bW5hbWUmbmJzcDtleHBv cnQgPQpvcyB0eXBlPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9M0QibWFyZ2luOiAwcHg7IGZvbnQt c2l6ZTogMTFweDsgPQpsaW5lLWhlaWdodDogbm9ybWFsOyBmb250LWZhbWlseTogTWVubG87IiBj bGFzcz0zRCIiPjxzcGFuID0Kc3R5bGU9M0QiZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm8tY29t bW9uLWxpZ2F0dXJlcyIgPQpjbGFzcz0zRCIiPnJoZWxfNng2NDwvc3Bhbj48L2Rpdj48ZGl2IHN0 eWxlPTNEIm1hcmdpbjogMHB4OyBmb250LXNpemU6ID0KMTFweDsgbGluZS1oZWlnaHQ6IG5vcm1h bDsgZm9udC1mYW1pbHk6IE1lbmxvOyIgY2xhc3M9M0QiIj48c3BhbiA9CnN0eWxlPTNEImZvbnQt dmFyaWFudC1saWdhdHVyZXM6IG5vLWNvbW1vbi1saWdhdHVyZXMiIGNsYXNzPTNEIiI+PGJyID0K Y2xhc3M9M0QiIj48L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0zRCJtYXJnaW46IDBweDsgZm9udC1z aXplOiAxMXB4OyA9CmxpbmUtaGVpZ2h0OiBub3JtYWw7IGZvbnQtZmFtaWx5OiBNZW5sbzsiIGNs YXNzPTNEIiI+PHNwYW4gPQpzdHlsZT0zRCJmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBuby1jb21t b24tbGlnYXR1cmVzIiA9CmNsYXNzPTNEIiI+JCZuYnNwOzwvc3Bhbj4uL292Y21kIGNhcGFiaWxp dGllcyAtbiA0LjEgZXhwb3J0IGNwdV90eXBlcyA9Cm5hbWU8L2Rpdj48ZGl2IHN0eWxlPTNEIm1h cmdpbjogMHB4OyBsaW5lLWhlaWdodDogbm9ybWFsOyIgY2xhc3M9M0QiIj48ZGl2PQogc3R5bGU9 M0QiZm9udC1mYW1pbHk6IE1lbmxvOyBmb250LXNpemU6IDExcHg7IG1hcmdpbjogMHB4OyBsaW5l LWhlaWdodDogPQpub3JtYWw7IiBjbGFzcz0zRCIiPjxzcGFuIHN0eWxlPTNEImZvbnQtdmFyaWFu dC1saWdhdHVyZXM6ID0Kbm8tY29tbW9uLWxpZ2F0dXJlcyIgY2xhc3M9M0QiIj5JbnRlbCBDb25y b2UgRmFtaWx5PC9zcGFuPjwvZGl2PjxkaXYgPQpzdHlsZT0zRCJmb250LWZhbWlseTogTWVubG87 IGZvbnQtc2l6ZTogMTFweDsgbWFyZ2luOiAwcHg7IGxpbmUtaGVpZ2h0OiA9Cm5vcm1hbDsiIGNs YXNzPTNEIiI+PHNwYW4gc3R5bGU9M0QiZm9udC12YXJpYW50LWxpZ2F0dXJlczogPQpuby1jb21t b24tbGlnYXR1cmVzIiBjbGFzcz0zRCIiPkludGVsIFBlbnJ5biBGYW1pbHk8L3NwYW4+PC9kaXY+ PGRpdiA9CnN0eWxlPTNEImZvbnQtZmFtaWx5OiBNZW5sbzsgZm9udC1zaXplOiAxMXB4OyBtYXJn aW46IDBweDsgbGluZS1oZWlnaHQ6ID0Kbm9ybWFsOyIgY2xhc3M9M0QiIj48c3BhbiBzdHlsZT0z RCJmb250LXZhcmlhbnQtbGlnYXR1cmVzOiA9Cm5vLWNvbW1vbi1saWdhdHVyZXMiIGNsYXNzPTNE IiI+SW50ZWwgTmVoYWxlbSBGYW1pbHk8L3NwYW4+PC9kaXY+PGRpdiA9CnN0eWxlPTNEImZvbnQt ZmFtaWx5OiBNZW5sbzsgZm9udC1zaXplOiAxMXB4OyBtYXJnaW46IDBweDsgbGluZS1oZWlnaHQ6 ID0Kbm9ybWFsOyIgY2xhc3M9M0QiIj48c3BhbiBzdHlsZT0zRCJmb250LXZhcmlhbnQtbGlnYXR1 cmVzOiA9Cm5vLWNvbW1vbi1saWdhdHVyZXMiIGNsYXNzPTNEIiI+SW50ZWwgV2VzdG1lcmUgRmFt aWx5PC9zcGFuPjwvZGl2PjxkaXYgPQpzdHlsZT0zRCJmb250LWZhbWlseTogTWVubG87IGZvbnQt c2l6ZTogMTFweDsgbWFyZ2luOiAwcHg7IGxpbmUtaGVpZ2h0OiA9Cm5vcm1hbDsiIGNsYXNzPTNE IiI+PHNwYW4gc3R5bGU9M0QiZm9udC12YXJpYW50LWxpZ2F0dXJlczogPQpuby1jb21tb24tbGln YXR1cmVzIiBjbGFzcz0zRCIiPkludGVsIFNhbmR5QnJpZGdlID0KRmFtaWx5PC9zcGFuPjwvZGl2 PjxkaXYgc3R5bGU9M0QiZm9udC1mYW1pbHk6IE1lbmxvOyBmb250LXNpemU6IDExcHg7ID0KbWFy Z2luOiAwcHg7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IiBjbGFzcz0zRCIiPjxzcGFuID0Kc3R5bGU9 M0QiZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm8tY29tbW9uLWxpZ2F0dXJlcyIgY2xhc3M9M0Qi Ij5JbnRlbCA9Ckhhc3dlbGwtbm9UU1ggRmFtaWx5PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9M0Qi Zm9udC1mYW1pbHk6IE1lbmxvOyA9CmZvbnQtc2l6ZTogMTFweDsgbWFyZ2luOiAwcHg7IGxpbmUt aGVpZ2h0OiBub3JtYWw7IiBjbGFzcz0zRCIiPjxzcGFuID0Kc3R5bGU9M0QiZm9udC12YXJpYW50 LWxpZ2F0dXJlczogbm8tY29tbW9uLWxpZ2F0dXJlcyIgY2xhc3M9M0QiIj5JbnRlbCA9Ckhhc3dl bGwgRmFtaWx5PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9M0QiZm9udC1mYW1pbHk6IE1lbmxvOyBm b250LXNpemU6ID0KMTFweDsgbWFyZ2luOiAwcHg7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IiBjbGFz cz0zRCIiPjxzcGFuID0Kc3R5bGU9M0QiZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm8tY29tbW9u LWxpZ2F0dXJlcyIgY2xhc3M9M0QiIj5JbnRlbCA9CkJyb2Fkd2VsbC1ub1RTWCBGYW1pbHk8L3Nw YW4+PC9kaXY+PGRpdiBzdHlsZT0zRCJmb250LWZhbWlseTogTWVubG87ID0KZm9udC1zaXplOiAx MXB4OyBtYXJnaW46IDBweDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiIGNsYXNzPTNEIiI+PHNwYW4g PQpzdHlsZT0zRCJmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBuby1jb21tb24tbGlnYXR1cmVzIiBj bGFzcz0zRCIiPkludGVsID0KQnJvYWR3ZWxsIEZhbWlseTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxl PTNEImZvbnQtZmFtaWx5OiBNZW5sbzsgPQpmb250LXNpemU6IDExcHg7IG1hcmdpbjogMHB4OyBs aW5lLWhlaWdodDogbm9ybWFsOyIgY2xhc3M9M0QiIj48c3BhbiA9CnN0eWxlPTNEImZvbnQtdmFy aWFudC1saWdhdHVyZXM6IG5vLWNvbW1vbi1saWdhdHVyZXMiIGNsYXNzPTNEIiI+SW50ZWwgPQpT a3lsYWtlIEZhbWlseTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPTNEImZvbnQtZmFtaWx5OiBNZW5s bzsgZm9udC1zaXplOiA9CjExcHg7IG1hcmdpbjogMHB4OyBsaW5lLWhlaWdodDogbm9ybWFsOyIg Y2xhc3M9M0QiIj48c3BhbiA9CnN0eWxlPTNEImZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vLWNv bW1vbi1saWdhdHVyZXMiIGNsYXNzPTNEIiI+QU1EID0KT3B0ZXJvbiBHMTwvc3Bhbj48L2Rpdj48 ZGl2IHN0eWxlPTNEImZvbnQtZmFtaWx5OiBNZW5sbzsgZm9udC1zaXplOiA9CjExcHg7IG1hcmdp bjogMHB4OyBsaW5lLWhlaWdodDogbm9ybWFsOyIgY2xhc3M9M0QiIj48c3BhbiA9CnN0eWxlPTNE ImZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vLWNvbW1vbi1saWdhdHVyZXMiIGNsYXNzPTNEIiI+ QU1EID0KT3B0ZXJvbiBHMjwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPTNEImZvbnQtZmFtaWx5OiBN ZW5sbzsgZm9udC1zaXplOiA9CjExcHg7IG1hcmdpbjogMHB4OyBsaW5lLWhlaWdodDogbm9ybWFs OyIgY2xhc3M9M0QiIj48c3BhbiA9CnN0eWxlPTNEImZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5v LWNvbW1vbi1saWdhdHVyZXMiIGNsYXNzPTNEIiI+QU1EID0KT3B0ZXJvbiBHMzwvc3Bhbj48L2Rp dj48ZGl2IHN0eWxlPTNEImZvbnQtZmFtaWx5OiBNZW5sbzsgZm9udC1zaXplOiA9CjExcHg7IG1h cmdpbjogMHB4OyBsaW5lLWhlaWdodDogbm9ybWFsOyIgY2xhc3M9M0QiIj48c3BhbiA9CnN0eWxl PTNEImZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vLWNvbW1vbi1saWdhdHVyZXMiIGNsYXNzPTNE IiI+QU1EID0KT3B0ZXJvbiBHNDwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPTNEImZvbnQtZmFtaWx5 OiBNZW5sbzsgZm9udC1zaXplOiA9CjExcHg7IG1hcmdpbjogMHB4OyBsaW5lLWhlaWdodDogbm9y bWFsOyIgY2xhc3M9M0QiIj48c3BhbiA9CnN0eWxlPTNEImZvbnQtdmFyaWFudC1saWdhdHVyZXM6 IG5vLWNvbW1vbi1saWdhdHVyZXMiIGNsYXNzPTNEIiI+QU1EID0KT3B0ZXJvbiBHNTwvc3Bhbj48 L2Rpdj48ZGl2IHN0eWxlPTNEImZvbnQtZmFtaWx5OiBNZW5sbzsgZm9udC1zaXplOiA9CjExcHg7 IG1hcmdpbjogMHB4OyBsaW5lLWhlaWdodDogbm9ybWFsOyIgY2xhc3M9M0QiIj48c3BhbiA9CnN0 eWxlPTNEImZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vLWNvbW1vbi1saWdhdHVyZXMiIGNsYXNz PTNEIiI+SUJNID0KUE9XRVI4PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9M0QiZm9udC1mYW1pbHk6 IE1lbmxvOyBmb250LXNpemU6IDExcHg7ID0KbWFyZ2luOiAwcHg7IGxpbmUtaGVpZ2h0OiBub3Jt YWw7IiBjbGFzcz0zRCIiPjxzcGFuID0Kc3R5bGU9M0QiZm9udC12YXJpYW50LWxpZ2F0dXJlczog bm8tY29tbW9uLWxpZ2F0dXJlcyIgY2xhc3M9M0QiIj48YnIgPQpjbGFzcz0zRCIiPjwvc3Bhbj48 L2Rpdj48ZGl2IHN0eWxlPTNEImZvbnQtZmFtaWx5OiBNZW5sbzsgZm9udC1zaXplOiA9CjExcHg7 IG1hcmdpbjogMHB4OyBsaW5lLWhlaWdodDogbm9ybWFsOyIgY2xhc3M9M0QiIj48c3BhbiA9CnN0 eWxlPTNEImZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vLWNvbW1vbi1saWdhdHVyZXMiIGNsYXNz PTNEIiI+T3IgdG8gPQpnZXQgYSBkaXNwbGF5IGNvbnNvbGUgb24gYSBtYWMgb3M6PC9zcGFuPjwv ZGl2PjxkaXYgc3R5bGU9M0QiZm9udC1mYW1pbHk6ID0KTWVubG87IGZvbnQtc2l6ZTogMTFweDsg bWFyZ2luOiAwcHg7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IiA9CmNsYXNzPTNEIiI+PHNwYW4gc3R5 bGU9M0QiZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm8tY29tbW9uLWxpZ2F0dXJlcyIgPQpjbGFz cz0zRCIiPjxiciBjbGFzcz0zRCIiPjwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPTNEImZvbnQtZmFt aWx5OiBNZW5sbzsgPQpmb250LXNpemU6IDExcHg7IG1hcmdpbjogMHB4OyBsaW5lLWhlaWdodDog bm9ybWFsOyIgY2xhc3M9M0QiIj48c3BhbiA9CnN0eWxlPTNEImZvbnQtdmFyaWFudC1saWdhdHVy ZXM6IG5vLWNvbW1vbi1saWdhdHVyZXMiIGNsYXNzPTNEIiI+JG9wZW4gPQokKC4vb3ZjbWQgdm0g LW4gdm1uYW1lIGNvbnNvbGUgKTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPTNEImZvbnQtZmFtaWx5 OiA9Ck1lbmxvOyBmb250LXNpemU6IDExcHg7IG1hcmdpbjogMHB4OyBsaW5lLWhlaWdodDogbm9y bWFsOyIgPQpjbGFzcz0zRCIiPjxzcGFuIHN0eWxlPTNEImZvbnQtdmFyaWFudC1saWdhdHVyZXM6 IG5vLWNvbW1vbi1saWdhdHVyZXMiID0KY2xhc3M9M0QiIj48YnIgY2xhc3M9M0QiIj48L3NwYW4+ PC9kaXY+PGRpdiBzdHlsZT0zRCJmb250LWZhbWlseTogTWVubG87ID0KZm9udC1zaXplOiAxMXB4 OyIgY2xhc3M9M0QiIj48c3BhbiBzdHlsZT0zRCJmb250LXZhcmlhbnQtbGlnYXR1cmVzOiA9Cm5v LWNvbW1vbi1saWdhdHVyZXMiIGNsYXNzPTNEIiI+PGJyIGNsYXNzPTNEIiI+PC9zcGFuPjwvZGl2 PjxkaXYgPQpzdHlsZT0zRCJmb250LWZhbWlseTogTWVubG87IGZvbnQtc2l6ZTogMTFweDsiIGNs YXNzPTNEIiI+PHNwYW4gPQpzdHlsZT0zRCJmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBuby1jb21t b24tbGlnYXR1cmVzIiBjbGFzcz0zRCIiPkl0IGNhbiA9CmJlIGZvdW5kIGF0Jm5ic3A7PGEgPQpo cmVmPTNEImh0dHBzOi8vZ2l0aHViLmNvbS9mYmFjY2hlbGxhL292aXJ0Y21kL3RyZWUvc2RrNCIg PQpjbGFzcz0zRCIiPmh0dHBzOi8vZ2l0aHViLmNvbS9mYmFjY2hlbGxhL292aXJ0Y21kL3RyZWUv c2RrNDwvYT48L3NwYW4+PC9kaT0Kdj48ZGl2IHN0eWxlPTNEImZvbnQtZmFtaWx5OiBNZW5sbzsg Zm9udC1zaXplOiAxMXB4OyIgY2xhc3M9M0QiIj5JdCdzID0Kc3RpbGwgd29ya3MgaW4gcHJvZ3Jl c3MsIEkgbmVlZCB0byBmaW5pc2ggdG8gcmVtb3ZlIHNkazMgY29kZS48L2Rpdj48ZGl2ID0Kc3R5 bGU9M0QiZm9udC1mYW1pbHk6IE1lbmxvOyBmb250LXNpemU6IDExcHg7IiBjbGFzcz0zRCIiPjxi ciA9CmNsYXNzPTNEIiI+PC9kaXY+PGRpdiBzdHlsZT0zRCJmb250LWZhbWlseTogTWVubG87IGZv bnQtc2l6ZTogMTFweDsiID0KY2xhc3M9M0QiIj5Tb21lIGV4YW1wbGUgb2Ygb2JqZWN0IHdyaXR0 ZW4gdG8gc2RrNCBjYW4gYmUgZm91bmQgPQphdDo8L2Rpdj48ZGl2IHN0eWxlPTNEImZvbnQtZmFt aWx5OiBNZW5sbzsgZm9udC1zaXplOiAxMXB4OyIgPQpjbGFzcz0zRCIiPjxiciBjbGFzcz0zRCIi PjwvZGl2PjxkaXYgY2xhc3M9M0QiIj48c3BhbiA9CnN0eWxlPTNEImZvbnQtdmFyaWFudC1saWdh dHVyZXM6IG5vLWNvbW1vbi1saWdhdHVyZXM7IGZvbnQtc2l6ZTogMTFweDsiID0KY2xhc3M9M0Qi Ij48Zm9udCBmYWNlPTNEIk1lbmxvIiBjbGFzcz0zRCIiPjxhID0KaHJlZj0zRCJodHRwczovL2dp dGh1Yi5jb20vZmJhY2NoZWxsYS9vdmlydGNtZC9ibG9iL3NkazQvb3ZsaWIvdm1zL19faW5pdF89 Cl8ucHkiID0KY2xhc3M9M0QiIj5odHRwczovL2dpdGh1Yi5jb20vZmJhY2NoZWxsYS9vdmlydGNt ZC9ibG9iL3NkazQvb3ZsaWIvdm1zL19faW49Cml0X18ucHk8L2E+PC9mb250Pjwvc3Bhbj48L2Rp dj48L2Rpdj48L2JvZHk+PC9odG1sPj0KCi0tQXBwbGUtTWFpbD1fRjMwREVCRDgtNTE1Ni00RUMy LUJFMkUtQzQyMUYyQjYwNzY4LS0K --===============5921866486626173985==--