Craft Beautiful Personal Blog PostsRoshan Gehlot2026-01-03T09:55:45+00:00
PGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICA8dGl0bGU+Q29kaW5nIEFJIC0gV3JpdGVjcmVhbSBBSTwvdGl0bGU+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCIgLz4KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyIgLz4KICAgIDx0aXRsZT5BSSBDb2RlIEFzc2lzdGFudCB8IEdlbmVyYXRlIENvZGUgZnJvbSBQcm9tcHRzIC0gV3JpdGVjcmVhbSBBSTwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIKICAgICAgICBjb250ZW50PSJUcmFuc2Zvcm0geW91ciBpZGVhcyBpbnRvIGNvZGUgaW5zdGFudGx5IHVzaW5nIFdyaXRlY3JlYW0gQUkncyBDb2RlIEFzc2lzdGFudC4gQnVpbGQgYXBwcywgY29tcG9uZW50cywgc2NyaXB0cywgYW5kIG1vcmUgd2l0aCBqdXN0IGEgcHJvbXB0LiBGcmVlLCBmYXN0LCBhbmQgbm8gbG9naW4gcmVxdWlyZWQuIiAvPgogICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiCiAgICAgICAgY29udGVudD0iQUkgY29kZSBnZW5lcmF0b3IsIGNvZGluZyBBSSBhc3Npc3RhbnQsIGdlbmVyYXRlIGNvZGUgd2l0aCBBSSwgcHJvbXB0IHRvIGNvZGUsIEFJIHByb2dyYW1taW5nIHRvb2wsIEphdmFTY3JpcHQgY29kZSBnZW5lcmF0b3IsIFB5dGhvbiBjb2RlIGFzc2lzdGFudCwgUmVhY3QgY29tcG9uZW50IGdlbmVyYXRvciwgU2FhUyBsYW5kaW5nIHBhZ2UgYnVpbGRlciwgY29kZSBnZW5lcmF0b3Igb25saW5lIiAvPgogICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSJXcml0ZWNyZWFtIEFJIiAvPgogICAgPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJpbmRleCwgZm9sbG93LCBtYXgtc25pcHBldDotMSwgbWF4LWltYWdlLXByZXZpZXc6bGFyZ2UsIG1heC12aWRlby1wcmV2aWV3Oi0xIiAvPgogICAgPG1ldGEgbmFtZT0ibGFuZ3VhZ2UiIGNvbnRlbnQ9IkVuZ2xpc2giIC8+CiAgICA8bWV0YSBuYW1lPSJkaXN0cmlidXRpb24iIGNvbnRlbnQ9Imdsb2JhbCIgLz4KICAgIDxtZXRhIG5hbWU9InJhdGluZyIgY29udGVudD0iR2VuZXJhbCIgLz4KICAgIDxtZXRhIG5hbWU9InJldmlzaXQtYWZ0ZXIiIGNvbnRlbnQ9IjcgZGF5cyIgLz4KICAgIDxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIiBjb250ZW50PSIjZmZmZmZmIiAvPgogICAgPG1ldGEgbmFtZT0iYXBwbGljYXRpb24tbmFtZSIgY29udGVudD0iV3JpdGVjcmVhbSBBSSBDb2RlIEFzc2lzdGFudCIgLz4KCiAgICA8IS0tIENhbm9uaWNhbCAtLT4KICAgIDxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS9jb2RlLWFzc2lzdGFudC8iIC8+CgogICAgPCEtLSBGYXZpY29ucyAtLT4KICAgIDxsaW5rIHJlbD0iaWNvbiIgaHJlZj0iL2Zhdmljb24uaWNvIiAvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTgweDE4MCIgaHJlZj0iL2FwcGxlLXRvdWNoLWljb24ucG5nIiAvPgogICAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS9wbmciIHNpemVzPSIzMngzMiIgaHJlZj0iL2Zhdmljb24tMzJ4MzIucG5nIiAvPgogICAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS9wbmciIHNpemVzPSIxNngxNiIgaHJlZj0iL2Zhdmljb24tMTZ4MTYucG5nIiAvPgoKICAgIDwhLS0gT3BlbiBHcmFwaCAvIEZhY2Vib29rIC0tPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnR5cGUiIGNvbnRlbnQ9IndlYnNpdGUiIC8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS9jb2RlLWFzc2lzdGFudC8iIC8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IkNvZGUgR2VuZXJhdG9yIC0gVHVybiBQcm9tcHRzIGludG8gQ29kZSBJbnN0YW50bHkgd2l0aCBBSSIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIKICAgICAgICBjb250ZW50PSJVc2UgbmF0dXJhbCBsYW5ndWFnZSB0byBnZW5lcmF0ZSBwcm9kdWN0aW9uLXJlYWR5IGNvZGUgd2l0aCBXcml0ZWNyZWFtIEFJLiBCdWlsZCBSZWFjdCBhcHBzLCBQeXRob24gc2NyaXB0cywgQVBJcywgYW5kIG1vcmUg4oCUIGluc3RhbnRseS4iIC8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzAzL2NvZGUtYXNzaXN0YW50LnBuZyIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IldyaXRlY3JlYW0gQUkiIC8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6bG9jYWxlIiBjb250ZW50PSJlbl9VUyIgLz4KCiAgICA8IS0tIFR3aXR0ZXIgQ2FyZHMgLS0+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmNhcmQiIGNvbnRlbnQ9InN1bW1hcnlfbGFyZ2VfaW1hZ2UiIC8+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOnVybCIgY29udGVudD0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vY29kZS1hc3Npc3RhbnQvIiAvPgogICAgPG1ldGEgbmFtZT0idHdpdHRlcjp0aXRsZSIgY29udGVudD0iQUkgQ29kZSBBc3Npc3RhbnQgLSBCdWlsZCBDb2RlIGZyb20gUHJvbXB0cyBJbnN0YW50bHkiIC8+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmRlc2NyaXB0aW9uIgogICAgICAgIGNvbnRlbnQ9IkJ1aWxkIGFwcHMsIFVJcywgZGFzaGJvYXJkcywgQVBJcywgYW5kIG1vcmUg4oCUIGp1c3QgZGVzY3JpYmUgd2hhdCB5b3UgbmVlZC4gVHJ5IFdyaXRlY3JlYW0gQUkncyBjb2RlIGdlbmVyYXRvciB0b2RheS4iIC8+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmltYWdlIiBjb250ZW50PSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wMy9jb2RlLWFzc2lzdGFudC5wbmciIC8+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmNyZWF0b3IiIGNvbnRlbnQ9IkBXcml0ZUNyZWFtQUkiIC8+CgogICAgPCEtLSBJbnN0YWdyYW0gLS0+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6c2VlX2Fsc28iIGNvbnRlbnQ9Imh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vd3JpdGVjcmVhbWFpLyIgLz4KICAgIDxtZXRhIG5hbWU9Imluc3RhZ3JhbTpzaXRlIiBjb250ZW50PSJAd3JpdGVjcmVhbWFpIiAvPgogICAgPG1ldGEgbmFtZT0iaW5zdGFncmFtOmltYWdlIiBjb250ZW50PSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wMy9jb2RlLWFzc2lzdGFudC5wbmciIC8+CgogICAgPCEtLSBBZGRpdGlvbmFsIFNFTyBNZXRhIFRhZ3MgLS0+CiAgICA8bWV0YSBuYW1lPSJnZW8ucmVnaW9uIiBjb250ZW50PSJVUyIgLz4KICAgIDxtZXRhIG5hbWU9Imdlby5wbGFjZW5hbWUiIGNvbnRlbnQ9Ik5ldyBZb3JrLCBVU0EiIC8+CiAgICA8bWV0YSBuYW1lPSJnZW8ucG9zaXRpb24iIGNvbnRlbnQ9IjQwLjcxMjg7LTc0LjAwNjAiIC8+CiAgICA8bWV0YSBuYW1lPSJJQ0JNIiBjb250ZW50PSI0MC43MTI4LCAtNzQuMDA2MCIgLz4KICAgIDxtZXRhIG5hbWU9Im1vYmlsZS13ZWItYXBwLWNhcGFibGUiIGNvbnRlbnQ9InllcyIgLz4KICAgIDxtZXRhIG5hbWU9IkhhbmRoZWxkRnJpZW5kbHkiIGNvbnRlbnQ9InRydWUiIC8+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiIC8+CgogICAgPCEtLSBTY2hlbWEgTWFya3VwIChKU09OLUxEKSAtLT4KICAgIDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI+CiAgewogICAgIkBjb250ZXh0IjogImh0dHBzOi8vc2NoZW1hLm9yZyIsCiAgICAiQHR5cGUiOiAiV2ViQXBwbGljYXRpb24iLAogICAgIm5hbWUiOiAiQUkgQ29kZSBBc3Npc3RhbnQgLSBXcml0ZWNyZWFtIEFJIiwKICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vY29kZS1hc3Npc3RhbnQvIiwKICAgICJkZXNjcmlwdGlvbiI6ICJUdXJuIG5hdHVyYWwgbGFuZ3VhZ2UgaW50byBjb2RlIHVzaW5nIFdyaXRlY3JlYW0gQUkncyBDb2RlIEFzc2lzdGFudC4gQ3JlYXRlIHdlYnNpdGVzLCBkYXNoYm9hcmRzLCBtb2JpbGUgYXBwcywgQVBJcyBhbmQgbW9yZSDigJQgaW5zdGFudGx5LiIsCiAgICAiYXBwbGljYXRpb25DYXRlZ29yeSI6ICJEZXZlbG9wZXJBcHBsaWNhdGlvbiIsCiAgICAib3BlcmF0aW5nU3lzdGVtIjogIkFsbCIsCiAgICAib2ZmZXJzIjogewogICAgICAiQHR5cGUiOiAiT2ZmZXIiLAogICAgICAicHJpY2UiOiAiMC4wMCIsCiAgICAgICJwcmljZUN1cnJlbmN5IjogIlVTRCIKICAgIH0sCiAgICAicHVibGlzaGVyIjogewogICAgICAiQHR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICAgIm5hbWUiOiAiV3JpdGVjcmVhbSBBSSIsCiAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vIgogICAgfSwKICAgICJhZ2dyZWdhdGVSYXRpbmciOiB7CiAgICAgICJAdHlwZSI6ICJBZ2dyZWdhdGVSYXRpbmciLAogICAgICAicmF0aW5nVmFsdWUiOiAiNC45IiwKICAgICAgInJldmlld0NvdW50IjogIjUyMDEiCiAgICB9CiAgfQogIDwvc2NyaXB0PgoKICAgIDwhLS0gRm9udHMgYW5kIENTUyAtLT4KICAgIDwhLS0gPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tIiAvPgogIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbSIgY3Jvc3NvcmlnaW4gLz4KICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PU91dGZpdDp3Z2h0QDQwMDs1MDA7NjAwOzcwMCZmYW1pbHk9U3BhY2UrR3JvdGVzazp3Z2h0QDQwMDs1MDA7NjAwOzcwMCZkaXNwbGF5PXN3YXAiIHJlbD0ic3R5bGVzaGVldCIgLz4KICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2ZvbnQtYXdlc29tZS82LjAuMC9jc3MvYWxsLm1pbi5jc3MiIC8+IC0tPgogICAgPHNjcmlwdCB0eXBlPSJpbXBvcnRtYXAiPgogICAgICB7CiAgICAgICAgImltcG9ydHMiOiB7CiAgICAgICAgICAicmVhY3QiOiAiaHR0cHM6Ly9lc20uc2gvcmVhY3RAMTguMi4wIiwKICAgICAgICAgICJyZWFjdC1kb20iOiAiaHR0cHM6Ly9lc20uc2gvcmVhY3QtZG9tQDE4LjIuMCIsCiAgICAgICAgICAicmVhY3QtZG9tLyI6ICJodHRwczovL2VzbS5zaC9yZWFjdC1kb21AMTguMi4wLyIsCiAgICAgICAgICAiQGNvZGVzYW5kYm94L3NhbmRwYWNrLXJlYWN0IjogImh0dHBzOi8vZXNtLnNoL0Bjb2Rlc2FuZGJveC9zYW5kcGFjay1yZWFjdEAyLjguMD9kZXBzPXJlYWN0QDE4LjIuMCZkZXBzPXJlYWN0LWRvbUAxOC4yLjAiCiAgICAgICAgfQogICAgICB9CiAgICA8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2tpdC5mb250YXdlc29tZS5jb20vYmMwODE3OTJkNC5qcyIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+CgogICAgPHN0eWxlPgogICAgICAgIDpyb290IHsKICAgICAgICAgICAgLS1wcmltYXJ5LWNvbG9yOiAjMmQyZDJkOwogICAgICAgICAgICAtLWFjY2VudC1jb2xvcjogIzRhOTBlMjsKICAgICAgICAgICAgLS1ibHVlLWNvbG9yOiAjNGE5MGUyOwoKICAgICAgICAgICAgLyogRGFyayB0aGVtZSBjb2xvcnMgKGRlZmF1bHQgYW5kIG9ubHkgdGhlbWUpICovCiAgICAgICAgICAgIC0tYmctY29sb3I6ICMwMDAwMDA7CiAgICAgICAgICAgIC0tc3VyZmFjZS1jb2xvcjogIzJkMmQyZDsKICAgICAgICAgICAgLS10ZXh0LWNvbG9yOiAjZTBlMGUwOwogICAgICAgICAgICAtLWJvcmRlci1jb2xvcjogIzQwNDA0MDsKICAgICAgICAgICAgLS1pbnB1dC1iZzogIzJkMmQyZDsKICAgICAgICAgICAgLS1pbnB1dC1ib3JkZXI6ICM0MDQwNDA7CiAgICAgICAgICAgIC0tcGlsbC1iZzogIzMzMzMzMzsKICAgICAgICAgICAgLS1idXR0b24tYmc6ICM0MDQwNDA7CiAgICAgICAgICAgIC0tc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgICAgICAgICAgIC0taGVhZGVyLWJvcmRlcjogIzQwNDA0MDsKICAgICAgICAgICAgLS1mb290ZXItYmc6ICMyZDJkMmQ7CiAgICAgICAgICAgIC0tY2FyZC1iZzogIzMzMzMzMzsKICAgICAgICAgICAgLS1iZy1zZWNvbmRhcnk6ICM0NDQ0NDQ7CiAgICAgICAgICAgIC0tdGV4dC1zZWNvbmRhcnk6ICNjY2NjY2M7CiAgICAgICAgICAgIC0tYmx1ZS1ob3ZlcjogIzNhN2JjODsKICAgICAgICB9CgogICAgICAgIC8qIFNjcm9sbGJhciB3aWR0aCAqLwogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgICAgICB3aWR0aDogMTJweDsKICAgICAgICB9CgogICAgICAgIC8qIFRyYWNrIChiYWNrZ3JvdW5kKSAqLwogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMWExYTFhOwogICAgICAgICAgICAvKiBkYXJrIGJhY2tncm91bmQgKi8KICAgICAgICB9CgogICAgICAgIC8qIEhhbmRsZSAodGh1bWIpICovCiAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICM1NTU7CiAgICAgICAgICAgIC8qIGRhcmsgZ3JheSAqLwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgfQoKICAgICAgICAvKiBIYW5kbGUgb24gaG92ZXIgKi8KICAgICAgICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzc3NzsKICAgICAgICB9CgogICAgICAgIC8qIEJhc2UgY2hhdCBidWJibGUgc3R5bGVzIGZvciBkYXJrIHRoZW1lICovCiAgICAgICAgLmNoYXQtYnViYmxlLmFpIHsKICAgICAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzNhM2EzYTsKICAgICAgICAgICAgLyogTW9yZSBzcGVjaWZpYyB0aGFuIC0tc3VyZmFjZS1jb2xvciAqLwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM1MDUwNTA7CiAgICAgICAgICAgIC8qIE1vcmUgc3BlY2lmaWMgdGhhbiAtLWJvcmRlci1jb2xvciAqLwogICAgICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLmNoYXQtYnViYmxlLmFpOjpiZWZvcmUgewogICAgICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICBib3R0b206IDA7CiAgICAgICAgICAgIGxlZnQ6IC04cHg7CiAgICAgICAgICAgIHdpZHRoOiA4cHg7CiAgICAgICAgICAgIGhlaWdodDogOHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2EzYTNhOwogICAgICAgICAgICAvKiBNYXRjaGVzIHRoZSBidWJibGUgYmFja2dyb3VuZCAqLwogICAgICAgICAgICBjbGlwLXBhdGg6IHBvbHlnb24oMTAwJSAwLCAwJSAxMDAlLCAxMDAlIDEwMCUpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5naXRodWItc3RhcnMsCiAgICAgICAgLmdpdGh1Yi1sYWJlbCB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgICAgICB9CgogICAgICAgIC5iYWRnZS10b2dldGhlciB7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICAgICAgb3BhY2l0eTogMC44OwogICAgICAgIH0KCiAgICAgICAgKiB7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmOwogICAgICAgIH0KCiAgICAgICAgLyogV29yZFByZXNzIFRoZW1lIENvbXBhdGliaWxpdHkgLSBGdWxsIFBhZ2UgQmFja2dyb3VuZCAqLwogICAgICAgIGJvZHksCiAgICAgICAgaHRtbCB7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFdvcmRQcmVzcyBjb250YWluZXIgYWRqdXN0bWVudHMgLSBGdWxsIHdpZHRoICovCiAgICAgICAgLmNvbnRhaW5lciwKICAgICAgICAuY29udGFpbmVyLWZsdWlkLAogICAgICAgIC53cmFwcGVyLAogICAgICAgIC5jb250ZW50LAogICAgICAgIC5tYWluLAogICAgICAgIC5zaXRlLWNvbnRlbnQsCiAgICAgICAgLmVudHJ5LWNvbnRlbnQsCiAgICAgICAgLnBhZ2UtY29udGVudCB7CiAgICAgICAgICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBFbnN1cmUgb3VyIGNvbnRlbnQgd29ya3Mgd2l0aGluIFdvcmRQcmVzcyAqLwogICAgICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDA7CiAgICAgICAgICAgIGNvbG9yOiAjZTBlMGUwOwogICAgICAgIH0KCiAgICAgICAgLyogQ2VudGVyIG1haW4gY29udGFpbmVyIGNvbnRlbnQgKi8KICAgICAgICAjbGFuZGluZ1NlY3Rpb24gLmNvbnRhaW5lciwKICAgICAgICAjbGFuZGluZ1NlY3Rpb24gbWFpbi5jb250YWluZXIsCiAgICAgICAgbWFpbi5jb250YWluZXIgewogICAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDJyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHotaW5kZXg6IDEgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFdvcmRQcmVzcy1zcGVjaWZpYyBtYWluIGNvbnRhaW5lciBjZW50ZXJpbmcgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIC5jb250YWluZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBtYWluLmNvbnRhaW5lciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgbWFpbi5jb250YWluZXIgewogICAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDJyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHotaW5kZXg6IDEgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZ1c2lvbiBCdWlsZGVyIHNwZWNpZmljIG92ZXJyaWRlcyBmb3IgbWFpbiBjb250YWluZXIgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyBtYWluLmNvbnRhaW5lciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiBtYWluLmNvbnRhaW5lciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbl9pbm5lciBtYWluLmNvbnRhaW5lciB7CiAgICAgICAgICAgIG1heC13aWR0aDogMTIwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDJyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMnJlbSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRml4IGhlcm8gc2VjdGlvbiBjb250ZW50IGNlbnRlcmluZyAtIGtlZXAgY29udGVudCBjZW50ZXJlZCBidXQgYmFja2dyb3VuZCBmdWxsLXdpZHRoICovCiAgICAgICAgLmhlcm8tc2VjdGlvbiB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmhlcm8tY29udGVudCwKICAgICAgICAuaGVyby10ZXh0IHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDgwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRml4IHN0YXIgbG9nbyBwb3NpdGlvbmluZyAtIGtlZXAgaXQgY2VudGVyZWQgKi8KICAgICAgICAuaGVyby1zZWN0aW9uIGgxIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBnYXA6IDE1cHggIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5oZXJvLXNlY3Rpb24gcCB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRml4IHRoZSBhY3R1YWwgaW5wdXQgY29udGFpbmVyIGNsYXNzZXMgZnJvbSBIVE1MICovCiAgICAgICAgLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMTBweCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmlucHV0LWlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgIHdpZHRoOiA1MCUgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA1MCUgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5pbnB1dC1pbm5lci1jb250YWluZXIudmVydGljYWwgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5pbnB1dC1jb250cm9scy1yb3cgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDEycHggMTJweCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDUwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgZ2FwOiAxMnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDZweCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZpeCBwcm9tcHQgaW5wdXQgc3R5bGluZyB0byBtYXRjaCBvcmlnaW5hbCAqLwogICAgICAgIC5wcm9tcHQtaW5wdXQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgIWltcG9ydGFudDsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweCAxMnB4IDAgMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAxcmVtIDEuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICBmb250LXNpemU6IDFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgICAgICAgICAgcmVzaXplOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDYwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LWhlaWdodDogMjAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgIH0KCgoKICAgICAgICAvKiBGaXggc3VnZ2VzdGVkIGFwcHMgc2VjdGlvbiAtIGNlbnRlcmVkIHdpdGggcHJvcGVyIHdpZHRoICovCiAgICAgICAgLnN1Z2dlc3RlZC1hcHBzIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwogICAgICAgICAgICBnYXA6IDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5zdWdnZXN0ZWQtYXBwIHsKICAgICAgICAgICAgbWFyZ2luOiA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZpeCBmZWF0dXJlcyBncmlkIC0gMyBjYXJkcyBpbiBhIHJvdywgY2VudGVyZWQgKi8KICAgICAgICAuZmVhdHVyZXMtZ3JpZCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMjgwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGdhcDogMjBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IGZpdC1jb250ZW50ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggIWltcG9ydGFudDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5mZWF0dXJlLWNhcmQgewogICAgICAgICAgICB3aWR0aDogMjgwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAyODBweCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRW5zdXJlIGFsbCBzZWN0aW9ucyBhcmUgcHJvcGVybHkgY2VudGVyZWQgKi8KICAgICAgICAuZmVhdHVyZXMtc2VjdGlvbiwKICAgICAgICAuaG93LWl0LXdvcmtzLXNlY3Rpb24sCiAgICAgICAgLnBvc3NpYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICAuZGVtby1zZWN0aW9uLAogICAgICAgIC5jYXBhYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICAudGVzdGltb25pYWxzLXNlY3Rpb24sCiAgICAgICAgLmN0YS1zZWN0aW9uIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogV29yZFByZXNzIHBhZ2Utc3BlY2lmaWMgc3R5bGluZyAtIEZ1bGwgYmFja2dyb3VuZCBjb3ZlcmFnZSAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBjb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGNvbG9yOiAjZTBlMGUwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IC00MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IC0xNTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXRvcDogNjBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTUwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDE5MHB4KSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogV29yZFByZXNzLXNwZWNpZmljIGNlbnRlcmluZyBmb3IgYWxsIHNlY3Rpb25zICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmVuZGxlc3MtcG9zc2liaWxpdGllcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuc2VlLWl0LWluLWFjdGlvbi1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubW9yZS1jYXBhYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmxvdmVkLWJ5LWRldmVsb3BlcnMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnJlYWR5LXRvLWNvZGUtc2VjdGlvbiB7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDJyZW0gIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZvcmNlIGNlbnRlciBvbmx5IHRoZSBzdWJ0aXRsZSB0ZXh0ICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5lbmRsZXNzLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYWN0aW9uLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubW9yZS1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmxvdmVkLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY3RhLXN1YnRpdGxlIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDcwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBDZW50ZXIgQUxMIHNlY3Rpb24gc3VidGl0bGVzIGluIFdvcmRQcmVzcyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuaGVyby1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhvdy1pdC13b3Jrcy1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmVuZGxlc3Mtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hY3Rpb24tc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5tb3JlLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubG92ZWQtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5jdGEtc3VidGl0bGUgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBFbnN1cmUgc2VjdGlvbiB0aXRsZXMgYXJlIGNlbnRlcmVkICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3MtdGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5lbmRsZXNzLXRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYWN0aW9uLXRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubW9yZS10aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmxvdmVkLXRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY3RhLXRpdGxlIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogQWRkaXRpb25hbCBXb3JkUHJlc3MgY29udGFpbmVyIG92ZXJyaWRlcyBmb3IgcHJvcGVyIGNlbnRlcmluZyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5ob3ctaXQtd29ya3Mtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAuZW5kbGVzcy1wb3NzaWJpbGl0aWVzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLnNlZS1pdC1pbi1hY3Rpb24tc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAubW9yZS1jYXBhYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAubG92ZWQtYnktZGV2ZWxvcGVycy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5yZWFkeS10by1jb2RlLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLmhvdy1pdC13b3Jrcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5lbmRsZXNzLXBvc3NpYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAuc2VlLWl0LWluLWFjdGlvbi1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5tb3JlLWNhcGFiaWxpdGllcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5sb3ZlZC1ieS1kZXZlbG9wZXJzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLnJlYWR5LXRvLWNvZGUtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbl9pbm5lciAuaG93LWl0LXdvcmtzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLmVuZGxlc3MtcG9zc2liaWxpdGllcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5zZWUtaXQtaW4tYWN0aW9uLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLm1vcmUtY2FwYWJpbGl0aWVzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLmxvdmVkLWJ5LWRldmVsb3BlcnMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbl9pbm5lciAucmVhZHktdG8tY29kZS1zZWN0aW9uIHsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDJyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMnJlbSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRW5zdXJlIFdvcmRQcmVzcyBjb250YWluZXJzIGRvbid0IGFkZCB3aGl0ZSBzcGFjZSAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY29udGFpbmVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAud3JhcHBlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRlbnQsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5tYWluLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1jb250ZW50LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZW50cnktY29udGVudCwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnBhZ2UtY29udGVudCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogUmVtb3ZlIGV4Y2Vzc2l2ZSBXb3JkUHJlc3Mgb3ZlcnJpZGVzIC0ga2VlcCBtaW5pbWFsICovCgogICAgICAgIC8qIFdvcmRQcmVzcyBjb250YWluZXIgY29tcGF0aWJpbGl0eSAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY29udGFpbmVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAud3JhcHBlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRlbnQsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5tYWluLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1jb250ZW50IHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1heC13aWR0aDogbm9uZTsKICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIH0KCiAgICAgICAgLyogUmVzcG9uc2l2ZSBEZXNpZ24gSW1wcm92ZW1lbnRzICovCiAgICAgICAgLyogRm9yIHNjcmVlbnMgOTAwcHggYW5kIGJlbG93IC0gU1RBQ0sgVkVSVElDQUxMWSAqLwogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkgewogICAgICAgICAgICAuc3RlcHMtY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGdhcDogMS41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuc3RlcC1hcnJvdyB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZykgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5zdGVwLWNhcmQgewogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA5MCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHdpZHRoOiA5MCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1pbi13aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMS41cmVtIDFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5zdGVwLXRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnN0ZXAtZGVzY3JpcHRpb24gewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQgIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyogTW9iaWxlIHJlc3BvbnNpdmUgZml4ZXMgKi8KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgICAgICAgLmFwcC1jb250YWluZXIgewogICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogTW9iaWxlIGZvb3RlciBiYWNrZ3JvdW5kIGZpeCAtIGluY3JlYXNlZCBleHRlbnNpb24gKi8KICAgICAgICAgICAgYm9keSB7CiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0MHB4OwogICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDQwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDMwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgNDAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMzAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiA4MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZSBjb250YWluZXIgY2VudGVyaW5nICovCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiAuY29udGFpbmVyLAogICAgICAgICAgICAjbGFuZGluZ1NlY3Rpb24gbWFpbi5jb250YWluZXIsCiAgICAgICAgICAgIG1haW4uY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZSBoZXJvIHNlY3Rpb24gY2VudGVyaW5nICovCiAgICAgICAgICAgIC5oZXJvLXNlY3Rpb24gewogICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogTW9iaWxlIGlucHV0IGNvbnRhaW5lciBjZW50ZXJpbmcgKi8KICAgICAgICAgICAgLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuYXBwLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgNDAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMzAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogRXh0ZW5kIGJhY2tncm91bmQgcGF0dGVybiBkb3duIHNpZ25pZmljYW50bHkgKi8KICAgICAgICAgICAgI2xhbmRpbmdTZWN0aW9uOjpiZWZvcmUgewogICAgICAgICAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAzMDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogTW9iaWxlIGhlcm8gc2VjdGlvbiBpbXByb3ZlbWVudHMgKi8KICAgICAgICAgICAgLmhlcm8tc2VjdGlvbiB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAyMHB4IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmluc2lkZS1oZXJvLXNlY3Rpb24gewogICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZ2FwOiAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDVweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1pY29uIGltZyB7CiAgICAgICAgICAgICAgICB3aWR0aDogMi41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDIuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby10aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuOHJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS4yICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLXN1YnRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLWRlc2NyaXB0aW9uIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDEwcHggMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnBvd2VyZWQtcGlsbCB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiA4cHggMTVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDEwcHggYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDMwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDMwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogTW9iaWxlIGlucHV0IHNlY3Rpb24gZml4ZXMgKi8KICAgICAgICAgICAgLmlucHV0LXNlY3Rpb24gewogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDVweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaW5wdXQtaW5uZXItY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmlucHV0LWNvbnRhaW5lciwKICAgICAgICAgICAgLnByb21wdC1pbnB1dCwKICAgICAgICAgICAgLmlucHV0LWdyb3VwIHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBNb2JpbGUgaGVybyBjb250ZW50ICovCiAgICAgICAgICAgIC5oZXJvLWNvbnRlbnQsCiAgICAgICAgICAgIC5oZXJvLXRleHQgewogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDIwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogTW9iaWxlIGZlYXR1cmVzIGdyaWQgLSBzaW5nbGUgY29sdW1uICovCiAgICAgICAgICAgIC5mZWF0dXJlcy1ncmlkIHsKICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmZlYXR1cmUtY2FyZCB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAzNTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogTW9iaWxlIGlucHV0IGNvbnRhaW5lcnMgKi8KICAgICAgICAgICAgLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5pbnB1dC1pbm5lci1jb250YWluZXIgewogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnByb21wdC1pbnB1dCB7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogTW9iaWxlIHN1Z2dlc3RlZCBhcHBzICovCiAgICAgICAgICAgIC5zdWdnZXN0ZWQtYXBwcyB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDIwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZS1zcGVjaWZpYyBiYWNrZ3JvdW5kIGhlaWdodCByZWR1Y3Rpb24gKi8KICAgICAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyLAogICAgICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIHsKICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC0yMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogODBweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDE3MHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBNb2JpbGUgY29udGFpbmVyIGNlbnRlcmluZyAqLwogICAgICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIC5jb250YWluZXIsCiAgICAgICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gbWFpbi5jb250YWluZXIsCiAgICAgICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyBtYWluLmNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBNb2JpbGUgc2VjdGlvbiBjZW50ZXJpbmcgKi8KICAgICAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc2VjdGlvbiwKICAgICAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5lbmRsZXNzLXBvc3NpYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5zZWUtaXQtaW4tYWN0aW9uLXNlY3Rpb24sCiAgICAgICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubW9yZS1jYXBhYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5sb3ZlZC1ieS1kZXZlbG9wZXJzLXNlY3Rpb24sCiAgICAgICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAucmVhZHktdG8tY29kZS1zZWN0aW9uIHsKICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBGdXJ0aGVyIHJlZHVjdGlvbiBmb3IgdmVyeSBzbWFsbCBzY3JlZW5zICovCiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkgewoKICAgICAgICAgICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciwKICAgICAgICAgICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC0xMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDYwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMTYwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiAuY29udGFpbmVyLAogICAgICAgICAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBtYWluLmNvbnRhaW5lciwKICAgICAgICAgICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyBtYWluLmNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjc1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMC43NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHsKCiAgICAgICAgICAgIC8qIEV4dHJhIHNtYWxsIHNjcmVlbnMgLSBpbXByb3ZlZCBoZXJvIHJlc3BvbnNpdmVuZXNzICovCiAgICAgICAgICAgIC5oZXJvLXNlY3Rpb24gaDEgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjZyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tc2VjdGlvbiBwIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby10aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1zdWJ0aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogOHB4IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tZGVzY3JpcHRpb24gewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDhweCAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS4zICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLWljb24gaW1nIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDJyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnBvd2VyZWQtcGlsbCB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogNnB4IDEycHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogOHB4IDFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHdpZHRoOiBmaXQtY29udGVudCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDAuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBFeHRyYSBzbWFsbCBzY3JlZW5zIC0gaGVhZGVyIGFkanVzdG1lbnRzICovCiAgICAgICAgICAgIC5oZWFkZXItZmxleCB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZ2FwOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5sb2dvLWdyb3VwIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDRweCA4cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGdhcDogNnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5sb2dvLXRleHQgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogRXh0cmEgc21hbGwgc2NyZWVucyAtIGltcHJvdmVkIHRlc3RpbW9uaWFsIHJlc3BvbnNpdmVuZXNzICovCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1jb250YWluZXIgewogICAgICAgICAgICAgICAgbWluLWhlaWdodDogMzAwcHg7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDAuNXJlbTsKICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvIDEuNXJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLW5hdiB7CiAgICAgICAgICAgICAgICB3aWR0aDogMzVweDsKICAgICAgICAgICAgICAgIGhlaWdodDogMzVweDsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtbmF2LnByZXYtYnRuIHsKICAgICAgICAgICAgICAgIGxlZnQ6IDVweDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLW5hdi5uZXh0LWJ0biB7CiAgICAgICAgICAgICAgICByaWdodDogNXB4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtY2FyZCB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxcmVtOwogICAgICAgICAgICAgICAgbWFyZ2luOiAwIDVweDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWF2YXRhciB7CiAgICAgICAgICAgICAgICB3aWR0aDogMzVweDsKICAgICAgICAgICAgICAgIGhlaWdodDogMzVweDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLXF1b3RlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1hdXRob3ItbmFtZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1hdXRob3ItdGl0bGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtYXV0aG9yLWNvbXBhbnkgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1kb3RzIHsKICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTsKICAgICAgICAgICAgICAgIGdhcDogMC41cmVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtZG90cyAuZG90IHsKICAgICAgICAgICAgICAgIHdpZHRoOiA4cHg7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDhweDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmZlYXR1cmVzLWdyaWQsCiAgICAgICAgICAgIC5wb3NzaWJpbGl0aWVzLWdyaWQsCiAgICAgICAgICAgIC5jYXBhYmlsaXRpZXMtZ3JpZCB7CiAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZ2FwOiAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIEFkanVzdCB0b3AgbWFyZ2luIGZvciB2ZXJ5IHNtYWxsIHNjcmVlbnMgLSBpbmNyZWFzZWQgZXh0ZW5zaW9uICovCiAgICAgICAgICAgIGJvZHkgewogICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNTBweDsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA2MDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiA0MDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDYwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDQwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5hcHAtY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA2MDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiA0MDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBFeHRlbmQgYmFja2dyb3VuZCBwYXR0ZXJuIGRvd24gZnVydGhlciBvbiBzbWFsbCBzY3JlZW5zICovCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbjo6YmVmb3JlIHsKICAgICAgICAgICAgICAgIGhlaWdodDogY2FsYygxMDAlICsgNjAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGJvZHkgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnU2Vnb2UgVUknLCBBcmlhbCwgc2Fucy1zZXJpZjsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UsIGNvbG9yIDAuM3MgZWFzZTsKICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIH0KCiAgICAgICAgLyogSGlkZSBtYWluIHBhZ2Ugc2Nyb2xsYmFyIHdoZW4gYXBwIGlzIGFjdGl2ZSAqLwogICAgICAgIGJvZHkuYXBwLWFjdGl2ZSB7CiAgICAgICAgICAgIC8qIG92ZXJmbG93OiBoaWRkZW47CiAgICBoZWlnaHQ6IDEwMHZoOyAqLwogICAgICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgICAgICB9CgogICAgICAgIC8qIE1vYmlsZSBib2R5IGhhbmRsaW5nICovCiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgICAgICAgICAgIGJvZHkuYXBwLWFjdGl2ZSB7CiAgICAgICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgICAgICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKiBEZXNrdG9wIHNjcmVlbnMgYWJvdmUgNzY4cHggLSByZW1vdmUgd2hpdGUgc3BhY2VzICovCiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDc2OXB4KSB7CiAgICAgICAgICAgIC5jb250YWluZXIgewogICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVhZGVyLWZsZXggewogICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKiBIZWFkZXIgZnVsbC13aWR0aCBmaXggYWJvdmUgMTAyNHB4IC0gb25seSB3aGVuIGFwcCBpcyBhY3RpdmUgKi8KICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogMTAyNXB4KSB7CiAgICAgICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuaGVhZGVyIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxcmVtIDAgIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLmNvbnRhaW5lciB7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIH0KCiAgICAgICAgLmhlYWRlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC45KTsKICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpOwogICAgICAgICAgICBwYWRkaW5nOiAxcmVtIDA7CiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICAgICAgICAgIHotaW5kZXg6IDEwMDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLCBvcGFjaXR5IDAuM3MgZWFzZSwgdHJhbnNmb3JtIDAuM3MgZWFzZTsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICAgICAgLyogSGlkZGVuIGJ5IGRlZmF1bHQgb24gbGFuZGluZyBwYWdlICovCiAgICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjMpOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIH0KCiAgICAgICAgLyogU2hvdyBoZWFkZXIgb25seSB3aGVuIGNvbnZlcnNhdGlvbiBoYXMgc3RhcnRlZCAqLwogICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuaGVhZGVyIHsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CgogICAgICAgIC5oZWFkZXItZmxleCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfQoKICAgICAgICAubG9nby1ncm91cCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDE2cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjEpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4yKTsKICAgICAgICB9CgogICAgICAgIC5sb2dvLWdyb3VwOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMTUpOwogICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7CiAgICAgICAgfQoKICAgICAgICAubG9nby1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1ibHVlLWNvbG9yKTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgICAgIHRleHQtc2hhZG93OiAwIDAgMTBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7CiAgICAgICAgfQoKICAgICAgICAubG9nby10ZXh0IHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgICAgICB0ZXh0LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgICAgICB9CgogICAgICAgIC5sb2dvLXRleHQgLmJvbGQgewogICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICB9CgogICAgICAgIC5oZWFkZXItcmlnaHQgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDZweCAxMnB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgcmlnaHQ6IDIwcHg7CiAgICAgICAgfQoKICAgICAgICAuZ2l0aHViLWJ0biB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogNXB4OwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICAgIH0KCiAgICAgICAgLmRvd25sb2FkLWJ0biB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzRhOTBlMiwgIzM1N2FiZCk7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICAgICAgICAgIG1pbi13aWR0aDogNDBweDsKICAgICAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgICAgICB6LWluZGV4OiA5OTk5OwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfQoKICAgICAgICAuZG93bmxvYWQtYnRuOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzM1N2FiZCwgIzJhNmFhMCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgICAgICB9CgogICAgICAgIC5kb3dubG9hZC1idG46YWN0aXZlIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgIH0KCiAgICAgICAgLmRlcGxveS1uZXRsaWZ5LWJ0biB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwYWQ5ZiwgIzAwZDRhYSk7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICAgICAgICAgIG1pbi13aWR0aDogNDBweDsKICAgICAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgICAgICB6LWluZGV4OiA5OTk5OwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIGdhcDogNnB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIH0KCiAgICAgICAgLmRlcGxveS1uZXRsaWZ5LWJ0bjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDk0N2YsICMwMGIzOTQpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAxNzMsIDE1OSwgMC4zKTsKICAgICAgICB9CgogICAgICAgIC5kZXBsb3ktbmV0bGlmeS1idG46YWN0aXZlIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgIH0KCiAgICAgICAgLyogU2V0IFRva2VuIGJ1dHRvbiBzdHlsZWQgdG8gbWF0Y2ggRGVwbG95IHRvIE5ldGxpZnkgKi8KICAgICAgICAuc2V0LXRva2VuLWJ0biB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwYWQ5ZiwgIzAwZDRhYSk7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICAgICAgICAgIG1pbi13aWR0aDogNDBweDsKICAgICAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgICAgICB6LWluZGV4OiA5OTk5OwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIGdhcDogNnB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIH0KCiAgICAgICAgLnNldC10b2tlbi1idG46aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA5NDdmLCAjMDBiMzk0KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMTczLCAxNTksIDAuMyk7CiAgICAgICAgfQoKICAgICAgICAuc2V0LXRva2VuLWJ0bjphY3RpdmUgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgfQoKICAgICAgICAuZG93bmxvYWQtaWNvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB9CgogICAgICAgIC5wb3dlcmVkLXBpbGwgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbjogMnJlbSBhdXRvOwogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAyMHB4OwogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgbGVmdDogNTAlOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlLCBjb2xvciAwLjNzIGVhc2U7CiAgICAgICAgICAgIC8qIE1lcmdlZCBkYXJrIHRoZW1lIHN0eWxlcyAqLwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7CiAgICAgICAgfQoKICAgICAgICAubWFpbi1oZWFkaW5nIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBmb250LXNpemU6IDIuN3JlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMi41cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC8qIFR5cGluZyBhbmltYXRpb24gc3R5bGVzICovCiAgICAgICAgI2FuaW1hdGVkLXdvcmQgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgbWluLXdpZHRoOiAxMjBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICB9CgogICAgICAgICNhbmltYXRlZC13b3JkOjphZnRlciB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICd8JzsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgICAgICAgICBhbmltYXRpb246IGJsaW5rIDFzIGluZmluaXRlOwogICAgICAgICAgICBtYXJnaW4tbGVmdDogMnB4OwogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBibGluayB7CgogICAgICAgICAgICAwJSwKICAgICAgICAgICAgNTAlIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDUxJSwKICAgICAgICAgICAgMTAwJSB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIHR5cGV3cml0ZXIgewogICAgICAgICAgICBmcm9tIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0byB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLm1haW4taGVhZGluZyAuYmx1ZSB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1ibHVlLWNvbG9yKTsKICAgICAgICB9CgogICAgICAgIC8qIExhbmRpbmcgcGFnZSBpbnB1dCBzdHlsaW5nIC0gRXh0ZW5kZWQgdG9wIGFuZCBib3R0b20gY292ZXJhZ2UgKi8KICAgICAgICAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMjMwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICAgIHBhZGRpbmc6IDEwMHB4IDAgMTUwcHggMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IC04MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IC0xNTBweCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogQW5pbWF0ZWQgc3RhcnJ5IGJhY2tncm91bmQgKi8KICAgICAgICAjbGFuZGluZ1NlY3Rpb246OmJlZm9yZSB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogMDsKICAgICAgICAgICAgbGVmdDogMDsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gMTAwcHgpOwogICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOgogICAgICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KDJweCAycHggYXQgMjBweCAzMHB4LCAjNGE5MGUyLCB0cmFuc3BhcmVudCksCiAgICAgICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoMnB4IDJweCBhdCA0MHB4IDcwcHgsIHJnYmEoNzQsIDE0NCwgMjI2LCAwLjgpLCB0cmFuc3BhcmVudCksCiAgICAgICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoMXB4IDFweCBhdCA5MHB4IDQwcHgsICM2YjczZmYsIHRyYW5zcGFyZW50KSwKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudCgxcHggMXB4IGF0IDEzMHB4IDgwcHgsIHJnYmEoMTA3LCAxMTUsIDI1NSwgMC42KSwgdHJhbnNwYXJlbnQpLAogICAgICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KDJweCAycHggYXQgMTYwcHggMzBweCwgIzRhOTBlMiwgdHJhbnNwYXJlbnQpOwogICAgICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0OwogICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMHB4IDEwMHB4OwogICAgICAgICAgICBhbmltYXRpb246IHR3aW5rbGUgM3MgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlOwogICAgICAgICAgICB6LWluZGV4OiAwOwogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyB0d2lua2xlIHsKICAgICAgICAgICAgMCUgewogICAgICAgICAgICAgICAgb3BhY2l0eTogMC4zOwogICAgICAgICAgICB9CgogICAgICAgICAgICAxMDAlIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuODsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyogSGVybyBTZWN0aW9uICovCiAgICAgICAgLmhlcm8tc2VjdGlvbiB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgcGFkZGluZzogMHJlbSAwIDByZW07CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICB9CgogICAgICAgIC5pbnNpZGUtaGVyby1zZWN0aW9uIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgfQoKICAgICAgICAuaGVyby1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAzcmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CiAgICAgICAgICAgIGNvbG9yOiAjNGE5MGUyOwogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgICAgIGFuaW1hdGlvbjogZmxvYXQgM3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgfQoKICAgICAgICAuaGVyby1pY29uIGltZyB7CiAgICAgICAgICAgIHdpZHRoOiA0cmVtOwogICAgICAgICAgICBoZWlnaHQ6IDIuNXJlbTsKICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIGZsb2F0IHsKCiAgICAgICAgICAgIDAlLAogICAgICAgICAgICAxMDAlIHsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICA1MCUgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLmhlcm8tdGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IDMuNXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjsKICAgICAgICAgICAgdGV4dC1zaGFkb3c6IDAgMCAyMHB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgICAgIH0KCiAgICAgICAgLmhlcm8tc3VidGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IDEuM3JlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtOwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgICAgICBtYXgtd2lkdGg6IDYwMHB4OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgICAgIH0KCiAgICAgICAgLmhlcm8tZGVzY3JpcHRpb24gewogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogM3JlbTsKICAgICAgICAgICAgbWF4LXdpZHRoOiA1MDBweDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgICAgICB9CgogICAgICAgIC8qIFVwZGF0ZSBpbnB1dCBzZWN0aW9uIGZvciBkYXJrIHRoZW1lICovCiAgICAgICAgI2xhbmRpbmdTZWN0aW9uIC5pbnB1dC1vdXRlci1jb250YWluZXIgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBtYXJnaW4tbGVmdDo