Our Logo
WebAsOne
Home
How To
Join US
Design
Design Block
Design Patterns
Animation
Themes
Fonts
Marketing
Hero
About
BIO
Contact
CTA
FAQ
Footer
Portfolio
Price
Service
Team
Testimonials
Pages
UI
ReactJS
SvelteJS
VueJS
Apps
OpenSource
Mini-Apps
Opencart-3
EasyAppointment1
Yii2
Yii2-Extra
RoleCommand
GoogleLogin
OpenSource
->
Yii2-Extra
->
RoleCommand
GoogleLogin
Yii2 Role console command!
Yii2 Role console command!
oneColumn/id13-33,Click to clipboard
ezE6IHsnZW4nOiB7J05vdGVzJzogJycsCiAgICAgICAgICAgICdTbGlkZVR5cGUnOiAnU3RhcnRNc2cnLAogICAgICAgICAgICAnYUxhYmVsJzogJycsCiAgICAgICAgICAgICdhX2ZpbGUnOiAnJywKICAgICAgICAgICAgJ2FkZENsYXNzJzogJycsCiAgICAgICAgICAgICdhc3ZnZmlsZSc6ICc8c3ZnPjwvc3ZnPicsCiAgICAgICAgICAgICdjZGF0YSc6ICcnLAogICAgICAgICAgICAnY29kZSc6ICcnLAogICAgICAgICAgICAnY29kZUluYyc6ICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyMgY29udGVudCBiZXR3ZWVuIHN0eWxlSW5jIHRhZyB3aWxsIGJlIGFkZCB0byB0aGUgJwogICAgICAgICAgICAgICAgICAgICAgICdiZWZvcmUgdGhlIGNsb3NpbmcgaGVhZCB0YWdzXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8c3R5bGVJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPCEtLSBzdHlsZUluYyBJbmNsdWRlZCBmcm9tIF9JRF8gLS0+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPHN0eWxlPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwvc3R5bGU+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8L3N0eWxlSW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnIyBjb250ZW50IGJldHdlZW4gc2NyaXB0SW5jIHRhZyB3aWxsIGJlIGFkZCB0byB0aGUgJwogICAgICAgICAgICAgICAgICAgICAgICdiZWZvcmUgdGhlIGNsb3NpbmcgYm9keSB0YWdzXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8c2NyaXB0SW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwhLS0gc2NyaXB0SW5jIEluY2x1ZGVkIGZyb20gX0lEXyAtLT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8c2NyaXB0PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwvc2NyaXB0PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPC9zY3JpcHRJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnIyBFbmRcclxuJywKICAgICAgICAgICAgJ2NvbEJHSW1hZ2UnOiAnJywKICAgICAgICAgICAgJ2NvbEJHSW1hZ2VXcmFwJzogJycsCiAgICAgICAgICAgICdjb21wb3NlckpTT04nOiAnJywKICAgICAgICAgICAgJ2RhdGEnOiAnPGgyIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsiPllpaTIgUm9sZSBjb25zb2xlICcKICAgICAgICAgICAgICAgICAgICAnY29tbWFuZCE8L2gyPicsCiAgICAgICAgICAgICdkeW5hbWljQmxvY2snOiAnJywKICAgICAgICAgICAgJ2tleXdvcmRzJzogJycsCiAgICAgICAgICAgICdwaHBGaWxlJzogJycsCiAgICAgICAgICAgICdwaHBGaWxlQSc6ICcnLAogICAgICAgICAgICAncGhwRmlsZUInOiAnJ30sCiAgICAgJ2VuLVVTJzogeydNeU1vZHVsZSc6ICdvbmVDb2x1bW4nLAogICAgICAgICAgICAgICAnTm90ZXMnOiAnJywKICAgICAgICAgICAgICAgJ1NsaWRlVHlwZSc6ICdTdGFydE1zZycsCiAgICAgICAgICAgICAgICdhTGFiZWwnOiAnJywKICAgICAgICAgICAgICAgJ2FfZmlsZSc6ICcnLAogICAgICAgICAgICAgICAnYWRkQ2xhc3MnOiAnJywKICAgICAgICAgICAgICAgJ2FzdmdmaWxlJzogJzxzdmc+PC9zdmc+JywKICAgICAgICAgICAgICAgJ2NkYXRhJzogJycsCiAgICAgICAgICAgICAgICdjb2RlJzogJycsCiAgICAgICAgICAgICAgICdjb2RlSW5jJzogJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnIyBjb250ZW50IGJldHdlZW4gc3R5bGVJbmMgdGFnIHdpbGwgYmUgYWRkIHRvIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZSB0aGUgY2xvc2luZyBoZWFkIHRhZ3NcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzdHlsZUluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8IS0tIHN0eWxlSW5jIEluY2x1ZGVkIGZyb20gX0lEXyAtLT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8c3R5bGU+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9zdHlsZT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvc3R5bGVJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjIGNvbnRlbnQgYmV0d2VlbiBzY3JpcHRJbmMgdGFnIHdpbGwgYmUgYWRkIHRvIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZSB0aGUgY2xvc2luZyBib2R5IHRhZ3NcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHRJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPCEtLSBzY3JpcHRJbmMgSW5jbHVkZWQgZnJvbSBfSURfIC0tPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9zY3JpcHQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8L3NjcmlwdEluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjIEVuZFxyXG4nLAogICAgICAgICAgICAgICAnY29sQkdJbWFnZSc6ICcnLAogICAgICAgICAgICAgICAnY29sQkdJbWFnZVdyYXAnOiAnJywKICAgICAgICAgICAgICAgJ2NvbXBvc2VySlNPTic6ICcnLAogICAgICAgICAgICAgICAnZGF0YSc6ICc8aDIgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyI+WWlpMiBSb2xlIGNvbnNvbGUgJwogICAgICAgICAgICAgICAgICAgICAgICdjb21tYW5kITwvaDI+JywKICAgICAgICAgICAgICAgJ2R5bmFtaWNCbG9jayc6ICcnLAogICAgICAgICAgICAgICAna2V5d29yZHMnOiAnJywKICAgICAgICAgICAgICAgJ3BocEZpbGUnOiAnJywKICAgICAgICAgICAgICAgJ3BocEZpbGVBJzogJycsCiAgICAgICAgICAgICAgICdwaHBGaWxlQic6ICcnfX0sCiAyOiB7J2VuJzogeydOb3Rlcyc6ICcnLAogICAgICAgICAgICAnU2xpZGVUeXBlJzogJ1N0YXJ0TXNnJywKICAgICAgICAgICAgJ2FMYWJlbCc6ICcnLAogICAgICAgICAgICAnYV9maWxlJzogJycsCiAgICAgICAgICAgICdhZGRDbGFzcyc6ICcnLAogICAgICAgICAgICAnYXN2Z2ZpbGUnOiAnPHN2Zz48L3N2Zz4nLAogICAgICAgICAgICAnY2RhdGEnOiAnJywKICAgICAgICAgICAgJ2NvZGUnOiAnJywKICAgICAgICAgICAgJ2NvZGVJbmMnOiAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjIGNvbnRlbnQgYmV0d2VlbiBzdHlsZUluYyB0YWcgd2lsbCBiZSBhZGQgdG8gdGhlICcKICAgICAgICAgICAgICAgICAgICAgICAnYmVmb3JlIHRoZSBjbG9zaW5nIGhlYWQgdGFnc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPHN0eWxlSW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwhLS0gc3R5bGVJbmMgSW5jbHVkZWQgZnJvbSBfSURfIC0tPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzxzdHlsZT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8L3N0eWxlPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPC9zdHlsZUluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyMgY29udGVudCBiZXR3ZWVuIHNjcmlwdEluYyB0YWcgd2lsbCBiZSBhZGQgdG8gdGhlICcKICAgICAgICAgICAgICAgICAgICAgICAnYmVmb3JlIHRoZSBjbG9zaW5nIGJvZHkgdGFnc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPHNjcmlwdEluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8IS0tIHNjcmlwdEluYyBJbmNsdWRlZCBmcm9tIF9JRF8gLS0+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPHNjcmlwdD5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8L3NjcmlwdD5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwvc2NyaXB0SW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyMgRW5kXHJcbicsCiAgICAgICAgICAgICdjb2xCR0ltYWdlJzogJy9kZWZhdWx0L21lZGlhL25hdjZoMC9zL1VJL0EwMDAwMDEwMjcwMDIwMDEvb25lQ29sdW1uL2ltZzEuanBnJywKICAgICAgICAgICAgJ2NvbEJHSW1hZ2VXcmFwJzogJy9kZWZhdWx0L21lZGlhL25hdjZoMC9zL1VJL0EwMDAwMDEwMjcwMDIwMDEvb25lQ29sdW1uL2ltZzIuanBnJywKICAgICAgICAgICAgJ2NvbXBvc2VySlNPTic6ICcnLAogICAgICAgICAgICAnZGF0YSc6ICc8aDIgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyI+WWlpMiBSb2xlIGNvbnNvbGUgJwogICAgICAgICAgICAgICAgICAgICdjb21tYW5kITwvaDI+JywKICAgICAgICAgICAgJ2R5bmFtaWNCbG9jayc6ICcnLAogICAgICAgICAgICAna2V5d29yZHMnOiAnJywKICAgICAgICAgICAgJ3BocEZpbGUnOiAnJywKICAgICAgICAgICAgJ3BocEZpbGVBJzogJycsCiAgICAgICAgICAgICdwaHBGaWxlQic6ICcnfSwKICAgICAnZW4tVVMnOiB7J015TW9kdWxlJzogJ29uZUNvbHVtbicsCiAgICAgICAgICAgICAgICdOb3Rlcyc6ICcnLAogICAgICAgICAgICAgICAnU2xpZGVUeXBlJzogJ1N0YXJ0TXNnJywKICAgICAgICAgICAgICAgJ2FMYWJlbCc6ICcnLAogICAgICAgICAgICAgICAnYV9maWxlJzogJycsCiAgICAgICAgICAgICAgICdhZGRDbGFzcyc6ICcnLAogICAgICAgICAgICAgICAnYXN2Z2ZpbGUnOiAnPHN2Zz48L3N2Zz4nLAogICAgICAgICAgICAgICAnY2RhdGEnOiAnJywKICAgICAgICAgICAgICAgJ2NvZGUnOiAnJywKICAgICAgICAgICAgICAgJ2NvZGVJbmMnOiAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjIGNvbnRlbnQgYmV0d2VlbiBzdHlsZUluYyB0YWcgd2lsbCBiZSBhZGQgdG8gdGhlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnYmVmb3JlIHRoZSBjbG9zaW5nIGhlYWQgdGFnc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPHN0eWxlSW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwhLS0gc3R5bGVJbmMgSW5jbHVkZWQgZnJvbSBfSURfIC0tPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzdHlsZT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8L3N0eWxlPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9zdHlsZUluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyMgY29udGVudCBiZXR3ZWVuIHNjcmlwdEluYyB0YWcgd2lsbCBiZSBhZGQgdG8gdGhlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnYmVmb3JlIHRoZSBjbG9zaW5nIGJvZHkgdGFnc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPHNjcmlwdEluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8IS0tIHNjcmlwdEluYyBJbmNsdWRlZCBmcm9tIF9JRF8gLS0+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPHNjcmlwdD5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8L3NjcmlwdD5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvc2NyaXB0SW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyMgRW5kXHJcbicsCiAgICAgICAgICAgICAgICdjb2xCR0ltYWdlJzogJy9kZWZhdWx0L21lZGlhL25hdjZoMC9zL1VJL0EwMDAwMDEwMjcwMDIwMDEvb25lQ29sdW1uL2ltZzEuanBnJywKICAgICAgICAgICAgICAgJ2NvbEJHSW1hZ2VXcmFwJzogJy9kZWZhdWx0L21lZGlhL25hdjZoMC9zL1VJL0EwMDAwMDEwMjcwMDIwMDEvb25lQ29sdW1uL2ltZzIuanBnJywKICAgICAgICAgICAgICAgJ2NvbXBvc2VySlNPTic6ICcnLAogICAgICAgICAgICAgICAnZGF0YSc6ICc8aDIgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyI+WWlpMiBSb2xlIGNvbnNvbGUgJwogICAgICAgICAgICAgICAgICAgICAgICdjb21tYW5kITwvaDI+JywKICAgICAgICAgICAgICAgJ2R5bmFtaWNCbG9jayc6ICcnLAogICAgICAgICAgICAgICAna2V5d29yZHMnOiAnJywKICAgICAgICAgICAgICAgJ3BocEZpbGUnOiAnJywKICAgICAgICAgICAgICAgJ3BocEZpbGVBJzogJycsCiAgICAgICAgICAgICAgICdwaHBGaWxlQic6ICcnfX0sCiAzOiB7J2VuJzogeydOb3Rlcyc6ICcnLAogICAgICAgICAgICAnU2xpZGVUeXBlJzogJ0NvZGUnLAogICAgICAgICAgICAnYUltYWdlJzogJy9kZWZhdWx0L21lZGlhL25hdjZoMC9zL1VJL0EwMDAwMDEwMjcwMDIwMDEvb25lQ29sdW1uL2ltZzMuanBnJywKICAgICAgICAgICAgJ2FJbWFnZVRodW0nOiAnL2RlZmF1bHQvbWVkaWEvbmF2NmgwL3MvVUkvQTAwMDAwMTAyNzAwMjAwMS9vbmVDb2x1bW4vdGh1bS9pbWcxLmpwZycsCiAgICAgICAgICAgICdhTGFiZWwnOiAnUm9sZSBDb21tYW5kcycsCiAgICAgICAgICAgICdhTWVkaWEnOiAnJywKICAgICAgICAgICAgJ2FfZmlsZSc6ICcnLAogICAgICAgICAgICAnYWRkQ2xhc3MnOiAnJywKICAgICAgICAgICAgJ2FzdmdmaWxlJzogJzxzdmc+PC9zdmc+JywKICAgICAgICAgICAgJ2NvZGUnOiAnJywKICAgICAgICAgICAgJ2NvZGVJbmMnOiAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjIGNvbnRlbnQgYmV0d2VlbiBzdHlsZUluYyB0YWcgd2lsbCBiZSBhZGQgdG8gdGhlICcKICAgICAgICAgICAgICAgICAgICAgICAnYmVmb3JlIHRoZSBjbG9zaW5nIGhlYWQgdGFnc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPHN0eWxlSW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwhLS0gc3R5bGVJbmMgSW5jbHVkZWQgZnJvbSBfSURfIC0tPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzxzdHlsZT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8L3N0eWxlPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPC9zdHlsZUluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyMgY29udGVudCBiZXR3ZWVuIHNjcmlwdEluYyB0YWcgd2lsbCBiZSBhZGQgdG8gdGhlICcKICAgICAgICAgICAgICAgICAgICAgICAnYmVmb3JlIHRoZSBjbG9zaW5nIGJvZHkgdGFnc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPHNjcmlwdEluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8IS0tIHNjcmlwdEluYyBJbmNsdWRlZCBmcm9tIF9JRF8gLS0+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPHNjcmlwdD5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8L3NjcmlwdD5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwvc2NyaXB0SW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyMgRW5kXHJcbicsCiAgICAgICAgICAgICdjb2xCR0ltYWdlJzogJy9kZWZhdWx0L21lZGlhL25hdjZoMC9zL1VJL0EwMDAwMDEwMjcwMDIwMDEvb25lQ29sdW1uL2ltZzQuanBnJywKICAgICAgICAgICAgJ2NvbEJHSW1hZ2VXcmFwJzogJy9kZWZhdWx0L21lZGlhL25hdjZoMC9zL1VJL0EwMDAwMDEwMjcwMDIwMDEvb25lQ29sdW1uL2ltZzUuanBnJywKICAgICAgICAgICAgJ2NvbXBvc2VySlNPTic6ICcnLAogICAgICAgICAgICAnZHluYW1pY0Jsb2NrJzogJycsCiAgICAgICAgICAgICdrZXl3b3Jkcyc6ICcnLAogICAgICAgICAgICAncGhwRmlsZSc6ICc8P3BocCAvKiAnCiAgICAgICAgICAgICAgICAgICAgICAgJ19kb2Nyb290Xy8uLi9zcmMveWlpMi9hZHZhbmNlZC92ZW5kb3IvMmFtaWdvcy95aWkyLXVzdWFyaW8vc3JjL1VzZXIvQ29tbWFuZC9Sb2xlQ29udHJvbGxlci5waHAgJwogICAgICAgICAgICAgICAgICAgICAgICcqL1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJy8qXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIDJhbWlnb3MveWlpMi11c3VhcmlvICcKICAgICAgICAgICAgICAgICAgICAgICAncHJvamVjdC5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAqIChjKSAyYW1pZ09TISA8aHR0cDovLzJhbWlnb3MudXMvPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgJwogICAgICAgICAgICAgICAgICAgICAgICdwbGVhc2Ugdmlld1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAqIHRoZSBMSUNFTlNFIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzICcKICAgICAgICAgICAgICAgICAgICAgICAnc291cmNlIGNvZGUuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlIERhXFxVc2VyXFxDb21tYW5kO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBEYVxcVXNlclxcRmFjdG9yeVxcTWFpbEZhY3Rvcnk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAndXNlIERhXFxVc2VyXFxNb2RlbFxcVXNlcjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICd1c2UgRGFcXFVzZXJcXFNlcnZpY2VcXFVzZXJDcmVhdGVTZXJ2aWNlO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBEYVxcVXNlclxcVHJhaXRzXFxDb250YWluZXJBd2FyZVRyYWl0O1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBZaWk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAndXNlIHlpaVxcY29uc29sZVxcQ29udHJvbGxlcjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICd1c2UgeWlpXFxoZWxwZXJzXFxDb25zb2xlO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzIFJvbGVDb250cm9sbGVyIGV4dGVuZHMgQ29udHJvbGxlclxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ3tcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgdXNlIENvbnRhaW5lckF3YXJlVHJhaXQ7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8qKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBUaGlzIGNvbW1hbmQgYSByb2xlIHRvIGEgdXNlci9lbWFpbC4gSWYgdGhlICcKICAgICAgICAgICAgICAgICAgICAgICAndXNlciBhbHJlYWR5IGhhcyB0aGUgcm9sZSBhc3NpZ24sIGl0IHdpbGwgc2tpcC5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHBhcmFtIHN0cmluZyAgICAgICRlbWFpbCAgICBFbWFpbFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJHJvbGUgICAgIFJvbGUgdG8gYXNzaWduICcKICAgICAgICAgICAgICAgICAgICAgICAnKG11c3QgYWxyZWFkeSBleGlzdClcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHRocm93cyBcXHlpaVxcYmFzZVxcSW52YWxpZENvbmZpZ0V4Y2VwdGlvblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgcHVibGljIGZ1bmN0aW9uIGFjdGlvbkluZGV4KCRlbWFpbCwgJHJvbGUpXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIHsgICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICR1c2VyID0gWWlpOjokYXBwLT5kYi0+Y3JlYXRlQ29tbWFuZCgnU0VMRUNUICIKICAgICAgICAgICAgICAgICAgICAgICAnaWQsIHVzZXJuYW1lLCBlbWFpbCBGUk9NIHVzZXIgICB3aGVyZSAgZW1haWwgPSAnCiAgICAgICAgICAgICAgICAgICAgICAgJyJcJy4kZW1haWwuXCciXCcpIC0+cXVlcnlPbmUoKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAjcHJpbnRfcigkYWxsVXNlcnMpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJGF1dGggPSBZaWk6OiRhcHAtPmdldEF1dGhNYW5hZ2VyKCk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBpZiAoZmFsc2UgPT09ICRhdXRoKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgJHRoaXMtPnN0ZG91dChcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgWWlpOjp0KFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgJ3VzdWFyaW8nLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgXCdDYW5ub3QgYXNzaWduIHJvbGUgInswfSIgYXMgdGhlICcKICAgICAgICAgICAgICAgICAgICAgICAnQXV0aE1hbmFnZXIgaXMgbm90IGNvbmZpZ3VyZWQgb24geW91ciBjb25zb2xlICcKICAgICAgICAgICAgICAgICAgICAgICAiYXBwbGljYXRpb24uJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICRyb2xlXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICkgLiAiXFxuIixcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgQ29uc29sZTo6RkdfUkVEXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgKTsgXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICB9IGVsc2Uge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICR1c2VyUm9sZSA9ICRhdXRoLT5nZXRSb2xlKCRyb2xlKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICBpZiAobnVsbCA9PT0gJHVzZXJSb2xlKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICR0aGlzLT5zdGRvdXQoWWlpOjp0KCd1c3VhcmlvJywgJ1JvbGUgIgogICAgICAgICAgICAgICAgICAgICAgICciezB9IiBub3QgZm91bmQuIENyZWF0aW5nIGl0LlwnLCBbJHJvbGVdKSAuICIhXFxuIiwgJwogICAgICAgICAgICAgICAgICAgICAgICdDb25zb2xlOjpGR19HUkVFTik7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICR1c2VyUm9sZSA9ICcKICAgICAgICAgICAgICAgICAgICAgICAnJGF1dGgtPmNyZWF0ZVJvbGUoJHJvbGUpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAkYXV0aC0+YWRkKCR1c2VyUm9sZSk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgLy8gcHJpbnRfcigkdXNlclJvbGUpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgJGF1dGgtPmFzc2lnbigkdXNlclJvbGUsICR1c2VyWydpZCddKTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ31cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJywKICAgICAgICAgICAgJ3BocEZpbGVBJzogJzw/cGhwIC8qICcKICAgICAgICAgICAgICAgICAgICAgICAgJ19kb2Nyb290Xy8uLi9zcmMveWlpMi9hZHZhbmNlZC92ZW5kb3IvMmFtaWdvcy95aWkyLXVzdWFyaW8vc3JjL1VzZXIvQ29tbWFuZC9Bc29uZUNvbnRyb2xsZXIucGhwICcKICAgICAgICAgICAgICAgICAgICAgICAgJyovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcvKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgMmFtaWdvcy95aWkyLXVzdWFyaW8gJwogICAgICAgICAgICAgICAgICAgICAgICAncHJvamVjdC5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICogKGMpIDJhbWlnT1MhIDxodHRwOi8vMmFtaWdvcy51cy8+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sICcKICAgICAgICAgICAgICAgICAgICAgICAgJ3BsZWFzZSB2aWV3XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAqIHRoZSBMSUNFTlNFIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzICcKICAgICAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZSBjb2RlLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSBEYVxcVXNlclxcQ29tbWFuZDtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBEYVxcVXNlclxcRmFjdG9yeVxcTWFpbEZhY3Rvcnk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBEYVxcVXNlclxcTW9kZWxcXFVzZXI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBEYVxcVXNlclxcU2VydmljZVxcVXNlckNyZWF0ZVNlcnZpY2U7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBEYVxcVXNlclxcVHJhaXRzXFxDb250YWluZXJBd2FyZVRyYWl0O1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgWWlpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgeWlpXFxjb25zb2xlXFxDb250cm9sbGVyO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgeWlpXFxoZWxwZXJzXFxDb25zb2xlO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnY2xhc3MgQXNvbmVDb250cm9sbGVyIGV4dGVuZHMgQ29udHJvbGxlclxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICd7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB1c2UgQ29udGFpbmVyQXdhcmVUcmFpdDtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIFRoaXMgY29tbWFuZCBjcmVhdGVzIGEgbmV3IHVzZXIgYWNjb3VudCBmb3IgJwogICAgICAgICAgICAgICAgICAgICAgICAnV2ViQXNPbmUuIElmIG5vIHBhc3N3b3JkIGlzIG5vdCBzZXQsIGFuIDgtY2hhciAnCiAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzd29yZCB3aWxsIGJlIGdlbmVyYXRlZC4gQWZ0ZXJcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIHNhdmluZyB1c2VyIHRvIGRhdGFiYXNlLCB0aGlzIGNvbW1hbmQgdXNlcyAnCiAgICAgICAgICAgICAgICAgICAgICAgICdtYWlsZXIgY29tcG9uZW50IHRvIHNlbmQgY3JlZGVudGlhbHMgKHVzZXJuYW1lIGFuZCAnCiAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzd29yZCkgdG8gdXNlclxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogdmlhIGVtYWlsLiBBIHJvbGUgY2FuIGJlIGFsc28gYXNzaWduZWQgYnV0IGl0ICcKICAgICAgICAgICAgICAgICAgICAgICAgJ211c3QgZXhpc3RzIHByZXZpb3VzbHkgb24gdGhlIGRhdGFiYXNlLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkZW1haWwgICAgRW1haWxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkdXNlcm5hbWUgVXNlcm5hbWVcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkcGFzc3dvcmQgVGhlIHBhc3N3b3JkLiBJZiAnCiAgICAgICAgICAgICAgICAgICAgICAgICdudWxsIGl0IHdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHlcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkcm9sZSAgICAgUm9sZSB0byBhc3NpZ24gJwogICAgICAgICAgICAgICAgICAgICAgICAnKG11c3QgYWxyZWFkeSBleGlzdClcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAdGhyb3dzIFxceWlpXFxiYXNlXFxJbnZhbGlkQ29uZmlnRXhjZXB0aW9uXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgIHB1YmxpYyBmdW5jdGlvbiBhY3Rpb25JbmRleCgpXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICRhbGxVc2VycyA9ICcKICAgICAgICAgICAgICAgICAgICAgICAgJ1lpaTo6JGFwcC0+ZGItPmNyZWF0ZUNvbW1hbmQoXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgJ1NFTEVDVCB1LmlkLCB1LnVzZXJuYW1lLCB1LmVtYWlsLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICJhLml0ZW1fbmFtZSBGUk9NJ1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIC4nIHVzZXIgYXMgdSBpbm5lciBqb2luIGF1dGhfYXNzaWdubWVudCBhICIKICAgICAgICAgICAgICAgICAgICAgICAgIndoZXJlIGEudXNlcl9pZCA9IHUuaWQnKSAtPnF1ZXJ5QWxsKCk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICNwcmludF9yKCRhbGxVc2Vycyk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAjdmFyX2R1bXAoYXJyYXlfbWFwKGZ1bmN0aW9uICgkYSkgeyAnCiAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm4gWyRhWyd1c2VybmFtZSddLCAkYVsnZW1haWwnXV07ICIKICAgICAgICAgICAgICAgICAgICAgICAgJ30sJGFsbFVzZXJzKSk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIGVjaG8gIlxcblxcbiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIGZvcmVhY2ggKCRhbGxVc2VycyBhcyAkdSkge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgIGVjaG8gJyAgICAnLCR1WydpZCddLCc6JywgIgogICAgICAgICAgICAgICAgICAgICAgICAiJHVbJ3VzZXJuYW1lJ10sICc6JywgJHVbJ2VtYWlsJ10sICc6JywgIgogICAgICAgICAgICAgICAgICAgICAgICAnJHVbXCdpdGVtX25hbWVcJ10sICJcXG4iO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICB9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIGVjaG8gIlxcblxcbiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ30nLAogICAgICAgICAgICAncGhwRmlsZUInOiAnPD9waHAgLyogJwogICAgICAgICAgICAgICAgICAgICAgICAnX2RvY3Jvb3RfLy4uL3NyYy95aWkyL2FkdmFuY2VkL3ZlbmRvci8yYW1pZ29zL3lpaTItdXN1YXJpby9zcmMvVXNlci9Db21tYW5kL0NyZWF0ZUNvbnRyb2xsZXIucGhwICcKICAgICAgICAgICAgICAgICAgICAgICAgJyovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnLypcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIDJhbWlnb3MveWlpMi11c3VhcmlvICcKICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2plY3QuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAqIChjKSAyYW1pZ09TISA8aHR0cDovLzJhbWlnb3MudXMvPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICdwbGVhc2Ugdmlld1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgKiB0aGUgTElDRU5TRSBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyAnCiAgICAgICAgICAgICAgICAgICAgICAgICdzb3VyY2UgY29kZS5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lc3BhY2UgRGFcXFVzZXJcXENvbW1hbmQ7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgRGFcXFVzZXJcXEZhY3RvcnlcXE1haWxGYWN0b3J5O1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgRGFcXFVzZXJcXE1vZGVsXFxVc2VyO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgRGFcXFVzZXJcXFNlcnZpY2VcXFVzZXJDcmVhdGVTZXJ2aWNlO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgRGFcXFVzZXJcXFRyYWl0c1xcQ29udGFpbmVyQXdhcmVUcmFpdDtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAndXNlIFlpaTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAndXNlIHlpaVxcY29uc29sZVxcQ29udHJvbGxlcjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAndXNlIHlpaVxcaGVscGVyc1xcQ29uc29sZTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzIENyZWF0ZUNvbnRyb2xsZXIgZXh0ZW5kcyBDb250cm9sbGVyXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ3tcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgIHVzZSBDb250YWluZXJBd2FyZVRyYWl0O1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8qKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogVGhpcyBjb21tYW5kIGNyZWF0ZXMgYSBuZXcgdXNlciBhY2NvdW50LiBJZiBubyAnCiAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzd29yZCBpcyBub3Qgc2V0LCBhbiA4LWNoYXIgcGFzc3dvcmQgd2lsbCBiZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICdnZW5lcmF0ZWQuIEFmdGVyXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBzYXZpbmcgdXNlciB0byBkYXRhYmFzZSwgdGhpcyBjb21tYW5kIHVzZXMgJwogICAgICAgICAgICAgICAgICAgICAgICAnbWFpbGVyIGNvbXBvbmVudCB0byBzZW5kIGNyZWRlbnRpYWxzICh1c2VybmFtZSBhbmQgJwogICAgICAgICAgICAgICAgICAgICAgICAncGFzc3dvcmQpIHRvIHVzZXJcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIHZpYSBlbWFpbC4gQSByb2xlIGNhbiBiZSBhbHNvIGFzc2lnbmVkIGJ1dCBpdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICdtdXN0IGV4aXN0cyBwcmV2aW91c2x5IG9uIHRoZSBkYXRhYmFzZS5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJGVtYWlsICAgIEVtYWlsXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJHVzZXJuYW1lIFVzZXJuYW1lXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJHVybCB3ZWJzaXRlIHVybFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRwYXNzd29yZCBUaGUgcGFzc3dvcmQuIElmICcKICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwgaXQgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRyb2xlICAgICBSb2xlIHRvIGFzc2lnbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICcobXVzdCBhbHJlYWR5IGV4aXN0KVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEB0aHJvd3MgXFx5aWlcXGJhc2VcXEludmFsaWRDb25maWdFeGNlcHRpb25cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqL1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgcHVibGljIGZ1bmN0aW9uIGFjdGlvbkluZGV4KCRlbWFpbCwgJHVzZXJuYW1lLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICckdXJsLCAkcGFzc3dvcmQgPSBudWxsLCAkcm9sZSA9IG51bGwpXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgLyoqIEB2YXIgVXNlciAkdXNlciAqL1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICR1c2VyID0gJHRoaXMtPm1ha2UoXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIFVzZXI6OmNsYXNzLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICBbXSxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgWydzY2VuYXJpbycgPT4gJ2NyZWF0ZScsICdlbWFpbCcgPT4gIgogICAgICAgICAgICAgICAgICAgICAgICAiJGVtYWlsLCAndXNlcm5hbWUnID0+ICR1c2VybmFtZSwgJ3Bhc3N3b3JkJyA9PiAiCiAgICAgICAgICAgICAgICAgICAgICAgICckcGFzc3dvcmRdXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnXHQjcHJpbnRfcigkdXNlci0+dXNlcm5hbWUpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICdcdCNyZXR1cm47XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJG1haWxTZXJ2aWNlID0gJwogICAgICAgICAgICAgICAgICAgICAgICAnTWFpbEZhY3Rvcnk6Om1ha2VXZWxjb21lTWFpbGVyU2VydmljZSgkdXNlciwgdHJ1ZSwgJwogICAgICAgICAgICAgICAgICAgICAgICAiKG9iamVjdClbJ3VybCcgPT4gJHVybF0pO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBpZiAoJHRoaXMtPm1ha2UoVXNlckNyZWF0ZVNlcnZpY2U6OmNsYXNzLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICdbJHVzZXIsICRtYWlsU2VydmljZV0pLT5ydW4oKSkge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAkdGhpcy0+c3Rkb3V0KFlpaTo6dCgndXN1YXJpbycsICdVc2VyIGhhcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICdiZWVuIGNyZWF0ZWRcJykgLiAiIVxcbiIsIENvbnNvbGU6OkZHX0dSRUVOKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIGlmIChudWxsICE9PSAkcm9sZSkge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgJHRoaXMtPmFzc2lnblJvbGUoJHVzZXIsICRyb2xlKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIH0gZWxzZSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICR0aGlzLT5zdGRvdXQoWWlpOjp0KCd1c3VhcmlvJywgJ1BsZWFzZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICdmaXggZm9sbG93aW5nIGVycm9yczpcJykgLiAiXFxuIiwgJwogICAgICAgICAgICAgICAgICAgICAgICAnQ29uc29sZTo6RkdfUkVEKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgZm9yZWFjaCAoJHVzZXItPmVycm9ycyBhcyAkZXJyb3JzKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICBmb3JlYWNoICgkZXJyb3JzIGFzICRlcnJvcikge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zdGRvdXQoJyAtICcgLiAkZXJyb3IgLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICciXFxuIiwgQ29uc29sZTo6RkdfUkVEKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYXNzaWduUm9sZShVc2VyICR1c2VyLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICckcm9sZSlcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAkYXV0aCA9IFlpaTo6JGFwcC0+Z2V0QXV0aE1hbmFnZXIoKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBpZiAoZmFsc2UgPT09ICRhdXRoKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICR0aGlzLT5zdGRvdXQoXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICBZaWk6OnQoXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgJ3VzdWFyaW8nLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgIFwnQ2Fubm90IGFzc2lnbiByb2xlICJ7MH0iIGFzIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICdBdXRoTWFuYWdlciBpcyBub3QgY29uZmlndXJlZCBvbiB5b3VyIGNvbnNvbGUgJwogICAgICAgICAgICAgICAgICAgICAgICAiYXBwbGljYXRpb24uJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAkcm9sZVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgKSAuICJcXG4iLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgQ29uc29sZTo6RkdfUkVEXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgfSBlbHNlIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgJHVzZXJSb2xlID0gJGF1dGgtPmdldFJvbGUoJHJvbGUpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICBpZiAobnVsbCA9PT0gJHVzZXJSb2xlKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAkdGhpcy0+c3Rkb3V0KFlpaTo6dCgndXN1YXJpbycsICdSb2xlICIKICAgICAgICAgICAgICAgICAgICAgICAgJyJ7MH0iIG5vdCBmb3VuZC4gQ3JlYXRpbmcgaXQuXCcsIFskcm9sZV0pIC4gIiFcXG4iLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICdDb25zb2xlOjpGR19HUkVFTik7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAkdXNlclJvbGUgPSAnCiAgICAgICAgICAgICAgICAgICAgICAgICckYXV0aC0+Y3JlYXRlUm9sZSgkcm9sZSk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAkYXV0aC0+YWRkKCR1c2VyUm9sZSk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgJGF1dGgtPmFzc2lnbigkdXNlclJvbGUsICR1c2VyLT5pZCk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICd9XHJcbicsCiAgICAgICAgICAgICdyZWNvZGUnOiAnPD9waHAgXHJcbicKICAgICAgICAgICAgICAgICAgICAgICIkY21kID0gJHJlbF9yb290LicvLi4vc3JjL3lpaTIvYWR2YW5jZWQveWlpICc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICckcmV0ID0gc2hlbGxfZXhlYygkY21kLiIgdXNlci9yb2xlIHdlYmFzb25lQGdtYWlsLmNvbSAnCiAgICAgICAgICAgICAgICAgICAgICAnQ291cnNlQSIpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAnJHJldCA9IHNoZWxsX2V4ZWMoJGNtZC4iIHVzZXIvcm9sZSB3ZWJhc29uZUBnbWFpbC5jb20gJwogICAgICAgICAgICAgICAgICAgICAgJ0NvdXJzZUIiKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgJyRyZXQgPSBzaGVsbF9leGVjKCRjbWQuIiB1c2VyL3JvbGUgd2ViYXNvbmVAZ21haWwuY29tICcKICAgICAgICAgICAgICAgICAgICAgICdDb3Vyc2VDIik7IFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAnPz4nLAogICAgICAgICAgICAndUZpbGUnOiAnJ30sCiAgICAgJ2VuLVVTJzogeydNeU1vZHVsZSc6ICdvbmVDb2x1bW4nLAogICAgICAgICAgICAgICAnTm90ZXMnOiAnJywKICAgICAgICAgICAgICAgJ1NsaWRlVHlwZSc6ICdDb2RlJywKICAgICAgICAgICAgICAgJ2FJbWFnZSc6ICcvZGVmYXVsdC9tZWRpYS9uYXY2aDAvcy9VSS9BMDAwMDAxMDI3MDAyMDAxL29uZUNvbHVtbi9pbWczLmpwZycsCiAgICAgICAgICAgICAgICdhSW1hZ2VUaHVtJzogJy9kZWZhdWx0L21lZGlhL25hdjZoMC9zL1VJL0EwMDAwMDEwMjcwMDIwMDEvb25lQ29sdW1uL3RodW0vaW1nMS5qcGcnLAogICAgICAgICAgICAgICAnYUxhYmVsJzogJ1JvbGUgQ29tbWFuZHMnLAogICAgICAgICAgICAgICAnYU1lZGlhJzogJycsCiAgICAgICAgICAgICAgICdhX2ZpbGUnOiAnJywKICAgICAgICAgICAgICAgJ2FkZENsYXNzJzogJycsCiAgICAgICAgICAgICAgICdhc3ZnZmlsZSc6ICc8c3ZnPjwvc3ZnPicsCiAgICAgICAgICAgICAgICdjb2RlJzogJycsCiAgICAgICAgICAgICAgICdjb2RlSW5jJzogJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnIyBjb250ZW50IGJldHdlZW4gc3R5bGVJbmMgdGFnIHdpbGwgYmUgYWRkIHRvIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZSB0aGUgY2xvc2luZyBoZWFkIHRhZ3NcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzdHlsZUluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8IS0tIHN0eWxlSW5jIEluY2x1ZGVkIGZyb20gX0lEXyAtLT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8c3R5bGU+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9zdHlsZT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvc3R5bGVJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjIGNvbnRlbnQgYmV0d2VlbiBzY3JpcHRJbmMgdGFnIHdpbGwgYmUgYWRkIHRvIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZSB0aGUgY2xvc2luZyBib2R5IHRhZ3NcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHRJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPCEtLSBzY3JpcHRJbmMgSW5jbHVkZWQgZnJvbSBfSURfIC0tPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9zY3JpcHQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8L3NjcmlwdEluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjIEVuZFxyXG4nLAogICAgICAgICAgICAgICAnY29sQkdJbWFnZSc6ICcvZGVmYXVsdC9tZWRpYS9uYXY2aDAvcy9VSS9BMDAwMDAxMDI3MDAyMDAxL29uZUNvbHVtbi9pbWc0LmpwZycsCiAgICAgICAgICAgICAgICdjb2xCR0ltYWdlV3JhcCc6ICcvZGVmYXVsdC9tZWRpYS9uYXY2aDAvcy9VSS9BMDAwMDAxMDI3MDAyMDAxL29uZUNvbHVtbi9pbWc1LmpwZycsCiAgICAgICAgICAgICAgICdjb21wb3NlckpTT04nOiAnJywKICAgICAgICAgICAgICAgJ2R5bmFtaWNCbG9jayc6ICcnLAogICAgICAgICAgICAgICAna2V5d29yZHMnOiAnJywKICAgICAgICAgICAgICAgJ3BocEZpbGUnOiAnPD9waHAgLyogJwogICAgICAgICAgICAgICAgICAgICAgICAgICdfZG9jcm9vdF8vLi4vc3JjL3lpaTIvYWR2YW5jZWQvdmVuZG9yLzJhbWlnb3MveWlpMi11c3VhcmlvL3NyYy9Vc2VyL0NvbW1hbmQvUm9sZUNvbnRyb2xsZXIucGhwICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcvKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSAyYW1pZ29zL3lpaTItdXN1YXJpbyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2plY3QuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgKiAoYykgMmFtaWdPUyEgPGh0dHA6Ly8yYW1pZ29zLnVzLz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sICcKICAgICAgICAgICAgICAgICAgICAgICAgICAncGxlYXNlIHZpZXdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgKiB0aGUgTElDRU5TRSBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZSBjb2RlLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAqL1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSBEYVxcVXNlclxcQ29tbWFuZDtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgRGFcXFVzZXJcXEZhY3RvcnlcXE1haWxGYWN0b3J5O1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBEYVxcVXNlclxcTW9kZWxcXFVzZXI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlIERhXFxVc2VyXFxTZXJ2aWNlXFxVc2VyQ3JlYXRlU2VydmljZTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgRGFcXFVzZXJcXFRyYWl0c1xcQ29udGFpbmVyQXdhcmVUcmFpdDtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgWWlpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSB5aWlcXGNvbnNvbGVcXENvbnRyb2xsZXI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlIHlpaVxcaGVscGVyc1xcQ29uc29sZTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdjbGFzcyBSb2xlQ29udHJvbGxlciBleHRlbmRzIENvbnRyb2xsZXJcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICd7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIHVzZSBDb250YWluZXJBd2FyZVRyYWl0O1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogVGhpcyBjb21tYW5kIGEgcm9sZSB0byBhIHVzZXIvZW1haWwuIElmIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXIgYWxyZWFkeSBoYXMgdGhlIHJvbGUgYXNzaWduLCBpdCB3aWxsIHNraXAuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkZW1haWwgICAgRW1haWxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRyb2xlICAgICBSb2xlIHRvIGFzc2lnbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyhtdXN0IGFscmVhZHkgZXhpc3QpXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEB0aHJvd3MgJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcXHlpaVxcYmFzZVxcSW52YWxpZENvbmZpZ0V4Y2VwdGlvblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgcHVibGljIGZ1bmN0aW9uIGFjdGlvbkluZGV4KCRlbWFpbCwgJHJvbGUpXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIHsgICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICR1c2VyID0gJwogICAgICAgICAgICAgICAgICAgICAgICAgICJZaWk6OiRhcHAtPmRiLT5jcmVhdGVDb21tYW5kKCdTRUxFQ1QgaWQsIHVzZXJuYW1lLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VtYWlsIEZST00gdXNlciAgIHdoZXJlICBlbWFpbCA9ICJcJy4kZW1haWwuXCciXCcpICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnLT5xdWVyeU9uZSgpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICNwcmludF9yKCRhbGxVc2Vycyk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAkYXV0aCA9IFlpaTo6JGFwcC0+Z2V0QXV0aE1hbmFnZXIoKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIGlmIChmYWxzZSA9PT0gJGF1dGgpIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAkdGhpcy0+c3Rkb3V0KFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICBZaWk6OnQoXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAndXN1YXJpbycsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICBcJ0Nhbm5vdCBhc3NpZ24gcm9sZSAiezB9IiBhcyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBBdXRoTWFuYWdlciBpcyBub3QgY29uZmlndXJlZCBvbiB5b3VyIGNvbnNvbGUgJwogICAgICAgICAgICAgICAgICAgICAgICAgICJhcHBsaWNhdGlvbi4nLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgJHJvbGVcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgKSAuICJcXG4iLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICBDb25zb2xlOjpGR19SRURcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICApOyBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIH0gZWxzZSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgJHVzZXJSb2xlID0gJGF1dGgtPmdldFJvbGUoJHJvbGUpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIGlmIChudWxsID09PSAkdXNlclJvbGUpIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgJHRoaXMtPnN0ZG91dChZaWk6OnQoJ3VzdWFyaW8nLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wnUm9sZSAiezB9IiBub3QgZm91bmQuIENyZWF0aW5nIGl0LlwnLCBbJHJvbGVdKSAuICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnIiFcXG4iLCBDb25zb2xlOjpGR19HUkVFTik7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICR1c2VyUm9sZSA9ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnJGF1dGgtPmNyZWF0ZVJvbGUoJHJvbGUpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAkYXV0aC0+YWRkKCR1c2VyUm9sZSk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgLy8gcHJpbnRfcigkdXNlclJvbGUpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgJGF1dGgtPmFzc2lnbigkdXNlclJvbGUsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAiJHVzZXJbJ2lkJ10pO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nLAogICAgICAgICAgICAgICAncGhwRmlsZUEnOiAnPD9waHAgLyogJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnX2RvY3Jvb3RfLy4uL3NyYy95aWkyL2FkdmFuY2VkL3ZlbmRvci8yYW1pZ29zL3lpaTItdXN1YXJpby9zcmMvVXNlci9Db21tYW5kL0Fzb25lQ29udHJvbGxlci5waHAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJy8qXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSAyYW1pZ29zL3lpaTItdXN1YXJpbyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9qZWN0LlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKiAoYykgMmFtaWdPUyEgPGh0dHA6Ly8yYW1pZ29zLnVzLz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAncGxlYXNlIHZpZXdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICogdGhlIExJQ0VOU0UgZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnc291cmNlIGNvZGUuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAqL1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlIERhXFxVc2VyXFxDb21tYW5kO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlIERhXFxVc2VyXFxGYWN0b3J5XFxNYWlsRmFjdG9yeTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlIERhXFxVc2VyXFxNb2RlbFxcVXNlcjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlIERhXFxVc2VyXFxTZXJ2aWNlXFxVc2VyQ3JlYXRlU2VydmljZTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlIERhXFxVc2VyXFxUcmFpdHNcXENvbnRhaW5lckF3YXJlVHJhaXQ7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBZaWk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSB5aWlcXGNvbnNvbGVcXENvbnRyb2xsZXI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSB5aWlcXGhlbHBlcnNcXENvbnNvbGU7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGFzcyBBc29uZUNvbnRyb2xsZXIgZXh0ZW5kcyBDb250cm9sbGVyXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3tcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIHVzZSBDb250YWluZXJBd2FyZVRyYWl0O1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8qKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogVGhpcyBjb21tYW5kIGNyZWF0ZXMgYSBuZXcgdXNlciBhY2NvdW50IGZvciAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdXZWJBc09uZS4gSWYgbm8gcGFzc3dvcmQgaXMgbm90IHNldCwgYW4gOC1jaGFyICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3N3b3JkIHdpbGwgYmUgZ2VuZXJhdGVkLiBBZnRlclxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogc2F2aW5nIHVzZXIgdG8gZGF0YWJhc2UsIHRoaXMgY29tbWFuZCB1c2VzICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21haWxlciBjb21wb25lbnQgdG8gc2VuZCBjcmVkZW50aWFscyAodXNlcm5hbWUgYW5kICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3N3b3JkKSB0byB1c2VyXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiB2aWEgZW1haWwuIEEgcm9sZSBjYW4gYmUgYWxzbyBhc3NpZ25lZCBidXQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnaXQgbXVzdCBleGlzdHMgcHJldmlvdXNseSBvbiB0aGUgZGF0YWJhc2UuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHBhcmFtIHN0cmluZyAgICAgICRlbWFpbCAgICBFbWFpbFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHBhcmFtIHN0cmluZyAgICAgICR1c2VybmFtZSBVc2VybmFtZVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRwYXNzd29yZCBUaGUgcGFzc3dvcmQuICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lmIG51bGwgaXQgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRyb2xlICAgICBSb2xlIHRvIGFzc2lnbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcobXVzdCBhbHJlYWR5IGV4aXN0KVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEB0aHJvd3MgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXFx5aWlcXGJhc2VcXEludmFsaWRDb25maWdFeGNlcHRpb25cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqL1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgcHVibGljIGZ1bmN0aW9uIGFjdGlvbkluZGV4KClcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgJGFsbFVzZXJzID0gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnWWlpOjokYXBwLT5kYi0+Y3JlYXRlQ29tbWFuZChcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAnU0VMRUNUIHUuaWQsIHUudXNlcm5hbWUsIHUuZW1haWwsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgImEuaXRlbV9uYW1lIEZST00nXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgLicgdXNlciBhcyB1IGlubmVyIGpvaW4gYXV0aF9hc3NpZ25tZW50IGEgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAid2hlcmUgYS51c2VyX2lkID0gdS5pZCcpIC0+cXVlcnlBbGwoKTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgI3ByaW50X3IoJGFsbFVzZXJzKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICN2YXJfZHVtcChhcnJheV9tYXAoZnVuY3Rpb24gKCRhKSB7ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgInJldHVybiBbJGFbJ3VzZXJuYW1lJ10sICRhWydlbWFpbCddXTsgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnfSwkYWxsVXNlcnMpKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgZWNobyAiXFxuXFxuIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgZm9yZWFjaCAoJGFsbFVzZXJzIGFzICR1KSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgZWNobyAnICAgICcsJHVbJ2lkJ10sJzonLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIkdVsndXNlcm5hbWUnXSwgJzonLCAkdVsnZW1haWwnXSwgJzonLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICckdVtcJ2l0ZW1fbmFtZVwnXSwgIlxcbiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgZWNobyAiXFxuXFxuIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnfScsCiAgICAgICAgICAgICAgICdwaHBGaWxlQic6ICc8P3BocCAvKiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdfZG9jcm9vdF8vLi4vc3JjL3lpaTIvYWR2YW5jZWQvdmVuZG9yLzJhbWlnb3MveWlpMi11c3VhcmlvL3NyYy9Vc2VyL0NvbW1hbmQvQ3JlYXRlQ29udHJvbGxlci5waHAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcvKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgMmFtaWdvcy95aWkyLXVzdWFyaW8gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvamVjdC5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICogKGMpIDJhbWlnT1MhIDxodHRwOi8vMmFtaWdvcy51cy8+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsZWFzZSB2aWV3XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAqIHRoZSBMSUNFTlNFIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZSBjb2RlLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSBEYVxcVXNlclxcQ29tbWFuZDtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBEYVxcVXNlclxcRmFjdG9yeVxcTWFpbEZhY3Rvcnk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBEYVxcVXNlclxcTW9kZWxcXFVzZXI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBEYVxcVXNlclxcU2VydmljZVxcVXNlckNyZWF0ZVNlcnZpY2U7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBEYVxcVXNlclxcVHJhaXRzXFxDb250YWluZXJBd2FyZVRyYWl0O1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgWWlpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgeWlpXFxjb25zb2xlXFxDb250cm9sbGVyO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgeWlpXFxoZWxwZXJzXFxDb25zb2xlO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xhc3MgQ3JlYXRlQ29udHJvbGxlciBleHRlbmRzIENvbnRyb2xsZXJcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAne1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgdXNlIENvbnRhaW5lckF3YXJlVHJhaXQ7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLyoqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBUaGlzIGNvbW1hbmQgY3JlYXRlcyBhIG5ldyB1c2VyIGFjY291bnQuIElmICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vIHBhc3N3b3JkIGlzIG5vdCBzZXQsIGFuIDgtY2hhciBwYXNzd29yZCB3aWxsIGJlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dlbmVyYXRlZC4gQWZ0ZXJcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIHNhdmluZyB1c2VyIHRvIGRhdGFiYXNlLCB0aGlzIGNvbW1hbmQgdXNlcyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYWlsZXIgY29tcG9uZW50IHRvIHNlbmQgY3JlZGVudGlhbHMgKHVzZXJuYW1lIGFuZCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzd29yZCkgdG8gdXNlclxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogdmlhIGVtYWlsLiBBIHJvbGUgY2FuIGJlIGFsc28gYXNzaWduZWQgYnV0ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2l0IG11c3QgZXhpc3RzIHByZXZpb3VzbHkgb24gdGhlIGRhdGFiYXNlLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkZW1haWwgICAgRW1haWxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkdXNlcm5hbWUgVXNlcm5hbWVcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkdXJsIHdlYnNpdGUgdXJsXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJHBhc3N3b3JkIFRoZSBwYXNzd29yZC4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnSWYgbnVsbCBpdCB3aWxsIGJlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJHJvbGUgICAgIFJvbGUgdG8gYXNzaWduICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhtdXN0IGFscmVhZHkgZXhpc3QpXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHRocm93cyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdcXHlpaVxcYmFzZVxcSW52YWxpZENvbmZpZ0V4Y2VwdGlvblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBwdWJsaWMgZnVuY3Rpb24gYWN0aW9uSW5kZXgoJGVtYWlsLCAkdXNlcm5hbWUsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR1cmwsICRwYXNzd29yZCA9IG51bGwsICRyb2xlID0gbnVsbClcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAvKiogQHZhciBVc2VyICR1c2VyICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJHVzZXIgPSAkdGhpcy0+bWFrZShcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgVXNlcjo6Y2xhc3MsXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIFtdLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICBbJ3NjZW5hcmlvJyA9PiAnY3JlYXRlJywgJ2VtYWlsJyA9PiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIkZW1haWwsICd1c2VybmFtZScgPT4gJHVzZXJuYW1lLCAncGFzc3dvcmQnID0+ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyRwYXNzd29yZF1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICApO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdcdCNwcmludF9yKCR1c2VyLT51c2VybmFtZSk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1x0I3JldHVybjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAkbWFpbFNlcnZpY2UgPSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdNYWlsRmFjdG9yeTo6bWFrZVdlbGNvbWVNYWlsZXJTZXJ2aWNlKCR1c2VyLCB0cnVlLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIob2JqZWN0KVsndXJsJyA9PiAkdXJsXSk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIGlmICgkdGhpcy0+bWFrZShVc2VyQ3JlYXRlU2VydmljZTo6Y2xhc3MsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1skdXNlciwgJG1haWxTZXJ2aWNlXSktPnJ1bigpKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICR0aGlzLT5zdGRvdXQoWWlpOjp0KCd1c3VhcmlvJywgJ1VzZXIgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFzIGJlZW4gY3JlYXRlZFwnKSAuICIhXFxuIiwgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc29sZTo6RkdfR1JFRU4pO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgaWYgKG51bGwgIT09ICRyb2xlKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAkdGhpcy0+YXNzaWduUm9sZSgkdXNlciwgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnJHJvbGUpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICB9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgfSBlbHNlIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgJHRoaXMtPnN0ZG91dChZaWk6OnQoJ3VzdWFyaW8nLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdcJ1BsZWFzZSBmaXggZm9sbG93aW5nIGVycm9yczpcJykgLiAiXFxuIiwgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc29sZTo6RkdfUkVEKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgZm9yZWFjaCAoJHVzZXItPmVycm9ycyBhcyAkZXJyb3JzKSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICd7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICBmb3JlYWNoICgkZXJyb3JzIGFzICRlcnJvcikge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zdGRvdXQoJyAtICcgLiAkZXJyb3IgLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICciXFxuIiwgQ29uc29sZTo6RkdfUkVEKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYXNzaWduUm9sZShVc2VyICR1c2VyLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICckcm9sZSlcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAkYXV0aCA9IFlpaTo6JGFwcC0+Z2V0QXV0aE1hbmFnZXIoKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBpZiAoZmFsc2UgPT09ICRhdXRoKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICR0aGlzLT5zdGRvdXQoXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICBZaWk6OnQoXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgJ3VzdWFyaW8nLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgIFwnQ2Fubm90IGFzc2lnbiByb2xlICJ7MH0iIGFzICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBBdXRoTWFuYWdlciBpcyBub3QgY29uZmlndXJlZCBvbiB5b3VyIGNvbnNvbGUgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAiYXBwbGljYXRpb24uJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAkcm9sZVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgKSAuICJcXG4iLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgQ29uc29sZTo6RkdfUkVEXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgfSBlbHNlIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgJHVzZXJSb2xlID0gJGF1dGgtPmdldFJvbGUoJHJvbGUpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICBpZiAobnVsbCA9PT0gJHVzZXJSb2xlKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAkdGhpcy0+c3Rkb3V0KFlpaTo6dCgndXN1YXJpbycsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wnUm9sZSAiezB9IiBub3QgZm91bmQuIENyZWF0aW5nIGl0LlwnLCBbJHJvbGVdKSAuICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyIhXFxuIiwgQ29uc29sZTo6RkdfR1JFRU4pO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgJHVzZXJSb2xlID0gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnJGF1dGgtPmNyZWF0ZVJvbGUoJHJvbGUpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgJGF1dGgtPmFkZCgkdXNlclJvbGUpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICB9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICRhdXRoLT5hc3NpZ24oJHVzZXJSb2xlLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICckdXNlci0+aWQpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnfVxyXG4nLAogICAgICAgICAgICAgICAncmVjb2RlJzogJzw/cGhwIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAiJGNtZCA9ICRyZWxfcm9vdC4nLy4uL3NyYy95aWkyL2FkdmFuY2VkL3lpaSAnO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAnJHJldCA9IHNoZWxsX2V4ZWMoJGNtZC4iIHVzZXIvcm9sZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAnd2ViYXNvbmVAZ21haWwuY29tIENvdXJzZUEiKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgJyRyZXQgPSBzaGVsbF9leGVjKCRjbWQuIiB1c2VyL3JvbGUgJwogICAgICAgICAgICAgICAgICAgICAgICAgJ3dlYmFzb25lQGdtYWlsLmNvbSBDb3Vyc2VCIik7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICckcmV0ID0gc2hlbGxfZXhlYygkY21kLiIgdXNlci9yb2xlICcKICAgICAgICAgICAgICAgICAgICAgICAgICd3ZWJhc29uZUBnbWFpbC5jb20gQ291cnNlQyIpOyBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgJz8+JywKICAgICAgICAgICAgICAgJ3VGaWxlJzogJyd9fSwKIDQ6IHsnZW4nOiB7J05vdGVzJzogJycsCiAgICAgICAgICAgICdTbGlkZVR5cGUnOiAnQ29kZUluYycsCiAgICAgICAgICAgICdhTGFiZWwnOiAnRm9yIHJvbGUgbWFpbCcsCiAgICAgICAgICAgICdhX2ZpbGUnOiAnJywKICAgICAgICAgICAgJ2FkZENsYXNzJzogJycsCiAgICAgICAgICAgICdhc3ZnZmlsZSc6ICc8c3ZnPjwvc3ZnPicsCiAgICAgICAgICAgICdjb2RlJzogJycsCiAgICAgICAgICAgICdjb2RlSW5jJzogJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnIyBjb250ZW50IGJldHdlZW4gc3R5bGVJbmMgdGFnIHdpbGwgYmUgYWRkIHRvIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZSB0aGUgY2xvc2luZyBoZWFkIHRhZ3NcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzxzdHlsZUluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8IS0tIHN0eWxlSW5jIEluY2x1ZGVkIGZyb20gX0lEXyAtLT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8c3R5bGU+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPC9zdHlsZT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwvc3R5bGVJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjIGNvbnRlbnQgYmV0d2VlbiBzY3JpcHRJbmMgdGFnIHdpbGwgYmUgYWRkIHRvIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZSB0aGUgY2xvc2luZyBib2R5IHRhZ3NcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHRJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPCEtLSBzY3JpcHRJbmMgSW5jbHVkZWQgZnJvbSBfSURfIC0tPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPC9zY3JpcHQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8L3NjcmlwdEluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjIEVuZFxyXG4nLAogICAgICAgICAgICAnY29sQkdJbWFnZSc6ICcvZGVmYXVsdC9tZWRpYS9uYXY2aDAvcy9VSS9BMDAwMDAxMDI3MDAyMDAxL29uZUNvbHVtbi9pbWc2LmpwZycsCiAgICAgICAgICAgICdjb2xCR0ltYWdlV3JhcCc6ICcvZGVmYXVsdC9tZWRpYS9uYXY2aDAvcy9VSS9BMDAwMDAxMDI3MDAyMDAxL29uZUNvbHVtbi9pbWc3LmpwZycsCiAgICAgICAgICAgICdjb21wb3NlckpTT04nOiAnJywKICAgICAgICAgICAgJ2R5bmFtaWNCbG9jayc6ICcnLAogICAgICAgICAgICAna2V5d29yZHMnOiAnJywKICAgICAgICAgICAgJ3BocEZpbGUnOiAnJywKICAgICAgICAgICAgJ3BocEZpbGVBJzogJzw/cGhwIC8qICcKICAgICAgICAgICAgICAgICAgICAgICAgJ19kb2Nyb290Xy8uLi9zcmMveWlpMi9hZHZhbmNlZC92ZW5kb3IvMmFtaWdvcy95aWkyLXVzdWFyaW8vc3JjL1VzZXIvcmVzb3VyY2VzL3ZpZXdzL21haWwvd2VsY29tZS5waHAgJwogICAgICAgICAgICAgICAgICAgICAgICAnKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcvKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgMmFtaWdvcy95aWkyLXVzdWFyaW8gJwogICAgICAgICAgICAgICAgICAgICAgICAncHJvamVjdC5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICogKGMpIDJhbWlnT1MhIDxodHRwOi8vMmFtaWdvcy51cy8+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sICcKICAgICAgICAgICAgICAgICAgICAgICAgJ3BsZWFzZSB2aWV3XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAqIHRoZSBMSUNFTlNFIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzICcKICAgICAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZSBjb2RlLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSB5aWlcXGhlbHBlcnNcXEh0bWw7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcvKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICogQHZhciBcXERhXFxVc2VyXFxNb2R1bGUgICAgICAkbW9kdWxlXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAqIEB2YXIgXFxEYVxcVXNlclxcTW9kZWxcXFVzZXIgICR1c2VyXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAqIEB2YXIgXFxEYVxcVXNlclxcTW9kZWxcXFRva2VuICR0b2tlblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgKiBAdmFyIGJvb2wgICAgICAgICAgICAgICAgICRzaG93UGFzc3dvcmRcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICc/PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICc8cCBzdHlsZT0iZm9udC1mYW1pbHk6IFwnSGVsdmV0aWNhIE5ldWVcJywgJwogICAgICAgICAgICAgICAgICAgICAgICAiJ0hlbHZldGljYScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogIgogICAgICAgICAgICAgICAgICAgICAgICAnMTRweDsgbGluZS1oZWlnaHQ6IDEuNjsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbWFyZ2luOiAnCiAgICAgICAgICAgICAgICAgICAgICAgICcwIDAgMTBweDsgcGFkZGluZzogMDsiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgPD89IFlpaTo6dCgndXN1YXJpbycsICdIZWxsbycpID8+LFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICc8L3A+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICc8cCBzdHlsZT0iZm9udC1mYW1pbHk6IFwnSGVsdmV0aWNhIE5ldWVcJywgJwogICAgICAgICAgICAgICAgICAgICAgICAiJ0hlbHZldGljYScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogIgogICAgICAgICAgICAgICAgICAgICAgICAnMTRweDsgbGluZS1oZWlnaHQ6IDEuNjsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbWFyZ2luOiAnCiAgICAgICAgICAgICAgICAgICAgICAgICcwIDAgMTBweDsgcGFkZGluZzogMDsiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgPD89IFlpaTo6dCgndXN1YXJpbycsICdZb3VyIGFjY291bnQgb24gezB9IGhhcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICJiZWVuIGNyZWF0ZWQnLCBZaWk6OiRhcHAtPm5hbWUpID8+LlxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICcgPC9wPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICc8cD5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgIDw/cGhwIGlmICgkc2hvd1Bhc3N3b3JkIHx8ICcKICAgICAgICAgICAgICAgICAgICAgICAgJyRtb2R1bGUtPmdlbmVyYXRlUGFzc3dvcmRzKTogPz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgPD89IFlpaTo6dCgndXN1YXJpbycsICdVc2VybmFtZScpID8+OiAiCiAgICAgICAgICAgICAgICAgICAgICAgICc8c3Ryb25nPjw/PSR1c2VyLT51c2VybmFtZSA/PiA8L3N0cm9uZz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnPC9wPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICc8cD5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICA8Pz0gWWlpOjp0KCd1c3VhcmlvJywgJ1Bhc3N3b3JkJykgPz46ICIKICAgICAgICAgICAgICAgICAgICAgICAgJzxzdHJvbmc+PD89ICR1c2VyLT5wYXNzd29yZCA/Pjwvc3Ryb25nPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgPD9waHAgZW5kaWYgPz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJzwvcD5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJzw/cGhwIGlmICgkdG9rZW4gIT09IG51bGwpOiA/PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgPHAgc3R5bGU9ImZvbnQtZmFtaWx5OiBcJ0hlbHZldGljYSBOZXVlXCcsICcKICAgICAgICAgICAgICAgICAgICAgICAgIidIZWx2ZXRpY2EnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6ICIKICAgICAgICAgICAgICAgICAgICAgICAgJzE0cHg7IGxpbmUtaGVpZ2h0OiAxLjY7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IG1hcmdpbjogJwogICAgICAgICAgICAgICAgICAgICAgICAnMCAwIDEwcHg7IHBhZGRpbmc6IDA7Ij5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICA8Pz0gWWlpOjp0KCd1c3VhcmlvJywgJ1RvIGxvZ2luIGluLCBwbGVhc2UgIgogICAgICAgICAgICAgICAgICAgICAgICAiY2xpY2sgdGhlIGxpbmsgYmVsb3cnKSA/Pi5cclxuIgogICAgICAgICAgICAgICAgICAgICAgICAnICAgIDwvcD5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgIDxwIHN0eWxlPSJmb250LWZhbWlseTogXCdIZWx2ZXRpY2EgTmV1ZVwnLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICInSGVsdmV0aWNhJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICcxNHB4OyBsaW5lLWhlaWdodDogMS42OyBmb250LXdlaWdodDogbm9ybWFsOyBtYXJnaW46ICcKICAgICAgICAgICAgICAgICAgICAgICAgJzAgMCAxMHB4OyBwYWRkaW5nOiAwOyI+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgPD89IEh0bWw6OmEoSHRtbDo6ZW5jb2RlKCR0b2tlbi0+dXJsKSwgJwogICAgICAgICAgICAgICAgICAgICAgICAnJHRva2VuLT51cmwpOyA/PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgPC9wPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgPHAgc3R5bGU9ImZvbnQtZmFtaWx5OiBcJ0hlbHZldGljYSBOZXVlXCcsICcKICAgICAgICAgICAgICAgICAgICAgICAgIidIZWx2ZXRpY2EnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6ICIKICAgICAgICAgICAgICAgICAgICAgICAgJzE0cHg7IGxpbmUtaGVpZ2h0OiAxLjY7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IG1hcmdpbjogJwogICAgICAgICAgICAgICAgICAgICAgICAnMCAwIDEwcHg7IHBhZGRpbmc6IDA7Ij5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICA8Pz0gWWlpOjp0KCd1c3VhcmlvJywgJ0lmIHlvdSBjYW5ub3QgY2xpY2sgIgogICAgICAgICAgICAgICAgICAgICAgICAndGhlIGxpbmssIHBsZWFzZSB0cnkgcGFzdGluZyB0aGUgdGV4dCBpbnRvIHlvdXIgJwogICAgICAgICAgICAgICAgICAgICAgICAiYnJvd3NlcicpID8+LlxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgPC9wPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICc8P3BocCBlbmRpZiA/PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnPHAgc3R5bGU9ImZvbnQtZmFtaWx5OiBcJ0hlbHZldGljYSBOZXVlXCcsICcKICAgICAgICAgICAgICAgICAgICAgICAgIidIZWx2ZXRpY2EnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6ICIKICAgICAgICAgICAgICAgICAgICAgICAgJzE0cHg7IGxpbmUtaGVpZ2h0OiAxLjY7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IG1hcmdpbjogJwogICAgICAgICAgICAgICAgICAgICAgICAnMCAwIDEwcHg7IHBhZGRpbmc6IDA7Ij5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAiICAgIDw/PSBZaWk6OnQoJ3VzdWFyaW8nLCAnSWYgeW91IGRpZCBub3QgbWFrZSB0aGlzICIKICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVlc3QgeW91IGNhbiBpZ25vcmUgdGhpcyBlbWFpbCcpID8+LlxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICc8L3A+XHJcbicsCiAgICAgICAgICAgICdwaHBGaWxlQic6ICc8P3BocCAgLyogJwogICAgICAgICAgICAgICAgICAgICAgICAnX2RvY3Jvb3RfLy4uL3NyYy95aWkyL2FkdmFuY2VkL3ZlbmRvci8yYW1pZ29zL3lpaTItdXN1YXJpby9zcmMvVXNlci9GYWN0b3J5L01haWxGYWN0b3J5LnBocCAnCiAgICAgICAgICAgICAgICAgICAgICAgICcqL1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnLypcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIDJhbWlnb3MveWlpMi11c3VhcmlvICcKICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2plY3QuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAqIChjKSAyYW1pZ09TISA8aHR0cDovLzJhbWlnb3MudXMvPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICdwbGVhc2Ugdmlld1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgKiB0aGUgTElDRU5TRSBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyAnCiAgICAgICAgICAgICAgICAgICAgICAgICdzb3VyY2UgY29kZS5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lc3BhY2UgRGFcXFVzZXJcXEZhY3Rvcnk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgRGFcXFVzZXJcXEV2ZW50XFxNYWlsRXZlbnQ7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBEYVxcVXNlclxcTW9kZWxcXFRva2VuO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgRGFcXFVzZXJcXE1vZGVsXFxVc2VyO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgRGFcXFVzZXJcXE1vZHVsZTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAndXNlIERhXFxVc2VyXFxTZXJ2aWNlXFxNYWlsU2VydmljZTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAndXNlIFlpaTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAndXNlIHlpaVxcYmFzZVxcSW52YWxpZENvbmZpZ0V4Y2VwdGlvbjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzIE1haWxGYWN0b3J5XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ3tcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8qKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHBhcmFtIFVzZXIgJHVzZXJcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEBwYXJhbSBib29sICRzaG93UGFzc3dvcmRcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAdGhyb3dzIEludmFsaWRDb25maWdFeGNlcHRpb25cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEByZXR1cm4gTWFpbFNlcnZpY2VcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqL1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICdtYWtlV2VsY29tZU1haWxlclNlcnZpY2UoVXNlciAkdXNlciwgJHNob3dQYXNzd29yZCA9ICcKICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhbHNlLCAkdG9rZW4gPSBudWxsKVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIC8qKiBAdmFyIE1vZHVsZSAkbW9kdWxlICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgJG1vZHVsZSA9IFlpaTo6JGFwcC0+Z2V0TW9kdWxlKCd1c2VyJyk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJHRvID0gJHVzZXItPmVtYWlsO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICRmcm9tID0gJG1vZHVsZS0+bWFpbFBhcmFtc1snZnJvbUVtYWlsJ107XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJHN1YmplY3QgPSAnCiAgICAgICAgICAgICAgICAgICAgICAgICIkbW9kdWxlLT5tYWlsUGFyYW1zWyd3ZWxjb21lTWFpbFN1YmplY3QnXTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAkcGFyYW1zID0gW1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAndXNlcicgPT4gJHVzZXIsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICd0b2tlbicgPT4gJHRva2VuLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAnbW9kdWxlJyA9PiAkbW9kdWxlLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAnc2hvd1Bhc3N3b3JkJyA9PiAkc2hvd1Bhc3N3b3JkLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIF07XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIHJldHVybiAnCiAgICAgICAgICAgICAgICAgICAgICAgICdzdGF0aWM6Om1ha2VNYWlsZXJTZXJ2aWNlKE1haWxFdmVudDo6VFlQRV9XRUxDT01FLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICIkZnJvbSwgJHRvLCAkc3ViamVjdCwgJ3dlbGNvbWUnLCAkcGFyYW1zKTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAnICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEBwYXJhbSBzdHJpbmcgJGVtYWlsXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAcGFyYW0gVG9rZW4gICR0b2tlblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEB0aHJvd3MgSW52YWxpZENvbmZpZ0V4Y2VwdGlvblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHJldHVybiBNYWlsU2VydmljZVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uICcKICAgICAgICAgICAgICAgICAgICAgICAgJ21ha2VSZWNvdmVyeU1haWxlclNlcnZpY2UoJGVtYWlsLCBUb2tlbiAkdG9rZW4gPSAnCiAgICAgICAgICAgICAgICAgICAgICAgICdudWxsKVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIC8qKiBAdmFyIE1vZHVsZSAkbW9kdWxlICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgJG1vZHVsZSA9IFlpaTo6JGFwcC0+Z2V0TW9kdWxlKCd1c2VyJyk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJHRvID0gJGVtYWlsO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICRmcm9tID0gJG1vZHVsZS0+bWFpbFBhcmFtc1snZnJvbUVtYWlsJ107XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJHN1YmplY3QgPSAnCiAgICAgICAgICAgICAgICAgICAgICAgICIkbW9kdWxlLT5tYWlsUGFyYW1zWydyZWNvdmVyeU1haWxTdWJqZWN0J107XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJHBhcmFtcyA9IFtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgJ3VzZXInID0+ICR0b2tlbiAmJiAkdG9rZW4tPnVzZXIgPyAiCiAgICAgICAgICAgICAgICAgICAgICAgICckdG9rZW4tPnVzZXIgOiBudWxsLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAndG9rZW4nID0+ICR0b2tlbixcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBdO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICByZXR1cm4gJwogICAgICAgICAgICAgICAgICAgICAgICAnc3RhdGljOjptYWtlTWFpbGVyU2VydmljZShNYWlsRXZlbnQ6OlRZUEVfUkVDT1ZFUlksICcKICAgICAgICAgICAgICAgICAgICAgICAgIiRmcm9tLCAkdG8sICRzdWJqZWN0LCAncmVjb3ZlcnknLCAkcGFyYW1zKTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAnICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEBwYXJhbSBVc2VyICAgICAgICR1c2VyXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAcGFyYW0gVG9rZW58bnVsbCAkdG9rZW5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAdGhyb3dzIEludmFsaWRDb25maWdFeGNlcHRpb25cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEByZXR1cm4gTWFpbFNlcnZpY2VcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqL1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICdtYWtlQ29uZmlybWF0aW9uTWFpbGVyU2VydmljZShVc2VyICR1c2VyLCBUb2tlbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICckdG9rZW4gPSBudWxsKVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIC8qKiBAdmFyIE1vZHVsZSAkbW9kdWxlICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgJG1vZHVsZSA9IFlpaTo6JGFwcC0+Z2V0TW9kdWxlKCd1c2VyJyk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJHRvID0gJHVzZXItPmVtYWlsO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICRmcm9tID0gJG1vZHVsZS0+bWFpbFBhcmFtc1snZnJvbUVtYWlsJ107XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJHN1YmplY3QgPSAnCiAgICAgICAgICAgICAgICAgICAgICAgICIkbW9kdWxlLT5tYWlsUGFyYW1zWydjb25maXJtYXRpb25NYWlsU3ViamVjdCddO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICRwYXJhbXMgPSBbXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICd1c2VyJyA9PiAkdG9rZW4gJiYgJHRva2VuLT51c2VyID8gIgogICAgICAgICAgICAgICAgICAgICAgICAnJHRva2VuLT51c2VyIDogbnVsbCxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgJ3Rva2VuJyA9PiAkdG9rZW4sXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgXTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgcmV0dXJuICcKICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXRpYzo6bWFrZU1haWxlclNlcnZpY2UoTWFpbEV2ZW50OjpUWVBFX0NPTkZJUk0sICcKICAgICAgICAgICAgICAgICAgICAgICAgIiRmcm9tLCAkdG8sICRzdWJqZWN0LCAnY29uZmlybWF0aW9uJywgJHBhcmFtcyk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLyoqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAcGFyYW0gVXNlciAgJHVzZXJcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEBwYXJhbSBUb2tlbiAkdG9rZW5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAdGhyb3dzIEludmFsaWRDb25maWdFeGNlcHRpb25cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEByZXR1cm4gTWFpbFNlcnZpY2VcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqL1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICdtYWtlUmVjb25maXJtYXRpb25NYWlsZXJTZXJ2aWNlKFVzZXIgJHVzZXIsIFRva2VuICcKICAgICAgICAgICAgICAgICAgICAgICAgJyR0b2tlbilcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAvKiogQHZhciBNb2R1bGUgJG1vZHVsZSAqL1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICRtb2R1bGUgPSBZaWk6OiRhcHAtPmdldE1vZHVsZSgndXNlcicpO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICR0byA9ICR0b2tlbi0+dHlwZSA9PT0gJwogICAgICAgICAgICAgICAgICAgICAgICAnVG9rZW46OlRZUEVfQ09ORklSTV9ORVdfRU1BSUxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgPyAkdXNlci0+dW5jb25maXJtZWRfZW1haWxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgOiAkdXNlci0+ZW1haWw7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICRmcm9tID0gJG1vZHVsZS0+bWFpbFBhcmFtc1snZnJvbUVtYWlsJ107XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJHN1YmplY3QgPSAnCiAgICAgICAgICAgICAgICAgICAgICAgICIkbW9kdWxlLT5tYWlsUGFyYW1zWydyZWNvbmZpcm1hdGlvbk1haWxTdWJqZWN0J107XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJHBhcmFtcyA9IFtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgJ3VzZXInID0+ICR0b2tlbiAmJiAkdG9rZW4tPnVzZXIgPyAiCiAgICAgICAgICAgICAgICAgICAgICAgICckdG9rZW4tPnVzZXIgOiBudWxsLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAndG9rZW4nID0+ICR0b2tlbixcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBdO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICByZXR1cm4gJwogICAgICAgICAgICAgICAgICAgICAgICAnc3RhdGljOjptYWtlTWFpbGVyU2VydmljZShNYWlsRXZlbnQ6OlRZUEVfUkVDT05GSVJNLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICIkZnJvbSwgJHRvLCAkc3ViamVjdCwgJ3JlY29uZmlybWF0aW9uJywgJHBhcmFtcyk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLyoqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBCdWlsZHMgYSBNYWlsZXJTZXJ2aWNlLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgJHR5cGVcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEBwYXJhbSBzdHJpbmd8YXJyYXl8XFxDbG9zdXJlICRmcm9tXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICR0b1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAkc3ViamVjdFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAkdmlld1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAkcGFyYW1zXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHRocm93cyBJbnZhbGlkQ29uZmlnRXhjZXB0aW9uXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAcmV0dXJuIE1haWxTZXJ2aWNlXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1ha2VNYWlsZXJTZXJ2aWNlKCR0eXBlLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICckZnJvbSwgJHRvLCAkc3ViamVjdCwgJHZpZXcsICRwYXJhbXMgPSBbXSlcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBpZiAoJGZyb20gaW5zdGFuY2VvZiBcXENsb3N1cmUpIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgJGZyb20gPSAkZnJvbSgkdHlwZSk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIC8qKiBAbm9pbnNwZWN0aW9uICcKICAgICAgICAgICAgICAgICAgICAgICAgJ1BocEluY29tcGF0aWJsZVJldHVyblR5cGVJbnNwZWN0aW9uICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgcmV0dXJuIFlpaTo6JGNvbnRhaW5lci0+Z2V0KFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICBNYWlsU2VydmljZTo6Y2xhc3MsXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIFskdHlwZSwgJGZyb20sICR0bywgJHN1YmplY3QsICR2aWV3LCAnCiAgICAgICAgICAgICAgICAgICAgICAgICckcGFyYW1zLCBZaWk6OiRhcHAtPmdldE1haWxlcigpXVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ31cclxuJ30sCiAgICAgJ2VuLVVTJzogeydNeU1vZHVsZSc6ICdvbmVDb2x1bW4nLAogICAgICAgICAgICAgICAnTm90ZXMnOiAnJywKICAgICAgICAgICAgICAgJ1NsaWRlVHlwZSc6ICdDb2RlSW5jJywKICAgICAgICAgICAgICAgJ2FMYWJlbCc6ICdGb3Igcm9sZSBtYWlsJywKICAgICAgICAgICAgICAgJ2FfZmlsZSc6ICcnLAogICAgICAgICAgICAgICAnYWRkQ2xhc3MnOiAnJywKICAgICAgICAgICAgICAgJ2FzdmdmaWxlJzogJzxzdmc+PC9zdmc+JywKICAgICAgICAgICAgICAgJ2NvZGUnOiAnJywKICAgICAgICAgICAgICAgJ2NvZGVJbmMnOiAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjIGNvbnRlbnQgYmV0d2VlbiBzdHlsZUluYyB0YWcgd2lsbCBiZSBhZGQgdG8gdGhlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnYmVmb3JlIHRoZSBjbG9zaW5nIGhlYWQgdGFnc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPHN0eWxlSW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwhLS0gc3R5bGVJbmMgSW5jbHVkZWQgZnJvbSBfSURfIC0tPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzdHlsZT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8L3N0eWxlPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9zdHlsZUluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyMgY29udGVudCBiZXR3ZWVuIHNjcmlwdEluYyB0YWcgd2lsbCBiZSBhZGQgdG8gdGhlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnYmVmb3JlIHRoZSBjbG9zaW5nIGJvZHkgdGFnc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPHNjcmlwdEluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8IS0tIHNjcmlwdEluYyBJbmNsdWRlZCBmcm9tIF9JRF8gLS0+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPHNjcmlwdD5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8L3NjcmlwdD5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvc2NyaXB0SW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyMgRW5kXHJcbicsCiAgICAgICAgICAgICAgICdjb2xCR0ltYWdlJzogJy9kZWZhdWx0L21lZGlhL25hdjZoMC9zL1VJL0EwMDAwMDEwMjcwMDIwMDEvb25lQ29sdW1uL2ltZzYuanBnJywKICAgICAgICAgICAgICAgJ2NvbEJHSW1hZ2VXcmFwJzogJy9kZWZhdWx0L21lZGlhL25hdjZoMC9zL1VJL0EwMDAwMDEwMjcwMDIwMDEvb25lQ29sdW1uL2ltZzcuanBnJywKICAgICAgICAgICAgICAgJ2NvbXBvc2VySlNPTic6ICcnLAogICAgICAgICAgICAgICAnZHluYW1pY0Jsb2NrJzogJycsCiAgICAgICAgICAgICAgICdrZXl3b3Jkcyc6ICcnLAogICAgICAgICAgICAgICAncGhwRmlsZSc6ICcnLAogICAgICAgICAgICAgICAncGhwRmlsZUEnOiAnPD9waHAgLyogJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnX2RvY3Jvb3RfLy4uL3NyYy95aWkyL2FkdmFuY2VkL3ZlbmRvci8yYW1pZ29zL3lpaTItdXN1YXJpby9zcmMvVXNlci9yZXNvdXJjZXMvdmlld3MvbWFpbC93ZWxjb21lLnBocCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcqL1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJy8qXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSAyYW1pZ29zL3lpaTItdXN1YXJpbyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9qZWN0LlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKiAoYykgMmFtaWdPUyEgPGh0dHA6Ly8yYW1pZ29zLnVzLz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAncGxlYXNlIHZpZXdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICogdGhlIExJQ0VOU0UgZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnc291cmNlIGNvZGUuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAqL1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlIHlpaVxcaGVscGVyc1xcSHRtbDtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJy8qKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKiBAdmFyIFxcRGFcXFVzZXJcXE1vZHVsZSAgICAgICRtb2R1bGVcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICogQHZhciBcXERhXFxVc2VyXFxNb2RlbFxcVXNlciAgJHVzZXJcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICogQHZhciBcXERhXFxVc2VyXFxNb2RlbFxcVG9rZW4gJHRva2VuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAqIEB2YXIgYm9vbCAgICAgICAgICAgICAgICAgJHNob3dQYXNzd29yZFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJz8+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxwIHN0eWxlPSJmb250LWZhbWlseTogXCdIZWx2ZXRpY2EgTmV1ZVwnLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICInSGVsdmV0aWNhJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1zaXplOiAxNHB4OyBsaW5lLWhlaWdodDogMS42OyBmb250LXdlaWdodDogJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsOyBtYXJnaW46IDAgMCAxMHB4OyBwYWRkaW5nOiAwOyI+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICA8Pz0gWWlpOjp0KCd1c3VhcmlvJywgJ0hlbGxvJykgPz4sXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvcD5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxwIHN0eWxlPSJmb250LWZhbWlseTogXCdIZWx2ZXRpY2EgTmV1ZVwnLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICInSGVsdmV0aWNhJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1zaXplOiAxNHB4OyBsaW5lLWhlaWdodDogMS42OyBmb250LXdlaWdodDogJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsOyBtYXJnaW46IDAgMCAxMHB4OyBwYWRkaW5nOiAwOyI+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICA8Pz0gWWlpOjp0KCd1c3VhcmlvJywgJ1lvdXIgYWNjb3VudCBvbiB7MH0gaGFzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlZW4gY3JlYXRlZCcsIFlpaTo6JGFwcC0+bmFtZSkgPz4uXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyA8L3A+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxwPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgPD9waHAgaWYgKCRzaG93UGFzc3dvcmQgfHwgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnJG1vZHVsZS0+Z2VuZXJhdGVQYXNzd29yZHMpOiA/PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICA8Pz0gWWlpOjp0KCd1c3VhcmlvJywgJ1VzZXJuYW1lJykgPz46ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzdHJvbmc+PD89JHVzZXItPnVzZXJuYW1lID8+IDwvc3Ryb25nPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICc8L3A+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxwPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIDw/PSBZaWk6OnQoJ3VzdWFyaW8nLCAnUGFzc3dvcmQnKSA/PjogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnPHN0cm9uZz48Pz0gJHVzZXItPnBhc3N3b3JkID8+PC9zdHJvbmc+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICA8P3BocCBlbmRpZiA/PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9wPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnPD9waHAgaWYgKCR0b2tlbiAhPT0gbnVsbCk6ID8+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICA8cCBzdHlsZT0iZm9udC1mYW1pbHk6IFwnSGVsdmV0aWNhIE5ldWVcJywgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAiJ0hlbHZldGljYScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDEuNjsgZm9udC13ZWlnaHQ6ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vcm1hbDsgbWFyZ2luOiAwIDAgMTBweDsgcGFkZGluZzogMDsiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIDw/PSBZaWk6OnQoJ3VzdWFyaW8nLCAnVG8gbG9naW4gaW4sIHBsZWFzZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbGljayB0aGUgbGluayBiZWxvdycpID8+LlxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgPC9wPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgPHAgc3R5bGU9ImZvbnQtZmFtaWx5OiBcJ0hlbHZldGljYSBOZXVlXCcsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIidIZWx2ZXRpY2EnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxLjY7IGZvbnQtd2VpZ2h0OiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdub3JtYWw7IG1hcmdpbjogMCAwIDEwcHg7IHBhZGRpbmc6IDA7Ij5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICA8Pz0gSHRtbDo6YShIdG1sOjplbmNvZGUoJHRva2VuLT51cmwpLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICckdG9rZW4tPnVybCk7ID8+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICA8L3A+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICA8cCBzdHlsZT0iZm9udC1mYW1pbHk6IFwnSGVsdmV0aWNhIE5ldWVcJywgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAiJ0hlbHZldGljYScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDEuNjsgZm9udC13ZWlnaHQ6ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vcm1hbDsgbWFyZ2luOiAwIDAgMTBweDsgcGFkZGluZzogMDsiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIDw/PSBZaWk6OnQoJ3VzdWFyaW8nLCAnSWYgeW91IGNhbm5vdCBjbGljayAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgbGluaywgcGxlYXNlIHRyeSBwYXN0aW5nIHRoZSB0ZXh0IGludG8geW91ciAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJicm93c2VyJykgPz4uXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICA8L3A+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJzw/cGhwIGVuZGlmID8+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICc8cCBzdHlsZT0iZm9udC1mYW1pbHk6IFwnSGVsdmV0aWNhIE5ldWVcJywgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAiJ0hlbHZldGljYScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDEuNjsgZm9udC13ZWlnaHQ6ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vcm1hbDsgbWFyZ2luOiAwIDAgMTBweDsgcGFkZGluZzogMDsiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgPD89IFlpaTo6dCgndXN1YXJpbycsICdJZiB5b3UgZGlkIG5vdCBtYWtlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoaXMgcmVxdWVzdCB5b3UgY2FuIGlnbm9yZSB0aGlzIGVtYWlsJykgPz4uXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvcD5cclxuJywKICAgICAgICAgICAgICAgJ3BocEZpbGVCJzogJzw/cGhwICAvKiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdfZG9jcm9vdF8vLi4vc3JjL3lpaTIvYWR2YW5jZWQvdmVuZG9yLzJhbWlnb3MveWlpMi11c3VhcmlvL3NyYy9Vc2VyL0ZhY3RvcnkvTWFpbEZhY3RvcnkucGhwICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcvKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgMmFtaWdvcy95aWkyLXVzdWFyaW8gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvamVjdC5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICogKGMpIDJhbWlnT1MhIDxodHRwOi8vMmFtaWdvcy51cy8+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsZWFzZSB2aWV3XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAqIHRoZSBMSUNFTlNFIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZSBjb2RlLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSBEYVxcVXNlclxcRmFjdG9yeTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBEYVxcVXNlclxcRXZlbnRcXE1haWxFdmVudDtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlIERhXFxVc2VyXFxNb2RlbFxcVG9rZW47XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBEYVxcVXNlclxcTW9kZWxcXFVzZXI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBEYVxcVXNlclxcTW9kdWxlO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgRGFcXFVzZXJcXFNlcnZpY2VcXE1haWxTZXJ2aWNlO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgWWlpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgeWlpXFxiYXNlXFxJbnZhbGlkQ29uZmlnRXhjZXB0aW9uO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xhc3MgTWFpbEZhY3RvcnlcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAne1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLyoqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAcGFyYW0gVXNlciAkdXNlclxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHBhcmFtIGJvb2wgJHNob3dQYXNzd29yZFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEB0aHJvd3MgSW52YWxpZENvbmZpZ0V4Y2VwdGlvblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHJldHVybiBNYWlsU2VydmljZVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21ha2VXZWxjb21lTWFpbGVyU2VydmljZShVc2VyICR1c2VyLCAkc2hvd1Bhc3N3b3JkICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJz0gZmFsc2UsICR0b2tlbiA9IG51bGwpXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgLyoqIEB2YXIgTW9kdWxlICRtb2R1bGUgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAkbW9kdWxlID0gWWlpOjokYXBwLT5nZXRNb2R1bGUoJ3VzZXInKTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAkdG8gPSAkdXNlci0+ZW1haWw7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJGZyb20gPSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIkbW9kdWxlLT5tYWlsUGFyYW1zWydmcm9tRW1haWwnXTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAkc3ViamVjdCA9ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiRtb2R1bGUtPm1haWxQYXJhbXNbJ3dlbGNvbWVNYWlsU3ViamVjdCddO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICRwYXJhbXMgPSBbXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICd1c2VyJyA9PiAkdXNlcixcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgJ3Rva2VuJyA9PiAkdG9rZW4sXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICdtb2R1bGUnID0+ICRtb2R1bGUsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICdzaG93UGFzc3dvcmQnID0+ICRzaG93UGFzc3dvcmQsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgXTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgcmV0dXJuICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXRpYzo6bWFrZU1haWxlclNlcnZpY2UoTWFpbEV2ZW50OjpUWVBFX1dFTENPTUUsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiRmcm9tLCAkdG8sICRzdWJqZWN0LCAnd2VsY29tZScsICRwYXJhbXMpO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8qKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHBhcmFtIHN0cmluZyAkZW1haWxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEBwYXJhbSBUb2tlbiAgJHRva2VuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHRocm93cyBJbnZhbGlkQ29uZmlnRXhjZXB0aW9uXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAcmV0dXJuIE1haWxTZXJ2aWNlXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFrZVJlY292ZXJ5TWFpbGVyU2VydmljZSgkZW1haWwsIFRva2VuICR0b2tlbiA9ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwpXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgLyoqIEB2YXIgTW9kdWxlICRtb2R1bGUgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAkbW9kdWxlID0gWWlpOjokYXBwLT5nZXRNb2R1bGUoJ3VzZXInKTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAkdG8gPSAkZW1haWw7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJGZyb20gPSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIkbW9kdWxlLT5tYWlsUGFyYW1zWydmcm9tRW1haWwnXTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAkc3ViamVjdCA9ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiRtb2R1bGUtPm1haWxQYXJhbXNbJ3JlY292ZXJ5TWFpbFN1YmplY3QnXTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAkcGFyYW1zID0gW1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAndXNlcicgPT4gJHRva2VuICYmICR0b2tlbi0+dXNlciA/ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR0b2tlbi0+dXNlciA6IG51bGwsXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICd0b2tlbicgPT4gJHRva2VuLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIF07XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIHJldHVybiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdGF0aWM6Om1ha2VNYWlsZXJTZXJ2aWNlKE1haWxFdmVudDo6VFlQRV9SRUNPVkVSWSwgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAiJGZyb20sICR0bywgJHN1YmplY3QsICdyZWNvdmVyeScsICRwYXJhbXMpO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8qKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHBhcmFtIFVzZXIgICAgICAgJHVzZXJcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEBwYXJhbSBUb2tlbnxudWxsICR0b2tlblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEB0aHJvd3MgSW52YWxpZENvbmZpZ0V4Y2VwdGlvblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHJldHVybiBNYWlsU2VydmljZVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21ha2VDb25maXJtYXRpb25NYWlsZXJTZXJ2aWNlKFVzZXIgJHVzZXIsIFRva2VuICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR0b2tlbiA9IG51bGwpXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgLyoqIEB2YXIgTW9kdWxlICRtb2R1bGUgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAkbW9kdWxlID0gWWlpOjokYXBwLT5nZXRNb2R1bGUoJ3VzZXInKTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAkdG8gPSAkdXNlci0+ZW1haWw7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJGZyb20gPSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIkbW9kdWxlLT5tYWlsUGFyYW1zWydmcm9tRW1haWwnXTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAkc3ViamVjdCA9ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiRtb2R1bGUtPm1haWxQYXJhbXNbJ2NvbmZpcm1hdGlvbk1haWxTdWJqZWN0J107XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJHBhcmFtcyA9IFtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgJ3VzZXInID0+ICR0b2tlbiAmJiAkdG9rZW4tPnVzZXIgPyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICckdG9rZW4tPnVzZXIgOiBudWxsLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAndG9rZW4nID0+ICR0b2tlbixcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBdO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICByZXR1cm4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RhdGljOjptYWtlTWFpbGVyU2VydmljZShNYWlsRXZlbnQ6OlRZUEVfQ09ORklSTSwgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAiJGZyb20sICR0bywgJHN1YmplY3QsICdjb25maXJtYXRpb24nLCAkcGFyYW1zKTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEBwYXJhbSBVc2VyICAkdXNlclxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHBhcmFtIFRva2VuICR0b2tlblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEB0aHJvd3MgSW52YWxpZENvbmZpZ0V4Y2VwdGlvblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHJldHVybiBNYWlsU2VydmljZVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21ha2VSZWNvbmZpcm1hdGlvbk1haWxlclNlcnZpY2UoVXNlciAkdXNlciwgVG9rZW4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnJHRva2VuKVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIC8qKiBAdmFyIE1vZHVsZSAkbW9kdWxlICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgJG1vZHVsZSA9IFlpaTo6JGFwcC0+Z2V0TW9kdWxlKCd1c2VyJyk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJHRvID0gJHRva2VuLT50eXBlID09PSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdUb2tlbjo6VFlQRV9DT05GSVJNX05FV19FTUFJTFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICA/ICR1c2VyLT51bmNvbmZpcm1lZF9lbWFpbFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICA6ICR1c2VyLT5lbWFpbDtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJGZyb20gPSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIkbW9kdWxlLT5tYWlsUGFyYW1zWydmcm9tRW1haWwnXTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAkc3ViamVjdCA9ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiRtb2R1bGUtPm1haWxQYXJhbXNbJ3JlY29uZmlybWF0aW9uTWFpbFN1YmplY3QnXTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAkcGFyYW1zID0gW1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAndXNlcicgPT4gJHRva2VuICYmICR0b2tlbi0+dXNlciA/ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR0b2tlbi0+dXNlciA6IG51bGwsXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICd0b2tlbicgPT4gJHRva2VuLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIF07XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIHJldHVybiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdGF0aWM6Om1ha2VNYWlsZXJTZXJ2aWNlKE1haWxFdmVudDo6VFlQRV9SRUNPTkZJUk0sICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiRmcm9tLCAkdG8sICRzdWJqZWN0LCAncmVjb25maXJtYXRpb24nLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICckcGFyYW1zKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEJ1aWxkcyBhIE1haWxlclNlcnZpY2UuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAkdHlwZVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICogQHBhcmFtIHN0cmluZ3xhcnJheXxcXENsb3N1cmUgJGZyb21cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgJHRvXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICRzdWJqZWN0XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICR2aWV3XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICRwYXJhbXNcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKiBAdGhyb3dzIEludmFsaWRDb25maWdFeGNlcHRpb25cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqIEByZXR1cm4gTWFpbFNlcnZpY2VcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFrZU1haWxlclNlcnZpY2UoJHR5cGUsICRmcm9tLCAkdG8sICRzdWJqZWN0LCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICckdmlldywgJHBhcmFtcyA9IFtdKVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIGlmICgkZnJvbSBpbnN0YW5jZW9mIFxcQ2xvc3VyZSkge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAkZnJvbSA9ICRmcm9tKCR0eXBlKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICB9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgLyoqIEBub2luc3BlY3Rpb24gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnUGhwSW5jb21wYXRpYmxlUmV0dXJuVHlwZUluc3BlY3Rpb24gKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICByZXR1cm4gWWlpOjokY29udGFpbmVyLT5nZXQoXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIE1haWxTZXJ2aWNlOjpjbGFzcyxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgWyR0eXBlLCAkZnJvbSwgJHRvLCAkc3ViamVjdCwgJHZpZXcsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyRwYXJhbXMsIFlpaTo6JGFwcC0+Z2V0TWFpbGVyKCldXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnfVxyXG4nfX0sCiA1OiB7J2VuJzogeydOb3Rlcyc6ICcnLAogICAgICAgICAgICAnU2xpZGVUeXBlJzogJ0NvZGVJbmMnLAogICAgICAgICAgICAnYUxhYmVsJzogJ1lpaSBDb25maWcgcGFyYW0qLnBocCcsCiAgICAgICAgICAgICdhX2ZpbGUnOiAnJywKICAgICAgICAgICAgJ2FkZENsYXNzJzogJycsCiAgICAgICAgICAgICdhc3ZnZmlsZSc6ICc8c3ZnPjwvc3ZnPicsCiAgICAgICAgICAgICdjb2RlJzogJycsCiAgICAgICAgICAgICdjb2RlSW5jJzogJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnIyBjb250ZW50IGJldHdlZW4gc3R5bGVJbmMgdGFnIHdpbGwgYmUgYWRkIHRvIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZSB0aGUgY2xvc2luZyBoZWFkIHRhZ3NcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzxzdHlsZUluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8IS0tIHN0eWxlSW5jIEluY2x1ZGVkIGZyb20gX0lEXyAtLT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8c3R5bGU+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPC9zdHlsZT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwvc3R5bGVJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjIGNvbnRlbnQgYmV0d2VlbiBzY3JpcHRJbmMgdGFnIHdpbGwgYmUgYWRkIHRvIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZSB0aGUgY2xvc2luZyBib2R5IHRhZ3NcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHRJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPCEtLSBzY3JpcHRJbmMgSW5jbHVkZWQgZnJvbSBfSURfIC0tPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPC9zY3JpcHQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8L3NjcmlwdEluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjIEVuZFxyXG4nLAogICAgICAgICAgICAnY29sQkdJbWFnZSc6ICcvZGVmYXVsdC9tZWRpYS9uYXY2aDAvcy9VSS9BMDAwMDAxMDI3MDAyMDAxL29uZUNvbHVtbi9pbWc4LmpwZycsCiAgICAgICAgICAgICdjb2xCR0ltYWdlV3JhcCc6ICcvZGVmYXVsdC9tZWRpYS9uYXY2aDAvcy9VSS9BMDAwMDAxMDI3MDAyMDAxL29uZUNvbHVtbi9pbWc5LmpwZycsCiAgICAgICAgICAgICdjb21wb3NlckpTT04nOiAnJywKICAgICAgICAgICAgJ2R5bmFtaWNCbG9jayc6ICcnLAogICAgICAgICAgICAna2V5d29yZHMnOiAnJywKICAgICAgICAgICAgJ3BocEZpbGUnOiAnPD9waHAgLyogJwogICAgICAgICAgICAgICAgICAgICAgICdfZG9jcm9vdF8vLi4vc3JjL3lpaTIvYWR2YW5jZWQvY29tbW9uL2NvbmZpZy9fcGFyYW1zLnBocCAnCiAgICAgICAgICAgICAgICAgICAgICAgJyovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAncmV0dXJuIFtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICIgICAgJ2FkbWluRW1haWwnID0+ICdpbmZvQGFzb25lbGlzdC5jb20nLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAnc3VwcG9ydEVtYWlsJyA9PiAnaW5mb0Bhc29uZWxpc3QuY29tJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICIgICAgJ3NlbmRlckVtYWlsJyA9PiAnaW5mb0Bhc29uZWxpc3QuY29tJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICIgICAgJ3NlbmRlck5hbWUnID0+ICdOb1JlcGx5JyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICIgICAgJ3VzZXIucGFzc3dvcmRSZXNldFRva2VuRXhwaXJlJyA9PiAzNjAwLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAndXNlci5wYXNzd29yZE1pbkxlbmd0aCcgPT4gOCxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICddOycsCiAgICAgICAgICAgICdwaHBGaWxlQSc6ICc8P3BocCAvKiAnCiAgICAgICAgICAgICAgICAgICAgICAgICdfZG9jcm9vdF8vLi4vc3JjL3lpaTIvYWR2YW5jZWQvZnJvbnRlbmQvY29uZmlnL19wYXJhbXMucGhwICcKICAgICAgICAgICAgICAgICAgICAgICAgJyovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICdyZXR1cm4gW1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICddOycsCiAgICAgICAgICAgICdwaHBGaWxlQic6ICcnfSwKICAgICAnZW4tVVMnOiB7J015TW9kdWxlJzogJ29uZUNvbHVtbicsCiAgICAgICAgICAgICAgICdOb3Rlcyc6ICcnLAogICAgICAgICAgICAgICAnU2xpZGVUeXBlJzogJ0NvZGVJbmMnLAogICAgICAgICAgICAgICAnYUxhYmVsJzogJ1lpaSBDb25maWcgcGFyYW0qLnBocCcsCiAgICAgICAgICAgICAgICdhX2ZpbGUnOiAnJywKICAgICAgICAgICAgICAgJ2FkZENsYXNzJzogJycsCiAgICAgICAgICAgICAgICdhc3ZnZmlsZSc6ICc8c3ZnPjwvc3ZnPicsCiAgICAgICAgICAgICAgICdjb2RlJzogJycsCiAgICAgICAgICAgICAgICdjb2RlSW5jJzogJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnIyBjb250ZW50IGJldHdlZW4gc3R5bGVJbmMgdGFnIHdpbGwgYmUgYWRkIHRvIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZSB0aGUgY2xvc2luZyBoZWFkIHRhZ3NcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzdHlsZUluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8IS0tIHN0eWxlSW5jIEluY2x1ZGVkIGZyb20gX0lEXyAtLT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8c3R5bGU+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9zdHlsZT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvc3R5bGVJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjIGNvbnRlbnQgYmV0d2VlbiBzY3JpcHRJbmMgdGFnIHdpbGwgYmUgYWRkIHRvIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZSB0aGUgY2xvc2luZyBib2R5IHRhZ3NcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHRJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPCEtLSBzY3JpcHRJbmMgSW5jbHVkZWQgZnJvbSBfSURfIC0tPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9zY3JpcHQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8L3NjcmlwdEluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjIEVuZFxyXG4nLAogICAgICAgICAgICAgICAnY29sQkdJbWFnZSc6ICcvZGVmYXVsdC9tZWRpYS9uYXY2aDAvcy9VSS9BMDAwMDAxMDI3MDAyMDAxL29uZUNvbHVtbi9pbWc4LmpwZycsCiAgICAgICAgICAgICAgICdjb2xCR0ltYWdlV3JhcCc6ICcvZGVmYXVsdC9tZWRpYS9uYXY2aDAvcy9VSS9BMDAwMDAxMDI3MDAyMDAxL29uZUNvbHVtbi9pbWc5LmpwZycsCiAgICAgICAgICAgICAgICdjb21wb3NlckpTT04nOiAnJywKICAgICAgICAgICAgICAgJ2R5bmFtaWNCbG9jayc6ICcnLAogICAgICAgICAgICAgICAna2V5d29yZHMnOiAnJywKICAgICAgICAgICAgICAgJ3BocEZpbGUnOiAnPD9waHAgLyogJwogICAgICAgICAgICAgICAgICAgICAgICAgICdfZG9jcm9vdF8vLi4vc3JjL3lpaTIvYWR2YW5jZWQvY29tbW9uL2NvbmZpZy9fcGFyYW1zLnBocCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAncmV0dXJuIFtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgJ2FkbWluRW1haWwnID0+ICdpbmZvQGFzb25lbGlzdC5jb20nLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAnc3VwcG9ydEVtYWlsJyA9PiAnaW5mb0Bhc29uZWxpc3QuY29tJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgJ3NlbmRlckVtYWlsJyA9PiAnaW5mb0Bhc29uZWxpc3QuY29tJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgJ3NlbmRlck5hbWUnID0+ICdOb1JlcGx5JyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgJ3VzZXIucGFzc3dvcmRSZXNldFRva2VuRXhwaXJlJyA9PiAzNjAwLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAndXNlci5wYXNzd29yZE1pbkxlbmd0aCcgPT4gOCxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICddOycsCiAgICAgICAgICAgICAgICdwaHBGaWxlQSc6ICc8P3BocCAvKiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdfZG9jcm9vdF8vLi4vc3JjL3lpaTIvYWR2YW5jZWQvZnJvbnRlbmQvY29uZmlnL19wYXJhbXMucGhwICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXR1cm4gW1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICddOycsCiAgICAgICAgICAgICAgICdwaHBGaWxlQic6ICcnfX0sCiA2OiB7J2VuJzogeydOb3Rlcyc6ICcnLAogICAgICAgICAgICAnU2xpZGVUeXBlJzogJ0NvZGVJbmMnLAogICAgICAgICAgICAnYUxhYmVsJzogJ0NvbmZpZyBtYWluKi5waHAnLAogICAgICAgICAgICAnYV9maWxlJzogJycsCiAgICAgICAgICAgICdhZGRDbGFzcyc6ICcnLAogICAgICAgICAgICAnYXN2Z2ZpbGUnOiAnPHN2Zz48L3N2Zz4nLAogICAgICAgICAgICAnY29kZSc6ICcnLAogICAgICAgICAgICAnY29kZUluYyc6ICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyMgY29udGVudCBiZXR3ZWVuIHN0eWxlSW5jIHRhZyB3aWxsIGJlIGFkZCB0byB0aGUgJwogICAgICAgICAgICAgICAgICAgICAgICdiZWZvcmUgdGhlIGNsb3NpbmcgaGVhZCB0YWdzXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8c3R5bGVJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPCEtLSBzdHlsZUluYyBJbmNsdWRlZCBmcm9tIF9JRF8gLS0+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPHN0eWxlPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwvc3R5bGU+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8L3N0eWxlSW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnIyBjb250ZW50IGJldHdlZW4gc2NyaXB0SW5jIHRhZyB3aWxsIGJlIGFkZCB0byB0aGUgJwogICAgICAgICAgICAgICAgICAgICAgICdiZWZvcmUgdGhlIGNsb3NpbmcgYm9keSB0YWdzXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8c2NyaXB0SW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwhLS0gc2NyaXB0SW5jIEluY2x1ZGVkIGZyb20gX0lEXyAtLT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8c2NyaXB0PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwvc2NyaXB0PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPC9zY3JpcHRJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnIyBFbmRcclxuJywKICAgICAgICAgICAgJ2NvbEJHSW1hZ2UnOiAnL2RlZmF1bHQvbWVkaWEvbmF2NmgwL3MvVUkvQTAwMDAwMTAyNzAwMjAwMS9vbmVDb2x1bW4vaW1nMTAuanBnJywKICAgICAgICAgICAgJ2NvbEJHSW1hZ2VXcmFwJzogJy9kZWZhdWx0L21lZGlhL25hdjZoMC9zL1VJL0EwMDAwMDEwMjcwMDIwMDEvb25lQ29sdW1uL2ltZzExLmpwZycsCiAgICAgICAgICAgICdjb21wb3NlckpTT04nOiAnJywKICAgICAgICAgICAgJ2R5bmFtaWNCbG9jayc6ICcnLAogICAgICAgICAgICAna2V5d29yZHMnOiAnJywKICAgICAgICAgICAgJ3BocEZpbGUnOiAnJywKICAgICAgICAgICAgJ3BocEZpbGVBJzogJzw/cGhwIC8qICcKICAgICAgICAgICAgICAgICAgICAgICAgJ19kb2Nyb290Xy8uLi9zcmMveWlpMi9hZHZhbmNlZC9mcm9udGVuZC9jb25maWcvbWFpbi5waHAgJwogICAgICAgICAgICAgICAgICAgICAgICAnKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICckcGFyYW1zID0gYXJyYXlfbWVyZ2UoXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgcmVxdWlyZSBfX0RJUl9fIC4gJwogICAgICAgICAgICAgICAgICAgICAgICAiJy8uLi8uLi9jb21tb24vY29uZmlnL3BhcmFtcy5waHAnLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICcgIHJlcXVpcmUgX19ESVJfXyAuICcKICAgICAgICAgICAgICAgICAgICAgICAgIicvLi4vLi4vY29tbW9uL2NvbmZpZy9wYXJhbXMtbG9jYWwucGhwJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICByZXF1aXJlIF9fRElSX18gLiAnL3BhcmFtcy5waHAnLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgIHJlcXVpcmUgX19ESVJfXyAuICcvcGFyYW1zLWxvY2FsLnBocCdcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAnKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ3JldHVybiBbXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgIiAgJ2lkJyA9PiAnYXBwLWZyb250ZW5kJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICAnYmFzZVBhdGgnID0+IGRpcm5hbWUoX19ESVJfXyksXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgJ2Jvb3RzdHJhcCcgPT4gWydsb2cnXSxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICAnY29udHJvbGxlck5hbWVzcGFjZScgPT4gIgogICAgICAgICAgICAgICAgICAgICAgICAiJ2Zyb250ZW5kXFxjb250cm9sbGVycycsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgJ2NvbXBvbmVudHMnID0+IFtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICAgICdpMThuJyA9PiBbXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICd0cmFuc2xhdGlvbnMnID0+IFtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAnYXNvbmUnID0+IFtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICdjbGFzcycgPT4gIgogICAgICAgICAgICAgICAgICAgICAgICAiJ3lpaVxcaTE4blxcUGhwTWVzc2FnZVNvdXJjZScsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAnYmFzZVBhdGgnID0+ICdAY29tbW9uL21lc3NhZ2VzJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBdLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICBdLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgXSxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAiICAgICdyZXF1ZXN0JyA9PiBbXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICdjc3JmUGFyYW0nID0+ICdfY3NyZi1mcm9udGVuZCcsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBdLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgLy8ndXNlcicgPT4gW1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgLy8gICAgJ2lkZW50aXR5Q2xhc3MnID0+ICIKICAgICAgICAgICAgICAgICAgICAgICAgIidjb21tb25cXG1vZGVsc1xcVXNlcicsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAvLyAgICAnZW5hYmxlQXV0b0xvZ2luJyA9PiB0cnVlLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgLy8gICAgJ2lkZW50aXR5Q29va2llJyA9PiBbJ25hbWUnID0+ICIKICAgICAgICAgICAgICAgICAgICAgICAgIidfaWRlbnRpdHktZnJvbnRlbmQnLCAnaHR0cE9ubHknID0+IHRydWVdLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9dLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgJ3Nlc3Npb24nID0+IFtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgLy8gdGhpcyBpcyB0aGUgbmFtZSBvZiB0aGUgc2Vzc2lvbiBjb29raWUgdXNlZCAnCiAgICAgICAgICAgICAgICAgICAgICAgICdmb3IgbG9naW4gb24gdGhlIGZyb250ZW5kXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICduYW1lJyA9PiAnYWR2YW5jZWQtZnJvbnRlbmQnLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgXSxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAiICAgICdsb2cnID0+IFtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgJ3RyYWNlTGV2ZWwnID0+IFlJSV9ERUJVRyA/IDMgOiAwLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAndGFyZ2V0cycgPT4gW1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICdjbGFzcycgPT4gJ3lpaVxcbG9nXFxGaWxlVGFyZ2V0JyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICdsZXZlbHMnID0+IFsnZXJyb3InLCAnd2FybmluZyddLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIF0sXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgIF0sXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBdLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgJ2Vycm9ySGFuZGxlcicgPT4gW1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAnZXJyb3JBY3Rpb24nID0+ICdzaXRlL2Vycm9yJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAnICAgIF0sXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICd1cmxNYW5hZ2VyJyA9PiBbXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICdlbmFibGVQcmV0dHlVcmwnID0+IHRydWUsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICdzaG93U2NyaXB0TmFtZScgPT4gZmFsc2UsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICdydWxlcycgPT4gW1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICBdLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIF0sXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICBdLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICdwYXJhbXMnID0+ICRwYXJhbXMsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgJ107XHJcbicsCiAgICAgICAgICAgICdwaHBGaWxlQic6ICc8P3BocCAvKiAnCiAgICAgICAgICAgICAgICAgICAgICAgICdfZG9jcm9vdF8vLi4vc3JjL3lpaTIvYWR2YW5jZWQvZnJvbnRlbmQvY29uZmlnL21haW4ucGhwICcKICAgICAgICAgICAgICAgICAgICAgICAgJyovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnJHBhcmFtcyA9IGFycmF5X21lcmdlKFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgcmVxdWlyZSBfX0RJUl9fIC4gJwogICAgICAgICAgICAgICAgICAgICAgICAiJy8uLi8uLi9jb21tb24vY29uZmlnL3BhcmFtcy5waHAnLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgcmVxdWlyZSBfX0RJUl9fIC4gJwogICAgICAgICAgICAgICAgICAgICAgICAiJy8uLi8uLi9jb21tb24vY29uZmlnL3BhcmFtcy1sb2NhbC5waHAnLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmVxdWlyZSBfX0RJUl9fIC4gJy9wYXJhbXMucGhwJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJlcXVpcmUgX19ESVJfXyAuICcvcGFyYW1zLWxvY2FsLnBocCdcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAnKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ3JldHVybiBbXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAnaWQnID0+ICdhcHAtZnJvbnRlbmQnLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgJ2Jhc2VQYXRoJyA9PiBkaXJuYW1lKF9fRElSX18pLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgJ2Jvb3RzdHJhcCcgPT4gWydsb2cnXSxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICAgICdjb250cm9sbGVyTmFtZXNwYWNlJyA9PiAiCiAgICAgICAgICAgICAgICAgICAgICAgICInZnJvbnRlbmRcXGNvbnRyb2xsZXJzJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICAgICdjb21wb25lbnRzJyA9PiBbXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgJ3JlcXVlc3QnID0+IFtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgJ2NzcmZQYXJhbScgPT4gJ19jc3JmLWZyb250ZW5kJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBdLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIC8vJ3VzZXInID0+IFtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAvLyAgICAnaWRlbnRpdHlDbGFzcycgPT4gIgogICAgICAgICAgICAgICAgICAgICAgICAiJ2NvbW1vblxcbW9kZWxzXFxVc2VyJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAvLyAgICAnZW5hYmxlQXV0b0xvZ2luJyA9PiB0cnVlLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIC8vICAgICdpZGVudGl0eUNvb2tpZScgPT4gWyduYW1lJyA9PiAiCiAgICAgICAgICAgICAgICAgICAgICAgICInX2lkZW50aXR5LWZyb250ZW5kJywgJ2h0dHBPbmx5JyA9PiB0cnVlXSxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAvL10sXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgJ3Nlc3Npb24nID0+IFtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgLy8gdGhpcyBpcyB0aGUgbmFtZSBvZiB0aGUgc2Vzc2lvbiBjb29raWUgJwogICAgICAgICAgICAgICAgICAgICAgICAndXNlZCBmb3IgbG9naW4gb24gdGhlIGZyb250ZW5kXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICduYW1lJyA9PiAnYWR2YW5jZWQtZnJvbnRlbmQnLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIF0sXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgJ2xvZycgPT4gW1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAndHJhY2VMZXZlbCcgPT4gWUlJX0RFQlVHID8gMyA6IDAsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICd0YXJnZXRzJyA9PiBbXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICBbXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgJ2NsYXNzJyA9PiAiCiAgICAgICAgICAgICAgICAgICAgICAgICIneWlpXFxsb2dcXEZpbGVUYXJnZXQnLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICdsZXZlbHMnID0+IFsnZXJyb3InLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICInd2FybmluZyddLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgXSxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgXSxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBdLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICdlcnJvckhhbmRsZXInID0+IFtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgJ2Vycm9yQWN0aW9uJyA9PiAnc2l0ZS9lcnJvcicsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgXSxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAvKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICd1cmxNYW5hZ2VyJyA9PiBbXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICdlbmFibGVQcmV0dHlVcmwnID0+IHRydWUsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICdzaG93U2NyaXB0TmFtZScgPT4gZmFsc2UsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICdydWxlcycgPT4gW1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICBdLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIF0sXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnICAgIF0sXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAncGFyYW1zJyA9PiAkcGFyYW1zLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICddO1xyXG4nfSwKICAgICAnZW4tVVMnOiB7J015TW9kdWxlJzogJ29uZUNvbHVtbicsCiAgICAgICAgICAgICAgICdOb3Rlcyc6ICcnLAogICAgICAgICAgICAgICAnU2xpZGVUeXBlJzogJ0NvZGVJbmMnLAogICAgICAgICAgICAgICAnYUxhYmVsJzogJ0NvbmZpZyBtYWluKi5waHAnLAogICAgICAgICAgICAgICAnYV9maWxlJzogJycsCiAgICAgICAgICAgICAgICdhZGRDbGFzcyc6ICcnLAogICAgICAgICAgICAgICAnYXN2Z2ZpbGUnOiAnPHN2Zz48L3N2Zz4nLAogICAgICAgICAgICAgICAnY29kZSc6ICcnLAogICAgICAgICAgICAgICAnY29kZUluYyc6ICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyMgY29udGVudCBiZXR3ZWVuIHN0eWxlSW5jIHRhZyB3aWxsIGJlIGFkZCB0byB0aGUgJwogICAgICAgICAgICAgICAgICAgICAgICAgICdiZWZvcmUgdGhlIGNsb3NpbmcgaGVhZCB0YWdzXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8c3R5bGVJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPCEtLSBzdHlsZUluYyBJbmNsdWRlZCBmcm9tIF9JRF8gLS0+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPHN0eWxlPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvc3R5bGU+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8L3N0eWxlSW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnIyBjb250ZW50IGJldHdlZW4gc2NyaXB0SW5jIHRhZyB3aWxsIGJlIGFkZCB0byB0aGUgJwogICAgICAgICAgICAgICAgICAgICAgICAgICdiZWZvcmUgdGhlIGNsb3NpbmcgYm9keSB0YWdzXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8c2NyaXB0SW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwhLS0gc2NyaXB0SW5jIEluY2x1ZGVkIGZyb20gX0lEXyAtLT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8c2NyaXB0PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvc2NyaXB0PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9zY3JpcHRJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnIyBFbmRcclxuJywKICAgICAgICAgICAgICAgJ2NvbEJHSW1hZ2UnOiAnL2RlZmF1bHQvbWVkaWEvbmF2NmgwL3MvVUkvQTAwMDAwMTAyNzAwMjAwMS9vbmVDb2x1bW4vaW1nMTAuanBnJywKICAgICAgICAgICAgICAgJ2NvbEJHSW1hZ2VXcmFwJzogJy9kZWZhdWx0L21lZGlhL25hdjZoMC9zL1VJL0EwMDAwMDEwMjcwMDIwMDEvb25lQ29sdW1uL2ltZzExLmpwZycsCiAgICAgICAgICAgICAgICdjb21wb3NlckpTT04nOiAnJywKICAgICAgICAgICAgICAgJ2R5bmFtaWNCbG9jayc6ICcnLAogICAgICAgICAgICAgICAna2V5d29yZHMnOiAnJywKICAgICAgICAgICAgICAgJ3BocEZpbGUnOiAnJywKICAgICAgICAgICAgICAgJ3BocEZpbGVBJzogJzw/cGhwIC8qICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19kb2Nyb290Xy8uLi9zcmMveWlpMi9hZHZhbmNlZC9mcm9udGVuZC9jb25maWcvbWFpbi5waHAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICckcGFyYW1zID0gYXJyYXlfbWVyZ2UoXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgcmVxdWlyZSBfX0RJUl9fIC4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAiJy8uLi8uLi9jb21tb24vY29uZmlnL3BhcmFtcy5waHAnLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgIHJlcXVpcmUgX19ESVJfXyAuICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIicvLi4vLi4vY29tbW9uL2NvbmZpZy9wYXJhbXMtbG9jYWwucGhwJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiICByZXF1aXJlIF9fRElSX18gLiAnL3BhcmFtcy5waHAnLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIHJlcXVpcmUgX19ESVJfXyAuICcvcGFyYW1zLWxvY2FsLnBocCdcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JldHVybiBbXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgJ2lkJyA9PiAnYXBwLWZyb250ZW5kJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAnYmFzZVBhdGgnID0+IGRpcm5hbWUoX19ESVJfXyksXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgJ2Jvb3RzdHJhcCcgPT4gWydsb2cnXSxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAnY29udHJvbGxlck5hbWVzcGFjZScgPT4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiJ2Zyb250ZW5kXFxjb250cm9sbGVycycsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgJ2NvbXBvbmVudHMnID0+IFtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICdpMThuJyA9PiBbXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICd0cmFuc2xhdGlvbnMnID0+IFtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAnYXNvbmUnID0+IFtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICdjbGFzcycgPT4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3lpaVxcaTE4blxcUGhwTWVzc2FnZVNvdXJjZScsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAnYmFzZVBhdGgnID0+ICdAY29tbW9uL21lc3NhZ2VzJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBdLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICBdLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgXSxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICdyZXF1ZXN0JyA9PiBbXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICdjc3JmUGFyYW0nID0+ICdfY3NyZi1mcm9udGVuZCcsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBdLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgLy8ndXNlcicgPT4gW1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgLy8gICAgJ2lkZW50aXR5Q2xhc3MnID0+ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIidjb21tb25cXG1vZGVsc1xcVXNlcicsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAvLyAgICAnZW5hYmxlQXV0b0xvZ2luJyA9PiB0cnVlLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgLy8gICAgJ2lkZW50aXR5Q29va2llJyA9PiBbJ25hbWUnID0+ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIidfaWRlbnRpdHktZnJvbnRlbmQnLCAnaHR0cE9ubHknID0+IHRydWVdLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9dLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgJ3Nlc3Npb24nID0+IFtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgLy8gdGhpcyBpcyB0aGUgbmFtZSBvZiB0aGUgc2Vzc2lvbiBjb29raWUgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlZCBmb3IgbG9naW4gb24gdGhlIGZyb250ZW5kXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICduYW1lJyA9PiAnYWR2YW5jZWQtZnJvbnRlbmQnLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgXSxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICdsb2cnID0+IFtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgJ3RyYWNlTGV2ZWwnID0+IFlJSV9ERUJVRyA/IDMgOiAwLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAndGFyZ2V0cycgPT4gW1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICdjbGFzcycgPT4gJ3lpaVxcbG9nXFxGaWxlVGFyZ2V0JyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICdsZXZlbHMnID0+IFsnZXJyb3InLCAnd2FybmluZyddLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIF0sXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgIF0sXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBdLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgJ2Vycm9ySGFuZGxlcicgPT4gW1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAnZXJyb3JBY3Rpb24nID0+ICdzaXRlL2Vycm9yJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIF0sXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICd1cmxNYW5hZ2VyJyA9PiBbXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICdlbmFibGVQcmV0dHlVcmwnID0+IHRydWUsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICdzaG93U2NyaXB0TmFtZScgPT4gZmFsc2UsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICdydWxlcycgPT4gW1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICBdLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIF0sXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICBdLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICdwYXJhbXMnID0+ICRwYXJhbXMsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ107XHJcbicsCiAgICAgICAgICAgICAgICdwaHBGaWxlQic6ICc8P3BocCAvKiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdfZG9jcm9vdF8vLi4vc3JjL3lpaTIvYWR2YW5jZWQvZnJvbnRlbmQvY29uZmlnL21haW4ucGhwICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnJHBhcmFtcyA9IGFycmF5X21lcmdlKFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgcmVxdWlyZSBfX0RJUl9fIC4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAiJy8uLi8uLi9jb21tb24vY29uZmlnL3BhcmFtcy5waHAnLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgcmVxdWlyZSBfX0RJUl9fIC4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAiJy8uLi8uLi9jb21tb24vY29uZmlnL3BhcmFtcy1sb2NhbC5waHAnLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmVxdWlyZSBfX0RJUl9fIC4gJy9wYXJhbXMucGhwJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJlcXVpcmUgX19ESVJfXyAuICcvcGFyYW1zLWxvY2FsLnBocCdcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JldHVybiBbXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAnaWQnID0+ICdhcHAtZnJvbnRlbmQnLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgJ2Jhc2VQYXRoJyA9PiBkaXJuYW1lKF9fRElSX18pLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgJ2Jvb3RzdHJhcCcgPT4gWydsb2cnXSxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICdjb250cm9sbGVyTmFtZXNwYWNlJyA9PiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICInZnJvbnRlbmRcXGNvbnRyb2xsZXJzJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICdjb21wb25lbnRzJyA9PiBbXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgJ3JlcXVlc3QnID0+IFtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgJ2NzcmZQYXJhbScgPT4gJ19jc3JmLWZyb250ZW5kJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBdLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIC8vJ3VzZXInID0+IFtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAvLyAgICAnaWRlbnRpdHlDbGFzcycgPT4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiJ2NvbW1vblxcbW9kZWxzXFxVc2VyJyxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAvLyAgICAnZW5hYmxlQXV0b0xvZ2luJyA9PiB0cnVlLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIC8vICAgICdpZGVudGl0eUNvb2tpZScgPT4gWyduYW1lJyA9PiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICInX2lkZW50aXR5LWZyb250ZW5kJywgJ2h0dHBPbmx5JyA9PiB0cnVlXSxcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAvL10sXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgJ3Nlc3Npb24nID0+IFtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgLy8gdGhpcyBpcyB0aGUgbmFtZSBvZiB0aGUgc2Vzc2lvbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb29raWUgdXNlZCBmb3IgbG9naW4gb24gdGhlIGZyb250ZW5kXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICduYW1lJyA9PiAnYWR2YW5jZWQtZnJvbnRlbmQnLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIF0sXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgJ2xvZycgPT4gW1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAndHJhY2VMZXZlbCcgPT4gWUlJX0RFQlVHID8gMyA6IDAsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICd0YXJnZXRzJyA9PiBbXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICBbXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgJ2NsYXNzJyA9PiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIneWlpXFxsb2dcXEZpbGVUYXJnZXQnLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICdsZXZlbHMnID0+IFsnZXJyb3InLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICInd2FybmluZyddLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgXSxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgXSxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBdLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICdlcnJvckhhbmRsZXInID0+IFtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgJ2Vycm9yQWN0aW9uJyA9PiAnc2l0ZS9lcnJvcicsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgXSxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAvKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICd1cmxNYW5hZ2VyJyA9PiBbXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICdlbmFibGVQcmV0dHlVcmwnID0+IHRydWUsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICdzaG93U2NyaXB0TmFtZScgPT4gZmFsc2UsXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICdydWxlcycgPT4gW1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICBdLFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIF0sXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIF0sXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAncGFyYW1zJyA9PiAkcGFyYW1zLFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICddO1xyXG4nfX19Cg==
Copyright © 2025 by WebAsOne LLC, All Rights Reserved