AI-Powered Business Insights DashboardRoshan Gehlot2026-01-03T09:29:17+00:00
PGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICA8dGl0bGU+Q29kaW5nIEFJIC0gV3JpdGVjcmVhbSBBSTwvdGl0bGU+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCIgLz4KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyIgLz4KICAgIDx0aXRsZT5BSS1Qb3dlcmVkIEJ1c2luZXNzIEluc2lnaHRzIERhc2hib2FyZCB8IFJlYWwtVGltZSBBbmFseXRpY3MgJiBCSTwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iVW5sb2NrIGFjdGlvbmFibGUgaW50ZWxsaWdlbmNlIHdpdGggb3VyIEFJLVBvd2VyZWQgQnVzaW5lc3MgSW5zaWdodHMgRGFzaGJvYXJkLiBNb25pdG9yIHJlYWwtdGltZSBLUElzLCB2aXN1YWxpemUgZGF0YSB0cmVuZHMsIGFuZCBkcml2ZSBncm93dGggd2l0aCBhZHZhbmNlZCBwcmVkaWN0aXZlIGFuYWx5dGljcy4iIC8+CiAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0iQUkgYnVzaW5lc3MgaW5zaWdodHMsIGJ1c2luZXNzIGludGVsbGlnZW5jZSBkYXNoYm9hcmQsIHJlYWwtdGltZSBhbmFseXRpY3MsIEtQSSB0cmFja2luZywgcHJlZGljdGl2ZSBhbmFseXRpY3MsIGRhdGEgdmlzdWFsaXphdGlvbiwgQUkgZGF0YSBzY2llbmNlLCBidXNpbmVzcyBwZXJmb3JtYW5jZSBtb25pdG9yIiAvPgogICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSJXcml0ZWNyZWFtIEFJIiAvPgogICAgPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJpbmRleCwgZm9sbG93LCBtYXgtc25pcHBldDotMSwgbWF4LWltYWdlLXByZXZpZXc6bGFyZ2UsIG1heC12aWRlby1wcmV2aWV3Oi0xIiAvPgogICAgPG1ldGEgbmFtZT0ibGFuZ3VhZ2UiIGNvbnRlbnQ9IkVuZ2xpc2giIC8+CiAgICA8bWV0YSBuYW1lPSJkaXN0cmlidXRpb24iIGNvbnRlbnQ9Imdsb2JhbCIgLz4KICAgIDxtZXRhIG5hbWU9InJhdGluZyIgY29udGVudD0iR2VuZXJhbCIgLz4KICAgIDxtZXRhIG5hbWU9InJldmlzaXQtYWZ0ZXIiIGNvbnRlbnQ9IjEgZGF5cyIgLz4KICAgIDxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIiBjb250ZW50PSIjNWIyMWI2IiAvPgogICAgPG1ldGEgbmFtZT0iYXBwbGljYXRpb24tbmFtZSIgY29udGVudD0iQUkgQnVzaW5lc3MgSW5zaWdodHMiIC8+CgogICAgPCEtLSBDYW5vbmljYWwgLS0+CiAgICA8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vYWktYnVzaW5lc3MtaW5zaWdodHMtZGFzaGJvYXJkIiAvPgoKICAgIDwhLS0gRmF2aWNvbnMgLS0+CiAgICA8bGluayByZWw9Imljb24iIGhyZWY9Ii9mYXZpY29uLmljbyIgLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjE4MHgxODAiIGhyZWY9Ii9hcHBsZS10b3VjaC1pY29uLnBuZyIgLz4KICAgIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBzaXplcz0iMzJ4MzIiIGhyZWY9Ii9mYXZpY29uLTMyeDMyLnBuZyIgLz4KICAgIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBzaXplcz0iMTZ4MTYiIGhyZWY9Ii9mYXZpY29uLTE2eDE2LnBuZyIgLz4KCiAgICA8IS0tIE9wZW4gR3JhcGggLyBGYWNlYm9vayAtLT4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJ3ZWJzaXRlIiAvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVudD0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vYWktYnVzaW5lc3MtaW5zaWdodHMtZGFzaGJvYXJkIiAvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnRpdGxlIiBjb250ZW50PSJBSS1Qb3dlcmVkIEJ1c2luZXNzIEluc2lnaHRzIERhc2hib2FyZCB8IERhdGEtRHJpdmVuIEdyb3d0aCIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIgY29udGVudD0iVHJhbnNmb3JtIHJhdyBkYXRhIGludG8gc3RyYXRlZ2ljIGRlY2lzaW9ucy4gT3VyIEFJIGRhc2hib2FyZCBwcm92aWRlcyBkZWVwIGluc2lnaHRzIGludG8geW91ciBidXNpbmVzcyBwZXJmb3JtYW5jZSBhbmQgbWFya2V0IHRyZW5kcy4iIC8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzAzL2FpLWRhc2hib2FyZC1wcmV2aWV3LnBuZyIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IldyaXRlY3JlYW0gQUkiIC8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6bG9jYWxlIiBjb250ZW50PSJlbl9VUyIgLz4KCiAgICA8IS0tIFR3aXR0ZXIgQ2FyZHMgLS0+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmNhcmQiIGNvbnRlbnQ9InN1bW1hcnlfbGFyZ2VfaW1hZ2UiIC8+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOnVybCIgY29udGVudD0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vYWktYnVzaW5lc3MtaW5zaWdodHMtZGFzaGJvYXJkIiAvPgogICAgPG1ldGEgbmFtZT0idHdpdHRlcjp0aXRsZSIgY29udGVudD0iQUktUG93ZXJlZCBCdXNpbmVzcyBJbnNpZ2h0cyBEYXNoYm9hcmQiIC8+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmRlc2NyaXB0aW9uIiBjb250ZW50PSJBZHZhbmNlZCBBSSBhbmFseXRpY3MgZm9yIG1vZGVybiBlbnRlcnByaXNlcy4gTW9uaXRvciwgYW5hbHl6ZSwgYW5kIHNjYWxlIHdpdGggcmVhbC10aW1lIGJ1c2luZXNzIGludGVsbGlnZW5jZS4iIC8+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmltYWdlIiBjb250ZW50PSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wMy9haS1kYXNoYm9hcmQtcHJldmlldy5wbmciIC8+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmNyZWF0b3IiIGNvbnRlbnQ9IkBXcml0ZUNyZWFtQUkiIC8+CgogICAgPCEtLSBJbnN0YWdyYW0gLS0+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6c2VlX2Fsc28iIGNvbnRlbnQ9Imh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vd3JpdGVjcmVhbWFpLyIgLz4KICAgIDxtZXRhIG5hbWU9Imluc3RhZ3JhbTpzaXRlIiBjb250ZW50PSJAd3JpdGVjcmVhbWFpIiAvPgogICAgPG1ldGEgbmFtZT0iaW5zdGFncmFtOmltYWdlIiBjb250ZW50PSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wMy9sZWFybi1haS5wbmciIC8+CgogICAgPCEtLSBBZGRpdGlvbmFsIFNFTyBNZXRhIFRhZ3MgLS0+CiAgICA8bWV0YSBuYW1lPSJnZW8ucmVnaW9uIiBjb250ZW50PSJVUyIgLz4KICAgIDxtZXRhIG5hbWU9Imdlby5wbGFjZW5hbWUiIGNvbnRlbnQ9Ik5ldyBZb3JrLCBVU0EiIC8+CiAgICA8bWV0YSBuYW1lPSJnZW8ucG9zaXRpb24iIGNvbnRlbnQ9IjQwLjcxMjg7LTc0LjAwNjAiIC8+CiAgICA8bWV0YSBuYW1lPSJJQ0JNIiBjb250ZW50PSI0MC43MTI4LCAtNzQuMDA2MCIgLz4KICAgIDxtZXRhIG5hbWU9Im1vYmlsZS13ZWItYXBwLWNhcGFibGUiIGNvbnRlbnQ9InllcyIgLz4KICAgIDxtZXRhIG5hbWU9IkhhbmRoZWxkRnJpZW5kbHkiIGNvbnRlbnQ9InRydWUiIC8+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiIC8+CgogICAgPCEtLSBTY2hlbWEgTWFya3VwIChKU09OLUxEKSAtLT4KICAgIDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI+CiAgewogICAgIkBjb250ZXh0IjogImh0dHBzOi8vc2NoZW1hLm9yZyIsCiAgICAiQHR5cGUiOiAiV2ViQXBwbGljYXRpb24iLAogICAgIm5hbWUiOiAiQUktUG93ZXJlZCBCdXNpbmVzcyBJbnNpZ2h0cyBEYXNoYm9hcmQiLAogICAgInVybCI6ICJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS9haS1idXNpbmVzcy1pbnNpZ2h0cy1kYXNoYm9hcmQiLAogICAgImFwcGxpY2F0aW9uQ2F0ZWdvcnkiOiAiQnVzaW5lc3NBcHBsaWNhdGlvbiIsCiAgICAiZGVzY3JpcHRpb24iOiAiQW4gYWR2YW5jZWQgQUktZHJpdmVuIHBsYXRmb3JtIGZvciBidXNpbmVzcyBpbnRlbGxpZ2VuY2UsIHJlYWwtdGltZSBkYXRhIG1vbml0b3JpbmcsIGFuZCBwcmVkaWN0aXZlIHBlcmZvcm1hbmNlIGFuYWx5dGljcy4iLAogICAgIm9wZXJhdGluZ1N5c3RlbSI6ICJBbGwiCiAgfQogIDwvc2NyaXB0PgoKICAgIDwhLS0gRm9udHMgYW5kIENTUyAtLT4KICAgIDwhLS0gPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tIiAvPgogIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbSIgY3Jvc3NvcmlnaW4gLz4KICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PU91dGZpdDp3Z2h0QDQwMDs1MDA7NjAwOzcwMCZmYW1pbHk9U3BhY2UrR3JvdGVzazp3Z2h0QDQwMDs1MDA7NjAwOzcwMCZkaXNwbGF5PXN3YXAiIHJlbD0ic3R5bGVzaGVldCIgLz4KICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2ZvbnQtYXdlc29tZS82LjAuMC9jc3MvYWxsLm1pbi5jc3MiIC8+IC0tPgogICAgPHNjcmlwdCB0eXBlPSJpbXBvcnRtYXAiPgogICAgICB7CiAgICAgICAgImltcG9ydHMiOiB7CiAgICAgICAgICAicmVhY3QiOiAiaHR0cHM6Ly9lc20uc2gvcmVhY3RAMTguMi4wIiwKICAgICAgICAgICJyZWFjdC1kb20iOiAiaHR0cHM6Ly9lc20uc2gvcmVhY3QtZG9tQDE4LjIuMCIsCiAgICAgICAgICAicmVhY3QtZG9tLyI6ICJodHRwczovL2VzbS5zaC9yZWFjdC1kb21AMTguMi4wLyIsCiAgICAgICAgICAiQGNvZGVzYW5kYm94L3NhbmRwYWNrLXJlYWN0IjogImh0dHBzOi8vZXNtLnNoL0Bjb2Rlc2FuZGJveC9zYW5kcGFjay1yZWFjdEAyLjguMD9kZXBzPXJlYWN0QDE4LjIuMCZkZXBzPXJlYWN0LWRvbUAxOC4yLjAiCiAgICAgICAgfQogICAgICB9CiAgICA8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2tpdC5mb250YXdlc29tZS5jb20vYmMwODE3OTJkNC5qcyIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+CgogICAgPHN0eWxlPgogICAgICAgIDpyb290IHsKICAgICAgICAgICAgLS1wcmltYXJ5LWNvbG9yOiAjMmQyZDJkOwogICAgICAgICAgICAtLWFjY2VudC1jb2xvcjogIzRhOTBlMjsKICAgICAgICAgICAgLS1ibHVlLWNvbG9yOiAjNGE5MGUyOwoKICAgICAgICAgICAgLyogRGFyayB0aGVtZSBjb2xvcnMgKGRlZmF1bHQgYW5kIG9ubHkgdGhlbWUpICovCiAgICAgICAgICAgIC0tYmctY29sb3I6ICMwMDAwMDA7CiAgICAgICAgICAgIC0tc3VyZmFjZS1jb2xvcjogIzJkMmQyZDsKICAgICAgICAgICAgLS10ZXh0LWNvbG9yOiAjZTBlMGUwOwogICAgICAgICAgICAtLWJvcmRlci1jb2xvcjogIzQwNDA0MDsKICAgICAgICAgICAgLS1pbnB1dC1iZzogIzJkMmQyZDsKICAgICAgICAgICAgLS1pbnB1dC1ib3JkZXI6ICM0MDQwNDA7CiAgICAgICAgICAgIC0tcGlsbC1iZzogIzMzMzMzMzsKICAgICAgICAgICAgLS1idXR0b24tYmc6ICM0MDQwNDA7CiAgICAgICAgICAgIC0tc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgICAgICAgICAgIC0taGVhZGVyLWJvcmRlcjogIzQwNDA0MDsKICAgICAgICAgICAgLS1mb290ZXItYmc6ICMyZDJkMmQ7CiAgICAgICAgICAgIC0tY2FyZC1iZzogIzMzMzMzMzsKICAgICAgICAgICAgLS1iZy1zZWNvbmRhcnk6ICM0NDQ0NDQ7CiAgICAgICAgICAgIC0tdGV4dC1zZWNvbmRhcnk6ICNjY2NjY2M7CiAgICAgICAgICAgIC0tYmx1ZS1ob3ZlcjogIzNhN2JjODsKICAgICAgICB9CgogICAgICAgIC8qIFNjcm9sbGJhciB3aWR0aCAqLwogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgICAgICB3aWR0aDogMTJweDsKICAgICAgICB9CgogICAgICAgIC8qIFRyYWNrIChiYWNrZ3JvdW5kKSAqLwogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMWExYTFhOwogICAgICAgICAgICAvKiBkYXJrIGJhY2tncm91bmQgKi8KICAgICAgICB9CgogICAgICAgIC8qIEhhbmRsZSAodGh1bWIpICovCiAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICM1NTU7CiAgICAgICAgICAgIC8qIGRhcmsgZ3JheSAqLwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgfQoKICAgICAgICAvKiBIYW5kbGUgb24gaG92ZXIgKi8KICAgICAgICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzc3NzsKICAgICAgICB9CgogICAgICAgIC8qIEJhc2UgY2hhdCBidWJibGUgc3R5bGVzIGZvciBkYXJrIHRoZW1lICovCiAgICAgICAgLmNoYXQtYnViYmxlLmFpIHsKICAgICAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzNhM2EzYTsKICAgICAgICAgICAgLyogTW9yZSBzcGVjaWZpYyB0aGFuIC0tc3VyZmFjZS1jb2xvciAqLwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM1MDUwNTA7CiAgICAgICAgICAgIC8qIE1vcmUgc3BlY2lmaWMgdGhhbiAtLWJvcmRlci1jb2xvciAqLwogICAgICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLmNoYXQtYnViYmxlLmFpOjpiZWZvcmUgewogICAgICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICBib3R0b206IDA7CiAgICAgICAgICAgIGxlZnQ6IC04cHg7CiAgICAgICAgICAgIHdpZHRoOiA4cHg7CiAgICAgICAgICAgIGhlaWdodDogOHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2EzYTNhOwogICAgICAgICAgICAvKiBNYXRjaGVzIHRoZSBidWJibGUgYmFja2dyb3VuZCAqLwogICAgICAgICAgICBjbGlwLXBhdGg6IHBvbHlnb24oMTAwJSAwLCAwJSAxMDAlLCAxMDAlIDEwMCUpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5naXRodWItc3RhcnMsCiAgICAgICAgLmdpdGh1Yi1sYWJlbCB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgICAgICB9CgogICAgICAgIC5iYWRnZS10b2dldGhlciB7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICAgICAgb3BhY2l0eTogMC44OwogICAgICAgIH0KCiAgICAgICAgKiB7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmOwogICAgICAgIH0KCiAgICAgICAgLyogV29yZFByZXNzIFRoZW1lIENvbXBhdGliaWxpdHkgLSBGdWxsIFBhZ2UgQmFja2dyb3VuZCAqLwogICAgICAgIGJvZHksCiAgICAgICAgaHRtbCB7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFdvcmRQcmVzcyBjb250YWluZXIgYWRqdXN0bWVudHMgLSBGdWxsIHdpZHRoICovCiAgICAgICAgLmNvbnRhaW5lciwKICAgICAgICAuY29udGFpbmVyLWZsdWlkLAogICAgICAgIC53cmFwcGVyLAogICAgICAgIC5jb250ZW50LAogICAgICAgIC5tYWluLAogICAgICAgIC5zaXRlLWNvbnRlbnQsCiAgICAgICAgLmVudHJ5LWNvbnRlbnQsCiAgICAgICAgLnBhZ2UtY29udGVudCB7CiAgICAgICAgICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBGb290ZXIgZnVsbCB3aWR0aCBvdmVycmlkZSBmb3IgV29yZFByZXNzIGNvbnRhaW5lcnMgKi8KICAgICAgICAjd3JhcHBlciAuZm9vdGVyLCAKICAgICAgICAuZnVzaW9uLXdyYXBwZXIgLmZvb3RlciwKICAgICAgICAuZnVzaW9uLXBhZ2Utd3JhcHBlciAuZm9vdGVyLAogICAgICAgIC5mdXNpb24tcGFnZS13cmFwcGVyLXJvdyAuZm9vdGVyLAogICAgICAgIGJvZHkgLmZvb3RlciwKICAgICAgICBmb290ZXIuZm9vdGVyIHsKICAgICAgICAgICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBBZGRpdGlvbmFsIFdvcmRQcmVzcyB3cmFwcGVyIG92ZXJyaWRlcyBmb3IgZm9vdGVyIGFyZWEgKi8KICAgICAgICAjbWFpbiAuZm9vdGVyLAogICAgICAgIC5mdXNpb24tcGFnZS13cmFwcGVyIC5mb290ZXIsCiAgICAgICAgLmZ1c2lvbi13cmFwcGVyIC5mb290ZXIsCiAgICAgICAgLmZ1c2lvbi1wYWdlLXdyYXBwZXItcm93IC5mb290ZXIsCiAgICAgICAgLmZ1c2lvbi1idWlsZGVyLXJvdyAuZm9vdGVyIHsKICAgICAgICAgICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBFbnN1cmUgb3VyIGNvbnRlbnQgd29ya3Mgd2l0aGluIFdvcmRQcmVzcyAqLwogICAgICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDA7CiAgICAgICAgICAgIGNvbG9yOiAjZTBlMGUwOwogICAgICAgIH0KCiAgICAgICAgLyogRml4IGhlcm8gc2VjdGlvbiBjb250ZW50IGNlbnRlcmluZyAtIGtlZXAgY29udGVudCBjZW50ZXJlZCBidXQgYmFja2dyb3VuZCBmdWxsLXdpZHRoICovCiAgICAgICAgLmhlcm8tc2VjdGlvbiB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmhlcm8tY29udGVudCwKICAgICAgICAuaGVyby10ZXh0IHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDgwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRml4IHN0YXIgbG9nbyBwb3NpdGlvbmluZyAtIGtlZXAgaXQgY2VudGVyZWQgKi8KICAgICAgICAuaGVyby1zZWN0aW9uIGgxIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBnYXA6IDE1cHggIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5oZXJvLXNlY3Rpb24gcCB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRml4IHRoZSBhY3R1YWwgaW5wdXQgY29udGFpbmVyIGNsYXNzZXMgZnJvbSBIVE1MICovCiAgICAgICAgLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMTBweCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmlucHV0LWlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgIHdpZHRoOiA1MCUgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA1MCUgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5pbnB1dC1pbm5lci1jb250YWluZXIudmVydGljYWwgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5pbnB1dC1jb250cm9scy1yb3cgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDEycHggMTJweCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDUwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgZ2FwOiAxMnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDZweCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZpeCBwcm9tcHQgaW5wdXQgc3R5bGluZyB0byBtYXRjaCBvcmlnaW5hbCAqLwogICAgICAgIC5wcm9tcHQtaW5wdXQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgIWltcG9ydGFudDsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweCAxMnB4IDAgMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAxcmVtIDEuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICBmb250LXNpemU6IDFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgICAgICAgICAgcmVzaXplOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDYwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LWhlaWdodDogMjAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgIH0KCgoKICAgICAgICAvKiBGaXggc3VnZ2VzdGVkIGFwcHMgc2VjdGlvbiAtIGNlbnRlcmVkIHdpdGggcHJvcGVyIHdpZHRoICovCiAgICAgICAgLnN1Z2dlc3RlZC1hcHBzIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwogICAgICAgICAgICBnYXA6IDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5zdWdnZXN0ZWQtYXBwIHsKICAgICAgICAgICAgbWFyZ2luOiA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZpeCBmZWF0dXJlcyBncmlkIC0gMyBjYXJkcyBpbiBhIHJvdywgY2VudGVyZWQgKi8KICAgICAgICAuZmVhdHVyZXMtZ3JpZCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMjgwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGdhcDogMjBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IGZpdC1jb250ZW50ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggIWltcG9ydGFudDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5mZWF0dXJlLWNhcmQgewogICAgICAgICAgICB3aWR0aDogMjgwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAyODBweCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRW5zdXJlIGFsbCBzZWN0aW9ucyBhcmUgcHJvcGVybHkgY2VudGVyZWQgKi8KICAgICAgICAuZmVhdHVyZXMtc2VjdGlvbiwKICAgICAgICAuaG93LWl0LXdvcmtzLXNlY3Rpb24sCiAgICAgICAgLnBvc3NpYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICAuZGVtby1zZWN0aW9uLAogICAgICAgIC5jYXBhYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICAudGVzdGltb25pYWxzLXNlY3Rpb24sCiAgICAgICAgLmN0YS1zZWN0aW9uIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogV29yZFByZXNzIHBhZ2Utc3BlY2lmaWMgc3R5bGluZyAtIEZ1bGwgYmFja2dyb3VuZCBjb3ZlcmFnZSAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBjb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGNvbG9yOiAjZTBlMGUwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IC00MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IC0xNTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXRvcDogNDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTUwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDE5MHB4KSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogV29yZFByZXNzLXNwZWNpZmljIGNlbnRlcmluZyBmb3IgSG93IEl0IFdvcmtzIHNlY3Rpb24gKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhvdy1pdC13b3Jrcy1zZWN0aW9uIHsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRm9yY2UgY2VudGVyIG9ubHkgdGhlIHN1YnRpdGxlIHRleHQgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhvdy1pdC13b3Jrcy1zdWJ0aXRsZSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogQ2VudGVyIEFMTCBzZWN0aW9uIHN1YnRpdGxlcyBpbiBXb3JkUHJlc3MgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhlcm8tc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5lbmRsZXNzLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYWN0aW9uLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubW9yZS1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmxvdmVkLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY3RhLXN1YnRpdGxlIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDcwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBFbnN1cmUgc2VjdGlvbiB0aXRsZXMgYXJlIGNlbnRlcmVkICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3MtdGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5lbmRsZXNzLXRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYWN0aW9uLXRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubW9yZS10aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmxvdmVkLXRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY3RhLXRpdGxlIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogV29yZFByZXNzLXNwZWNpZmljIGNlbnRlcmluZyBmb3IgYWxsIHNlY3Rpb25zICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmVuZGxlc3MtcG9zc2liaWxpdGllcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuc2VlLWl0LWluLWFjdGlvbi1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubW9yZS1jYXBhYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmxvdmVkLWJ5LWRldmVsb3BlcnMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnJlYWR5LXRvLWNvZGUtc2VjdGlvbiB7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDJyZW0gIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEFkZGl0aW9uYWwgV29yZFByZXNzIGNvbnRhaW5lciBvdmVycmlkZXMgZm9yIHByb3BlciBjZW50ZXJpbmcgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAuaG93LWl0LXdvcmtzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLmVuZGxlc3MtcG9zc2liaWxpdGllcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5zZWUtaXQtaW4tYWN0aW9uLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLm1vcmUtY2FwYWJpbGl0aWVzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLmxvdmVkLWJ5LWRldmVsb3BlcnMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAucmVhZHktdG8tY29kZS1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5ob3ctaXQtd29ya3Mtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAuZW5kbGVzcy1wb3NzaWJpbGl0aWVzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLnNlZS1pdC1pbi1hY3Rpb24tc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAubW9yZS1jYXBhYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAubG92ZWQtYnktZGV2ZWxvcGVycy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5yZWFkeS10by1jb2RlLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLmhvdy1pdC13b3Jrcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5lbmRsZXNzLXBvc3NpYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbl9pbm5lciAuc2VlLWl0LWluLWFjdGlvbi1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5tb3JlLWNhcGFiaWxpdGllcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5sb3ZlZC1ieS1kZXZlbG9wZXJzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLnJlYWR5LXRvLWNvZGUtc2VjdGlvbiB7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLmhvdy1pdC13b3Jrcy1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAuZW5kbGVzcy1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAuYWN0aW9uLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5tb3JlLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5sb3ZlZC1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAuY3RhLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5ob3ctaXQtd29ya3Mtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLmVuZGxlc3Mtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLmFjdGlvbi1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAubW9yZS1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAubG92ZWQtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLmN0YS1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbl9pbm5lciAuaG93LWl0LXdvcmtzLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5lbmRsZXNzLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5hY3Rpb24tc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLm1vcmUtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLmxvdmVkLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5jdGEtc3VidGl0bGUgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogNzAwcHggIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEVuc3VyZSBXb3JkUHJlc3MgY29udGFpbmVycyBkb24ndCBhZGQgd2hpdGUgc3BhY2UgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRhaW5lciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLndyYXBwZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5jb250ZW50LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubWFpbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtY29udGVudCwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmVudHJ5LWNvbnRlbnQsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5wYWdlLWNvbnRlbnQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFJlbW92ZSBleGNlc3NpdmUgV29yZFByZXNzIG92ZXJyaWRlcyAtIGtlZXAgbWluaW1hbCAqLwoKICAgICAgICAvKiBXb3JkUHJlc3MgY29udGFpbmVyIGNvbXBhdGliaWxpdHkgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRhaW5lciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLndyYXBwZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5jb250ZW50LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubWFpbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtY29udGVudCB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICB9CgogICAgICAgIC8qIFJlc3BvbnNpdmUgRGVzaWduIEltcHJvdmVtZW50cyAqLwogICAgICAgIC8qIEZvciBzY3JlZW5zIDkwMHB4IGFuZCBiZWxvdyAtIFNUQUNLIFZFUlRJQ0FMTFkgKi8KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHsKICAgICAgICAgICAgLnN0ZXBzLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBnYXA6IDEuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnN0ZXAtYXJyb3cgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuc3RlcC1jYXJkIHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogOTAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB3aWR0aDogOTAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEuNXJlbSAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuc3RlcC10aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5zdGVwLWRlc2NyaXB0aW9uIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS40ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qIE1vYmlsZSByZXNwb25zaXZlIGZpeGVzICovCiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgICAgIC5hcHAtY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZSBmb290ZXIgYmFja2dyb3VuZCBmaXggLSBpbmNyZWFzZWQgZXh0ZW5zaW9uICovCiAgICAgICAgICAgIGJvZHkgewogICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNDBweDsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA0MDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAzMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDQwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDMwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5hcHAtY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA0MDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAzMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBFeHRlbmQgYmFja2dyb3VuZCBwYXR0ZXJuIGRvd24gc2lnbmlmaWNhbnRseSAqLwogICAgICAgICAgICAjbGFuZGluZ1NlY3Rpb246OmJlZm9yZSB7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDMwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBNb2JpbGUgaGVybyBzZWN0aW9uIGltcHJvdmVtZW50cyAqLwogICAgICAgICAgICAuaGVyby1zZWN0aW9uIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggMTVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWluLWhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaW5zaWRlLWhlcm8tc2VjdGlvbiB7CiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBnYXA6IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLWljb24gaW1nIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAyLjVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGhlaWdodDogMi41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLXRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS44cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjIgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tc3VidGl0bGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS40ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDEwcHggMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tZGVzY3JpcHRpb24gewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogMTBweCAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAucG93ZXJlZC1waWxsIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogMTBweCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMTVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMzBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMzBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvKiBFbnN1cmUgbGFuZGluZ1NlY3Rpb24gaGFzIHByb3BlciBwYWRkaW5nIG9uIG1vYmlsZSB0byBwcmV2ZW50IGVsZW1lbnRzIHRvdWNoaW5nIGVkZ2VzICovCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgI2xhbmRpbmdTZWN0aW9uIC5wb3dlcmVkLXBpbGwgewogICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDMwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDMwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZSBpbnB1dCBzZWN0aW9uIGZpeGVzICovCiAgICAgICAgICAgIC5pbnB1dC1zZWN0aW9uIHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtb3V0ZXItY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgI2xhbmRpbmdTZWN0aW9uIC5pbnB1dC1pbm5lci1jb250YWluZXIudmVydGljYWwgewogICAgICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjbGFuZGluZ1NlY3Rpb24gLnByb21wdC1pbnB1dCB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjg3NXJlbSAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDUwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDE1MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtY29udHJvbHMtcm93IHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBnYXA6IDhweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAucXVhbGl0eS1zZWxlY3RvciB7CiAgICAgICAgICAgICAgICBmbGV4OiAwIDAgYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWluLXdpZHRoOiA4MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5xdWFsaXR5LWRyb3Bkb3duIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogNnB4IDhweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnF1YWxpdHktdG9vbHRpcCB7CiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnF1YWxpdHktdG9vbHRpcCAudG9vbHRpcC1jb250ZW50IHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogOHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDIwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICByaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuZ2VuZXJhdGUtY29kZS1idG4gewogICAgICAgICAgICAgICAgcGFkZGluZzogMC42MjVyZW0gMC44NzVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLmdlbmVyYXRlLWNvZGUtYnRuIHNwYW4gewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmlucHV0LWNvbnRhaW5lciwKICAgICAgICAgICAgLnByb21wdC1pbnB1dCwKICAgICAgICAgICAgLmlucHV0LWdyb3VwIHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBNb2JpbGUgaGVybyBjb250ZW50ICovCiAgICAgICAgICAgIC5oZXJvLXNlY3Rpb24gewogICAgICAgICAgICAgICAgcGFkZGluZzogMnJlbSAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLXRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS43NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMiAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLXN1YnRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLXN1YnRpdGxlIGJyIHsKICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tZGVzY3JpcHRpb24gewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1jb250ZW50LAogICAgICAgICAgICAuaGVyby10ZXh0IHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAyMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZSBmZWF0dXJlcyBncmlkIC0gc2luZ2xlIGNvbHVtbiAqLwogICAgICAgICAgICAuZmVhdHVyZXMtZ3JpZCB7CiAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGdhcDogMS41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDNyZW0gMCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuZmVhdHVyZS1jYXJkIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxLjVyZW0gMS4yNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuZmVhdHVyZS10aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5mZWF0dXJlLWRlc2NyaXB0aW9uIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS41ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5mZWF0dXJlLWRlc2NyaXB0aW9uIGJyIHsKICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogTW9iaWxlIGlucHV0IGNvbnRhaW5lcnMgKi8KICAgICAgICAgICAgLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5pbnB1dC1pbm5lci1jb250YWluZXIgewogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnByb21wdC1pbnB1dCB7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogTW9iaWxlIHF1aWNrIGFwcHMgKi8KICAgICAgICAgICAgLnF1aWNrLWFwcHMgewogICAgICAgICAgICAgICAgcGFkZGluZzogMCAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBnYXA6IDAuNzVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5xdWljay1hcHAtYnRuIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuNjI1cmVtIDEuMjVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZmxleDogMCAxIGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1pbi13aWR0aDogZml0LWNvbnRlbnQgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogTW9iaWxlIHN1Z2dlc3RlZCBhcHBzICovCiAgICAgICAgICAgIC5zdWdnZXN0ZWQtYXBwcyB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDIwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZS1zcGVjaWZpYyBiYWNrZ3JvdW5kIGhlaWdodCByZWR1Y3Rpb24gKi8KICAgICAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyLAogICAgICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIHsKICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC0yMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogMjBweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDE3MHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBGdXJ0aGVyIHJlZHVjdGlvbiBmb3IgdmVyeSBzbWFsbCBzY3JlZW5zICovCiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkgewoKICAgICAgICAgICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciwKICAgICAgICAgICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC0xMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMTYwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkgewoKICAgICAgICAgICAgLyogRXh0cmEgc21hbGwgc2NyZWVucyAtIGltcHJvdmVkIGhlcm8gcmVzcG9uc2l2ZW5lc3MgKi8KICAgICAgICAgICAgLmhlcm8tc2VjdGlvbiB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxLjVyZW0gMC43NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1zZWN0aW9uIGgxIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLXNlY3Rpb24gcCB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tdGl0bGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjRyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjIgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLXN1YnRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tZGVzY3JpcHRpb24gewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDVweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBFeHRyYSBzbWFsbCBpbnB1dCBzZWN0aW9uICovCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtb3V0ZXItY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDhweCA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgI2xhbmRpbmdTZWN0aW9uIC5wcm9tcHQtaW5wdXQgewogICAgICAgICAgICAgICAgcGFkZGluZzogMC43NXJlbSAwLjg3NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgI2xhbmRpbmdTZWN0aW9uIC5pbnB1dC1jb250cm9scy1yb3cgewogICAgICAgICAgICAgICAgcGFkZGluZzogNnB4IDhweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZ2FwOiA2cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnF1YWxpdHktc2VsZWN0b3IgewogICAgICAgICAgICAgICAgZmxleDogMCAwIGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1pbi13aWR0aDogNzBweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA5MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5xdWFsaXR5LWRyb3Bkb3duIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiA1cHggNnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC5nZW5lcmF0ZS1jb2RlLWJ0biB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWluLXdpZHRoOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC5nZW5lcmF0ZS1jb2RlLWJ0biBzcGFuIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuZ2VuZXJhdGUtY29kZS1idG4gewogICAgICAgICAgICAgICAgcGFkZGluZzogMC41cmVtIDAuNzVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC5nZW5lcmF0ZS1jb2RlLWJ0biBzcGFuIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAucXVpY2stYXBwcyB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGdhcDogMC41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5xdWljay1hcHAtYnRuIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbSAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1zdWJ0aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogOHB4IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tZGVzY3JpcHRpb24gewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDhweCAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS4zICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLWljb24gaW1nIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDJyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnBvd2VyZWQtcGlsbCB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogNnB4IDEycHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogOHB4IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAzMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAzMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIEV4dHJhIHNtYWxsIHNjcmVlbnMgLSBpbXByb3ZlZCB0ZXN0aW1vbmlhbCByZXNwb25zaXZlbmVzcyAqLwogICAgICAgICAgICAudGVzdGltb25pYWwtY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDMwMHB4OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAwLjVyZW07CiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0byAxLjVyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1uYXYgewogICAgICAgICAgICAgICAgd2lkdGg6IDM1cHg7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDM1cHg7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLW5hdi5wcmV2LWJ0biB7CiAgICAgICAgICAgICAgICBsZWZ0OiA1cHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1uYXYubmV4dC1idG4gewogICAgICAgICAgICAgICAgcmlnaHQ6IDVweDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWNhcmQgewogICAgICAgICAgICAgICAgcGFkZGluZzogMXJlbTsKICAgICAgICAgICAgICAgIG1hcmdpbjogMCA1cHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1hdmF0YXIgewogICAgICAgICAgICAgICAgd2lkdGg6IDM1cHg7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDM1cHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1xdW90ZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtYXV0aG9yLW5hbWUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtYXV0aG9yLXRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWF1dGhvci1jb21wYW55IHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtZG90cyB7CiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07CiAgICAgICAgICAgICAgICBnYXA6IDAuNXJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWRvdHMgLmRvdCB7CiAgICAgICAgICAgICAgICB3aWR0aDogOHB4OwogICAgICAgICAgICAgICAgaGVpZ2h0OiA4cHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5mZWF0dXJlcy1ncmlkLAogICAgICAgICAgICAucG9zc2liaWxpdGllcy1ncmlkLAogICAgICAgICAgICAuY2FwYWJpbGl0aWVzLWdyaWQgewogICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGdhcDogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBBZGp1c3QgdG9wIG1hcmdpbiBmb3IgdmVyeSBzbWFsbCBzY3JlZW5zIC0gaW5jcmVhc2VkIGV4dGVuc2lvbiAqLwogICAgICAgICAgICBib2R5IHsKICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDUwcHg7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgNjAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogNDAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgI2xhbmRpbmdTZWN0aW9uIHsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA2MDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiA0MDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuYXBwLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgNjAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogNDAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogRXh0ZW5kIGJhY2tncm91bmQgcGF0dGVybiBkb3duIGZ1cnRoZXIgb24gc21hbGwgc2NyZWVucyAqLwogICAgICAgICAgICAjbGFuZGluZ1NlY3Rpb246OmJlZm9yZSB7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDYwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBib2R5IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogICAgICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICBmb250LWZhbWlseTogJ1NlZ29lIFVJJywgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlLCBjb2xvciAwLjNzIGVhc2U7CiAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICB9CgogICAgICAgIC8qIEhpZGUgbWFpbiBwYWdlIHNjcm9sbGJhciB3aGVuIGFwcCBpcyBhY3RpdmUgKi8KICAgICAgICBib2R5LmFwcC1hY3RpdmUgewogICAgICAgICAgICAvKiBvdmVyZmxvdzogaGlkZGVuOwogICAgaGVpZ2h0OiAxMDB2aDsgKi8KICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgfQoKICAgICAgICAvKiBNb2JpbGUgYm9keSBoYW5kbGluZyAqLwogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgewogICAgICAgICAgICBib2R5LmFwcC1hY3RpdmUgewogICAgICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyogRGVza3RvcCBzY3JlZW5zIGFib3ZlIDc2OHB4IC0gcmVtb3ZlIHdoaXRlIHNwYWNlcyAqLwogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjlweCkgewogICAgICAgICAgICAuY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlYWRlci1mbGV4IHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLmNvbnRhaW5lciB7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIH0KCiAgICAgICAgLmhlYWRlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC45KTsKICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpOwogICAgICAgICAgICBwYWRkaW5nOiAxcmVtIDA7CiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICAgICAgICAgIHotaW5kZXg6IDEwMDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLCBvcGFjaXR5IDAuM3MgZWFzZSwgdHJhbnNmb3JtIDAuM3MgZWFzZTsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICAgICAgLyogSGlkZGVuIGJ5IGRlZmF1bHQgb24gbGFuZGluZyBwYWdlICovCiAgICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjMpOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIH0KCiAgICAgICAgLyogU2hvdyBoZWFkZXIgb25seSB3aGVuIGNvbnZlcnNhdGlvbiBoYXMgc3RhcnRlZCAqLwogICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuaGVhZGVyIHsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CgogICAgICAgIC8qIEZ1bGwtd2lkdGggaGVhZGVyIGZpeCBvbmx5IHdoZW4gYXBwIGlzIGFjdGl2ZSAoZHVyaW5nIGdlbmVyYXRpb24pIC0gYWJvdmUgMTAyNHB4ICovCiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDEwMjVweCkgewogICAgICAgICAgICBib2R5LmFwcC1hY3RpdmUgLmhlYWRlciwKICAgICAgICAgICAgYm9keS5hcHAtYWN0aXZlICN3cmFwcGVyIC5oZWFkZXIsCiAgICAgICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuZnVzaW9uLXdyYXBwZXIgLmhlYWRlciwKICAgICAgICAgICAgYm9keS5hcHAtYWN0aXZlIC5mdXNpb24tcGFnZS13cmFwcGVyIC5oZWFkZXIsCiAgICAgICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuZnVzaW9uLXBhZ2Utd3JhcHBlci1yb3cgLmhlYWRlciB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IGNhbGMoMXJlbSArIDUwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtNTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuaGVhZGVyLWZsZXggewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH0KCiAgICAgICAgLmxvZ28tZ3JvdXAgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMik7CiAgICAgICAgfQoKICAgICAgICAubG9nby1ncm91cDpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjE1KTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgICAgIH0KCiAgICAgICAgLmxvZ28taWNvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgICAgICB0ZXh0LXNoYWRvdzogMCAwIDEwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAtMXB4OwogICAgICAgIH0KCiAgICAgICAgLmxvZ28tdGV4dCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgICAgICAgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgICAgICAgfQoKICAgICAgICAubG9nby10ZXh0IC5ib2xkIHsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgfQoKICAgICAgICAuaGVhZGVyLXJpZ2h0IHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgICAgICBwYWRkaW5nOiA2cHggMTJweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHJpZ2h0OiAyMHB4OwogICAgICAgIH0KCiAgICAgICAgLmdpdGh1Yi1idG4gewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDVweDsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICB9CgogICAgICAgIC5kb3dubG9hZC1idG4gewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM0YTkwZTIsICMzNTdhYmQpOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgICAgICAgICBtaW4td2lkdGg6IDQwcHg7CiAgICAgICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICAgICAgei1pbmRleDogOTk5OTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH0KCiAgICAgICAgLmRvd25sb2FkLWJ0bjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMzNTdhYmQsICMyYTZhYTApOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICAgICAgfQoKICAgICAgICAuZG93bmxvYWQtYnRuOmFjdGl2ZSB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CgogICAgICAgIC5kZXBsb3ktbmV0bGlmeS1idG4gewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMGFkOWYsICMwMGQ0YWEpOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgICAgICAgICBtaW4td2lkdGg6IDQwcHg7CiAgICAgICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICAgICAgei1pbmRleDogOTk5OTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBnYXA6IDZweDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICB9CgogICAgICAgIC5kZXBsb3ktbmV0bGlmeS1idG46aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA5NDdmLCAjMDBiMzk0KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMTczLCAxNTksIDAuMyk7CiAgICAgICAgfQoKICAgICAgICAuZGVwbG95LW5ldGxpZnktYnRuOmFjdGl2ZSB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CgogICAgICAgIC8qIFNldCBUb2tlbiBidXR0b24gc3R5bGVkIHRvIG1hdGNoIERlcGxveSB0byBOZXRsaWZ5ICovCiAgICAgICAgLnNldC10b2tlbi1idG4gewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMGFkOWYsICMwMGQ0YWEpOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgICAgICAgICBtaW4td2lkdGg6IDQwcHg7CiAgICAgICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICAgICAgei1pbmRleDogOTk5OTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBnYXA6IDZweDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICB9CgogICAgICAgIC5zZXQtdG9rZW4tYnRuOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwOTQ3ZiwgIzAwYjM5NCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDE3MywgMTU5LCAwLjMpOwogICAgICAgIH0KCiAgICAgICAgLnNldC10b2tlbi1idG46YWN0aXZlIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgIH0KCiAgICAgICAgLmRvd25sb2FkLWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgfQoKICAgICAgICAvKiBQb3dlcmVkIHBpbGwgd3JhcHBlciAtIGVuc3VyZXMgaXQgc3RheXMgd2l0aGluIHNjcmVlbiBib3VuZGFyaWVzICovCiAgICAgICAgI2xhbmRpbmdTZWN0aW9uID4gYSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICBtYXJnaW46IDJyZW0gMDsKICAgICAgICB9CgogICAgICAgIC5wb3dlcmVkLXBpbGwgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAyMHB4OwogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgICAgICB3aWR0aDogZml0LWNvbnRlbnQ7CiAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UsIGNvbG9yIDAuM3MgZWFzZTsKICAgICAgICAgICAgLyogTWVyZ2VkIGRhcmsgdGhlbWUgc3R5bGVzICovCiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICB9CgogICAgICAgIC5tYWluLWhlYWRpbmcgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi43cmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyLjVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLyogVHlwaW5nIGFuaW1hdGlvbiBzdHlsZXMgKi8KICAgICAgICAjYW5pbWF0ZWQtd29yZCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgICBtaW4td2lkdGg6IDEyMHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgIH0KCiAgICAgICAgI2FuaW1hdGVkLXdvcmQ6OmFmdGVyIHsKICAgICAgICAgICAgY29udGVudDogJ3wnOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICAgICAgICAgIGFuaW1hdGlvbjogYmxpbmsgMXMgaW5maW5pdGU7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAycHg7CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIGJsaW5rIHsKCiAgICAgICAgICAgIDAlLAogICAgICAgICAgICA1MCUgewogICAgICAgICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgNTElLAogICAgICAgICAgICAxMDAlIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgdHlwZXdyaXRlciB7CiAgICAgICAgICAgIGZyb20gewogICAgICAgICAgICAgICAgd2lkdGg6IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRvIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAubWFpbi1oZWFkaW5nIC5ibHVlIHsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgICAgIH0KCiAgICAgICAgLyogTGFuZGluZyBwYWdlIGlucHV0IHN0eWxpbmcgLSBFeHRlbmRlZCB0b3AgYW5kIGJvdHRvbSBjb3ZlcmFnZSAqLwogICAgICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAyMzBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgICAgcGFkZGluZzogODBweCAwIDE1MHB4IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAtODBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAtMTUwcHggIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEFuaW1hdGVkIHN0YXJyeSBiYWNrZ3JvdW5kICovCiAgICAgICAgI2xhbmRpbmdTZWN0aW9uOjpiZWZvcmUgewogICAgICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDEwMHB4KTsKICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZToKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudCgycHggMnB4IGF0IDIwcHggMzBweCwgIzRhOTBlMiwgdHJhbnNwYXJlbnQpLAogICAgICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KDJweCAycHggYXQgNDBweCA3MHB4LCByZ2JhKDc0LCAxNDQsIDIyNiwgMC44KSwgdHJhbnNwYXJlbnQpLAogICAgICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KDFweCAxcHggYXQgOTBweCA0MHB4LCAjNmI3M2ZmLCB0cmFuc3BhcmVudCksCiAgICAgICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoMXB4IDFweCBhdCAxMzBweCA4MHB4LCByZ2JhKDEwNywgMTE1LCAyNTUsIDAuNiksIHRyYW5zcGFyZW50KSwKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudCgycHggMnB4IGF0IDE2MHB4IDMwcHgsICM0YTkwZTIsIHRyYW5zcGFyZW50KTsKICAgICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdDsKICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAyMDBweCAxMDBweDsKICAgICAgICAgICAgYW5pbWF0aW9uOiB0d2lua2xlIDNzIGVhc2UtaW4tb3V0IGluZmluaXRlIGFsdGVybmF0ZTsKICAgICAgICAgICAgei1pbmRleDogMDsKICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgdHdpbmtsZSB7CiAgICAgICAgICAgIDAlIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuMzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgMTAwJSB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qIEhlcm8gU2VjdGlvbiAqLwogICAgICAgIC5oZXJvLXNlY3Rpb24gewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDByZW0gMCAwcmVtOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgfQoKICAgICAgICAuaW5zaWRlLWhlcm8tc2VjdGlvbiB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIH0KCiAgICAgICAgLmhlcm8taWNvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogM3JlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtOwogICAgICAgICAgICBjb2xvcjogIzRhOTBlMjsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgICBhbmltYXRpb246IGZsb2F0IDNzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgIH0KCiAgICAgICAgLmhlcm8taWNvbiBpbWcgewogICAgICAgICAgICB3aWR0aDogNHJlbTsKICAgICAgICAgICAgaGVpZ2h0OiAyLjVyZW07CiAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBmbG9hdCB7CgogICAgICAgICAgICAwJSwKICAgICAgICAgICAgMTAwJSB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgNTAlIHsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC5oZXJvLXRpdGxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAzLjVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7CiAgICAgICAgICAgIHRleHQtc2hhZG93OiAwIDAgMjBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgICAgICB9CgogICAgICAgIC5oZXJvLXN1YnRpdGxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjNyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICAgICAgbWF4LXdpZHRoOiA2MDBweDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgICAgICB9CgogICAgICAgIC5oZXJvLWRlc2NyaXB0aW9uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDNyZW07CiAgICAgICAgICAgIG1heC13aWR0aDogNTAwcHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgICAgfQoKICAgICAgICAvKiBVcGRhdGUgaW5wdXQgc2VjdGlvbiBmb3IgZGFyayB0aGVtZSAqLwogICAgICAgICNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtb3V0ZXItY29udGFpbmVyIHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB6LWluZGV4OiAxOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgICAgICAgICAgLyogTWVyZ2VkIHN0eWxlcyAqLwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnJlbTsKICAgICAgICAgICAgbWF4LXdpZHRoOiA3MDBweDsKICAgICAgICB9CgogICAgICAgICNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtaW5uZXItY29udGFpbmVyLnZlcnRpY2FsIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICB9CgogICAgICAgICNsYW5kaW5nU2VjdGlvbiAucHJvbXB0LWlucHV0IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHggMTJweCAwIDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDFyZW0gMS41cmVtOwogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICByZXNpemU6IG5vbmU7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDYwcHg7CiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB9CgogICAgICAgICNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtY29udHJvbHMtcm93IHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgICAgICAgICAgYm9yZGVyLXRvcDogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDEycHggMTJweDsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDUwcHg7CiAgICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICAgICAgLyogTWVyZ2VkL3VwZGF0ZWQgc3R5bGVzICovCiAgICAgICAgICAgIHBhZGRpbmc6IDZweCAxMHB4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIH0KCiAgICAgICAgI2xhbmRpbmdTZWN0aW9uIC5wcm9tcHQtaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTsKICAgICAgICB9CgogICAgICAgIC5nZW5lcmF0ZS1jb2RlLWJ0biB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM0YTkwZTIsICM2YjczZmYpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMC43NXJlbSAxLjVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWluLXdpZHRoOiBmaXQtY29udGVudCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDE1MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMykgIWltcG9ydGFudDsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZSAhaW1wb3J0YW50OwogICAgICAgICAgICBmbGV4LXNocmluazogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmdlbmVyYXRlLWNvZGUtYnRuOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNnB4IDIwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuNCkgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZlYXR1cmVzIEdyaWQgKi8KICAgICAgICAuZmVhdHVyZXMtZ3JpZCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjgwcHgsIDFmcikpOwogICAgICAgICAgICBnYXA6IDJyZW07CiAgICAgICAgICAgIG1hcmdpbjogNHJlbSAwOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgfQoKICAgICAgICAuZmVhdHVyZS1jYXJkIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgICAgICAgICBwYWRkaW5nOiAycmVtOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIH0KCiAgICAgICAgLmZlYXR1cmUtY2FyZDo6YmVmb3JlIHsKICAgICAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAgICBsZWZ0OiAtMTAwJTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSksIHRyYW5zcGFyZW50KTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogbGVmdCAwLjVzIGVhc2U7CiAgICAgICAgfQoKICAgICAgICAuZmVhdHVyZS1jYXJkOmhvdmVyOjpiZWZvcmUgewogICAgICAgICAgICBsZWZ0OiAxMDAlOwogICAgICAgIH0KCiAgICAgICAgLmZlYXR1cmUtY2FyZDpob3ZlciB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMik7CiAgICAgICAgfQoKICAgICAgICAuZmVhdHVyZS1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjVyZW07CiAgICAgICAgICAgIGNvbG9yOiAjNGE5MGUyOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgfQoKICAgICAgICAuZmVhdHVyZS1pY29uIGltZyB7CiAgICAgICAgICAgIHdpZHRoOiAyLjVyZW07CiAgICAgICAgICAgIGhlaWdodDogMi41cmVtOwogICAgICAgICAgICBvYmplY3QtZml0OiBjb250YWluOwogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB9CgogICAgICAgIC8qIEFnZ3Jlc3NpdmUgV29yZFByZXNzIHdoaXRlIHNwYWNlIHJlbW92YWwgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhlYWRlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgaGVhZGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuaGVhZGVyLWZsZXgsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5jb250YWluZXIgewogICAgICAgICAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOSkgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZvcmNlIHJlbW92ZSBhbnkgV29yZFByZXNzIGNvbnRhaW5lciBjb25zdHJhaW50cyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbWFpbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmxheW91dC1ib3hlZC1tb2RlICNtYWluLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubGF5b3V0LXdpZGUtbW9kZSAjbWFpbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmxheW91dC13aWRlLW1vZGUgI3dyYXBwZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC53cmFwcGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY29udGVudCwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtY29udGVudCB7CiAgICAgICAgICAgIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFJlbW92ZSBhbnkgV29yZFByZXNzIHRoZW1lIHBhZGRpbmcvbWFyZ2lucyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAqIHsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogVGFyZ2V0IHNwZWNpZmljIFdvcmRQcmVzcyB0aGVtZSBlbGVtZW50cyBjYXVzaW5nIHdoaXRlIHNwYWNlcyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWhlYWRlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1oZWFkZXItd3JhcHBlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1zZWNvbmRhcnktaGVhZGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLW1haW4taGVhZGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYXZhZGEtaGVhZGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuaGVhZGVyLXdyYXBwZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWhlYWRlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLm1haW4taGVhZGVyIHsKICAgICAgICAgICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjkpICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBSZW1vdmUgYW55IFdvcmRQcmVzcyB0aGVtZSBjb250YWluZXIgcGFkZGluZyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWNvbnRhaW5lciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1yb3csCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tY29sdW1uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItY29sdW1uIHsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBGb3JjZSBoZWFkZXIgdG8gYnJlYWsgb3V0IG9mIGFueSBjb250YWluZXIgY29uc3RyYWludHMgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhlYWRlciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OwogICAgICAgICAgICBsZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5oZWFkZXIgKiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgaGVhZGVyICogewogICAgICAgICAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIE92ZXJyaWRlIF