PGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICA8dGl0bGU+RXZlbnQgTGFuZGluZyBQYWdlPC90aXRsZT4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04IiAvPgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyIgLz4KICAgIDx0aXRsZT5FdmVudCBMYW5kaW5nIFBhZ2U8L3RpdGxlPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlRlY2ggU3VtbWl0IDIwMjYg4oCUIGpvaW4gaW5kdXN0cnkgbGVhZGVycyBmb3IgdHdvIGRheXMgb2YgdGFsa3MsIGhhbmRzLW9uIHdvcmtzaG9wcywgYW5kIG5ldHdvcmtpbmcuIiAvPgogICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9InRlY2ggc3VtbWl0LCBjb25mZXJlbmNlLCB3b3Jrc2hvcHMsIGtleW5vdGUsIG5ldHdvcmtpbmcsIHN0YXJ0dXAiIC8+CiAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IlRlY2ggU3VtbWl0IE9yZ2FuaXplcnMiIC8+CiAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9ImluZGV4LCBmb2xsb3csIG1heC1zbmlwcGV0Oi0xLCBtYXgtaW1hZ2UtcHJldmlldzpsYXJnZSwgbWF4LXZpZGVvLXByZXZpZXc6LTEiIC8+CiAgPG1ldGEgbmFtZT0ibGFuZ3VhZ2UiIGNvbnRlbnQ9IkVuZ2xpc2giIC8+CiAgPG1ldGEgbmFtZT0iZGlzdHJpYnV0aW9uIiBjb250ZW50PSJnbG9iYWwiIC8+CiAgPG1ldGEgbmFtZT0icmF0aW5nIiBjb250ZW50PSJHZW5lcmFsIiAvPgogIDxtZXRhIG5hbWU9InJldmlzaXQtYWZ0ZXIiIGNvbnRlbnQ9IjcgZGF5cyIgLz4KICA8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iI2ZmZmZmZiIgLz4KICAgICAgICA8bWV0YSBuYW1lPSJhcHBsaWNhdGlvbi1uYW1lIiBjb250ZW50PSJUZWNoIFN1bW1pdCAyMDI2IiAvPgoKICA8IS0tIENhbm9uaWNhbCAtLT4KICAgIDxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL2V4YW1wbGUuY29tL3RlY2gtc3VtbWl0LTIwMjYvIiAvPgoKICA8IS0tIEZhdmljb25zIC0tPgogIDxsaW5rIHJlbD0iaWNvbiIgaHJlZj0iL2Zhdmljb24uaWNvIiAvPgogIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjE4MHgxODAiIGhyZWY9Ii9hcHBsZS10b3VjaC1pY29uLnBuZyIgLz4KICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgc2l6ZXM9IjMyeDMyIiBocmVmPSIvZmF2aWNvbi0zMngzMi5wbmciIC8+CiAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS9wbmciIHNpemVzPSIxNngxNiIgaHJlZj0iL2Zhdmljb24tMTZ4MTYucG5nIiAvPgoKICA8IS0tIE9wZW4gR3JhcGggLyBGYWNlYm9vayAtLT4KICA8bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0id2Vic2l0ZSIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vZXhhbXBsZS5jb20vdGVjaC1zdW1taXQtMjAyNi8iIC8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IlRlY2ggU3VtbWl0IDIwMjYg4oCUIEV2ZW50IExhbmRpbmcgUGFnZSIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIgY29udGVudD0iSm9pbiBUZWNoIFN1bW1pdCAyMDI2IOKAlCBrZXlub3Rlcywgd29ya3Nob3BzLCBwYW5lbHMsIGFuZCBuZXR3b3JraW5nIGZvciBidWlsZGVycyBhbmQgbGVhZGVycy4iIC8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzAzL2NvZGUtYXNzaXN0YW50LnBuZyIgLz4KICAgICAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6c2l0ZV9uYW1lIiBjb250ZW50PSJUZWNoIFN1bW1pdCIgLz4KICA8bWV0YSBwcm9wZXJ0eT0ib2c6bG9jYWxlIiBjb250ZW50PSJlbl9VUyIgLz4KCiAgPCEtLSBUd2l0dGVyIENhcmRzIC0tPgogIDxtZXRhIG5hbWU9InR3aXR0ZXI6Y2FyZCIgY29udGVudD0ic3VtbWFyeV9sYXJnZV9pbWFnZSIgLz4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6dXJsIiBjb250ZW50PSJodHRwczovL2V4YW1wbGUuY29tL3RlY2gtc3VtbWl0LTIwMjYvIiAvPgogICAgPG1ldGEgbmFtZT0idHdpdHRlcjp0aXRsZSIgY29udGVudD0iVGVjaCBTdW1taXQgMjAyNiDigJQgRXZlbnQgTGFuZGluZyBQYWdlIiAvPgogICAgPG1ldGEgbmFtZT0idHdpdHRlcjpkZXNjcmlwdGlvbiIgY29udGVudD0iSm9pbiBUZWNoIFN1bW1pdCAyMDI2IOKAlCBrZXlub3Rlcywgd29ya3Nob3BzLCBwYW5lbHMsIGFuZCBuZXR3b3JraW5nIGZvciBidWlsZGVycyBhbmQgbGVhZGVycy4iIC8+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmltYWdlIiBjb250ZW50PSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wMy9jb2RlLWFzc2lzdGFudC5wbmciIC8+CiAgICAgICAgPG1ldGEgbmFtZT0idHdpdHRlcjpjcmVhdG9yIiBjb250ZW50PSJAdGVjaHN1bW1pdCIgLz4KCiAgPCEtLSBJbnN0YWdyYW0gLS0+CiAgPG1ldGEgcHJvcGVydHk9Im9nOnNlZV9hbHNvIiBjb250ZW50PSJodHRwczovL3d3dy5pbnN0YWdyYW0uY29tL3dyaXRlY3JlYW1haS8iIC8+CiAgPG1ldGEgbmFtZT0iaW5zdGFncmFtOnNpdGUiIGNvbnRlbnQ9IkB3cml0ZWNyZWFtYWkiIC8+CiAgPG1ldGEgbmFtZT0iaW5zdGFncmFtOmltYWdlIiBjb250ZW50PSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wMy9jb2RlLWFzc2lzdGFudC5wbmciIC8+CgogIDwhLS0gQWRkaXRpb25hbCBTRU8gTWV0YSBUYWdzIC0tPgogIDxtZXRhIG5hbWU9Imdlby5yZWdpb24iIGNvbnRlbnQ9IlVTIiAvPgogIDxtZXRhIG5hbWU9Imdlby5wbGFjZW5hbWUiIGNvbnRlbnQ9Ik5ldyBZb3JrLCBVU0EiIC8+CiAgPG1ldGEgbmFtZT0iZ2VvLnBvc2l0aW9uIiBjb250ZW50PSI0MC43MTI4Oy03NC4wMDYwIiAvPgogIDxtZXRhIG5hbWU9IklDQk0iIGNvbnRlbnQ9IjQwLjcxMjgsIC03NC4wMDYwIiAvPgogIDxtZXRhIG5hbWU9Im1vYmlsZS13ZWItYXBwLWNhcGFibGUiIGNvbnRlbnQ9InllcyIgLz4KICA8bWV0YSBuYW1lPSJIYW5kaGVsZEZyaWVuZGx5IiBjb250ZW50PSJ0cnVlIiAvPgogIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSIgLz4KCiAgPCEtLSBTY2hlbWEgTWFya3VwIChKU09OLUxEKSAtLT4KICA8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2xkK2pzb24iPgogIHsKICAgICJAY29udGV4dCI6ICJodHRwczovL3NjaGVtYS5vcmciLAogICAgIkB0eXBlIjogIkV2ZW50IiwKICAgICJuYW1lIjogIlRlY2ggU3VtbWl0IDIwMjYiLAogICAgInVybCI6ICJodHRwczovL2V4YW1wbGUuY29tL3RlY2gtc3VtbWl0LTIwMjYvIiwKICAgICJkZXNjcmlwdGlvbiI6ICJUZWNoIFN1bW1pdCAyMDI2IOKAlCB0d28gZGF5cyBvZiBrZXlub3Rlcywgd29ya3Nob3BzLCBhbmQgbmV0d29ya2luZyBmb3IgdGVjaG5vbG9naXN0cyBhbmQgZm91bmRlcnMuIiwKICAgICJldmVudFN0YXR1cyI6ICJodHRwczovL3NjaGVtYS5vcmcvRXZlbnRTY2hlZHVsZWQiLAogICAgIm9wZXJhdGluZ1N5c3RlbSI6ICJBbGwiLAogICAgIm9mZmVycyI6IHsKICAgICAgIkB0eXBlIjogIk9mZmVyIiwKICAgICAgInByaWNlIjogIjAuMDAiLAogICAgICAicHJpY2VDdXJyZW5jeSI6ICJVU0QiCiAgICB9LAogICAgICAgICJwdWJsaXNoZXIiOiB7CiAgICAgICAgICAgICJAdHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgICAgICAgICAibmFtZSI6ICJUZWNoIFN1bW1pdCBPcmdhbml6ZXJzIiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2V4YW1wbGUuY29tLyIKICAgICAgICB9LAogICAgImFnZ3JlZ2F0ZVJhdGluZyI6IHsKICAgICAgIkB0eXBlIjogIkFnZ3JlZ2F0ZVJhdGluZyIsCiAgICAgICJyYXRpbmdWYWx1ZSI6ICI0LjkiLAogICAgICAicmV2aWV3Q291bnQiOiAiNTIwMSIKICAgIH0KICB9CiAgPC9zY3JpcHQ+CgogIDwhLS0gRm9udHMgYW5kIENTUyAtLT4KICA8IS0tIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbSIgLz4KICA8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20iIGNyb3Nzb3JpZ2luIC8+CiAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1PdXRmaXQ6d2dodEA0MDA7NTAwOzYwMDs3MDAmZmFtaWx5PVNwYWNlK0dyb3Rlc2s6d2dodEA0MDA7NTAwOzYwMDs3MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiIC8+CiAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9mb250LWF3ZXNvbWUvNi4wLjAvY3NzL2FsbC5taW4uY3NzIiAvPiAtLT4KICAgIDxzY3JpcHQgdHlwZT0iaW1wb3J0bWFwIj4KICAgICAgewogICAgICAgICJpbXBvcnRzIjogewogICAgICAgICAgInJlYWN0IjogImh0dHBzOi8vZXNtLnNoL3JlYWN0QDE4LjIuMCIsCiAgICAgICAgICAicmVhY3QtZG9tIjogImh0dHBzOi8vZXNtLnNoL3JlYWN0LWRvbUAxOC4yLjAiLAogICAgICAgICAgInJlYWN0LWRvbS8iOiAiaHR0cHM6Ly9lc20uc2gvcmVhY3QtZG9tQDE4LjIuMC8iLAogICAgICAgICAgIkBjb2Rlc2FuZGJveC9zYW5kcGFjay1yZWFjdCI6ICJodHRwczovL2VzbS5zaC9AY29kZXNhbmRib3gvc2FuZHBhY2stcmVhY3RAMi44LjA/ZGVwcz1yZWFjdEAxOC4yLjAmZGVwcz1yZWFjdC1kb21AMTguMi4wIgogICAgICAgIH0KICAgICAgfQogICAgPC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9raXQuZm9udGF3ZXNvbWUuY29tL2JjMDgxNzkyZDQuanMiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0PgogICAgCiAgICA8c3R5bGU+Cjpyb290IHsKICAgIC0tcHJpbWFyeS1jb2xvcjogIzJkMmQyZDsKICAgIC0tYWNjZW50LWNvbG9yOiAjNGE5MGUyOwogICAgLS1ibHVlLWNvbG9yOiAjNGE5MGUyOwogICAgCiAgICAvKiBEYXJrIHRoZW1lIGNvbG9ycyAoZGVmYXVsdCBhbmQgb25seSB0aGVtZSkgKi8KICAgIC0tYmctY29sb3I6ICMwMDAwMDA7CiAgICAtLXN1cmZhY2UtY29sb3I6ICMyZDJkMmQ7CiAgICAtLXRleHQtY29sb3I6ICNlMGUwZTA7CiAgICAtLWJvcmRlci1jb2xvcjogIzQwNDA0MDsKICAgIC0taW5wdXQtYmc6ICMyZDJkMmQ7CiAgICAtLWlucHV0LWJvcmRlcjogIzQwNDA0MDsKICAgIC0tcGlsbC1iZzogIzMzMzMzMzsKICAgIC0tYnV0dG9uLWJnOiAjNDA0MDQwOwogICAgLS1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgIC0taGVhZGVyLWJvcmRlcjogIzQwNDA0MDsKICAgIC0tZm9vdGVyLWJnOiAjMmQyZDJkOwogICAgLS1jYXJkLWJnOiAjMzMzMzMzOwogICAgLS1iZy1zZWNvbmRhcnk6ICM0NDQ0NDQ7CiAgICAtLXRleHQtc2Vjb25kYXJ5OiAjY2NjY2NjOwogICAgLS1ibHVlLWhvdmVyOiAjM2E3YmM4Owp9CgovKiBTY3JvbGxiYXIgd2lkdGggKi8KOjotd2Via2l0LXNjcm9sbGJhciB7CiAgd2lkdGg6IDEycHg7Cn0KCi8qIFRyYWNrIChiYWNrZ3JvdW5kKSAqLwo6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICBiYWNrZ3JvdW5kOiAjMWExYTFhOyAvKiBkYXJrIGJhY2tncm91bmQgKi8KfQoKLyogSGFuZGxlICh0aHVtYikgKi8KOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgYmFja2dyb3VuZDogIzU1NTsgLyogZGFyayBncmF5ICovCiAgYm9yZGVyLXJhZGl1czogNnB4Owp9CgovKiBIYW5kbGUgb24gaG92ZXIgKi8KOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7CiAgYmFja2dyb3VuZDogIzc3NzsKfQovKiBCYXNlIGNoYXQgYnViYmxlIHN0eWxlcyBmb3IgZGFyayB0aGVtZSAqLwouY2hhdC1idWJibGUuYWkgewogICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzYTNhM2E7IC8qIE1vcmUgc3BlY2lmaWMgdGhhbiAtLXN1cmZhY2UtY29sb3IgKi8KICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICM1MDUwNTA7IC8qIE1vcmUgc3BlY2lmaWMgdGhhbiAtLWJvcmRlci1jb2xvciAqLwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OwogICAgbWFyZ2luLWxlZnQ6IDE1cHg7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwp9CgouY2hhdC1idWJibGUuYWk6OmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IC04cHg7CiAgICB3aWR0aDogOHB4OwogICAgaGVpZ2h0OiA4cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2EzYTNhOyAvKiBNYXRjaGVzIHRoZSBidWJibGUgYmFja2dyb3VuZCAqLwogICAgY2xpcC1wYXRoOiBwb2x5Z29uKDEwMCUgMCwgMCUgMTAwJSwgMTAwJSAxMDAlKTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlOwp9CgouZ2l0aHViLXN0YXJzLAouZ2l0aHViLWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKfQoKLmJhZGdlLXRvZ2V0aGVyIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CiAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICBvcGFjaXR5OiAwLjg7Cn0KCiogewogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWY7Cn0KCi8qIFdvcmRQcmVzcyBUaGVtZSBDb21wYXRpYmlsaXR5IC0gRnVsbCBQYWdlIEJhY2tncm91bmQgKi8KYm9keSwgaHRtbCB7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBvdmVyZmxvdy14OiBoaWRkZW4gIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKfQoKLyogV29yZFByZXNzIGNvbnRhaW5lciBhZGp1c3RtZW50cyAtIEZ1bGwgd2lkdGggKi8KLmNvbnRhaW5lciwgLmNvbnRhaW5lci1mbHVpZCwgLndyYXBwZXIsIC5jb250ZW50LCAubWFpbiwgCi5zaXRlLWNvbnRlbnQsIC5lbnRyeS1jb250ZW50LCAucGFnZS1jb250ZW50IHsKICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50Owp9CgovKiBFbnN1cmUgb3VyIGNvbnRlbnQgd29ya3Mgd2l0aGluIFdvcmRQcmVzcyAqLwojbGFuZGluZ1NlY3Rpb24gewogICAgYmFja2dyb3VuZDogIzAwMDAwMDsKICAgIGNvbG9yOiAjZTBlMGUwOwp9CgovKiBGaXggaGVybyBzZWN0aW9uIGNvbnRlbnQgY2VudGVyaW5nIC0ga2VlcCBjb250ZW50IGNlbnRlcmVkIGJ1dCBiYWNrZ3JvdW5kIGZ1bGwtd2lkdGggKi8KLmhlcm8tc2VjdGlvbiB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5oZXJvLWNvbnRlbnQsIC5oZXJvLXRleHQgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDgwMHB4ICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAyMHB4ICFpbXBvcnRhbnQ7Cn0KCi8qIEZpeCBzdGFyIGxvZ28gcG9zaXRpb25pbmcgLSBrZWVwIGl0IGNlbnRlcmVkICovCi5oZXJvLXNlY3Rpb24gaDEgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGdhcDogMTVweCAhaW1wb3J0YW50Owp9CgouaGVyby1zZWN0aW9uIHAgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50Owp9CgovKiBGaXggdGhlIGFjdHVhbCBpbnB1dCBjb250YWluZXIgY2xhc3NlcyBmcm9tIEhUTUwgKi8KLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDEwcHggIWltcG9ydGFudDsKfQoKLmlucHV0LWlubmVyLWNvbnRhaW5lciB7CiAgICB3aWR0aDogNTAlICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDUwJSAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKfQoKLmlucHV0LWlubmVyLWNvbnRhaW5lci52ZXJ0aWNhbCB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpICFpbXBvcnRhbnQ7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSkgIWltcG9ydGFudDsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJhZGl1czogMTZweCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5pbnB1dC1jb250cm9scy1yb3cgewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJhZGl1czogMCAwIDEycHggMTJweCAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgIG1pbi1oZWlnaHQ6IDUwcHggIWltcG9ydGFudDsKICAgIGdhcDogMTJweCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogNnB4IDEwcHggIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKfQoKLyogRml4IHByb21wdCBpbnB1dCBzdHlsaW5nIHRvIG1hdGNoIG9yaWdpbmFsICovCi5wcm9tcHQtaW5wdXQgewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAhaW1wb3J0YW50OwogICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsKICAgIGJvcmRlci1yYWRpdXM6IDEycHggMTJweCAwIDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDFyZW0gMS41cmVtICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IDFyZW0gIWltcG9ydGFudDsKICAgIGJvcmRlci1ib3R0b206IG5vbmUgIWltcG9ydGFudDsKICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7CiAgICByZXNpemU6IG5vbmUgIWltcG9ydGFudDsKICAgIG1pbi1oZWlnaHQ6IDYwcHggIWltcG9ydGFudDsKICAgIG1heC1oZWlnaHQ6IDIwMHB4ICFpbXBvcnRhbnQ7CiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Owp9CgoKCi8qIEZpeCBzdWdnZXN0ZWQgYXBwcyBzZWN0aW9uIC0gY2VudGVyZWQgd2l0aCBwcm9wZXIgd2lkdGggKi8KLnN1Z2dlc3RlZC1hcHBzIHsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKICAgIGdhcDogMTBweCAhaW1wb3J0YW50OwogICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMjBweCAhaW1wb3J0YW50Owp9Cgouc3VnZ2VzdGVkLWFwcCB7CiAgICBtYXJnaW46IDVweCAhaW1wb3J0YW50OwogICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKfQoKLyogRml4IGZlYXR1cmVzIGdyaWQgLSAzIGNhcmRzIGluIGEgcm93LCBjZW50ZXJlZCAqLwouZmVhdHVyZXMtZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAyODBweCkgIWltcG9ydGFudDsKICAgIGdhcDogMjBweCAhaW1wb3J0YW50OwogICAgbWF4LXdpZHRoOiBmaXQtY29udGVudCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDIwcHggIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5mZWF0dXJlLWNhcmQgewogICAgd2lkdGg6IDI4MHB4ICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDI4MHB4ICFpbXBvcnRhbnQ7Cn0KCi8qIEVuc3VyZSBhbGwgc2VjdGlvbnMgYXJlIHByb3Blcmx5IGNlbnRlcmVkICovCi5mZWF0dXJlcy1zZWN0aW9uLCAuaG93LWl0LXdvcmtzLXNlY3Rpb24sIC5wb3NzaWJpbGl0aWVzLXNlY3Rpb24sCi5kZW1vLXNlY3Rpb24sIC5jYXBhYmlsaXRpZXMtc2VjdGlvbiwgLnRlc3RpbW9uaWFscy1zZWN0aW9uLCAuY3RhLXNlY3Rpb24gewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEyMDBweCAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoKLyogV29yZFByZXNzIHBhZ2Utc3BlY2lmaWMgc3R5bGluZyAtIEZ1bGwgYmFja2dyb3VuZCBjb3ZlcmFnZSAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgewogICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgY29sb3I6ICNlMGUwZTAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWluLWhlaWdodDogMTAwdmggIWltcG9ydGFudDsKfQoKYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyLApib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIHsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIGNvbG9yOiAjZTBlMGUwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAtNDBweCAhaW1wb3J0YW50OwogICAgbWFyZ2luLWJvdHRvbTogLTE1MHB4ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXRvcDogNDBweCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1ib3R0b206IDE1MHB4ICFpbXBvcnRhbnQ7CiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMTkwcHgpICFpbXBvcnRhbnQ7Cn0KCi8qIFdvcmRQcmVzcy1zcGVjaWZpYyBjZW50ZXJpbmcgZm9yIEhvdyBJdCBXb3JrcyBzZWN0aW9uICovCmJvZHkucGFnZS1pZC01OTM2MyAuaG93LWl0LXdvcmtzLXNlY3Rpb24gewogICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEwMDBweCAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoKLyogRm9yY2UgY2VudGVyIG9ubHkgdGhlIHN1YnRpdGxlIHRleHQgKi8KYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc3VidGl0bGUgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi8qIENlbnRlciBBTEwgc2VjdGlvbiBzdWJ0aXRsZXMgaW4gV29yZFByZXNzICovCmJvZHkucGFnZS1pZC01OTM2MyAuaGVyby1zdWJ0aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc3VidGl0bGUsCmJvZHkucGFnZS1pZC01OTM2MyAuZW5kbGVzcy1zdWJ0aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5hY3Rpb24tc3VidGl0bGUsCmJvZHkucGFnZS1pZC01OTM2MyAubW9yZS1zdWJ0aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5sb3ZlZC1zdWJ0aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5jdGEtc3VidGl0bGUgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogNzAwcHggIWltcG9ydGFudDsKICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50Owp9CgovKiBFbnN1cmUgc2VjdGlvbiB0aXRsZXMgYXJlIGNlbnRlcmVkIGluIFdvcmRQcmVzcyAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgLmhvdy1pdC13b3Jrcy10aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5lbmRsZXNzLXRpdGxlLApib2R5LnBhZ2UtaWQtNTkzNjMgLmFjdGlvbi10aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5tb3JlLXRpdGxlLApib2R5LnBhZ2UtaWQtNTkzNjMgLmxvdmVkLXRpdGxlLApib2R5LnBhZ2UtaWQtNTkzNjMgLmN0YS10aXRsZSB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9CgovKiBXb3JkUHJlc3Mtc3BlY2lmaWMgY2VudGVyaW5nIGZvciBhbGwgc2VjdGlvbnMgKi8KYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc2VjdGlvbiwKYm9keS5wYWdlLWlkLTU5MzYzIC5lbmRsZXNzLXBvc3NpYmlsaXRpZXMtc2VjdGlvbiwKYm9keS5wYWdlLWlkLTU5MzYzIC5zZWUtaXQtaW4tYWN0aW9uLXNlY3Rpb24sCmJvZHkucGFnZS1pZC01OTM2MyAubW9yZS1jYXBhYmlsaXRpZXMtc2VjdGlvbiwKYm9keS5wYWdlLWlkLTU5MzYzIC5sb3ZlZC1ieS1kZXZlbG9wZXJzLXNlY3Rpb24sCmJvZHkucGFnZS1pZC01OTM2MyAucmVhZHktdG8tY29kZS1zZWN0aW9uIHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgbWF4LXdpZHRoOiAxMjAwcHggIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgcGFkZGluZy1sZWZ0OiAycmVtICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXJpZ2h0OiAycmVtICFpbXBvcnRhbnQ7Cn0KCi8qIEVuc3VyZSBXb3JkUHJlc3MgY29udGFpbmVycyBkb24ndCBhZGQgd2hpdGUgc3BhY2UgKi8KYm9keS5wYWdlLWlkLTU5MzYzIC5jb250YWluZXIsCmJvZHkucGFnZS1pZC01OTM2MyAud3JhcHBlciwKYm9keS5wYWdlLWlkLTU5MzYzIC5jb250ZW50LApib2R5LnBhZ2UtaWQtNTkzNjMgLm1haW4sCmJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1jb250ZW50LApib2R5LnBhZ2UtaWQtNTkzNjMgLmVudHJ5LWNvbnRlbnQsCmJvZHkucGFnZS1pZC01OTM2MyAucGFnZS1jb250ZW50IHsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgZXhjZXNzaXZlIFdvcmRQcmVzcyBvdmVycmlkZXMgLSBrZWVwIG1pbmltYWwgKi8KCi8qIFdvcmRQcmVzcyBjb250YWluZXIgY29tcGF0aWJpbGl0eSAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRhaW5lciwKYm9keS5wYWdlLWlkLTU5MzYzIC53cmFwcGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRlbnQsCmJvZHkucGFnZS1pZC01OTM2MyAubWFpbiwKYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWNvbnRlbnQgewogICAgd2lkdGg6IDEwMCU7CiAgICBtYXgtd2lkdGg6IG5vbmU7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwp9CgovKiBSZXNwb25zaXZlIERlc2lnbiBJbXByb3ZlbWVudHMgKi8KLyogRm9yIHNjcmVlbnMgOTAwcHggYW5kIGJlbG93IC0gU1RBQ0sgVkVSVElDQUxMWSAqLwpAbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHsKICAgIC5zdGVwcy1jb250YWluZXIgeyAKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7IAogICAgICAgIGdhcDogMS41cmVtICFpbXBvcnRhbnQ7IAogICAgICAgIHBhZGRpbmc6IDAgMXJlbSAhaW1wb3J0YW50OwogICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgfQogICAgLnN0ZXAtYXJyb3cgeyAKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZykgIWltcG9ydGFudDsgCiAgICAgICAgZm9udC1zaXplOiAxLjJyZW0gIWltcG9ydGFudDsKICAgIH0KICAgIC5zdGVwLWNhcmQgeyAKICAgICAgICBtYXgtd2lkdGg6IDkwJSAhaW1wb3J0YW50OyAKICAgICAgICB3aWR0aDogOTAlICFpbXBvcnRhbnQ7IAogICAgICAgIG1pbi13aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDEuNXJlbSAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKICAgIH0KICAgIC5zdGVwLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEuMXJlbSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogICAgfQogICAgLnN0ZXAtZGVzY3JpcHRpb24gewogICAgICAgIGZvbnQtc2l6ZTogMC45cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNCAhaW1wb3J0YW50OwogICAgfQp9CgovKiBNb2JpbGUgcmVzcG9uc2l2ZSBmaXhlcyAqLwpAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgIC5hcHAtY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICB9CiAgICAKICAgIC8qIE1vYmlsZSBmb290ZXIgYmFja2dyb3VuZCBmaXggLSBpbmNyZWFzZWQgZXh0ZW5zaW9uICovCiAgICBib2R5IHsKICAgICAgICBtYXJnaW4tdG9wOiA0MHB4OwogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA0MDBweCkgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmctYm90dG9tOiAzMDBweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA0MDBweCkgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmctYm90dG9tOiAzMDBweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuYXBwLWNvbnRhaW5lciB7CiAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDQwMHB4KSAhaW1wb3J0YW50OwogICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDMwMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIEV4dGVuZCBiYWNrZ3JvdW5kIHBhdHRlcm4gZG93biBzaWduaWZpY2FudGx5ICovCiAgICAjbGFuZGluZ1NlY3Rpb246OmJlZm9yZSB7CiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAzMDBweCkgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogTW9iaWxlIGhlcm8gc2VjdGlvbiBpbXByb3ZlbWVudHMgKi8KICAgIC5oZXJvLXNlY3Rpb24gewogICAgICAgIHBhZGRpbmc6IDIwcHggMTVweCAhaW1wb3J0YW50OwogICAgICAgIG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmluc2lkZS1oZXJvLXNlY3Rpb24gewogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgICAgICBnYXA6IDE1cHggIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiAwIDVweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuaGVyby1pY29uIGltZyB7CiAgICAgICAgd2lkdGg6IDIuNXJlbSAhaW1wb3J0YW50OwogICAgICAgIGhlaWdodDogMi41cmVtICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5oZXJvLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEuOHJlbSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjIgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmhlcm8tc3VidGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMXJlbSAhaW1wb3J0YW50OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQgIWltcG9ydGFudDsKICAgICAgICBtYXJnaW46IDEwcHggMCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5oZXJvLWRlc2NyaXB0aW9uIHsKICAgICAgICBmb250LXNpemU6IDAuOXJlbSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbjogMTBweCAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZzogMCA1cHggIWltcG9ydGFudDsKICAgICAgICBsaW5lLWhlaWdodDogMS40ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5wb3dlcmVkLXBpbGwgewogICAgICAgIHBhZGRpbmc6IDhweCAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luOiAxMHB4IGF1dG8gIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tbGVmdDogMTVweCAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1yaWdodDogMTVweCAhaW1wb3J0YW50OwogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDMwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAzMHB4KSAhaW1wb3J0YW50OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgICAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIEVuc3VyZSBsYW5kaW5nU2VjdGlvbiBoYXMgcHJvcGVyIHBhZGRpbmcgb24gbW9iaWxlIHRvIHByZXZlbnQgZWxlbWVudHMgdG91Y2hpbmcgZWRnZXMgKi8KICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZy1yaWdodDogMTVweCAhaW1wb3J0YW50OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgI2xhbmRpbmdTZWN0aW9uIC5wb3dlcmVkLXBpbGwgewogICAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogTW9iaWxlIGZvb3RlciBzdHlsZXMgKi8KICAgIC5mb290ZXIgewogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAxNXB4OwogICAgICAgIHBhZGRpbmc6IDJyZW0gMS41cmVtOwogICAgICAgIHBhZGRpbmctYm90dG9tOiBjYWxjKDJyZW0gKyAxMDBweCkgIWltcG9ydGFudDsKICAgICAgICBtaW4taGVpZ2h0OiAxMDBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAtMTAwcHggIWltcG9ydGFudDsKICAgICAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIE1vYmlsZSBpbnB1dCBzZWN0aW9uIGZpeGVzICovCiAgICAuaW5wdXQtc2VjdGlvbiB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZzogMCAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuaW5wdXQtb3V0ZXItY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiAxMHB4IDVweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuaW5wdXQtaW5uZXItY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuaW5wdXQtY29udGFpbmVyLCAucHJvbXB0LWlucHV0LCAuaW5wdXQtZ3JvdXAgewogICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAvKiBNb2JpbGUgaGVybyBjb250ZW50ICovCiAgICAuaGVyby1jb250ZW50LCAuaGVyby10ZXh0IHsKICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiAwIDIwcHggIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogTW9iaWxlIGZlYXR1cmVzIGdyaWQgLSBzaW5nbGUgY29sdW1uICovCiAgICAuZmVhdHVyZXMtZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgIWltcG9ydGFudDsKICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiAxMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5mZWF0dXJlLWNhcmQgewogICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgbWF4LXdpZHRoOiAzNTBweCAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIE1vYmlsZSBpbnB1dCBjb250YWluZXJzICovCiAgICAuaW5wdXQtb3V0ZXItY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiAxMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5pbnB1dC1pbm5lci1jb250YWluZXIgewogICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDAgMTBweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAucHJvbXB0LWlucHV0IHsKICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogTW9iaWxlIHN1Z2dlc3RlZCBhcHBzICovCiAgICAuc3VnZ2VzdGVkLWFwcHMgewogICAgICAgIHBhZGRpbmc6IDAgMjBweCAhaW1wb3J0YW50OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIE1vYmlsZS1zcGVjaWZpYyBiYWNrZ3JvdW5kIGhlaWdodCByZWR1Y3Rpb24gKi8KICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciwKICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgIG1hcmdpbi10b3A6IC0yMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZy10b3A6IDIwcHggIWltcG9ydGFudDsKICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMTcwcHgpICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIEZ1cnRoZXIgcmVkdWN0aW9uIGZvciB2ZXJ5IHNtYWxsIHNjcmVlbnMgKi8KICAgIEBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkgewogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIHsKICAgICAgICAgICAgbWFyZ2luLXRvcDogLTEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy10b3A6IDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDE2MHB4KSAhaW1wb3J0YW50OwogICAgICAgIH0KICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7CiAgICAvKiBFeHRyYSBzbWFsbCBzY3JlZW5zIC0gaW1wcm92ZWQgaGVybyByZXNwb25zaXZlbmVzcyAqLwogICAgLmhlcm8tc2VjdGlvbiBoMSB7CiAgICAgICAgZm9udC1zaXplOiAxLjZyZW0gIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmhlcm8tc2VjdGlvbiBwIHsKICAgICAgICBmb250LXNpemU6IDAuODVyZW0gIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmhlcm8tdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuaGVyby1zdWJ0aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiAwIDVweCAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbjogOHB4IDAgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmhlcm8tZGVzY3JpcHRpb24gewogICAgICAgIGZvbnQtc2l6ZTogMC44cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZzogMCA1cHggIWltcG9ydGFudDsKICAgICAgICBtYXJnaW46IDhweCAwICFpbXBvcnRhbnQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMyAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuaGVyby1pY29uIGltZyB7CiAgICAgICAgd2lkdGg6IDJyZW0gIWltcG9ydGFudDsKICAgICAgICBoZWlnaHQ6IDJyZW0gIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLnBvd2VyZWQtcGlsbCB7CiAgICAgICAgZm9udC1zaXplOiAwLjhyZW0gIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiA2cHggMTJweCAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbjogOHB4IGF1dG8gIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tbGVmdDogMTVweCAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1yaWdodDogMTVweCAhaW1wb3J0YW50OwogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDMwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAzMHB4KSAhaW1wb3J0YW50OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgICAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIFZlcnkgc21hbGwgc2NyZWVucyAoYmVsb3cgNDgwcHgpICovCiAgICBAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHsKICAgICAgICAuaGVhZGVyLWZsZXggewogICAgICAgICAgICBwYWRkaW5nOiAwIDhweCAhaW1wb3J0YW50OwogICAgICAgICAgICBnYXA6IDRweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmxvZ28tdGV4dCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbSAhaW1wb3J0YW50OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAubG9nby1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC50b2dnbGUtdmlldy1idG4gewogICAgICAgICAgICBmb250LXNpemU6IDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogNXB4IDhweCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDc1cHggIWltcG9ydGFudDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmhlYWRlci1yaWdodCB7CiAgICAgICAgICAgIGdhcDogNHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDNweCA0cHggIWltcG9ydGFudDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmRvd25sb2FkLWJ0biwKICAgICAgICAuZGVwbG95LW5ldGxpZnktYnRuLAogICAgICAgIC5zZXQtdG9rZW4tYnRuIHsKICAgICAgICAgICAgbWluLXdpZHRoOiAyOHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAyOHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGhlaWdodDogMjhweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiA0cHggIWltcG9ydGFudDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmRvd25sb2FkLWljb24sCiAgICAgICAgLmRlcGxveS1pY29uLAogICAgICAgIC5zZXQtdG9rZW4taWNvbiB7CiAgICAgICAgICAgIHdpZHRoOiAxNnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGhlaWdodDogMTZweCAhaW1wb3J0YW50OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZG93bmxvYWQtaWNvbiBzdmcsCiAgICAgICAgLmRlcGxveS1pY29uIHN2ZywKICAgICAgICAuc2V0LXRva2VuLWljb24gc3ZnIHsKICAgICAgICAgICAgd2lkdGg6IDE2cHggIWltcG9ydGFudDsKICAgICAgICAgICAgaGVpZ2h0OiAxNnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgfQogICAgCiAgICAvKiBUYWJsZXQgc2NyZWVucyAoNDgxcHggdG8gNzY4cHgpICovCiAgICBAbWVkaWEgKG1pbi13aWR0aDogNDgxcHgpIGFuZCAobWF4LXdpZHRoOiA3NjhweCkgewogICAgICAgIC5oZWFkZXItZmxleCB7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgMTVweCAhaW1wb3J0YW50OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAudG9nZ2xlLXZpZXctYnRuIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxMXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDZweCAxMnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTEwcHggIWltcG9ydGFudDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmhlYWRlci1yaWdodCB7CiAgICAgICAgICAgIGdhcDogOHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgfQogICAgCiAgICAvKiBNZWRpdW0gdGFibGV0cyAoNzY5cHggdG8gMTAyNHB4KSAqLwogICAgQG1lZGlhIChtaW4td2lkdGg6IDc2OXB4KSBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7CiAgICAgICAgYm9keS5hcHAtYWN0aXZlIC5oZWFkZXItZmxleCB7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweCAhaW1wb3J0YW50OwogICAgICAgIH0KICAgICAgICAKICAgICAgICBib2R5LmFwcC1hY3RpdmUgLnRvZ2dsZS12aWV3LWJ0biB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiA3cHggMTRweCAhaW1wb3J0YW50OwogICAgICAgICAgICBtaW4td2lkdGg6IDExMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KICAgICAgICAKICAgICAgICBib2R5LmFwcC1hY3RpdmUgLmRvd25sb2FkLWJ0biwKICAgICAgICBib2R5LmFwcC1hY3RpdmUgLmRlcGxveS1uZXRsaWZ5LWJ0biwKICAgICAgICBib2R5LmFwcC1hY3RpdmUgLnNldC10b2tlbi1idG4gewogICAgICAgICAgICBwYWRkaW5nOiA3cHggMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICBtaW4td2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgaGVpZ2h0OiAzNHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGdhcDogNnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuZG93bmxvYWQtYnRuIHNwYW46bm90KC5kb3dubG9hZC1pY29uKSwKICAgICAgICBib2R5LmFwcC1hY3RpdmUgLmRlcGxveS1uZXRsaWZ5LWJ0biBzcGFuOm5vdCguZGVwbG95LWljb24pLAogICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuc2V0LXRva2VuLWJ0biBzcGFuOm5vdCguc2V0LXRva2VuLWljb24pIHsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgfQogICAgCiAgICAvKiBFeHRyYSBzbWFsbCBzY3JlZW5zIC0gaW1wcm92ZWQgdGVzdGltb25pYWwgcmVzcG9uc2l2ZW5lc3MgKi8KICAgIC50ZXN0aW1vbmlhbC1jb250YWluZXIgewogICAgICAgIG1pbi1oZWlnaHQ6IDMwMHB4OwogICAgICAgIHBhZGRpbmc6IDAgMC41cmVtOwogICAgICAgIG1hcmdpbjogMCBhdXRvIDEuNXJlbTsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLW5hdiB7CiAgICAgICAgd2lkdGg6IDM1cHg7CiAgICAgICAgaGVpZ2h0OiAzNXB4OwogICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgfQogICAgCiAgICAudGVzdGltb25pYWwtbmF2LnByZXYtYnRuIHsKICAgICAgICBsZWZ0OiA1cHg7CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1uYXYubmV4dC1idG4gewogICAgICAgIHJpZ2h0OiA1cHg7CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1jYXJkIHsKICAgICAgICBwYWRkaW5nOiAxcmVtOwogICAgICAgIG1hcmdpbjogMCA1cHg7CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1hdmF0YXIgewogICAgICAgIHdpZHRoOiAzNXB4OwogICAgICAgIGhlaWdodDogMzVweDsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLXF1b3RlIHsKICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1hdXRob3ItbmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgfQogICAgCiAgICAudGVzdGltb25pYWwtYXV0aG9yLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDAuODVyZW07CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1hdXRob3ItY29tcGFueSB7CiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1kb3RzIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07CiAgICAgICAgZ2FwOiAwLjVyZW07CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1kb3RzIC5kb3QgewogICAgICAgIHdpZHRoOiA4cHg7CiAgICAgICAgaGVpZ2h0OiA4cHg7CiAgICB9CiAgICAKICAgIC5mZWF0dXJlcy1ncmlkLCAucG9zc2liaWxpdGllcy1ncmlkLCAuY2FwYWJpbGl0aWVzLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7CiAgICAgICAgZ2FwOiAxcmVtICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIEFkanVzdCB0b3AgbWFyZ2luIGZvciB2ZXJ5IHNtYWxsIHNjcmVlbnMgLSBpbmNyZWFzZWQgZXh0ZW5zaW9uICovCiAgICBib2R5IHsKICAgICAgICBtYXJnaW4tdG9wOiA1MHB4OwogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA2MDBweCkgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmctYm90dG9tOiA0MDBweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA2MDBweCkgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmctYm90dG9tOiA0MDBweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuYXBwLWNvbnRhaW5lciB7CiAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDYwMHB4KSAhaW1wb3J0YW50OwogICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDQwMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIEV4dGVuZCBiYWNrZ3JvdW5kIHBhdHRlcm4gZG93biBmdXJ0aGVyIG9uIHNtYWxsIHNjcmVlbnMgKi8KICAgICNsYW5kaW5nU2VjdGlvbjo6YmVmb3JlIHsKICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDYwMHB4KSAhaW1wb3J0YW50OwogICAgfQp9Cgpib2R5IHsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDA7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtZmFtaWx5OiAnU2Vnb2UgVUknLCBBcmlhbCwgc2Fucy1zZXJpZjsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UsIGNvbG9yIDAuM3MgZWFzZTsKICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKfQoKLyogSGlkZSBtYWluIHBhZ2Ugc2Nyb2xsYmFyIHdoZW4gYXBwIGlzIGFjdGl2ZSAqLwpib2R5LmFwcC1hY3RpdmUgewogICAgLyogb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGhlaWdodDogMTAwdmg7ICovCiAgICBtaW4taGVpZ2h0OiAxMDB2aDsKfQoKLyogTW9iaWxlIGJvZHkgaGFuZGxpbmcgKi8KQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgICBib2R5LmFwcC1hY3RpdmUgewogICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgIH0KfQoKLyogRGVza3RvcCBzY3JlZW5zIGFib3ZlIDc2OHB4IC0gcmVtb3ZlIHdoaXRlIHNwYWNlcyAqLwpAbWVkaWEgKG1pbi13aWR0aDogNzY5cHgpIHsKICAgIC5jb250YWluZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgIH0KICAgIAogICAgLmhlYWRlci1mbGV4IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICB9Cn0KCi5jb250YWluZXIgewogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMDsKfQoKLmhlYWRlciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOSk7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7CiAgICBwYWRkaW5nOiAxcmVtIDA7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgei1pbmRleDogMTAwOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZSwgb3BhY2l0eSAwLjNzIGVhc2UsIHRyYW5zZm9ybSAwLjNzIGVhc2U7CiAgICBkaXNwbGF5OiBub25lOyAvKiBIaWRkZW4gYnkgZGVmYXVsdCBvbiBsYW5kaW5nIHBhZ2UgKi8KICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpOwogICAgYm94LXNoYWRvdzogMCAycHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgICB3aWR0aDogMTAwJTsKICAgIG1hcmdpbjogMDsKfQoKLyogU2hvdyBoZWFkZXIgb25seSB3aGVuIGNvbnZlcnNhdGlvbiBoYXMgc3RhcnRlZCAqLwpib2R5LmFwcC1hY3RpdmUgLmhlYWRlciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7Cn0KCi8qIEZ1bGwtd2lkdGggaGVhZGVyIGZpeCBvbmx5IHdoZW4gYXBwIGlzIGFjdGl2ZSAoZHVyaW5nIGdlbmVyYXRpb24pIC0gYWJvdmUgMTAyNHB4ICovCkBtZWRpYSAobWluLXdpZHRoOiAxMDI1cHgpIHsKICAgIGJvZHkuYXBwLWFjdGl2ZSAuaGVhZGVyLAogICAgYm9keS5hcHAtYWN0aXZlICN3cmFwcGVyIC5oZWFkZXIsCiAgICBib2R5LmFwcC1hY3RpdmUgLmZ1c2lvbi13cmFwcGVyIC5oZWFkZXIsCiAgICBib2R5LmFwcC1hY3RpdmUgLmZ1c2lvbi1wYWdlLXdyYXBwZXIgLmhlYWRlciwKICAgIGJvZHkuYXBwLWFjdGl2ZSAuZnVzaW9uLXBhZ2Utd3JhcHBlci1yb3cgLmhlYWRlciB7CiAgICAgICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgbWF4LXdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmctdG9wOiBjYWxjKDFyZW0gKyA1MHB4KSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi10b3A6IC01MHB4ICFpbXBvcnRhbnQ7CiAgICB9Cn0KCi5oZWFkZXItZmxleCB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgoubG9nby1ncm91cCB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMTJweDsKICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CiAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNzQsIDE0NCwgMjI2LCAwLjIpOwp9CgoubG9nby1ncm91cDpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xNSk7CiAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwp9CgoubG9nby1pY29uIHsKICAgIGZvbnQtc2l6ZTogMS41cmVtOwogICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICB0ZXh0LXNoYWRvdzogMCAwIDEwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlOwogICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7Cn0KCi5sb2dvLXRleHQgewogICAgZm9udC1zaXplOiAxLjVyZW07CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4zKTsKfQoKLmxvZ28tdGV4dCAuYm9sZCB7CiAgICBmb250LXdlaWdodDogYm9sZDsKfQoKLmhlYWRlci1yaWdodCB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMTJweDsKICAgIHBhZGRpbmc6IDZweCAxMnB4OwogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogMjBweDsKfQoKLmdpdGh1Yi1idG4gewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDVweDsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKfQoKLmRvd25sb2FkLWJ0biB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgcGFkZGluZzogOHB4IDEycHg7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNGE5MGUyLCAjMzU3YWJkKTsKICAgIGJvcmRlcjogbm9uZTsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICBtaW4td2lkdGg6IDQwcHg7CiAgICBoZWlnaHQ6IDM2cHg7CiAgICB6LWluZGV4OiA5OTk5OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouZG93bmxvYWQtYnRuOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMzNTdhYmQsICMyYTZhYTApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKfQoKLmRvd25sb2FkLWJ0bjphY3RpdmUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwp9CgouZGVwbG95LW5ldGxpZnktYnRuIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMGFkOWYsICMwMGQ0YWEpOwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgY29sb3I6IHdoaXRlOwogICAgZm9udC1zaXplOiAxcmVtOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIG1pbi13aWR0aDogNDBweDsKICAgIGhlaWdodDogMzZweDsKICAgIHotaW5kZXg6IDk5OTk7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBnYXA6IDZweDsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgouZGVwbG95LW5ldGxpZnktYnRuOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDk0N2YsICMwMGIzOTQpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDE3MywgMTU5LCAwLjMpOwp9CgouZGVwbG95LW5ldGxpZnktYnRuOmFjdGl2ZSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7Cn0KCi8qIFNldCBUb2tlbiBidXR0b24gc3R5bGVkIHRvIG1hdGNoIERlcGxveSB0byBOZXRsaWZ5ICovCi5zZXQtdG9rZW4tYnRuIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMGFkOWYsICMwMGQ0YWEpOwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgY29sb3I6IHdoaXRlOwogICAgZm9udC1zaXplOiAxcmVtOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIG1pbi13aWR0aDogNDBweDsKICAgIGhlaWdodDogMzZweDsKICAgIHotaW5kZXg6IDk5OTk7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBnYXA6IDZweDsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Cgouc2V0LXRva2VuLWJ0bjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA5NDdmLCAjMDBiMzk0KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAxNzMsIDE1OSwgMC4zKTsKfQoKLnNldC10b2tlbi1idG46YWN0aXZlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKfQoKLmRvd25sb2FkLWljb24gewogICAgZm9udC1zaXplOiAxLjFyZW07CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLnBvd2VyZWQtcGlsbCB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBtYXJnaW46IDJyZW0gYXV0bzsKICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICBwYWRkaW5nOiA4cHggMjBweDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGxlZnQ6IDUwJTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlLCBjb2xvciAwLjNzIGVhc2U7CiAgICAvKiBNZXJnZWQgZGFyayB0aGVtZSBzdHlsZXMgKi8KICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKfQoKLm1haW4taGVhZGluZyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBmb250LXNpemU6IDIuN3JlbTsKICAgIG1hcmdpbi1ib3R0b206IDIuNXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzIGVhc2U7Cn0KCi8qIFR5cGluZyBhbmltYXRpb24gc3R5bGVzICovCiNhbmltYXRlZC13b3JkIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1pbi13aWR0aDogMTIwcHg7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgojYW5pbWF0ZWQtd29yZDo6YWZ0ZXIgewogICAgY29udGVudDogJ3wnOwogICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgYW5pbWF0aW9uOiBibGluayAxcyBpbmZpbml0ZTsKICAgIG1hcmdpbi1sZWZ0OiAycHg7Cn0KCkBrZXlmcmFtZXMgYmxpbmsgewogICAgMCUsIDUwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIDUxJSwgMTAwJSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgIH0KfQoKQGtleWZyYW1lcyB0eXBld3JpdGVyIHsKICAgIGZyb20gewogICAgICAgIHdpZHRoOiAwOwogICAgfQogICAgdG8gewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgfQp9CgoubWFpbi1oZWFkaW5nIC5ibHVlIHsKICAgIGNvbG9yOiB2YXIoLS1ibHVlLWNvbG9yKTsKfQoKLyogTGFuZGluZyBwYWdlIGlucHV0IHN0eWxpbmcgLSBFeHRlbmRlZCB0b3AgYW5kIGJvdHRvbSBjb3ZlcmFnZSAqLwojbGFuZGluZ1NlY3Rpb24gewogICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDIzMHB4KSAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBhZGRpbmc6IDgwcHggMCAxNTBweCAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAtODBweCAhaW1wb3J0YW50OwogICAgbWFyZ2luLWJvdHRvbTogLTE1MHB4ICFpbXBvcnRhbnQ7Cn0KCi8qIEFuaW1hdGVkIHN0YXJyeSBiYWNrZ3JvdW5kICovCiNsYW5kaW5nU2VjdGlvbjo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAxMDBweCk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAKICAgICAgICByYWRpYWwtZ3JhZGllbnQoMnB4IDJweCBhdCAyMHB4IDMwcHgsICM0YTkwZTIsIHRyYW5zcGFyZW50KSwKICAgICAgICByYWRpYWwtZ3JhZGllbnQoMnB4IDJweCBhdCA0MHB4IDcwcHgsIHJnYmEoNzQsIDE0NCwgMjI2LCAwLjgpLCB0cmFuc3BhcmVudCksCiAgICAgICAgcmFkaWFsLWdyYWRpZW50KDFweCAxcHggYXQgOTBweCA0MHB4LCAjNmI3M2ZmLCB0cmFuc3BhcmVudCksCiAgICAgICAgcmFkaWFsLWdyYWRpZW50KDFweCAxcHggYXQgMTMwcHggODBweCwgcmdiYSgxMDcsIDExNSwgMjU1LCAwLjYpLCB0cmFuc3BhcmVudCksCiAgICAgICAgcmFkaWFsLWdyYWRpZW50KDJweCAycHggYXQgMTYwcHggMzBweCwgIzRhOTBlMiwgdHJhbnNwYXJlbnQpOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdDsKICAgIGJhY2tncm91bmQtc2l6ZTogMjAwcHggMTAwcHg7CiAgICBhbmltYXRpb246IHR3aW5rbGUgM3MgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlOwogICAgei1pbmRleDogMDsKfQoKQGtleWZyYW1lcyB0d2lua2xlIHsKICAgIDAlIHsgb3BhY2l0eTogMC4zOyB9CiAgICAxMDAlIHsgb3BhY2l0eTogMC44OyB9Cn0KCi8qIEhlcm8gU2VjdGlvbiAqLwouaGVyby1zZWN0aW9uIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHBhZGRpbmc6IDByZW0gMCAwcmVtOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMTsKfQouaW5zaWRlLWhlcm8tc2VjdGlvbnsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5oZXJvLWljb24gewogICAgZm9udC1zaXplOiAzcmVtOwogICAgbWFyZ2luLWJvdHRvbTogMC41cmVtOwogICAgY29sb3I6ICM0YTkwZTI7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBhbmltYXRpb246IGZsb2F0IDNzIGVhc2UtaW4tb3V0IGluZmluaXRlOwp9CgouaGVyby1pY29uIGltZyB7CiAgICB3aWR0aDogNHJlbTsKICAgIGhlaWdodDogMi41cmVtOwogICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgpAa2V5ZnJhbWVzIGZsb2F0IHsKICAgIDAlLCAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7IH0KICAgIDUwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7IH0KfQoKLmhlcm8tdGl0bGUgewogICAgZm9udC1zaXplOiAzLjVyZW07CiAgICBmb250LXdlaWdodDogNzAwOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CiAgICBsaW5lLWhlaWdodDogMS4yOwogICAgdGV4dC1zaGFkb3c6IDAgMCAyMHB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwp9CgouaGVyby1zdWJ0aXRsZSB7CiAgICBmb250LXNpemU6IDEuM3JlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7CiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CiAgICBsaW5lLWhlaWdodDogMS42OwogICAgbWF4LXdpZHRoOiA2MDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CgouaGVyby1kZXNjcmlwdGlvbiB7CiAgICBmb250LXNpemU6IDEuMXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBtYXJnaW4tYm90dG9tOiAzcmVtOwogICAgbWF4LXdpZHRoOiA1MDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CgovKiBVcGRhdGUgaW5wdXQgc2VjdGlvbiBmb3IgZGFyayB0aGVtZSAqLwojbGFuZGluZ1NlY3Rpb24gLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAxOwogICAgd2lkdGg6IDEwMCU7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIC8qIE1lcmdlZCBzdHlsZXMgKi8KICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIG1hcmdpbi1ib3R0b206IDJyZW07CiAgICBtYXgtd2lkdGg6IDcwMHB4Owp9CgojbGFuZGluZ1NlY3Rpb24gLmlucHV0LWlubmVyLWNvbnRhaW5lci52ZXJ0aWNhbCB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgYm9yZGVyLXJhZGl1czogMTZweDsKICAgIHBhZGRpbmc6IDA7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKfQoKI2xhbmRpbmdTZWN0aW9uIC5wcm9tcHQtaW5wdXQgewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIGJvcmRlci1yYWRpdXM6IDEycHggMTJweCAwIDA7CiAgICBwYWRkaW5nOiAxcmVtIDEuNXJlbTsKICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgcmVzaXplOiBub25lOwogICAgbWluLWhlaWdodDogNjBweDsKICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgb3V0bGluZTogbm9uZTsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgojbGFuZGluZ1NlY3Rpb24gLmlucHV0LWNvbnRyb2xzLXJvdyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOwogICAgYm9yZGVyLXRvcDogbm9uZTsKICAgIGJvcmRlci1yYWRpdXM6IDAgMCAxMnB4IDEycHg7CiAgICB3aWR0aDogMTAwJTsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBtaW4taGVpZ2h0OiA1MHB4OwogICAgZ2FwOiAxMnB4OwogICAgLyogTWVyZ2VkL3VwZGF0ZWQgc3R5bGVzICovCiAgICBwYWRkaW5nOiA2cHggMTBweDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7Cn0KCiNsYW5kaW5nU2VjdGlvbiAucHJvbXB0LWlucHV0OjpwbGFjZWhvbGRlciB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpOwp9CgouZ2VuZXJhdGUtY29kZS1idG4gewogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzRhOTBlMiwgIzZiNzNmZikgIWltcG9ydGFudDsKICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwLjc1cmVtIDEuNXJlbSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJhZGl1czogMTBweCAhaW1wb3J0YW50OwogICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50OwogICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsKICAgIG1pbi13aWR0aDogZml0LWNvbnRlbnQgIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogMTUwcHggIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMykgIWltcG9ydGFudDsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UgIWltcG9ydGFudDsKICAgIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50Owp9CgouZ2VuZXJhdGUtY29kZS1idG46aG92ZXIgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpICFpbXBvcnRhbnQ7CiAgICBib3gtc2hhZG93OiAwIDZweCAyMHB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjQpICFpbXBvcnRhbnQ7Cn0KCi8qIEZlYXR1cmVzIEdyaWQgKi8KLmZlYXR1cmVzLWdyaWQgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjgwcHgsIDFmcikpOwogICAgZ2FwOiAycmVtOwogICAgbWFyZ2luOiA0cmVtIDA7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAxOwp9CgouZmVhdHVyZS1jYXJkIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgcGFkZGluZzogMnJlbTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgouZmVhdHVyZS1jYXJkOjpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAtMTAwJTsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSksIHRyYW5zcGFyZW50KTsKICAgIHRyYW5zaXRpb246IGxlZnQgMC41cyBlYXNlOwp9CgouZmVhdHVyZS1jYXJkOmhvdmVyOjpiZWZvcmUgewogICAgbGVmdDogMTAwJTsKfQoKLmZlYXR1cmUtY2FyZDpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7CiAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMik7Cn0KCi5mZWF0dXJlLWljb24gewogICAgZm9udC1zaXplOiAyLjVyZW07CiAgICBjb2xvcjogIzRhOTBlMjsKICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCi5mZWF0dXJlLWljb24gaW1nIHsKICAgIHdpZHRoOiAyLjVyZW07CiAgICBoZWlnaHQ6IDIuNXJlbTsKICAgIG9iamVjdC1maXQ6IGNvbnRhaW47CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLyogQWdncmVzc2l2ZSBXb3JkUHJlc3Mgd2hpdGUgc3BhY2UgcmVtb3ZhbCAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgLmhlYWRlciwKYm9keS5wYWdlLWlkLTU5MzYzIGhlYWRlciwKYm9keS5wYWdlLWlkLTU5MzYzIC5oZWFkZXItZmxleCwKYm9keS5wYWdlLWlkLTU5MzYzIC5jb250YWluZXIgewogICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjkpICFpbXBvcnRhbnQ7Cn0KCi8qIEZvcmNlIHJlbW92ZSBhbnkgV29yZFByZXNzIGNvbnRhaW5lciBjb25zdHJhaW50cyAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgI21haW4sCmJvZHkucGFnZS1pZC01OTM2MyAubGF5b3V0LWJveGVkLW1vZGUgI21haW4sCmJvZHkucGFnZS1pZC01OTM2MyAubGF5b3V0LXdpZGUtbW9kZSAjbWFpbiwKYm9keS5wYWdlLWlkLTU5MzYzIC5sYXlvdXQtd2lkZS1tb2RlICN3cmFwcGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgLndyYXBwZXIsCmJvZHkucGFnZS1pZC01OTM2MyAuY29udGVudCwKYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWNvbnRlbnQgewogICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKfQoKLyogUmVtb3ZlIGFueSBXb3JkUHJlc3MgdGhlbWUgcGFkZGluZy9tYXJnaW5zICovCmJvZHkucGFnZS1pZC01OTM2MyAqIHsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKfQoKLyogVGFyZ2V0IHNwZWNpZmljIFdvcmRQcmVzcyB0aGVtZSBlbGVtZW50cyBjYXVzaW5nIHdoaXRlIHNwYWNlcyAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1oZWFkZXIsCmJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWhlYWRlci13cmFwcGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1zZWNvbmRhcnktaGVhZGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1tYWluLWhlYWRlciwKYm9keS5wYWdlLWlkLTU5MzYzIC5hdmFkYS1oZWFkZXIsCmJvZHkucGFnZS1pZC01OTM2MyAuaGVhZGVyLXdyYXBwZXIsCmJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1oZWFkZXIsCmJvZHkucGFnZS1pZC01OTM2MyAubWFpbi1oZWFkZXIgewogICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC45KSAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgYW55IFdvcmRQcmVzcyB0aGVtZSBjb250YWluZXIgcGFkZGluZyAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1jb250YWluZXIsCmJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLXJvdywKYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tY29sdW1uLApib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdywKYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1jb2x1bW4gewogICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCi8qIEZvcmNlIGhlYWRlciB0byBicmVhayBvdXQgb2YgYW55IGNvbnRhaW5lciBjb25zdHJhaW50cyAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgLmhlYWRlciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKICAgIGxlZnQ6IDAgIWltcG9ydGFudDsKICAgIHJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDsKfQoKYm9keS5wYWdlLWlkLTU5MzYzIC5oZWFkZXIgKiwKYm9keS5wYWdlLWlkLTU5MzYzIGhlYWRlciAqIHsKICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50Owp9CgovKiBPdmVycmlkZSBXb3JkUHJlc3MgYmFja2dyb3VuZCBjb2xvciBmb3IgbWFpbiBlbGVtZW50cyAqLwojbWFpbiwgCi5sYXlvdXQtYm94ZWQtbW9kZSAjbWFpbiwgCi5sYXlvdXQtYm94ZWQtbW9kZS5hdmFkYS1mb290ZXItZngtc3RpY2t5IC5hYm92ZS1mb290ZXItd3JhcHBlciwgCi5sYXlvdXQtYm94ZWQtbW9kZS5hdmFkYS1mb290ZXItZngtc3RpY2t5LXdpdGgtcGFyYWxsYXgtYmctaW1hZ2UgLmFib3ZlLWZvb3Rlci13cmFwcGVyLCAKLmxheW91dC13aWRlLW1vZGUgI21haW4sIAoubGF5b3V0LXdpZGUtbW9kZSAjd3JhcHBlciwgCmJvZHksIApodG1sLCAKaHRtbCBib2R5LmN1c3RvbS1iYWNrZ3JvdW5kIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKfQoKLyogRml4IFdvcmRQcmVzcyB0ZW1wbGF0ZSBlbGVtZW50cyAtIHJlbW92ZSB1bndhbnRlZCBsaW5lcyBhbmQgYmFja2dyb3VuZHMgKi8KYm9keS5wYWdlLWlkLTU5MzYzICogewogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7Cn0KCi8qIFJlbW92ZSB3aGl0ZSBsaW5lIGF0IHRvcCBvZiBXb3JkUHJlc3MgaW50ZXJmYWNlICovCmJvZHkucGFnZS1pZC01OTM2Mzo6YmVmb3JlLApib2R5LnBhZ2UtaWQtNTkzNjM6OmFmdGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgKjo6YmVmb3JlLApib2R5LnBhZ2UtaWQtNTkzNjMgKjo6YWZ0ZXIgewogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgY29udGVudDogbm9uZSAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgdG9wIGJvcmRlcnMgYW5kIGxpbmVzIGZyb20gV29yZFByZXNzIGVsZW1lbnRzICovCmJvZHkucGFnZS1pZC01OTM2MyBib2R5LApib2R5LnBhZ2UtaWQtNTkzNjMgaHRtbCwKYm9keS5wYWdlLWlkLTU5MzYzICNwYWdlLApib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUsCmJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1oZWFkZXIsCmJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1tYWluLApib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtZm9vdGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgLndwLXNpdGUtYmxvY2tzLApib2R5LnBhZ2UtaWQtNTkzNjMgLndwLWJsb2NrLWdyb3VwLApib2R5LnBhZ2UtaWQtNTkzNjMgLndwLWNvbnRhaW5lciB7CiAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXItYm90dG9tOiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXItbGVmdDogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJpZ2h0OiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKfQoKLyogUmVtb3ZlIHNwZWNpZmljIGJvcmRlcnMgZnJvbSBXb3JkUHJlc3MgZWxlbWVudHMgKi8KYm9keS5wYWdlLWlkLTU5MzYzIGRpdiwKYm9keS5wYWdlLWlkLTU5MzYzIHNlY3Rpb24sCmJvZHkucGFnZS1pZC01OTM2MyBhcnRpY2xlLApib2R5LnBhZ2UtaWQtNTkzNjMgbWFpbiwKYm9keS5wYWdlLWlkLTU5MzYzIGhlYWRlciwKYm9keS5wYWdlLWlkLTU5MzYzIGZvb3RlciwKYm9keS5wYWdlLWlkLTU5MzYzIG5hdiwKYm9keS5wYWdlLWlkLTU5MzYzIGFzaWRlIHsKICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyLWxlZnQ6IG5vbmUgIWltcG9ydGFudDsKICAgIGJvcmRlci1yaWdodDogbm9uZSAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgYmFja2dyb3VuZHMgZnJvbSBXb3JkUHJlc3MgdGVtcGxhdGUgZWxlbWVudHMgKi8KYm9keS5wYWdlLWlkLTU5MzYzIC53cC1jb250YWluZXIsCmJvZHkucGFnZS1pZC01OTM2MyAud3AtYmxvY2stZ3JvdXAsCmJvZHkucGFnZS1pZC01OTM2MyAud3AtYmxvY2stY29sdW1uLApib2R5LnBhZ2UtaWQtNTkzNjMgLndwLWJsb2NrLWNvbHVtbnMsCmJvZHkucGFnZS1pZC01OTM2MyAuZW50cnktY29udGVudCwKYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWNvbnRlbnQsCmJvZHkucGFnZS1pZC01OTM2MyAuY29udGVudC1hcmVhIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgV29yZFByZXNzIGFkbWluIGJhciBhbmQgdG9wIGVsZW1lbnRzICovCmJvZHkucGFnZS1pZC01OTM2MyAjd3BhZG1pbmJhciwKYm9keS5wYWdlLWlkLTU5MzYzIC5hZG1pbi1iYXIsCmJvZHkucGFnZS1pZC01OTM2MyAud3AtYWRtaW4tYmFyLApib2R5LnBhZ2UtaWQtNTkzNjMgW2lkKj0iYWRtaW4iXSwKYm9keS5wYWdlLWlkLTU5MzYzIFtjbGFzcyo9ImFkbWluIl0gewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9CgovKiBGb3JjZSByZW1vdmUgYW55IHRvcC1sZXZlbCBib3JkZXJzICovCmJvZHkucGFnZS1pZC01OTM2MyA+ICogewogICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7Cn0KCi8qIFdvcmRQcmVzcy1zcGVjaWZpYyBtb2JpbGUgZm9vdGVyIGJhY2tncm91bmQgZml4ZXMgLSBpbmNyZWFzZWQgKi8KYm9keS5wYWdlLWlkLTU5MzYzIHsKICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA4MDBweCkgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKfQoKYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiB7CiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgODAwcHgpICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7Cn0KCmJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciB7CiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMjAwcHgpICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7Cn0KCi8qIFdvcmRQcmVzcyBtb2JpbGUgZm9vdGVyIGJhY2tncm91bmQgZXh0ZW5zaW9uIC0gaW5jcmVhc2VkICovCkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgYm9keS5wYWdlLWlkLTU5MzYzIHsKICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMjAwcHgpICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAyMDBweCkgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIHsKICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMjAwcHgpICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb246OmJlZm9yZSB7CiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAyMDBweCkgIWltcG9ydGFudDsKICAgIH0KfQoKLyogQWRkaXRpb25hbCBXb3JkUHJlc3Mgb3ZlcnJpZGVzIGZvciBmZWF0dXJlIGNhcmRzICovCmJvZHkucGFnZS1pZC01OTM2MyAuZmVhdHVyZS1jYXJkIGgzLApib2R5LnBhZ2UtaWQtNTkzNjMgLmNhcGFiaWxpdHktY2FyZCBoMywKYm9keS5wYWdlLWlkLTU5MzYzIC5wb3NzaWJpbGl0eS1jYXJkIGgzIHsKICAgIGNvbG9yOiAjNGE5MGUyICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7Cn0KCi8qIFdvcmRQcmVzcy1zcGVjaWZpYyBoZWFkaW5nIGNvbG9yIGZpeGVzICovCi8qIFdvcmRQcmVzcy1zcGVjaWZpYyBoZWFkaW5nIGNvbG9yIGZpeGVzIC0gb25seSBmb3Igb3VyIGFwcCBjb250ZW50ICovCmJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gaDEsCmJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gaDIsCmJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gaDMsCmJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gaDQsCmJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gaDUsCmJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gaDYsCmJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciBoMSwKYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIGgyLApib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIgaDMsCmJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciBoNCwKYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIGg1LApib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIgaDYgewogICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsKfQoKLyogU3BlY2lmaWMgV29yZFByZXNzIG92ZXJyaWRlcyBmb3IgZmVhdHVyZSB0aXRsZXMgKi8KYm9keS5wYWdlLWlkLTU5MzYzIC5mZWF0dXJlLXRpdGxlLApib2R5LnBhZ2UtaWQtNTkzNjMgLmNhcGFiaWxpdHktdGl0bGUsCmJvZHkucGFnZS1pZC01OTM2MyAucG9zc2liaWxpdHktdGl0bGUsCmJvZHkucGFnZS1pZC01OTM2MyAuZmVhdHVyZS1jYXJkIGgzLApib2R5LnBhZ2UtaWQtNTkzNjMgLmNhcGFiaWxpdHktY2FyZCBoMywKYm9keS5wYWdlLWlkLTU5MzYzIC5wb3NzaWJpbGl0eS1jYXJkIGgzIHsKICAgIGNvbG9yOiAjNGE5MGUyICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7Cn0KCi8qIEVuc3VyZSBmZWF0dXJlIHRpdGxlcyBhcmUgYmx1ZSBpbiBXb3JkUHJlc3MgKi8KLmZlYXR1cmUtdGl0bGUgewogICAgY29sb3I6ICM0YTkwZTIgIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDsKfQoKLyogRnVzaW9uIEJ1aWxkZXIgYW5kIFdvcmRQcmVzcyBoMSBjb2xvciBvdmVycmlkZSAqLwpmdXNpb24tbW9kYWwgaDEsIC5mdXNpb24tcG9zdC1jb250ZW50IGgxLCAuZnVzaW9uLXRiLWZvb3RlciBoMSwgLmZ1c2lvbi10Yi1wYWdlLXRpdGxlLWJhciBoMSwgLmZ1c2lvbi13aWRnZXQtYXJlYSBoMSwgLnBvc3QtY29udGVudCBoMSwgLnNlYXJjaC1wYWdlLXNlYXJjaC1mb3JtIGgxLCAudGl0bGUgaDEsIGgxIHsKICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7Cn0KCi8qIEZ1c2lvbiBCdWlsZGVyIGFuZCBXb3JkUHJlc3MgaDMgY29sb3Igb3ZlcnJpZGUgKi8KLmZ1c2lvbi1hdXRob3IgLmZ1c2lvbi1hdXRob3ItdGl0bGUsIC5mdXNpb24tbW9kYWwgLm1vZGFsLXRpdGxlLCAuZnVzaW9uLXdpZGdldC1hcmVhIGgzLCAucG9zdC1jb250ZW50IGgzLCAucHJvamVjdC1jb250ZW50IGgzLCAuc2lkZWJhciAud2lkZ2V0IGgzLCAubWFpbi1mbGV4IC5zbGlkZS1jb250ZW50IGgzLCBoMyB7CiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50Owp9CgovKiBHbG9iYWwgc3R5bGVzIGZvciBhbGwgc2VjdGlvbiBzdWJ0aXRsZXMgLSBlbnN1cmUgY2VudGVyaW5nICovCi5ob3ctaXQtd29ya3Mtc3VidGl0bGUsCi5lbmRsZXNzLXN1YnRpdGxlLAouYWN0aW9uLXN1YnRpdGxlLAoubW9yZS1zdWJ0aXRsZSwKLmxvdmVkLXN1YnRpdGxlLAouY3RhLXN1YnRpdGxlIHsKICAgIG1heC13aWR0aDogNzAwcHg7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCi8qIEdsb2JhbCBzdHlsZXMgZm9yIGFsbCBzZWN0aW9uIHRpdGxlcyAtIGVuc3VyZSBjZW50ZXJpbmcgKi8KLmhvdy1pdC13b3Jrcy10aXRsZSwKLmVuZGxlc3MtdGl0bGUsCi5hY3Rpb24tdGl0bGUsCi5tb3JlLXRpdGxlLAoubG92ZWQtdGl0bGUsCi5jdGEtdGl0bGUgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoKLmZlYXR1cmUtZGVzY3JpcHRpb24gewogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KCi5xdWljay1hcHBzIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICBnYXA6IDFyZW07CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIG1hcmdpbi10b3A6IDNyZW07CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAxOwp9CgoucXVpY2stYXBwLWJ0biB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CiAgICBwYWRkaW5nOiAwLjc1cmVtIDEuNXJlbTsKICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7CiAgICBmb250LXNpemU6IDAuOXJlbTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KTsKfQoKLnF1aWNrLWFwcC1idG46aG92ZXIgewogICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMik7CiAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjQpOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7Cn0KCi8qIEhvdyBJdCBXb3JrcyBTZWN0aW9uICovCi5ob3ctaXQtd29ya3Mtc2VjdGlvbiB7CiAgICBtYXJnaW46IDZyZW0gYXV0byA0cmVtICFpbXBvcnRhbnQ7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogMTAwMHB4ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwIDJyZW0gIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Owp9CgouaG93LWl0LXdvcmtzLXRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMi41cmVtOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiAjZmZmZmZmOwogICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5ob3ctaXQtd29ya3Mtc3VidGl0bGUgewogICAgZm9udC1zaXplOiAxLjFyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgbWFyZ2luLWJvdHRvbTogNHJlbTsKICAgIG1heC13aWR0aDogNzAwcHg7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXdoaXRlewogICAgY29sb3I6IHdoaXRlOwp9Cgouc3RlcHMtY29udGFpbmVyIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBnYXA6IDJyZW07CiAgICBtYXJnaW4tYm90dG9tOiA0cmVtOwogICAgZmxleC13cmFwOiBub3dyYXA7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgd2lkdGg6IDEwMCU7CiAgICBwYWRkaW5nOiAwIDFyZW07CiAgICBtYXgtd2lkdGg6IDkwMHB4OwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KCi5zdGVwLWNhcmQgewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgICBwYWRkaW5nOiAycmVtIDEuNXJlbTsKICAgIG1heC13aWR0aDogMjgwcHg7CiAgICBmbGV4OiAxOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKLnN0ZXAtY2FyZDpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgYm9yZGVyLWNvbG9yOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKfQoKLnN0ZXAtbnVtYmVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogLTE1cHg7CiAgICBsZWZ0OiAtNXB4OwogICAgYmFja2dyb3VuZDogIzJBNDFFNzsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIHdpZHRoOiAzNXB4OwogICAgaGVpZ2h0OiAzNXB4OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgZm9udC1zaXplOiAwLjlyZW07Cn0KCi5zdGVwLWljb24gewogICAgZm9udC1zaXplOiAyLjVyZW07CiAgICBtYXJnaW46IDFyZW0gMDsKICAgIGRpc3BsYXk6IGJsb2NrOwp9Cgouc3RlcC1pY29uIGltZyB7CiAgICB3aWR0aDogMi41cmVtOwogICAgaGVpZ2h0OiAyLjVyZW07CiAgICBvYmplY3QtZml0OiBjb250YWluOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW46IDAgYXV0bzsKfQoKLnN0ZXAtdGl0bGUgewogICAgZm9udC1zaXplOiAxLjNyZW07CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwp9Cgouc3RlcC1kZXNjcmlwdGlvbiB7CiAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgbGluZS1oZWlnaHQ6IDEuNTsKfQoKLnN0ZXAtYXJyb3cgewogICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgZm9udC1zaXplOiAycmVtOwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBmbGV4OiAwIDAgYXV0bzsKfQoKLnRyeS1ub3ctYnRuIHsKICAgIGJhY2tncm91bmQ6ICMyQTQxRTc7CiAgICBjb2xvcjogd2hpdGU7CiAgICBib3JkZXI6IG5vbmU7CiAgICBwYWRkaW5nOiAxcmVtIDIuNXJlbTsKICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICBmb250LXNpemU6IDFyZW07CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSg0MiwgNjUsIDIzMSwgMC4zKTsKfQoKLnRyeS1ub3ctYnRuOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6ICMxZTJlYjM7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7CiAgICBib3gtc2hhZG93OiAwIDZweCAyMHB4IHJnYmEoNDIsIDY1LCAyMzEsIDAuNCk7Cn0KCi8qIEVuZGxlc3MgUG9zc2liaWxpdGllcyBTZWN0aW9uICovCi5lbmRsZXNzLXBvc3NpYmlsaXRpZXMtc2VjdGlvbiB7CiAgICBtYXJnaW46IDZyZW0gYXV0byA0cmVtICFpbXBvcnRhbnQ7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogMTIwMHB4ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwIDJyZW0gIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50Owp9CgouZW5kbGVzcy10aXRsZSB7CiAgICBmb250LXNpemU6IDIuNXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9CgouZW5kbGVzcy1zdWJ0aXRsZSB7CiAgICBmb250LXNpemU6IDEuMXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBtYXJnaW4tYm90dG9tOiA0cmVtOwogICAgbWF4LXdpZHRoOiA3MDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKfQoKLnBvc3NpYmlsaXRpZXMtZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyNDBweCwgMWZyKSk7CiAgICBnYXA6IDFyZW07CiAgICBtYXJnaW4tYm90dG9tOiA1cmVtOwp9CgoucG9zc2liaWxpdHktY2FyZCB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgIHBhZGRpbmc6IDFyZW0gMS41cmVtOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi5wb3NzaWJpbGl0eS1jYXJkOmhvdmVyIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgYm94LXNoYWRvdzogMCA4cHggMjVweCByZ2JhKDAsIDAsIDAsIDAuMik7Cn0KCi5wb3NzaWJpbGl0eS1pY29uIHsKICAgIHdpZHRoOiA0OHB4OwogICAgaGVpZ2h0OiA0OHB4OwogICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSk7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZm9udC1zaXplOiAxLjVyZW07CiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4yKTsKfQoKLnBvc3NpYmlsaXR5LWljb24gaW1nIHsKICAgIHdpZHRoOiAyNHB4OwogICAgaGVpZ2h0OiAyNHB4OwogICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgoucG9zc2liaWxpdHktdGl0bGUgewogICAgZm9udC1zaXplOiAxLjJyZW07CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICBtYXJnaW4tYm90dG9tOiAwLjhyZW07Cn0KCi5wb3NzaWJpbGl0eS1kZXNjcmlwdGlvbiB7CiAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgbGluZS1oZWlnaHQ6IDEuNTsKfQoKLnBvcHVsYXItcHJvbXB0cy1zZWN0aW9uIHsKICAgIG1hcmdpbi10b3A6IDRyZW07Cn0KCi5wb3B1bGFyLXByb21wdHMtdGl0bGUgewogICAgZm9udC1zaXplOiAxLjhyZW07CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICBtYXJnaW4tYm90dG9tOiAycmVtOwp9CgoucG9wdWxhci1wcm9tcHRzLWdyaWQgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMzIwcHgsIDFmcikpOwogICAgZ2FwOiAxcmVtOwogICAgbWF4LXdpZHRoOiAxMDAwcHg7CiAgICBtYXJnaW46IDAgYXV0bzsKfQoKLnBvcHVsYXItcHJvbXB0LWJ0biB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgIHBhZGRpbmc6IDFyZW0gMC41cmVtOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi5wb3B1bGFyLXByb21wdC1idG46aG92ZXIgewogICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSk7CiAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7Cn0KCi8qIFNlZSBJdCBJbiBBY3Rpb24gU2VjdGlvbiAqLwouc2VlLWl0LWluLWFjdGlvbi1zZWN0aW9uIHsKICAgIG1hcmdpbjogNnJlbSBhdXRvIDRyZW0gIWltcG9ydGFudDsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgbWF4LXdpZHRoOiAxMjAwcHggIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgMnJlbSAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7Cn0KCi5hY3Rpb24tdGl0bGUgewogICAgZm9udC1zaXplOiAyLjVyZW07CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoKLmFjdGlvbi1zdWJ0aXRsZSB7CiAgICBmb250LXNpemU6IDEuMXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBtYXJnaW4tYm90dG9tOiAzcmVtOwogICAgbWF4LXdpZHRoOiA3MDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKfQoKLmRlbW8tdGFicyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoOwogICAgZ2FwOiAwOwogICAgbWFyZ2luLWJvdHRvbTogM3JlbTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgcGFkZGluZzogNHB4OwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgbWF4LXdpZHRoOiAyNTBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CgouZGVtby10YWIgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgZm9udC1zaXplOiAwLjlyZW07CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICB3aWR0aDogMTAwJTsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgIGdhcDogMC41cmVtOwogICAgZmxleDogMTsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgbWluLXdpZHRoOiAxOTVweDsKfQoKLmRlbW8tdGFiOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpOwp9CgouZGVtby10YWIuYWN0aXZlIHsKICAgIGJhY2tncm91bmQ6ICMyQTQxRTc7CiAgICBjb2xvcjogd2hpdGU7CiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSg0MiwgNjUsIDIzMSwgMC4zKTsKfQoKLnRhYi1pY29uIHsKICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KCi50YWItaWNvbiBpbWcgewogICAgd2lkdGg6IDE2cHg7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBvYmplY3QtZml0OiBjb250YWluOwogICAgZGlzcGxheTogYmxvY2s7Cn0KCi50YWItdGV4dCB7CiAgICBmb250LXdlaWdodDogNTAwOwp9CgouZGVtby1jb250ZW50IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1pbi1oZWlnaHQ6IDYwMHB4Owp9CgouZGVtby1wYW5lIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7Cn0KCi5kZW1vLXBhbmUuYWN0aXZlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgb3BhY2l0eTogMTsKfQoKLmRlbW8tcHJvbXB0IHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgcGFkZGluZzogMS4ycmVtIDEuNXJlbTsKICAgIG1hcmdpbi1ib3R0b206IDJyZW07CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMXJlbTsKICAgIG1heC13aWR0aDogNjAwcHg7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKLnByb21wdC1pY29uIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjEpOwogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgcGFkZGluZzogMC41cmVtOwogICAgZm9udC1zaXplOiAxLjJyZW07Cn0KCi5kZW1vLXByb21wdCBzcGFuIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7CiAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICBmb250LXNpemU6IDFyZW07Cn0KCi5kZW1vLWNvZGUtY29udGFpbmVyIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7Cn0KCi5jb2RlLWhlYWRlciB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICBwYWRkaW5nOiAxcmVtIDEuNXJlbTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwp9CgouY29kZS1kb3RzIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBnYXA6IDAuNXJlbTsKfQoKLmRvdCB7CiAgICB3aWR0aDogMTJweDsKICAgIGhlaWdodDogMTJweDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKfQoKLmRvdC5yZWQgewogICAgYmFja2dyb3VuZDogI2ZmNWY1NjsKfQoKLmRvdC55ZWxsb3cgewogICAgYmFja2dyb3VuZDogI2ZmYmQyZTsKfQoKLmRvdC5ncmVlbiB7CiAgICBiYWNrZ3JvdW5kOiAjMjdjYTNmOwp9CgouY29kZS10aXRsZSB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOwogICAgZm9udC13ZWlnaHQ6IDUwMDsKfQoKLmNvcHktYnRuIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjEpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICBwYWRkaW5nOiAwLjRyZW0gMC44cmVtOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCi5jb3B5LWJ0bjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4yKTsKICAgIGNvbG9yOiB3aGl0ZTsKfQoKLmNvZGUtaW1hZ2UtY29udGFpbmVyIHsKICAgIHBhZGRpbmc6IDFyZW07CiAgICBiYWNrZ3JvdW5kOiAjMWExYTFhOwp9CgouY29kZS1pbWFnZSB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogYXV0bzsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKfQoKLyogTW9iaWxlIFVJIERlbW8gU3R5bGVzICovCi5jb2RlLXByZXZpZXcgewogICAgcGFkZGluZzogMnJlbTsKICAgIGJhY2tncm91bmQ6ICMxYTFhMWE7CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgbWluLWhlaWdodDogNDAwcHg7Cn0KCi5tb2JpbGUtbW9ja3VwIHsKICAgIGJhY2tncm91bmQ6ICMyZDJkMmQ7CiAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgcGFkZGluZzogMnJlbTsKICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmE