cropper

VIRTUAL HANDSHAKE AFRICA

  • Home
  • Discover
  • Gallery
  • Pricing
  • Contact Us
  • About Us
  • Oder Essential
  • Order Essential
  • Order Professional
{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4KICA8dGl0bGU+RGlzY292ZXIgRGlnaXRhbCBDYXJkcyB8IEhhbmRzaGFrZS5hZnJpY2EgLSBUaGUgRnV0dXJlIG9mIE5ldHdvcmtpbmc8L3RpdGxlPgogIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJEaXNjb3ZlciB3aHkgQWZyaWNhbiBlbnRyZXByZW5ldXJzIGFyZSBkaXRjaGluZyBwYXBlciBjYXJkcyBmb3JldmVyLiBTZWUgdGhlIG1hZ2ljIG9mIGRpZ2l0YWwgYnVzaW5lc3MgY2FyZHMgaW4gYWN0aW9uLiI+CiAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjp3Z2h0QDMwMDs0MDA7NjAwOzcwMDs4MDA7OTAwJmZhbWlseT1QbGF5ZmFpcitEaXNwbGF5OndnaHRANzAwOzkwMCZkaXNwbGF5PXN3YXAiIHJlbD0ic3R5bGVzaGVldCI+CiAgCiAgPHN0eWxlPgogICAgOnJvb3QgewogICAgICAtLW5hdnk6ICMwMDFGM0Y7CiAgICAgIC0tcm95YWwtYmx1ZTogIzAwNDdBQjsKICAgICAgLS1nb2xkOiAjRkZENzAwOwogICAgICAtLWdvbGQtd2FybTogI0ZGQzEwNzsKICAgICAgLS13aGl0ZTogI0ZGRkZGRjsKICAgICAgLS1saWdodC1iZzogI0Y3RjlGQzsKICAgICAgLS1ncmF5OiAjNkI3MjgwOwogICAgICAtLXRlYWw6ICMwMEM5QTc7CiAgICAgIC0tb3JhbmdlOiAjRkY2QjM1OwogICAgICAtLXB1cnBsZTogIzdCNjhFRTsKICAgICAgLS1yZWQ6ICNGRjZCNkI7CiAgICAgIC0tZ3JlZW46ICM1MUNGNjY7CiAgICB9CiAgICAKICAgICogeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH0KICAgIAogICAgYm9keSB7CiAgICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmOwogICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgYmFja2dyb3VuZDogdmFyKC0td2hpdGUpOwogICAgfQogICAgCiAgICBoMSwgaDIsIGgzIHsgCiAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOyAKICAgICAgZm9udC13ZWlnaHQ6IDkwMDsgCiAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7IAogICAgfQogICAgCiAgICAvKiBOQVZJR0FUSU9OICovCiAgICAubmF2IHsKICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICB0b3A6IDA7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDMxLCA2MywgMC45OCk7CiAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgei1pbmRleDogMTAwMDsKICAgICAgcGFkZGluZzogMXJlbSAycmVtOwogICAgICBib3gtc2hhZG93OiAwIDJweCAyMHB4IHJnYmEoMCwwLDAsMC4xKTsKICAgIH0KICAgIAogICAgLm5hdi1jb250YWluZXIgewogICAgICBtYXgtd2lkdGg6IDE0MDBweDsKICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIH0KICAgIAogICAgLmxvZ28gewogICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgfQogICAgCiAgICAubmF2LWxpbmtzIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZ2FwOiAycmVtOwogICAgICBsaXN0LXN0eWxlOiBub25lOwogICAgfQogICAgCiAgICAubmF2LWxpbmtzIGEgewogICAgICBjb2xvcjogdmFyKC0td2hpdGUpOwogICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuM3M7CiAgICB9CiAgICAKICAgIC5uYXYtbGlua3MgYTpob3ZlciB7IGNvbG9yOiB2YXIoLS1nb2xkKTsgfQogICAgCiAgICAvKiBIRVJPIC0gRU1PVElPTkFMIEhPT0sgKi8KICAgIC5oZXJvIHsKICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLW5hdnkpIDAlLCB2YXIoLS1wdXJwbGUpIDEwMCUpOwogICAgICBjb2xvcjogdmFyKC0td2hpdGUpOwogICAgICBwYWRkaW5nOiAxNDBweCAycmVtIDgwcHg7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIH0KICAgIAogICAgLyogRmxvYXRpbmcgcGFwZXJzIGFuaW1hdGlvbiAqLwogICAgLmZsb2F0aW5nLXBhcGVycyB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgdG9wOiAwOwogICAgICBsZWZ0OiAwOwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIH0KICAgIAogICAgLnBhcGVyIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB3aWR0aDogNjBweDsKICAgICAgaGVpZ2h0OiA4MHB4OwogICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS13aGl0ZSkgMCUsICNmMGYwZjAgMTAwJSk7CiAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgICAgYm94LXNoYWRvdzogMCA0cHggMTBweCByZ2JhKDAsMCwwLDAuMik7CiAgICAgIGFuaW1hdGlvbjogZmFsbCA4cyBsaW5lYXIgaW5maW5pdGU7CiAgICAgIG9wYWNpdHk6IDAuNzsKICAgIH0KICAgIAogICAgLnBhcGVyOjpiZWZvcmUgewogICAgICBjb250ZW50OiAn8J+ThCc7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiA1MCU7CiAgICAgIGxlZnQ6IDUwJTsKICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAgIGZvbnQtc2l6ZTogMnJlbTsKICAgIH0KICAgIAogICAgQGtleWZyYW1lcyBmYWxsIHsKICAgICAgMCUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwcHgpIHJvdGF0ZSgwZGVnKTsKICAgICAgICBvcGFjaXR5OiAwLjc7CiAgICAgIH0KICAgICAgNTAlIHsKICAgICAgICBvcGFjaXR5OiAwLjQ7CiAgICAgIH0KICAgICAgMTAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHZoKSByb3RhdGUoMzYwZGVnKTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICB9CiAgICB9CiAgICAKICAgIC5oZXJvLWNvbnRlbnQgewogICAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgei1pbmRleDogMjsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgfQogICAgCiAgICAuaGVyby1iYWRnZSB7CiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgcGFkZGluZzogMC43NXJlbSAycmVtOwogICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyMTUsMCwwLjIpOwogICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1nb2xkKTsKICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgIGxldHRlci1zcGFjaW5nOiAycHg7CiAgICAgIG1hcmdpbi1ib3R0b206IDJyZW07CiAgICAgIGFuaW1hdGlvbjogc2xpZGVEb3duIDAuOHMgZWFzZS1vdXQ7CiAgICB9CiAgICAKICAgIEBrZXlmcmFtZXMgc2xpZGVEb3duIHsKICAgICAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMzBweCk7IH0KICAgICAgdG8geyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0KICAgIH0KICAgIAogICAgLmhlcm8gaDEgewogICAgICBmb250LXNpemU6IGNsYW1wKDIuNXJlbSwgOHZ3LCA1LjVyZW0pOwogICAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07CiAgICAgIGFuaW1hdGlvbjogZmFkZUluVXAgMXMgZWFzZS1vdXQgMC4ycyBiYWNrd2FyZHM7CiAgICB9CiAgICAKICAgIC5oZXJvIGgxIC5oaWdobGlnaHQgewogICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgfQogICAgCiAgICAuaGVybyBoMSAudW5kZXJsaW5lIHsKICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIHRleHQtZGVjb3JhdGlvbi1jb2xvcjogdmFyKC0tcmVkKTsKICAgICAgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogNHB4OwogICAgfQogICAgCiAgICBAa2V5ZnJhbWVzIGZhZGVJblVwIHsKICAgICAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzMHB4KTsgfQogICAgICB0byB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfQogICAgfQogICAgCiAgICAuaGVyby1zdWJ0aXRsZSB7CiAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS4ycmVtLCAzdncsIDEuOHJlbSk7CiAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgIG1hcmdpbi1ib3R0b206IDNyZW07CiAgICAgIG9wYWNpdHk6IDAuOTU7CiAgICAgIG1heC13aWR0aDogOTAwcHg7CiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgIGFuaW1hdGlvbjogZmFkZUluVXAgMXMgZWFzZS1vdXQgMC40cyBiYWNrd2FyZHM7CiAgICB9CiAgICAKICAgIC5zY3JvbGwtaW5kaWNhdG9yIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICBib3R0b206IDNyZW07CiAgICAgIGxlZnQ6IDUwJTsKICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgICBhbmltYXRpb246IGJvdW5jZSAycyBpbmZpbml0ZTsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICBmb250LXNpemU6IDNyZW07CiAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgIH0KICAgIAogICAgQGtleWZyYW1lcyBib3VuY2UgewogICAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKDApOyB9CiAgICAgIDUwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC0xNXB4KTsgfQogICAgfQogICAgCiAgICAvKiBUSEUgUEFQRVIgVFJBR0VEWSBTRUNUSU9OICovCiAgICAudHJhZ2VkeSB7CiAgICAgIHBhZGRpbmc6IDEyMHB4IDJyZW07CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHZhcigtLXdoaXRlKSAwJSwgdmFyKC0tbGlnaHQtYmcpIDEwMCUpOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB9CiAgICAKICAgIC50cmFnZWR5LWNvbnRhaW5lciB7CiAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICBtYXJnaW46IDAgYXV0bzsKICAgIH0KICAgIAogICAgLnNlY3Rpb24taGVhZGVyIHsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICBtYXJnaW4tYm90dG9tOiA1cmVtOwogICAgfQogICAgCiAgICAuc2VjdGlvbi1iYWRnZSB7CiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgcGFkZGluZzogMC41cmVtIDEuNXJlbTsKICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMTA3LDEwNywwLjEpOwogICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1yZWQpOwogICAgICBib3JkZXItcmFkaXVzOiA1MHB4OwogICAgICBmb250LXdlaWdodDogNzAwOwogICAgICBmb250LXNpemU6IDAuODVyZW07CiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgIGxldHRlci1zcGFjaW5nOiAxLjVweDsKICAgICAgY29sb3I6IHZhcigtLXJlZCk7CiAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTsKICAgIH0KICAgIAogICAgLnNlY3Rpb24taGVhZGVyIGgyIHsKICAgICAgZm9udC1zaXplOiBjbGFtcCgyLjVyZW0sIDZ2dywgNHJlbSk7CiAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTsKICAgIH0KICAgIAogICAgLnNlY3Rpb24tc3VidGl0bGUgewogICAgICBmb250LXNpemU6IDEuM3JlbTsKICAgICAgY29sb3I6IHZhcigtLWdyYXkpOwogICAgICBsaW5lLWhlaWdodDogMS43OwogICAgICBtYXgtd2lkdGg6IDcwMHB4OwogICAgICBtYXJnaW46IDAgYXV0bzsKICAgIH0KICAgIAogICAgLyogVHJhc2ggQ2FuIEFuaW1hdGlvbiAqLwogICAgLnRyYXNoLWRlbW8gewogICAgICBtYXgtd2lkdGg6IDYwMHB4OwogICAgICBtYXJnaW46IDRyZW0gYXV0bzsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB9CiAgICAKICAgIC50cmFzaC1jYW4gewogICAgICB3aWR0aDogMjAwcHg7CiAgICAgIGhlaWdodDogMjUwcHg7CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMyQzNFNTAgMCUsICMzNDQ5NUUgMTAwJSk7CiAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHggMTBweCAzMHB4IDMwcHg7CiAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIGJveC1zaGFkb3c6IDAgMjBweCA2MHB4IHJnYmEoMCwwLDAsMC4zKTsKICAgIH0KICAgIAogICAgLnRyYXNoLWNhbjo6YmVmb3JlIHsKICAgICAgY29udGVudDogJ/Cfl5HvuI8nOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogNTAlOwogICAgICBsZWZ0OiA1MCU7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgICBmb250LXNpemU6IDVyZW07CiAgICB9CiAgICAKICAgIC50cmFzaC1jYW46OmFmdGVyIHsKICAgICAgY29udGVudDogJzg4JSBPRiBQQVBFUiBDQVJEUyBFTkQgVVAgSEVSRSc7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgYm90dG9tOiAtNjBweDsKICAgICAgbGVmdDogNTAlOwogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7CiAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICBjb2xvcjogdmFyKC0tcmVkKTsKICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDsKICAgIH0KICAgIAogICAgLmZhbGxpbmctY2FyZCB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAtMTAwcHg7CiAgICAgIGxlZnQ6IDUwJTsKICAgICAgd2lkdGg6IDEwMHB4OwogICAgICBoZWlnaHQ6IDYwcHg7CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXdoaXRlKTsKICAgICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgICBib3gtc2hhZG93OiAwIDRweCAyMHB4IHJnYmEoMCwwLDAsMC4yKTsKICAgICAgYW5pbWF0aW9uOiBmYWxsSW50b1RyYXNoIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgfQogICAgCiAgICBAa2V5ZnJhbWVzIGZhbGxJbnRvVHJhc2ggewogICAgICAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCkgcm90YXRlKDBkZWcpOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KICAgICAgNzAlIHsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIH0KICAgICAgMTAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMzUwcHgpIHJvdGF0ZSgxODBkZWcpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgIH0KICAgIH0KICAgIAogICAgLyogUGFpbiBQb2ludHMgR3JpZCAqLwogICAgLnBhaW4tZ3JpZCB7CiAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjgwcHgsIDFmcikpOwogICAgICBnYXA6IDJyZW07CiAgICAgIG1hcmdpbi10b3A6IDVyZW07CiAgICB9CiAgICAKICAgIC5wYWluLWNhcmQgewogICAgICBiYWNrZ3JvdW5kOiB2YXIoLS13aGl0ZSk7CiAgICAgIHBhZGRpbmc6IDIuNXJlbTsKICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDQwcHggcmdiYSgwLDAsMCwwLjA4KTsKICAgICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCB2YXIoLS1yZWQpOwogICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zczsKICAgIH0KICAgIAogICAgLnBhaW4tY2FyZDpob3ZlciB7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7CiAgICAgIGJveC1zaGFkb3c6IDAgMjBweCA2MHB4IHJnYmEoMCwwLDAsMC4xNSk7CiAgICB9CiAgICAKICAgIC5wYWluLWljb24gewogICAgICBmb250LXNpemU6IDNyZW07CiAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQogICAgCiAgICAucGFpbi1jYXJkIGgzIHsKICAgICAgZm9udC1zaXplOiAxLjVyZW07CiAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICAgIGNvbG9yOiB2YXIoLS1yZWQpOwogICAgfQogICAgCiAgICAucGFpbi1jYXJkIHAgewogICAgICBjb2xvcjogdmFyKC0tZ3JheSk7CiAgICAgIGxpbmUtaGVpZ2h0OiAxLjc7CiAgICAgIGZvbnQtc2l6ZTogMS4wNXJlbTsKICAgIH0KICAgIAogICAgLyogVFJBTlNGT1JNQVRJT04gU0VDVElPTiAqLwogICAgLnRyYW5zZm9ybWF0aW9uIHsKICAgICAgcGFkZGluZzogMTIwcHggMnJlbTsKICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tdGVhbCkgMCUsIHZhcigtLWdyZWVuKSAxMDAlKTsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQogICAgCiAgICAudHJhbnNmb3JtYXRpb246OmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICcnOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHdpZHRoOiA1MDBweDsKICAgICAgaGVpZ2h0OiA1MDBweDsKICAgICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiYSgyNTUsMjU1LDI1NSwwLjIpIDAlLCB0cmFuc3BhcmVudCA3MCUpOwogICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgIHRvcDogLTI1MHB4OwogICAgICByaWdodDogLTI1MHB4OwogICAgICBhbmltYXRpb246IHB1bHNlIDRzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgfQogICAgCiAgICBAa2V5ZnJhbWVzIHB1bHNlIHsKICAgICAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEpOyBvcGFjaXR5OiAwLjU7IH0KICAgICAgNTAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjIpOyBvcGFjaXR5OiAwLjg7IH0KICAgIH0KICAgIAogICAgLnRyYW5zZm9ybWF0aW9uLWNvbnRhaW5lciB7CiAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB6LWluZGV4OiAyOwogICAgfQogICAgCiAgICAudHJhbnNmb3JtYXRpb24gaDIgewogICAgICBjb2xvcjogdmFyKC0td2hpdGUpOwogICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIG1hcmdpbi1ib3R0b206IDNyZW07CiAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMi41cmVtLCA2dncsIDRyZW0pOwogICAgfQogICAgCiAgICAvKiBCZWZvcmUvQWZ0ZXIgU2xpZGVyICovCiAgICAuYmVmb3JlLWFmdGVyIHsKICAgICAgbWF4LXdpZHRoOiA5MDBweDsKICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXdoaXRlKTsKICAgICAgYm9yZGVyLXJhZGl1czogMzBweDsKICAgICAgcGFkZGluZzogM3JlbTsKICAgICAgYm94LXNoYWRvdzogMCAzMHB4IDkwcHggcmdiYSgwLDAsMCwwLjIpOwogICAgfQogICAgCiAgICAuY29tcGFyaXNvbi10b2dnbGUgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBnYXA6IDFyZW07CiAgICAgIG1hcmdpbi1ib3R0b206IDNyZW07CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgfQogICAgCiAgICAudG9nZ2xlLWJ0biB7CiAgICAgIHBhZGRpbmc6IDFyZW0gMi41cmVtOwogICAgICBib3JkZXI6IG5vbmU7CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWxpZ2h0LWJnKTsKICAgICAgY29sb3I6IHZhcigtLW5hdnkpOwogICAgICBmb250LXdlaWdodDogNzAwOwogICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zczsKICAgIH0KICAgIAogICAgLnRvZ2dsZS1idG4uYWN0aXZlIHsKICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCkgMCUsIHZhcigtLWdvbGQtd2FybSkgMTAwJSk7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7CiAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IHJnYmEoMjU1LDIxNSwwLDAuMyk7CiAgICB9CiAgICAKICAgIC5zY2VuYXJpbyB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CiAgICAKICAgIC5zY2VuYXJpby5hY3RpdmUgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgYW5pbWF0aW9uOiBmYWRlSW4gMC41cyBlYXNlLW91dDsKICAgIH0KICAgIAogICAgQGtleWZyYW1lcyBmYWRlSW4gewogICAgICBmcm9tIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpOyB9CiAgICAgIHRvIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9CiAgICB9CiAgICAKICAgIC5zY2VuYXJpby1jb250ZW50IHsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgfQogICAgCiAgICAuc2NlbmFyaW8taWNvbiB7CiAgICAgIGZvbnQtc2l6ZTogNXJlbTsKICAgICAgbWFyZ2luLWJvdHRvbTogMnJlbTsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICB9CiAgICAKICAgIC5zY2VuYXJpbyBoMyB7CiAgICAgIGZvbnQtc2l6ZTogMnJlbTsKICAgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtOwogICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICB9CiAgICAKICAgIC5zY2VuYXJpbyBwIHsKICAgICAgZm9udC1zaXplOiAxLjJyZW07CiAgICAgIGxpbmUtaGVpZ2h0OiAxLjg7CiAgICAgIGNvbG9yOiB2YXIoLS1ncmF5KTsKICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgIH0KICAgIAogICAgLnNjZW5hcmlvLWhpZ2hsaWdodCB7CiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMjAxLCAxNjcsIDAuMSk7CiAgICAgIHBhZGRpbmc6IDEuNXJlbTsKICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS10ZWFsKTsKICAgICAgbWFyZ2luLXRvcDogMnJlbTsKICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIH0KICAgIAogICAgLnNjZW5hcmlvLWhpZ2hsaWdodCBzdHJvbmcgewogICAgICBjb2xvcjogdmFyKC0tdGVhbCk7CiAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgfQogICAgCiAgICAvKiBNQUdJQyBGRUFUVVJFUyBTRUNUSU9OICovCiAgICAubWFnaWMgewogICAgICBwYWRkaW5nOiAxMjBweCAycmVtOwogICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1uYXZ5KTsKICAgICAgY29sb3I6IHZhcigtLXdoaXRlKTsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgfQogICAgCiAgICAubWFnaWM6OmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICcnOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIGJhY2tncm91bmQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgY3g9IjMwIiBjeT0iMzAiIHI9IjIiIGZpbGw9InJnYmEoMjU1LDIxNSwwLDAuMSkiLz48L3N2Zz4nKTsKICAgICAgb3BhY2l0eTogMC4zOwogICAgfQogICAgCiAgICAubWFnaWMtY29udGFpbmVyIHsKICAgICAgbWF4LXdpZHRoOiAxNDAwcHg7CiAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIHotaW5kZXg6IDI7CiAgICB9CiAgICAKICAgIC5tYWdpYyBoMiB7CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgbWFyZ2luLWJvdHRvbTogNXJlbTsKICAgICAgZm9udC1zaXplOiBjbGFtcCgyLjVyZW0sIDZ2dywgNHJlbSk7CiAgICB9CiAgICAKICAgIC5tYWdpYy1ncmlkIHsKICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgzMjBweCwgMWZyKSk7CiAgICAgIGdhcDogMi41cmVtOwogICAgfQogICAgCiAgICAubWFnaWMtY2FyZCB7CiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgcGFkZGluZzogM3JlbTsKICAgICAgYm9yZGVyLXJhZGl1czogMzBweDsKICAgICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgyNTUsIDIxNSwgMCwgMC4yKTsKICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNHM7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIH0KICAgIAogICAgLm1hZ2ljLWNhcmQ6OmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICcnOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMDsKICAgICAgbGVmdDogMDsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGhlaWdodDogNnB4OwogICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLWdvbGQpLCB2YXIoLS10ZWFsKSwgdmFyKC0tcHVycGxlKSwgdmFyKC0tb3JhbmdlKSk7CiAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDApOwogICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0OwogICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC40czsKICAgIH0KICAgIAogICAgLm1hZ2ljLWNhcmQ6aG92ZXI6OmJlZm9yZSB7CiAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpOwogICAgfQogICAgCiAgICAubWFnaWMtY2FyZDpob3ZlciB7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTVweCkgcm90YXRlKDJkZWcpOwogICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgIGJveC1zaGFkb3c6IDAgMjVweCA3MHB4IHJnYmEoMjU1LDIxNSwwLDAuMik7CiAgICB9CiAgICAKICAgIC5tYWdpYy1pY29uIHsKICAgICAgZm9udC1zaXplOiA0cmVtOwogICAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBhbmltYXRpb246IGZsb2F0IDNzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgfQogICAgCiAgICBAa2V5ZnJhbWVzIGZsb2F0IHsKICAgICAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0KICAgICAgNTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTsgfQogICAgfQogICAgCiAgICAubWFnaWMtY2FyZCBoMyB7CiAgICAgIGZvbnQtc2l6ZTogMS44cmVtOwogICAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICB9CiAgICAKICAgIC5tYWdpYy1jYXJkIHAgewogICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgbGluZS1oZWlnaHQ6IDEuNzsKICAgICAgb3BhY2l0eTogMC45OwogICAgfQogICAgCiAgICAvKiBQSUNUVVJFIFRISVMgU0VDVElPTiAtIEludGVyYWN0aXZlIFNjZW5hcmlvcyAqLwogICAgLnBpY3R1cmUtdGhpcyB7CiAgICAgIHBhZGRpbmc6IDEyMHB4IDJyZW07CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHZhcigtLWxpZ2h0LWJnKSAwJSwgdmFyKC0td2hpdGUpIDEwMCUpOwogICAgfQogICAgCiAgICAucGljdHVyZS1jb250YWluZXIgewogICAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICB9CiAgICAKICAgIC5waWN0dXJlLXRoaXMgaDIgewogICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIG1hcmdpbi1ib3R0b206IDVyZW07CiAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMi41cmVtLCA2dncsIDRyZW0pOwogICAgfQogICAgCiAgICAuc2NlbmFyaW9zIHsKICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgZ2FwOiA0cmVtOwogICAgfQogICAgCiAgICAuc2NlbmFyaW8tY2FyZCB7CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXdoaXRlKTsKICAgICAgcGFkZGluZzogM3JlbTsKICAgICAgYm9yZGVyLXJhZGl1czogMzBweDsKICAgICAgYm94LXNoYWRvdzogMCAyMHB4IDYwcHggcmdiYSgwLDAsMCwwLjA4KTsKICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOwogICAgICBnYXA6IDNyZW07CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICB9CiAgICAKICAgIC5zY2VuYXJpby1jYXJkOm50aC1jaGlsZChldmVuKSB7CiAgICAgIGRpcmVjdGlvbjogcnRsOwogICAgfQogICAgCiAgICAuc2NlbmFyaW8tY2FyZDpudGgtY2hpbGQoZXZlbikgPiAqIHsKICAgICAgZGlyZWN0aW9uOiBsdHI7CiAgICB9CiAgICAKICAgIC5zY2VuYXJpby12aXN1YWwgewogICAgICBmb250LXNpemU6IDhyZW07CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIH0KICAgIAogICAgLnNjZW5hcmlvLXRleHQgaDMgewogICAgICBmb250LXNpemU6IDJyZW07CiAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTsKICAgICAgY29sb3I6IHZhcigtLXB1cnBsZSk7CiAgICB9CiAgICAKICAgIC5zY2VuYXJpby10ZXh0IHAgewogICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgbGluZS1oZWlnaHQ6IDEuODsKICAgICAgY29sb3I6IHZhcigtLWdyYXkpOwogICAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgfQogICAgCiAgICAuc2NlbmFyaW8tcmVzdWx0IHsKICAgICAgYmFja2dyb3VuZDogcmdiYSgxMjMsIDEwNCwgMjM4LCAwLjEpOwogICAgICBwYWRkaW5nOiAxLjVyZW07CiAgICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tcHVycGxlKTsKICAgICAgbWFyZ2luLXRvcDogMS41cmVtOwogICAgfQogICAgCiAgICAuc2NlbmFyaW8tcmVzdWx0IHN0cm9uZyB7CiAgICAgIGNvbG9yOiB2YXIoLS1wdXJwbGUpOwogICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgIH0KICAgIAogICAgLyogQ1RBIFNFQ1RJT04gKi8KICAgIC5jdGEtc2VjdGlvbiB7CiAgICAgIHBhZGRpbmc6IDEyMHB4IDJyZW07CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdvbGQpIDAlLCB2YXIoLS1nb2xkLXdhcm0pIDEwMCUpOwogICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIH0KICAgIAogICAgLmN0YS1zZWN0aW9uOjpiZWZvcmUgewogICAgICBjb250ZW50OiAnJzsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBiYWNrZ3JvdW5kOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48Y2lyY2xlIGN4PSIzMCIgY3k9IjMwIiByPSIyIiBmaWxsPSJyZ2JhKDAsMzEsNjMsMC4xKSIvPjwvc3ZnPicpOwogICAgICBvcGFjaXR5OiAwLjU7CiAgICB9CiAgICAKICAgIC5jdGEtY29udGFpbmVyIHsKICAgICAgbWF4LXdpZHRoOiA5MDBweDsKICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgei1pbmRleDogMjsKICAgIH0KICAgIAogICAgLmN0YS1zZWN0aW9uIGgyIHsKICAgICAgZm9udC1zaXplOiBjbGFtcCgyLjVyZW0sIDZ2dywgNC41cmVtKTsKICAgICAgY29sb3I6IHZhcigtLW5hdnkpOwogICAgICBtYXJnaW4tYm90dG9tOiAycmVtOwogICAgfQogICAgCiAgICAuY3RhLXNlY3Rpb24gcCB7CiAgICAgIGZvbnQtc2l6ZTogMS41cmVtOwogICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICAgIG1hcmdpbi1ib3R0b206IDNyZW07CiAgICAgIG9wYWNpdHk6IDAuOTsKICAgIH0KICAgIAogICAgLmJ0biB7CiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgcGFkZGluZzogMS41cmVtIDRyZW07CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLW5hdnkpOwogICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICAgIGZvbnQtc2l6ZTogMS4zcmVtOwogICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzOwogICAgICBib3gtc2hhZG93OiAwIDIwcHggNTBweCByZ2JhKDAsMzEsNjMsMC4zKTsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQogICAgCiAgICAuYnRuOjpiZWZvcmUgewogICAgICBjb250ZW50OiAnJzsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB0b3A6IDUwJTsKICAgICAgbGVmdDogNTAlOwogICAgICB3aWR0aDogMDsKICAgICAgaGVpZ2h0OiAwOwogICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDIxNSwwLDAuMyk7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjZzLCBoZWlnaHQgMC42czsKICAgIH0KICAgIAogICAgLmJ0bjpob3Zlcjo6YmVmb3JlIHsKICAgICAgd2lkdGg6IDQwMHB4OwogICAgICBoZWlnaHQ6IDQwMHB4OwogICAgfQogICAgCiAgICAuYnRuIHNwYW4gewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIHotaW5kZXg6IDE7CiAgICB9CiAgICAKICAgIC5idG46aG92ZXIgewogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCkgc2NhbGUoMS4wNSk7CiAgICAgIGJveC1zaGFkb3c6IDAgMzBweCA3MHB4IHJnYmEoMCwzMSw2MywwLjUpOwogICAgfQogICAgCiAgICAvKiBGT09URVIgKi8KICAgIC5mb290ZXIgewogICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1uYXZ5KTsKICAgICAgY29sb3I6IHZhcigtLXdoaXRlKTsKICAgICAgcGFkZGluZzogNjBweCAycmVtIDIwcHg7CiAgICB9CiAgICAKICAgIC5mb290ZXItY29udGFpbmVyIHsKICAgICAgbWF4LXdpZHRoOiAxNDAwcHg7CiAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgfQogICAgCiAgICAuZm9vdGVyLWdyaWQgewogICAgICBkaXNwbGF5OiBncmlkOwogICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDIwMHB4LCAxZnIpKTsKICAgICAgZ2FwOiAzcmVtOwogICAgICBtYXJnaW4tYm90dG9tOiAzcmVtOwogICAgfQogICAgCiAgICAuZm9vdGVyLWNvbHVtbiBoNCB7CiAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgICAgZm9udC1zaXplOiAxLjJyZW07CiAgICB9CiAgICAKICAgIC5mb290ZXItY29sdW1uIHVsIHsKICAgICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIH0KICAgIAogICAgLmZvb3Rlci1jb2x1bW4gdWwgbGkgewogICAgICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtOwogICAgfQogICAgCiAgICAuZm9vdGVyLWNvbHVtbiBhIHsKICAgICAgY29sb3I6IHZhcigtLXdoaXRlKTsKICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICBvcGFjaXR5OiAwLjk7CiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzOwogICAgfQogICAgCiAgICAuZm9vdGVyLWNvbHVtbiBhOmhvdmVyIHsKICAgICAgb3BhY2l0eTogMTsKICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICBwYWRkaW5nLWxlZnQ6IDVweDsKICAgIH0KICAgIAogICAgLmZvb3Rlci1ib3R0b20gewogICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyNTUsMjE1LDAsMC4zKTsKICAgICAgcGFkZGluZy10b3A6IDJyZW07CiAgICAgIG1hcmdpbi10b3A6IDJyZW07CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgIG9wYWNpdHk6IDAuODsKICAgIH0KICAgIAogICAgLyogTU9CSUxFIFJFU1BPTlNJVkUgKi8KICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgICAuaGVybyB7CiAgICAgICAgbWluLWhlaWdodDogMTAwc3ZoOwogICAgICAgIHBhZGRpbmc6IDEyMHB4IDEuNXJlbSA2MHB4OwogICAgICB9CiAgICAgIAogICAgICAuc2NlbmFyaW8tY2FyZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgZ2FwOiAycmVtOwogICAgICB9CiAgICAgIAogICAgICAuc2NlbmFyaW8tY2FyZDpudGgtY2hpbGQoZXZlbikgewogICAgICAgIGRpcmVjdGlvbjogbHRyOwogICAgICB9CiAgICAgIAogICAgICAuY29tcGFyaXNvbi10b2dnbGUgewogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIH0KICAgICAgCiAgICAgIC5wYWluLWdyaWQsCiAgICAgIC5tYWdpYy1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgfQogICAgfQogICAgCiAgICAvKiBTQ1JPTEwgQU5JTUFUSU9OUyAqLwogICAgLmZhZGUtaW4gewogICAgICBvcGFjaXR5OiAwOwogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMzBweCk7CiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjZzIGVhc2Utb3V0OwogICAgfQogICAgCiAgICAuZmFkZS1pbi52aXNpYmxlIHsKICAgICAgb3BhY2l0eTogMTsKICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgfQogIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+CgogIDwhLS0gTkFWSUdBVElPTiAtLT4KICA8bmF2IGNsYXNzPSJuYXYiPgogICAgPGRpdiBjbGFzcz0ibmF2LWNvbnRhaW5lciI+CiAgICAgIDxhIGhyZWY9Ii8iIGNsYXNzPSJsb2dvIj5IYW5kc2hha2UuYWZyaWNhPC9hPgogICAgICA8dWwgY2xhc3M9Im5hdi1saW5rcyI+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8iPkhvbWU8L2E+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iL2Rpc2NvdmVyIj5EaXNjb3ZlcjwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2FsbGVyeSI+R2FsbGVyeTwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSIvcHJpY2luZyI+UHJpY2luZzwvYT48L2xpPgogICAgICA8L3VsPgogICAgPC9kaXY+CiAgPC9uYXY+CgogIDwhLS0gSEVSTyAtIEVNT1RJT05BTCBIT09LIC0tPgogIDxzZWN0aW9uIGNsYXNzPSJoZXJvIj4KICAgIDxkaXYgY2xhc3M9ImZsb2F0aW5nLXBhcGVycyI+CiAgICAgIDxkaXYgY2xhc3M9InBhcGVyIiBzdHlsZT0ibGVmdDogMTAlOyBhbmltYXRpb24tZGVsYXk6IDBzOyI+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InBhcGVyIiBzdHlsZT0ibGVmdDogMjUlOyBhbmltYXRpb24tZGVsYXk6IDFzOyI+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InBhcGVyIiBzdHlsZT0ibGVmdDogNDAlOyBhbmltYXRpb24tZGVsYXk6IDJzOyI+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InBhcGVyIiBzdHlsZT0ibGVmdDogNTUlOyBhbmltYXRpb24tZGVsYXk6IDNzOyI+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InBhcGVyIiBzdHlsZT0ibGVmdDogNzAlOyBhbmltYXRpb24tZGVsYXk6IDRzOyI+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InBhcGVyIiBzdHlsZT0ibGVmdDogODUlOyBhbmltYXRpb24tZGVsYXk6IDVzOyI+PC9kaXY+CiAgICA8L2Rpdj4KICAgIAogICAgPGRpdiBjbGFzcz0iaGVyby1jb250ZW50Ij4KICAgICAgPGRpdiBjbGFzcz0iaGVyby1iYWRnZSI+8J+OrSBUSEUgQlJVVEFMIFRSVVRIIEFCT1VUIE5FVFdPUktJTkc8L2Rpdj4KICAgICAgCiAgICAgIDxoMT4KICAgICAgICBUaGF0IEJ1c2luZXNzIENhcmQgWW91IEhhbmRlZCBPdXQ/PGJyPgogICAgICAgIFRoZXkgPHNwYW4gY2xhc3M9ImhpZ2hsaWdodCB1bmRlcmxpbmUiPlRocmV3IEl0IEF3YXk8L3NwYW4+LgogICAgICA8L2gxPgogICAgICAKICAgICAgPHAgY2xhc3M9Imhlcm8tc3VidGl0bGUiPgogICAgICAgIDg4JSBvZiBwYXBlciBidXNpbmVzcyBjYXJkcyBhcmUgZGlzY2FyZGVkIHdpdGhpbiBhIHdlZWsuIFlvdXIgY29ubmVjdGlvbiwgeW91ciBwb3RlbnRpYWwsIHlvdXIgb3Bwb3J0dW5pdHnigJRnb25lLiBCdXQgaXQgZG9lc24ndCBoYXZlIHRvIGJlIHRoaXMgd2F5Li4uCiAgICAgIDwvcD4KICAgIDwvZGl2PgogICAgCiAgICA8ZGl2IGNsYXNzPSJzY3JvbGwtaW5kaWNhdG9yIiBvbmNsaWNrPSJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudHJhZ2VkeScpLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjogJ3Ntb290aCd9KSI+CiAgICAgIOKGkwogICAgPC9kaXY+CiAgPC9zZWN0aW9uPgoKICA8IS0tIFRIRSBQQVBFUiBUUkFHRURZIC0tPgogIDxzZWN0aW9uIGNsYXNzPSJ0cmFnZWR5Ij4KICAgIDxkaXYgY2xhc3M9InRyYWdlZHktY29udGFpbmVyIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1oZWFkZXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tYmFkZ2UiPvCfmKIgVGhlIFBhcGVyIENhcmQgUHJvYmxlbTwvZGl2PgogICAgICAgIDxoMj5MZXQncyBUYWxrIEFib3V0IFdoYXQgUmVhbGx5IEhhcHBlbnM8L2gyPgogICAgICAgIDxwIGNsYXNzPSJzZWN0aW9uLXN1YnRpdGxlIj4KICAgICAgICAgIFlvdSBpbnZlc3QgdGltZSwgbW9uZXksIGFuZCBlbmVyZ3kgaW50byBuZXR3b3JraW5nLiBCdXQgcGFwZXIgY2FyZHMgYXJlIHNhYm90YWdpbmcgeW91ciBzdWNjZXNzLiBIZXJlJ3MgdGhlIHVuY29tZm9ydGFibGUgdHJ1dGguLi4KICAgICAgICA8L3A+CiAgICAgIDwvZGl2PgogICAgICAKICAgICAgPCEtLSBUcmFzaCBDYW4gRGVtbyAtLT4KICAgICAgPGRpdiBjbGFzcz0idHJhc2gtZGVtbyI+CiAgICAgICAgPGRpdiBjbGFzcz0iZmFsbGluZy1jYXJkIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0cmFzaC1jYW4iPjwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgCiAgICAgIDwhLS0gUGFpbiBQb2ludHMgLS0+CiAgICAgIDxkaXYgY2xhc3M9InBhaW4tZ3JpZCBmYWRlLWluIj4KICAgICAgICA8ZGl2IGNsYXNzPSJwYWluLWNhcmQiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InBhaW4taWNvbiI+8J+SuDwvc3Bhbj4KICAgICAgICAgIDxoMz5Zb3UncmUgTGl0ZXJhbGx5IEJ1cm5pbmcgTW9uZXk8L2gzPgogICAgICAgICAgPHA+UHJpbnQgNTAwIGNhcmRzIGZvciAkNTAuIDQ0MCBnZXQgdGhyb3duIGF3YXkuIFRoYXQncyAkNDQgc3RyYWlnaHQgaW50byB0aGUgdHJhc2gsIHBsdXMgYWxsIHRoZSBuZXR3b3JraW5nIHRpbWUgd2FzdGVkLjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJwYWluLWNhcmQiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InBhaW4taWNvbiI+8J+kt+KAjeKZgO+4jzwvc3Bhbj4KICAgICAgICAgIDxoMz5UaGUgIldoZXJlIERpZCBJIFB1dCBUaGF0PyIgTW9tZW50PC9oMz4KICAgICAgICAgIDxwPlRoZXkgbWVhbnQgdG8gZm9sbG93IHVwLiBUaGV5IHJlYWxseSBkaWQuIEJ1dCB5b3VyIGNhcmQgaXMgYnVyaWVkIHVuZGVyIHJlY2VpcHRzIGluIHRoZWlyIHdhbGxldCBvciBsb3N0IGluIHRoZWlyIGRlc2sgZHJhd2VyLiBPdXQgb2Ygc2lnaHQsIG91dCBvZiBtaW5kLjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJwYWluLWNhcmQiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InBhaW4taWNvbiI+8J+Tnjwvc3Bhbj4KICAgICAgICAgIDxoMz5PdXRkYXRlZCBCZWZvcmUgVGhleSBFdmVuIENhbGw8L2gzPgogICAgICAgICAgPHA+Q2hhbmdlZCB5b3VyIG51bWJlcj8gTmV3IGVtYWlsPyBNb3ZlZCBvZmZpY2VzPyBUb28gYmFkLiBUaG9zZSA1MDAgY2FyZHMgeW91IHByaW50ZWQgYXJlIG5vdyBwZXJtYW5lbnRseSB3cm9uZy4gUmVwcmludCBhbmQgcmVwZWF0IHRoZSB3YXN0ZSBjeWNsZS48L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0icGFpbi1jYXJkIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJwYWluLWljb24iPvCfjI08L3NwYW4+CiAgICAgICAgICA8aDM+VGhlIEVudmlyb25tZW50YWwgR3VpbHQ8L2gzPgogICAgICAgICAgPHA+MjcgbWlsbGlvbiB0cmVlcyBhcmUgY3V0IGRvd24geWVhcmx5IGZvciBidXNpbmVzcyBjYXJkcy4gWW91J3JlIGFuIGVjby1jb25zY2lvdXMgQWZyaWNhbiBlbnRyZXByZW5ldXIuIFRoaXMgZG9lc24ndCBhbGlnbiB3aXRoIHlvdXIgdmFsdWVzLjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJwYWluLWNhcmQiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InBhaW4taWNvbiI+8J+Vte+4jzwvc3Bhbj4KICAgICAgICAgIDxoMz5UaGUgQmxhY2sgSG9sZSBvZiBOZXR3b3JraW5nPC9oMz4KICAgICAgICAgIDxwPldobyB2aWV3ZWQgeW91ciBjYXJkPyBXaGVuPyBXaGF0IGRpZCB0aGV5IHRoaW5rPyBZb3UgaGF2ZSBOTyBJREVBLiBZb3UncmUgbmV0d29ya2luZyBibGluZCwgaG9waW5nIHNvbWV0aGluZyBzdGlja3MuPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9InBhaW4tY2FyZCI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0icGFpbi1pY29uIj7wn5i0PC9zcGFuPgogICAgICAgICAgPGgzPkJvcmluZyA9IEZvcmdldHRhYmxlPC9oMz4KICAgICAgICAgIDxwPkEgd2hpdGUgY2FyZCB3aXRoIGJsYWNrIHRleHQgbG9va3MgbGlrZSBldmVyeW9uZSBlbHNlJ3MuIFlvdSdyZSBicmlsbGlhbnQgYW5kIHVuaXF1ZeKAlHdoeSBkb2VzIHlvdXIgY2FyZCBtYWtlIHlvdSBsb29rIGdlbmVyaWM/PC9wPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvc2VjdGlvbj4KCiAgPCEtLSBUUkFOU0ZPUk1BVElPTiBTRUNUSU9OIC0tPgogIDxzZWN0aW9uIGNsYXNzPSJ0cmFuc2Zvcm1hdGlvbiI+CiAgICA8ZGl2IGNsYXNzPSJ0cmFuc2Zvcm1hdGlvbi1jb250YWluZXIiPgogICAgICA8aDI+Tm93IFBpY3R1cmUgVGhpcyBJbnN0ZWFkLi4uPC9oMj4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9ImJlZm9yZS1hZnRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29tcGFyaXNvbi10b2dnbGUiPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idG9nZ2xlLWJ0biBhY3RpdmUiIG9uY2xpY2s9InNob3dTY2VuYXJpbygnY29uZmVyZW5jZScpIj5BdCBBIENvbmZlcmVuY2U8L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9InRvZ2dsZS1idG4iIG9uY2xpY2s9InNob3dTY2VuYXJpbygnbWVldGluZycpIj5BZnRlciBBIE1lZXRpbmc8L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9InRvZ2dsZS1idG4iIG9uY2xpY2s9InNob3dTY2VuYXJpbygnZm9sbG93dXAnKSI+NiBNb250aHMgTGF0ZXI8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8IS0tIENvbmZlcmVuY2UgU2NlbmFyaW8gLS0+CiAgICAgICAgPGRpdiBjbGFzcz0ic2NlbmFyaW8gYWN0aXZlIiBpZD0iY29uZmVyZW5jZSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2VuYXJpby1jb250ZW50Ij4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNjZW5hcmlvLWljb24iPvCfk7E8L3NwYW4+CiAgICAgICAgICAgIDxoMz5Db25mZXJlbmNlIE5ldHdvcmtpbmcsIFJldm9sdXRpb25pemVkPC9oMz4KICAgICAgICAgICAgPHA+WW91IG1lZXQgc29tZW9uZSBpbXByZXNzaXZlLiBJbnN0ZWFkIG9mIGZ1bWJsaW5nIGZvciBhIHBhcGVyIGNhcmQgaW4geW91ciBwb2NrZXQsIHlvdSBzaW1wbHkgc2F5OiA8c3Ryb25nPiJMZXQgbWUgc2hhcmUgbXkgY2FyZCB3aXRoIHlvdS4iPC9zdHJvbmc+PC9wPgogICAgICAgICAgICA8cD5Zb3Ugb3BlbiB5b3VyIHBob25lLCBzaG93IHlvdXIgYmVhdXRpZnVsIGRpZ2l0YWwgY2FyZCwgdGhleSBzY2FuIHlvdXIgUVIgY29kZSwgYW5kIEJPT03igJR0aGV5IGhhdmUgeW91ciBjb21wbGV0ZSBwcm9mZXNzaW9uYWwgcHJvZmlsZS48L3A+CiAgICAgICAgICAgIDxwPlZpZGVvIGludHJvZHVjdGlvbi4gUG9ydGZvbGlvIGxpbmtzLiBTb2NpYWwgbWVkaWEuIENvbnRhY3QgYnV0dG9ucy4gRXZlcnl0aGluZy4gSW5zdGFudGx5LjwvcD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NlbmFyaW8taGlnaGxpZ2h0Ij4KICAgICAgICAgICAgICA8c3Ryb25nPlRoZSBSZXN1bHQ6PC9zdHJvbmc+IFRoZXkgZG9uJ3QganVzdCBoYXZlIHlvdXIgaW5mb+KAlHRoZXkgaGF2ZSBhbiBleHBlcmllbmNlLiBUaGV5IHJlbWVtYmVyIHlvdS4gWW91ciBjYXJkIGlzIGFscmVhZHkgc2F2ZWQgaW4gdGhlaXIgcGhvbmUgYmVmb3JlIHRoZXkgZXZlbiBsZWF2ZSB0aGUgY29udmVyc2F0aW9uLgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIAogICAgICAgIDwhLS0gTWVldGluZyBTY2VuYXJpbyAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJzY2VuYXJpbyIgaWQ9Im1lZXRpbmciPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2NlbmFyaW8tY29udGVudCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzY2VuYXJpby1pY29uIj7wn6SdPC9zcGFuPgogICAgICAgICAgICA8aDM+TWVldGluZyBOZXcgQ2xpZW50cywgTWFkZSBFZmZvcnRsZXNzPC9oMz4KICAgICAgICAgICAgPHA+Q2xpZW50IG1lZXRpbmcgd3JhcHMgdXAuIFRoZXkncmUgaW50ZXJlc3RlZCBidXQgbmVlZCB0byB0aGluayBhYm91dCBpdC4gWW91IGRvbid0IGhvcGUgdGhleSdsbCBrZWVwIHlvdXIgcGFwZXIgY2FyZCBzYWZlLjwvcD4KICAgICAgICAgICAgPHA+WW91IHNlbmQgeW91ciBkaWdpdGFsIGNhcmQgdmlhIFdoYXRzQXBwLiA8c3Ryb25nPlRoZXkgY2xpY2suIFlvdXIgY2FyZCBvcGVucy48L3N0cm9uZz4gVGhleSBjYW4gY29udGFjdCB5b3Ugd2l0aCBvbmUgdGFwLjwvcD4KICAgICAgICAgICAgPHA+VHdvIGRheXMgbGF0ZXIsIHlvdSBjaGVjayB5b3VyIGFuYWx5dGljcy4gVGhleSB2aWV3ZWQgeW91ciBjYXJkIDMgdGltZXMuIFRoZXkgd2F0Y2hlZCB5b3VyIHZpZGVvIGludHJvZHVjdGlvbi4gVGhleSBjbGlja2VkIHlvdXIgcG9ydGZvbGlvLjwvcD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NlbmFyaW8taGlnaGxpZ2h0Ij4KICAgICAgICAgICAgICA8c3Ryb25nPlRoZSBSZXN1bHQ6PC9zdHJvbmc+IFlvdSBrbm93IHRoZXkncmUgaW50ZXJlc3RlZC4gWW91IGZvbGxvdyB1cCBhdCBleGFjdGx5IHRoZSByaWdodCB0aW1lLiBZb3UgY2xvc2UgdGhlIGRlYWwgYmVjYXVzZSB5b3UgaGFkIGludGVsbGlnZW5jZSwgbm90IGd1ZXNzd29yay4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8IS0tIEZvbGxvdy11cCBTY2VuYXJpbyAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJzY2VuYXJpbyIgaWQ9ImZvbGxvd3VwIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNjZW5hcmlvLWNvbnRlbnQiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2NlbmFyaW8taWNvbiI+8J+Orzwvc3Bhbj4KICAgICAgICAgICAgPGgzPlNpeCBNb250aHMgTGF0ZXIsIFN0aWxsIFdvcmtpbmc8L2gzPgogICAgICAgICAgICA8cD5Tb21lb25lIHlvdSBtZXQgbW9udGhzIGFnbyBmaW5hbGx5IG5lZWRzIHlvdXIgc2VydmljZS4gV2l0aCBhIHBhcGVyIGNhcmQsIHRoZXknZCBoYXZlIHRvIGRpZyB0aHJvdWdoIHRoZWlyIGRlc2sgb3Igc2VhcmNoIHRoZWlyIGVtYWlsLjwvcD4KICAgICAgICAgICAgPHA+V2l0aCB5b3VyIGRpZ2l0YWwgY2FyZCBzYXZlZCBpbiB0aGVpciBwaG9uZT8gPHN0cm9uZz5PbmUgc2VhcmNoLiBPbmUgdGFwLiBUaGV5J3JlIGNhbGxpbmcgeW91Ljwvc3Ryb25nPjwvcD4KICAgICAgICAgICAgPHA+UGx1cywgeW91IHVwZGF0ZWQgeW91ciBjYXJkIGxhc3QgbW9udGggd2l0aCB5b3VyIG5ldyBzZXJ2aWNlIG9mZmVyaW5n4oCUc28gdGhleSBzZWUgeW91ciBsYXRlc3Qgd29yayB3aGVuIHRoZXkgb3BlbiBpdC48L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjZW5hcmlvLWhpZ2hsaWdodCI+CiAgICAgICAgICAgICAgPHN0cm9uZz5UaGUgUmVzdWx0Ojwvc3Ryb25nPiBZb3VyIGRpZ2l0YWwgY2FyZCBpcyB3b3JraW5nIGZvciB5b3UgMjQvNy8zNjUuIFlvdSBkb24ndCAiaG9wZSIgdGhleSByZW1lbWJlciB5b3UuIFlvdSBzdGF5IHByZXNlbnQgYW5kIGFjY2Vzc2libGUgZm9yZXZlci4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L3NlY3Rpb24+CgogIDwhLS0gVEhFIE1BR0lDIEZFQVRVUkVTIC0tPgogIDxzZWN0aW9uIGNsYXNzPSJtYWdpYyI+CiAgICA8ZGl2IGNsYXNzPSJtYWdpYy1jb250YWluZXIiPgogICAgICA8aDI+VGhpcyBJcyBXaGVyZSBUaGUgTWFnaWMgSGFwcGVucyDinKg8L2gyPgogICAgICAKICAgICAgPGRpdiBjbGFzcz0ibWFnaWMtZ3JpZCBmYWRlLWluIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtYWdpYy1jYXJkIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJtYWdpYy1pY29uIj7wn46oPC9zcGFuPgogICAgICAgICAgPGgzPkRlc2lnbiBUaGF0IFNjcmVhbXMgIllPVSI8L2gzPgogICAgICAgICAgPHA+Q2hvb3NlIGNvbG9ycyB0aGF0IG1hdGNoIHlvdXIgYnJhbmQuIEFkZCB5b3VyIHBlcnNvbmFsaXR5LiBVcGxvYWQgY3VzdG9tIGJhY2tncm91bmRzLiBZb3VyIGNhcmQgaXNuJ3QganVzdCBwcm9mZXNzaW9uYWzigJRpdCdzIHVubWlzdGFrYWJseSBZT1VSUy48L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0ibWFnaWMtY2FyZCI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0ibWFnaWMtaWNvbiI+8J+OpTwvc3Bhbj4KICAgICAgICAgIDxoMz5WaWRlbyBJbnRyb2R1Y3Rpb25zPC9oMz4KICAgICAgICAgIDxwPkxldCB0aGVtIHNlZSB5b3VyIGZhY2UsIGhlYXIgeW91ciB2b2ljZSwgZmVlbCB5b3VyIGVuZXJneS4gVmlkZW8gYnVpbGRzIHRydXN0IGluc3RhbnRseS4gVGhleSBkb24ndCBqdXN0IGtub3cgd2hvIHlvdSBhcmXigJR0aGV5IGtub3cgWU9VLjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJtYWdpYy1jYXJkIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJtYWdpYy1pY29uIj7wn5OKPC9zcGFuPgogICAgICAgICAgPGgzPkFuYWx5dGljcyBUaGF0IEdpdmUgWW91IFBvd2VyPC9oMz4KICAgICAgICAgIDxwPlNlZSB3aG8gdmlld2VkIHlvdXIgY2FyZCwgd2hlbiB0aGV5IHZpZXdlZCBpdCwgd2hhdCB0aGV5IGNsaWNrZWQuIE5ldHdvcmtpbmcgaXNuJ3QgZ3Vlc3NpbmcgYW55bW9yZeKAlGl0J3Mgc3RyYXRlZ3kgYmFja2VkIGJ5IGRhdGEuPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9Im1hZ2ljLWNhcmQiPgogICAgICAgICAgPHNwYW4gY2xhc3M9Im1hZ2ljLWljb24iPvCflIQ8L3NwYW4+CiAgICAgICAgICA8aDM+VXBkYXRlIEFueXRpbWUsIEFueXdoZXJlPC9oMz4KICAgICAgICAgIDxwPk5ldyBwaG9uZSBudW1iZXI/IE5ldyBzZXJ2aWNlPyBUYWtlcyA1IG1pbnV0ZXMgdG8gdXBkYXRlLiBFdmVyeW9uZSB3aG8gaGFzIHlvdXIgY2FyZCBzZWVzIHRoZSBuZXcgaW5mbyBpbnN0YW50bHkuIE5vIHJlcHJpbnRpbmcuIE5vIHdhc3RlLjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJtYWdpYy1jYXJkIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJtYWdpYy1pY29uIj7wn5qAPC9zcGFuPgogICAgICAgICAgPGgzPlNoYXJlIEl0IEV2ZXJ5d2hlcmU8L2gzPgogICAgICAgICAgPHA+V2hhdHNBcHAsIGVtYWlsLCBMaW5rZWRJbiwgVHdpdHRlciwgSW5zdGFncmFt4oCUb25lIGxpbmsgd29ya3MgZXZlcnl3aGVyZS4gWW91ciBjYXJkIGdvZXMgd2hlcmV2ZXIgeW91IGdvLCBpbnN0YW50bHkgYW5kIGVmZm9ydGxlc3NseS48L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0ibWFnaWMtY2FyZCI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0ibWFnaWMtaWNvbiI+8J+SsDwvc3Bhbj4KICAgICAgICAgIDxoMz5ST0kgVGhhdCBNYWtlcyBTZW5zZTwvaDM+CiAgICAgICAgICA8cD5Gcm9tICQ5Ny95ZWFyLiBPbmUgbmV3IGNsaWVudCBwYXlzIGZvciAxMCB5ZWFycyBvZiBjYXJkcy4gVGhlIGNvc3Qgb2YgYmVpbmcgZm9yZ290dGVuIGlzIGluZmluaXRlbHkgaGlnaGVyIHRoYW4gdGhlIGNvc3Qgb2YgYmVpbmcgcmVtZW1iZXJlZC48L3A+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9zZWN0aW9uPgoKICA8IS0tIFBJQ1RVUkUgVEhJUyAtIEludGVyYWN0aXZlIFNjZW5hcmlvcyAtLT4KICA8c2VjdGlvbiBjbGFzcz0icGljdHVyZS10aGlzIj4KICAgIDxkaXYgY2xhc3M9InBpY3R1cmUtY29udGFpbmVyIj4KICAgICAgPGgyPlBpY3R1cmUgVGhlc2UgUmVhbCBNb21lbnRzPC9oMj4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9InNjZW5hcmlvcyI+CiAgICAgICAgPCEtLSBTY2VuYXJpbyAxIC0tPgogICAgICAgIDxkaXYgY2xhc3M9InNjZW5hcmlvLWNhcmQgZmFkZS1pbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2VuYXJpby12aXN1YWwiPvCfjqQ8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNjZW5hcmlvLXRleHQiPgogICAgICAgICAgICA8aDM+WW91IEp1c3QgR2F2ZSBBIEtpbGxlciBQcmVzZW50YXRpb248L2gzPgogICAgICAgICAgICA8cD5GaXZlIHBlb3BsZSBhcHByb2FjaCB5b3UgYWZ0ZXJ3YXJkIHdhbnRpbmcgdG8gY29ubmVjdC4gUGFwZXIgY2FyZHM/IFlvdSBoYW5kIG91dCBmaXZlIGFuZCBob3BlIHRoZXkgZG9uJ3QgbG9zZSB0aGVtLjwvcD4KICAgICAgICAgICAgPHA+PHN0cm9uZz5EaWdpdGFsIGNhcmQ/PC9zdHJvbmc+IFlvdSBwcm9qZWN0IHlvdXIgUVIgY29kZSBvbiB0aGUgc2NyZWVuLiAiU2NhbiB0aGlzIGZvciBteSBpbmZvISIgRXZlcnlvbmUgZ2V0cyB5b3VyIGNhcmQuIEFuYWx5dGljcyBzaG93IHlvdSBleGFjdGx5IHdobyBzY2FubmVkIGl0IGFuZCB3aGVuLjwvcD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2NlbmFyaW8tcmVzdWx0Ij4KICAgICAgICAgICAgICA8c3Ryb25nPlJlc3VsdDo8L3N0cm9uZz4gWW91IGZvbGxvdyB1cCB3aXRoIGFsbCBmaXZlIHBlb3BsZSBpbnRlbGxpZ2VudGx5LiBUaHJlZSBiZWNvbWUgY2xpZW50cy4gWW91ciBkaWdpdGFsIGNhcmQganVzdCBwYWlkIGZvciBpdHNlbGYgMzB4IG92ZXIuCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgICAgPCEtLSBTY2VuYXJpbyAyIC0tPgogICAgICAgIDxkaXYgY2xhc3M9InNjZW5hcmlvLWNhcmQgZmFkZS1pbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2VuYXJpby12aXN1YWwiPuKciO+4jzwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2NlbmFyaW8tdGV4dCI+CiAgICAgICAgICAgIDxoMz5Zb3UncmUgQXQgVGhlIEFpcnBvcnQ8L2gzPgogICAgICAgICAgICA8cD5Zb3UgbWVldCBhIHBvdGVudGlhbCBpbnZlc3RvciBpbiB0aGUgbG91bmdlLiBUaGV5IGFzayBmb3IgeW91ciBjYXJkLiBZb3UgcmVhbGl6ZSB5b3UgbGVmdCB0aGVtIGluIHlvdXIgaG90ZWwgcm9vbS48L3A+CiAgICAgICAgICAgIDxwPjxzdHJvbmc+V2l0aCBhIGRpZ2l0YWwgY2FyZD88L3N0cm9uZz4gWW91IHB1bGwgb3V0IHlvdXIgcGhvbmUsIHNob3cgeW91ciBjYXJkLCB0aGV5IHNjYW4gaXQuIENvbm5lY3Rpb24gbWFkZS4gT3Bwb3J0dW5pdHkgY2FwdHVyZWQuPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2VuYXJpby1yZXN1bHQiPgogICAgICAgICAgICAgIDxzdHJvbmc+UmVzdWx0Ojwvc3Ryb25nPiBUaGUgdW5pdmVyc2UgZ2F2ZSB5b3UgYSBnb2xkZW4gb3Bwb3J0dW5pdHkuIFlvdSBkaWRuJ3QgZnVtYmxlIGl0IGJlY2F1c2UgeW91IGxpdGVyYWxseSBjYW4ndCBsZWF2ZSB5b3VyIGRpZ2l0YWwgY2FyZCBhbnl3aGVyZeKAlGl0J3MgaW4geW91ciBwaG9uZS4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8IS0tIFNjZW5hcmlvIDMgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0ic2NlbmFyaW8tY2FyZCBmYWRlLWluIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNjZW5hcmlvLXZpc3VhbCI+8J+SjTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2NlbmFyaW8tdGV4dCI+CiAgICAgICAgICAgIDxoMz5Zb3VyIEJ1c2luZXNzIEV2b2x2ZXM8L2gzPgogICAgICAgICAgICA8cD5TaXggbW9udGhzIGZyb20gbm93LCB5b3UgbGF1bmNoIGEgbmV3IHNlcnZpY2UuIFlvdSd2ZSBoYW5kZWQgb3V0IGh1bmRyZWRzIG9mIHBhcGVyIGNhcmRzIHdpdGggeW91ciBvbGQgaW5mby48L3A+CiAgICAgICAgICAgIDxwPjxzdHJvbmc+RGlnaXRhbCBjYXJkIG93bmVycz88L3N0cm9uZz4gVGhleSB1cGRhdGUgdGhlaXIgY2FyZCBvbmNlIGluIDUgbWludXRlcy4gRXZlcnlvbmUgd2hvIGV2ZXIgcmVjZWl2ZWQgaXQgc2VlcyB0aGUgbmV3IHNlcnZpY2Ugd2hlbiB0aGV5IG9wZW4gaXQuPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2VuYXJpby1yZXN1bHQiPgogICAgICAgICAgICAgIDxzdHJvbmc+UmVzdWx0Ojwvc3Ryb25nPiBQYXN0IGNvbm5lY3Rpb25zIGJlY29tZSBmdXR1cmUgY2xpZW50cyBiZWNhdXNlIHRoZXkgc2VlIHlvdXIgZXZvbHV0aW9uLiBZb3VyIGNhcmQgaXNuJ3Qgc3RhdGlj4oCUaXQgZ3Jvd3Mgd2l0aCB5b3UuCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9zZWN0aW9uPgoKICA8IS0tIEZJTkFMIENUQSAtLT4KICA8c2VjdGlvbiBjbGFzcz0iY3RhLXNlY3Rpb24iPgogICAgPGRpdiBjbGFzcz0iY3RhLWNvbnRhaW5lciI+CiAgICAgIDxoMj5SZWFkeSBUbyBTdG9wIEJlaW5nIEZvcmdvdHRlbj88L2gyPgogICAgICA8cD5Kb2luIEFmcmljYW4gZW50cmVwcmVuZXVycyB3aG8ndmUgc3RvcHBlZCBnYW1ibGluZyBvbiBwYXBlciBhbmQgc3RhcnRlZCB3aW5uaW5nIHdpdGggZGlnaXRhbC48L3A+CiAgICAgIDxhIGhyZWY9Ii9wcmljaW5nIiBjbGFzcz0iYnRuIj48c3Bhbj5DcmVhdGUgWW91ciBDYXJkIE5vdyDihpI8L3NwYW4+PC9hPgogICAgPC9kaXY+CiAgPC9zZWN0aW9uPgoKICA8IS0tIEZPT1RFUiAtLT4KICA8Zm9vdGVyIGNsYXNzPSJmb290ZXIiPgogICAgPGRpdiBjbGFzcz0iZm9vdGVyLWNvbnRhaW5lciI+CiAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1ncmlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItY29sdW1uIj4KICAgICAgICAgIDxoND5IYW5kc2hha2UuYWZyaWNhPC9oND4KICAgICAgICAgIDxwIHN0eWxlPSJvcGFjaXR5OiAwLjk7IGxpbmUtaGVpZ2h0OiAxLjc7Ij4KICAgICAgICAgICAgQUktcG93ZXJlZCBkaWdpdGFsIGJ1c2luZXNzIGNhcmRzIGZvciBBZnJpY2FuIHByb2Zlc3Npb25hbHMuIFN0b3AgYmVpbmcgZm9yZ290dGVuLiBTdGFydCBiZWluZyByZW1lbWJlcmVkLgogICAgICAgICAgPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1jb2x1bW4iPgogICAgICAgICAgPGg0PlByb2R1Y3Q8L2g0PgogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iLyI+SG9tZTwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iL2Rpc2NvdmVyIj5EaXNjb3ZlcjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iL2dhbGxlcnkiPkdhbGxlcnk8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii9wcmljaW5nIj5QcmljaW5nPC9hPjwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1jb2x1bW4iPgogICAgICAgICAgPGg0PkNvbXBhbnk8L2g0PgogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iL2Fib3V0Ij5BYm91dCBVczwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iL2NvbnRhY3QiPkNvbnRhY3Q8L2E+PC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWNvbHVtbiI+CiAgICAgICAgICA8aDQ+TGVnYWw8L2g0PgogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iL3Rlcm1zIj5UZXJtczwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iL3ByaXZhY3kiPlByaXZhY3k8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii9yZWZ1bmQtcG9saWN5Ij5SZWZ1bmRzPC9hPjwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWJvdHRvbSI+CiAgICAgICAgPHA+wqkgMjAyNSBIYW5kc2hha2UuYWZyaWNhIOKAoiBBbGwgUmlnaHRzIFJlc2VydmVkPC9wPgogICAgICAgIDxwIHN0eWxlPSJtYXJnaW4tdG9wOiAwLjVyZW07Ij5Qb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHBzOi8vZHluYW1pY3BhcmFkaWdtcy5pbyIgc3R5bGU9ImNvbG9yOiB2YXIoLS1nb2xkKTsiPkR5bmFtaWMgUGFyYWRpZ21zPC9hPjwvcD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Zvb3Rlcj4KCiAgPHNjcmlwdD4KICAgIC8vIFRvZ2dsZSBzY2VuYXJpb3MKICAgIGZ1bmN0aW9uIHNob3dTY2VuYXJpbyhzY2VuYXJpb0lkKSB7CiAgICAgIC8vIEhpZGUgYWxsIHNjZW5hcmlvcwogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2NlbmFyaW8nKS5mb3JFYWNoKHMgPT4gcy5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSk7CiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUtYnRuJykuZm9yRWFjaChiID0+IGIuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykpOwogICAgICAKICAgICAgLy8gU2hvdyBzZWxlY3RlZCBzY2VuYXJpbwogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzY2VuYXJpb0lkKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgICAgZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgfQogICAgCiAgICAvLyBTY3JvbGwgYW5pbWF0aW9ucwogICAgY29uc3Qgb2JzZXJ2ZXJPcHRpb25zID0gewogICAgICB0aHJlc2hvbGQ6IDAuMSwKICAgICAgcm9vdE1hcmdpbjogJzBweCAwcHggLTEwMHB4IDBweCcKICAgIH07CiAgICAKICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKGVudHJpZXMpIHsKICAgICAgZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHsKICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHsKICAgICAgICAgIGVudHJ5LnRhcmdldC5jbGFzc0xpc3QuYWRkKCd2aXNpYmxlJyk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0sIG9ic2VydmVyT3B0aW9ucyk7CiAgICAKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5mYWRlLWluJykuZm9yRWFjaChlbCA9PiBvYnNlcnZlci5vYnNlcnZlKGVsKSk7CiAgICAKICAgIC8vIFNlY3VyaXR5CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjb250ZXh0bWVudScsIGUgPT4gZS5wcmV2ZW50RGVmYXVsdCgpKTsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbihlKSB7CiAgICAgIGlmIChlLmtleUNvZGUgPT09IDEyMyB8fCAoZS5jdHJsS2V5ICYmIGUuc2hpZnRLZXkgJiYgZS5rZXlDb2RlID09PSA3MykpIHsKICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIH0KICAgIH0pOwogIDwvc2NyaXB0PgoKPC9ib2R5Pgo8L2h0bWw+","embed":""}
Discover Digital Cards | Handshake.africa - The Future of Networking
Handshake.africa
  • Home
  • Discover
  • Gallery
  • Pricing
🎭 THE BRUTAL TRUTH ABOUT NETWORKING

That Business Card You Handed Out?
They Threw It Away.

88% of paper business cards are discarded within a week. Your connection, your potential, your opportunity—gone. But it doesn't have to be this way...

↓
😢 The Paper Card Problem

Let's Talk About What Really Happens

You invest time, money, and energy into networking. But paper cards are sabotaging your success. Here's the uncomfortable truth...

💸

You're Literally Burning Money

Print 500 cards for $50. 440 get thrown away. That's $44 straight into the trash, plus all the networking time wasted.

🤷‍♀️

The "Where Did I Put That?" Moment

They meant to follow up. They really did. But your card is buried under receipts in their wallet or lost in their desk drawer. Out of sight, out of mind.

📞

Outdated Before They Even Call

Changed your number? New email? Moved offices? Too bad. Those 500 cards you printed are now permanently wrong. Reprint and repeat the waste cycle.

🌍

The Environmental Guilt

27 million trees are cut down yearly for business cards. You're an eco-conscious African entrepreneur. This doesn't align with your values.

🕵️

The Black Hole of Networking

Who viewed your card? When? What did they think? You have NO IDEA. You're networking blind, hoping something sticks.

😴

Boring = Forgettable

A white card with black text looks like everyone else's. You're brilliant and unique—why does your card make you look generic?

Now Picture This Instead...

📱

Conference Networking, Revolutionized

You meet someone impressive. Instead of fumbling for a paper card in your pocket, you simply say: "Let me share my card with you."

You open your phone, show your beautiful digital card, they scan your QR code, and BOOM—they have your complete professional profile.

Video introduction. Portfolio links. Social media. Contact buttons. Everything. Instantly.

The Result: They don't just have your info—they have an experience. They remember you. Your card is already saved in their phone before they even leave the conversation.
🤝

Meeting New Clients, Made Effortless

Client meeting wraps up. They're interested but need to think about it. You don't hope they'll keep your paper card safe.

You send your digital card via WhatsApp. They click. Your card opens. They can contact you with one tap.

Two days later, you check your analytics. They viewed your card 3 times. They watched your video introduction. They clicked your portfolio.

The Result: You know they're interested. You follow up at exactly the right time. You close the deal because you had intelligence, not guesswork.
🎯

Six Months Later, Still Working

Someone you met months ago finally needs your service. With a paper card, they'd have to dig through their desk or search their email.

With your digital card saved in their phone? One search. One tap. They're calling you.

Plus, you updated your card last month with your new service offering—so they see your latest work when they open it.

The Result: Your digital card is working for you 24/7/365. You don't "hope" they remember you. You stay present and accessible forever.

This Is Where The Magic Happens ✨

🎨

Design That Screams "YOU"

Choose colors that match your brand. Add your personality. Upload custom backgrounds. Your card isn't just professional—it's unmistakably YOURS.

🎥

Video Introductions

Let them see your face, hear your voice, feel your energy. Video builds trust instantly. They don't just know who you are—they know YOU.

📊

Analytics That Give You Power

See who viewed your card, when they viewed it, what they clicked. Networking isn't guessing anymore—it's strategy backed by data.

🔄

Update Anytime, Anywhere

New phone number? New service? Takes 5 minutes to update. Everyone who has your card sees the new info instantly. No reprinting. No waste.

🚀

Share It Everywhere

WhatsApp, email, LinkedIn, Twitter, Instagram—one link works everywhere. Your card goes wherever you go, instantly and effortlessly.

💰

ROI That Makes Sense

From $97/year. One new client pays for 10 years of cards. The cost of being forgotten is infinitely higher than the cost of being remembered.

Picture These Real Moments

🎤

You Just Gave A Killer Presentation

Five people approach you afterward wanting to connect. Paper cards? You hand out five and hope they don't lose them.

Digital card? You project your QR code on the screen. "Scan this for my info!" Everyone gets your card. Analytics show you exactly who scanned it and when.

Result: You follow up with all five people intelligently. Three become clients. Your digital card just paid for itself 30x over.
✈️

You're At The Airport

You meet a potential investor in the lounge. They ask for your card. You realize you left them in your hotel room.

With a digital card? You pull out your phone, show your card, they scan it. Connection made. Opportunity captured.

Result: The universe gave you a golden opportunity. You didn't fumble it because you literally can't leave your digital card anywhere—it's in your phone.
💍

Your Business Evolves

Six months from now, you launch a new service. You've handed out hundreds of paper cards with your old info.

Digital card owners? They update their card once in 5 minutes. Everyone who ever received it sees the new service when they open it.

Result: Past connections become future clients because they see your evolution. Your card isn't static—it grows with you.

Ready To Stop Being Forgotten?

Join African entrepreneurs who've stopped gambling on paper and started winning with digital.

Create Your Card Now →

Handshake.africa

AI-powered digital business cards for African professionals. Stop being forgotten. Start being remembered.

Product

  • Home
  • Discover
  • Gallery
  • Pricing

Company

  • About Us
  • Contact

Legal

  • Terms
  • Privacy
  • Refunds

© 2025 Handshake.africa • All Rights Reserved

Powered by Dynamic Paradigms

Image Gallery Grid
T
Please Check Your Email
We Will Be Following Up Shortly
*
*
*

warning