PGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICA8dGl0bGU+SVQgSW5mcmFzdHJ1Y3R1cmUgRGFzaGJvYXJkcyDigJQgTW9uaXRvcmluZywgT2JzZXJ2YWJpbGl0eSAmIE9wcyB8IEluZnJhRGFzaDwvdGl0bGU+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCIgLz4KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyIgLz4KICAgIDx0aXRsZT5JVCBJbmZyYXN0cnVjdHVyZSBEYXNoYm9hcmRzIOKAlCBNb25pdG9yaW5nLCBPYnNlcnZhYmlsaXR5ICYgT3BzIHwgSW5mcmFEYXNoPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJNb25pdG9yIHNlcnZlcnMsIGNsb3VkLCBLdWJlcm5ldGVzLCBuZXR3b3JrcywgYXBwbGljYXRpb25zLCBsb2dzLCBhbmQgY29zdHMgd2l0aCB1bmlmaWVkIGluZnJhc3RydWN0dXJlIGRhc2hib2FyZHMsIGFsZXJ0cywgYW5kIFNMTyByZXBvcnRpbmcuIiAvPgogICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9ImluZnJhc3RydWN0dXJlIGRhc2hib2FyZHMsIG1vbml0b3JpbmcsIG9ic2VydmFiaWxpdHksIFNMT3MsIFNMQXMsIEt1YmVybmV0ZXMsIGNsb3VkLCBBV1MgQ2xvdWRXYXRjaCwgQXp1cmUgTW9uaXRvciwgR0NQIE9wZXJhdGlvbnMsIFByb21ldGhldXMsIEdyYWZhbmEsIERhdGFkb2csIE5ldyBSZWxpYywgbG9ncywgbWV0cmljcywgdHJhY2luZywgaW5jaWRlbnQgbWFuYWdlbWVudCwgY29zdCBvcHRpbWl6YXRpb24iIC8+CiAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IkluZnJhRGFzaCIgLz4KICAgIDxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0iaW5kZXgsIGZvbGxvdywgbWF4LXNuaXBwZXQ6LTEsIG1heC1pbWFnZS1wcmV2aWV3OmxhcmdlLCBtYXgtdmlkZW8tcHJldmlldzotMSIgLz4KICAgIDxtZXRhIG5hbWU9Imxhbmd1YWdlIiBjb250ZW50PSJFbmdsaXNoIiAvPgogICAgPG1ldGEgbmFtZT0iZGlzdHJpYnV0aW9uIiBjb250ZW50PSJnbG9iYWwiIC8+CiAgICA8bWV0YSBuYW1lPSJyYXRpbmciIGNvbnRlbnQ9IkdlbmVyYWwiIC8+CiAgICA8bWV0YSBuYW1lPSJyZXZpc2l0LWFmdGVyIiBjb250ZW50PSI3IGRheXMiIC8+CiAgICA8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iI2ZmZmZmZiIgLz4KICAgIDxtZXRhIG5hbWU9ImFwcGxpY2F0aW9uLW5hbWUiIGNvbnRlbnQ9IklUIEluZnJhc3RydWN0dXJlIERhc2hib2FyZHMgfCBJbmZyYURhc2giIC8+CgogICAgPCEtLSBDYW5vbmljYWwgLS0+CiAgICA8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cHM6Ly9leGFtcGxlLmNvbS9pdC1pbmZyYXN0cnVjdHVyZS1kYXNoYm9hcmRzLyIgLz4KCiAgICA8IS0tIEZhdmljb25zIC0tPgogICAgPGxpbmsgcmVsPSJpY29uIiBocmVmPSIvZmF2aWNvbi5pY28iIC8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIHNpemVzPSIxODB4MTgwIiBocmVmPSIvYXBwbGUtdG91Y2gtaWNvbi5wbmciIC8+CiAgICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgc2l6ZXM9IjMyeDMyIiBocmVmPSIvZmF2aWNvbi0zMngzMi5wbmciIC8+CiAgICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgc2l6ZXM9IjE2eDE2IiBocmVmPSIvZmF2aWNvbi0xNngxNi5wbmciIC8+CgogICAgPCEtLSBPcGVuIEdyYXBoIC8gRmFjZWJvb2sgLS0+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0id2Vic2l0ZSIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vZXhhbXBsZS5jb20vaXQtaW5mcmFzdHJ1Y3R1cmUtZGFzaGJvYXJkcy8iIC8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IklUIEluZnJhc3RydWN0dXJlIERhc2hib2FyZHMg4oCUIE1vbml0b3JpbmcsIE9ic2VydmFiaWxpdHkgJiBPcHMiIC8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlVuaWZpZWQgb3BzIHZpc2liaWxpdHkgYWNyb3NzIHNlcnZlcnMsIGNsb3VkLCBLdWJlcm5ldGVzLCBuZXR3b3JrcywgYW5kIGFwcHMuIiAvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wMy9sYXVuY2gtc3R1ZGlvLnBuZyIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IkluZnJhRGFzaCIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzpsb2NhbGUiIGNvbnRlbnQ9ImVuX1VTIiAvPgoKICAgIDwhLS0gVHdpdHRlciBDYXJkcyAtLT4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6Y2FyZCIgY29udGVudD0ic3VtbWFyeV9sYXJnZV9pbWFnZSIgLz4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6dXJsIiBjb250ZW50PSJodHRwczovL2V4YW1wbGUuY29tL2l0LWluZnJhc3RydWN0dXJlLWRhc2hib2FyZHMvIiAvPgogICAgPG1ldGEgbmFtZT0idHdpdHRlcjp0aXRsZSIgY29udGVudD0iSVQgSW5mcmFzdHJ1Y3R1cmUgRGFzaGJvYXJkcyDigJQgTW9uaXRvcmluZywgT2JzZXJ2YWJpbGl0eSAmIE9wcyIgLz4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9Ik1vbml0b3Igc2VydmVycywgY2xvdWQsIEt1YmVybmV0ZXMsIG5ldHdvcmtzLCBhcHBsaWNhdGlvbnMsIGxvZ3MsIGFuZCBjb3N0cyBpbiBvbmUgcGxhY2UuIiAvPgogICAgPG1ldGEgbmFtZT0idHdpdHRlcjppbWFnZSIgY29udGVudD0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMDMvbGF1bmNoLXN0dWRpby5wbmciIC8+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmNyZWF0b3IiIGNvbnRlbnQ9IkBpbmZyYWRhc2giIC8+CgogICAgPCEtLSBJbnN0YWdyYW0gLS0+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6c2VlX2Fsc28iIGNvbnRlbnQ9Imh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vZml0ZGFzaC8iIC8+CiAgICA8bWV0YSBuYW1lPSJpbnN0YWdyYW06c2l0ZSIgY29udGVudD0iQGZpdGRhc2giIC8+CiAgICA8bWV0YSBuYW1lPSJpbnN0YWdyYW06aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzAzL2NvZGUtYXNzaXN0YW50LnBuZyIgLz4KCiAgICA8IS0tIEFkZGl0aW9uYWwgU0VPIE1ldGEgVGFncyAtLT4KICAgIDxtZXRhIG5hbWU9Imdlby5yZWdpb24iIGNvbnRlbnQ9IlVTIiAvPgogICAgPG1ldGEgbmFtZT0iZ2VvLnBsYWNlbmFtZSIgY29udGVudD0iTmV3IFlvcmssIFVTQSIgLz4KICAgIDxtZXRhIG5hbWU9Imdlby5wb3NpdGlvbiIgY29udGVudD0iNDAuNzEyODstNzQuMDA2MCIgLz4KICAgIDxtZXRhIG5hbWU9IklDQk0iIGNvbnRlbnQ9IjQwLjcxMjgsIC03NC4wMDYwIiAvPgogICAgPG1ldGEgbmFtZT0ibW9iaWxlLXdlYi1hcHAtY2FwYWJsZSIgY29udGVudD0ieWVzIiAvPgogICAgPG1ldGEgbmFtZT0iSGFuZGhlbGRGcmllbmRseSIgY29udGVudD0idHJ1ZSIgLz4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSIgLz4KCiAgICA8IS0tIFNjaGVtYSBNYXJrdXAgKEpTT04tTEQpIC0tPgogICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9sZCtqc29uIj4KICB7CiAgICAiQGNvbnRleHQiOiAiaHR0cHM6Ly9zY2hlbWEub3JnIiwKICAgICJAdHlwZSI6ICJTb2Z0d2FyZUFwcGxpY2F0aW9uIiwKICAgICJuYW1lIjogIklUIEluZnJhc3RydWN0dXJlIERhc2hib2FyZHMiLAogICAgInVybCI6ICJodHRwczovL2V4YW1wbGUuY29tL2l0LWluZnJhc3RydWN0dXJlLWRhc2hib2FyZHMvIiwKICAgICJkZXNjcmlwdGlvbiI6ICJNb25pdG9yIHNlcnZlcnMsIGNsb3VkLCBLdWJlcm5ldGVzLCBuZXR3b3JrcywgYXBwbGljYXRpb25zLCBsb2dzLCBhbmQgY29zdHMgd2l0aCB1bmlmaWVkIGRhc2hib2FyZHMgYW5kIGFsZXJ0cy4iLAogICAgImFwcGxpY2F0aW9uQ2F0ZWdvcnkiOiAiQnVzaW5lc3NBcHBsaWNhdGlvbiIsCiAgICAib3BlcmF0aW5nU3lzdGVtIjogIkFsbCIsCiAgICAib2ZmZXJzIjogewogICAgICAiQHR5cGUiOiAiT2ZmZXIiLAogICAgICAicHJpY2UiOiAiMC4wMCIsCiAgICAgICJwcmljZUN1cnJlbmN5IjogIlVTRCIKICAgIH0sCiAgICAicHVibGlzaGVyIjogewogICAgICAiQHR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICAgIm5hbWUiOiAiSW5mcmFEYXNoIiwKICAgICAgInVybCI6ICJodHRwczovL2V4YW1wbGUuY29tLyIKICAgIH0sCiAgICAiYWdncmVnYXRlUmF0aW5nIjogewogICAgICAiQHR5cGUiOiAiQWdncmVnYXRlUmF0aW5nIiwKICAgICAgInJhdGluZ1ZhbHVlIjogIjQuOCIsCiAgICAgICJyZXZpZXdDb3VudCI6ICIyMTU2IgogICAgfQogIH0KICA8L3NjcmlwdD4KCiAgICA8IS0tIEZvbnRzIGFuZCBDU1MgLS0+CiAgICA8IS0tIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbSIgLz4KICA8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20iIGNyb3Nzb3JpZ2luIC8+CiAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1PdXRmaXQ6d2dodEA0MDA7NTAwOzYwMDs3MDAmZmFtaWx5PVNwYWNlK0dyb3Rlc2s6d2dodEA0MDA7NTAwOzYwMDs3MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiIC8+CiAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9mb250LWF3ZXNvbWUvNi4wLjAvY3NzL2FsbC5taW4uY3NzIiAvPiAtLT4KICAgIDxzY3JpcHQgdHlwZT0iaW1wb3J0bWFwIj4KICAgICAgewogICAgICAgICJpbXBvcnRzIjogewogICAgICAgICAgInJlYWN0IjogImh0dHBzOi8vZXNtLnNoL3JlYWN0QDE4LjIuMCIsCiAgICAgICAgICAicmVhY3QtZG9tIjogImh0dHBzOi8vZXNtLnNoL3JlYWN0LWRvbUAxOC4yLjAiLAogICAgICAgICAgInJlYWN0LWRvbS8iOiAiaHR0cHM6Ly9lc20uc2gvcmVhY3QtZG9tQDE4LjIuMC8iLAogICAgICAgICAgIkBjb2Rlc2FuZGJveC9zYW5kcGFjay1yZWFjdCI6ICJodHRwczovL2VzbS5zaC9AY29kZXNhbmRib3gvc2FuZHBhY2stcmVhY3RAMi44LjA/ZGVwcz1yZWFjdEAxOC4yLjAmZGVwcz1yZWFjdC1kb21AMTguMi4wIgogICAgICAgIH0KICAgICAgfQogICAgPC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9raXQuZm9udGF3ZXNvbWUuY29tL2JjMDgxNzkyZDQuanMiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0PgoKICAgIDxzdHlsZT4KICAgICAgICA6cm9vdCB7CiAgICAgICAgICAgIC0tcHJpbWFyeS1jb2xvcjogIzJkMmQyZDsKICAgICAgICAgICAgLS1hY2NlbnQtY29sb3I6ICM0YTkwZTI7CiAgICAgICAgICAgIC0tYmx1ZS1jb2xvcjogIzRhOTBlMjsKCiAgICAgICAgICAgIC8qIERhcmsgdGhlbWUgY29sb3JzIChkZWZhdWx0IGFuZCBvbmx5IHRoZW1lKSAqLwogICAgICAgICAgICAtLWJnLWNvbG9yOiAjMDAwMDAwOwogICAgICAgICAgICAtLXN1cmZhY2UtY29sb3I6ICMyZDJkMmQ7CiAgICAgICAgICAgIC0tdGV4dC1jb2xvcjogI2UwZTBlMDsKICAgICAgICAgICAgLS1ib3JkZXItY29sb3I6ICM0MDQwNDA7CiAgICAgICAgICAgIC0taW5wdXQtYmc6ICMyZDJkMmQ7CiAgICAgICAgICAgIC0taW5wdXQtYm9yZGVyOiAjNDA0MDQwOwogICAgICAgICAgICAtLXBpbGwtYmc6ICMzMzMzMzM7CiAgICAgICAgICAgIC0tYnV0dG9uLWJnOiAjNDA0MDQwOwogICAgICAgICAgICAtLXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjMpOwogICAgICAgICAgICAtLWhlYWRlci1ib3JkZXI6ICM0MDQwNDA7CiAgICAgICAgICAgIC0tZm9vdGVyLWJnOiAjMmQyZDJkOwogICAgICAgICAgICAtLWNhcmQtYmc6ICMzMzMzMzM7CiAgICAgICAgICAgIC0tYmctc2Vjb25kYXJ5OiAjNDQ0NDQ0OwogICAgICAgICAgICAtLXRleHQtc2Vjb25kYXJ5OiAjY2NjY2NjOwogICAgICAgICAgICAtLWJsdWUtaG92ZXI6ICMzYTdiYzg7CiAgICAgICAgfQoKICAgICAgICAvKiBTY3JvbGxiYXIgd2lkdGggKi8KICAgICAgICA6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKICAgICAgICAgICAgd2lkdGg6IDEycHg7CiAgICAgICAgfQoKICAgICAgICAvKiBUcmFjayAoYmFja2dyb3VuZCkgKi8KICAgICAgICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzFhMWExYTsKICAgICAgICAgICAgLyogZGFyayBiYWNrZ3JvdW5kICovCiAgICAgICAgfQoKICAgICAgICAvKiBIYW5kbGUgKHRodW1iKSAqLwogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjNTU1OwogICAgICAgICAgICAvKiBkYXJrIGdyYXkgKi8KICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIH0KCiAgICAgICAgLyogSGFuZGxlIG9uIGhvdmVyICovCiAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICM3Nzc7CiAgICAgICAgfQoKICAgICAgICAvKiBCYXNlIGNoYXQgYnViYmxlIHN0eWxlcyBmb3IgZGFyayB0aGVtZSAqLwogICAgICAgIC5jaGF0LWJ1YmJsZS5haSB7CiAgICAgICAgICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzYTNhM2E7CiAgICAgICAgICAgIC8qIE1vcmUgc3BlY2lmaWMgdGhhbiAtLXN1cmZhY2UtY29sb3IgKi8KICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjNTA1MDUwOwogICAgICAgICAgICAvKiBNb3JlIHNwZWNpZmljIHRoYW4gLS1ib3JkZXItY29sb3IgKi8KICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogMTVweDsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5jaGF0LWJ1YmJsZS5haTo6YmVmb3JlIHsKICAgICAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgYm90dG9tOiAwOwogICAgICAgICAgICBsZWZ0OiAtOHB4OwogICAgICAgICAgICB3aWR0aDogOHB4OwogICAgICAgICAgICBoZWlnaHQ6IDhweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzNhM2EzYTsKICAgICAgICAgICAgLyogTWF0Y2hlcyB0aGUgYnViYmxlIGJhY2tncm91bmQgKi8KICAgICAgICAgICAgY2xpcC1wYXRoOiBwb2x5Z29uKDEwMCUgMCwgMCUgMTAwJSwgMTAwJSAxMDAlKTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2U7CiAgICAgICAgfQoKICAgICAgICAuZ2l0aHViLXN0YXJzLAogICAgICAgIC5naXRodWItbGFiZWwgewogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiAgICAgICAgfQoKICAgICAgICAuYmFkZ2UtdG9nZXRoZXIgewogICAgICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOwogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIG9wYWNpdHk6IDAuODsKICAgICAgICB9CgogICAgICAgICogewogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgc2Fucy1zZXJpZjsKICAgICAgICB9CgogICAgICAgIC8qIFdvcmRQcmVzcyBUaGVtZSBDb21wYXRpYmlsaXR5IC0gRnVsbCBQYWdlIEJhY2tncm91bmQgKi8KICAgICAgICBib2R5LAogICAgICAgIGh0bWwgewogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW4gIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBXb3JkUHJlc3MgY29udGFpbmVyIGFkanVzdG1lbnRzIC0gRnVsbCB3aWR0aCAqLwogICAgICAgIC5jb250YWluZXIsCiAgICAgICAgLmNvbnRhaW5lci1mbHVpZCwKICAgICAgICAud3JhcHBlciwKICAgICAgICAuY29udGVudCwKICAgICAgICAubWFpbiwKICAgICAgICAuc2l0ZS1jb250ZW50LAogICAgICAgIC5lbnRyeS1jb250ZW50LAogICAgICAgIC5wYWdlLWNvbnRlbnQgewogICAgICAgICAgICBtYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRm9vdGVyIGZ1bGwgd2lkdGggb3ZlcnJpZGUgZm9yIFdvcmRQcmVzcyBjb250YWluZXJzICovCiAgICAgICAgI3dyYXBwZXIgLmZvb3RlciwgCiAgICAgICAgLmZ1c2lvbi13cmFwcGVyIC5mb290ZXIsCiAgICAgICAgLmZ1c2lvbi1wYWdlLXdyYXBwZXIgLmZvb3RlciwKICAgICAgICAuZnVzaW9uLXBhZ2Utd3JhcHBlci1yb3cgLmZvb3RlciwKICAgICAgICBib2R5IC5mb290ZXIsCiAgICAgICAgZm9vdGVyLmZvb3RlciB7CiAgICAgICAgICAgIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogQWRkaXRpb25hbCBXb3JkUHJlc3Mgd3JhcHBlciBvdmVycmlkZXMgZm9yIGZvb3RlciBhcmVhICovCiAgICAgICAgI21haW4gLmZvb3RlciwKICAgICAgICAuZnVzaW9uLXBhZ2Utd3JhcHBlciAuZm9vdGVyLAogICAgICAgIC5mdXNpb24td3JhcHBlciAuZm9vdGVyLAogICAgICAgIC5mdXNpb24tcGFnZS13cmFwcGVyLXJvdyAuZm9vdGVyLAogICAgICAgIC5mdXNpb24tYnVpbGRlci1yb3cgLmZvb3RlciB7CiAgICAgICAgICAgIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRW5zdXJlIG91ciBjb250ZW50IHdvcmtzIHdpdGhpbiBXb3JkUHJlc3MgKi8KICAgICAgICAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwOwogICAgICAgICAgICBjb2xvcjogI2UwZTBlMDsKICAgICAgICB9CgogICAgICAgIC8qIEZpeCBoZXJvIHNlY3Rpb24gY29udGVudCBjZW50ZXJpbmcgLSBrZWVwIGNvbnRlbnQgY2VudGVyZWQgYnV0IGJhY2tncm91bmQgZnVsbC13aWR0aCAqLwogICAgICAgIC5oZXJvLXNlY3Rpb24gewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5oZXJvLWNvbnRlbnQsCiAgICAgICAgLmhlcm8tdGV4dCB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA4MDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwIDIwcHggIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZpeCBzdGFyIGxvZ28gcG9zaXRpb25pbmcgLSBrZWVwIGl0IGNlbnRlcmVkICovCiAgICAgICAgLmhlcm8tc2VjdGlvbiBoMSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgZ2FwOiAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuaGVyby1zZWN0aW9uIHAgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZpeCB0aGUgYWN0dWFsIGlucHV0IGNvbnRhaW5lciBjbGFzc2VzIGZyb20gSFRNTCAqLwogICAgICAgIC5pbnB1dC1vdXRlci1jb250YWluZXIgewogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5pbnB1dC1pbm5lci1jb250YWluZXIgewogICAgICAgICAgICB3aWR0aDogNTAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogNTAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuaW5wdXQtaW5uZXItY29udGFpbmVyLnZlcnRpY2FsIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSkgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHggIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuaW5wdXQtY29udHJvbHMtcm93IHsKICAgICAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCAxMnB4IDEycHggIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50OwogICAgICAgICAgICBtaW4taGVpZ2h0OiA1MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGdhcDogMTJweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiA2cHggMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBGaXggcHJvbXB0IGlucHV0IHN0eWxpbmcgdG8gbWF0Y2ggb3JpZ2luYWwgKi8KICAgICAgICAucHJvbXB0LWlucHV0IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHggMTJweCAwIDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMXJlbSAxLjVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHJlc2l6ZTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBtaW4taGVpZ2h0OiA2MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICB9CgoKCiAgICAgICAgLyogRml4IHN1Z2dlc3RlZCBhcHBzIHNlY3Rpb24gLSBjZW50ZXJlZCB3aXRoIHByb3BlciB3aWR0aCAqLwogICAgICAgIC5zdWdnZXN0ZWQtYXBwcyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKICAgICAgICAgICAgZ2FwOiAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAyMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuc3VnZ2VzdGVkLWFwcCB7CiAgICAgICAgICAgIG1hcmdpbjogNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBGaXggZmVhdHVyZXMgZ3JpZCAtIDMgY2FyZHMgaW4gYSByb3csIGNlbnRlcmVkICovCiAgICAgICAgLmZlYXR1cmVzLWdyaWQgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDI4MHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICBnYXA6IDIwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiBmaXQtY29udGVudCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAyMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuZmVhdHVyZS1jYXJkIHsKICAgICAgICAgICAgd2lkdGg6IDI4MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMjgwcHggIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEVuc3VyZSBhbGwgc2VjdGlvbnMgYXJlIHByb3Blcmx5IGNlbnRlcmVkICovCiAgICAgICAgLmZlYXR1cmVzLXNlY3Rpb24sCiAgICAgICAgLmhvdy1pdC13b3Jrcy1zZWN0aW9uLAogICAgICAgIC5wb3NzaWJpbGl0aWVzLXNlY3Rpb24sCiAgICAgICAgLmRlbW8tc2VjdGlvbiwKICAgICAgICAuY2FwYWJpbGl0aWVzLXNlY3Rpb24sCiAgICAgICAgLnRlc3RpbW9uaWFscy1zZWN0aW9uLAogICAgICAgIC5jdGEtc2VjdGlvbiB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFdvcmRQcmVzcyBwYWdlLXNwZWNpZmljIHN0eWxpbmcgLSBGdWxsIGJhY2tncm91bmQgY292ZXJhZ2UgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgY29sb3I6ICNlMGUwZTAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmggIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBjb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAtNDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAtMTUwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy10b3A6IDQwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDE1MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAxOTBweCkgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFdvcmRQcmVzcy1zcGVjaWZpYyBjZW50ZXJpbmcgZm9yIEhvdyBJdCBXb3JrcyBzZWN0aW9uICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc2VjdGlvbiB7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZvcmNlIGNlbnRlciBvbmx5IHRoZSBzdWJ0aXRsZSB0ZXh0ICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc3VidGl0bGUgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIENlbnRlciBBTEwgc2VjdGlvbiBzdWJ0aXRsZXMgaW4gV29yZFByZXNzICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5oZXJvLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuaG93LWl0LXdvcmtzLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZW5kbGVzcy1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmFjdGlvbi1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLm1vcmUtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5sb3ZlZC1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmN0YS1zdWJ0aXRsZSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA3MDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRW5zdXJlIHNlY3Rpb24gdGl0bGVzIGFyZSBjZW50ZXJlZCAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuaG93LWl0LXdvcmtzLXRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZW5kbGVzcy10aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmFjdGlvbi10aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLm1vcmUtdGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5sb3ZlZC10aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmN0YS10aXRsZSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFdvcmRQcmVzcy1zcGVjaWZpYyBjZW50ZXJpbmcgZm9yIGFsbCBzZWN0aW9ucyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuaG93LWl0LXdvcmtzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5lbmRsZXNzLXBvc3NpYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnNlZS1pdC1pbi1hY3Rpb24tc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLm1vcmUtY2FwYWJpbGl0aWVzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5sb3ZlZC1ieS1kZXZlbG9wZXJzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5yZWFkeS10by1jb2RlLXNlY3Rpb24gewogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTIwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMnJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBBZGRpdGlvbmFsIFdvcmRQcmVzcyBjb250YWluZXIgb3ZlcnJpZGVzIGZvciBwcm9wZXIgY2VudGVyaW5nICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLmhvdy1pdC13b3Jrcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5lbmRsZXNzLXBvc3NpYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAuc2VlLWl0LWluLWFjdGlvbi1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5tb3JlLWNhcGFiaWxpdGllcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5sb3ZlZC1ieS1kZXZlbG9wZXJzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLnJlYWR5LXRvLWNvZGUtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAuaG93LWl0LXdvcmtzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLmVuZGxlc3MtcG9zc2liaWxpdGllcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5zZWUtaXQtaW4tYWN0aW9uLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLm1vcmUtY2FwYWJpbGl0aWVzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLmxvdmVkLWJ5LWRldmVsb3BlcnMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAucmVhZHktdG8tY29kZS1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5ob3ctaXQtd29ya3Mtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbl9pbm5lciAuZW5kbGVzcy1wb3NzaWJpbGl0aWVzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLnNlZS1pdC1pbi1hY3Rpb24tc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbl9pbm5lciAubW9yZS1jYXBhYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbl9pbm5lciAubG92ZWQtYnktZGV2ZWxvcGVycy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5yZWFkeS10by1jb2RlLXNlY3Rpb24gewogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5ob3ctaXQtd29ya3Mtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLmVuZGxlc3Mtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLmFjdGlvbi1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAubW9yZS1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAubG92ZWQtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLmN0YS1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAuaG93LWl0LXdvcmtzLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5lbmRsZXNzLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5hY3Rpb24tc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLm1vcmUtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLmxvdmVkLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5jdGEtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLmhvdy1pdC13b3Jrcy1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbl9pbm5lciAuZW5kbGVzcy1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbl9pbm5lciAuYWN0aW9uLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5tb3JlLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5sb3ZlZC1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbl9pbm5lciAuY3RhLXN1YnRpdGxlIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDcwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBFbnN1cmUgV29yZFByZXNzIGNvbnRhaW5lcnMgZG9uJ3QgYWRkIHdoaXRlIHNwYWNlICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5jb250YWluZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC53cmFwcGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY29udGVudCwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLm1haW4sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWNvbnRlbnQsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5lbnRyeS1jb250ZW50LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAucGFnZS1jb250ZW50IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBSZW1vdmUgZXhjZXNzaXZlIFdvcmRQcmVzcyBvdmVycmlkZXMgLSBrZWVwIG1pbmltYWwgKi8KCiAgICAgICAgLyogV29yZFByZXNzIGNvbnRhaW5lciBjb21wYXRpYmlsaXR5ICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5jb250YWluZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC53cmFwcGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY29udGVudCwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLm1haW4sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWNvbnRlbnQgewogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgbWF4LXdpZHRoOiBub25lOwogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgfQoKICAgICAgICAvKiBSZXNwb25zaXZlIERlc2lnbiBJbXByb3ZlbWVudHMgKi8KICAgICAgICAvKiBGb3Igc2NyZWVucyA5MDBweCBhbmQgYmVsb3cgLSBTVEFDSyBWRVJUSUNBTExZICovCiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDkwMHB4KSB7CiAgICAgICAgICAgIC5zdGVwcy1jb250YWluZXIgewogICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZ2FwOiAxLjVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5zdGVwLWFycm93IHsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjJyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnN0ZXAtY2FyZCB7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDkwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgd2lkdGg6IDkwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWluLXdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxLjVyZW0gMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnN0ZXAtdGl0bGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuc3RlcC1kZXNjcmlwdGlvbiB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKiBNb2JpbGUgcmVzcG9uc2l2ZSBmaXhlcyAqLwogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgICAgICAgICAuYXBwLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBNb2JpbGUgZm9vdGVyIGJhY2tncm91bmQgZml4IC0gaW5jcmVhc2VkIGV4dGVuc2lvbiAqLwogICAgICAgICAgICBib2R5IHsKICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQwcHg7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgNDAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMzAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgI2xhbmRpbmdTZWN0aW9uIHsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA0MDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAzMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuYXBwLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgNDAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMzAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogRXh0ZW5kIGJhY2tncm91bmQgcGF0dGVybiBkb3duIHNpZ25pZmljYW50bHkgKi8KICAgICAgICAgICAgI2xhbmRpbmdTZWN0aW9uOjpiZWZvcmUgewogICAgICAgICAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAzMDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogTW9iaWxlIGhlcm8gc2VjdGlvbiBpbXByb3ZlbWVudHMgKi8KICAgICAgICAgICAgLmhlcm8tc2VjdGlvbiB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAyMHB4IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmluc2lkZS1oZXJvLXNlY3Rpb24gewogICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZ2FwOiAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDVweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1pY29uIGltZyB7CiAgICAgICAgICAgICAgICB3aWR0aDogMi41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDIuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby10aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuOHJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS4yICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLXN1YnRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLWRlc2NyaXB0aW9uIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDEwcHggMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnBvd2VyZWQtcGlsbCB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiA4cHggMTVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDEwcHggYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDMwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDMwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLyogRW5zdXJlIGxhbmRpbmdTZWN0aW9uIGhhcyBwcm9wZXIgcGFkZGluZyBvbiBtb2JpbGUgdG8gcHJldmVudCBlbGVtZW50cyB0b3VjaGluZyBlZGdlcyAqLwogICAgICAgICAgICAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiAucG93ZXJlZC1waWxsIHsKICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAzMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAzMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBNb2JpbGUgaW5wdXQgc2VjdGlvbiBmaXhlcyAqLwogICAgICAgICAgICAuaW5wdXQtc2VjdGlvbiB7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMTVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjbGFuZGluZ1NlY3Rpb24gLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtaW5uZXItY29udGFpbmVyLnZlcnRpY2FsIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgI2xhbmRpbmdTZWN0aW9uIC5wcm9tcHQtaW5wdXQgewogICAgICAgICAgICAgICAgcGFkZGluZzogMC44NzVyZW0gMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiA1MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiAxNTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjbGFuZGluZ1NlY3Rpb24gLmlucHV0LWNvbnRyb2xzLXJvdyB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiA4cHggMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZ2FwOiA4cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnF1YWxpdHktc2VsZWN0b3IgewogICAgICAgICAgICAgICAgZmxleDogMCAwIGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1pbi13aWR0aDogODBweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAucXVhbGl0eS1kcm9wZG93biB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDZweCA4cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5xdWFsaXR5LXRvb2x0aXAgewogICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5xdWFsaXR5LXRvb2x0aXAgLnRvb2x0aXAtY29udGVudCB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDhweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAyMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmdlbmVyYXRlLWNvZGUtYnRuIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuNjI1cmVtIDAuODc1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWluLXdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC5nZW5lcmF0ZS1jb2RlLWJ0biBzcGFuIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5pbnB1dC1jb250YWluZXIsCiAgICAgICAgICAgIC5wcm9tcHQtaW5wdXQsCiAgICAgICAgICAgIC5pbnB1dC1ncm91cCB7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogTW9iaWxlIGhlcm8gY29udGVudCAqLwogICAgICAgICAgICAuaGVyby1zZWN0aW9uIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDJyZW0gMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby10aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuNzVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjIgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1zdWJ0aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC43NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1zdWJ0aXRsZSBiciB7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLWRlc2NyaXB0aW9uIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tY29udGVudCwKICAgICAgICAgICAgLmhlcm8tdGV4dCB7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBNb2JpbGUgZmVhdHVyZXMgZ3JpZCAtIHNpbmdsZSBjb2x1bW4gKi8KICAgICAgICAgICAgLmZlYXR1cmVzLWdyaWQgewogICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMTBweCAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBnYXA6IDEuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luOiAzcmVtIDAgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmZlYXR1cmUtY2FyZCB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMS41cmVtIDEuMjVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmZlYXR1cmUtdGl0bGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuZmVhdHVyZS1kZXNjcmlwdGlvbiB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuZmVhdHVyZS1kZXNjcmlwdGlvbiBiciB7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZSBpbnB1dCBjb250YWluZXJzICovCiAgICAgICAgICAgIC5pbnB1dC1vdXRlci1jb250YWluZXIgewogICAgICAgICAgICAgICAgcGFkZGluZzogMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaW5wdXQtaW5uZXItY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5wcm9tcHQtaW5wdXQgewogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZSBxdWljayBhcHBzICovCiAgICAgICAgICAgIC5xdWljay1hcHBzIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMTVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMnJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZ2FwOiAwLjc1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAucXVpY2stYXBwLWJ0biB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjYyNXJlbSAxLjI1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGZsZXg6IDAgMSBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IGZpdC1jb250ZW50ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZSBzdWdnZXN0ZWQgYXBwcyAqLwogICAgICAgICAgICAuc3VnZ2VzdGVkLWFwcHMgewogICAgICAgICAgICAgICAgcGFkZGluZzogMCAyMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBNb2JpbGUtc3BlY2lmaWMgYmFja2dyb3VuZCBoZWlnaHQgcmVkdWN0aW9uICovCiAgICAgICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciwKICAgICAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtMjBweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDIwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAxNzBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogRnVydGhlciByZWR1Y3Rpb24gZm9yIHZlcnkgc21hbGwgc2NyZWVucyAqLwogICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHsKCiAgICAgICAgICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIsCiAgICAgICAgICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIHsKICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDE2MHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHsKCiAgICAgICAgICAgIC8qIEV4dHJhIHNtYWxsIHNjcmVlbnMgLSBpbXByb3ZlZCBoZXJvIHJlc3BvbnNpdmVuZXNzICovCiAgICAgICAgICAgIC5oZXJvLXNlY3Rpb24gewogICAgICAgICAgICAgICAgcGFkZGluZzogMS41cmVtIDAuNzVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tc2VjdGlvbiBoMSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1zZWN0aW9uIHAgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLXRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS40cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS4yICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDVweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1zdWJ0aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLWRlc2NyaXB0aW9uIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogRXh0cmEgc21hbGwgaW5wdXQgc2VjdGlvbiAqLwogICAgICAgICAgICAjbGFuZGluZ1NlY3Rpb24gLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiA4cHggNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiAucHJvbXB0LWlucHV0IHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuNzVyZW0gMC44NzVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtY29udHJvbHMtcm93IHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDZweCA4cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGdhcDogNnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5xdWFsaXR5LXNlbGVjdG9yIHsKICAgICAgICAgICAgICAgIGZsZXg6IDAgMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDcwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogOTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAucXVhbGl0eS1kcm9wZG93biB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogNXB4IDZweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAuZ2VuZXJhdGUtY29kZS1idG4gewogICAgICAgICAgICAgICAgcGFkZGluZzogMC41cmVtIDAuNzVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAuZ2VuZXJhdGUtY29kZS1idG4gc3BhbiB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmdlbmVyYXRlLWNvZGUtYnRuIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAuZ2VuZXJhdGUtY29kZS1idG4gc3BhbiB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnF1aWNrLWFwcHMgewogICAgICAgICAgICAgICAgcGFkZGluZzogMCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBnYXA6IDAuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAucXVpY2stYXBwLWJ0biB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tc3VidGl0bGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDhweCAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLWRlc2NyaXB0aW9uIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luOiA4cHggMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMyAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1pY29uIGltZyB7CiAgICAgICAgICAgICAgICB3aWR0aDogMnJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgaGVpZ2h0OiAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5wb3dlcmVkLXBpbGwgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDZweCAxMnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDhweCAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMzBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMzBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBFeHRyYSBzbWFsbCBzY3JlZW5zIC0gaW1wcm92ZWQgdGVzdGltb25pYWwgcmVzcG9uc2l2ZW5lc3MgKi8KICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAzMDBweDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMC41cmVtOwogICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gMS41cmVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtbmF2IHsKICAgICAgICAgICAgICAgIHdpZHRoOiAzNXB4OwogICAgICAgICAgICAgICAgaGVpZ2h0OiAzNXB4OwogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1uYXYucHJldi1idG4gewogICAgICAgICAgICAgICAgbGVmdDogNXB4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtbmF2Lm5leHQtYnRuIHsKICAgICAgICAgICAgICAgIHJpZ2h0OiA1cHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1jYXJkIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDFyZW07CiAgICAgICAgICAgICAgICBtYXJnaW46IDAgNXB4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtYXZhdGFyIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAzNXB4OwogICAgICAgICAgICAgICAgaGVpZ2h0OiAzNXB4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtcXVvdGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWF1dGhvci1uYW1lIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWF1dGhvci10aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1hdXRob3ItY29tcGFueSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWRvdHMgewogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtOwogICAgICAgICAgICAgICAgZ2FwOiAwLjVyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1kb3RzIC5kb3QgewogICAgICAgICAgICAgICAgd2lkdGg6IDhweDsKICAgICAgICAgICAgICAgIGhlaWdodDogOHB4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuZmVhdHVyZXMtZ3JpZCwKICAgICAgICAgICAgLnBvc3NpYmlsaXRpZXMtZ3JpZCwKICAgICAgICAgICAgLmNhcGFiaWxpdGllcy1ncmlkIHsKICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBnYXA6IDFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogQWRqdXN0IHRvcCBtYXJnaW4gZm9yIHZlcnkgc21hbGwgc2NyZWVucyAtIGluY3JlYXNlZCBleHRlbnNpb24gKi8KICAgICAgICAgICAgYm9keSB7CiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA1MHB4OwogICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDYwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDQwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgNjAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogNDAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmFwcC1jb250YWluZXIgewogICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDYwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDQwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIEV4dGVuZCBiYWNrZ3JvdW5kIHBhdHRlcm4gZG93biBmdXJ0aGVyIG9uIHNtYWxsIHNjcmVlbnMgKi8KICAgICAgICAgICAgI2xhbmRpbmdTZWN0aW9uOjpiZWZvcmUgewogICAgICAgICAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyA2MDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgYm9keSB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdTZWdvZSBVSScsIEFyaWFsLCBzYW5zLXNlcmlmOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZSwgY29sb3IgMC4zcyBlYXNlOwogICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgICAgfQoKICAgICAgICAvKiBIaWRlIG1haW4gcGFnZSBzY3JvbGxiYXIgd2hlbiBhcHAgaXMgYWN0aXZlICovCiAgICAgICAgYm9keS5hcHAtYWN0aXZlIHsKICAgICAgICAgICAgLyogb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGhlaWdodDogMTAwdmg7ICovCiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgICAgIH0KCiAgICAgICAgLyogTW9iaWxlIGJvZHkgaGFuZGxpbmcgKi8KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAgICAgICAgICAgYm9keS5hcHAtYWN0aXZlIHsKICAgICAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qIERlc2t0b3Agc2NyZWVucyBhYm92ZSA3NjhweCAtIHJlbW92ZSB3aGl0ZSBzcGFjZXMgKi8KICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNzY5cHgpIHsKICAgICAgICAgICAgLmNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZWFkZXItZmxleCB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC5jb250YWluZXIgewogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICB9CgogICAgICAgIC5oZWFkZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOSk7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTsKICAgICAgICAgICAgcGFkZGluZzogMXJlbSAwOwogICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgICAgICAgICB6LWluZGV4OiAxMDA7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZSwgb3BhY2l0eSAwLjNzIGVhc2UsIHRyYW5zZm9ybSAwLjNzIGVhc2U7CiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgICAgIC8qIEhpZGRlbiBieSBkZWZhdWx0IG9uIGxhbmRpbmcgcGFnZSAqLwogICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDJweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICB9CgogICAgICAgIC8qIFNob3cgaGVhZGVyIG9ubHkgd2hlbiBjb252ZXJzYXRpb24gaGFzIHN0YXJ0ZWQgKi8KICAgICAgICBib2R5LmFwcC1hY3RpdmUgLmhlYWRlciB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgfQoKICAgICAgICAvKiBGdWxsLXdpZHRoIGhlYWRlciBmaXggb25seSB3aGVuIGFwcCBpcyBhY3RpdmUgKGR1cmluZyBnZW5lcmF0aW9uKSAtIGFib3ZlIDEwMjRweCAqLwogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAxMDI1cHgpIHsKICAgICAgICAgICAgYm9keS5hcHAtYWN0aXZlIC5oZWFkZXIsCiAgICAgICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAjd3JhcHBlciAuaGVhZGVyLAogICAgICAgICAgICBib2R5LmFwcC1hY3RpdmUgLmZ1c2lvbi13cmFwcGVyIC5oZWFkZXIsCiAgICAgICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuZnVzaW9uLXBhZ2Utd3JhcHBlciAuaGVhZGVyLAogICAgICAgICAgICBib2R5LmFwcC1hY3RpdmUgLmZ1c2lvbi1wYWdlLXdyYXBwZXItcm93IC5oZWFkZXIgewogICAgICAgICAgICAgICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiBjYWxjKDFyZW0gKyA1MHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTUwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLmhlYWRlci1mbGV4IHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB9CgogICAgICAgIC5sb2dvLWdyb3VwIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlOwogICAgICAgICAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNzQsIDE0NCwgMjI2LCAwLjIpOwogICAgICAgIH0KCiAgICAgICAgLmxvZ28tZ3JvdXA6aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xNSk7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICAgICAgICB9CgogICAgICAgIC5sb2dvLWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICAgICAgdGV4dC1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgICAgICAgICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogLTFweDsKICAgICAgICB9CgogICAgICAgIC5sb2dvLXRleHQgewogICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgICAgICAgIHRleHQtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpOwogICAgICAgIH0KCiAgICAgICAgLmxvZ28tdGV4dCAuYm9sZCB7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIH0KCiAgICAgICAgLmhlYWRlci1yaWdodCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICAgICAgcGFkZGluZzogNnB4IDEycHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICByaWdodDogMjBweDsKICAgICAgICB9CgogICAgICAgIC5naXRodWItYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA1cHg7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgfQoKICAgICAgICAuZG93bmxvYWQtYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNGE5MGUyLCAjMzU3YWJkKTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICAgICAgbWluLXdpZHRoOiA0MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgICAgIHotaW5kZXg6IDk5OTk7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB9CgogICAgICAgIC5kb3dubG9hZC1idG46aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMzU3YWJkLCAjMmE2YWEwKTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgICAgIH0KCiAgICAgICAgLmRvd25sb2FkLWJ0bjphY3RpdmUgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgfQoKICAgICAgICAuZGVwbG95LW5ldGxpZnktYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDBhZDlmLCAjMDBkNGFhKTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICAgICAgbWluLXdpZHRoOiA0MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgICAgIHotaW5kZXg6IDk5OTk7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgfQoKICAgICAgICAuZGVwbG95LW5ldGxpZnktYnRuOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwOTQ3ZiwgIzAwYjM5NCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDE3MywgMTU5LCAwLjMpOwogICAgICAgIH0KCiAgICAgICAgLmRlcGxveS1uZXRsaWZ5LWJ0bjphY3RpdmUgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgfQoKICAgICAgICAvKiBTZXQgVG9rZW4gYnV0dG9uIHN0eWxlZCB0byBtYXRjaCBEZXBsb3kgdG8gTmV0bGlmeSAqLwogICAgICAgIC5zZXQtdG9rZW4tYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDBhZDlmLCAjMDBkNGFhKTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICAgICAgbWluLXdpZHRoOiA0MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgICAgIHotaW5kZXg6IDk5OTk7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgfQoKICAgICAgICAuc2V0LXRva2VuLWJ0bjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDk0N2YsICMwMGIzOTQpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAxNzMsIDE1OSwgMC4zKTsKICAgICAgICB9CgogICAgICAgIC5zZXQtdG9rZW4tYnRuOmFjdGl2ZSB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CgogICAgICAgIC5kb3dubG9hZC1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgLyogUG93ZXJlZCBwaWxsIHdyYXBwZXIgLSBlbnN1cmVzIGl0IHN0YXlzIHdpdGhpbiBzY3JlZW4gYm91bmRhcmllcyAqLwogICAgICAgICNsYW5kaW5nU2VjdGlvbiA+IGEgewogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBwYWRkaW5nOiAwIDIwcHg7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgbWFyZ2luOiAycmVtIDA7CiAgICAgICAgfQoKICAgICAgICAucG93ZXJlZC1waWxsIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MHB4OwogICAgICAgICAgICBwYWRkaW5nOiA4cHggMjBweDsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50OwogICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlLCBjb2xvciAwLjNzIGVhc2U7CiAgICAgICAgICAgIC8qIE1lcmdlZCBkYXJrIHRoZW1lIHN0eWxlcyAqLwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgfQoKICAgICAgICAubWFpbi1oZWFkaW5nIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBmb250LXNpemU6IDIuN3JlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMi41cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC8qIFR5cGluZyBhbmltYXRpb24gc3R5bGVzICovCiAgICAgICAgI2FuaW1hdGVkLXdvcmQgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgbWluLXdpZHRoOiAxMjBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICB9CgogICAgICAgICNhbmltYXRlZC13b3JkOjphZnRlciB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICd8JzsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgICAgICAgICBhbmltYXRpb246IGJsaW5rIDFzIGluZmluaXRlOwogICAgICAgICAgICBtYXJnaW4tbGVmdDogMnB4OwogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBibGluayB7CgogICAgICAgICAgICAwJSwKICAgICAgICAgICAgNTAlIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDUxJSwKICAgICAgICAgICAgMTAwJSB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIHR5cGV3cml0ZXIgewogICAgICAgICAgICBmcm9tIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0byB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLm1haW4taGVhZGluZyAuYmx1ZSB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1ibHVlLWNvbG9yKTsKICAgICAgICB9CgogICAgICAgIC8qIExhbmRpbmcgcGFnZSBpbnB1dCBzdHlsaW5nIC0gRXh0ZW5kZWQgdG9wIGFuZCBib3R0b20gY292ZXJhZ2UgKi8KICAgICAgICAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMjMwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICAgIHBhZGRpbmc6IDgwcHggMCAxNTBweCAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogLTgwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLTE1MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBBbmltYXRlZCBzdGFycnkgYmFja2dyb3VuZCAqLwogICAgICAgICNsYW5kaW5nU2VjdGlvbjo6YmVmb3JlIHsKICAgICAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAxMDBweCk7CiAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6CiAgICAgICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoMnB4IDJweCBhdCAyMHB4IDMwcHgsICM0YTkwZTIsIHRyYW5zcGFyZW50KSwKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudCgycHggMnB4IGF0IDQwcHggNzBweCwgcmdiYSg3NCwgMTQ0LCAyMjYsIDAuOCksIHRyYW5zcGFyZW50KSwKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudCgxcHggMXB4IGF0IDkwcHggNDBweCwgIzZiNzNmZiwgdHJhbnNwYXJlbnQpLAogICAgICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KDFweCAxcHggYXQgMTMwcHggODBweCwgcmdiYSgxMDcsIDExNSwgMjU1LCAwLjYpLCB0cmFuc3BhcmVudCksCiAgICAgICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoMnB4IDJweCBhdCAxNjBweCAzMHB4LCAjNGE5MGUyLCB0cmFuc3BhcmVudCk7CiAgICAgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMjAwcHggMTAwcHg7CiAgICAgICAgICAgIGFuaW1hdGlvbjogdHdpbmtsZSAzcyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGU7CiAgICAgICAgICAgIHotaW5kZXg6IDA7CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIHR3aW5rbGUgewogICAgICAgICAgICAwJSB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDEwMCUgewogICAgICAgICAgICAgICAgb3BhY2l0eTogMC44OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKiBIZXJvIFNlY3Rpb24gKi8KICAgICAgICAuaGVyby1zZWN0aW9uIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBwYWRkaW5nOiAwcmVtIDAgMHJlbTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB6LWluZGV4OiAxOwogICAgICAgIH0KCiAgICAgICAgLmluc2lkZS1oZXJvLXNlY3Rpb24gewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICB9CgogICAgICAgIC5oZXJvLWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDNyZW07CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICAgICAgICAgICAgY29sb3I6ICM0YTkwZTI7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgYW5pbWF0aW9uOiBmbG9hdCAzcyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICB9CgogICAgICAgIC5oZXJvLWljb24gaW1nIHsKICAgICAgICAgICAgd2lkdGg6IDRyZW07CiAgICAgICAgICAgIGhlaWdodDogMi41cmVtOwogICAgICAgICAgICBvYmplY3QtZml0OiBjb250YWluOwogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgZmxvYXQgewoKICAgICAgICAgICAgMCUsCiAgICAgICAgICAgIDEwMCUgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDUwJSB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuaGVyby10aXRsZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMy41cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtOwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS4yOwogICAgICAgICAgICB0ZXh0LXNoYWRvdzogMCAwIDIwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICAgICAgfQoKICAgICAgICAuaGVyby1zdWJ0aXRsZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgICAgIG1heC13aWR0aDogNjAwcHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgICAgfQoKICAgICAgICAuaGVyby1kZXNjcmlwdGlvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzcmVtOwogICAgICAgICAgICBtYXgtd2lkdGg6IDUwMHB4OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgICAgIH0KCiAgICAgICAgLyogVXBkYXRlIGlucHV0IHNlY3Rpb24gZm9yIGRhcmsgdGhlbWUgKi8KICAgICAgICAjbGFuZGluZ1NlY3Rpb24gLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgICAgICAgIC8qIE1lcmdlZCBzdHlsZXMgKi8KICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDJyZW07CiAgICAgICAgICAgIG1heC13aWR0aDogNzAwcHg7CiAgICAgICAgfQoKICAgICAgICAjbGFuZGluZ1NlY3Rpb24gLmlucHV0LWlubmVyLWNvbnRhaW5lci52ZXJ0aWNhbCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgfQoKICAgICAgICAjbGFuZGluZ1NlY3Rpb24gLnByb21wdC1pbnB1dCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4IDEycHggMCAwOwogICAgICAgICAgICBwYWRkaW5nOiAxcmVtIDEuNXJlbTsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgcmVzaXplOiBub25lOwogICAgICAgICAgICBtaW4taGVpZ2h0OiA2MHB4OwogICAgICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweDsKICAgICAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgfQoKICAgICAgICAjbGFuZGluZ1NlY3Rpb24gLmlucHV0LWNvbnRyb2xzLXJvdyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICAgICAgICAgIGJvcmRlci10b3A6IG5vbmU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCAxMnB4IDEycHg7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICBtaW4taGVpZ2h0OiA1MHB4OwogICAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgICAgIC8qIE1lcmdlZC91cGRhdGVkIHN0eWxlcyAqLwogICAgICAgICAgICBwYWRkaW5nOiA2cHggMTBweDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICB9CgogICAgICAgICNsYW5kaW5nU2VjdGlvbiAucHJvbXB0LWlucHV0OjpwbGFjZWhvbGRlciB7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7CiAgICAgICAgfQoKICAgICAgICAuZ2VuZXJhdGUtY29kZS1idG4gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNGE5MGUyLCAjNmI3M2ZmKSAhaW1wb3J0YW50OwogICAgICAgICAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1pbi13aWR0aDogZml0LWNvbnRlbnQgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxNTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxNXB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UgIWltcG9ydGFudDsKICAgICAgICAgICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5nZW5lcmF0ZS1jb2RlLWJ0bjpob3ZlciB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDZweCAyMHB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjQpICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBGZWF0dXJlcyBHcmlkICovCiAgICAgICAgLmZlYXR1cmVzLWdyaWQgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDI4MHB4LCAxZnIpKTsKICAgICAgICAgICAgZ2FwOiAycmVtOwogICAgICAgICAgICBtYXJnaW46IDRyZW0gMDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB6LWluZGV4OiAxOwogICAgICAgIH0KCiAgICAgICAgLmZlYXR1cmUtY2FyZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDsKICAgICAgICAgICAgcGFkZGluZzogMnJlbTsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB9CgogICAgICAgIC5mZWF0dXJlLWNhcmQ6OmJlZm9yZSB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogMDsKICAgICAgICAgICAgbGVmdDogLTEwMCU7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoNzQsIDE0NCwgMjI2LCAwLjEpLCB0cmFuc3BhcmVudCk7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGxlZnQgMC41cyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLmZlYXR1cmUtY2FyZDpob3Zlcjo6YmVmb3JlIHsKICAgICAgICAgICAgbGVmdDogMTAwJTsKICAgICAgICB9CgogICAgICAgIC5mZWF0dXJlLWNhcmQ6aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjIpOwogICAgICAgIH0KCiAgICAgICAgLmZlYXR1cmUtaWNvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi41cmVtOwogICAgICAgICAgICBjb2xvcjogIzRhOTBlMjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIH0KCiAgICAgICAgLmZlYXR1cmUtaWNvbiBpbWcgewogICAgICAgICAgICB3aWR0aDogMi41cmVtOwogICAgICAgICAgICBoZWlnaHQ6IDIuNXJlbTsKICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgfQoKICAgICAgICAvKiBBZ2dyZXNzaXZlIFdvcmRQcmVzcyB3aGl0ZSBzcGFjZSByZW1vdmFsICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5oZWFkZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIGhlYWRlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhlYWRlci1mbGV4LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY29udGFpbmVyIHsKICAgICAgICAgICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjkpICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBGb3JjZSByZW1vdmUgYW55IFdvcmRQcmVzcyBjb250YWluZXIgY29uc3RyYWludHMgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI21haW4sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5sYXlvdXQtYm94ZWQtbW9kZSAjbWFpbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmxheW91dC13aWRlLW1vZGUgI21haW4sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5sYXlvdXQtd2lkZS1tb2RlICN3cmFwcGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAud3JhcHBlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRlbnQsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWNvbnRlbnQgewogICAgICAgICAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBSZW1vdmUgYW55IFdvcmRQcmVzcyB0aGVtZSBwYWRkaW5nL21hcmdpbnMgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgKiB7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFRhcmdldCBzcGVjaWZpYyBXb3JkUHJlc3MgdGhlbWUgZWxlbWVudHMgY2F1c2luZyB3aGl0ZSBzcGFjZXMgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1oZWFkZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24taGVhZGVyLXdyYXBwZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tc2Vjb25kYXJ5LWhlYWRlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1tYWluLWhlYWRlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmF2YWRhLWhlYWRlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhlYWRlci13cmFwcGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1oZWFkZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5tYWluLWhlYWRlciB7CiAgICAgICAgICAgIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC45KSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogUmVtb3ZlIGFueSBXb3JkUHJlc3MgdGhlbWUgY29udGFpbmVyIHBhZGRpbmcgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1jb250YWluZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tcm93LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWNvbHVtbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdywKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLWNvbHVtbiB7CiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRm9yY2UgaGVhZGVyIHRvIGJyZWFrIG91dCBvZiBhbnkgY29udGFpbmVyIGNvbnN0cmFpbnRzICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5oZWFkZXIgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKICAgICAgICAgICAgbGVmdDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICByaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuaGVhZGVyICosCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIGhlYWRlciAqIHsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBPdmVycmlkZSBXb3JkUHJlc3MgYmFja2dyb3VuZCBjb2xvciBmb3IgbWFpbiBlbGVtZW50cyAqLwogICAgICAgICNtYWluLAogICAgICAgIC5sYXlvdXQtYm94ZWQtbW9kZSAjbWFpbiwKICAgICAgICAubGF5b3V0LWJveGVkLW1vZGUuYXZhZGEtZm9vdGVyLWZ4LXN0aWNreSAuYWJvdmUtZm9vdGVyLXdyYXBwZXIsCiAgICAgICAgLmxheW91dC1ib3hlZC1tb2RlLmF2YWRhLWZvb3Rlci1meC1zdGlja3ktd2l0aC1wYXJhbGxheC1iZy1pbWFnZSAuYWJvdmUtZm9vdGVyLXdyYXBwZXIsCiAgICAgICAgLmxheW91dC13aWRlLW1vZGUgI21haW4sCiAgICAgICAgLmxheW91dC13aWRlLW1vZGUgI3dyYXBwZXIsCiAgICAgICAgYm9keSwKICAgICAgICBodG1sLAogICAgICAgIGh0bWwgYm9keS5jdXN0b20tYmFja2dyb3VuZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZpeCBXb3JkUHJlc3MgdGVtcGxhdGUgZWxlbWVudHMgLSByZW1vdmUgdW53YW50ZWQgbGluZXMgYW5kIGJhY2tncm91bmRzICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICogewogICAgICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFJlbW92ZSB3aGl0ZSBsaW5lIGF0IHRvcCBvZiBXb3JkUHJlc3MgaW50ZXJmYWNlICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzOjpiZWZvcmUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzOjphZnRlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgKjo6YmVmb3JlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAqOjphZnRlciB7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgICAgICAgICBjb250ZW50OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBSZW1vdmUgdG9wIGJvcmRlcnMgYW5kIGxpbmVzIGZyb20gV29yZFByZXNzIGVsZW1lbnRzICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIGJvZHksCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIGh0bWwsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICNwYWdlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtaGVhZGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1tYWluLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1mb290ZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC53cC1zaXRlLWJsb2NrcywKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLndwLWJsb2NrLWdyb3VwLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAud3AtY29udGFpbmVyIHsKICAgICAgICAgICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci1yaWdodDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBSZW1vdmUgc3BlY2lmaWMgYm9yZGVycyBmcm9tIFdvcmRQcmVzcyBlbGVtZW50cyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyBkaXYsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIHNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIGFydGljbGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIG1haW4sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIGhlYWRlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgZm9vdGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyBuYXYsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIGFzaWRlIHsKICAgICAgICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXItbGVmdDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXItcmlnaHQ6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFJlbW92ZSBiYWNrZ3JvdW5kcyBmcm9tIFdvcmRQcmVzcyB0ZW1wbGF0ZSBlbGVtZW50cyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAud3AtY29udGFpbmVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAud3AtYmxvY2stZ3JvdXAsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC53cC1ibG9jay1jb2x1bW4sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC53cC1ibG9jay1jb2x1bW5zLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZW50cnktY29udGVudCwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtY29udGVudCwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRlbnQtYXJlYSB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBSZW1vdmUgV29yZFByZXNzIGFkbWluIGJhciBhbmQgdG9wIGVsZW1lbnRzICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICN3cGFkbWluYmFyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYWRtaW4tYmFyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAud3AtYWRtaW4tYmFyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyBbaWQqPSJhZG1pbiJdLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyBbY2xhc3MqPSJhZG1pbiJdIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZvcmNlIHJlbW92ZSBhbnkgdG9wLWxldmVsIGJvcmRlcnMgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjM+KiB7CiAgICAgICAgICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFdvcmRQcmVzcy1zcGVjaWZpYyBtb2JpbGUgZm9vdGVyIGJhY2tncm91bmQgZml4ZXMgLSBpbmNyZWFzZWQgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgewogICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgODAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA4MDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIgewogICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMjAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogV29yZFByZXNzIG1vYmlsZSBmb290ZXIgYmFja2dyb3VuZCBleHRlbnNpb24gLSBpbmNyZWFzZWQgKi8KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIHsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAyMDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMjAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMjAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb246OmJlZm9yZSB7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDIwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKiBBZGRpdGlvbmFsIFdvcmRQcmVzcyBvdmVycmlkZXMgZm9yIGZlYXR1cmUgY2FyZHMgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZlYXR1cmUtY2FyZCBoMywKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmNhcGFiaWxpdHktY2FyZCBoMywKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnBvc3NpYmlsaXR5LWNhcmQgaDMgewogICAgICAgICAgICBjb2xvcjogIzRhOTBlMiAhaW1wb3J0YW50OwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBXb3JkUHJlc3Mtc3BlY2lmaWMgaGVhZGluZyBjb2xvciBmaXhlcyAqLwogICAgICAgIC8qIFdvcmRQcmVzcy1zcGVjaWZpYyBoZWFkaW5nIGNvbG9yIGZpeGVzIC0gb25seSBmb3Igb3VyIGFwcCBjb250ZW50ICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBoMSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIGgyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gaDMsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBoNCwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIGg1LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gaDYsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIGgxLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciBoMiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIgaDMsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIGg0LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciBoNSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIgaDYgewogICAgICAgICAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogU3BlY2lmaWMgV29yZFByZXNzIG92ZXJyaWRlcyBmb3IgZmVhdHVyZSB0aXRsZXMgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZlYXR1cmUtdGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5jYXBhYmlsaXR5LXRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAucG9zc2liaWxpdHktdGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mZWF0dXJlLWNhcmQgaDMsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5jYXBhYmlsaXR5LWNhcmQgaDMsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5wb3NzaWJpbGl0eS1jYXJkIGgzIHsKICAgICAgICAgICAgY29sb3I6ICM0YTkwZTIgIWltcG9ydGFudDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRW5zdXJlIGZlYXR1cmUgdGl0bGVzIGFyZSBibHVlIGluIFdvcmRQcmVzcyAqLwogICAgICAgIC5mZWF0dXJlLXRpdGxlIHsKICAgICAgICAgICAgY29sb3I6ICM0YTkwZTIgIWltcG9ydGFudDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRnVzaW9uIEJ1aWxkZXIgYW5kIFdvcmRQcmVzcyBoMSBjb2xvciBvdmVycmlkZSAqLwogICAgICAgIGZ1c2lvbi1tb2RhbCBoMSwgLmZ1c2lvbi1wb3N0LWNvbnRlbnQgaDEsIC5mdXNpb24tdGItZm9vdGVyIGgxLCAuZnVzaW9uLXRiLXBhZ2UtdGl0bGUtYmFyIGgxLCAuZnVzaW9uLXdpZGdldC1hcmVhIGgxLCAucG9zdC1jb250ZW50IGgxLCAuc2VhcmNoLXBhZ2Utc2VhcmNoLWZvcm0gaDEsIC50aXRsZSBoMSwgaDEgewogICAgICAgICAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRnVzaW9uIEJ1aWxkZXIgYW5kIFdvcmRQcmVzcyBoMyBjb2xvciBvdmVycmlkZSAqLwogICAgICAgIC5mdXNpb24tYXV0aG9yIC5mdXNpb24tYXV0aG9yLXRpdGxlLCAuZnVzaW9uLW1vZGFsIC5tb2RhbC10aXRsZSwgLmZ1c2lvbi13aWRnZXQtYXJlYSBoMywgLnBvc3QtY29udGVudCBoMywgLnByb2plY3QtY29udGVudCBoMywgLnNpZGViYXIgLndpZGdldCBoMywgLm1haW4tZmxleCAuc2xpZGUtY29udGVudCBoMywgaDMgewogICAgICAgICAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmZlYXR1cmUtZGVzY3JpcHRpb24gewogICAgICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgICAgfQoKICAgICAgICAucXVpY2stYXBwcyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICAgICAgZ2FwOiAxcmVtOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLXRvcDogM3JlbTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB6LWluZGV4OiAxOwogICAgICAgIH0KCiAgICAgICAgLnF1aWNrLWFwcC1idG4gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOwogICAgICAgICAgICBwYWRkaW5nOiAwLjc1cmVtIDEuNXJlbTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjVweDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpOwogICAgICAgIH0KCiAgICAgICAgLnF1aWNrLWFwcC1idG46aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4yKTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC40KTsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKICAgICAgICB9CgogICAgICAgIC8qIEhvdyBJdCBXb3JrcyBTZWN0aW9uICovCiAgICAgICAgLmhvdy1pdC13b3Jrcy1zZWN0aW9uIHsKICAgICAgICAgICAgbWFyZ2luOiA2cmVtIGF1dG8gNHJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuaG93LWl0LXdvcmtzLXRpdGxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuaG93LWl0LXdvcmtzLXN1YnRpdGxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDRyZW07CiAgICAgICAgICAgIG1heC13aWR0aDogNzAwcHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC50ZXh0LXdoaXRlIHsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgIH0KCiAgICAgICAgLnN0ZXBzLWNvbnRhaW5lciB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBnYXA6IDJyZW07CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDRyZW07CiAgICAgICAgICAgIGZsZXgtd3JhcDogbm93cmFwOwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgcGFkZGluZzogMCAxcmVtOwogICAgICAgICAgICBtYXgtd2lkdGg6IDkwMHB4OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgICAgIH0KCiAgICAgICAgLnN0ZXAtY2FyZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDsKICAgICAgICAgICAgcGFkZGluZzogMnJlbSAxLjVyZW07CiAgICAgICAgICAgIG1heC13aWR0aDogMjgwcHg7CiAgICAgICAgICAgIGZsZXg6IDE7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLnN0ZXAtY2FyZDpob3ZlciB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgICAgICB9CgogICAgICAgIC5zdGVwLW51bWJlciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAtMTVweDsKICAgICAgICAgICAgbGVmdDogLTVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzJBNDFFNzsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICB3aWR0aDogMzVweDsKICAgICAgICAgICAgaGVpZ2h0OiAzNXB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgfQoKICAgICAgICAuc3RlcC1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjVyZW07CiAgICAgICAgICAgIG1hcmdpbjogMXJlbSAwOwogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB9CgogICAgICAgIC5zdGVwLWljb24gaW1nIHsKICAgICAgICAgICAgd2lkdGg6IDIuNXJlbTsKICAgICAgICAgICAgaGVpZ2h0OiAyLjVyZW07CiAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CgogICAgICAgIC5zdGVwLXRpdGxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjNyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgICAgIH0KCiAgICAgICAgLnN0ZXAtZGVzY3JpcHRpb24gewogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgICAgfQoKICAgICAgICAuc3RlcC1hcnJvdyB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1ibHVlLWNvbG9yKTsKICAgICAgICAgICAgZm9udC1zaXplOiAycmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICAgICAgZmxleDogMCAwIGF1dG87CiAgICAgICAgfQoKICAgICAgICAudHJ5LW5vdy1idG4gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMkE0MUU3OwogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgcGFkZGluZzogMXJlbSAyLjVyZW07CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxNXB4IHJnYmEoNDIsIDY1LCAyMzEsIDAuMyk7CiAgICAgICAgfQoKICAgICAgICAudHJ5LW5vdy1idG46aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMWUyZWIzOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNnB4IDIwcHggcmdiYSg0MiwgNjUsIDIzMSwgMC40KTsKICAgICAgICB9CgogICAgICAgIC8qIEVuZGxlc3MgUG9zc2liaWxpdGllcyBTZWN0aW9uICovCiAgICAgICAgLmVuZGxlc3MtcG9zc2liaWxpdGllcy1zZWN0aW9uIHsKICAgICAgICAgICAgbWFyZ2luOiA2cmVtIGF1dG8gNHJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMC