Testimonials


Handcrafted For You

Meal Plan Options For All

Discover why thousands of Australians
choose Chefgood as their personal chef.

View Meal Plans

Handcrafted For You

Meal Plan Options For All

Discover why thousands of Australians
choose Chefgood as their personal chef.

View Meal Plans
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovKiA8IVtDREFUQVsgKi8KdmFyIGdmb3JtO2dmb3JtfHwoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZ2Zvcm1fbWFpbl9zY3JpcHRzX2xvYWRlZCIsZnVuY3Rpb24oKXtnZm9ybS5zY3JpcHRzTG9hZGVkPSEwfSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZ2Zvcm0vdGhlbWUvc2NyaXB0c19sb2FkZWQiLGZ1bmN0aW9uKCl7Z2Zvcm0udGhlbWVTY3JpcHRzTG9hZGVkPSEwfSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGZ1bmN0aW9uKCl7Z2Zvcm0uZG9tTG9hZGVkPSEwfSksZ2Zvcm09e2RvbUxvYWRlZDohMSxzY3JpcHRzTG9hZGVkOiExLHRoZW1lU2NyaXB0c0xvYWRlZDohMSxpc0Zvcm1FZGl0b3I6KCk9PiJmdW5jdGlvbiI9PXR5cGVvZiBJbml0aWFsaXplRWRpdG9yLGNhbGxJZkxvYWRlZDpmdW5jdGlvbihvKXtyZXR1cm4hKCFnZm9ybS5kb21Mb2FkZWR8fCFnZm9ybS5zY3JpcHRzTG9hZGVkfHwhZ2Zvcm0udGhlbWVTY3JpcHRzTG9hZGVkJiYhZ2Zvcm0uaXNGb3JtRWRpdG9yKCl8fChnZm9ybS5pc0Zvcm1FZGl0b3IoKSYmY29uc29sZS53YXJuKCJUaGUgdXNlIG9mIGdmb3JtLmluaXRpYWxpemVPbkxvYWRlZCgpIGlzIGRlcHJlY2F0ZWQgaW4gdGhlIGZvcm0gZWRpdG9yIGNvbnRleHQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBHcmF2aXR5IEZvcm1zIDMuMS4iKSxvKCksMCkpfSxpbml0aWFsaXplT25Mb2FkZWQ6ZnVuY3Rpb24obyl7Z2Zvcm0uY2FsbElmTG9hZGVkKG8pfHwoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZ2Zvcm1fbWFpbl9zY3JpcHRzX2xvYWRlZCIsKCk9PntnZm9ybS5zY3JpcHRzTG9hZGVkPSEwLGdmb3JtLmNhbGxJZkxvYWRlZChvKX0pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImdmb3JtL3RoZW1lL3NjcmlwdHNfbG9hZGVkIiwoKT0+e2dmb3JtLnRoZW1lU2NyaXB0c0xvYWRlZD0hMCxnZm9ybS5jYWxsSWZMb2FkZWQobyl9KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsKCk9PntnZm9ybS5kb21Mb2FkZWQ9ITAsZ2Zvcm0uY2FsbElmTG9hZGVkKG8pfSkpfSxob29rczp7YWN0aW9uOnt9LGZpbHRlcjp7fX0sYWRkQWN0aW9uOmZ1bmN0aW9uKG8scixlLHQpe2dmb3JtLmFkZEhvb2soImFjdGlvbiIsbyxyLGUsdCl9LGFkZEZpbHRlcjpmdW5jdGlvbihvLHIsZSx0KXtnZm9ybS5hZGRIb29rKCJmaWx0ZXIiLG8scixlLHQpfSxkb0FjdGlvbjpmdW5jdGlvbihvKXtnZm9ybS5kb0hvb2soImFjdGlvbiIsbyxhcmd1bWVudHMpfSxhcHBseUZpbHRlcnM6ZnVuY3Rpb24obyl7cmV0dXJuIGdmb3JtLmRvSG9vaygiZmlsdGVyIixvLGFyZ3VtZW50cyl9LHJlbW92ZUFjdGlvbjpmdW5jdGlvbihvLHIpe2dmb3JtLnJlbW92ZUhvb2soImFjdGlvbiIsbyxyKX0scmVtb3ZlRmlsdGVyOmZ1bmN0aW9uKG8scixlKXtnZm9ybS5yZW1vdmVIb29rKCJmaWx0ZXIiLG8scixlKX0sYWRkSG9vazpmdW5jdGlvbihvLHIsZSx0LG4pe251bGw9PWdmb3JtLmhvb2tzW29dW3JdJiYoZ2Zvcm0uaG9va3Nbb11bcl09W10pO3ZhciBkPWdmb3JtLmhvb2tzW29dW3JdO251bGw9PW4mJihuPXIrIl8iK2QubGVuZ3RoKSxnZm9ybS5ob29rc1tvXVtyXS5wdXNoKHt0YWc6bixjYWxsYWJsZTplLHByaW9yaXR5OnQ9bnVsbD09dD8xMDp0fSl9LGRvSG9vazpmdW5jdGlvbihyLG8sZSl7dmFyIHQ7aWYoZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLDEpLG51bGwhPWdmb3JtLmhvb2tzW3JdW29dJiYoKG89Z2Zvcm0uaG9va3Nbcl1bb10pLnNvcnQoZnVuY3Rpb24obyxyKXtyZXR1cm4gby5wcmlvcml0eS1yLnByaW9yaXR5fSksby5mb3JFYWNoKGZ1bmN0aW9uKG8peyJmdW5jdGlvbiIhPXR5cGVvZih0PW8uY2FsbGFibGUpJiYodD13aW5kb3dbdF0pLCJhY3Rpb24iPT1yP3QuYXBwbHkobnVsbCxlKTplWzBdPXQuYXBwbHkobnVsbCxlKX0pKSwiZmlsdGVyIj09cilyZXR1cm4gZVswXX0scmVtb3ZlSG9vazpmdW5jdGlvbihvLHIsdCxuKXt2YXIgZTtudWxsIT1nZm9ybS5ob29rc1tvXVtyXSYmKGU9KGU9Z2Zvcm0uaG9va3Nbb11bcl0pLmZpbHRlcihmdW5jdGlvbihvLHIsZSl7cmV0dXJuISEobnVsbCE9biYmbiE9by50YWd8fG51bGwhPXQmJnQhPW8ucHJpb3JpdHkpfSksZ2Zvcm0uaG9va3Nbb11bcl09ZSl9fSk7Ci8qIF1dPiAqLwo8L3NjcmlwdD4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdnZl9icm93c2VyX3Vua25vd24gZ2Zvcm1fd3JhcHBlciBnZm9ybV9sZWdhY3lfbWFya3VwX3dyYXBwZXIgZ2Zvcm0tdGhlbWUtLW5vLWZyYW1ld29yaycgZGF0YS1mb3JtLXRoZW1lPSdsZWdhY3knIGRhdGEtZm9ybS1pbmRleD0nMCcgaWQ9J2dmb3JtX3dyYXBwZXJfMTUnID48ZGl2IGlkPSdnZl8xNScgY2xhc3M9J2dmb3JtX2FuY2hvcicgdGFiaW5kZXg9Jy0xJz48L2Rpdj48Zm9ybSBtZXRob2Q9J3Bvc3QnIGVuY3R5cGU9J211bHRpcGFydC9mb3JtLWRhdGEnIHRhcmdldD0nZ2Zvcm1fYWpheF9mcmFtZV8xNScgaWQ9J2dmb3JtXzE1JyAgYWN0aW9uPScvI2dmXzE1JyBkYXRhLWZvcm1pZD0nMTUnIG5vdmFsaWRhdGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2dmb3JtLWJvZHkgZ2Zvcm1fYm9keSc+PHVsIGlkPSdnZm9ybV9maWVsZHNfMTUnIGNsYXNzPSdnZm9ybV9maWVsZHMgdG9wX2xhYmVsIGZvcm1fc3VibGFiZWxfYmVsb3cgZGVzY3JpcHRpb25fYmVsb3cgdmFsaWRhdGlvbl9iZWxvdyc+PGxpIGlkPSJmaWVsZF8xNV84IiBjbGFzcz0iZ2ZpZWxkIGdmaWVsZC0tdHlwZS1odG1sIGdmaWVsZF9odG1sIGdmaWVsZF9odG1sX2Zvcm1hdHRlZCBnZmllbGRfbm9fZm9sbG93c19kZXNjIGZpZWxkX3N1YmxhYmVsX2JlbG93IGdmaWVsZC0tbm8tZGVzY3JpcHRpb24gZmllbGRfZGVzY3JpcHRpb25fYmVsb3cgZmllbGRfdmFsaWRhdGlvbl9iZWxvdyBnZmllbGRfdmlzaWJpbGl0eV92aXNpYmxlIiAgPjxzdHJvbmc+QmVjb21lIEEgU3RvY2tpc3Q8L3N0cm9uZz4KClNpbXBseSBjYWxsIHVzIG9uIDEzMDAgOTExIDU5NSwgb3IgZmlsbCBvdXQgdGhlIGZvcm0gYmVsb3cuPC9saT48bGkgaWQ9ImZpZWxkXzE1XzEiIGNsYXNzPSJnZmllbGQgZ2ZpZWxkLS10eXBlLXRleHQgZ2ZpZWxkX2NvbnRhaW5zX3JlcXVpcmVkIGZpZWxkX3N1YmxhYmVsX2JlbG93IGdmaWVsZC0tbm8tZGVzY3JpcHRpb24gZmllbGRfZGVzY3JpcHRpb25fYmVsb3cgaGlkZGVuX2xhYmVsIGZpZWxkX3ZhbGlkYXRpb25fYmVsb3cgZ2ZpZWxkX3Zpc2liaWxpdHlfdmlzaWJsZSIgID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCBnZm9ybS1maWVsZC1sYWJlbCcgZm9yPSdpbnB1dF8xNV8xJz5Zb3VyIE5hbWU8c3BhbiBjbGFzcz0iZ2ZpZWxkX3JlcXVpcmVkIj48c3BhbiBjbGFzcz0iZ2ZpZWxkX3JlcXVpcmVkIGdmaWVsZF9yZXF1aXJlZF9hc3RlcmlzayI+Kjwvc3Bhbj48L3NwYW4+PC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyIGdpbnB1dF9jb250YWluZXJfdGV4dCc+PGlucHV0IG5hbWU9J2lucHV0XzEnIGlkPSdpbnB1dF8xNV8xJyB0eXBlPSd0ZXh0JyB2YWx1ZT0nJyBjbGFzcz0nbWVkaXVtJyAgIHRhYmluZGV4PSc0OScgcGxhY2Vob2xkZXI9J1lvdXIgTmFtZScgYXJpYS1yZXF1aXJlZD0idHJ1ZSIgYXJpYS1pbnZhbGlkPSJmYWxzZSIgICAvPjwvZGl2PjwvbGk+PGxpIGlkPSJmaWVsZF8xNV81IiBjbGFzcz0iZ2ZpZWxkIGdmaWVsZC0tdHlwZS10ZXh0IGdmaWVsZF9jb250YWluc19yZXF1aXJlZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBnZmllbGQtLW5vLWRlc2NyaXB0aW9uIGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93IGhpZGRlbl9sYWJlbCBmaWVsZF92YWxpZGF0aW9uX2JlbG93IGdmaWVsZF92aXNpYmlsaXR5X3Zpc2libGUiICA+PGxhYmVsIGNsYXNzPSdnZmllbGRfbGFiZWwgZ2Zvcm0tZmllbGQtbGFiZWwnIGZvcj0naW5wdXRfMTVfNSc+WW91ciBDb21wYW55PHNwYW4gY2xhc3M9ImdmaWVsZF9yZXF1aXJlZCI+PHNwYW4gY2xhc3M9ImdmaWVsZF9yZXF1aXJlZCBnZmllbGRfcmVxdWlyZWRfYXN0ZXJpc2siPio8L3NwYW4+PC9zcGFuPjwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lciBnaW5wdXRfY29udGFpbmVyX3RleHQnPjxpbnB1dCBuYW1lPSdpbnB1dF81JyBpZD0naW5wdXRfMTVfNScgdHlwZT0ndGV4dCcgdmFsdWU9JycgY2xhc3M9J21lZGl1bScgICB0YWJpbmRleD0nNTAnIHBsYWNlaG9sZGVyPSdZb3VyIENvbXBhbnknIGFyaWEtcmVxdWlyZWQ9InRydWUiIGFyaWEtaW52YWxpZD0iZmFsc2UiICAgLz48L2Rpdj48L2xpPjxsaSBpZD0iZmllbGRfMTVfMyIgY2xhc3M9ImdmaWVsZCBnZmllbGQtLXR5cGUtZW1haWwgZ2ZpZWxkX2NvbnRhaW5zX3JlcXVpcmVkIGZpZWxkX3N1YmxhYmVsX2JlbG93IGdmaWVsZC0tbm8tZGVzY3JpcHRpb24gZmllbGRfZGVzY3JpcHRpb25fYmVsb3cgaGlkZGVuX2xhYmVsIGZpZWxkX3ZhbGlkYXRpb25fYmVsb3cgZ2ZpZWxkX3Zpc2liaWxpdHlfdmlzaWJsZSIgID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCBnZm9ybS1maWVsZC1sYWJlbCcgZm9yPSdpbnB1dF8xNV8zJz5Zb3VyIEVtYWlsPHNwYW4gY2xhc3M9ImdmaWVsZF9yZXF1aXJlZCI+PHNwYW4gY2xhc3M9ImdmaWVsZF9yZXF1aXJlZCBnZmllbGRfcmVxdWlyZWRfYXN0ZXJpc2siPio8L3NwYW4+PC9zcGFuPjwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lciBnaW5wdXRfY29udGFpbmVyX2VtYWlsJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSdpbnB1dF8zJyBpZD0naW5wdXRfMTVfMycgdHlwZT0nZW1haWwnIHZhbHVlPScnIGNsYXNzPSdtZWRpdW0nIHRhYmluZGV4PSc1MScgIHBsYWNlaG9sZGVyPSdZb3VyIEVtYWlsJyBhcmlhLXJlcXVpcmVkPSJ0cnVlIiBhcmlhLWludmFsaWQ9ImZhbHNlIiAgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9saT48bGkgaWQ9ImZpZWxkXzE1XzIiIGNsYXNzPSJnZmllbGQgZ2ZpZWxkLS10eXBlLXRleHQgZ2ZpZWxkX2NvbnRhaW5zX3JlcXVpcmVkIGZpZWxkX3N1YmxhYmVsX2JlbG93IGdmaWVsZC0tbm8tZGVzY3JpcHRpb24gZmllbGRfZGVzY3JpcHRpb25fYmVsb3cgaGlkZGVuX2xhYmVsIGZpZWxkX3ZhbGlkYXRpb25fYmVsb3cgZ2ZpZWxkX3Zpc2liaWxpdHlfdmlzaWJsZSIgID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCBnZm9ybS1maWVsZC1sYWJlbCcgZm9yPSdpbnB1dF8xNV8yJz5Db250YWN0IE5vLjxzcGFuIGNsYXNzPSJnZmllbGRfcmVxdWlyZWQiPjxzcGFuIGNsYXNzPSJnZmllbGRfcmVxdWlyZWQgZ2ZpZWxkX3JlcXVpcmVkX2FzdGVyaXNrIj4qPC9zcGFuPjwvc3Bhbj48L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXIgZ2lucHV0X2NvbnRhaW5lcl90ZXh0Jz48aW5wdXQgbmFtZT0naW5wdXRfMicgaWQ9J2lucHV0XzE1XzInIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSdtZWRpdW0nICAgdGFiaW5kZXg9JzUyJyBwbGFjZWhvbGRlcj0nQ29udGFjdCBOby4nIGFyaWEtcmVxdWlyZWQ9InRydWUiIGFyaWEtaW52YWxpZD0iZmFsc2UiICAgLz48L2Rpdj48L2xpPjxsaSBpZD0iZmllbGRfMTVfNiIgY2xhc3M9ImdmaWVsZCBnZmllbGQtLXR5cGUtdGV4dGFyZWEgZmllbGRfc3VibGFiZWxfYmVsb3cgZ2ZpZWxkLS1uby1kZXNjcmlwdGlvbiBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdyBoaWRkZW5fbGFiZWwgZmllbGRfdmFsaWRhdGlvbl9iZWxvdyBnZmllbGRfdmlzaWJpbGl0eV92aXNpYmxlIiAgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsIGdmb3JtLWZpZWxkLWxhYmVsJyBmb3I9J2lucHV0XzE1XzYnPk1lc3NhZ2UgKG9wdGlvbmFsKTwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lciBnaW5wdXRfY29udGFpbmVyX3RleHRhcmVhJz48dGV4dGFyZWEgbmFtZT0naW5wdXRfNicgaWQ9J2lucHV0XzE1XzYnIGNsYXNzPSd0ZXh0YXJlYSBtZWRpdW0nIHRhYmluZGV4PSc1MycgICBwbGFjZWhvbGRlcj0nTWVzc2FnZSAob3B0aW9uYWwpJyAgYXJpYS1pbnZhbGlkPSJmYWxzZSIgICByb3dzPScxMCcgY29scz0nNTAnPjwvdGV4dGFyZWE+PC9kaXY+PC9saT48bGkgaWQ9ImZpZWxkXzE1XzciIGNsYXNzPSJnZmllbGQgZ2ZpZWxkLS10eXBlLWNhcHRjaGEgZmllbGRfc3VibGFiZWxfYmVsb3cgZ2ZpZWxkLS1uby1kZXNjcmlwdGlvbiBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdyBmaWVsZF92YWxpZGF0aW9uX2JlbG93IGdmaWVsZF92aXNpYmlsaXR5X3Zpc2libGUiICA+PGxhYmVsIGNsYXNzPSdnZmllbGRfbGFiZWwgZ2Zvcm0tZmllbGQtbGFiZWwgc2NyZWVuLXJlYWRlci10ZXh0JyBmb3I9J2lucHV0XzE1XzcnPjwvbGFiZWw+PGRpdiBpZD0naW5wdXRfMTVfNycgY2xhc3M9J2dpbnB1dF9jb250YWluZXIgZ2lucHV0X3JlY2FwdGNoYScgZGF0YS1zaXRla2V5PSc2TGR1bXN3VUFBQUFBTEk5cHk0NzQzV3FGTENWTDZuakxTSmNwX2Y1JyAgZGF0YS10aGVtZT0nbGlnaHQnIGRhdGEtdGFiaW5kZXg9JzU0JyAgZGF0YS1iYWRnZT0nJz48L2Rpdj48L2xpPjwvdWw+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0nZ2Zvcm0tZm9vdGVyIGdmb3JtX2Zvb3RlciB0b3BfbGFiZWwnPiA8aW5wdXQgdHlwZT0nc3VibWl0JyBpZD0nZ2Zvcm1fc3VibWl0X2J1dHRvbl8xNScgY2xhc3M9J2dmb3JtX2J1dHRvbiBidXR0b24nIG9uY2xpY2s9J2dmb3JtLnN1Ym1pc3Npb24uaGFuZGxlQnV0dG9uQ2xpY2sodGhpcyk7JyBkYXRhLXN1Ym1pc3Npb24tdHlwZT0nc3VibWl0JyB2YWx1ZT0nU3VibWl0JyB0YWJpbmRleD0nNTUnIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2dmb3JtX2FqYXgnIHZhbHVlPSdmb3JtX2lkPTE1JmFtcDt0aXRsZT0mYW1wO2Rlc2NyaXB0aW9uPSZhbXA7dGFiaW5kZXg9NDkmYW1wO3RoZW1lPWxlZ2FjeSZhbXA7c3R5bGVzPVtdJmFtcDtoYXNoPTNiNWI1ODIyZTUzODdmMTA2ZDNkNmQ5YmNmMmFlODYxJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdnZm9ybV9zdWJtaXNzaW9uX21ldGhvZCcgZGF0YS1qcz0nZ2Zvcm1fc3VibWlzc2lvbl9tZXRob2RfMTUnIHZhbHVlPSdpZnJhbWUnIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2dmb3JtX3RoZW1lJyBkYXRhLWpzPSdnZm9ybV90aGVtZV8xNScgaWQ9J2dmb3JtX3RoZW1lXzE1JyB2YWx1ZT0nbGVnYWN5JyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdnZm9ybV9zdHlsZV9zZXR0aW5ncycgZGF0YS1qcz0nZ2Zvcm1fc3R5bGVfc2V0dGluZ3NfMTUnIGlkPSdnZm9ybV9zdHlsZV9zZXR0aW5nc18xNScgdmFsdWU9J1tdJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdpc19zdWJtaXRfMTUnIHZhbHVlPScxJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdnZm9ybV9zdWJtaXQnIHZhbHVlPScxNScgLz4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2dmb3JtX3VuaXF1ZV9pZCcgdmFsdWU9JycgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0nc3RhdGVfMTUnIHZhbHVlPSdXeUpiWFNJc0lqSmpNemMyT1dVM01ESmhZVEkwTXpBMllUSTFOREV4TVdFMll6Y3lNbUpoSWwwPScgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgYXV0b2NvbXBsZXRlPSdvZmYnIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2dmb3JtX3RhcmdldF9wYWdlX251bWJlcl8xNScgaWQ9J2dmb3JtX3RhcmdldF9wYWdlX251bWJlcl8xNScgdmFsdWU9JzAnIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGF1dG9jb21wbGV0ZT0nb2ZmJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdnZm9ybV9zb3VyY2VfcGFnZV9udW1iZXJfMTUnIGlkPSdnZm9ybV9zb3VyY2VfcGFnZV9udW1iZXJfMTUnIHZhbHVlPScxJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdnZm9ybV9maWVsZF92YWx1ZXMnIHZhbHVlPScnIC8+CiAgICAgICAgICAgIAogICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyIgY2xhc3M9ImFraXNtZXQtZmllbGRzLWNvbnRhaW5lciIgZGF0YS1wcmVmaXg9ImFrXyI+PGxhYmVsPiYjOTE2Ozx0ZXh0YXJlYSBuYW1lPSJha19ocF90ZXh0YXJlYSIgY29scz0iNDUiIHJvd3M9IjgiIG1heGxlbmd0aD0iMTAwIj48L3RleHRhcmVhPjwvbGFiZWw+PGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImFrX2pzXzEiIG5hbWU9ImFrX2pzIiB2YWx1ZT0iMTgzIi8+PHNjcmlwdD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCggImFrX2pzXzEiICkuc2V0QXR0cmlidXRlKCAidmFsdWUiLCAoIG5ldyBEYXRlKCkgKS5nZXRUaW1lKCkgKTs8L3NjcmlwdD48L3A+PC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCQkgICAgICAgICAgICAgICAgPGlmcmFtZSBzdHlsZT0nZGlzcGxheTpub25lO3dpZHRoOjBweDtoZWlnaHQ6MHB4Oycgc3JjPSdhYm91dDpibGFuaycgbmFtZT0nZ2Zvcm1fYWpheF9mcmFtZV8xNScgaWQ9J2dmb3JtX2FqYXhfZnJhbWVfMTUnIHRpdGxlPSdUaGlzIGlmcmFtZSBjb250YWlucyB0aGUgbG9naWMgcmVxdWlyZWQgdG8gaGFuZGxlIEFqYXggcG93ZXJlZCBHcmF2aXR5IEZvcm1zLic+PC9pZnJhbWU+CgkJICAgICAgICAgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLyogPCFbQ0RBVEFbICovCiBnZm9ybS5pbml0aWFsaXplT25Mb2FkZWQoIGZ1bmN0aW9uKCkge2dmb3JtSW5pdFNwaW5uZXIoIDE1LCAnaHR0cHM6Ly9jaGVmZ29vZC5jb20uYXUvd3AtY29udGVudC9wbHVnaW5zL2dyYXZpdHlmb3Jtcy9pbWFnZXMvc3Bpbm5lci5zdmcnLCB0cnVlICk7alF1ZXJ5KCcjZ2Zvcm1fYWpheF9mcmFtZV8xNScpLm9uKCdsb2FkJyxmdW5jdGlvbigpe3ZhciBjb250ZW50cyA9IGpRdWVyeSh0aGlzKS5jb250ZW50cygpLmZpbmQoJyonKS5odG1sKCk7dmFyIGlzX3Bvc3RiYWNrID0gY29udGVudHMuaW5kZXhPZignR0ZfQUpBWF9QT1NUQkFDSycpID49IDA7aWYoIWlzX3Bvc3RiYWNrKXtyZXR1cm47fXZhciBmb3JtX2NvbnRlbnQgPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcjZ2Zvcm1fd3JhcHBlcl8xNScpO3ZhciBpc19jb25maXJtYXRpb24gPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcjZ2Zvcm1fY29uZmlybWF0aW9uX3dyYXBwZXJfMTUnKS5sZW5ndGggPiAwO3ZhciBpc19yZWRpcmVjdCA9IGNvbnRlbnRzLmluZGV4T2YoJ2dmb3JtUmVkaXJlY3QoKXsnKSA+PSAwO3ZhciBpc19mb3JtID0gZm9ybV9jb250ZW50Lmxlbmd0aCA+IDAgJiYgISBpc19yZWRpcmVjdCAmJiAhIGlzX2NvbmZpcm1hdGlvbjt2YXIgbXQgPSBwYXJzZUludChqUXVlcnkoJ2h0bWwnKS5jc3MoJ21hcmdpbi10b3AnKSwgMTApICsgcGFyc2VJbnQoalF1ZXJ5KCdib2R5JykuY3NzKCdtYXJnaW4tdG9wJyksIDEwKSArIDEwMDtpZihpc19mb3JtKXtqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzE1JykuaHRtbChmb3JtX2NvbnRlbnQuaHRtbCgpKTtpZihmb3JtX2NvbnRlbnQuaGFzQ2xhc3MoJ2dmb3JtX3ZhbGlkYXRpb25fZXJyb3InKSl7alF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8xNScpLmFkZENsYXNzKCdnZm9ybV92YWxpZGF0aW9uX2Vycm9yJyk7fSBlbHNlIHtqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzE1JykucmVtb3ZlQ2xhc3MoJ2dmb3JtX3ZhbGlkYXRpb25fZXJyb3InKTt9c2V0VGltZW91dCggZnVuY3Rpb24oKSB7IC8qIGRlbGF5IHRoZSBzY3JvbGwgYnkgNTAgbWlsbGlzZWNvbmRzIHRvIGZpeCBhIGJ1ZyBpbiBjaHJvbWUgKi8galF1ZXJ5KGRvY3VtZW50KS5zY3JvbGxUb3AoalF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8xNScpLm9mZnNldCgpLnRvcCAtIG10KTsgfSwgNTAgKTtpZih3aW5kb3dbJ2dmb3JtSW5pdERhdGVwaWNrZXInXSkge2dmb3JtSW5pdERhdGVwaWNrZXIoKTt9aWYod2luZG93WydnZm9ybUluaXRQcmljZUZpZWxkcyddKSB7Z2Zvcm1Jbml0UHJpY2VGaWVsZHMoKTt9dmFyIGN1cnJlbnRfcGFnZSA9IGpRdWVyeSgnI2dmb3JtX3NvdXJjZV9wYWdlX251bWJlcl8xNScpLnZhbCgpO2dmb3JtSW5pdFNwaW5uZXIoIDE1LCAnaHR0cHM6Ly9jaGVmZ29vZC5jb20uYXUvd3AtY29udGVudC9wbHVnaW5zL2dyYXZpdHlmb3Jtcy9pbWFnZXMvc3Bpbm5lci5zdmcnLCB0cnVlICk7alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdnZm9ybV9wYWdlX2xvYWRlZCcsIFsxNSwgY3VycmVudF9wYWdlXSk7d2luZG93WydnZl9zdWJtaXR0aW5nXzE1J10gPSBmYWxzZTt9ZWxzZSBpZighaXNfcmVkaXJlY3Qpe3ZhciBjb25maXJtYXRpb25fY29udGVudCA9IGpRdWVyeSh0aGlzKS5jb250ZW50cygpLmZpbmQoJy5HRl9BSkFYX1BPU1RCQUNLJykuaHRtbCgpO2lmKCFjb25maXJtYXRpb25fY29udGVudCl7Y29uZmlybWF0aW9uX2NvbnRlbnQgPSBjb250ZW50czt9alF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8xNScpLnJlcGxhY2VXaXRoKGNvbmZpcm1hdGlvbl9jb250ZW50KTtqUXVlcnkoZG9jdW1lbnQpLnNjcm9sbFRvcChqUXVlcnkoJyNnZl8xNScpLm9mZnNldCgpLnRvcCAtIG10KTtqUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIoJ2dmb3JtX2NvbmZpcm1hdGlvbl9sb2FkZWQnLCBbMTVdKTt3aW5kb3dbJ2dmX3N1Ym1pdHRpbmdfMTUnXSA9IGZhbHNlO3dwLmExMXkuc3BlYWsoalF1ZXJ5KCcjZ2Zvcm1fY29uZmlybWF0aW9uX21lc3NhZ2VfMTUnKS50ZXh0KCkpO31lbHNle2pRdWVyeSgnI2dmb3JtXzE1JykuYXBwZW5kKGNvbnRlbnRzKTtpZih3aW5kb3dbJ2dmb3JtUmVkaXJlY3QnXSkge2dmb3JtUmVkaXJlY3QoKTt9fWpRdWVyeShkb2N1bWVudCkudHJpZ2dlcigiZ2Zvcm1fcHJlX3Bvc3RfcmVuZGVyIiwgW3sgZm9ybUlkOiAiMTUiLCBjdXJyZW50UGFnZTogImN1cnJlbnRfcGFnZSIsIGFib3J0OiBmdW5jdGlvbigpIHsgdGhpcy5wcmV2ZW50RGVmYXVsdCgpOyB9IH1dKTsgICAgICAgIGlmIChldmVudCAmJiBldmVudC5kZWZhdWx0UHJldmVudGVkKSB7ICAgICAgICAgICAgICAgIHJldHVybjsgICAgICAgIH0gICAgICAgIGNvbnN0IGdmb3JtV3JhcHBlckRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAiZ2Zvcm1fd3JhcHBlcl8xNSIgKTsgICAgICAgIGlmICggZ2Zvcm1XcmFwcGVyRGl2ICkgeyAgICAgICAgICAgIGNvbnN0IHZpc2liaWxpdHlTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggInNwYW4iICk7ICAgICAgICAgICAgdmlzaWJpbGl0eVNwYW4uaWQgPSAiZ2Zvcm1fdmlzaWJpbGl0eV90ZXN0XzE1IjsgICAgICAgICAgICBnZm9ybVdyYXBwZXJEaXYuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCAiYWZ0ZXJlbmQiLCB2aXNpYmlsaXR5U3BhbiApOyAgICAgICAgfSAgICAgICAgY29uc3QgdmlzaWJpbGl0eVRlc3REaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggImdmb3JtX3Zpc2liaWxpdHlfdGVzdF8xNSIgKTsgICAgICAgIGxldCBwb3N0UmVuZGVyRmlyZWQgPSBmYWxzZTsgICAgICAgIGZ1bmN0aW9uIHRyaWdnZXJQb3N0UmVuZGVyKCkgeyAgICAgICAgICAgIGlmICggcG9zdFJlbmRlckZpcmVkICkgeyAgICAgICAgICAgICAgICByZXR1cm47ICAgICAgICAgICAgfSAgICAgICAgICAgIHBvc3RSZW5kZXJGaXJlZCA9IHRydWU7ICAgICAgICAgICAgZ2Zvcm0uY29yZS50cmlnZ2VyUG9zdFJlbmRlckV2ZW50cyggMTUsIGN1cnJlbnRfcGFnZSApOyAgICAgICAgICAgIGlmICggdmlzaWJpbGl0eVRlc3REaXYgKSB7ICAgICAgICAgICAgICAgIHZpc2liaWxpdHlUZXN0RGl2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHZpc2liaWxpdHlUZXN0RGl2ICk7ICAgICAgICAgICAgfSAgICAgICAgfSAgICAgICAgZnVuY3Rpb24gZGVib3VuY2UoIGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSApIHsgICAgICAgICAgICB2YXIgdGltZW91dDsgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsgICAgICAgICAgICAgICAgdmFyIGxhdGVyID0gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gbnVsbDsgICAgICAgICAgICAgICAgICAgIGlmICggIWltbWVkaWF0ZSApIGZ1bmMuYXBwbHkoIGNvbnRleHQsIGFyZ3MgKTsgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgdmFyIGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXQ7ICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCggdGltZW91dCApOyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCggbGF0ZXIsIHdhaXQgKTsgICAgICAgICAgICAgICAgaWYgKCBjYWxsTm93ICkgZnVuYy5hcHBseSggY29udGV4dCwgYXJncyApOyAgICAgICAgICAgIH07ICAgICAgICB9ICAgICAgICBjb25zdCBkZWJvdW5jZWRUcmlnZ2VyUG9zdFJlbmRlciA9IGRlYm91bmNlKCBmdW5jdGlvbigpIHsgICAgICAgICAgICB0cmlnZ2VyUG9zdFJlbmRlcigpOyAgICAgICAgfSwgMjAwICk7ICAgICAgICBpZiAoIHZpc2liaWxpdHlUZXN0RGl2ICYmIHZpc2liaWxpdHlUZXN0RGl2Lm9mZnNldFBhcmVudCA9PT0gbnVsbCApIHsgICAgICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCAoIG11dGF0aW9ucyApID0+IHsgICAgICAgICAgICAgICAgbXV0YXRpb25zLmZvckVhY2goICggbXV0YXRpb24gKSA9PiB7ICAgICAgICAgICAgICAgICAgICBpZiAoIG11dGF0aW9uLnR5cGUgPT09ICdhdHRyaWJ1dGVzJyAmJiB2aXNpYmlsaXR5VGVzdERpdi5vZmZzZXRQYXJlbnQgIT09IG51bGwgKSB7ICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VkVHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7ICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgIH0pOyAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoIGRvY3VtZW50LmJvZHksIHsgICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSwgICAgICAgICAgICAgICAgY2hpbGRMaXN0OiBmYWxzZSwgICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSwgICAgICAgICAgICAgICAgYXR0cmlidXRlRmlsdGVyOiBbICdzdHlsZScsICdjbGFzcycgXSwgICAgICAgICAgICB9KTsgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgdHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgIH0gICAgfSApO30gKTsgCi8qIF1dPiAqLwo8L3NjcmlwdD4K