Skip to main content
WR Site Assets
October 10, 2026 at 4:00 AM
by Rob Bergeron
WR Site Assets

Winner Realty site add-ons. This page is used by the website and is not meant to be read.

WRA|i286814|1|PHNjcmlwdD4KKGZ1bmN0aW9uKCl7CiAgdmFyIEQ9eyJwIjp7Ii8iOnsiciI6W10sIm0iOlsiL3Avd2UtZ2V0LW5vLXNlY29uZC1jaGFuY2UtaW4tdGhpcy1saWZlIiwiL3AvYmlyZHMtYmlyZHMtYmlyZHMiLCIvcC90aGUtcG9zdC1jYW5jZXItc2NhcmUtb2YtMjAyNiJdfSwiLzEwMzEtZXhjaGFuZ2UtY29tbWVyY2lhbC1yZWFsLWVzdGF0ZS1rZW50dWNreSI6eyJyIjpbIi9wL3RoZS1uaWwtZXJhLW9mLXJlYWwtZXN0YXRlIl0sIm0iOlsiL3AvZWlnaHR5LW9uZSIsIi9wL25vYm9keS13cm90ZS1hLXN3YW4tc29uZy1mb3ItdGhlLWVsZXZhdG9yLW9wZXJhdG9yIiwiL3AvdGhlLXJvYm90cy1hbHJlYWR5LWxpdmUtaGVyZSJdfSwiLzEwMzEtZXhjaGFuZ2Uta2VudHVja3ktZmFybS1sYW5kLXNlbGxlcnMiOnsiciI6W10sIm0iOlsiL3AvYS1zbG93LW1vcm5pbmctY29zdHMtbW9yZS10aGFuLXRoZS1tb3JuaW5nIiwiL3AvbGV0LXRoaXMtYmUtYS1rZXJuZWwiLCIvcC90aGUtYnJhbmNoIl19LCIvMTktdGhpbmdzLXRvLWtub3ctYmVmb3JlLW1vdmluZy10by1sZXhpbmd0b24iOnsiciI6WyIvcC9hYmUtbGluY29sbi13YWxrZWQtb24td2F0ZXIiLCIvcC9sb3Vpc3ZpbGxlLWRvZXNuLXQtYnJhZy1zby1pLXdpbGwiLCIvcC90cnV0aC1hbmQtbGllcyIsIi9wL3RoZS1iaXJkcy1rZWVwLWNvbWluZyJdLCJtIjpbIi9wL3RoZS1tY3JpYi1pcy1iYWNrIiwiL3Ava2VlcC1wZWRhbGluZyIsIi9wL2l0LXMtbm90LXdlaXJkLWl0LXMtanVzdC1kaWZmZXJlbnQiXX0sIi8xOS10aGluZ3MtdG8ta25vdy1iZWZvcmUtbW92aW5nLXRvLWxvdWlzdmlsbGUiOnsiciI6WyIvcC9sb3Vpc3ZpbGxlLWRvZXNuLXQtYnJhZy1zby1pLXdpbGwiLCIvcC9hYmUtbGluY29sbi13YWxrZWQtb24td2F0ZXIiLCIvcC90aGUtcHJpZGUtb2YtbG91aXN2aWxsZSIsIi9wL3RoZS13b25kZXItdGhhdC1zLWFscmVhZHktdGhlcmUiXSwibSI6WyIvcC9ldmVyeXRoaW5nLXMtYWxyZWFkeS1kb25lIiwiL3AvdGltZS10by1ldm9sdmUiLCIvcC9yaWdodC1pZGVhLXdyb25nLWJhcnJlbCJdfSwiLzE5LXRoaW5ncy10by1rbm93LWJlZm9yZS1tb3ZpbmctdG8tc291dGhlcm4taW5kaWFuYSI6eyJyIjpbIi9wL2xvdWlzdmlsbGUtZG9lc24tdC1icmFnLXNvLWktd2lsbCIsIi9wL2FiZS1saW5jb2xuLXdhbGtlZC1vbi13YXRlciIsIi9wL25vYm9keS10b2xkLWxvdWlzdmlsbGUtdG8tc2xvdy1kb3duIiwiL3AvaWRlYXMtZG9uLXQtaGF2ZS10by1kaWUtaW4tYmFzZW1lbnRzLWFueW1vcmUiXSwibSI6WyIvcC9tb3JuaW5nLXdvb2Qtc2VsdHplci13YXRlci1hbmQtYS0xMi1iYWctb2YtZmliZXIiLCIvcC9uby1vbmUtcy1jb21pbmciLCIvcC9nb2luZy1mcm9tLWNoaXBzLXRvLXN0ZWFrIl19LCIvYS1jcGEtaW4teW91ci1jb3JuZXItZnJvbS1kYXktb25lIjp7InIiOltdLCJtIjpbIi9wL2ZpdmUtaHVuZHJlZC1maWZ0eS1vbmUtZDRiOCIsIi9wL3JlZC1jbGF5LXN0cmF5cy1haXJibmItdG8tbWFkaXNvbi1zcXVhcmUtZ2FyZGVuIiwiL3AvbGlmZS11cGRhdGUiXX0sIi9hY2Nlc3NpYmlsaXR5LXJlc291cmNlcy1sb3Vpc3ZpbGxlIjp7InIiOltdLCJtIjpbIi9wL2ludmVudG9yeS1zdXJnZS1kZXJieS13ZWVrLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtMjAyNiIsIi9wL2V2ZXJ5Ym9keS1uZWVkcy1hLXNlY29uZC10aGluZyIsIi9wL2RpZC15b3Uta25vdy10YXlsb3Itc3dpZnQtZ290LW1hcnJpZWQtYXBpLWN1dC10d2VudHktd29yZHMtb3V0LW9mLW15LWZlZWQtYW5kLWdvdC1hbi1ob3VyLWFuZC1hLWhhbGYiXX0sIi9hY2Nlc3NpYmxlLXJlYWwtZXN0YXRlLWxvdWlzdmlsbGUiOnsiciI6W10sIm0iOlsiL3AvYS1taXh0YXBlLXN0YXBsZSIsIi9wL3NlbmQtY2xhdWRlLXlvdXItY2hyb21vc29tZXMiLCIvcC9ub2JvZHktcHV0cy1iYWJ5LWluLWEtYm94Il19LCIvYWdpbmctaW4tcGxhY2UtbG91aXN2aWxsZS1ob21lLW1vZGlmaWNhdGlvbnMiOnsiciI6W10sIm0iOlsiL3Avc2V2ZW4tY2FyZGlnYW5zIiwiL3AveW91LWxvb2stbGlrZS15b3UtbmVlZC1hLWh1ZyIsIi9wL3doZW4tcy10aGUtbGFzdC10aW1lLXlvdS1jcmVhdGVkLXNvbWV0aGluZyJdfSwiL2FscXVpbGVyLWNvbi1vcGNpb24tYS1jb21wcmEta2VudHVja3ktZ3VpYS1lbi1lc3Bhbm9sIjp7InIiOltdLCJtIjpbIi9wL3NldHRpbmctdXAtZnV0dXJlLXJvYiIsIi9wL2luY2x1ZGluZy1tb2RlcmF0aW9uIiwiL3AvYnVpbGRpbmctYS1zdGlsbC10by1zbG93LWRvd24tdGhlLWEtaGVhbHRoLXNjYXJlLWEtY2xlYXItYmlsbC1vZi1oZWFsdGgtYW5kLWEtbnVtYmVyLW15LXN1cmdlb24tZ2F2ZSJdfSwiL2FuY2hvcmFnZS1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6eyJyIjpbXSwibSI6WyIvcC93aGF0ZXZlci1oYXBwZW5lZC10by1hbWVsaWEtZWFyaGFydCIsIi9wL3RoZS1vYnNlc3NlZC13aWxsLWluaGVyaXQtdGhlLWVhcnRoIiwiL3AvcGljay11cC1vbmUtbmV3LWJhbGwtdGhpcy13ZWVrZW5kIl19LCIvYW5vbnltb3VzLW1vbnRobHktYWdlbnQtZmVlZGJhY2siOnsiciI6W10sIm0iOlsiL3AvYXR0ZW50aW9uIiwiL3Avc28tYmVhdXRpZnVsLW9yLXNvLXdoYXQiLCIvcC9hdmlhdGlvbi1hLXRocmVhZCJdfSwiL2FzaXN0ZW5jaWEtcGFyYS1lbC1wYWdvLWluaWNpYWwta2VudHVja3kiOnsiciI6W10sIm0iOlsiL3AvY29tZS1tZWV0LWFsbC1teS1mcmllbmRzIiwiL3Avc3BlY2llcy00MC1pcy1wbGF5aW5nLWhhcmQtdG8tZ2V0IiwiL3AvaXQtcy1oYXJzaCJdfSwiL2Fzc3VtYWJsZS1tb3J0Z2FnZXMtbG91aXN2aWxsZSI6eyJyIjpbIi9wL3RoZS0yMS1jaXR5IiwiL3AvbmFzaHZpbGxlLXNldmVuLXllYXJzLWFnbyIsIi9wL3RoZS1vbmVzLXRoYXQtY291bnQiXSwibSI6WyIvcC9pLWZpbmFsbHktc3RvcHBlZC1zYXlpbmctbm90LW1lIiwiL3AvcGFydHktdGltZSIsIi9wL2Rvbi10LWxldC10aGUtbGFzdC1vbmUtc291ci15b3UiXX0sIi9iZWVjaG1vbnQtc291dGgtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6eyJyIjpbXSwibSI6WyIvcC9jaGVjay15b3VyLXNjcmVlbi10aW1lLXRoYXQtcy15b3VyLWFuc3dlciIsIi9wL2xpZmUtcmV3YXJkcy1lZmZvcnQtY3JhenktbXVsdGlwbGllcnMiLCIvcC9teS1kYWQtZ290LXdheS1jb29sZXItYWZ0ZXItNjAiXX0sIi9iZWxrbmFwLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiOnsiciI6W10sIm0iOlsiL3AvdGhleS1rbm93LXRoZXktcmUtb24tY2FtZXJhIiwiL3AvdGhlLWZhY2UtaW4tdGhlLXNreSIsIi9wL3NwcmVhZC1vdXQiXX0sIi9iZXN0LWJyb2tlcmFnZS1mb3ItbmV3LWFnZW50cy1sb3Vpc3ZpbGxlIjp7InIiOlsiL3AvdGhlLW1vcm5pbmctYmVyZ2Vyb24tcy10b3AtMjUtcGVvcGxlLXRvLWtub3ctaW4tcmVhbC1lc3RhdGUiLCIvcC95b3VyLWJvZHktaXMtYS10ZW1wbGUiLCIvcC9oYXBweS1hbmQtaGVhbHRoeS1pcy1hLWJ1c2luZXNzLW1vZGVsIl0sIm0iOlsiL3AvaWYtaXQtZG9lc24tdC1zYXkteW91LWNhbi10LXRoZW4teW91LWNhbiIsIi9wL2ZlYXItbGl2ZXMtaW4tdGhlLXVuY2VydGFpbnR5IiwiL3AvaS1nYXZlLWF3YXktbXktY29udHJhY3RvciJdfSwiL2Jlc3QtbmVpZ2hib3Job29kcy1taWR0ZXJtLXJlbnRhbC1sb3Vpc3ZpbGxlIjp7InIiOlsiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIl0sIm0iOlsiL3AvZGVhZC1waG9uZXMiLCIvcC9ncmF0ZWZ1bCIsIi9wL3RoZS1tYW4teW91LXVzZWQtdG8tYmUiXX0sIi9iZXN0LXRpbWUtdG8tc2VsbC1hLWhvdXNlLWluLWxvdWlzdmlsbGUiOnsiciI6WyIvcC90aGUtb3Blbi1ob3VzZS1sb3N0LXRvLXRoZS1yZWQtem9uZSIsIi9wL2Etc3VuZGF5LWVtYWlsLWZyb20tbWUiLCIvcC90aGUtcG90aG9sZSIsIi9wL3RoZS1saXR0bGUtam95cyJdLCJtIjpbIi9wL3lvdXItbW9ybmluZy1zdGFydHMtdGhlLW5pZ2h0LWJlZm9yZSIsIi9wL3Jvb2tpZS1udW1iZXJzIiwiL3AvdGVuLXdlZWtzLW91dCJdfSwiL2Jsb2ciOnsiciI6W10sIm0iOlsiL3AvYW5vdGhlci1saWZlLXVwZGF0ZSIsIi9wL3RoZS1vcGVuLWhvdXNlLWxvc3QtdG8tdGhlLXJlZC16b25lIiwiL3AvdGltZS10by1ldm9sdmUiXX0sIi9ib3VyYm9uLXRyYWlsLWFpcmJuYi1pbnZlc3RtZW50Ijp7InIiOlsiL3AvdGhlLXBsYWNlLXRoZXktdHJpZWQtdG8tZHJvd24iLCIvcC9sb3Vpc3ZpbGxlLWlzLWJ1aWxkaW5nLWl0cy1mdXR1cmUtYXJlLXlvdS1pbiIsIi9wL3RoZS1jYW5hcnktaW4tdGhlLXJpY2tob3VzZSJdLCJtIjpbIi9wL2NvbWUtbWVldC1hbGwtbXktZnJpZW5kcyIsIi9wL3RoZS1vYnNlc3NlZC13aWxsLWluaGVyaXQtdGhlLWVhcnRoIiwiL3AvaGFwcHktYW5kLWhlYWx0aHktaXMtYS1idXNpbmVzcy1tb2RlbCJdfSwiL2JyaW5nLXdpbm5lci1yZWFsdHktdG8teW91ci1tYXJrZXQiOnsiciI6W10sIm0iOlsiL3Avbm8tcGl0Y2hlcy1qdXN0LXBpenphIiwiL3AvYS1zbG93LW1vcm5pbmctY29zdHMtbW9yZS10aGFuLXRoZS1tb3JuaW5nIiwiL3AvZXZlcnl0aGluZy1zLWFscmVhZHktZG9uZSJdfSwiL2JycnJyLW1ldGhvZC1sb3Vpc3ZpbGxlLWtlbnR1Y2t5LTIwMjYiOnsiciI6WyIvcC9ib3VnaHQtYXQtMTA1ay13b3J0aC0yMzhrLWJvdGgtc2lkdHdvLXBlb3BsZS13YWxrZWQtb3V0LW9mLW15LWNsb3NpbmctdGh1cnNkYXktYW5kLWJvdGgtb2YtdGhlbS13b24iLCIvcC9sb3Vpc3ZpbGxlLWlzLWJ1aWxkaW5nLWl0cy1mdXR1cmUtYXJlLXlvdS1pbiIsIi9wL21heWJlLWktbS1jcmF6eSIsIi9wL2ZpbmQtdGhlLWN1cmlvdXMtcGVvcGxlLWJlLXRoZS1jdXJpb3VzLXBlb3BsZSJdLCJtIjpbIi9wL3RoZS1yb2JvdHMtYWxyZWFkeS1saXZlLWhlcmUiLCIvcC9kb24tdC1sZXQtdGhlLWxhc3Qtb25lLXNvdXIteW91IiwiL3AvZ3JhdGVmdWwiXX0sIi9idWxsaXR0LWNvdW50eS1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6eyJyIjpbIi9wL3RoZS1jYW5hcnktaW4tdGhlLXJpY2tob3VzZSJdLCJtIjpbIi9wL3NvcnJ5LWNyb3NsZXkiLCIvcC9mZWFyLWxpdmVzLWluLXRoZS11bmNlcnRhaW50eSIsIi9wL29uZS10by1maXZlLW9uLWZyaWRheSJdfSwiL2J1bGxpdHQtc3BlbmNlci1jb3VudHktbGFuZC1hY3JlYWdlLWd1aWRlIjp7InIiOlsiL3Avbm9ib2R5LXRvbGQtbG91aXN2aWxsZS10by1zbG93LWRvd24iLCIvcC90cnV0aC1hbmQtbGllcyIsIi9wL3JpZ2h0LXR3aWNlIl0sIm0iOlsiL3AvdGhlLWZ1dHVyZS1oYXMtYS1waHlzaWNhbC1hZGRyZXNzLTc0YWIiLCIvcC95b3VyLWJvZHktaXMtYS10ZW1wbGUiLCIvcC9rZXZpbi1vLWxlYXJ5LWRpZG4tdC1rbm93Il19LCIvYnV5Ijp7InIiOltdLCJtIjpbIi9wL3RoZS1zdHVmZi10aGF0LWxpZ2h0cy15b3UtdXAiLCIvcC9zdHJpcC1hd2F5LXRoZS1ub2lzZSIsIi9wL3RoZS1wb3N0LWNhbmNlci1zY2FyZS1vZi0yMDI2Il19LCIvYnV5LWJveC1zaWdudXAiOnsiciI6W10sIm0iOlsiL3AvdGhlLWJyYW5jaCIsIi9wL2hhdmUtYS1saXR0bGUtZmFpdGgtaW4tbWUiLCIvcC9saWZlLXJld2FyZHMtZWZmb3J0LWNyYXp5LW11bHRpcGxpZXJzIl19LCIvYnV5ZXItYWdlbmN5LWFncmVlbWVudC1rZW50dWNreS1uYXItc2V0dGxlbWVudCI6eyJyIjpbXSwibSI6WyIvcC9pdC1zLW5vdC13ZWlyZC1pdC1zLWp1c3QtZGlmZmVyZW50IiwiL3AvcGFydHktdGltZSIsIi9wL2lkZWFzLWRvbi10LWhhdmUtdG8tZGllLWluLWJhc2VtZW50cy1hbnltb3JlIl19LCIvYnV5aW5nLWFjcmVhZ2Uta2VudHVja3ktd2VsbHMtc2VwdGljLXpvbmluZyI6eyJyIjpbXSwibSI6WyIvcC9yYWlueS13ZWVrZW5kLWdvb2QtYm9vay1nby1jcmVhdGUtc29tZXRoaW5nIiwiL3Avam9lLXdha2VzLXVwLWZyYW5rLWdvZXMtdG8tYmVkLXdoYXQtYWJvdXQteW91IiwiL3AvaW5jbHVkaW5nLW1vZGVyYXRpb24iXX0sIi9idXlpbmctZmFybWxhbmQtaW4ta2VudHVja3ktZ3VpZGUiOnsiciI6W10sIm0iOlsiL3AvZ2V0LW91dC1vZi15b3VyLWdvbGRlbi1hZ2UtbGV0LXMtY3JlYXRlLW5vdyIsIi9wL3doZW4tcy10aGUtbGFzdC10aW1lLXlvdS1jcmVhdGVkLXNvbWV0aGluZyIsIi9wL2J1aWxkaW5nLWEtc3RpbGwtdG8tc2xvdy1kb3duLXRoZS1hLWhlYWx0aC1zY2FyZS1hLWNsZWFyLWJpbGwtb2YtaGVhbHRoLWFuZC1hLW51bWJlci1teS1zdXJnZW9uLWdhdmUiXX0sIi9jYWxpZm9ybmlhLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiOnsiciI6WyIvcC9vbG1zdGVkLWRlc2lnbmVkLXlvdXItcHJvcGVydHktdmFsdWUiLCIvcC9sb3Vpc3ZpbGxlLWRvZXNuLXQtYnJhZy1zby1pLXdpbGwiLCIvcC9hYmUtbGluY29sbi13YWxrZWQtb24td2F0ZXIiXSwibSI6WyIvcC93ZS1nZXQtbm8tc2Vjb25kLWNoYW5jZS1pbi10aGlzLWxpZmUiLCIvcC95b3VyLW1vcm5pbmctc3RhcnRzLXRoZS1uaWdodC1iZWZvcmUiLCIvcC9teS1kYWQtZ290LXdheS1jb29sZXItYWZ0ZXItNjAiXX0sIi9jYW1lcm9uLWtlZWhuIjp7InIiOltdLCJtIjpbIi9wL3RoZXkta25vdy10aGV5LXJlLW9uLWNhbWVyYSIsIi9wL25vYm9keS13cm90ZS1hLXN3YW4tc29uZy1mb3ItdGhlLWVsZXZhdG9yLW9wZXJhdG9yIiwiL3AvY2hlY2steW91ci1zY3JlZW4tdGltZS10aGF0LXMteW91ci1hbnN3ZXIiXX0sIi9jYW1wLXRheWxvci1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjp7InIiOltdLCJtIjpbIi9wL3lvdS1sb29rLWxpa2UteW91LW5lZWQtYS1odWciLCIvcC9uby1vbmUtcy1jb21pbmciLCIvcC9zby1iZWF1dGlmdWwtb3Itc28td2hhdCJdfSwiL2NhcC1yYXRlLWV4cGxhaW5lZC1jb21tZXJjaWFsLXJlYWwtZXN0YXRlIjp7InIiOlsiL3AvbmFzaHZpbGxlLXNldmVuLXllYXJzLWFnbyIsIi9wL3RoZS1zdHVmZi10aGF0LWxpZ2h0cy15b3UtdXAiXSwibSI6WyIvcC9pLWdhdmUtYXdheS1teS1jb250cmFjdG9yIiwiL3AvaW52ZW50b3J5LXN1cmdlLWRlcmJ5LXdlZWstbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS0yMDI2IiwiL3Avc3BlY2llcy00MC1pcy1wbGF5aW5nLWhhcmQtdG8tZ2V0Il19LCIvY2hlcm9rZWUtdHJpYW5nbGUtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6eyJyIjpbIi9wL29sbXN0ZWQtZGVzaWduZWQteW91ci1wcm9wZXJ0eS12YWx1ZSJdLCJtIjpbIi9wL2ktZmluYWxseS1zdG9wcGVkLXNheWluZy1ub3QtbWUiLCIvcC9yb29raWUtbnVtYmVycyIsIi9wL2FnZW5jeSJdfSwiL2NsYXJrc3ZpbGxlLWluLXJlYWwtZXN0YXRlLWd1aWRlIjp7InIiOlsiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIiwiL3Avb2xtc3RlZC1kZXNpZ25lZC15b3VyLXByb3BlcnR5LXZhbHVlIl0sIm0iOlsiL3AvdGhlLWZhY2UtaW4tdGhlLXNreSIsIi9wL3JpZ2h0LWlkZWEtd3JvbmctYmFycmVsIiwiL3AvcmVkLWNsYXktc3RyYXlzLWFpcmJuYi10by1tYWRpc29uLXNxdWFyZS1nYXJkZW4iXX0sIi9jbGlmdG9uLWNsaWZ0b24taGVpZ2h0cy1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjp7InIiOltdLCJtIjpbIi9wL2F2aWF0aW9uLWEtdGhyZWFkIiwiL3AvdGhlLXdvbmRlci10aGF0LXMtYWxyZWFkeS10aGVyZSIsIi9wL2V2ZXJ5Ym9keS1zLWdvdC10aGVpci10aGlua2luZy1jYXBzLW9uIl19LCIvY2xvc2luZy1jb3N0cy1rZW50dWNreS1idXllci1zZWxsZXIiOnsiciI6W10sIm0iOlsiL3Ava2VlcC1wZWRhbGluZyIsIi9wL2dyb2dneS1pcy10aGUtZXhjZXB0aW9uLW5vdyIsIi9wL3dhbGstaW4td2l0aC1zb2x1dGlvbnMiXX0sIi9jb2xsZWVuLXJlaWxseSI6eyJyIjpbXSwibSI6WyIvcC90aGUtYmlyZHMta2VlcC1jb21pbmciLCIvcC9ncmVhdC1uZWlnaGJvcnMiLCIvcC9iaXJkcy1iaXJkcy1iaXJkcyJdfSwiL2NvbW1lcmNpYWwtaW5xdWlyeSI6eyJyIjpbXSwibSI6WyIvcC9pZi1pdC1kb2Vzbi10LXNheS15b3UtY2FuLXQtdGhlbi15b3UtY2FuIiwiL3AvZG9uLXQtd2lzaC1hd2F5LXlvdXItdGltZSIsIi9wL2xlYWQtb3ItZ2V0LWxlZCJdfSwiL2NvbW1lcmNpYWwtcmVhbC1lc3RhdGUtZHVlLWRpbGlnZW5jZS1jaGVja2xpc3QiOnsiciI6W10sIm0iOlsiL3AvZ29pbmctZnJvbS1jaGlwcy10by1zdGVhayIsIi9wL2RlYWQtcGhvbmVzIiwiL3AvdGhlLW1hcmtldC1pcy1hcmd1aW5nLXdpdGgtaXRzZWxmIl19LCIvY29tbWVyY2lhbC1yZWFsLWVzdGF0ZS1sb2Fucy1rZW50dWNreSI6eyJyIjpbXSwibSI6WyIvcC9zZW5kLWNsYXVkZS15b3VyLWNocm9tb3NvbWVzIiwiL3Avc2V0dGluZy11cC1mdXR1cmUtcm9iIiwiL3AvZmluZGluZy1nb29kLWNvbnRyYWN0b3JzLWlzLWJyb2tlbi1oZXJlLXMtdGhlLWZpeCJdfSwiL2NvbW1lcmNpYWwtdGVuYW50LXBsYWNlbWVudC1sb3Vpc3ZpbGxlIjp7InIiOlsiL3AvYm91Z2h0LWF0LTEwNWstd29ydGgtMjM4ay1ib3RoLXNpZHR3by1wZW9wbGUtd2Fsa2VkLW91dC1vZi1teS1jbG9zaW5nLXRodXJzZGF5LWFuZC1ib3RoLW9mLXRoZW0td29uIl0sIm0iOlsiL3AvNDctbW9yZS1wZXItZG9sbGFyIiwiL3AvZml2ZS1odW5kcmVkLWZpZnR5LW9uZS1kNGI4IiwiL3Avc3ByZWFkLW91dCJdfSwiL2NvbW1pdG1lbnQtdG8tY29tbXVuaXR5LWltcGFjdCI6eyJyIjpbXSwibSI6WyIvcC9ldmVyeWJvZHktbmVlZHMtYS1zZWNvbmQtdGhpbmciLCIvcC93aGVuLXRoZS1sZXZlZS1icmVha3MiLCIvcC9waWNrLXVwLW9uZS1uZXctYmFsbC10aGlzLXdlZWtlbmQiXX0sIi9jb21taXRtZW50LXRvLWNvbW11bml0eS1pbXBhY3QtMiI6eyJyIjpbXSwibSI6WyIvcC9hdHRlbnRpb24iLCIvcC9pdC1zLWhhcnNoIiwiL3AvYS1taXh0YXBlLXN0YXBsZSJdfSwiL2NvbW1pdG1lbnQtdG8tY29tbXVuaXR5LWltcGFjdC0zIjp7InIiOltdLCJtIjpbIi9wL3RoZS1tY3JpYi1pcy1iYWNrIiwiL3AvZmluZC10aGUtY3VyaW91cy1wZW9wbGUtYmUtdGhlLWN1cmlvdXMtcGVvcGxlIiwiL3Avc2V2ZW4tY2FyZGlnYW5zIl19LCIvY29tbWl0bWVudC10by1jb21tdW5pdHktaW1wYWN0LTQiOnsiciI6W10sIm0iOlsiL3AvbW9yZS1zdXBwbHktd2F0Y2gtY2xvc2VseSIsIi9wL2VpZ2h0eS1vbmUiLCIvcC90ZW4td2Vla3Mtb3V0Il19LCIvY29tcHJhbmRvLXN1LXByaW1lcmEtY2FzYS1lbi1sb3Vpc3ZpbGxlIjp7InIiOltdLCJtIjpbIi9wL3doYXRldmVyLWhhcHBlbmVkLXRvLWFtZWxpYS1lYXJoYXJ0IiwiL3AvbGlmZS11cGRhdGUiLCIvcC9ub2JvZHktcHV0cy1iYWJ5LWluLWEtYm94Il19LCIvY29uZ29sZXNlLWNvbW11bml0eS1ncm93dGgtcmVhbC1lc3RhdGUtbG91aXN2aWxsZSI6eyJyIjpbXSwibSI6WyIvcC9maW5kaW5nLXdoYXQtd29ya3MiLCIvcC9hbm90aGVyLWxpZmUtdXBkYXRlIiwiL3AvdGhlLW1hbi15b3UtdXNlZC10by1iZSJdfSwiL2NvbnRhY3Qtb3VyLXRlYW0iOnsiciI6W10sIm0iOlsiL3AvdGhlLWxpdHRsZS1qb3lzIiwiL3AvbW9ybmluZy13b29kLXNlbHR6ZXItd2F0ZXItYW5kLWEtMTItYmFnLW9mLWZpYmVyIiwiL3AvZGlkLXlvdS1rbm93LXRheWxvci1zd2lmdC1nb3QtbWFycmllZC1hcGktY3V0LXR3ZW50eS13b3Jkcy1vdXQtb2YtbXktZmVlZC1hbmQtZ290LWFuLWhvdXItYW5kLWEtaGFsZiJdfSwiL2NvbnRlbnQtYWktdXNlLXBvbGljeSI6eyJyIjpbXSwibSI6WyIvcC9sZXQtdGhpcy1iZS1hLWtlcm5lbCIsIi9wL2dyZWF0LW5laWdoYm9ycyIsIi9wL2l0LXMtbm90LXdlaXJkLWl0LXMtanVzdC1kaWZmZXJlbnQiXX0sIi9jb252ZXJ0LXJlbnRhbC10by1taWR0ZXJtLXJlbnRhbC1sb3Vpc3ZpbGxlLWludmVzdG9yLWd1aWRlIjp7InIiOltdLCJtIjpbIi9wL3RoZS1yb2JvdHMtYWxyZWFkeS1saXZlLWhlcmUiLCIvcC9zdHJpcC1hd2F5LXRoZS1ub2lzZSIsIi9wL3NvcnJ5LWNyb3NsZXkiXX0sIi9jb3Jwb3JhdGUtcmVsb2NhdGlvbi1ob3VzaW5nLXVwcy1mb3JkLWdlLWFwcGxpYW5jZXMtbG91aXN2aWxsZSI6eyJyIjpbIi9wL2xvdWlzdmlsbGUtZG9lc24tdC1icmFnLXNvLWktd2lsbCJdLCJtIjpbIi9wL3RoZS1tYXJrZXQtZXZlcnlvbmUtc2FpZC13YXMtZnJvemVuIiwiL3AvdGltZS10by1ldm9sdmUiLCIvcC90aGUtbWFya2V0LWlzLWFyZ3Vpbmctd2l0aC1pdHNlbGYiXX0sIi9jb3Jwb3JhdGUtcmVsb2NhdGlvbi1sb3Vpc3ZpbGxlIjp7InIiOlsiL3AvdGhlLW5pbC1lcmEtb2YtcmVhbC1lc3RhdGUiXSwibSI6WyIvcC9zcGVjaWVzLTQwLWlzLXBsYXlpbmctaGFyZC10by1nZXQiLCIvcC9tb3JlLXN1cHBseS13YXRjaC1jbG9zZWx5IiwiL3AvZGVhZC1waG9uZXMiXX0sIi9jb3N0LXNlZ3JlZ2F0aW9uLWNvbW1lcmNpYWwtcmVhbC1lc3RhdGUiOnsiciI6WyIvcC9idWZmZXR0LWp1c3QtcGxhY2VkLWhpcy1iZXQiLCIvcC9tYXliZS1pLW0tY3JhenkiXSwibSI6WyIvcC9iaXJkcy1iaXJkcy1iaXJkcyIsIi9wL2luY2x1ZGluZy1tb2RlcmF0aW9uIiwiL3AvdGhlLWZ1dHVyZS1oYXMtYS1waHlzaWNhbC1hZGRyZXNzLTc0YWIiXX0sIi9jb3N0b3MtZGUtY2llcnJlLWtlbnR1Y2t5LWd1aWEtZW4tZXNwYW5vbCI6eyJyIjpbXSwibSI6WyIvcC95b3VyLWJvZHktaXMtYS10ZW1wbGUiLCIvcC9zby1iZWF1dGlmdWwtb3Itc28td2hhdCIsIi9wL2Fub3RoZXItbGlmZS11cGRhdGUiXX0sIi9jcmVjaW1pZW50by1jb211bmlkYWQtaGlzcGFuYS1sb3Vpc3ZpbGxlLWJpZW5lcy1yYWljZXMiOnsiciI6W10sIm0iOlsiL3AvYXZpYXRpb24tYS10aHJlYWQiLCIvcC95b3UtcmUtYWxyZWFkeS1haGVhZC1vZi05Ny04LW9mLXBlb3BsZSIsIi9wL2ZlYXItbGl2ZXMtaW4tdGhlLXVuY2VydGFpbnR5Il19LCIvY3JlZGl0LXJlcGFpci1iZWZvcmUtYnV5aW5nLWEtaG91c2Uta2VudHVja3kiOnsiciI6W10sIm0iOlsiL3Avd2Fsay1pbi13aXRoLXNvbHV0aW9ucyIsIi9wL2l0LXMtaGFyc2giLCIvcC90aGUtbWFuLXlvdS11c2VkLXRvLWJlIl19LCIvY3Jlc2NlbnQtaGlsbC1vcmlnaW5hbC1oaWdobGFuZHMta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOnsiciI6W10sIm0iOlsiL3Avam9lLXdha2VzLXVwLWZyYW5rLWdvZXMtdG8tYmVkLXdoYXQtYWJvdXQteW91IiwiL3AvdGVuLXdlZWtzLW91dCIsIi9wL2V2ZXJ5Ym9keS1zLWdvdC10aGVpci10aGlua2luZy1jYXBzLW9uIl19LCIvZGlzcGxhY2VkLXN0b3JtLWluc3VyYW5jZS1ob3VzaW5nLWtlbnR1Y2t5Ijp7InIiOltdLCJtIjpbIi9wL3Jvb2tpZS1udW1iZXJzIiwiL3Avc3ByZWFkLW91dCIsIi9wL3RoZS1vcGVuLWhvdXNlLWxvc3QtdG8tdGhlLXJlZC16b25lIl19LCIvZGlzdHJlc3NlZC1ob21lLXNlbGxlcnMta2VudHVja3kiOnsiciI6WyIvcC9zb3JyeS1jcm9zbGV5Il0sIm0iOlsiL3Avbm8tb25lLXMtY29taW5nIiwiL3AvbGV0LXRoaXMtYmUtYS1rZXJuZWwiLCIvcC9ub2JvZHktcHV0cy1iYWJ5LWluLWEtYm94Il19LCIvZGlzdHJlc3NlZC1tdWx0aWZhbWlseS1zZWxsZXJzLWxvdWlzdmlsbGUiOnsiciI6WyIvcC90aGUtb25lcy10aGF0LWNvdW50IiwiL3AvdGhlLW5pbC1lcmEtb2YtcmVhbC1lc3RhdGUiLCIvcC9zaGluZS1hLWxpZ2h0LW9uLWl0IiwiL3Avc3RyaXAtYXdheS10aGUtbm9pc2UiXSwibSI6WyIvcC9zZW5kLWNsYXVkZS15b3VyLWNocm9tb3NvbWVzIiwiL3AveW91ci1tb3JuaW5nLXN0YXJ0cy10aGUtbmlnaHQtYmVmb3JlIiwiL3AvdGhlLW9ic2Vzc2VkLXdpbGwtaW5oZXJpdC10aGUtZWFydGgiXX0sIi9kaXZlcnNlLWluY29tZS1vcHBvcnR1bml0aWVzIjp7InIiOltdLCJtIjpbIi9wL3doZW4tdGhlLWxldmVlLWJyZWFrcyIsIi9wLzQ3LW1vcmUtcGVyLWRvbGxhciIsIi9wL2RpZC15b3Uta25vdy10YXlsb3Itc3dpZnQtZ290LW1hcnJpZWQtYXBpLWN1dC10d2VudHktd29yZHMtb3V0LW9mLW15LWZlZWQtYW5kLWdvdC1hbi1ob3VyLWFuZC1hLWhhbGYiXX0sIi9kaXZlcnNlLWluY29tZS1vcHBvcnR1bml0aWVzLTIiOnsiciI6W10sIm0iOlsiL3AvdGhlLWJpcmRzLWtlZXAtY29taW5nIiwiL3AvdGhlLWJyYW5jaCIsIi9wL2hhcHB5LWFuZC1oZWFsdGh5LWlzLWEtYnVzaW5lc3MtbW9kZWwiXX0sIi9kaXZlcnNlLWluY29tZS1vcHBvcnR1bml0aWVzLTMiOnsiciI6W10sIm0iOlsiL3Ava2VlcC1wZWRhbGluZyIsIi9wL3NldHRpbmctdXAtZnV0dXJlLXJvYiIsIi9wL2Rvbi10LWxldC10aGUtbGFzdC1vbmUtc291ci15b3UiXX0sIi9kaXZlcnNlLWluY29tZS1vcHBvcnR1bml0aWVzLTQiOnsiciI6W10sIm0iOlsiL3AvZXZlcnlib2R5LW5lZWRzLWEtc2Vjb25kLXRoaW5nIiwiL3AvdGhleS1rbm93LXRoZXktcmUtb24tY2FtZXJhIiwiL3AvdGhlLWxpdHRsZS1qb3lzIl19LCIvZG91Z2xhc3MtaGlsbHMta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOnsiciI6W10sIm0iOlsiL3AvZ2V0LW91dC1vZi15b3VyLWdvbGRlbi1hZ2UtbGV0LXMtY3JlYXRlLW5vdyIsIi9wL3NldmVuLWNhcmRpZ2FucyIsIi9wL3lvdS1sb29rLWxpa2UteW91LW5lZWQtYS1odWciXX0sIi9kb3VnbGFzcy1sb29wLWJvbm55Y2FzdGxlLXJlYWwtZXN0YXRlLWd1aWRlIjp7InIiOlsiL3Avb2xtc3RlZC1kZXNpZ25lZC15b3VyLXByb3BlcnR5LXZhbHVlIl0sIm0iOlsiL3AvZ29pbmctZnJvbS1jaGlwcy10by1zdGVhayIsIi9wL29uZS10by1maXZlLW9uLWZyaWRheSIsIi9wL2ZpbmRpbmctZ29vZC1jb250cmFjdG9ycy1pcy1icm9rZW4taGVyZS1zLXRoZS1maXgiXX0sIi9kb3duLXBheW1lbnQtYXNzaXN0YW5jZS1wcm9ncmFtcy1rZW50dWNreSI6eyJyIjpbIi9wL3RoZS1vbmVzLXRoYXQtY291bnQiXSwibSI6WyIvcC9pLWZpbmFsbHktc3RvcHBlZC1zYXlpbmctbm90LW1lIiwiL3AvZ3JhdGVmdWwiLCIvcC9kb24tdC13aXNoLWF3YXkteW91ci10aW1lIl19LCIvZG93bnNpemluZy1sb3Vpc3ZpbGxlLWd1aWRlIjp7InIiOlsiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIl0sIm0iOlsiL3AvYWdlbmN5IiwiL3AvYS1taXh0YXBlLXN0YXBsZSIsIi9wL2J1aWxkaW5nLWEtc3RpbGwtdG8tc2xvdy1kb3duLXRoZS1hLWhlYWx0aC1zY2FyZS1hLWNsZWFyLWJpbGwtb2YtaGVhbHRoLWFuZC1hLW51bWJlci1teS1zdXJnZW9uLWdhdmUiXX0sIi9kb3dudG93bi1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjp7InIiOltdLCJtIjpbIi9wL3JpZ2h0LWlkZWEtd3JvbmctYmFycmVsIiwiL3AvZWlnaHR5LW9uZSIsIi9wL215LWRhZC1nb3Qtd2F5LWNvb2xlci1hZnRlci02MCJdfSwiL2RzY3ItbG9hbi1jYWxjdWxhdG9yLWtlbnR1Y2t5Ijp7InIiOltdLCJtIjpbIi9wL2F0dGVudGlvbiIsIi9wL2tldmluLW8tbGVhcnktZGlkbi10LWtub3ciLCIvcC93aGVuLXMtdGhlLWxhc3QtdGltZS15b3UtY3JlYXRlZC1zb21ldGhpbmciXX0sIi9kc2NyLWxvYW5zLWtlbnR1Y2t5LWludmVzdG9ycyI6eyJyIjpbIi9wL3RoZS1vbmVzLXRoYXQtY291bnQiLCIvcC9ib3VnaHQtYXQtMTA1ay13b3J0aC0yMzhrLWJvdGgtc2lkdHdvLXBlb3BsZS13YWxrZWQtb3V0LW9mLW15LWNsb3NpbmctdGh1cnNkYXktYW5kLWJvdGgtb2YtdGhlbS13b24iXSwibSI6WyIvcC9idWZmZXR0LWp1c3QtcGxhY2VkLWhpcy1iZXQiLCIvcC9zaGluZS1hLWxpZ2h0LW9uLWl0IiwiL3AvcmVkLWNsYXktc3RyYXlzLWFpcmJuYi10by1tYWRpc29uLXNxdWFyZS1nYXJkZW4iXX0sIi9lbGV2YXRlLWNvbm5lY3Rpb25zLWNybSI6eyJyIjpbXSwibSI6WyIvcC9waWNrLXVwLW9uZS1uZXctYmFsbC10aGlzLXdlZWtlbmQiLCIvcC9ub2JvZHktd3JvdGUtYS1zd2FuLXNvbmctZm9yLXRoZS1lbGV2YXRvci1vcGVyYXRvciIsIi9wL2ZpbmRpbmctd2hhdC13b3JrcyJdfSwiL2VsaXphYmV0aHRvd24ta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOnsiciI6WyIvcC90cnV0aC1hbmQtbGllcyIsIi9wL2xvdWlzdmlsbGUtaXMtYnVpbGRpbmctaXRzLWZ1dHVyZS1hcmUteW91LWluIl0sIm0iOlsiL3AvaW52ZW50b3J5LXN1cmdlLWRlcmJ5LXdlZWstbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS0yMDI2IiwiL3AvbGlmZS11cGRhdGUiLCIvcC9yYWlueS13ZWVrZW5kLWdvb2QtYm9vay1nby1jcmVhdGUtc29tZXRoaW5nIl19LCIvZW1wbG95ZXItcmVsb2NhdGlvbi1wYXJ0bmVycyI6eyJyIjpbIi9wL2xvdWlzdmlsbGUtZG9lc24tdC1icmFnLXNvLWktd2lsbCJdLCJtIjpbIi9wL3RoZS13ZWJzaXRlLWluLXRoZS1ob3QtdHViIiwiL3AvY29tZS1tZWV0LWFsbC1teS1mcmllbmRzIiwiL3AvdGhlLW1jcmliLWlzLWJhY2siXX0sIi9lbXBvd2VyZWQtYWdlbnRzLXdpdGgtdGVjaG5vbG9neSI6eyJyIjpbXSwibSI6WyIvcC9pZGVhcy1kb24tdC1oYXZlLXRvLWRpZS1pbi1iYXNlbWVudHMtYW55bW9yZSIsIi9wL2ZpbmQtdGhlLWN1cmlvdXMtcGVvcGxlLWJlLXRoZS1jdXJpb3VzLXBlb3BsZSIsIi9wL2xpZmUtcmV3YXJkcy1lZmZvcnQtY3JhenktbXVsdGlwbGllcnMiXX0sIi9lbXBvd2VyaW5nLWFnZW50cy13aXRoLXRlY2hub2xvZ3kiOnsiciI6W10sIm0iOlsiL3AvaGF2ZS1hLWxpdHRsZS1mYWl0aC1pbi1tZSIsIi9wL3dlLWdldC1uby1zZWNvbmQtY2hhbmNlLWluLXRoaXMtbGlmZSIsIi9wL2NoZWNrLXlvdXItc2NyZWVuLXRpbWUtdGhhdC1zLXlvdXItYW5zd2VyIl19LCIvZW1wb3dlcmluZy1hZ2VudHMtd2l0aC10ZWNobm9sb2d5LTIiOnsiciI6W10sIm0iOlsiL3AvdGhlLXN0dWZmLXRoYXQtbGlnaHRzLXlvdS11cCIsIi9wL2Etc3VuZGF5LWVtYWlsLWZyb20tbWUiLCIvcC9pZi1pdC1kb2Vzbi10LXNheS15b3UtY2FuLXQtdGhlbi15b3UtY2FuIl19LCIvZW1wb3dlcmluZy1hZ2VudHMtd2l0aC10ZWNobm9sb2d5LTMiOnsiciI6W10sIm0iOlsiL3AvbW9ybmluZy13b29kLXNlbHR6ZXItd2F0ZXItYW5kLWEtMTItYmFnLW9mLWZpYmVyIiwiL3AvaS1nYXZlLWF3YXktbXktY29udHJhY3RvciIsIi9wL2Etc2xvdy1tb3JuaW5nLWNvc3RzLW1vcmUtdGhhbi10aGUtbW9ybmluZyJdfSwiL2VtcG93ZXJpbmctYWdlbnRzLXdpdGgtdGVjaG5vbG9neS00Ijp7InIiOltdLCJtIjpbIi9wL3RoZS1wb3N0LWNhbmNlci1zY2FyZS1vZi0yMDI2IiwiL3AvdGhlLXdvbmRlci10aGF0LXMtYWxyZWFkeS10aGVyZSIsIi9wL3doYXRldmVyLWhhcHBlbmVkLXRvLWFtZWxpYS1lYXJoYXJ0Il19LCIvZmFpci1ob3VzaW5nLWFjdC1ncm91cC1ob21lcy1yZWNvdmVyeS1yZXNpZGVuY2VzLWxvdWlzdmlsbGUiOnsiciI6W10sIm0iOlsiL3AvZml2ZS1odW5kcmVkLWZpZnR5LW9uZS1kNGI4IiwiL3AvdGhlLWZhY2UtaW4tdGhlLXNreSIsIi9wL2xlYWQtb3ItZ2V0LWxlZCJdfSwiL2ZhaXJkYWxlLWt5LXJlYWwtZXN0YXRlLWd1aWRlIjp7InIiOltdLCJtIjpbIi9wL3RoZS1wbGFjZS10aGV5LXRyaWVkLXRvLWRyb3duIiwiL3Avbm8tcGl0Y2hlcy1qdXN0LXBpenphIiwiL3AvdGhlLWNhbmFyeS1pbi10aGUtcmlja2hvdXNlIl19LCIvZmFxIjp7InIiOltdLCJtIjpbIi9wL2V2ZXJ5dGhpbmctcy1hbHJlYWR5LWRvbmUiLCIvcC9wYXJ0eS10aW1lIiwiL3AvZ3JvZ2d5LWlzLXRoZS1leGNlcHRpb24tbm93Il19LCIvZmFybXMtbGFuZC1hY3JlYWdlLW5lYXItbG91aXN2aWxsZSI6eyJyIjpbIi9wL25vYm9keS10b2xkLWxvdWlzdmlsbGUtdG8tc2xvdy1kb3duIl0sIm0iOlsiL3AvaXQtcy1ub3Qtd2VpcmQtaXQtcy1qdXN0LWRpZmZlcmVudCIsIi9wL3lvdS1yZS1hbHJlYWR5LWFoZWFkLW9mLTk3LTgtb2YtcGVvcGxlIiwiL3Avbm9ib2R5LXdyb3RlLWEtc3dhbi1zb25nLWZvci10aGUtZWxldmF0b3Itb3BlcmF0b3IiXX0sIi9mYXlldHRlLWNvdW50eS1reS1ob3JzZS1mYXJtLXJlYWwtZXN0YXRlLWd1aWRlIjp7InIiOltdLCJtIjpbIi9wL2Rvbi10LXdpc2gtYXdheS15b3VyLXRpbWUiLCIvcC9nb2luZy1mcm9tLWNoaXBzLXRvLXN0ZWFrIiwiL3AvYXZpYXRpb24tYS10aHJlYWQiXX0sIi9mZXJuLWNyZWVrLWt5LXJlYWwtZXN0YXRlLWd1aWRlIjp7InIiOlsiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIiwiL3Avb2xtc3RlZC1kZXNpZ25lZC15b3VyLXByb3BlcnR5LXZhbHVlIiwiL3AvdHJ1dGgtYW5kLWxpZXMiXSwibSI6WyIvcC9nZXQtb3V0LW9mLXlvdXItZ29sZGVuLWFnZS1sZXQtcy1jcmVhdGUtbm93IiwiL3AvZmluZGluZy13aGF0LXdvcmtzIiwiL3Avc29ycnktY3Jvc2xleSJdfSwiL2ZpbmQtYS1yZW50YWwiOnsiciI6W10sIm0iOlsiL3AvaW52ZW50b3J5LXN1cmdlLWRlcmJ5LXdlZWstbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS0yMDI2IiwiL3AvYnVmZmV0dC1qdXN0LXBsYWNlZC1oaXMtYmV0IiwiL3AvdGhlLWJyYW5jaCJdfSwiL2ZpcnN0LXRpbWUtaG9tZS1idXllci1rZW50dWNreSI6eyJyIjpbIi9wL2JlLXNlZW4td2FudGluZy1pdCIsIi9wL3RoZS1vbmVzLXRoYXQtY291bnQiLCIvcC90aGUtMjEtY2l0eSJdLCJtIjpbIi9wL2ktZ2F2ZS1hd2F5LW15LWNvbnRyYWN0b3IiLCIvcC90aGUtZmFjZS1pbi10aGUtc2t5IiwiL3AvZGlkLXlvdS1rbm93LXRheWxvci1zd2lmdC1nb3QtbWFycmllZC1hcGktY3V0LXR3ZW50eS13b3Jkcy1vdXQtb2YtbXktZmVlZC1hbmQtZ290LWFuLWhvdXItYW5kLWEtaGFsZiJdfSwiL2Zpc2hlcnZpbGxlLWt5LXJlYWwtZXN0YXRlLWd1aWRlIjp7InIiOltdLCJtIjpbIi9wL2NvbWUtbWVldC1hbGwtbXktZnJpZW5kcyIsIi9wL2ZpbmRpbmctZ29vZC1jb250cmFjdG9ycy1pcy1icm9rZW4taGVyZS1zLXRoZS1maXgiLCIvcC90aGUtbWNyaWItaXMtYmFjayJdfSwiL2Zvci1pbnZlc3RvcnMiOnsiciI6W10sIm0iOlsiL3AvZXZlcnl0aGluZy1zLWFscmVhZHktZG9uZSIsIi9wL2F0dGVudGlvbiIsIi9wL2dyb2dneS1pcy10aGUtZXhjZXB0aW9uLW5vdyJdfSwiL2Zvci1yZWFsLWVzdGF0ZS1hZ2VudHMiOnsiciI6W10sIm0iOlsiL3AvdGhlLXN0dWZmLXRoYXQtbGlnaHRzLXlvdS11cCIsIi9wL2lmLWl0LWRvZXNuLXQtc2F5LXlvdS1jYW4tdC10aGVuLXlvdS1jYW4iLCIvcC9yb29raWUtbnVtYmVycyJdfSwiL2Z1cm5pc2hpbmctY29zdC1taWR0ZXJtLXJlbnRhbC1sb3Vpc3ZpbGxlIjp7InIiOlsiL3AvYm91Z2h0LWF0LTEwNWstd29ydGgtMjM4ay1ib3RoLXNpZHR3by1wZW9wbGUtd2Fsa2VkLW91dC1vZi1teS1jbG9zaW5nLXRodXJzZGF5LWFuZC1ib3RoLW9mLXRoZW0td29uIl0sIm0iOlsiL3AveW91LWxvb2stbGlrZS15b3UtbmVlZC1hLWh1ZyIsIi9wL3lvdXItYm9keS1pcy1hLXRlbXBsZSIsIi9wLzQ3LW1vcmUtcGVyLWRvbGxhciJdfSwiL2dlcm1hbnRvd24tc2Nobml0emVsYnVyZy1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjp7InIiOlsiL3Avb2xtc3RlZC1kZXNpZ25lZC15b3VyLXByb3BlcnR5LXZhbHVlIiwiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIl0sIm0iOlsiL3AvZG9uLXQtbGV0LXRoZS1sYXN0LW9uZS1zb3VyLXlvdSIsIi9wL2tldmluLW8tbGVhcnktZGlkbi10LWtub3ciLCIvcC9uby1vbmUtcy1jb21pbmciXX0sIi9nZXQtcHJlLWFwcHJvdmVkIjp7InIiOltdLCJtIjpbIi9wL3RoZS13b25kZXItdGhhdC1zLWFscmVhZHktdGhlcmUiLCIvcC9mZWFyLWxpdmVzLWluLXRoZS11bmNlcnRhaW50eSIsIi9wL2tlZXAtcGVkYWxpbmciXX0sIi9nbGVudmlldy1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6eyJyIjpbXSwibSI6WyIvcC9zaGluZS1hLWxpZ2h0LW9uLWl0IiwiL3AvdGhlLW1hcmtldC1pcy1hcmd1aW5nLXdpdGgtaXRzZWxmIiwiL3AvcmFpbnktd2Vla2VuZC1nb29kLWJvb2stZ28tY3JlYXRlLXNvbWV0aGluZyJdfSwiL2dyb3VwLWhvbWVzLXJlY292ZXJ5LXJlc2lkZW5jZXMtbG91aXN2aWxsZS1ndWlkZSI6eyJyIjpbXSwibSI6WyIvcC9oYXZlLWEtbGl0dGxlLWZhaXRoLWluLW1lIiwiL3AvcmVkLWNsYXktc3RyYXlzLWFpcmJuYi10by1tYWRpc29uLXNxdWFyZS1nYXJkZW4iLCIvcC93aGVuLXRoZS1sZXZlZS1icmVha3MiXX0sIi9oYW5kLWluLWhhbmQtbWluaXN0cmllcy1sb3Vpc3ZpbGxlIjp7InIiOltdLCJtIjpbIi9wL2xldC10aGlzLWJlLWEta2VybmVsIiwiL3Avc2V0dGluZy11cC1mdXR1cmUtcm9iIiwiL3AvZmluZC10aGUtY3VyaW91cy1wZW9wbGUtYmUtdGhlLWN1cmlvdXMtcGVvcGxlIl19LCIvaGVhcnRiZWF0Ijp7InIiOltdLCJtIjpbIi9wL2VpZ2h0eS1vbmUiLCIvcC9saWZlLXJld2FyZHMtZWZmb3J0LWNyYXp5LW11bHRpcGxpZXJzIiwiL3AvdGhlLWZ1dHVyZS1oYXMtYS1waHlzaWNhbC1hZGRyZXNzLTc0YWIiXX0sIi9oaWdobGFuZHMtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6eyJyIjpbIi9wL29sbXN0ZWQtZGVzaWduZWQteW91ci1wcm9wZXJ0eS12YWx1ZSIsIi9wL2FiZS1saW5jb2xuLXdhbGtlZC1vbi13YXRlciJdLCJtIjpbIi9wL2JpcmRzLWJpcmRzLWJpcmRzIiwiL3AvYWdlbmN5IiwiL3Avc3RyaXAtYXdheS10aGUtbm9pc2UiXX0sIi9oaWtlcy1wb2ludC1sb3Vpc3ZpbGxlLW5laWdoYm9yaG9vZC1ndWlkZSI6eyJyIjpbIi9wL29sbXN0ZWQtZGVzaWduZWQteW91ci1wcm9wZXJ0eS12YWx1ZSIsIi9wL2FiZS1saW5jb2xuLXdhbGtlZC1vbi13YXRlciJdLCJtIjpbIi9wL2EtbWl4dGFwZS1zdGFwbGUiLCIvcC9ncmF0ZWZ1bCIsIi9wL2lkZWFzLWRvbi10LWhhdmUtdG8tZGllLWluLWJhc2VtZW50cy1hbnltb3JlIl19LCIvaGlzcGFuaWMtY29tbXVuaXR5LWdyb3d0aC1yZWFsLWVzdGF0ZS1sb3Vpc3ZpbGxlIjp7InIiOlsiL3AvdGhlLXByaWRlLW9mLWxvdWlzdmlsbGUiXSwibSI6WyIvcC9pLWZpbmFsbHktc3RvcHBlZC1zYXlpbmctbm90LW1lIiwiL3Avd2hlbi1zLXRoZS1sYXN0LXRpbWUteW91LWNyZWF0ZWQtc29tZXRoaW5nIiwiL3AvcGFydHktdGltZSJdfSwiL2hvbWUtdmFsdWUiOnsiciI6W10sIm0iOlsiL3Avam9lLXdha2VzLXVwLWZyYW5rLWdvZXMtdG8tYmVkLXdoYXQtYWJvdXQteW91IiwiL3AvYW5vdGhlci1saWZlLXVwZGF0ZSIsIi9wL2xlYWQtb3ItZ2V0LWxlZCJdfSwiL2hvbWVzdGVhZC1ob2JieS1mYXJtLW5lYXItbG91aXN2aWxsZSI6eyJyIjpbIi9wL2FiZS1saW5jb2xuLXdhbGtlZC1vbi13YXRlciJdLCJtIjpbIi9wL25vLXBpdGNoZXMtanVzdC1waXp6YSIsIi9wL3RoZS1zcXVlZXplLWhhcy1hbi1leHBpcmF0aW9uLWRhdGUiLCIvcC9zcHJlYWQtb3V0Il19LCIvaG9yc2UtZmFybXMtZm9yLXNhbGUtb2xkaGFtLXNoZWxieS1jb3VudHkta3kiOnsiciI6WyIvcC9hYmUtbGluY29sbi13YWxrZWQtb24td2F0ZXIiXSwibSI6WyIvcC9ldmVyeWJvZHktbmVlZHMtYS1zZWNvbmQtdGhpbmciLCIvcC9waWNrLXVwLW9uZS1uZXctYmFsbC10aGlzLXdlZWtlbmQiLCIvcC90aGUtb2JzZXNzZWQtd2lsbC1pbmhlcml0LXRoZS1lYXJ0aCJdfSwiL2hvcnNlLWZhcm1zLW9sZGhhbS1zaGVsYnktY291bnR5LWt5Ijp7InIiOlsiL3AvbG91aXN2aWxsZS1pcy1idWlsZGluZy1pdHMtZnV0dXJlLWFyZS15b3UtaW4iXSwibSI6WyIvcC90aGUtbWFya2V0LWV2ZXJ5b25lLXNhaWQtd2FzLWZyb3plbiIsIi9wL3NvLWJlYXV0aWZ1bC1vci1zby13aGF0IiwiL3AvY2hlY2steW91ci1zY3JlZW4tdGltZS10aGF0LXMteW91ci1hbnN3ZXIiXX0sIi9ob3VzZS1oYWNraW5nLWxvdWlzdmlsbGUta2VudHVja3kiOnsiciI6WyIvcC90aGUtMjEtY2l0eSIsIi9wL2JvdWdodC1hdC0xMDVrLXdvcnRoLTIzOGstYm90aC1zaWR0d28tcGVvcGxlLXdhbGtlZC1vdXQtb2YtbXktY2xvc2luZy10aHVyc2RheS1hbmQtYm90aC1vZi10aGVtLXdvbiIsIi9wL3RoZS1vbmVzLXRoYXQtY291bnQiXSwibSI6WyIvcC90aGUtb3Blbi1ob3VzZS1sb3N0LXRvLXRoZS1yZWQtem9uZSIsIi9wL3RoZS1jYW5hcnktaW4tdGhlLXJpY2tob3VzZSIsIi9wL2RlYWQtcGhvbmVzIl19LCIvaG93LWl0LXdvcmtzIjp7InIiOltdLCJtIjpbIi9wL3JpZ2h0LWlkZWEtd3JvbmctYmFycmVsIiwiL3AvaGFwcHktYW5kLWhlYWx0aHktaXMtYS1idXNpbmVzcy1tb2RlbCIsIi9wL2J1aWxkaW5nLWEtc3RpbGwtdG8tc2xvdy1kb3duLXRoZS1hLWhlYWx0aC1zY2FyZS1hLWNsZWFyLWJpbGwtb2YtaGVhbHRoLWFuZC1hLW51bWJlci1teS1zdXJnZW9uLWdhdmUiXX0sIi9ob3ctdG8tZ2V0LXByZS1hcHByb3ZlZC1tb3J0Z2FnZS1rZW50dWNreSI6eyJyIjpbXSwibSI6WyIvcC90aGUtcGxhY2UtdGhleS10cmllZC10by1kcm93biIsIi9wL2xpZmUtdXBkYXRlIiwiL3Avc2V2ZW4tY2FyZGlnYW5zIl19LCIvaHVyc3Rib3VybmUta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOnsiciI6W10sIm0iOlsiL3AvbW9yZS1zdXBwbHktd2F0Y2gtY2xvc2VseSIsIi9wL3lvdXItbW9ybmluZy1zdGFydHMtdGhlLW5pZ2h0LWJlZm9yZSIsIi9wL3doYXRldmVyLWhhcHBlbmVkLXRvLWFtZWxpYS1lYXJoYXJ0Il19LCIvaW4taG91c2UtdHJhbnNhY3Rpb24tc3VwcG9ydCI6eyJyIjpbXSwibSI6WyIvcC90aGUtcG90aG9sZSIsIi9wL3RoZS13ZWJzaXRlLWluLXRoZS1ob3QtdHViIiwiL3Avc2VuZC1jbGF1ZGUteW91ci1jaHJvbW9zb21lcyJdfSwiL2luZGlhbi1oaWxscy1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6eyJyIjpbXSwibSI6WyIvcC93YWxrLWluLXdpdGgtc29sdXRpb25zIiwiL3AvZ3JlYXQtbmVpZ2hib3JzIiwiL3Avc3BlY2llcy00MC1pcy1wbGF5aW5nLWhhcmQtdG8tZ2V0Il19LCIvaW52ZXN0bWVudC1wcm9wZXJ0eS1hbmFseXplciI6eyJyIjpbIi9wL2JvdWdodC1hdC0xMDVrLXdvcnRoLTIzOGstYm90aC1zaWR0d28tcGVvcGxlLXdhbGtlZC1vdXQtb2YtbXktY2xvc2luZy10aHVyc2RheS1hbmQtYm90aC1vZi10aGVtLXdvbiIsIi9wL21heWJlLWktbS1jcmF6eSJdLCJtIjpbIi9wL2Etc3VuZGF5LWVtYWlsLWZyb20tbWUiLCIvcC90aGUtbWFuLXlvdS11c2VkLXRvLWJlIiwiL3AvbW9ybmluZy13b29kLXNlbHR6ZXItd2F0ZXItYW5kLWEtMTItYmFnLW9mLWZpYmVyIl19LCIvaW52ZXN0bWVudC1wcm9wZXJ0eS1jb21wYXJpc29uLXRvb2wiOnsiciI6W10sIm0iOlsiL3AvdGhlLXJvYm90cy1hbHJlYWR5LWxpdmUtaGVyZSIsIi9wL2luY2x1ZGluZy1tb2RlcmF0aW9uIiwiL3AvdGhlLWJpcmRzLWtlZXAtY29taW5nIl19LCIvaXJvcXVvaXMtc291dGgtZW5kLWxvdWlzdmlsbGUtbmVpZ2hib3Job29kLWd1aWRlIjp7InIiOlsiL3Avb2xtc3RlZC1kZXNpZ25lZC15b3VyLXByb3BlcnR5LXZhbHVlIiwiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIiwiL3AvdHJ1dGgtYW5kLWxpZXMiXSwibSI6WyIvcC90aGUtbGl0dGxlLWpveXMiLCIvcC90aGUtbW9ybmluZy1iZXJnZXJvbi1zLXRvcC0yNS1wZW9wbGUtdG8ta25vdy1pbi1yZWFsLWVzdGF0ZSIsIi9wL2ZpdmUtaHVuZHJlZC1maWZ0eS1vbmUtZDRiOCJdfSwiL2lzLWxvdWlzdmlsbGUtYS1nb29kLXBsYWNlLXRvLWludmVzdC1pbi1yZWFsLWVzdGF0ZSI6eyJyIjpbIi9wL21heWJlLWktbS1jcmF6eSIsIi9wL2JvdWdodC1hdC0xMDVrLXdvcnRoLTIzOGstYm90aC1zaWR0d28tcGVvcGxlLXdhbGtlZC1vdXQtb2YtbXktY2xvc2luZy10aHVyc2RheS1hbmQtYm90aC1vZi10aGVtLXdvbiIsIi9wL2xvdWlzdmlsbGUtaXMtYnVpbGRpbmctaXRzLWZ1dHVyZS1hcmUteW91LWluIiwiL3AvZ3JlYXQtbmVpZ2hib3JzIl0sIm0iOlsiL3Avbm9ib2R5LXB1dHMtYmFieS1pbi1hLWJveCIsIi9wL3RoZXkta25vdy10aGV5LXJlLW9uLWNhbWVyYSIsIi9wL3Rlbi13ZWVrcy1vdXQiXX0sIi9qYWtlLWZhYmlzaCI6eyJyIjpbXSwibSI6WyIvcC9ldmVyeWJvZHktcy1nb3QtdGhlaXItdGhpbmtpbmctY2Fwcy1vbiIsIi9wL3RvdWNoLWl0LXR3aWNlIiwiL3Avb25lLXRvLWZpdmUtb24tZnJpZGF5Il19LCIvamNwcy1zY2hvb2wtem9uZXMtbG91aXN2aWxsZS1ob21lLWJ1eWVycyI6eyJyIjpbXSwibSI6WyIvcC9teS1kYWQtZ290LXdheS1jb29sZXItYWZ0ZXItNjAiLCIvcC9hLXNsb3ctbW9ybmluZy1jb3N0cy1tb3JlLXRoYW4tdGhlLW1vcm5pbmciLCIvcC90aW1lLXRvLWV2b2x2ZSJdfSwiL2plZmZlcnNvbi1jb3VudHktcHJvcGVydHktdGF4LWFzc2Vzc21lbnQtYXBwZWFsIjp7InIiOlsiL3AvdGhlLXNxdWVlemUtaGFzLWFuLWV4cGlyYXRpb24tZGF0ZSIsIi9wL25hc2h2aWxsZS1zZXZlbi15ZWFycy1hZ28iLCIvcC9kb24tdC13aXNoLWF3YXkteW91ci10aW1lIl0sIm0iOlsiL3AvaXQtcy1oYXJzaCIsIi9wL3RoZS1wb3N0LWNhbmNlci1zY2FyZS1vZi0yMDI2IiwiL3Avd2UtZ2V0LW5vLXNlY29uZC1jaGFuY2UtaW4tdGhpcy1saWZlIl19LCIvamVmZmVyc29udG93bi1sb3Vpc3ZpbGxlLW5laWdoYm9yaG9vZC1ndWlkZSI6eyJyIjpbIi9wL3RoZS1wb3Rob2xlIiwiL3Avb2xtc3RlZC1kZXNpZ25lZC15b3VyLXByb3BlcnR5LXZhbHVlIiwiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIl0sIm0iOlsiL3Ava2V2aW4tby1sZWFyeS1kaWRuLXQta25vdyIsIi9wL3lvdXItbW9ybmluZy1zdGFydHMtdGhlLW5pZ2h0LWJlZm9yZSIsIi9wL25vYm9keS13cm90ZS1hLXN3YW4tc29uZy1mb3ItdGhlLWVsZXZhdG9yLW9wZXJhdG9yIl19LCIvam9pbiI6eyJyIjpbXSwibSI6WyIvcC9hbm90aGVyLWxpZmUtdXBkYXRlIiwiL3Avc2V0dGluZy11cC1mdXR1cmUtcm9iIiwiL3Avbm9ib2R5LXB1dHMtYmFieS1pbi1hLWJveCJdfSwiL2thc2V5LXJvYmluc29uIjp7InIiOltdLCJtIjpbIi9wL3dhbGstaW4td2l0aC1zb2x1dGlvbnMiLCIvcC90aGUtc3R1ZmYtdGhhdC1saWdodHMteW91LXVwIiwiL3Ava2VlcC1wZWRhbGluZyJdfSwiL2tlbnR1Y2t5LWFncmljdWx0dXJhbC1leGVtcHRpb24tcHJvcGVydHktdGF4LWd1aWRlIjp7InIiOltdLCJtIjpbIi9wL2dyb2dneS1pcy10aGUtZXhjZXB0aW9uLW5vdyIsIi9wL25vLXBpdGNoZXMtanVzdC1waXp6YSIsIi9wL2ZpbmRpbmctZ29vZC1jb250cmFjdG9ycy1pcy1icm9rZW4taGVyZS1zLXRoZS1maXgiXX0sIi9rZW50dWNreS1yZWFsLWVzdGF0ZS1saWNlbnNlLXJlcXVpcmVtZW50cyI6eyJyIjpbIi9wL3RvdWNoLWl0LXR3aWNlIiwiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIl0sIm0iOlsiL3Avd2hlbi1zLXRoZS1sYXN0LXRpbWUteW91LWNyZWF0ZWQtc29tZXRoaW5nIiwiL3AvYnVpbGRpbmctYS1zdGlsbC10by1zbG93LWRvd24tdGhlLWEtaGVhbHRoLXNjYXJlLWEtY2xlYXItYmlsbC1vZi1oZWFsdGgtYW5kLWEtbnVtYmVyLW15LXN1cmdlb24tZ2F2ZSIsIi9wL3Jvb2tpZS1udW1iZXJzIl19LCIva2VudHVja3ktcmVjb3ZlcnktcmVzaWRlbmNlLWNlcnRpZmljYXRpb24ta3JzLTIyMi01MDItZ3VpZGUiOnsiciI6W10sIm0iOlsiL3AvdGhlLW1jcmliLWlzLWJhY2siLCIvcC9pdC1zLW5vdC13ZWlyZC1pdC1zLWp1c3QtZGlmZmVyZW50IiwiL3AvaS1nYXZlLWF3YXktbXktY29udHJhY3RvciJdfSwiL2xha2UtZm9yZXN0LWxvdWlzdmlsbGUta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOnsiciI6W10sIm0iOlsiL3Avb25lLXRvLWZpdmUtb24tZnJpZGF5IiwiL3AvY29tZS1tZWV0LWFsbC1teS1mcmllbmRzIiwiL3AvYnVmZmV0dC1qdXN0LXBsYWNlZC1oaXMtYmV0Il19LCIvbGFuZGluZy1wYWdlLTIiOnsiciI6W10sIm0iOlsiL3AvZXZlcnlib2R5LW5lZWRzLWEtc2Vjb25kLXRoaW5nIiwiL3Avc2V2ZW4tY2FyZGlnYW5zIiwiL3Avc3ByZWFkLW91dCJdfSwiL2xlYXNlLW9wdGlvbnMtcmVudC10by1vd24ta2VudHVja3kiOnsiciI6WyIvcC90aGUtMjEtY2l0eSIsIi9wL25hc2h2aWxsZS1zZXZlbi15ZWFycy1hZ28iLCIvcC9hYmUtbGluY29sbi13YWxrZWQtb24td2F0ZXIiXSwibSI6WyIvcC9saWZlLXVwZGF0ZSIsIi9wL3RoZS1tYXJrZXQtZXZlcnlvbmUtc2FpZC13YXMtZnJvemVuIiwiL3AveW91LXJlLWFscmVhZHktYWhlYWQtb2YtOTctOC1vZi1wZW9wbGUiXX0sIi9sZXhpbmd0b24ta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOnsiciI6WyIvcC9hYmUtbGluY29sbi13YWxrZWQtb24td2F0ZXIiXSwibSI6WyIvcC90aGUtYmlyZHMta2VlcC1jb21pbmciLCIvcC9ncmVhdC1uZWlnaGJvcnMiLCIvcC9zby1iZWF1dGlmdWwtb3Itc28td2hhdCJdfSwiL2xleGluZ3Rvbi1zaG9ydC10ZXJtLXJlbnRhbC1yZWd1bGF0aW9ucyI6eyJyIjpbIi9wL25vYm9keS10b2xkLWxvdWlzdmlsbGUtdG8tc2xvdy1kb3duIl0sIm0iOlsiL3Avd2UtZ2V0LW5vLXNlY29uZC1jaGFuY2UtaW4tdGhpcy1saWZlIiwiL3AvZGVhZC1waG9uZXMiLCIvcC9qb2Utd2FrZXMtdXAtZnJhbmstZ29lcy10by1iZWQtd2hhdC1hYm91dC15b3UiXX0sIi9saXNhLXR1Y2tlciI6eyJyIjpbXSwibSI6WyIvcC9zcGVjaWVzLTQwLWlzLXBsYXlpbmctaGFyZC10by1nZXQiLCIvcC90ZW4td2Vla3Mtb3V0IiwiL3AvdGhlLW1vcm5pbmctYmVyZ2Vyb24tcy10b3AtMjUtcGVvcGxlLXRvLWtub3ctaW4tcmVhbC1lc3RhdGUiXX0sIi9sb3Vpc3ZpbGxlLTMwLWRheS1ydWxlLXNob3J0LXRlcm0tcmVudGFsLWxhdyI6eyJyIjpbIi9wL2xvdWlzdmlsbGUtaXMtYnVpbGRpbmctaXRzLWZ1dHVyZS1hcmUteW91LWluIl0sIm0iOlsiL3AvdG91Y2gtaXQtdHdpY2UiLCIvcC9yZWQtY2xheS1zdHJheXMtYWlyYm5iLXRvLW1hZGlzb24tc3F1YXJlLWdhcmRlbiIsIi9wL3RpbWUtdG8tZXZvbHZlIl19LCIvbG91aXN2aWxsZS1jb21tZXJjaWFsLXJlYWwtZXN0YXRlIjp7InIiOlsiL3AvYnVmZmV0dC1qdXN0LXBsYWNlZC1oaXMtYmV0Il0sIm0iOlsiL3AvdGhlLXBsYWNlLXRoZXktdHJpZWQtdG8tZHJvd24iLCIvcC93aGF0ZXZlci1oYXBwZW5lZC10by1hbWVsaWEtZWFyaGFydCIsIi9wL215LWRhZC1nb3Qtd2F5LWNvb2xlci1hZnRlci02MCJdfSwiL2xvdWlzdmlsbGUtY29tbWVyY2lhbC1yZWFsLWVzdGF0ZS1tYXJrZXQtcmVwb3J0Ijp7InIiOlsiL3AvcmlnaHQtdHdpY2UiLCIvcC9sb3Vpc3ZpbGxlLWRvZXNuLXQtYnJhZy1zby1pLXdpbGwiLCIvcC9ub2JvZHktdG9sZC1sb3Vpc3ZpbGxlLXRvLXNsb3ctZG93biJdLCJtIjpbIi9wL2NoZWNrLXlvdXItc2NyZWVuLXRpbWUtdGhhdC1zLXlvdXItYW5zd2VyIiwiL3AvcGljay11cC1vbmUtbmV3LWJhbGwtdGhpcy13ZWVrZW5kIiwiL3Avc2hpbmUtYS1saWdodC1vbi1pdCJdfSwiL2xvdWlzdmlsbGUtZmxvb2Qtem9uZXMtd2hhdC1ob21lLWJ1eWVycy1uZWVkLXRvLWtub3ciOnsiciI6WyIvcC9hYmUtbGluY29sbi13YWxrZWQtb24td2F0ZXIiLCIvcC93aGVuLXRoZS1sZXZlZS1icmVha3MiXSwibSI6WyIvcC9nZXQtb3V0LW9mLXlvdXItZ29sZGVuLWFnZS1sZXQtcy1jcmVhdGUtbm93IiwiL3AveW91LWxvb2stbGlrZS15b3UtbmVlZC1hLWh1ZyIsIi9wL21vcm5pbmctd29vZC1zZWx0emVyLXdhdGVyLWFuZC1hLTEyLWJhZy1vZi1maWJlciJdfSwiL2xvdWlzdmlsbGUtaGVhbHRoY2FyZS1tZWRpY2FsLW9mZmljZS1yZWFsLWVzdGF0ZSI6eyJyIjpbIi9wL2tldmluLW8tbGVhcnktZGlkbi10LWtub3ciXSwibSI6WyIvcC9ldmVyeXRoaW5nLXMtYWxyZWFkeS1kb25lIiwiL3AvZmluZC10aGUtY3VyaW91cy1wZW9wbGUtYmUtdGhlLWN1cmlvdXMtcGVvcGxlIiwiL3AvZmVhci1saXZlcy1pbi10aGUtdW5jZXJ0YWludHkiXX0sIi9sb3Vpc3ZpbGxlLWhvdXNpbmctbWFya2V0LXJlcG9ydCI6eyJyIjpbIi9wL3RoZS1tYXJrZXQtaXMtYXJndWluZy13aXRoLWl0c2VsZiIsIi9wL3RoZS1wb3Rob2xlIiwiL3AvbW9yZS1zdXBwbHktd2F0Y2gtY2xvc2VseSJdLCJtIjpbIi9wL2F0dGVudGlvbiIsIi9wL3RoZS1yb2JvdHMtYWxyZWFkeS1saXZlLWhlcmUiLCIvcC9hLXN1bmRheS1lbWFpbC1mcm9tLW1lIl19LCIvbG91aXN2aWxsZS1pbW1pZ3JhbnQtcG9wdWxhdGlvbi1ncm93dGgtcmVhbC1lc3RhdGUiOnsiciI6WyIvcC90aGUtcHJpZGUtb2YtbG91aXN2aWxsZSJdLCJtIjpbIi9wL2dyYXRlZnVsIiwiL3AvZWlnaHR5LW9uZSIsIi9wL2lkZWFzLWRvbi10LWhhdmUtdG8tZGllLWluLWJhc2VtZW50cy1hbnltb3JlIl19LCIvbG91aXN2aWxsZS1pbmR1c3RyaWFsLXdhcmVob3VzZS1pbnZlc3RtZW50LXByb3BlcnRpZXMiOnsiciI6WyIvcC9yaWdodC10d2ljZSIsIi9wL25hc2h2aWxsZS1zZXZlbi15ZWFycy1hZ28iXSwibSI6WyIvcC9zdHJpcC1hd2F5LXRoZS1ub2lzZSIsIi9wL3RoZS1mYWNlLWluLXRoZS1za3kiLCIvcC9hLW1peHRhcGUtc3RhcGxlIl19LCIvbG91aXN2aWxsZS1sYW5kLWRldmVsb3BtZW50LXByb3BlcnRpZXMiOnsiciI6W10sIm0iOlsiL3AvbW9yZS1zdXBwbHktd2F0Y2gtY2xvc2VseSIsIi9wL3RoZS1wb3Rob2xlIiwiL3AvdGhlLWxpdHRsZS1qb3lzIl19LCIvbG91aXN2aWxsZS1tdWx0aWZhbWlseS1icm9rZXIiOnsiciI6WyIvcC9sb3Vpc3ZpbGxlLWlzLWJ1aWxkaW5nLWl0cy1mdXR1cmUtYXJlLXlvdS1pbiIsIi9wL3RoZS1tYXJrZXQtZXZlcnlvbmUtc2FpZC13YXMtZnJvemVuIiwiL3AvNDctbW9yZS1wZXItZG9sbGFyIl0sIm0iOlsiL3AvaWYtaXQtZG9lc24tdC1zYXkteW91LWNhbi10LXRoZW4teW91LWNhbiIsIi9wL3lvdXItYm9keS1pcy1hLXRlbXBsZSIsIi9wL2hhcHB5LWFuZC1oZWFsdGh5LWlzLWEtYnVzaW5lc3MtbW9kZWwiXX0sIi9sb3Vpc3ZpbGxlLW11bHRpZmFtaWx5LWludmVzdG1lbnQtcHJvcGVydGllcyI6eyJyIjpbIi9wL2xvdWlzdmlsbGUtaXMtYnVpbGRpbmctaXRzLWZ1dHVyZS1hcmUteW91LWluIiwiL3AvdGhlLXNxdWVlemUtaGFzLWFuLWV4cGlyYXRpb24tZGF0ZSJdLCJtIjpbIi9wL2xlYWQtb3ItZ2V0LWxlZCIsIi9wL3NlbmQtY2xhdWRlLXlvdXItY2hyb21vc29tZXMiLCIvcC9yaWdodC1pZGVhLXdyb25nLWJhcnJlbCJdfSwiL2xvdWlzdmlsbGUtbmVpZ2hib3Job29kcyI6eyJyIjpbIi9wL29sbXN0ZWQtZGVzaWduZWQteW91ci1wcm9wZXJ0eS12YWx1ZSIsIi9wL2FiZS1saW5jb2xuLXdhbGtlZC1vbi13YXRlciJdLCJtIjpbIi9wL3RoZS1jYW5hcnktaW4tdGhlLXJpY2tob3VzZSIsIi9wL2F2aWF0aW9uLWEtdGhyZWFkIiwiL3AvZG9uLXQtbGV0LXRoZS1sYXN0LW9uZS1zb3VyLXlvdSJdfSwiL2xvdWlzdmlsbGUtbmVpZ2hib3Job29kcy13aGVyZS1ob21lcy1hcmUtc2VsbGluZyI6eyJyIjpbIi9wL29sbXN0ZWQtZGVzaWduZWQteW91ci1wcm9wZXJ0eS12YWx1ZSIsIi9wL25hc2h2aWxsZS1zZXZlbi15ZWFycy1hZ28iLCIvcC9hYmUtbGluY29sbi13YWxrZWQtb24td2F0ZXIiXSwibSI6WyIvcC93aGVuLXRoZS1sZXZlZS1icmVha3MiLCIvcC90aGUtbWFuLXlvdS11c2VkLXRvLWJlIiwiL3AvZGlkLXlvdS1rbm93LXRheWxvci1zd2lmdC1nb3QtbWFycmllZC1hcGktY3V0LXR3ZW50eS13b3Jkcy1vdXQtb2YtbXktZmVlZC1hbmQtZ290LWFuLWhvdXItYW5kLWEtaGFsZiJdfSwiL2xvdWlzdmlsbGUtb2ZmaWNlLWludmVzdG1lbnQtcHJvcGVydGllcyI6eyJyIjpbXSwibSI6WyIvcC9sZXQtdGhpcy1iZS1hLWtlcm5lbCIsIi9wL2ludmVudG9yeS1zdXJnZS1kZXJieS13ZWVrLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtMjAyNiIsIi9wL2V2ZXJ5Ym9keS1zLWdvdC10aGVpci10aGlua2luZy1jYXBzLW9uIl19LCIvbG91aXN2aWxsZS1yZXRhaWwtaW52ZXN0bWVudC1wcm9wZXJ0aWVzIjp7InIiOltdLCJtIjpbIi9wL3RoZXkta25vdy10aGV5LXJlLW9uLWNhbWVyYSIsIi9wL2ktZmluYWxseS1zdG9wcGVkLXNheWluZy1ub3QtbWUiLCIvcC80Ny1tb3JlLXBlci1kb2xsYXIiXX0sIi9sb3Vpc3ZpbGxlLXNob3J0LXRlcm0tcmVudGFsLWd1aWRlIjp7InIiOlsiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIiwiL3AvbG91aXN2aWxsZS1pcy1idWlsZGluZy1pdHMtZnV0dXJlLWFyZS15b3UtaW4iXSwibSI6WyIvcC90aGUtd29uZGVyLXRoYXQtcy1hbHJlYWR5LXRoZXJlIiwiL3AvdGhlLWJyYW5jaCIsIi9wL2l0LXMtaGFyc2giXX0sIi9sb3Vpc3ZpbGxlLXNvdXRoZXJuLWluZGlhbmEtZGV2ZWxvcG1lbnQtaW5jZW50aXZlcyI6eyJyIjpbXSwibSI6WyIvcC9nb2luZy1mcm9tLWNoaXBzLXRvLXN0ZWFrIiwiL3AvdGhlLXdlYnNpdGUtaW4tdGhlLWhvdC10dWIiLCIvcC9oYXZlLWEtbGl0dGxlLWZhaXRoLWluLW1lIl19LCIvbG91aXN2aWxsZS1zb3V0aGVybi1pbmRpYW5hLWhpc3RvcnkiOnsiciI6WyIvcC9yaWdodC10d2ljZSIsIi9wL2FiZS1saW5jb2xuLXdhbGtlZC1vbi13YXRlciIsIi9wL3RoZS1wcmlkZS1vZi1sb3Vpc3ZpbGxlIiwiL3AvcmFpbnktd2Vla2VuZC1nb29kLWJvb2stZ28tY3JlYXRlLXNvbWV0aGluZyJdLCJtIjpbIi9wL2ZpbmRpbmctd2hhdC13b3JrcyIsIi9wL3RoZS1mdXR1cmUtaGFzLWEtcGh5c2ljYWwtYWRkcmVzcy03NGFiIiwiL3AvYS1zbG93LW1vcm5pbmctY29zdHMtbW9yZS10aGFuLXRoZS1tb3JuaW5nIl19LCIvbG91aXN2aWxsZS1zdWJ1cmItbWF0Y2gtcXVpeiI6eyJyIjpbXSwibSI6WyIvcC90aGUtb3Blbi1ob3VzZS1sb3N0LXRvLXRoZS1yZWQtem9uZSIsIi9wL2luY2x1ZGluZy1tb2RlcmF0aW9uIiwiL3AvdGhlLW1hcmtldC1pcy1hcmd1aW5nLXdpdGgtaXRzZWxmIl19LCIvbG91aXN2aWxsZS12cy1uYXNodmlsbGUtcmVhbC1lc3RhdGUiOnsiciI6WyIvcC9uYXNodmlsbGUtc2V2ZW4teWVhcnMtYWdvIiwiL3AvdGhlLTIxLWNpdHkiLCIvcC9yaWdodC10d2ljZSJdLCJtIjpbIi9wL3BhcnR5LXRpbWUiLCIvcC9zb3JyeS1jcm9zbGV5IiwiL3AvYmlyZHMtYmlyZHMtYmlyZHMiXX0sIi9seW5kb24tZ3JheW1vb3ItZGV2b25kYWxlLWt5LXJlYWwtZXN0YXRlLWd1aWRlIjp7InIiOltdLCJtIjpbIi9wL2Rvbi10LXdpc2gtYXdheS15b3VyLXRpbWUiLCIvcC9maXZlLWh1bmRyZWQtZmlmdHktb25lLWQ0YjgiLCIvcC90aGUtb2JzZXNzZWQtd2lsbC1pbmhlcml0LXRoZS1lYXJ0aCJdfSwiL21hZGlzb24tbWVyZWRpdGgiOnsiciI6W10sIm0iOlsiL3AvdGhlLXBvc3QtY2FuY2VyLXNjYXJlLW9mLTIwMjYiLCIvcC9hZ2VuY3kiLCIvcC9uby1vbmUtcy1jb21pbmciXX0sIi9tYXJrZXQtZXhwYW5zaW9uLWlucXVpcnkiOnsiciI6W10sIm0iOlsiL3AvbGlmZS1yZXdhcmRzLWVmZm9ydC1jcmF6eS1tdWx0aXBsaWVycyIsIi9wL3RoZS1zcXVlZXplLWhhcy1hbi1leHBpcmF0aW9uLWRhdGUiLCIvcC9yYWlueS13ZWVrZW5kLWdvb2QtYm9vay1nby1jcmVhdGUtc29tZXRoaW5nIl19LCIvbWVldC1yb2ItYmVyZ2Vyb24iOnsiciI6W10sIm0iOlsiL3AvbXktZGFkLWdvdC13YXktY29vbGVyLWFmdGVyLTYwIiwiL3AvdGhlLW1hcmtldC1pcy1hcmd1aW5nLXdpdGgtaXRzZWxmIiwiL3AvaWYtaXQtZG9lc24tdC1zYXkteW91LWNhbi10LXRoZW4teW91LWNhbiJdfSwiL21lbnRvcnNoaXAtcHJvZ3JhbXMiOnsiciI6W10sIm0iOlsiL3AvcmFpbnktd2Vla2VuZC1nb29kLWJvb2stZ28tY3JlYXRlLXNvbWV0aGluZyIsIi9wL25vYm9keS1wdXRzLWJhYnktaW4tYS1ib3giLCIvcC9uby1vbmUtcy1jb21pbmciXX0sIi9taWRkbGV0b3duLWt5LXJlYWwtZXN0YXRlLWd1aWRlIjp7InIiOlsiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIiwiL3Avb2xtc3RlZC1kZXNpZ25lZC15b3VyLXByb3BlcnR5LXZhbHVlIiwiL3AvbmFzaHZpbGxlLXNldmVuLXllYXJzLWFnbyJdLCJtIjpbIi9wL25vLXBpdGNoZXMtanVzdC1waXp6YSIsIi9wL2tldmluLW8tbGVhcnktZGlkbi10LWtub3ciLCIvcC9kaWQteW91LWtub3ctdGF5bG9yLXN3aWZ0LWdvdC1tYXJyaWVkLWFwaS1jdXQtdHdlbnR5LXdvcmRzLW91dC1vZi1teS1mZWVkLWFuZC1nb3QtYW4taG91ci1hbmQtYS1oYWxmIl19LCIvbWlkdGVybS1yZW50YWwtdnMtbG9uZy10ZXJtLWxlYXNlLWxvdWlzdmlsbGUtcm9pIjp7InIiOltdLCJtIjpbIi9wL2EtbWl4dGFwZS1zdGFwbGUiLCIvcC9maXZlLWh1bmRyZWQtZmlmdHktb25lLWQ0YjgiLCIvcC90b3VjaC1pdC10d2ljZSJdfSwiL21pZHRlcm0tcmVudGFscy1sb3Vpc3ZpbGxlLWd1aWRlIjp7InIiOltdLCJtIjpbIi9wL3RoZS13ZWJzaXRlLWluLXRoZS1ob3QtdHViIiwiL3AvYWdlbmN5IiwiL3AvbGlmZS1yZXdhcmRzLWVmZm9ydC1jcmF6eS1tdWx0aXBsaWVycyJdfSwiL21pbGl0YXJ5LXJlbG9jYXRpb24tbG91aXN2aWxsZS1mb3J0LWtub3giOnsiciI6WyIvcC9uYXNodmlsbGUtc2V2ZW4teWVhcnMtYWdvIiwiL3AvdGhlLTIxLWNpdHkiLCIvcC9ncm9nZ3ktaXMtdGhlLWV4Y2VwdGlvbi1ub3ciXSwibSI6WyIvcC93YWxrLWluLXdpdGgtc29sdXRpb25zIiwiL3Avbm9ib2R5LXdyb3RlLWEtc3dhbi1zb25nLWZvci10aGUtZWxldmF0b3Itb3BlcmF0b3IiLCIvcC90aGUtc3F1ZWV6ZS1oYXMtYW4tZXhwaXJhdGlvbi1kYXRlIl19LCIvbW9ja2luZ2JpcmQtdmFsbGV5LWt5LXJlYWwtZXN0YXRlLWd1aWRlIjp7InIiOltdLCJtIjpbIi9wL2V2ZXJ5Ym9keS1uZWVkcy1hLXNlY29uZC10aGluZyIsIi9wL2xpZmUtdXBkYXRlIiwiL3AvdGhlLW9ic2Vzc2VkLXdpbGwtaW5oZXJpdC10aGUtZWFydGgiXX0sIi9tb250aGx5LW1vcnRnYWdlLXBheW1lbnQtY2FsY3VsYXRvci1rZW50dWNreSI6eyJyIjpbIi9wL3RoZS0yMS1jaXR5Il0sIm0iOlsiL3Avd2hlbi10aGUtbGV2ZWUtYnJlYWtzIiwiL3AvZmluZC10aGUtY3VyaW91cy1wZW9wbGUtYmUtdGhlLWN1cmlvdXMtcGVvcGxlIiwiL3AvaGF2ZS1hLWxpdHRsZS1mYWl0aC1pbi1tZSJdfSwiL21vdmluZy10by1zb3V0aGVybi1pbmRpYW5hIjp7InIiOlsiL3AvbG91aXN2aWxsZS1kb2Vzbi10LWJyYWctc28taS13aWxsIiwiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIiwiL3AvdHJ1dGgtYW5kLWxpZXMiXSwibSI6WyIvcC9vbmUtdG8tZml2ZS1vbi1mcmlkYXkiLCIvcC9zby1iZWF1dGlmdWwtb3Itc28td2hhdCIsIi9wL2dyZWF0LW5laWdoYm9ycyJdfSwiL25ldy1hbGJhbnktamVmZmVyc29udmlsbGUtaW5kaWFuYS1yZWFsLWVzdGF0ZS1ndWlkZSI6eyJyIjpbIi9wL2FiZS1saW5jb2xuLXdhbGtlZC1vbi13YXRlciIsIi9wL2xvdWlzdmlsbGUtZG9lc24tdC1icmFnLXNvLWktd2lsbCIsIi9wL29sbXN0ZWQtZGVzaWduZWQteW91ci1wcm9wZXJ0eS12YWx1ZSJdLCJtIjpbIi9wL2F0dGVudGlvbiIsIi9wL3NldHRpbmctdXAtZnV0dXJlLXJvYiIsIi9wL2Fub3RoZXItbGlmZS11cGRhdGUiXX0sIi9uZXdidXJnLWJ1ZWNoZWwtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6eyJyIjpbXSwibSI6WyIvcC9hLXNsb3ctbW9ybmluZy1jb3N0cy1tb3JlLXRoYW4tdGhlLW1vcm5pbmciLCIvcC90aGUtcG9zdC1jYW5jZXItc2NhcmUtb2YtMjAyNiIsIi9wL2dyb2dneS1pcy10aGUtZXhjZXB0aW9uLW5vdyJdfSwiL25vcnRoLW9sZGhhbS12cy1zb3V0aC1vbGRoYW0tY291bnR5LWd1aWRlIjp7InIiOlsiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIiwiL3AvbG91aXN2aWxsZS1pcy1idWlsZGluZy1pdHMtZnV0dXJlLWFyZS15b3UtaW4iXSwibSI6WyIvcC90aGUtd29uZGVyLXRoYXQtcy1hbHJlYWR5LXRoZXJlIiwiL3AvbWF5YmUtaS1tLWNyYXp5IiwiL3AvZmluZGluZy1nb29kLWNvbnRyYWN0b3JzLWlzLWJyb2tlbi1oZXJlLXMtdGhlLWZpeCJdfSwiL25vcnRvbi1jb21tb25zLXJlYWwtZXN0YXRlLWd1aWRlIjp7InIiOlsiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIiwiL3Avb2xtc3RlZC1kZXNpZ25lZC15b3VyLXByb3BlcnR5LXZhbHVlIiwiL3AvdHJ1dGgtYW5kLWxpZXMiXSwibSI6WyIvcC9pdC1zLWhhcnNoIiwiL3AvaS1maW5hbGx5LXN0b3BwZWQtc2F5aW5nLW5vdC1tZSIsIi9wL21vcm5pbmctd29vZC1zZWx0emVyLXdhdGVyLWFuZC1hLTEyLWJhZy1vZi1maWJlciJdfSwiL25vcndvb2Qtbm9ydGhmaWVsZC1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6eyJyIjpbXSwibSI6WyIvcC90aGUtbGl0dGxlLWpveXMiLCIvcC9oYXBweS1hbmQtaGVhbHRoeS1pcy1hLWJ1c2luZXNzLW1vZGVsIiwiL3AvZG9uLXQtd2lzaC1hd2F5LXlvdXItdGltZSJdfSwiL25vdmF0aW9uLWFncmVlbWVudC1yZWFsLWVzdGF0ZS1rZW50dWNreSI6eyJyIjpbIi9wL25hc2h2aWxsZS1zZXZlbi15ZWFycy1hZ28iLCIvcC9sZWFkLW9yLWdldC1sZWQiLCIvcC9iZS1zZWVuLXdhbnRpbmctaXQiLCIvcC9nZXQtb3V0LW9mLXlvdXItZ29sZGVuLWFnZS1sZXQtcy1jcmVhdGUtbm93Il0sIm0iOlsiL3AvdGhlLW5pbC1lcmEtb2YtcmVhbC1lc3RhdGUiLCIvcC9zcGVjaWVzLTQwLWlzLXBsYXlpbmctaGFyZC10by1nZXQiLCIvcC90aGUtcm9ib3RzLWFscmVhZHktbGl2ZS1oZXJlIl19LCIvbnVsdS1idXRjaGVydG93bi1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjp7InIiOlsiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIiwiL3Avb2xtc3RlZC1kZXNpZ25lZC15b3VyLXByb3BlcnR5LXZhbHVlIl0sIm0iOlsiL3AvYnVmZmV0dC1qdXN0LXBsYWNlZC1oaXMtYmV0IiwiL3AvZmVhci1saXZlcy1pbi10aGUtdW5jZXJ0YWludHkiLCIvcC9zZW5kLWNsYXVkZS15b3VyLWNocm9tb3NvbWVzIl19LCIvb2ZmbWFya2V0LWRlYWxzLW1hcmtldHBsYWNlIjp7InIiOltdLCJtIjpbIi9wL3lvdXItYm9keS1pcy1hLXRlbXBsZSIsIi9wL2VpZ2h0eS1vbmUiLCIvcC95b3UtbG9vay1saWtlLXlvdS1uZWVkLWEtaHVnIl19LCIvb2tvbG9uYS1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjp7InIiOlsiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIiwiL3Avb2xtc3RlZC1kZXNpZ25lZC15b3VyLXByb3BlcnR5LXZhbHVlIiwiL3AvcmlnaHQtdHdpY2UiXSwibSI6WyIvcC9wYXJ0eS10aW1lIiwiL3AvZ2V0LW91dC1vZi15b3VyLWdvbGRlbi1hZ2UtbGV0LXMtY3JlYXRlLW5vdyIsIi9wL3dlLWdldC1uby1zZWNvbmQtY2hhbmNlLWluLXRoaXMtbGlmZSJdfSwiL29sZC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjp7InIiOlsiL3Avb2xtc3RlZC1kZXNpZ25lZC15b3VyLXByb3BlcnR5LXZhbHVlIiwiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIl0sIm0iOlsiL3AvdGhlLWJpcmRzLWtlZXAtY29taW5nIiwiL3AvdGhlLWZhY2UtaW4tdGhlLXNreSIsIi9wL2pvZS13YWtlcy11cC1mcmFuay1nb2VzLXRvLWJlZC13aGF0LWFib3V0LXlvdSJdfSwiL29sZGhhbS1jb3VudHkta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOnsiciI6WyIvcC9sb3Vpc3ZpbGxlLWlzLWJ1aWxkaW5nLWl0cy1mdXR1cmUtYXJlLXlvdS1pbiIsIi9wL2FiZS1saW5jb2xuLXdhbGtlZC1vbi13YXRlciJdLCJtIjpbIi9wL3RoZS1tYW4teW91LXVzZWQtdG8tYmUiLCIvcC90aGUtbWNyaWItaXMtYmFjayIsIi9wL2l0LXMtbm90LXdlaXJkLWl0LXMtanVzdC1kaWZmZXJlbnQiXX0sIi9vbG1zdGVkLXBhcmtzLWxvdWlzdmlsbGUtaG9tZS12YWx1ZXMiOnsiciI6W10sIm0iOlsiL3AvYmUtc2Vlbi13YW50aW5nLWl0IiwiL3AvdGhlLXByaWRlLW9mLWxvdWlzdmlsbGUiLCIvcC9tb3JlLXN1cHBseS13YXRjaC1jbG9zZWx5Il19LCIvb3Bwb3J0dW5pdHktem9uZXMtbG91aXN2aWxsZS1pbnZlc3RvcnMtMjAyNiI6eyJyIjpbIi9wL2FiZS1saW5jb2xuLXdhbGtlZC1vbi13YXRlciJdLCJtIjpbIi9wL3NvcnJ5LWNyb3NsZXkiLCIvcC9ncmF0ZWZ1bCIsIi9wL2J1aWxkaW5nLWEtc3RpbGwtdG8tc2xvdy1kb3duLXRoZS1hLWhlYWx0aC1zY2FyZS1hLWNsZWFyLWJpbGwtb2YtaGVhbHRoLWFuZC1hLW51bWJlci1teS1zdXJnZW9uLWdhdmUiXX0sIi9wZXdlZS12YWxsZXkta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOnsiciI6W10sIm0iOlsiL3Avcm9va2llLW51bWJlcnMiLCIvcC90aGUtc3R1ZmYtdGhhdC1saWdodHMteW91LXVwIiwiL3AvaW52ZW50b3J5LXN1cmdlLWRlcmJ5LXdlZWstbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS0yMDI2Il19LCIvcGh5c2ljaWFuLXJlbG9jYXRpb24tbG91aXN2aWxsZS1hY3JlYWdlLWd1aWRlIjp7InIiOlsiL3AvbG91aXN2aWxsZS1pcy1idWlsZGluZy1pdHMtZnV0dXJlLWFyZS15b3UtaW4iLCIvcC90cnV0aC1hbmQtbGllcyIsIi9wL25vYm9keS10b2xkLWxvdWlzdmlsbGUtdG8tc2xvdy1kb3duIl0sIm0iOlsiL3AvYXZpYXRpb24tYS10aHJlYWQiLCIvcC90aGUtbW9ybmluZy1iZXJnZXJvbi1zLXRvcC0yNS1wZW9wbGUtdG8ta25vdy1pbi1yZWFsLWVzdGF0ZSIsIi9wL3NoaW5lLWEtbGlnaHQtb24taXQiXX0sIi9wb3BsYXItbGV2ZWwtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6eyJyIjpbXSwibSI6WyIvcC90aW1lLXRvLWV2b2x2ZSIsIi9wL3BpY2stdXAtb25lLW5ldy1iYWxsLXRoaXMtd2Vla2VuZCIsIi9wL3RoZS1mdXR1cmUtaGFzLWEtcGh5c2ljYWwtYWRkcmVzcy03NGFiIl19LCIvcG9ydGxhbmQtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6eyJyIjpbIi9wL2FiZS1saW5jb2xuLXdhbGtlZC1vbi13YXRlciJdLCJtIjpbIi9wL2dvaW5nLWZyb20tY2hpcHMtdG8tc3RlYWsiLCIvcC90aGUtcG90aG9sZSIsIi9wL2JpcmRzLWJpcmRzLWJpcmRzIl19LCIvcHJlYXByb2JhY2lvbi1oaXBvdGVjYS1rZW50dWNreS1ndWlhLWVuLWVzcGFub2wiOnsiciI6W10sIm0iOlsiL3AveW91ci1tb3JuaW5nLXN0YXJ0cy10aGUtbmlnaHQtYmVmb3JlIiwiL3AveW91LXJlLWFscmVhZHktYWhlYWQtb2YtOTctOC1vZi1wZW9wbGUiLCIvcC93aGF0ZXZlci1oYXBwZW5lZC10by1hbWVsaWEtZWFyaGFydCJdfSwiL3Byb3BlcnR5LWFsZXJ0cyI6eyJyIjpbXSwibSI6WyIvcC90aGUtYnJhbmNoIiwiL3AvaWRlYXMtZG9uLXQtaGF2ZS10by1kaWUtaW4tYmFzZW1lbnRzLWFueW1vcmUiLCIvcC9kZWFkLXBob25lcyJdfSwiL3Byb3NwZWN0LWt5LW5laWdoYm9yaG9vZC1ndWlkZSI6eyJyIjpbIi9wL25hc2h2aWxsZS1zZXZlbi15ZWFycy1hZ28iLCIvcC9hYmUtbGluY29sbi13YWxrZWQtb24td2F0ZXIiLCIvcC9yaWdodC10d2ljZSJdLCJtIjpbIi9wL3JlZC1jbGF5LXN0cmF5cy1haXJibmItdG8tbWFkaXNvbi1zcXVhcmUtZ2FyZGVuIiwiL3AvaW5jbHVkaW5nLW1vZGVyYXRpb24iLCIvcC9yaWdodC1pZGVhLXdyb25nLWJhcnJlbCJdfSwiL3JhZG9uLWtlbnR1Y2t5LWhvbWVzLWxvdWlzdmlsbGUtYnV5ZXJzLXNlbGxlcnMiOnsiciI6W10sIm0iOlsiL3AvZG9uLXQtbGV0LXRoZS1sYXN0LW9uZS1zb3VyLXlvdSIsIi9wL2Etc3VuZGF5LWVtYWlsLWZyb20tbWUiLCIvcC90aGUtcGxhY2UtdGhleS10cmllZC10by1kcm93biJdfSwiL3JlYWwtZXN0YXRlLWVuLWVzcGFub2wtbG91aXN2aWxsZSI6eyJyIjpbXSwibSI6WyIvcC9jb21lLW1lZXQtYWxsLW15LWZyaWVuZHMiLCIvcC9maW5kaW5nLXdoYXQtd29ya3MiLCIvcC9ldmVyeXRoaW5nLXMtYWxyZWFkeS1kb25lIl19LCIvcmVsb2NhdGluZy10by1rZW50dWNreSI6eyJyIjpbIi9wL25hc2h2aWxsZS1zZXZlbi15ZWFycy1hZ28iLCIvcC9sb3Vpc3ZpbGxlLWRvZXNuLXQtYnJhZy1zby1pLXdpbGwiLCIvcC90aGUtcGxhY2UtdGhleS10cmllZC10by1kcm93biIsIi9wL3dhbGstaW4td2l0aC1zb2x1dGlvbnMiXSwibSI6WyIvcC9pLWdhdmUtYXdheS1teS1jb250cmFjdG9yIiwiL3Avc3RyaXAtYXdheS10aGUtbm9pc2UiLCIvcC9rZWVwLXBlZGFsaW5nIl19LCIvcmVsb2NhdGluZy10by1sb3Vpc3ZpbGxlIjp7InIiOlsiL3AvbG91aXN2aWxsZS1kb2Vzbi10LWJyYWctc28taS13aWxsIiwiL3Avb2xtc3RlZC1kZXNpZ25lZC15b3VyLXByb3BlcnR5LXZhbHVlIiwiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIiwiL3Avbm8tcGl0Y2hlcy1qdXN0LXBpenphIl0sIm0iOlsiL3AvZXZlcnlib2R5LXMtZ290LXRoZWlyLXRoaW5raW5nLWNhcHMtb24iLCIvcC9jaGVjay15b3VyLXNjcmVlbi10aW1lLXRoYXQtcy15b3VyLWFuc3dlciIsIi9wL3RoZS1vcGVuLWhvdXNlLWxvc3QtdG8tdGhlLXJlZC16b25lIl19LCIvcmVsb2NhdGluZy10by1sb3Vpc3ZpbGxlLWhvc3BpdGFsLXBvc2l0aW9uIjp7InIiOltdLCJtIjpbIi9wL3Rlbi13ZWVrcy1vdXQiLCIvcC9zZXZlbi1jYXJkaWdhbnMiLCIvcC90aGUtY2FuYXJ5LWluLXRoZS1yaWNraG91c2UiXX0sIi9yZWxvY2F0aW9uLWNvc3QtY2FsY3VsYXRvciI6eyJyIjpbIi9wL3RoZS0yMS1jaXR5Il0sIm0iOlsiL3AvdGhlLW1hcmtldC1ldmVyeW9uZS1zYWlkLXdhcy1mcm96ZW4iLCIvcC80Ny1tb3JlLXBlci1kb2xsYXIiLCIvcC93aGVuLXMtdGhlLWxhc3QtdGltZS15b3UtY3JlYXRlZC1zb21ldGhpbmciXX0sIi9yZW50aW5nLWEtaG9tZS1pbi1sb3Vpc3ZpbGxlLWtlbnR1Y2t5Ijp7InIiOlsiL3AveW91LXJlLWFscmVhZHktYWhlYWQtb2YtOTctOC1vZi1wZW9wbGUiLCIvcC90aGUtb25lcy10aGF0LWNvdW50IiwiL3AvYm91Z2h0LWF0LTEwNWstd29ydGgtMjM4ay1ib3RoLXNpZHR3by1wZW9wbGUtd2Fsa2VkLW91dC1vZi1teS1jbG9zaW5nLXRodXJzZGF5LWFuZC1ib3RoLW9mLXRoZW0td29uIiwiL3AvYWdlbmN5Il0sIm0iOlsiL3AvbGVhZC1vci1nZXQtbGVkIiwiL3AvdGhleS1rbm93LXRoZXktcmUtb24tY2FtZXJhIiwiL3AvbGV0LXRoaXMtYmUtYS1rZXJuZWwiXX0sIi9yZXBhcmFyLWNyZWRpdG8tYW50ZXMtZGUtY29tcHJhci1jYXNhLWtlbnR1Y2t5YXNpc3RlbmNpYS1wYXJhLWVsLXBhZ28taW5pY2lhbC1lbi1rZW50dWNreS1ndWEtZW4tZXNwYW9sLTIwMjYtY29weSI6eyJyIjpbXSwibSI6WyIvcC9zcHJlYWQtb3V0IiwiL3AvZ29pbmctZnJvbS1jaGlwcy10by1zdGVhayIsIi9wL3RoZS1wbGFjZS10aGV5LXRyaWVkLXRvLWRyb3duIl19LCIvcm9iLWJlcmdlcm9uIjp7InIiOltdLCJtIjpbIi9wL2ktZ2F2ZS1hd2F5LW15LWNvbnRyYWN0b3IiLCIvcC93aGVuLXMtdGhlLWxhc3QtdGltZS15b3UtY3JlYXRlZC1zb21ldGhpbmciLCIvcC9oYXZlLWEtbGl0dGxlLWZhaXRoLWluLW1lIl19LCIvcnVzc2VsbC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjp7InIiOlsiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIiwiL3AvbG91aXN2aWxsZS1kb2Vzbi10LWJyYWctc28taS13aWxsIl0sIm0iOlsiL3AvZWlnaHR5LW9uZSIsIi9wL3NldmVuLWNhcmRpZ2FucyIsIi9wL2V2ZXJ5Ym9keS1zLWdvdC10aGVpci10aGlua2luZy1jYXBzLW9uIl19LCIvc2VjdGlvbi04LWxhbmRsb3JkaW5nLWxvdWlzdmlsbGUta2VudHVja3kiOnsiciI6W10sIm0iOlsiL3AvYXR0ZW50aW9uIiwiL3AvZGVhZC1waG9uZXMiLCIvcC90aGUtd2Vic2l0ZS1pbi10aGUtaG90LXR1YiJdfSwiL3NlbGwiOnsiciI6W10sIm0iOlsiL3AvY29tZS1tZWV0LWFsbC1teS1mcmllbmRzIiwiL3AvdG91Y2gtaXQtdHdpY2UiLCIvcC90aGUtcm9ib3RzLWFscmVhZHktbGl2ZS1oZXJlIl19LCIvc2VsbC1haXJibmItc2hvcnQtdGVybS1yZW50YWwta2VudHVja3kiOnsiciI6WyIvcC9sb3Vpc3ZpbGxlLWlzLWJ1aWxkaW5nLWl0cy1mdXR1cmUtYXJlLXlvdS1pbiJdLCJtIjpbIi9wL2V2ZXJ5dGhpbmctcy1hbHJlYWR5LWRvbmUiLCIvcC9maXZlLWh1bmRyZWQtZmlmdHktb25lLWQ0YjgiLCIvcC90aGUtcG9zdC1jYW5jZXItc2NhcmUtb2YtMjAyNiJdfSwiL3NlbGwtbXktaG91c2UtZmFzdC1sb3Vpc3ZpbGxlIjp7InIiOlsiL3AvbmFzaHZpbGxlLXNldmVuLXllYXJzLWFnbyIsIi9wL3RoZS1tYXJrZXQtZXZlcnlvbmUtc2FpZC13YXMtZnJvemVuIiwiL3AvYmUtc2Vlbi13YW50aW5nLWl0Il0sIm0iOlsiL3AvZ2V0LW91dC1vZi15b3VyLWdvbGRlbi1hZ2UtbGV0LXMtY3JlYXRlLW5vdyIsIi9wL3RoZS1wb3Rob2xlIiwiL3AvbGlmZS11cGRhdGUiXX0sIi9zZWxsZXItZmluYW5jaW5nLWtlbnR1Y2t5Ijp7InIiOlsiL3AvbmFzaHZpbGxlLXNldmVuLXllYXJzLWFnbyIsIi9wL2JlLXNlZW4td2FudGluZy1pdCIsIi9wL21heWJlLWktbS1jcmF6eSJdLCJtIjpbIi9wL2ZlYXItbGl2ZXMtaW4tdGhlLXVuY2VydGFpbnR5IiwiL3AvYS1taXh0YXBlLXN0YXBsZSIsIi9wL2lmLWl0LWRvZXNuLXQtc2F5LXlvdS1jYW4tdC10aGVuLXlvdS1jYW4iXX0sIi9zZWxsZXItbmV0LXByb2NlZWRzLWNhbGN1bGF0b3IiOnsiciI6W10sIm0iOlsiL3AvdGhlLWJyYW5jaCIsIi9wL3RoZS1saXR0bGUtam95cyIsIi9wL3NwcmVhZC1vdXQiXX0sIi9zZWxsZXJzYnVyZy1pbmRpYW5hLXJlYWwtZXN0YXRlLWd1aWRlIjp7InIiOltdLCJtIjpbIi9wLzQ3LW1vcmUtcGVyLWRvbGxhciIsIi9wL25vYm9keS1wdXRzLWJhYnktaW4tYS1ib3giLCIvcC9hdmlhdGlvbi1hLXRocmVhZCJdfSwiL3NlbGxpbmctYS1wYXJlbnRzLWhvbWUta2VudHVja3kiOnsiciI6W10sIm0iOlsiL3AvZG9uLXQtbGV0LXRoZS1sYXN0LW9uZS1zb3VyLXlvdSIsIi9wL25vLW9uZS1zLWNvbWluZyIsIi9wL3NvcnJ5LWNyb3NsZXkiXX0sIi9zZWxsaW5nLWRpc3RyZXNzZWQtZGlmZmljdWx0LXByb3BlcnR5LWxvdWlzdmlsbGUiOnsiciI6WyIvcC9zaGluZS1hLWxpZ2h0LW9uLWl0IiwiL3AvdGhlLW9uZXMtdGhhdC1jb3VudCJdLCJtIjpbIi9wL3RoZXkta25vdy10aGV5LXJlLW9uLWNhbWVyYSIsIi9wL3JpZ2h0LWlkZWEtd3JvbmctYmFycmVsIiwiL3AvaXQtcy1oYXJzaCJdfSwiL3Nlbmlvci1yZWFsLWVzdGF0ZS1zZXJ2aWNlcy1pbi1sb3Vpc3ZpbGxlIjp7InIiOltdLCJtIjpbIi9wL2FnZW5jeSIsIi9wL2xpZmUtcmV3YXJkcy1lZmZvcnQtY3JhenktbXVsdGlwbGllcnMiLCIvcC9oYXBweS1hbmQtaGVhbHRoeS1pcy1hLWJ1c2luZXNzLW1vZGVsIl19LCIvc2hlbGJ5LWNvdW50eS1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6eyJyIjpbIi9wL3RydXRoLWFuZC1saWVzIiwiL3AvbG91aXN2aWxsZS1pcy1idWlsZGluZy1pdHMtZnV0dXJlLWFyZS15b3UtaW4iLCIvcC9ub2JvZHktdG9sZC1sb3Vpc3ZpbGxlLXRvLXNsb3ctZG93biJdLCJtIjpbIi9wL21vcm5pbmctd29vZC1zZWx0emVyLXdhdGVyLWFuZC1hLTEyLWJhZy1vZi1maWJlciIsIi9wL2J1aWxkaW5nLWEtc3RpbGwtdG8tc2xvdy1kb3duLXRoZS1hLWhlYWx0aC1zY2FyZS1hLWNsZWFyLWJpbGwtb2YtaGVhbHRoLWFuZC1hLW51bWJlci1teS1zdXJnZW9uLWdhdmUiLCIvcC90ZW4td2Vla3Mtb3V0Il19LCIvc2hlbGJ5LWNvdW50eS1zaGVsYnl2aWxsZS1zaW1wc29udmlsbGUtZmFybXMtYWNyZWFnZSI6eyJyIjpbIi9wL3RydXRoLWFuZC1saWVzIiwiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIiwiL3Avbm9ib2R5LXRvbGQtbG91aXN2aWxsZS10by1zbG93LWRvd24iXSwibSI6WyIvcC9kb24tdC13aXNoLWF3YXkteW91ci10aW1lIiwiL3AveW91LXJlLWFscmVhZHktYWhlYWQtb2YtOTctOC1vZi1wZW9wbGUiLCIvcC9yYWlueS13ZWVrZW5kLWdvb2QtYm9vay1nby1jcmVhdGUtc29tZXRoaW5nIl19LCIvc2hlbGJ5LXBhcmstbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6eyJyIjpbXSwibSI6WyIvcC9rZXZpbi1vLWxlYXJ5LWRpZG4tdC1rbm93IiwiL3AvbWF5YmUtaS1tLWNyYXp5IiwiL3AvbGV0LXRoaXMtYmUtYS1rZXJuZWwiXX0sIi9zaGV5LWJsYWtlIjp7InIiOltdLCJtIjpbIi9wL3doYXRldmVyLWhhcHBlbmVkLXRvLWFtZWxpYS1lYXJoYXJ0IiwiL3AvdGhlLWZ1dHVyZS1oYXMtYS1waHlzaWNhbC1hZGRyZXNzLTc0YWIiLCIvcC90aGUtYmlyZHMta2VlcC1jb21pbmciXX0sIi9zaGl2ZWx5LXBsZWFzdXJlLXJpZGdlLXBhcmstcmVhbC1lc3RhdGUtZ3VpZGUiOnsiciI6WyIvcC9hYmUtbGluY29sbi13YWxrZWQtb24td2F0ZXIiLCIvcC9vbG1zdGVkLWRlc2lnbmVkLXlvdXItcHJvcGVydHktdmFsdWUiXSwibSI6WyIvcC9tb3JlLXN1cHBseS13YXRjaC1jbG9zZWx5IiwiL3Avc2VuZC1jbGF1ZGUteW91ci1jaHJvbW9zb21lcyIsIi9wL2pvZS13YWtlcy11cC1mcmFuay1nb2VzLXRvLWJlZC13aGF0LWFib3V0LXlvdSJdfSwiL3Nob3J0LXNhbGUta2VudHVja3ktZ3VpZGUiOnsiciI6W10sIm0iOlsiL3AvdGhlLW1hcmtldC1pcy1hcmd1aW5nLXdpdGgtaXRzZWxmIiwiL3AvYmUtc2Vlbi13YW50aW5nLWl0IiwiL3AvZ3JlYXQtbmVpZ2hib3JzIl19LCIvc21va2V0b3duLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiOnsiciI6WyIvcC9vbG1zdGVkLWRlc2lnbmVkLXlvdXItcHJvcGVydHktdmFsdWUiLCIvcC9hYmUtbGluY29sbi13YWxrZWQtb24td2F0ZXIiXSwibSI6WyIvcC90aGUtd29uZGVyLXRoYXQtcy1hbHJlYWR5LXRoZXJlIiwiL3AvdGhlLXByaWRlLW9mLWxvdWlzdmlsbGUiLCIvcC9hLXN1bmRheS1lbWFpbC1mcm9tLW1lIl19LCIvc291dGhlcm4taW5kaWFuYS1jb21tZXJjaWFsLXJlYWwtZXN0YXRlIjp7InIiOlsiL3AvbG91aXN2aWxsZS1kb2Vzbi10LWJyYWctc28taS13aWxsIl0sIm0iOlsiL3Avc2hpbmUtYS1saWdodC1vbi1pdCIsIi9wL3dlLWdldC1uby1zZWNvbmQtY2hhbmNlLWluLXRoaXMtbGlmZSIsIi9wL2tlZXAtcGVkYWxpbmciXX0sIi9zb3V0aGVybi1pbmRpYW5hLXNob3J0LXRlcm0tcmVudGFsLXJlZ3VsYXRpb25zIjp7InIiOlsiL3Avbm9ib2R5LXRvbGQtbG91aXN2aWxsZS10by1zbG93LWRvd24iLCIvcC9hYmUtbGluY29sbi13YWxrZWQtb24td2F0ZXIiXSwibSI6WyIvcC9pdC1zLW5vdC13ZWlyZC1pdC1zLWp1c3QtZGlmZmVyZW50IiwiL3AvbXktZGFkLWdvdC13YXktY29vbGVyLWFmdGVyLTYwIiwiL3AvdGhlLWNhbmFyeS1pbi10aGUtcmlja2hvdXNlIl19LCIvc3ByaW5naHVyc3QtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6eyJyIjpbXSwibSI6WyIvcC9yb29raWUtbnVtYmVycyIsIi9wL3doZW4tdGhlLWxldmVlLWJyZWFrcyIsIi9wL3RoZS1tY3JpYi1pcy1iYWNrIl19LCIvc3QtbWF0dGhld3MtbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtZ3VpZGUiOnsiciI6WyIvcC9hYmUtbGluY29sbi13YWxrZWQtb24td2F0ZXIiLCIvcC9vbG1zdGVkLWRlc2lnbmVkLXlvdXItcHJvcGVydHktdmFsdWUiLCIvcC9uYXNodmlsbGUtc2V2ZW4teWVhcnMtYWdvIl0sIm0iOlsiL3AvcGFydHktdGltZSIsIi9wL3RoZS1vYnNlc3NlZC13aWxsLWluaGVyaXQtdGhlLWVhcnRoIiwiL3Avd2Fsay1pbi13aXRoLXNvbHV0aW9ucyJdfSwiL3N1YmplY3QtdG8tcmVhbC1lc3RhdGUta2VudHVja3kiOnsiciI6WyIvcC9uYXNodmlsbGUtc2V2ZW4teWVhcnMtYWdvIl0sIm0iOlsiL3AvdGhlLW1vcm5pbmctYmVyZ2Vyb24tcy10b3AtMjUtcGVvcGxlLXRvLWtub3ctaW4tcmVhbC1lc3RhdGUiLCIvcC9hbm90aGVyLWxpZmUtdXBkYXRlIiwiL3Avb25lLXRvLWZpdmUtb24tZnJpZGF5Il19LCIvc3dpdGNoLXJlYWwtZXN0YXRlLWJyb2tlcmFnZXMta2VudHVja3kiOnsiciI6WyIvcC90b3VjaC1pdC10d2ljZSJdLCJtIjpbIi9wL3RoZS1mYWNlLWluLXRoZS1za3kiLCIvcC90aGUtc3R1ZmYtdGhhdC1saWdodHMteW91LXVwIiwiL3AvaW52ZW50b3J5LXN1cmdlLWRlcmJ5LXdlZWstbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS0yMDI2Il19LCIvdGVuYW50LXBsYWNlbWVudC1yZXF1ZXN0Ijp7InIiOltdLCJtIjpbIi9wL2dyYXRlZnVsIiwiL3AvZGlkLXlvdS1rbm93LXRheWxvci1zd2lmdC1nb3QtbWFycmllZC1hcGktY3V0LXR3ZW50eS13b3Jkcy1vdXQtb2YtbXktZmVlZC1hbmQtZ290LWFuLWhvdXItYW5kLWEtaGFsZiIsIi9wL2ktZmluYWxseS1zdG9wcGVkLXNheWluZy1ub3QtbWUiXX0sIi90ZW5hbnQtcGxhY2VtZW50LXNlcnZpY2VzLWluLWxvdWlzdmlsbGUiOnsiciI6WyIvcC95b3UtcmUtYWxyZWFkeS1haGVhZC1vZi05Ny04LW9mLXBlb3BsZSIsIi9wL29uZS10by1maXZlLW9uLWZyaWRheSIsIi9wL3RoZS1tb3JuaW5nLWJlcmdlcm9uLXMtdG9wLTI1LXBlb3BsZS10by1rbm93LWluLXJlYWwtZXN0YXRlIl0sIm0iOlsiL3Avc3BlY2llcy00MC1pcy1wbGF5aW5nLWhhcmQtdG8tZ2V0IiwiL3AveW91ci1ib2R5LWlzLWEtdGVtcGxlIiwiL3Avc2V0dGluZy11cC1mdXR1cmUtcm9iIl19LCIvdGhlLXdpbm5lci1yZWFsdHktaW52ZXN0b3ItY29ycmlkb3Itc291dGgtd2VzdC1sb3Vpc3ZpbGxlIjp7InIiOltdLCJtIjpbIi9wL3NvLWJlYXV0aWZ1bC1vci1zby13aGF0IiwiL3AvaWRlYXMtZG9uLXQtaGF2ZS10by1kaWUtaW4tYmFzZW1lbnRzLWFueW1vcmUiLCIvcC9ub2JvZHktd3JvdGUtYS1zd2FuLXNvbmctZm9yLXRoZS1lbGV2YXRvci1vcGVyYXRvciJdfSwiL3RyYXZlbC1udXJzZS1ob3VzaW5nLW5vcnRvbi1oZWFsdGhjYXJlLWxvdWlzdmlsbGUiOnsiciI6W10sIm0iOlsiL3AvbGVhZC1vci1nZXQtbGVkIiwiL3AvdGhlLW5pbC1lcmEtb2YtcmVhbC1lc3RhdGUiLCIvcC90aGUtc3F1ZWV6ZS1oYXMtYW4tZXhwaXJhdGlvbi1kYXRlIl19LCIvdHJhdmVsLW51cnNlLWhvdXNpbmctdW9mbC1oZWFsdGgtamV3aXNoLWhvc3BpdGFsLWxvdWlzdmlsbGUiOnsiciI6W10sIm0iOlsiL3AvaW5jbHVkaW5nLW1vZGVyYXRpb24iLCIvcC9maW5kLXRoZS1jdXJpb3VzLXBlb3BsZS1iZS10aGUtY3VyaW91cy1wZW9wbGUiLCIvcC90aGUtbWFuLXlvdS11c2VkLXRvLWJlIl19LCIvdHJpcGxlLW5ldC1ubm4tbGVhc2UtaW52ZXN0aW5nIjp7InIiOlsiL3AvdGhlLW5pbC1lcmEtb2YtcmVhbC1lc3RhdGUiXSwibSI6WyIvcC9yZWQtY2xheS1zdHJheXMtYWlyYm5iLXRvLW1hZGlzb24tc3F1YXJlLWdhcmRlbiIsIi9wL2J1ZmZldHQtanVzdC1wbGFjZWQtaGlzLWJldCIsIi9wL2Etc2xvdy1tb3JuaW5nLWNvc3RzLW1vcmUtdGhhbi10aGUtbW9ybmluZyJdfSwiL3VzZGEtbG9hbi1rZW50dWNreSI6eyJyIjpbIi9wL3RoZS0yMS1jaXR5IiwiL3AvdGhlLW9uZXMtdGhhdC1jb3VudCIsIi9wL2xvdWlzdmlsbGUtaXMtYnVpbGRpbmctaXRzLWZ1dHVyZS1hcmUteW91LWluIiwiL3AvZXZlcnlib2R5LXMtZ290LXRoZWlyLXRoaW5raW5nLWNhcHMtb24iXSwibSI6WyIvcC9ncm9nZ3ktaXMtdGhlLWV4Y2VwdGlvbi1ub3ciLCIvcC90aGUtb3Blbi1ob3VzZS1sb3N0LXRvLXRoZS1yZWQtem9uZSIsIi9wL3N0cmlwLWF3YXktdGhlLW5vaXNlIl19LCIvdmEtbG9hbi1jYWxjdWxhdG9yLWtlbnR1Y2t5Ijp7InIiOlsiL3AvdGhlLTIxLWNpdHkiXSwibSI6WyIvcC9maW5kaW5nLWdvb2QtY29udHJhY3RvcnMtaXMtYnJva2VuLWhlcmUtcy10aGUtZml4IiwiL3AvZmluZGluZy13aGF0LXdvcmtzIiwiL3AvZXZlcnlib2R5LW5lZWRzLWEtc2Vjb25kLXRoaW5nIl19LCIvdmFsbGV5LXN0YXRpb24tbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtZ3VpZGUiOnsiciI6WyIvcC9hYmUtbGluY29sbi13YWxrZWQtb24td2F0ZXIiLCIvcC9yaWdodC10d2ljZSJdLCJtIjpbIi9wL3lvdXItbW9ybmluZy1zdGFydHMtdGhlLW5pZ2h0LWJlZm9yZSIsIi9wL2NoZWNrLXlvdXItc2NyZWVuLXRpbWUtdGhhdC1zLXlvdXItYW5zd2VyIiwiL3AvcGljay11cC1vbmUtbmV3LWJhbGwtdGhpcy13ZWVrZW5kIl19LCIvdmV0ZXJhbnMtcmVhbC1lc3RhdGUtbG91aXN2aWxsZSI6eyJyIjpbXSwibSI6WyIvcC90aGUtbWFya2V0LWV2ZXJ5b25lLXNhaWQtd2FzLWZyb3plbiIsIi9wL25vLXBpdGNoZXMtanVzdC1waXp6YSIsIi9wL3lvdS1sb29rLWxpa2UteW91LW5lZWQtYS1odWciXX0sIi93ZW5keS16b2xub3dza2kiOnsiciI6W10sIm0iOlsiL3AvYmlyZHMtYmlyZHMtYmlyZHMiLCIvcC90aW1lLXRvLWV2b2x2ZSIsIi9wL2pvZS13YWtlcy11cC1mcmFuay1nb2VzLXRvLWJlZC13aGF0LWFib3V0LXlvdSJdfSwiL3doYXQtaXMtbXktaG91c2Utd29ydGgtbG91aXN2aWxsZSI6eyJyIjpbIi9wL2FiZS1saW5jb2xuLXdhbGtlZC1vbi13YXRlciIsIi9wL3RoZS1zcXVlZXplLWhhcy1hbi1leHBpcmF0aW9uLWRhdGUiLCIvcC9uYXNodmlsbGUtc2V2ZW4teWVhcnMtYWdvIl0sIm0iOlsiL3AvdGhlLWxpdHRsZS1qb3lzIiwiL3AvbWF5YmUtaS1tLWNyYXp5IiwiL3AvaXQtcy1ub3Qtd2VpcmQtaXQtcy1qdXN0LWRpZmZlcmVudCJdfSwiL3dob2xlc2FsaW5nLXJlYWwtZXN0YXRlLWtlbnR1Y2t5Ijp7InIiOlsiL3AvbmFzaHZpbGxlLXNldmVuLXllYXJzLWFnbyIsIi9wL2hhdmUtYS1saXR0bGUtZmFpdGgtaW4tbWUiLCIvcC90aGUtd2Vic2l0ZS1pbi10aGUtaG90LXR1YiJdLCJtIjpbIi9wL3NwcmVhZC1vdXQiLCIvcC90aGUtbWFya2V0LWlzLWFyZ3Vpbmctd2l0aC1pdHNlbGYiLCIvcC93aGVuLXMtdGhlLWxhc3QtdGltZS15b3UtY3JlYXRlZC1zb21ldGhpbmciXX0sIi93aHktYmVjb21lLWEtd2lubmVyLXJlYWx0eS1hZ2VudCI6eyJyIjpbIi9wL2Etc3VuZGF5LWVtYWlsLWZyb20tbWUiLCIvcC90aGUtb25lcy10aGF0LWNvdW50IiwiL3AvdGhlLXdlYnNpdGUtaW4tdGhlLWhvdC10dWIiXSwibSI6WyIvcC9zZW5kLWNsYXVkZS15b3VyLWNocm9tb3NvbWVzIiwiL3AvaGFwcHktYW5kLWhlYWx0aHktaXMtYS1idXNpbmVzcy1tb2RlbCIsIi9wL2ktZ2F2ZS1hd2F5LW15LWNvbnRyYWN0b3IiXX0sIi93aHktZGl2ZXJzaXR5LW1hdHRlcnMtYXQtd2lubmVyLXJlYWx0eSI6eyJyIjpbIi9wL3RoZS1wcmlkZS1vZi1sb3Vpc3ZpbGxlIiwiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIl0sIm0iOlsiL3AvcmlnaHQtaWRlYS13cm9uZy1iYXJyZWwiLCIvcC9yYWlueS13ZWVrZW5kLWdvb2QtYm9vay1nby1jcmVhdGUtc29tZXRoaW5nIiwiL3AvdGhlLWNhbmFyeS1pbi10aGUtcmlja2hvdXNlIl19LCIvd2h5LWludmVzdC1pbi1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlIjp7InIiOlsiL3AvbG91aXN2aWxsZS1kb2Vzbi10LWJyYWctc28taS13aWxsIiwiL3AvbmFzaHZpbGxlLXNldmVuLXllYXJzLWFnbyIsIi9wL2xvdWlzdmlsbGUtaXMtYnVpbGRpbmctaXRzLWZ1dHVyZS1hcmUteW91LWluIiwiL3AvdGhlLWZ1dHVyZS1oYXMtYS1waHlzaWNhbC1hZGRyZXNzLTc0YWIiXSwibSI6WyIvcC9rZWVwLXBlZGFsaW5nIiwiL3AvZGVhZC1waG9uZXMiLCIvcC9waWNrLXVwLW9uZS1uZXctYmFsbC10aGlzLXdlZWtlbmQiXX0sIi93aHktd2lubmVyLXJlYWx0eSI6eyJyIjpbIi9wL3RvdWNoLWl0LXR3aWNlIiwiL3AvZmluZGluZy1nb29kLWNvbnRyYWN0b3JzLWlzLWJyb2tlbi1oZXJlLXMtdGhlLWZpeCIsIi9wL2ZpbmRpbmctd2hhdC13b3JrcyJdLCJtIjpbIi9wL2F2aWF0aW9uLWEtdGhyZWFkIiwiL3AvY29tZS1tZWV0LWFsbC1teS1mcmllbmRzIiwiL3AveW91LWxvb2stbGlrZS15b3UtbmVlZC1hLWh1ZyJdfSwiL3doeS13aW5uZXItcmVhbHR5LWZvci1jb21tZXJjaWFsLXJlYWwtZXN0YXRlIjp7InIiOltdLCJtIjpbIi9wL2ZpbmRpbmctd2hhdC13b3JrcyIsIi9wL3RoZS1yb2JvdHMtYWxyZWFkeS1saXZlLWhlcmUiLCIvcC9tb3JlLXN1cHBseS13YXRjaC1jbG9zZWx5Il19LCIvd2luZHktaGlsbHMtc2VuZWNhLWdhcmRlbnMta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOnsiciI6W10sIm0iOlsiL3AvaW52ZW50b3J5LXN1cmdlLWRlcmJ5LXdlZWstbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS0yMDI2IiwiL3AvY2hlY2steW91ci1zY3JlZW4tdGltZS10aGF0LXMteW91ci1hbnN3ZXIiLCIvcC90aGUtd2Vic2l0ZS1pbi10aGUtaG90LXR1YiJdfSwiL3dpbm5lci1yZWFsdHktYnJva2VyYWdlLXNwaXJpdC1ob25vcnMiOnsiciI6W10sIm0iOlsiL3AvYS1zbG93LW1vcm5pbmctY29zdHMtbW9yZS10aGFuLXRoZS1tb3JuaW5nIiwiL3AvZ3JvZ2d5LWlzLXRoZS1leGNlcHRpb24tbm93IiwiL3AvdGhlLW1vcm5pbmctYmVyZ2Vyb24tcy10b3AtMjUtcGVvcGxlLXRvLWtub3ctaW4tcmVhbC1lc3RhdGUiXX0sIi93aW5uZXItcmVhbHR5LWdpdmluZy1iYWNrIjp7InIiOlsiL3AvdGhlLW1vcm5pbmctYmVyZ2Vyb24tcy10b3AtMjUtcGVvcGxlLXRvLWtub3ctaW4tcmVhbC1lc3RhdGUiLCIvcC9qb2Utd2FrZXMtdXAtZnJhbmstZ29lcy10by1iZWQtd2hhdC1hYm91dC15b3UiXSwibSI6WyIvcC9uby1vbmUtcy1jb21pbmciLCIvcC9pdC1zLWhhcnNoIiwiL3AvdGhlLXdvbmRlci10aGF0LXMtYWxyZWFkeS10aGVyZSJdfSwiL3dpbm5lci1yZWFsdHktdGVjaG5vbG9neSI6eyJyIjpbXSwibSI6WyIvcC90aGUtbmlsLWVyYS1vZi1yZWFsLWVzdGF0ZSIsIi9wL21vcm5pbmctd29vZC1zZWx0emVyLXdhdGVyLWFuZC1hLTEyLWJhZy1vZi1maWJlciIsIi9wL3RoZS1mdXR1cmUtaGFzLWEtcGh5c2ljYWwtYWRkcmVzcy03NGFiIl19LCIvd2lubmVyLXNlcnZpY2VzIjp7InIiOlsiL3AvdGhlLW5pbC1lcmEtb2YtcmVhbC1lc3RhdGUiXSwibSI6WyIvcC9zcGVjaWVzLTQwLWlzLXBsYXlpbmctaGFyZC10by1nZXQiLCIvcC93YWxrLWluLXdpdGgtc29sdXRpb25zIiwiL3AvdGhlLWJyYW5jaCJdfSwiL3dyYXBhcm91bmQtbW9ydGdhZ2Uta2VudHVja3kiOnsiciI6WyIvcC9uYXNodmlsbGUtc2V2ZW4teWVhcnMtYWdvIiwiL3AvYmUtc2Vlbi13YW50aW5nLWl0IiwiL3AvYWJlLWxpbmNvbG4td2Fsa2VkLW9uLXdhdGVyIl0sIm0iOlsiL3AvdGhleS1rbm93LXRoZXktcmUtb24tY2FtZXJhIiwiL3AvYnVpbGRpbmctYS1zdGlsbC10by1zbG93LWRvd24tdGhlLWEtaGVhbHRoLXNjYXJlLWEtY2xlYXItYmlsbC1vZi1oZWFsdGgtYW5kLWEtbnVtYmVyLW15LXN1cmdlb24tZ2F2ZSIsIi9wL2lmLWl0LWRvZXNuLXQtc2F5LXlvdS1jYW4tdC10aGVuLXlvdS1jYW4iXX0sIi96b25pbmctc3RyYXRlZ3ktZ3JvdXAtaG9tZXMtbG91aXN2aWxsZS1vci1jb21tZXJjaWFsLWluZHVzdHJpYWwiOnsiciI6W10sIm0iOlsiL3Avbm9ib2R5LXB1dHMtYmFieS1pbi1hLWJveCIsIi9wL3NoaW5lLWEtbGlnaHQtb24taXQiLCIvcC93ZS1nZXQtbm8tc2Vjb25kLWNoYW5jZS1pbi10aGlzLWxpZmUiXX19LCJ0Ijp7Ii9wLzQ3LW1vcmUtcGVyLWRvbGxhciI6IjQ3JSBNb3JlIFBlciBEb2xsYXIiLCIvcC9hLW1peHRhcGUtc3RhcGxlIjoiQSBNaXh0YXBlIFN0YXBsZSIsIi9wL2Etc2xvdy1tb3JuaW5nLWNvc3RzLW1vcmUtdGhhbi10aGUtbW9ybmluZyI6IkEgU2xvdyBNb3JuaW5nIENvc3RzIE1vcmUgVGhhbiB0aGUgTW9ybmluZyIsIi9wL2Etc3VuZGF5LWVtYWlsLWZyb20tbWUiOiJBIFN1bmRheSBlbWFpbD8gRnJvbSBtZT8iLCIvcC9hYmUtbGluY29sbi13YWxrZWQtb24td2F0ZXIiOiJMb3Vpc3ZpbGxlJ3MgMTkzNyBGbG9vZDogVGhlIFdhdGVyIFRoYXQgQ2hhbmdlZCBFdmVyeXRoaW5nIiwiL3AvYWdlbmN5IjoiQWdlbmN5IiwiL3AvYW5vdGhlci1saWZlLXVwZGF0ZSI6IkFub3RoZXIgTGlmZSBVcGRhdGUiLCIvcC9hdHRlbnRpb24iOiIxNDdLIE9wZW5zIGluIDYgRGF5czogTG91aXN2aWxsZSdzIE1vc3QtUmVhZCBOZXdzbGV0dGVyIiwiL3AvYXZpYXRpb24tYS10aHJlYWQiOiJBdmlhdGlvbiBhIFRocmVhZCIsIi9wL2JlLXNlZW4td2FudGluZy1pdCI6IkJlIFNlZW4gV2FudGluZyBJdCIsIi9wL2JpcmRzLWJpcmRzLWJpcmRzIjoiQmlyZHMsIEJpcmRzLCBCaXJkcyIsIi9wL2JvdWdodC1hdC0xMDVrLXdvcnRoLTIzOGstYm90aC1zaWR0d28tcGVvcGxlLXdhbGtlZC1vdXQtb2YtbXktY2xvc2luZy10aHVyc2RheS1hbmQtYm90aC1vZi10aGVtLXdvbiI6IkJvdWdodCBhdCAkMTA1Sy4gQVJWICQyMzhLLiBCb3RoIFNpZGVzIExlZnQgSGFwcHkuIiwiL3AvYnVmZmV0dC1qdXN0LXBsYWNlZC1oaXMtYmV0IjoiQnVmZmV0dCBKdXN0IFBsYWNlZCBIaXMgQmV0IiwiL3AvYnVpbGRpbmctYS1zdGlsbC10by1zbG93LWRvd24tdGhlLWEtaGVhbHRoLXNjYXJlLWEtY2xlYXItYmlsbC1vZi1oZWFsdGgtYW5kLWEtbnVtYmVyLW15LXN1cmdlb24tZ2F2ZSI6IkJVSUxESU5HIEEgU1RJTEwsIFRPIFNMT1cgRE9XTiBUSEUgVElNRSIsIi9wL2NoZWNrLXlvdXItc2NyZWVuLXRpbWUtdGhhdC1zLXlvdXItYW5zd2VyIjoiQ2hlY2sgWW91ciBTY3JlZW4gVGltZS4gVGhhdCdzIFlvdXIgQW5zd2VyLiIsIi9wL2NvbWUtbWVldC1hbGwtbXktZnJpZW5kcyI6IkNvbWUgTWVldCBBbGwgTXkgRnJpZW5kcyIsIi9wL2RlYWQtcGhvbmVzIjoiRGVhZCBQaG9uZXMiLCIvcC9kaWQteW91LWtub3ctdGF5bG9yLXN3aWZ0LWdvdC1tYXJyaWVkLWFwaS1jdXQtdHdlbnR5LXdvcmRzLW91dC1vZi1teS1mZWVkLWFuZC1nb3QtYW4taG91ci1hbmQtYS1oYWxmIjoiRGlkIFlvdSBLbm93IFRheWxvciBTd2lmdCBHb3QgTWFycmllZCwgQXBwYXJlbnRseT8iLCIvcC9kb24tdC1sZXQtdGhlLWxhc3Qtb25lLXNvdXIteW91IjoiRG9uJ3QgTGV0IHRoZSBMYXN0IE9uZSBTb3VyIFlvdSIsIi9wL2Rvbi10LXdpc2gtYXdheS15b3VyLXRpbWUiOiJEb24ndCBXaXNoIEF3YXkgWW91ciBUaW1lIiwiL3AvZWlnaHR5LW9uZSI6IkVpZ2h0eS1PbmUiLCIvcC9ldmVyeWJvZHktbmVlZHMtYS1zZWNvbmQtdGhpbmciOiJFdmVyeWJvZHkgTmVlZHMgQSBTZWNvbmQgVGhpbmciLCIvcC9ldmVyeWJvZHktcy1nb3QtdGhlaXItdGhpbmtpbmctY2Fwcy1vbiI6IkV2ZXJ5Ym9keSdzIEdvdCBUaGVpciBUaGlua2luZyBDYXBzIE9uIiwiL3AvZXZlcnl0aGluZy1zLWFscmVhZHktZG9uZSI6IkV2ZXJ5dGhpbmcncyBBbHJlYWR5IERvbmUiLCIvcC9mZWFyLWxpdmVzLWluLXRoZS11bmNlcnRhaW50eSI6IkZlYXIgTGl2ZXMgaW4gdGhlIFVuY2VydGFpbnR5IiwiL3AvZmluZC10aGUtY3VyaW91cy1wZW9wbGUtYmUtdGhlLWN1cmlvdXMtcGVvcGxlIjoiRmluZCBUaGUgQ3VyaW91cyBQZW9wbGUsIEJlIHRoZSBDdXJpb3VzIFBlb3BsZSIsIi9wL2ZpbmRpbmctZ29vZC1jb250cmFjdG9ycy1pcy1icm9rZW4taGVyZS1zLXRoZS1maXgiOiJGaW5kaW5nIGdvb2QgY29udHJhY3RvcnMgaXMgYnJva2VuLiBIZXJlJ3MgdGhlIGZpeC5cbiIsIi9wL2ZpbmRpbmctd2hhdC13b3JrcyI6IkZpbmRpbmcgV2hhdCBXb3JrcyIsIi9wL2ZpdmUtaHVuZHJlZC1maWZ0eS1vbmUtZDRiOCI6IkZpdmUgSHVuZHJlZCBGaWZ0eS1PbmUiLCIvcC9nZXQtb3V0LW9mLXlvdXItZ29sZGVuLWFnZS1sZXQtcy1jcmVhdGUtbm93IjoiR2V0IE91dCBvZiBZb3VyIEdvbGRlbiBBZ2UsIExldCdzIENyZWF0ZSBOb3cuIiwiL3AvZ29pbmctZnJvbS1jaGlwcy10by1zdGVhayI6IkdvaW5nIEZyb20gQ2hpcHMgdG8gU3RlYWsiLCIvcC9ncmF0ZWZ1bCI6IkdyYXRlZnVsIiwiL3AvZ3JlYXQtbmVpZ2hib3JzIjoiR3JlYXQgTmVpZ2hib3JzIiwiL3AvZ3JvZ2d5LWlzLXRoZS1leGNlcHRpb24tbm93IjoiR3JvZ2d5IElzIHRoZSBFeGNlcHRpb24gTm93IiwiL3AvaGFwcHktYW5kLWhlYWx0aHktaXMtYS1idXNpbmVzcy1tb2RlbCI6IkhhcHB5IGFuZCBIZWFsdGh5IElzIGEgQnVzaW5lc3MgTW9kZWwiLCIvcC9oYXZlLWEtbGl0dGxlLWZhaXRoLWluLW1lIjoiSGF2ZSBhIExpdHRsZSBGYWl0aCBpbiBNZSIsIi9wL2ktZmluYWxseS1zdG9wcGVkLXNheWluZy1ub3QtbWUiOiJJIEZpbmFsbHkgU3RvcHBlZCBTYXlpbmcgTm90IE1lIiwiL3AvaS1nYXZlLWF3YXktbXktY29udHJhY3RvciI6IkkgR2F2ZSBBd2F5IE15IENvbnRyYWN0b3IiLCIvcC9pZGVhcy1kb24tdC1oYXZlLXRvLWRpZS1pbi1iYXNlbWVudHMtYW55bW9yZSI6IklkZWFzIERvbid0IEhhdmUgdG8gRGllIGluIEJhc2VtZW50cyBBbnltb3JlIiwiL3AvaWYtaXQtZG9lc24tdC1zYXkteW91LWNhbi10LXRoZW4teW91LWNhbiI6IklmIEl0IERvZXNuJ3QgU2F5IFlvdSBDYW4ndCwgVGhlbiBZb3UgQ2FuIiwiL3AvaW5jbHVkaW5nLW1vZGVyYXRpb24iOiJJbmNsdWRpbmcgTW9kZXJhdGlvbiIsIi9wL2ludmVudG9yeS1zdXJnZS1kZXJieS13ZWVrLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtMjAyNiI6IlRoZSBJbnZlbnRvcnkgU3VyZ2UgSXMgSGVyZSDigJrDhMOuIEFuZCBEZXJieSBXZWVrIEhhc24ndCBFdmVuIFN0YXJ0ZWQiLCIvcC9pdC1zLWhhcnNoIjoiSXQncyBIYXJzaC4iLCIvcC9pdC1zLW5vdC13ZWlyZC1pdC1zLWp1c3QtZGlmZmVyZW50IjoiSXQncyBOb3QgV2VpcmQsIEl0J3MgSnVzdCBEaWZmZXJlbnQiLCIvcC9qb2Utd2FrZXMtdXAtZnJhbmstZ29lcy10by1iZWQtd2hhdC1hYm91dC15b3UiOiJKb2UgV2FrZXMgVXAuIEZyYW5rIEdvZXMgdG8gQmVkLiBXaGF0IEFib3V0IFlvdT8iLCIvcC9rZWVwLXBlZGFsaW5nIjoiS2VlcCBQZWRhbGluZyIsIi9wL2tldmluLW8tbGVhcnktZGlkbi10LWtub3ciOiJLZXZpbiBPJ0xlYXJ5IERpZG4ndCBLbm93IiwiL3AvbGVhZC1vci1nZXQtbGVkIjoiTGVhZCBvciBHZXQgTGVkIiwiL3AvbGV0LXRoaXMtYmUtYS1rZXJuZWwiOiJMZXQgVGhpcyBCZSBhIEtlcm5lbCIsIi9wL2xpZmUtcmV3YXJkcy1lZmZvcnQtY3JhenktbXVsdGlwbGllcnMiOiJMaWZlIFJld2FyZHMgRWZmb3J0ICsgSXQgSGFzIENyYXp5IE11bHRpcGxpZXJzISIsIi9wL2xpZmUtdXBkYXRlIjoiTGlmZSBVcGRhdGUiLCIvcC9sb3Vpc3ZpbGxlLWRvZXNuLXQtYnJhZy1zby1pLXdpbGwiOiJMb3Vpc3ZpbGxlIERvZXNuJ3QgQnJhZy4gU28gSSBXaWxsLiIsIi9wL2xvdWlzdmlsbGUtaXMtYnVpbGRpbmctaXRzLWZ1dHVyZS1hcmUteW91LWluIjoiTG91aXN2aWxsZSBJcyBCdWlsZGluZyBJdHMgRnV0dXJlLiBcbkFyZSBZb3UgSW4/IiwiL3AvbWF5YmUtaS1tLWNyYXp5IjoiTWF5YmUgSSdtIENyYXp5IiwiL3AvbW9yZS1zdXBwbHktd2F0Y2gtY2xvc2VseSI6Ik1vcmUgU3VwcGx5LCBXYXRjaCBDbG9zZWx5IiwiL3AvbW9ybmluZy13b29kLXNlbHR6ZXItd2F0ZXItYW5kLWEtMTItYmFnLW9mLWZpYmVyIjoiTW9ybmluZyBXb29kLCBTZWx0emVyIFdhdGVyLCBhbmQgYSAkMTIgQmFnIG9mIEZpYmVyIiwiL3AvbXktZGFkLWdvdC13YXktY29vbGVyLWFmdGVyLTYwIjoiTXkgRGFkIEdvdCBXYXkgQ29vbGVyIGFmdGVyIDYwIiwiL3AvbmFzaHZpbGxlLXNldmVuLXllYXJzLWFnbyI6IldoeSBOYXNodmlsbGUgQ29zdHMgNDIlIE1vcmUgVGhhbiBMb3Vpc3ZpbGxlIiwiL3Avbm8tb25lLXMtY29taW5nIjoiTm9ib2R5J3MgQ29taW5nIFRvIFNhdmUgWW91IOKAmsOEw64gQW5kIFRoYXQncyBGcmVlaW5nIiwiL3Avbm8tcGl0Y2hlcy1qdXN0LXBpenphIjoiTm8gUGl0Y2hlcywgSnVzdCBQaXp6YSIsIi9wL25vYm9keS1wdXRzLWJhYnktaW4tYS1ib3giOiJOb2JvZHkgUHV0cyBCYWJ5IGluIGEgQm94IiwiL3Avbm9ib2R5LXRvbGQtbG91aXN2aWxsZS10by1zbG93LWRvd24iOiJOb2JvZHkgVG9sZCBMb3Vpc3ZpbGxlIHRvIFNsb3cgRG93biIsIi9wL25vYm9keS13cm90ZS1hLXN3YW4tc29uZy1mb3ItdGhlLWVsZXZhdG9yLW9wZXJhdG9yIjoiTm9ib2R5IFdyb3RlIGEgU3dhbiBTb25nIGZvciB0aGUgRWxldmF0b3IgT3BlcmF0b3IiLCIvcC9vbG1zdGVkLWRlc2lnbmVkLXlvdXItcHJvcGVydHktdmFsdWUiOiJPbG1zdGVkIFBhcmtzIEJvb3N0IExvdWlzdmlsbGUgSG9tZSBWYWx1ZXMgYnkgNS41JSIsIi9wL29uZS10by1maXZlLW9uLWZyaWRheSI6Ik9uZSB0byBGaXZlIG9uIEZyaWRheSIsIi9wL3BhcnR5LXRpbWUiOiJQYXJ0eSBUaW1lIiwiL3AvcGljay11cC1vbmUtbmV3LWJhbGwtdGhpcy13ZWVrZW5kIjoiUGljayBVcCBPbmUgTmV3IEJhbGwgVGhpcyBXZWVrZW5kIiwiL3AvcmFpbnktd2Vla2VuZC1nb29kLWJvb2stZ28tY3JlYXRlLXNvbWV0aGluZyI6IlJhaW55IFdlZWtlbmQuIEdvb2QgQm9vay4gXG5HbyBDcmVhdGUgU29tZXRoaW5nLiIsIi9wL3JlZC1jbGF5LXN0cmF5cy1haXJibmItdG8tbWFkaXNvbi1zcXVhcmUtZ2FyZGVuIjoiSSBVc2VkIHRvIEhvc3QgVGhlIFJlZCBDbGF5IFN0cmF5cyBhdCBNeSBBaXJibmIuIE5vdyBUaGV5J3JlIFBsYXlpbmcgTWFkaXNvbiBTcXVhcmUgR2FyZGVuLiIsIi9wL3JpZ2h0LWlkZWEtd3JvbmctYmFycmVsIjoiUmlnaHQgSWRlYSwgV3JvbmcgQmFycmVsIiwiL3AvcmlnaHQtdHdpY2UiOiJSaWdodCBUd2ljZTogSG93IGEgQ29yYWwgUmVlZiBCdWlsdCBMb3Vpc3ZpbGxlIiwiL3Avcm9va2llLW51bWJlcnMiOiJSb29raWUgTnVtYmVycyIsIi9wL3NlbmQtY2xhdWRlLXlvdXItY2hyb21vc29tZXMiOiJTZW5kIENsYXVkZSBZb3VyIENocm9tb3NvbWVzIiwiL3Avc2V0dGluZy11cC1mdXR1cmUtcm9iIjoiU2V0dGluZyBVcCBGdXR1cmUgUm9iIiwiL3Avc2V2ZW4tY2FyZGlnYW5zIjoiU2V2ZW4gQ2FyZGlnYW5zIiwiL3Avc2hpbmUtYS1saWdodC1vbi1pdCI6IlNoaW5lIGEgTGlnaHQgT24gSXQ6IENhc2ggRmxvdyBDcmlzaXMgSGVscCIsIi9wL3NvLWJlYXV0aWZ1bC1vci1zby13aGF0IjoiU28gQmVhdXRpZnVsIG9yIFNvIFdoYXQiLCIvcC9zb3JyeS1jcm9zbGV5IjoiU29ycnksIENyb3NsZXkiLCIvcC9zcGVjaWVzLTQwLWlzLXBsYXlpbmctaGFyZC10by1nZXQiOiJTcGVjaWVzICM0MCBJcyBQbGF5aW5nIEhhcmQgdG8gR2V0IiwiL3Avc3ByZWFkLW91dCI6IlNwcmVhZCBPdXQiLCIvcC9zdHJpcC1hd2F5LXRoZS1ub2lzZSI6IlN0cmlwIEF3YXkgVGhlIE5vaXNlIiwiL3AvdGVuLXdlZWtzLW91dCI6IlRlbiBXZWVrcyBPdXQiLCIvcC90aGUtMjEtY2l0eSI6IlRoZSAyMSUgQ2l0eSIsIi9wL3RoZS1iaXJkcy1rZWVwLWNvbWluZyI6IlRoZSBCaXJkcyBLZWVwIENvbWluZyIsIi9wL3RoZS1icmFuY2giOiJUaGUgQnJhbmNoIiwiL3AvdGhlLWNhbmFyeS1pbi10aGUtcmlja2hvdXNlIjoiVGhlIENhbmFyeSBpbiB0aGUgUmlja2hvdXNlIiwiL3AvdGhlLWZhY2UtaW4tdGhlLXNreSI6IlRoZSBGYWNlIGluIHRoZSBTa3kiLCIvcC90aGUtZnV0dXJlLWhhcy1hLXBoeXNpY2FsLWFkZHJlc3MtNzRhYiI6IlRoZSBGdXR1cmUgSGFzIGEgUGh5c2ljYWwgQWRkcmVzcyIsIi9wL3RoZS1saXR0bGUtam95cyI6IlRoZSBMaXR0bGUgSm95czogU2ltcGxlIFRoaW5ncyBUaGF0IE1hdHRlciBNb3N0IiwiL3AvdGhlLW1hbi15b3UtdXNlZC10by1iZSI6IlRoZSBNYW4gWW91IFVzZWQgdG8gQmUiLCIvcC90aGUtbWFya2V0LWV2ZXJ5b25lLXNhaWQtd2FzLWZyb3plbiI6IlRoZSBNYXJrZXQgRXZlcnlvbmUgU2FpZCBXYXMgRnJvemVuIiwiL3AvdGhlLW1hcmtldC1pcy1hcmd1aW5nLXdpdGgtaXRzZWxmIjoiVGhlIE1hcmtldCBJcyBBcmd1aW5nIFdpdGggSXRzZWxmIiwiL3AvdGhlLW1jcmliLWlzLWJhY2siOiJUaGUgTWNSaWIgSXMgQmFjayIsIi9wL3RoZS1tb3JuaW5nLWJlcmdlcm9uLXMtdG9wLTI1LXBlb3BsZS10by1rbm93LWluLXJlYWwtZXN0YXRlIjoiMjUgTG91aXN2aWxsZSBSZWFsIEVzdGF0ZSBQZW9wbGUgdG8gS25vdyIsIi9wL3RoZS1uaWwtZXJhLW9mLXJlYWwtZXN0YXRlIjoiVGhlIE5JTCBFcmEgb2YgUmVhbCBFc3RhdGUiLCIvcC90aGUtb2JzZXNzZWQtd2lsbC1pbmhlcml0LXRoZS1lYXJ0aCI6IlRoZSBPYnNlc3NlZCBXaWxsIEluaGVyaXQgdGhlIEVhcnRoIiwiL3AvdGhlLW9uZXMtdGhhdC1jb3VudCI6IkZpbmRpbmcgTW90aXZhdGVkIFNlbGxlcnMgV2l0aCBMT0lzIiwiL3AvdGhlLW9wZW4taG91c2UtbG9zdC10by10aGUtcmVkLXpvbmUiOiJUaGUgT3BlbiBIb3VzZSBMb3N0IFRvIFRoZSBSZWQgWm9uZSIsIi9wL3RoZS1wbGFjZS10aGV5LXRyaWVkLXRvLWRyb3duIjoiVGhlIFBsYWNlIFRoZXkgVHJpZWQgdG8gRHJvd24iLCIvcC90aGUtcG9zdC1jYW5jZXItc2NhcmUtb2YtMjAyNiI6IlRoZSBQb3N0IENhbmNlciBTY2FyZSBvZiAyMDI2IiwiL3AvdGhlLXBvdGhvbGUiOiJUaGUgUG90aG9sZSIsIi9wL3RoZS1wcmlkZS1vZi1sb3Vpc3ZpbGxlIjoiVGhlIFByaWRlIG9mIExvdWlzdmlsbGUiLCIvcC90aGUtcm9ib3RzLWFscmVhZHktbGl2ZS1oZXJlIjoiVGhlIFJvYm90cyBBbHJlYWR5IExpdmUgSGVyZSIsIi9wL3RoZS1zcXVlZXplLWhhcy1hbi1leHBpcmF0aW9uLWRhdGUiOiJUaGUgU3F1ZWV6ZSBIYXMgYW4gRXhwaXJhdGlvbiBEYXRlIiwiL3AvdGhlLXN0dWZmLXRoYXQtbGlnaHRzLXlvdS11cCI6IlRoZSBTdHVmZiBUaGF0IExpZ2h0cyBZb3UgVXAiLCIvcC90aGUtd2Vic2l0ZS1pbi10aGUtaG90LXR1YiI6IlRoZSBXZWJzaXRlIGluIHRoZSBIb3QgVHViIiwiL3AvdGhlLXdvbmRlci10aGF0LXMtYWxyZWFkeS10aGVyZSI6IlRoZSBXb25kZXIgVGhhdCdzIEFscmVhZHkgVGhlcmUiLCIvcC90aGV5LWtub3ctdGhleS1yZS1vbi1jYW1lcmEiOiJUaGV5IEtub3cgVGhleSdyZSBPbiBDYW1lcmEiLCIvcC90aW1lLXRvLWV2b2x2ZSI6IlRpbWUgVG8gRXZvbHZlIiwiL3AvdG91Y2gtaXQtdHdpY2UiOiJUb3VjaCBJdCBUd2ljZSIsIi9wL3RydXRoLWFuZC1saWVzIjoiVHJ1dGggYW5kIExpZXMiLCIvcC93YWxrLWluLXdpdGgtc29sdXRpb25zIjoiV2FsayBJbiBXaXRoIFNvbHV0aW9ucyIsIi9wL3dlLWdldC1uby1zZWNvbmQtY2hhbmNlLWluLXRoaXMtbGlmZSI6IldlIEdldCBObyBTZWNvbmQgQ2hhbmNlIGluIFRoaXMgTGlmZSIsIi9wL3doYXRldmVyLWhhcHBlbmVkLXRvLWFtZWxpYS1lYXJoYXJ0IjoiV2hhdGV2ZXIgSGFwcGVuZWQgdG8gQmlnZ2VyUG9ja2V0cycgQnJhbmRvbiBUdXJuZXI/IiwiL3Avd2hlbi1zLXRoZS1sYXN0LXRpbWUteW91LWNyZWF0ZWQtc29tZXRoaW5nIjoiV2hlbidzIHRoZSBMYXN0IFRpbWUgWW91IENyZWF0ZWQgU29tZXRoaW5nPyIsIi9wL3doZW4tdGhlLWxldmVlLWJyZWFrcyI6IldoZW4gVGhlIExldmVlIEJyZWFrcyIsIi9wL3lvdS1sb29rLWxpa2UteW91LW5lZWQtYS1odWciOiJZb3UgTG9vayBMaWtlIFlvdSBOZWVkIGEgSHVnIiwiL3AveW91LXJlLWFscmVhZHktYWhlYWQtb2YtOTctOC1vZi1wZW9wbGUiOiJZb3UncmUgQWxyZWFkeSBBaGVhZCBvZiA5Ny44JSBvZiBQZW9wbGUiLCIvcC95b3VyLWJvZHktaXMtYS10ZW1wbGUiOiJZb3VyIEJvZHkgSXMgYSBUZW1wbGUiLCIvcC95b3VyLW1vcm5pbmctc3RhcnRzLXRoZS1uaWdodC1iZWZvcmUiOiJZb3VyIE1vcm5pbmcgU3RhcnRzIHRoZSBOaWdodCBCZWZvcmUifX0sIEJBU0U9Imh0dHBzOi8vd3d3LnRoZW1vcm5pbmdiZXJnZXJvbi5jb20iLCBRPSI/dXRtX3NvdXJjZT10aGV3aW5uZXJyZWFsdHkmdXRtX21lZGl1bT1jcm9zc2xpbmsiOwogIGlmKCEvKF58XC4pdGhld2lubmVycmVhbHR5XC5jb20kLy50ZXN0KGxvY2F0aW9uLmhvc3RuYW1lKSkgcmV0dXJuOwogIHZhciBwYXRoPWxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1wvJC8sJycpfHwnLyc7IHZhciBlPUQucFtwYXRoXTsgaWYoIWUpIHJldHVybjsKICBmdW5jdGlvbiBsaSh1KXtyZXR1cm4gJzxsaSBzdHlsZT0ibWFyZ2luOjZweCAwIj48YSBocmVmPSInK0JBU0UrdStRKyciIHN0eWxlPSJjb2xvcjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUiPicrU3RyaW5nKEQudFt1XSkucmVwbGFjZSgvPC9nLCcmbHQ7JykrJzwvYT48L2xpPid9CiAgdmFyIGh0bWw9JzxkaXYgZGF0YS1tYi1jcm9zc2xpbmtzIHN0eWxlPSJtYXgtd2lkdGg6NzYwcHg7bWFyZ2luOjQwcHggYXV0bztwYWRkaW5nOjI0cHggMjhweDtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMTI4LDEyOCwxMjgsLjM1KTtib3JkZXItcmFkaXVzOjEwcHg7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MS41Ij4nKwogICAgJzxkaXYgc3R5bGU9ImZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MThweDttYXJnaW4tYm90dG9tOjZweCI+RnJvbSBUaGUgTW9ybmluZyBCZXJnZXJvbjwvZGl2PicrCiAgICAnPGRpdiBzdHlsZT0ib3BhY2l0eTouODttYXJnaW4tYm90dG9tOjEwcHgiPlJvYiBCZXJnZXJvblwncyBkYWlseSBMb3Vpc3ZpbGxlIHJlYWwgZXN0YXRlIG5ld3NsZXR0ZXIuIDxhIGhyZWY9IicrQkFTRSsnL3N1YnNjcmliZScrUSsnIiBzdHlsZT0iY29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIj5TdWJzY3JpYmUgZnJlZTwvYT4uPC9kaXY+JysKICAgIChlLnIubGVuZ3RoPyc8ZGl2IHN0eWxlPSJmb250LXdlaWdodDo2MDA7bWFyZ2luLXRvcDo4cHgiPlJlbGF0ZWQgcmVhZGluZzwvZGl2Pjx1bCBzdHlsZT0ibWFyZ2luOjRweCAwIDEwcHggMThweDtwYWRkaW5nOjAiPicrZS5yLm1hcChsaSkuam9pbignJykrJzwvdWw+JzonJykrCiAgICAnPGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6NjAwO21hcmdpbi10b3A6OHB4Ij5Nb3JlIGZyb20gdGhlIG5ld3NsZXR0ZXI8L2Rpdj48dWwgc3R5bGU9Im1hcmdpbjo0cHggMCAwIDE4cHg7cGFkZGluZzowIj4nK2UubS5tYXAobGkpLmpvaW4oJycpKyc8L3VsPjwvZGl2Pic7CiAgZnVuY3Rpb24gcGxhY2UoKXsKICAgIGlmKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLW1iLWNyb3NzbGlua3NdJykpIHJldHVybjsKICAgIHZhciBmb290ZXI9KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zYi1mb290ZXInKXx8W10uZmlsdGVyLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZm9vdGVyJyksZnVuY3Rpb24oZil7cmV0dXJuICFmLmNsb3Nlc3QoJ2Jsb2NrcXVvdGUnKX0pWzBdKTsKICAgIHZhciBib3g9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2VjdGlvbicpOyBib3guY2xhc3NOYW1lPSdzYi1zZWN0aW9uIHNiLXNlY3Rpb24tb3B0LWRhcmsnOyBib3guaW5uZXJIVE1MPWh0bWw7CiAgICBpZihmb290ZXImJmZvb3Rlci5wYXJlbnROb2RlKSBmb290ZXIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYm94LGZvb3Rlcik7IGVsc2UgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChib3gpOwogIH0KICBpZihkb2N1bWVudC5yZWFkeVN0YXRlPT09J2xvYWRpbmcnKSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJyxwbGFjZSk7IGVsc2UgcGxhY2UoKTsKfSkoKTsKPC9zY3JpcHQ+|END

WRA|i286549|2|PHNjcmlwdD4KKGZ1bmN0aW9uICgpIHsKICB2YXIgU0xVR1MgPSBbCiAgICAiL2NyZXNjZW50LWhpbGwtb3JpZ2luYWwtaGlnaGxhbmRzLWt5LXJlYWwtZXN0YXRlLWd1aWRlIiwKICAgICIvdGhlLXdpbm5lci1yZWFsdHktaW52ZXN0b3ItY29ycmlkb3Itc291dGgtd2VzdC1sb3Vpc3ZpbGxlIgogIF07CiAgdmFyIHAgPSBsb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cLyskLywgIiIpOwogIGlmIChTTFVHUy5pbmRleE9mKHApID09PSAtMSkgcmV0dXJuOwoKICBmdW5jdGlvbiBidWlsZCgpIHsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG1iLWJhbmQiKSkgcmV0dXJuOwogICAgdmFyIGYgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuc2ItZm9vdGVyIik7CiAgICBpZiAoIWYpIHJldHVybjsKICAgIHZhciBhbmNob3IgPSBmLmNsb3Nlc3QoInNlY3Rpb24iKSB8fCBmOwogICAgdmFyIGJhbmQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgIGJhbmQuaWQgPSAidG1iLWJhbmQiOwogICAgYmFuZC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgImJhY2tncm91bmQ6IzVjNmI1ODtwYWRkaW5nOjY0cHggMjRweDtmb250LWZhbWlseTpcJ1JvYm90byBTZXJpZlwnLEdlb3JnaWEsc2VyaWY7d2lkdGg6MTAwdnc7bWFyZ2luLWxlZnQ6Y2FsYyg1MCUgLSA1MHZ3KTttYXJnaW4tcmlnaHQ6Y2FsYyg1MCUgLSA1MHZ3KTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Iik7CiAgICBiYW5kLmlubmVySFRNTCA9CiAgICAgICc8ZGl2IHN0eWxlPSJtYXgtd2lkdGg6MTAwMHB4O21hcmdpbjowIGF1dG87dGV4dC1hbGlnbjpsZWZ0OyI+JyArCiAgICAgICAgJzxoMiBzdHlsZT0iY29sb3I6I2ZmZjtmb250LXNpemU6MzRweDtsaW5lLWhlaWdodDoxLjE1O2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW46MCAwIDE2cHggMDsiPjcwLDAwMCsgcGVvcGxlIGluIExvdWlzdmlsbGUgcmVhZCB1cyBiZWZvcmUgdGhleSByZWFkIHRoZSBuZXdzLjwvaDI+JyArCiAgICAgICAgJzxwIHN0eWxlPSJjb2xvcjojZmZmO2ZvbnQtc2l6ZToxN3B4O2xpbmUtaGVpZ2h0OjEuNTttYXJnaW46MCAwIDI4cHggMDttYXgtd2lkdGg6NjBjaDsiPkRhaWx5LiBGcmVlLiBMb2NhbC4gVGhlIG1hcmtldCwgdGhlIGRlYWxzLCBhbmQgd2hhdFx1MjAxOXMgYWN0dWFsbHkgaGFwcGVuaW5nIGluIHRoaXMgY2l0eSBcdTIwMTQgZnJvbSB0aGUgYnJva2VyYWdlIHRoYXRcdTIwMTlzIGluIGl0IGV2ZXJ5IGRheS48L3A+JyArCiAgICAgICAgJzxhIGhyZWY9Imh0dHBzOi8vd3d3LnRoZW1vcm5pbmdiZXJnZXJvbi5jb20vc3Vic2NyaWJlIiBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZDojRkY2RTRFO2NvbG9yOiNmZmY7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0OjEuMjtwYWRkaW5nOjE2cHggMjRweDt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXItcmFkaXVzOjA7Ij5SZWFkIGl0IHRvbW9ycm93IG1vcm5pbmc8L2E+JyArCiAgICAgICAgJzxwIHN0eWxlPSJjb2xvcjojZmZmO29wYWNpdHk6Ljg7Zm9udC1zaXplOjEzcHg7bWFyZ2luOjE0cHggMCAwIDA7Ij5PbmUgZW1haWwgYSBkYXkuIFVuc3Vic2NyaWJlIHdoZW5ldmVyLjwvcD4nICsKICAgICAgJzwvZGl2Pic7CiAgICBhbmNob3IucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYmFuZCwgYW5jaG9yKTsKICB9CgogIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAibG9hZGluZyIpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBidWlsZCk7CiAgfSBlbHNlIHsKICAgIGJ1aWxkKCk7CiAgfQp9KSgpOwo8L3NjcmlwdD4KPHNjcmlwdD4KKGZ1bmN0aW9uICgpIHsKICAvLyBOZWlnaGJvcmhvb2QgJiB0b3BpYyBndWlkZXM6ICJTZWFyY2ggaG9tZXMgaGVyZSIgYm94IGxpbmtlZCB0byB0aGUgbWF0Y2hpbmcgSURYIHNlYXJjaCBwYWdlLgogIHZhciBJRFggPSAiaHR0cHM6Ly9zZWFyY2gudGhld2lubmVycmVhbHR5LmNvbSI7CiAgZnVuY3Rpb24gU0wocykgeyByZXR1cm4gSURYICsgIi9pLyIgKyBzOyB9CiAgZnVuY3Rpb24gWih6cykgeyByZXR1cm4gSURYICsgIi9pZHgvcmVzdWx0cy9saXN0aW5ncz9wdD0xJmNjej16aXBjb2RlJiIgKyB6cy5tYXAoZnVuY3Rpb24gKHopIHsgcmV0dXJuICJ6aXBjb2RlJTVCJTVEPSIgKyB6OyB9KS5qb2luKCImIikgKyAiJnNydD1uZXdlc3QiOyB9CiAgZnVuY3Rpb24gQyhjcykgeyByZXR1cm4gSURYICsgIi9pZHgvcmVzdWx0cy9saXN0aW5ncz9wdD0xJmNjej1jb3VudHkmIiArIGNzLm1hcChmdW5jdGlvbiAoYykgeyByZXR1cm4gImNvdW50eSU1QiU1RD0iICsgYzsgfSkuam9pbigiJiIpICsgIiZzcnQ9bmV3ZXN0IjsgfQogIHZhciBNID0gewogICAgImdlcm1hbnRvd24tc2Nobml0emVsYnVyZy1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjogWyJHZXJtYW50b3duICYgU2Nobml0emVsYnVyZyIsIFNMKCJnZXJtYW50b3duLXNjaG5pdHplbGJ1cmctaG9tZXMtZm9yLXNhbGUiKV0sCiAgICAiaGlnaGxhbmRzLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiOiBbInRoZSBIaWdobGFuZHMiLCBTTCgiaGlnaGxhbmRzLWxvdWlzdmlsbGUtaG9tZXMtZm9yLXNhbGUiKV0sCiAgICAiZmFpcmRhbGUta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOiBbIkZhaXJkYWxlICg0MDExOCkiLCBaKFsiNDAxMTgiXSldLAogICAgImxha2UtZm9yZXN0LWxvdWlzdmlsbGUta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOiBbIkxha2UgRm9yZXN0ICYgNDAyNDUiLCBaKFsiNDAyNDUiXSldLAogICAgImNsYXJrc3ZpbGxlLWluLXJlYWwtZXN0YXRlLWd1aWRlIjogWyJDbGFya3N2aWxsZSAmIENsYXJrIENvdW50eSwgSU4iLCBDKFsiMTk3MSJdKV0sCiAgICAiY2FsaWZvcm5pYS1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjogWyJDYWxpZm9ybmlhICYgNDAyMTAiLCBaKFsiNDAyMTAiXSldLAogICAgIm5vcndvb2Qtbm9ydGhmaWVsZC1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6IFsiTm9yd29vZCwgTm9ydGhmaWVsZCAmIEx5bmRvbiIsIFNMKCJseW5kb24taG9tZXMtZm9yLXNhbGUiKV0sCiAgICAibm9ydG9uLWNvbW1vbnMtcmVhbC1lc3RhdGUtZ3VpZGUiOiBbIk5vcnRvbiBDb21tb25zICYgUHJvc3BlY3QiLCBTTCgicHJvc3BlY3Qtbm9ydG9uLWNvbW1vbnMtaG9tZXMtZm9yLXNhbGUiKV0sCiAgICAibW9ja2luZ2JpcmQtdmFsbGV5LWt5LXJlYWwtZXN0YXRlLWd1aWRlIjogWyJNb2NraW5nYmlyZCBWYWxsZXkgJiBTdC4gTWF0dGhld3MiLCBTTCgic3QtbWF0dGhld3MtaG9tZXMtZm9yLXNhbGUiKV0sCiAgICAicGV3ZWUtdmFsbGV5LWt5LXJlYWwtZXN0YXRlLWd1aWRlIjogWyJQZXdlZSBWYWxsZXkiLCBaKFsiNDAwNTYiXSldLAogICAgInZhbGxleS1zdGF0aW9uLWxvdWlzdmlsbGUtbmVpZ2hib3Job29kLWd1aWRlIjogWyJWYWxsZXkgU3RhdGlvbiIsIFNMKCJ2YWxsZXktc3RhdGlvbi1ob21lcy1mb3Itc2FsZSIpXSwKICAgICJtaWRkbGV0b3duLWt5LXJlYWwtZXN0YXRlLWd1aWRlIjogWyJNaWRkbGV0b3duIiwgU0woImRvdWdsYXNzLWhpbGxzLW1pZGRsZXRvd24tNDAyNDMtaG9tZXMtZm9yLXNhbGUiKV0sCiAgICAiYmVsa25hcC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjogWyJCZWxrbmFwICYgdGhlIEhpZ2hsYW5kcyIsIFNMKCJoaWdobGFuZHMtbG91aXN2aWxsZS1ob21lcy1mb3Itc2FsZSIpXSwKICAgICJidWxsaXR0LXNwZW5jZXItY291bnR5LWxhbmQtYWNyZWFnZS1ndWlkZSI6IFsibGFuZCAmIGxvdHMiLCBTTCgibGFuZC1sb3RzLWZvci1zYWxlLWxvdWlzdmlsbGUtYXJlYSIpXSwKICAgICJseW5kb24tZ3JheW1vb3ItZGV2b25kYWxlLWt5LXJlYWwtZXN0YXRlLWd1aWRlIjogWyJMeW5kb24sIEdyYXltb29yLURldm9uZGFsZSIsIFNMKCJseW5kb24taG9tZXMtZm9yLXNhbGUiKV0sCiAgICAicG9wbGFyLWxldmVsLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiOiBbIlBvcGxhciBMZXZlbCAmIDQwMjEzIiwgWihbIjQwMjEzIl0pXSwKICAgICJiZXN0LW5laWdoYm9yaG9vZHMtbWlkdGVybS1yZW50YWwtbG91aXN2aWxsZSI6IFsiaW52ZXN0b3ItZnJpZW5kbHkgaG9tZXMiLCBTTCgibG91aXN2aWxsZS1pbnZlc3Rvci1zcGVjaWFsLWZpeGVyLXVwcGVyLWhvbWVzIildLAogICAgImZpc2hlcnZpbGxlLWt5LXJlYWwtZXN0YXRlLWd1aWRlIjogWyJGaXNoZXJ2aWxsZSAoNDAwMjMpIiwgWihbIjQwMDIzIl0pXSwKICAgICJoaWtlcy1wb2ludC1sb3Vpc3ZpbGxlLW5laWdoYm9yaG9vZC1ndWlkZSI6IFsiSGlrZXMgUG9pbnQiLCBTTCgiaGlrZXMtcG9pbnQtaG9tZXMtZm9yLXNhbGUiKV0sCiAgICAibm9ydGgtb2xkaGFtLXZzLXNvdXRoLW9sZGhhbS1jb3VudHktZ3VpZGUiOiBbIk9sZGhhbSBDb3VudHkiLCBTTCgib2xkaGFtLWNvdW50eS1reS1ob21lcy1mb3Itc2FsZSIpXSwKICAgICJidWxsaXR0LWNvdW50eS1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6IFsiQnVsbGl0dCBDb3VudHkiLCBTTCgiYnVsbGl0dC1jb3VudHkta3ktaG9tZXMtZm9yLXNhbGUiKV0sCiAgICAibnVsdS1idXRjaGVydG93bi1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjogWyJOdUx1LCBCdXRjaGVydG93biAmIERvd250b3duIiwgU0woImRvd250b3duLWxvdWlzdmlsbGUtbnVsdS1ob21lcy1mb3Itc2FsZSIpXSwKICAgICJzZWxsZXJzYnVyZy1pbmRpYW5hLXJlYWwtZXN0YXRlLWd1aWRlIjogWyJTZWxsZXJzYnVyZyAmIENsYXJrIENvdW50eSwgSU4iLCBDKFsiMTk3MSJdKV0sCiAgICAiaXJvcXVvaXMtc291dGgtZW5kLWxvdWlzdmlsbGUtbmVpZ2hib3Job29kLWd1aWRlIjogWyJJcm9xdW9pcyAmIHRoZSBTb3V0aCBFbmQiLCBaKFsiNDAyMTQiXSldLAogICAgIjE5LXRoaW5ncy10by1rbm93LWJlZm9yZS1tb3ZpbmctdG8tbG91aXN2aWxsZSI6IFsiTG91aXN2aWxsZSIsIElEWCArICIvaWR4L3Jlc3VsdHMvbGlzdGluZ3M/cHQ9MSZjY3o9Y291bnR5JmNvdW50eSU1QiU1RD05OTgmc3J0PW5ld2VzdCJdLAogICAgImZlcm4tY3JlZWsta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOiBbIkZlcm4gQ3JlZWsiLCBTTCgiZmVybi1jcmVlay1ob21lcy1mb3Itc2FsZSIpXSwKICAgICJydXNzZWxsLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiOiBbIlJ1c3NlbGwgJiBXZXN0IExvdWlzdmlsbGUiLCBaKFsiNDAyMTEiLCAiNDAyMDMiXSldLAogICAgImFuY2hvcmFnZS1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6IFsiQW5jaG9yYWdlICYgNDAyMjMiLCBTTCgiYW5jaG9yYWdlLW1pZGRsZXRvd24tNDAyMjMtaG9tZXMtZm9yLXNhbGUiKV0sCiAgICAiZG93bnRvd24tbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6IFsiRG93bnRvd24gTG91aXN2aWxsZSIsIFNMKCJkb3dudG93bi1sb3Vpc3ZpbGxlLW51bHUtaG9tZXMtZm9yLXNhbGUiKV0sCiAgICAiZG91Z2xhc3MtbG9vcC1ib25ueWNhc3RsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6IFsiRG91Z2xhc3MgTG9vcCwgQm9ubnljYXN0bGUgJiB0aGUgSGlnaGxhbmRzIiwgU0woImhpZ2hsYW5kcy1sb3Vpc3ZpbGxlLWhvbWVzLWZvci1zYWxlIildLAogICAgIm1vdmluZy10by1zb3V0aGVybi1pbmRpYW5hIjogWyJTb3V0aGVybiBJbmRpYW5hIiwgQyhbIjE5NzEiLCAiMzA1MiJdKV0sCiAgICAiMTktdGhpbmdzLXRvLWtub3ctYmVmb3JlLW1vdmluZy10by1zb3V0aGVybi1pbmRpYW5hIjogWyJTb3V0aGVybiBJbmRpYW5hIiwgQyhbIjE5NzEiLCAiMzA1MiJdKV0sCiAgICAiY3Jlc2NlbnQtaGlsbC1vcmlnaW5hbC1oaWdobGFuZHMta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOiBbIkNyZXNjZW50IEhpbGwgJiBDbGlmdG9uIiwgU0woImNyZXNjZW50LWhpbGwtY2xpZnRvbi1ob21lcy1mb3Itc2FsZSIpXSwKICAgICJjbGlmdG9uLWNsaWZ0b24taGVpZ2h0cy1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjogWyJDbGlmdG9uICYgQ3Jlc2NlbnQgSGlsbCIsIFNMKCJjcmVzY2VudC1oaWxsLWNsaWZ0b24taG9tZXMtZm9yLXNhbGUiKV0sCiAgICAid2luZHktaGlsbHMtc2VuZWNhLWdhcmRlbnMta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOiBbIldpbmR5IEhpbGxzICYgU3QuIE1hdHRoZXdzIiwgU0woInN0LW1hdHRoZXdzLWhvbWVzLWZvci1zYWxlIildLAogICAgInBoeXNpY2lhbi1yZWxvY2F0aW9uLWxvdWlzdmlsbGUtYWNyZWFnZS1ndWlkZSI6IFsiaG9tZXMgb24gYWNyZWFnZSIsIFNMKCJob21lcy1vbi1hY3JlYWdlLXNoZWxieS1vbGRoYW0tY291bnR5IildLAogICAgImdyb3VwLWhvbWVzLXJlY292ZXJ5LXJlc2lkZW5jZXMtbG91aXN2aWxsZS1ndWlkZSI6IFsiaW52ZXN0b3ItZnJpZW5kbHkgaG9tZXMiLCBTTCgibG91aXN2aWxsZS1pbnZlc3Rvci1zcGVjaWFsLWZpeGVyLXVwcGVyLWhvbWVzIildLAogICAgImluZGlhbi1oaWxscy1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6IFsiSW5kaWFuIEhpbGxzICYgU3QuIE1hdHRoZXdzIiwgU0woInN0LW1hdHRoZXdzLWhvbWVzLWZvci1zYWxlIildLAogICAgIm9rb2xvbmEtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6IFsiT2tvbG9uYSIsIFNMKCJva29sb25hLWhvbWVzLWZvci1zYWxlIildLAogICAgImJlZWNobW9udC1zb3V0aC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjogWyJCZWVjaG1vbnQgJiBTb3V0aCBMb3Vpc3ZpbGxlIiwgWihbIjQwMjE0Il0pXSwKICAgICJlbGl6YWJldGh0b3duLWt5LXJlYWwtZXN0YXRlLWd1aWRlIjogWyJFbGl6YWJldGh0b3duICYgdGhlIEZvcnQgS25veCBhcmVhIiwgU0woImhvbWVzLWZvci1zYWxlLW5lYXItZm9ydC1rbm94IildLAogICAgImJ1eWluZy1mYXJtbGFuZC1pbi1rZW50dWNreS1ndWlkZSI6IFsiZmFybXMgJiBmYXJtbGFuZCIsIFNMKCJmYXJtcy1mb3Itc2FsZS1rZW50dWNreS1sb3Vpc3ZpbGxlLWFyZWEiKV0sCiAgICAiZmF5ZXR0ZS1jb3VudHkta3ktaG9yc2UtZmFybS1yZWFsLWVzdGF0ZS1ndWlkZSI6IFsiZmFybXMgJiBob3JzZSBwcm9wZXJ0eSIsIFNMKCJmYXJtcy1mb3Itc2FsZS1rZW50dWNreS1sb3Vpc3ZpbGxlLWFyZWEiKV0sCiAgICAia2VudHVja3ktYWdyaWN1bHR1cmFsLWV4ZW1wdGlvbi1wcm9wZXJ0eS10YXgtZ3VpZGUiOiBbImZhcm1zICYgYWNyZWFnZSIsIFNMKCJmYXJtcy1mb3Itc2FsZS1rZW50dWNreS1sb3Vpc3ZpbGxlLWFyZWEiKV0sCiAgICAiamVmZmVyc29udG93bi1sb3Vpc3ZpbGxlLW5laWdoYm9yaG9vZC1ndWlkZSI6IFsiSmVmZmVyc29udG93biIsIFNMKCJqZWZmZXJzb250b3duLWhvbWVzLWZvci1zYWxlIildLAogICAgIm5ld2J1cmctYnVlY2hlbC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjogWyJOZXdidXJnICYgQnVlY2hlbCIsIFooWyI0MDIxOCJdKV0sCiAgICAiY2hlcm9rZWUtdHJpYW5nbGUtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6IFsiQ2hlcm9rZWUgVHJpYW5nbGUgJiB0aGUgSGlnaGxhbmRzIiwgU0woImhpZ2hsYW5kcy1sb3Vpc3ZpbGxlLWhvbWVzLWZvci1zYWxlIildLAogICAgIm9sZC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjogWyJPbGQgTG91aXN2aWxsZSIsIFNMKCJvbGQtbG91aXN2aWxsZS1ob21lcy1mb3Itc2FsZSIpXSwKICAgICJzcHJpbmdodXJzdC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjogWyJTcHJpbmdodXJzdCIsIFNMKCJzcHJpbmdodXJzdC1ob21lcy1mb3Itc2FsZSIpXSwKICAgICJzaGVsYnktY291bnR5LWt5LXJlYWwtZXN0YXRlLWd1aWRlIjogWyJTaGVsYnkgQ291bnR5IiwgU0woInNoZWxieS1jb3VudHkta3ktaG9tZXMtZm9yLXNhbGUiKV0sCiAgICAic21va2V0b3duLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiOiBbIlNtb2tldG93biAmIE9sZCBMb3Vpc3ZpbGxlIiwgU0woIm9sZC1sb3Vpc3ZpbGxlLWhvbWVzLWZvci1zYWxlIildLAogICAgImh1cnN0Ym91cm5lLWt5LXJlYWwtZXN0YXRlLWd1aWRlIjogWyJIdXJzdGJvdXJuZSAmIEx5bmRvbiIsIFNMKCJseW5kb24taG9tZXMtZm9yLXNhbGUiKV0sCiAgICAic3QtbWF0dGhld3MtbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtZ3VpZGUiOiBbIlN0LiBNYXR0aGV3cyIsIFNMKCJzdC1tYXR0aGV3cy1ob21lcy1mb3Itc2FsZSIpXSwKICAgICJwcm9zcGVjdC1reS1uZWlnaGJvcmhvb2QtZ3VpZGUiOiBbIlByb3NwZWN0IiwgU0woInByb3NwZWN0LW5vcnRvbi1jb21tb25zLWhvbWVzLWZvci1zYWxlIildLAogICAgImxvdWlzdmlsbGUtc2hvcnQtdGVybS1yZW50YWwtZ3VpZGUiOiBbImludmVzdG9yLWZyaWVuZGx5IGhvbWVzIiwgU0woImxvdWlzdmlsbGUtaW52ZXN0b3Itc3BlY2lhbC1maXhlci11cHBlci1ob21lcyIpXSwKICAgICJkb3VnbGFzcy1oaWxscy1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6IFsiRG91Z2xhc3MgSGlsbHMiLCBTTCgiZG91Z2xhc3MtaGlsbHMtbWlkZGxldG93bi00MDI0My1ob21lcy1mb3Itc2FsZSIpXSwKICAgICJzaGl2ZWx5LXBsZWFzdXJlLXJpZGdlLXBhcmstcmVhbC1lc3RhdGUtZ3VpZGUiOiBbIlNoaXZlbHkgJiBQbGVhc3VyZSBSaWRnZSBQYXJrIiwgWihbIjQwMjE2IiwgIjQwMjU4Il0pXSwKICAgICJvbGRoYW0tY291bnR5LWt5LXJlYWwtZXN0YXRlLWd1aWRlIjogWyJPbGRoYW0gQ291bnR5IiwgU0woIm9sZGhhbS1jb3VudHkta3ktaG9tZXMtZm9yLXNhbGUiKV0sCiAgICAibWlkdGVybS1yZW50YWxzLWxvdWlzdmlsbGUtZ3VpZGUiOiBbImludmVzdG9yLWZyaWVuZGx5IGhvbWVzIiwgU0woImxvdWlzdmlsbGUtaW52ZXN0b3Itc3BlY2lhbC1maXhlci11cHBlci1ob21lcyIpXSwKICAgICJjYW1wLXRheWxvci1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjogWyJDYW1wIFRheWxvciAmIEdlcm1hbnRvd24iLCBTTCgiZ2VybWFudG93bi1zY2huaXR6ZWxidXJnLWhvbWVzLWZvci1zYWxlIildLAogICAgIm5ldy1hbGJhbnktamVmZmVyc29udmlsbGUtaW5kaWFuYS1yZWFsLWVzdGF0ZS1ndWlkZSI6IFsiTmV3IEFsYmFueSAmIEplZmZlcnNvbnZpbGxlIiwgQyhbIjE5NzEiLCAiMzA1MiJdKV0sCiAgICAic2hlbGJ5LXBhcmstbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6IFsiU2hlbGJ5IFBhcmsgJiBHZXJtYW50b3duIiwgU0woImdlcm1hbnRvd24tc2Nobml0emVsYnVyZy1ob21lcy1mb3Itc2FsZSIpXSwKICAgICJjb252ZXJ0LXJlbnRhbC10by1taWR0ZXJtLXJlbnRhbC1sb3Vpc3ZpbGxlLWludmVzdG9yLWd1aWRlIjogWyJkdXBsZXhlcyAmIG11bHRpZmFtaWx5IiwgU0woImxvdWlzdmlsbGUtZHVwbGV4LW11bHRpZmFtaWx5LWZvci1zYWxlIildLAogICAgImxvdWlzdmlsbGUtbmVpZ2hib3Job29kcy13aGVyZS1ob21lcy1hcmUtc2VsbGluZyI6IFsibmV3IGxpc3RpbmdzIHRoaXMgd2VlayIsIFNMKCJsb3Vpc3ZpbGxlLW5ldy1saXN0aW5ncy10aGlzLXdlZWsiKV0sCiAgICAiZG93bnNpemluZy1sb3Vpc3ZpbGxlLWd1aWRlIjogWyJzaW5nbGUtbGV2ZWwgaG9tZXMiLCBTTCgibG91aXN2aWxsZS1zaW5nbGUtbGV2ZWwtaG9tZXMiKV0sCiAgICAibG91aXN2aWxsZS1uZWlnaGJvcmhvb2RzIjogWyJMb3Vpc3ZpbGxlIiwgSURYICsgIi9pZHgvcmVzdWx0cy9saXN0aW5ncz9wdD0xJmNjej1jb3VudHkmY291bnR5JTVCJTVEPTk5OCZzcnQ9bmV3ZXN0Il0KICB9OwogIHZhciBzbHVnID0gbG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvXlwvK3xcLyskL2csICIiKTsKICB2YXIgaGl0ID0gTVtzbHVnXTsKICBpZiAoIWhpdCkgcmV0dXJuOwogIHZhciBGID0gImZvbnQtZmFtaWx5OidSb2JvdG8gU2VyaWYnLEdlb3JnaWEsc2VyaWY7IjsKICBmdW5jdGlvbiBib3goaWQsIGJpZykgewogICAgdmFyIGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgIGQuaWQgPSBpZDsKICAgIGQuc2V0QXR0cmlidXRlKCJzdHlsZSIsICJiYWNrZ3JvdW5kOiMxMTE7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6IiArIChiaWcgPyAiMjZweCAyNHB4IiA6ICIyMHB4IDIycHgiKSArICI7bWFyZ2luOjI4cHggMDtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxNnB4OyIgKyBGKTsKICAgIGQuaW5uZXJIVE1MID0gJzxkaXYgc3R5bGU9ImZsZXg6MSAxIDMyMHB4OyI+JwogICAgICArICc8ZGl2IHN0eWxlPSJjb2xvcjojZmY2ZTRlO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMDhlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bWFyZ2luOjAgMCA2cHggMDsnICsgRiArICciPkxpdmUgTUxTIGxpc3RpbmdzPC9kaXY+JwogICAgICArICc8ZGl2IHN0eWxlPSJjb2xvcjojZmZmO2ZvbnQtc2l6ZTonICsgKGJpZyA/ICIyNHB4IiA6ICIyMHB4IikgKyAnO2xpbmUtaGVpZ2h0OjEuMztmb250LXdlaWdodDo3MDA7bWFyZ2luOjAgMCA2cHggMDsnICsgRiArICciPlNlYXJjaCBob21lcyBmb3Igc2FsZSBpbiAnICsgaGl0WzBdICsgIjwvZGl2PiIKICAgICAgKyAnPGRpdiBzdHlsZT0iY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNzUpO2ZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0OjEuNTsnICsgRiArICciPlBob3RvcywgcHJpY2VzIGFuZCBuZXcgbGlzdGluZ3MgdXBkYXRlZCBhbGwgZGF5LiBTYXZlIHRoZSBzZWFyY2ggdG8gZ2V0IG5ldyBtYXRjaGVzIGJ5IGVtYWlsLCBmcmVlLjwvZGl2PicKICAgICAgKyAiPC9kaXY+IgogICAgICArICc8YSBocmVmPSInICsgaGl0WzFdICsgJyIgc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO2JhY2tncm91bmQ6I2ZmNmU0ZTtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxN3B4O2ZvbnQtd2VpZ2h0OjcwMDt0ZXh0LWRlY29yYXRpb246bm9uZTtwYWRkaW5nOjE0cHggMjRweDtib3JkZXItcmFkaXVzOjZweDt3aGl0ZS1zcGFjZTpub3dyYXA7JyArIEYgKyAnIj5TZWFyY2ggaG9tZXMgaGVyZSAmcmFycjs8L2E+JzsKICAgIHJldHVybiBkOwogIH0KICB2YXIgdHJpZXMgPSAwOwogIGZ1bmN0aW9uIHBsYWNlKCkgewogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3ci1ndWlkZS1zZWFyY2gtdG9wIikpIHJldHVybjsKICAgIHZhciBib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnNiLWl0ZW0tdmlld19fYm9keSIpOwogICAgaWYgKCFib2R5KSB7IGlmICh0cmllcysrIDwgNDApIHNldFRpbWVvdXQocGxhY2UsIDI1MCk7IHJldHVybjsgfQogICAgdmFyIGZpcnN0SDIgPSBib2R5LnF1ZXJ5U2VsZWN0b3IoImgyIik7CiAgICB2YXIgdG9wID0gYm94KCJ3ci1ndWlkZS1zZWFyY2gtdG9wIiwgdHJ1ZSk7CiAgICBpZiAoZmlyc3RIMikgZmlyc3RIMi5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0b3AsIGZpcnN0SDIpOyBlbHNlIGJvZHkuaW5zZXJ0QmVmb3JlKHRvcCwgYm9keS5maXJzdENoaWxkKTsKICAgIGJvZHkuYXBwZW5kQ2hpbGQoYm94KCJ3ci1ndWlkZS1zZWFyY2gtYm90dG9tIiwgZmFsc2UpKTsKICB9CiAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICJsb2FkaW5nIikgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHBsYWNlKTsgZWxzZSBwbGFjZSgpOwp9KSgpOwo8L3NjcmlwdD4KPHNjcmlwdD4KLyogd3ItbWItcmVsb2NhdGU6IGtlZXAgdGhlIE1vcm5pbmcgQmVyZ2Vyb24gYm94IG91dCBvZiB0ZXN0aW1vbmlhbCBjYXJkcyAoYmxvY2txdW90ZSBmb290ZXJzKSAqLwooZnVuY3Rpb24oKXt2YXIgbj0wO2Z1bmN0aW9uIGZpeCgpe3ZhciBiPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLW1iLWNyb3NzbGlua3NdJyk7aWYoIWIpe2lmKG4rKzw0MClzZXRUaW1lb3V0KGZpeCwyNTApO3JldHVybjt9dmFyIHM9Yi5jbG9zZXN0KCdzZWN0aW9uJyl8fGI7aWYoIXMuY2xvc2VzdCgnYmxvY2txdW90ZScpKXJldHVybjt2YXIgZj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2ItZm9vdGVyJyl8fFtdLmZpbHRlci5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2Zvb3RlcicpLGZ1bmN0aW9uKHgpe3JldHVybiAheC5jbG9zZXN0KCdibG9ja3F1b3RlJyl9KVswXTtpZihmJiZmLnBhcmVudE5vZGUpZi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzLGYpO2Vsc2UgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzKTt9aWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSdsb2FkaW5nJylkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJyxmaXgpO2Vsc2UgZml4KCk7fSkoKTsKPC9zY3JpcHQ+CjxzY3JpcHQ+Ci8qIHdyLWZncm91cDogbGFiZWxlZCBmb290ZXIgbGluayBncm91cHMgKGFkZGVkIDIwMjYtMDktMjkpICovCihmdW5jdGlvbigpewogIGZ1bmN0aW9uIHJ1bigpewogICAgdmFyIHVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNiLWZvb3Rlcl9fbmF2LWxpc3QnKTsKICAgIGlmICghdWwgfHwgdWwuZ2V0QXR0cmlidXRlKCdkYXRhLXdyLWZncm91cCcpKSByZXR1cm47CiAgICB2YXIgZ3JvdXBzID0gWwogICAgICBbJ0J1eSAmIFNlbGwnLCBbJ09wZW4gSG91c2VzJywnTWFya2V0IFJlcG9ydCcsJ05laWdoYm9yaG9vZHMnLCdTZWxsZXIgTmV0IFByb2NlZWRzIENhbGN1bGF0b3InLCdFc3Bhw7FvbCcsJ05ldyBBbGJhbnksIElOIEhvbWVzJywnSmVmZmVyc29udmlsbGUsIElOIEhvbWVzJywnQ2xhcmtzdmlsbGUsIElOIEhvbWVzJ11dLAogICAgICBbJ0ludmVzdG9ycycsIFsnSW52ZXN0JywnSW52ZXN0b3IgQ29ycmlkb3InLCdJbnZlc3RtZW50IFByb3BlcnR5IEFuYWx5emVyJywnRXhwbG9yZSBPZmYtTWFya2V0IERlYWxzJywnUmVhZCBUaGUgTW9ybmluZyBCZXJnZXJvbiddXSwKICAgICAgWydSZW50ZXJzICYgTGFuZGxvcmRzJywgWydGaW5kIGEgUmVudGFsJywnVGVuYW50IFBsYWNlbWVudCddXSwKICAgICAgWydBYm91dCBXaW5uZXIgUmVhbHR5JywgWydNZWV0IFJvYiBCZXJnZXJvbicsJ1dpbm5lciBTZXJ2aWNlcycsJ0Jsb2cnLCdKb2luIFVzJywnRkFRJywnU2NoZWR1bGUgYXBwb2ludG1lbnQnLCdDb21wbGV0ZSBpbnRha2UnXV0sCiAgICAgIFsnRm9sbG93IFVzJywgWydXaW5uZXIgUmVhbHR5IG9uIEdvb2dsZScsJ1dpbm5lciBSZWFsdHkgb24gRmFjZWJvb2snLCdXaW5uZXIgUmVhbHR5IG9uIEluc3RhZ3JhbScsJ1JvYiBCZXJnZXJvbiBvbiBMaW5rZWRJbiddXSwKICAgICAgWydGaW5lIFByaW50JywgWydQcml2YWN5IFBvbGljeScsJ0NvbnRlbnQgJiBBSSBVc2UgUG9saWN5J11dCiAgICBdOwogICAgdmFyIG5vcm0gPSBmdW5jdGlvbihzKXsgcmV0dXJuIChzIHx8ICcnKS5yZXBsYWNlKC9ccysvZywgJyAnKS50cmltKCkudG9Mb3dlckNhc2UoKTsgfTsKICAgIHZhciBsaXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh1bC5jaGlsZHJlbik7CiAgICB2YXIgYnlUZXh0ID0ge307CiAgICBsaXMuZm9yRWFjaChmdW5jdGlvbihsaSl7IGJ5VGV4dFtub3JtKGxpLnRleHRDb250ZW50KV0gPSBsaTsgfSk7CiAgICB2YXIgdXNlZCA9IFtdOwogICAgdmFyIGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICB2YXIgYWRkTGFiZWwgPSBmdW5jdGlvbih0ZXh0KXsKICAgICAgdmFyIGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwogICAgICBoLmNsYXNzTmFtZSA9ICd3ci1mZ3JvdXAtbGFiZWwnOwogICAgICBoLnNldEF0dHJpYnV0ZSgncm9sZScsICdwcmVzZW50YXRpb24nKTsKICAgICAgaC50ZXh0Q29udGVudCA9IHRleHQ7CiAgICAgIGZyYWcuYXBwZW5kQ2hpbGQoaCk7CiAgICB9OwogICAgZ3JvdXBzLmZvckVhY2goZnVuY3Rpb24oZyl7CiAgICAgIHZhciBmb3VuZCA9IGdbMV0ubWFwKGZ1bmN0aW9uKHQpeyByZXR1cm4gYnlUZXh0W25vcm0odCldOyB9KS5maWx0ZXIoZnVuY3Rpb24obGkpeyByZXR1cm4gbGkgJiYgdXNlZC5pbmRleE9mKGxpKSA8IDA7IH0pOwogICAgICBpZiAoIWZvdW5kLmxlbmd0aCkgcmV0dXJuOwogICAgICBhZGRMYWJlbChnWzBdKTsKICAgICAgZm91bmQuZm9yRWFjaChmdW5jdGlvbihsaSl7IHVzZWQucHVzaChsaSk7IGZyYWcuYXBwZW5kQ2hpbGQobGkpOyB9KTsKICAgIH0pOwogICAgdmFyIHJlc3QgPSBsaXMuZmlsdGVyKGZ1bmN0aW9uKGxpKXsgcmV0dXJuIHVzZWQuaW5kZXhPZihsaSkgPCAwOyB9KTsKICAgIGlmIChyZXN0Lmxlbmd0aCkgeyBhZGRMYWJlbCgnTW9yZScpOyByZXN0LmZvckVhY2goZnVuY3Rpb24obGkpeyBmcmFnLmFwcGVuZENoaWxkKGxpKTsgfSk7IH0KICAgIHVsLmFwcGVuZENoaWxkKGZyYWcpOwogICAgdWwuc2V0QXR0cmlidXRlKCdkYXRhLXdyLWZncm91cCcsICcxJyk7CiAgICB2YXIgdGl0bGUgPSB1bC5jbG9zZXN0KCcuc2ItZm9vdGVyX19tZW51JykgJiYgdWwuY2xvc2VzdCgnLnNiLWZvb3Rlcl9fbWVudScpLnF1ZXJ5U2VsZWN0b3IoJy5zYi1mb290ZXItbmF2LXdpdGgtbWFwX190aXRsZScpOwogICAgaWYgKHRpdGxlICYmIG5vcm0odGl0bGUudGV4dENvbnRlbnQpID09PSAnbWVudScpIHRpdGxlLnRleHRDb250ZW50ID0gJ0V4cGxvcmUnOwogICAgaWYgKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItZmdyb3VwLWNzcycpKSB7CiAgICAgIHZhciBzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CiAgICAgIHN0LmlkID0gJ3dyLWZncm91cC1jc3MnOwogICAgICBzdC50ZXh0Q29udGVudCA9CiAgICAgICAgJy5zYi1mb290ZXJfX25hdi1saXN0IC53ci1mZ3JvdXAtbGFiZWx7Ym9yZGVyLWJvdHRvbTpub25lIWltcG9ydGFudDttYXJnaW46MjJweCAwIDRweCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDsnICsKICAgICAgICAnZm9udC1mYW1pbHk6IkdvdGhpYyBBMSIsc2Fucy1zZXJpZjtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6MS41cHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOiNmZmY7b3BhY2l0eTouNztsaXN0LXN0eWxlOm5vbmV9JyArCiAgICAgICAgJy5zYi1mb290ZXJfX25hdi1saXN0IC53ci1mZ3JvdXAtbGFiZWw6Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDowIWltcG9ydGFudH0nOwogICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0KTsKICAgIH0KICB9CiAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIHJ1bik7IGVsc2UgcnVuKCk7Cn0pKCk7Cjwvc2NyaXB0Pgo8c2NyaXB0PgooZnVuY3Rpb24oKXsKdmFyIHA9bG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvXC8rJC8sJycpOwppZihwIT09JycmJnAhPT0nL2luZGV4JylyZXR1cm47CnZhciBOPVtbIkFuY2hvcmFnZSIsIi9hbmNob3JhZ2Uta3ktcmVhbC1lc3RhdGUtZ3VpZGUiXSxbIkJlZWNobW9udCAvIFNvdXRoIExvdWlzdmlsbGUiLCIvYmVlY2htb250LXNvdXRoLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiXSxbIkJlbGtuYXAiLCIvYmVsa25hcC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIl0sWyJDYWxpZm9ybmlhIiwiL2NhbGlmb3JuaWEtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSJdLFsiQ2FtcCBUYXlsb3IiLCIvY2FtcC10YXlsb3ItbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSJdLFsiQ2hlcm9rZWUgVHJpYW5nbGUiLCIvY2hlcm9rZWUtdHJpYW5nbGUtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSJdLFsiQ2xpZnRvbiAvIENsaWZ0b24gSGVpZ2h0cyIsIi9jbGlmdG9uLWNsaWZ0b24taGVpZ2h0cy1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIl0sWyJDcmVzY2VudCBIaWxsIC8gT3JpZ2luYWwgSGlnaGxhbmRzIiwiL2NyZXNjZW50LWhpbGwtb3JpZ2luYWwtaGlnaGxhbmRzLWt5LXJlYWwtZXN0YXRlLWd1aWRlIl0sWyJEb3VnbGFzcyBIaWxscyIsIi9kb3VnbGFzcy1oaWxscy1reS1yZWFsLWVzdGF0ZS1ndWlkZSJdLFsiRG91Z2xhc3MgTG9vcCAvIEJvbm55Y2FzdGxlIiwiL2RvdWdsYXNzLWxvb3AtYm9ubnljYXN0bGUtcmVhbC1lc3RhdGUtZ3VpZGUiXSxbIkRvd250b3duIiwiL2Rvd250b3duLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiXSxbIkZhaXJkYWxlIiwiL2ZhaXJkYWxlLWt5LXJlYWwtZXN0YXRlLWd1aWRlIl0sWyJGZXJuIENyZWVrIiwiL2Zlcm4tY3JlZWsta3ktcmVhbC1lc3RhdGUtZ3VpZGUiXSxbIkdlcm1hbnRvd24gLyBTY2huaXR6ZWxidXJnIiwiL2dlcm1hbnRvd24tc2Nobml0emVsYnVyZy1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIl0sWyJHbGVudmlldyIsIi9nbGVudmlldy1reS1yZWFsLWVzdGF0ZS1ndWlkZSJdLFsiSGlrZXMgUG9pbnQiLCIvaGlrZXMtcG9pbnQtbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtZ3VpZGUiXSxbIkh1cnN0Ym91cm5lIiwiL2h1cnN0Ym91cm5lLWt5LXJlYWwtZXN0YXRlLWd1aWRlIl0sWyJJbmRpYW4gSGlsbHMiLCIvaW5kaWFuLWhpbGxzLWt5LXJlYWwtZXN0YXRlLWd1aWRlIl0sWyJJcm9xdW9pcyBQYXJrIC8gU291dGggRW5kIiwiL2lyb3F1b2lzLXNvdXRoLWVuZC1sb3Vpc3ZpbGxlLW5laWdoYm9yaG9vZC1ndWlkZSJdLFsiSmVmZmVyc29udG93biIsIi9qZWZmZXJzb250b3duLWxvdWlzdmlsbGUtbmVpZ2hib3Job29kLWd1aWRlIl0sWyJMYWtlIEZvcmVzdCIsIi9sYWtlLWZvcmVzdC1sb3Vpc3ZpbGxlLWt5LXJlYWwtZXN0YXRlLWd1aWRlIl0sWyJMeW5kb24gLyBHcmF5bW9vci1EZXZvbmRhbGUiLCIvbHluZG9uLWdyYXltb29yLWRldm9uZGFsZS1reS1yZWFsLWVzdGF0ZS1ndWlkZSJdLFsiTWlkZGxldG93biIsIi9taWRkbGV0b3duLWt5LXJlYWwtZXN0YXRlLWd1aWRlIl0sWyJNb2NraW5nYmlyZCBWYWxsZXkiLCIvbW9ja2luZ2JpcmQtdmFsbGV5LWt5LXJlYWwtZXN0YXRlLWd1aWRlIl0sWyJOZXdidXJnIC8gQnVlY2hlbCIsIi9uZXdidXJnLWJ1ZWNoZWwtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSJdLFsiTm9ydG9uIENvbW1vbnMiLCIvbm9ydG9uLWNvbW1vbnMtcmVhbC1lc3RhdGUtZ3VpZGUiXSxbIk5vcndvb2QgLyBOb3J0aGZpZWxkIiwiL25vcndvb2Qtbm9ydGhmaWVsZC1reS1yZWFsLWVzdGF0ZS1ndWlkZSJdLFsiTnVMdSAvIEJ1dGNoZXJ0b3duIiwiL251bHUtYnV0Y2hlcnRvd24tbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSJdLFsiT2tvbG9uYSIsIi9va29sb25hLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiXSxbIk9sZCBMb3Vpc3ZpbGxlIiwiL29sZC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIl0sWyJQb3BsYXIgTGV2ZWwiLCIvcG9wbGFyLWxldmVsLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiXSxbIlBvcnRsYW5kIiwiL3BvcnRsYW5kLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiXSxbIlByb3NwZWN0IiwiL3Byb3NwZWN0LWt5LW5laWdoYm9yaG9vZC1ndWlkZSJdLFsiUnVzc2VsbCIsIi9ydXNzZWxsLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiXSxbIlNoZWxieSBQYXJrIiwiL3NoZWxieS1wYXJrLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiXSxbIlNoaXZlbHkgLyBQbGVhc3VyZSBSaWRnZSBQYXJrIiwiL3NoaXZlbHktcGxlYXN1cmUtcmlkZ2UtcGFyay1yZWFsLWVzdGF0ZS1ndWlkZSJdLFsiU21va2V0b3duIiwiL3Ntb2tldG93bi1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIl0sWyJTcHJpbmdodXJzdCIsIi9zcHJpbmdodXJzdC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIl0sWyJTdC4gTWF0dGhld3MiLCIvc3QtbWF0dGhld3MtbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtZ3VpZGUiXSxbIlRoZSBIaWdobGFuZHMiLCIvaGlnaGxhbmRzLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiXSxbIlZhbGxleSBTdGF0aW9uIiwiL3ZhbGxleS1zdGF0aW9uLWxvdWlzdmlsbGUtbmVpZ2hib3Job29kLWd1aWRlIl0sWyJXaW5keSBIaWxscyAvIFNlbmVjYSBHYXJkZW5zIiwiL3dpbmR5LWhpbGxzLXNlbmVjYS1nYXJkZW5zLWt5LXJlYWwtZXN0YXRlLWd1aWRlIl1dOwp2YXIgRj1bNywgMTAsIDEzLCAxNSwgMTksIDIyLCAyNSwgMjcsIDI5LCAzMiwgMzgsIDM5XTsKdmFyIGNzcz0nI3dyLWhvbWUtZ3VpZGVze2JhY2tncm91bmQ6I2ZmZiAhaW1wb3J0YW50O3BhZGRpbmc6NTZweCAyMHB4IDUycHggIWltcG9ydGFudDtmb250LWZhbWlseTpzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxTZWdvZSBVSSxzYW5zLXNlcmlmfScKKycjd3ItaG9tZS1ndWlkZXMgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9JworJyN3ci1ob21lLWd1aWRlcyAud2ctaW57bWF4LXdpZHRoOjExMDBweDttYXJnaW46MCBhdXRvfScKKycjd3ItaG9tZS1ndWlkZXMgaDIud2ctaHtjb2xvcjojMTExICFpbXBvcnRhbnQ7Zm9udC1zaXplOmNsYW1wKDI4cHgsNHZ3LDQwcHgpICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS4xNSAhaW1wb3J0YW50O21hcmdpbjowIDAgMTJweCAhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjcwMCAhaW1wb3J0YW50O3RleHQtYWxpZ246bGVmdCAhaW1wb3J0YW50fScKKycjd3ItaG9tZS1ndWlkZXMgcC53Zy1zdWJ7Y29sb3I6IzQ0NCAhaW1wb3J0YW50O2ZvbnQtc2l6ZToxOHB4ICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS41NSAhaW1wb3J0YW50O21heC13aWR0aDo3NjBweDttYXJnaW46MCAwIDI2cHggIWltcG9ydGFudDt0ZXh0LWFsaWduOmxlZnQgIWltcG9ydGFudH0nCisnI3dyLWhvbWUtZ3VpZGVzIC53Zy1zdGF0c3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpdCxtaW5tYXgoMTUwcHgsMWZyKSk7Z2FwOjEycHg7bWFyZ2luOjAgMCAyNnB4fScKKycjd3ItaG9tZS1ndWlkZXMgYS53Zy1zdGF0e2Rpc3BsYXk6YmxvY2s7Ym9yZGVyOjFweCBzb2xpZCAjZTNkZmQ5O2JhY2tncm91bmQ6I2Y2ZjRmMTtwYWRkaW5nOjE2cHg7Ym9yZGVyLXJhZGl1czo4cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmUgIWltcG9ydGFudDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzLHRyYW5zZm9ybSAuMTVzfScKKycjd3ItaG9tZS1ndWlkZXMgYS53Zy1zdGF0OmhvdmVye2JvcmRlci1jb2xvcjojZDk2NDRhO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpfScKKycjd3ItaG9tZS1ndWlkZXMgYS53Zy1zdGF0IGJ7ZGlzcGxheTpibG9jaztmb250LXNpemU6MzRweDtsaW5lLWhlaWdodDoxLjE7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMxMTEgIWltcG9ydGFudH0nCisnI3dyLWhvbWUtZ3VpZGVzIGEud2ctc3RhdCBzcGFue2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzU1NSAhaW1wb3J0YW50O21hcmdpbi10b3A6NHB4fScKKycjd3ItaG9tZS1ndWlkZXMgLndnLWZpbmR7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxMHB4O21hcmdpbjowIDAgOHB4fScKKycjd3ItaG9tZS1ndWlkZXMgaW5wdXQud2ctcXtmbGV4OjEgMSAyNjBweDtwYWRkaW5nOjE0cHggMTZweDtmb250LXNpemU6MTdweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MXB4IHNvbGlkICNjZmM5YzA7YmFja2dyb3VuZDojZmZmICFpbXBvcnRhbnQ7Y29sb3I6IzExMSAhaW1wb3J0YW50fScKKycjd3ItaG9tZS1ndWlkZXMgYS53Zy1idG57cGFkZGluZzoxNHB4IDIwcHg7YmFja2dyb3VuZDojZDk2NDRhO2NvbG9yOiNmZmYgIWltcG9ydGFudDtib3JkZXItcmFkaXVzOjhweDtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjE2cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmUgIWltcG9ydGFudH0nCisnI3dyLWhvbWUtZ3VpZGVzIGEud2ctYnRuOmhvdmVye2JhY2tncm91bmQ6I2M0NTUzY30nCisnI3dyLWhvbWUtZ3VpZGVzIC53Zy1yZXN7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHg7bWFyZ2luOjEycHggMCAyNHB4O21pbi1oZWlnaHQ6MzhweDtjb2xvcjojNDQ0ICFpbXBvcnRhbnQ7Zm9udC1zaXplOjE1cHh9JworJyN3ci1ob21lLWd1aWRlcyAud2ctcmVzIGF7cGFkZGluZzo4cHggMTRweDtib3JkZXI6MXB4IHNvbGlkICNkOTY0NGE7Ym9yZGVyLXJhZGl1czoyMHB4O2NvbG9yOiMxMTEgIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246bm9uZSAhaW1wb3J0YW50O2ZvbnQtc2l6ZToxNXB4O2JhY2tncm91bmQ6I2ZmZn0nCisnI3dyLWhvbWUtZ3VpZGVzIC53Zy1yZXMgYTpob3ZlcntiYWNrZ3JvdW5kOiNkOTY0NGE7Y29sb3I6I2ZmZiAhaW1wb3J0YW50fScKKycjd3ItaG9tZS1ndWlkZXMgLndnLWdyaWR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLG1pbm1heCgyMzBweCwxZnIpKTtnYXA6MTRweH0nCisnI3dyLWhvbWUtZ3VpZGVzIGEud2ctY2FyZHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo2cHg7cGFkZGluZzoxOHB4O2JvcmRlcjoxcHggc29saWQgI2UzZGZkOTtiYWNrZ3JvdW5kOiNmNmY0ZjE7Ym9yZGVyLXJhZGl1czo4cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmUgIWltcG9ydGFudDt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMTVzLGJvcmRlci1jb2xvciAuMTVzfScKKycjd3ItaG9tZS1ndWlkZXMgYS53Zy1jYXJkOmhvdmVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0zcHgpO2JvcmRlci1jb2xvcjojZDk2NDRhfScKKycjd3ItaG9tZS1ndWlkZXMgLndnLWt7Zm9udC1zaXplOjEycHg7bGV0dGVyLXNwYWNpbmc6LjA4ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOiM2NjYgIWltcG9ydGFudH0nCisnI3dyLWhvbWUtZ3VpZGVzIC53Zy1ue2ZvbnQtc2l6ZToyMHB4O2xpbmUtaGVpZ2h0OjEuMjU7Y29sb3I6IzExMSAhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjYwMH0nCisnI3dyLWhvbWUtZ3VpZGVzIC53Zy1nb3tmb250LXNpemU6MTRweDtjb2xvcjojYzQ1NTNjICFpbXBvcnRhbnQ7bWFyZ2luLXRvcDphdXRvO3BhZGRpbmctdG9wOjEwcHg7Zm9udC13ZWlnaHQ6NjAwfScKKycjd3ItaG9tZS1ndWlkZXMgLndnLXJvd3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjEwcHg7bWFyZ2luLXRvcDoyNnB4fScKKycjd3ItaG9tZS1ndWlkZXMgLndnLXJvdyBhe3BhZGRpbmc6MTFweCAxNnB4O2JvcmRlcjoxcHggc29saWQgI2NmYzljMDtib3JkZXItcmFkaXVzOjMwcHg7Y29sb3I6IzExMSAhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjpub25lICFpbXBvcnRhbnQ7Zm9udC1zaXplOjE1cHg7YmFja2dyb3VuZDojZmZmfScKKycjd3ItaG9tZS1ndWlkZXMgLndnLXJvdyBhOmhvdmVye2JvcmRlci1jb2xvcjojZDk2NDRhfScKKycjd3ItaG9tZS1ndWlkZXMgcC53Zy1ieXttYXJnaW46MjJweCAwIDAgIWltcG9ydGFudDtjb2xvcjojNTU1ICFpbXBvcnRhbnQ7Zm9udC1zaXplOjE1cHggIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjUgIWltcG9ydGFudDt0ZXh0LWFsaWduOmxlZnQgIWltcG9ydGFudH0nCisnI3dyLWhvbWUtZ3VpZGVzIHAud2ctYnkgYXtjb2xvcjojMTExICFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSAhaW1wb3J0YW50fSc7CmZ1bmN0aW9uIGVzYyhzKXtyZXR1cm4gU3RyaW5nKHMpLnJlcGxhY2UoLyYvZywnJmFtcDsnKS5yZXBsYWNlKC88L2csJyZsdDsnKX0KZnVuY3Rpb24gYnVpbGQoKXsKdmFyIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2VjdGlvbicpO3MuaWQ9J3dyLWhvbWUtZ3VpZGVzJzsKcy5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCdMb3Vpc3ZpbGxlIG5laWdoYm9yaG9vZCBhbmQgcmVhbCBlc3RhdGUgZ3VpZGVzJyk7CnZhciBzdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO3N0LnRleHRDb250ZW50PWNzcztzLmFwcGVuZENoaWxkKHN0KTsKdmFyIGNhcmRzPUYubWFwKGZ1bmN0aW9uKGkpe3ZhciB4PU5baV07cmV0dXJuICc8YSBjbGFzcz0id2ctY2FyZCIgaHJlZj0iJyt4WzFdKyciPjxzcGFuIGNsYXNzPSJ3Zy1rIj5OZWlnaGJvcmhvb2QgZ3VpZGU8L3NwYW4+PHNwYW4gY2xhc3M9IndnLW4iPicrZXNjKHhbMF0pKyc8L3NwYW4+PHNwYW4gY2xhc3M9IndnLWdvIj5SZWFkIHRoZSBndWlkZSAmcmFycjs8L3NwYW4+PC9hPid9KS5qb2luKCcnKTsKdmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7ZC5jbGFzc05hbWU9J3dnLWluJzsKZC5pbm5lckhUTUw9JzxoMiBjbGFzcz0id2ctaCI+TGVhcm4gdGhlIG5laWdoYm9yaG9vZCBiZWZvcmUgeW91IHRvdXIgdGhlIGhvdXNlLjwvaDI+JworJzxwIGNsYXNzPSJ3Zy1zdWIiPkZyb20gdGhlIFdpbm5lciBSZWFsdHkgdGVhbTogcHJpY2VzLCB3aGF0IGlzIHNlbGxpbmcsIHByb3BlcnR5IHRheGVzIGFuZCBjb21tdXRlIGZvciBlYWNoIGFyZWEsIHdpdGggYSBsaW5rIHRvIHRoZSBsaXZlIGhvbWVzIGZvciBzYWxlIHRoZXJlLjwvcD4nCisnPGRpdiBjbGFzcz0id2ctc3RhdHMiPicKKyc8YSBjbGFzcz0id2ctc3RhdCIgaHJlZj0iL2xvdWlzdmlsbGUtbmVpZ2hib3Job29kcyI+PGI+NDI8L2I+PHNwYW4+bmVpZ2hib3Job29kIGd1aWRlczwvc3Bhbj48L2E+JworJzxhIGNsYXNzPSJ3Zy1zdGF0IiBocmVmPSIvbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZXMiPjxiPjE3PC9iPjxzcGFuPmd1aWRlcyBmb3IgYnV5ZXJzPC9zcGFuPjwvYT4nCisnPGEgY2xhc3M9IndnLXN0YXQiIGhyZWY9Ii9sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlcyI+PGI+MTM8L2I+PHNwYW4+Z3VpZGVzIGZvciBzZWxsZXJzPC9zcGFuPjwvYT4nCisnPGEgY2xhc3M9IndnLXN0YXQiIGhyZWY9Ii90b29scyI+PGI+MjA8L2I+PHNwYW4+ZnJlZSBjYWxjdWxhdG9ycyBhbmQgdG9vbHM8L3NwYW4+PC9hPjwvZGl2PicKKyc8ZGl2IGNsYXNzPSJ3Zy1maW5kIj48aW5wdXQgY2xhc3M9IndnLXEiIHR5cGU9InNlYXJjaCIgcGxhY2Vob2xkZXI9IlR5cGUgYSBuZWlnaGJvcmhvb2Q6IEhpZ2hsYW5kcywgUHJvc3BlY3QsIEplZmZlcnNvbnRvd24uLi4iIGFyaWEtbGFiZWw9IkZpbmQgYSBuZWlnaGJvcmhvb2QgZ3VpZGUiIGF1dG9jb21wbGV0ZT0ib2ZmIj48YSBjbGFzcz0id2ctYnRuIiBocmVmPSIvbG91aXN2aWxsZS1uZWlnaGJvcmhvb2RzIj5Ccm93c2UgYWxsIDQyPC9hPjwvZGl2PicKKyc8ZGl2IGNsYXNzPSJ3Zy1yZXMiIGFyaWEtbGl2ZT0icG9saXRlIj48L2Rpdj4nCisnPGRpdiBjbGFzcz0id2ctZ3JpZCI+JytjYXJkcysnPC9kaXY+JworJzxkaXYgY2xhc3M9IndnLXJvdyI+PGEgaHJlZj0iL2xvdWlzdmlsbGUtbmVpZ2hib3Job29kcyI+QWxsIG5laWdoYm9yaG9vZHM8L2E+PGEgaHJlZj0iL2xvdWlzdmlsbGUtaG91c2luZy1tYXJrZXQtcmVwb3J0Ij5UaGlzIG1vbnRoXCdzIG1hcmtldCByZXBvcnQ8L2E+PGEgaHJlZj0iL25ldy1hbGJhbnktamVmZmVyc29udmlsbGUtaW5kaWFuYS1yZWFsLWVzdGF0ZS1ndWlkZSI+U291dGhlcm4gSW5kaWFuYTwvYT48YSBocmVmPSIvbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZXMiPkV2ZXJ5IGd1aWRlIGJ5IHRvcGljPC9hPjxhIGhyZWY9Ii9yZWFsLWVzdGF0ZS1lbi1lc3Bhbm9sLWxvdWlzdmlsbGUiPkVuIGVzcGEmbnRpbGRlO29sPC9hPjwvZGl2PicKKyc8cCBjbGFzcz0id2ctYnkiPk5ldyBndWlkZXMgYW5kIG51bWJlcnMgbGFuZCBpbiA8YSBocmVmPSJodHRwczovL3d3dy50aGVtb3JuaW5nYmVyZ2Vyb24uY29tL3N1YnNjcmliZSI+VGhlIE1vcm5pbmcgQmVyZ2Vyb248L2E+LCByZWFkIGJ5IDcwLDAwMCsgcGVvcGxlIGluIExvdWlzdmlsbGUuPC9wPic7CnMuYXBwZW5kQ2hpbGQoZCk7CnZhciBxPWQucXVlcnlTZWxlY3RvcignLndnLXEnKSxyPWQucXVlcnlTZWxlY3RvcignLndnLXJlcycpOwpxLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JyxmdW5jdGlvbigpe3ZhciB2PXEudmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7ci5pbm5lckhUTUw9Jyc7aWYoIXYpcmV0dXJuOwp2YXIgbT1OLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4geFswXS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yodik+LTF9KS5zbGljZSgwLDgpOwppZighbS5sZW5ndGgpe3IudGV4dENvbnRlbnQ9J05vIG1hdGNoIHlldC4gVHJ5IHRoZSBmdWxsIGxpc3QuJztyZXR1cm59Cm0uZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7YS5ocmVmPXhbMV07YS50ZXh0Q29udGVudD14WzBdKycgZ3VpZGUnO3IuYXBwZW5kQ2hpbGQoYSl9KX0pOwpyZXR1cm4gc30KZnVuY3Rpb24gcGxhY2UoKXsKaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWhvbWUtZ3VpZGVzJykpcmV0dXJuIHRydWU7CnZhciBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1ob21lLXNlYXJjaCcpOwppZihhJiZhLnBhcmVudE5vZGUpe2EucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYnVpbGQoKSxhLm5leHRTaWJsaW5nKTtyZXR1cm4gdHJ1ZX0KdmFyIGI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RtYi1wcm9vZicpOwppZihiJiZiLnBhcmVudE5vZGUpe2IucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYnVpbGQoKSxiKTtyZXR1cm4gdHJ1ZX0KcmV0dXJuIGZhbHNlfQp2YXIgdHJpZXM9MDsKKGZ1bmN0aW9uIGdvKCl7aWYocGxhY2UoKSlyZXR1cm47aWYoKyt0cmllczw2MClzZXRUaW1lb3V0KGdvLDI1MCl9KSgpOwp9KSgpOwoKCi8qIFdpbm5lciBSZWFsdHk6IGxpdmUgSURYIGxpc3RpbmdzIG9uIG5laWdoYm9yaG9vZCBndWlkZXMgKElEWCBCcm9rZXIgTGlzdGluZ3MgU2hvd2Nhc2Ugd2lkZ2V0cyAiR3VpZGUgLSAuLi4iKS4gQWRkZWQgMjAyNi0xMC0wNS4gKi8KKGZ1bmN0aW9uICgpIHsKICB2YXIgVyA9IHsiL2FuY2hvcmFnZS1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6MTc2MTc0LCIvYmVlY2htb250LXNvdXRoLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiOjE3NjE5MywiL2JlbGtuYXAtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6MTc2MjA3LCIvYnVsbGl0dC1jb3VudHkta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOjE3NjIxMCwiL2NhbGlmb3JuaWEtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6MTc2MTk1LCIvY2FtcC10YXlsb3ItbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6MTc2MTczLCIvY2hlcm9rZWUtdHJpYW5nbGUtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6MTc2MjA0LCIvY2xpZnRvbi1jbGlmdG9uLWhlaWdodHMtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6MTc2MjA4LCIvY3Jlc2NlbnQtaGlsbC1vcmlnaW5hbC1oaWdobGFuZHMta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOjE3NjE5NiwiL2RvdWdsYXNzLWhpbGxzLWt5LXJlYWwtZXN0YXRlLWd1aWRlIjoxNzYxNzUsIi9kb3VnbGFzcy1sb29wLWJvbm55Y2FzdGxlLXJlYWwtZXN0YXRlLWd1aWRlIjoxNzYxNzEsIi9kb3dudG93bi1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjoxNzYyMDAsIi9lbGl6YWJldGh0b3duLWt5LXJlYWwtZXN0YXRlLWd1aWRlIjoxNzYxODUsIi9mYWlyZGFsZS1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6MTc2MTg3LCIvZmVybi1jcmVlay1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6MTc2MTkwLCIvZmlzaGVydmlsbGUta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOjE3NjIxMywiL2dlcm1hbnRvd24tc2Nobml0emVsYnVyZy1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjoxNzYxOTIsIi9nbGVudmlldy1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6MTc2MTg4LCIvaGlnaGxhbmRzLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiOjE3NjE2NiwiL2hpa2VzLXBvaW50LWxvdWlzdmlsbGUtbmVpZ2hib3Job29kLWd1aWRlIjoxNzYxODEsIi9odXJzdGJvdXJuZS1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6MTc2MjEyLCIvaW5kaWFuLWhpbGxzLWt5LXJlYWwtZXN0YXRlLWd1aWRlIjoxNzYyMTQsIi9pcm9xdW9pcy1zb3V0aC1lbmQtbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtZ3VpZGUiOjE3NjIxNSwiL2plZmZlcnNvbnRvd24tbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtZ3VpZGUiOjE3NjE4OSwiL2xha2UtZm9yZXN0LWxvdWlzdmlsbGUta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOjE3NjE4MCwiL2x5bmRvbi1ncmF5bW9vci1kZXZvbmRhbGUta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOjE3NjIxNywiL21pZGRsZXRvd24ta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOjE3NjIwMiwiL21vY2tpbmdiaXJkLXZhbGxleS1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6MTc2MTg0LCIvbmV3LWFsYmFueS1qZWZmZXJzb252aWxsZS1pbmRpYW5hLXJlYWwtZXN0YXRlLWd1aWRlIjoxNzYyMDYsIi9uZXdidXJnLWJ1ZWNoZWwtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6MTc2MTkxLCIvbm9ydG9uLWNvbW1vbnMtcmVhbC1lc3RhdGUtZ3VpZGUiOjE3NjE5OSwiL25vcndvb2Qtbm9ydGhmaWVsZC1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6MTc2MTc4LCIvbnVsdS1idXRjaGVydG93bi1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjoxNzYyMDMsIi9va29sb25hLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiOjE3NjE4MywiL29sZC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjoxNzYxODIsIi9vbGRoYW0tY291bnR5LWt5LXJlYWwtZXN0YXRlLWd1aWRlIjoxNzYxNzksIi9wZXdlZS12YWxsZXkta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOjE3NjE5OCwiL3BvcGxhci1sZXZlbC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjoxNzYyMDUsIi9wb3J0bGFuZC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjoxNzYxNzcsIi9wcm9zcGVjdC1reS1uZWlnaGJvcmhvb2QtZ3VpZGUiOjE3NjE4NiwiL3J1c3NlbGwtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6MTc2MTk0LCIvc2hlbGJ5LWNvdW50eS1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6MTc2MjE2LCIvc2hlbGJ5LXBhcmstbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6MTc2MjAxLCIvc2hpdmVseS1wbGVhc3VyZS1yaWRnZS1wYXJrLXJlYWwtZXN0YXRlLWd1aWRlIjoxNzYxNzYsIi9zbW9rZXRvd24tbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6MTc2MjExLCIvc3ByaW5naHVyc3QtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6MTc2MTk3LCIvc3QtbWF0dGhld3MtbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtZ3VpZGUiOjE3NjE2MSwiL3ZhbGxleS1zdGF0aW9uLWxvdWlzdmlsbGUtbmVpZ2hib3Job29kLWd1aWRlIjoxNzYxNzIsIi93aW5keS1oaWxscy1zZW5lY2EtZ2FyZGVucy1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6MTc2MjA5fTsKICBmdW5jdGlvbiBydW4oKSB7CiAgICB2YXIgcCA9IGxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1wvKyQvLCAiIik7CiAgICB2YXIgaWQgPSBXW3BdOwogICAgaWYgKCFpZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid3ItaWR4LWd1aWRlIikpIHJldHVybjsKICAgIHZhciBib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnNiLWl0ZW0tdmlld19fYm9keSIpOwogICAgaWYgKCFib2R5KSByZXR1cm47CiAgICB2YXIgYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICBib3guaWQgPSAid3ItaWR4LWd1aWRlIjsKICAgIGJveC5zdHlsZS5jc3NUZXh0ID0gIm1hcmdpbjozNnB4IDAgNDBweDtwYWRkaW5nOjI0cHggMDtib3JkZXItdG9wOjFweCBzb2xpZCAjNDQ0O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM0NDQ7IjsKICAgIHZhciBoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDIiKTsKICAgIGgudGV4dENvbnRlbnQgPSAiSG9tZXMgZm9yIHNhbGUgaGVyZSByaWdodCBub3ciOwogICAgaC5zdHlsZS5jc3NUZXh0ID0gImNvbG9yOiNmZmY7Zm9udC1zaXplOjI4cHg7bGluZS1oZWlnaHQ6MS4zO21hcmdpbjowIDAgOHB4O2ZvbnQtd2VpZ2h0Om5vcm1hbDsiOwogICAgdmFyIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7CiAgICBzLnRleHRDb250ZW50ID0gIkxpdmUgZnJvbSB0aGUgTUxTIGFuZCB1cGRhdGVkIGF1dG9tYXRpY2FsbHkuIFRhcCBhbnkgaG9tZSBmb3IgcGhvdG9zIGFuZCBkZXRhaWxzLCBvciBjYWxsIFdpbm5lciBSZWFsdHkgYXQgKDUwMikgMzA1LTg5MTUgdG8gc2VlIG9uZSBpbiBwZXJzb24uIjsKICAgIHMuc3R5bGUuY3NzVGV4dCA9ICJjb2xvcjojZGRkO21hcmdpbjowIDAgMThweDsiOwogICAgdmFyIGhvbGRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgaG9sZGVyLmlkID0gIndyLWlkeC1ob2xkZXIiOwogICAgaG9sZGVyLnN0eWxlLmNzc1RleHQgPSAiYmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OmhpZGRlbjsiOwogICAgYm94LmFwcGVuZENoaWxkKGgpOyBib3guYXBwZW5kQ2hpbGQocyk7IGJveC5hcHBlbmRDaGlsZChob2xkZXIpOwogICAgdmFyIGgycyA9IGJvZHkucXVlcnlTZWxlY3RvckFsbCgiaDIiKTsKICAgIGlmIChoMnMubGVuZ3RoID49IDMpIGgyc1sxXS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShib3gsIGgyc1sxXSk7CiAgICBlbHNlIGJvZHkuYXBwZW5kQ2hpbGQoYm94KTsKICAgIHZhciBzYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwogICAgc2MuaWQgPSAiaWR4d2lkZ2V0c3JjLSIgKyBpZDsKICAgIHNjLnR5cGUgPSAidGV4dC9qYXZhc2NyaXB0IjsKICAgIHNjLmNoYXJzZXQgPSAiVVRGLTgiOwogICAgc2Muc3JjID0gImh0dHBzOi8vc2VhcmNoLnRoZXdpbm5lcnJlYWx0eS5jb20vaWR4L3dpZGdldHMvIiArIGlkOwogICAgaG9sZGVyLmFwcGVuZENoaWxkKHNjKTsKICB9CiAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICJsb2FkaW5nIikgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1bik7CiAgZWxzZSBydW4oKTsKfSkoKTsKCjwvc2NyaXB0Pg==|END

WRA|i285592|3|PHNjcmlwdD4KKGZ1bmN0aW9uICgpIHsKICB2YXIgTUFQID0gewoiL3Nwb3J0cy1hbmQtZW50ZXJ0YWlubWVudC1yZWFsLWVzdGF0ZSI6IHtoOiAiV2lubmVyIFNwb3J0cyAmIEVudGVydGFpbm1lbnQ6IFJlYWwgRXN0YXRlIGZvciBBdGhsZXRlcywgTXVzaWNpYW5zIGFuZCBOSUwgRWFybmVycyIsIGQ6ICJSZWFsIGVzdGF0ZSBoZWxwIGZvciBjb2xsZWdlIGF0aGxldGVzIG9uIE5JTCBtb25leSwgcHJvIGF0aGxldGVzLCBob3JzZSByYWNpbmcgcHJvcywgbXVzaWNpYW5zIGFuZCBjcmVhdG9ycyB3aG8gd2FudCB0aGVpciBmaXJzdCByZWFsIG1vbmV5IHRvIGxhc3QgYSBsaWZldGltZS4iLCBrOiBbInJlYWx0b3IgZm9yIGF0aGxldGVzIGxvdWlzdmlsbGUiLCJuaWwgcmVhbCBlc3RhdGUiLCJyZWFsIGVzdGF0ZSBmb3IgYXRobGV0ZXMga2VudHVja3kiLCJzcG9ydHMgYW5kIGVudGVydGFpbm1lbnQgcmVhbCBlc3RhdGUiLCJyZWFsIGVzdGF0ZSBmb3IgbXVzaWNpYW5zIGxvdWlzdmlsbGUiLCJhdGhsZXRlIHJlYWwgZXN0YXRlIGFnZW50IGtlbnR1Y2t5Il19LAoiL25pbC1yZWFsLWVzdGF0ZS1jb2xsZWdlLWF0aGxldGVzIjoge2g6ICJOSUwgTW9uZXkgYW5kIFJlYWwgRXN0YXRlOiBBIENvbGxlZ2UgQXRobGV0ZSdzIEd1aWRlIHRvIEJ1aWxkaW5nIFdlYWx0aCIsIGQ6ICJIb3cgY29sbGVnZSBhdGhsZXRlcyBjYW4gdHVybiBOSUwgYW5kIHJldmVudWUtc2hhcmUgbW9uZXkgaW50byByZWFsIGVzdGF0ZSB0aGF0IHBheXMgZm9yIGxpZmUsIHdpdGhvdXQgcmlza2luZyBlbGlnaWJpbGl0eS4iLCBrOiBbIm5pbCBtb25leSByZWFsIGVzdGF0ZSIsImNvbGxlZ2UgYXRobGV0ZSBidXkgYSBob3VzZSIsImludmVzdCBuaWwgbW9uZXkiLCJuaWwgdGF4ZXMiLCJob3VzZSBoYWNraW5nIGNvbGxlZ2UgYXRobGV0ZSIsIm5pbCByZWFsIGVzdGF0ZSBrZW50dWNreSJdfSwKIi9ob3JzZS1yYWNpbmctcHJvZmVzc2lvbmFscy1yZWFsLWVzdGF0ZSI6IHtoOiAiUmVhbCBFc3RhdGUgZm9yIEhvcnNlIFJhY2luZyBQcm9mZXNzaW9uYWxzOiBKb2NrZXlzLCBUcmFpbmVycyBhbmQgT3duZXJzIGluIEtlbnR1Y2t5IiwgZDogIlJlYWwgZXN0YXRlIGZvciBqb2NrZXlzLCB0cmFpbmVycywgcmlkZXJzIGFuZCBvd25lcnMgbmVhciBDaHVyY2hpbGwgRG93bnMgYW5kIEtlZW5lbGFuZDogaG9tZSBiYXNlcywgRGVyYnkgd2VlayByZW50YWxzLCBmYXJtcyBhbmQgbG9hbnMgZm9yIHJhY2luZyBpbmNvbWUuIiwgazogWyJqb2NrZXkgcmVhbCBlc3RhdGUiLCJob3JzZSB0cmFpbmVyIGhvbWUgbG91aXN2aWxsZSIsImhvbWVzIG5lYXIgY2h1cmNoaWxsIGRvd25zIiwiaG9yc2UgZmFybSBmb3Igc2FsZSBrZW50dWNreSByZWFsdG9yIiwiZGVyYnkgd2VlayByZW50YWwiLCJyYWNpbmcgcHJvZmVzc2lvbmFsIG1vcnRnYWdlIl19LAoiL211c2ljaWFuLXJlYWwtZXN0YXRlLWxvdWlzdmlsbGUiOiB7aDogIlJlYWwgRXN0YXRlIGZvciBNdXNpY2lhbnMgYW5kIFRvdXJpbmcgQXJ0aXN0cyBpbiBMb3Vpc3ZpbGxlIiwgZDogIkhvdyBtdXNpY2lhbnMgYW5kIHRvdXJpbmcgYXJ0aXN0cyBidXkgaG9tZXMgYW5kIHJlbnRhbHMgd2l0aCB1bmV2ZW4gaW5jb21lOiBsb2FucyBmb3Igcm95YWx0aWVzIGFuZCB0b3VyIHBheSwgaG91c2UgaGFja2luZywgaG9tZSBzdHVkaW9zIGFuZCBtb3JlLiIsIGs6IFsibXVzaWNpYW4gbW9ydGdhZ2Uga2VudHVja3kiLCJyZWFsIGVzdGF0ZSBmb3IgbXVzaWNpYW5zIGxvdWlzdmlsbGUiLCJ0b3VyaW5nIGFydGlzdCBidXkgYSBob3VzZSIsImhvbWUgc3R1ZGlvIGhvdXNlIGxvdWlzdmlsbGUiLCJzZWxmIGVtcGxveWVkIG11c2ljaWFuIG1vcnRnYWdlIiwicm95YWx0eSBpbmNvbWUgbW9ydGdhZ2UiXX0sCiIvZmlyc3QtYmlnLWNoZWNrLXJlYWwtZXN0YXRlLXBsYW4iOiB7aDogIllvdXIgRmlyc3QgQmlnIENoZWNrOiBBIDkwLURheSBNb25leSBhbmQgUmVhbCBFc3RhdGUgUGxhbiIsIGQ6ICJHb3QgeW91ciBmaXJzdCBiaWcgTklMLCBjb250cmFjdCwgdG91ciBvciBwdXJzZSBjaGVjaz8gQSA5MC1kYXkgcGxhbiB0byBoYW5kbGUgdGF4ZXMsIGJ1aWxkIGEgc2FmZXR5IG5ldCBhbmQgYnV5IHJlYWwgZXN0YXRlIHRoYXQga2VlcHMgcGF5aW5nIHlvdS4iLCBrOiBbImZpcnN0IGJpZyBjaGVjayB3aGF0IHRvIGRvIiwid2hhdCB0byBkbyB3aXRoIG5pbCBtb25leSIsInNpZ25pbmcgYm9udXMgcmVhbCBlc3RhdGUiLCJhdGhsZXRlIG1vbmV5IHBsYW4iLCJpbnZlc3QgZmlyc3QgYmlnIHBheWNoZWNrIHJlYWwgZXN0YXRlIiwiYXZvaWQgZ29pbmcgYnJva2UgYXRobGV0ZSJdfSwKIi9zZWxsaW5nLWEtaG91c2UtaW4tYS10b3VnaC1zcG90LWtlbnR1Y2t5Ijoge2g6ICJTZWxsaW5nIGEgSG91c2UgaW4gYSBUb3VnaCBTcG90IGluIEtlbnR1Y2t5OiBFdmVyeSBTaXR1YXRpb24sIE9uZSBQbGFjZSIsIGQ6ICJJbmhlcml0ZWQgaG91c2UsIGRpdm9yY2UsIGZvcmVjbG9zdXJlLCBiYWQgdGVuYW50cywgZmlyZSBkYW1hZ2U/IEV2ZXJ5IGhhcmQgc2VsbGluZyBzaXR1YXRpb24gd2UgaGFuZGxlIGluIExvdWlzdmlsbGUgYW5kIEtlbnR1Y2t5LCBpbiBvbmUgcGxhY2UuIiwgazogWyJzZWxsIGhvdXNlIGhhcmQgc2l0dWF0aW9uIGtlbnR1Y2t5Iiwic2VsbCBpbmhlcml0ZWQgaG91c2UgbG91aXN2aWxsZSIsInNlbGwgaG91c2UgZGl2b3JjZSBrZW50dWNreSIsInNlbGwgaG91c2UgZm9yZWNsb3N1cmUgbG91aXN2aWxsZSIsInNlbGwgZGlzdHJlc3NlZCBob3VzZSBsb3Vpc3ZpbGxlIl19LAoiL3dheXMtdG8tc2VsbC15b3VyLWhvdXNlLWxvdWlzdmlsbGUtb3B0aW9ucyI6IHtoOiAiWW91ciBPcHRpb25zOiBFdmVyeSBXYXkgdG8gU2VsbCBZb3VyIEhvdXNlIGluIExvdWlzdmlsbGUsIFNpZGUgYnkgU2lkZSIsIGQ6ICJMaXN0IGl0LCBzZWxsIGZvciBjYXNoLCBub3ZhdGlvbiwgc2VsbGVyIGZpbmFuY2luZywgb3IgYSBzaG9ydCBzYWxlLiBUaGUgcmVhbCBtYXRoIG9uIGV2ZXJ5IHdheSB0byBzZWxsIGEgTG91aXN2aWxsZSBob3VzZSwgc2lkZSBieSBzaWRlLiIsIGs6IFsid2F5cyB0byBzZWxsIG15IGhvdXNlIGxvdWlzdmlsbGUiLCJzZWxsIGhvdXNlIGNhc2ggb3IgbGlzdCBsb3Vpc3ZpbGxlIiwibm92YXRpb24gdnMgY2FzaCBvZmZlciIsInNlbGwgaG91c2UgYXMgaXMgbG91aXN2aWxsZSBvcHRpb25zIiwiaG93IGludmVzdG9ycyBjYWxjdWxhdGUgY2FzaCBvZmZlcnMiXX0sCiIvc2VsbGluZy1hbi1pbmhlcml0ZWQtaG91c2UtcHJvYmF0ZS1rZW50dWNreSI6IHtoOiAiU2VsbGluZyBhbiBJbmhlcml0ZWQgSG91c2Ugb3IgYSBIb3VzZSBpbiBQcm9iYXRlIGluIEtlbnR1Y2t5IiwgZDogIkluaGVyaXRlZCBhIGhvdXNlIGluIExvdWlzdmlsbGU/IFdobyBjYW4gc2VsbCBpdCwgcHJvYmF0ZSB0aW1lbGluZXMsIEtlbnR1Y2t5IGluaGVyaXRhbmNlIHRheCwgdGF4ZXMgb24gdGhlIHNhbGUsIGFuZCB5b3VyIG9wdGlvbnMsIGV4cGxhaW5lZCBwbGFpbmx5LiIsIGs6IFsic2VsbCBpbmhlcml0ZWQgaG91c2Uga2VudHVja3kiLCJwcm9iYXRlIGhvdXNlIHNhbGUgbG91aXN2aWxsZSIsInNlbGxpbmcgYSBob3VzZSBpbiBwcm9iYXRlIGtlbnR1Y2t5Iiwia2VudHVja3kgaW5oZXJpdGFuY2UgdGF4IGhvdXNlIiwiZXhlY3V0b3Igc2VsbCBob3VzZSBrZW50dWNreSJdfSwKIi9zZWxsaW5nLWEtaG91c2UtZHVyaW5nLWRpdm9yY2Uta2VudHVja3kiOiB7aDogIlNlbGxpbmcgYSBIb3VzZSBEdXJpbmcgb3IgQWZ0ZXIgYSBEaXZvcmNlIGluIEtlbnR1Y2t5IiwgZDogIkhvdyB0aGUgaG91c2UgZ2V0cyBkaXZpZGVkIGluIGEgS2VudHVja3kgZGl2b3JjZSwgc2VsbCB2cy4gYnV5b3V0LCB0YXhlcyBvbiB0aGUgc2FsZSwgYW5kIGhvdyB0byBzZWxsIHdpdGhvdXQgbWFraW5nIGEgaGFyZCB0aW1lIGhhcmRlci4iLCBrOiBbInNlbGxpbmcgaG91c2UgZHVyaW5nIGRpdm9yY2Uga2VudHVja3kiLCJkaXZvcmNlIGhvdXNlIGxvdWlzdmlsbGUiLCJ3aG8gZ2V0cyB0aGUgaG91c2UgaW4gYSBrZW50dWNreSBkaXZvcmNlIiwiYnV5b3V0IHNwb3VzZSBob3VzZSBrZW50dWNreSIsInNlbGwgbWFyaXRhbCBob21lIGtlbnR1Y2t5Il19LAoiL3NlbGxpbmctYS1ob3VzZS13aXRoLWZvdW5kYXRpb24tcHJvYmxlbXMtbG91aXN2aWxsZSI6IHtoOiAiU2VsbGluZyBhIEhvdXNlIFdpdGggRm91bmRhdGlvbiBQcm9ibGVtcyBpbiBMb3Vpc3ZpbGxlIiwgZDogIkNyYWNrcywgc2xvcGluZyBmbG9vcnMsIGEgd2V0IGJhc2VtZW50PyBIb3cgdG8gc2VsbCBhIExvdWlzdmlsbGUgaG91c2Ugd2l0aCBmb3VuZGF0aW9uIGlzc3VlczogZGlzY2xvc3VyZSwgcmVwYWlyIHZzLiBhcy1pcywgYW5kIHdoYXQgYnV5ZXJzIHdpbGwgcGF5LiIsIGs6IFsic2VsbCBob3VzZSBmb3VuZGF0aW9uIHByb2JsZW1zIGxvdWlzdmlsbGUiLCJmb3VuZGF0aW9uIGlzc3VlcyBzZWxsaW5nIGhvdXNlIGtlbnR1Y2t5Iiwic2VsbCBob3VzZSB3aXRoIGNyYWNrZWQgZm91bmRhdGlvbiIsImZvdW5kYXRpb24gcmVwYWlyIGJlZm9yZSBzZWxsaW5nIiwiYXMgaXMgZm91bmRhdGlvbiBob3VzZSBsb3Vpc3ZpbGxlIl19LAoiL3NlbGxpbmctYS1ob3VzZS13aXRoLW1vbGQtb3Itd2F0ZXItZGFtYWdlLWtlbnR1Y2t5Ijoge2g6ICJTZWxsaW5nIGEgSG91c2UgV2l0aCBNb2xkIG9yIFdhdGVyIERhbWFnZSBpbiBLZW50dWNreSIsIGQ6ICJMZWFreSBiYXNlbWVudCwgb2xkIGZsb29kLCBtb2xkIGJlaGluZCB0aGUgZHJ5d2FsbD8gSG93IHRvIHNlbGwgYSBLZW50dWNreSBob3VzZSB3aXRoIHdhdGVyIG9yIG1vbGQgcHJvYmxlbXM6IGRpc2Nsb3N1cmUsIGNsZWFudXAsIGluc3VyYW5jZSwgYW5kIG9wdGlvbnMuIiwgazogWyJzZWxsIGhvdXNlIHdpdGggbW9sZCBrZW50dWNreSIsInNlbGxpbmcgaG91c2Ugd2F0ZXIgZGFtYWdlIGxvdWlzdmlsbGUiLCJtb2xkIGRpc2Nsb3N1cmUga2VudHVja3kiLCJzZWxsIGhvdXNlIHdldCBiYXNlbWVudCBsb3Vpc3ZpbGxlIiwibW9sZCByZW1lZGlhdGlvbiBiZWZvcmUgc2VsbGluZyJdfSwKIi9zZWxsaW5nLWEtaG91c2Utd2l0aC1jb2RlLXZpb2xhdGlvbnMtbG91aXN2aWxsZSI6IHtoOiAiU2VsbGluZyBhIEhvdXNlIFdpdGggQ29kZSBWaW9sYXRpb25zIG9yIFVucGVybWl0dGVkIFdvcmsgaW4gTG91aXN2aWxsZSIsIGQ6ICJPcGVuIGNvZGUgdmlvbGF0aW9ucywgTWV0cm8gZmluZXMsIG9yIGEgYmFzZW1lbnQgZmluaXNoZWQgd2l0aG91dCBwZXJtaXRzPyBIb3cgdG8gc2VsbCBhIExvdWlzdmlsbGUgaG91c2Ugd2l0aCBjb2RlIHByb2JsZW1zIG9yIHVucGVybWl0dGVkIHdvcmsuIiwgazogWyJzZWxsIGhvdXNlIGNvZGUgdmlvbGF0aW9ucyBsb3Vpc3ZpbGxlIiwidW5wZXJtaXR0ZWQgd29yayBzZWxsaW5nIGhvdXNlIGtlbnR1Y2t5IiwibG91aXN2aWxsZSBjb2RlIGVuZm9yY2VtZW50IGZpbmVzIGhvdXNlIHNhbGUiLCJzZWxsIGhvdXNlIHdpdGggb3BlbiBwZXJtaXRzIGxvdWlzdmlsbGUiLCJjb2RlIGxpZW5zIGxvdWlzdmlsbGUiXX0sCiIvYmVoaW5kLW9uLXByb3BlcnR5LXRheGVzLWxvdWlzdmlsbGUiOiB7aDogIkJlaGluZCBvbiBQcm9wZXJ0eSBUYXhlcyBpbiBMb3Vpc3ZpbGxlPyBIZXJlJ3MgV2hhdCBIYXBwZW5zIGFuZCBXaGF0IFlvdSBDYW4gRG8iLCBkOiAiQmVoaW5kIG9uIHByb3BlcnR5IHRheGVzIGluIEplZmZlcnNvbiBDb3VudHk/IEhvdyBkZWxpbnF1ZW50IHRheGVzIGFuZCB0YXggY2VydGlmaWNhdGVzIHdvcmsgaW4gS2VudHVja3ksIHdoYXQgaXQgY29zdHMsIGFuZCBob3cgc2VsbGluZyBjYW4gc29sdmUgaXQuIiwgazogWyJiZWhpbmQgb24gcHJvcGVydHkgdGF4ZXMgbG91aXN2aWxsZSIsImRlbGlucXVlbnQgcHJvcGVydHkgdGF4ZXMgamVmZmVyc29uIGNvdW50eSBreSIsImtlbnR1Y2t5IGNlcnRpZmljYXRlIG9mIGRlbGlucXVlbmN5Iiwic2VsbCBob3VzZSBvd2UgYmFjayB0YXhlcyBrZW50dWNreSIsInRheCBsaWVuIGhvdXNlIGxvdWlzdmlsbGUiXX0sCiIvc2VsbGluZy1hLWhvdXNlLXdpdGgtdGVuYW50cy1rZW50dWNreSI6IHtoOiAiU2VsbGluZyBhIEhvdXNlIFdpdGggVGVuYW50cyBpbiBJdCBpbiBLZW50dWNreSIsIGQ6ICJTZWxsaW5nIGEgTG91aXN2aWxsZSByZW50YWwgd2l0aCB0ZW5hbnRzIHN0aWxsIGxpdmluZyB0aGVyZT8gTGVhc2VzLCBkZXBvc2l0cywgc2hvd2luZ3MsIHByb2JsZW0gdGVuYW50cywgY2FzaCBmb3Iga2V5cywgYW5kIHlvdXIgb3B0aW9ucywgZXhwbGFpbmVkIHBsYWlubHkuIiwgazogWyJzZWxsIGhvdXNlIHdpdGggdGVuYW50cyBrZW50dWNreSIsInNlbGxpbmcgcmVudGFsIHByb3BlcnR5IHdpdGggdGVuYW50cyBsb3Vpc3ZpbGxlIiwiY2FzaCBmb3Iga2V5cyBsb3Vpc3ZpbGxlIiwic2VsbCBob3VzZSB3aXRoIGJhZCB0ZW5hbnRzIiwidGVuYW50IG9jY3VwaWVkIHByb3BlcnR5IHNhbGUga2VudHVja3kiXX0sCiIvY28tb3duZXJzLWRpc2FncmVlLXNlbGxpbmctaG91c2Uta2VudHVja3ktcGFydGl0aW9uIjoge2g6ICJXaGVuIENvLU93bmVycyBDYW4ndCBBZ3JlZSBvbiBTZWxsaW5nIGEgSG91c2UgaW4gS2VudHVja3kiLCBkOiAiU2libGluZ3MsIGV4ZXMsIG9yIHBhcnRuZXJzIHdobyBvd24gYSBob3VzZSB0b2dldGhlciBhbmQgY2FuJ3QgYWdyZWU/IEJ1eW91dHMsIG1lZGlhdGlvbiwgYW5kIGhvdyBhIEtlbnR1Y2t5IHBhcnRpdGlvbiBhY3Rpb24gd29ya3MsIGV4cGxhaW5lZCBwbGFpbmx5LiIsIGs6IFsiY28gb3duZXIgd29udCBzZWxsIGhvdXNlIGtlbnR1Y2t5IiwicGFydGl0aW9uIGFjdGlvbiBrZW50dWNreSIsImZvcmNlIHNhbGUgb2Ygam9pbnRseSBvd25lZCBwcm9wZXJ0eSBrZW50dWNreSIsInNpYmxpbmdzIGRpc2FncmVlIHNlbGxpbmcgaW5oZXJpdGVkIGhvdXNlIiwiYnV5IG91dCBjbyBvd25lciBob3VzZSBsb3Vpc3ZpbGxlIl19LAoiL3NlbGxpbmctYS1ob2FyZGVyLWhvdXNlLWxvdWlzdmlsbGUiOiB7aDogIlNlbGxpbmcgYSBIb2FyZGVyIEhvdXNlIG9yIGEgSG91c2UgRnVsbCBvZiBTdHVmZiBpbiBMb3Vpc3ZpbGxlIiwgZDogIkEgaG91c2UgcGFja2VkIHdpdGggYmVsb25naW5ncywgZnJvbSB5ZWFycyBvZiBjb2xsZWN0aW5nIG9yIGEgbG92ZWQgb25lJ3MgaG9hcmRpbmc/IEhvdyB0byBzZWxsIGl0IHdpdGggZGlnbml0eTogY2xlYW5vdXQsIGFzLWlzIHNhbGVzLCBhbmQgeW91ciBvcHRpb25zLiIsIGs6IFsic2VsbCBob2FyZGVyIGhvdXNlIGxvdWlzdmlsbGUiLCJzZWxsaW5nIGEgaG91c2UgZnVsbCBvZiBzdHVmZiIsImhvYXJkZXIgaG91c2UgY2xlYW5vdXQgbG91aXN2aWxsZSIsInNlbGwgaG91c2UgYXMgaXMgd2l0aCBjb250ZW50cyBrZW50dWNreSIsImVzdGF0ZSBjbGVhbm91dCBiZWZvcmUgc2VsbGluZyJdfSwKIi9zZWxsaW5nLXlvdXItaG91c2UtZm9yLWEtam9iLXJlbG9jYXRpb24tbG91aXN2aWxsZSI6IHtoOiAiU2VsbGluZyBZb3VyIEhvdXNlIGZvciBhIEpvYiBSZWxvY2F0aW9uIG9yIE1pbGl0YXJ5IE1vdmUgaW4gTG91aXN2aWxsZSIsIGQ6ICJSZWxvY2F0aW5nIGZvciB3b3JrIG9yIFBDUyBvcmRlcnMgZnJvbSBGb3J0IEtub3g/IEhvdyB0byBzZWxsIHlvdXIgTG91aXN2aWxsZS1hcmVhIGhvdXNlIG9uIGEgZGVhZGxpbmUsIHJlbG9jYXRpb24gcGFja2FnZXMsIHJlbnRpbmcgdnMuIHNlbGxpbmcsIGFuZCB0YXhlcy4iLCBrOiBbInNlbGxpbmcgaG91c2Ugam9iIHJlbG9jYXRpb24gbG91aXN2aWxsZSIsInBjcyBmb3J0IGtub3ggc2VsbGluZyBob3VzZSIsImNvcnBvcmF0ZSByZWxvY2F0aW9uIGhvbWUgc2FsZSBsb3Vpc3ZpbGxlIiwicmVsb2NhdGlvbiBidXlvdXQgZ3VhcmFudGVlZCBvZmZlciIsInNlbGwgaG91c2UgYmVmb3JlIG1vdmluZyBvdXQgb2Ygc3RhdGUga2VudHVja3kiXX0sCiIvbWVkaWNhbC1kZWJ0LWhvc3BpdGFsLWxpZW4tc2VsbGluZy1ob3VzZS1rZW50dWNreSI6IHtoOiAiQ2FuIE1lZGljYWwgQmlsbHMgb3IgYSBIb3NwaXRhbCBMaWVuIFN0b3AgWW91IEZyb20gU2VsbGluZyBZb3VyIEhvdXNlIGluIEtlbnR1Y2t5PyIsIGQ6ICJPd2UgaG9zcGl0YWwgb3IgbWVkaWNhbCBiaWxscz8gV2hlbiBtZWRpY2FsIGRlYnQgY2FuIGFuZCBjYW4ndCBhdHRhY2ggdG8geW91ciBLZW50dWNreSBob3VzZSwganVkZ21lbnQgbGllbnMsIE1lZGljYWlkIHJlY292ZXJ5LCBhbmQgaG93IGEgc2FsZSBoYW5kbGVzIGl0LiIsIGs6IFsibWVkaWNhbCBsaWVuIG9uIGhvdXNlIGtlbnR1Y2t5IiwiaG9zcGl0YWwgbGllbiBzZWxsaW5nIGhvdXNlIiwibWVkaWNhbCBkZWJ0IHNlbGwgaG91c2Uga2VudHVja3kiLCJqdWRnbWVudCBsaWVuIGhvdXNlIGtlbnR1Y2t5IiwibWVkaWNhaWQgZXN0YXRlIHJlY292ZXJ5IGtlbnR1Y2t5IGhvdXNlIl19LAoiL3F1aXRjbGFpbS1kZWVkLWtlbnR1Y2t5Ijoge2g6ICJRdWl0Y2xhaW0gRGVlZHMgaW4gS2VudHVja3k6IENhbiBZb3UgU2VsbCBhIEhvdXNlIFdpdGggT25lPyIsIGQ6ICJHb3QgeW91ciBob3VzZSB0aHJvdWdoIGEgcXVpdGNsYWltIGRlZWQsIG9yIHRoaW5raW5nIG9mIHVzaW5nIG9uZT8gV2hhdCBhIHF1aXRjbGFpbSBkb2VzIGluIEtlbnR1Y2t5LCBpdHMgcmlza3MsIGFuZCBob3cgaXQgYWZmZWN0cyBzZWxsaW5nIHRoZSBob3VzZSBsYXRlci4iLCBrOiBbInF1aXRjbGFpbSBkZWVkIGtlbnR1Y2t5Iiwic2VsbCBob3VzZSBxdWl0Y2xhaW0gZGVlZCIsInF1aXRjbGFpbSB2cyB3YXJyYW50eSBkZWVkIGtlbnR1Y2t5IiwicXVpdGNsYWltIGRlZWQgZGl2b3JjZSBrZW50dWNreSIsInF1aXRjbGFpbSBkZWVkIGZhbWlseSB0cmFuc2ZlciBsb3Vpc3ZpbGxlIl19LAoiL3NlbGxpbmctYS1ob3VzZS13aXRoLWEtcmV2ZXJzZS1tb3J0Z2FnZS1sb3Vpc3ZpbGxlIjoge2g6ICJTZWxsaW5nIGEgSG91c2UgV2l0aCBhIFJldmVyc2UgTW9ydGdhZ2UgaW4gTG91aXN2aWxsZSIsIGQ6ICJTZWxsaW5nIGEgaG9tZSB3aXRoIGEgcmV2ZXJzZSBtb3J0Z2FnZSwgb3IgaW5oZXJpdGVkIG9uZSB3aXRoIGEgcmV2ZXJzZSBtb3J0Z2FnZT8gSG93IHBheW9mZiB3b3Jrcywgd2hhdCBoZWlycyBvd2UsIGRlYWRsaW5lcywgYW5kIHlvdXIgb3B0aW9ucyBpbiBMb3Vpc3ZpbGxlLiIsIGs6IFsic2VsbCBob3VzZSB3aXRoIHJldmVyc2UgbW9ydGdhZ2UiLCJpbmhlcml0ZWQgaG91c2UgcmV2ZXJzZSBtb3J0Z2FnZSBrZW50dWNreSIsImhlaXJzIHJldmVyc2UgbW9ydGdhZ2UgOTUgcGVyY2VudCBydWxlIiwicmV2ZXJzZSBtb3J0Z2FnZSBwYXlvZmYgc2VsbGluZyBob3VzZSIsImhlY20gaG91c2Ugc2FsZSBsb3Vpc3ZpbGxlIl19LAoiL3NlbGxpbmctYS1ob3VzZS1kdXJpbmctYS1sYXdzdWl0LWtlbnR1Y2t5Ijoge2g6ICJDYW4gWW91IFNlbGwgYSBIb3VzZSBEdXJpbmcgYSBQZW5kaW5nIExhd3N1aXQgaW4gS2VudHVja3k/IiwgZDogIkJlaW5nIHN1ZWQsIG9yIGluIGEgbGF3c3VpdCBvdmVyIHRoZSBwcm9wZXJ0eSBpdHNlbGY/IFdoZW4geW91IGNhbiBzZWxsIGEgS2VudHVja3kgaG91c2UgZHVyaW5nIGEgbGF3c3VpdCwgbGlzIHBlbmRlbnMsIGp1ZGdtZW50IGxpZW5zLCBhbmQgd2hhdCB0byBhdm9pZC4iLCBrOiBbInNlbGwgaG91c2UgZHVyaW5nIGxhd3N1aXQga2VudHVja3kiLCJsaXMgcGVuZGVucyBrZW50dWNreSIsImNhbiBpIHNlbGwgbXkgaG91c2UgaWYgaSBhbSBiZWluZyBzdWVkIiwianVkZ21lbnQgbGllbiBzZWxsaW5nIGhvdXNlIGtlbnR1Y2t5Iiwic2VsbCBwcm9wZXJ0eSBwZW5kaW5nIGxpdGlnYXRpb24iXX0sCiIvbW92ZS1vdXQtYWZ0ZXItZm9yZWNsb3N1cmUtc2FsZS1rZW50dWNreSI6IHtoOiAiSG93IExvbmcgRG8gWW91IEhhdmUgdG8gTW92ZSBPdXQgQWZ0ZXIgYSBGb3JlY2xvc3VyZSBTYWxlIGluIEtlbnR1Y2t5PyIsIGQ6ICJZb3VyIGhvdXNlIHNvbGQgYXQgYSBLZW50dWNreSBmb3JlY2xvc3VyZSBhdWN0aW9uLiBOb3cgd2hhdD8gQ291cnQgY29uZmlybWF0aW9uLCB0aGUgcmVkZW1wdGlvbiByaWdodCwgd3JpdHMgb2YgcG9zc2Vzc2lvbiwgdGVuYW50cycgcmlnaHRzLCBhbmQgb3B0aW9ucy4iLCBrOiBbImhvdyBsb25nIGFmdGVyIGZvcmVjbG9zdXJlIHNhbGUgdG8gbW92ZSBvdXQga2VudHVja3kiLCJrZW50dWNreSBmb3JlY2xvc3VyZSByZWRlbXB0aW9uIHBlcmlvZCIsIm1hc3RlciBjb21taXNzaW9uZXIgc2FsZSBsb3Vpc3ZpbGxlIiwid3JpdCBvZiBwb3NzZXNzaW9uIGtlbnR1Y2t5IGZvcmVjbG9zdXJlIiwidGVuYW50IHJpZ2h0cyBhZnRlciBmb3JlY2xvc3VyZSBrZW50dWNreSJdfSwKIi93aG8tcGF5cy10YXhlcy1zZWxsaW5nLWhvdXNlLWtlbnR1Y2t5Ijoge2g6ICJXaG8gUGF5cyBUYXhlcyBXaGVuIFlvdSBTZWxsIGEgSG91c2UgaW4gS2VudHVja3k/IiwgZDogIlRyYW5zZmVyIHRheCwgcHJvcGVydHkgdGF4IHByb3JhdGlvbnMsIGFuZCBjYXBpdGFsIGdhaW5zIG9uIGEgS2VudHVja3kgaG9tZSBzYWxlOiB3aG8gcGF5cyB3aGF0LCB3aGVuLCBhbmQgdGhlIGV4Y2x1c2lvbnMgdGhhdCBjYW4gc2F2ZSB5b3UgdGhvdXNhbmRzLiIsIGs6IFsid2hvIHBheXMgdHJhbnNmZXIgdGF4IGtlbnR1Y2t5IiwidGF4ZXMgd2hlbiBzZWxsaW5nIGEgaG91c2Uga2VudHVja3kiLCJjYXBpdGFsIGdhaW5zIHRheCBob21lIHNhbGUga2VudHVja3kiLCJwcm9wZXJ0eSB0YXggcHJvcmF0aW9uIGNsb3Npbmcga2VudHVja3kiLCJrZW50dWNreSBkZWVkIHRheCBzZWxsZXIiXX0sCiIvZG8teW91LW5lZWQtYS1sYXd5ZXItdG8tc2VsbC1hLWhvdXNlLWtlbnR1Y2t5Ijoge2g6ICJEbyBZb3UgTmVlZCBhIExhd3llciB0byBTZWxsIGEgSG91c2UgaW4gS2VudHVja3k/IiwgZDogIldobyBoYW5kbGVzIHRoZSBkZWVkLCB0aGUgY2xvc2luZywgYW5kIHRoZSBjb250cmFjdCB3aGVuIHlvdSBzZWxsIGEgS2VudHVja3kgaG91c2UsIGFuZCB0aGUgc2l0dWF0aW9ucyB3aGVyZSBoaXJpbmcgeW91ciBvd24gYXR0b3JuZXkgaXMgYSBtdXN0LiIsIGs6IFsiZG8gaSBuZWVkIGEgbGF3eWVyIHRvIHNlbGwgbXkgaG91c2UgaW4ga2VudHVja3kiLCJyZWFsIGVzdGF0ZSBhdHRvcm5leSBrZW50dWNreSBjbG9zaW5nIiwid2hvIHByZXBhcmVzIHRoZSBkZWVkIGtlbnR1Y2t5Iiwic2VsbGluZyBob3VzZSB3aXRob3V0IHJlYWx0b3Iga2VudHVja3kgbGF3eWVyIiwia2VudHVja3kgdGl0bGUgY29tcGFueSBjbG9zaW5nIl19LAoiL3NlbGwtbXktaG91c2Utc2hlbGJ5dmlsbGUta3kiOiB7aDogIlNlbGxpbmcgWW91ciBIb3VzZSBpbiBTaGVsYnl2aWxsZSwgS1k6IFdoYXQgSXQncyBXb3J0aCBhbmQgSG93IEZhc3QgSXQgU2VsbHMiLCBkOiAiU2VsbGluZyBhIGhvdXNlIGluIFNoZWxieXZpbGxlLCBLWT8gQ3VycmVudCBwcmljZXMsIGhvdyBmYXN0IGhvbWVzIGFyZSBzZWxsaW5nLCB3aG8ncyBidXlpbmcsIGFuZCBldmVyeSB3YXkgdG8gc2VsbCwgZnJvbSBsaXN0aW5nIHRvIGEgZmFzdCBhcy1pcyBzYWxlLiIsIGs6IFsic2VsbCBteSBob3VzZSBTaGVsYnl2aWxsZSBLWSIsIlNoZWxieXZpbGxlIEtZIGhvbWUgdmFsdWVzIiwiaG93IGZhc3QgZG8gaG9tZXMgc2VsbCBpbiBTaGVsYnl2aWxsZSIsInNlbGwgaG91c2UgYXMtaXMgU2hlbGJ5dmlsbGUiLCJTaGVsYnl2aWxsZSByZWFsIGVzdGF0ZSBhZ2VudCJdfSwKIi9zZWxsLW15LWhvdXNlLWVsaXphYmV0aHRvd24ta3kiOiB7aDogIlNlbGxpbmcgWW91ciBIb3VzZSBpbiBFbGl6YWJldGh0b3duLCBLWTogV2hhdCBJdCdzIFdvcnRoIGFuZCBIb3cgRmFzdCBJdCBTZWxscyIsIGQ6ICJTZWxsaW5nIGEgaG91c2UgaW4gRWxpemFiZXRodG93biwgS1k/IEN1cnJlbnQgcHJpY2VzLCBob3cgZmFzdCBob21lcyBhcmUgc2VsbGluZywgd2hvJ3MgYnV5aW5nIGluIEhhcmRpbiBDb3VudHksIGFuZCBldmVyeSB3YXkgdG8gc2VsbCwgZnJvbSBsaXN0aW5nIHRvIGFzLWlzLiIsIGs6IFsic2VsbCBteSBob3VzZSBFbGl6YWJldGh0b3duIEtZIiwiRWxpemFiZXRodG93biBLWSBob21lIHZhbHVlcyIsImhvdyBmYXN0IGRvIGhvbWVzIHNlbGwgaW4gRWxpemFiZXRodG93biIsInNlbGwgaG91c2UgYXMtaXMgRWxpemFiZXRodG93biIsIkVsaXphYmV0aHRvd24gcmVhbCBlc3RhdGUgYWdlbnQiXX0sCiIvc2VsbC1teS1ob3VzZS1yYWRjbGlmZi1mb3J0LWtub3gta3kiOiB7aDogIlNlbGxpbmcgWW91ciBIb3VzZSBpbiBSYWRjbGlmZiBvciBOZWFyIEZvcnQgS25veDogV2hhdCBJdCdzIFdvcnRoIGFuZCBIb3cgRmFzdCBJdCBTZWxscyIsIGQ6ICJTZWxsaW5nIGEgaG91c2UgaW4gUmFkY2xpZmYgb3IgbmVhciBGb3J0IEtub3g/IEN1cnJlbnQgcHJpY2VzLCBob3cgZmFzdCBob21lcyBzZWxsLCBQQ1MgdGltaW5nLCBWQSBidXllcnMsIHJlbnRpbmcgdnMuIHNlbGxpbmcsIGFuZCBldmVyeSB3YXkgdG8gc2VsbC4iLCBrOiBbInNlbGwgbXkgaG91c2UgUmFkY2xpZmYgS1kiLCJSYWRjbGlmZiBLWSBob21lIHZhbHVlcyIsImhvdyBmYXN0IGRvIGhvbWVzIHNlbGwgaW4gUmFkY2xpZmYiLCJzZWxsIGhvdXNlIGFzLWlzIFJhZGNsaWZmIiwiUmFkY2xpZmYgcmVhbCBlc3RhdGUgYWdlbnQiLCJzZWxsIGhvdXNlIG5lYXIgRm9ydCBLbm94Il19LAoiL3NlbGwtbXktaG91c2UtbGEtZ3JhbmdlLWt5Ijoge2g6ICJTZWxsaW5nIFlvdXIgSG91c2UgaW4gTGEgR3JhbmdlLCBLWTogV2hhdCBJdCdzIFdvcnRoIGFuZCBIb3cgRmFzdCBJdCBTZWxscyIsIGQ6ICJTZWxsaW5nIGEgaG91c2UgaW4gTGEgR3JhbmdlLCBLWT8gQ3VycmVudCBwcmljZXMsIGhvdyBmYXN0IGhvbWVzIGFyZSBzZWxsaW5nLCB3aG8ncyBidXlpbmcgaW4gT2xkaGFtIENvdW50eSwgYW5kIGV2ZXJ5IHdheSB0byBzZWxsLCBmcm9tIGxpc3RpbmcgdG8gYXMtaXMuIiwgazogWyJzZWxsIG15IGhvdXNlIExhIEdyYW5nZSBLWSIsIkxhIEdyYW5nZSBLWSBob21lIHZhbHVlcyIsImhvdyBmYXN0IGRvIGhvbWVzIHNlbGwgaW4gTGEgR3JhbmdlIiwic2VsbCBob3VzZSBhcy1pcyBMYSBHcmFuZ2UiLCJMYSBHcmFuZ2UgcmVhbCBlc3RhdGUgYWdlbnQiXX0sCiIvc2VsbC1teS1ob3VzZS1zaGVwaGVyZHN2aWxsZS1reSI6IHtoOiAiU2VsbGluZyBZb3VyIEhvdXNlIGluIFNoZXBoZXJkc3ZpbGxlLCBLWTogV2hhdCBJdCdzIFdvcnRoIGFuZCBIb3cgRmFzdCBJdCBTZWxscyIsIGQ6ICJTZWxsaW5nIGEgaG91c2UgaW4gU2hlcGhlcmRzdmlsbGUsIEtZPyBDdXJyZW50IHByaWNlcywgaG93IGZhc3QgaG9tZXMgYXJlIHNlbGxpbmcsIHdobydzIGJ1eWluZyBpbiBCdWxsaXR0IENvdW50eSwgYW5kIGV2ZXJ5IHdheSB0byBzZWxsLCBmcm9tIGxpc3RpbmcgdG8gYXMtaXMuIiwgazogWyJzZWxsIG15IGhvdXNlIFNoZXBoZXJkc3ZpbGxlIEtZIiwiU2hlcGhlcmRzdmlsbGUgS1kgaG9tZSB2YWx1ZXMiLCJob3cgZmFzdCBkbyBob21lcyBzZWxsIGluIFNoZXBoZXJkc3ZpbGxlIiwic2VsbCBob3VzZSBhcy1pcyBTaGVwaGVyZHN2aWxsZSIsIlNoZXBoZXJkc3ZpbGxlIHJlYWwgZXN0YXRlIGFnZW50Il19LAoiL3NlbGwtbXktaG91c2UtamVmZmVyc29udmlsbGUtaW4iOiB7aDogIlNlbGxpbmcgWW91ciBIb3VzZSBpbiBKZWZmZXJzb252aWxsZSwgSW5kaWFuYTogV2hhdCBJdCdzIFdvcnRoIGFuZCBIb3cgRmFzdCBJdCBTZWxscyIsIGQ6ICJTZWxsaW5nIGEgaG91c2UgaW4gSmVmZmVyc29udmlsbGUsIEluZGlhbmE/IEN1cnJlbnQgcHJpY2VzLCBob3cgZmFzdCBob21lcyBzZWxsLCBJbmRpYW5hIHRheGVzIGFuZCBkaXNjbG9zdXJlcywgYW5kIGV2ZXJ5IHdheSB0byBzZWxsLCBmcm9tIGxpc3RpbmcgdG8gYXMtaXMuIiwgazogWyJzZWxsIG15IGhvdXNlIEplZmZlcnNvbnZpbGxlIElOIiwiSmVmZmVyc29udmlsbGUgSU4gaG9tZSB2YWx1ZXMiLCJob3cgZmFzdCBkbyBob21lcyBzZWxsIGluIEplZmZlcnNvbnZpbGxlIiwic2VsbCBob3VzZSBhcy1pcyBKZWZmZXJzb252aWxsZSIsIkplZmZlcnNvbnZpbGxlIHJlYWwgZXN0YXRlIGFnZW50Il19LAoiL3NlbGwtbXktaG91c2UtbmV3LWFsYmFueS1pbiI6IHtoOiAiU2VsbGluZyBZb3VyIEhvdXNlIGluIE5ldyBBbGJhbnksIEluZGlhbmE6IFdoYXQgSXQncyBXb3J0aCBhbmQgSG93IEZhc3QgSXQgU2VsbHMiLCBkOiAiU2VsbGluZyBhIGhvdXNlIGluIE5ldyBBbGJhbnksIEluZGlhbmE/IEN1cnJlbnQgcHJpY2VzLCBob3cgZmFzdCBob21lcyBzZWxsLCBJbmRpYW5hIHRheGVzIGFuZCBkaXNjbG9zdXJlcywgb2xkZXItaG9tZSB0aXBzLCBhbmQgZXZlcnkgd2F5IHRvIHNlbGwuIiwgazogWyJzZWxsIG15IGhvdXNlIE5ldyBBbGJhbnkgSU4iLCJOZXcgQWxiYW55IElOIGhvbWUgdmFsdWVzIiwiaG93IGZhc3QgZG8gaG9tZXMgc2VsbCBpbiBOZXcgQWxiYW55Iiwic2VsbCBob3VzZSBhcy1pcyBOZXcgQWxiYW55IiwiTmV3IEFsYmFueSByZWFsIGVzdGF0ZSBhZ2VudCJdfSwKIi8xMDMxLWV4Y2hhbmdlLWRlYWRsaW5lLWhlbHAta2VudHVja3kiOiB7aDogIlVwIEFnYWluc3QgYSAxMDMxIEV4Y2hhbmdlIERlYWRsaW5lIGluIEtlbnR1Y2t5PyBXaGF0IHRvIERvIFJpZ2h0IE5vdyIsIGQ6ICJEYXkgMzAgb2YgNDUgYW5kIG5vdGhpbmcgaWRlbnRpZmllZD8gV2hhdCB0byBkbyB3aGVuIHlvdXIgMTAzMSBleGNoYW5nZSBjbG9jayBpcyBydW5uaW5nIG91dCwgeW91ciBiYWNrdXAgb3B0aW9ucywgYW5kIHdoYXQgaGFwcGVucyBpZiB0aGUgZXhjaGFuZ2UgZmFpbHMuIiwgazogWyIxMDMxIGV4Y2hhbmdlIGRlYWRsaW5lIEtlbnR1Y2t5IiwiMTAzMSBleGNoYW5nZSA0NS1kYXkgaWRlbnRpZmljYXRpb24iLCIxMDMxIGV4Y2hhbmdlIDE4MC1kYXkgZGVhZGxpbmUiLCJmYWlsZWQgMTAzMSBleGNoYW5nZSIsIkxvdWlzdmlsbGUgMTAzMSByZXBsYWNlbWVudCBwcm9wZXJ0eSJdfSwKIi9zZWxsaW5nLWEtdmFjYW50LXN0cmlwLWNlbnRlci1sb3Vpc3ZpbGxlIjoge2g6ICJTZWxsaW5nIGEgVmFjYW50IFN0cmlwIENlbnRlciBvciBSZXRhaWwgQnVpbGRpbmcgaW4gTG91aXN2aWxsZSIsIGQ6ICJFbXB0eSBzdG9yZWZyb250cywgYSBkYXJrIGFuY2hvciwgb3IgYSBjZW50ZXIgdGhhdCdzIGhhbGYgbGVhc2VkPyBIb3cgdG8gc2VsbCBhIHZhY2FudCBvciBzdHJ1Z2dsaW5nIExvdWlzdmlsbGUgcmV0YWlsIHByb3BlcnR5LCBhbmQgd2hvJ3MgYnV5aW5nIHRoZW0uIiwgazogWyJzZWxsIHZhY2FudCBzdHJpcCBjZW50ZXIgTG91aXN2aWxsZSIsInNlbGwgcmV0YWlsIGJ1aWxkaW5nIExvdWlzdmlsbGUiLCJ2YWNhbnQgcmV0YWlsIHByb3BlcnR5IGZvciBzYWxlIEtlbnR1Y2t5Iiwic3RyaXAgY2VudGVyIHZhbHVhdGlvbiIsIldpbm5lciBDb21tZXJjaWFsIl19LAoiL29mZmljZS1idWlsZGluZy1sb2FuLW1hdHVyaXR5LW9wdGlvbnMtbG91aXN2aWxsZSI6IHtoOiAiT2ZmaWNlIEJ1aWxkaW5nIExvYW4gQ29taW5nIER1ZSBpbiBMb3Vpc3ZpbGxlPyBZb3VyIE9wdGlvbnMgQmVmb3JlIE1hdHVyaXR5IiwgZDogIk9mZmljZSBidWlsZGluZyBsb2FuIG1hdHVyaW5nIGFuZCB0aGUgbnVtYmVycyBkb24ndCByZWZpbmFuY2U/IEV4dGVuc2lvbnMsIHJlY2FwaXRhbGl6YXRpb24sIGRpc2NvdW50ZWQgcGF5b2ZmcywgYW5kIHNlbGxpbmcgYmVmb3JlIGRlZmF1bHQsIGV4cGxhaW5lZCBwbGFpbmx5LiIsIGs6IFsib2ZmaWNlIGJ1aWxkaW5nIGxvYW4gbWF0dXJpdHkgTG91aXN2aWxsZSIsIm9mZmljZSBidWlsZGluZyByZWZpbmFuY2Ugb3B0aW9ucyIsImNvbW1lcmNpYWwgbG9hbiBtYXR1cml0eSBLZW50dWNreSIsInNlbGwgb2ZmaWNlIGJ1aWxkaW5nIExvdWlzdmlsbGUiLCJXaW5uZXIgQ29tbWVyY2lhbCJdfSwKIi9zZWxsaW5nLWNvbW1lcmNpYWwtcHJvcGVydHktaW4tYW4tZXN0YXRlLWtlbnR1Y2t5Ijoge2g6ICJTZWxsaW5nIENvbW1lcmNpYWwgUHJvcGVydHkgSGVsZCBpbiBhbiBFc3RhdGUgaW4gS2VudHVja3kiLCBkOiAiSW5oZXJpdGVkIGEgYnVpbGRpbmcsIGEgcmVudGFsIHBvcnRmb2xpbywgb3IgbGFuZCBpbiBLZW50dWNreT8gV2hvIGNhbiBzZWxsIGl0LCBrZWVwaW5nIHRlbmFudHMgYW5kIGxlYXNlcyBpbiBvcmRlciwgdGF4ZXMsIGFuZCB5b3VyIG9wdGlvbnMsIGV4cGxhaW5lZCBwbGFpbmx5LiIsIGs6IFsic2VsbCBjb21tZXJjaWFsIHByb3BlcnR5IGluIGFuIGVzdGF0ZSBLZW50dWNreSIsImluaGVyaXRlZCBjb21tZXJjaWFsIHByb3BlcnR5IEtlbnR1Y2t5IiwicHJvYmF0ZSBjb21tZXJjaWFsIHJlYWwgZXN0YXRlIExvdWlzdmlsbGUiLCJlc3RhdGUgY29tbWVyY2lhbCBwcm9wZXJ0eSBzYWxlIiwiV2lubmVyIENvbW1lcmNpYWwiXX0sCiIvb3V0LW9mLXN0YXRlLXJlYWwtZXN0YXRlLWludmVzdGluZy1sb3Vpc3ZpbGxlIjoge2g6ICJJbnZlc3RpbmcgaW4gTG91aXN2aWxsZSBSZWFsIEVzdGF0ZSBGcm9tIE91dCBvZiBTdGF0ZTogVGhlIDIwMjYgUGxheWJvb2siLCBkOiAiSG93IG91dC1vZi1zdGF0ZSBpbnZlc3RvcnMgYnV5IHJlbnRhbHMsIG11bHRpZmFtaWx5IGFuZCBjb21tZXJjaWFsIHByb3BlcnR5IGluIExvdWlzdmlsbGUsIExleGluZ3RvbiBhbmQgU291dGhlcm4gSW5kaWFuYSB3aXRob3V0IGV2ZXIgbGl2aW5nIGhlcmUuIiwgazogWyJvdXQtb2Ytc3RhdGUgcmVhbCBlc3RhdGUgaW52ZXN0aW5nIiwgImxvbmctZGlzdGFuY2UgcmVhbCBlc3RhdGUgaW52ZXN0aW5nIExvdWlzdmlsbGUiLCAiYnV5IHJlbnRhbCBwcm9wZXJ0eSBpbiBMb3Vpc3ZpbGxlIGZyb20gb3V0IG9mIHN0YXRlIiwgInJlbW90ZSByZWFsIGVzdGF0ZSBpbnZlc3RvciBLZW50dWNreSIsICJMb3Vpc3ZpbGxlIGludmVzdG1lbnQgcHJvcGVydHkiXX0sCiIvY2FsaWZvcm5pYS1pbnZlc3RvcnMtYnV5aW5nLWtlbnR1Y2t5LXJlYWwtZXN0YXRlIjoge2g6ICJDYWxpZm9ybmlhIEludmVzdG9yczogV2h5IFlvdXIgTmV4dCBSZW50YWwgQmVsb25ncyBpbiBLZW50dWNreSBvciBTb3V0aGVybiBJbmRpYW5hIiwgZDogIldoeSBDYWxpZm9ybmlhIGludmVzdG9ycyBidXkgcmVudGFscyBpbiBMb3Vpc3ZpbGxlIGFuZCBTb3V0aGVybiBJbmRpYW5hOiBwcmljZXMsIHJlbnQgcnVsZXMsIHRoZSBDYWxpZm9ybmlhIDEwMzEgY2xhd2JhY2sgKEZUQiAzODQwKSwgYW5kIGhvdyB0byBidXkgcmVtb3RlbHkuIiwgazogWyJDYWxpZm9ybmlhIGludmVzdG9ycyBidXlpbmcgb3V0IG9mIHN0YXRlIiwgIjEwMzEgZXhjaGFuZ2UgQ2FsaWZvcm5pYSB0byBLZW50dWNreSIsICJGVEIgMzg0MCBjbGF3YmFjayIsICJDYWxpZm9ybmlhIHJlbnRhbCBwcm9wZXJ0eSBhbHRlcm5hdGl2ZSIsICJMb3Vpc3ZpbGxlIHJlbnRhbCBwcm9wZXJ0eSJdfSwKIi90ZXhhcy1pbnZlc3RvcnMtYnV5aW5nLWtlbnR1Y2t5LWluZGlhbmEtcmVhbC1lc3RhdGUiOiB7aDogIlRleGFzIEludmVzdG9yczogSG93IExvdWlzdmlsbGUgYW5kIFNvdXRoZXJuIEluZGlhbmEgU3RhY2sgVXAgQWdhaW5zdCBUZXhhcyBSZW50YWxzIiwgZDogIlRleGFzIGludmVzdG9yczogY29tcGFyZSBMb3Vpc3ZpbGxlIGFuZCBTb3V0aGVybiBJbmRpYW5hIHRvIFRleGFzIG9uIHByaWNlcywgcHJvcGVydHkgdGF4ZXMsIGluY29tZSB0YXggYW5kIHJlbnQgcnVsZXMsIGFuZCBzZWUgaG93IHRvIGJ1eSBoZXJlIHJlbW90ZWx5LiIsIGs6IFsiVGV4YXMgcmVhbCBlc3RhdGUgaW52ZXN0b3JzIiwgIlRleGFzIHByb3BlcnR5IHRheCB2cyBLZW50dWNreSIsICJvdXQtb2Ytc3RhdGUgcmVudGFsIHByb3BlcnR5IiwgIlNvdXRoZXJuIEluZGlhbmEgcmVudGFsIHByb3BlcnR5IiwgIkxvdWlzdmlsbGUgaW52ZXN0bWVudCBwcm9wZXJ0eSJdfSwKIi9pbnRlcm5hdGlvbmFsLWludmVzdG9ycy1idXlpbmctcmVhbC1lc3RhdGUta2VudHVja3ktaW5kaWFuYSI6IHtoOiAiSW50ZXJuYXRpb25hbCBJbnZlc3RvcnM6IEhvdyB0byBCdXkgUmVhbCBFc3RhdGUgaW4gTG91aXN2aWxsZSwgS2VudHVja3kgYW5kIFNvdXRoZXJuIEluZGlhbmEiLCBkOiAiU3RlcC1ieS1zdGVwIGd1aWRlIGZvciBmb3JlaWduIGludmVzdG9ycyBidXlpbmcgcmVudGFscywgbXVsdGlmYW1pbHkgb3IgY29tbWVyY2lhbCBwcm9wZXJ0eSBpbiBMb3Vpc3ZpbGxlIGFuZCBTb3V0aGVybiBJbmRpYW5hOiBlbnRpdGllcywgYmFua3MsIHdpcmVzLCB0YXhlcy4iLCBrOiBbImludGVybmF0aW9uYWwgcmVhbCBlc3RhdGUgaW52ZXN0b3JzIiwgImZvcmVpZ24gaW52ZXN0b3JzIGJ1eWluZyBVUyByZWFsIGVzdGF0ZSIsICJidXlpbmcgcHJvcGVydHkgaW4gS2VudHVja3kgYXMgYSBmb3JlaWduZXIiLCAiZm9yZWlnbiBidXllciBMb3Vpc3ZpbGxlIiwgIlVTIHJlYWwgZXN0YXRlIGZvciBub24tcmVzaWRlbnRzIl19LAoiL2ZvcmVpZ24tb3duZXJzaGlwLXJlYWwtZXN0YXRlLWxhd3Mta2VudHVja3ktaW5kaWFuYSI6IHtoOiAiQ2FuIEZvcmVpZ25lcnMgQnV5IFByb3BlcnR5IGluIEtlbnR1Y2t5IGFuZCBJbmRpYW5hPyBUaGUgMjAyNiBSdWxlcyIsIGQ6ICJLZW50dWNreSBIQiAzMTUsIEluZGlhbmEgU0VBIDI1NiBhbmQgZmVkZXJhbCBydWxlcyBvbiBmb3JlaWduIG93bmVyc2hpcCBvZiByZWFsIGVzdGF0ZSwgaW4gcGxhaW4gRW5nbGlzaDogd2hvIGNhbiBidXksIHdobyBjYW4ndCwgYW5kIHdoYXQgZnVuZHMgc2hvdWxkIGNoZWNrLiIsIGs6IFsiY2FuIGZvcmVpZ25lcnMgYnV5IHByb3BlcnR5IGluIEtlbnR1Y2t5IiwgIkluZGlhbmEgU0VBIDI1NiBmb3JlaWduIG93bmVyc2hpcCIsICJLZW50dWNreSBIQiAzMTUgYWdyaWN1bHR1cmFsIGxhbmQiLCAiZm9yZWlnbiBhZHZlcnNhcnkgcmVhbCBlc3RhdGUgbGF3IiwgIkNGSVVTIHJlYWwgZXN0YXRlIG1pbGl0YXJ5IGluc3RhbGxhdGlvbnMiXX0sCiIvZmlycHRhLWZvcmVpZ24taW52ZXN0b3ItdGF4ZXMta2VudHVja3kiOiB7aDogIkZJUlBUQSwgSVRJTnMgYW5kIFVTIFRheGVzIGZvciBGb3JlaWduIFJlYWwgRXN0YXRlIEludmVzdG9ycyBpbiBLZW50dWNreSBhbmQgSW5kaWFuYSIsIGQ6ICJQbGFpbi1FbmdsaXNoIGd1aWRlIHRvIEZJUlBUQSwgdGhlIDMwJSByZW50YWwgdGF4IGFuZCB0aGUgbmV0IGVsZWN0aW9uLCBJVElOcywgc3RhdGUgdGF4ZXMgYW5kIFVTIGVzdGF0ZSB0YXggZm9yIGZvcmVpZ24gaW52ZXN0b3JzIGluIEtlbnR1Y2t5IGFuZCBJbmRpYW5hLiIsIGs6IFsiRklSUFRBIHdpdGhob2xkaW5nIiwgImZvcmVpZ24gaW52ZXN0b3IgcmVudGFsIGluY29tZSB0YXgiLCAiSVRJTiBmb3IgcmVhbCBlc3RhdGUiLCAibm9ucmVzaWRlbnQgZXN0YXRlIHRheCBVUyBwcm9wZXJ0eSIsICJGb3JtIDU0NzIgZm9yZWlnbi1vd25lZCBMTEMiXX0sCiIvbGxjLWZvci1vdXQtb2Ytc3RhdGUtZm9yZWlnbi1yZWFsLWVzdGF0ZS1pbnZlc3RvcnMta2VudHVja3ktaW5kaWFuYSI6IHtoOiAiTExDcyBhbmQgQmFuayBBY2NvdW50cyBmb3IgT3V0LW9mLVN0YXRlIGFuZCBGb3JlaWduIFJlYWwgRXN0YXRlIEludmVzdG9ycyBpbiBLZW50dWNreSBhbmQgSW5kaWFuYSIsIGQ6ICJLZW50dWNreSBMTEMsIEluZGlhbmEgTExDIG9yIFd5b21pbmc/IEZlZXMsIHJlZ2lzdGVyZWQgYWdlbnRzLCBmb3JlaWduIHJlZ2lzdHJhdGlvbiwgRUlOcyBhbmQgVVMgYmFuayBhY2NvdW50cyBmb3Igb3V0LW9mLXN0YXRlIGFuZCBmb3JlaWduIGludmVzdG9ycy4iLCBrOiBbIktlbnR1Y2t5IExMQyBmb3IgcmVudGFsIHByb3BlcnR5IiwgIkluZGlhbmEgTExDIHJlYWwgZXN0YXRlIiwgImZvcmVpZ24gTExDIHJlZ2lzdHJhdGlvbiBLZW50dWNreSIsICJFSU4gZm9yIGZvcmVpZ24gb3duZXIiLCAiVVMgYmFuayBhY2NvdW50IGZvciBmb3JlaWduIGludmVzdG9ycyJdfSwKIi9yZW1vdGUtY2xvc2luZy13aXJlLXRyYW5zZmVyLWtlbnR1Y2t5LXJlYWwtZXN0YXRlIjoge2g6ICJDbG9zaW5nIEZyb20gQW55d2hlcmU6IFdpcmUgVHJhbnNmZXJzLCBSZW1vdGUgTm90YXJpemF0aW9uIGFuZCBUaW1lIFpvbmVzIGZvciBLZW50dWNreSBhbmQgSW5kaWFuYSBEZWFscyIsIGQ6ICJIb3cgb3V0LW9mLXN0YXRlIGFuZCBpbnRlcm5hdGlvbmFsIGJ1eWVycyBjbG9zZSBvbiBLZW50dWNreSBhbmQgSW5kaWFuYSBwcm9wZXJ0eSByZW1vdGVseTogb25saW5lIG5vdGFyaXphdGlvbiwgd2lyZSB0aW1pbmcsIGVhcm5lc3QgbW9uZXksIHdpcmUgZnJhdWQuIiwgazogWyJyZW1vdGUgcmVhbCBlc3RhdGUgY2xvc2luZyBLZW50dWNreSIsICJyZW1vdGUgb25saW5lIG5vdGFyaXphdGlvbiBLZW50dWNreSIsICJpbnRlcm5hdGlvbmFsIHdpcmUgdHJhbnNmZXIgcmVhbCBlc3RhdGUiLCAicmVhbCBlc3RhdGUgd2lyZSBmcmF1ZCBwcmV2ZW50aW9uIiwgImVhcm5lc3QgbW9uZXkgS2VudHVja3kiXX0sCiIvZm9yZWlnbi1uYXRpb25hbC1sb2Fucy1rZW50dWNreS1yZWFsLWVzdGF0ZSI6IHtoOiAiRmluYW5jaW5nIGZvciBPdXQtb2YtU3RhdGUgYW5kIEZvcmVpZ24gTmF0aW9uYWwgSW52ZXN0b3JzIGluIEtlbnR1Y2t5IGFuZCBJbmRpYW5hIiwgZDogIkxvYW5zIGZvciBvdXQtb2Ytc3RhdGUgYW5kIGZvcmVpZ24gbmF0aW9uYWwgaW52ZXN0b3JzIGJ1eWluZyBpbiBMb3Vpc3ZpbGxlIGFuZCBTb3V0aGVybiBJbmRpYW5hOiBjb252ZW50aW9uYWwsIERTQ1IsIGZvcmVpZ24gbmF0aW9uYWwsIGNvbW1lcmNpYWwsIGhhcmQgbW9uZXkuIiwgazogWyJmb3JlaWduIG5hdGlvbmFsIG1vcnRnYWdlIiwgIkRTQ1IgbG9hbiBvdXQtb2Ytc3RhdGUgaW52ZXN0b3IiLCAiaW52ZXN0bWVudCBwcm9wZXJ0eSBsb2FucyBLZW50dWNreSIsICJmb3JlaWduIG5hdGlvbmFsIERTQ1IgbG9hbiIsICJoYXJkIG1vbmV5IExvdWlzdmlsbGUiXX0sCiIvcmVtb3RlLXJlYWwtZXN0YXRlLWludmVzdG9yLXRlYW0tbG91aXN2aWxsZSI6IHtoOiAiWW91ciBCb290cyBvbiB0aGUgR3JvdW5kOiBCdWlsZGluZyBhIExvdWlzdmlsbGUgUmVhbCBFc3RhdGUgVGVhbSBXaGVuIFlvdSBMaXZlIE91dCBvZiBTdGF0ZSIsIGQ6ICJIb3cgbG9uZy1kaXN0YW5jZSBpbnZlc3RvcnMgYnVpbGQgYSByZWxpYWJsZSBMb3Vpc3ZpbGxlIHRlYW06IGFnZW50LCBsZW5kZXIsIHRpdGxlLCBpbnNwZWN0b3IsIGNvbnRyYWN0b3IsIHByb3BlcnR5IG1hbmFnZXIsIGluc3VyYW5jZSBhbmQgQ1BBLiIsIGs6IFsibG9uZy1kaXN0YW5jZSByZWFsIGVzdGF0ZSBpbnZlc3RpbmcgdGVhbSIsICJMb3Vpc3ZpbGxlIHByb3BlcnR5IG1hbmFnZW1lbnQgZm9yIG91dC1vZi1zdGF0ZSBvd25lcnMiLCAicmVtb3RlIGludmVzdG9yIGNvbnRyYWN0b3IiLCAiTG91aXN2aWxsZSByZWFsIGVzdGF0ZSBpbnZlc3RvciB0ZWFtIiwgIm91dC1vZi1zdGF0ZSBsYW5kbG9yZCBMb3Vpc3ZpbGxlIl19LAoiL2luc3RpdHV0aW9uYWwtZnVuZC1pbnZlc3RvcnMtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZSI6IHtoOiAiRnVuZHMsIEZhbWlseSBPZmZpY2VzIGFuZCBJbnN0aXR1dGlvbmFsIEJ1eWVyczogQWNxdWlyaW5nIFJlYWwgRXN0YXRlIGluIExvdWlzdmlsbGUsIExleGluZ3RvbiBhbmQgU291dGhlcm4gSW5kaWFuYSIsIGQ6ICJGb3IgaGVkZ2UgZnVuZHMsIGZhbWlseSBvZmZpY2VzIGFuZCBzeW5kaWNhdG9ycyBidXlpbmcgc2luZ2xlLWZhbWlseSBwb3J0Zm9saW9zLCBtdWx0aWZhbWlseSBhbmQgY29tbWVyY2lhbCBwcm9wZXJ0eSBpbiBMb3Vpc3ZpbGxlIGFuZCBTb3V0aGVybiBJbmRpYW5hLiIsIGs6IFsiaW5zdGl0dXRpb25hbCByZWFsIGVzdGF0ZSBpbnZlc3RvcnMgTG91aXN2aWxsZSIsICJoZWRnZSBmdW5kIHNpbmdsZS1mYW1pbHkgcmVudGFsIHBvcnRmb2xpbyIsICJmYW1pbHkgb2ZmaWNlIHJlYWwgZXN0YXRlIEtlbnR1Y2t5IiwgInBvcnRmb2xpbyBhY3F1aXNpdGlvbnMgTG91aXN2aWxsZSIsICJtdWx0aWZhbWlseSBhbmQgaW5kdXN0cmlhbCBpbnZlc3RtZW50IExvdWlzdmlsbGUiXX0sCiIvZ2xhci1tZW1iZXItYmVuZWZpdHMtZ3VpZGUta2VudHVja3ktcmVhbHRvcnMiOiB7aDogIllvdXIgR0xBUiBEdWVzIFBheSBmb3IgTW9yZSBUaGFuIFlvdSBUaGluazogQSBLZW50dWNreSBBZ2VudCdzIEd1aWRlIHRvIEV2ZXJ5IE1lbWJlciBCZW5lZml0ICgyMDI2KSIsIGQ6ICJBIExvdWlzdmlsbGUgUmVhbHRvcidzIHBsYWluLUVuZ2xpc2ggZ3VpZGUgdG8gZXZlcnkgR0xBUiwgQVBFWCBNTFMsIEtlbnR1Y2t5IFJFQUxUT1JTIGFuZCBOQVIgYmVuZWZpdDogd2hhdCBpdCBkb2VzLCB3aGVyZSB0byBmaW5kIGl0LCBob3cgdG8gdXNlIGl0LiIsIGs6IFsiR0xBUiBtZW1iZXIgYmVuZWZpdHMiLCAiQVBFWCBNTFMgdG9vbHMiLCAiR3JlYXRlciBMb3Vpc3ZpbGxlIEFzc29jaWF0aW9uIG9mIFJFQUxUT1JTIiwgIktlbnR1Y2t5IFJFQUxUT1JTIGJlbmVmaXRzIiwgIkZsZXhtbHMgdG9vbHMiLCAiTG91aXN2aWxsZSByZWFsIGVzdGF0ZSBhZ2VudCByZXNvdXJjZXMiXX0sCiIva2VudHVja3ktcmVhbC1lc3RhdGUtY29udGludWluZy1lZHVjYXRpb24tZGVhZGxpbmUiOiB7aDogIktlbnR1Y2t5IFJlYWwgRXN0YXRlIENFIERlYWRsaW5lOiBXaGF0IElzIER1ZSBEZWNlbWJlciAzMSBhbmQgdGhlIEZhc3Rlc3QgV2F5IHRvIEZpbmlzaCIsIGQ6ICJLZW50dWNreSBhZ2VudHMgbmVlZCA2IGhvdXJzIG9mIGNvbnRpbnVpbmcgZWR1Y2F0aW9uIGJ5IERlY2VtYmVyIDMxLCBpbmNsdWRpbmcgMyBob3VycyBvZiBsYXcsIHBsdXMgdGhlIENvcmUgQ291cnNlIGV2ZXJ5IGZvdXIgeWVhcnMuIEhlcmUgaXMgaG93IHRvIGNoZWNrIHlvdXIgaG91cnMgYW5kIGZpbmlzaCBvbiB0aW1lLiIsIGs6IFsiS2VudHVja3kgcmVhbCBlc3RhdGUgY29udGludWluZyBlZHVjYXRpb24iLCAiS1JFQyBDRSBkZWFkbGluZSIsICJLZW50dWNreSBDb3JlIENvdXJzZSIsICJLZW50dWNreSByZWFsIGVzdGF0ZSBsaWNlbnNlIHJlbmV3YWwiLCAiTG91aXN2aWxsZSByZWFsIGVzdGF0ZSBDRSJdfSwKIi9pbmRpYW5hLWhlYS0xMjEwLXJlbnRhbC1jYXAtbGF3LWludmVzdG9yLWd1aWRlIjoge2g6ICJJbmRpYW5hJ3MgSEVBIDEyMTA6IFJlbnRhbCBDYXBzIEFyZSBHb25lICgyMDI2IEludmVzdG9yIEd1aWRlKSIsIGQ6ICJJbmRpYW5hJ3MgSEVBIDEyMTAgZW5kcyBtb3N0IGxvY2FsIGNhcHMgb24gcmVudGFsIHByb3BlcnRpZXMgc3RhcnRpbmcgSnVseSAxLCAyMDI2LiBTZWUgd2hhdCBpdCBtZWFucyBmb3IgaW52ZXN0b3JzIGV5ZWluZyBOZXcgQWxiYW55LCBKZWZmZXJzb252aWxsZSwgYW5kIENsYXJrc3ZpbGxlIHJlbnRhbHMuIiwgazogWyJJbmRpYW5hIEhFQSAxMjEwIiwgIkluZGlhbmEgcmVudGFsIGNhcCBsYXciLCAiU291dGhlcm4gSW5kaWFuYSByZWFsIGVzdGF0ZSBpbnZlc3RpbmciLCAiTmV3IEFsYmFueSByZW50YWwgcHJvcGVydHkgaW52ZXN0aW5nIiwgIkplZmZlcnNvbnZpbGxlIEluZGlhbmEgcmVudGFscyIsICJDbGFya3N2aWxsZSBJbmRpYW5hIHJlbnRhbHMiXX0sCiIvd2lubmVyLXJlYWx0eS1tYW5pZmVzdG8iOiB7aDogIlRoZSBXaW5uZXIgUmVhbHR5IE1hbmlmZXN0bzogVGVuIFByb21pc2VzIGluIFdyaXRpbmciLCBkOiAiVGVuIHByb21pc2VzIFdpbm5lciBSZWFsdHkgbWFrZXMgaW4gd3JpdGluZzogdGhlIDE1LU1pbnV0ZSBSZXNwb25zZSBSdWxlLCB0aGUgMy1EYXkgTGlzdGluZyBHdWFyYW50ZWUsIGFjY2Vzc2liaWxpdHkgYXMgdGhlIHN0YW5kYXJkLCBudW1iZXJzIGluIHB1YmxpYywgYW5kIDElIHRvIEhhbmQgaW4gSGFuZC4iLCBrOiBbIldpbm5lciBSZWFsdHkgbWFuaWZlc3RvIiwiV2lubmVyIFJlYWx0eSB2YWx1ZXMiLCIxNS1NaW51dGUgUmVzcG9uc2UgUnVsZSIsIjMtRGF5IExpc3RpbmcgR3VhcmFudGVlIiwiTG91aXN2aWxsZSByZWFsIGVzdGF0ZSBicm9rZXJhZ2UiXX0sCiIvZGlzcGxhY2VkLXN0b3JtLWluc3VyYW5jZS1ob3VzaW5nLWtlbnR1Y2t5Ijoge2g6ICJTdG9ybS1EaXNwbGFjZWQgSW5zdXJhbmNlIEhvdXNpbmcgfCBMb3Vpc3ZpbGxlICYgS2VudHVja3kiLCBkOiAiSG93IEFMRSAoQWRkaXRpb25hbCBMaXZpbmcgRXhwZW5zZXMpIGluc3VyYW5jZSBjb3ZlcmFnZSBwYXlzIGZvciBmdXJuaXNoZWQgdGVtcG9yYXJ5IGhvdXNpbmcgYWZ0ZXIgYSB0b3JuYWRvIG9yIHN0b3JtIGluIEtlbnR1Y2t5LCBhbmQgaG93IHRvIHVzZSBpdC4iLCBrOiBbIlN0b3JtLURpc3BsYWNlZCBJbnN1cmFuY2UgSG91c2luZyIsICJMb3Vpc3ZpbGxlICYgS2VudHVja3kiLCAiV2lubmVyIFJlYWx0eSIsICJMb3Vpc3ZpbGxlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIl19LAoiL291ci1zdG9yeSI6IHtoOiAiT3VyIFN0b3J5OiBXaHkgUm9iIEJlcmdlcm9uIFN0YXJ0ZWQgV2lubmVyIFJlYWx0eSIsIGQ6ICJXaHkgUm9iIEJlcmdlcm9uIHN0YXJ0ZWQgV2lubmVyIFJlYWx0eSBhZnRlciB0aGlydGVlbiB5ZWFycyBhcyB0aGUgcmVhbHRvcidzIHJlYWx0b3IsIHdobyBydW5zIGl0LCBob3cgaXQgaXMgYnVpbHQsIGFuZCB0aGUgb25lLWhvdXNlLWEtbW9udGggcHJvbWlzZSBiZWhpbmQgaXQuIiwgazogWyJXaW5uZXIgUmVhbHR5IHN0b3J5IiwgIlJvYiBCZXJnZXJvbiIsICJMb3Vpc3ZpbGxlIHJlYWwgZXN0YXRlIGJyb2tlcmFnZSIsICJIYW5kIGluIEhhbmQgTWluaXN0cmllcyIsICJMaXNhIFR1Y2tlciBQcmluY2lwYWwgQnJva2VyIl19LAoiL3pvbmluZy1zdHJhdGVneS1ncm91cC1ob21lcy1sb3Vpc3ZpbGxlLW9yLWNvbW1lcmNpYWwtaW5kdXN0cmlhbCI6IHtoOiAiWm9uaW5nIFN0cmF0ZWd5IGZvciBHcm91cCBIb21lcyBpbiBMb3Vpc3ZpbGxlOiBPUiAmIENvbW1lcmNpYWwgRGlzdHJpY3RzIiwgZDogIkEgcHJhY3RpY2FsIGJyZWFrZG93biBvZiBMb3Vpc3ZpbGxlJ3MgT1IsIGNvbW1lcmNpYWwsIGFuZCBpbmR1c3RyaWFsLWFkamFjZW50IHpvbmluZyBkaXN0cmljdHMgZm9yIGdyb3VwIGhvbWVzIGFuZCByZWNvdmVyeSByZXNpZGVuY2VzIOKAlCBvY2N1cGFuY3kgZm9ybXVsYXMsIHNpdGUgc2VsZWN0aW9uIHN0cmF0ZWd5LCBhbmQgd2hhdCB0byB2ZXJpZnkgYmVmb3JlIHlvdSBidXkuIiwgazogWyJab25pbmcgU3RyYXRlZ3kgZm9yIEdyb3VwIEhvbWVzIGluIExvdWlzdmlsbGUiLCAiT1IgJiBDb21tZXJjaWFsIERpc3RyaWN0cyIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvc21va2V0b3duLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiOiB7aDogIlNtb2tldG93biwgTG91aXN2aWxsZSBLWSBSZWFsIEVzdGF0ZSBHdWlkZSIsIGQ6ICJTbW9rZXRvd24sIExvdWlzdmlsbGUncyBvbGRlc3QgQmxhY2stZm91bmRlZCBuZWlnaGJvcmhvb2Q6IHNob3RndW4gaG91c2Ugc3RvY2ssIFpJUCA0MDIwMyBwcmljZXMsIHdoYXQgdG8gaW5zcGVjdCwgYW5kIHdobydzIGJ1eWluZyBuZWFyIE51THUgaW4gMjAyNi4iLCBrOiBbIlNtb2tldG93biwgTG91aXN2aWxsZSBLWSBSZWFsIEVzdGF0ZSBHdWlkZSIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvdmFsbGV5LXN0YXRpb24tbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtZ3VpZGUiOiB7aDogIlZhbGxleSBTdGF0aW9uIExvdWlzdmlsbGUgSG9tZXMgRm9yIFNhbGUiLCBkOiAiVmFsbGV5IFN0YXRpb24gTG91aXN2aWxsZSBob21lcyBmb3Igc2FsZTogMjAyNiBwcmljZXMsIHdoYXQncyBzZWxsaW5nIG5lYXIgRGl4aWUgSGlnaHdheSBhbmQgdGhlIE9oaW8gUml2ZXIsIGFuZCB3aG8gc2hvdWxkIGJ1eSBoZXJlLiBTZWUgdGhlIGZ1bGwgZGF0YS4iLCBrOiBbIlZhbGxleSBTdGF0aW9uIExvdWlzdmlsbGUgSG9tZXMgRm9yIFNhbGUiLCAiV2lubmVyIFJlYWx0eSIsICJMb3Vpc3ZpbGxlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIl19LAoiL2NvbnZlcnQtcmVudGFsLXRvLW1pZHRlcm0tcmVudGFsLWxvdWlzdmlsbGUtaW52ZXN0b3ItZ3VpZGUiOiB7aDogIkNvbnZlcnQgYSBSZW50YWwgdG8gYSBNaWR0ZXJtIFJlbnRhbCB8IExvdWlzdmlsbGUgSW52ZXN0b3IgR3VpZGUiLCBkOiAiQSBzdGVwLWJ5LXN0ZXAgZ3VpZGUgZm9yIExvdWlzdmlsbGUgcHJvcGVydHkgb3duZXJzIGNvbnZlcnRpbmcgYSBsb25nLXRlcm0gcmVudGFsIGludG8gYSBtaWR0ZXJtICgzMC1kYXkgdG8gMTItbW9udGgpIGZ1cm5pc2hlZCByZW50YWwuIiwgazogWyJDb252ZXJ0IGEgUmVudGFsIHRvIGEgTWlkdGVybSBSZW50YWwiLCAiTG91aXN2aWxsZSBJbnZlc3RvciBHdWlkZSIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvZGlzdHJlc3NlZC1tdWx0aWZhbWlseS1zZWxsZXJzLWxvdWlzdmlsbGUiOiB7aDogIlNlbGxpbmcgYSBEaXN0cmVzc2VkIE11bHRpZmFtaWx5IFByb3BlcnR5IGluIEtlbnR1Y2t5IiwgZDogIkZhY2luZyBhIG1hdHVyaW5nIGxvYW4sIG5lZ2F0aXZlIGxldmVyYWdlLCBvciBhIGZvcmNlZCBtdWx0aWZhbWlseSBzYWxlIGluIExvdWlzdmlsbGUsIExleGluZ3Rvbiwgb3IgU291dGhlcm4gSW5kaWFuYT8gSGVyZSdzIGhvdyBXaW5uZXIgUmVhbHR5IGhlbHBzIG93bmVycyBzZWxsIGZhc3QgYW5kIHF1aWV0bHkuIiwgazogWyJTZWxsaW5nIGEgRGlzdHJlc3NlZCBNdWx0aWZhbWlseSBQcm9wZXJ0eSBpbiBLZW50dWNreSIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvc2VsbC1haXJibmItc2hvcnQtdGVybS1yZW50YWwta2VudHVja3kiOiB7aDogIlNlbGxpbmcgWW91ciBBaXJibmIgb3IgU2hvcnQtVGVybSBSZW50YWwgaW4gTG91aXN2aWxsZSIsIGQ6ICJUaGlua2luZyBhYm91dCBzZWxsaW5nIHlvdXIgTG91aXN2aWxsZSBBaXJibmIgb3Igc2hvcnQtdGVybSByZW50YWw/IEhlcmUncyBob3cgQ1VQIHRyYW5zZmVycywgcmVnaXN0cmF0aW9uLCBhbmQgYm9va2luZyBoaXN0b3J5IGFmZmVjdCB5b3VyIHNhbGUsIGFuZCB3aHkgb3duZXJzIGNhbGwgV2lubmVyIFJlYWx0eS4iLCBrOiBbIlNlbGxpbmcgWW91ciBBaXJibmIgb3IgU2hvcnQtVGVybSBSZW50YWwgaW4gTG91aXN2aWxsZSIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvcGV3ZWUtdmFsbGV5LWt5LXJlYWwtZXN0YXRlLWd1aWRlIjoge2g6ICJQZXdlZSBWYWxsZXksIEtZIFJlYWwgRXN0YXRlIEd1aWRlIiwgZDogIlBld2VlIFZhbGxleSwgS1kgKDQwMDU2KTogaGlzdG9yaWMgTGl0dGxlIENvbG9uZWwtZXJhIGhvbWVzLCBPbGRoYW0gQ291bnR5IFNjaG9vbHMsIHByaWNlcywgYW5kIGhvdyBpdCBjb21wYXJlcyB0byBMYSBHcmFuZ2UgYW5kIENyZXN0d29vZCBpbiAyMDI2LiIsIGs6IFsiUGV3ZWUgVmFsbGV5LCBLWSBSZWFsIEVzdGF0ZSBHdWlkZSIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvaG9yc2UtZmFybXMtb2xkaGFtLXNoZWxieS1jb3VudHkta3kiOiB7aDogIkhvcnNlIEZhcm1zIGZvciBTYWxlIGluIE9sZGhhbSAmIFNoZWxieSBDb3VudHksIEtZIiwgZDogIkhvcnNlIGZhcm1zIGZvciBzYWxlIGluIE9sZGhhbSBhbmQgU2hlbGJ5IENvdW50eSwgS2VudHVja3k6IGN1cnJlbnQgbGlzdGluZ3MsIHByaWNpbmcgYnkgYWNyZWFnZSwgYW5kIHRoZSBTYWRkbGVicmVkIGNvbm5lY3Rpb24gaW4gU2hlbGJ5dmlsbGUuIiwgazogWyJIb3JzZSBGYXJtcyBmb3IgU2FsZSBpbiBPbGRoYW0gJiBTaGVsYnkgQ291bnR5LCBLWSIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvbWlkdGVybS1yZW50YWwtdnMtbG9uZy10ZXJtLWxlYXNlLWxvdWlzdmlsbGUtcm9pIjoge2g6ICJNaWR0ZXJtIFJlbnRhbCBST0kgdnMuIExvbmctVGVybSBMZWFzZSB8IExvdWlzdmlsbGUsIEtZIiwgZDogIkEgcmVhbC1udW1iZXJzIGNvbXBhcmlzb24gb2YgbWlkdGVybSBmdXJuaXNoZWQgcmVudGFsIGluY29tZSB2cy4gYSBzdGFuZGFyZCBsb25nLXRlcm0gbGVhc2UgaW4gTG91aXN2aWxsZSwgcGx1cyBhIHdvcmtlZCBmdXJuaXNoaW5nLWNvc3QgcGF5YmFjayBleGFtcGxlLiIsIGs6IFsiTWlkdGVybSBSZW50YWwgUk9JIHZzLiBMb25nLVRlcm0gTGVhc2UiLCAiTG91aXN2aWxsZSwgS1kiLCAiV2lubmVyIFJlYWx0eSIsICJMb3Vpc3ZpbGxlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIl19LAoiL2tlbnR1Y2t5LXJlY292ZXJ5LXJlc2lkZW5jZS1jZXJ0aWZpY2F0aW9uLWtycy0yMjItNTAyLWd1aWRlIjoge2g6ICJLZW50dWNreSBSZWNvdmVyeSBSZXNpZGVuY2UgQ2VydGlmaWNhdGlvbiAoS1JTIDIyMi41MDIpIEd1aWRlIiwgZDogIktlbnR1Y2t5J3MgS1JTIDIyMi41MDIgcmVjb3ZlcnkgcmVzaWRlbmNlIGNlcnRpZmljYXRpb24gZXhwbGFpbmVkOiBLWUFSUidzIHJvbGUsIHRoZSBLUlMgMjIyLjUwOCByZWZlcnJhbCBhbmQgZnVuZGluZyByZXN0cmljdGlvbnMsIGFuZCBob3cgY2VydGlmaWNhdGlvbiBmaXRzIHdpdGggTG91aXN2aWxsZSB6b25pbmcgYW5kIGxpY2Vuc2luZy4iLCBrOiBbIktlbnR1Y2t5IFJlY292ZXJ5IFJlc2lkZW5jZSBDZXJ0aWZpY2F0aW9uIChLUlMgMjIyLjUwMikgR3VpZGUiLCAiV2lubmVyIFJlYWx0eSIsICJMb3Vpc3ZpbGxlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIl19LAoiL2VtcGxveWVyLXJlbG9jYXRpb24tcGFydG5lcnMiOiB7aDogIkVtcGxveWVyIFJlbG9jYXRpb24gUGFydG5lcnMgaW4gTG91aXN2aWxsZSwgS1kiLCBkOiAiSG93IFdpbm5lciBSZWFsdHkgc2VydmVzIHJlbG9jYXRpbmcgZW1wbG95ZWVzIGZyb20gVVBTLCBGb3JkLCBHRSBBcHBsaWFuY2VzLCBIdW1hbmEsIE5vcnRvbiBIZWFsdGhjYXJlLCBCYXB0aXN0IEhlYWx0aCwgYW5kIFVvZkwgSGVhbHRoIGFjcm9zcyBMb3Vpc3ZpbGxlLCBLWSBhbmQgU291dGhlcm4gSW5kaWFuYS4iLCBrOiBbIkVtcGxveWVyIFJlbG9jYXRpb24gUGFydG5lcnMgaW4gTG91aXN2aWxsZSwgS1kiLCAiV2lubmVyIFJlYWx0eSIsICJMb3Vpc3ZpbGxlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIl19LAoiL2VsaXphYmV0aHRvd24ta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOiB7aDogIkVsaXphYmV0aHRvd24sIEtZIFJlYWwgRXN0YXRlIEd1aWRlOiBIb21lIFByaWNlcywgRm9ydCBLbm94LCBhbmQgSGFyZGluIENvdW50eSBHcm93dGggKDIwMjYpIiwgZDogIkVsaXphYmV0aHRvd24gYW5kIEhhcmRpbiBDb3VudHkgZ3VpZGUgZnJvbSBXaW5uZXIgUmVhbHR5OiAyMDI2IGhvbWUgcHJpY2VzICgkMzM5LDM2NSBtZWRpYW4gbGlzdCksIEZvcnQgS25veCBhbmQgdGhlIEZvcmQgQmx1ZU92YWwgU0sgYmF0dGVyeSBwbGFudCBkcml2aW5nIGdyb3d0aC4iLCBrOiBbIkVsaXphYmV0aHRvd24sIEtZIFJlYWwgRXN0YXRlIEd1aWRlIiwgIkhvbWUgUHJpY2VzLCBGb3J0IEtub3gsIGFuZCBIYXJkaW4gQ291bnR5IEdyb3d0aCAoMjAyNikiLCAiV2lubmVyIFJlYWx0eSIsICJMb3Vpc3ZpbGxlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIl19LAoiL2Jlc3QtYnJva2VyYWdlLWZvci1uZXctYWdlbnRzLWxvdWlzdmlsbGUiOiB7aDogIkJlc3QgQnJva2VyYWdlIGZvciBOZXcgQWdlbnRzIGluIExvdWlzdmlsbGUsIEtZIiwgZDogIlJlYWwgQUNBIGhlYWx0aCBpbnN1cmFuY2UgYWNjZXNzLCBhIHZldHRlZCBDUEEvbGVuZGVyL2luc3VyYW5jZS9sZWdhbCBuZXR3b3JrLCBhbmQgYSBwYWlkLWFkLWZyZWUgbGVhZCBwaXBlbGluZSDigJQgd2h5IG5ldyBhbmQgcGFydC10aW1lIGFnZW50cyBjaG9vc2UgV2lubmVyIFJlYWx0eS4iLCBrOiBbIkJlc3QgQnJva2VyYWdlIGZvciBOZXcgQWdlbnRzIGluIExvdWlzdmlsbGUsIEtZIiwgIldpbm5lciBSZWFsdHkiLCAiTG91aXN2aWxsZSBLZW50dWNreSByZWFsIGVzdGF0ZSJdfSwKIi9yZWxvY2F0aW5nLXRvLWxvdWlzdmlsbGUtaG9zcGl0YWwtcG9zaXRpb24iOiB7aDogIlJlbG9jYXRpbmcgdG8gTG91aXN2aWxsZSBmb3IgYSBIb3NwaXRhbCBKb2I/IEhvdXNpbmcgR3VpZGUiLCBkOiAiTW92aW5nIHRvIExvdWlzdmlsbGUsIEtZIGZvciBhIGhvc3BpdGFsIG9yIGhlYWx0aCBzeXN0ZW0gcG9zaXRpb24/IEEgcHJhY3RpY2FsIGd1aWRlIHRvIG5laWdoYm9yaG9vZHMsIGNvbW11dGUgdGltZXMsIGFuZCBob3VzaW5nIG9wdGlvbnMgZm9yIGRvY3RvcnMsIG51cnNlcywgYW5kIGhlYWx0aGNhcmUgc3RhZmYuIiwgazogWyJSZWxvY2F0aW5nIHRvIExvdWlzdmlsbGUgZm9yIGEgSG9zcGl0YWwgSm9iPyBIb3VzaW5nIEd1aWRlIiwgIldpbm5lciBSZWFsdHkiLCAiTG91aXN2aWxsZSBLZW50dWNreSByZWFsIGVzdGF0ZSJdfSwKIi9ydXNzZWxsLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiOiB7aDogIlJ1c3NlbGwsIExvdWlzdmlsbGUgS1kgUmVhbCBFc3RhdGUgR3VpZGUiLCBkOiAiUnVzc2VsbCwgTG91aXN2aWxsZSdzIGhpc3RvcmljIEJsYWNrIGJ1c2luZXNzIGRpc3RyaWN0OiB0aGUgQ2hvaWNlIE5laWdoYm9yaG9vZHMgcmVkZXZlbG9wbWVudCwgQmVlY2hlciBUZXJyYWNlIHJlYnVpbGQsIHByaWNlcywgYW5kIHdobydzIGludmVzdGluZyBpbiAyMDI2LiIsIGs6IFsiUnVzc2VsbCwgTG91aXN2aWxsZSBLWSBSZWFsIEVzdGF0ZSBHdWlkZSIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvb2xtc3RlZC1wYXJrcy1sb3Vpc3ZpbGxlLWhvbWUtdmFsdWVzIjoge2g6ICJPbG1zdGVkIFBhcmtzIExvdWlzdmlsbGUgSG9tZSBWYWx1ZXMiLCBkOiAiT2xtc3RlZCBwYXJrcyBMb3Vpc3ZpbGxlIGhvbWUgdmFsdWVzOiBhIDIwMTggc3R1ZHkgZm91bmQgYSA1LjUlIGZyb250YWdlIHByZW1pdW0gd29ydGggJDk0LjdNLiBTZWUgd2hpY2ggcGFya3dheXMsIHBhcmtzIGFuZCBibG9ja3MgY2FwdHVyZSBpdC4iLCBrOiBbIk9sbXN0ZWQgUGFya3MgTG91aXN2aWxsZSBIb21lIFZhbHVlcyIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvc2VsbGVyc2J1cmctaW5kaWFuYS1yZWFsLWVzdGF0ZS1ndWlkZSI6IHtoOiAiU2VsbGVyc2J1cmcsIElOIFJlYWwgRXN0YXRlIEd1aWRlIiwgZDogIlNlbGxlcnNidXJnLCBJbmRpYW5hICg0NzE3Mik6IGZhc3Rlc3QtZ3Jvd2luZyBTb3V0aGVybiBJbmRpYW5hIHRvd24gbmVhciBMb3Vpc3ZpbGxlLCBTaWx2ZXIgQ3JlZWsgU2Nob29scywgbmV3IGNvbnN0cnVjdGlvbiwgdGF4ZXMgYW5kIHRvbGxzIGV4cGxhaW5lZCBmb3IgMjAyNi4iLCBrOiBbIlNlbGxlcnNidXJnLCBJTiBSZWFsIEVzdGF0ZSBHdWlkZSIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvcmVudGluZy1hLWhvbWUtaW4tbG91aXN2aWxsZS1rZW50dWNreSI6IHtoOiAiUmVudGluZyBhIEhvbWUgaW4gTG91aXN2aWxsZSwgS1kiLCBkOiAiTG9va2luZyBmb3IgYSByZW50YWwgaW4gTG91aXN2aWxsZT8gV2lubmVyIFJlYWx0eSBoZWxwcyBtYXRjaCB5b3Ugd2l0aCBzaW5nbGUtZmFtaWx5IGhvbWVzLCBkdXBsZXhlcywgY29uZG9zLCBhbmQgYXBhcnRtZW50cywgcGx1cyB5b3VyIHJpZ2h0cyBhcyBhIEtlbnR1Y2t5IHJlbnRlci4iLCBrOiBbIlJlbnRpbmcgYSBIb21lIGluIExvdWlzdmlsbGUsIEtZIiwgIldpbm5lciBSZWFsdHkiLCAiTG91aXN2aWxsZSBLZW50dWNreSByZWFsIGVzdGF0ZSJdfSwKIi9wcm9zcGVjdC1reS1uZWlnaGJvcmhvb2QtZ3VpZGUiOiB7aDogIlByb3NwZWN0LCBLWSBIb21lcyBGb3IgU2FsZSIsIGQ6ICJQcm9zcGVjdCBLWSBob21lcyBmb3Igc2FsZTogYWJvdXQgJDc0MksgbWVkaWFuIHByaWNlLCA0NDUgc2FsZXMsIDQ1LWRheSBhdmVyYWdlIG1hcmtldCB0aW1lLiBTZWUgcHJpY2VzLCB3aGF0J3Mgc2VsbGluZywgYW5kIHdobyBzaG91bGQgYnV5IGluIDIwMjYuIiwgazogWyJQcm9zcGVjdCwgS1kgSG9tZXMgRm9yIFNhbGUiLCAiV2lubmVyIFJlYWx0eSIsICJMb3Vpc3ZpbGxlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIl19LAoiL2J1eWluZy1hY3JlYWdlLWtlbnR1Y2t5LXdlbGxzLXNlcHRpYy16b25pbmciOiB7aDogIkJ1eWluZyBBY3JlYWdlIGluIEtlbnR1Y2t5OiBXZWxscywgU2VwdGljICYgWm9uaW5nIEd1aWRlIiwgZDogIkJ1eWluZyBydXJhbCBsYW5kIG9yIGFjcmVhZ2UgbmVhciBMb3Vpc3ZpbGxlLCBLWT8gV2hhdCBmaXJzdC10aW1lIGJ1eWVycyBuZWVkIHRvIGtub3cgYWJvdXQgcHJpdmF0ZSB3ZWxscywgc2VwdGljIHN5c3RlbXMsIGFuZCBjb3VudHkgem9uaW5nIGluIE9sZGhhbSwgU2hlbGJ5LCBhbmQgQnVsbGl0dCBDb3VudHkuIiwgazogWyJCdXlpbmcgQWNyZWFnZSBpbiBLZW50dWNreSIsICJXZWxscywgU2VwdGljICYgWm9uaW5nIEd1aWRlIiwgIldpbm5lciBSZWFsdHkiLCAiTG91aXN2aWxsZSBLZW50dWNreSByZWFsIGVzdGF0ZSJdfSwKIi9ncm91cC1ob21lcy1yZWNvdmVyeS1yZXNpZGVuY2VzLWxvdWlzdmlsbGUtZ3VpZGUiOiB7aDogIkdyb3VwIEhvbWVzICYgUmVjb3ZlcnkgUmVzaWRlbmNlcyBpbiBMb3Vpc3ZpbGxlIHwgWm9uaW5nICYgTGljZW5zaW5nIEd1aWRlIiwgZDogIkxvdWlzdmlsbGUgem9uaW5nLCBDaGFwdGVyIDExNSBsaWNlbnNpbmcsIEtZIHN0YXRlIGNlcnRpZmljYXRpb24gKEtSUyAyMjIuNTAyKSwgYW5kIEZhaXIgSG91c2luZyBBY3QgcHJvdGVjdGlvbnMgZm9yIGdyb3VwIGhvbWVzIGFuZCByZWNvdmVyeSByZXNpZGVuY2VzIOKAlCBhIHByYWN0aWNhbCBndWlkZSBmb3Igb3BlcmF0b3JzIGFuZCBpbnZlc3RvcnMuIiwgazogWyJHcm91cCBIb21lcyAmIFJlY292ZXJ5IFJlc2lkZW5jZXMgaW4gTG91aXN2aWxsZSIsICJab25pbmcgJiBMaWNlbnNpbmcgR3VpZGUiLCAiV2lubmVyIFJlYWx0eSIsICJMb3Vpc3ZpbGxlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIl19LAoiL2RvdWdsYXNzLWhpbGxzLWt5LXJlYWwtZXN0YXRlLWd1aWRlIjoge2g6ICJEb3VnbGFzcyBIaWxscywgS1kgUmVhbCBFc3RhdGUgR3VpZGUiLCBkOiAiRG91Z2xhc3MgSGlsbHMsIEtZICg0MDI0Myk6IGVzdGFibGlzaGVkIGhvbWVzIGJldHdlZW4gTWlkZGxldG93biBhbmQgSmVmZmVyc29udG93biwgbmVhciB0aGUgQmxhbmtlbmJha2VyIFBhcmt3YXkgam9iIGNvcnJpZG9yLiBQcmljZXMgYW5kIGJ1eWVyIG5vdGVzIGZvciAyMDI2LiIsIGs6IFsiRG91Z2xhc3MgSGlsbHMsIEtZIFJlYWwgRXN0YXRlIEd1aWRlIiwgIldpbm5lciBSZWFsdHkiLCAiTG91aXN2aWxsZSBLZW50dWNreSByZWFsIGVzdGF0ZSJdfSwKIi9sb3Vpc3ZpbGxlLTMwLWRheS1ydWxlLXNob3J0LXRlcm0tcmVudGFsLWxhdyI6IHtoOiAiTG91aXN2aWxsZSdzIDMwLURheSBTaG9ydC1UZXJtIFJlbnRhbCBSdWxlIEV4cGxhaW5lZCIsIGQ6ICJIb3cgTG91aXN2aWxsZSBNZXRybydzIHNob3J0LXRlcm0gcmVudGFsIG9yZGluYW5jZSB3b3Jrcywgd2h5IHRoZSAzMC1kYXkgbGluZSBtYXR0ZXJzLCBhbmQgaG93IG1pZHRlcm0gcmVudGFscyBmYWxsIG91dHNpZGUgaXQgZW50aXJlbHkuIiwgazogWyJMb3Vpc3ZpbGxlJ3MgMzAtRGF5IFNob3J0LVRlcm0gUmVudGFsIFJ1bGUgRXhwbGFpbmVkIiwgIldpbm5lciBSZWFsdHkiLCAiTG91aXN2aWxsZSBLZW50dWNreSByZWFsIGVzdGF0ZSJdfSwKIi9jbGFya3N2aWxsZS1pbi1yZWFsLWVzdGF0ZS1ndWlkZSI6IHtoOiAiQ2xhcmtzdmlsbGUsIElOIFJlYWwgRXN0YXRlIEd1aWRlIiwgZDogIldoYXQgaG9tZXMgaW4gQ2xhcmtzdmlsbGUsIEluZGlhbmEgYWN0dWFsbHkgY29zdCwgdGhlIG5ldyAxNDEtYWNyZSBPcmlnaW4gUGFyayBvbiB0aGUgcml2ZXJmcm9udCwgc2Nob29scywgYW5kIGhvdyBJbmRpYW5hIGJ1eWluZyBkaWZmZXJzIGZyb20gS2VudHVja3ksIGZyb20gYSBicm9rZXJhZ2UgbGljZW5zZWQgaW4gYm90aCBzdGF0ZXMuIiwgazogWyJDbGFya3N2aWxsZSwgSU4gUmVhbCBFc3RhdGUgR3VpZGUiLCAiV2lubmVyIFJlYWx0eSIsICJMb3Vpc3ZpbGxlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIl19LAoiL2Jlc3QtbmVpZ2hib3Job29kcy1taWR0ZXJtLXJlbnRhbC1sb3Vpc3ZpbGxlIjoge2g6ICJCZXN0IE5laWdoYm9yaG9vZHMgZm9yIE1pZHRlcm0gUmVudGFscyB8IExvdWlzdmlsbGUsIEtZIiwgZDogIldoaWNoIExvdWlzdmlsbGUgYW5kIFNvdXRoZXJuIEluZGlhbmEgbmVpZ2hib3Job29kcyBmaXQgbWlkdGVybSB0ZW5hbnRzIGJlc3QsIG1hdGNoZWQgdG8gaG9zcGl0YWwgY2FtcHVzZXMsIGVtcGxveWVycywgYW5kIHN0YXkgbGVuZ3RoLiIsIGs6IFsiQmVzdCBOZWlnaGJvcmhvb2RzIGZvciBNaWR0ZXJtIFJlbnRhbHMiLCAiTG91aXN2aWxsZSwgS1kiLCAiV2lubmVyIFJlYWx0eSIsICJMb3Vpc3ZpbGxlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIl19LAoiL2NhbGlmb3JuaWEtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6IHtoOiAiQ2FsaWZvcm5pYSwgTG91aXN2aWxsZSBLWSBSZWFsIEVzdGF0ZSBHdWlkZSIsIGQ6ICJDYWxpZm9ybmlhLCBMb3Vpc3ZpbGxlIEtZOiBob21lIG9mIHRoZSBNdWhhbW1hZCBBbGkgQ2hpbGRob29kIEhvbWUgTXVzZXVtLCBuZWFyIFUgb2YgTCdzIEhlYWx0aCBTY2llbmNlcyBjYW1wdXMuIFByaWNlcywgaG91c2luZyBzdG9jaywgYW5kIHdobydzIGJ1eWluZyBpbiAyMDI2LiIsIGs6IFsiQ2FsaWZvcm5pYSwgTG91aXN2aWxsZSBLWSBSZWFsIEVzdGF0ZSBHdWlkZSIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvdXNkYS1sb2FuLWtlbnR1Y2t5Ijoge2g6ICJVU0RBIExvYW5zIGluIEtlbnR1Y2t5OiAwJSBEb3duIE5lYXIgTG91aXN2aWxsZSAoMjAyNikiLCBkOiAiVVNEQSBSdXJhbCBEZXZlbG9wbWVudCBsb2FucyBvZmZlciAwJSBkb3duIG9uIGVsaWdpYmxlIHByb3BlcnR5IG5lYXIgTG91aXN2aWxsZS4gMjAyNiBpbmNvbWUgbGltaXRzLCBlbGlnaWJsZSBjb3VudGllcywgYW5kIHRoZSB6b25pbmcgYW5nbGUgbW9zdCBndWlkZXMgbWlzcy4iLCBrOiBbIlVTREEgTG9hbnMgaW4gS2VudHVja3kiLCAiMCUgRG93biBOZWFyIExvdWlzdmlsbGUgKDIwMjYpIiwgIldpbm5lciBSZWFsdHkiLCAiTG91aXN2aWxsZSBLZW50dWNreSByZWFsIGVzdGF0ZSJdfSwKIi9kaXN0cmVzc2VkLWhvbWUtc2VsbGVycy1rZW50dWNreSI6IHtoOiAiU2VsbGluZyBhIEhvdXNlIEZhc3QgRHVlIHRvIERpdm9yY2UsIEpvYiBMb3NzLCBvciBJbmhlcml0YW5jZSIsIGQ6ICJGYWNpbmcgZGl2b3JjZSwgam9iIGxvc3MsIGFuIGluaGVyaXRlZCBob3VzZSwgb3IgZmFsbGluZyBiZWhpbmQgb24gcGF5bWVudHMgaW4gS2VudHVja3k/IEhlcmUncyBob3cgV2lubmVyIFJlYWx0eSBoZWxwcyBob21lb3duZXJzIHNlbGwgcXVpY2tseSBhbmQgd2l0aCBsZXNzIHN0cmVzcy4iLCBrOiBbIlNlbGxpbmcgYSBIb3VzZSBGYXN0IER1ZSB0byBEaXZvcmNlLCBKb2IgTG9zcywgb3IgSW5oZXJpdGFuY2UiLCAiV2lubmVyIFJlYWx0eSIsICJMb3Vpc3ZpbGxlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIl19LAoiL2Zpc2hlcnZpbGxlLWt5LXJlYWwtZXN0YXRlLWd1aWRlIjoge2g6ICJGaXNoZXJ2aWxsZSwgS1kgNDAwMjMgUmVhbCBFc3RhdGUgR3VpZGUiLCBkOiAiRmlzaGVydmlsbGUsIEtZICg0MDAyMyk6IG5ldyBjb25zdHJ1Y3Rpb24gb24gdGhlIEplZmZlcnNvbi1TcGVuY2VyIGNvdW50eSBsaW5lLCBoaWdoZXIgaG91c2Vob2xkIGluY29tZXMsIGNvbW11dGUgdGltZXMsIGFuZCBzY2hvb2wgZGlzdHJpY3Qgbm90ZXMgZm9yIDIwMjYuIiwgazogWyJGaXNoZXJ2aWxsZSwgS1kgNDAwMjMgUmVhbCBFc3RhdGUgR3VpZGUiLCAiV2lubmVyIFJlYWx0eSIsICJMb3Vpc3ZpbGxlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIl19LAoiL21lZXQtcm9iLWJlcmdlcm9uIjoge2g6ICJNZWV0IFJvYiBCZXJnZXJvbiwgT3duZXItUmVhbHRvciBvZiBXaW5uZXIgUmVhbHR5IiwgZDogIlJvYiBCZXJnZXJvbiwgT3duZXItUmVhbHRvciBhdCBXaW5uZXIgUmVhbHR5IGluIExvdWlzdmlsbGUsIEtZIOKAlCAxMyB5ZWFycyBvZiBleHBlcmllbmNlLCBhbmQgaG93IHRvIGJ1eSBvciBzZWxsIHdpdGggaGltLiIsIGs6IFsiUm9iIEJlcmdlcm9uIiwgIlJvYiBCZXJnZXJvbiBSZWFsdG9yIExvdWlzdmlsbGUiLCAiV2lubmVyIFJlYWx0eSBvd25lciIsICJ0aGUgcmVhbHRvcidzIHJlYWx0b3IiLCAiTG91aXN2aWxsZSBLZW50dWNreSBSZWFsdG9yIl19LAoiL2tlbnR1Y2t5LWFncmljdWx0dXJhbC1leGVtcHRpb24tcHJvcGVydHktdGF4LWd1aWRlIjoge2g6ICJLZW50dWNreSBBZ3JpY3VsdHVyYWwgRXhlbXB0aW9uIEd1aWRlIGZvciBGYXJtICYgTGFuZCBCdXllcnMiLCBkOiAiSG93IEtlbnR1Y2t5J3MgYWdyaWN1bHR1cmFsIGV4ZW1wdGlvbiB3b3JrcyBmb3IgZmFybSBhbmQgYWNyZWFnZSBidXllcnMg4oCUIG1pbmltdW0gYWNyZWFnZSByZXF1aXJlbWVudHMsIHRoZSBNYXJjaCAxIGRlYWRsaW5lLCBhbmQgaG93IHRvIGFwcGx5IHRocm91Z2ggeW91ciBjb3VudHkgUFZBIG9mZmljZS4iLCBrOiBbIktlbnR1Y2t5IEFncmljdWx0dXJhbCBFeGVtcHRpb24gR3VpZGUgZm9yIEZhcm0gJiBMYW5kIEJ1eWVycyIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvamNwcy1zY2hvb2wtem9uZXMtbG91aXN2aWxsZS1ob21lLWJ1eWVycyI6IHtoOiAiSkNQUyBTY2hvb2wgWm9uZXMgJiBDaG9pY2UgWm9uZXMgaW4gTG91aXN2aWxsZSIsIGQ6ICJIb3cgSkNQUyBhc3NpZ25zIHNjaG9vbHMgYnkgYWRkcmVzcywgd2hhdCBhIENob2ljZSBab25lIG1lYW5zIGZvciBidXllcnMsIGFuZCB3aGVyZSB0byBmaW5kIG9mZmljaWFsIEtlbnR1Y2t5IHNjaG9vbCBkYXRhIGJlZm9yZSB5b3UgYnV5IGluIExvdWlzdmlsbGUuIiwgazogWyJKQ1BTIFNjaG9vbCBab25lcyAmIENob2ljZSBab25lcyBpbiBMb3Vpc3ZpbGxlIiwgIldpbm5lciBSZWFsdHkiLCAiTG91aXN2aWxsZSBLZW50dWNreSByZWFsIGVzdGF0ZSJdfSwKIi9mYWlyLWhvdXNpbmctYWN0LWdyb3VwLWhvbWVzLXJlY292ZXJ5LXJlc2lkZW5jZXMtbG91aXN2aWxsZSI6IHtoOiAiRmFpciBIb3VzaW5nIEFjdCBQcm90ZWN0aW9ucyBmb3IgR3JvdXAgSG9tZXMgaW4gTG91aXN2aWxsZSIsIGQ6ICJDaXR5IG9mIEVkbW9uZHMgdi4gT3hmb3JkIEhvdXNlLCByZWFzb25hYmxlIGFjY29tbW9kYXRpb24gcmVxdWVzdHMsIGFuZCBGYWlyIEhvdXNpbmcgQWN0IHByb3RlY3Rpb25zIGZvciBncm91cCBob21lcyBhbmQgcmVjb3ZlcnkgcmVzaWRlbmNlcyBpbiBMb3Vpc3ZpbGxlLCBLWSDigJQgZXhwbGFpbmVkIGZvciBvcGVyYXRvcnMgYW5kIGludmVzdG9ycy4iLCBrOiBbIkZhaXIgSG91c2luZyBBY3QgUHJvdGVjdGlvbnMgZm9yIEdyb3VwIEhvbWVzIGluIExvdWlzdmlsbGUiLCAiV2lubmVyIFJlYWx0eSIsICJMb3Vpc3ZpbGxlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIl19LAoiL2xvdWlzdmlsbGUtZmxvb2Qtem9uZXMtd2hhdC1ob21lLWJ1eWVycy1uZWVkLXRvLWtub3ciOiB7aDogIkxvdWlzdmlsbGUgRmxvb2QgWm9uZXM6IEJ1eWVyIEd1aWRlIiwgZDogIkhvdyB0byBjaGVjayBMb3Vpc3ZpbGxlIGZsb29kIHpvbmVzIGJlZm9yZSB5b3Ugb2ZmZXI6IE1TRCBkZXRlcm1pbmF0aW9uLCBMT0pJQyBsYXllcnMsIEZFTUEgbWFwcywgaW5zdXJhbmNlIGNvc3RzIGFuZCB0aGUgY2hlY2tsaXN0IHRoYXQgc2F2ZXMgYnV5ZXJzIG1vbmV5LiIsIGs6IFsiTG91aXN2aWxsZSBGbG9vZCBab25lcyIsICJCdXllciBHdWlkZSIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvaGFuZC1pbi1oYW5kLW1pbmlzdHJpZXMtbG91aXN2aWxsZSI6IHtoOiAiSGFuZCBpbiBIYW5kIE1pbmlzdHJpZXMgTG91aXN2aWxsZSIsIGQ6ICJIYW5kIGluIEhhbmQgTWluaXN0cmllczogaGlzdG9yeSwgbWlzc2lvbiwgUm9iIEJlcmdlcm9uJ3MgZml2ZSBidWlsZCB0cmlwcywgYW5kIFdpbm5lciBSZWFsdHkncyBnb2FsIHRvIGZ1bmQgb25lIEhhbmQgaW4gSGFuZCBob21lIGEgbW9udGgsIGZvcmV2ZXIuIiwgazogWyJIYW5kIGluIEhhbmQgTWluaXN0cmllcyBMb3Vpc3ZpbGxlIiwgIldpbm5lciBSZWFsdHkiLCAiTG91aXN2aWxsZSBLZW50dWNreSByZWFsIGVzdGF0ZSJdfSwKIi9zaGVsYnktcGFyay1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjoge2g6ICJTaGVsYnkgUGFyaywgTG91aXN2aWxsZSBLWSBSZWFsIEVzdGF0ZSBHdWlkZSIsIGQ6ICJTaGVsYnkgUGFyaywgTG91aXN2aWxsZSBLWSAoNDAyMDQpOiBzaG90Z3VuIGhvdXNlIHN0b2NrLCBwcmljZXMgdmVyc3VzIG5laWdoYm9yaW5nIEdlcm1hbnRvd24tU2Nobml0emVsYnVyZywgd2hhdCB0byBpbnNwZWN0LCBhbmQgd2hvJ3MgYnV5aW5nIGluIDIwMjYuIiwgazogWyJTaGVsYnkgUGFyaywgTG91aXN2aWxsZSBLWSBSZWFsIEVzdGF0ZSBHdWlkZSIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvbG91aXN2aWxsZXMtaW5kZXBlbmRlbnQtcmVzdGF1cmFudC1zY2VuZS10aGUtbmF0aW9uYWwtcmVjb2duaXRpb24tYW5kLXRoZS1uZWlnaGJvcmhvb2RzLXdoZXJlLXlvdS1jYW4td2Fsay10by1pdC04NTI5NjEiOiB7aDogIkxvdWlzdmlsbGUncyBJbmRlcGVuZGVudCBSZXN0YXVyYW50IFNjZW5lOiBUaGUgTmF0aW9uYWwgUmVjb2duaXRpb24sIGFuZCB0aGUgTmVpZ2hib3Job29kcyBXaGVyZSBZb3UgQ2FuIFdhbGsgdG8gSXQiLCBkOiAiQSBOWVQgVG9wIDUwIHBpY2ssIGEgSmFtZXMgQmVhcmQgZmluYWxpc3QsIGFuZCBCZWFyZCBzZW1pZmluYWxpc3RzIHRocmVlIHllYXJzIHJ1bm5pbmc6IHRoZSBMb3Vpc3ZpbGxlIG5laWdoYm9yaG9vZHMgd2hlcmUgeW91IGNhbiB3YWxrIHRvIGRpbm5lci4iLCBrOiBbIkxvdWlzdmlsbGUncyBJbmRlcGVuZGVudCBSZXN0YXVyYW50IFNjZW5lIiwgIlRoZSBOYXRpb25hbCBSZWNvZ25pdGlvbiwgYW5kIHRoZSBOZWlnaGJvcmhvb2RzIFdoZXJlIFlvdSBDYW4gV2FsayB0byBJdCIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvdGVuYW50LXBsYWNlbWVudC1zZXJ2aWNlcy1pbi1sb3Vpc3ZpbGxlIjoge2g6ICJUZW5hbnQgUGxhY2VtZW50IFNlcnZpY2VzIGluIExvdWlzdmlsbGUsIEtZIiwgZDogIkhhdmUgYSB2YWNhbmN5IHRvIGZpbGw/IFdpbm5lciBSZWFsdHkgcGxhY2VzIHF1YWxpZmllZCwgc2NyZWVuZWQgdGVuYW50cyBpbiBzaW5nbGUtZmFtaWx5LCBtdWx0aWZhbWlseSwgYW5kIGNvbW1lcmNpYWwgcHJvcGVydGllcyBhY3Jvc3MgS2VudHVja3kuIiwgazogWyJUZW5hbnQgUGxhY2VtZW50IFNlcnZpY2VzIGluIExvdWlzdmlsbGUsIEtZIiwgIldpbm5lciBSZWFsdHkiLCAiTG91aXN2aWxsZSBLZW50dWNreSByZWFsIGVzdGF0ZSJdfSwKIi90cmF2ZWwtbnVyc2UtaG91c2luZy1ub3J0b24taGVhbHRoY2FyZS1sb3Vpc3ZpbGxlIjoge2g6ICJUcmF2ZWwgTnVyc2UgSG91c2luZyBOZWFyIE5vcnRvbiBIZWFsdGhjYXJlIHwgTG91aXN2aWxsZSwgS1kiLCBkOiAiQSBndWlkZSB0byBmdXJuaXNoZWQsIGNvbnRyYWN0LWxlbmd0aCBob3VzaW5nIG5lYXIgTm9ydG9uIEhlYWx0aGNhcmUncyBMb3Vpc3ZpbGxlIGhvc3BpdGFsIGNhbXB1c2VzIOKAlCBmb3IgdHJhdmVsIG51cnNlcyBhbmQgdGhlIG93bmVycyByZW50aW5nIHRvIHRoZW0uIiwgazogWyJUcmF2ZWwgTnVyc2UgSG91c2luZyBOZWFyIE5vcnRvbiBIZWFsdGhjYXJlIiwgIkxvdWlzdmlsbGUsIEtZIiwgIldpbm5lciBSZWFsdHkiLCAiTG91aXN2aWxsZSBLZW50dWNreSByZWFsIGVzdGF0ZSJdfSwKIi9jb3Jwb3JhdGUtcmVsb2NhdGlvbi1ob3VzaW5nLXVwcy1mb3JkLWdlLWFwcGxpYW5jZXMtbG91aXN2aWxsZSI6IHtoOiAiQ29ycG9yYXRlIFJlbG9jYXRpb24gSG91c2luZyBOZWFyIFVQUywgRm9yZCAmIEdFIHwgTG91aXN2aWxsZSwgS1kiLCBkOiAiRnVybmlzaGVkLCBjb250cmFjdC1sZW5ndGggaG91c2luZyBmb3IgZW1wbG95ZWVzIHJlbG9jYXRpbmcgdG8gVVBTIFdvcmxkcG9ydCwgRm9yZCdzIExvdWlzdmlsbGUgcGxhbnRzLCBvciBHRSBBcHBsaWFuY2VzJyBBcHBsaWFuY2UgUGFyay4iLCBrOiBbIkNvcnBvcmF0ZSBSZWxvY2F0aW9uIEhvdXNpbmcgTmVhciBVUFMsIEZvcmQgJiBHRSIsICJMb3Vpc3ZpbGxlLCBLWSIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvMTAzMS1leGNoYW5nZS1rZW50dWNreS1mYXJtLWxhbmQtc2VsbGVycyI6IHtoOiAiMTAzMSBFeGNoYW5nZXMgZm9yIEtlbnR1Y2t5IEZhcm0gJiBMYW5kIFNlbGxlcnMiLCBkOiAiU2VsbGluZyBmYXJtbGFuZCBvciBsYW5kIG5lYXIgTG91aXN2aWxsZSwgS1k/IEEgcGxhaW4tbGFuZ3VhZ2UgZ3VpZGUgdG8gMTAzMSBleGNoYW5nZXMg4oCUIGRlYWRsaW5lcywgcXVhbGlmaWVkIGludGVybWVkaWFyaWVzLCBhbmQgcmVwbGFjZW1lbnQgcHJvcGVydHkgc3RyYXRlZ2llcyBmb3IgS2VudHVja3kgc2VsbGVycy4iLCBrOiBbIjEwMzEgRXhjaGFuZ2VzIGZvciBLZW50dWNreSBGYXJtICYgTGFuZCBTZWxsZXJzIiwgIldpbm5lciBSZWFsdHkiLCAiTG91aXN2aWxsZSBLZW50dWNreSByZWFsIGVzdGF0ZSJdfSwKIi9jcmVkaXQtcmVwYWlyLWJlZm9yZS1idXlpbmctYS1ob3VzZS1rZW50dWNreSI6IHtoOiAiSG93IHRvIFJlcGFpciBZb3VyIENyZWRpdCBCZWZvcmUgQnV5aW5nIGluIEtlbnR1Y2t5IiwgZDogIk5vdCByZWFkeSB0byBidXkgeWV0PyBIZXJlJ3MgaG93IHRvIHJlcGFpciB5b3VyIGNyZWRpdCwgd2hhdCB0byBkbyB5b3Vyc2VsZiwgYW5kIHR3byB0cnVzdGVkIExvdWlzdmlsbGUgY3JlZGl0IHJlcGFpciBjb21wYW5pZXMgdG8gY2FsbC4iLCBrOiBbIkhvdyB0byBSZXBhaXIgWW91ciBDcmVkaXQgQmVmb3JlIEJ1eWluZyBpbiBLZW50dWNreSIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvaGlrZXMtcG9pbnQtbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtZ3VpZGUiOiB7aDogIkhpa2VzIFBvaW50IExvdWlzdmlsbGUgSG9tZSBQcmljZXMgMjAyNiIsIGQ6ICJTZWUgMjAyNiBIaWtlcyBQb2ludCBMb3Vpc3ZpbGxlIGhvbWVzIGZvciBzYWxlIGRhdGE6IG1lZGlhbiBwcmljZSwgZGF5cyBvbiBtYXJrZXQsIGFuZCB3aGF0J3MgYWN0dWFsbHkgc2VsbGluZyBpbiBaSVAgNDAyMjAsIGZyb20gV2lubmVyIFJlYWx0eS4iLCBrOiBbIkhpa2VzIFBvaW50IExvdWlzdmlsbGUgSG9tZSBQcmljZXMgMjAyNiIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvc2hvcnQtc2FsZS1rZW50dWNreS1ndWlkZSI6IHtoOiAiU2hvcnQgU2FsZSBpbiBLZW50dWNreTogUHJvY2VzcywgVGltZWxpbmUgJiBEZWZpY2llbmN5IFJ1bGVzIiwgZDogIkhvdyBhIHNob3J0IHNhbGUgd29ya3MgaW4gS2VudHVja3ksIGhvdyBpdCBjb21wYXJlcyB0byBqdWRpY2lhbCBmb3JlY2xvc3VyZSBhbmQgZGVmaWNpZW5jeSBqdWRnbWVudHMsIGFuZCB3aHkgc2VsbGVycyB3b3JrIHdpdGggV2lubmVyIFJlYWx0eSB0byBuZWdvdGlhdGUgb25lLiIsIGs6IFsiU2hvcnQgU2FsZSBpbiBLZW50dWNreSIsICJQcm9jZXNzLCBUaW1lbGluZSAmIERlZmljaWVuY3kgUnVsZXMiLCAiV2lubmVyIFJlYWx0eSIsICJMb3Vpc3ZpbGxlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIl19LAoiL2plZmZlcnNvbnRvd24tbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtZ3VpZGUiOiB7aDogIkplZmZlcnNvbnRvd24gTG91aXN2aWxsZSBIb21lIFByaWNlcyAyMDI2IiwgZDogIlNlZSAyMDI2IEplZmZlcnNvbnRvd24gTG91aXN2aWxsZSBob21lcyBmb3Igc2FsZSBkYXRhOiBtZWRpYW4gcHJpY2UsIGRheXMgb24gbWFya2V0LCBhbmQgd2hhdCdzIGFjdHVhbGx5IHNlbGxpbmcgaW4gWklQIDQwMjk5LCBmcm9tIFdpbm5lciBSZWFsdHkuIiwgazogWyJKZWZmZXJzb250b3duIExvdWlzdmlsbGUgSG9tZSBQcmljZXMgMjAyNiIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvbWlkdGVybS1yZW50YWxzLWxvdWlzdmlsbGUtZ3VpZGUiOiB7aDogIk1pZHRlcm0gUmVudGFscyBpbiBMb3Vpc3ZpbGxlLCBLWTogVGhlIENvbXBsZXRlIDIwMjYgR3VpZGUiLCBkOiAiRXZlcnl0aGluZyByZW50ZXJzLCBvd25lcnMsIGFuZCBpbnZlc3RvcnMgbmVlZCB0byBrbm93IGFib3V0IG1pZHRlcm0gKDMwLWRheSB0byAxMi1tb250aCkgZnVybmlzaGVkIHJlbnRhbHMgaW4gTG91aXN2aWxsZSwgS1kg4oCUIHdobyBuZWVkcyB0aGVtLCB3aGF0IHRoZXkgY29zdCwgYW5kIGhvdyB0byBnZXQgb25lLiIsIGs6IFsiTWlkdGVybSBSZW50YWxzIGluIExvdWlzdmlsbGUsIEtZIiwgIlRoZSBDb21wbGV0ZSAyMDI2IEd1aWRlIiwgIldpbm5lciBSZWFsdHkiLCAiTG91aXN2aWxsZSBLZW50dWNreSByZWFsIGVzdGF0ZSJdfSwKIi9sYWtlLWZvcmVzdC1sb3Vpc3ZpbGxlLWt5LXJlYWwtZXN0YXRlLWd1aWRlIjoge2g6ICJMYWtlIEZvcmVzdCwgTG91aXN2aWxsZSBLWSBSZWFsIEVzdGF0ZSBHdWlkZSIsIGQ6ICJMYWtlIEZvcmVzdCwgTG91aXN2aWxsZSBLWSAoNDAyNDUpOiBob21lcyBhcm91bmQgTGFrZSBGb3Jlc3QgQ291bnRyeSBDbHViLCBwcmljZXMgdmVyc3VzIEFuY2hvcmFnZSBhbmQgR2xlbnZpZXcsIHNjaG9vbHMsIGFuZCB3aG8ncyBidXlpbmcgaW4gMjAyNi4iLCBrOiBbIkxha2UgRm9yZXN0LCBMb3Vpc3ZpbGxlIEtZIFJlYWwgRXN0YXRlIEd1aWRlIiwgIldpbm5lciBSZWFsdHkiLCAiTG91aXN2aWxsZSBLZW50dWNreSByZWFsIGVzdGF0ZSJdfSwKIi9sb3Vpc3ZpbGxlLW5laWdoYm9yaG9vZHMtd2hlcmUtaG9tZXMtYXJlLXNlbGxpbmciOiB7aDogIkxvdWlzdmlsbGUgTmVpZ2hib3Job29kcyBSYW5rZWQgYnkgSG9tZXMgU29sZCAoMjAyNikiLCBkOiAiVGhlIDEwIExvdWlzdmlsbGUsIEtZIG5laWdoYm9yaG9vZHMgd2l0aCB0aGUgbW9zdCBob21lIHNhbGVzIGluIHRoZSBsYXN0IDEyIG1vbnRocywgcmFua2VkIGZyb20gTUxTIGRhdGEg4oCUIHByaWNlcywgZGF5cyBvbiBtYXJrZXQsIHN1cHBseSwgYW5kIGEgZ3VpZGUgdG8gZWFjaC4iLCBrOiBbIkxvdWlzdmlsbGUgTmVpZ2hib3Job29kcyBSYW5rZWQgYnkgSG9tZXMgU29sZCAoMjAyNikiLCAiV2lubmVyIFJlYWx0eSIsICJMb3Vpc3ZpbGxlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIl19LAoiL3N0LW1hdHRoZXdzLWxvdWlzdmlsbGUtbmVpZ2hib3Job29kLWd1aWRlIjoge2g6ICJTdC4gTWF0dGhld3MgTG91aXN2aWxsZSBIb21lcyIsIGQ6ICJTdC4gTWF0dGhld3MsIExvdWlzdmlsbGUgaG9tZSBwcmljZXMsIHdoYXQncyBzZWxsaW5nIGluIFpJUCA0MDIwNywgYW5kIHdobyBzaG91bGQgYnV5IGhlcmUgaW4gMjAyNiAtLSB0aGUgbmVpZ2hib3Job29kIGd1aWRlIGZyb20gV2lubmVyIFJlYWx0eS4iLCBrOiBbIlN0LiBNYXR0aGV3cyBMb3Vpc3ZpbGxlIEhvbWVzIiwgIldpbm5lciBSZWFsdHkiLCAiTG91aXN2aWxsZSBLZW50dWNreSByZWFsIGVzdGF0ZSJdfSwKIi9hbm9ueW1vdXMtbW9udGhseS1hZ2VudC1mZWVkYmFjayI6IHtoOiAiQW5vbnltb3VzIE1vbnRobHkgQWdlbnQgRmVlZGJhY2siLCBkOiAiRXZlcnkgbW9udGgsIFdpbm5lciBSZWFsdHkgYWdlbnRzIGdldCBhIHR3by1taW51dGUgYW5vbnltb3VzIHN1cnZleSB0byBzaGFyZSBpZGVhcyBhbmQgZmVlZGJhY2sg4oCUIG5vIG5hbWUsIG5vIGVtYWlsLCBubyBzaWduLWluLiBIZXJlJ3Mgd2h5LiIsIGs6IFsiQW5vbnltb3VzIE1vbnRobHkgQWdlbnQgRmVlZGJhY2siLCAiV2lubmVyIFJlYWx0eSIsICJMb3Vpc3ZpbGxlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIl19LAoiL2lzLWxvdWlzdmlsbGUtYS1nb29kLXBsYWNlLXRvLWludmVzdC1pbi1yZWFsLWVzdGF0ZSI6IHtoOiAiSXMgTG91aXN2aWxsZSBhIEdvb2QgUGxhY2UgdG8gSW52ZXN0IGluIFJlYWwgRXN0YXRlPyIsIGQ6ICJJcyBMb3Vpc3ZpbGxlIGEgZ29vZCBwbGFjZSB0byBpbnZlc3QgaW4gcmVhbCBlc3RhdGU/IFllczogc3Ryb25nIGNhc2ggZmxvdywgYSAzLjUlIGZsYXQgdGF4IHJhdGUsIGFuZCBwcmljZXMgdGhhdCBiYXJlbHkgZGlwcGVkIGluIDIwMDguIFRoZSBtYXRoLCBleHBsYWluZWQuIiwgazogWyJJcyBMb3Vpc3ZpbGxlIGEgR29vZCBQbGFjZSB0byBJbnZlc3QgaW4gUmVhbCBFc3RhdGU/IiwgIldpbm5lciBSZWFsdHkiLCAiTG91aXN2aWxsZSBLZW50dWNreSByZWFsIGVzdGF0ZSJdfSwKIi9mdXJuaXNoaW5nLWNvc3QtbWlkdGVybS1yZW50YWwtbG91aXN2aWxsZSI6IHtoOiAiV2hhdCBJdCBDb3N0cyB0byBGdXJuaXNoIGEgTWlkdGVybSBSZW50YWwgfCBMb3Vpc3ZpbGxlLCBLWSIsIGQ6ICJJdGVtaXplZCAyMDI2IGNvc3RzIHRvIGZ1cm5pc2ggYSBMb3Vpc3ZpbGxlIHJlbnRhbCBmb3IgbWlkdGVybSB0ZW5hbnRzIOKAlCBidXkgdnMuIHJlbnQgZnVybml0dXJlLCByb29tLWJ5LXJvb20gYnVkZ2V0IGJyZWFrZG93biwgYW5kIHRoZSByZWFsIHBheWJhY2sgbWF0aC4iLCBrOiBbIldoYXQgSXQgQ29zdHMgdG8gRnVybmlzaCBhIE1pZHRlcm0gUmVudGFsIiwgIkxvdWlzdmlsbGUsIEtZIiwgIldpbm5lciBSZWFsdHkiLCAiTG91aXN2aWxsZSBLZW50dWNreSByZWFsIGVzdGF0ZSJdfSwKIi9pcm9xdW9pcy1zb3V0aC1lbmQtbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtZ3VpZGUiOiB7aDogIklyb3F1b2lzIFBhcmsgJiBTb3V0aCBFbmQgTG91aXN2aWxsZSBIb21lcyB8IDIwMjYiLCBkOiAiSXJvcXVvaXMgUGFyayAmIHRoZSBTb3V0aCBFbmQsIExvdWlzdmlsbGUgKFpJUCA0MDIxNCk6IDIwMjYgaG9tZSBwcmljZXMsIHdoYXQncyBzZWxsaW5nLCBkYXlzIG9uIG1hcmtldCwgYW5kIHdobyBzaG91bGQgYnV5IGhlcmUg4oCUIHRoZSBmdWxsIGxvY2FsIGd1aWRlLiIsIGs6IFsiSXJvcXVvaXMgUGFyayAmIFNvdXRoIEVuZCBMb3Vpc3ZpbGxlIEhvbWVzIiwgIjIwMjYiLCAiV2lubmVyIFJlYWx0eSIsICJMb3Vpc3ZpbGxlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIl19LAoiL2plZmZlcnNvbi1jb3VudHktcHJvcGVydHktdGF4LWFzc2Vzc21lbnQtYXBwZWFsIjoge2g6ICJKZWZmZXJzb24gQ291bnR5IFByb3BlcnR5IFRheCBBcHBlYWwgR3VpZGUiLCBkOiAiQSBKZWZmZXJzb24gQ291bnR5IHByb3BlcnR5IHRheCBhc3Nlc3NtZW50IGFwcGVhbCB3YWxrdGhyb3VnaCBmb3IgTG91aXN2aWxsZSwgS2VudHVja3kgb3duZXJzOiBQVkEgY29uZmVyZW5jZSBzdGVwcywgZGVhZGxpbmVzLCBhbmQgZXZpZGVuY2UgdGhhdCB3b3Jrcy4iLCBrOiBbIkplZmZlcnNvbiBDb3VudHkgUHJvcGVydHkgVGF4IEFwcGVhbCBHdWlkZSIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvdHJhdmVsLW51cnNlLWhvdXNpbmctdW9mbC1oZWFsdGgtamV3aXNoLWhvc3BpdGFsLWxvdWlzdmlsbGUiOiB7aDogIlRyYXZlbCBOdXJzZSBIb3VzaW5nIE5lYXIgVW9mTCBIZWFsdGggfCBMb3Vpc3ZpbGxlLCBLWSIsIGQ6ICJBIGd1aWRlIHRvIGZ1cm5pc2hlZCwgY29udHJhY3QtbGVuZ3RoIGhvdXNpbmcgbmVhciBVb2ZMIEhlYWx0aCdzIGRvd250b3duIG1lZGljYWwgY2FtcHVzLCBNYXJ5ICYgRWxpemFiZXRoIEhvc3BpdGFsLCBhbmQgUGVhY2UgSG9zcGl0YWwg4oCUIGZvciB0cmF2ZWwgbnVyc2VzIGFuZCB0aGUgb3duZXJzIHJlbnRpbmcgdG8gdGhlbS4iLCBrOiBbIlRyYXZlbCBOdXJzZSBIb3VzaW5nIE5lYXIgVW9mTCBIZWFsdGgiLCAiTG91aXN2aWxsZSwgS1kiLCAiV2lubmVyIFJlYWx0eSIsICJMb3Vpc3ZpbGxlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIl19LAoiL21vY2tpbmdiaXJkLXZhbGxleS1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6IHtoOiAiTW9ja2luZ2JpcmQgVmFsbGV5LCBLWSBSZWFsIEVzdGF0ZSBHdWlkZSIsIGQ6ICJNb2NraW5nYmlyZCBWYWxsZXksIEtZICg0MDIwNyk6IG9uZSBvZiBLZW50dWNreSdzIHNtYWxsZXN0IGluY29ycG9yYXRlZCBjaXRpZXMsIFJpdmVyIFJvYWQgY29ycmlkb3IgaG9tZXMgbmVhciBJbmRpYW4gSGlsbHMgYW5kIEFuY2hvcmFnZS4iLCBrOiBbIk1vY2tpbmdiaXJkIFZhbGxleSwgS1kgUmVhbCBFc3RhdGUgR3VpZGUiLCAiV2lubmVyIFJlYWx0eSIsICJMb3Vpc3ZpbGxlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIl19LAoiL2Jlc3QtdGltZS10by1zZWxsLWEtaG91c2UtaW4tbG91aXN2aWxsZSI6IHtoOiAiQmVzdCBUaW1lIHRvIFNlbGwgYSBIb3VzZSBpbiBMb3Vpc3ZpbGxlIiwgZDogIlRoZSBiZXN0IHRpbWUgdG8gc2VsbCBhIGhvdXNlIGluIExvdWlzdmlsbGUsIGZyb20gMjQgbW9udGhzIG9mIEplZmZlcnNvbiBDb3VudHkgTUxTIGRhdGEg4oCUIHRoZSBtb250aC1ieS1tb250aCB0YWJsZSwgYW5kIHdoeSBmYWxsIG1heSBiZWF0IHNwcmluZy4iLCBrOiBbIkJlc3QgVGltZSB0byBTZWxsIGEgSG91c2UgaW4gTG91aXN2aWxsZSIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvbG91aXN2aWxsZXMtdmljdG9yaWFuLWhvbWVzLXdoeS1vbGQtbG91aXN2aWxsZS1zdGFuZHMtb3V0LW5hdGlvbmFsbHktYW5kLWhvdy10by1idXktb25lLTg1Mjk2MCI6IHtoOiAiTG91aXN2aWxsZSdzIFZpY3RvcmlhbiBIb21lczogV2h5IE9sZCBMb3Vpc3ZpbGxlIFN0YW5kcyBPdXQgTmF0aW9uYWxseSwgYW5kIEhvdyB0byBCdXkgT25lIiwgZDogIlBsYW5uZXJzIGNhbGwgT2xkIExvdWlzdmlsbGUgdGhlIGxhcmdlc3QgY29sbGVjdGlvbiBvZiBWaWN0b3JpYW4gbWFuc2lvbnMgaW4gdGhlIFUuUy4gV2hlcmUgTG91aXN2aWxsZSdzIFZpY3RvcmlhbnMgYXJlIGFuZCB3aGF0IGJ1eWVycyBzaG91bGQga25vdy4iLCBrOiBbIkxvdWlzdmlsbGUncyBWaWN0b3JpYW4gSG9tZXMiLCAiV2h5IE9sZCBMb3Vpc3ZpbGxlIFN0YW5kcyBPdXQgTmF0aW9uYWxseSwgYW5kIEhvdyB0byBCdXkgT25lIiwgIldpbm5lciBSZWFsdHkiLCAiTG91aXN2aWxsZSBLZW50dWNreSByZWFsIGVzdGF0ZSJdfSwKIi9sb3Vpc3ZpbGxlLXZzLW5hc2h2aWxsZS1yZWFsLWVzdGF0ZSI6IHtoOiAiTG91aXN2aWxsZSB2cyBOYXNodmlsbGUgUmVhbCBFc3RhdGUiLCBkOiAiTG91aXN2aWxsZSB2cyBOYXNodmlsbGUgcmVhbCBlc3RhdGUsIGNvbXBhcmVkIHdpdGggMjAyNiBkYXRhOiAkMjc5LDgxNSB2cyAkNDc1LDUzOCBtZWRpYW4gcHJpY2UsIDM3IHZzIDY0IGRheXMgb24gbWFya2V0LCBhbmQgdGhlIHRheCBtYXRoIG5vYm9keSBydW5zLiBTZWUgaXQuIiwgazogWyJMb3Vpc3ZpbGxlIHZzIE5hc2h2aWxsZSBSZWFsIEVzdGF0ZSIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvc2hlbGJ5LWNvdW50eS1reS1yZWFsLWVzdGF0ZS1ndWlkZSI6IHtoOiAiU2hlbGJ5IENvdW50eSwgS1kgUmVhbCBFc3RhdGUgR3VpZGUgKDIwMjYpIiwgZDogIlNoZWxieSBDb3VudHkgcmVhbCBlc3RhdGUgZ3VpZGU6IGN1cnJlbnQgbWFya2V0IHN0YXRzLCB0b3duLWJ5LXRvd24gYnJlYWtkb3duLCB0aGUgbmV3IGJhdHRlcnkgcGxhbnQsIFNhZGRsZWJyZWQgaGVyaXRhZ2UsIGFuZCB3aGF0IGJ1eWVycyBhbmQgc2VsbGVycyBzaG91bGQga25vdy4iLCBrOiBbIlNoZWxieSBDb3VudHksIEtZIFJlYWwgRXN0YXRlIEd1aWRlICgyMDI2KSIsICJXaW5uZXIgUmVhbHR5IiwgIkxvdWlzdmlsbGUgS2VudHVja3kgcmVhbCBlc3RhdGUiXX0sCiIvd2h5LXdpbm5lci1yZWFsdHkiOiB7aDogIldoeSBXaW5uZXIgUmVhbHR5OiBUaGUgR3VhcmFudGVlcyBCZWhpbmQgT3VyIFN5c3RlbXMiLCBkOiAiV2lubmVyIFJlYWx0eSBiYWNrcyBpdHMgcHJvbWlzZXMgd2l0aCBuYW1lZCBndWFyYW50ZWVzLCBsaWtlIHRoZSAzLURheSBMaXN0aW5nIEd1YXJhbnRlZSBhbmQgMTUtTWludXRlIFJlc3BvbnNlIFJ1bGUsIGluIExvdWlzdmlsbGUgYW5kIFNvdXRoZXJuIEluZGlhbmEuIiwgazogWyJXaW5uZXIgUmVhbHR5IGd1YXJhbnRlZXMiLCIzLURheSBMaXN0aW5nIEd1YXJhbnRlZSIsIjE1LU1pbnV0ZSBSZXNwb25zZSBSdWxlIiwiTG91aXN2aWxsZSByZWFsIGVzdGF0ZSBicm9rZXJhZ2UiLCJXaW5uZXIgUmVhbHR5IExvdWlzdmlsbGUgS1kiXX0sCiIvcmVsb2NhdGlvbi1jb3N0LWNhbGN1bGF0b3IiOiB7aDogIlJlbG9jYXRpb24gQ29zdCBDYWxjdWxhdG9yOiBNb3ZpbmcgdG8gTG91aXN2aWxsZSwgS1kiLCBkOiAiRnJlZSByZWxvY2F0aW9uIGNvc3QgY2FsY3VsYXRvciBmb3IgcGVvcGxlIG1vdmluZyB0byBMb3Vpc3ZpbGxlLCBLZW50dWNreS4gRXN0aW1hdGUgbW92aW5nIGNvc3RzLCB2ZWhpY2xlIHNoaXBwaW5nLCBhbmQgS2VudHVja3kgYnV5ZXIgY2xvc2luZyBjb3N0cyBpbiBvbmUgYnVkZ2V0LiIsIGs6IFsicmVsb2NhdGlvbiBjb3N0IGNhbGN1bGF0b3IiLCJtb3ZpbmcgdG8gTG91aXN2aWxsZSBLZW50dWNreSIsIm1vdmluZyBjb3N0IGVzdGltYXRvciIsIktlbnR1Y2t5IHJlbG9jYXRpb24iXX0sCiIvbG91aXN2aWxsZS1zdWJ1cmItbWF0Y2gtcXVpeiI6IHtoOiAiTG91aXN2aWxsZSBTdWJ1cmIgTWF0Y2ggUXVpejogRmluZCBZb3VyIE5laWdoYm9yaG9vZCIsIGQ6ICJBbnN3ZXIgYSBmZXcgcXVpY2sgbGlmZXN0eWxlIHF1ZXN0aW9ucyBhbmQgc2VlIGhvdyBldmVyeSBMb3Vpc3ZpbGxlLWFyZWEgY29tbXVuaXR5IG1hdGNoZXMgeW91ciBjb21tdXRlLCBzZXR0aW5nLCBidWRnZXQsIGFuZCBwcmlvcml0aWVzLiIsIGs6IFsiTG91aXN2aWxsZSBzdWJ1cmJzIHF1aXoiLCJiZXN0IExvdWlzdmlsbGUgbmVpZ2hib3Job29kIGZvciBtZSIsIkxvdWlzdmlsbGUgc3VidXJiIGNvbXBhcmlzb24iLCJ3aGVyZSB0byBsaXZlIExvdWlzdmlsbGUgS1kiXX0sCiIvbW9udGhseS1tb3J0Z2FnZS1wYXltZW50LWNhbGN1bGF0b3Ita2VudHVja3kiOiB7aDogIk1vbnRobHkgTW9ydGdhZ2UgUGF5bWVudCBDYWxjdWxhdG9yIiwgZDogIkZyZWUgS2VudHVja3kgbW9ydGdhZ2UgcGF5bWVudCBjYWxjdWxhdG9yLiBFc3RpbWF0ZSBwcmluY2lwYWwsIGludGVyZXN0LCB0YXhlcywgaW5zdXJhbmNlLCBQTUksIGFuZCBIT0EgaW4gb25lIHRvdGFsIG1vbnRobHkgcGF5bWVudC4iLCBrOiBbIm1vcnRnYWdlIHBheW1lbnQgY2FsY3VsYXRvciBLZW50dWNreSIsIm1vbnRobHkgcGF5bWVudCBjYWxjdWxhdG9yIiwiUElUSSBjYWxjdWxhdG9yIiwiTG91aXN2aWxsZSBtb3J0Z2FnZSBjYWxjdWxhdG9yIl19LAoiL3ZhLWxvYW4tY2FsY3VsYXRvci1rZW50dWNreSI6IHtoOiAiVkEgTG9hbiBDYWxjdWxhdG9yOiAkMC1Eb3duIFBheW1lbnQgRXN0aW1hdG9yIiwgZDogIkZyZWUgVkEgbG9hbiBjYWxjdWxhdG9yIGZvciBLZW50dWNreSB2ZXRlcmFucyBhbmQgc2VydmljZSBtZW1iZXJzLiBFc3RpbWF0ZSB5b3VyIFZBIGZ1bmRpbmcgZmVlIGFuZCBtb250aGx5IHBheW1lbnQsIGFuZCBjb21wYXJlIGl0IHRvIDIwJS1kb3duIGNvbnZlbnRpb25hbCBmaW5hbmNpbmcuIiwgazogWyJWQSBsb2FuIGNhbGN1bGF0b3IiLCJWQSBsb2FuIEtlbnR1Y2t5IiwiVkEgZnVuZGluZyBmZWUgY2FsY3VsYXRvciIsInplcm8gZG93biBWQSBsb2FuIExvdWlzdmlsbGUiXX0sCiIvZHNjci1sb2FuLWNhbGN1bGF0b3Ita2VudHVja3kiOiB7aDogIkRTQ1IgTG9hbiBDYWxjdWxhdG9yOiBEb2VzIFlvdXIgUmVudGFsIFF1YWxpZnk/IiwgZDogIkZyZWUgRFNDUiAoZGVidCBzZXJ2aWNlIGNvdmVyYWdlIHJhdGlvKSBjYWxjdWxhdG9yIGZvciBLZW50dWNreSByZWFsIGVzdGF0ZSBpbnZlc3RvcnMuIENoZWNrIHdoZXRoZXIgYSByZW50YWwgcHJvcGVydHkncyBpbmNvbWUgY292ZXJzIGl0cyBvd24gZGVidCBzZXJ2aWNlLiIsIGs6IFsiRFNDUiBsb2FuIGNhbGN1bGF0b3IiLCJEU0NSIGxvYW4gS2VudHVja3kiLCJkZWJ0IHNlcnZpY2UgY292ZXJhZ2UgcmF0aW8gY2FsY3VsYXRvciIsImludmVzdG9yIGxvYW4gcXVhbGlmaWNhdGlvbiJdfSwKIi9pbnZlc3RtZW50LXByb3BlcnR5LWNvbXBhcmlzb24tdG9vbCI6IHtoOiAiSW52ZXN0bWVudCBQcm9wZXJ0eSBDb21wYXJpc29uIFRvb2w6IENhcCBSYXRlLCBDYXNoLW9uLUNhc2ggJiBJUlIiLCBkOiAiQ29tcGFyZSB1cCB0byAzIGludmVzdG1lbnQgcHJvcGVydGllcyBzaWRlIGJ5IHNpZGUgb24gY2FwIHJhdGUsIGNhc2gtb24tY2FzaCByZXR1cm4sIGFuZCBwcm9qZWN0ZWQgSVJSIG92ZXIgeW91ciBob2xkIHBlcmlvZC4iLCBrOiBbImludmVzdG1lbnQgcHJvcGVydHkgY29tcGFyaXNvbiIsImNhcCByYXRlIGNhbGN1bGF0b3IiLCJjYXNoIG9uIGNhc2ggcmV0dXJuIGNhbGN1bGF0b3IiLCJJUlIgY2FsY3VsYXRvciByZWFsIGVzdGF0ZSJdfSwKIi9jcmVjaW1pZW50by1jb211bmlkYWQtaGlzcGFuYS1sb3Vpc3ZpbGxlLWJpZW5lcy1yYWljZXMiOiB7aDogIkVsIENyZWNpbWllbnRvIGRlIGxhIENvbXVuaWRhZCBIaXNwYW5hIGVuIExvdWlzdmlsbGU6IExvIFF1ZSBTaWduaWZpY2EgcGFyYSBlbCBTZWN0b3IgSW5tb2JpbGlhcmlvIiwgZDogIkxvdWlzdmlsbGUgdGllbmUgdW5hIGRlIGxhcyBjb211bmlkYWRlcyBoaXNwYW5hcyBkZSBtw6FzIHLDoXBpZG8gY3JlY2ltaWVudG8gZGVsIHBhw61zLiBMb3MgZGF0b3MgZGVsIGNlbnNvLCBsYSBjb211bmlkYWQgY3ViYW5hLCB5IGxvIHF1ZSBzaWduaWZpY2EgcGFyYSBjb21wcmFyIG8gaW52ZXJ0aXIuIiwgazogWyJjb211bmlkYWQgaGlzcGFuYSBMb3Vpc3ZpbGxlIiwiY3JlY2ltaWVudG8gaGlzcGFubyBLZW50dWNreSIsImJpZW5lcyByYWljZXMgTG91aXN2aWxsZSBlc3Bhbm9sIiwicG9ibGFjaW9uIGN1YmFuYSBMb3Vpc3ZpbGxlIl19LAoiL3JlcGFyYXItY3JlZGl0by1hbnRlcy1kZS1jb21wcmFyLWNhc2Eta2VudHVja3kiOiB7aDogIkPDs21vIFJlcGFyYXIgeSBNZWpvcmFyIFN1IENyw6lkaXRvIEFudGVzIGRlIENvbXByYXIgdW5hIENhc2EgZW4gS2VudHVja3kiLCBkOiAiR3XDrWEgZW4gZXNwYcOxb2wgcGFyYSBtZWpvcmFyIHN1IGNyw6lkaXRvIGFudGVzIGRlIGNvbXByYXIgY2FzYSBlbiBLZW50dWNreTogdXRpbGl6YWNpw7NuLCBoaXN0b3JpYWwgZGUgcGFnb3MsIGN1w6FuZG8gY29udHJhdGFyIHVuIHByb2Zlc2lvbmFsIHkgc3VzIGRlcmVjaG9zIGxlZ2FsZXMuIiwgazogWyJyZXBhcmFyIGNyZWRpdG8gS2VudHVja3kiLCJtZWpvcmFyIGNyZWRpdG8gcGFyYSBjb21wcmFyIGNhc2EiLCJjcmVkaXRvIGVuIGVzcGFub2wgTG91aXN2aWxsZSIsInByZWFwcm9iYWNpb24gaGlwb3RlY2EgY3JlZGl0byJdfSwKIi9wcmVhcHJvYmFjaW9uLWhpcG90ZWNhLWtlbnR1Y2t5LWd1aWEtZW4tZXNwYW5vbCI6IHtoOiAiQ8OzbW8gT2J0ZW5lciBsYSBQcmVhcHJvYmFjacOzbiBkZSB1bmEgSGlwb3RlY2EgZW4gS2VudHVja3k6IEd1w61hIHBhcmEgQ29tcHJhZG9yZXMgZW4gRXNwYcOxb2wiLCBkOiAiR3XDrWEgZW4gZXNwYcOxb2wgcGFyYSBvYnRlbmVyIGxhIHByZWFwcm9iYWNpw7NuIGRlIHVuYSBoaXBvdGVjYSBlbiBLZW50dWNreTogcHVudGFqZXMgbcOtbmltb3MsIHBhZ28gaW5pY2lhbCwgeSBlcnJvcmVzIHF1ZSBwdWVkZW4gaHVuZGlyIHN1IGZpbmFuY2lhbWllbnRvIGFudGVzIGRlbCBjaWVycmUuIiwgazogWyJwcmVhcHJvYmFjaW9uIGhpcG90ZWNhIEtlbnR1Y2t5IiwiaGlwb3RlY2EgZW4gZXNwYW5vbCBMb3Vpc3ZpbGxlIiwiY29tbyBjb21wcmFyIGNhc2EgS2VudHVja3kiLCJwYWdvIGluaWNpYWwgaGlwb3RlY2EiXX0sCiIvY29zdG9zLWRlLWNpZXJyZS1rZW50dWNreS1ndWlhLWVuLWVzcGFub2wiOiB7aDogIkNvc3RvcyBkZSBDaWVycmUgZW4gS2VudHVja3k6IExvIFF1ZSBSZWFsbWVudGUgUGFnYW4gQ29tcHJhZG9yZXMgeSBWZW5kZWRvcmVzICgyMDI2KSIsIGQ6ICJHdcOtYSBlbiBlc3Bhw7FvbCBkZSBsb3MgY29zdG9zIGRlIGNpZXJyZSBlbiBLZW50dWNreSBwYXJhIGNvbXByYWRvcmVzIHkgdmVuZGVkb3JlczogY2lmcmFzIHJlYWxlcywgcXXDqSBlcyBuZWdvY2lhYmxlLCB5IGhhc3RhICQxNCw1MDAgZW4gYXNpc3RlbmNpYSBkZSBLSEMuIiwgazogWyJjb3N0b3MgZGUgY2llcnJlIEtlbnR1Y2t5IiwiY29zdG9zIGRlIGNpZXJyZSBlbiBlc3Bhbm9sIiwiY29tcHJhciBjYXNhIEtlbnR1Y2t5IGdhc3RvcyIsImFzaXN0ZW5jaWEgS0hDIHBhZ28gaW5pY2lhbCJdfSwKIi9hbHF1aWxlci1jb24tb3BjaW9uLWEtY29tcHJhLWtlbnR1Y2t5LWd1aWEtZW4tZXNwYW5vbCI6IHtoOiAiQWxxdWlsZXIgY29uIE9wY2nDs24gYSBDb21wcmEgZW4gS2VudHVja3k6IEPDs21vIEZ1bmNpb25hIHkgUXXDqSBEZWJlIFNhYmVyIiwgZDogIkd1w61hIGVuIGVzcGHDsW9sIHNvYnJlIGVsIGFscXVpbGVyIGNvbiBvcGNpw7NuIGEgY29tcHJhIGVuIEtlbnR1Y2t5OiBjw7NtbyBmdW5jaW9uYW4gbG9zIGNyw6lkaXRvcyBkZSByZW50YSwgbGFzIHNlw7FhbGVzIGRlIGFsZXJ0YSwgeSBjw7NtbyBwcm90ZWdlcnNlIGFudGVzIGRlIGZpcm1hci4iLCBrOiBbImFscXVpbGVyIGNvbiBvcGNpb24gYSBjb21wcmEgS2VudHVja3kiLCJyZW50IHRvIG93biBlbiBlc3Bhbm9sIiwiY29tcHJhciBjYXNhIHNpbiBjcmVkaXRvIEtlbnR1Y2t5IiwiYXJyZW5kYW1pZW50byBjb24gb3BjaW9uIGRlIGNvbXByYSJdfSwKIi9idXllci1hZ2VuY3ktYWdyZWVtZW50LWtlbnR1Y2t5LW5hci1zZXR0bGVtZW50Ijoge2g6ICJCdXllciBBZ2VuY3kgQWdyZWVtZW50cyBpbiBLZW50dWNreTogV2hhdCBDaGFuZ2VkIEFmdGVyIHRoZSBOQVIgU2V0dGxlbWVudCAoMjAyNiBHdWlkZSkiLCBkOiAiV2hhdCBLZW50dWNreSdzIGJ1eWVyIHJlcHJlc2VudGF0aW9uIGFncmVlbWVudCBhY3R1YWxseSByZXF1aXJlcyBhZnRlciB0aGUgTkFSIHNldHRsZW1lbnQsIGhvdyBpdCBkaWZmZXJzIGZyb20gS1JFQydzIGFnZW5jeSBjb25zZW50IGZvcm0sIGFuZCB3aGF0IHRvIGNoZWNrIGJlZm9yZSBzaWduaW5nLiIsIGs6IFsiYnV5ZXIgYWdlbmN5IGFncmVlbWVudCBLZW50dWNreSIsIk5BUiBzZXR0bGVtZW50IGV4cGxhaW5lZCIsImJ1eWVyIHJlcHJlc2VudGF0aW9uIGFncmVlbWVudCIsIktlbnR1Y2t5IHJlYWwgZXN0YXRlIGFnZW50IGNvbXBlbnNhdGlvbiIsIk1MUyBidXllciBhZ3JlZW1lbnQgMjAyNiJdfSwKIi9kb3duLXBheW1lbnQtYXNzaXN0YW5jZS1wcm9ncmFtcy1rZW50dWNreSI6IHtoOiAiRXZlcnkgRG93biBQYXltZW50IEFzc2lzdGFuY2UgUHJvZ3JhbSBhIEtlbnR1Y2t5IEJ1eWVyIENhbiBBY3R1YWxseSBVc2UgKDIwMjYpIiwgZDogIktIQydzIHVwLXRvLSQxMiw1MDAgc2Vjb25kIG1vcnRnYWdlLCBMb3Vpc3ZpbGxlIE1ldHJvJ3MgdXAtdG8tJDMwLDAwMCBmb3JnaXZhYmxlIGxvYW4sIGFuZCBvdGhlciBLZW50dWNreSBkb3duIHBheW1lbnQgYXNzaXN0YW5jZSBwcm9ncmFtcywgZXhwbGFpbmVkIHdpdGggcmVhbCB0ZXJtcyBhbmQgZWxpZ2liaWxpdHkuIiwgazogWyJkb3duIHBheW1lbnQgYXNzaXN0YW5jZSBLZW50dWNreSIsIktIQyBkb3duIHBheW1lbnQgYXNzaXN0YW5jZSIsIkxvdWlzdmlsbGUgTWV0cm8gZG93biBwYXltZW50IGFzc2lzdGFuY2UiLCJmaXJzdCB0aW1lIGhvbWUgYnV5ZXIgZ3JhbnRzIEtlbnR1Y2t5IiwiS2VudHVja3kgREFQIHByb2dyYW0iXX0sCiIvYnJycnItbWV0aG9kLWxvdWlzdmlsbGUta2VudHVja3ktMjAyNiI6IHtoOiAiVGhlIEJSUlJSIE1ldGhvZCBpbiBMb3Vpc3ZpbGxlOiBEb2VzIHRoZSBNYXRoIFN0aWxsIFdvcmsgaW4gMjAyNj8iLCBkOiAiRG9lcyB0aGUgQlJSUlIgcmVhbCBlc3RhdGUgc3RyYXRlZ3kgc3RpbGwgd29yayBpbiAyMDI2PyBDdXJyZW50IHJlZmluYW5jZSByYXRlcywgTFRWIGxpbWl0cywgYW5kIGEgcmVhbGlzdGljIExvdWlzdmlsbGUgbnVtYmVycyBleGFtcGxlLiIsIGs6IFsiQlJSUlIgbWV0aG9kIExvdWlzdmlsbGUiLCJCUlJSUiBzdHJhdGVneSAyMDI2IiwicmVhbCBlc3RhdGUgaW52ZXN0aW5nIExvdWlzdmlsbGUgS1kiLCJidXkgcmVoYWIgcmVudCByZWZpbmFuY2UgcmVwZWF0IiwiQlJSUlIgcmVmaW5hbmNlIHJhdGVzIl19LAoiL3NlY3Rpb24tOC1sYW5kbG9yZGluZy1sb3Vpc3ZpbGxlLWtlbnR1Y2t5Ijoge2g6ICJTZWN0aW9uIDggTGFuZGxvcmRpbmcgaW4gTG91aXN2aWxsZTogV2hhdCB0aGUgSG91c2luZyBDaG9pY2UgVm91Y2hlciBQcm9ncmFtIEFjdHVhbGx5IFJlcXVpcmVzIiwgZDogIklzIGFjY2VwdGluZyBTZWN0aW9uIDggdm91Y2hlcnMgbWFuZGF0b3J5IGluIExvdWlzdmlsbGU/IFdoYXQgdGhlIEhvdXNpbmcgQ2hvaWNlIFZvdWNoZXIgcHJvZ3JhbSByZXF1aXJlcyBvZiBsYW5kbG9yZHMsIGN1cnJlbnQgcmVudCByYW5nZXMsIGFuZCB0aGUgcmVhbCB0cmFkZW9mZnMuIiwgazogWyJTZWN0aW9uIDggbGFuZGxvcmQgTG91aXN2aWxsZSIsIkhvdXNpbmcgQ2hvaWNlIFZvdWNoZXIgTG91aXN2aWxsZSIsIkxNSEEgbGFuZGxvcmQiLCJTZWN0aW9uIDggcmVudGFsIHByb3BlcnR5IEtlbnR1Y2t5Iiwidm91Y2hlciB0ZW5hbnQgTG91aXN2aWxsZSJdfSwKIi9vcHBvcnR1bml0eS16b25lcy1sb3Vpc3ZpbGxlLWludmVzdG9ycy0yMDI2Ijoge2g6ICJPcHBvcnR1bml0eSBab25lcyBmb3IgRXZlcnlkYXkgSW52ZXN0b3JzOiBMb3Vpc3ZpbGxlJ3MgT1ogTWFwIGFuZCBXaGF0IEFjdHVhbGx5IFF1YWxpZmllcyAoMjAyNikiLCBkOiAiSG93IE9wcG9ydHVuaXR5IFpvbmUgaW52ZXN0aW5nIGFjdHVhbGx5IHdvcmtzIGZvciBpbmRpdmlkdWFsIGludmVzdG9ycyBhZnRlciB0aGUgMjAyNyBPQkJCQSBvdmVyaGF1bCwgd2hlcmUgTG91aXN2aWxsZSdzIHpvbmVzIGFyZSwgYW5kIHdoZXRoZXIgaXQncyB3b3J0aCBpdC4iLCBrOiBbIk9wcG9ydHVuaXR5IFpvbmVzIExvdWlzdmlsbGUiLCJPcHBvcnR1bml0eSBab25lIGludmVzdGluZyAyMDI2IiwiUXVhbGlmaWVkIE9wcG9ydHVuaXR5IEZ1bmQiLCJPQkJCQSBPcHBvcnR1bml0eSBab25lcyIsImNhcGl0YWwgZ2FpbnMgdGF4IGRlZmVycmFsIHJlYWwgZXN0YXRlIl19LAoiL3JhZG9uLWtlbnR1Y2t5LWhvbWVzLWxvdWlzdmlsbGUtYnV5ZXJzLXNlbGxlcnMiOiB7aDogIlJhZG9uIGluIEtlbnR1Y2t5IEhvbWVzOiBXaGF0IEplZmZlcnNvbiBDb3VudHkgQnV5ZXJzIGFuZCBTZWxsZXJzIFNob3VsZCBLbm93IiwgZDogIklzIHJhZG9uIHRlc3RpbmcgcmVxdWlyZWQgdG8gc2VsbCBhIGhvbWUgaW4gS2VudHVja3k/IEplZmZlcnNvbiBDb3VudHkncyBFUEEgcmFkb24gem9uZSwgd2hhdCBhIHRlc3QgYW5kIG1pdGlnYXRpb24gc3lzdGVtIGFjdHVhbGx5IGNvc3QsIGFuZCB3aGF0IHRvIGNoZWNrIG9uIGFuIGV4aXN0aW5nIHN5c3RlbS4iLCBrOiBbInJhZG9uIEtlbnR1Y2t5IGhvbWVzIiwicmFkb24gdGVzdGluZyBMb3Vpc3ZpbGxlIiwiRVBBIHJhZG9uIHpvbmUgSmVmZmVyc29uIENvdW50eSIsInJhZG9uIG1pdGlnYXRpb24gY29zdCBLZW50dWNreSIsInJhZG9uIGhvbWUgaW5zcGVjdGlvbiJdfSwKIi9jb21tZXJjaWFsLXRlbmFudC1wbGFjZW1lbnQtbG91aXN2aWxsZSI6IHtoOiAiRmlsbGluZyBhIFZhY2FudCBDb21tZXJjaWFsIFNwYWNlIGluIExvdWlzdmlsbGU6IEhvdyBUZW5hbnQgUGxhY2VtZW50IEFjdHVhbGx5IFdvcmtzIiwgZDogIkhvdyB0byBmaWxsIGEgdmFjYW50IGNvbW1lcmNpYWwgc3BhY2UgaW4gTG91aXN2aWxsZTogbGVhc2Ugc3RydWN0dXJlcywgbWFya2V0aW5nLCB0ZW5hbnQgdmV0dGluZywgVEkgYWxsb3dhbmNlcywgYW5kIHRoZSBMT0kgcHJvY2Vzcy4iLCBrOiBbImNvbW1lcmNpYWwgdGVuYW50IHBsYWNlbWVudCBMb3Vpc3ZpbGxlIiwiZmlsbCB2YWNhbnQgY29tbWVyY2lhbCBzcGFjZSIsImNvbW1lcmNpYWwgbGVhc2luZyBMb3Vpc3ZpbGxlIEtZIiwidGVuYW50IGltcHJvdmVtZW50IGFsbG93YW5jZSIsImNvbW1lcmNpYWwgbGVhc2Ugc3RydWN0dXJlcyJdfSwKIi9yZWFsLWVzdGF0ZS1lbi1lc3Bhbm9sLWxvdWlzdmlsbGUiOiB7aDogIlJlYWwgRXN0YXRlIGVuIEVzcGHDsW9sIGNvbiBXaW5uZXIgUmVhbHR5IHwgTG91aXN2aWxsZSwgS1kiLCBkOiAiU2VydmljaW8gY29tcGxldG8gZW4gZXNwYcOxb2wgcGFyYSBjb21wcmFyLCB2ZW5kZXIgbyBpbnZlcnRpciBlbiBiaWVuZXMgcmHDrWNlcyBlbiBMb3Vpc3ZpbGxlLCBLZW50dWNreSwgY29uIFJvYiBCZXJnZXJvbiBkZSBXaW5uZXIgUmVhbHR5LiIsIGs6IFsiYWdlbnRlIGRlIGJpZW5lcyByYWljZXMgZW4gZXNwYW5vbCBMb3Vpc3ZpbGxlIiwicmVhbCBlc3RhdGUgZW4gZXNwYW5vbCBLZW50dWNreSIsImFnZW50ZSBoaXNwYW5vaGFibGFudGUgTG91aXN2aWxsZSIsImNvbXByYXIgY2FzYSBlbiBlc3Bhbm9sIl19LAoiL2NvbXByYW5kby1zdS1wcmltZXJhLWNhc2EtZW4tbG91aXN2aWxsZSI6IHtoOiAiQ29tcHJhbmRvIFN1IFByaW1lcmEgQ2FzYSBlbiBMb3Vpc3ZpbGxlOiBHdcOtYSBDb21wbGV0YSBlbiBFc3Bhw7FvbCAoMjAyNikiLCBkOiAiR3XDrWEgZW4gZXNwYcOxb2wgcGFyYSBjb21wcmFkb3JlcyBkZSBwcmltZXJhIHZleiBlbiBMb3Vpc3ZpbGxlLCBLZW50dWNreTogcHJlLWFwcm9iYWNpw7NuLCBhc2lzdGVuY2lhIHBhcmEgZWwgcGFnbyBpbmljaWFsLCBpbnNwZWNjacOzbiB5IGNpZXJyZS4iLCBrOiBbImNvbXByYXIgcHJpbWVyYSBjYXNhIExvdWlzdmlsbGUiLCJndWlhIGNvbXByYWRvcmVzIGVuIGVzcGFub2wiLCJwcmltZXJhIGNhc2EgS2VudHVja3kgZXNwYW5vbCIsInByb2Nlc28gZGUgY29tcHJhIGRlIGNhc2EgZXNwYW5vbCJdfSwKIi9hc2lzdGVuY2lhLXBhcmEtZWwtcGFnby1pbmljaWFsLWtlbnR1Y2t5Ijoge2g6ICJBc2lzdGVuY2lhIHBhcmEgZWwgUGFnbyBJbmljaWFsIGVuIEtlbnR1Y2t5OiBHdcOtYSBlbiBFc3Bhw7FvbCAoMjAyNikiLCBkOiAiUHJvZ3JhbWFzIGRlIGFzaXN0ZW5jaWEgcGFyYSBlbCBwYWdvIGluaWNpYWwgZW4gS2VudHVja3kgZXhwbGljYWRvcyBlbiBlc3Bhw7FvbDogS0hDIGhhc3RhICQxMiw1MDAgeSBMb3Vpc3ZpbGxlIE1ldHJvIGhhc3RhICQzMCwwMDAuIiwgazogWyJhc2lzdGVuY2lhIHBhZ28gaW5pY2lhbCBLZW50dWNreSIsImF5dWRhIHBhcmEgY29tcHJhciBjYXNhIEtlbnR1Y2t5IiwicHJvZ3JhbWFzIEtIQyBlc3Bhbm9sIiwicGFnbyBpbmljaWFsIExvdWlzdmlsbGUiXX0sCiIvd2lubmVyLXNlcnZpY2VzIjoge2g6ICJXaW5uZXIgU2VydmljZXM6IEhvdyBXaW5uZXIgUmVhbHR5IEFnZW50cyBFYXJuIE1vcmUgVGhhbiBPbmUgV2F5IiwgZDogIldpbm5lciBTZXJ2aWNlcyBnaXZlcyBXaW5uZXIgUmVhbHR5IGFnZW50cyBlc3RhYmxpc2hlZCwgcmVhZHktdG8tZWFybiB3YXlzIHRvIGdyb3cgdGhlaXIgaW5jb21lIGJleW9uZCBidXktc2lkZSBhbmQgc2VsbC1zaWRlIGNvbW1pc3Npb25zLiIsIGs6IFsiV2lubmVyIFNlcnZpY2VzIiwgInJlYWwgZXN0YXRlIGFnZW50IGluY29tZSBzdHJlYW1zIiwgImhvdyByZWFsIGVzdGF0ZSBhZ2VudHMgbWFrZSBleHRyYSBtb25leSIsICJXaW5uZXIgUmVhbHR5IGFnZW50IGJlbmVmaXRzIiwgInJlYWwgZXN0YXRlIHJlZmVycmFsIGluY29tZSIsICJqb2luIFdpbm5lciBSZWFsdHkiXX0sCiIvbG91aXN2aWxsZS1uZWlnaGJvcmhvb2RzIjoge2g6ICJMb3Vpc3ZpbGxlIE5laWdoYm9yaG9vZHM6IFRoZSBDb21wbGV0ZSBHdWlkZSIsIGQ6ICJFdmVyeSBMb3Vpc3ZpbGxlLWFyZWEgbmVpZ2hib3Job29kIGFuZCBjb3VudHkgZ3VpZGUgb24gdGhpcyBzaXRlLCBvcmdhbml6ZWQgYnkgcGFydCBvZiB0b3duIHNvIGJ1eWVycywgc2VsbGVycywgYW5kIGludmVzdG9ycyBjYW4gZmluZCB0aGVpciBhcmVhIGZhc3QuIiwgazogWyJMb3Vpc3ZpbGxlIG5laWdoYm9yaG9vZHMgZ3VpZGUiLCAiYmVzdCBuZWlnaGJvcmhvb2RzIExvdWlzdmlsbGUgS1kiLCAiTG91aXN2aWxsZSBhcmVhIGd1aWRlIiwgIndoZXJlIHRvIGxpdmUgTG91aXN2aWxsZSIsICJMb3Vpc3ZpbGxlIG5laWdoYm9yaG9vZCBtYXAiXX0sCiAgIi9ob3ctdG8tZ2V0LXByZS1hcHByb3ZlZC1tb3J0Z2FnZS1rZW50dWNreSI6IHtoOiAiSG93IHRvIEdldCBQcmUtQXBwcm92ZWQgZm9yIGEgTW9ydGdhZ2UgaW4gS2VudHVja3k6IEEgQnV5ZXIncyBHdWlkZSIsIGQ6ICJQcmUtYXBwcm92YWwgdnMuIHByZS1xdWFsaWZpY2F0aW9uLCByZXF1aXJlZCBkb2N1bWVudHMsIDIwMjYgbG9hbiBsaW1pdHMsIGFuZCBLZW50dWNreSBkb3duIHBheW1lbnQgYXNzaXN0YW5jZSBmb3IgTG91aXN2aWxsZSBidXllcnMuIiwgazogWyJtb3J0Z2FnZSBwcmUtYXBwcm92YWwgS2VudHVja3kiLCAiaG93IHRvIGdldCBwcmUtYXBwcm92ZWQgZm9yIGEgaG9tZSBsb2FuIiwgIkxvdWlzdmlsbGUgcHJlLWFwcHJvdmFsIGxldHRlciIsICJLZW50dWNreSBkb3duIHBheW1lbnQgYXNzaXN0YW5jZSIsICJLSEMgZG93biBwYXltZW50IGFzc2lzdGFuY2UiXX0sCiAgIi9zb3V0aGVybi1pbmRpYW5hLXNob3J0LXRlcm0tcmVudGFsLXJlZ3VsYXRpb25zIjoge2g6ICJTb3V0aGVybiBJbmRpYW5hIFNob3J0LVRlcm0gUmVudGFsIFJlZ3VsYXRpb25zOiBUaGUgQ29tcGxldGUgMjAyNiBHdWlkZSBmb3IgQWlyYm5iIEludmVzdG9ycyIsIGQ6ICJOZXcgQWxiYW55IGFuZCBKZWZmZXJzb252aWxsZSwgSW5kaWFuYSBzaG9ydC10ZXJtIHJlbnRhbCBydWxlcywgSW5kaWFuYSdzIG5ldyBzdGF0ZXdpZGUgcmVudGFsLWNhcCBiYW4gKEhFQSAxMjEwKSwgbmVpZ2hib3Job29kLWJ5LW5laWdoYm9yaG9vZCBBaXJibmIgcmV0dXJucywgYW5kIHRoZSBMb3Vpc3ZpbGxlIGJvcmRlciBhZHZhbnRhZ2UuIiwgazogWyJTb3V0aGVybiBJbmRpYW5hIEFpcmJuYiByZWd1bGF0aW9ucyIsICJKZWZmZXJzb252aWxsZSBzaG9ydCB0ZXJtIHJlbnRhbCBwZXJtaXQiLCAiTmV3IEFsYmFueSBJbmRpYW5hIEFpcmJuYiIsICJJbmRpYW5hIEhFQSAxMjEwIHNob3J0IHRlcm0gcmVudGFsIiwgIkFpcmJuYiBpbnZlc3RtZW50IHByb3BlcnR5IFNvdXRoZXJuIEluZGlhbmEiXX0sCiAgIi9sZXhpbmd0b24tc2hvcnQtdGVybS1yZW50YWwtcmVndWxhdGlvbnMiOiB7aDogIkxleGluZ3RvbiBTaG9ydC1UZXJtIFJlbnRhbCBSZWd1bGF0aW9uczogVGhlIENvbXBsZXRlIDIwMjYgR3VpZGUgZm9yIEFpcmJuYiBJbnZlc3RvcnMiLCBkOiAiTGV4aW5ndG9uLUZheWV0dGUncyBTVFIgbGljZW5zaW5nIHJ1bGVzLCB0aGUgU0IgOSBzdGF0ZSBwcmVlbXB0aW9uIGZpZ2h0LCBuZWlnaGJvcmhvb2QtYnktbmVpZ2hib3Job29kIEFpcmJuYiByZXR1cm5zLCBhbmQgd2hhdCBhY3R1YWxseSBkcml2ZXMgc2Vhc29uYWwgZGVtYW5kIGhlcmUuIiwgazogWyJMZXhpbmd0b24gQWlyYm5iIHJlZ3VsYXRpb25zIiwgIkxleGluZ3RvbiBzaG9ydCB0ZXJtIHJlbnRhbCBsaWNlbnNlIiwgIkxleGluZ3RvbiBTVFIgb3JkaW5hbmNlIiwgIkFpcmJuYiBpbnZlc3RtZW50IHByb3BlcnR5IExleGluZ3RvbiBLWSIsICJGYXlldHRlIENvdW50eSBzaG9ydCB0ZXJtIHJlbnRhbCJdfSwKICAiLzEwMzEtZXhjaGFuZ2UtY29tbWVyY2lhbC1yZWFsLWVzdGF0ZS1rZW50dWNreSI6IHtoOiAiMTAzMSBFeGNoYW5nZSBmb3IgQ29tbWVyY2lhbCBSZWFsIEVzdGF0ZTogUnVsZXMsIERlYWRsaW5lcywgYW5kIDIwMjYgU3RyYXRlZ3kiLCBkOiAiSG93IGEgMTAzMSBleGNoYW5nZSBsZXRzIEtlbnR1Y2t5IGFuZCBTb3V0aGVybiBJbmRpYW5hIGNvbW1lcmNpYWwgaW52ZXN0b3JzIGRlZmVyIGNhcGl0YWwgZ2FpbnMgdGF4IFx1MjAxNCB0aGUgNDUtZGF5IGFuZCAxODAtZGF5IGRlYWRsaW5lcywgcXVhbGlmaWVkIGludGVybWVkaWFyeSBydWxlcywgYW5kIGhvdyBwZXJtYW5lbnQgMTAwJSBib251cyBkZXByZWNpYXRpb24gY2hhbmdlcyB0aGUgc3RyYXRlZ3kgaW4gMjAyNi4iLCBrOiBbIjEwMzEgZXhjaGFuZ2UgY29tbWVyY2lhbCByZWFsIGVzdGF0ZSIsICIxMDMxIGV4Y2hhbmdlIEtlbnR1Y2t5IiwgImNvbW1lcmNpYWwgcHJvcGVydHkgdGF4IGRlZmVycmFsIiwgInF1YWxpZmllZCBpbnRlcm1lZGlhcnkgMTAzMSIsICJsaWtlLWtpbmQgZXhjaGFuZ2UgY29tbWVyY2lhbCByZWFsIGVzdGF0ZSJdfSwKICAiL2Nvc3Qtc2VncmVnYXRpb24tY29tbWVyY2lhbC1yZWFsLWVzdGF0ZSI6IHtoOiAiQ29zdCBTZWdyZWdhdGlvbiBmb3IgQ29tbWVyY2lhbCBSZWFsIEVzdGF0ZTogSG93IEl0IFdvcmtzIGFuZCBXaHkgMTAwJSBCb251cyBEZXByZWNpYXRpb24gQ2hhbmdlcyB0aGUgTWF0aCIsIGQ6ICJIb3cgY29zdCBzZWdyZWdhdGlvbiBzdHVkaWVzIHdvcmsgZm9yIGNvbW1lcmNpYWwgcmVhbCBlc3RhdGUsIHdoYXQgYnVpbGRpbmcgY29tcG9uZW50cyBkbyBub3QgcXVhbGlmeSBmb3IgYm9udXMgZGVwcmVjaWF0aW9uLCBhbmQgd2h5IDIwMjZcdTIwMTlzIHBlcm1hbmVudCAxMDAlIGJvbnVzIGRlcHJlY2lhdGlvbiBtYWtlcyBwYWlyaW5nIGEgc3R1ZHkgd2l0aCBhIDEwMzEgZXhjaGFuZ2UgbW9yZSB2YWx1YWJsZSB0aGFuIGV2ZXIuIiwgazogWyJjb3N0IHNlZ3JlZ2F0aW9uIGNvbW1lcmNpYWwgcmVhbCBlc3RhdGUiLCAiYm9udXMgZGVwcmVjaWF0aW9uIDIwMjYiLCAiY29zdCBzZWdyZWdhdGlvbiBzdHVkeSIsICJjb21tZXJjaWFsIHByb3BlcnR5IGRlcHJlY2lhdGlvbiIsICJPQkJCQSBib251cyBkZXByZWNpYXRpb24iXX0sCiAgIi9jb21tZXJjaWFsLXJlYWwtZXN0YXRlLWR1ZS1kaWxpZ2VuY2UtY2hlY2tsaXN0Ijoge2g6ICJDb21tZXJjaWFsIFJlYWwgRXN0YXRlIER1ZSBEaWxpZ2VuY2UgQ2hlY2tsaXN0OiBXaGF0IHRvIFZlcmlmeSBCZWZvcmUgWW91IENsb3NlIiwgZDogIldoYXQgdG8gdmVyaWZ5IGJlZm9yZSBjbG9zaW5nIG9uIGEgY29tbWVyY2lhbCBwcm9wZXJ0eSBcdTIwMTQgdGl0bGUgYW5kIHN1cnZleSwgem9uaW5nLCB0aGUgUGhhc2UgSSBlbnZpcm9ubWVudGFsIHNpdGUgYXNzZXNzbWVudCwgdGVuYW50IGVzdG9wcGVscywgcHJvcGVydHkgY29uZGl0aW9uLCBhbmQgc2VydmljZSBjb250cmFjdHMsIGV4cGxhaW5lZCBmb3IgS2VudHVja3kgYW5kIFNvdXRoZXJuIEluZGlhbmEgYnV5ZXJzLiIsIGs6IFsiY29tbWVyY2lhbCByZWFsIGVzdGF0ZSBkdWUgZGlsaWdlbmNlIGNoZWNrbGlzdCIsICJQaGFzZSBJIGVudmlyb25tZW50YWwgc2l0ZSBhc3Nlc3NtZW50IiwgImNvbW1lcmNpYWwgcHJvcGVydHkgZHVlIGRpbGlnZW5jZSIsICJ0ZW5hbnQgZXN0b3BwZWwgY2VydGlmaWNhdGUiLCAiY29tbWVyY2lhbCByZWFsIGVzdGF0ZSBjbG9zaW5nIGNoZWNrbGlzdCJdfSwKICAiL2xvdWlzdmlsbGUtc2hvcnQtdGVybS1yZW50YWwtZ3VpZGUiOiB7aDogIkxvdWlzdmlsbGUgU2hvcnQtVGVybSBSZW50YWwgUmVndWxhdGlvbnM6IFRoZSBDb21wbGV0ZSAyMDI2IEd1aWRlIGZvciBBaXJibmIgSW52ZXN0b3JzIiwgZDogIkV2ZXJ5IHBlcm1pdCB0cmFjaywgdGF4LCBhbmQgbmVpZ2hib3Job29kIGluIExvdWlzdmlsbGUgTWV0cm8ncyBzaG9ydC10ZXJtIHJlbnRhbCBvcmRpbmFuY2UsIHBsdXMgcmVhbCBBRFIgYW5kIG9jY3VwYW5jeSBkYXRhIGFuZCB3aGF0IEtlbnR1Y2t5IERlcmJ5IHdlZWsgZG9lcyB0byB0aGUgbnVtYmVycy4iLCBrOiBbIkxvdWlzdmlsbGUgQWlyYm5iIHJlZ3VsYXRpb25zIiwgIkxvdWlzdmlsbGUgc2hvcnQgdGVybSByZW50YWwgcGVybWl0IiwgIkxvdWlzdmlsbGUgU1RSIG9yZGluYW5jZSIsICJBaXJibmIgaW52ZXN0bWVudCBwcm9wZXJ0eSBMb3Vpc3ZpbGxlIiwgIktlbnR1Y2t5IERlcmJ5IEFpcmJuYiBwcmljaW5nIl19LAogICIvZHNjci1sb2Fucy1rZW50dWNreS1pbnZlc3RvcnMiOiB7aDogIkRTQ1IgTG9hbnMgaW4gS2VudHVja3k6IEhvdyBJbnZlc3RvcnMgUXVhbGlmeSBXaXRob3V0IFctMnMgKDIwMjYgR3VpZGUpIiwgZDogIkRTQ1IgbG9hbiByZXF1aXJlbWVudHMgZm9yIEtlbnR1Y2t5IGludmVzdG9yczogMjAyNiByYXRlcywgZG93biBwYXltZW50LCBjcmVkaXQgc2NvcmUgbWluaW11bXMsIGFuZCBob3cgdG8gcXVhbGlmeSBvZmYgcmVudGFsIGluY29tZSBpbnN0ZWFkIG9mIFctMnMuIiwgazogWyJEU0NSIGxvYW4gS2VudHVja3kiLCJEU0NSIGxvYW4gcmVxdWlyZW1lbnRzIiwiZGVidCBzZXJ2aWNlIGNvdmVyYWdlIHJhdGlvIGxvYW4iLCJEU0NSIGxvYW4gcmF0ZXMgMjAyNiIsImludmVzdG1lbnQgcHJvcGVydHkgbG9hbiBubyBXMiIsIkRTQ1IgbG9hbiBMb3Vpc3ZpbGxlIl19LAogICIvY2xvc2luZy1jb3N0cy1rZW50dWNreS1idXllci1zZWxsZXIiOiB7aDogIkNsb3NpbmcgQ29zdHMgaW4gS2VudHVja3k6IFdoYXQgQnV5ZXJzIGFuZCBTZWxsZXJzIEFjdHVhbGx5IFBheSAoMjAyNikiLCBkOiAiV2hhdCBLZW50dWNreSBidXllcnMgYW5kIHNlbGxlcnMgZWFjaCBwYXkgaW4gY2xvc2luZyBjb3N0czogdHJhbnNmZXIgdGF4LCB0aXRsZSBpbnN1cmFuY2UsIGNvbW1pc3Npb24sIHJlY29yZGluZyBmZWVzLCBhbmQgd2hhdFx1MjAxOXMgbmVnb3RpYWJsZS4iLCBrOiBbIktlbnR1Y2t5IGNsb3NpbmcgY29zdHMiLCJ3aG8gcGF5cyBjbG9zaW5nIGNvc3RzIEtlbnR1Y2t5IiwiS2VudHVja3kgdHJhbnNmZXIgdGF4Iiwic2VsbGVyIGNsb3NpbmcgY29zdHMgS2VudHVja3kiLCJidXllciBjbG9zaW5nIGNvc3RzIEtlbnR1Y2t5IiwiTG91aXN2aWxsZSBjbG9zaW5nIGNvc3RzIl19LAogICIvY29tbWVyY2lhbC1yZWFsLWVzdGF0ZS1sb2Fucy1rZW50dWNreSI6IHtoOiAiQ29tbWVyY2lhbCBSZWFsIEVzdGF0ZSBMb2FucyBpbiBLZW50dWNreTogU0JBIDUwNCB2cy4gNyhhKSBhbmQgSG93IHRvIFF1YWxpZnkgKDIwMjYgR3VpZGUpIHwgV2lubmVyIFJlYWx0eSIsIGQ6ICJIb3cgU0JBIDUwNCBhbmQgNyhhKSBsb2FucyB3b3JrIGZvciBLZW50dWNreSBhbmQgU291dGhlcm4gSW5kaWFuYSBjb21tZXJjaWFsIHJlYWwgZXN0YXRlIHB1cmNoYXNlcywgY3VycmVudCByYXRlIHN0cnVjdHVyZXMsIGFuZCB3aGF0IGxlbmRlcnMgbG9vayBmb3IgaW4gMjAyNi4iLCBrOiBbImNvbW1lcmNpYWwgcmVhbCBlc3RhdGUgbG9hbnMgS2VudHVja3kiLCJTQkEgNTA0IGxvYW4iLCJTQkEgNyhhKSBsb2FuIiwiY29tbWVyY2lhbCByZWFsIGVzdGF0ZSBmaW5hbmNpbmcgTG91aXN2aWxsZSIsImhvdyB0byBxdWFsaWZ5IGZvciBhIGNvbW1lcmNpYWwgcmVhbCBlc3RhdGUgbG9hbiJdfSwKICAiL2NhcC1yYXRlLWV4cGxhaW5lZC1jb21tZXJjaWFsLXJlYWwtZXN0YXRlIjoge2g6ICJDYXAgUmF0ZSBFeHBsYWluZWQ6IEhvdyB0byBDYWxjdWxhdGUgSXQgYW5kIFdoYXRcdTIwMTlzIGEgR29vZCBDYXAgUmF0ZSBpbiAyMDI2IHwgV2lubmVyIFJlYWx0eSIsIGQ6ICJUaGUgY2FwIHJhdGUgZm9ybXVsYSwgY3VycmVudCBDQlJFIGJlbmNobWFyayBkYXRhIGJ5IHByb3BlcnR5IHR5cGUsIGFuZCB0aGUgbW9zdCBjb21tb24gbWlzdGFrZXMgaW52ZXN0b3JzIG1ha2Ugd2hlbiB1c2luZyBjYXAgcmF0ZSB0byBldmFsdWF0ZSBhIGRlYWwuIiwgazogWyJjYXAgcmF0ZSBleHBsYWluZWQiLCJob3cgdG8gY2FsY3VsYXRlIGNhcCByYXRlIiwiZ29vZCBjYXAgcmF0ZSAyMDI2IiwiY29tbWVyY2lhbCByZWFsIGVzdGF0ZSBjYXAgcmF0ZSBMb3Vpc3ZpbGxlIiwiY2FwIHJhdGUgZm9ybXVsYSJdfSwKICAiL3RyaXBsZS1uZXQtbm5uLWxlYXNlLWludmVzdGluZyI6IHtoOiAiVHJpcGxlIE5ldCAoTk5OKSBMZWFzZSBJbnZlc3Rpbmc6IFdoYXQgSXQgSXMgYW5kIFdoeSBJbnZlc3RvcnMgTGlrZSBJdCAoMjAyNiBHdWlkZSkgfCBXaW5uZXIgUmVhbHR5IiwgZDogIldoYXQgYSB0cmlwbGUgbmV0IGxlYXNlIGlzLCB3aHkgMTAzMSBleGNoYW5nZSBidXllcnMgZmF2b3IgTk5OIHByb3BlcnRpZXMsIGFuZCBjdXJyZW50IDIwMjYgTk5OIGNhcCByYXRlcyBieSB0ZW5hbnQuIiwgazogWyJ0cmlwbGUgbmV0IGxlYXNlIiwiTk5OIGxlYXNlIGludmVzdGluZyIsIndoYXQgaXMgYSB0cmlwbGUgbmV0IGxlYXNlIiwiMTAzMSBleGNoYW5nZSBOTk4iLCJOTk4gY2FwIHJhdGVzIDIwMjYiXX0sCiAgIi9ib3VyYm9uLXRyYWlsLWFpcmJuYi1pbnZlc3RtZW50Ijoge2g6ICJCb3VyYm9uIFRyYWlsIEFpcmJuYiBJbnZlc3RtZW50OiBUaGUgMjAyNiBHdWlkZSBmb3IgS2VudHVja3kgU2hvcnQtVGVybSBSZW50YWwgQnV5ZXJzIiwgZDogIlJlYWwgbGlzdGluZyBkYXRhLCByZWd1bGF0aW9ucywgYW5kIHRheCBhbmdsZXMgZm9yIEFpcmJuYiBpbnZlc3RvcnMgYnV5aW5nIGluIEJhcmRzdG93biwgTGF3cmVuY2VidXJnLCBGcmFua2ZvcnQsIFZlcnNhaWxsZXMsIGFuZCBMb3JldHRvLiIsIGs6IFsiQm91cmJvbiBUcmFpbCBBaXJibmIiLCAic2hvcnQgdGVybSByZW50YWwgS2VudHVja3kiLCAiQmFyZHN0b3duIFNUUiByZWd1bGF0aW9ucyIsICJBaXJibmIgaW52ZXN0bWVudCBwcm9wZXJ0eSBLZW50dWNreSIsICJjb3N0IHNlZ3JlZ2F0aW9uIHNob3J0IHRlcm0gcmVudGFsIl19LAoiL2xvdWlzdmlsbGUtaGVhbHRoY2FyZS1tZWRpY2FsLW9mZmljZS1yZWFsLWVzdGF0ZSI6IHtoOiAiSGVhbHRoY2FyZSAmIE1lZGljYWwgT2ZmaWNlIFJlYWwgRXN0YXRlIGluIExvdWlzdmlsbGUgfCBXaW5uZXIgUmVhbHR5IiwgZDogIkJ1eSwgc2VsbCwgb3IgbGVhc2UgbWVkaWNhbCBvZmZpY2Ugc3BhY2UgaW4gTG91aXN2aWxsZSDigJQgZGVtYW5kIGRyaXZlcnMsIEtlbnR1Y2t5XHUyMDE5cyBDZXJ0aWZpY2F0ZSBvZiBOZWVkIHJ1bGVzLCBhbmQgd2hhdCB0byBsb29rIGZvciBpbiBhIGhlYWx0aGNhcmUgcmVhbCBlc3RhdGUgZGVhbC4iLCBrOiBbIkxvdWlzdmlsbGUgbWVkaWNhbCBvZmZpY2UgcmVhbCBlc3RhdGUiLCJoZWFsdGhjYXJlIHJlYWwgZXN0YXRlIExvdWlzdmlsbGUiLCJLZW50dWNreSBDZXJ0aWZpY2F0ZSBvZiBOZWVkIiwibWVkaWNhbCBvZmZpY2UgYnVpbGRpbmcgTG91aXN2aWxsZSIsIk5vcnRvbiBIZWFsdGhjYXJlIHJlYWwgZXN0YXRlIiwiVW9mTCBIZWFsdGggcmVhbCBlc3RhdGUiXX0sCiIvbG91aXN2aWxsZS1zb3V0aGVybi1pbmRpYW5hLWRldmVsb3BtZW50LWluY2VudGl2ZXMiOiB7aDogIkRldmVsb3BtZW50IEluY2VudGl2ZXMgaW4gTG91aXN2aWxsZSAmIFNvdXRoZXJuIEluZGlhbmEgfCBXaW5uZXIgUmVhbHR5IiwgZDogIlRJRiBpbiBMb3Vpc3ZpbGxlLCBJbmRpYW5hXHUyMDE5cyBFREdFIHRheCBjcmVkaXQsIGFuZCB0aGUgbmV3bHkgcGVybWFuZW50IE9wcG9ydHVuaXR5IFpvbmUgcHJvZ3JhbSDigJQgd2hhdFx1MjAxOXMgYXZhaWxhYmxlIGZvciBjb21tZXJjaWFsIGRldmVsb3BlcnMgYW5kIGhvdyB0byB1c2UgaXQuIiwgazogWyJMb3Vpc3ZpbGxlIFRJRiBpbmNlbnRpdmVzIiwidGF4IGluY3JlbWVudCBmaW5hbmNpbmcgTG91aXN2aWxsZSIsIkluZGlhbmEgRURHRSB0YXggY3JlZGl0IiwiT3Bwb3J0dW5pdHkgWm9uZXMgMjAyNiIsIlNvdXRoZXJuIEluZGlhbmEgZGV2ZWxvcG1lbnQgaW5jZW50aXZlcyIsImNvbW1lcmNpYWwgZGV2ZWxvcG1lbnQgaW5jZW50aXZlcyBLZW50dWNreSJdfSwKIi93aW5uZXItcmVhbHR5LWdpdmluZy1iYWNrIjoge2g6ICJHaXZpbmcgQmFjayBhdCBXaW5uZXIgUmVhbHR5OiBPdXIgMSUgQ29tbWl0bWVudCB0byBIYW5kIGluIEhhbmQiLCBkOiAiV2lubmVyIFJlYWx0eSBkb25hdGVzIDElIG9mIG5ldCBwcm9maXRzIHRvIEhhbmQgaW4gSGFuZCBldmVyeSB5ZWFyLCBhbmQgYW55IGFnZW50IGNhbiBwZXJzb25hbGx5IG1hdGNoIGl0IG9uIHRoZWlyIG93biBjbG9zaW5ncy4iLCBrOiBbIldpbm5lciBSZWFsdHkgZ2l2aW5nIGJhY2siLCJXaW5uZXIgUmVhbHR5IEhhbmQgaW4gSGFuZCIsInJlYWwgZXN0YXRlIGJyb2tlcmFnZSBjaGFyaXR5IExvdWlzdmlsbGUiLCJXaW5uZXIgUmVhbHR5IGFnZW50IG1hdGNoaW5nIHByb2dyYW0iXX0sCiIvc291dGhlcm4taW5kaWFuYS1jb21tZXJjaWFsLXJlYWwtZXN0YXRlIjoge2g6ICJTb3V0aGVybiBJbmRpYW5hIENvbW1lcmNpYWwgUmVhbCBFc3RhdGUgfCBXaW5uZXIgUmVhbHR5IiwgZDogIkJ1eSwgc2VsbCwgbGVhc2UsIG9yIGZpbmQgYSBzaXRlIGluIE5ldyBBbGJhbnksIEplZmZlcnNvbnZpbGxlLCBvciBDbGFya3N2aWxsZSwgSU4g4oCUIGluZHVzdHJpYWwsIHJldGFpbCwgYW5kIGxhbmQsIGZyb20gYSBicm9rZXIgbGljZW5zZWQgaW4gYm90aCBLZW50dWNreSBhbmQgSW5kaWFuYS4iLCBrOiBbIlNvdXRoZXJuIEluZGlhbmEgY29tbWVyY2lhbCByZWFsIGVzdGF0ZSIsIkplZmZlcnNvbnZpbGxlIGluZHVzdHJpYWwgcmVhbCBlc3RhdGUiLCJOZXcgQWxiYW55IHJldGFpbCBzcGFjZSIsIkNsYXJrc3ZpbGxlIEluZGlhbmEgY29tbWVyY2lhbCBwcm9wZXJ0eSIsIlJpdmVyIFJpZGdlIENvbW1lcmNlIENlbnRlciIsIlNvdXRoZXJuIEluZGlhbmEgc2l0ZSBzZWxlY3Rpb24iXX0sCiAgIi9ob3VzZS1oYWNraW5nLWxvdWlzdmlsbGUta2VudHVja3kiOiB7aDogIkhvdXNlIEhhY2tpbmcgaW4gTG91aXN2aWxsZSwgS1k6IFRoZSBDb21wbGV0ZSBHdWlkZSB0byBCdXlpbmcgYSBEdXBsZXgsIFRyaXBsZXgsIG9yIEZvdXJwbGV4IGluIDIwMjYiLCBkOiAiQnV5IGEgZHVwbGV4LCB0cmlwbGV4LCBvciBmb3VycGxleCBpbiBMb3Vpc3ZpbGxlIGFuZCBsZXQgdGVuYW50cyBjb3ZlciB5b3VyIG1vcnRnYWdlLiAyMDI2IEZIQSBhbmQgY29udmVudGlvbmFsIGxvYW4gbGltaXRzLCBmaW5hbmNpbmcgb3B0aW9ucywgYW5kIGhvdyBXaW5uZXIgUmVhbHR5IGhlbHBzIGhvdXNlIGhhY2tlcnMgZ2V0IHN0YXJ0ZWQuIiwgazogWyJob3VzZSBoYWNraW5nIExvdWlzdmlsbGUiLCJkdXBsZXggdHJpcGxleCBmb3VycGxleCBLZW50dWNreSIsIm93bmVyIG9jY3VwaWVkIG11bHRpZmFtaWx5IGZpbmFuY2luZyIsIkZIQSBzZWxmIHN1ZmZpY2llbmN5IHRlc3QiLCI1IHBlcmNlbnQgZG93biBtdWx0aWZhbWlseSJdfSwKICAiL2xvdWlzdmlsbGUtbXVsdGlmYW1pbHktYnJva2VyIjoge2g6ICJMb3Vpc3ZpbGxlLCBMZXhpbmd0b24gJiBTb3V0aGVybiBJbmRpYW5hIE11bHRpZmFtaWx5IFJlYWwgRXN0YXRlIEJyb2tlciIsIGQ6ICJTZWxsaW5nIGEgbXVsdGlmYW1pbHkgcHJvcGVydHksIHNjYWxpbmcgd2l0aCBhIDEwMzEgZXhjaGFuZ2UsIG9yIHNvdXJjaW5nIGRlYWxzIGFzIGEgc3luZGljYXRvcj8gV2lubmVyIFJlYWx0eSBsaXN0cyBhbmQgc2VsbHMgbXVsdGlmYW1pbHkgYXNzZXRzIGFjcm9zcyBMb3Vpc3ZpbGxlLCBMZXhpbmd0b24sIGFuZCBTb3V0aGVybiBJbmRpYW5hLiIsIGs6IFsibXVsdGlmYW1pbHkgYnJva2VyIExvdWlzdmlsbGUiLCJzZWxsIG11bHRpZmFtaWx5IHByb3BlcnR5IExvdWlzdmlsbGUiLCIxMDMxIGV4Y2hhbmdlIG11bHRpZmFtaWx5IiwibXVsdGlmYW1pbHkgc3luZGljYXRvciBLZW50dWNreSIsIkxleGluZ3RvbiBtdWx0aWZhbWlseSBicm9rZXIiXX0sCiAgIi92ZXRlcmFucy1yZWFsLWVzdGF0ZS1sb3Vpc3ZpbGxlIjoge2g6ICJWZXRlcmFuICYgTWlsaXRhcnkgVkEgTG9hbiBCdXllcnMgaW4gTG91aXN2aWxsZSwgS1kgfCBXaW5uZXIgUmVhbHR5IiwgZDogIkhvdyBXaW5uZXIgUmVhbHR5IGhlbHBzIHZldGVyYW4gYW5kIG1pbGl0YXJ5IFZBIGxvYW4gYnV5ZXJzIHdpbiBpbiBMb3Vpc3ZpbGxlJ3MgY29tcGV0aXRpdmUgaG91c2luZyBtYXJrZXQgXHUyMDE0IHJlYWwgc3RyYXRlZ2llcywgaG9uZXN0bHkgZXhwbGFpbmVkLiIsIGs6IFsiVkEgbG9hbiBMb3Vpc3ZpbGxlIiwidmV0ZXJhbiBob21lIGJ1eWVyIExvdWlzdmlsbGUgS1kiLCJtaWxpdGFyeSByZWxvY2F0aW9uIHJlYWx0b3IgTG91aXN2aWxsZSIsIlZBIGxvYW4gbXVsdGlwbGUgb2ZmZXIgc3RyYXRlZ3kiLCJWQSBhcHByYWlzYWwgS2VudHVja3kiLCJ2ZXRlcmFuIHJlYWwgZXN0YXRlIEZvcnQgS25veCJdfSwKICAiL3doeS1kaXZlcnNpdHktbWF0dGVycy1hdC13aW5uZXItcmVhbHR5Ijoge2g6ICJXaHkgRGl2ZXJzaXR5IE1hdHRlcnMgYXQgV2lubmVyIFJlYWx0eSB8IExvdWlzdmlsbGUsIEtZIiwgZDogIkV2ZXJ5IGJ1eWVyIGFuZCBzZWxsZXIgZGVzZXJ2ZXMgdGhlIHNhbWUgc3RhbmRhcmQgb2YgY2FyZS4gU2VlIGhvdyBXaW5uZXIgUmVhbHR5IHB1dHMgZXF1YWwgc2VydmljZSBhbmQgRmFpciBIb3VzaW5nIGludG8gcHJhY3RpY2UgaW4gTG91aXN2aWxsZSwgS1kuIiwgazogWyJkaXZlcnNpdHkgcmVhbCBlc3RhdGUgTG91aXN2aWxsZSIsImZhaXIgaG91c2luZyBMb3Vpc3ZpbGxlIHJlYWx0b3IiLCJlcXVhbCBob3VzaW5nIG9wcG9ydHVuaXR5IHJlYWx0b3IiLCJTcGFuaXNoIHNwZWFraW5nIHJlYWx0b3IgTG91aXN2aWxsZSIsImluY2x1c2l2ZSByZWFsIGVzdGF0ZSBicm9rZXJhZ2UgS2VudHVja3kiLCJMb3Vpc3ZpbGxlIEZhaXJuZXNzIE9yZGluYW5jZSBob3VzaW5nIl19LAogICIvbG91aXN2aWxsZS1vZmZpY2UtaW52ZXN0bWVudC1wcm9wZXJ0aWVzIjoge2g6ICJMb3Vpc3ZpbGxlIE9mZmljZSBJbnZlc3RtZW50IFByb3BlcnRpZXMgfCBXaW5uZXIgUmVhbHR5IiwgZDogIkJ1eSwgc2VsbCwgb3IgbGVhc2Ugb2ZmaWNlIHByb3BlcnR5IGluIExvdWlzdmlsbGUsIEtZIOKAlCBhIG1hcmtldCByZXByaWNpbmcgYXJvdW5kIGZsaWdodC10by1xdWFsaXR5IHdpdGggMjIuOCUgdmFjYW5jeSBhbmQgcmVjb3JkIGFza2luZyByZW50cyBmb3IgdG9wIGJ1aWxkaW5ncy4iLCBrOiBbIkxvdWlzdmlsbGUgb2ZmaWNlIGludmVzdG1lbnQiLCJMb3Vpc3ZpbGxlIG9mZmljZSBzcGFjZSBmb3Igc2FsZSIsIkxvdWlzdmlsbGUgY29tbWVyY2lhbCBvZmZpY2UgbGVhc2luZyIsIm9mZmljZSBidWlsZGluZyBmb3Igc2FsZSBMb3Vpc3ZpbGxlIEtZIiwiZmxpZ2h0IHRvIHF1YWxpdHkgb2ZmaWNlIExvdWlzdmlsbGUiLCJidXkgb2ZmaWNlIGJ1aWxkaW5nIExvdWlzdmlsbGUiXX0sCiAgIi9sb3Vpc3ZpbGxlLXJldGFpbC1pbnZlc3RtZW50LXByb3BlcnRpZXMiOiB7aDogIkxvdWlzdmlsbGUgUmV0YWlsIEludmVzdG1lbnQgUHJvcGVydGllcyB8IFdpbm5lciBSZWFsdHkiLCBkOiAiQnV5LCBzZWxsLCBvciBsZWFzZSByZXRhaWwgcHJvcGVydHkgaW4gTG91aXN2aWxsZSwgS1kg4oCUIGFib3V0IDMuMSUgdmFjYW5jeSwgcmVudHMgdXAgNS45JSB5ZWFyIG92ZXIgeWVhciwgYW5kIGEgY29uc3RydWN0aW9uIHBpcGVsaW5lIHRoaW4gZW5vdWdoIHRoYXQgbmV3IHNwYWNlIGxlYXNlcyBiZWZvcmUgaXQgb3BlbnMuIiwgazogWyJMb3Vpc3ZpbGxlIHJldGFpbCBpbnZlc3RtZW50IiwiTG91aXN2aWxsZSByZXRhaWwgc3BhY2UgZm9yIGxlYXNlIiwicmV0YWlsIHByb3BlcnR5IGZvciBzYWxlIExvdWlzdmlsbGUgS1kiLCJMb3Vpc3ZpbGxlIHNob3BwaW5nIGNlbnRlciBmb3Igc2FsZSIsInJldGFpbCBpbnZlc3RtZW50IHByb3BlcnR5IEtlbnR1Y2t5IiwiYnV5IHJldGFpbCBidWlsZGluZyBMb3Vpc3ZpbGxlIl19LAogICIvbG91aXN2aWxsZS1sYW5kLWRldmVsb3BtZW50LXByb3BlcnRpZXMiOiB7aDogIkxvdWlzdmlsbGUgTGFuZCAmIERldmVsb3BtZW50IFByb3BlcnRpZXMgfCBXaW5uZXIgUmVhbHR5IiwgZDogIkJ1eSBvciBzZWxsIGxhbmQgZm9yIGNvbW1lcmNpYWwgYW5kIHJlc2lkZW50aWFsIGRldmVsb3BtZW50IGluIExvdWlzdmlsbGUsIEtZIGFuZCBTb3V0aGVybiBJbmRpYW5hIOKAlCBmcm9tIGluZHVzdHJpYWwtcmVhZHkgc2l0ZXMgbmVhciB0aGUgYWlycG9ydCBsb2dpc3RpY3MgY29ycmlkb3IgdG8gaW5maWxsIGFuZCBtaXhlZC11c2UgcGFyY2Vscy4iLCBrOiBbIkxvdWlzdmlsbGUgbGFuZCBmb3Igc2FsZSIsImNvbW1lcmNpYWwgbGFuZCBMb3Vpc3ZpbGxlIEtZIiwiZGV2ZWxvcG1lbnQgbGFuZCBMb3Vpc3ZpbGxlIiwibGFuZCBmb3Igc2FsZSBTb3V0aGVybiBJbmRpYW5hIiwiaW5kdXN0cmlhbCBsYW5kIExvdWlzdmlsbGUiLCJidXkgbGFuZCB0byBkZXZlbG9wIExvdWlzdmlsbGUiXX0sCiAgIi9jb3Jwb3JhdGUtcmVsb2NhdGlvbi1sb3Vpc3ZpbGxlIjoge2g6ICJDb3Jwb3JhdGUgUmVsb2NhdGlvbiBTZXJ2aWNlcyBpbiBMb3Vpc3ZpbGxlLCBLWSB8IFdpbm5lciBSZWFsdHkiLCBkOiAiSG93IFdpbm5lciBSZWFsdHkgaGFuZGxlcyBjb3Jwb3JhdGUgcmVsb2NhdGlvbiBhY3Jvc3MgTG91aXN2aWxsZSwgTGV4aW5ndG9uLCBhbmQgU291dGhlcm4gSW5kaWFuYSBmb3IgSFIsIG1vYmlsaXR5IHRlYW1zLCBhbmQgUk1DIGNhc2UgbWFuYWdlcnMuIiwgazogWyJjb3Jwb3JhdGUgcmVsb2NhdGlvbiBMb3Vpc3ZpbGxlIiwiZW1wbG95ZWUgcmVsb2NhdGlvbiBMb3Vpc3ZpbGxlIEtZIiwicmVsb2NhdGlvbiBtYW5hZ2VtZW50IGNvbXBhbnkgTG91aXN2aWxsZSIsIlJNQyBhcHByb3ZlZCBhZ2VudCBMb3Vpc3ZpbGxlIiwiZXhlY3V0aXZlIHJlbG9jYXRpb24gS2VudHVja3kiLCJtb3ZpbmcgdG8gTG91aXN2aWxsZSBmb3Igd29yayJdfSwKICAiL3doeS1iZWNvbWUtYS13aW5uZXItcmVhbHR5LWFnZW50Ijoge2g6ICJXaHkgQmVjb21lIGEgV2lubmVyIFJlYWx0eSBBZ2VudCIsIGQ6ICJIb3cgV2lubmVyIFJlYWx0eSBwdXNoZXMgZXZlcnkgbGlzdGluZyBmdXJ0aGVyIHRoYW4gYW55IGJyb2tlcmFnZSBpbiB0aGUgY291bnRyeSDigJQgRmFjZWJvb2ssIFRoZSBNb3JuaW5nIEJlcmdlcm9uLCBhbmQgT2ZmTWFya2V0LmRlYWxzLCBpbmNsdWRpbmcgZGlyZWN0IG91dHJlYWNoIHRvIHRoZSB0b3AgMjUgYnV5ZXJzIGZvciB0aGF0IGV4YWN0IGFzc2V0IGNsYXNzIGFuZCB6aXAgY29kZS4iLCBrOiBbImJlY29tZSBhIHJlYWwgZXN0YXRlIGFnZW50IExvdWlzdmlsbGUiLCJXaW5uZXIgUmVhbHR5IGFnZW50IHJlY3J1aXRpbmciLCJyZWFsIGVzdGF0ZSBicm9rZXJhZ2UgbGlzdGluZyBleHBvc3VyZSIsIk9mZk1hcmtldC5kZWFscyBidXllcnMiLCJqb2luIFdpbm5lciBSZWFsdHkiXX0sCiAgIi93aW5uZXItcmVhbHR5LXRlY2hub2xvZ3kiOiB7aDogIlRoZSBXaW5uZXIgUmVhbHR5IFRlY2ggU3RhY2siLCBkOiAiR29IaWdoTGV2ZWwsIERvdExvb3AgUHJvLCBhbmQgUm9iJ3MgQnJhaW4g4oCUIHRoZSB0ZWNobm9sb2d5IGJlaGluZCBldmVyeSBXaW5uZXIgUmVhbHR5IGFnZW50LCBhbmQgd2h5IGEgc2V2ZW4tYWdlbnQgYnJva2VyYWdlIG1vdmVzIGZhc3RlciB0aGFuIGEgYmF0dGxlc2hpcC1zaXplZCBvbmUuIiwgazogWyJXaW5uZXIgUmVhbHR5IHRlY2hub2xvZ3kiLCJHb0hpZ2hMZXZlbCByZWFsIGVzdGF0ZSBDUk0iLCJEb3RMb29wIFBybyByZWFsIGVzdGF0ZSIsIlJvYidzIEJyYWluIEFJIGFzc2lzdGFudCIsIkxvdWlzdmlsbGUgcmVhbCBlc3RhdGUgdGVjaG5vbG9neSIsIkFJIHJlYWwgZXN0YXRlIGFzc2lzdGFudCBLZW50dWNreSJdfSwKICAiL3doeS1pbnZlc3QtaW4tbG91aXN2aWxsZS1yZWFsLWVzdGF0ZSI6IHtoOiAiTG91aXN2aWxsZSB2cy4gTmFzaHZpbGxlLCBJbmRpYW5hcG9saXMsIENpbmNpbm5hdGkgJiBMZXhpbmd0b246IFdoZXJlIFNtYXJ0IFJlYWwgRXN0YXRlIE1vbmV5IElzIEFjdHVhbGx5IEdvaW5nIGluIDIwMjYiLCBkOiAiU2VlIHdoeSBMb3Vpc3ZpbGxlIEtZIGJlYXRzIE5hc2h2aWxsZSwgSW5kaWFuYXBvbGlzLCBDaW5jaW5uYXRpLCBhbmQgTGV4aW5ndG9uIGZvciByZWFsIGVzdGF0ZSBpbnZlc3RvcnMgaW4gMjAyNiDigJQgdGhlIG51bWJlcnMsIHJhbmtlZC4iLCBrOiBbImludmVzdCBpbiBMb3Vpc3ZpbGxlIHJlYWwgZXN0YXRlIiwiTG91aXN2aWxsZSByZWFsIGVzdGF0ZSBpbnZlc3RtZW50IiwiTG91aXN2aWxsZSB2cyBOYXNodmlsbGUgcmVhbCBlc3RhdGUiLCJiZXN0IGNpdHkgdG8gaW52ZXN0IGluIHJlYWwgZXN0YXRlIDIwMjYiLCJTb3V0aGVybiBJbmRpYW5hIHJlYWwgZXN0YXRlIGludmVzdG1lbnQiLCJMZXhpbmd0b24gS1kgcmVhbCBlc3RhdGUgaW52ZXN0bWVudCIsIkxvdWlzdmlsbGUgcmVudGFsIHByb3BlcnR5IGludmVzdG1lbnQiLCJMb3Vpc3ZpbGxlIHJlYWwgZXN0YXRlIG1hcmtldCAyMDI2Il19LAogICIvMTktdGhpbmdzLXRvLWtub3ctYmVmb3JlLW1vdmluZy10by1sb3Vpc3ZpbGxlIjoge2g6ICIxOSBUaGluZ3MgdG8gS25vdyBCZWZvcmUgTW92aW5nIHRvIExvdWlzdmlsbGUsIEtZIiwgZDogIlJlbG9jYXRpbmcgdG8gTG91aXN2aWxsZT8gMTkgdGhpbmdzIHRvIGtub3cgYWJvdXQgam9icywgY29zdCBvZiBsaXZpbmcsIG5laWdoYm9yaG9vZHMsIHNjaG9vbHMsIGZvb2QsIHBhcmtzLCBzcG9ydHMsIHdlYXRoZXIsIHNhZmV0eSBhbmQgaGVhbHRoY2FyZSBiZWZvcmUgeW91IG1vdmUuIiwgazogWyJtb3ZpbmcgdG8gTG91aXN2aWxsZSBLWSIsInJlbG9jYXRpbmcgdG8gTG91aXN2aWxsZSIsInRoaW5ncyB0byBrbm93IGJlZm9yZSBtb3ZpbmcgdG8gTG91aXN2aWxsZSIsIkxvdWlzdmlsbGUgS1kgcmVsb2NhdGlvbiBndWlkZSIsIkxvdWlzdmlsbGUgY29zdCBvZiBsaXZpbmciLCJMb3Vpc3ZpbGxlIG5laWdoYm9yaG9vZHMgZ3VpZGUiXX0sCiAgIi8xOS10aGluZ3MtdG8ta25vdy1iZWZvcmUtbW92aW5nLXRvLXNvdXRoZXJuLWluZGlhbmEiOiB7aDogIjE5IFRoaW5ncyB0byBLbm93IEJlZm9yZSBNb3ZpbmcgdG8gU291dGhlcm4gSW5kaWFuYSIsIGQ6ICJNb3ZpbmcgdG8gU291dGhlcm4gSW5kaWFuYT8gMTkgdGhpbmdzIHRvIGtub3cgYWJvdXQgSmVmZmVyc29udmlsbGUsIE5ldyBBbGJhbnksIENsYXJrc3ZpbGxlLCB0YXhlcywgc2Nob29scywgYnJpZGdlcywgam9icyBhbmQgbW9yZSBiZWZvcmUgeW91IG1vdmUuIiwgazogWyJtb3ZpbmcgdG8gU291dGhlcm4gSW5kaWFuYSIsIkplZmZlcnNvbnZpbGxlIEluZGlhbmEgcmVsb2NhdGlvbiIsIk5ldyBBbGJhbnkgSW5kaWFuYSByZWFsIGVzdGF0ZSIsIlNvdXRoZXJuIEluZGlhbmEgdnMgS2VudHVja3kgdGF4ZXMiLCJ0aGluZ3MgdG8ga25vdyBiZWZvcmUgbW92aW5nIHRvIFNvdXRoZXJuIEluZGlhbmEiLCJDbGFya3N2aWxsZSBJbmRpYW5hIHJlbG9jYXRpb24gZ3VpZGUiXX0sCiAgIi8xOS10aGluZ3MtdG8ta25vdy1iZWZvcmUtbW92aW5nLXRvLWxleGluZ3RvbiI6IHtoOiAiMTkgVGhpbmdzIHRvIEtub3cgQmVmb3JlIE1vdmluZyB0byBMZXhpbmd0b24sIEtZIiwgZDogIlJlbG9jYXRpbmcgdG8gTGV4aW5ndG9uPyAxOSB0aGluZ3MgdG8ga25vdyBhYm91dCBqb2JzLCBjb3N0IG9mIGxpdmluZywgbmVpZ2hib3Job29kcywgc2Nob29scywgaG9yc2UgY3VsdHVyZSwgZm9vZCwgcGFya3MsIFVLIGJhc2tldGJhbGwgYW5kIG1vdmluZyBsb2dpc3RpY3MuIiwgazogWyJtb3ZpbmcgdG8gTGV4aW5ndG9uIEtZIiwicmVsb2NhdGluZyB0byBMZXhpbmd0b24gS2VudHVja3kiLCJ0aGluZ3MgdG8ga25vdyBiZWZvcmUgbW92aW5nIHRvIExleGluZ3RvbiIsIkxleGluZ3RvbiBLWSByZWxvY2F0aW9uIGd1aWRlIiwiTGV4aW5ndG9uIGNvc3Qgb2YgbGl2aW5nIiwiTGV4aW5ndG9uIEtlbnR1Y2t5IG5laWdoYm9yaG9vZHMiXX0sCiAgIi9jb25nb2xlc2UtY29tbXVuaXR5LWdyb3d0aC1yZWFsLWVzdGF0ZS1sb3Vpc3ZpbGxlIjoge2g6ICJMb3Vpc3ZpbGxlJ3MgQ29uZ29sZXNlIENvbW11bml0eSBJcyBHcm93aW5nIEZhc3Qg4oCUIFdoYXQgSXQgTWVhbnMgZm9yIFJlYWwgRXN0YXRlIiwgZDogIkJldHdlZW4gMjAxOCBhbmQgMjAyMiwgbmVhcmx5IDMsMDAwIHBlb3BsZSBmcm9tIHRoZSBEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZSBDb25nbyByZXNldHRsZWQgaW4gTG91aXN2aWxsZSDigJQgdGhlIHNlY29uZCBmYXN0ZXN0LWdyb3dpbmcgaW1taWdyYW50IGNvbW11bml0eSBpbiB0aGUgY2l0eS4iLCBrOiBbIkNvbmdvbGVzZSBjb21tdW5pdHkgTG91aXN2aWxsZSIsICJEUkMgcmVmdWdlZXMgTG91aXN2aWxsZSBLZW50dWNreSIsICJBZnJpY2FuIGltbWlncmFudHMgTG91aXN2aWxsZSByZWFsIGVzdGF0ZSIsICJLZW50dWNreSBSZWZ1Z2VlIE1pbmlzdHJpZXMiLCAiQ29uZ29sZXNlIEFtZXJpY2FuIHJlYWwgZXN0YXRlIGFnZW50IiwgInJlZnVnZWUgaG9tZW93bmVyc2hpcCBMb3Vpc3ZpbGxlIl19LAogICIvbG91aXN2aWxsZS1pbW1pZ3JhbnQtcG9wdWxhdGlvbi1ncm93dGgtcmVhbC1lc3RhdGUiOiB7aDogIkxvdWlzdmlsbGUncyBJbW1pZ3JhbnQgUG9wdWxhdGlvbiBJcyBHcm93aW5nIEZhc3RlciBUaGFuIEFsbW9zdCBBbnl3aGVyZSBFbHNlIiwgZDogIkplZmZlcnNvbiBDb3VudHkncyBmb3JlaWduLWJvcm4gcG9wdWxhdGlvbiBoYXMgbmVhcmx5IGRvdWJsZWQgZXZlcnkgZGVjYWRlIHNpbmNlIDE5OTAuIFNlZSB3aGF0IHRoYXQgZ3Jvd3RoIG1lYW5zIGZvciByZWFsIGVzdGF0ZSBpbiBMb3Vpc3ZpbGxlLiIsIGs6IFsiTG91aXN2aWxsZSBpbW1pZ3JhbnQgcG9wdWxhdGlvbiIsICJmb3JlaWduLWJvcm4gTG91aXN2aWxsZSBLZW50dWNreSIsICJMb3Vpc3ZpbGxlIGltbWlncmF0aW9uIGdyb3d0aCIsICJpbW1pZ3JhbnQgaG9tZW93bmVyc2hpcCBMb3Vpc3ZpbGxlIiwgIkxvdWlzdmlsbGUgcmVhbCBlc3RhdGUgZGVtb2dyYXBoaWNzIl19LAogICIvaGlzcGFuaWMtY29tbXVuaXR5LWdyb3d0aC1yZWFsLWVzdGF0ZS1sb3Vpc3ZpbGxlIjoge2g6ICJMb3Vpc3ZpbGxlJ3MgSGlzcGFuaWMgQ29tbXVuaXR5IElzIEdyb3dpbmcgRmFzdCDigJQgSGVyZSdzIFdoYXQgSXQgTWVhbnMgZm9yIFJlYWwgRXN0YXRlIiwgZDogIkplZmZlcnNvbiBDb3VudHkncyBIaXNwYW5pYyBwb3B1bGF0aW9uIGhhcyBncm93biBzaXhmb2xkIHNpbmNlIDIwMDAsIExvdWlzdmlsbGUncyBDdWJhbiBjb21tdW5pdHkgaGFzIHF1YWRydXBsZWQgc2luY2UgMjAxMCwgYW5kIEhpc3BhbmljIGhvbWVvd25lcnNoaXAganVzdCBoaXQgYSBuYXRpb25hbCByZWNvcmQuIiwgazogWyJIaXNwYW5pYyByZWFsIGVzdGF0ZSBMb3Vpc3ZpbGxlIiwgIkhpc3BhbmljIGhvbWVvd25lcnNoaXAgTG91aXN2aWxsZSBLWSIsICJMYXRpbm8gY29tbXVuaXR5IExvdWlzdmlsbGUgZ3Jvd3RoIiwgIk5BSFJFUCBMb3Vpc3ZpbGxlIiwgIlNwYW5pc2ggc3BlYWtpbmcgcmVhbHRvciBMb3Vpc3ZpbGxlIiwgIkN1YmFuIGNvbW11bml0eSBMb3Vpc3ZpbGxlIEtlbnR1Y2t5Il19LAogICIvaGlnaGxhbmRzLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiOiB7aDogIlRoZSBIaWdobGFuZHMgTG91aXN2aWxsZSBSZWFsIEVzdGF0ZSBHdWlkZSAoNDAyMDQgLyA0MDIwNSkiLCBkOiAiQnV5aW5nLCBzZWxsaW5nIGFuZCBpbnZlc3RpbmcgaW4gTG91aXN2aWxsZSdzIEhpZ2hsYW5kczogaG91c2luZyBzdG9jayBieSBzdWItbmVpZ2hib3Job29kLCBwcmljZSBiYW5kcywgQ2hlcm9rZWUgVHJpYW5nbGUgcHJlc2VydmF0aW9uIHJ1bGVzLCBTVFIgcmVnaXN0cmF0aW9uIGFuZCBBdWd1c3QgMjAyNiBkYXRhLiIsIGs6IFsiSGlnaGxhbmRzIExvdWlzdmlsbGUgaG9tZXMgZm9yIHNhbGUiLCAiQ2hlcm9rZWUgVHJpYW5nbGUgcmVhbCBlc3RhdGUiLCAiNDAyMDUgaG9tZXMgZm9yIHNhbGUiLCAiNDAyMDQgcmVhbCBlc3RhdGUiLCAiRGVlciBQYXJrIExvdWlzdmlsbGUgaG9tZXMiLCAiQm9ubnljYXN0bGUgTG91aXN2aWxsZSByZWFsIGVzdGF0ZSIsICJUeWxlciBQYXJrIExvdWlzdmlsbGUgaG91c2VzIiwgIkJhcmRzdG93biBSb2FkIExvdWlzdmlsbGUgcmVhbCBlc3RhdGUiXX0sCiAgIi9nZXJtYW50b3duLXNjaG5pdHplbGJ1cmctbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6IHtoOiAiR2VybWFudG93biAmIFNjaG5pdHplbGJ1cmcgTG91aXN2aWxsZSBSZWFsIEVzdGF0ZSBHdWlkZSAoNDAyMTcpIiwgZDogIkJ1eWluZywgc2VsbGluZyBhbmQgaW52ZXN0aW5nIGluIEdlcm1hbnRvd24gYW5kIFNjaG5pdHplbGJ1cmcsIExvdWlzdmlsbGU6IHNob3RndW4gYW5kIGNhbWVsYmFjayBob3VzaW5nLCBHb3NzIEF2ZW51ZSwgcHJpY2UgYmFuZHMsIEJlYXJncmFzcyBDcmVlayBmbG9vZCBub3RlcywgU1RSIHJ1bGVzIGFuZCBBdWd1c3QgMjAyNiBtYXJrZXQgZGF0YS4iLCBrOiBbIkdlcm1hbnRvd24gTG91aXN2aWxsZSBob21lcyBmb3Igc2FsZSIsICJTY2huaXR6ZWxidXJnIHJlYWwgZXN0YXRlIiwgIjQwMjE3IGhvbWVzIGZvciBzYWxlIiwgInNob3RndW4gaG91c2UgTG91aXN2aWxsZSIsICJjYW1lbGJhY2sgaG91c2UgTG91aXN2aWxsZSIsICJHb3NzIEF2ZW51ZSBMb3Vpc3ZpbGxlIHJlYWwgZXN0YXRlIiwgIkdlcm1hbnRvd24gTG91aXN2aWxsZSBLWSBob3VzZXMiXX0sCiAgIi9vbGQtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSI6IHtoOiAiT2xkIExvdWlzdmlsbGUgUmVhbCBFc3RhdGUgR3VpZGUgKDQwMjA4KSIsIGQ6ICJPbGQgTG91aXN2aWxsZSwgS1kgcmVhbCBlc3RhdGU6IFZpY3RvcmlhbiBob3VzaW5nIHN0b2NrLCBTdC4gSmFtZXMgQ291cnQgYW5kIENlbnRyYWwgUGFyaywgcHJlc2VydmF0aW9uIGRpc3RyaWN0IENPQSBydWxlcywgY29uZG8gY29udmVyc2lvbnMsIFVvZkwgcHJveGltaXR5LCBTVFIgcnVsZXMgYW5kIEF1Z3VzdCAyMDI2IG1hcmtldCBkYXRhLiIsIGs6IFsiT2xkIExvdWlzdmlsbGUgaG9tZXMgZm9yIHNhbGUiLCAiT2xkIExvdWlzdmlsbGUgcmVhbCBlc3RhdGUiLCAiNDAyMDggaG9tZXMgZm9yIHNhbGUiLCAiU3QuIEphbWVzIENvdXJ0IGhvbWVzIiwgIlZpY3RvcmlhbiBob3VzZSBMb3Vpc3ZpbGxlIEtZIiwgIk9sZCBMb3Vpc3ZpbGxlIGNvbmRvcyIsICJPbGQgTG91aXN2aWxsZSBwcmVzZXJ2YXRpb24gZGlzdHJpY3QiXX0sCiAgIi9udWx1LWJ1dGNoZXJ0b3duLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiOiB7aDogIk51THUgJiBCdXRjaGVydG93biBMb3Vpc3ZpbGxlIFJlYWwgRXN0YXRlIEd1aWRlICg0MDIwMiAvIDQwMjA2KSIsIGQ6ICJOdUx1IGFuZCBCdXRjaGVydG93biwgTG91aXN2aWxsZSByZWFsIGVzdGF0ZTogbG9mdHMgYW5kIGNvbmRvcyBvbiBFYXN0IE1hcmtldCwgc2hvdGd1biBob3VzZXMgaW4gdGhlIEJ1dGNoZXJ0b3duIHByZXNlcnZhdGlvbiBkaXN0cmljdCwgQmVhcmdyYXNzIENyZWVrIGZsb29kIG5vdGVzLCBTVFIgcnVsZXMsIEF1Z3VzdCAyMDI2IGRhdGEuIiwgazogWyJOdUx1IExvdWlzdmlsbGUgY29uZG9zIGZvciBzYWxlIiwgIkJ1dGNoZXJ0b3duIExvdWlzdmlsbGUgaG9tZXMgZm9yIHNhbGUiLCAiTnVMdSBsb2Z0cyBMb3Vpc3ZpbGxlIiwgIjQwMjAyIGNvbmRvcyIsICJCdXRjaGVydG93biByZWFsIGVzdGF0ZSIsICJFYXN0IE1hcmtldCBTdHJlZXQgTG91aXN2aWxsZSByZWFsIGVzdGF0ZSIsICJMeW5uIEZhbWlseSBTdGFkaXVtIG5laWdoYm9yaG9vZCBob21lcyIsICJkb3dudG93biBMb3Vpc3ZpbGxlIGNvbmRvcyJdfSwKICAiL21pZGRsZXRvd24ta3ktcmVhbC1lc3RhdGUtZ3VpZGUiOiB7aDogIk1pZGRsZXRvd24sIEtZIFJlYWwgRXN0YXRlIEd1aWRlICg0MDI0MykiLCBkOiAiTWlkZGxldG93biwgS2VudHVja3kgcmVhbCBlc3RhdGU6IFNoZWxieXZpbGxlIFJvYWQgY29ycmlkb3IsIDE5NjBzIGNvcmUgdnMuIDE5OTBzLTIwMTBzIHN1YmRpdmlzaW9ucywgSE9BIHBhdHRlcm5zLCBjaXR5IHByb3BlcnR5IHRheCwgU1RSIHJ1bGVzIGFuZCBBdWd1c3QgMjAyNiBtYXJrZXQgZGF0YSBmb3IgNDAyNDMuIiwgazogWyJNaWRkbGV0b3duIEtZIGhvbWVzIGZvciBzYWxlIiwgIk1pZGRsZXRvd24gS2VudHVja3kgcmVhbCBlc3RhdGUiLCAiNDAyNDMgaG9tZXMgZm9yIHNhbGUiLCAiU2hlbGJ5dmlsbGUgUm9hZCBMb3Vpc3ZpbGxlIGhvbWVzIiwgIk1pZGRsZXRvd24gTG91aXN2aWxsZSBzdWJkaXZpc2lvbnMiLCAiRWFzdCBMb3Vpc3ZpbGxlIGhvbWVzIGZvciBzYWxlIiwgImhvbWVzIG5lYXIgQmVja2xleSBDcmVlayBQYXJrIl19LAogICIvbm9ydG9uLWNvbW1vbnMtcmVhbC1lc3RhdGUtZ3VpZGUiOiB7aDogIk5vcnRvbiBDb21tb25zIFJlYWwgRXN0YXRlIEd1aWRlOiBQcmljZXMsIEhPQSwgTmV3IHZzIFJlc2FsZSIsIGQ6ICJXaW5uZXIgUmVhbHR5J3MgZ3VpZGUgdG8gTm9ydG9uIENvbW1vbnMsIFByb3NwZWN0IEtZIDQwMDU5OiBBdWd1c3QgMjAyNiBwcmljZXMsIHZpbGxhZ2UtYnktdmlsbGFnZSBob3VzaW5nLCBIT0EgYW5kIGFyY2hpdGVjdHVyYWwgcmV2aWV3LCBuZXcgY29uc3RydWN0aW9uIHZzIHJlc2FsZSwgaW52ZXN0b3IgY2FzZS4iLCBrOiBbIk5vcnRvbiBDb21tb25zIGhvbWVzIGZvciBzYWxlIiwgIk5vcnRvbiBDb21tb25zIHJlYWwgZXN0YXRlIiwgIk5vcnRvbiBDb21tb25zIEhPQSIsICJOb3J0b24gQ29tbW9ucyBQcm9zcGVjdCBLWSIsICJOb3J0b24gQ29tbW9ucyBOb3J0aCBWaWxsYWdlIiwgIk5vcnRvbiBDb21tb25zIGhvbWUgcHJpY2VzIiwgIk5vcnRvbiBDb21tb25zIG5ldyBjb25zdHJ1Y3Rpb24iLCAiNDAwNTkgcmVhbCBlc3RhdGUiXX0sCiAgIi9mZXJuLWNyZWVrLWt5LXJlYWwtZXN0YXRlLWd1aWRlIjoge2g6ICJGZXJuIENyZWVrLCBLWSBSZWFsIEVzdGF0ZSBHdWlkZTogUHJpY2VzLCBTdWJkaXZpc2lvbnMsIENvbW11dGUiLCBkOiAiV2lubmVyIFJlYWx0eSdzIGd1aWRlIHRvIEZlcm4gQ3JlZWssIExvdWlzdmlsbGUgNDAyOTE6IEF1Z3VzdCAyMDI2IHByaWNlcyBhbmQgZGF5cyBvbiBtYXJrZXQsIHN1YmRpdmlzaW9ucyBieSBlcmEsIDE5NjBzLTIwMDBzIGluc3BlY3Rpb24gcG9pbnRzLCBIT0EgYW5kIGZsb29kcGxhaW4gZmFjdHMsIGludmVzdG9yIG5vdGVzLiIsIGs6IFsiRmVybiBDcmVlayBLWSBob21lcyBmb3Igc2FsZSIsICJGZXJuIENyZWVrIExvdWlzdmlsbGUgcmVhbCBlc3RhdGUiLCAiNDAyOTEgaG9tZXMgZm9yIHNhbGUiLCAiRmVybiBDcmVlayBob21lIHByaWNlcyIsICJob3VzZXMgZm9yIHNhbGUgRmVybiBDcmVlayBLZW50dWNreSIsICJHbGVubWFyeSBMb3Vpc3ZpbGxlIGhvbWVzIiwgIkZlcm4gQ3JlZWsgS1kgbmVpZ2hib3Job29kIGd1aWRlIl19LAogICIvb2tvbG9uYS1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIjoge2g6ICJPa29sb25hLCBMb3Vpc3ZpbGxlIFJlYWwgRXN0YXRlIEd1aWRlOiBSYW5jaGVzLCBQcmljZXMsIFJlbnRhbHMiLCBkOiAiV2lubmVyIFJlYWx0eSdzIGd1aWRlIHRvIE9rb2xvbmEsIExvdWlzdmlsbGUgNDAyMTk6IEF1Z3VzdCAyMDI2IHByaWNlcyBhbmQgZGF5cyBvbiBtYXJrZXQsIG1pZC1jZW50dXJ5IHJhbmNoIGluc3BlY3Rpb24gcG9pbnRzLCBQb25kIENyZWVrIGZsb29kcGxhaW4gZmFjdHMsIFByZXN0b24gSGlnaHdheSwgaW52ZXN0b3IgY2FzZS4iLCBrOiBbIk9rb2xvbmEgaG9tZXMgZm9yIHNhbGUiLCAiT2tvbG9uYSBMb3Vpc3ZpbGxlIHJlYWwgZXN0YXRlIiwgIjQwMjE5IGhvbWVzIGZvciBzYWxlIiwgIk9rb2xvbmEgS1kgaG9tZSBwcmljZXMiLCAiaG91c2VzIG5lYXIgVVBTIFdvcmxkcG9ydCIsICJQcmVzdG9uIEhpZ2h3YXkgTG91aXN2aWxsZSBob21lcyIsICJPa29sb25hIGludmVzdG1lbnQgcHJvcGVydHkiXX0sCiAgIi9zaGl2ZWx5LXBsZWFzdXJlLXJpZGdlLXBhcmstcmVhbC1lc3RhdGUtZ3VpZGUiOiB7aDogIlNoaXZlbHkgJiBQbGVhc3VyZSBSaWRnZSBQYXJrIFJlYWwgRXN0YXRlIEd1aWRlOiBEaXhpZSBIaWdod2F5IiwgZDogIldpbm5lciBSZWFsdHkncyBndWlkZSB0byBTaGl2ZWx5IGFuZCBQbGVhc3VyZSBSaWRnZSBQYXJrIG9uIHRoZSBEaXhpZSBIaWdod2F5IGNvcnJpZG9yOiBBdWd1c3QgMjAyNiBwcmljZXMsIHRoZSBOZXcgRGl4aWUgSGlnaHdheSBwcm9qZWN0LCAxOTQwcy04MHMgaW5zcGVjdGlvbiBwb2ludHMsIGZsb29kIGZhY3RzLCByZW50YWwgZGVtYW5kLiIsIGs6IFsiU2hpdmVseSBLWSBob21lcyBmb3Igc2FsZSIsICJQbGVhc3VyZSBSaWRnZSBQYXJrIGhvbWVzIGZvciBzYWxlIiwgIjQwMjE2IHJlYWwgZXN0YXRlIiwgIjQwMjU4IGhvbWVzIGZvciBzYWxlIiwgIkRpeGllIEhpZ2h3YXkgTG91aXN2aWxsZSByZWFsIGVzdGF0ZSIsICJTaGl2ZWx5IEtlbnR1Y2t5IHJlYWwgZXN0YXRlIiwgIlBSUCBMb3Vpc3ZpbGxlIGhvbWVzIiwgInNvdXRod2VzdCBMb3Vpc3ZpbGxlIGludmVzdG1lbnQgcHJvcGVydHkiXX0sCiAgIi9uZXctYWxiYW55LWplZmZlcnNvbnZpbGxlLWluZGlhbmEtcmVhbC1lc3RhdGUtZ3VpZGUiOiB7aDogIk5ldyBBbGJhbnkgJiBKZWZmZXJzb252aWxsZSwgSW5kaWFuYSBSZWFsIEVzdGF0ZSBHdWlkZSIsIGQ6ICJXaW5uZXIgUmVhbHR5J3MgS1ktYW5kLUlOIGd1aWRlIHRvIE5ldyBBbGJhbnkgYW5kIEplZmZlcnNvbnZpbGxlOiBJbmRpYW5hIHRheCBjYXBzIGFuZCBob21lc3RlYWQgZGVkdWN0aW9ucywgUml2ZXJMaW5rIHRvbGxzLCBCaWcgRm91ciBCcmlkZ2UsIGhpc3RvcmljIGFuZCBuZXcgaG91c2luZywgZmxvb2QgbWFwcywgaW52ZXN0b3JzLiIsIGs6IFsiTmV3IEFsYmFueSBJbmRpYW5hIGhvbWVzIGZvciBzYWxlIiwgIkplZmZlcnNvbnZpbGxlIEluZGlhbmEgcmVhbCBlc3RhdGUiLCAiU291dGhlcm4gSW5kaWFuYSBob21lcyBmb3Igc2FsZSIsICJJbmRpYW5hIHByb3BlcnR5IHRheCBjYXAgaG9tZXN0ZWFkIiwgIlJpdmVyTGluayB0b2xsIGNvc3QiLCAibW92aW5nIGZyb20gTG91aXN2aWxsZSB0byBTb3V0aGVybiBJbmRpYW5hIiwgIkplZmZlcnNvbnZpbGxlIElOIGhvbWVzIG5lYXIgQmlnIEZvdXIgQnJpZGdlIiwgIlJlYWx0b3IgbGljZW5zZWQgaW4gS2VudHVja3kgYW5kIEluZGlhbmEiXX0sCiAgIi9kb3duc2l6aW5nLWxvdWlzdmlsbGUtZ3VpZGUiOiB7aDogIkRvd25zaXppbmcgaW4gTG91aXN2aWxsZTogYSByb29tLWJ5LXJvb20sIG1vbnRoLWJ5LW1vbnRoIHBsYW4iLCBkOiAiQSA5MC1kYXkgZG93bnNpemluZyBwbGFuIGZvciBMb3Vpc3ZpbGxlIGhvbWVvd25lcnMgY292ZXJpbmcgdGhlIHN0YXktb3Itc2VsbCBkZWNpc2lvbiwgc2VsbC1maXJzdCB2cyBidXktZmlyc3QsIHNvcnRpbmcsIGRvbmF0aW9uIGFuZCBlc3RhdGUtc2FsZSBvcHRpb25zLCBzZW5pb3IgbW92ZSBtYW5hZ2VycywgY29zdHMsIGFuZCB0YXhlcy4iLCBrOiBbImRvd25zaXppbmcgaW4gTG91aXN2aWxsZSIsICJkb3duc2l6aW5nIGNoZWNrbGlzdCBmb3Igc2VuaW9ycyIsICJzZWxsIGhvdXNlIGJlZm9yZSBidXlpbmcgTG91aXN2aWxsZSIsICJzZW5pb3IgbW92ZSBtYW5hZ2VyIExvdWlzdmlsbGUgS1kiLCAiZXN0YXRlIHNhbGUgY29tcGFuaWVzIExvdWlzdmlsbGUiLCAicGF0aW8gaG9tZXMgTG91aXN2aWxsZSBLWSIsICJjYXBpdGFsIGdhaW5zIG9uIHNlbGxpbmcgaG9tZSBvdmVyIDY1IiwgImRvd25zaXppbmcgaGVscCBMb3Vpc3ZpbGxlIl19LAogICIvc2VsbGluZy1hLXBhcmVudHMtaG9tZS1rZW50dWNreSI6IHtoOiAiU2VsbGluZyBhIHBhcmVudCdzIGhvbWUgaW4gS2VudHVja3k6IHByb2JhdGUsIGVzdGF0ZXMsIGFuZCB3aGF0IGV4ZWN1dG9ycyBuZWVkIHRvIGtub3ciLCBkOiAiSG93IEtlbnR1Y2t5IHByb2JhdGUgYWZmZWN0cyBzZWxsaW5nIGEgcGFyZW50J3MgaG91c2U6IGF1dGhvcml0eSB0byBzZWxsLCB0aGUgNi1tb250aCBjcmVkaXRvciB3aW5kb3csIHNtYWxsIGVzdGF0ZXMsIGluaGVyaXRhbmNlIHRheCBjbGFzc2VzLCBNZWRpY2FpZCBlc3RhdGUgcmVjb3ZlcnksIGFuZCBhbiBleGVjdXRvciBjaGVja2xpc3QuIiwgazogWyJzZWxsaW5nIGEgcGFyZW50cyBob3VzZSBpbiBLZW50dWNreSIsICJLZW50dWNreSBwcm9iYXRlIHJlYWwgZXN0YXRlIiwgImV4ZWN1dG9yIHNlbGxpbmcgaG91c2UgS2VudHVja3kiLCAiS2VudHVja3kgaW5oZXJpdGFuY2UgdGF4IG9uIGhvdXNlIiwgImNhbiBleGVjdXRvciBzZWxsIGhvdXNlIGJlZm9yZSBwcm9iYXRlIEtlbnR1Y2t5IiwgIk1lZGljYWlkIGVzdGF0ZSByZWNvdmVyeSBLZW50dWNreSBob3VzZSIsICJzZWxsaW5nIGluaGVyaXRlZCBob3VzZSBMb3Vpc3ZpbGxlIiwgImFmZmlkYXZpdCBvZiBkZXNjZW50IEtlbnR1Y2t5Il19LAogICIvYWdpbmctaW4tcGxhY2UtbG91aXN2aWxsZS1ob21lLW1vZGlmaWNhdGlvbnMiOiB7aDogIkFnaW5nIGluIHBsYWNlIGluIExvdWlzdmlsbGU6IGhvbWUgbW9kaWZpY2F0aW9ucywgZmluYW5jaW5nLCBhbmQgd2hvIHRvIGNhbGwiLCBkOiAiSG93IHRvIHN0YXkgaW4geW91ciBMb3Vpc3ZpbGxlIGhvbWU6IHVuaXZlcnNhbC1kZXNpZ24gYmFzaWNzLCBtb2RpZmljYXRpb24gY29zdHMsIEZIQSAyMDMoaykgYW5kIEhvbWVTdHlsZSBsb2FucywgVkEgU0FIL1NIQS9ISVNBIGdyYW50cywgZnJlZSBsb2NhbCByZXBhaXIgcHJvZ3JhbXMsIENBUFMgY29udHJhY3RvcnMsIGFuZCByZXNvdXJjZXMuIiwgazogWyJhZ2luZyBpbiBwbGFjZSBMb3Vpc3ZpbGxlIiwgImhvbWUgbW9kaWZpY2F0aW9ucyBmb3Igc2VuaW9ycyBMb3Vpc3ZpbGxlIEtZIiwgIkNBUFMgY29udHJhY3RvciBMb3Vpc3ZpbGxlIiwgImZyZWUgaG9tZSByZXBhaXIgZm9yIHNlbmlvcnMgTG91aXN2aWxsZSIsICJ3aGVlbGNoYWlyIHJhbXAgcHJvZ3JhbSBMb3Vpc3ZpbGxlIiwgIlZBIFNBSCBncmFudCBhbW91bnQgMjAyNiIsICJGSEEgMjAzayBhY2Nlc3NpYmlsaXR5IG1vZGlmaWNhdGlvbnMiLCAiS0lQREEgQ0FQQUJMRSBwcm9ncmFtIl19LAogICIvbWlsaXRhcnktcmVsb2NhdGlvbi1sb3Vpc3ZpbGxlLWZvcnQta25veCI6IHtoOiAiTWlsaXRhcnkgUmVsb2NhdGlvbiB0byBGb3J0IEtub3ggYW5kIExvdWlzdmlsbGU6IFBDUyBCdXlpbmcgR3VpZGUiLCBkOiAiRm9ydCBLbm94IFBDUyBndWlkZSBmcm9tIFdpbm5lciBSZWFsdHk6IGNvbW11dGUgb3B0aW9ucyBpbiBIYXJkaW4sIEJ1bGxpdHQgYW5kIEplZmZlcnNvbiBjb3VudGllcywgVkEgbG9hbiBiYXNpY3MsIEJBSCBidWRnZXRpbmcsIHJlbW90ZSBjbG9zaW5nIHVuZGVyIEtlbnR1Y2t5IGxhdyBhbmQgU0NSQSBsZWFzZSB0ZXJtaW5hdGlvbi4iLCBrOiBbIkZvcnQgS25veCBQQ1MgaG91c2luZyIsICJtaWxpdGFyeSByZWxvY2F0aW9uIExvdWlzdmlsbGUgS1kiLCAiaG9tZXMgbmVhciBGb3J0IEtub3giLCAiVkEgbG9hbiBMb3Vpc3ZpbGxlIEtlbnR1Y2t5IiwgIlJhZGNsaWZmIEtZIGhvbWVzIGZvciBzYWxlIiwgIkZvcnQgS25veCBCQUggMjAyNiIsICJidXlpbmcgYSBob3VzZSByZW1vdGVseSBLZW50dWNreSIsICJGb3J0IEtub3ggcmVhbHRvciJdfSwKICAiL2ZpcnN0LXRpbWUtaG9tZS1idXllci1rZW50dWNreSI6IHtoOiAiRmlyc3QtVGltZSBIb21lIEJ1eWVyIEd1aWRlIGZvciBLZW50dWNreSBhbmQgTG91aXN2aWxsZSAoMjAyNikiLCBkOiAiV2lubmVyIFJlYWx0eSdzIDIwMjYgZ3VpZGUgZm9yIGZpcnN0LXRpbWUgYnV5ZXJzIGluIEtlbnR1Y2t5OiBLSEMgREFQLCBMb3Vpc3ZpbGxlIE1ldHJvIGRvd24gcGF5bWVudCBhc3Npc3RhbmNlLCBsb2FuIHR5cGVzLCBjbG9zaW5nIGNvc3RzLCBLUkVDIEZvcm0gNDAyLCBpbnNwZWN0aW9ucywgYnV5ZXIgYWdyZWVtZW50cywgMTItc3RlcCBwbGFuLiIsIGs6IFsiZmlyc3QgdGltZSBob21lIGJ1eWVyIEtlbnR1Y2t5IiwgIktlbnR1Y2t5IEhvdXNpbmcgQ29ycG9yYXRpb24gZG93biBwYXltZW50IGFzc2lzdGFuY2UiLCAiTG91aXN2aWxsZSBkb3duIHBheW1lbnQgYXNzaXN0YW5jZSBwcm9ncmFtIiwgImZpcnN0IHRpbWUgaG9tZSBidXllciBMb3Vpc3ZpbGxlIEtZIiwgIktIQyBEQVAgMjAyNiIsICJob3cgbXVjaCBkb3duIHBheW1lbnQgS2VudHVja3kiLCAiY2xvc2luZyBjb3N0cyBLZW50dWNreSBidXllciIsICJmaXJzdCB0aW1lIGJ1eWVyIHByb2dyYW1zIExvdWlzdmlsbGUiXX0sCiAgICAiL3JlbG9jYXRpbmctdG8tbG91aXN2aWxsZSI6IHsKICAgICAgaDogIlJlbG9jYXRpbmcgdG8gTG91aXN2aWxsZSwgS1k6IFRoZSBDb21wbGV0ZSAyMDI2IEd1aWRlIiwKICAgICAgZDogIk1vdmluZyB0byBMb3Vpc3ZpbGxlPyBSZWFsIDIwMjYgaG91c2luZyBjb3N0cywgdGF4ZXMsIG5laWdoYm9yaG9vZHMgYnkgY29tbXV0ZSBhbmQgYnVkZ2V0LCB0aGUgZm9vZCwgdGhlIHBhcmtzLCBqb2JzLCB3ZWF0aGVyIGFuZCBhIDkwLzYwLzMwLWRheSBjaGVja2xpc3QgZnJvbSBXaW5uZXIgUmVhbHR5LCBsaWNlbnNlZCBpbiBLZW50dWNreSBhbmQgSW5kaWFuYS4iLAogICAgICBrOiBbInJlbG9jYXRpbmcgdG8gTG91aXN2aWxsZSIsIm1vdmluZyB0byBMb3Vpc3ZpbGxlIEtZIiwiTG91aXN2aWxsZSByZWxvY2F0aW9uIGd1aWRlIiwiY29zdCBvZiBsaXZpbmcgTG91aXN2aWxsZSIsIkxvdWlzdmlsbGUgbmVpZ2hib3Job29kcyIsIm1vdmluZyB0byBLZW50dWNreSIsIkxvdWlzdmlsbGUgcmVsb2NhdGlvbiByZWFsdG9yIl0KICAgIH0sCiAgICAiL21vdmluZy10by1zb3V0aGVybi1pbmRpYW5hIjogewogICAgICBoOiAiTW92aW5nIHRvIFNvdXRoZXJuIEluZGlhbmE6IFRoZSAyMDI2IEd1aWRlIHRvIEplZmZlcnNvbnZpbGxlLCBOZXcgQWxiYW55LCBDbGFya3N2aWxsZSBhbmQgQmV5b25kIiwKICAgICAgZDogIlJlbG9jYXRpbmcgdG8gU291dGhlcm4gSW5kaWFuYT8gVGhlIHJlYWwgS2VudHVja3ktdmVyc3VzLUluZGlhbmEgdGF4IG1hdGggZm9yIExvdWlzdmlsbGUgY29tbXV0ZXJzLCB0aGUgYnJpZGdlcyBhbmQgdG9sbHMsIHRoZSB0b3ducywgc2Nob29scyBhbmQgaG93IGJ1eWluZyB3b3JrcyBvbiB0aGUgSW5kaWFuYSBzaWRlLiBXaW5uZXIgUmVhbHR5IGlzIGxpY2Vuc2VkIGluIGJvdGggc3RhdGVzLiIsCiAgICAgIGs6IFsibW92aW5nIHRvIFNvdXRoZXJuIEluZGlhbmEiLCJyZWxvY2F0aW5nIHRvIFNvdXRoZXJuIEluZGlhbmEiLCJKZWZmZXJzb252aWxsZSBJbmRpYW5hIHJlbG9jYXRpb24iLCJOZXcgQWxiYW55IEluZGlhbmEgaG9tZXMiLCJDbGFya3N2aWxsZSBJbmRpYW5hIGxpdmluZyIsIktlbnR1Y2t5IHZzIEluZGlhbmEgdGF4ZXMiLCJTb3V0aGVybiBJbmRpYW5hIHJlYWx0b3IiXQogICAgfSwKICAgICIvcmVsb2NhdGluZy10by1rZW50dWNreSI6IHsKICAgICAgaDogIlJlbG9jYXRpbmcgdG8gS2VudHVja3k6IFRoZSAyMDI2IEd1aWRlIHRvIFRheGVzLCBSZWdpb25zLCBDb3N0cyBhbmQgQnV5aW5nIGEgSG9tZSIsCiAgICAgIGQ6ICJNb3ZpbmcgdG8gS2VudHVja3k/IFRoZSAzLjUlIGZsYXQgaW5jb21lIHRheCwgbG9jYWwgd2FnZSB0YXhlcywgd2hhdCBob21lcyBjb3N0LCBMb3Vpc3ZpbGxlIHZzLiBMZXhpbmd0b24gdnMuIE5vcnRoZXJuIEtlbnR1Y2t5LCBhbmQgd2hhdCBpcyBkaWZmZXJlbnQgYWJvdXQgYnV5aW5nIGEgaG9tZSBoZXJlLCBmcm9tIFdpbm5lciBSZWFsdHkgaW4gTG91aXN2aWxsZS4iLAogICAgICBrOiBbInJlbG9jYXRpbmcgdG8gS2VudHVja3kiLCJtb3ZpbmcgdG8gS2VudHVja3kiLCJLZW50dWNreSByZWxvY2F0aW9uIGd1aWRlIiwiS2VudHVja3kgaW5jb21lIHRheCAyMDI2IiwiTG91aXN2aWxsZSB2cyBMZXhpbmd0b24iLCJjb3N0IG9mIGxpdmluZyBLZW50dWNreSIsIktlbnR1Y2t5IHJlYWwgZXN0YXRlIl0KICAgIH0sCiAgICAiL3Nlbmlvci1yZWFsLWVzdGF0ZS1zZXJ2aWNlcy1pbi1sb3Vpc3ZpbGxlIjogewogICAgICBoOiAiU2VuaW9yIFJlYWwgRXN0YXRlIFNlcnZpY2VzIGluIExvdWlzdmlsbGUiLAogICAgICBkOiAiQWdpbmcgaW4gcGxhY2UsIGRvd25zaXppbmcsIG9yIGEgbW92ZSB0byBhc3Npc3RlZCBsaXZpbmcgaW4gTG91aXN2aWxsZS4gV2lubmVyIFJlYWx0eSBoYXMgcmVhbCwgaGFuZHMtb24gc2VuaW9yLW1vdmUgZXhwZXJpZW5jZSBwbHVzIGhvbmVzdCBNZWRpY2FpZCBhbmQgaG9tZS1jbGVhbm91dCBndWlkYW5jZS4iLAogICAgICBrOiBbInNlbmlvciByZWFsIGVzdGF0ZSBhZ2VudCBMb3Vpc3ZpbGxlIiwiZG93bnNpemluZyBzcGVjaWFsaXN0IExvdWlzdmlsbGUiLCJhZ2luZyBpbiBwbGFjZSByZWFsIGVzdGF0ZSIsImFzc2lzdGVkIGxpdmluZyB0cmFuc2l0aW9uIHJlYWx0b3IiLCJNZWRpY2FpZCBob21lIHNhbGUgTG91aXN2aWxsZSIsInNlbmlvciBtb3ZlIG1hbmFnZXIgTG91aXN2aWxsZSIsIlNSRVMgTG91aXN2aWxsZSByZWFsdG9yIl0KICAgIH0sCiAgICAiL3NlbGxpbmctYS1kaXN0cmVzc2VkLW9yLWRpZmZpY3VsdC1wcm9wZXJ0eS1pbi1sb3Vpc3ZpbGxlLTg0ODkwMiI6IHsKICAgICAgaDogIlNlbGxpbmcgYSBEaXN0cmVzc2VkIG9yIERpZmZpY3VsdCBQcm9wZXJ0eSBpbiBMb3Vpc3ZpbGxlIiwKICAgICAgZDogIkhvYXJkZXIgaG91c2UsIGZpcmUgb3IgZmxvb2QgZGFtYWdlLCBmb3JlY2xvc3VyZSwgb3Igc3F1YXR0ZXJzLiBXaW5uZXIgUmVhbHR5IGhhcyByZWFsLCBoYW5kcy1vbiBleHBlcmllbmNlIHNlbGxpbmcgZGlmZmljdWx0IHByb3BlcnRpZXMgaW4gTG91aXN2aWxsZS4iLAogICAgICBrOiBbImRpc3RyZXNzZWQgcHJvcGVydHkgYWdlbnQgTG91aXN2aWxsZSIsInNlbGwgaG9hcmRlciBob3VzZSBMb3Vpc3ZpbGxlIiwiZmlyZSBkYW1hZ2VkIGhvdXNlIHJlYWx0b3IgTG91aXN2aWxsZSIsImZsb29kIGRhbWFnZWQgaG91c2UgTG91aXN2aWxsZSIsImZvcmVjbG9zdXJlIHJlYWx0b3IgTG91aXN2aWxsZSBLZW50dWNreSIsInNlbGwgaG91c2Ugd2l0aCBzcXVhdHRlcnMgS2VudHVja3kiLCJwcm9iYXRlIHJlYWwgZXN0YXRlIGFnZW50IExvdWlzdmlsbGUiXQogICAgfSwKICAgICIvYWNjZXNzaWJpbGl0eS1yZXNvdXJjZXMtbG91aXN2aWxsZSI6IHsKICAgICAgaDogIkFjY2Vzc2liaWxpdHkgUmVzb3VyY2VzIGZvciBEZWFmLCBCbGluZCAmIE5ldXJvZGl2ZXJnZW50IENsaWVudHMgaW4gTG91aXN2aWxsZSIsCiAgICAgIGQ6ICJGcmVlIHJlbGF5IGFuZCBjYXB0aW9uZWQgcGhvbmUgc2VydmljZXMsIGxvY2FsIEFTTCBpbnRlcnByZXRlciBhZ2VuY2llcywgYmxpbmQgYW5kIGxvdy12aXNpb24gcmVzb3VyY2VzLCBhbmQgb3VyIHNlbnNvcnkgYW5kIGV4dGVuZGVkLXRpbWUgc2hvd2luZyBwb2xpY3kuIiwKICAgICAgazogWyJBY2Nlc3NpYmlsaXR5IHJlc291cmNlcyBMb3Vpc3ZpbGxlIiwiQVNMIGludGVycHJldGVyIExvdWlzdmlsbGUiLCJzZW5zb3J5IGZyaWVuZGx5IHJlYWwgZXN0YXRlIiwiRGVhZiByZWxheSBzZXJ2aWNlIiwiYmxpbmQgcmVzb3VyY2VzIExvdWlzdmlsbGUiLCJzZW5zb3J5LWZyaWVuZGx5IHJlYWx0b3IiLCJuZXVyb2RpdmVyZ2VudCBob21lIGJ1eWVyIiwicXVpZXQgc2hvd2luZyBhdXRpc20iLCJzZXJ2aWNlIGFuaW1hbCB3ZWxjb21lIHJlYWwgZXN0YXRlIl0KICAgIH0sCiAgICAiL2FjY2Vzc2libGUtcmVhbC1lc3RhdGUtbG91aXN2aWxsZSI6IHsKICAgICAgaDogIkFjY2Vzc2libGUgUmVhbCBFc3RhdGUgaW4gTG91aXN2aWxsZSIsCiAgICAgIGQ6ICJXaGF0IFdpbm5lciBSZWFsdHkgaGFzIGluIHBsYWNlIHRvZGF5IGFuZCBpcyBhY3RpdmVseSBidWlsZGluZyB0byBzZXJ2ZSBEZWFmLCBoYXJkIG9mIGhlYXJpbmcsIGJsaW5kLCBsb3cgdmlzaW9uLCBhbmQgbW9iaWxpdHktaW1wYWlyZWQgYnV5ZXJzIGFuZCBzZWxsZXJzIGluIExvdWlzdmlsbGUuIiwKICAgICAgazogWyJBY2Nlc3NpYmxlIHJlYWwgZXN0YXRlIExvdWlzdmlsbGUiLCJEaXNhYmlsaXR5IGFjY29tbW9kYXRpb25zIHJlYWwgZXN0YXRlIiwiQURBIHJlYWwgZXN0YXRlIGFnZW50IiwiQVNMIGludGVycHJldGVyIHJlYWwgZXN0YXRlIiwiZGlzYWJpbGl0eSBmcmllbmRseSByZWFsdG9yIExvdWlzdmlsbGUiLCJBREEgcmVhc29uYWJsZSBhY2NvbW1vZGF0aW9uIHJlYWwgZXN0YXRlIGFnZW50Il0KICAgIH0sCiAgICAiL2ludmVzdG1lbnQtcHJvcGVydHktYW5hbHl6ZXIiOiB7CiAgICAgIGg6ICJJbnZlc3RtZW50IFByb3BlcnR5IEFuYWx5emVyOiBDYXAgUmF0ZSAmIENhc2gtb24tQ2FzaCBDYWxjdWxhdG9yIiwKICAgICAgZDogIkZyZWUgY2FsY3VsYXRvciBmb3IgTG91aXN2aWxsZSByZW50YWwgcHJvcGVydHkgaW52ZXN0b3JzLiBFc3RpbWF0ZSBjYXAgcmF0ZSwgY2FzaC1vbi1jYXNoIHJldHVybiwgTk9JLCBhbmQgbW9udGhseSBjYXNoIGZsb3cgYmVmb3JlIHlvdSBidXkuIiwKICAgICAgazogWyJDYXAgcmF0ZSIsIkNhc2gtb24tY2FzaCByZXR1cm4iLCJJbnZlc3RtZW50IHByb3BlcnR5IGFuYWx5c2lzIl0KICAgIH0sCiAgICAiL3NlbGxlci1uZXQtcHJvY2VlZHMtY2FsY3VsYXRvciI6IHsKICAgICAgaDogIlNlbGxlciBOZXQgUHJvY2VlZHMgQ2FsY3VsYXRvcjogV2hhdCBZb3UnbGwgV2FsayBBd2F5IFdpdGgiLAogICAgICBkOiAiRnJlZSBjYWxjdWxhdG9yIGZvciBLZW50dWNreSBob21lIHNlbGxlcnMuIEVzdGltYXRlIG5ldCBwcm9jZWVkcyBhZnRlciBtb3J0Z2FnZSBwYXlvZmYsIGNvbW1pc3Npb24sIHRyYW5zZmVyIHRheCwgYW5kIGNsb3NpbmcgY29zdHMuIiwKICAgICAgazogWyJTZWxsZXIgbmV0IHByb2NlZWRzIiwiS2VudHVja3kgdHJhbnNmZXIgdGF4IiwiSG9tZSBzZWxsaW5nIGNvc3RzIl0KICAgIH0sCiAgICAiL3dyYXBhcm91bmQtbW9ydGdhZ2Uta2VudHVja3kiOiB7CiAgICAgIGg6ICJXcmFwYXJvdW5kIE1vcnRnYWdlcyBpbiBLZW50dWNreTogSG93IFRoZXkgV29yayBhbmQgV2hvIENhcnJpZXMgdGhlIFJpc2siLAogICAgICBkOiAiTm8gS2VudHVja3kgc3RhdHV0ZSBtZW50aW9ucyB3cmFwYXJvdW5kcywgYnV0IGZlZGVyYWwgcnVsZXMgbmFtZSB0aGVtLiBXaGF0IEdhcm4tU3QgR2VybWFpbiwgUmVndWxhdGlvbiBaIGFuZCBLZW50dWNreSBsaWNlbnNpbmcgbGF3IGRvIHRvIGEgd3JhcCBzZWxsZXIuIiwKICAgICAgazogWyJXcmFwYXJvdW5kIG1vcnRnYWdlIiwiRHVlLW9uLXNhbGUgY2xhdXNlIiwiU2VsbGVyIGZpbmFuY2luZyJdCiAgICB9LAogICAgIi93aGF0LWlzLW15LWhvdXNlLXdvcnRoLWxvdWlzdmlsbGUiOiB7CiAgICAgIGg6ICJXaGF0IElzIE15IEhvdXNlIFdvcnRoIGluIExvdWlzdmlsbGU/IEhvdyBWYWx1YXRpb24gQWN0dWFsbHkgV29ya3MiLAogICAgICBkOiAiWmlsbG93IHB1Ymxpc2hlcyBubyBhY2N1cmFjeSBmaWd1cmUgZm9yIExvdWlzdmlsbGUuIFdoYXQgeW91ciBob3VzZSBpcyByZWFsbHkgd29ydGgsIGhvdyB0aGUgdGhyZWUgdmFsdWF0aW9uIG1ldGhvZHMgZGlmZmVyLCBhbmQgd2hhdCBhIHNhbGUgYWN0dWFsbHkgbmV0cyB5b3UuIiwKICAgICAgazogWyJIb21lIHZhbHVhdGlvbiIsIkxvdWlzdmlsbGUgaG91c2luZyBtYXJrZXQiLCJaZXN0aW1hdGUgYWNjdXJhY3kiXQogICAgfSwKICAgICIva2VudHVja3ktcmVhbC1lc3RhdGUtbGljZW5zZS1yZXF1aXJlbWVudHMiOiB7CiAgICAgIGg6ICJIb3cgdG8gR2V0IGEgS2VudHVja3kgUmVhbCBFc3RhdGUgTGljZW5zZTogUmVxdWlyZW1lbnRzLCBDb3N0cyBhbmQgVGltZWxpbmUiLAogICAgICBkOiAiOTYgaG91cnMsIHR3byBleGFtcywgYW5kIDQ4IGhvdXJzIG9mIHBvc3QtbGljZW5zZSBlZHVjYXRpb24gaW4gdHdvIHllYXJzLiBFdmVyeSBLZW50dWNreSBsaWNlbnNpbmcgcmVxdWlyZW1lbnQgYW5kIGZlZSwgY2l0ZWQgdG8gdGhlIHN0YXR1dGUgYW5kIHRoZSByZWd1bGF0aW9uLiIsCiAgICAgIGs6IFsiS2VudHVja3kgcmVhbCBlc3RhdGUgbGljZW5zZSIsIlJlYWwgZXN0YXRlIGVkdWNhdGlvbiIsIktSRUMiXQogICAgfSwKICAgICIvc3ViamVjdC10by1yZWFsLWVzdGF0ZS1rZW50dWNreSI6IHsKICAgICAgaDogIlN1YmplY3QtVG8gUmVhbCBFc3RhdGUgaW4gS2VudHVja3k6IEhvdyBJdCBXb3JrcyBhbmQgV2hhdCBJdCBDb3N0cyB0aGUgU2VsbGVyIiwKICAgICAgZDogIlN1YmplY3QtdG8gaXMgbGVnYWwgYW5kIGNhbGxhYmxlLiBXaGF0IHRoZSBkdWUtb24tc2FsZSBydWxlIGFjdHVhbGx5IHNheXMsIHdoeSBhIGxhbmQgdHJ1c3QgZG9lcyBub3QgZml4IGl0LCBhbmQgd2hhdCBpdCBkb2VzIHRvIGEgc2VsbGVy4oCZcyBjcmVkaXQgYW5kIERUSS4iLAogICAgICBrOiBbIlN1YmplY3QtdG8gcmVhbCBlc3RhdGUiLCJEdWUtb24tc2FsZSBjbGF1c2UiLCJLZW50dWNreSByZWFsIGVzdGF0ZSBsYXciXQogICAgfSwKICAgICIvc2VsbC1teS1ob3VzZS1mYXN0LWxvdWlzdmlsbGUiOiB7CiAgICAgIGg6ICJIb3cgdG8gU2VsbCBZb3VyIEhvdXNlIEZhc3QgaW4gTG91aXN2aWxsZSAoYW5kIFdoYXQgRWFjaCBPcHRpb24gQ29zdHMpIiwKICAgICAgZDogIkNhc2ggb2ZmZXIsIG9wZW4gbWFya2V0LCBvciB0ZXJtcz8gV2hhdCBlYWNoIG9wdGlvbiBhY3R1YWxseSBjb3N0cyBhIExvdWlzdmlsbGUgc2VsbGVyLCB3aXRoIGN1cnJlbnQgbWFya2V0IG51bWJlcnMgYW5kIHRoZSBLZW50dWNreSBydWxlcyB0aGF0IGFwcGx5LiIsCiAgICAgIGs6IFsiU2VsbCBob3VzZSBmYXN0IExvdWlzdmlsbGUiLCJDYXNoIGhvbWUgYnV5ZXJzIiwiS2VudHVja3kgaG9tZSBzZWxsaW5nIGNvc3RzIl0KICAgIH0sCiAgICAiL3N3aXRjaC1yZWFsLWVzdGF0ZS1icm9rZXJhZ2VzLWtlbnR1Y2t5IjogewogICAgICBoOiAiSG93IHRvIFN3aXRjaCBSZWFsIEVzdGF0ZSBCcm9rZXJhZ2VzIGluIEtlbnR1Y2t5IiwKICAgICAgZDogIllvdSBnZXQgMzAgZGF5cywgYW5kIHRoZSBjbG9jayBzdGFydHMgd2l0aCB0aGUgQ29tbWlzc2lvbuKAmXMgZW1haWwuIFlvdXIgbGlzdGluZ3MgZG8gbm90IGNvbWUgd2l0aCB5b3UuIFRoZSBLZW50dWNreSBydWxlcyBvbiB0cmFuc2ZlcnJpbmcgeW91ciBsaWNlbnNlLCBjaXRlZC4iLAogICAgICBrOiBbIlJlYWwgZXN0YXRlIGJyb2tlcmFnZSB0cmFuc2ZlciIsIktlbnR1Y2t5IHJlYWwgZXN0YXRlIGxpY2Vuc2UiLCJLUkVDIEZvcm0gMjAwIl0KICAgIH0sCiAgICAiL3dob2xlc2FsaW5nLXJlYWwtZXN0YXRlLWtlbnR1Y2t5IjogewogICAgICBoOiAiSXMgV2hvbGVzYWxpbmcgUmVhbCBFc3RhdGUgTGVnYWwgaW4gS2VudHVja3k/IiwKICAgICAgZDogIktlbnR1Y2t5J3MgMjAyMyBsYXcgY2hhbmdlZCB3aGF0IHdob2xlc2FsZXJzIGNhbiBkby4gQXNzaWduaW5nIGEgY29udHJhY3QgaXMgbGVnYWwuIEFkdmVydGlzaW5nIGl0IHdpdGhvdXQgYSBsaWNlbnNlIGlzIG5vdC4gSGVyZSdzIHRoZSBhY3R1YWwgc3RhdHV0ZS4iLAogICAgICBrOiBbIlJlYWwgZXN0YXRlIHdob2xlc2FsaW5nIiwgIktlbnR1Y2t5IHJlYWwgZXN0YXRlIGxhdyIsICJBc3NpZ25tZW50IG9mIGNvbnRyYWN0Il0KICAgIH0sCiAgICAiL25vdmF0aW9uLWFncmVlbWVudC1yZWFsLWVzdGF0ZS1rZW50dWNreSI6IHsKICAgICAgaDogIk5vdmF0aW9uIEFncmVlbWVudHMgaW4gUmVhbCBFc3RhdGU6IEhvdyBUaGV5IFdvcmssIGFuZCBXaGVyZSBUaGV5IERvbid0IiwKICAgICAgZDogIkhvdyBhIG5vdmF0aW9uIGxldHMgeW91IHJlbm92YXRlIGFuZCBzZWxsIGEgaG91c2UgeW91IG5ldmVyIGJ1eSwgd2hlbiBpdCBiZWF0cyBhbiBhc3NpZ25tZW50LCBhbmQgd2h5IHRoZSBzaG9ydC1zYWxlIHZlcnNpb24gaXMgdGhlIG9uZSBkZWFsIHRvIHdhbGsgYXdheSBmcm9tLiIsCiAgICAgIGs6IFsiTm92YXRpb24gYWdyZWVtZW50IiwgIlNob3J0IHNhbGUiLCAiS2VudHVja3kgZm9yZWNsb3N1cmUiXQogICAgfSwKICAgICIvc2VsbGVyLWZpbmFuY2luZy1rZW50dWNreSI6IHsKICAgICAgaDogIlNlbGxlciBGaW5hbmNpbmcgYW5kIExhbmQgQ29udHJhY3RzIGluIEtlbnR1Y2t5IiwKICAgICAgZDogIkhvdyBvd25lciBmaW5hbmNpbmcgd29ya3MgaW4gS2VudHVja3ksIHdoYXQgRG9kZC1GcmFuayBhY3R1YWxseSByZXN0cmljdHMsIGFuZCB0aGUgMTk3OSBTdXByZW1lIENvdXJ0IGNhc2UgdGhhdCBtYWtlcyBsYW5kIGNvbnRyYWN0cyBhIGJhZCBkZWFsIGZvciBLWSBzZWxsZXJzLiIsCiAgICAgIGs6IFsiU2VsbGVyIGZpbmFuY2luZyIsICJMYW5kIGNvbnRyYWN0IiwgIkluc3RhbGxtZW50IHNhbGUiLCAiUmVndWxhdGlvbiBaIl0KICAgIH0sCiAgICAiL2xlYXNlLW9wdGlvbnMtcmVudC10by1vd24ta2VudHVja3kiOiB7CiAgICAgIGg6ICJSZW50LXRvLU93biBhbmQgTGVhc2UgT3B0aW9ucyBpbiBLZW50dWNreSIsCiAgICAgIGQ6ICJSZW50IGNyZWRpdHMgb25seSBjb3VudCB0b3dhcmQgYSBkb3duIHBheW1lbnQgaWYgdGhleSBleGNlZWQgbWFya2V0IHJlbnQuIEhlcmUgaXMgaG93IGxlYXNlIG9wdGlvbnMgcmVhbGx5IHdvcmsgaW4gS2VudHVja3kuIiwKICAgICAgazogWyJMZWFzZSBvcHRpb24iLCAiUmVudCB0byBvd24iLCAiS2VudHVja3kgbGFuZGxvcmQgdGVuYW50IGxhdyJdCiAgICB9LAogICAgIi9hc3N1bWFibGUtbW9ydGdhZ2VzLWxvdWlzdmlsbGUiOiB7CiAgICAgIGg6ICJBc3N1bWFibGUgTW9ydGdhZ2VzIGluIExvdWlzdmlsbGU6IEhvdyBUaGV5IFdvcmsgYW5kIEhvdyB0byBGaW5kIFRoZW0iLAogICAgICBkOiAiSGFsZiBvZiBVUyBtb3J0Z2FnZXMgYXJlIHVuZGVyIDQlLiBXaGljaCBsb2FucyBhcmUgYXNzdW1hYmxlLCBob3cgdG8gZmluZCB0aGUgb25lcyBub2JvZHkgZmxhZ2dlZCBpbiBMb3Vpc3ZpbGxlLCBhbmQgd2hhdCBhbiBhZ2VudCBtYXkgbGVnYWxseSBhZHZlcnRpc2UuIiwKICAgICAgazogWyJBc3N1bWFibGUgbW9ydGdhZ2UiLCAiRkhBIGFzc3VtcHRpb24iLCAiVkEgbG9hbiBhc3N1bXB0aW9uIiwgIlN1YmplY3QtdG8iXQogICAgfSwKICAiL2Zhcm1zLWxhbmQtYWNyZWFnZS1uZWFyLWxvdWlzdmlsbGUiOiB7CiAgICBoOiAiRmFybXMsIExhbmQgJiBBY3JlYWdlIE5lYXIgTG91aXN2aWxsZTogT2xkaGFtLCBTaGVsYnksIEJ1bGxpdHQgJiBTcGVuY2VyIENvdW50eSBCdXllcidzIEh1YiIsCiAgICBkOiAiQnV5aW5nIGxhbmQsIGEgaG9yc2UgZmFybSwgb3IgYWNyZWFnZSBvdXRzaWRlIExvdWlzdmlsbGU/IENvdW50eS1ieS1jb3VudHkgcHJpY2VzIHBlciBhY3JlLCB6b25pbmcgbWluaW11bXMsIHRheGVzLCB3YXRlciBhbmQgc2VwdGljLCBhbmQgd2hpY2ggZ3VpZGUgdG8gcmVhZCBuZXh0LiIsCiAgICBrOiBbIkZhcm1zIGFuZCBsYW5kIG5lYXIgTG91aXN2aWxsZSIsICJBY3JlYWdlIGZvciBzYWxlIExvdWlzdmlsbGUgS1kiLCAiT2xkaGFtIFNoZWxieSBCdWxsaXR0IFNwZW5jZXIgQ291bnR5IGxhbmQiLCAiUnVyYWwgcmVhbCBlc3RhdGUgTG91aXN2aWxsZSJdCiAgfSwKICAiL2hvcnNlLWZhcm1zLWZvci1zYWxlLW9sZGhhbS1zaGVsYnktY291bnR5LWt5IjogewogICAgaDogIkhvcnNlIEZhcm1zIGZvciBTYWxlIE5lYXIgTG91aXN2aWxsZSBLWTogT2xkaGFtICYgU2hlbGJ5IENvdW50eSBCdXllcidzIEd1aWRlIiwKICAgIGQ6ICJXaGVyZSBMb3Vpc3ZpbGxlJ3MgaG9yc2UgY291bnRyeSBpcywgd2hhdCBmYXJtcyBjb3N0LCBhbmQgdGhlIGluc3BlY3Rpb24gbGlzdDogYWNyZXMgcGVyIGhvcnNlLCBzb2lscywgZmVzY3VlLCB3YXRlciwgZmVuY2luZywgYmFybnMsIHpvbmluZyBhbmQgZmluYW5jaW5nLiIsCiAgICBrOiBbIkhvcnNlIGZhcm1zIGZvciBzYWxlIExvdWlzdmlsbGUiLCAiT2xkaGFtIENvdW50eSBob3JzZSBwcm9wZXJ0eSIsICJTaGVsYnkgQ291bnR5IFNhZGRsZWJyZWQgZmFybXMiLCAiS2VudHVja3kgZXF1aW5lIHJlYWwgZXN0YXRlIl0KICB9LAogICIvbm9ydGgtb2xkaGFtLXZzLXNvdXRoLW9sZGhhbS1jb3VudHktZ3VpZGUiOiB7CiAgICBoOiAiTm9ydGggT2xkaGFtIHZzLiBTb3V0aCBPbGRoYW0gQ291bnR5OiBNb3ZpbmcgdG8gT2xkaGFtIENvdW50eSBmb3IgQWNyZWFnZSBhbmQgRXN0YXRlIEJ1eWVycyIsCiAgICBkOiAiSS03MSBzcGxpdHMgT2xkaGFtIENvdW50eSBpbiB0d28uIEhvc3BpdGFsIGNvbW11dGVzLCBsYW5kIHByaWNlcyBwZXIgYWNyZSwgc2Nob29sIGFzc2lnbm1lbnQsIHpvbmluZywgc2VwdGljIGFuZCB0YXhlcyBmb3IgR29zaGVuLCBQcm9zcGVjdCwgQ3Jlc3R3b29kIGFuZCBMYSBHcmFuZ2UuIiwKICAgIGs6IFsiTm9ydGggT2xkaGFtIENvdW50eSBLWSIsICJTb3V0aCBPbGRoYW0gQ291bnR5IEtZIiwgIkdvc2hlbiBQcm9zcGVjdCByZWFsIGVzdGF0ZSIsICJDcmVzdHdvb2QgTGEgR3JhbmdlIGhvbWVzIl0KICB9LAogICIvc2hlbGJ5LWNvdW50eS1zaGVsYnl2aWxsZS1zaW1wc29udmlsbGUtZmFybXMtYWNyZWFnZSI6IHsKICAgIGg6ICJTaGVsYnkgQ291bnR5IGFuZCBTaGVsYnl2aWxsZTogRmFybXMsIEFjcmVhZ2UgYW5kIFNhZGRsZWJyZWQgQ291bnRyeSIsCiAgICBkOiAiRm91ciB0aW1lcyBPbGRoYW0ncyBmYXJtIHNhbGVzIGFuZCBhIGZpdmUtYWNyZSB6b25pbmcgbWluaW11bSB0aGUgY291bnR5IGRlZmVuZHMuIFByaWNlcyBwZXIgYWNyZSB3ZXN0IHRvIGVhc3QsIHdhdGVyLCBzZXB0aWMsIHRheGVzIGFuZCB0aGUgU2FkZGxlYnJlZCBlY29ub215LiIsCiAgICBrOiBbIlNoZWxieSBDb3VudHkgS1kgZmFybXMiLCAiU2hlbGJ5dmlsbGUgcmVhbCBlc3RhdGUiLCAiU2ltcHNvbnZpbGxlIGFjcmVhZ2UiLCAiU2FkZGxlYnJlZCBob3JzZSBjb3VudHJ5IEtlbnR1Y2t5Il0KICB9LAogICIvYnVsbGl0dC1zcGVuY2VyLWNvdW50eS1sYW5kLWFjcmVhZ2UtZ3VpZGUiOiB7CiAgICBoOiAiQnVsbGl0dCBhbmQgU3BlbmNlciBDb3VudHk6IEFjcmVhZ2UgV2l0aGluIFJlYWNoIG9mIExvdWlzdmlsbGUiLAogICAgZDogIlRoZSBtb3N0IGFmZm9yZGFibGUgYWNyZWFnZSBuZWFyIExvdWlzdmlsbGU6IEJ1bGxpdHQncyBJLTY1IGFuZCBhaXJwb3J0IGFjY2VzcywgU3BlbmNlcidzIGxha2UgY291bnRyeSBhbmQgbG93ZXN0IHRheCByYXRlLCBwZXItYWNyZSBwcmljZXMgYW5kIHNtYWxsLWxvdCBsaXZlc3RvY2sgcnVsZXMuIiwKICAgIGs6IFsiQnVsbGl0dCBDb3VudHkgbGFuZCBmb3Igc2FsZSIsICJTcGVuY2VyIENvdW50eSBLWSBhY3JlYWdlIiwgIlRheWxvcnN2aWxsZSBMYWtlIHJlYWwgZXN0YXRlIiwgIlNoZXBoZXJkc3ZpbGxlIE1vdW50IFdhc2hpbmd0b24gbGFuZCJdCiAgfSwKICAiL2J1eWluZy1mYXJtbGFuZC1pbi1rZW50dWNreS1ndWlkZSI6IHsKICAgIGg6ICJCdXlpbmcgRmFybWxhbmQgaW4gS2VudHVja3k6IFRheGVzLCBab25pbmcsIEZpbmFuY2luZyBhbmQgRGlsaWdlbmNlIiwKICAgIGQ6ICJLZW50dWNreSdzIGFnIHVzZS12YWx1ZSBhc3Nlc3NtZW50IChubyByb2xsYmFjayB0YXgpLCB0aGUgQWdyaWN1bHR1cmUgRXhlbXB0aW9uIE51bWJlciwgRlNBIGFuZCBGYXJtIENyZWRpdCBsb2FuIGxpbWl0cywgZmVuY2UgYW5kIHJpZ2h0LXRvLWZhcm0gbGF3LCBhbmQgY29zdC1zaGFyZSBtb25leS4iLAogICAgazogWyJCdXlpbmcgZmFybWxhbmQgaW4gS2VudHVja3kiLCAiS2VudHVja3kgYWdyaWN1bHR1cmFsIHRheCBhc3Nlc3NtZW50IiwgIkZhcm0gQ3JlZGl0IE1pZC1BbWVyaWNhIGxvYW5zIiwgIktlbnR1Y2t5IGZhcm0gcmVhbCBlc3RhdGUiXQogIH0sCiAgIi9ob21lc3RlYWQtaG9iYnktZmFybS1uZWFyLWxvdWlzdmlsbGUiOiB7CiAgICBoOiAiU3RhcnRpbmcgYSBIb21lc3RlYWQgb3IgSG9iYnkgRmFybSBOZWFyIExvdWlzdmlsbGUiLAogICAgZDogIldoaWNoIGNvdW50aWVzIGFsbG93IGNoaWNrZW5zIGFuZCBsaXZlc3RvY2sgb24gc21hbGwgbG90cywgd2VsbCBhbmQgc2VwdGljIHBlcm1pdHRpbmcsIEtlbnR1Y2t5J3MgZWdnLCBob25leSBhbmQgY290dGFnZSBmb29kIHJ1bGVzLCB0aGUgZmFybSB0YXggbnVtYmVyIGFuZCBncmFudHMuIiwKICAgIGs6IFsiSG9tZXN0ZWFkIHByb3BlcnR5IG5lYXIgTG91aXN2aWxsZSIsICJIb2JieSBmYXJtIGxhbmQgS2VudHVja3kiLCAiU21hbGwgZmFybSB6b25pbmcgTG91aXN2aWxsZSBLWSIsICJLZW50dWNreSBiYWNreWFyZCBjaGlja2VucyBsYXciXQogIH0sCiAgIi9waHlzaWNpYW4tcmVsb2NhdGlvbi1sb3Vpc3ZpbGxlLWFjcmVhZ2UtZ3VpZGUiOiB7CiAgICBoOiAiUmVsb2NhdGluZyB0byBMb3Vpc3ZpbGxlIGZvciBhIE1lZGljYWwgb3IgRXhlY3V0aXZlIFJvbGU6IEFjcmVhZ2UsIENvbW11dGVzIGFuZCBQaHlzaWNpYW4gTG9hbnMiLAogICAgZDogIkRyaXZlIHRpbWVzIGZyb20gT2xkaGFtLCBTaGVsYnksIEJ1bGxpdHQgYW5kIFNwZW5jZXIgdG8gZXZlcnkgbWFqb3IgTG91aXN2aWxsZSBtZWRpY2FsIGNhbXB1cywgaG93IHBoeXNpY2lhbiBsb2FucyB0cmVhdCBhY3JlYWdlLCBhbmQgY291bnR5IG9wdGlvbnMgYXQgJDcwMEstJDEuNU0uIiwKICAgIGs6IFsiUGh5c2ljaWFuIHJlbG9jYXRpb24gTG91aXN2aWxsZSBLWSIsICJEb2N0b3IgbG9hbiBhY3JlYWdlIEtlbnR1Y2t5IiwgIkxvdWlzdmlsbGUgaG9zcGl0YWwgY29tbXV0ZSIsICJSZWxvY2F0aW5nIHRvIExvdWlzdmlsbGUgZm9yIHdvcmsiXQogIH0sCiAgIi9vbGRoYW0tY291bnR5LWt5LXJlYWwtZXN0YXRlLWd1aWRlIjogewogIGg6ICJPbGRoYW0gQ291bnR5LCBLWSBSZWFsIEVzdGF0ZSBHdWlkZSB8IExhIEdyYW5nZSwgQ3Jlc3R3b29kLCBHb3NoZW4gJiBQcm9zcGVjdCIsCiAgZDogIk9sZGhhbSBDb3VudHkgS1kgcmVhbCBlc3RhdGU6IExhIEdyYW5nZSwgQ3Jlc3R3b29kLCBHb3NoZW4sIEJ1Y2tuZXIgYW5kIFByb3NwZWN0IHByaWNlcywgc2Nob29scywgdGF4ZXMgYW5kIGNvbW11dGUsIGZyb20gYSBMb3Vpc3ZpbGxlLWFyZWEgYnJva2VyIHdobyB3b3JrcyB0aGUgY291bnR5IGRpcmVjdGx5LiIsCiAgazogWyJPbGRoYW0gQ291bnR5IEtZIHJlYWwgZXN0YXRlIiwiTGEgR3JhbmdlIEtZIGhvbWVzIGZvciBzYWxlIiwiQ3Jlc3R3b29kIEtZIHJlYWwgZXN0YXRlIiwiR29zaGVuIEtZIGhvbWVzIiwiQnVja25lciBLWSByZWFsIGVzdGF0ZSIsIk9sZGhhbSBDb3VudHkgc2Nob29scyJdCiAgfSwKICAiL2J1bGxpdHQtY291bnR5LWt5LXJlYWwtZXN0YXRlLWd1aWRlIjogewogIGg6ICJCdWxsaXR0IENvdW50eSwgS1kgUmVhbCBFc3RhdGUgR3VpZGUgfCBTaGVwaGVyZHN2aWxsZSwgTW91bnQgV2FzaGluZ3RvbiAmIEhpbGx2aWV3IiwKICBkOiAiQnVsbGl0dCBDb3VudHkgS1kgcmVhbCBlc3RhdGU6IFNoZXBoZXJkc3ZpbGxlLCBNb3VudCBXYXNoaW5ndG9uLCBIaWxsdmlldyBhbmQgTGViYW5vbiBKdW5jdGlvbiBwcmljZXMsIHNjaG9vbHMsIHRheGVzIGFuZCBjb21tdXRlIHRvIExvdWlzdmlsbGUuIiwKICBrOiBbIkJ1bGxpdHQgQ291bnR5IEtZIHJlYWwgZXN0YXRlIiwiU2hlcGhlcmRzdmlsbGUgS1kgaG9tZXMgZm9yIHNhbGUiLCJNb3VudCBXYXNoaW5ndG9uIEtZIHJlYWwgZXN0YXRlIiwiSGlsbHZpZXcgS1kgaG9tZXMiLCJCdWxsaXR0IENvdW50eSBzY2hvb2xzIl0KICB9LAogICIvZmF5ZXR0ZS1jb3VudHkta3ktaG9yc2UtZmFybS1yZWFsLWVzdGF0ZS1ndWlkZSI6IHsKICBoOiAiRmF5ZXR0ZSBDb3VudHksIEtZIEhvcnNlIEZhcm0gJiBSdXJhbCBSZWFsIEVzdGF0ZSBHdWlkZSIsCiAgZDogIkZheWV0dGUgQ291bnR5IEtZIGhvcnNlIGZhcm0gYW5kIHJ1cmFsIHJlYWwgZXN0YXRlOiB0aGUgVXJiYW4gU2VydmljZSBCb3VuZGFyeSBleHBsYWluZWQsIHBlci1hY3JlIGxhbmQgdmFsdWVzLCB6b25pbmcsIHRheGVzIGFuZCBzY2hvb2xzIG91dHNpZGUgTGV4aW5ndG9uJ3MgdXJiYW4gY29yZS4iLAogIGs6IFsiRmF5ZXR0ZSBDb3VudHkgaG9yc2UgZmFybXMiLCJMZXhpbmd0b24gS1kgaG9yc2UgZmFybXMgZm9yIHNhbGUiLCJibHVlZ3Jhc3MgZXN0YXRlIGZvciBzYWxlIiwiS2VudHVja3kgaG9yc2UgZmFybSByZWFsIGVzdGF0ZSIsIlVyYmFuIFNlcnZpY2UgQm91bmRhcnkgTGV4aW5ndG9uIl0KICB9LAogICIvbGV4aW5ndG9uLWt5LXJlYWwtZXN0YXRlLWd1aWRlIjogewogIGg6ICJMZXhpbmd0b24sIEtZIFJlYWwgRXN0YXRlIEd1aWRlIHwgTmVpZ2hib3Job29kcywgUHJpY2VzICYgRG93bnRvd24gTGl2aW5nIiwKICBkOiAiTGV4aW5ndG9uIEtZIHJlYWwgZXN0YXRlOiBuZWlnaGJvcmhvb2RzIGZyb20gQ2hldnkgQ2hhc2UgdG8gSGFtYnVyZywgSnVuZSAyMDI2IG1hcmtldCBzdGF0cywgcHJpY2UgYmFuZHMsIHNjaG9vbHMgYW5kIGRvd250b3duIGxpdmluZy4iLAogIGs6IFsiTGV4aW5ndG9uIEtZIHJlYWwgZXN0YXRlIiwiTGV4aW5ndG9uIEtZIGhvbWVzIGZvciBzYWxlIiwiQ2hldnkgQ2hhc2UgTGV4aW5ndG9uIiwiQXNobGFuZCBQYXJrIExleGluZ3RvbiIsImRvd250b3duIExleGluZ3RvbiBjb25kb3MiLCJMZXhpbmd0b24gS1kgbmVpZ2hib3Job29kcyJdCiAgfSwKICAiL2JyaW5nLXdpbm5lci1yZWFsdHktdG8teW91ci1tYXJrZXQiOiB7aDogIkludGVyZXN0ZWQgaW4gQnJpbmdpbmcgV2lubmVyIFJlYWx0eSB0byBZb3VyIE1hcmtldD8iLCBkOiAiRm9yIHJlYWwgZXN0YXRlIGFnZW50cyBhbmQgaW52ZXN0b3JzOiBicmluZyB0aGUgV2lubmVyIFJlYWx0eSBicmFuZCB0byB5b3VyIG1hcmtldCwgb3IgZ2V0IGFjY2VzcyB0byB0aGUgT2ZmTWFya2V0LmRlYWxzIHByaXZhdGUgbWFya2V0cGxhY2Ugb2YgNDAwLDAwMCsgYnV5ZXJzLiIsIGs6IFsiYnJpbmcgV2lubmVyIFJlYWx0eSB0byB5b3VyIG1hcmtldCIsICJXaW5uZXIgUmVhbHR5IGV4cGFuc2lvbiIsICJyZWFsIGVzdGF0ZSBicm9rZXJhZ2UgZXhwYW5zaW9uIiwgIk9mZk1hcmtldC5kZWFscyBpbnZlc3RvciBuZXR3b3JrIiwgImpvaW4gV2lubmVyIFJlYWx0eSBhcyBhbiBhZ2VudCJdfSwKICAiL2Zvci1yZWFsLWVzdGF0ZS1hZ2VudHMiOiB7aDogIkZvciBSZWFsIEVzdGF0ZSBBZ2VudHMgfCBXaW5uZXIgUmVhbHR5IiwgZDogIkJyaW5nIHRoZSBXaW5uZXIgUmVhbHR5IGJyYW5kLCBzeXN0ZW1zLCBhbmQgc3VwcG9ydCB0byB5b3VyIG1hcmtldC4gQSBwcm92ZW4gc3lzdGVtLCBtYXJrZXRpbmcgZW5naW5lLCBhbmQgc3VwcG9ydCB0ZWFtIGZvciBhZ2VudHMgYW5kIGJyb2tlcnMuIiwgazogWyJyZWFsIGVzdGF0ZSBhZ2VudCBvcHBvcnR1bml0eSIsICJqb2luIFdpbm5lciBSZWFsdHkiLCAicmVhbCBlc3RhdGUgYnJva2VyYWdlIGV4cGFuc2lvbiIsICJXaW5uZXIgUmVhbHR5IGZvciBhZ2VudHMiXX0sCiAgIi9mb3ItaW52ZXN0b3JzIjoge2g6ICJGb3IgSW52ZXN0b3JzIHwgV2lubmVyIFJlYWx0eSIsIGQ6ICJHZXQgYWNjZXNzIHRvIG9mZi1tYXJrZXQgZGVhbHMgb3RoZXIgaW52ZXN0b3JzIG5ldmVyIHNlZSwgdGhyb3VnaCBXaW5uZXIgUmVhbHR5J3MgT2ZmTWFya2V0LmRlYWxzIHByaXZhdGUgbWFya2V0cGxhY2UuIiwgazogWyJvZmYgbWFya2V0IHJlYWwgZXN0YXRlIGRlYWxzIiwgInJlYWwgZXN0YXRlIGludmVzdG9yIG5ldHdvcmsiLCAiT2ZmTWFya2V0LmRlYWxzIiwgInByaXZhdGUgcmVhbCBlc3RhdGUgbWFya2V0cGxhY2UiXX0sCiAgIi9vZmZtYXJrZXQtZGVhbHMtbWFya2V0cGxhY2UiOiB7aDogIlRoZSBPZmZNYXJrZXQuZGVhbHMgTWFya2V0cGxhY2UgfCBXaW5uZXIgUmVhbHR5IiwgZDogIjQwMCwwMDArIGJ1eWVycy4gUHJpdmF0ZSwgcHJlLW1hcmtldCByZWFsIGVzdGF0ZSBhY2Nlc3Mg4oCUIHBvd2VyZWQgYnkgV2lubmVyIFJlYWx0eS4iLCBrOiBbIk9mZk1hcmtldC5kZWFscyIsICJwcml2YXRlIHJlYWwgZXN0YXRlIG1hcmtldHBsYWNlIiwgInByZS1tYXJrZXQgbGlzdGluZ3MiLCAib2ZmIG1hcmtldCBwcm9wZXJ0aWVzIl19LAogIH07CiAgdmFyIHBhdGggPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvXC8kLywgIiIpOwogIHZhciBtID0gTUFQW3BhdGhdOwogIGlmICghbSkgeyByZXR1cm47IH0KICB2YXIgU0lURSA9ICJodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tIjsKICB2YXIgdXJsID0gU0lURSArIHBhdGg7CiAgZnVuY3Rpb24gYWRkKG9iaikgewogICAgdHJ5IHsKICAgICAgdmFyIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKICAgICAgcy50eXBlID0gImFwcGxpY2F0aW9uL2xkK2pzb24iOwogICAgICBzLnRleHRDb250ZW50ID0gSlNPTi5zdHJpbmdpZnkob2JqKTsKICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKTsKICAgIH0gY2F0Y2ggKGUpIHt9CiAgfQogIGZ1bmN0aW9uIGJ1aWxkKCkgewogICAgYWRkKHsKICAgICAgIkBjb250ZXh0IjogImh0dHBzOi8vc2NoZW1hLm9yZyIsCiAgICAgICJAdHlwZSI6ICJBcnRpY2xlIiwKICAgICAgImhlYWRsaW5lIjogbS5oLAogICAgICAiZGVzY3JpcHRpb24iOiBtLmQsCiAgICAgICJpbkxhbmd1YWdlIjogImVuLVVTIiwKICAgICAgImRhdGVQdWJsaXNoZWQiOiAiMjAyNi0wOS0xNSIsCiAgICAgICJkYXRlTW9kaWZpZWQiOiAiMjAyNi0wOS0xNSIsCiAgICAgICJhdXRob3IiOiB7ICJAdHlwZSI6ICJQZXJzb24iLCAibmFtZSI6ICJSb2IgQmVyZ2Vyb24iLCAiam9iVGl0bGUiOiAiT3duZXItUmVhbHRvciIsICJ3b3Jrc0ZvciI6IHsgIkB0eXBlIjogIlJlYWxFc3RhdGVBZ2VudCIsICJuYW1lIjogIldpbm5lciBSZWFsdHkiLCAidXJsIjogU0lURSB9IH0sCiAgICAgICJwdWJsaXNoZXIiOiB7ICJAdHlwZSI6ICJPcmdhbml6YXRpb24iLCAibmFtZSI6ICJXaW5uZXIgUmVhbHR5IiwgInVybCI6IFNJVEUgfSwKICAgICAgIm1haW5FbnRpdHlPZlBhZ2UiOiB7ICJAdHlwZSI6ICJXZWJQYWdlIiwgIkBpZCI6IHVybCB9LAogICAgICAiYWJvdXQiOiBtLmsubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiB7ICJAdHlwZSI6ICJUaGluZyIsICJuYW1lIjogeCB9OyB9KSwKICAgICAgImFyZWFTZXJ2ZWQiOiB7ICJAdHlwZSI6ICJQbGFjZSIsICJuYW1lIjogIkxvdWlzdmlsbGUsIEtlbnR1Y2t5IiB9CiAgICB9KTsKICAgIHZhciBaVyA9IC9bXHUyMDBiLVx1MjAwZlx1MjA2MF0vZzsKICAgIHZhciB0eHRPZiA9IGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gKGVsLnRleHRDb250ZW50IHx8ICIiKS5yZXBsYWNlKFpXLCAiIikudHJpbSgpOyB9OwogICAgdmFyIGlzSGVhZCA9IGZ1bmN0aW9uIChlbCkgeyBpZiAoIWVsKSByZXR1cm4gZmFsc2U7IHZhciB0ZyA9IGVsLnRhZ05hbWU7IGlmICh0ZyA9PT0gIkgyIiB8fCB0ZyA9PT0gIkgzIiB8fCB0ZyA9PT0gIkg0IikgcmV0dXJuIHRydWU7IHZhciBzcCA9IGVsLnF1ZXJ5U2VsZWN0b3IgPyBlbC5xdWVyeVNlbGVjdG9yKCdzcGFuW2NsYXNzKj0iZGlzcGxheS1sZyJdLCBzcGFuW2NsYXNzKj0iZGlzcGxheS1tZCJdLCBzcGFuW2NsYXNzKj0iZGlzcGxheS14bCJdLCBzcGFuW2NsYXNzKj0iZGlzcGxheS1zbSJdJykgOiBudWxsOyByZXR1cm4gISEoc3AgJiYgdHh0T2Yoc3ApICYmIHR4dE9mKHNwKSA9PT0gdHh0T2YoZWwpKTsgfTsKICAgIHZhciBGQVFSRSA9IC9mcmVxdWVudGx5IGFza2VkIHF1ZXN0aW9uc3xwcmVndW50YXMgZnJlY3VlbnRlcy9pOwogICAgdmFyIGNhbmRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNiLWl0ZW0tdmlld19fYm9keSBoMiwgLnNiLWl0ZW0tdmlld19fYm9keSBoMywgLnNiLWl0ZW0tdmlld19fYm9keSBoNCwgLnNiLWl0ZW0tdmlld19fYm9keSBzcGFuW2NsYXNzKj0iZGlzcGxheS0iXSwgLnNiLWl0ZW0tdmlld19fYm9keSBwLCBoMiwgaDMnKSwgc3RhcnQgPSBudWxsLCBpOwogICAgZm9yIChpID0gMDsgaSA8IGNhbmRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBjdCA9IHR4dE9mKGNhbmRzW2ldKTsKICAgICAgaWYgKCFGQVFSRS50ZXN0KGN0KSkgY29udGludWU7CiAgICAgIGlmIChjYW5kc1tpXS50YWdOYW1lID09PSAiUCIgfHwgY2FuZHNbaV0udGFnTmFtZSA9PT0gIlNQQU4iKSB7IGlmIChjdC5sZW5ndGggPiA0MCkgY29udGludWU7IH0KICAgICAgc3RhcnQgPSBjYW5kc1tpXTsgYnJlYWs7CiAgICB9CiAgICBpZiAoc3RhcnQpIHsKICAgICAgaWYgKHN0YXJ0LnRhZ05hbWUgIT09ICJIMiIgJiYgc3RhcnQudGFnTmFtZSAhPT0gIkgzIiAmJiBzdGFydC50YWdOYW1lICE9PSAiSDQiKSB7IHZhciBwcCA9IHN0YXJ0OyB3aGlsZSAocHAucGFyZW50RWxlbWVudCAmJiBwcC5wYXJlbnRFbGVtZW50LnRhZ05hbWUgIT09ICJCT0RZIiAmJiAhL3NiLWl0ZW0tdmlld19fYm9keS8udGVzdChwcC5wYXJlbnRFbGVtZW50LmNsYXNzTmFtZSB8fCAiIikpIHsgcHAgPSBwcC5wYXJlbnRFbGVtZW50OyB9IHN0YXJ0ID0gcHA7IH0KICAgICAgdmFyIHFhID0gW10sIG4gPSBzdGFydC5uZXh0RWxlbWVudFNpYmxpbmcsIHEgPSBudWxsLCBhbnMgPSAiIjsKICAgICAgdmFyIGZsdXNoID0gZnVuY3Rpb24gKCkgeyBpZiAocSAmJiBhbnMpIHsgcWEucHVzaCh7ICJAdHlwZSI6ICJRdWVzdGlvbiIsICJuYW1lIjogcSwgImFjY2VwdGVkQW5zd2VyIjogeyAiQHR5cGUiOiAiQW5zd2VyIiwgInRleHQiOiBhbnMudHJpbSgpIH0gfSk7IH0gcSA9IG51bGw7IGFucyA9ICIiOyB9OwogICAgICB3aGlsZSAobikgewogICAgICAgIHZhciB0eHQgPSB0eHRPZihuKSwgdGcgPSBuLnRhZ05hbWU7CiAgICAgICAgaWYgKHRnID09PSAiSDIiKSB7IGJyZWFrOyB9CiAgICAgICAgaWYgKHRnID09PSAiRElWIiB8fCB0ZyA9PT0gIlNFQ1RJT04iIHx8IHRnID09PSAiSFIiKSB7IGJyZWFrOyB9CiAgICAgICAgaWYgKCF0eHQpIHsgbiA9IG4ubmV4dEVsZW1lbnRTaWJsaW5nOyBjb250aW51ZTsgfQogICAgICAgIGlmIChpc0hlYWQobikpIHsKICAgICAgICAgIGlmICh0ZyA9PT0gIkgzIiB8fCB0ZyA9PT0gIkg0IiB8fCAvXD8kLy50ZXN0KHR4dCkgfHwgKCFxYS5sZW5ndGggJiYgIXEpKSB7IGZsdXNoKCk7IHEgPSB0eHQ7IH0KICAgICAgICAgIGVsc2UgeyBmbHVzaCgpOyBicmVhazsgfQogICAgICAgIH0gZWxzZSBpZiAodGcgPT09ICJQIiB8fCB0ZyA9PT0gIlVMIiB8fCB0ZyA9PT0gIk9MIiB8fCB0ZyA9PT0gIkJMT0NLUVVPVEUiKSB7CiAgICAgICAgICBpZiAodGcgPT09ICJQIiAmJiAvXD8kLy50ZXN0KHR4dCkgJiYgdHh0Lmxlbmd0aCA8IDIwMCAmJiAoIXEgfHwgYW5zKSkgeyBmbHVzaCgpOyBxID0gdHh0OyB9CiAgICAgICAgICBlbHNlIGlmIChxKSB7IGFucyArPSAoYW5zID8gIiAiIDogIiIpICsgdHh0OyB9CiAgICAgICAgfQogICAgICAgIG4gPSBuLm5leHRFbGVtZW50U2libGluZzsKICAgICAgfQogICAgICBmbHVzaCgpOwogICAgICBpZiAocWEubGVuZ3RoKSB7IGFkZCh7ICJAY29udGV4dCI6ICJodHRwczovL3NjaGVtYS5vcmciLCAiQHR5cGUiOiAiRkFRUGFnZSIsICJtYWluRW50aXR5IjogcWEgfSk7IH0KICAgIH0KICAgIGFkZCh7CiAgICAgICJAY29udGV4dCI6ICJodHRwczovL3NjaGVtYS5vcmciLAogICAgICAiQHR5cGUiOiAiQnJlYWRjcnVtYkxpc3QiLAogICAgICAiaXRlbUxpc3RFbGVtZW50IjogWwogICAgICAgIHsgIkB0eXBlIjogIkxpc3RJdGVtIiwgInBvc2l0aW9uIjogMSwgIm5hbWUiOiAiSG9tZSIsICJpdGVtIjogU0lURSArICIvIiB9LAogICAgICAgIHsgIkB0eXBlIjogIkxpc3RJdGVtIiwgInBvc2l0aW9uIjogMiwgIm5hbWUiOiBtLmgsICJpdGVtIjogdXJsIH0KICAgICAgXQogICAgfSk7CiAgfQogIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAibG9hZGluZyIpIHsgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGJ1aWxkKTsgfSBlbHNlIHsgYnVpbGQoKTsgfQp9KSgpOwoKLyogV2lubmVyIFJlYWx0eSBjb252ZXJzaW9uIGxheWVyICsgSDEgZml4IChzaXRld2lkZSwgYWRkZWQgU2VwIDE4IDIwMjYpICovCihmdW5jdGlvbigpewogIHRyeXsKICAgIHZhciBQPWxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1wvKyQvLCcnKXx8Jy8nOwogICAgdmFyIGlzSG9tZT0oUD09PScvJ3x8UD09PScvaW5kZXgnKTsKICAgIHZhciBDPScjMWExYTFhJywgTkFWWT0nIzFhM2M1ZScsIE9SQU5HRT0nI2U0NTYxZic7CiAgICBmdW5jdGlvbiBlbCh0YWcsc3R5bGUsaHRtbCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpO2lmKHN0eWxlKWUuc2V0QXR0cmlidXRlKCdzdHlsZScsc3R5bGUpO2lmKGh0bWwhPW51bGwpZS5pbm5lckhUTUw9aHRtbDtyZXR1cm4gZTt9CgogICAgLyogMS4gSDEgZml4IGZvciBibG9nLXRlbXBsYXRlIHBhZ2VzICovCiAgICBpZighZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaDEnKSl7CiAgICAgIHZhciB0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zYi1pdGVtLXZpZXdfX3RpdGxlJyk7CiAgICAgIGlmKHQmJnQudGV4dENvbnRlbnQudHJpbSgpKXsKICAgICAgICB2YXIgY3M9Z2V0Q29tcHV0ZWRTdHlsZSh0KTsKICAgICAgICB2YXIgaD1lbCgnaDEnLCdtYXJnaW46MDtwYWRkaW5nOjA7Zm9udC1mYW1pbHk6Jytjcy5mb250RmFtaWx5Kyc7Zm9udC1zaXplOicrY3MuZm9udFNpemUrJztmb250LXdlaWdodDonK2NzLmZvbnRXZWlnaHQrJztsaW5lLWhlaWdodDonK2NzLmxpbmVIZWlnaHQrJztjb2xvcjonK2NzLmNvbG9yKyc7dGV4dC10cmFuc2Zvcm06Jytjcy50ZXh0VHJhbnNmb3JtKyc7Jyk7CiAgICAgICAgaC50ZXh0Q29udGVudD10LnRleHRDb250ZW50LnRyaW0oKTsKICAgICAgICB0LnRleHRDb250ZW50PScnO3QuYXBwZW5kQ2hpbGQoaCk7CiAgICAgIH0KICAgIH0KCiAgICAvKiAyLiBOZXh0LXN0ZXBzIENUQSBibG9jayBvbiBldmVyeSBndWlkZS9ibG9nIHBhZ2UgKi8KICAgIHZhciBib2R5PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zYi1pdGVtLXZpZXdfX2JvZHknKTsKICAgIGlmKGJvZHkmJiFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItbmV4dC1zdGVwcycpKXsKICAgICAgdmFyIGJ0bj1mdW5jdGlvbihocmVmLGxhYmVsLGJnKXtyZXR1cm4gJzxhIGhyZWY9IicraHJlZisnIiBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOjZweCA4cHggNnB4IDA7cGFkZGluZzoxMnB4IDIwcHg7Ym9yZGVyLXJhZGl1czo2cHg7YmFja2dyb3VuZDonK2JnKyc7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjE1cHg7Ij4nK2xhYmVsKyc8L2E+Jzt9OwogICAgICB2YXIgYm94PWVsKCdkaXYnLCdib3JkZXI6MXB4IHNvbGlkICNkOGQ4ZDg7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoyMnB4IDI0cHg7bWFyZ2luOjI4cHggMCA4cHg7YmFja2dyb3VuZDojZmFmYWZhO2NvbG9yOicrQysnOycsCiAgICAgICAgJzxoMyBzdHlsZT0ibWFyZ2luOjAgMCA2cHg7Zm9udC1zaXplOjIycHg7Y29sb3I6JytDKyc7Ij5OZXh0IHN0ZXBzIHdpdGggV2lubmVyIFJlYWx0eTwvaDM+JysKICAgICAgICAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTJweDtjb2xvcjojNDQ0OyI+TGljZW5zZWQgaW4gS2VudHVja3kgYW5kIEluZGlhbmEuIEV2ZXJ5IGxpc3RpbmcgZ29lcyBsaXZlIG9uIE1MUyB3aXRoaW4gMyBidXNpbmVzcyBkYXlzIG9mIHNpZ25pbmcuPC9wPicrCiAgICAgICAgYnRuKCcvaG9tZS12YWx1ZScsJ1doYXQgaXMgbXkgaG9tZSB3b3J0aD8nLE9SQU5HRSkrCiAgICAgICAgYnRuKCcvc2NoZWR1bGluZycsJ0dldCBwcmUtYXBwcm92ZWQgd2l0aCBDYW0gS2VlaG4nLE5BVlkpKwogICAgICAgIGJ0bignL2J1eS1ib3gtc2lnbnVwJywnU2VuZCB1cyB5b3VyIGludmVzdG9yIGJ1eSBib3gnLE5BVlkpKwogICAgICAgICc8cCBzdHlsZT0ibWFyZ2luOjEycHggMCAwO2ZvbnQtc2l6ZToxM3B4O2NvbG9yOiM2NjY7Ij5QcmVmZXIgdG8gdGFsaz8gPGEgaHJlZj0iL3NjaGVkdWxpbmciIHN0eWxlPSJjb2xvcjonK05BVlkrJzsiPkJvb2sgYSB0aW1lIHdpdGggUm9iIEJlcmdlcm9uPC9hPi48L3A+Jyk7CiAgICAgIGJveC5pZD0nd3ItbmV4dC1zdGVwcyc7CiAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoYm94KTsKICAgIH0KCiAgICAvKiAzLiBIb21lcGFnZTogdmFsdWUgYmFyIHVuZGVyIHRoZSBoZXJvICsgR29vZ2xlIHJldmlld3Mgc3RyaXAgKi8KICAgIGlmKGlzSG9tZSYmIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1ob21lLWJhcicpKXsKICAgICAgdmFyIGZpcnN0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NlY3Rpb24sIC5zYi1zZWN0aW9uJyk7CiAgICAgIGlmKGZpcnN0JiZmaXJzdC5wYXJlbnROb2RlKXsKICAgICAgICB2YXIgYmFyPWVsKCdkaXYnLCdiYWNrZ3JvdW5kOiMxMTE7Y29sb3I6I2ZmZjtwYWRkaW5nOjE2cHggMjBweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxLjY7Jyk7CiAgICAgICAgYmFyLmlkPSd3ci1ob21lLWJhcic7CiAgICAgICAgdmFyIGE9ZnVuY3Rpb24oaHJlZixsYWJlbCxzdHJvbmcpe3JldHVybiAnPGEgaHJlZj0iJytocmVmKyciIHN0eWxlPSJjb2xvcjojZmZmO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7bWFyZ2luOjAgMTJweDsnKyhzdHJvbmc/J2ZvbnQtd2VpZ2h0OjcwMDsnOicnKSsnIj4nK2xhYmVsKyc8L2E+Jzt9OwogICAgICAgIGJhci5pbm5lckhUTUw9JzxzcGFuIHN0eWxlPSJvcGFjaXR5Oi44NTsiPlN0YXJ0IGhlcmU6PC9zcGFuPiAnK2EoJy9ob21lLXZhbHVlJywnV2hhdCBpcyBteSBob21lIHdvcnRoPycsdHJ1ZSkrYSgnL3NjaGVkdWxpbmcnLCdHZXQgcHJlLWFwcHJvdmVkIHdpdGggQ2FtIEtlZWhuJykrYSgnL2J1eS1ib3gtc2lnbnVwJywnSW52ZXN0b3IgYnV5IGJveCcpK2EoJy9sb3Vpc3ZpbGxlLWhvdXNpbmctbWFya2V0LXJlcG9ydCcsJ1RoaXMgbW9udGhcJ3MgbWFya2V0IHJlcG9ydCcpOwogICAgICAgIGZpcnN0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGJhcixmaXJzdC5uZXh0U2libGluZyk7CiAgICAgIH0KICAgICAgdmFyIHRlc3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RpbW9uaWFscycpOwogICAgICBpZih0ZXN0JiYhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWdvb2dsZS1zdHJpcCcpKXsKICAgICAgICB2YXIgc3RyaXA9ZWwoJ2RpdicsJ21heC13aWR0aDo5MjBweDttYXJnaW46MCBhdXRvO3BhZGRpbmc6MThweCAyMHB4IDM0cHg7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6aW5oZXJpdDtmb250LXNpemU6MTVweDsnKTsKICAgICAgICBzdHJpcC5pZD0nd3ItZ29vZ2xlLXN0cmlwJzsKICAgICAgICBzdHJpcC5pbm5lckhUTUw9JzxkaXYgc3R5bGU9Im1hcmdpbjowIDAgMTJweDtmb250LXNpemU6MTdweDtmb250LXdlaWdodDo3MDA7Ij7imIXimIXimIXimIXimIUgPHNwYW4gc3R5bGU9Im9wYWNpdHk6Ljg1O2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTVweDsiPjQuNiBvdXQgb2YgNSAmbWlkZG90OyAxMCByZXZpZXdzIG9uIEdvb2dsZTwvc3Bhbj48L2Rpdj48YSBocmVmPSJodHRwczovL21hcHMuZ29vZ2xlLmNvbS8/Y2lkPTExNTg3NDM1NTYxMzgwNDgyMzkiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzoxMHB4IDE4cHg7Ym9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7Ym9yZGVyLXJhZGl1czo2cHg7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXdlaWdodDo2MDA7Ij5SZWFkIG91ciBHb29nbGUgcmV2aWV3czwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9tYXBzLmdvb2dsZS5jb20vP2NpZD0xMTU4NzQzNTU2MTM4MDQ4MjM5IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1sZWZ0OjEwcHg7cGFkZGluZzoxMHB4IDE4cHg7Ym9yZGVyLXJhZGl1czo2cHg7YmFja2dyb3VuZDonK09SQU5HRSsnO2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWlnaHQ6NjAwOyI+V29ya2VkIHdpdGggdXM/IExlYXZlIGEgcmV2aWV3PC9hPic7CiAgICAgICAgdGVzdC5hcHBlbmRDaGlsZChzdHJpcCk7CiAgICAgIH0KICAgIH0KCiAgICAvKiA0LiBDYWxjdWxhdG9yczogImVtYWlsIG1lIHRoaXMgYW5hbHlzaXMiIChtYWlsdG8sIG5vIGJhY2tlbmQpICovCiAgICBmdW5jdGlvbiB3aXJlRW1haWwoYnRuSWQscmVzdWx0c0lkLHN1YmplY3QpewogICAgICB2YXIgYj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChidG5JZCkscj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChyZXN1bHRzSWQpOwogICAgICBpZighYnx8IXJ8fGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGJ0bklkKyctZW1haWwnKSlyZXR1cm47CiAgICAgIHZhciBlPWVsKCdidXR0b24nLCdtYXJnaW4tbGVmdDoxMHB4O2JhY2tncm91bmQ6I2ZmZjtjb2xvcjonK05BVlkrJztib3JkZXI6MnB4IHNvbGlkICcrTkFWWSsnO2JvcmRlci1yYWRpdXM6NnB4O3BhZGRpbmc6MTBweCAyMHB4O2ZvbnQtc2l6ZToxNXB4O2N1cnNvcjpwb2ludGVyOycsJ0VtYWlsIG1lIHRoaXMgYW5hbHlzaXMnKTsKICAgICAgZS5pZD1idG5JZCsnLWVtYWlsJztlLnR5cGU9J2J1dHRvbic7CiAgICAgIGUub25jbGljaz1mdW5jdGlvbigpewogICAgICAgIHZhciB3cmFwPWIuY2xvc2VzdCgnZGl2Jyl8fGRvY3VtZW50LmJvZHk7CiAgICAgICAgdmFyIGxpbmVzPVtdOwogICAgICAgIHdyYXAucXVlcnlTZWxlY3RvckFsbCgnbGFiZWwnKS5mb3JFYWNoKGZ1bmN0aW9uKGwpe3ZhciBpPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGwuZ2V0QXR0cmlidXRlKCdmb3InKSk7aWYoaSlsaW5lcy5wdXNoKGwudGV4dENvbnRlbnQudHJpbSgpKyc6ICcraS52YWx1ZSk7fSk7CiAgICAgICAgbGluZXMucHVzaCgnJyk7bGluZXMucHVzaCgnUmVzdWx0czonKTsKICAgICAgICByLnF1ZXJ5U2VsZWN0b3JBbGwoJ3AsbGksZGl2JykuZm9yRWFjaChmdW5jdGlvbih4KXtpZih4LmNoaWxkcmVuLmxlbmd0aD09PTAmJngudGV4dENvbnRlbnQudHJpbSgpKWxpbmVzLnB1c2goeC50ZXh0Q29udGVudC50cmltKCkpO30pOwogICAgICAgIGxpbmVzLnB1c2goJycpO2xpbmVzLnB1c2goJ1NlbnQgZnJvbSB0aGV3aW5uZXJyZWFsdHkuY29tLiBSZXBseSB3aXRoIHRoZSBwcm9wZXJ0eSBhZGRyZXNzIGFuZCBXaW5uZXIgUmVhbHR5IHdpbGwgcmV2aWV3IHRoZSBudW1iZXJzIHdpdGggeW91LicpOwogICAgICAgIGxvY2F0aW9uLmhyZWY9J21haWx0bzpyb2JAdGhld2lubmVycmVhbHR5LmNvbT9zdWJqZWN0PScrZW5jb2RlVVJJQ29tcG9uZW50KHN1YmplY3QpKycmYm9keT0nK2VuY29kZVVSSUNvbXBvbmVudChsaW5lcy5qb2luKCdcbicpKTsKICAgICAgfTsKICAgICAgYi5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGUpOwogICAgfQogICAgdmFyIHRyaWVzPTAsaXY9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXt0cmllcysrO3dpcmVFbWFpbCgnaXBhLWNhbGN1bGF0ZScsJ2lwYS1yZXN1bHRzJywnTXkgaW52ZXN0bWVudCBwcm9wZXJ0eSBhbmFseXNpcyAoV2lubmVyIFJlYWx0eSknKTt3aXJlRW1haWwoJ3NucC1jYWxjdWxhdGUnLCdzbnAtcmVzdWx0cycsJ015IHNlbGxlciBuZXQgcHJvY2VlZHMgZXN0aW1hdGUgKFdpbm5lciBSZWFsdHkpJyk7aWYodHJpZXM+MjB8fChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXBhLWNhbGN1bGF0ZS1lbWFpbCcpfHxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc25wLWNhbGN1bGF0ZS1lbWFpbCcpKSljbGVhckludGVydmFsKGl2KTt9LDUwMCk7CiAgfWNhdGNoKGVycil7fQp9KSgpOwoKKGZ1bmN0aW9uKCl7dHJ5e3ZhciBQPWxvY2F0aW9uLnBhdGhuYW1lO2lmKFA9PT0nL3VubmFtZWQtMTYwNzEyMicpe3ZhciBtPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ21ldGEnKTttLm5hbWU9J3JvYm90cyc7bS5jb250ZW50PSdub2luZGV4LG5vZm9sbG93Jztkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG0pO312YXIgZmw9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZm9vdGVyIGEnKSkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiAvZmFjZWJvb2tcLmNvbS8udGVzdChhLmhyZWYpfSlbMF07aWYoZmwmJiFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItaWcnKSl7dmFyIGlnPWZsLmNsb25lTm9kZSh0cnVlKTtpZy5pZD0nd3ItaWcnO2lnLmhyZWY9J2h0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vcm9iYmVyZ2Vyb25pbmt5Lyc7aWcudGV4dENvbnRlbnQ9J1JvYiBCZXJnZXJvbiBvbiBJbnN0YWdyYW0nO2lnLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywnX2JsYW5rJyk7aWcuc2V0QXR0cmlidXRlKCdyZWwnLCdub29wZW5lcicpO3ZhciBsaT1mbC5jbG9zZXN0KCdsaScpO2lmKGxpKXt2YXIgbGkyPWxpLmNsb25lTm9kZShmYWxzZSk7bGkyLmFwcGVuZENoaWxkKGlnKTtsaS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShsaTIsbGkubmV4dFNpYmxpbmcpO31lbHNle2ZsLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGlnLGZsLm5leHRTaWJsaW5nKTt9fX1jYXRjaChlKXt9fSkoKTsKPC9zY3JpcHQ+|END

WRA|i287374|4|PHNjcmlwdD4KKGZ1bmN0aW9uKCl7CiAgZnVuY3Rpb24gYWRkVGV4dFVzTGluaygpewogICAgdmFyIGJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1ob21lLWJhcicpOwogICAgaWYgKCFiYXIpIHJldHVybjsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItdGV4dC11cycpKSByZXR1cm47CiAgICB2YXIgbGlua3MgPSBiYXIucXVlcnlTZWxlY3RvckFsbCgnYScpOwogICAgaWYgKCFsaW5rcy5sZW5ndGgpIHJldHVybjsKICAgIHZhciBwcm90byA9IGxpbmtzW2xpbmtzLmxlbmd0aCAtIDFdOwogICAgdmFyIGNsb25lID0gcHJvdG8uY2xvbmVOb2RlKGZhbHNlKTsKICAgIGNsb25lLmlkID0gJ3dyLXRleHQtdXMnOwogICAgY2xvbmUuaHJlZiA9ICdzbXM6KzE1MDIzMDU4OTE1JzsKICAgIGNsb25lLnRleHRDb250ZW50ID0gJ1RleHQgdXM6ICg1MDIpIDMwNS04OTE1JzsKICAgIGJhci5hcHBlbmRDaGlsZChjbG9uZSk7CiAgfQogIGFkZFRleHRVc0xpbmsoKTsKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgYWRkVGV4dFVzTGluayk7CiAgc2V0VGltZW91dChhZGRUZXh0VXNMaW5rLCAxMDAwKTsKICBzZXRUaW1lb3V0KGFkZFRleHRVc0xpbmssIDI1MDApOwogIHNldFRpbWVvdXQoYWRkVGV4dFVzTGluaywgNTAwMCk7Cn0pKCk7CgovKiBXUl9IT01FX0RPT1JTX1YxIOKAlCBob21lcGFnZSAiV2hhdCBicmluZ3MgeW91IGhlcmU/IiBkb29ycyAqLwooZnVuY3Rpb24oKXsKICB2YXIgcCA9ICh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgfHwgJy8nKS5yZXBsYWNlKC9cLyskLywgJycpOwogIGlmIChwICE9PSAnJyAmJiBwICE9PSAnL2luZGV4JykgcmV0dXJuOwogIHZhciBJTksgPSAnY29sb3I6IzFhMWExYTsnLCBNVVRFRCA9ICdjb2xvcjojNTU1OycsIEFDQyA9ICcjZTg2MDNjJzsKICB2YXIgRE9PUlMgPSBbCiAgICBbJ0J1eSBhIGhvbWUnLCAnU2VhcmNoIGV2ZXJ5IE1MUyBsaXN0aW5nLCBnZXQgcHJlLWFwcHJvdmVkLCBhbmQgdG91ciB3aXRoIGFuIGFnZW50IHdobyBhbnN3ZXJzIGluIDE1IG1pbnV0ZXMuJywgJy9idXknXSwKICAgIFsnU2VsbCB5b3VyIGhvbWUnLCAnSW5zdGFudCBob21lIHZhbHVlLCB5b3VyIG5ldCBwcm9jZWVkcywgYW5kIGxpdmUgb24gTUxTIHdpdGhpbiAzIGJ1c2luZXNzIGRheXMsIGd1YXJhbnRlZWQuJywgJy9zZWxsJ10sCiAgICBbJ0ludmVzdCcsICdTdHJhdGVneSBzZWFyY2hlcywgYSBkZWFsIGdyYWRlciB3aXRoIEhVRCByZW50cyBmb3IgZXZlcnkgWklQIGNvZGUsIGFuZCBvZmYtbWFya2V0IGRlYWxzLicsICcvbG91aXN2aWxsZS1pbnZlc3Rvci1kZWFsLWZpbmRlciddLAogICAgWydDb21tZXJjaWFsJywgJ0R1cGxleGVzIGFuZCB1cCwgcmV0YWlsLCBpbmR1c3RyaWFsIGFuZCBsYW5kIHRocm91Z2ggV2lubmVyIENvbW1lcmNpYWwuJywgJy9sb3Vpc3ZpbGxlLWNvbW1lcmNpYWwtcmVhbC1lc3RhdGUnXSwKICAgIFsnSm9pbiBXaW5uZXInLCAnVGhyZWUgY29tcCBwbGFucywgZGFpbHkgbGVhZHMgYXQgNjozMCBhLm0uLCBhbmQgb3VyIG93biBkYXRhIGNvbXBhbnkgYmVoaW5kIHlvdS4nLCAnL2pvaW4nXQogIF07CiAgZnVuY3Rpb24gYnVpbGQoKXsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItZG9vcnMnKSkgcmV0dXJuIHRydWU7CiAgICB2YXIgYW5jaG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWhvbWUtc2VhcmNoJyk7CiAgICBpZiAoIWFuY2hvciB8fCAhYW5jaG9yLnBhcmVudE5vZGUpIHJldHVybiBmYWxzZTsKICAgIHZhciBjYXJkcyA9IERPT1JTLm1hcChmdW5jdGlvbihkKXsKICAgICAgcmV0dXJuICc8YSBocmVmPSInICsgZFsyXSArICciIHN0eWxlPSJkaXNwbGF5OmJsb2NrO3RleHQtZGVjb3JhdGlvbjpub25lO2JvcmRlcjoxcHggc29saWQgI2Q4ZDhkODtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjE4cHggMTZweDtiYWNrZ3JvdW5kOiNmZmY7JyArIElOSyArICciPicgKwogICAgICAgICc8c3BhbiBzdHlsZT0iZGlzcGxheTpibG9jaztmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjE4cHg7bWFyZ2luLWJvdHRvbTo2cHg7JyArIElOSyArICciPicgKyBkWzBdICsgJyA8c3BhbiBzdHlsZT0iY29sb3I6JyArIEFDQyArICc7Ij4mcmFycjs8L3NwYW4+PC9zcGFuPicgKwogICAgICAgICc8c3BhbiBzdHlsZT0iZGlzcGxheTpibG9jaztmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjQ1OycgKyBNVVRFRCArICciPicgKyBkWzFdICsgJzwvc3Bhbj48L2E+JzsKICAgIH0pLmpvaW4oJycpOwogICAgdmFyIHNlYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlY3Rpb24nKTsKICAgIHNlYy5pZCA9ICd3ci1kb29ycyc7CiAgICBzZWMuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknLCAnd3ItZG9vcnMtaCcpOwogICAgc2VjLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnYmFja2dyb3VuZDojZjRmNGYyO3BhZGRpbmc6MzJweCAxNnB4OycgKyBJTkspOwogICAgc2VjLmlubmVySFRNTCA9ICc8ZGl2IHN0eWxlPSJtYXgtd2lkdGg6MTEwMHB4O21hcmdpbjowIGF1dG87JyArIElOSyArICciPicgKwogICAgICAnPGgyIGlkPSJ3ci1kb29ycy1oIiBzdHlsZT0ibWFyZ2luOjAgMCA2cHg7Zm9udC1zaXplOjI2cHg7Zm9udC13ZWlnaHQ6NzAwO2xpbmUtaGVpZ2h0OjEuMjU7JyArIElOSyArICciPldoYXQgYnJpbmdzIHlvdSBoZXJlPzwvaDI+JyArCiAgICAgICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxNnB4O2ZvbnQtc2l6ZToxNXB4OycgKyBNVVRFRCArICciPlBpY2sgYSBkb29yLiBFYWNoIG9uZSBnb2VzIHN0cmFpZ2h0IHRvIHRoZSB0b29scyBhbmQgcGVvcGxlIGZvciB0aGF0IGpvYi48L3A+JyArCiAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDIwMHB4LDFmcikpO2dhcDoxMnB4OyI+JyArIGNhcmRzICsgJzwvZGl2PjwvZGl2Pic7CiAgICBhbmNob3IucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoc2VjLCBhbmNob3IpOwogICAgcmV0dXJuIHRydWU7CiAgfQogIGZ1bmN0aW9uIHRyeUl0KGspeyBpZiAoYnVpbGQoKSB8fCBrID4gMjApIHJldHVybjsgc2V0VGltZW91dChmdW5jdGlvbigpeyB0cnlJdChrICsgMSk7IH0sIDQwMCk7IH0KICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24oKXsgdHJ5SXQoMCk7IH0pOyBlbHNlIHRyeUl0KDApOwp9KSgpOwoKLyogV1JfU0lURV9GSVhFU19WMTogcHJlLWFwcHJvdmVkIGxhYmVsLCBwaG9uZSBvbiBvbmUgbGluZSwgR29vZ2xlIHJldmlldyBjb3VudCAqLwooZnVuY3Rpb24oKXsKICBmdW5jdGlvbiBmaXgoKXsKICAgIHZhciB3ID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihkb2N1bWVudC5ib2R5LCBOb2RlRmlsdGVyLlNIT1dfVEVYVCwgbnVsbCksIG4sIGxpc3QgPSBbXTsKICAgIHdoaWxlICgobiA9IHcubmV4dE5vZGUoKSkpIGxpc3QucHVzaChuKTsKICAgIGxpc3QuZm9yRWFjaChmdW5jdGlvbih0KXsKICAgICAgdmFyIHYgPSB0Lm5vZGVWYWx1ZSwgbnYgPSB2OwogICAgICBpZiAobnYuaW5kZXhPZignQ2FtIEtlZWhuJykgIT09IC0xKSBudiA9IG52LnJlcGxhY2UoL0dldCBwcmUtYXBwcm92ZWQgd2l0aCBDYW0gS2VlaG4vZ2ksICdHZXQgcHJlLWFwcHJvdmVkJyk7CiAgICAgIGlmICgvb3V0IG9mIDVccypcdTAwYjdccypcZCsgcmV2aWV3cyBvbiBHb29nbGUvLnRlc3QobnYpKSBudiA9IG52LnJlcGxhY2UoL1xkKFwuXGQpPyBvdXQgb2YgNShccypcdTAwYjdccyopXGQrIHJldmlld3Mgb24gR29vZ2xlLywgJzQuNyBvdXQgb2YgNSQyJyArICcxNSByZXZpZXdzIG9uIEdvb2dsZScpOwogICAgICBpZiAobnYgIT09IHYpIHQubm9kZVZhbHVlID0gbnY7CiAgICB9KTsKICAgIHZhciBiYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItaG9tZS1iYXInKTsKICAgIGlmIChiYXIpIHsgdmFyIGJsID0gYmFyLnF1ZXJ5U2VsZWN0b3JBbGwoJ2EnKTsgZm9yICh2YXIgaiA9IDA7IGogPCBibC5sZW5ndGg7IGorKykgeyBibFtqXS5zdHlsZS53aGl0ZVNwYWNlID0gJ25vd3JhcCc7IGJsW2pdLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJzsgfSB9CiAgICB2YXIgdDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItdGV4dC11cycpOyBpZiAodDIpIHQyLnN0eWxlLndoaXRlU3BhY2UgPSAnbm93cmFwJzsKICB9CiAgZml4KCk7CiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpeCk7CiAgWzYwMCwgMTUwMCwgMzAwMCwgNjAwMF0uZm9yRWFjaChmdW5jdGlvbihtcyl7IHNldFRpbWVvdXQoZml4LCBtcyk7IH0pOwp9KSgpOwoKLyogV1JfQkxPQ0tfQllfQkxPQ0tfVjE6IEJsb2NrIGJ5IEJsb2NrIHBvZGNhc3QgZXBpc29kZXMgb24gbmVpZ2hib3Job29kIGd1aWRlcywgaHVicyBhbmQgdGhlIE5laWdoYm9yaG9vZCBNYXRjaGVyICovCihmdW5jdGlvbigpewogIHZhciBTSE9XID0gJ2h0dHBzOi8vb3Blbi5zcG90aWZ5LmNvbS9zaG93LzJnWUFNSFpnTzh4aEpNSDh6dnRaNW0nOwogIHZhciBFUCA9IHsKICAgIGR0OiAgWyczSmsyQ2E4N21SYUU3VzY4ZU5aWWFNJywgJ0Rvd250b3duICYgT2xkIExvdWlzdmlsbGUnXSwKICAgIHdsOiAgWyczaHliVFZtb0l2RldZMGVHVXFSZFlkJywgJ1dlc3QgTG91aXN2aWxsZSwgT2xkIExvdWlzdmlsbGUgJiBTaGl2ZWx5J10sCiAgICBiaGc6IFsnNkpUWkd5NmIydHBYVVZVTEEyNWdGNycsICdCdXRjaGVydG93biwgdGhlIEhpZ2hsYW5kcyAmIEdlcm1hbnRvd24nXSwKICAgIHByOiAgWyc2bjlrZmh2OXB3SjBwWDZYRUNnUnIzJywgJ1BsZWFzdXJlIFJpZGdlLCBWYWxsZXkgU3RhdGlvbiAmIFNoaXZlbHknXSwKICAgIGFmOiAgWyc1S1BKU0tXdDdFaTVoZHpROEZPTXRVJywgJ0F1YnVybmRhbGUsIEZhaXJkYWxlICYgSXJvcXVvaXMgUGFyayddLAogICAgYmg6ICBbJzI0MElPWENueW12Y3ZMSnFDYmkzTUUnLCAnQnVlY2hlbCwgSGlnaHZpZXcsIE9rb2xvbmEgJiBGZXJuIENyZWVrJ10sCiAgICBmYzogIFsnNVl4WUZyTE1xRWltZEtSdk9TOG95bycsICdGZXJuIENyZWVrLCBIaWtlcyBQb2ludCAmIEplZmZlcnNvbnRvd24nXSwKICAgIG1kOiAgWycwYU01MDY4cUtVbDBTN2lqdGROb1BkJywgJ01pZGRsZXRvd24sIERvdWdsYXNzIEhpbGxzLCBIdXJzdGJvdXJuZSAmIEFuY2hvcmFnZSddLAogICAgcGw6ICBbJzFEeWt0enpFODlNN3hmRUxWR2VmeWInLCAnUHJvc3BlY3QsIEx5bmRvbiwgR2xlbnZpZXcgJiBBbmNob3JhZ2UnXSwKICAgIHNtOiAgWycyaUtZR2dkOHpvZFh1MlpGMjhiQk4yJywgJ1N0LiBNYXR0aGV3cywgQ2xpZnRvbiAmIENyZXNjZW50IEhpbGwnXSwKICAgIG5lOiAgWyc0TTZkZXhvcEpNNURZOVE4OXFsN2k4JywgJ0JhcmRzdG93biAmIE5lbHNvbiBDb3VudHknXSwKICAgIGJ1OiAgWyczN014WUJoMkFVQlFaN3hhNW52VEQxJywgJ0J1bGxpdHQgQ291bnR5J10sCiAgICBzaTogIFsnN3lCVksydDBVSGJkdWhOQms1ZmFBWicsICdTb3V0aGVybiBJbmRpYW5hJ10sCiAgICBoYTogIFsnMTYycExJRlV6SGFyYXZleFN6eERMdycsICdIYXJkaW4gQ291bnR5J10sCiAgICBzcDogIFsnNHcwV3pZaklqdGNYN1U3ZmI5NFhnYScsICdTcGVuY2VyIENvdW50eSddLAogICAgbm86ICBbJzBuYXVkSlVwcmppM3pubHZuczBnb0MnLCAnTm9ydGggT2xkaGFtIENvdW50eSddLAogICAgc286ICBbJzVEVE00eEFRcUxIR3FUV1pEM1diSzInLCAnU291dGggT2xkaGFtIENvdW50eSddLAogICAgc2g6ICBbJzRNWXo2UGJISTJJMk1PY0UyM1VHeFUnLCAnU2hlbGJ5dmlsbGUgJiBTaGVsYnkgQ291bnR5J10KICB9OwogIHZhciBPUkRFUiA9IFsnZHQnLCd3bCcsJ2JoZycsJ3NtJywncHInLCdhZicsJ2JoJywnZmMnLCdtZCcsJ3BsJywnbm8nLCdzbycsJ3NoJywnYnUnLCdzcCcsJ25lJywnaGEnLCdzaSddOwogIHZhciBQQUdFUyA9IHsKICAgICdhbmNob3JhZ2Uta3ktcmVhbC1lc3RhdGUtZ3VpZGUnOlsnbWQnLCdwbCddLAogICAgJ2JlZWNobW9udC1zb3V0aC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlJzpbJ2FmJ10sCiAgICAnYmVsa25hcC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlJzpbJ2JoZyddLAogICAgJ2J1bGxpdHQtY291bnR5LWt5LXJlYWwtZXN0YXRlLWd1aWRlJzpbJ2J1J10sCiAgICAnYnVsbGl0dC1zcGVuY2VyLWNvdW50eS1sYW5kLWFjcmVhZ2UtZ3VpZGUnOlsnYnUnLCdzcCddLAogICAgJ2NhbGlmb3JuaWEtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSc6Wyd3bCddLAogICAgJ2NhbXAtdGF5bG9yLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUnOlsnYmhnJ10sCiAgICAnY2hlcm9rZWUtdHJpYW5nbGUtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSc6WydiaGcnXSwKICAgICdjbGFya3N2aWxsZS1pbi1yZWFsLWVzdGF0ZS1ndWlkZSc6WydzaSddLAogICAgJ2NsaWZ0b24tY2xpZnRvbi1oZWlnaHRzLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUnOlsnc20nXSwKICAgICdjcmVzY2VudC1oaWxsLW9yaWdpbmFsLWhpZ2hsYW5kcy1reS1yZWFsLWVzdGF0ZS1ndWlkZSc6WydzbScsJ2JoZyddLAogICAgJ2RvdWdsYXNzLWhpbGxzLWt5LXJlYWwtZXN0YXRlLWd1aWRlJzpbJ21kJ10sCiAgICAnZG91Z2xhc3MtbG9vcC1ib25ueWNhc3RsZS1yZWFsLWVzdGF0ZS1ndWlkZSc6WydiaGcnXSwKICAgICdkb3dudG93bi1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlJzpbJ2R0J10sCiAgICAnZWxpemFiZXRodG93bi1reS1yZWFsLWVzdGF0ZS1ndWlkZSc6WydoYSddLAogICAgJ2VsaXphYmV0aHRvd24ta3ktY2xvc2luZy1jb3N0cyc6WydoYSddLAogICAgJ3NlbGwtbXktaG91c2UtZWxpemFiZXRodG93bi1reSc6WydoYSddLAogICAgJ2ZhaXJkYWxlLWt5LXJlYWwtZXN0YXRlLWd1aWRlJzpbJ2FmJ10sCiAgICAnZmVybi1jcmVlay1reS1yZWFsLWVzdGF0ZS1ndWlkZSc6WydmYycsJ2JoJ10sCiAgICAnZmlzaGVydmlsbGUta3ktcmVhbC1lc3RhdGUtZ3VpZGUnOlsnZmMnXSwKICAgICdnZXJtYW50b3duLXNjaG5pdHplbGJ1cmctbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSc6WydiaGcnXSwKICAgICdnbGVudmlldy1reS1yZWFsLWVzdGF0ZS1ndWlkZSc6WydwbCddLAogICAgJ2hpZ2hsYW5kcy1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlJzpbJ2JoZyddLAogICAgJ2hpa2VzLXBvaW50LWxvdWlzdmlsbGUtbmVpZ2hib3Job29kLWd1aWRlJzpbJ2ZjJ10sCiAgICAnaHVyc3Rib3VybmUta3ktcmVhbC1lc3RhdGUtZ3VpZGUnOlsnbWQnXSwKICAgICdpbmRpYW4taGlsbHMta3ktcmVhbC1lc3RhdGUtZ3VpZGUnOlsncGwnLCdzbSddLAogICAgJ2lyb3F1b2lzLXNvdXRoLWVuZC1sb3Vpc3ZpbGxlLW5laWdoYm9yaG9vZC1ndWlkZSc6WydhZiddLAogICAgJ2plZmZlcnNvbnRvd24tbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtZ3VpZGUnOlsnZmMnXSwKICAgICdsYWtlLWZvcmVzdC1sb3Vpc3ZpbGxlLWt5LXJlYWwtZXN0YXRlLWd1aWRlJzpbJ21kJ10sCiAgICAnbHluZG9uLWdyYXltb29yLWRldm9uZGFsZS1reS1yZWFsLWVzdGF0ZS1ndWlkZSc6WydwbCddLAogICAgJ21pZGRsZXRvd24ta3ktcmVhbC1lc3RhdGUtZ3VpZGUnOlsnbWQnXSwKICAgICdtb2NraW5nYmlyZC12YWxsZXkta3ktcmVhbC1lc3RhdGUtZ3VpZGUnOlsncGwnLCdzbSddLAogICAgJ21vdmluZy10by1zb3V0aGVybi1pbmRpYW5hJzpbJ3NpJ10sCiAgICAnMTktdGhpbmdzLXRvLWtub3ctYmVmb3JlLW1vdmluZy10by1zb3V0aGVybi1pbmRpYW5hJzpbJ3NpJ10sCiAgICAnbmV3LWFsYmFueS1qZWZmZXJzb252aWxsZS1pbmRpYW5hLXJlYWwtZXN0YXRlLWd1aWRlJzpbJ3NpJ10sCiAgICAnc2VsbGVyc2J1cmctaW5kaWFuYS1yZWFsLWVzdGF0ZS1ndWlkZSc6WydzaSddLAogICAgJ3NlbGwtbXktaG91c2UtamVmZmVyc29udmlsbGUtaW4nOlsnc2knXSwKICAgICdzZWxsLW15LWhvdXNlLW5ldy1hbGJhbnktaW4nOlsnc2knXSwKICAgICduZXdidXJnLWJ1ZWNoZWwtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSc6WydiaCddLAogICAgJ25vcnRoLW9sZGhhbS12cy1zb3V0aC1vbGRoYW0tY291bnR5LWd1aWRlJzpbJ25vJywnc28nXSwKICAgICdub3J0b24tY29tbW9ucy1yZWFsLWVzdGF0ZS1ndWlkZSc6WydwbCddLAogICAgJ25vcndvb2Qtbm9ydGhmaWVsZC1reS1yZWFsLWVzdGF0ZS1ndWlkZSc6WydwbCddLAogICAgJ251bHUtYnV0Y2hlcnRvd24tbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSc6WydiaGcnLCdkdCddLAogICAgJ29rb2xvbmEtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSc6WydiaCddLAogICAgJ29sZC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlJzpbJ2R0Jywnd2wnXSwKICAgICdvbGRoYW0tY291bnR5LWt5LXJlYWwtZXN0YXRlLWd1aWRlJzpbJ25vJywnc28nXSwKICAgICdwZXdlZS12YWxsZXkta3ktcmVhbC1lc3RhdGUtZ3VpZGUnOlsnc28nXSwKICAgICdwb3BsYXItbGV2ZWwtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSc6WydiaGcnXSwKICAgICdwb3J0bGFuZC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlJzpbJ3dsJ10sCiAgICAncHJvc3BlY3Qta3ktbmVpZ2hib3Job29kLWd1aWRlJzpbJ3BsJ10sCiAgICAncnVzc2VsbC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlJzpbJ3dsJ10sCiAgICAnc2hlbGJ5LWNvdW50eS1reS1yZWFsLWVzdGF0ZS1ndWlkZSc6WydzaCddLAogICAgJ3NoZWxieS1jb3VudHktc2hlbGJ5dmlsbGUtc2ltcHNvbnZpbGxlLWZhcm1zLWFjcmVhZ2UnOlsnc2gnXSwKICAgICdzZWxsLW15LWhvdXNlLXNoZWxieXZpbGxlLWt5JzpbJ3NoJ10sCiAgICAnaG9yc2UtZmFybXMtb2xkaGFtLXNoZWxieS1jb3VudHkta3knOlsnbm8nLCdzbycsJ3NoJ10sCiAgICAnaG9yc2UtZmFybXMtZm9yLXNhbGUtb2xkaGFtLXNoZWxieS1jb3VudHkta3knOlsnbm8nLCdzbycsJ3NoJ10sCiAgICAnc2hlbGJ5LXBhcmstbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSc6WydkdCddLAogICAgJ3NoaXZlbHktcGxlYXN1cmUtcmlkZ2UtcGFyay1yZWFsLWVzdGF0ZS1ndWlkZSc6WydwcicsJ3dsJ10sCiAgICAnc21va2V0b3duLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUnOlsnZHQnXSwKICAgICdzcHJpbmdodXJzdC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlJzpbJ3BsJ10sCiAgICAnc3QtbWF0dGhld3MtbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtZ3VpZGUnOlsnc20nXSwKICAgICd2YWxsZXktc3RhdGlvbi1sb3Vpc3ZpbGxlLW5laWdoYm9yaG9vZC1ndWlkZSc6WydwciddLAogICAgJ3dpbmR5LWhpbGxzLXNlbmVjYS1nYXJkZW5zLWt5LXJlYWwtZXN0YXRlLWd1aWRlJzpbJ3NtJywnYmhnJ10KICB9OwogIHZhciBIVUJTID0gWydsb3Vpc3ZpbGxlLW5laWdoYm9yaG9vZHMnLCdsb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlcycsJ2xvdWlzdmlsbGUtbmVpZ2hib3Job29kcy13aGVyZS1ob21lcy1hcmUtc2VsbGluZycsJzE5LXRoaW5ncy10by1rbm93LWJlZm9yZS1tb3ZpbmctdG8tbG91aXN2aWxsZScsJ2xvdWlzdmlsbGUtbmVpZ2hib3Job29kLW1hdGNoZXInXTsKICB2YXIgTUFUQ0ggPSB7CiAgICAnVGhlIEhpZ2hsYW5kcyc6J2JoZycsJ1N0LiBNYXR0aGV3cyc6J3NtJywnQ3Jlc2NlbnQgSGlsbCc6J3NtJywnQ2xpZnRvbiAvIENsaWZ0b24gSGVpZ2h0cyc6J3NtJywKICAgICdHZXJtYW50b3duIC8gU2Nobml0emVsYnVyZyc6J2JoZycsJ051THUgLyBEb3dudG93bic6J2R0JywnT2xkIExvdWlzdmlsbGUnOidkdCcsJ0plZmZlcnNvbnRvd24gKEotdG93biknOidmYycsCiAgICAnTWlkZGxldG93bic6J21kJywnUHJvc3BlY3QnOidwbCcsJ05vcnRvbiBDb21tb25zJzoncGwnLCdGZXJuIENyZWVrJzonZmMnLCdPa29sb25hJzonYmgnLCdTaGl2ZWx5JzoncHInCiAgfTsKICB2YXIgQUNDID0gJyNlODYwM2MnLCBJTksgPSAnY29sb3I6IzFhMWExYTsnLCBNVVRFRCA9ICdjb2xvcjojNTU1Oyc7CiAgdmFyIHNsdWcgPSAobG9jYXRpb24ucGF0aG5hbWUgfHwgJy8nKS5yZXBsYWNlKC9eXC8rfFwvKyQvZywgJycpOwogIGZ1bmN0aW9uIGVwVXJsKGspeyByZXR1cm4gJ2h0dHBzOi8vb3Blbi5zcG90aWZ5LmNvbS9lcGlzb2RlLycgKyBFUFtrXVswXTsgfQogIGZ1bmN0aW9uIGZyYW1lKGspewogICAgcmV0dXJuICc8aWZyYW1lIHRpdGxlPSJCbG9jayBieSBCbG9jazogJyArIEVQW2tdWzFdICsgJyBob3VzaW5nIG1hcmtldCIgc3JjPSJodHRwczovL29wZW4uc3BvdGlmeS5jb20vZW1iZWQvZXBpc29kZS8nICsgRVBba11bMF0gKyAnP3V0bV9zb3VyY2U9dGhld2lubmVycmVhbHR5IiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxNTIiIGZyYW1lYm9yZGVyPSIwIiBsb2FkaW5nPSJsYXp5IiBhbGxvdz0iYXV0b3BsYXk7IGNsaXBib2FyZC13cml0ZTsgZW5jcnlwdGVkLW1lZGlhOyBmdWxsc2NyZWVuOyBwaWN0dXJlLWluLXBpY3R1cmUiIHN0eWxlPSJib3JkZXItcmFkaXVzOjEycHg7ZGlzcGxheTpibG9jazttYXJnaW46MCAwIDEwcHg7Ij48L2lmcmFtZT4nOwogIH0KICBmdW5jdGlvbiBib3goaW5uZXIsIGlkKXsKICAgIHZhciBkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2VjdGlvbicpOwogICAgZC5pZCA9IGlkOyBkLmNsYXNzTmFtZSA9ICd3ci1iYmInOwogICAgZC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ21hcmdpbjoyNHB4IDA7cGFkZGluZzoyMHB4IDE4cHg7Ym9yZGVyOjFweCBzb2xpZCAjZDhkOGQ4O2JvcmRlci1yYWRpdXM6MTBweDtiYWNrZ3JvdW5kOiNmN2Y3ZjU7JyArIElOSyk7CiAgICBkLmlubmVySFRNTCA9IGlubmVyOyByZXR1cm4gZDsKICB9CiAgZnVuY3Rpb24gaGVhZCh0LCBzdWIpewogICAgcmV0dXJuICc8cCBzdHlsZT0ibWFyZ2luOjAgMCA0cHg7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4wNmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjonICsgQUNDICsgJzsiPkJsb2NrIGJ5IEJsb2NrIHBvZGNhc3Q8L3A+JyArCiAgICAgICc8aDIgc3R5bGU9Im1hcmdpbjowIDAgNnB4O2ZvbnQtc2l6ZToyMnB4O2xpbmUtaGVpZ2h0OjEuMztmb250LXdlaWdodDo3MDA7JyArIElOSyArICciPicgKyB0ICsgJzwvaDI+JyArCiAgICAgICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxNHB4O2ZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0OjEuNTsnICsgTVVURUQgKyAnIj4nICsgc3ViICsgJzwvcD4nOwogIH0KICBmdW5jdGlvbiBmb290KCl7CiAgICByZXR1cm4gJzxwIHN0eWxlPSJtYXJnaW46NnB4IDAgMDtmb250LXNpemU6MTRweDsnICsgTVVURUQgKyAnIj48YSBocmVmPSInICsgU0hPVyArICciIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBzdHlsZT0iY29sb3I6IzFhMWExYTtmb250LXdlaWdodDo2MDA7Ij5Gb2xsb3cgQmxvY2sgYnkgQmxvY2sgb24gU3BvdGlmeTwvYT4gZm9yIGEgbmV3IHVwZGF0ZSBmb3IgZXZlcnkgYXJlYSBlYWNoIG1vbnRoLiBXYW50IHRoZSBudW1iZXJzIGZvciBvbmUgc3RyZWV0IG9yIG9uZSBob3VzZT8gVGV4dCBXaW5uZXIgUmVhbHR5IGF0ICg1MDIpIDMwNS04OTE1LjwvcD4nOwogIH0KICBmdW5jdGlvbiBhbmNob3IoKXsKICAgIHZhciBtYWluID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWFpbicpIHx8IGRvY3VtZW50LmJvZHk7CiAgICB2YXIgaDJzID0gbWFpbi5xdWVyeVNlbGVjdG9yQWxsKCdoMicpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoMnMubGVuZ3RoOyBpKyspIHsgaWYgKCFoMnNbaV0uY2xvc2VzdCgnaGVhZGVyLG5hdixmb290ZXIsLndyLWJiYicpKSByZXR1cm4gaDJzW2ldOyB9CiAgICByZXR1cm4gbnVsbDsKICB9CiAgZnVuY3Rpb24ganNvbmxkKGtleXMpewogICAgdmFyIGRhdGEgPSB7J0Bjb250ZXh0JzonaHR0cHM6Ly9zY2hlbWEub3JnJywnQGdyYXBoJzoga2V5cy5tYXAoZnVuY3Rpb24oayl7IHJldHVybiB7CiAgICAgICdAdHlwZSc6J1BvZGNhc3RFcGlzb2RlJywgbmFtZTogRVBba11bMV0gKyAnIFJlYWwgRXN0YXRlIE1hcmtldCBVcGRhdGUnLCB1cmw6IGVwVXJsKGspLAogICAgICBhc3NvY2lhdGVkTWVkaWE6IHsnQHR5cGUnOidNZWRpYU9iamVjdCcsIGVtYmVkVXJsOiAnaHR0cHM6Ly9vcGVuLnNwb3RpZnkuY29tL2VtYmVkL2VwaXNvZGUvJyArIEVQW2tdWzBdfSwKICAgICAgcGFydE9mU2VyaWVzOiB7J0B0eXBlJzonUG9kY2FzdFNlcmllcycsIG5hbWU6ICdMb3Vpc3ZpbGxlIFJlYWwgRXN0YXRlICYgSG91c2luZyBNYXJrZXQgfCBCbG9jayBieSBCbG9jaycsIHVybDogU0hPV30sCiAgICAgIHB1Ymxpc2hlcjogeydAdHlwZSc6J1JlYWxFc3RhdGVBZ2VudCcsIG5hbWU6ICdXaW5uZXIgUmVhbHR5JywgdXJsOiAnaHR0cHM6Ly93d3cudGhld2lubmVycmVhbHR5LmNvbS8nfQogICAgfTsgfSl9OwogICAgdmFyIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsgcy50eXBlID0gJ2FwcGxpY2F0aW9uL2xkK2pzb24nOyBzLnRleHQgPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7CiAgfQogIGZ1bmN0aW9uIGd1aWRlKGtleXMpewogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1iYmItZ3VpZGUnKSkgcmV0dXJuIHRydWU7CiAgICB2YXIgYSA9IGFuY2hvcigpOyBpZiAoIWEpIHJldHVybiBmYWxzZTsKICAgIHZhciBuYW1lcyA9IGtleXMubWFwKGZ1bmN0aW9uKGspeyByZXR1cm4gRVBba11bMV07IH0pLmpvaW4oJyBhbmQgJyk7CiAgICB2YXIgaHRtbCA9IGhlYWQoJ0xpc3RlbjogdGhlICcgKyBuYW1lcyArICcgaG91c2luZyBtYXJrZXQnLCAnQSBmcmVlLCB0d28tbWludXRlIG1vbnRobHkgdXBkYXRlIHN0cmFpZ2h0IGZyb20gdGhlIE1MUzogaG9tZXMgZm9yIHNhbGUsIHdoYXQgc29sZCwgcHJpY2VzLCBkYXlzIG9uIG1hcmtldCBhbmQgbW9udGhzIG9mIHN1cHBseS4nKTsKICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbihrKXsgaHRtbCArPSBmcmFtZShrKTsgfSk7CiAgICBhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGJveChodG1sICsgZm9vdCgpLCAnd3ItYmJiLWd1aWRlJyksIGEpOwogICAganNvbmxkKGtleXMpOyByZXR1cm4gdHJ1ZTsKICB9CiAgZnVuY3Rpb24gaHViKCl7CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWJiYi1odWInKSkgcmV0dXJuIHRydWU7CiAgICB2YXIgbWFpbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21haW4nKSB8fCBkb2N1bWVudC5ib2R5OwogICAgdmFyIHRhcmdldCA9IHNsdWcgPT09ICdsb3Vpc3ZpbGxlLW5laWdoYm9yaG9vZC1tYXRjaGVyJyA/IG51bGwgOiBhbmNob3IoKTsKICAgIHZhciBsaXN0ID0gT1JERVIubWFwKGZ1bmN0aW9uKGspeyByZXR1cm4gJzxsaSBzdHlsZT0ibWFyZ2luOjAgMCA2cHg7Ij48YSBocmVmPSInICsgZXBVcmwoaykgKyAnIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij4nICsgRVBba11bMV0gKyAnPC9hPjwvbGk+JzsgfSkuam9pbignJyk7CiAgICB2YXIgaHRtbCA9IGhlYWQoJ0hlYXIgdGhlIG1hcmtldCBmb3IgZXZlcnkgTG91aXN2aWxsZSBhcmVhJywgJ0Jsb2NrIGJ5IEJsb2NrIGNvdmVycyAxOCBhcmVhcyBhY3Jvc3MgSmVmZmVyc29uIENvdW50eSwgT2xkaGFtLCBTaGVsYnksIEJ1bGxpdHQsIFNwZW5jZXIsIE5lbHNvbiwgSGFyZGluIGFuZCBTb3V0aGVybiBJbmRpYW5hLCBhYm91dCB0d28gbWludXRlcyBlYWNoLCB1cGRhdGVkIG1vbnRobHkuJykgKwogICAgICAnPGlmcmFtZSB0aXRsZT0iQmxvY2sgYnkgQmxvY2sgcG9kY2FzdCIgc3JjPSJodHRwczovL29wZW4uc3BvdGlmeS5jb20vZW1iZWQvc2hvdy8yZ1lBTUhaZ084eGhKTUg4enZ0WjVtP3V0bV9zb3VyY2U9dGhld2lubmVycmVhbHR5IiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIzNTIiIGZyYW1lYm9yZGVyPSIwIiBsb2FkaW5nPSJsYXp5IiBhbGxvdz0iYXV0b3BsYXk7IGNsaXBib2FyZC13cml0ZTsgZW5jcnlwdGVkLW1lZGlhOyBmdWxsc2NyZWVuOyBwaWN0dXJlLWluLXBpY3R1cmUiIHN0eWxlPSJib3JkZXItcmFkaXVzOjEycHg7ZGlzcGxheTpibG9jazttYXJnaW46MCAwIDEycHg7Ij48L2lmcmFtZT4nICsKICAgICAgJzx1bCBzdHlsZT0ibWFyZ2luOjAgMCA4cHg7cGFkZGluZy1sZWZ0OjIwcHg7Y29sdW1uczoyIDIyMHB4O2ZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0OjEuNDsiPicgKyBsaXN0ICsgJzwvdWw+JyArIGZvb3QoKTsKICAgIHZhciBiID0gYm94KGh0bWwsICd3ci1iYmItaHViJyk7CiAgICBpZiAodGFyZ2V0KSB0YXJnZXQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYiwgdGFyZ2V0KTsKICAgIGVsc2UgewogICAgICB2YXIgY2FsYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1ubS1jYWxjJyk7CiAgICAgIGlmIChzbHVnID09PSAnbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtbWF0Y2hlcicgJiYgIWNhbGMpIHJldHVybiBmYWxzZTsKICAgICAgaWYgKGNhbGMpIGNhbGMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYiwgY2FsYy5uZXh0U2libGluZyk7IGVsc2UgbWFpbi5hcHBlbmRDaGlsZChiKTsKICAgIH0KICAgIHJldHVybiB0cnVlOwogIH0KICBmdW5jdGlvbiBsaXN0ZW5MaW5rKGspewogICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CiAgICBhLmhyZWYgPSBlcFVybChrKTsgYS50YXJnZXQgPSAnX2JsYW5rJzsgYS5yZWwgPSAnbm9vcGVuZXInOyBhLmNsYXNzTmFtZSA9ICd3ci1iYmItbGluayc7CiAgICBhLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOjhweCAwIDA7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOiMxYTFhMWE7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsnKTsKICAgIGEuaW5uZXJIVE1MID0gJzxzcGFuIHN0eWxlPSJjb2xvcjonICsgQUNDICsgJzsiPiYjOTY1NDs8L3NwYW4+IExpc3RlbiB0byB0aGlzIG1vbnRo4oCZcyAnICsgRVBba11bMV0gKyAnIG1hcmtldCB1cGRhdGUnOwogICAgcmV0dXJuIGE7CiAgfQogIGZ1bmN0aW9uIG1hdGNoZXIoKXsKICAgIHZhciBocyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2gzJyk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBrID0gTUFUQ0hbaHNbaV0udGV4dENvbnRlbnQudHJpbSgpXTsKICAgICAgaWYgKGsgJiYgIShoc1tpXS5uZXh0RWxlbWVudFNpYmxpbmcgJiYgaHNbaV0ubmV4dEVsZW1lbnRTaWJsaW5nLmNsYXNzTmFtZSA9PT0gJ3dyLWJiYi1wJykpIHsKICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsgcC5jbGFzc05hbWUgPSAnd3ItYmJiLXAnOyBwLnN0eWxlLm1hcmdpbiA9ICcwIDAgOHB4JzsKICAgICAgICBwLmFwcGVuZENoaWxkKGxpc3RlbkxpbmsoaykpOyBoc1tpXS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShwLCBoc1tpXS5uZXh0U2libGluZyk7CiAgICAgIH0KICAgIH0KICAgIHZhciByZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3Itbm0tcmVzdWx0Jyk7CiAgICBpZiAoIXJlcykgcmV0dXJuOwogICAgdmFyIGNhcmRzID0gcmVzLmNoaWxkcmVuOwogICAgZm9yICh2YXIgaiA9IDA7IGogPCBjYXJkcy5sZW5ndGg7IGorKykgewogICAgICB2YXIgYyA9IGNhcmRzW2pdOyBpZiAoYy50YWdOYW1lICE9PSAnRElWJyB8fCBjLnF1ZXJ5U2VsZWN0b3IoJy53ci1iYmItbGluaycpKSBjb250aW51ZTsKICAgICAgdmFyIHQgPSBjLnF1ZXJ5U2VsZWN0b3IoJ3AnKTsgaWYgKCF0KSBjb250aW51ZTsKICAgICAgdmFyIG5tID0gdC50ZXh0Q29udGVudC5yZXBsYWNlKC9eXGQrXC5ccyovLCAnJykudHJpbSgpOwogICAgICBpZiAoTUFUQ0hbbm1dKSBjLmFwcGVuZENoaWxkKGxpc3RlbkxpbmsoTUFUQ0hbbm1dKSk7CiAgICB9CiAgfQogIGZ1bmN0aW9uIHJ1bihrKXsKICAgIHZhciBkb25lID0gdHJ1ZTsKICAgIGlmIChQQUdFU1tzbHVnXSkgZG9uZSA9IGd1aWRlKFBBR0VTW3NsdWddKSAmJiBkb25lOwogICAgaWYgKEhVQlMuaW5kZXhPZihzbHVnKSA+IC0xKSBkb25lID0gaHViKCkgJiYgZG9uZTsKICAgIGlmIChkb25lIHx8IGsgPiAyNSkgcmV0dXJuOwogICAgc2V0VGltZW91dChmdW5jdGlvbigpeyBydW4oayArIDEpOyB9LCA0MDApOwogIH0KICBmdW5jdGlvbiBzdGFydCgpewogICAgcnVuKDApOwogICAgaWYgKHNsdWcgPT09ICdsb3Vpc3ZpbGxlLW5laWdoYm9yaG9vZC1tYXRjaGVyJykgewogICAgICBtYXRjaGVyKCk7CiAgICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7IG1hdGNoZXIoKTsgfSkub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7Y2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7CiAgICB9CiAgfQogIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBzdGFydCk7IGVsc2Ugc3RhcnQoKTsKfSkoKTsKPC9zY3JpcHQ+|END

WRA|i287473|5|PHNjcmlwdD4KKGZ1bmN0aW9uICgpIHsKICB2YXIgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cLyskLywgJycpIHx8ICcvJzsKICB2YXIgT1JJR0lOID0gJ2h0dHBzOi8vdGhld2lubmVycmVhbHR5LmNvbSc7CiAgdmFyIElOSyA9ICdjb2xvcjojMWExYTFhOyc7CiAgdmFyIFBBR0VTID0gewogICAgJy9rZW50dWNreS1zZWxsZXItY2xvc2luZy1jb3N0LWNhbGN1bGF0b3InOiB7IG1hcmtlcjogJ19fU0NDX0NBTENfTUFSS0VSX18nLCB0YWc6ICdzb3VyY2UtdG9vbHMtc2VsbGVyLWNsb3NpbmctY29zdHMnLCBuYW1lOiAnS2VudHVja3kgU2VsbGVyIENsb3NpbmcgQ29zdCBDYWxjdWxhdG9yJywgaDogJ0tlbnR1Y2t5IFNlbGxlciBDbG9zaW5nIENvc3QgQ2FsY3VsYXRvcjogV2hhdCBJdCBDb3N0cyB0byBTZWxsIGEgSG91c2UgaW4gTG91aXN2aWxsZScsIGQ6ICdGcmVlIEtlbnR1Y2t5IHNlbGxlciBjbG9zaW5nIGNvc3QgY2FsY3VsYXRvci4gSXRlbWl6ZXMgY29tbWlzc2lvbiwgdGhlICQwLjUwIHBlciAkNTAwIGRlZWQgdHJhbnNmZXIgdGF4LCBwcm9yYXRlZCBwcm9wZXJ0eSB0YXhlcywgdGl0bGUsIHBheW9mZiBhbmQgcmVjb3JkaW5nIGZlZXMsIGFuZCBzaG93cyB5b3VyIG5ldCBwcm9jZWVkcy4nLCBidWlsZDogYnVpbGRTQ0MgfSwKICAgICcva2VudHVja3ktdHJhbnNmZXItdGF4LWNhbGN1bGF0b3InOiB7IG1hcmtlcjogJ19fVFRDX0NBTENfTUFSS0VSX18nLCB0YWc6ICdzb3VyY2UtdG9vbHMtdHJhbnNmZXItdGF4JywgbmFtZTogJ0tlbnR1Y2t5IFRyYW5zZmVyIFRheCBDYWxjdWxhdG9yJywgaDogJ0tlbnR1Y2t5IFRyYW5zZmVyIFRheCBhbmQgUmVjb3JkaW5nIEZlZSBDYWxjdWxhdG9yJywgZDogJ0ZyZWUgS2VudHVja3kgcmVhbCBlc3RhdGUgdHJhbnNmZXIgdGF4IGNhbGN1bGF0b3I6IHRoZSAkMC41MCBwZXIgJDUwMCBkZWVkIHRheCB1bmRlciBLUlMgMTQyLjA1MCwgcGx1cyBkZWVkIGFuZCBtb3J0Z2FnZSByZWNvcmRpbmcgZmVlcyB1bmRlciBLUlMgNjQuMDEyLCBzcGxpdCBieSB3aG8gcGF5cy4nLCBidWlsZDogYnVpbGRUVEMgfSwKICAgICcva2VudHVja3ktYnV5ZXItY2xvc2luZy1jb3N0LWNhbGN1bGF0b3InOiB7IG1hcmtlcjogJ19fQkNDX0NBTENfTUFSS0VSX18nLCB0YWc6ICdzb3VyY2UtdG9vbHMtYnV5ZXItY2xvc2luZy1jb3N0cycsIG5hbWU6ICdLZW50dWNreSBCdXllciBDbG9zaW5nIENvc3QgQ2FsY3VsYXRvcicsIGg6ICdLZW50dWNreSBCdXllciBDbG9zaW5nIENvc3QgQ2FsY3VsYXRvcjogQ2FzaCB0byBDbG9zZSBmb3IgQ29udmVudGlvbmFsLCBGSEEsIFZBIGFuZCBVU0RBIExvYW5zJywgZDogJ0ZyZWUgS2VudHVja3kgYnV5ZXIgY2xvc2luZyBjb3N0IGNhbGN1bGF0b3IuIEVzdGltYXRlcyBsZW5kZXIgZmVlcywgdGl0bGUsIHJlY29yZGluZywgcHJlcGFpZHMgYW5kIGVzY3JvdywgcGx1cyBGSEEsIFZBIGFuZCBVU0RBIHVwZnJvbnQgZmVlcywgdG8gc2hvdyB5b3VyIHRvdGFsIGNhc2ggdG8gY2xvc2UuJywgYnVpbGQ6IGJ1aWxkQkNDIH0sCiAgICAnL3dob2xlc2FsZS1vZmZlci1jYWxjdWxhdG9yLWxvdWlzdmlsbGUnOiB7IG1hcmtlcjogJ19fTUFPX0NBTENfTUFSS0VSX18nLCB0YWc6ICdzb3VyY2UtdG9vbHMtbWFvJywgbmFtZTogJ0xvdWlzdmlsbGUgV2hvbGVzYWxlIE1BTyBDYWxjdWxhdG9yJywgaDogJ1dob2xlc2FsZSBPZmZlciAoTUFPKSBDYWxjdWxhdG9yIGZvciBMb3Vpc3ZpbGxlOiBUaGUgNzAlIFJ1bGUgV2l0aCBLZW50dWNreSBSZXBhaXIgQ29zdHMgYW5kIEhCIDYyJywgZDogJ0ZyZWUgd2hvbGVzYWxlIG1heGltdW0gYWxsb3dhYmxlIG9mZmVyIGNhbGN1bGF0b3IgZm9yIExvdWlzdmlsbGUuIEFSViwgTG91aXN2aWxsZSByZXBhaXIgdGllcnMsIHlvdXIgYXNzaWdubWVudCBmZWUgYW5kIHRoZSBlbmQgYnV5ZXJcJ3MgcmVhbCBwcm9maXQsIHBsdXMgaG93IHRvIG1hcmtldCB0aGUgZGVhbCBsZWdhbGx5IHVuZGVyIEtlbnR1Y2t5IEhCIDYyLicsIGJ1aWxkOiBidWlsZE1BTyB9CiAgfTsKCiAgZnVuY3Rpb24gZmluZE1hcmtlcih0ZXh0KSB7CiAgICB2YXIgcHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwJyk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBzLmxlbmd0aDsgaSsrKSB7IGlmIChwc1tpXS50ZXh0Q29udGVudC50cmltKCkgPT09IHRleHQpIHJldHVybiBwc1tpXTsgfQogICAgcmV0dXJuIG51bGw7CiAgfQogIGZ1bmN0aW9uIG51bShpZCkgeyB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7IGlmICghZWwpIHJldHVybiAwOyB2YXIgdiA9IHBhcnNlRmxvYXQoU3RyaW5nKGVsLnZhbHVlKS5yZXBsYWNlKC9bXjAtOS5cLV0vZywgJycpKTsgcmV0dXJuIGlzTmFOKHYpID8gMCA6IHY7IH0KICBmdW5jdGlvbiB2YWwoaWQpIHsgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOyByZXR1cm4gZWwgPyBlbC52YWx1ZSA6ICcnOyB9CiAgZnVuY3Rpb24gZm10KG4pIHsgdmFyIG5lZyA9IG4gPCAwOyBuID0gTWF0aC5yb3VuZChNYXRoLmFicyhuKSk7IHJldHVybiAobmVnID8gJy0nIDogJycpICsgJyQnICsgbi50b1N0cmluZygpLnJlcGxhY2UoL1xCKD89KFxkezN9KSsoPyFcZCkpL2csICcsJyk7IH0KICBmdW5jdGlvbiBmbXQyKG4pIHsgdmFyIG5lZyA9IG4gPCAwOyBuID0gTWF0aC5hYnMobik7IHJldHVybiAobmVnID8gJy0nIDogJycpICsgJyQnICsgbi50b0ZpeGVkKDIpLnJlcGxhY2UoL1xCKD89KFxkezN9KSsoPyFcZCkpL2csICcsJyk7IH0KICBmdW5jdGlvbiBlc2MocykgeyByZXR1cm4gU3RyaW5nKHMpLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKS5yZXBsYWNlKC8iL2csICcmcXVvdDsnKTsgfQogIGZ1bmN0aW9uIHJvdyhsYWJlbCwgaWQsIGRlZiwgaGVscCkgewogICAgcmV0dXJuICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxMnB4OycgKyBJTksgKyAnIj48bGFiZWwgZm9yPSInICsgaWQgKyAnIiBzdHlsZT0iZGlzcGxheTpibG9jaztmb250LXdlaWdodDo2MDA7bWFyZ2luLWJvdHRvbTo0cHg7JyArIElOSyArICciPicgKyBlc2MobGFiZWwpICsgJzwvbGFiZWw+JyArCiAgICAgICc8aW5wdXQgaWQ9IicgKyBpZCArICciIHR5cGU9InRleHQiIGlucHV0bW9kZT0iZGVjaW1hbCIgdmFsdWU9IicgKyBlc2MoZGVmKSArICciIHN0eWxlPSJ3aWR0aDoxMDAlO21heC13aWR0aDozMjBweDtwYWRkaW5nOjhweDtib3JkZXI6MXB4IHNvbGlkICNiYmI7Ym9yZGVyLXJhZGl1czo2cHg7Zm9udC1zaXplOjE2cHg7YmFja2dyb3VuZDojZmZmOycgKyBJTksgKyAnIj4nICsKICAgICAgKGhlbHAgPyAnPHNwYW4gc3R5bGU9ImRpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEzcHg7Y29sb3I6IzU1NTttYXJnaW4tdG9wOjNweDsiPicgKyBlc2MoaGVscCkgKyAnPC9zcGFuPicgOiAnJykgKyAnPC9wPic7CiAgfQogIGZ1bmN0aW9uIGRhdGVSb3cobGFiZWwsIGlkLCBkZWYsIGhlbHApIHsKICAgIHJldHVybiAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTJweDsnICsgSU5LICsgJyI+PGxhYmVsIGZvcj0iJyArIGlkICsgJyIgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Zm9udC13ZWlnaHQ6NjAwO21hcmdpbi1ib3R0b206NHB4OycgKyBJTksgKyAnIj4nICsgZXNjKGxhYmVsKSArICc8L2xhYmVsPicgKwogICAgICAnPGlucHV0IGlkPSInICsgaWQgKyAnIiB0eXBlPSJkYXRlIiB2YWx1ZT0iJyArIGRlZiArICciIHN0eWxlPSJtYXgtd2lkdGg6MzIwcHg7cGFkZGluZzo4cHg7Ym9yZGVyOjFweCBzb2xpZCAjYmJiO2JvcmRlci1yYWRpdXM6NnB4O2ZvbnQtc2l6ZToxNnB4O2JhY2tncm91bmQ6I2ZmZjsnICsgSU5LICsgJyI+JyArCiAgICAgIChoZWxwID8gJzxzcGFuIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxM3B4O2NvbG9yOiM1NTU7bWFyZ2luLXRvcDozcHg7Ij4nICsgZXNjKGhlbHApICsgJzwvc3Bhbj4nIDogJycpICsgJzwvcD4nOwogIH0KICBmdW5jdGlvbiBzZWxSb3cobGFiZWwsIGlkLCBvcHRzLCBoZWxwKSB7CiAgICB2YXIgaCA9ICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxMnB4OycgKyBJTksgKyAnIj48bGFiZWwgZm9yPSInICsgaWQgKyAnIiBzdHlsZT0iZGlzcGxheTpibG9jaztmb250LXdlaWdodDo2MDA7bWFyZ2luLWJvdHRvbTo0cHg7JyArIElOSyArICciPicgKyBlc2MobGFiZWwpICsgJzwvbGFiZWw+PHNlbGVjdCBpZD0iJyArIGlkICsgJyIgc3R5bGU9IndpZHRoOjEwMCU7bWF4LXdpZHRoOjMyMHB4O3BhZGRpbmc6OHB4O2JvcmRlcjoxcHggc29saWQgI2JiYjtib3JkZXItcmFkaXVzOjZweDtmb250LXNpemU6MTZweDtiYWNrZ3JvdW5kOiNmZmY7JyArIElOSyArICciPic7CiAgICBvcHRzLmZvckVhY2goZnVuY3Rpb24gKG8pIHsgaCArPSAnPG9wdGlvbiB2YWx1ZT0iJyArIGVzYyhvWzBdKSArICciJyArIChvWzJdID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPicgKyBlc2Mob1sxXSkgKyAnPC9vcHRpb24+JzsgfSk7CiAgICBoICs9ICc8L3NlbGVjdD4nICsgKGhlbHAgPyAnPHNwYW4gc3R5bGU9ImRpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEzcHg7Y29sb3I6IzU1NTttYXJnaW4tdG9wOjNweDsiPicgKyBlc2MoaGVscCkgKyAnPC9zcGFuPicgOiAnJykgKyAnPC9wPic7CiAgICByZXR1cm4gaDsKICB9CiAgZnVuY3Rpb24gaDModCkgeyByZXR1cm4gJzxoMyBzdHlsZT0ibWFyZ2luOjAgMCAxNHB4O2ZvbnQtc2l6ZToyMnB4OycgKyBJTksgKyAnIj4nICsgZXNjKHQpICsgJzwvaDM+JzsgfQogIGZ1bmN0aW9uIGJ0bihpZCwgdCkgeyByZXR1cm4gJzxidXR0b24gdHlwZT0iYnV0dG9uIiBpZD0iJyArIGlkICsgJyIgc3R5bGU9ImJhY2tncm91bmQ6I2U4NzM0YTtjb2xvcjojZmZmO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6NnB4O3BhZGRpbmc6MTJweCAyMnB4O2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjYwMDtjdXJzb3I6cG9pbnRlcjtmb250LWZhbWlseTppbmhlcml0O21hcmdpbjo2cHggMCA0cHg7Ij4nICsgZXNjKHQpICsgJzwvYnV0dG9uPic7IH0KICBmdW5jdGlvbiBib3goaW5uZXIpIHsgcmV0dXJuICc8ZGl2IHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICNkOGQ4ZDg7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoyNHB4O21hcmdpbjoyNHB4IDA7YmFja2dyb3VuZDojZmFmYWZhOycgKyBJTksgKyAnIj4nICsgaW5uZXIgKyAnPC9kaXY+JzsgfQogIGZ1bmN0aW9uIGxpbmUobGFiZWwsIGFtb3VudCwgYm9sZCkgeyByZXR1cm4gJzx0cj48dGQgc3R5bGU9InBhZGRpbmc6NnB4IDhweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTNlM2UzOycgKyBJTksgKyAoYm9sZCA/ICdmb250LXdlaWdodDo3MDA7JyA6ICcnKSArICciPicgKyBlc2MobGFiZWwpICsgJzwvdGQ+PHRkIHN0eWxlPSJwYWRkaW5nOjZweCA4cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2UzZTNlMzt0ZXh0LWFsaWduOnJpZ2h0O3doaXRlLXNwYWNlOm5vd3JhcDsnICsgSU5LICsgKGJvbGQgPyAnZm9udC13ZWlnaHQ6NzAwOycgOiAnJykgKyAnIj4nICsgYW1vdW50ICsgJzwvdGQ+PC90cj4nOyB9CiAgZnVuY3Rpb24gdGFibGUocm93cykgeyByZXR1cm4gJzx0YWJsZSBzdHlsZT0id2lkdGg6MTAwJTtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7bWFyZ2luOjhweCAwIDEycHg7Zm9udC1zaXplOjE1cHg7Ij4nICsgcm93cyArICc8L3RhYmxlPic7IH0KICBmdW5jdGlvbiBub3RlKHQpIHsgcmV0dXJuICc8cCBzdHlsZT0ibWFyZ2luOjhweCAwIDA7Zm9udC1zaXplOjEzcHg7Y29sb3I6IzU1NTsiPicgKyB0ICsgJzwvcD4nOyB9CiAgZnVuY3Rpb24gZGVlZFRheChwcmljZSkgeyByZXR1cm4gTWF0aC5jZWlsKE1hdGgubWF4KDAsIHByaWNlKSAvIDUwMCkgKiAwLjU7IH0KICBmdW5jdGlvbiBpc29QbHVzKGRheXMpIHsgdmFyIGQgPSBuZXcgRGF0ZSgpOyBkLnNldERhdGUoZC5nZXREYXRlKCkgKyBkYXlzKTsgcmV0dXJuIGQudG9JU09TdHJpbmcoKS5zbGljZSgwLCAxMCk7IH0KICBmdW5jdGlvbiBwYXJzZURhdGUocykgeyB2YXIgcCA9IFN0cmluZyhzKS5zcGxpdCgnLScpOyBpZiAocC5sZW5ndGggIT09IDMpIHJldHVybiBudWxsOyByZXR1cm4gbmV3IERhdGUoK3BbMF0sICtwWzFdIC0gMSwgK3BbMl0pOyB9CiAgZnVuY3Rpb24gZGF5c0JldHdlZW4oYSwgYikgeyByZXR1cm4gTWF0aC5yb3VuZCgoYiAtIGEpIC8gODY0MDAwMDApOyB9CiAgZnVuY3Rpb24gcG10KHByaW5jaXBhbCwgcmF0ZSwgeWVhcnMpIHsgdmFyIHIgPSByYXRlIC8gMTAwIC8gMTIsIG4gPSB5ZWFycyAqIDEyOyBpZiAoIXByaW5jaXBhbCkgcmV0dXJuIDA7IGlmIChyID09PSAwKSByZXR1cm4gcHJpbmNpcGFsIC8gbjsgcmV0dXJuIHByaW5jaXBhbCAqIHIgLyAoMSAtIE1hdGgucG93KDEgKyByLCAtbikpOyB9CgogIC8qIC0tLS0tLS0tLS0tLS0tLS0gU2VsbGVyIGNsb3NpbmcgY29zdHMgLS0tLS0tLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGJ1aWxkU0NDKHApIHsKICAgIHZhciBodG1sID0gYm94KAogICAgICBoMygnWW91ciBzYWxlJykgKwogICAgICByb3coJ1NhbGUgcHJpY2UgKCQpJywgJ3NjYy1wcmljZScsICczMDAwMDAnKSArCiAgICAgIGRhdGVSb3coJ0Nsb3NpbmcgZGF0ZScsICdzY2MtZGF0ZScsIGlzb1BsdXMoNDUpLCAnVXNlZCB0byBwcm9yYXRlIHByb3BlcnR5IHRheGVzLicpICsKICAgICAgcm93KCdGaXJzdCBtb3J0Z2FnZSBwYXlvZmYgKCQpJywgJ3NjYy1wYXlvZmYxJywgJzE1MDAwMCcsICdBc2sgeW91ciBsZW5kZXIgZm9yIGEgcGF5b2ZmIHN0YXRlbWVudC4gMCBpZiBwYWlkIG9mZi4nKSArCiAgICAgIHJvdygnU2Vjb25kIG1vcnRnYWdlIG9yIEhFTE9DIHBheW9mZiAoJCknLCAnc2NjLXBheW9mZjInLCAnMCcpICsKICAgICAgaDMoJ0NvbW1pc3Npb24nKSArCiAgICAgIHJvdygnTGlzdGluZyBzaWRlIGNvbW1pc3Npb24gKCUpJywgJ3NjYy1saXN0cGN0JywgJzMnLCAnV2hhdCB5b3UgYWdyZWVkIHRvIGluIHlvdXIgbGlzdGluZyBhZ3JlZW1lbnQuJykgKwogICAgICByb3coJ0J1eWVyIGFnZW50IGNvbXBlbnNhdGlvbiB5b3UgYWdyZWVkIHRvIHBheSAoJSknLCAnc2NjLWJ1eXBjdCcsICcyLjUnLCAnTmVnb3RpYWJsZSBzaW5jZSAyMDI0LiBFbnRlciAwIGlmIHRoZSBidXllciBwYXlzIHRoZWlyIG93biBhZ2VudC4nKSArCiAgICAgIGgzKCdUYXhlcyBhbmQgdGl0bGUnKSArCiAgICAgIHJvdygnQW5udWFsIHByb3BlcnR5IHRheCBiaWxsICgkKScsICdzY2MtdGF4JywgJzM0MDAnLCAnRmluZCBpdCBvbiB0aGUgSmVmZmVyc29uIENvdW50eSBTaGVyaWZmIHNpdGUuIEluc2lkZSB0aGUgb2xkIGNpdHkgbGltaXRzIGl0IHJ1bnMgYWJvdXQgMS4yNiUgb2YgYXNzZXNzZWQgdmFsdWU7IG1vc3Qgb2YgdGhlIHJlc3Qgb2YgdGhlIGNvdW50eSBhYm91dCAxLjAlIHRvIDEuMTUlLicpICsKICAgICAgc2VsUm93KCdIYXMgdGhpcyB5ZWFyXCdzIHRheCBiaWxsIGFscmVhZHkgYmVlbiBwYWlkPycsICdzY2MtdGF4cGFpZCcsIFtbJ25vJywgJ05vLCBub3QgeWV0IGJpbGxlZCBvciBwYWlkIChtb3N0IGNsb3NpbmdzKScsIHRydWVdLCBbJ3llcycsICdZZXMsIEkgYWxyZWFkeSBwYWlkIHRoaXMgeWVhclwncyBiaWxsJ11dLCAnS2VudHVja3kgYmlsbHMgcHJvcGVydHkgdGF4IGluIHRoZSBmYWxsIGZvciB0aGUgY3VycmVudCB5ZWFyLicpICsKICAgICAgc2VsUm93KCdXaG8gcGF5cyB0aGUgb3duZXJcJ3MgdGl0bGUgaW5zdXJhbmNlIHBvbGljeT8nLCAnc2NjLXRpdGxld2hvJywgW1snc2VsbGVyJywgJ1NlbGxlciAoTG91aXN2aWxsZSBjdXN0b20pJywgdHJ1ZV0sIFsnYnV5ZXInLCAnQnV5ZXInXSwgWydzcGxpdCcsICdTcGxpdCA1MC81MCddXSkgKwogICAgICByb3coJ093bmVyXCdzIHRpdGxlIHBvbGljeSBwcmVtaXVtICgkKScsICdzY2MtdGl0bGUnLCAnMTI1MCcsICdFc3RpbWF0ZS4gWW91ciB0aXRsZSBjb21wYW55IHF1b3RlcyB0aGUgcmVhbCBwcmVtaXVtOyBpdCByaXNlcyB3aXRoIHRoZSBwcmljZS4nKSArCiAgICAgIHJvdygnRGVlZCBwcmVwYXJhdGlvbiwgYXR0b3JuZXkgKCQpJywgJ3NjYy1kZWVkJywgJzE1MCcpICsKICAgICAgcm93KCdTZWxsZXIgc2V0dGxlbWVudCBvciBjbG9zaW5nIGZlZSAoJCknLCAnc2NjLXNldHRsZScsICczNTAnKSArCiAgICAgIGgzKCdPdGhlcicpICsKICAgICAgcm93KCdTZWxsZXIgY29uY2Vzc2lvbnMgdG93YXJkIGJ1eWVyIGNvc3RzICgkKScsICdzY2MtY29uY2VzcycsICcwJykgKwogICAgICByb3coJ0hvbWUgd2FycmFudHkgZm9yIHRoZSBidXllciAoJCknLCAnc2NjLXdhcnJhbnR5JywgJzAnLCAnT3B0aW9uYWwuICQ1MDAgdG8gJDcwMCBpcyB0eXBpY2FsIHdoZW4gb2ZmZXJlZC4nKSArCiAgICAgIHJvdygnSE9BIHRyYW5zZmVyIG9yIGVzdG9wcGVsIGZlZSAoJCknLCAnc2NjLWhvYScsICcwJykgKwogICAgICByb3coJ1dpcmUsIGNvdXJpZXIsIG1pc2MuICgkKScsICdzY2MtbWlzYycsICc1MCcpICsKICAgICAgYnRuKCdzY2MtZ28nLCAnQ2FsY3VsYXRlIG15IGNsb3NpbmcgY29zdHMnKSArCiAgICAgICc8ZGl2IGlkPSJzY2Mtb3V0IiBzdHlsZT0iZGlzcGxheTpub25lO21hcmdpbi10b3A6MThweDsiPjwvZGl2PicKICAgICk7CiAgICB2YXIgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBjLmlubmVySFRNTCA9IGh0bWw7IHAucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoYywgcCk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NjLWdvJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgIHZhciBwcmljZSA9IG51bSgnc2NjLXByaWNlJyksIHBheTEgPSBudW0oJ3NjYy1wYXlvZmYxJyksIHBheTIgPSBudW0oJ3NjYy1wYXlvZmYyJyk7CiAgICAgIHZhciBsaXN0QyA9IHByaWNlICogbnVtKCdzY2MtbGlzdHBjdCcpIC8gMTAwLCBidXlDID0gcHJpY2UgKiBudW0oJ3NjYy1idXlwY3QnKSAvIDEwMDsKICAgICAgdmFyIGR0ID0gZGVlZFRheChwcmljZSk7CiAgICAgIHZhciByZWxlYXNlcyA9IChwYXkxID4gMCA/IDEgOiAwKSArIChwYXkyID4gMCA/IDEgOiAwKTsKICAgICAgdmFyIHJlbGVhc2VGZWUgPSByZWxlYXNlcyAqIDQ2OwogICAgICB2YXIgYW5udWFsVGF4ID0gbnVtKCdzY2MtdGF4Jyk7CiAgICAgIHZhciBjbG9zZSA9IHBhcnNlRGF0ZSh2YWwoJ3NjYy1kYXRlJykpIHx8IG5ldyBEYXRlKCk7CiAgICAgIHZhciBqYW4xID0gbmV3IERhdGUoY2xvc2UuZ2V0RnVsbFllYXIoKSwgMCwgMSksIGRlYzMxID0gbmV3IERhdGUoY2xvc2UuZ2V0RnVsbFllYXIoKSwgMTEsIDMxKTsKICAgICAgdmFyIHBhaWQgPSB2YWwoJ3NjYy10YXhwYWlkJykgPT09ICd5ZXMnOwogICAgICB2YXIgdGF4TGluZSwgdGF4QW10OwogICAgICBpZiAoIXBhaWQpIHsgdGF4QW10ID0gYW5udWFsVGF4ICogZGF5c0JldHdlZW4oamFuMSwgY2xvc2UpIC8gMzY1OyB0YXhMaW5lID0gJ1Byb3BlcnR5IHRheCBjcmVkaXQgdG8gYnV5ZXIgKEphbiAxIHRvIGNsb3NpbmcsICcgKyBkYXlzQmV0d2VlbihqYW4xLCBjbG9zZSkgKyAnIGRheXMpJzsgfQogICAgICBlbHNlIHsgdGF4QW10ID0gLWFubnVhbFRheCAqIChkYXlzQmV0d2VlbihjbG9zZSwgZGVjMzEpICsgMSkgLyAzNjU7IHRheExpbmUgPSAnUHJvcGVydHkgdGF4IHJlaW1idXJzZWQgdG8geW91IGJ5IGJ1eWVyIChjbG9zaW5nIHRvIERlYyAzMSknOyB9CiAgICAgIHZhciB3aG8gPSB2YWwoJ3NjYy10aXRsZXdobycpOyB2YXIgdGl0bGVGdWxsID0gbnVtKCdzY2MtdGl0bGUnKTsgdmFyIHRpdGxlID0gd2hvID09PSAnc2VsbGVyJyA/IHRpdGxlRnVsbCA6ICh3aG8gPT09ICdzcGxpdCcgPyB0aXRsZUZ1bGwgLyAyIDogMCk7CiAgICAgIHZhciBkZWVkUHJlcCA9IG51bSgnc2NjLWRlZWQnKSwgc2V0dGxlID0gbnVtKCdzY2Mtc2V0dGxlJyksIGNvbmNlc3MgPSBudW0oJ3NjYy1jb25jZXNzJyksIHdhcnJhbnR5ID0gbnVtKCdzY2Mtd2FycmFudHknKSwgaG9hID0gbnVtKCdzY2MtaG9hJyksIG1pc2MgPSBudW0oJ3NjYy1taXNjJyk7CiAgICAgIHZhciBjb3N0cyA9IGxpc3RDICsgYnV5QyArIGR0ICsgcmVsZWFzZUZlZSArIHRheEFtdCArIHRpdGxlICsgZGVlZFByZXAgKyBzZXR0bGUgKyBjb25jZXNzICsgd2FycmFudHkgKyBob2EgKyBtaXNjOwogICAgICB2YXIgbmV0ID0gcHJpY2UgLSBwYXkxIC0gcGF5MiAtIGNvc3RzOwogICAgICB2YXIgcm93cyA9ICcnOwogICAgICByb3dzICs9IGxpbmUoJ0xpc3Rpbmcgc2lkZSBjb21taXNzaW9uJywgZm10KGxpc3RDKSk7CiAgICAgIHJvd3MgKz0gbGluZSgnQnV5ZXIgYWdlbnQgY29tcGVuc2F0aW9uJywgZm10KGJ1eUMpKTsKICAgICAgcm93cyArPSBsaW5lKCdLZW50dWNreSBkZWVkIHRyYW5zZmVyIHRheCAoJDAuNTAgcGVyICQ1MDApJywgZm10MihkdCkpOwogICAgICByb3dzICs9IGxpbmUoJ01vcnRnYWdlIHJlbGVhc2UgcmVjb3JkaW5nICgnICsgcmVsZWFzZXMgKyAnIHggJDQ2KScsIGZtdChyZWxlYXNlRmVlKSk7CiAgICAgIHJvd3MgKz0gbGluZSh0YXhMaW5lLCBmbXQodGF4QW10KSk7CiAgICAgIHJvd3MgKz0gbGluZSgnT3duZXJcJ3MgdGl0bGUgcG9saWN5ICh5b3VyIHNoYXJlKScsIGZtdCh0aXRsZSkpOwogICAgICByb3dzICs9IGxpbmUoJ0RlZWQgcHJlcGFyYXRpb24nLCBmbXQoZGVlZFByZXApKTsKICAgICAgcm93cyArPSBsaW5lKCdTZXR0bGVtZW50IC8gY2xvc2luZyBmZWUnLCBmbXQoc2V0dGxlKSk7CiAgICAgIGlmIChjb25jZXNzKSByb3dzICs9IGxpbmUoJ1NlbGxlciBjb25jZXNzaW9ucycsIGZtdChjb25jZXNzKSk7CiAgICAgIGlmICh3YXJyYW50eSkgcm93cyArPSBsaW5lKCdIb21lIHdhcnJhbnR5JywgZm10KHdhcnJhbnR5KSk7CiAgICAgIGlmIChob2EpIHJvd3MgKz0gbGluZSgnSE9BIHRyYW5zZmVyIC8gZXN0b3BwZWwnLCBmbXQoaG9hKSk7CiAgICAgIHJvd3MgKz0gbGluZSgnV2lyZSwgY291cmllciwgbWlzYy4nLCBmbXQobWlzYykpOwogICAgICByb3dzICs9IGxpbmUoJ1RvdGFsIHNlbGxlciBjbG9zaW5nIGNvc3RzJywgZm10KGNvc3RzKSwgdHJ1ZSk7CiAgICAgIHJvd3MgKz0gbGluZSgnTW9ydGdhZ2UgcGF5b2ZmcycsIGZtdChwYXkxICsgcGF5MikpOwogICAgICByb3dzICs9IGxpbmUoJ0VzdGltYXRlZCBuZXQgcHJvY2VlZHMnLCBmbXQobmV0KSwgdHJ1ZSk7CiAgICAgIHZhciBwY3QgPSBwcmljZSA/IChjb3N0cyAvIHByaWNlICogMTAwKS50b0ZpeGVkKDEpIDogJzAnOwogICAgICB2YXIgb3V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjYy1vdXQnKTsKICAgICAgb3V0LmlubmVySFRNTCA9ICc8aDMgc3R5bGU9Im1hcmdpbjowIDAgNnB4O2ZvbnQtc2l6ZToyMnB4OycgKyBJTksgKyAnIj5Fc3RpbWF0ZWQgc2VsbGVyIGNsb3NpbmcgY29zdHM6ICcgKyBmbXQoY29zdHMpICsgJzwvaDM+JyArCiAgICAgICAgJzxwIHN0eWxlPSJtYXJnaW46MCAwIDEwcHg7JyArIElOSyArICciPlRoYXQgaXMgYWJvdXQgJyArIHBjdCArICclIG9mIHRoZSBzYWxlIHByaWNlLCBiZWZvcmUgeW91ciBtb3J0Z2FnZSBwYXlvZmYuIEVzdGltYXRlZCBuZXQgcHJvY2VlZHM6IDxzdHJvbmc+JyArIGZtdChuZXQpICsgJzwvc3Ryb25nPi48L3A+JyArCiAgICAgICAgdGFibGUocm93cykgKwogICAgICAgIG5vdGUoJ0VzdGltYXRlIG9ubHkuIENvbW1pc3Npb24gaXMgd2hhdGV2ZXIgeW91ciBsaXN0aW5nIGFncmVlbWVudCBzYXlzLiBUaXRsZSBwcmVtaXVtcywgZGVlZCBwcmVwIGFuZCBzZXR0bGVtZW50IGZlZXMgdmFyeSBieSB0aXRsZSBjb21wYW55LiBQcm9wZXJ0eSB0YXggcHJvcmF0aW9uIGZvbGxvd3MgdGhlIHN0YW5kYXJkIExvdWlzdmlsbGUgY29udHJhY3Q7IHlvdXIgY2xvc2luZyBzdGF0ZW1lbnQgaXMgdGhlIGZpbmFsIHdvcmQuJykgKwogICAgICAgICc8cCBzdHlsZT0ibWFyZ2luOjE0cHggMCAwOycgKyBJTksgKyAnIj48YSBocmVmPSIvd2hhdC1pcy1teS1ob3VzZS13b3J0aC1sb3Vpc3ZpbGxlIiBzdHlsZT0iJyArIElOSyArICdmb250LXdlaWdodDo2MDA7Ij5XYW50IGEgcmVhbCBudW1iZXIgb24gdGhlIHNhbGUgcHJpY2U/IEFzayBmb3IgYSBmcmVlIENNQS48L2E+PC9wPic7CiAgICAgIG91dC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgYWRkQ2FwdHVyZShvdXQsIFBBR0VTW3BhdGhdKTsKICAgIH0pOwogIH0KCiAgLyogLS0tLS0tLS0tLS0tLS0tLSBUcmFuc2ZlciB0YXggKyByZWNvcmRpbmcgLS0tLS0tLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGJ1aWxkVFRDKHApIHsKICAgIHZhciBodG1sID0gYm94KAogICAgICBoMygnVGhlIHRyYW5zZmVyJykgKwogICAgICByb3coJ1NhbGUgcHJpY2Ugb3IgY29uc2lkZXJhdGlvbiAoJCknLCAndHRjLXByaWNlJywgJzMwMDAwMCcsICdUaGUgZGVlZCB0YXggaXMgYmFzZWQgb24gdGhlIGZ1bGwgcHJpY2UsIGluY2x1ZGluZyBhbnkgbW9ydGdhZ2UgdGhlIGJ1eWVyIGFzc3VtZXMuJykgKwogICAgICByb3coJ0RlZWQgcGFnZXMnLCAndHRjLWRlZWRwYWdlcycsICczJywgJ01vc3QgS2VudHVja3kgZGVlZHMgYXJlIDIgdG8gNCBwYWdlcy4nKSArCiAgICAgIHNlbFJvdygnSXMgdGhlIGJ1eWVyIHRha2luZyBvdXQgYSBtb3J0Z2FnZT8nLCAndHRjLWhhc210ZycsIFtbJ3llcycsICdZZXMnLCB0cnVlXSwgWydubycsICdObywgY2FzaCBwdXJjaGFzZSddXSkgKwogICAgICByb3coJ01vcnRnYWdlIHBhZ2VzJywgJ3R0Yy1tdGdwYWdlcycsICcyMCcsICdPbmx5IG1hdHRlcnMgcGFzdCAzMCBwYWdlcy4nKSArCiAgICAgIHJvdygnU2VsbGVyIG1vcnRnYWdlcyBiZWluZyBwYWlkIG9mZiBhbmQgcmVsZWFzZWQnLCAndHRjLXJlbGVhc2VzJywgJzEnLCAnRWFjaCByZWxlYXNlIG9yIGFzc2lnbm1lbnQgcmVjb3JkcyBmb3IgJDQ2LicpICsKICAgICAgYnRuKCd0dGMtZ28nLCAnQ2FsY3VsYXRlJykgKwogICAgICAnPGRpdiBpZD0idHRjLW91dCIgc3R5bGU9ImRpc3BsYXk6bm9uZTttYXJnaW4tdG9wOjE4cHg7Ij48L2Rpdj4nCiAgICApOwogICAgdmFyIGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgYy5pbm5lckhUTUwgPSBodG1sOyBwLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGMsIHApOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R0Yy1nbycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICB2YXIgcHJpY2UgPSBudW0oJ3R0Yy1wcmljZScpLCBkcCA9IE1hdGgubWF4KDEsIE1hdGgucm91bmQobnVtKCd0dGMtZGVlZHBhZ2VzJykpKSwgbXAgPSBNYXRoLm1heCgxLCBNYXRoLnJvdW5kKG51bSgndHRjLW10Z3BhZ2VzJykpKSwgcmVsID0gTWF0aC5tYXgoMCwgTWF0aC5yb3VuZChudW0oJ3R0Yy1yZWxlYXNlcycpKSk7CiAgICAgIHZhciBoYXNNID0gdmFsKCd0dGMtaGFzbXRnJykgPT09ICd5ZXMnOwogICAgICB2YXIgZHQgPSBkZWVkVGF4KHByaWNlKTsKICAgICAgdmFyIGRlZWRSZWMgPSA1MCArIE1hdGgubWF4KDAsIGRwIC0gNSkgKiAzOwogICAgICB2YXIgbXRnUmVjID0gaGFzTSA/IDgwICsgTWF0aC5tYXgoMCwgbXAgLSAzMCkgKiAzIDogMDsKICAgICAgdmFyIHJlbFJlYyA9IHJlbCAqIDQ2OwogICAgICB2YXIgc2VsbGVyID0gZHQgKyByZWxSZWMsIGJ1eWVyID0gZGVlZFJlYyArIG10Z1JlYzsKICAgICAgdmFyIHJvd3MgPSAnJzsKICAgICAgcm93cyArPSBsaW5lKCdEZWVkIHRyYW5zZmVyIHRheCwgcGFpZCBieSBzZWxsZXIgKCcgKyBNYXRoLmNlaWwocHJpY2UgLyA1MDApICsgJyB4ICQwLjUwKScsIGZtdDIoZHQpKTsKICAgICAgcm93cyArPSBsaW5lKCdNb3J0Z2FnZSByZWxlYXNlIHJlY29yZGluZywgc2VsbGVyICgnICsgcmVsICsgJyB4ICQ0NiknLCBmbXQocmVsUmVjKSk7CiAgICAgIHJvd3MgKz0gbGluZSgnU2VsbGVyIHRvdGFsJywgZm10MihzZWxsZXIpLCB0cnVlKTsKICAgICAgcm93cyArPSBsaW5lKCdEZWVkIHJlY29yZGluZywgYnV5ZXIgKCQ1MCBmaXJzdCA1IHBhZ2VzLCAkMyBlYWNoIGFmdGVyKScsIGZtdChkZWVkUmVjKSk7CiAgICAgIGlmIChoYXNNKSByb3dzICs9IGxpbmUoJ01vcnRnYWdlIHJlY29yZGluZywgYnV5ZXIgKCQ4MCBmaXJzdCAzMCBwYWdlcywgJDMgZWFjaCBhZnRlciknLCBmbXQobXRnUmVjKSk7CiAgICAgIHJvd3MgKz0gbGluZSgnQnV5ZXIgdG90YWwnLCBmbXQoYnV5ZXIpLCB0cnVlKTsKICAgICAgcm93cyArPSBsaW5lKCdFdmVyeXRoaW5nIHJlY29yZGVkIGF0IHRoZSBDb3VudHkgQ2xlcmsnLCBmbXQyKHNlbGxlciArIGJ1eWVyKSwgdHJ1ZSk7CiAgICAgIHZhciBvdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHRjLW91dCcpOwogICAgICBvdXQuaW5uZXJIVE1MID0gJzxoMyBzdHlsZT0ibWFyZ2luOjAgMCA2cHg7Zm9udC1zaXplOjIycHg7JyArIElOSyArICciPlRyYW5zZmVyIHRheDogJyArIGZtdDIoZHQpICsgJzwvaDM+JyArCiAgICAgICAgJzxwIHN0eWxlPSJtYXJnaW46MCAwIDEwcHg7JyArIElOSyArICciPktlbnR1Y2t5IGNoYXJnZXMgJDAuNTAgZm9yIGV2ZXJ5ICQ1MDAgb2YgcHJpY2UsIG9yIGFueSBmcmFjdGlvbiBvZiAkNTAwLCB3aGljaCB3b3JrcyBvdXQgdG8gMC4xJS4gVGhlIHNlbGxlciBwYXlzIGl0IGJ5IHN0YXR1dGUgdW5sZXNzIHRoZSBjb250cmFjdCBzYXlzIG90aGVyd2lzZS48L3A+JyArCiAgICAgICAgdGFibGUocm93cykgKwogICAgICAgIG5vdGUoJ0RlZWQgdGF4OiBLUlMgMTQyLjA1MC4gUmVjb3JkaW5nIGZlZXM6IEtSUyA2NC4wMTIsIHN0YXRld2lkZSBzaW5jZSBKYW51YXJ5IDEsIDIwMjAuIEV4ZW1wdCB0cmFuc2ZlcnMgaW5jbHVkZSBkZWVkcyBiZXR3ZWVuIHNwb3VzZXMsIGZyb20gcGFyZW50IHRvIGNoaWxkIGZvciBub21pbmFsIGNvbnNpZGVyYXRpb24sIGluIGZvcmVjbG9zdXJlLCB0byBvciBmcm9tIGEgdHJ1c3QgZm9yIG5vIGNvbnNpZGVyYXRpb24sIGFuZCB0byBnb3Zlcm5tZW50IGVudGl0aWVzLiBWZXJpZnkgY3VycmVudCBmZWVzIHdpdGggdGhlIEplZmZlcnNvbiBDb3VudHkgQ2xlcmtcJ3MgZGVlZCByb29tLCAoNTAyKSA1NzQtNjIyMC4nKSArCiAgICAgICAgJzxwIHN0eWxlPSJtYXJnaW46MTRweCAwIDA7JyArIElOSyArICciPjxhIGhyZWY9Ii9rZW50dWNreS1zZWxsZXItY2xvc2luZy1jb3N0LWNhbGN1bGF0b3IiIHN0eWxlPSInICsgSU5LICsgJ2ZvbnQtd2VpZ2h0OjYwMDsiPlNlbGxpbmc/IFNlZSBldmVyeSBzZWxsZXIgY2xvc2luZyBjb3N0IGluIG9uZSBwbGFjZS48L2E+PC9wPic7CiAgICAgIG91dC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgYWRkQ2FwdHVyZShvdXQsIFBBR0VTW3BhdGhdKTsKICAgIH0pOwogIH0KCiAgLyogLS0tLS0tLS0tLS0tLS0tLSBCdXllciBjbG9zaW5nIGNvc3RzIC0tLS0tLS0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBidWlsZEJDQyhwKSB7CiAgICB2YXIgaHRtbCA9IGJveCgKICAgICAgaDMoJ1RoZSBwdXJjaGFzZScpICsKICAgICAgcm93KCdQdXJjaGFzZSBwcmljZSAoJCknLCAnYmNjLXByaWNlJywgJzMwMDAwMCcpICsKICAgICAgc2VsUm93KCdMb2FuIHR5cGUnLCAnYmNjLXR5cGUnLCBbWydjb252JywgJ0NvbnZlbnRpb25hbCcsIHRydWVdLCBbJ2ZoYScsICdGSEEnXSwgWyd2YScsICdWQSddLCBbJ3VzZGEnLCAnVVNEQSddLCBbJ2Nhc2gnLCAnQ2FzaCddXSkgKwogICAgICByb3coJ0Rvd24gcGF5bWVudCAoJSknLCAnYmNjLWRvd24nLCAnNScsICdDb252ZW50aW9uYWwgZnJvbSAzJSwgRkhBIDMuNSUsIFZBIGFuZCBVU0RBIDAlLicpICsKICAgICAgcm93KCdJbnRlcmVzdCByYXRlICglKScsICdiY2MtcmF0ZScsICc2LjUnKSArCiAgICAgIHJvdygnTG9hbiB0ZXJtICh5ZWFycyknLCAnYmNjLXRlcm0nLCAnMzAnKSArCiAgICAgIGRhdGVSb3coJ0Nsb3NpbmcgZGF0ZScsICdiY2MtZGF0ZScsIGlzb1BsdXMoNDUpLCAnU2V0cyBwcmVwYWlkIGludGVyZXN0OiB5b3UgcGF5IGludGVyZXN0IGZyb20gY2xvc2luZyB0aHJvdWdoIHRoZSBlbmQgb2YgdGhhdCBtb250aC4nKSArCiAgICAgIHNlbFJvdygnVkEgb25seTogZmlyc3QgdGltZSB1c2luZyB5b3VyIFZBIGJlbmVmaXQ/JywgJ2JjYy12YWZpcnN0JywgW1sneWVzJywgJ1llcywgZmlyc3QgdXNlJywgdHJ1ZV0sIFsnbm8nLCAnTm8sIHVzZWQgYmVmb3JlJ10sIFsnZXhlbXB0JywgJ0V4ZW1wdCAoc2VydmljZS1jb25uZWN0ZWQgZGlzYWJpbGl0eSknXV0pICsKICAgICAgaDMoJ0xlbmRlciBmZWVzJykgKwogICAgICByb3coJ09yaWdpbmF0aW9uIGZlZSAoJSknLCAnYmNjLW9yaWcnLCAnMC41JywgJ01hbnkgbGVuZGVycyBjaGFyZ2UgMCUgdG8gMSUuIEFzay4nKSArCiAgICAgIHJvdygnRGlzY291bnQgcG9pbnRzICglKScsICdiY2MtcG9pbnRzJywgJzAnKSArCiAgICAgIHJvdygnVW5kZXJ3cml0aW5nLCBwcm9jZXNzaW5nLCBhZG1pbiAoJCknLCAnYmNjLWxlbmRlcmZsYXQnLCAnMTIwMCcpICsKICAgICAgcm93KCdBcHByYWlzYWwgKCQpJywgJ2JjYy1hcHByYWlzYWwnLCAnNTUwJykgKwogICAgICByb3coJ0NyZWRpdCByZXBvcnQgYW5kIGZsb29kIGNlcnRpZmljYXRpb24gKCQpJywgJ2JjYy1jcmVkaXQnLCAnODAnKSArCiAgICAgIGgzKCdUaXRsZSwgaW5zcGVjdGlvbiBhbmQgcmVjb3JkaW5nJykgKwogICAgICByb3coJ0xlbmRlclwncyB0aXRsZSBwb2xpY3kgKCQpJywgJ2JjYy1sdGl0bGUnLCAnNjAwJywgJ0VzdGltYXRlLiBSZXF1aXJlZCBieSB0aGUgbGVuZGVyOyB0aGUgc2VsbGVyIHVzdWFsbHkgY292ZXJzIHRoZSBvd25lclwncyBwb2xpY3kgaW4gTG91aXN2aWxsZS4nKSArCiAgICAgIHJvdygnVGl0bGUgc2VhcmNoLCBleGFtIGFuZCBjbG9zaW5nIGZlZSAoJCknLCAnYmNjLXNldHRsZScsICc2NTAnKSArCiAgICAgIHJvdygnSG9tZSBpbnNwZWN0aW9uICgkKScsICdiY2MtaW5zcGVjdCcsICc0NTAnLCAnUGFpZCBiZWZvcmUgY2xvc2luZywgYnV0IGl0IGlzIHBhcnQgb2YgeW91ciBjYXNoIG91dGxheS4nKSArCiAgICAgIHJvdygnU3VydmV5ICgkKScsICdiY2Mtc3VydmV5JywgJzAnLCAnUmFyZWx5IHJlcXVpcmVkIGluIEplZmZlcnNvbiBDb3VudHk7ICQ0MDAgdG8gJDYwMCBpZiBpdCBpcy4nKSArCiAgICAgIGgzKCdQcmVwYWlkcyBhbmQgZXNjcm93JykgKwogICAgICByb3coJ0FubnVhbCBob21lb3duZXJzIGluc3VyYW5jZSAoJCknLCAnYmNjLWlucycsICcxNTAwJywgJ0ZpcnN0IHllYXIgcGFpZCBhdCBjbG9zaW5nLCBwbHVzIGEgMi1tb250aCBjdXNoaW9uIGluIGVzY3Jvdy4nKSArCiAgICAgIHJvdygnQW5udWFsIHByb3BlcnR5IHRheGVzICgkKScsICdiY2MtdGF4JywgJzM0MDAnLCAnTGVuZGVycyBjb2xsZWN0IDIgdG8gNCBtb250aHMgYXQgY2xvc2luZy4gU2VlIHRoZSBwcm9wZXJ0eSB0YXggY2FsY3VsYXRvciBmb3IgeW91ciBkaXN0cmljdCByYXRlLicpICsKICAgICAgcm93KCdNb250aHMgb2YgdGF4ZXMgY29sbGVjdGVkIGF0IGNsb3NpbmcnLCAnYmNjLXRheG1vbnRocycsICczJykgKwogICAgICByb3coJ0hPQSBkdWVzIGR1ZSBhdCBjbG9zaW5nICgkKScsICdiY2MtaG9hJywgJzAnKSArCiAgICAgIHJvdygnU2VsbGVyIGNyZWRpdCB0b3dhcmQgeW91ciBjbG9zaW5nIGNvc3RzICgkKScsICdiY2MtY3JlZGl0LXNlbGxlcicsICcwJywgJ05lZ290aWF0ZWQgaW4gdGhlIGNvbnRyYWN0LiBMaW1pdHM6IGNvbnZlbnRpb25hbCAzJSB0byA5JSBieSBkb3duIHBheW1lbnQsIEZIQSA2JSwgVkEgNCUsIFVTREEgNiUuJykgKwogICAgICBidG4oJ2JjYy1nbycsICdDYWxjdWxhdGUgY2FzaCB0byBjbG9zZScpICsKICAgICAgJzxkaXYgaWQ9ImJjYy1vdXQiIHN0eWxlPSJkaXNwbGF5Om5vbmU7bWFyZ2luLXRvcDoxOHB4OyI+PC9kaXY+JwogICAgKTsKICAgIHZhciBjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IGMuaW5uZXJIVE1MID0gaHRtbDsgcC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChjLCBwKTsKICAgIHZhciB0eXBlU2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JjYy10eXBlJyk7CiAgICB0eXBlU2VsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIGQgPSB7IGNvbnY6ICc1JywgZmhhOiAnMy41JywgdmE6ICcwJywgdXNkYTogJzAnLCBjYXNoOiAnMTAwJyB9W3R5cGVTZWwudmFsdWVdOwogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmNjLWRvd24nKS52YWx1ZSA9IGQ7CiAgICB9KTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiY2MtZ28nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIHByaWNlID0gbnVtKCdiY2MtcHJpY2UnKSwgdHlwZSA9IHZhbCgnYmNjLXR5cGUnKSwgZG93blBjdCA9IG51bSgnYmNjLWRvd24nKSwgcmF0ZSA9IG51bSgnYmNjLXJhdGUnKSwgdGVybSA9IG51bSgnYmNjLXRlcm0nKSB8fCAzMDsKICAgICAgaWYgKHR5cGUgPT09ICdjYXNoJykgZG93blBjdCA9IDEwMDsKICAgICAgdmFyIGRvd24gPSBwcmljZSAqIGRvd25QY3QgLyAxMDAsIGJhc2UgPSBwcmljZSAtIGRvd247CiAgICAgIHZhciB1cGZyb250ID0gMCwgdXBmcm9udExhYmVsID0gJyc7CiAgICAgIGlmICh0eXBlID09PSAnZmhhJykgeyB1cGZyb250ID0gYmFzZSAqIDAuMDE3NTsgdXBmcm9udExhYmVsID0gJ0ZIQSB1cGZyb250IG1vcnRnYWdlIGluc3VyYW5jZSAoMS43NSUsIGZpbmFuY2VkKSc7IH0KICAgICAgaWYgKHR5cGUgPT09ICd2YScpIHsKICAgICAgICB2YXIgZmlyc3QgPSB2YWwoJ2JjYy12YWZpcnN0Jyk7IHZhciBmZiA9IDA7CiAgICAgICAgaWYgKGZpcnN0ICE9PSAnZXhlbXB0JykgeyBpZiAoZG93blBjdCA8IDUpIGZmID0gZmlyc3QgPT09ICd5ZXMnID8gMC4wMjE1IDogMC4wMzM7IGVsc2UgaWYgKGRvd25QY3QgPCAxMCkgZmYgPSAwLjAxNTsgZWxzZSBmZiA9IDAuMDEyNTsgfQogICAgICAgIHVwZnJvbnQgPSBiYXNlICogZmY7IHVwZnJvbnRMYWJlbCA9ICdWQSBmdW5kaW5nIGZlZSAoJyArIChmZiAqIDEwMCkudG9GaXhlZCgyKSArICclLCBmaW5hbmNlZCknOwogICAgICB9CiAgICAgIGlmICh0eXBlID09PSAndXNkYScpIHsgdXBmcm9udCA9IGJhc2UgKiAwLjAxOyB1cGZyb250TGFiZWwgPSAnVVNEQSBndWFyYW50ZWUgZmVlICgxJSwgZmluYW5jZWQpJzsgfQogICAgICB2YXIgbG9hbiA9IGJhc2UgKyB1cGZyb250OwogICAgICB2YXIgbGVuZGVyID0gdHlwZSA9PT0gJ2Nhc2gnID8gMCA6IChsb2FuICogbnVtKCdiY2Mtb3JpZycpIC8gMTAwICsgbG9hbiAqIG51bSgnYmNjLXBvaW50cycpIC8gMTAwICsgbnVtKCdiY2MtbGVuZGVyZmxhdCcpICsgbnVtKCdiY2MtYXBwcmFpc2FsJykgKyBudW0oJ2JjYy1jcmVkaXQnKSk7CiAgICAgIHZhciBsdGl0bGUgPSB0eXBlID09PSAnY2FzaCcgPyAwIDogbnVtKCdiY2MtbHRpdGxlJyk7CiAgICAgIHZhciBzZXR0bGUgPSBudW0oJ2JjYy1zZXR0bGUnKSwgaW5zcGVjdCA9IG51bSgnYmNjLWluc3BlY3QnKSwgc3VydmV5ID0gbnVtKCdiY2Mtc3VydmV5Jyk7CiAgICAgIHZhciByZWNEZWVkID0gNTAsIHJlY010ZyA9IHR5cGUgPT09ICdjYXNoJyA/IDAgOiA4MDsKICAgICAgdmFyIHRoaXJkUGFydHkgPSBsdGl0bGUgKyBzZXR0bGUgKyBpbnNwZWN0ICsgc3VydmV5ICsgcmVjRGVlZCArIHJlY010ZzsKICAgICAgdmFyIGNsb3NlID0gcGFyc2VEYXRlKHZhbCgnYmNjLWRhdGUnKSkgfHwgbmV3IERhdGUoKTsKICAgICAgdmFyIG1vbnRoRW5kID0gbmV3IERhdGUoY2xvc2UuZ2V0RnVsbFllYXIoKSwgY2xvc2UuZ2V0TW9udGgoKSArIDEsIDApOwogICAgICB2YXIgZGF5cyA9IGRheXNCZXR3ZWVuKGNsb3NlLCBtb250aEVuZCkgKyAxOwogICAgICB2YXIgcHJlcGFpZEludCA9IHR5cGUgPT09ICdjYXNoJyA/IDAgOiBsb2FuICogcmF0ZSAvIDEwMCAvIDM2NSAqIGRheXM7CiAgICAgIHZhciBpbnMgPSBudW0oJ2JjYy1pbnMnKSwgdGF4ID0gbnVtKCdiY2MtdGF4Jyk7CiAgICAgIHZhciBpbnNDb3N0ID0gaW5zICsgKHR5cGUgPT09ICdjYXNoJyA/IDAgOiBpbnMgLyAxMiAqIDIpOwogICAgICB2YXIgdGF4RXNjcm93ID0gdHlwZSA9PT0gJ2Nhc2gnID8gMCA6IHRheCAvIDEyICogbnVtKCdiY2MtdGF4bW9udGhzJyk7CiAgICAgIHZhciBob2EgPSBudW0oJ2JjYy1ob2EnKTsKICAgICAgdmFyIHByZXBhaWRzID0gcHJlcGFpZEludCArIGluc0Nvc3QgKyB0YXhFc2Nyb3cgKyBob2E7CiAgICAgIHZhciBjcmVkaXQgPSBudW0oJ2JjYy1jcmVkaXQtc2VsbGVyJyk7CiAgICAgIHZhciBjbG9zaW5nQ29zdHMgPSBsZW5kZXIgKyB0aGlyZFBhcnR5OwogICAgICB2YXIgY2FzaCA9IGRvd24gKyBjbG9zaW5nQ29zdHMgKyBwcmVwYWlkcyAtIGNyZWRpdDsKICAgICAgdmFyIHBpID0gdHlwZSA9PT0gJ2Nhc2gnID8gMCA6IHBtdChsb2FuLCByYXRlLCB0ZXJtKTsKICAgICAgdmFyIHJvd3MgPSAnJzsKICAgICAgcm93cyArPSBsaW5lKCdEb3duIHBheW1lbnQgKCcgKyBkb3duUGN0ICsgJyUpJywgZm10KGRvd24pKTsKICAgICAgaWYgKHR5cGUgIT09ICdjYXNoJykgewogICAgICAgIHJvd3MgKz0gbGluZSgnT3JpZ2luYXRpb24gYW5kIHBvaW50cycsIGZtdChsb2FuICogKG51bSgnYmNjLW9yaWcnKSArIG51bSgnYmNjLXBvaW50cycpKSAvIDEwMCkpOwogICAgICAgIHJvd3MgKz0gbGluZSgnVW5kZXJ3cml0aW5nLCBwcm9jZXNzaW5nLCBhZG1pbicsIGZtdChudW0oJ2JjYy1sZW5kZXJmbGF0JykpKTsKICAgICAgICByb3dzICs9IGxpbmUoJ0FwcHJhaXNhbCwgY3JlZGl0IHJlcG9ydCwgZmxvb2QgY2VydCcsIGZtdChudW0oJ2JjYy1hcHByYWlzYWwnKSArIG51bSgnYmNjLWNyZWRpdCcpKSk7CiAgICAgICAgcm93cyArPSBsaW5lKCdMZW5kZXJcJ3MgdGl0bGUgcG9saWN5JywgZm10KGx0aXRsZSkpOwogICAgICB9CiAgICAgIHJvd3MgKz0gbGluZSgnVGl0bGUgc2VhcmNoLCBleGFtIGFuZCBjbG9zaW5nIGZlZScsIGZtdChzZXR0bGUpKTsKICAgICAgcm93cyArPSBsaW5lKCdIb21lIGluc3BlY3Rpb24nLCBmbXQoaW5zcGVjdCkpOwogICAgICBpZiAoc3VydmV5KSByb3dzICs9IGxpbmUoJ1N1cnZleScsIGZtdChzdXJ2ZXkpKTsKICAgICAgcm93cyArPSBsaW5lKCdSZWNvcmRpbmc6IGRlZWQgJDUwJyArIChyZWNNdGcgPyAnICsgbW9ydGdhZ2UgJDgwJyA6ICcnKSwgZm10KHJlY0RlZWQgKyByZWNNdGcpKTsKICAgICAgcm93cyArPSBsaW5lKCdDbG9zaW5nIGNvc3RzIHN1YnRvdGFsJywgZm10KGNsb3NpbmdDb3N0cyksIHRydWUpOwogICAgICBpZiAodHlwZSAhPT0gJ2Nhc2gnKSByb3dzICs9IGxpbmUoJ1ByZXBhaWQgaW50ZXJlc3QgKCcgKyBkYXlzICsgJyBkYXlzKScsIGZtdChwcmVwYWlkSW50KSk7CiAgICAgIHJvd3MgKz0gbGluZSgnSG9tZW93bmVycyBpbnN1cmFuY2UsIGZpcnN0IHllYXInICsgKHR5cGUgIT09ICdjYXNoJyA/ICcgKyAyIG1vbnRocyBlc2Nyb3cnIDogJycpLCBmbXQoaW5zQ29zdCkpOwogICAgICBpZiAodHlwZSAhPT0gJ2Nhc2gnKSByb3dzICs9IGxpbmUoJ1Byb3BlcnR5IHRheCBlc2Nyb3cgKCcgKyBudW0oJ2JjYy10YXhtb250aHMnKSArICcgbW9udGhzKScsIGZtdCh0YXhFc2Nyb3cpKTsKICAgICAgaWYgKGhvYSkgcm93cyArPSBsaW5lKCdIT0EgZHVlcycsIGZtdChob2EpKTsKICAgICAgcm93cyArPSBsaW5lKCdQcmVwYWlkcyBhbmQgZXNjcm93IHN1YnRvdGFsJywgZm10KHByZXBhaWRzKSwgdHJ1ZSk7CiAgICAgIGlmIChjcmVkaXQpIHJvd3MgKz0gbGluZSgnU2VsbGVyIGNyZWRpdCcsIGZtdCgtY3JlZGl0KSk7CiAgICAgIHJvd3MgKz0gbGluZSgnRXN0aW1hdGVkIGNhc2ggdG8gY2xvc2UnLCBmbXQoY2FzaCksIHRydWUpOwogICAgICBpZiAodXBmcm9udCkgcm93cyArPSBsaW5lKHVwZnJvbnRMYWJlbCArICcsIGFkZGVkIHRvIHRoZSBsb2FuLCBub3QgY2FzaCcsIGZtdCh1cGZyb250KSk7CiAgICAgIGlmICh0eXBlICE9PSAnY2FzaCcpIHJvd3MgKz0gbGluZSgnTG9hbiBhbW91bnQnLCBmbXQobG9hbikpOwogICAgICBpZiAodHlwZSAhPT0gJ2Nhc2gnKSByb3dzICs9IGxpbmUoJ1ByaW5jaXBhbCBhbmQgaW50ZXJlc3QgcGVyIG1vbnRoJywgZm10KHBpKSk7CiAgICAgIHZhciBwY3QgPSBwcmljZSA/ICgoY2xvc2luZ0Nvc3RzICsgcHJlcGFpZHMpIC8gcHJpY2UgKiAxMDApLnRvRml4ZWQoMSkgOiAnMCc7CiAgICAgIHZhciBvdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmNjLW91dCcpOwogICAgICBvdXQuaW5uZXJIVE1MID0gJzxoMyBzdHlsZT0ibWFyZ2luOjAgMCA2cHg7Zm9udC1zaXplOjIycHg7JyArIElOSyArICciPkVzdGltYXRlZCBjYXNoIHRvIGNsb3NlOiAnICsgZm10KGNhc2gpICsgJzwvaDM+JyArCiAgICAgICAgJzxwIHN0eWxlPSJtYXJnaW46MCAwIDEwcHg7JyArIElOSyArICciPkNsb3NpbmcgY29zdHMgcGx1cyBwcmVwYWlkcyBjb21lIHRvIGFib3V0ICcgKyBwY3QgKyAnJSBvZiB0aGUgcHJpY2UsIG9uIHRvcCBvZiB5b3VyIGRvd24gcGF5bWVudC48L3A+JyArCiAgICAgICAgdGFibGUocm93cykgKwogICAgICAgIG5vdGUoJ0VzdGltYXRlIG9ubHkuIFlvdXIgbGVuZGVyXCdzIExvYW4gRXN0aW1hdGUsIHdoaWNoIHRoZXkgbXVzdCBnaXZlIHlvdSB3aXRoaW4gdGhyZWUgYnVzaW5lc3MgZGF5cyBvZiB5b3VyIGFwcGxpY2F0aW9uLCBpcyB0aGUgcmVhbCBudW1iZXIuIFJlY29yZGluZyBmZWVzIHBlciBLUlMgNjQuMDEyOyBWQSBmdW5kaW5nIGZlZSBwZXIgdGhlIFZBIHNjaGVkdWxlOyBGSEEgYW5kIFVTREEgdXBmcm9udCBmZWVzIHBlciBwcm9ncmFtIHJ1bGVzIGFzIG9mIFNlcHRlbWJlciAyMDI2LicpICsKICAgICAgICAnPHAgc3R5bGU9Im1hcmdpbjoxNHB4IDAgMDsnICsgSU5LICsgJyI+PGEgaHJlZj0iL2dldC1wcmUtYXBwcm92ZWQiIHN0eWxlPSInICsgSU5LICsgJ2ZvbnQtd2VpZ2h0OjYwMDsiPkdldCBwcmUtYXBwcm92ZWQgYW5kIHNlZSB5b3VyIHJlYWwgTG9hbiBFc3RpbWF0ZS48L2E+PC9wPic7CiAgICAgIG91dC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgYWRkQ2FwdHVyZShvdXQsIFBBR0VTW3BhdGhdKTsKICAgIH0pOwogIH0KCiAgLyogLS0tLS0tLS0tLS0tLS0tLSBXaG9sZXNhbGUgTUFPIC0tLS0tLS0tLS0tLS0tLS0gKi8KICB2YXIgTUFPX1RJRVJTID0geyBjb3NtZXRpYzogMjAsIG1vZGVyYXRlOiA0MCwgaGVhdnk6IDY1LCBndXQ6IDk1IH07CiAgZnVuY3Rpb24gYnVpbGRNQU8ocCkgewogICAgdmFyIGh0bWwgPSBib3goCiAgICAgIGgzKCdUaGUgcHJvcGVydHknKSArCiAgICAgIHJvdygnQWZ0ZXIgcmVwYWlyIHZhbHVlLCBBUlYgKCQpJywgJ21hby1hcnYnLCAnMjUwMDAwJywgJ1doYXQgdGhlIGhvdXNlIHNlbGxzIGZvciBmaXhlZCB1cC4gUHVsbCBzb2xkIGNvbXBzIGZyb20gdGhlIGxhc3QgNiBtb250aHMgd2l0aGluIGEgaGFsZiBtaWxlLCBzYW1lIHN0eWxlIGFuZCBzaXplLicpICsKICAgICAgcm93KCdMaXZpbmcgYXJlYSAoc3EgZnQpJywgJ21hby1zcWZ0JywgJzE0MDAnLCAnVXNlZCB3aXRoIHRoZSByZXBhaXIgdGllciBiZWxvdy4nKSArCiAgICAgIHNlbFJvdygnUmVwYWlyIHNjb3BlJywgJ21hby10aWVyJywgW1snY29zbWV0aWMnLCAnQ29zbWV0aWM6IHBhaW50LCBmbG9vcmluZywgZml4dHVyZXMgKGFib3V0ICQyMC9zZiknXSwgWydtb2RlcmF0ZScsICdNb2RlcmF0ZToga2l0Y2hlbiwgYmF0aHMsIHNvbWUgc3lzdGVtcyAoYWJvdXQgJDQwL3NmKScsIHRydWVdLCBbJ2hlYXZ5JywgJ0hlYXZ5OiByb29mLCBIVkFDLCBlbGVjdHJpY2FsIG9yIHBsdW1iaW5nIHBsdXMgZmluaXNoZXMgKGFib3V0ICQ2NS9zZiknXSwgWydndXQnLCAnRnVsbCBndXQgb3Igc3RydWN0dXJhbCAoYWJvdXQgJDk1L3NmKSddXSwgJ0xvdWlzdmlsbGUgc3RhcnRpbmcgcG9pbnRzIGFzIG9mIDIwMjYuIEdldCBhIGNvbnRyYWN0b3IgYmlkIGJlZm9yZSB5b3UgZ28gdW5kZXIgY29udHJhY3QuJykgKwogICAgICByb3coJ09yIGVudGVyIHlvdXIgb3duIHJlcGFpciBlc3RpbWF0ZSAoJCknLCAnbWFvLXJlcGFpcnMnLCAnMCcsICdMZWF2ZSAwIHRvIHVzZSB0aGUgdGllciBhYm92ZS4nKSArCiAgICAgIGgzKCdUaGUgZGVhbCcpICsKICAgICAgcm93KCdCdXllciBwYXlzIHRoaXMgcGVyY2VudCBvZiBBUlYgKCUpJywgJ21hby1wY3QnLCAnNzAnLCAnVGhlIDcwJSBydWxlLiBMb3Vpc3ZpbGxlIGNhc2ggYnV5ZXJzIG9mdGVuIGdvIDc1IHRvIDgwIG9uIGxpZ2h0IHJlaGFicyBpbiBzdHJvbmcgYXJlYXMgYW5kIDYwIHRvIDY1IG9uIGhlYXZ5IG9uZXMuJykgKwogICAgICByb3coJ1lvdXIgYXNzaWdubWVudCBmZWUgKCQpJywgJ21hby1mZWUnLCAnMTAwMDAnKSArCiAgICAgIGgzKCdDaGVjayB0aGUgZW5kIGJ1eWVyXCdzIG51bWJlcnMnKSArCiAgICAgIHJvdygnTW9udGhzIHRvIGJ1eSwgZml4IGFuZCBzZWxsJywgJ21hby1tb250aHMnLCAnNScpICsKICAgICAgcm93KCdIYXJkIG1vbmV5IHJhdGUgKCUpJywgJ21hby1yYXRlJywgJzEyJywgJ0xvdWlzdmlsbGUgaGFyZCBtb25leSBjb21tb25seSBydW5zIDEwIHRvIDEzIHBlcmNlbnQgcGx1cyAxIHRvIDMgcG9pbnRzLicpICsKICAgICAgcm93KCdQb2ludHMgb24gdGhlIGxvYW4nLCAnbWFvLXBvaW50cycsICcyJykgKwogICAgICByb3coJ01vbnRobHkgaG9sZGluZyBjb3N0cyAoJCknLCAnbWFvLWhvbGQnLCAnNDAwJywgJ1RheGVzLCBpbnN1cmFuY2UsIHV0aWxpdGllcywgbGF3bi4nKSArCiAgICAgIHJvdygnU2VsbGluZyBjb3N0cyAoJSBvZiBBUlYpJywgJ21hby1zZWxscGN0JywgJzYnLCAnQ29tbWlzc2lvbiBvbiB0aGUgcmVzYWxlLiBUaGUgS2VudHVja3kgZGVlZCB0YXggYW5kIHRpdGxlIGZlZXMgYXJlIGFkZGVkIGF1dG9tYXRpY2FsbHkuJykgKwogICAgICBidG4oJ21hby1nbycsICdDYWxjdWxhdGUgbXkgb2ZmZXInKSArCiAgICAgICc8ZGl2IGlkPSJtYW8tb3V0IiBzdHlsZT0iZGlzcGxheTpub25lO21hcmdpbi10b3A6MThweDsiPjwvZGl2PicKICAgICk7CiAgICB2YXIgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBjLmlubmVySFRNTCA9IGh0bWw7IHAucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoYywgcCk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFvLWdvJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgIHZhciBhcnYgPSBudW0oJ21hby1hcnYnKSwgc3FmdCA9IG51bSgnbWFvLXNxZnQnKSwgdGllciA9IHZhbCgnbWFvLXRpZXInKSwgY3VzdG9tID0gbnVtKCdtYW8tcmVwYWlycycpOwogICAgICB2YXIgcmVwYWlycyA9IGN1c3RvbSA+IDAgPyBjdXN0b20gOiBNYXRoLnJvdW5kKHNxZnQgKiAoTUFPX1RJRVJTW3RpZXJdIHx8IDQwKSk7CiAgICAgIHZhciBwY3QgPSBudW0oJ21hby1wY3QnKSAvIDEwMCwgZmVlID0gbnVtKCdtYW8tZmVlJyk7CiAgICAgIHZhciBtb250aHMgPSBNYXRoLm1heCgwLCBudW0oJ21hby1tb250aHMnKSksIHJhdGUgPSBudW0oJ21hby1yYXRlJyksIHBvaW50cyA9IG51bSgnbWFvLXBvaW50cycpLCBob2xkID0gbnVtKCdtYW8taG9sZCcpLCBzZWxscGN0ID0gbnVtKCdtYW8tc2VsbHBjdCcpIC8gMTAwOwogICAgICB2YXIgYnV5ZXJNYXhQdXJjaGFzZSA9IGFydiAqIHBjdDsKICAgICAgdmFyIGJ1eWVyQWxsSW4gPSBidXllck1heFB1cmNoYXNlIC0gcmVwYWlyczsKICAgICAgdmFyIG1hbyA9IGJ1eWVyQWxsSW4gLSBmZWU7CiAgICAgIHZhciByb3dzID0gJyc7CiAgICAgIHJvd3MgKz0gbGluZSgnQWZ0ZXIgcmVwYWlyIHZhbHVlJywgZm10KGFydikpOwogICAgICByb3dzICs9IGxpbmUoJ0J1eWVyIHBheXMgJyArIE1hdGgucm91bmQocGN0ICogMTAwKSArICclIG9mIEFSVicsIGZtdChidXllck1heFB1cmNoYXNlKSk7CiAgICAgIHJvd3MgKz0gbGluZSgnTWludXMgcmVwYWlycyAoJyArIChjdXN0b20gPiAwID8gJ3lvdXIgZXN0aW1hdGUnIDogdGllciArICcgdGllciwgJyArIGZtdChNQU9fVElFUlNbdGllcl0gfHwgNDApICsgJyB4ICcgKyBNYXRoLnJvdW5kKHNxZnQpICsgJyBzZicpICsgJyknLCAnLScgKyBmbXQocmVwYWlycykpOwogICAgICByb3dzICs9IGxpbmUoJ0J1eWVyXCdzIG1heGltdW0gcHVyY2hhc2UgcHJpY2UnLCBmbXQoYnV5ZXJBbGxJbiksIHRydWUpOwogICAgICByb3dzICs9IGxpbmUoJ01pbnVzIHlvdXIgYXNzaWdubWVudCBmZWUnLCAnLScgKyBmbXQoZmVlKSk7CiAgICAgIHJvd3MgKz0gbGluZSgnWW91ciBtYXhpbXVtIG9mZmVyIHRvIHRoZSBzZWxsZXInLCBmbXQobWFvKSwgdHJ1ZSk7CiAgICAgIHZhciBidXlQcmljZSA9IGJ1eWVyQWxsSW47CiAgICAgIHZhciBidXlDbG9zaW5nID0gYnV5UHJpY2UgKiAwLjAxICsgMTMwOwogICAgICB2YXIgbG9hbiA9IGJ1eVByaWNlICsgcmVwYWlyczsKICAgICAgdmFyIGludGVyZXN0ID0gbG9hbiAqIChyYXRlIC8gMTAwKSAvIDEyICogbW9udGhzOwogICAgICB2YXIgcHRzID0gbG9hbiAqIHBvaW50cyAvIDEwMDsKICAgICAgdmFyIGhvbGRpbmcgPSBob2xkICogbW9udGhzOwogICAgICB2YXIgc2VsbGluZyA9IGFydiAqIHNlbGxwY3QgKyBkZWVkVGF4KGFydikgKyAxNTAwOwogICAgICB2YXIgdG90YWxDb3N0ID0gYnV5UHJpY2UgKyByZXBhaXJzICsgYnV5Q2xvc2luZyArIGludGVyZXN0ICsgcHRzICsgaG9sZGluZyArIHNlbGxpbmc7CiAgICAgIHZhciBwcm9maXQgPSBhcnYgLSB0b3RhbENvc3Q7CiAgICAgIHZhciBtYXJnaW4gPSBhcnYgPiAwID8gcHJvZml0IC8gYXJ2IDogMDsKICAgICAgdmFyIHZlcmRpY3QsIGNvbG9yOwogICAgICBpZiAobWFyZ2luID49IDAuMTUpIHsgdmVyZGljdCA9ICdTdHJvbmcuIE1vc3QgTG91aXN2aWxsZSBjYXNoIGJ1eWVycyB3aWxsIG1vdmUgb24gYSBkZWFsIHdpdGggdGhpcyBtdWNoIHJvb20uJzsgY29sb3IgPSAnIzFmN2EzYSc7IH0KICAgICAgZWxzZSBpZiAobWFyZ2luID49IDAuMTApIHsgdmVyZGljdCA9ICdXb3JrYWJsZS4gRXhwZXJpZW5jZWQgYnV5ZXJzIHdpbGwgbG9vazsgZXhwZWN0IHRoZW0gdG8gbmVnb3RpYXRlIHlvdXIgZmVlIG9yIHRoZSBwcmljZS4nOyBjb2xvciA9ICcjOGE2ZDAwJzsgfQogICAgICBlbHNlIGlmIChtYXJnaW4gPiAwKSB7IHZlcmRpY3QgPSAnVGhpbi4gVGhlIGJ1eWVyIGlzIHdvcmtpbmcgZm9yIHZlcnkgbGl0dGxlOyBsb3dlciB5b3VyIG9mZmVyLCB0cmltIHRoZSBmZWUsIG9yIHJlLWNoZWNrIHRoZSBBUlYuJzsgY29sb3IgPSAnI2IzMjYxZSc7IH0KICAgICAgZWxzZSB7IHZlcmRpY3QgPSAnRG9lcyBub3Qgd29yay4gVGhlIGJ1eWVyIGxvc2VzIG1vbmV5IGF0IHRoaXMgcHJpY2UuJzsgY29sb3IgPSAnI2IzMjYxZSc7IH0KICAgICAgdmFyIHJvd3MyID0gJyc7CiAgICAgIHJvd3MyICs9IGxpbmUoJ0J1eWVyIHB1cmNoYXNlcyBhdCcsIGZtdChidXlQcmljZSkpOwogICAgICByb3dzMiArPSBsaW5lKCdSZXBhaXJzJywgZm10KHJlcGFpcnMpKTsKICAgICAgcm93czIgKz0gbGluZSgnQnV5aW5nIGNsb3NpbmcgY29zdHMgKGFib3V0IDElIHBsdXMgcmVjb3JkaW5nKScsIGZtdChidXlDbG9zaW5nKSk7CiAgICAgIHJvd3MyICs9IGxpbmUoJ0hhcmQgbW9uZXkgaW50ZXJlc3QgKCcgKyByYXRlICsgJyUgb24gJyArIGZtdChsb2FuKSArICcgZm9yICcgKyBtb250aHMgKyAnIG1vbnRocyknLCBmbXQoaW50ZXJlc3QpKTsKICAgICAgcm93czIgKz0gbGluZSgnUG9pbnRzICgnICsgcG9pbnRzICsgJyBvbiAnICsgZm10KGxvYW4pICsgJyknLCBmbXQocHRzKSk7CiAgICAgIHJvd3MyICs9IGxpbmUoJ0hvbGRpbmcgY29zdHMgKCcgKyBtb250aHMgKyAnIG1vbnRocyknLCBmbXQoaG9sZGluZykpOwogICAgICByb3dzMiArPSBsaW5lKCdTZWxsaW5nIGNvc3RzICgnICsgTWF0aC5yb3VuZChzZWxscGN0ICogMTAwKSArICclIGNvbW1pc3Npb24sIGRlZWQgdGF4LCB0aXRsZSknLCBmbXQoc2VsbGluZykpOwogICAgICByb3dzMiArPSBsaW5lKCdCdXllclwncyB0b3RhbCBjb3N0JywgZm10KHRvdGFsQ29zdCksIHRydWUpOwogICAgICByb3dzMiArPSBsaW5lKCdCdXllclwncyBwcm9qZWN0ZWQgcHJvZml0JywgZm10KHByb2ZpdCksIHRydWUpOwogICAgICByb3dzMiArPSBsaW5lKCdQcm9maXQgYXMgYSBzaGFyZSBvZiBBUlYnLCAobWFyZ2luICogMTAwKS50b0ZpeGVkKDEpICsgJyUnKTsKICAgICAgdmFyIG91dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYW8tb3V0Jyk7CiAgICAgIG91dC5pbm5lckhUTUwgPSAnPGgzIHN0eWxlPSJtYXJnaW46MCAwIDZweDtmb250LXNpemU6MjJweDsnICsgSU5LICsgJyI+WW91ciBtYXhpbXVtIG9mZmVyOiAnICsgZm10KG1hbykgKyAnPC9oMz4nICsKICAgICAgICAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTBweDsnICsgSU5LICsgJyI+T2ZmZXIgbGVzcyB0aGFuIHRoaXMgYW5kIHlvdXIgZmVlIGdyb3dzOyBvZmZlciBtb3JlIGFuZCB0aGUgZGVhbCBzdG9wcyB3b3JraW5nIGZvciB0aGUgYnV5ZXIgd2hvIGhhcyB0byBmdW5kIGl0LjwvcD4nICsKICAgICAgICB0YWJsZShyb3dzKSArCiAgICAgICAgJzxoMyBzdHlsZT0ibWFyZ2luOjE4cHggMCA2cHg7Zm9udC1zaXplOjIwcHg7JyArIElOSyArICciPkRvZXMgaXQgd29yayBmb3IgdGhlIGVuZCBidXllcj88L2gzPicgKwogICAgICAgICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjonICsgY29sb3IgKyAnOyI+JyArIGVzYyh2ZXJkaWN0KSArICc8L3A+JyArCiAgICAgICAgdGFibGUocm93czIpICsKICAgICAgICBub3RlKCdSZXBhaXIgdGllcnMgYXJlIExvdWlzdmlsbGUgc3RhcnRpbmcgcG9pbnRzIGZvciAyMDI2LCBub3QgYmlkcy4gU2VsbGluZyBjb3N0cyBpbmNsdWRlIHRoZSBLZW50dWNreSBkZWVkIHRyYW5zZmVyIHRheCBvZiAkMC41MCBwZXIgJDUwMCAoS1JTIDE0Mi4wNTApIGFuZCBhYm91dCAkMSw1MDAgb2YgdGl0bGUgYW5kIGNsb3NpbmcgZmVlcy4gVGhpcyBpcyBhbiBlc3RpbWF0ZSwgbm90IGFuIGFwcHJhaXNhbCBvciBsZWdhbCBhZHZpY2UuJykgKwogICAgICAgICc8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOjE2cHg7cGFkZGluZzoxNHB4IDE2cHg7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkICNlODczNGE7YmFja2dyb3VuZDojZmZmOycgKyBJTksgKyAnIj48c3Ryb25nPkdvdCBpdCB1bmRlciBjb250cmFjdD88L3N0cm9uZz4gS2VudHVja3kgbGF3IChIQiA2MiwgMjAyMykgbWFrZXMgYWR2ZXJ0aXNpbmcgYSBjb250cmFjdCB5b3UgaG9sZCB0byB0aGUgcHVibGljIGFuIGFjdCBvZiBicm9rZXJhZ2UgdGhhdCByZXF1aXJlcyBhIGxpY2Vuc2UuIFdpbm5lciBSZWFsdHkgaXMgbGljZW5zZWQgYW5kIG1hcmtldHMgd2hvbGVzYWxlIGRlYWxzIHRvIG91ciBidXllciBsaXN0IGxlZ2FsbHkuIDxhIGhyZWY9Ii9pbnRha2UtZm9ybSIgc3R5bGU9IicgKyBJTksgKyAnZm9udC13ZWlnaHQ6NjAwOyI+U2VuZCB1cyB0aGUgZGVhbDwvYT4gYW5kIGtlZXAgeW91ciBmZWUuPC9kaXY+JzsKICAgICAgb3V0LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICBhZGRDYXB0dXJlKG91dCwgUEFHRVNbcGF0aF0pOwogICAgfSk7CiAgfQoKICAvKiAtLS0tLS0tLS0tLS0tLS0tIExlYWQgY2FwdHVyZSAoQjEyIGZvcm0gLT4gUm9iJ3MgaW5ib3ggLT4gR0hMKSAtLS0tLS0tLS0tLS0tLS0tICovCiAgdmFyIFJDX0tFWSA9ICc2TGQxUjhrVUFBQUFBR0VZR3lkMVJYRmNkU0dZMDN1RjR5X3lONDBBJzsKICB2YXIgRk9STV9JRCA9ICdmM2ExNzRmYi00MzM5LTRlMmYtYTVmNS1lMzI2YTE4ZjQxMzMnOwogIGZ1bmN0aW9uIHJjVG9rZW4oKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsKICAgICAgZnVuY3Rpb24gZ28oKSB7IHRyeSB7IGdyZWNhcHRjaGEucmVhZHkoZnVuY3Rpb24gKCkgeyBncmVjYXB0Y2hhLmV4ZWN1dGUoUkNfS0VZLCB7fSkudGhlbihyZXNvbHZlLCBmdW5jdGlvbiAoKSB7IHJlc29sdmUoJycpOyB9KTsgfSk7IH0gY2F0Y2ggKGUpIHsgcmVzb2x2ZSgnJyk7IH0gfQogICAgICBpZiAod2luZG93LmdyZWNhcHRjaGEpIHJldHVybiBnbygpOwogICAgICB2YXIgcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOyBzLnNyYyA9ICdodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkuanM/cmVuZGVyPScgKyBSQ19LRVk7IHMub25sb2FkID0gZ287IHMub25lcnJvciA9IGZ1bmN0aW9uICgpIHsgcmVzb2x2ZSgnJyk7IH07IGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7CiAgICB9KTsKICB9CiAgZnVuY3Rpb24gc3VtbWFyaXplKG91dCkgewogICAgdmFyIGxpbmVzID0gW107IHZhciBoID0gb3V0LnF1ZXJ5U2VsZWN0b3IoJ2gzJyk7IGlmIChoKSBsaW5lcy5wdXNoKGgudGV4dENvbnRlbnQudHJpbSgpKTsKICAgIHZhciB0cnMgPSBvdXQucXVlcnlTZWxlY3RvckFsbCgndHInKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHJzLmxlbmd0aDsgaSsrKSB7IHZhciB0ZHMgPSB0cnNbaV0ucXVlcnlTZWxlY3RvckFsbCgndGQnKTsgaWYgKHRkcy5sZW5ndGggPj0gMikgbGluZXMucHVzaCh0ZHNbMF0udGV4dENvbnRlbnQudHJpbSgpICsgJzogJyArIHRkc1sxXS50ZXh0Q29udGVudC50cmltKCkpOyB9CiAgICByZXR1cm4gbGluZXMuam9pbignXG4nKTsKICB9CiAgZnVuY3Rpb24gaW5wKGlkLCB0eXBlLCBwaCwgYWMpIHsgcmV0dXJuICc8aW5wdXQgaWQ9IicgKyBpZCArICciIHR5cGU9IicgKyB0eXBlICsgJyIgcGxhY2Vob2xkZXI9IicgKyBwaCArICciIGF1dG9jb21wbGV0ZT0iJyArIGFjICsgJyIgc3R5bGU9ImZsZXg6MSAxIDE1MHB4O21pbi13aWR0aDowO3BhZGRpbmc6OXB4O2JvcmRlcjoxcHggc29saWQgI2JiYjtib3JkZXItcmFkaXVzOjZweDtmb250LXNpemU6MTVweDtiYWNrZ3JvdW5kOiNmZmY7JyArIElOSyArICciPic7IH0KICBmdW5jdGlvbiBhZGRDYXB0dXJlKG91dCwgY2ZnKSB7CiAgICBpZiAoIWNmZykgcmV0dXJuOwogICAgdmFyIGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1jYXAnKTsKICAgIGlmICghYm94KSB7CiAgICAgIGJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBib3guaWQgPSAnd3ItY2FwJzsKICAgICAgYm94LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnbWFyZ2luLXRvcDoxOHB4O3BhZGRpbmc6MTZweCAxOHB4O2JvcmRlcjoxcHggc29saWQgI2Q4ZDhkODtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOiNmZmY7JyArIElOSyk7CiAgICAgIGJveC5pbm5lckhUTUwgPSAnPHAgc3R5bGU9Im1hcmdpbjowIDAgNHB4O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTdweDsnICsgSU5LICsgJyI+V2FudCB0aGVzZSBudW1iZXJzIGluIHlvdXIgaW5ib3g/PC9wPicgKwogICAgICAgICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxMnB4O2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiM1NTU7Ij5XZSBlbWFpbCB5b3UgYSBjb3B5IG9mIGV4YWN0bHkgd2hhdCBpcyBhYm92ZS4gUm9iIG1heSBmb2xsb3cgdXAgcGVyc29uYWxseS4gTm8gbGlzdCwgbm8gc3BhbS48L3A+JyArCiAgICAgICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4OyI+JyArIGlucCgnd3ItY2FwLW5hbWUnLCAndGV4dCcsICdOYW1lJywgJ25hbWUnKSArIGlucCgnd3ItY2FwLWVtYWlsJywgJ2VtYWlsJywgJ0VtYWlsJywgJ2VtYWlsJykgKyBpbnAoJ3dyLWNhcC1waG9uZScsICd0ZWwnLCAnUGhvbmUgKG9wdGlvbmFsKScsICd0ZWwnKSArICc8L2Rpdj4nICsKICAgICAgICBidG4oJ3dyLWNhcC1nbycsICdFbWFpbCBtZSB0aGVzZSBudW1iZXJzJykgKwogICAgICAgICc8cCBpZD0id3ItY2FwLW1zZyIgc3R5bGU9Im1hcmdpbjo2cHggMCAwO2ZvbnQtc2l6ZToxNHB4OycgKyBJTksgKyAnIj48L3A+JzsKICAgICAgb3V0LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoYm94KTsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWNhcC1nbycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgeyBzdWJtaXRDYXB0dXJlKGNmZyk7IH0pOwogICAgfQogICAgYm94LnNldEF0dHJpYnV0ZSgnZGF0YS1zdW1tYXJ5Jywgc3VtbWFyaXplKG91dCkpOwogIH0KICBmdW5jdGlvbiBzdWJtaXRDYXB0dXJlKGNmZykgewogICAgdmFyIG5hbWUgPSB2YWwoJ3dyLWNhcC1uYW1lJykudHJpbSgpLCBlbWFpbCA9IHZhbCgnd3ItY2FwLWVtYWlsJykudHJpbSgpLCBwaG9uZSA9IHZhbCgnd3ItY2FwLXBob25lJykudHJpbSgpOwogICAgdmFyIG1zZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1jYXAtbXNnJyksIGIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItY2FwLWdvJyk7CiAgICBpZiAoIW5hbWUgfHwgIS9eW15AXHNdK0BbXkBcc10rXC5bXkBcc10rJC8udGVzdChlbWFpbCkpIHsgbXNnLnRleHRDb250ZW50ID0gJ0FkZCB5b3VyIG5hbWUgYW5kIGEgd29ya2luZyBlbWFpbCBhbmQgd2Ugd2lsbCBzZW5kIGl0IHJpZ2h0IG92ZXIuJzsgcmV0dXJuOyB9CiAgICBiLmRpc2FibGVkID0gdHJ1ZTsgYi50ZXh0Q29udGVudCA9ICdTZW5kaW5nLi4uJzsKICAgIHZhciBzdW1tYXJ5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWNhcCcpLmdldEF0dHJpYnV0ZSgnZGF0YS1zdW1tYXJ5JykgfHwgJyc7CiAgICByY1Rva2VuKCkudGhlbihmdW5jdGlvbiAodG9rZW4pIHsKICAgICAgdmFyIHAgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7CiAgICAgIHAuYXBwZW5kKCdmb3JtX2lkJywgRk9STV9JRCk7IHAuYXBwZW5kKCduYW1lLTQzJywgbmFtZSk7IHAuYXBwZW5kKCdmcm9tX2VtYWlsJywgZW1haWwpOyBwLmFwcGVuZCgndGVsLTYzJywgcGhvbmUpOwogICAgICBwLmFwcGVuZCgnY2FsY3VsYXRvci0xMScsIGNmZy5uYW1lICsgJyAoJyArIGNmZy50YWcgKyAnKScpOyBwLmFwcGVuZCgneW91ci1udW1iZXJzLTEyJywgc3VtbWFyeSk7CiAgICAgIHAuYXBwZW5kKCdwYWdlLTEzJywgT1JJR0lOICsgcGF0aCk7IHAuYXBwZW5kKCduZXh0X3BhZ2UnLCBPUklHSU4gKyBwYXRoKTsgcC5hcHBlbmQoJ3N3ZWV0X2F1dGhfdG9rZW4nLCAnJyk7IHAuYXBwZW5kKCdhamF4JywgJ3RydWUnKTsgcC5hcHBlbmQoJ2dvb2dsZV9yZWNhcHRjaGFfdG9rZW4nLCB0b2tlbik7CiAgICAgIHJldHVybiBmZXRjaCgnaHR0cHM6Ly9iMTIuaW8vY29udGFjdC9zZW5kLycsIHsgbWV0aG9kOiAnUE9TVCcsIGhlYWRlcnM6IHsgJ1gtQVBJLVZFUlNJT04nOiAnMicsICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyB9LCBib2R5OiBwLnRvU3RyaW5nKCkgfSk7CiAgICB9KS50aGVuKGZ1bmN0aW9uIChyKSB7IHJldHVybiByLmpzb24oKTsgfSkudGhlbihmdW5jdGlvbiAoaikgewogICAgICBpZiAoIWogfHwgai5lcnJvcikgdGhyb3cgbmV3IEVycm9yKCdzZW5kIGZhaWxlZCcpOwogICAgICBtc2cudGV4dENvbnRlbnQgPSAnU2VudC4gQ2hlY2sgeW91ciBpbmJveCBmb3IgYSBjb3B5IG9mIHRoZXNlIG51bWJlcnMuJzsgYi50ZXh0Q29udGVudCA9ICdTZW50JzsKICAgICAgdHJ5IHsgaWYgKHdpbmRvdy5ndGFnKSBndGFnKCdldmVudCcsICdnZW5lcmF0ZV9sZWFkJywgeyBzb3VyY2U6IGNmZy50YWcgfSk7IH0gY2F0Y2ggKGUpIHt9CiAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7IGIuZGlzYWJsZWQgPSBmYWxzZTsgYi50ZXh0Q29udGVudCA9ICdFbWFpbCBtZSB0aGVzZSBudW1iZXJzJzsgbXNnLnRleHRDb250ZW50ID0gJ1RoYXQgZGlkIG5vdCBnbyB0aHJvdWdoLiBUcnkgYWdhaW4sIG9yIGVtYWlsIHJvYkB0aGV3aW5uZXJyZWFsdHkuY29tLic7IH0pOwogIH0KCiAgLyogLS0tLS0tLS0tLS0tLS0tLSBKU09OLUxEIC0tLS0tLS0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBhZGRMZChvYmopIHsgdmFyIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsgcy50eXBlID0gJ2FwcGxpY2F0aW9uL2xkK2pzb24nOyBzLnRleHRDb250ZW50ID0gSlNPTi5zdHJpbmdpZnkob2JqKTsgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKTsgfQogIGZ1bmN0aW9uIGpzb25MZChjZmcpIHsKICAgIGFkZExkKHsgJ0Bjb250ZXh0JzogJ2h0dHBzOi8vc2NoZW1hLm9yZycsICdAdHlwZSc6ICdBcnRpY2xlJywgJ2hlYWRsaW5lJzogY2ZnLmgsICdkZXNjcmlwdGlvbic6IGNmZy5kLCAndXJsJzogT1JJR0lOICsgcGF0aCwgJ21haW5FbnRpdHlPZlBhZ2UnOiBPUklHSU4gKyBwYXRoLCAnYXV0aG9yJzogeyAnQHR5cGUnOiAnUGVyc29uJywgJ25hbWUnOiAnUm9iIEJlcmdlcm9uJyB9LCAncHVibGlzaGVyJzogeyAnQHR5cGUnOiAnT3JnYW5pemF0aW9uJywgJ25hbWUnOiAnV2lubmVyIFJlYWx0eScsICd1cmwnOiBPUklHSU4gKyAnLycgfSwgJ2RhdGVNb2RpZmllZCc6ICcyMDI2LTA5LTI3JyB9KTsKICAgIGFkZExkKHsgJ0Bjb250ZXh0JzogJ2h0dHBzOi8vc2NoZW1hLm9yZycsICdAdHlwZSc6ICdCcmVhZGNydW1iTGlzdCcsICdpdGVtTGlzdEVsZW1lbnQnOiBbIHsgJ0B0eXBlJzogJ0xpc3RJdGVtJywgJ3Bvc2l0aW9uJzogMSwgJ25hbWUnOiAnSG9tZScsICdpdGVtJzogT1JJR0lOICsgJy8nIH0sIHsgJ0B0eXBlJzogJ0xpc3RJdGVtJywgJ3Bvc2l0aW9uJzogMiwgJ25hbWUnOiAnVG9vbHMnLCAnaXRlbSc6IE9SSUdJTiArICcvdG9vbHMnIH0sIHsgJ0B0eXBlJzogJ0xpc3RJdGVtJywgJ3Bvc2l0aW9uJzogMywgJ25hbWUnOiBjZmcubmFtZSwgJ2l0ZW0nOiBPUklHSU4gKyBwYXRoIH0gXSB9KTsKICAgIHZhciBoMnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdoMicpLCBmYXFIID0gbnVsbDsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaDJzLmxlbmd0aDsgaSsrKSB7IGlmICgvZnJlcXVlbnRseSBhc2tlZC9pLnRlc3QoaDJzW2ldLnRleHRDb250ZW50KSkgeyBmYXFIID0gaDJzW2ldOyBicmVhazsgfSB9CiAgICBpZiAoZmFxSCkgewogICAgICB2YXIgcWEgPSBbXSwgZWwgPSBmYXFILm5leHRFbGVtZW50U2libGluZzsKICAgICAgd2hpbGUgKGVsKSB7IGlmIChlbC50YWdOYW1lID09PSAnSDInKSBicmVhazsgaWYgKGVsLnRhZ05hbWUgPT09ICdIMycpIHsgdmFyIGEgPSBlbC5uZXh0RWxlbWVudFNpYmxpbmc7IGlmIChhICYmIGEudGFnTmFtZSA9PT0gJ1AnKSBxYS5wdXNoKHsgJ0B0eXBlJzogJ1F1ZXN0aW9uJywgJ25hbWUnOiBlbC50ZXh0Q29udGVudC50cmltKCksICdhY2NlcHRlZEFuc3dlcic6IHsgJ0B0eXBlJzogJ0Fuc3dlcicsICd0ZXh0JzogYS50ZXh0Q29udGVudC50cmltKCkgfSB9KTsgfSBlbCA9IGVsLm5leHRFbGVtZW50U2libGluZzsgfQogICAgICBpZiAocWEubGVuZ3RoKSBhZGRMZCh7ICdAY29udGV4dCc6ICdodHRwczovL3NjaGVtYS5vcmcnLCAnQHR5cGUnOiAnRkFRUGFnZScsICdtYWluRW50aXR5JzogcWEgfSk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBydW4oKSB7CiAgICB2YXIgY2ZnID0gUEFHRVNbcGF0aF07CiAgICBpZiAoIWNmZykgcmV0dXJuOwogICAgdHJ5IHsKICAgICAgdmFyIHAgPSBmaW5kTWFya2VyKGNmZy5tYXJrZXIpOwogICAgICBpZiAocCkgY2ZnLmJ1aWxkKHApOwogICAgICBqc29uTGQoY2ZnKTsKICAgIH0gY2F0Y2ggKGUpIHt9CiAgfQogIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBydW4pOyBlbHNlIHJ1bigpOwp9KSgpOwoKLyogV1JfREVBTF9GSU5ERVJfVjEg4oCUIExvdWlzdmlsbGUgSW52ZXN0b3IgRGVhbCBGaW5kZXIgKHBhZ2Utc2NvcGVkKSAqLwooZnVuY3Rpb24oKXsKICB2YXIgUCA9ICh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgfHwgJycpLnJlcGxhY2UoL1wvKyQvLCAnJyk7CiAgaWYgKFAuaW5kZXhPZignL2xvdWlzdmlsbGUtaW52ZXN0b3ItZGVhbC1maW5kZXInKSAhPT0gMCkgcmV0dXJuOwogIHZhciBNQVJLID0gJ19fREVBTF9GSU5ERVJfTUFSS0VSX18nOwogIHZhciBJTksgPSAnY29sb3I6IzFhMWExYTsnOwogIHZhciBNVVRFRCA9ICdjb2xvcjojNTU1Oyc7CiAgdmFyIEFDQyA9ICcjZTg2MDNjJzsKICB2YXIgUiA9ICc0MDAwNiw4MDAsODgwLDEwNzAsMTM5MCwxNTkwOzQwMDA3LDEwNDAsMTEzMCwxMzMwLDE2OTAsMTk4MDs0MDAwOCw4MjAsODgwLDEwODAsMTQ0MCwxNzkwOzQwMDEwLDEwMzAsMTEyMCwxMzUwLDE3MzAsMjAxMDs0MDAxMSw4MDAsODgwLDEwNzAsMTM5MCwxNTkwOzQwMDEzLDkwMCw5MjAsMTE4MCwxNTgwLDE5NTA7NDAwMTQsMTA1MCwxMTUwLDEzOTAsMTc5MCwyMDcwOzQwMDE4LDk4MCwxMDYwLDEyOTAsMTY1MCwxOTIwOzQwMDE5LDgwMCw4ODAsMTA3MCwxMzkwLDE1OTA7NDAwMjMsMTI4MCwxNDAwLDE3MTAsMjE5MCwyNTQwOzQwMDI1LDExMzAsMTIzMCwxNDkwLDE5MDAsMjIxMDs0MDAyNiwxMzYwLDE0ODAsMTgwMCwyMzMwLDI3MDA7NDAwMjcsOTgwLDEwNjAsMTI5MCwxNjUwLDE5MjA7NDAwMzEsMTAwMCwxMDkwLDEzMjAsMTY5MCwxOTYwOzQwMDM2LDgxMCw4ODAsMTA4MCwxMzkwLDE1OTA7NDAwNDEsODkwLDk2MCwxMTcwLDE0OTAsMTc0MDs0MDA0Niw4MDAsOTAwLDEwODAsMTQwMCwxNjQwOzQwMDQ3LDg1MCw5MjAsMTEyMCwxNDMwLDE2NjA7NDAwNTAsODAwLDg4MCwxMDcwLDEzOTAsMTU5MDs0MDA1NSw5NzAsMTA1MCwxMzEwLDE2OTAsMTg2MDs0MDA1NiwxMDkwLDExODAsMTQ0MCwxODQwLDIxNDA7NDAwNTcsMTA0MCwxMTMwLDEzMzAsMTY5MCwxOTgwOzQwMDU4LDgwMCw4ODAsMTA3MCwxMzkwLDE1OTA7NDAwNTksMTQ1MCwxNTcwLDE5MTAsMjQ0MCwyODQwOzQwMDY1LDk2MCwxMDMwLDExNTAsMTQzMCwxNzEwOzQwMDY4LDEwMDAsMTA4MCwxMzAwLDE2NTAsMTkzMDs0MDA3MCw4MzAsOTAwLDExMDAsMTQyMCwxNjIwOzQwMDcxLDg1MCw5MjAsMTEyMCwxNDMwLDE2NjA7NDAwNzUsODAwLDg4MCwxMDcwLDEzOTAsMTU5MDs0MDA3Niw4NTAsOTcwLDExMDAsMTM5MCwxNjIwOzQwMDc3LDkxMCwxMDAwLDEyMjAsMTU5MCwxODIwOzQwMTA5LDk1MCwxMDMwLDEyNTAsMTU5MCwxODUwOzQwMTEwLDg3MCw5MjAsMTE0MCwxNDcwLDE3MzA7NDAxMTgsMTAwMCwxMDkwLDEzMjAsMTY5MCwxOTYwOzQwMTI5LDkyMCwxMDAwLDEyMTAsMTU1MCwxODAwOzQwMTUwLDgwMCw4ODAsMTA3MCwxMzkwLDE1OTA7NDAxNjUsODgwLDk1MCwxMTYwLDE0ODAsMTcyMDs0MDE2Niw5MjAsMTAwMCwxMjEwLDE1NTAsMTgwMDs0MDE3Nyw4MDAsODgwLDEwNzAsMTM5MCwxNTkwOzQwMjAxLDk4MCwxMDYwLDEyOTAsMTY1MCwxOTIwOzQwMjAyLDEwNjAsMTE0MCwxMzkwLDE3ODAsMjA3MDs0MDIwMyw4NDAsOTEwLDExMDAsMTQxMCwxNjMwOzQwMjA0LDEwOTAsMTE4MCwxNDMwLDE4MzAsMjEzMDs0MDIwNSwxMDIwLDExMDAsMTM0MCwxNzEwLDE5OTA7NDAyMDYsMTA2MCwxMTUwLDE0MDAsMTc5MCwyMDgwOzQwMjA3LDExOTAsMTI5MCwxNTcwLDIwMTAsMjMzMDs0MDIwOCw4MjAsODkwLDEwODAsMTM5MCwxNjEwOzQwMjA5LDg3MCw5NTAsMTE1MCwxNDcwLDE3MTA7NDAyMTAsODcwLDk1MCwxMTUwLDE0NzAsMTcxMDs0MDIxMSw4NDAsOTEwLDExMTAsMTQyMCwxNjUwOzQwMjEyLDgyMCw4OTAsMTA4MCwxMzkwLDE2MTA7NDAyMTMsODcwLDk0MCwxMTQwLDE0NjAsMTY5MDs0MDIxNCw5MDAsOTcwLDExODAsMTUxMCwxNzUwOzQwMjE1LDkzMCwxMDAwLDEyMjAsMTU2MCwxODEwOzQwMjE2LDgyMCw4OTAsMTA4MCwxMzkwLDE2MTA7NDAyMTcsMTAzMCwxMTIwLDEzNjAsMTc0MCwyMDIwOzQwMjE4LDk5MCwxMDcwLDEzMDAsMTY2MCwxOTMwOzQwMjE5LDkzMCwxMDEwLDEyMzAsMTU3MCwxODMwOzQwMjIwLDExMTAsMTIwMCwxNDYwLDE4NjAsMjE3MDs0MDIyMSw5ODAsMTA2MCwxMjkwLDE2NTAsMTkyMDs0MDIyMiwxMTMwLDEyMzAsMTQ5MCwxOTAwLDIyMTA7NDAyMjMsMTI1MCwxMzUwLDE2NDAsMjA5MCwyNDQwOzQwMjI4LDEyMjAsMTMyMCwxNjAwLDIwNDAsMjM4MDs0MDIyOSwxMTMwLDEyMzAsMTQ5MCwxOTAwLDIyMTA7NDAyMzEsOTgwLDEwNjAsMTI5MCwxNjUwLDE5MjA7NDAyMzIsOTgwLDEwNjAsMTI5MCwxNjUwLDE5MjA7NDAyMzMsOTgwLDEwNjAsMTI5MCwxNjUwLDE5MjA7NDAyNDEsMTI3MCwxMzcwLDE2NzAsMjEzMCwyNDgwOzQwMjQyLDExMjAsMTIxMCwxNDcwLDE4ODAsMjE4MDs0MDI0MywxMTMwLDEyMzAsMTQ5MCwxOTAwLDIyMTA7NDAyNDUsMTM4MCwxNDkwLDE4MDAsMjMwMCwyNjgwOzQwMjUwLDk4MCwxMDYwLDEyOTAsMTY1MCwxOTIwOzQwMjUxLDk4MCwxMDYwLDEyOTAsMTY1MCwxOTIwOzQwMjUyLDk4MCwxMDYwLDEyOTAsMTY1MCwxOTIwOzQwMjUzLDk4MCwxMDYwLDEyOTAsMTY1MCwxOTIwOzQwMjU1LDk4MCwxMDYwLDEyOTAsMTY1MCwxOTIwOzQwMjU2LDk4MCwxMDYwLDEyOTAsMTY1MCwxOTIwOzQwMjU3LDk4MCwxMDYwLDEyOTAsMTY1MCwxOTIwOzQwMjU4LDk4MCwxMDYwLDEyOTAsMTY1MCwxOTIwOzQwMjU5LDk4MCwxMDYwLDEyOTAsMTY1MCwxOTIwOzQwMjYxLDk4MCwxMDYwLDEyOTAsMTY1MCwxOTIwOzQwMjY4LDk4MCwxMDYwLDEyOTAsMTY1MCwxOTIwOzQwMjY5LDk4MCwxMDYwLDEyOTAsMTY1MCwxOTIwOzQwMjcwLDk4MCwxMDYwLDEyOTAsMTY1MCwxOTIwOzQwMjcyLDEwNTAsMTE0MCwxMzgwLDE3NjAsMjA1MDs0MDI4MCwxMDYwLDExNTAsMTQwMCwxNzkwLDIwODA7NDAyODUsOTgwLDEwNjAsMTI5MCwxNjUwLDE5MjA7NDAyOTEsMTAzMCwxMTEwLDEzNTAsMTcyMCwyMDEwOzQwMjk5LDExMjAsMTIxMCwxNDcwLDE4ODAsMjE4MDs0MDYwMSw4MDAsODgwLDEwOTAsMTQyMCwxNjkwOzQ3MTA0LDg2MCw5MzAsMTEzMCwxNDQwLDE2ODA7NDcxMDYsODEwLDg4MCwxMDcwLDEzOTAsMTU5MDs0NzEwNyw4MjAsODkwLDEwODAsMTM5MCwxNjEwOzQ3MTEwLDg0MCw5MTAsMTExMCwxNDIwLDE2NTA7NDcxMTEsODYwLDkzMCwxMTMwLDE0NDAsMTY4MDs0NzExMiw4NDAsOTEwLDExMTAsMTQyMCwxNjUwOzQ3MTE0LDk4MCwxMDcwLDEzMDAsMTY3MCwxOTQwOzQ3MTE1LDgwMCw4ODAsMTA3MCwxMzkwLDE1OTA7NDcxMTcsODAwLDg4MCwxMDcwLDEzOTAsMTU5MDs0NzExOSwxMDkwLDExODAsMTQzMCwxODMwLDIxMzA7NDcxMjAsODAwLDg4MCwxMDcwLDEzOTAsMTU5MDs0NzEyMiw4NzAsOTQwLDExNDAsMTQ2MCwxNjkwOzQ3MTI0LDEwNTAsMTE0MCwxMzgwLDE3NjAsMjA1MDs0NzEyNSw4ODAsOTEwLDExOTAsMTUyMCwxNzMwOzQ3MTI2LDgwMCw4ODAsMTA3MCwxMzkwLDE1OTA7NDcxMjksOTAwLDk3MCwxMTgwLDE1MTAsMTc1MDs0NzEzMCwxMDIwLDExMDAsMTM0MCwxNzEwLDE5OTA7NDcxMzEsOTQwLDEwMjAsMTI0MCwxNTgwLDE4NDA7NDcxMzUsODAwLDg4MCwxMDcwLDEzOTAsMTU5MDs0NzEzNiw5MDAsOTcwLDExODAsMTUxMCwxNzUwOzQ3MTM3LDgwMCw5MjAsMTA3MCwxNDMwLDE2MjA7NDcxMzgsMTAwMCwxMTQwLDE0MzAsMTg0MCwyMDYwOzQ3MTQxLDg5MCw5NzAsMTE3MCwxNTIwLDE3NTA7NDcxNDIsODIwLDg5MCwxMDgwLDEzOTAsMTYxMDs0NzE0MywxNDUwLDE1NzAsMTkxMCwyNDQwLDI4NDA7NDcxNDYsOTAwLDk4MCwxMTkwLDE1MjAsMTc3MDs0NzE0Nyw4NDAsOTAwLDExMzAsMTQ3MCwxNjIwOzQ3MTUwLDk1MCwxMDMwLDEyNTAsMTYwMCwxODYwOzQ3MTUxLDkwMCw5ODAsMTE5MCwxNTIwLDE3NzA7NDcxNjAsODAwLDg4MCwxMDcwLDEzOTAsMTU5MDs0NzE2MSwxMTUwLDEyNjAsMTUzMCwxOTcwLDIyODA7NDcxNjIsOTQwLDEwMjAsMTI0MCwxNTgwLDE4NDA7NDcxNjMsODIwLDg5MCwxMDgwLDEzOTAsMTYwMDs0NzE2NCw4MDAsODgwLDEwNzAsMTM5MCwxNTkwOzQ3MTY1LDgwMCw4ODAsMTA3MCwxMzkwLDE1OTA7NDcxNjYsMTExMCwxMjAwLDE0NjAsMTg2MCwyMTcwOzQ3MTcyLDEwMjAsMTEwMCwxMzQwLDE3MTAsMTk5MDs0NzE3Nyw4MDAsODgwLDEwNzAsMTM5MCwxNTkwOzQ3MTkwLDk0MCwxMDIwLDEyNDAsMTU4MCwxODQwOzQ3MjQzLDgwMCw4ODAsMTA3MCwxMzkwLDE2NTAnOwogIHZhciBSRU5UID0ge307CiAgUi5zcGxpdCgnOycpLmZvckVhY2goZnVuY3Rpb24ocyl7IHZhciBhID0gcy5zcGxpdCgnLCcpOyBSRU5UW2FbMF1dID0gWythWzFdLCArYVsyXSwgK2FbM10sICthWzRdLCArYVs1XV07IH0pOwogIHZhciBJRFggPSAnaHR0cHM6Ly9zZWFyY2gudGhld2lubmVycmVhbHR5LmNvbS9pZHgvcmVzdWx0cy9saXN0aW5ncz9pZHhJRD1jMjA2JzsKICB2YXIgQUNUID0gJyZhX3Byb3BTdGF0dXMlNUIlNUQ9QWN0aXZlJzsKICB2YXIgRE9PUlMgPSBbCiAgICB7dDonQ2FzaC1mbG93IHJlbnRhbHMnLCBkOidEdXBsZXhlcyB0byBmb3VycGxleGVzIHVuZGVyICQzNTBLLiBUaGUgYnJlYWQgYW5kIGJ1dHRlciBvZiBMb3Vpc3ZpbGxlIHJlbnRhbCBpbnZlc3RpbmcuJywgcTonJnB0PTImaHA9MzUwMDAwJyArIEFDVH0sCiAgICB7dDonQlJSUlIgYW5kIGZpeGVyLXVwcGVycycsIGQ6J0hvdXNlcyB1bmRlciAkMTc1SyBtYXJrZXRlZCBhcy1pcy4gQnV5LCByZWhhYiwgcmVudCwgcmVmaW5hbmNlLCByZXBlYXQuJywgcTonJnB0PTEmaHA9MTc1MDAwJmF3X3JlbWFya3NDb25jYXQ9YXMtaXMnICsgQUNUfSwKICAgIHt0OidQcmljZSBqdXN0IGdvdCBjdXQnLCBkOidIb3VzZXMgdW5kZXIgJDIwMEsgcmVkdWNlZCBpbiB0aGUgbGFzdCAzMCBkYXlzLiBTZWxsZXJzIHdobyBhbHJlYWR5IGJsaW5rZWQgb25jZS4nLCBxOicmcHQ9MSZocD0yMDAwMDAmcmVkdWNlZD0zMGQnICsgQUNUfSwKICAgIHt0OidUZW5hbnQgYWxyZWFkeSBpbiBwbGFjZScsIGQ6J0xpc3RpbmdzIHRoYXQgbWVudGlvbiBhIHRlbmFudC4gUmVudCBmcm9tIGRheSBvbmUuJywgcTonJnB0PTEmYXdfcmVtYXJrc0NvbmNhdD10ZW5hbnQnICsgQUNUfSwKICAgIHt0OidDb21tZXJjaWFsOiAyKyB1bml0cycsIGQ6J0V2ZXJ5IDItdW5pdC1hbmQtdXAgYnVpbGRpbmcgb24gdGhlIG1hcmtldCwgYW55IHByaWNlLicsIHE6JyZwdD0yJyArIEFDVH0sCiAgICB7dDonQ29taW5nIHNvb24nLCBkOidMaXN0aW5ncyBiZWZvcmUgdGhleSBoaXQgZnVsbCBtYXJrZXQuIEZpcnN0IGxvb2ssIHB1YmxpYywgbm8gbG9naW4uJywgcTonJnB0PTEmYV9wcm9wU3RhdHVzJTVCJTVEPUNvbWluZytTb29uJ30sCiAgICB7dDonTGFuZCBhbmQgbG90cycsIGQ6J0J1aWxkLCBob2xkIG9yIHN1YmRpdmlkZS4gTG90cyBhbmQgYWNyZWFnZSBhY3Jvc3MgdGhlIG1ldHJvLicsIHE6JyZwdD0zJyArIEFDVH0sCiAgICB7dDonVW5kZXIgJDE1MEsnLCBkOidUaGUgZW50cnktbGV2ZWwgcHJpY2UgYmFuZCB3aGVyZSBtb3N0IGZpcnN0IGRlYWxzIGhhcHBlbi4nLCBxOicmcHQ9MSZocD0xNTAwMDAnICsgQUNUfQogIF07CiAgZnVuY3Rpb24gZXNjKHMpeyByZXR1cm4gU3RyaW5nKHMpLnJlcGxhY2UoLyYvZywnJmFtcDsnKS5yZXBsYWNlKC88L2csJyZsdDsnKS5yZXBsYWNlKC8+L2csJyZndDsnKS5yZXBsYWNlKC8iL2csJyZxdW90OycpOyB9CiAgZnVuY3Rpb24gbW9uZXkobil7IHZhciBuZWcgPSBuIDwgMDsgbiA9IE1hdGgucm91bmQoTWF0aC5hYnMobikpOyByZXR1cm4gKG5lZyA/ICctJCcgOiAnJCcpICsgbi50b1N0cmluZygpLnJlcGxhY2UoL1xCKD89KFxkezN9KSsoPyFcZCkpL2csICcsJyk7IH0KICBmdW5jdGlvbiBwY3QobiwgZCl7IHJldHVybiAoaXNGaW5pdGUobikgPyAobioxMDApLnRvRml4ZWQoZCA9PSBudWxsID8gMSA6IGQpIDogJ+KAlCcpICsgJyUnOyB9CiAgZnVuY3Rpb24gbnVtKGlkKXsgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOyBpZiAoIWVsKSByZXR1cm4gMDsgdmFyIHYgPSBwYXJzZUZsb2F0KFN0cmluZyhlbC52YWx1ZSkucmVwbGFjZSgvW14wLTkuXC1dL2csJycpKTsgcmV0dXJuIGlzRmluaXRlKHYpID8gdiA6IDA7IH0KICBmdW5jdGlvbiBmaWVsZChsYWJlbCwgaWQsIGRlZiwgaGVscCwgd2lkZSl7CiAgICByZXR1cm4gJzxwIHN0eWxlPSJtYXJnaW46MCAwIDEycHg7JyArIElOSyArICciPjxsYWJlbCBmb3I9IicgKyBpZCArICciIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2ZvbnQtd2VpZ2h0OjYwMDttYXJnaW4tYm90dG9tOjRweDtmb250LXNpemU6MTVweDsnICsgSU5LICsgJyI+JyArIGVzYyhsYWJlbCkgKyAnPC9sYWJlbD4nICsKICAgICAgJzxpbnB1dCBpZD0iJyArIGlkICsgJyIgdHlwZT0idGV4dCIgaW5wdXRtb2RlPSJkZWNpbWFsIiB2YWx1ZT0iJyArIGVzYyhkZWYpICsgJyIgc3R5bGU9IndpZHRoOjEwMCU7bWF4LXdpZHRoOicgKyAod2lkZSA/ICczMjBweCcgOiAnMjAwcHgnKSArICc7cGFkZGluZzo4cHg7Ym9yZGVyOjFweCBzb2xpZCAjYmJiO2JvcmRlci1yYWRpdXM6NnB4O2ZvbnQtc2l6ZToxNnB4O2JhY2tncm91bmQ6I2ZmZjsnICsgSU5LICsgJyI+JyArCiAgICAgIChoZWxwID8gJzxzcGFuIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6M3B4OycgKyBNVVRFRCArICciPicgKyBlc2MoaGVscCkgKyAnPC9zcGFuPicgOiAnJykgKyAnPC9wPic7CiAgfQogIGZ1bmN0aW9uIHNlbChsYWJlbCwgaWQsIG9wdHMsIGRlZil7CiAgICB2YXIgbyA9IG9wdHMubWFwKGZ1bmN0aW9uKHgpeyByZXR1cm4gJzxvcHRpb24gdmFsdWU9IicgKyB4WzBdICsgJyInICsgKFN0cmluZyh4WzBdKSA9PT0gU3RyaW5nKGRlZikgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+JyArIGVzYyh4WzFdKSArICc8L29wdGlvbj4nOyB9KS5qb2luKCcnKTsKICAgIHJldHVybiAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTJweDsnICsgSU5LICsgJyI+PGxhYmVsIGZvcj0iJyArIGlkICsgJyIgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Zm9udC13ZWlnaHQ6NjAwO21hcmdpbi1ib3R0b206NHB4O2ZvbnQtc2l6ZToxNXB4OycgKyBJTksgKyAnIj4nICsgZXNjKGxhYmVsKSArICc8L2xhYmVsPicgKwogICAgICAnPHNlbGVjdCBpZD0iJyArIGlkICsgJyIgc3R5bGU9InBhZGRpbmc6OHB4O2JvcmRlcjoxcHggc29saWQgI2JiYjtib3JkZXItcmFkaXVzOjZweDtmb250LXNpemU6MTZweDtiYWNrZ3JvdW5kOiNmZmY7JyArIElOSyArICciPicgKyBvICsgJzwvc2VsZWN0PjwvcD4nOwogIH0KICBmdW5jdGlvbiBoKHRhZywgdHh0LCBzaXplKXsgcmV0dXJuICc8JyArIHRhZyArICcgc3R5bGU9Im1hcmdpbjowIDAgMTBweDtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOicgKyBzaXplICsgJ3B4O2xpbmUtaGVpZ2h0OjEuMzsnICsgSU5LICsgJyI+JyArIGVzYyh0eHQpICsgJzwvJyArIHRhZyArICc+JzsgfQoKICBmdW5jdGlvbiBkb29yc0h0bWwoKXsKICAgIHZhciBjYXJkcyA9IERPT1JTLm1hcChmdW5jdGlvbihkKXsKICAgICAgcmV0dXJuICc8YSBocmVmPSInICsgSURYICsgZC5xICsgJyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIHN0eWxlPSJkaXNwbGF5OmJsb2NrO3RleHQtZGVjb3JhdGlvbjpub25lO2JvcmRlcjoxcHggc29saWQgI2Q4ZDhkODtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjE2cHg7YmFja2dyb3VuZDojZmZmOycgKyBJTksgKyAnIj4nICsKICAgICAgICAnPHNwYW4gc3R5bGU9ImRpc3BsYXk6YmxvY2s7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxN3B4O21hcmdpbi1ib3R0b206NnB4OycgKyBJTksgKyAnIj4nICsgZXNjKGQudCkgKyAnIDxzcGFuIHN0eWxlPSJjb2xvcjonICsgQUNDICsgJzsiPiZyYXJyOzwvc3Bhbj48L3NwYW4+JyArCiAgICAgICAgJzxzcGFuIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNDU7JyArIE1VVEVEICsgJyI+JyArIGVzYyhkLmQpICsgJzwvc3Bhbj48L2E+JzsKICAgIH0pLmpvaW4oJycpOwogICAgcmV0dXJuICc8ZGl2IHN0eWxlPSJtYXJnaW46OHB4IDAgMjhweDsnICsgSU5LICsgJyI+JyArIGgoJ2gyJywgJ1N0ZXAgMTogUGljayBhIHN0cmF0ZWd5LiBTZWUgbGl2ZSBsaXN0aW5ncy4nLCAyNCkgKwogICAgICAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTRweDtmb250LXNpemU6MTVweDsnICsgTVVURUQgKyAnIj5FYWNoIG9uZSBvcGVucyBhIGxpdmUgTUxTIHNlYXJjaCwgdXBkYXRlZCBhbGwgZGF5LiBOb3RoaW5nIHRvIHNpZ24gdXAgZm9yLjwvcD4nICsKICAgICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZmlsbCxtaW5tYXgoMjMwcHgsMWZyKSk7Z2FwOjEycHg7Ij4nICsgY2FyZHMgKyAnPC9kaXY+PC9kaXY+JzsKICB9CgogIGZ1bmN0aW9uIGNhbGNIdG1sKCl7CiAgICByZXR1cm4gJzxkaXYgaWQ9IndyZGYtY2FsYyIgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgI2Q4ZDhkODtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjI0cHg7bWFyZ2luOjI0cHggMDtiYWNrZ3JvdW5kOiNmYWZhZmE7JyArIElOSyArICciPicgKwogICAgICBoKCdoMicsICdTdGVwIDI6IFNjb3JlIGFueSBsaXN0aW5nIGluIDMwIHNlY29uZHMuJywgMjQpICsKICAgICAgJzxwIHN0eWxlPSJtYXJnaW46MCAwIDE2cHg7Zm9udC1zaXplOjE1cHg7JyArIE1VVEVEICsgJyI+VHlwZSBpbiB0aGUgWklQIGNvZGUgYW5kIHByaWNlLiBXZSBmaWxsIGluIHRoZSByZW50IGZyb20gSFVEJnJzcXVvO3MgMjAyNiByZW50IG51bWJlcnMgZm9yIHRoYXQgZXhhY3QgWklQIGNvZGUsIHRoZW4gZ3JhZGUgdGhlIGRlYWwuIENoYW5nZSBhbnl0aGluZyB5b3Uga25vdyBiZXR0ZXIuPC9wPicgKwogICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maXQsbWlubWF4KDIyMHB4LDFmcikpO2dhcDo0cHggMjBweDsiPicgKwogICAgICAgICc8ZGl2PicgKyBoKCdoMycsICdUaGUgcHJvcGVydHknLCAxOCkgKwogICAgICAgICAgZmllbGQoJ1pJUCBjb2RlJywgJ3dyZGYtemlwJywgJzQwMjE0JywgJ0xvdWlzdmlsbGUgbWV0cm8sIEtlbnR1Y2t5IG9yIFNvdXRoZXJuIEluZGlhbmEuJykgKwogICAgICAgICAgZmllbGQoJ0Fza2luZyBvciBvZmZlciBwcmljZSAoJCknLCAnd3JkZi1wcmljZScsICcxNjUwMDAnKSArCiAgICAgICAgICBzZWwoJ1VuaXRzJywgJ3dyZGYtdW5pdHMnLCBbWzEsJzEgKHNpbmdsZSBmYW1pbHkpJ10sWzIsJzIgKGR1cGxleCknXSxbMywnMyAodHJpcGxleCknXSxbNCwnNCAoZm91cnBsZXgpJ11dLCAxKSArCiAgICAgICAgICBzZWwoJ0JlZHJvb21zIHBlciB1bml0JywgJ3dyZGYtYmVkcycsIFtbMCwnU3R1ZGlvJ10sWzEsJzEgYmVkcm9vbSddLFsyLCcyIGJlZHJvb21zJ10sWzMsJzMgYmVkcm9vbXMnXSxbNCwnNCBiZWRyb29tcyddXSwgMykgKwogICAgICAgICAgZmllbGQoJ01vbnRobHkgcmVudCBwZXIgdW5pdCAoJCknLCAnd3JkZi1yZW50JywgJycsICdGaWxsZWQgZnJvbSBIVUQgZm9yIHlvdXIgWklQLiBFZGl0IGl0IGlmIHlvdSBrbm93IHRoZSByZWFsIHJlbnQuJykgKwogICAgICAgICc8L2Rpdj4nICsKICAgICAgICAnPGRpdj4nICsgaCgnaDMnLCAnWW91ciBtb25leScsIDE4KSArCiAgICAgICAgICBmaWVsZCgnUmVoYWIgYnVkZ2V0ICgkKScsICd3cmRmLXJlaGFiJywgJzE1MDAwJykgKwogICAgICAgICAgZmllbGQoJ0FmdGVyLXJlcGFpciB2YWx1ZSwgaWYgeW91IGtub3cgaXQgKCQpJywgJ3dyZGYtYXJ2JywgJycsICdPcHRpb25hbC4gVHVybnMgb24gdGhlIEJSUlJSIGNoZWNrLicpICsKICAgICAgICAgIGZpZWxkKCdEb3duIHBheW1lbnQgKCUpJywgJ3dyZGYtZG93bicsICcyNScpICsKICAgICAgICAgIGZpZWxkKCdJbnRlcmVzdCByYXRlICglKScsICd3cmRmLXJhdGUnLCAnNy4yNScpICsKICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgJzxkaXY+JyArIGgoJ2gzJywgJ1llYXJseSBjb3N0cycsIDE4KSArCiAgICAgICAgICBmaWVsZCgnUHJvcGVydHkgdGF4ZXMgcGVyIHllYXIgKCQpJywgJ3dyZGYtdGF4JywgJycsICdTdGFydHMgYXQgYWJvdXQgMS4xJSBvZiBwcmljZS4gVXNlIHRoZSByZWFsIGJpbGwgZnJvbSB0aGUgbGlzdGluZy4nKSArCiAgICAgICAgICBmaWVsZCgnSW5zdXJhbmNlIHBlciB5ZWFyICgkKScsICd3cmRmLWlucycsICcnLCAnU3RhcnRzIGF0ICQxLDEwMCBwbHVzICQ0MDAgcGVyIGV4dHJhIHVuaXQuJykgKwogICAgICAgICAgc2VsKCdXaG8gbWFuYWdlcyBpdD8nLCAnd3JkZi1tZ210JywgW1swLjA4LCdBIHByb3BlcnR5IG1hbmFnZXIgKDglKSddLFswLCdJIGRvICgwJSknXV0sIDAuMDgpICsKICAgICAgICAgIGZpZWxkKCdWYWNhbmN5ICglKScsICd3cmRmLXZhYycsICc4JykgKwogICAgICAgICAgZmllbGQoJ1JlcGFpcnMgYW5kIGJpZy10aWNrZXQgc2F2aW5ncyAoJSknLCAnd3JkZi1yZXAnLCAnMTAnLCAnUGVyY2VudCBvZiByZW50IHNldCBhc2lkZSBmb3IgcmVwYWlycywgcm9vZnMsIGZ1cm5hY2VzLicpICsKICAgICAgICAnPC9kaXY+JyArCiAgICAgICc8L2Rpdj4nICsKICAgICAgJzxkaXYgaWQ9IndyZGYtb3V0IiBhcmlhLWxpdmU9InBvbGl0ZSIgc3R5bGU9Im1hcmdpbi10b3A6OHB4OyI+PC9kaXY+JyArCiAgICAnPC9kaXY+JzsKICB9CgogIGZ1bmN0aW9uIGdyYWRlKG0pewogICAgdmFyIHMgPSAwOwogICAgcyArPSBtLmNhcCA+PSAwLjA4ID8gMiA6IChtLmNhcCA+PSAwLjA2ID8gMSA6IDApOwogICAgcyArPSBtLmNvYyA+PSAwLjEwID8gMiA6IChtLmNvYyA+PSAwLjA2ID8gMSA6IDApOwogICAgcyArPSBtLmRzY3IgPj0gMS4yNSA/IDIgOiAobS5kc2NyID49IDEuMTAgPyAxIDogMCk7CiAgICBzICs9IG0ub25lID49IDAuMDEgPyAyIDogKG0ub25lID49IDAuMDA4ID8gMSA6IDApOwogICAgcyArPSBtLmNmID49IDEwMCAqIG0udW5pdHMgPyAxIDogMDsKICAgIHZhciBnID0gcyA+PSA4ID8gJ0EnIDogcyA+PSA2ID8gJ0InIDogcyA+PSA0ID8gJ0MnIDogcyA+PSAyID8gJ0QnIDogJ0YnOwogICAgdmFyIHNheSA9IHtBOidTdHJvbmcgZGVhbCBvbiBwYXBlci4gTW92ZSBmYXN0IGFuZCB2ZXJpZnkgdGhlIHJlbnQuJywgQjonU29saWQuIFdvcnRoIGFuIG9mZmVyIGFuZCBhIHdhbGt0aHJvdWdoLicsIEM6J1RoaW4uIFdvcmtzIG9ubHkgaWYgeW91IGNhbiBidXkgbG93ZXIgb3IgcmVudCBoaWdoZXIuJywgRDonV2VhayBhdCB0aGlzIHByaWNlLiBNYWtlIGEgbG93ZXIgb2ZmZXIgb3IgcGFzcy4nLCBGOidEb2VzIG5vdCB3b3JrIGF0IHRoaXMgcHJpY2UuJ31bZ107CiAgICByZXR1cm4ge2c6ZywgczpzLCBzYXk6c2F5fTsKICB9CgogIGZ1bmN0aW9uIGNvbXB1dGUoKXsKICAgIHZhciB6aXAgPSBTdHJpbmcoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyZGYtemlwJykudmFsdWUpLnJlcGxhY2UoL1xEL2csJycpLnNsaWNlKDAsNSk7CiAgICB2YXIgdW5pdHMgPSBudW0oJ3dyZGYtdW5pdHMnKSB8fCAxLCBiZWRzID0gbnVtKCd3cmRmLWJlZHMnKTsKICAgIHZhciBwcmljZSA9IG51bSgnd3JkZi1wcmljZScpLCByZWhhYiA9IG51bSgnd3JkZi1yZWhhYicpLCBhcnYgPSBudW0oJ3dyZGYtYXJ2Jyk7CiAgICB2YXIgZG93biA9IG51bSgnd3JkZi1kb3duJykgLyAxMDAsIHJhdGUgPSBudW0oJ3dyZGYtcmF0ZScpIC8gMTAwOwogICAgdmFyIHJlbnRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3cmRmLXJlbnQnKTsKICAgIHZhciBodWQgPSBSRU5UW3ppcF0gPyBSRU5UW3ppcF1bTWF0aC5tYXgoMCwgTWF0aC5taW4oNCwgYmVkcykpXSA6IG51bGw7CiAgICBpZiAocmVudEVsLmdldEF0dHJpYnV0ZSgnZGF0YS1hdXRvJykgIT09ICdvZmYnKSByZW50RWwudmFsdWUgPSBodWQgPyBTdHJpbmcoaHVkKSA6IHJlbnRFbC52YWx1ZTsKICAgIHZhciB0YXhFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3cmRmLXRheCcpLCBpbnNFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3cmRmLWlucycpOwogICAgaWYgKHRheEVsLmdldEF0dHJpYnV0ZSgnZGF0YS1hdXRvJykgIT09ICdvZmYnKSB0YXhFbC52YWx1ZSA9IFN0cmluZyhNYXRoLnJvdW5kKHByaWNlICogMC4wMTEpKTsKICAgIGlmIChpbnNFbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtYXV0bycpICE9PSAnb2ZmJykgaW5zRWwudmFsdWUgPSBTdHJpbmcoMTEwMCArIDQwMCAqICh1bml0cyAtIDEpKTsKICAgIHZhciByZW50ID0gbnVtKCd3cmRmLXJlbnQnKSwgdGF4ID0gbnVtKCd3cmRmLXRheCcpLCBpbnMgPSBudW0oJ3dyZGYtaW5zJyk7CiAgICB2YXIgbWdtdCA9IG51bSgnd3JkZi1tZ210JyksIHZhYyA9IG51bSgnd3JkZi12YWMnKSAvIDEwMCwgcmVwID0gbnVtKCd3cmRmLXJlcCcpIC8gMTAwOwogICAgdmFyIGdyb3NzID0gcmVudCAqIHVuaXRzICogMTI7CiAgICB2YXIgZWZmID0gZ3Jvc3MgKiAoMSAtIHZhYyk7CiAgICB2YXIgb3BleCA9IHRheCArIGlucyArIGVmZiAqIG1nbXQgKyBncm9zcyAqIHJlcDsKICAgIHZhciBub2kgPSBlZmYgLSBvcGV4OwogICAgdmFyIGFsbEluID0gcHJpY2UgKyByZWhhYjsKICAgIHZhciBsb2FuID0gcHJpY2UgKiAoMSAtIGRvd24pOwogICAgdmFyIG1yID0gcmF0ZSAvIDEyLCBuID0gMzYwOwogICAgdmFyIHBpID0gbG9hbiA+IDAgPyAobXIgPiAwID8gbG9hbiAqIG1yIC8gKDEgLSBNYXRoLnBvdygxICsgbXIsIC1uKSkgOiBsb2FuIC8gbikgOiAwOwogICAgdmFyIGNsb3NpbmcgPSBwcmljZSAqIDAuMDM7CiAgICB2YXIgY2FzaCA9IHByaWNlICogZG93biArIHJlaGFiICsgY2xvc2luZzsKICAgIHZhciBjZiA9IG5vaSAvIDEyIC0gcGk7CiAgICB2YXIgbSA9IHt1bml0czp1bml0cywgY2FwOiBhbGxJbiA+IDAgPyBub2kgLyBhbGxJbiA6IDAsIGNvYzogY2FzaCA+IDAgPyBjZiAqIDEyIC8gY2FzaCA6IDAsIGRzY3I6IHBpID4gMCA/IG5vaSAvIChwaSAqIDEyKSA6IDk5LCBvbmU6IGFsbEluID4gMCA/IHJlbnQgKiB1bml0cyAvIGFsbEluIDogMCwgY2Y6IGNmfTsKICAgIHZhciBnciA9IGdyYWRlKG0pOwogICAgdmFyIG1heE9uZSA9IE1hdGgubWF4KDAsIHJlbnQgKiB1bml0cyAvIDAuMDEgLSByZWhhYik7CiAgICB2YXIgbWF4Q2FwID0gTWF0aC5tYXgoMCwgKGVmZiAtIGlucyAtIGVmZiAqIG1nbXQgLSBncm9zcyAqIHJlcCAtIDAuMDggKiByZWhhYikgLyAoMC4wOCArIDAuMDExKSk7CiAgICB2YXIgYnJycnIgPSAnJzsKICAgIGlmIChhcnYgPiAwKSB7CiAgICAgIHZhciByZWZpID0gYXJ2ICogMC43NTsKICAgICAgdmFyIGxlZnQgPSBjYXNoIC0gKHJlZmkgLSBsb2FuKSArIGFydiAqIDAuMDI7CiAgICAgIGJycnJyID0gJzxwIHN0eWxlPSJtYXJnaW46MTJweCAwIDA7Zm9udC1zaXplOjE1cHg7JyArIElOSyArICciPjxzdHJvbmcgc3R5bGU9IicgKyBJTksgKyAnIj5CUlJSUiBjaGVjazo8L3N0cm9uZz4gYSA3NSUgY2FzaC1vdXQgcmVmaW5hbmNlIG9uIGEgJyArIG1vbmV5KGFydikgKyAnIGFwcHJhaXNhbCBpcyBhYm91dCAnICsgbW9uZXkocmVmaSkgKyAnLiBBZnRlciBwYXlpbmcgb2ZmIHlvdXIgcHVyY2hhc2UgbG9hbiBhbmQgYWJvdXQgMiUgaW4gcmVmaW5hbmNlIGNvc3RzLCB5b3Ugd291bGQgbGVhdmUgYWJvdXQgJyArIChsZWZ0IDw9IDAgPyAnJDAgaW4gdGhlIGRlYWwgYW5kIHB1bGwgb3V0ICcgKyBtb25leSgtbGVmdCkgOiBtb25leShsZWZ0KSArICcgaW4gdGhlIGRlYWwnKSArICcuPC9wPic7CiAgICB9CiAgICB2YXIgZ2NvbCA9IHtBOicjMWQ3YTQ2JywgQjonIzJlN2QzMicsIEM6JyNhNjZhMDAnLCBEOicjYjQ0NDFkJywgRjonI2EzMzQxYyd9W2dyLmddOwogICAgZnVuY3Rpb24gc3RhdChsYWJlbCwgdmFsLCBzdWIpeyByZXR1cm4gJzxkaXYgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgI2UzZTNlMztib3JkZXItcmFkaXVzOjZweDtwYWRkaW5nOjEwcHggMTJweDtiYWNrZ3JvdW5kOiNmZmY7JyArIElOSyArICciPjxzcGFuIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxMnB4O2xldHRlci1zcGFjaW5nOi4wNGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsnICsgTVVURUQgKyAnIj4nICsgbGFiZWwgKyAnPC9zcGFuPjxzcGFuIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXM7JyArIElOSyArICciPicgKyB2YWwgKyAnPC9zcGFuPicgKyAoc3ViID8gJzxzcGFuIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxMnB4OycgKyBNVVRFRCArICciPicgKyBzdWIgKyAnPC9zcGFuPicgOiAnJykgKyAnPC9kaXY+JzsgfQogICAgdmFyIG91dCA9ICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjE2cHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO21hcmdpbjo4cHggMCAxNHB4OycgKyBJTksgKyAnIj4nICsKICAgICAgJzxzcGFuIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazttaW4td2lkdGg6NjRweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6NDBweDtmb250LXdlaWdodDo4MDA7bGluZS1oZWlnaHQ6NjRweDtib3JkZXItcmFkaXVzOjhweDtjb2xvcjojZmZmO2JhY2tncm91bmQ6JyArIGdjb2wgKyAnOyI+JyArIGdyLmcgKyAnPC9zcGFuPicgKwogICAgICAnPHNwYW4gc3R5bGU9ImZsZXg6MTttaW4td2lkdGg6MjAwcHg7Zm9udC1zaXplOjE3cHg7JyArIElOSyArICciPjxzdHJvbmcgc3R5bGU9IicgKyBJTksgKyAnIj5EZWFsIGdyYWRlICcgKyBnci5nICsgJyAoJyArIGdyLnMgKyAnIG9mIDkgcG9pbnRzKS48L3N0cm9uZz4gJyArIGVzYyhnci5zYXkpICsgJzwvc3Bhbj48L2Rpdj4nICsKICAgICAgKGh1ZCA/ICcnIDogJzxwIHN0eWxlPSJtYXJnaW46MCAwIDEwcHg7Zm9udC1zaXplOjE0cHg7Y29sb3I6I2EzMzQxYzsiPldlIGRvbiZyc3F1bzt0IGhhdmUgSFVEIHJlbnQgZGF0YSBmb3IgdGhhdCBaSVAgY29kZS4gVHlwZSBhIHJlbnQgaW4gYnkgaGFuZC48L3A+JykgKwogICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLG1pbm1heCgxNTBweCwxZnIpKTtnYXA6OHB4OyI+JyArCiAgICAgICAgc3RhdCgnQ2FzaCBmbG93JywgbW9uZXkoY2YpICsgJy9tbycsICdhZnRlciBtb3J0Z2FnZSBhbmQgY29zdHMnKSArCiAgICAgICAgc3RhdCgnQ2FwIHJhdGUnLCBwY3QobS5jYXApLCAnb24gcHJpY2UgKyByZWhhYicpICsKICAgICAgICBzdGF0KCdDYXNoLW9uLWNhc2gnLCBwY3QobS5jb2MpLCAnb24gJyArIG1vbmV5KGNhc2gpICsgJyBvdXQgb2YgcG9ja2V0JykgKwogICAgICAgIHN0YXQoJ0RlYnQgY292ZXJhZ2UnLCBtLmRzY3IgPj0gOTkgPyAnTm8gbG9hbicgOiBtLmRzY3IudG9GaXhlZCgyKSwgJ2xlbmRlcnMgd2FudCAxLjIwKycpICsKICAgICAgICBzdGF0KCcxJSBydWxlJywgcGN0KG0ub25lLCAyKSwgbS5vbmUgPj0gMC4wMSA/ICdwYXNzZXMnIDogJ21pc3NlcycpICsKICAgICAgICBzdGF0KCdOZXQgb3BlcmF0aW5nIGluY29tZScsIG1vbmV5KG5vaSkgKyAnL3lyJywgJ2JlZm9yZSB0aGUgbW9ydGdhZ2UnKSArCiAgICAgICc8L2Rpdj4nICsKICAgICAgJzxwIHN0eWxlPSJtYXJnaW46MTRweCAwIDA7Zm9udC1zaXplOjE1cHg7JyArIElOSyArICciPjxzdHJvbmcgc3R5bGU9IicgKyBJTksgKyAnIj5XaGF0IHRvIG9mZmVyOjwvc3Ryb25nPiB0byBwYXNzIHRoZSAxJSBydWxlLCBwYXkgbm8gbW9yZSB0aGFuIGFib3V0ICcgKyBtb25leShtYXhPbmUpICsgJy4gVG8gaGl0IGFuIDglIGNhcCByYXRlLCBhYm91dCAnICsgbW9uZXkobWF4Q2FwKSArICcuPC9wPicgKyBicnJyciArCiAgICAgICc8cCBzdHlsZT0ibWFyZ2luOjE0cHggMCAwO2ZvbnQtc2l6ZToxM3B4OycgKyBNVVRFRCArICciPlJlbnQgc3RhcnRzIGZyb20gSFVEJnJzcXVvO3MgZmlzY2FsIHllYXIgMjAyNiBTbWFsbCBBcmVhIEZhaXIgTWFya2V0IFJlbnRzIGZvciBaSVAgJyArIGVzYyh6aXAgfHwgJ+KAlCcpICsgKGh1ZCA/ICcgKCcgKyBtb25leShodWQpICsgJyBmb3IgdGhpcyBiZWRyb29tIGNvdW50KScgOiAnJykgKyAnLiBIVUQmcnNxdW87cyBmaWd1cmUgaW5jbHVkZXMgdXRpbGl0aWVzLCBzbyBpZiB5b3VyIHRlbmFudHMgcGF5IHRoZWlyIG93biwgcmVhbCByZW50IGlzIG9mdGVuIGEgYml0IGxvd2VyLiBDbG9zaW5nIGNvc3RzIGFyZSBlc3RpbWF0ZWQgYXQgMyUgb2YgcHJpY2UuIFRoaXMgaXMgYSBxdWljayBzY3JlZW4sIG5vdCBhbiBhcHByYWlzYWwgb3IgZmluYW5jaWFsIGFkdmljZS4gSGF2ZSBhIFdpbm5lciBhZ2VudCBwdWxsIHJlYWwgY29tcHMgYmVmb3JlIHlvdSBvZmZlci48L3A+JzsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3cmRmLW91dCcpLmlubmVySFRNTCA9IG91dDsKICB9CgogIGZ1bmN0aW9uIG1vcmVIdG1sKCl7CiAgICBmdW5jdGlvbiBhKGhyZWYsIHQpeyByZXR1cm4gJzxhIGhyZWY9IicgKyBocmVmICsgJyIgc3R5bGU9ImNvbG9yOicgKyBBQ0MgKyAnO2ZvbnQtd2VpZ2h0OjYwMDsiPicgKyBlc2ModCkgKyAnPC9hPic7IH0KICAgIHJldHVybiAnPGRpdiBzdHlsZT0ibWFyZ2luOjhweCAwIDI0cHg7JyArIElOSyArICciPicgKyBoKCdoMicsICdTdGVwIDM6IEdldCB0aGUgZGVhbHMgdGhhdCBuZXZlciBoaXQgYSBzZWFyY2guJywgMjQpICsKICAgICAgJzxwIHN0eWxlPSJtYXJnaW46MCAwIDEwcHg7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MS42OycgKyBJTksgKyAnIj48c3Ryb25nIHN0eWxlPSInICsgSU5LICsgJyI+T2ZmLW1hcmtldCBkZWFscy48L3N0cm9uZz4gJyArIGEoJ2h0dHBzOi8vb2ZmbWFya2V0LmRlYWxzJywgJ09mZk1hcmtldC5kZWFscycpICsgJyBpcyBvdXIgcHJpdmF0ZSBtYXJrZXRwbGFjZSB3aXRoIDcwLDAwMCsgYnV5ZXJzLiBFdmVyeSBkZWFsIGlzIHJldmlld2VkIGJ5IGEgbGljZW5zZWQgUmVhbHRvciBiZWZvcmUgaXQgcG9zdHMuPC9wPicgKwogICAgICAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTBweDtmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoxLjY7JyArIElOSyArICciPjxzdHJvbmcgc3R5bGU9IicgKyBJTksgKyAnIj5Sb2ImcnNxdW87cyBUb3AgRml2ZSwgZXZlcnkgbW9ybmluZy48L3N0cm9uZz4gVGhlIGZpdmUgYmVzdCBkZWFscyBhbmQgZml2ZSBiZXN0IGxvd2JhbGwgdGFyZ2V0cyBvbiB0aGUgTUxTLCByZXNpZGVudGlhbCBhbmQgY29tbWVyY2lhbCwgd2l0aCB0aGUgcHJpY2UgdGhhdCBtYWtlcyBzZW5zZS4gRW1haWwgdGhlIHdvcmQgRklWRSB0byByb2JAdGhld2lubmVycmVhbHR5LmNvbS48L3A+JyArCiAgICAgICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxMHB4O2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjEuNjsnICsgSU5LICsgJyI+PHN0cm9uZyBzdHlsZT0iJyArIElOSyArICciPlRlbGwgdXMgeW91ciBidXkgYm94IG9uY2UuPC9zdHJvbmc+ICcgKyBhKCcvYnV5LWJveC1zaWdudXAnLCAnU2V0IHlvdXIgYnV5IGJveCcpICsgJyBhbmQgbmV3IG1hdGNoZXMgY29tZSB0byB5b3UuPC9wPicgKwogICAgICAnPHAgc3R5bGU9Im1hcmdpbjowO2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjEuNjsnICsgSU5LICsgJyI+PHN0cm9uZyBzdHlsZT0iJyArIElOSyArICciPkdvIGRlZXBlcjo8L3N0cm9uZz4gJyArIGEoJy9icnJyci1jYWxjdWxhdG9yJywgJ0JSUlJSIGNhbGN1bGF0b3InKSArICcgJm1pZGRvdDsgJyArIGEoJy9yZWhhYi1jb3N0LWVzdGltYXRvcicsICdSZWhhYiBjb3N0IGVzdGltYXRvcicpICsgJyAmbWlkZG90OyAnICsgYSgnL2hvdXNlLWhhY2tpbmctY2FsY3VsYXRvcicsICdIb3VzZSBoYWNraW5nIGNhbGN1bGF0b3InKSArICcgJm1pZGRvdDsgJyArIGEoJy90b29scycsICdBbGwgZnJlZSB0b29scycpICsgJzwvcD48L2Rpdj4nOwogIH0KCiAgZnVuY3Rpb24gc2NoZW1hKCl7CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyZGYtbGQnKSkgcmV0dXJuOwogICAgdmFyIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsgcy50eXBlID0gJ2FwcGxpY2F0aW9uL2xkK2pzb24nOyBzLmlkID0gJ3dyZGYtbGQnOwogICAgcy50ZXh0ID0gSlNPTi5zdHJpbmdpZnkoeydAY29udGV4dCc6J2h0dHBzOi8vc2NoZW1hLm9yZycsJ0B0eXBlJzonV2ViQXBwbGljYXRpb24nLCduYW1lJzonTG91aXN2aWxsZSBJbnZlc3RvciBEZWFsIEZpbmRlcicsJ3VybCc6J2h0dHBzOi8vd3d3LnRoZXdpbm5lcnJlYWx0eS5jb20vbG91aXN2aWxsZS1pbnZlc3Rvci1kZWFsLWZpbmRlcicsJ2FwcGxpY2F0aW9uQ2F0ZWdvcnknOidGaW5hbmNlQXBwbGljYXRpb24nLCdvcGVyYXRpbmdTeXN0ZW0nOidBbnknLCdvZmZlcnMnOnsnQHR5cGUnOidPZmZlcicsJ3ByaWNlJzonMCcsJ3ByaWNlQ3VycmVuY3knOidVU0QnfSwnZGVzY3JpcHRpb24nOidGcmVlIHRvb2wgdGhhdCBncmFkZXMgTG91aXN2aWxsZSByZW50YWwgcHJvcGVydHkgZGVhbHMgdXNpbmcgSFVEIDIwMjYgcmVudHMgYnkgWklQIGNvZGU6IGNhc2ggZmxvdywgY2FwIHJhdGUsIGNhc2gtb24tY2FzaCwgZGVidCBjb3ZlcmFnZSwgMSUgcnVsZSBhbmQgQlJSUlIuJywncHJvdmlkZXInOnsnQHR5cGUnOidSZWFsRXN0YXRlQWdlbnQnLCduYW1lJzonV2lubmVyIFJlYWx0eScsJ3VybCc6J2h0dHBzOi8vd3d3LnRoZXdpbm5lcnJlYWx0eS5jb20nfX0pOwogICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKTsKICB9CgogIGZ1bmN0aW9uIG1vdW50KCl7CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyZGYtcm9vdCcpKSByZXR1cm4gdHJ1ZTsKICAgIHZhciBob3N0ID0gbnVsbDsKICAgIHZhciBlbHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwLCBkaXYnKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxzLmxlbmd0aDsgaSsrKSB7IHZhciBlID0gZWxzW2ldOyBpZiAoZS5jaGlsZHJlbi5sZW5ndGggPT09IDAgJiYgZS50ZXh0Q29udGVudC50cmltKCkgPT09IE1BUkspIHsgaG9zdCA9IGU7IGJyZWFrOyB9IH0KICAgIGlmICghaG9zdCkgeyBmb3IgKHZhciBqID0gMDsgaiA8IGVscy5sZW5ndGg7IGorKykgeyBpZiAoZWxzW2pdLnRhZ05hbWUgPT09ICdQJyAmJiBlbHNbal0udGV4dENvbnRlbnQuaW5kZXhPZihNQVJLKSAhPT0gLTEpIHsgaG9zdCA9IGVsc1tqXTsgYnJlYWs7IH0gfSB9CiAgICBpZiAoIWhvc3QpIHJldHVybiBmYWxzZTsKICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IHJvb3QuaWQgPSAnd3JkZi1yb290Jzsgcm9vdC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgSU5LICsgJ2ZvbnQtZmFtaWx5OmluaGVyaXQ7Jyk7CiAgICByb290LmlubmVySFRNTCA9IGRvb3JzSHRtbCgpICsgY2FsY0h0bWwoKSArIG1vcmVIdG1sKCk7CiAgICBob3N0LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHJvb3QsIGhvc3QpOwogICAgaWYgKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoMScpKSB7CiAgICAgIHZhciB0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNiLWl0ZW0tdmlld19fdGl0bGUnKTsKICAgICAgdmFyIGgxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaDEnKTsgaDEudGV4dENvbnRlbnQgPSAnTG91aXN2aWxsZSBJbnZlc3RvciBEZWFsIEZpbmRlcic7CiAgICAgIGgxLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAncG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O2hlaWdodDoxcHg7b3ZlcmZsb3c6aGlkZGVuO2NsaXA6cmVjdCgwIDAgMCAwKTsnKTsKICAgICAgKHQgJiYgdC5wYXJlbnROb2RlID8gdC5wYXJlbnROb2RlIDogcm9vdC5wYXJlbnROb2RlKS5pbnNlcnRCZWZvcmUoaDEsIHQgfHwgcm9vdCk7CiAgICB9CiAgICBbJ3dyZGYtcmVudCcsJ3dyZGYtdGF4Jywnd3JkZi1pbnMnXS5mb3JFYWNoKGZ1bmN0aW9uKGlkKXsgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOyBlbC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uKCl7IGVsLnNldEF0dHJpYnV0ZSgnZGF0YS1hdXRvJywnb2ZmJyk7IH0pOyB9KTsKICAgIFsnd3JkZi16aXAnLCd3cmRmLWJlZHMnXS5mb3JFYWNoKGZ1bmN0aW9uKGlkKXsgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOyB2YXIgZiA9IGZ1bmN0aW9uKCl7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3cmRmLXJlbnQnKS5zZXRBdHRyaWJ1dGUoJ2RhdGEtYXV0bycsJ29uJyk7IH07IGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZik7IGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGYpOyB9KTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3cmRmLXByaWNlJykuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbigpeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3JkZi10YXgnKS5zZXRBdHRyaWJ1dGUoJ2RhdGEtYXV0bycsJ29uJyk7IH0pOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyZGYtdW5pdHMnKS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbigpeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3JkZi1pbnMnKS5zZXRBdHRyaWJ1dGUoJ2RhdGEtYXV0bycsJ29uJyk7IH0pOwogICAgdmFyIGNhbGMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3JkZi1jYWxjJyk7CiAgICBjYWxjLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgY29tcHV0ZSk7IGNhbGMuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgY29tcHV0ZSk7CiAgICBjb21wdXRlKCk7IHNjaGVtYSgpOwogICAgcmV0dXJuIHRydWU7CiAgfQogIGZ1bmN0aW9uIHRyeU1vdW50KGspeyBpZiAobW91bnQoKSB8fCBrID4gMjApIHJldHVybjsgc2V0VGltZW91dChmdW5jdGlvbigpeyB0cnlNb3VudChrICsgMSk7IH0sIDQwMCk7IH0KICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24oKXsgdHJ5TW91bnQoMCk7IH0pOyBlbHNlIHRyeU1vdW50KDApOwp9KSgpOwoKLyogc2F2ZWQgdmlhIGVkaXRvciAyMDI2LTEwLTEwICovCjwvc2NyaXB0Pg==|END

WRA|i285889|6|PHNjcmlwdD4KKGZ1bmN0aW9uICgpIHsKIHZhciBwYXRoID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1wvJC8sICcnKSB8fCAnLyc7CiB2YXIgQ09ORklHID0gewogIi9pbnZlc3RtZW50LXByb3BlcnR5LWFuYWx5emVyIjogewogaGVhZGxpbmU6ICJJbnZlc3RtZW50IFByb3BlcnR5IEFuYWx5emVyOiBDYXAgUmF0ZSAmIENhc2gtb24tQ2FzaCBDYWxjdWxhdG9yIiwKIGRlc2NyaXB0aW9uOiAiRnJlZSBpbnZlc3RtZW50IHByb3BlcnR5IGNhbGN1bGF0b3IgZm9yIExvdWlzdmlsbGUgcmVudGFscy4gSW5zdGFudGx5IGVzdGltYXRlIGNhcCByYXRlLCBjYXNoLW9uLWNhc2ggcmV0dXJuLCBOT0ksIGFuZCBtb250aGx5IGNhc2ggZmxvdyBiZWZvcmUgeW91IGJ1eS4iLAogYnJlYWRjcnVtYk5hbWU6ICJJbnZlc3RtZW50IFByb3BlcnR5IEFuYWx5emVyIgogfSwKICIvc2VsbGVyLW5ldC1wcm9jZWVkcy1jYWxjdWxhdG9yIjogewogaGVhZGxpbmU6ICJTZWxsZXIgTmV0IFByb2NlZWRzIENhbGN1bGF0b3I6IFdoYXQgWW91J2xsIFdhbGsgQXdheSBXaXRoIiwKIGRlc2NyaXB0aW9uOiAiRnJlZSBzZWxsZXIgbmV0IHByb2NlZWRzIGNhbGN1bGF0b3IgZm9yIEtlbnR1Y2t5IGhvbWUgc2VsbGVycy4gRXN0aW1hdGUgeW91ciBwYXlvdXQgYWZ0ZXIgbW9ydGdhZ2UgcGF5b2ZmLCBjb21taXNzaW9uLCB0cmFuc2ZlciB0YXgsIGFuZCBjbG9zaW5nIGNvc3RzLiIsCiBicmVhZGNydW1iTmFtZTogIlNlbGxlciBOZXQgUHJvY2VlZHMgQ2FsY3VsYXRvciIKIH0sCiAiL21vbnRobHktbW9ydGdhZ2UtcGF5bWVudC1jYWxjdWxhdG9yLWtlbnR1Y2t5IjogewogaGVhZGxpbmU6ICJNb250aGx5IE1vcnRnYWdlIFBheW1lbnQgQ2FsY3VsYXRvciIsCiBkZXNjcmlwdGlvbjogIkZyZWUgS2VudHVja3kgbW9ydGdhZ2UgcGF5bWVudCBjYWxjdWxhdG9yLiBFc3RpbWF0ZSBwcmluY2lwYWwsIGludGVyZXN0LCB0YXhlcywgaW5zdXJhbmNlLCBQTUksIGFuZCBIT0EgaW4gb25lIHRvdGFsIG1vbnRobHkgcGF5bWVudC4iLAogYnJlYWRjcnVtYk5hbWU6ICJNb250aGx5IFBheW1lbnQgQ2FsY3VsYXRvciIKIH0sCiAiL3ZhLWxvYW4tY2FsY3VsYXRvci1rZW50dWNreSI6IHsKIGhlYWRsaW5lOiAiVkEgTG9hbiBDYWxjdWxhdG9yOiAkMC1Eb3duIFBheW1lbnQgRXN0aW1hdG9yIiwKIGRlc2NyaXB0aW9uOiAiRnJlZSBWQSBsb2FuIGNhbGN1bGF0b3IgZm9yIEtlbnR1Y2t5IHZldGVyYW5zIGFuZCBzZXJ2aWNlIG1lbWJlcnMuIEVzdGltYXRlIHlvdXIgVkEgZnVuZGluZyBmZWUgYW5kIG1vbnRobHkgcGF5bWVudCwgYW5kIGNvbXBhcmUgaXQgdG8gMjAlLWRvd24gY29udmVudGlvbmFsIGZpbmFuY2luZy4iLAogYnJlYWRjcnVtYk5hbWU6ICJWQSBMb2FuIENhbGN1bGF0b3IiCiB9LAogIi9kc2NyLWxvYW4tY2FsY3VsYXRvci1rZW50dWNreSI6IHsKIGhlYWRsaW5lOiAiRFNDUiBMb2FuIENhbGN1bGF0b3I6IERvZXMgWW91ciBSZW50YWwgUXVhbGlmeT8iLAogZGVzY3JpcHRpb246ICJGcmVlIERTQ1IgKGRlYnQgc2VydmljZSBjb3ZlcmFnZSByYXRpbykgY2FsY3VsYXRvciBmb3IgS2VudHVja3kgcmVhbCBlc3RhdGUgaW52ZXN0b3JzLiBDaGVjayB3aGV0aGVyIGEgcmVudGFsIHByb3BlcnR5J3MgaW5jb21lIGNvdmVycyBpdHMgb3duIGRlYnQgc2VydmljZS4iLAogYnJlYWRjcnVtYk5hbWU6ICJEU0NSIExvYW4gQ2FsY3VsYXRvciIKIH0sCiAiL2ludmVzdG1lbnQtcHJvcGVydHktY29tcGFyaXNvbi10b29sIjogewogaGVhZGxpbmU6ICJJbnZlc3RtZW50IFByb3BlcnR5IENvbXBhcmlzb24gVG9vbDogQ2FwIFJhdGUsIENhc2gtb24tQ2FzaCAmIElSUiIsCiBkZXNjcmlwdGlvbjogIkNvbXBhcmUgdXAgdG8gMyBpbnZlc3RtZW50IHByb3BlcnRpZXMgc2lkZSBieSBzaWRlIG9uIGNhcCByYXRlLCBjYXNoLW9uLWNhc2ggcmV0dXJuLCBhbmQgcHJvamVjdGVkIElSUiBvdmVyIHlvdXIgaG9sZCBwZXJpb2QuIiwKIGJyZWFkY3J1bWJOYW1lOiAiSW52ZXN0bWVudCBQcm9wZXJ0eSBDb21wYXJpc29uIFRvb2wiCiB9CiwKICIvcmVsb2NhdGlvbi1jb3N0LWNhbGN1bGF0b3IiOiB7CiBoZWFkbGluZTogIlJlbG9jYXRpb24gQ29zdCBDYWxjdWxhdG9yOiBNb3ZpbmcgdG8gTG91aXN2aWxsZSwgS1kiLAogZGVzY3JpcHRpb246ICJGcmVlIHJlbG9jYXRpb24gY29zdCBjYWxjdWxhdG9yIGZvciBwZW9wbGUgbW92aW5nIHRvIExvdWlzdmlsbGUsIEtlbnR1Y2t5LiBFc3RpbWF0ZSBtb3ZpbmcgY29zdHMsIHZlaGljbGUgc2hpcHBpbmcsIGFuZCBLZW50dWNreSBidXllciBjbG9zaW5nIGNvc3RzIGluIG9uZSBidWRnZXQuIiwKIGJyZWFkY3J1bWJOYW1lOiAiUmVsb2NhdGlvbiBDb3N0IENhbGN1bGF0b3IiCiB9LAogIi9sb3Vpc3ZpbGxlLXN1YnVyYi1tYXRjaC1xdWl6IjogewogaGVhZGxpbmU6ICJMb3Vpc3ZpbGxlIFN1YnVyYiBNYXRjaCBRdWl6OiBGaW5kIFlvdXIgTmVpZ2hib3Job29kIiwKIGRlc2NyaXB0aW9uOiAiQW5zd2VyIGEgZmV3IHF1aWNrIGxpZmVzdHlsZSBxdWVzdGlvbnMgYW5kIHNlZSBob3cgZXZlcnkgTG91aXN2aWxsZS1hcmVhIGNvbW11bml0eSBtYXRjaGVzIHlvdXIgY29tbXV0ZSwgc2V0dGluZywgYnVkZ2V0LCBhbmQgcHJpb3JpdGllcy4iLAogYnJlYWRjcnVtYk5hbWU6ICJTdWJ1cmIgTWF0Y2ggUXVpeiIKIH0sCiAiL2hvbWUtdmFsdWUiOiB7CiBoZWFkbGluZTogIldoYXQncyBZb3VyIEhvbWUgV29ydGg/IiwKIGRlc2NyaXB0aW9uOiAiSW5zdGFudCBob21lIHZhbHVlIGVzdGltYXRlIGZvciBMb3Vpc3ZpbGxlLWFyZWEgc2VsbGVycywgYmFzZWQgb24gcmVjZW50IGNvbXBhcmFibGUgc2FsZXMuIiwKIGJyZWFkY3J1bWJOYW1lOiAiSG9tZSBWYWx1ZSIKIH0KIH07CgogLy8gPT09PT0gV2lubmVyIFNwb3J0cyAmIEVudGVydGFpbm1lbnQgdG9vbHMgKE5JTCBNb25leSBQbGFubmVyICsgQ2FyZWVyIFJ1bndheSkgPT09PT0KIChmdW5jdGlvbiAoKSB7CiAgdmFyIFNFX1BBVEhTID0gWycvc3BvcnRzLWFuZC1lbnRlcnRhaW5tZW50LXJlYWwtZXN0YXRlJywgJy9uaWwtcmVhbC1lc3RhdGUtY29sbGVnZS1hdGhsZXRlcycsICcvaG9yc2UtcmFjaW5nLXByb2Zlc3Npb25hbHMtcmVhbC1lc3RhdGUnLCAnL211c2ljaWFuLXJlYWwtZXN0YXRlLWxvdWlzdmlsbGUnLCAnL2ZpcnN0LWJpZy1jaGVjay1yZWFsLWVzdGF0ZS1wbGFuJ107CiAgaWYgKFNFX1BBVEhTLmluZGV4T2YocGF0aCkgPT09IC0xKSByZXR1cm47CiAgdmFyIElOSyA9ICdjb2xvcjojMWExYTFhOycsIE1VVEVEID0gJ2NvbG9yOiM1NTU7JzsKICB2YXIgQk9YID0gJ2JhY2tncm91bmQ6I2Y3ZjdmNTtib3JkZXI6MXB4IHNvbGlkICNkZGQ7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MjBweDttYXJnaW46MTZweCAwIDI0cHg7JyArIElOSzsKICB2YXIgTEJMID0gJ2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjAwO21hcmdpbjoxMnB4IDAgNHB4OycgKyBJTks7CiAgdmFyIElOUCA9ICd3aWR0aDoxMDAlO21heC13aWR0aDozMjBweDtwYWRkaW5nOjhweCAxMHB4O2ZvbnQtc2l6ZToxNnB4O2JvcmRlcjoxcHggc29saWQgI2JiYjtib3JkZXItcmFkaXVzOjZweDtiYWNrZ3JvdW5kOiNmZmY7Ym94LXNpemluZzpib3JkZXItYm94OycgKyBJTks7CiAgdmFyIEJUTiA9ICdtYXJnaW4tdG9wOjE2cHg7cGFkZGluZzoxMHB4IDE4cHg7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NjAwO2JhY2tncm91bmQ6IzExMTtjb2xvcjojZmZmO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6NnB4O2N1cnNvcjpwb2ludGVyOyc7CiAgZnVuY3Rpb24gdXNkKG4pIHsgaWYgKCFpc0Zpbml0ZShuKSkgbiA9IDA7IHJldHVybiAnJCcgKyBNYXRoLnJvdW5kKG4pLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycpOyB9CiAgZnVuY3Rpb24gbnVtKGlkKSB7IHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsgdmFyIHYgPSBwYXJzZUZsb2F0KFN0cmluZyhlbCAmJiBlbC52YWx1ZSB8fCAnJykucmVwbGFjZSgvW14wLTkuXC1dL2csICcnKSk7IHJldHVybiBpc0Zpbml0ZSh2KSA/IHYgOiAwOyB9CiAgZnVuY3Rpb24gZmllbGQoaWQsIGxhYmVsLCB2YWwsIGhlbHApIHsKICAgcmV0dXJuICc8bGFiZWwgZm9yPSInICsgaWQgKyAnIiBzdHlsZT0iJyArIExCTCArICciPicgKyBsYWJlbCArICc8L2xhYmVsPjxpbnB1dCBpZD0iJyArIGlkICsgJyIgaW5wdXRtb2RlPSJkZWNpbWFsIiB2YWx1ZT0iJyArIHZhbCArICciIHN0eWxlPSInICsgSU5QICsgJyI+JyArIChoZWxwID8gJzxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6MnB4OycgKyBNVVRFRCArICciPicgKyBoZWxwICsgJzwvZGl2PicgOiAnJyk7CiAgfQogIGZ1bmN0aW9uIHJvdyhrLCB2LCBzdHJvbmcpIHsgcmV0dXJuICc8dHI+PHRkIHN0eWxlPSJwYWRkaW5nOjZweCA4cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2U1ZTVlNTsnICsgSU5LICsgKHN0cm9uZyA/ICdmb250LXdlaWdodDo3MDA7JyA6ICcnKSArICciPicgKyBrICsgJzwvdGQ+PHRkIHN0eWxlPSJwYWRkaW5nOjZweCA4cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2U1ZTVlNTt0ZXh0LWFsaWduOnJpZ2h0OycgKyBJTksgKyAoc3Ryb25nID8gJ2ZvbnQtd2VpZ2h0OjcwMDsnIDogJycpICsgJyI+JyArIHYgKyAnPC90ZD48L3RyPic7IH0KICB2YXIgQ1RBID0gJzxwIHN0eWxlPSJtYXJnaW4tdG9wOjE0cHg7JyArIElOSyArICciPldhbnQgcmVhbCBudW1iZXJzIGZvciB5b3VyIHNpdHVhdGlvbj8gPGEgaHJlZj0iL3Nwb3J0cy1lbnRlcnRhaW5tZW50LWNvbnN1bHQiIHN0eWxlPSJjb2xvcjojMTExO2ZvbnQtd2VpZ2h0OjcwMDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyI+U3RhcnQgeW91ciBwcml2YXRlIHBsYW48L2E+IG9yIHRleHQgKDUwMikgMzA1LTg5MTUuPC9wPic7CiAgdmFyIE5PVEUgPSAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6MTBweDsnICsgTVVURUQgKyAnIj5FZHVjYXRpb25hbCBlc3RpbWF0ZSBvbmx5LCBub3QgdGF4IGFkdmljZS4gVXNlcyAyMDI2IHNpbmdsZS1maWxlciBmZWRlcmFsIGJyYWNrZXRzLCB0aGUgJDE2LDEwMCBzdGFuZGFyZCBkZWR1Y3Rpb24sIDE1LjMlIHNlbGYtZW1wbG95bWVudCB0YXggKFNvY2lhbCBTZWN1cml0eSBvbiB0aGUgZmlyc3QgJDE4NCw1MDApLCBhbmQgdGhlIHN0YXRlIHJhdGUgeW91IHBpY2suIFlvdXIgQ1BBIHdpbGwgZ2l2ZSB5b3UgdGhlIHJlYWwgbnVtYmVyLjwvcD4nOwogIGZ1bmN0aW9uIGZlZFRheCh0KSB7CiAgIHZhciBiID0gW1sxMjQwMCwgLjEwXSwgWzUwNDAwLCAuMTJdLCBbMTA1NzAwLCAuMjJdLCBbMjAxNzc1LCAuMjRdLCBbMjU2MjI1LCAuMzJdLCBbNjQwNjAwLCAuMzVdLCBbSW5maW5pdHksIC4zN11dOwogICB2YXIgdGF4ID0gMCwgcHJldiA9IDA7CiAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykgeyBpZiAodCA8PSBwcmV2KSBicmVhazsgdGF4ICs9IChNYXRoLm1pbih0LCBiW2ldWzBdKSAtIHByZXYpICogYltpXVsxXTsgcHJldiA9IGJbaV1bMF07IH0KICAgcmV0dXJuIHRheDsKICB9CiAgZnVuY3Rpb24gbmlsUGxhbm5lcihob3N0KSB7CiAgIGhvc3QuaW5uZXJIVE1MID0gJzxkaXYgc3R5bGU9IicgKyBCT1ggKyAnIj48aDMgc3R5bGU9Im1hcmdpbjowIDAgNnB4O2ZvbnQtc2l6ZToyMnB4OycgKyBJTksgKyAnIj5OSUwgTW9uZXkgUGxhbm5lcjwvaDM+PHAgc3R5bGU9Im1hcmdpbjowIDAgNnB4OycgKyBJTksgKyAnIj5Gb3IgTklMLCBicmFuZCwgdG91ciwgcHVyc2Ugb3IgY3JlYXRvciBtb25leSB0aGF0IGNvbWVzIGluIHdpdGhvdXQgdGF4ZXMgdGFrZW4gb3V0LjwvcD4nICsKICAgIGZpZWxkKCd3cnMtaW5jJywgJ01vbmV5IHlvdSBleHBlY3QgdGhpcyB5ZWFyIGZyb20gTklMLCBicmFuZCBkZWFscywgdG91cnMgb3Igb3RoZXIgc2VsZi1lbXBsb3ltZW50ICgkKScsICc3NTAwMCcpICsKICAgIGZpZWxkKCd3cnMtdzInLCAnT3RoZXIgcGF5Y2hlY2sgaW5jb21lIHdpdGggdGF4ZXMgYWxyZWFkeSB0YWtlbiBvdXQgKCQpJywgJzAnLCAnUmV2ZW51ZSBzaGFyZSBwYWlkIHRocm91Z2ggeW91ciBzY2hvb2xcJ3MgcGF5cm9sbCwgYSBwYXJ0LXRpbWUgam9iLCBldGMuIExlYXZlIDAgaWYgbm9uZS4nKSArCiAgICAnPGxhYmVsIGZvcj0id3JzLXN0YXRlIiBzdHlsZT0iJyArIExCTCArICciPlN0YXRlIHlvdVwnbGwgcGF5IGluY29tZSB0YXggaW48L2xhYmVsPjxzZWxlY3QgaWQ9Indycy1zdGF0ZSIgc3R5bGU9IicgKyBJTlAgKyAnIj48b3B0aW9uIHZhbHVlPSIzLjUiPktlbnR1Y2t5ICgzLjUlKTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IjMuMCI+SW5kaWFuYSAoYWJvdXQgMyUsIHBsdXMgY291bnR5IHRheCk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSIwIj5UZW5uZXNzZWUgb3IgRmxvcmlkYSAobm8gc3RhdGUgaW5jb21lIHRheCk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSI1Ij5PdGhlciBzdGF0ZSAoYWJvdXQgNSUpPC9vcHRpb24+PC9zZWxlY3Q+JyArCiAgICBmaWVsZCgnd3JzLW1vJywgJ1lvdXIgbW9udGhseSBsaXZpbmcgY29zdHMgKCQpJywgJzI1MDAnLCAnUmVudCwgZm9vZCwgY2FyLCBwaG9uZSwgZXZlcnl0aGluZy4nKSArCiAgICBmaWVsZCgnd3JzLW1vbnRocycsICdNb250aHMgb2Ygc2FmZXR5IG5ldCB5b3Ugd2FudCcsICc2JykgKwogICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBpZD0id3JzLWdvIiBzdHlsZT0iJyArIEJUTiArICciPlNob3cgbXkgcGxhbjwvYnV0dG9uPjxkaXYgaWQ9Indycy1vdXQiIHN0eWxlPSJtYXJnaW4tdG9wOjE2cHg7Ij48L2Rpdj4nICsgTk9URSArIENUQSArICc8L2Rpdj4nOwogICBmdW5jdGlvbiBydW4oKSB7CiAgICB2YXIgSSA9IE1hdGgubWF4KDAsIG51bSgnd3JzLWluYycpKSwgVyA9IE1hdGgubWF4KDAsIG51bSgnd3JzLXcyJykpLCBzdCA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dycy1zdGF0ZScpLnZhbHVlKSAvIDEwMDsKICAgIHZhciBzZUJhc2UgPSBJICogMC45MjM1OwogICAgdmFyIHNzID0gMC4xMjQgKiBNYXRoLm1pbihzZUJhc2UsIE1hdGgubWF4KDAsIDE4NDUwMCAtIFcpKTsKICAgIHZhciBtZWQgPSAwLjAyOSAqIHNlQmFzZSArIDAuMDA5ICogTWF0aC5tYXgoMCwgc2VCYXNlICsgVyAtIDIwMDAwMCk7CiAgICB2YXIgc2UgPSBzcyArIG1lZDsKICAgIHZhciBmZWRBbGwgPSBmZWRUYXgoTWF0aC5tYXgoMCwgSSArIFcgLSBzZSAvIDIgLSAxNjEwMCkpOwogICAgdmFyIGZlZFcgPSBmZWRUYXgoTWF0aC5tYXgoMCwgVyAtIDE2MTAwKSk7CiAgICB2YXIgZmVkID0gTWF0aC5tYXgoMCwgZmVkQWxsIC0gZmVkVyk7CiAgICB2YXIgc3RhdGUgPSBJICogc3Q7CiAgICB2YXIgdGF4ZXMgPSBmZWQgKyBzZSArIHN0YXRlOwogICAgdmFyIG5ldCA9IG51bSgnd3JzLW1vJykgKiBudW0oJ3dycy1tb250aHMnKTsKICAgIHZhciBpbnZlc3QgPSBNYXRoLm1heCgwLCBJIC0gdGF4ZXMgLSBuZXQpOwogICAgdmFyIHBjdCA9IEkgPiAwID8gTWF0aC5yb3VuZCh0YXhlcyAvIEkgKiAxMDApIDogMDsKICAgIHZhciBvID0gJzx0YWJsZSBzdHlsZT0id2lkdGg6MTAwJTttYXgtd2lkdGg6NTYwcHg7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2ZvbnQtc2l6ZToxNXB4OyI+JyArCiAgICAgcm93KCdGZWRlcmFsIGluY29tZSB0YXggb24gdGhpcyBtb25leScsIHVzZChmZWQpKSArIHJvdygnU2VsZi1lbXBsb3ltZW50IHRheCAoU29jaWFsIFNlY3VyaXR5IGFuZCBNZWRpY2FyZSknLCB1c2Qoc2UpKSArIHJvdygnU3RhdGUgaW5jb21lIHRheCcsIHVzZChzdGF0ZSkpICsKICAgICByb3coJ1NldCBhc2lkZSBmb3IgdGF4ZXMgKGFib3V0ICcgKyBwY3QgKyAnJSknLCB1c2QodGF4ZXMpLCB0cnVlKSArIHJvdygnUGF5IGl0IGluIGZvdXIgZXN0aW1hdGVkIHBheW1lbnRzIG9mIGFib3V0JywgdXNkKHRheGVzIC8gNCkpICsKICAgICByb3coJ1NhZmV0eSBuZXQgdG8ga2VlcCBpbiBzYXZpbmdzJywgdXNkKG5ldCksIHRydWUpICsgcm93KCdMZWZ0IHRvIHB1dCB0byB3b3JrJywgdXNkKGludmVzdCksIHRydWUpICsgJzwvdGFibGU+JzsKICAgIGlmIChpbnZlc3QgPiAwKSB7CiAgICAgbyArPSAnPHAgc3R5bGU9Im1hcmdpbi10b3A6MTJweDsnICsgSU5LICsgJyI+Um91Z2ggaWRlYTogJyArIHVzZChpbnZlc3QpICsgJyBjb3VsZCBjb3ZlciB0aGUgZG93biBwYXltZW50IGFuZCBjbG9zaW5nIGNvc3RzIG9uIGEgcHJvcGVydHkgYXJvdW5kIDxzdHJvbmc+JyArIHVzZChpbnZlc3QgLyAwLjA4KSArICc8L3N0cm9uZz4gaWYgeW91IGxpdmUgaW4gaXQgd2l0aCBhIDUlIGRvd24gbG9hbiwgb3IgYXJvdW5kIDxzdHJvbmc+JyArIHVzZChpbnZlc3QgLyAwLjI4KSArICc8L3N0cm9uZz4gYXMgYSByZW50YWwgd2l0aCAyNSUgZG93bi4gWW91ciBsZW5kZXIgc2V0cyB0aGUgcmVhbCBudW1iZXJzLjwvcD4nOwogICAgfSBlbHNlIHsKICAgICBvICs9ICc8cCBzdHlsZT0ibWFyZ2luLXRvcDoxMnB4OycgKyBJTksgKyAnIj5BZnRlciB0YXhlcyBhbmQgeW91ciBzYWZldHkgbmV0LCB0aGVyZSBpc25cJ3QgbW9uZXkgdG8gaW52ZXN0IHlldCB0aGlzIHllYXIuIFRoYXRcJ3Mgb2theS4gR2V0dGluZyB0YXhlcyBhbmQgc2F2aW5ncyByaWdodCBmaXJzdCBpcyB0aGUgd2luLjwvcD4nOwogICAgfQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dycy1vdXQnKS5pbm5lckhUTUwgPSBvOwogICB9CiAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3cnMtZ28nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHJ1bik7CiAgIHJ1bigpOwogIH0KICBmdW5jdGlvbiBydW53YXkoaG9zdCkgewogICBob3N0LmlubmVySFRNTCA9ICc8ZGl2IHN0eWxlPSInICsgQk9YICsgJyI+PGgzIHN0eWxlPSJtYXJnaW46MCAwIDZweDtmb250LXNpemU6MjJweDsnICsgSU5LICsgJyI+Q2FyZWVyIFJ1bndheSBDYWxjdWxhdG9yPC9oMz48cCBzdHlsZT0ibWFyZ2luOjAgMCA2cHg7JyArIElOSyArICciPkhvdyBsb25nIGRvZXMgeW91ciBtb25leSBsYXN0IGFmdGVyIHRoZSBwYXljaGVja3Mgc3RvcCwgd2l0aCBhbmQgd2l0aG91dCByZW50YWwgaW5jb21lPzwvcD4nICsKICAgIGZpZWxkKCd3cnItYWdlJywgJ1lvdXIgYWdlJywgJzIyJykgKwogICAgZmllbGQoJ3dyci1zYXZlJywgJ01vbmV5IHNhdmVkIG9yIGludmVzdGVkIHRvZGF5ICgkKScsICcxMDAwMDAnKSArCiAgICBmaWVsZCgnd3JyLXlycycsICdZZWFycyBvZiBwbGF5aW5nLCB0b3VyaW5nIG9yIHJpZGluZyBpbmNvbWUgeW91IGV4cGVjdCcsICc0JykgKwogICAgZmllbGQoJ3dyci1pbmMnLCAnWWVhcmx5IGluY29tZSBhZnRlciB0YXhlcyB3aGlsZSBpdCBsYXN0cyAoJCknLCAnODAwMDAnKSArCiAgICBmaWVsZCgnd3JyLXNwZW5kJywgJ1llYXJseSBzcGVuZGluZyAoJCknLCAnNTAwMDAnKSArCiAgICBmaWVsZCgnd3JyLXJlbnQnLCAnTW9udGhseSByZW50YWwgaW5jb21lIGFmdGVyIHRoZSBtb3J0Z2FnZSBhbmQgY29zdHMgKCQpJywgJzEyMDAnLCAnV2hhdCB5b3VyIHJlbnRhbHMgd291bGQgcHV0IGluIHlvdXIgcG9ja2V0IGVhY2ggbW9udGguIFVzZSB0aGUgaW52ZXN0bWVudCBwcm9wZXJ0eSBhbmFseXplciB0byBlc3RpbWF0ZSBpdC4nKSArCiAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJ3cnItZ28iIHN0eWxlPSInICsgQlROICsgJyI+U2hvdyBteSBydW53YXk8L2J1dHRvbj48ZGl2IGlkPSJ3cnItb3V0IiBzdHlsZT0ibWFyZ2luLXRvcDoxNnB4OyI+PC9kaXY+JyArCiAgICAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6MTBweDsnICsgTVVURUQgKyAnIj5FZHVjYXRpb25hbCBlc3RpbWF0ZSBvbmx5LiBBc3N1bWVzIG5vIGludmVzdG1lbnQgZ3Jvd3RoIGFuZCBubyBpbmZsYXRpb24sIHNvIGl0IGlzIGEgc2ltcGxlIHBpY3R1cmUsIG5vdCBhIGZvcmVjYXN0LiBBIGZlZS1vbmx5IGZpbmFuY2lhbCBhZHZpc29yIGNhbiBidWlsZCB0aGUgZnVsbCBwbGFuLjwvcD4nICsgQ1RBICsgJzwvZGl2Pic7CiAgIGZ1bmN0aW9uIHllYXJzKHNhdmUsIHlycywgaW5jLCBzcGVuZCwgcmVudFlyKSB7CiAgICB2YXIgYmFsID0gc2F2ZTsKICAgIGZvciAodmFyIHkgPSAxOyB5IDw9IDYwOyB5KyspIHsgYmFsICs9ICh5IDw9IHlycyA/IGluYyA6IDApICsgcmVudFlyIC0gc3BlbmQ7IGlmIChiYWwgPCAwKSByZXR1cm4geSAtIDE7IH0KICAgIHJldHVybiA2MDsKICAgfQogICBmdW5jdGlvbiBydW4oKSB7CiAgICB2YXIgYWdlID0gbnVtKCd3cnItYWdlJyksIHMgPSBudW0oJ3dyci1zYXZlJyksIHlycyA9IG51bSgnd3JyLXlycycpLCBpbmMgPSBudW0oJ3dyci1pbmMnKSwgc3AgPSBudW0oJ3dyci1zcGVuZCcpLCByID0gbnVtKCd3cnItcmVudCcpICogMTI7CiAgICB2YXIgYSA9IHllYXJzKHMsIHlycywgaW5jLCBzcCwgMCksIGIgPSB5ZWFycyhzLCB5cnMsIGluYywgc3AsIHIpOwogICAgZnVuY3Rpb24gc2F5KG4pIHsgcmV0dXJuIG4gPj0gNjAgPyAnNjArIHllYXJzIChpdCBuZXZlciBydW5zIG91dCknIDogbiArICcgeWVhcnMsIHVudGlsIGFib3V0IGFnZSAnICsgTWF0aC5yb3VuZChhZ2UgKyBuKTsgfQogICAgdmFyIG8gPSAnPHRhYmxlIHN0eWxlPSJ3aWR0aDoxMDAlO21heC13aWR0aDo1NjBweDtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7Zm9udC1zaXplOjE1cHg7Ij4nICsgcm93KCdXaXRob3V0IHJlbnRhbCBpbmNvbWUsIHlvdXIgbW9uZXkgbGFzdHMnLCBzYXkoYSksIHRydWUpICsgcm93KCdXaXRoICcgKyB1c2QociAvIDEyKSArICcgYSBtb250aCBpbiByZW50YWwgaW5jb21lJywgc2F5KGIpLCB0cnVlKSArICc8L3RhYmxlPic7CiAgICBpZiAociA+IDAgJiYgciA+PSBzcCkgbyArPSAnPHAgc3R5bGU9Im1hcmdpbi10b3A6MTJweDsnICsgSU5LICsgJyI+WW91ciByZW50YWwgaW5jb21lIGNvdmVycyB5b3VyIHllYXJseSBzcGVuZGluZyBvbiBpdHMgb3duLiBUaGF0IGlzIHRoZSBnb2FsOiBpbmNvbWUgdGhhdCBrZWVwcyBjb21pbmcgYWZ0ZXIgdGhlIGNhcmVlciBlbmRzLjwvcD4nOwogICAgZWxzZSBpZiAoYiA+IGEpIG8gKz0gJzxwIHN0eWxlPSJtYXJnaW4tdG9wOjEycHg7JyArIElOSyArICciPlJlbnRhbCBpbmNvbWUgYWRkcyBhYm91dCA8c3Ryb25nPicgKyAoTWF0aC5taW4oYiwgNjApIC0gYSkgKyAnIHllYXJzPC9zdHJvbmc+IG9mIHJ1bndheS4gVG8gbmV2ZXIgcnVuIG91dCwgcmVudGFsIGluY29tZSBuZWVkcyB0byByZWFjaCBhYm91dCAnICsgdXNkKHNwIC8gMTIpICsgJyBhIG1vbnRoLjwvcD4nOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyci1vdXQnKS5pbm5lckhUTUwgPSBvOwogICB9CiAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3cnItZ28nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHJ1bik7CiAgIHJ1bigpOwogIH0KICBmdW5jdGlvbiBtb3VudCgpIHsKICAgdmFyIHBzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncCcpOwogICBmb3IgKHZhciBpID0gMDsgaSA8IHBzLmxlbmd0aDsgaSsrKSB7CiAgICB2YXIgdCA9IChwc1tpXS50ZXh0Q29udGVudCB8fCAnJykudHJpbSgpOwogICAgaWYgKHQgPT09ICdbW1dSLU5JTC1QTEFOTkVSXV0nKSB7IHZhciBkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IHBzW2ldLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGQsIHBzW2ldKTsgbmlsUGxhbm5lcihkKTsgfQogICAgZWxzZSBpZiAodCA9PT0gJ1tbV1ItQ0FSRUVSLVJVTldBWV1dJykgeyB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBwc1tpXS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChlLCBwc1tpXSk7IHJ1bndheShlKTsgfQogICB9CiAgfQogIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBtb3VudCk7IGVsc2UgbW91bnQoKTsKIH0pKCk7CiAvLyA9PT09PSBlbmQgV2lubmVyIFNwb3J0cyAmIEVudGVydGFpbm1lbnQgdG9vbHMgPT09PT0KIHZhciBjZmcgPSBDT05GSUdbcGF0aF07CiBpZiAocGF0aCA9PT0gJy9jYXAtcmF0ZS1leHBsYWluZWQtY29tbWVyY2lhbC1yZWFsLWVzdGF0ZScpIHsKICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgaW5qZWN0Q2FwUmF0ZUNhbGMpOwogIH0gZWxzZSB7CiAgICBpbmplY3RDYXBSYXRlQ2FsYygpOwogIH0KICByZXR1cm47Cn0KCiBpZiAoIWNmZykgcmV0dXJuOwoKIC8vIE5vdGU6IEFydGljbGUgKyBCcmVhZGNydW1iTGlzdCBKU09OLUxEIGZvciB0aGVzZSBwYXRocyBpcyBhbHJlYWR5IGdlbmVyYXRlZCBieSB0aGUKIC8vICJUb29sYm94IGd1aWRlcyBKU09OLUxEIChwYWdlLXNjb3BlZCkiIGludGVncmF0aW9uJ3MgTUFQIGVudHJpZXMsIHNvIHRoaXMgaW50ZWdyYXRpb24KIC8vIG9ubHkgaGFuZGxlcyB0aGUgaW50ZXJhY3RpdmUgY2FsY3VsYXRvciBVSSB0byBhdm9pZCBkdXBsaWNhdGUgc3RydWN0dXJlZCBkYXRhLgoKIGZ1bmN0aW9uIGZtdFVTRChuKSB7CiBpZiAoIWlzRmluaXRlKG4pKSByZXR1cm4gIiQwIjsKIHJldHVybiAiJCIgKyBuLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSk7CiB9CiBmdW5jdGlvbiBmbXRQY3QobikgewogaWYgKCFpc0Zpbml0ZShuKSkgcmV0dXJuICIwJSI7CiByZXR1cm4gbi50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMSwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAxIH0pICsgIiUiOwogfQogZnVuY3Rpb24gbnVtKGlkKSB7CiB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiBpZiAoIWVsKSByZXR1cm4gMDsKIHZhciB2ID0gcGFyc2VGbG9hdChTdHJpbmcoZWwudmFsdWUpLnJlcGxhY2UoL1teMC05LlwtXS9nLCAnJykpOwogcmV0dXJuIGlzRmluaXRlKHYpID8gdiA6IDA7CiB9CgogZnVuY3Rpb24gZmluZE1hcmtlclBhcmFncmFwaChtYXJrZXJUZXh0KSB7CiB2YXIgcHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwJyk7CiBmb3IgKHZhciBpID0gMDsgaSA8IHBzLmxlbmd0aDsgaSsrKSB7CiBpZiAocHNbaV0udGV4dENvbnRlbnQudHJpbSgpID09PSBtYXJrZXJUZXh0KSByZXR1cm4gcHNbaV07CiB9CiByZXR1cm4gbnVsbDsKIH0KCiBmdW5jdGlvbiBpbnB1dFJvdyhsYWJlbCwgaWQsIHZhbHVlKSB7CiByZXR1cm4gJzxwIHN0eWxlPSJtYXJnaW46MCAwIDEycHg7Y29sb3I6IzFhMWExYTsiPjxsYWJlbCBmb3I9IicgKyBpZCArICciIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2ZvbnQtd2VpZ2h0OjYwMDttYXJnaW4tYm90dG9tOjRweDtjb2xvcjojMWExYTFhOyI+JyArIGxhYmVsICsgJzwvbGFiZWw+JyArCiAnPGlucHV0IHR5cGU9InRleHQiIGlkPSInICsgaWQgKyAnIiB2YWx1ZT0iJyArIHZhbHVlICsgJyIgc3R5bGU9IndpZHRoOjEwMCU7bWF4LXdpZHRoOjMyMHB4O3BhZGRpbmc6OHB4O2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjRweDtjb2xvcjojMWExYTFhO2JhY2tncm91bmQ6I2ZmZjsiLz48L3A+JzsKIH0KCiBmdW5jdGlvbiBhbW9ydFBJKGxvYW5BbW91bnQsIGFubnVhbFJhdGVQY3QsIHRlcm1ZZWFycykgewogdmFyIG1vbnRobHlSYXRlID0gKGFubnVhbFJhdGVQY3QgLyAxMDApIC8gMTI7CiB2YXIgbiA9IHRlcm1ZZWFycyAqIDEyOwogaWYgKG1vbnRobHlSYXRlID09PSAwIHx8IG4gPT09IDApIHJldHVybiBuID4gMCA/IGxvYW5BbW91bnQgLyBuIDogMDsKIHJldHVybiBsb2FuQW1vdW50ICogKG1vbnRobHlSYXRlICogTWF0aC5wb3coMSArIG1vbnRobHlSYXRlLCBuKSkgLyAoTWF0aC5wb3coMSArIG1vbnRobHlSYXRlLCBuKSAtIDEpOwogfQoKIGZ1bmN0aW9uIHJlbWFpbmluZ0xvYW5CYWxhbmNlKGxvYW5BbW91bnQsIGFubnVhbFJhdGVQY3QsIHRlcm1ZZWFycywgcGF5bWVudHNNYWRlKSB7CiB2YXIgbW9udGhseVJhdGUgPSAoYW5udWFsUmF0ZVBjdCAvIDEwMCkgLyAxMjsKIHZhciBuID0gdGVybVllYXJzICogMTI7CiB2YXIgcG10cyA9IE1hdGgubWluKHBheW1lbnRzTWFkZSwgbik7CiBpZiAobW9udGhseVJhdGUgPT09IDApIHJldHVybiBNYXRoLm1heCgwLCBsb2FuQW1vdW50IC0gKGxvYW5BbW91bnQgLyBuKSAqIHBtdHMpOwogcmV0dXJuIGxvYW5BbW91bnQgKiAoTWF0aC5wb3coMSArIG1vbnRobHlSYXRlLCBuKSAtIE1hdGgucG93KDEgKyBtb250aGx5UmF0ZSwgcG10cykpIC8gKE1hdGgucG93KDEgKyBtb250aGx5UmF0ZSwgbikgLSAxKTsKIH0KCiBmdW5jdGlvbiBpcnJTb2x2ZShjYXNoZmxvd3MpIHsKIGZ1bmN0aW9uIG5wdihyYXRlKSB7CiB2YXIgdG90YWwgPSAwOwogZm9yICh2YXIgdCA9IDA7IHQgPCBjYXNoZmxvd3MubGVuZ3RoOyB0KyspIHRvdGFsICs9IGNhc2hmbG93c1t0XSAvIE1hdGgucG93KDEgKyByYXRlLCB0KTsKIHJldHVybiB0b3RhbDsKIH0KIHZhciBsbyA9IC0wLjk5LCBoaSA9IDU7CiB2YXIgbnB2TG8gPSBucHYobG8pLCBucHZIaSA9IG5wdihoaSk7CiBpZiAoaXNOYU4obnB2TG8pIHx8IGlzTmFOKG5wdkhpKSkgcmV0dXJuIG51bGw7CiBpZiAobnB2TG8gKiBucHZIaSA+IDApIHsKIHZhciBiZXN0UmF0ZSA9IG51bGwsIGJlc3RBYnMgPSBJbmZpbml0eTsKIGZvciAodmFyIHIgPSAtMC45OyByIDw9IDM7IHIgKz0gMC4wMDUpIHsKIHZhciB2ID0gTWF0aC5hYnMobnB2KHIpKTsKIGlmICh2IDwgYmVzdEFicykgeyBiZXN0QWJzID0gdjsgYmVzdFJhdGUgPSByOyB9CiB9CiByZXR1cm4gYmVzdFJhdGU7CiB9CiBmb3IgKHZhciBpID0gMDsgaSA8IDIwMDsgaSsrKSB7CiB2YXIgbWlkID0gKGxvICsgaGkpIC8gMjsKIHZhciBucHZNaWQgPSBucHYobWlkKTsKIGlmIChNYXRoLmFicyhucHZNaWQpIDwgMWUtNikgcmV0dXJuIG1pZDsKIGlmICgobnB2TG8gPCAwKSA9PT0gKG5wdk1pZCA8IDApKSB7IGxvID0gbWlkOyBucHZMbyA9IG5wdk1pZDsgfSBlbHNlIHsgaGkgPSBtaWQ7IH0KIH0KIHJldHVybiAobG8gKyBoaSkgLyAyOwogfQoKIGZ1bmN0aW9uIGZpZWxkVGFibGUoZmllbGRzLCBwcmVmaXgsIGNvbHMpIHsKIHZhciBodG1sID0gJzxkaXYgc3R5bGU9Im92ZXJmbG93LXg6YXV0bzsiPjx0YWJsZSBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO3dpZHRoOjEwMCU7bWluLXdpZHRoOjU2MHB4OyI+JzsKIGh0bWwgKz0gJzx0cj48dGggc3R5bGU9InRleHQtYWxpZ246bGVmdDtwYWRkaW5nOjZweCAxMHB4IDZweCAwO2NvbG9yOiMxYTFhMWE7Ij48L3RoPic7CiBmb3IgKHZhciBjID0gMDsgYyA8IGNvbHMubGVuZ3RoOyBjKyspIHsKIGh0bWwgKz0gJzx0aCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0O3BhZGRpbmc6NnB4IDEwcHg7Y29sb3I6IzFhMWExYTtmb250LXNpemU6MTRweDsiPicgKyBjb2xzW2NdICsgJzwvdGg+JzsKIH0KIGh0bWwgKz0gJzwvdHI+JzsKIGZvciAodmFyIGkgPSAwOyBpIDwgZmllbGRzLmxlbmd0aDsgaSsrKSB7CiB2YXIgZiA9IGZpZWxkc1tpXTsKIGh0bWwgKz0gJzx0cj48dGQgc3R5bGU9InBhZGRpbmc6NnB4IDEwcHggNnB4IDA7Y29sb3I6IzFhMWExYTtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEzcHg7d2hpdGUtc3BhY2U6bm93cmFwOyI+JyArIGYubGFiZWwgKyAnPC90ZD4nOwogZm9yICh2YXIgYzIgPSAwOyBjMiA8IGNvbHMubGVuZ3RoOyBjMisrKSB7CiB2YXIgaWQgPSBwcmVmaXggKyBjMiArICctJyArIGYuaWQ7CiBodG1sICs9ICc8dGQgc3R5bGU9InBhZGRpbmc6NHB4IDEwcHg7Ij48aW5wdXQgdHlwZT0idGV4dCIgaWQ9IicgKyBpZCArICciIHZhbHVlPSInICsgZi52YWx1ZSArICciIHN0eWxlPSJ3aWR0aDoxMDBweDtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLXJhZGl1czo0cHg7Y29sb3I6IzFhMWExYTtiYWNrZ3JvdW5kOiNmZmY7Ii8+PC90ZD4nOwogfQogaHRtbCArPSAnPC90cj4nOwogfQogaHRtbCArPSAnPC90YWJsZT48L2Rpdj4nOwogcmV0dXJuIGh0bWw7CiB9CgogdmFyIElQQV9IVE1MID0KICc8ZGl2IHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICNkOGQ4ZDg7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoyNHB4O21hcmdpbjoyNHB4IDA7YmFja2dyb3VuZDojZmFmYWZhO2NvbG9yOiMxYTFhMWE7Ij4nICsKICc8aDMgc3R5bGU9Im1hcmdpbjowIDAgMTRweDtmb250LXNpemU6MjJweDtjb2xvcjojMWExYTFhOyI+UHJvcGVydHkgJmFtcDsgcHVyY2hhc2UgZGV0YWlsczwvaDM+JyArCiBpbnB1dFJvdygnUHVyY2hhc2UgcHJpY2UgKCQpJywgJ2lwYS1wcmljZScsICcyNTAwMDAnKSArCiBpbnB1dFJvdygnRG93biBwYXltZW50ICglKScsICdpcGEtZG93bnBjdCcsICcyMCcpICsKIGlucHV0Um93KCdJbnRlcmVzdCByYXRlIChhbm51YWwgJSknLCAnaXBhLXJhdGUnLCAnNycpICsKIGlucHV0Um93KCdMb2FuIHRlcm0gKHllYXJzKScsICdpcGEtdGVybScsICczMCcpICsKIGlucHV0Um93KCdDbG9zaW5nIGNvc3RzICgkKScsICdpcGEtY2xvc2luZycsICc0MDAwJykgKwogJzxoMyBzdHlsZT0ibWFyZ2luOjIwcHggMCAxNHB4O2ZvbnQtc2l6ZToyMnB4O2NvbG9yOiMxYTFhMWE7Ij5JbmNvbWUgJmFtcDsgb3BlcmF0aW5nIGV4cGVuc2VzPC9oMz4nICsKIGlucHV0Um93KCdFeHBlY3RlZCBtb250aGx5IHJlbnQgKCQpJywgJ2lwYS1yZW50JywgJzIyMDAnKSArCiBpbnB1dFJvdygnVmFjYW5jeSByYXRlICglKScsICdpcGEtdmFjYW5jeScsICc1JykgKwogaW5wdXRSb3coJ0FubnVhbCBwcm9wZXJ0eSB0YXhlcyAoJCknLCAnaXBhLXRheGVzJywgJzI4MDAnKSArCiBpbnB1dFJvdygnQW5udWFsIGluc3VyYW5jZSAoJCknLCAnaXBhLWluc3VyYW5jZScsICcxNDAwJykgKwogaW5wdXRSb3coJ01vbnRobHkgSE9BICgkKScsICdpcGEtaG9hJywgJzAnKSArCiBpbnB1dFJvdygnTWFpbnRlbmFuY2UgJmFtcDsgY2FwZXggcmVzZXJ2ZSAoJSBvZiByZW50KScsICdpcGEtbWFpbnRlbmFuY2UnLCAnOCcpICsKIGlucHV0Um93KCdQcm9wZXJ0eSBtYW5hZ2VtZW50ICglIG9mIHJlbnQpJywgJ2lwYS1tZ210JywgJzgnKSArCiBpbnB1dFJvdygnT3RoZXIgbW9udGhseSBleHBlbnNlcyAoJCknLCAnaXBhLW90aGVyZXhwJywgJzAnKSArCiAnPHA+PGJ1dHRvbiBpZD0iaXBhLWNhbGN1bGF0ZSIgc3R5bGU9ImJhY2tncm91bmQ6IzFhM2M1ZTtjb2xvcjojZmZmO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6NnB4O3BhZGRpbmc6MTJweCAyOHB4O2ZvbnQtc2l6ZToxNnB4O2N1cnNvcjpwb2ludGVyOyI+Q2FsY3VsYXRlIHJldHVybnM8L2J1dHRvbj48L3A+JyArCiAnPGRpdiBpZD0iaXBhLXJlc3VsdHMiIHN0eWxlPSJkaXNwbGF5Om5vbmU7bWFyZ2luLXRvcDoyMHB4O3BhZGRpbmctdG9wOjIwcHg7Ym9yZGVyLXRvcDoycHggc29saWQgIzFhM2M1ZTtjb2xvcjojMWExYTFhOyI+JyArCiAnPGgzIHN0eWxlPSJtYXJnaW46MCAwIDEwcHg7Zm9udC1zaXplOjIycHg7Y29sb3I6IzFhMWExYTsiPllvdXIgcmVzdWx0czwvaDM+JyArCiAnPHAgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij5Mb2FuIGFtb3VudDogPHN0cm9uZyBpZD0iaXBhLW91dC1sb2FuIiBzdHlsZT0iY29sb3I6IzFhMWExYTsiPiZtZGFzaDs8L3N0cm9uZz48L3A+JyArCiAnPHAgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij5Nb250aGx5IHByaW5jaXBhbCAmYW1wOyBpbnRlcmVzdDogPHN0cm9uZyBpZD0iaXBhLW91dC1waSIgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij4mbWRhc2g7PC9zdHJvbmc+PC9wPicgKwogJzxwIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+TmV0IG9wZXJhdGluZyBpbmNvbWUgKGFubnVhbCk6IDxzdHJvbmcgaWQ9ImlwYS1vdXQtbm9pIiBzdHlsZT0iY29sb3I6IzFhMWExYTsiPiZtZGFzaDs8L3N0cm9uZz48L3A+JyArCiAnPHAgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij5DYXAgcmF0ZTogPHN0cm9uZyBpZD0iaXBhLW91dC1jYXByYXRlIiBzdHlsZT0iY29sb3I6IzFhMWExYTsiPiZtZGFzaDs8L3N0cm9uZz48L3A+JyArCiAnPHAgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij5Nb250aGx5IGNhc2ggZmxvdzogPHN0cm9uZyBpZD0iaXBhLW91dC1jYXNoZmxvdy1tIiBzdHlsZT0iY29sb3I6IzFhMWExYTsiPiZtZGFzaDs8L3N0cm9uZz48L3A+JyArCiAnPHAgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij5Bbm51YWwgY2FzaCBmbG93OiA8c3Ryb25nIGlkPSJpcGEtb3V0LWNhc2hmbG93LWEiIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+Jm1kYXNoOzwvc3Ryb25nPjwvcD4nICsKICc8cCBzdHlsZT0iY29sb3I6IzFhMWExYTsiPlRvdGFsIGNhc2ggaW52ZXN0ZWQ6IDxzdHJvbmcgaWQ9ImlwYS1vdXQtY2FzaGludmVzdGVkIiBzdHlsZT0iY29sb3I6IzFhMWExYTsiPiZtZGFzaDs8L3N0cm9uZz48L3A+JyArCiAnPHAgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij5DYXNoLW9uLWNhc2ggcmV0dXJuOiA8c3Ryb25nIGlkPSJpcGEtb3V0LWNvYyIgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij4mbWRhc2g7PC9zdHJvbmc+PC9wPicgKwogJzxwIHN0eWxlPSJmb250LXNpemU6MTNweDtjb2xvcjojNjY2OyI+VGhpcyBpcyBhbiBlc3RpbWF0ZSBmb3IgcGxhbm5pbmcgcHVycG9zZXMgb25seSwgbm90IGEgZ3VhcmFudGVlIG9mIHBlcmZvcm1hbmNlLiBBY3R1YWwgdGF4ZXMsIGluc3VyYW5jZSwgZmluYW5jaW5nIHRlcm1zIGFuZCByZW50cyB2YXJ5LjwvcD4nICsKICc8L2Rpdj48L2Rpdj4nOwoKIHZhciBTTlBfSFRNTCA9CiAnPGRpdiBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCAjZDhkOGQ4O2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MjRweDttYXJnaW46MjRweCAwO2JhY2tncm91bmQ6I2ZhZmFmYTtjb2xvcjojMWExYTFhOyI+JyArCiAnPGgzIHN0eWxlPSJtYXJnaW46MCAwIDE0cHg7Zm9udC1zaXplOjIycHg7Y29sb3I6IzFhMWExYTsiPlNhbGUgZGV0YWlsczwvaDM+JyArCiBpbnB1dFJvdygnRXN0aW1hdGVkIHNhbGUgcHJpY2UgKCQpJywgJ3NucC1wcmljZScsICczNTAwMDAnKSArCiBpbnB1dFJvdygnUmVtYWluaW5nIG1vcnRnYWdlIHBheW9mZiAoJCknLCAnc25wLXBheW9mZicsICcxODAwMDAnKSArCiBpbnB1dFJvdygnVG90YWwgYWdlbnQgY29tbWlzc2lvbiAoJSknLCAnc25wLWNvbW1pc3Npb24nLCAnNicpICsKIGlucHV0Um93KCdPdGhlciBzZWxsZXIgY2xvc2luZyBjb3N0cyAoJSBvZiBwcmljZSknLCAnc25wLWNsb3NpbmdwY3QnLCAnMS41JykgKwogaW5wdXRSb3coJ1JlcGFpcnMsIGNyZWRpdHMgJmFtcDsgY29uY2Vzc2lvbnMgKCQpJywgJ3NucC1yZXBhaXJzJywgJzAnKSArCiBpbnB1dFJvdygnT3RoZXIgbGllbnMgb3IgcGF5b2ZmcyAoJCknLCAnc25wLW90aGVybGllbnMnLCAnMCcpICsKICc8cD48YnV0dG9uIGlkPSJzbnAtY2FsY3VsYXRlIiBzdHlsZT0iYmFja2dyb3VuZDojMWEzYzVlO2NvbG9yOiNmZmY7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czo2cHg7cGFkZGluZzoxMnB4IDI4cHg7Zm9udC1zaXplOjE2cHg7Y3Vyc29yOnBvaW50ZXI7Ij5DYWxjdWxhdGUgbmV0IHByb2NlZWRzPC9idXR0b24+PC9wPicgKwogJzxkaXYgaWQ9InNucC1yZXN1bHRzIiBzdHlsZT0iZGlzcGxheTpub25lO21hcmdpbi10b3A6MjBweDtwYWRkaW5nLXRvcDoyMHB4O2JvcmRlci10b3A6MnB4IHNvbGlkICMxYTNjNWU7Y29sb3I6IzFhMWExYTsiPicgKwogJzxoMyBzdHlsZT0ibWFyZ2luOjAgMCAxMHB4O2ZvbnQtc2l6ZToyMnB4O2NvbG9yOiMxYTFhMWE7Ij5Zb3VyIGVzdGltYXRlPC9oMz4nICsKICc8cCBzdHlsZT0iY29sb3I6IzFhMWExYTsiPkFnZW50IGNvbW1pc3Npb246IDxzdHJvbmcgaWQ9InNucC1vdXQtY29tbWlzc2lvbiIgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij4mbWRhc2g7PC9zdHJvbmc+PC9wPicgKwogJzxwIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+S2VudHVja3kgdHJhbnNmZXIgdGF4IChzZWxsZXItcGFpZCwgJDAuNTAgcGVyICQ1MDAgb2YgdmFsdWUpOiA8c3Ryb25nIGlkPSJzbnAtb3V0LXRyYW5zZmVydGF4IiBzdHlsZT0iY29sb3I6IzFhMWExYTsiPiZtZGFzaDs8L3N0cm9uZz48L3A+JyArCiAnPHAgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij5PdGhlciBjbG9zaW5nIGNvc3RzOiA8c3Ryb25nIGlkPSJzbnAtb3V0LWNsb3Npbmdjb3N0cyIgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij4mbWRhc2g7PC9zdHJvbmc+PC9wPicgKwogJzxwIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+TW9ydGdhZ2UgcGF5b2ZmICZhbXA7IG90aGVyIGxpZW5zOiA8c3Ryb25nIGlkPSJzbnAtb3V0LXBheW9mZiIgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij4mbWRhc2g7PC9zdHJvbmc+PC9wPicgKwogJzxwIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+UmVwYWlycywgY3JlZGl0cyAmYW1wOyBjb25jZXNzaW9uczogPHN0cm9uZyBpZD0ic25wLW91dC1yZXBhaXJzIiBzdHlsZT0iY29sb3I6IzFhMWExYTsiPiZtZGFzaDs8L3N0cm9uZz48L3A+JyArCiAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxOHB4O2NvbG9yOiMxYTFhMWE7Ij5Fc3RpbWF0ZWQgbmV0IHByb2NlZWRzOiA8c3Ryb25nIGlkPSJzbnAtb3V0LW5ldHByb2NlZWRzIiBzdHlsZT0iY29sb3I6IzFhMWExYTsiPiZtZGFzaDs8L3N0cm9uZz48L3A+JyArCiAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOiM2NjY7Ij5UaGlzIGlzIGFuIGVzdGltYXRlIGZvciBwbGFubmluZyBwdXJwb3NlcyBvbmx5LCBub3QgYSBwYXlvZmYgc3RhdGVtZW50IG9yIGEgZ3VhcmFudGVlIG9mIHNhbGUgcHJpY2UuIFlvdXIgYWN0dWFsIG5ldCBwcm9jZWVkcyBkZXBlbmQgb24geW91ciBmaW5hbCBwYXlvZmYgYW1vdW50LCBuZWdvdGlhdGVkIGNvbW1pc3Npb24sIGFuZCBjbG9zaW5nIGNvc3RzIGF0IHNldHRsZW1lbnQuPC9wPicgKwogJzwvZGl2PjwvZGl2Pic7CgogdmFyIFBNVF9IVE1MID0KICc8ZGl2IHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICNkOGQ4ZDg7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoyNHB4O21hcmdpbjoyNHB4IDA7YmFja2dyb3VuZDojZmFmYWZhO2NvbG9yOiMxYTFhMWE7Ij4nICsKICc8aDMgc3R5bGU9Im1hcmdpbjowIDAgMTRweDtmb250LXNpemU6MjJweDtjb2xvcjojMWExYTFhOyI+TG9hbiAmYW1wOyBwcm9wZXJ0eSBkZXRhaWxzPC9oMz4nICsKIGlucHV0Um93KCdIb21lIHByaWNlICgkKScsICdwbXQtcHJpY2UnLCAnMzAwMDAwJykgKwogaW5wdXRSb3coJ0Rvd24gcGF5bWVudCAoJSknLCAncG10LWRvd25wY3QnLCAnMTAnKSArCiBpbnB1dFJvdygnSW50ZXJlc3QgcmF0ZSAoYW5udWFsICUpJywgJ3BtdC1yYXRlJywgJzYuNzUnKSArCiBpbnB1dFJvdygnTG9hbiB0ZXJtICh5ZWFycyknLCAncG10LXRlcm0nLCAnMzAnKSArCiBpbnB1dFJvdygnQW5udWFsIHByb3BlcnR5IHRheGVzICgkKScsICdwbXQtdGF4ZXMnLCAnMzIwMCcpICsKIGlucHV0Um93KCdBbm51YWwgaG9tZW93bmVycyBpbnN1cmFuY2UgKCQpJywgJ3BtdC1pbnN1cmFuY2UnLCAnMTUwMCcpICsKIGlucHV0Um93KCdNb250aGx5IEhPQSAoJCknLCAncG10LWhvYScsICcwJykgKwogaW5wdXRSb3coJ0FubnVhbCBQTUkgcmF0ZSAoJSBvZiBsb2FuLCBpZiB1bmRlciAyMCUgZG93biknLCAncG10LXBtaXJhdGUnLCAnMC42JykgKwogJzxwPjxidXR0b24gaWQ9InBtdC1jYWxjdWxhdGUiIHN0eWxlPSJiYWNrZ3JvdW5kOiMxYTNjNWU7Y29sb3I6I2ZmZjtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjZweDtwYWRkaW5nOjEycHggMjhweDtmb250LXNpemU6MTZweDtjdXJzb3I6cG9pbnRlcjsiPkNhbGN1bGF0ZSBteSBwYXltZW50PC9idXR0b24+PC9wPicgKwogJzxkaXYgaWQ9InBtdC1yZXN1bHRzIiBzdHlsZT0iZGlzcGxheTpub25lO21hcmdpbi10b3A6MjBweDtwYWRkaW5nLXRvcDoyMHB4O2JvcmRlci10b3A6MnB4IHNvbGlkICMxYTNjNWU7Y29sb3I6IzFhMWExYTsiPicgKwogJzxoMyBzdHlsZT0ibWFyZ2luOjAgMCAxMHB4O2ZvbnQtc2l6ZToyMnB4O2NvbG9yOiMxYTFhMWE7Ij5Zb3VyIGVzdGltYXRlZCBtb250aGx5IHBheW1lbnQ8L2gzPicgKwogJzxwIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+TG9hbiBhbW91bnQ6IDxzdHJvbmcgaWQ9InBtdC1vdXQtbG9hbiIgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij4mbWRhc2g7PC9zdHJvbmc+PC9wPicgKwogJzxwIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+UHJpbmNpcGFsICZhbXA7IGludGVyZXN0OiA8c3Ryb25nIGlkPSJwbXQtb3V0LXBpIiBzdHlsZT0iY29sb3I6IzFhMWExYTsiPiZtZGFzaDs8L3N0cm9uZz48L3A+JyArCiAnPHAgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij5Nb250aGx5IHByb3BlcnR5IHRheDogPHN0cm9uZyBpZD0icG10LW91dC10YXgiIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+Jm1kYXNoOzwvc3Ryb25nPjwvcD4nICsKICc8cCBzdHlsZT0iY29sb3I6IzFhMWExYTsiPk1vbnRobHkgaW5zdXJhbmNlOiA8c3Ryb25nIGlkPSJwbXQtb3V0LWlucyIgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij4mbWRhc2g7PC9zdHJvbmc+PC9wPicgKwogJzxwIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+TW9udGhseSBQTUk6IDxzdHJvbmcgaWQ9InBtdC1vdXQtcG1pIiBzdHlsZT0iY29sb3I6IzFhMWExYTsiPiZtZGFzaDs8L3N0cm9uZz48L3A+JyArCiAnPHAgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij5Nb250aGx5IEhPQTogPHN0cm9uZyBpZD0icG10LW91dC1ob2EiIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+Jm1kYXNoOzwvc3Ryb25nPjwvcD4nICsKICc8cCBzdHlsZT0iZm9udC1zaXplOjE4cHg7Y29sb3I6IzFhMWExYTsiPlRvdGFsIGVzdGltYXRlZCBtb250aGx5IHBheW1lbnQ6IDxzdHJvbmcgaWQ9InBtdC1vdXQtdG90YWwiIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+Jm1kYXNoOzwvc3Ryb25nPjwvcD4nICsKICc8cCBzdHlsZT0iZm9udC1zaXplOjEzcHg7Y29sb3I6IzY2NjsiPlRoaXMgaXMgYW4gZXN0aW1hdGUgZm9yIHBsYW5uaW5nIHB1cnBvc2VzIG9ubHksIG5vdCBhIGxvYW4gY29tbWl0bWVudC4gQWN0dWFsIHJhdGUsIHRheGVzLCBpbnN1cmFuY2UsIGFuZCBQTUkgZGVwZW5kIG9uIHlvdXIgbGVuZGVyLCBjcmVkaXQsIGFuZCBmaW5hbCBsb2FuIHRlcm1zLjwvcD4nICsKICc8L2Rpdj48L2Rpdj4nOwoKIHZhciBWQV9IVE1MID0KICc8ZGl2IHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICNkOGQ4ZDg7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoyNHB4O21hcmdpbjoyNHB4IDA7YmFja2dyb3VuZDojZmFmYWZhO2NvbG9yOiMxYTFhMWE7Ij4nICsKICc8aDMgc3R5bGU9Im1hcmdpbjowIDAgMTRweDtmb250LXNpemU6MjJweDtjb2xvcjojMWExYTFhOyI+TG9hbiAmYW1wOyBwcm9wZXJ0eSBkZXRhaWxzPC9oMz4nICsKIGlucHV0Um93KCdIb21lIHByaWNlICgkKScsICd2YS1wcmljZScsICczMDAwMDAnKSArCiBpbnB1dFJvdygnRG93biBwYXltZW50ICglLCAwIGZvciB0cnVlICQwLWRvd24gVkEpJywgJ3ZhLWRvd25wY3QnLCAnMCcpICsKIGlucHV0Um93KCdJbnRlcmVzdCByYXRlIChhbm51YWwgJSknLCAndmEtcmF0ZScsICc2LjUnKSArCiBpbnB1dFJvdygnTG9hbiB0ZXJtICh5ZWFycyknLCAndmEtdGVybScsICczMCcpICsKIGlucHV0Um93KCdBbm51YWwgcHJvcGVydHkgdGF4ZXMgKCQpJywgJ3ZhLXRheGVzJywgJzMyMDAnKSArCiBpbnB1dFJvdygnQW5udWFsIGhvbWVvd25lcnMgaW5zdXJhbmNlICgkKScsICd2YS1pbnN1cmFuY2UnLCAnMTUwMCcpICsKIGlucHV0Um93KCdNb250aGx5IEhPQSAoJCknLCAndmEtaG9hJywgJzAnKSArCiAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTJweDtjb2xvcjojMWExYTFhOyI+PGxhYmVsIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2ZvbnQtd2VpZ2h0OjYwMDttYXJnaW4tYm90dG9tOjRweDtjb2xvcjojMWExYTFhOyI+SXMgdGhpcyB5b3VyIGZpcnN0IHRpbWUgdXNpbmcgeW91ciBWQSBsb2FuIGJlbmVmaXQ/PC9sYWJlbD4nICsKICc8c2VsZWN0IGlkPSJ2YS1maXJzdHVzZSIgc3R5bGU9IndpZHRoOjEwMCU7bWF4LXdpZHRoOjMyMHB4O3BhZGRpbmc6OHB4O2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjRweDtjb2xvcjojMWExYTFhO2JhY2tncm91bmQ6I2ZmZjsiPjxvcHRpb24gdmFsdWU9InllcyI+WWVzLCBmaXJzdCB1c2U8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJubyI+Tm8sIHN1YnNlcXVlbnQgdXNlPC9vcHRpb24+PC9zZWxlY3Q+PC9wPicgKwogJzxwIHN0eWxlPSJtYXJnaW46MCAwIDEycHg7Y29sb3I6IzFhMWExYTsiPjxsYWJlbCBzdHlsZT0iZGlzcGxheTpibG9jaztmb250LXdlaWdodDo2MDA7bWFyZ2luLWJvdHRvbTo0cHg7Y29sb3I6IzFhMWExYTsiPkRvIHlvdSByZWNlaXZlIFZBIGRpc2FiaWxpdHkgY29tcGVuc2F0aW9uPzwvbGFiZWw+JyArCiAnPHNlbGVjdCBpZD0idmEtZXhlbXB0IiBzdHlsZT0id2lkdGg6MTAwJTttYXgtd2lkdGg6MzIwcHg7cGFkZGluZzo4cHg7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6NHB4O2NvbG9yOiMxYTFhMWE7YmFja2dyb3VuZDojZmZmOyI+PG9wdGlvbiB2YWx1ZT0ibm8iPk5vPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0ieWVzIj5ZZXMgKGZ1bmRpbmcgZmVlIGV4ZW1wdCk8L29wdGlvbj48L3NlbGVjdD48L3A+JyArCiAnPHA+PGJ1dHRvbiBpZD0idmEtY2FsY3VsYXRlIiBzdHlsZT0iYmFja2dyb3VuZDojMWEzYzVlO2NvbG9yOiNmZmY7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czo2cHg7cGFkZGluZzoxMnB4IDI4cHg7Zm9udC1zaXplOjE2cHg7Y3Vyc29yOnBvaW50ZXI7Ij5DYWxjdWxhdGUgbXkgVkEgcGF5bWVudDwvYnV0dG9uPjwvcD4nICsKICc8ZGl2IGlkPSJ2YS1yZXN1bHRzIiBzdHlsZT0iZGlzcGxheTpub25lO21hcmdpbi10b3A6MjBweDtwYWRkaW5nLXRvcDoyMHB4O2JvcmRlci10b3A6MnB4IHNvbGlkICMxYTNjNWU7Y29sb3I6IzFhMWExYTsiPicgKwogJzxoMyBzdHlsZT0ibWFyZ2luOjAgMCAxMHB4O2ZvbnQtc2l6ZToyMnB4O2NvbG9yOiMxYTFhMWE7Ij5Zb3VyIFZBIGxvYW4gZXN0aW1hdGU8L2gzPicgKwogJzxwIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+VkEgZnVuZGluZyBmZWU6IDxzdHJvbmcgaWQ9InZhLW91dC1mZWVwY3QiIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+Jm1kYXNoOzwvc3Ryb25nPiAoPHNwYW4gaWQ9InZhLW91dC1mZWVhbXQiPiZtZGFzaDs8L3NwYW4+LCBmaW5hbmNlZCBpbnRvIHRoZSBsb2FuKTwvcD4nICsKICc8cCBzdHlsZT0iY29sb3I6IzFhMWExYTsiPlRvdGFsIGxvYW4gYW1vdW50IChpbmNsLiBmdW5kaW5nIGZlZSk6IDxzdHJvbmcgaWQ9InZhLW91dC1sb2FuIiBzdHlsZT0iY29sb3I6IzFhMWExYTsiPiZtZGFzaDs8L3N0cm9uZz48L3A+JyArCiAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxOHB4O2NvbG9yOiMxYTFhMWE7Ij5Fc3RpbWF0ZWQgdG90YWwgbW9udGhseSBwYXltZW50IChWQSk6IDxzdHJvbmcgaWQ9InZhLW91dC10b3RhbCIgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij4mbWRhc2g7PC9zdHJvbmc+PC9wPicgKwogJzxwIHN0eWxlPSJjb2xvcjojMWExYTFhO21hcmdpbi10b3A6MTRweDtwYWRkaW5nLXRvcDoxNHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkOGQ4ZDg7Ij5Gb3IgY29tcGFyaXNvbiAmbWRhc2g7IHRoZSBzYW1lIGhvbWUgd2l0aCAyMCUgZG93biwgY29udmVudGlvbmFsIGZpbmFuY2luZywgbm8gUE1JLCBubyBmdW5kaW5nIGZlZTogPHN0cm9uZyBpZD0idmEtb3V0LWNvbnYiIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+Jm1kYXNoOzwvc3Ryb25nPiwgYnV0IHRoYXQgcmVxdWlyZXMgPHN0cm9uZyBpZD0idmEtb3V0LWNvbnZkb3duIiBzdHlsZT0iY29sb3I6IzFhMWExYTsiPiZtZGFzaDs8L3N0cm9uZz4gY2FzaCBkb3duLiBUaGUgVkEgbG9hbiBnZXRzIHlvdSBpbiB0aGUgZG9vciBmb3IgPHN0cm9uZyBpZD0idmEtb3V0LXZhY2FzaCIgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij4mbWRhc2g7PC9zdHJvbmc+IGNhc2ggdG8gY2xvc2UgKGJlZm9yZSBvdGhlciBjbG9zaW5nIGNvc3RzKS48L3A+JyArCiAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOiM2NjY7Ij5Fc3RpbWF0ZSBvbmx5LCB1c2luZyB0aGUgc3RhbmRhcmQgVkEgZnVuZGluZyBmZWUgc2NoZWR1bGUuIFlvdXIgYWN0dWFsIHJhdGUsIGNsb3NpbmcgY29zdHMsIGFuZCBmdW5kaW5nIGZlZSBkZXBlbmQgb24geW91ciBsZW5kZXIsIGNvdW50eSBsb2FuIGxpbWl0cywgYW5kIENPRS4gTm8gUE1JIGFwcGxpZXMgdG8gVkEgbG9hbnMgcmVnYXJkbGVzcyBvZiBkb3duIHBheW1lbnQuPC9wPicgKwogJzwvZGl2PjwvZGl2Pic7CgogdmFyIERTQ1JfSFRNTCA9CiAnPGRpdiBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCAjZDhkOGQ4O2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MjRweDttYXJnaW46MjRweCAwO2JhY2tncm91bmQ6I2ZhZmFmYTtjb2xvcjojMWExYTFhOyI+JyArCiAnPGgzIHN0eWxlPSJtYXJnaW46MCAwIDE0cHg7Zm9udC1zaXplOjIycHg7Y29sb3I6IzFhMWExYTsiPlByb3BlcnR5ICZhbXA7IGxvYW4gZGV0YWlsczwvaDM+JyArCiBpbnB1dFJvdygnUHVyY2hhc2UgcHJpY2UgKCQpJywgJ2RzY3ItcHJpY2UnLCAnMjUwMDAwJykgKwogaW5wdXRSb3coJ0Rvd24gcGF5bWVudCAoJSknLCAnZHNjci1kb3ducGN0JywgJzI1JykgKwogaW5wdXRSb3coJ0ludGVyZXN0IHJhdGUgKGFubnVhbCAlKScsICdkc2NyLXJhdGUnLCAnOS41JykgKwogaW5wdXRSb3coJ0xvYW4gdGVybSAoeWVhcnMpJywgJ2RzY3ItdGVybScsICczMCcpICsKIGlucHV0Um93KCdFeHBlY3RlZCBtb250aGx5IG1hcmtldCByZW50ICgkKScsICdkc2NyLXJlbnQnLCAnMjIwMCcpICsKIGlucHV0Um93KCdBbm51YWwgcHJvcGVydHkgdGF4ZXMgKCQpJywgJ2RzY3ItdGF4ZXMnLCAnMjgwMCcpICsKIGlucHV0Um93KCdBbm51YWwgaW5zdXJhbmNlICgkKScsICdkc2NyLWluc3VyYW5jZScsICcxNDAwJykgKwogaW5wdXRSb3coJ01vbnRobHkgSE9BIC8gYXNzb2NpYXRpb24gZHVlcyAoJCknLCAnZHNjci1ob2EnLCAnMCcpICsKICc8cD48YnV0dG9uIGlkPSJkc2NyLWNhbGN1bGF0ZSIgc3R5bGU9ImJhY2tncm91bmQ6IzFhM2M1ZTtjb2xvcjojZmZmO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6NnB4O3BhZGRpbmc6MTJweCAyOHB4O2ZvbnQtc2l6ZToxNnB4O2N1cnNvcjpwb2ludGVyOyI+Q2hlY2sgbXkgRFNDUjwvYnV0dG9uPjwvcD4nICsKICc8ZGl2IGlkPSJkc2NyLXJlc3VsdHMiIHN0eWxlPSJkaXNwbGF5Om5vbmU7bWFyZ2luLXRvcDoyMHB4O3BhZGRpbmctdG9wOjIwcHg7Ym9yZGVyLXRvcDoycHggc29saWQgIzFhM2M1ZTtjb2xvcjojMWExYTFhOyI+JyArCiAnPGgzIHN0eWxlPSJtYXJnaW46MCAwIDEwcHg7Zm9udC1zaXplOjIycHg7Y29sb3I6IzFhMWExYTsiPllvdXIgRFNDUiBlc3RpbWF0ZTwvaDM+JyArCiAnPHAgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij5Mb2FuIGFtb3VudDogPHN0cm9uZyBpZD0iZHNjci1vdXQtbG9hbiIgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij4mbWRhc2g7PC9zdHJvbmc+PC9wPicgKwogJzxwIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+TW9udGhseSBQSVRJQSAocHJpbmNpcGFsLCBpbnRlcmVzdCwgdGF4ZXMsIGluc3VyYW5jZSwgSE9BKTogPHN0cm9uZyBpZD0iZHNjci1vdXQtcGl0aWEiIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+Jm1kYXNoOzwvc3Ryb25nPjwvcD4nICsKICc8cCBzdHlsZT0iZm9udC1zaXplOjE4cHg7Y29sb3I6IzFhMWExYTsiPkRlYnQgU2VydmljZSBDb3ZlcmFnZSBSYXRpbzogPHN0cm9uZyBpZD0iZHNjci1vdXQtcmF0aW8iIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+Jm1kYXNoOzwvc3Ryb25nPjwvcD4nICsKICc8cCBpZD0iZHNjci1vdXQtdmVyZGljdCIgc3R5bGU9ImZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjYwMDtwYWRkaW5nOjEwcHggMTRweDtib3JkZXItcmFkaXVzOjZweDtkaXNwbGF5OmlubGluZS1ibG9jazsiPiZtZGFzaDs8L3A+JyArCiAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOiM2NjY7bWFyZ2luLXRvcDoxMHB4OyI+TW9zdCBEU0NSL2ludmVzdG9yIGxvYW4gcHJvZ3JhbXMgd2FudCB0byBzZWUgMS4wMCZuZGFzaDsxLjI1eCBvciBoaWdoZXI7IHNvbWUgd2lsbCBnbyBsb3dlciB3aXRoIGEgcmF0ZSBhZGp1c3RtZW50LiBUaGlzIGlzIGFuIGVzdGltYXRlIHVzaW5nIHR5cGljYWwgMjAyNiBpbnZlc3Rvci1sb2FuIHRlcm1zLCBub3QgYSBzcGVjaWZpYyBsZW5kZXIgcXVvdGUgJm1kYXNoOyAnICsKICc8YSBocmVmPSIvZ2V0LXByZS1hcHByb3ZlZCIgc3R5bGU9ImNvbG9yOiMxYTNjNWU7Ij50ZWxsIHVzIGFib3V0IHlvdXIgZGVhbDwvYT4gYW5kIHdlXCdsbCBjb25uZWN0IHlvdSB3aXRoIG91ciBsZW5kaW5nIHBhcnRuZXJzIGZvciByZWFsIG51bWJlcnMuPC9wPicgKwogJzwvZGl2PjwvZGl2Pic7CgogdmFyIENNUF9GSUVMRFMgPSBbCiB7IGlkOiAncHJpY2UnLCBsYWJlbDogJ1B1cmNoYXNlIHByaWNlICgkKScsIHZhbHVlOiAnMjUwMDAwJyB9LAogeyBpZDogJ2Rvd25wY3QnLCBsYWJlbDogJ0Rvd24gcGF5bWVudCAoJSknLCB2YWx1ZTogJzIwJyB9LAogeyBpZDogJ3JhdGUnLCBsYWJlbDogJ0ludGVyZXN0IHJhdGUgKCUpJywgdmFsdWU6ICc3JyB9LAogeyBpZDogJ3Rlcm0nLCBsYWJlbDogJ0xvYW4gdGVybSAoeXJzKScsIHZhbHVlOiAnMzAnIH0sCiB7IGlkOiAnY2xvc2luZycsIGxhYmVsOiAnQ2xvc2luZyBjb3N0cyAoJCknLCB2YWx1ZTogJzQwMDAnIH0sCiB7IGlkOiAncmVudCcsIGxhYmVsOiAnTW9udGhseSByZW50ICgkKScsIHZhbHVlOiAnMjIwMCcgfSwKIHsgaWQ6ICd2YWNhbmN5JywgbGFiZWw6ICdWYWNhbmN5ICglKScsIHZhbHVlOiAnNScgfSwKIHsgaWQ6ICd0YXhlcycsIGxhYmVsOiAnQW5udWFsIHRheGVzICgkKScsIHZhbHVlOiAnMjgwMCcgfSwKIHsgaWQ6ICdpbnN1cmFuY2UnLCBsYWJlbDogJ0FubnVhbCBpbnN1cmFuY2UgKCQpJywgdmFsdWU6ICcxNDAwJyB9LAogeyBpZDogJ2hvYScsIGxhYmVsOiAnTW9udGhseSBIT0EgKCQpJywgdmFsdWU6ICcwJyB9LAogeyBpZDogJ21haW50JywgbGFiZWw6ICdNYWludGVuYW5jZSAoJSByZW50KScsIHZhbHVlOiAnOCcgfSwKIHsgaWQ6ICdtZ210JywgbGFiZWw6ICdNZ210ICglIHJlbnQpJywgdmFsdWU6ICc4JyB9LAogeyBpZDogJ2hvbGQnLCBsYWJlbDogJ0hvbGQgcGVyaW9kICh5cnMpJywgdmFsdWU6ICc1JyB9LAogeyBpZDogJ2FwcHInLCBsYWJlbDogJ0FwcHJlY2lhdGlvbiAoJS95ciknLCB2YWx1ZTogJzMnIH0sCiB7IGlkOiAnc2VsbGNvc3QnLCBsYWJlbDogJ1NlbGxpbmcgY29zdHMgYXQgZXhpdCAoJSknLCB2YWx1ZTogJzcnIH0KIF07CiB2YXIgQ01QX0NPTFMgPSBbJ1Byb3BlcnR5IEEnLCAnUHJvcGVydHkgQicsICdQcm9wZXJ0eSBDJ107CgogdmFyIENNUF9IVE1MID0KICc8ZGl2IHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICNkOGQ4ZDg7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoyNHB4O21hcmdpbjoyNHB4IDA7YmFja2dyb3VuZDojZmFmYWZhO2NvbG9yOiMxYTFhMWE7Ij4nICsKICc8aDMgc3R5bGU9Im1hcmdpbjowIDAgMTRweDtmb250LXNpemU6MjJweDtjb2xvcjojMWExYTFhOyI+Q29tcGFyZSB1cCB0byAzIHByb3BlcnRpZXM8L2gzPicgKwogZmllbGRUYWJsZShDTVBfRklFTERTLCAnY21wJywgQ01QX0NPTFMpICsKICc8cCBzdHlsZT0ibWFyZ2luLXRvcDoxNnB4OyI+PGJ1dHRvbiBpZD0iY21wLWNhbGN1bGF0ZSIgc3R5bGU9ImJhY2tncm91bmQ6IzFhM2M1ZTtjb2xvcjojZmZmO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6NnB4O3BhZGRpbmc6MTJweCAyOHB4O2ZvbnQtc2l6ZToxNnB4O2N1cnNvcjpwb2ludGVyOyI+Q29tcGFyZSByZXR1cm5zPC9idXR0b24+PC9wPicgKwogJzxkaXYgaWQ9ImNtcC1yZXN1bHRzIiBzdHlsZT0iZGlzcGxheTpub25lO21hcmdpbi10b3A6MjBweDtwYWRkaW5nLXRvcDoyMHB4O2JvcmRlci10b3A6MnB4IHNvbGlkICMxYTNjNWU7Y29sb3I6IzFhMWExYTtvdmVyZmxvdy14OmF1dG87Ij4nICsKICc8aDMgc3R5bGU9Im1hcmdpbjowIDAgMTBweDtmb250LXNpemU6MjJweDtjb2xvcjojMWExYTFhOyI+UmVzdWx0czwvaDM+JyArCiAnPHRhYmxlIGlkPSJjbXAtcmVzdWx0cy10YWJsZSIgc3R5bGU9ImJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTt3aWR0aDoxMDAlO21pbi13aWR0aDo1NjBweDsiPjwvdGFibGU+JyArCiAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOiM2NjY7bWFyZ2luLXRvcDoxMnB4OyI+SVJSIGFzc3VtZXMgdGhlIGVudGVyZWQgY2FzaCBmbG93IGhvbGRzIHN0ZWFkeSBlYWNoIHllYXIgb2YgdGhlIGhvbGQgcGVyaW9kLCB0aGVuIHRoZSBwcm9wZXJ0eSBzZWxscyBhdCB0aGUgZW50ZXJlZCBhcHByZWNpYXRpb24gcmF0ZSBuZXQgb2Ygc2VsbGluZyBjb3N0cyBhbmQgcmVtYWluaW5nIGxvYW4gYmFsYW5jZS4gVGhpcyBpcyBhIHBsYW5uaW5nIGVzdGltYXRlIG9ubHksIG5vdCBhIGd1YXJhbnRlZSBvZiBwZXJmb3JtYW5jZS48L3A+JyArCiAnPC9kaXY+PC9kaXY+JzsKCiBmdW5jdGlvbiBpbmplY3RDYWxjdWxhdG9yKG1hcmtlclRleHQsIGh0bWwsIHdpcmVGbikgewogdmFyIHAgPSBmaW5kTWFya2VyUGFyYWdyYXBoKG1hcmtlclRleHQpOwogaWYgKCFwKSByZXR1cm47CiAvLyBJbnNlcnQgYW4gb24tcGFnZSBIMSAodGhlIHBhZ2Ugb3RoZXJ3aXNlIGhhcyBubyBIMSkgdXNpbmcgdGhpcyBwYXRoJ3MgaGVhZGxpbmUsCiAvLyByaWdodCBiZWZvcmUgdGhlIGNhbGN1bGF0b3IsIG9ubHkgaWYgdGhlIHBhZ2UgZG9lc24ndCBhbHJlYWR5IGhhdmUgb25lLgogaWYgKGNmZy5oZWFkbGluZSAmJiAhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaDEnKSkgewogdmFyIGgxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaDEnKTsKIGgxLnRleHRDb250ZW50ID0gY2ZnLmhlYWRsaW5lOwogaDEuc3R5bGUuY3NzVGV4dCA9ICdmb250LXNpemU6MzRweDtmb250LXdlaWdodDo3MDA7bGluZS1oZWlnaHQ6MS4yNTttYXJnaW46MCAwIDE2cHg7Y29sb3I6IzFhMWExYTsnOwogcC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShoMSwgcCk7CiB9CiB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiBjb250YWluZXIuaW5uZXJIVE1MID0gaHRtbDsKIHAucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoY29udGFpbmVyLCBwKTsKIHdpcmVGbigpOwogfQoKIGZ1bmN0aW9uIHdpcmVJUEEoKSB7CiB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lwYS1jYWxjdWxhdGUnKTsKIGlmICghYnRuKSByZXR1cm47CiBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiB2YXIgcHJpY2UgPSBudW0oJ2lwYS1wcmljZScpOwogdmFyIGRvd25QY3QgPSBudW0oJ2lwYS1kb3ducGN0Jyk7CiB2YXIgcmF0ZSA9IG51bSgnaXBhLXJhdGUnKTsKIHZhciB0ZXJtID0gbnVtKCdpcGEtdGVybScpOwogdmFyIGNsb3NpbmcgPSBudW0oJ2lwYS1jbG9zaW5nJyk7CiB2YXIgcmVudCA9IG51bSgnaXBhLXJlbnQnKTsKIHZhciB2YWNhbmN5ID0gbnVtKCdpcGEtdmFjYW5jeScpOwogdmFyIHRheGVzID0gbnVtKCdpcGEtdGF4ZXMnKTsKIHZhciBpbnN1cmFuY2UgPSBudW0oJ2lwYS1pbnN1cmFuY2UnKTsKIHZhciBob2EgPSBudW0oJ2lwYS1ob2EnKTsKIHZhciBtYWludGVuYW5jZSA9IG51bSgnaXBhLW1haW50ZW5hbmNlJyk7CiB2YXIgbWdtdCA9IG51bSgnaXBhLW1nbXQnKTsKIHZhciBvdGhlcmV4cCA9IG51bSgnaXBhLW90aGVyZXhwJyk7CgogdmFyIGxvYW5BbW91bnQgPSBwcmljZSAqICgxIC0gZG93blBjdCAvIDEwMCk7CiB2YXIgbW9udGhseVJhdGUgPSAocmF0ZSAvIDEwMCkgLyAxMjsKIHZhciBuID0gdGVybSAqIDEyOwogdmFyIG1vbnRobHlQSTsKIGlmIChtb250aGx5UmF0ZSA9PT0gMCB8fCBuID09PSAwKSB7CiBtb250aGx5UEkgPSBuID4gMCA/IGxvYW5BbW91bnQgLyBuIDogMDsKIH0gZWxzZSB7CiBtb250aGx5UEkgPSBsb2FuQW1vdW50ICogKG1vbnRobHlSYXRlICogTWF0aC5wb3coMSArIG1vbnRobHlSYXRlLCBuKSkgLyAoTWF0aC5wb3coMSArIG1vbnRobHlSYXRlLCBuKSAtIDEpOwogfQogdmFyIGVmZmVjdGl2ZUFubnVhbFJlbnQgPSByZW50ICogKDEgLSB2YWNhbmN5IC8gMTAwKSAqIDEyOwogdmFyIGFubnVhbE9wRXggPSB0YXhlcyArIGluc3VyYW5jZSArIChob2EgKiAxMikgKyAobWFpbnRlbmFuY2UgLyAxMDAgKiByZW50ICogMTIpICsgKG1nbXQgLyAxMDAgKiByZW50ICogMTIpICsgKG90aGVyZXhwICogMTIpOwogdmFyIG5vaSA9IGVmZmVjdGl2ZUFubnVhbFJlbnQgLSBhbm51YWxPcEV4OwogdmFyIGNhcFJhdGUgPSBwcmljZSA+IDAgPyAobm9pIC8gcHJpY2UpICogMTAwIDogMDsKIHZhciBhbm51YWxEZWJ0U2VydmljZSA9IG1vbnRobHlQSSAqIDEyOwogdmFyIGFubnVhbENhc2hGbG93ID0gbm9pIC0gYW5udWFsRGVidFNlcnZpY2U7CiB2YXIgbW9udGhseUNhc2hGbG93ID0gYW5udWFsQ2FzaEZsb3cgLyAxMjsKIHZhciB0b3RhbENhc2hJbnZlc3RlZCA9IChwcmljZSAqIChkb3duUGN0IC8gMTAwKSkgKyBjbG9zaW5nOwogdmFyIGNvYyA9IHRvdGFsQ2FzaEludmVzdGVkID4gMCA/IChhbm51YWxDYXNoRmxvdyAvIHRvdGFsQ2FzaEludmVzdGVkKSAqIDEwMCA6IDA7CgogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lwYS1vdXQtbG9hbicpLnRleHRDb250ZW50ID0gZm10VVNEKGxvYW5BbW91bnQpOwogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lwYS1vdXQtcGknKS50ZXh0Q29udGVudCA9IGZtdFVTRChtb250aGx5UEkpICsgIi9tbyI7CiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXBhLW91dC1ub2knKS50ZXh0Q29udGVudCA9IGZtdFVTRChub2kpOwogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lwYS1vdXQtY2FwcmF0ZScpLnRleHRDb250ZW50ID0gZm10UGN0KGNhcFJhdGUpOwogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lwYS1vdXQtY2FzaGZsb3ctbScpLnRleHRDb250ZW50ID0gZm10VVNEKG1vbnRobHlDYXNoRmxvdyk7CiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXBhLW91dC1jYXNoZmxvdy1hJykudGV4dENvbnRlbnQgPSBmbXRVU0QoYW5udWFsQ2FzaEZsb3cpOwogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lwYS1vdXQtY2FzaGludmVzdGVkJykudGV4dENvbnRlbnQgPSBmbXRVU0QodG90YWxDYXNoSW52ZXN0ZWQpOwogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lwYS1vdXQtY29jJykudGV4dENvbnRlbnQgPSBmbXRQY3QoY29jKTsKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpcGEtcmVzdWx0cycpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogfSk7CiB9CgogZnVuY3Rpb24gd2lyZVNOUCgpIHsKIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc25wLWNhbGN1bGF0ZScpOwogaWYgKCFidG4pIHJldHVybjsKIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKIHZhciBwcmljZSA9IG51bSgnc25wLXByaWNlJyk7CiB2YXIgcGF5b2ZmID0gbnVtKCdzbnAtcGF5b2ZmJyk7CiB2YXIgY29tbWlzc2lvblBjdCA9IG51bSgnc25wLWNvbW1pc3Npb24nKTsKIHZhciBjbG9zaW5nUGN0ID0gbnVtKCdzbnAtY2xvc2luZ3BjdCcpOwogdmFyIHJlcGFpcnMgPSBudW0oJ3NucC1yZXBhaXJzJyk7CiB2YXIgb3RoZXJsaWVucyA9IG51bSgnc25wLW90aGVybGllbnMnKTsKCiB2YXIgY29tbWlzc2lvbiA9IHByaWNlICogKGNvbW1pc3Npb25QY3QgLyAxMDApOwogdmFyIHRyYW5zZmVyVGF4ID0gcHJpY2UgKiAwLjAwMTsKIHZhciBjbG9zaW5nQ29zdHMgPSBwcmljZSAqIChjbG9zaW5nUGN0IC8gMTAwKTsKIHZhciB0b3RhbENvc3RzID0gY29tbWlzc2lvbiArIHRyYW5zZmVyVGF4ICsgY2xvc2luZ0Nvc3RzICsgcGF5b2ZmICsgb3RoZXJsaWVucyArIHJlcGFpcnM7CiB2YXIgbmV0UHJvY2VlZHMgPSBwcmljZSAtIHRvdGFsQ29zdHM7CgogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NucC1vdXQtY29tbWlzc2lvbicpLnRleHRDb250ZW50ID0gZm10VVNEKGNvbW1pc3Npb24pOwogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NucC1vdXQtdHJhbnNmZXJ0YXgnKS50ZXh0Q29udGVudCA9IGZtdFVTRCh0cmFuc2ZlclRheCk7CiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc25wLW91dC1jbG9zaW5nY29zdHMnKS50ZXh0Q29udGVudCA9IGZtdFVTRChjbG9zaW5nQ29zdHMpOwogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NucC1vdXQtcGF5b2ZmJykudGV4dENvbnRlbnQgPSBmbXRVU0QocGF5b2ZmICsgb3RoZXJsaWVucyk7CiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc25wLW91dC1yZXBhaXJzJykudGV4dENvbnRlbnQgPSBmbXRVU0QocmVwYWlycyk7CiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc25wLW91dC1uZXRwcm9jZWVkcycpLnRleHRDb250ZW50ID0gZm10VVNEKG5ldFByb2NlZWRzKTsKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzbnAtcmVzdWx0cycpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogfSk7CiB9CgogZnVuY3Rpb24gd2lyZVBNVCgpIHsKIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG10LWNhbGN1bGF0ZScpOwogaWYgKCFidG4pIHJldHVybjsKIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKIHZhciBwcmljZSA9IG51bSgncG10LXByaWNlJyk7CiB2YXIgZG93blBjdCA9IG51bSgncG10LWRvd25wY3QnKTsKIHZhciByYXRlID0gbnVtKCdwbXQtcmF0ZScpOwogdmFyIHRlcm0gPSBudW0oJ3BtdC10ZXJtJyk7CiB2YXIgdGF4ZXMgPSBudW0oJ3BtdC10YXhlcycpOwogdmFyIGluc3VyYW5jZSA9IG51bSgncG10LWluc3VyYW5jZScpOwogdmFyIGhvYSA9IG51bSgncG10LWhvYScpOwogdmFyIHBtaVJhdGUgPSBudW0oJ3BtdC1wbWlyYXRlJyk7CgogdmFyIGxvYW5BbW91bnQgPSBwcmljZSAqICgxIC0gZG93blBjdCAvIDEwMCk7CiB2YXIgcGkgPSBhbW9ydFBJKGxvYW5BbW91bnQsIHJhdGUsIHRlcm0pOwogdmFyIG1vbnRobHlUYXggPSB0YXhlcyAvIDEyOwogdmFyIG1vbnRobHlJbnMgPSBpbnN1cmFuY2UgLyAxMjsKIHZhciBtb250aGx5UE1JID0gZG93blBjdCA8IDIwID8gKGxvYW5BbW91bnQgKiAocG1pUmF0ZSAvIDEwMCkgLyAxMikgOiAwOwogdmFyIHRvdGFsID0gcGkgKyBtb250aGx5VGF4ICsgbW9udGhseUlucyArIG1vbnRobHlQTUkgKyBob2E7CgogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BtdC1vdXQtbG9hbicpLnRleHRDb250ZW50ID0gZm10VVNEKGxvYW5BbW91bnQpOwogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BtdC1vdXQtcGknKS50ZXh0Q29udGVudCA9IGZtdFVTRChwaSkgKyAnL21vJzsKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbXQtb3V0LXRheCcpLnRleHRDb250ZW50ID0gZm10VVNEKG1vbnRobHlUYXgpICsgJy9tbyc7CiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG10LW91dC1pbnMnKS50ZXh0Q29udGVudCA9IGZtdFVTRChtb250aGx5SW5zKSArICcvbW8nOwogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BtdC1vdXQtcG1pJykudGV4dENvbnRlbnQgPSBkb3duUGN0IDwgMjAgPyAoZm10VVNEKG1vbnRobHlQTUkpICsgJy9tbycpIDogJ05vdCBhcHBsaWNhYmxlICgyMCUrIGRvd24pJzsKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbXQtb3V0LWhvYScpLnRleHRDb250ZW50ID0gZm10VVNEKGhvYSkgKyAnL21vJzsKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbXQtb3V0LXRvdGFsJykudGV4dENvbnRlbnQgPSBmbXRVU0QodG90YWwpICsgJy9tbyc7CiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG10LXJlc3VsdHMnKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKIH0pOwogfQoKIGZ1bmN0aW9uIHZhRnVuZGluZ0ZlZVBjdChkb3duUGN0LCBmaXJzdFVzZSwgZXhlbXB0KSB7CiBpZiAoZXhlbXB0KSByZXR1cm4gMDsKIHZhciB0YWJsZSA9IGZpcnN0VXNlCiA/IFtbNSwgMi4xNV0sIFsxMCwgMS41XSwgW0luZmluaXR5LCAxLjI1XV0KIDogW1s1LCAzLjNdLCBbMTAsIDEuNV0sIFtJbmZpbml0eSwgMS4yNV1dOwogZm9yICh2YXIgaSA9IDA7IGkgPCB0YWJsZS5sZW5ndGg7IGkrKykgewogaWYgKGRvd25QY3QgPCB0YWJsZVtpXVswXSkgcmV0dXJuIHRhYmxlW2ldWzFdOwogfQogcmV0dXJuIHRhYmxlW3RhYmxlLmxlbmd0aCAtIDFdWzFdOwogfQoKIGZ1bmN0aW9uIHdpcmVWQSgpIHsKIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmEtY2FsY3VsYXRlJyk7CiBpZiAoIWJ0bikgcmV0dXJuOwogYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogdmFyIHByaWNlID0gbnVtKCd2YS1wcmljZScpOwogdmFyIGRvd25QY3QgPSBudW0oJ3ZhLWRvd25wY3QnKTsKIHZhciByYXRlID0gbnVtKCd2YS1yYXRlJyk7CiB2YXIgdGVybSA9IG51bSgndmEtdGVybScpOwogdmFyIHRheGVzID0gbnVtKCd2YS10YXhlcycpOwogdmFyIGluc3VyYW5jZSA9IG51bSgndmEtaW5zdXJhbmNlJyk7CiB2YXIgaG9hID0gbnVtKCd2YS1ob2EnKTsKIHZhciBmaXJzdFVzZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2YS1maXJzdHVzZScpLnZhbHVlID09PSAneWVzJzsKIHZhciBleGVtcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmEtZXhlbXB0JykudmFsdWUgPT09ICd5ZXMnOwoKIHZhciBkb3duQW10ID0gcHJpY2UgKiAoZG93blBjdCAvIDEwMCk7CiB2YXIgYmFzZUxvYW4gPSBwcmljZSAtIGRvd25BbXQ7CiB2YXIgZmVlUGN0ID0gdmFGdW5kaW5nRmVlUGN0KGRvd25QY3QsIGZpcnN0VXNlLCBleGVtcHQpOwogdmFyIGZlZUFtdCA9IGJhc2VMb2FuICogKGZlZVBjdCAvIDEwMCk7CiB2YXIgdG90YWxMb2FuID0gYmFzZUxvYW4gKyBmZWVBbXQ7CiB2YXIgcGkgPSBhbW9ydFBJKHRvdGFsTG9hbiwgcmF0ZSwgdGVybSk7CiB2YXIgbW9udGhseVRheCA9IHRheGVzIC8gMTI7CiB2YXIgbW9udGhseUlucyA9IGluc3VyYW5jZSAvIDEyOwogdmFyIHRvdGFsID0gcGkgKyBtb250aGx5VGF4ICsgbW9udGhseUlucyArIGhvYTsKCiB2YXIgY29udkRvd24gPSBwcmljZSAqIDAuMjA7CiB2YXIgY29udkxvYW4gPSBwcmljZSAtIGNvbnZEb3duOwogdmFyIGNvbnZQSSA9IGFtb3J0UEkoY29udkxvYW4sIHJhdGUsIHRlcm0pOwogdmFyIGNvbnZUb3RhbCA9IGNvbnZQSSArIG1vbnRobHlUYXggKyBtb250aGx5SW5zICsgaG9hOwoKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2YS1vdXQtZmVlcGN0JykudGV4dENvbnRlbnQgPSBmbXRQY3QoZmVlUGN0KTsKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2YS1vdXQtZmVlYW10JykudGV4dENvbnRlbnQgPSBmbXRVU0QoZmVlQW10KTsKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2YS1vdXQtbG9hbicpLnRleHRDb250ZW50ID0gZm10VVNEKHRvdGFsTG9hbik7CiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmEtb3V0LXRvdGFsJykudGV4dENvbnRlbnQgPSBmbXRVU0QodG90YWwpICsgJy9tbyc7CiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmEtb3V0LWNvbnYnKS50ZXh0Q29udGVudCA9IGZtdFVTRChjb252VG90YWwpICsgJy9tbyc7CiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmEtb3V0LWNvbnZkb3duJykudGV4dENvbnRlbnQgPSBmbXRVU0QoY29udkRvd24pOwogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZhLW91dC12YWNhc2gnKS50ZXh0Q29udGVudCA9IGZtdFVTRChkb3duQW10KTsKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2YS1yZXN1bHRzJykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiB9KTsKIH0KCiBmdW5jdGlvbiB3aXJlRFNDUigpIHsKIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHNjci1jYWxjdWxhdGUnKTsKIGlmICghYnRuKSByZXR1cm47CiBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiB2YXIgcHJpY2UgPSBudW0oJ2RzY3ItcHJpY2UnKTsKIHZhciBkb3duUGN0ID0gbnVtKCdkc2NyLWRvd25wY3QnKTsKIHZhciByYXRlID0gbnVtKCdkc2NyLXJhdGUnKTsKIHZhciB0ZXJtID0gbnVtKCdkc2NyLXRlcm0nKTsKIHZhciByZW50ID0gbnVtKCdkc2NyLXJlbnQnKTsKIHZhciB0YXhlcyA9IG51bSgnZHNjci10YXhlcycpOwogdmFyIGluc3VyYW5jZSA9IG51bSgnZHNjci1pbnN1cmFuY2UnKTsKIHZhciBob2EgPSBudW0oJ2RzY3ItaG9hJyk7CgogdmFyIGxvYW5BbW91bnQgPSBwcmljZSAqICgxIC0gZG93blBjdCAvIDEwMCk7CiB2YXIgcGkgPSBhbW9ydFBJKGxvYW5BbW91bnQsIHJhdGUsIHRlcm0pOwogdmFyIHBpdGlhID0gcGkgKyAodGF4ZXMgLyAxMikgKyAoaW5zdXJhbmNlIC8gMTIpICsgaG9hOwogdmFyIGRzY3IgPSBwaXRpYSA+IDAgPyByZW50IC8gcGl0aWEgOiAwOwoKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkc2NyLW91dC1sb2FuJykudGV4dENvbnRlbnQgPSBmbXRVU0QobG9hbkFtb3VudCk7CiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHNjci1vdXQtcGl0aWEnKS50ZXh0Q29udGVudCA9IGZtdFVTRChwaXRpYSkgKyAnL21vJzsKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkc2NyLW91dC1yYXRpbycpLnRleHRDb250ZW50ID0gZHNjci50b0ZpeGVkKDIpICsgJ3gnOwoKIHZhciB2ZXJkaWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RzY3Itb3V0LXZlcmRpY3QnKTsKIGlmIChkc2NyID49IDEuMjUpIHsKIHZlcmRpY3QudGV4dENvbnRlbnQgPSAnU3Ryb25nIOKAlCB0eXBpY2FsbHkgcXVhbGlmaWVzIGF0IG1vc3QgRFNDUiBsZW5kZXJz4oCZIGJlc3QgcHJpY2luZyB0aWVycy4nOwogdmVyZGljdC5zdHlsZS5iYWNrZ3JvdW5kID0gJyNlNmY0ZWEnOyB2ZXJkaWN0LnN0eWxlLmNvbG9yID0gJyMxZTdhMzQnOwogfSBlbHNlIGlmIChkc2NyID49IDEuMCkgewogdmVyZGljdC50ZXh0Q29udGVudCA9ICdRdWFsaWZ5aW5nIHJhbmdlIGZvciBtYW55IERTQ1IgcHJvZ3JhbXMsIHRob3VnaCBwb3NzaWJseSB3aXRoIGEgcmF0ZSBhZGp1c3RtZW50Lic7CiB2ZXJkaWN0LnN0eWxlLmJhY2tncm91bmQgPSAnI2ZmZjRlMCc7IHZlcmRpY3Quc3R5bGUuY29sb3IgPSAnIzhhNWEwMCc7CiB9IGVsc2UgewogdmVyZGljdC50ZXh0Q29udGVudCA9ICdCZWxvdyAxLjAweCDigJQgdGhlIHByb3BlcnR5IGRvZXNu4oCZdCBjb3ZlciBpdHMgb3duIGRlYnQgc2VydmljZSBhdCB0aGVzZSB0ZXJtcy4gQSBsYXJnZXIgZG93biBwYXltZW50IG9yIGhpZ2hlciByZW50IHdvdWxkIGhlbHAuJzsKIHZlcmRpY3Quc3R5bGUuYmFja2dyb3VuZCA9ICcjZmJlN2U3JzsgdmVyZGljdC5zdHlsZS5jb2xvciA9ICcjYTAyMDIwJzsKIH0KIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkc2NyLXJlc3VsdHMnKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKIH0pOwogfQoKIGZ1bmN0aW9uIHdpcmVDTVAoKSB7CiB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NtcC1jYWxjdWxhdGUnKTsKIGlmICghYnRuKSByZXR1cm47CiBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiB2YXIgcm93cyA9IFsKIHsga2V5OiAnY2FwUmF0ZScsIGxhYmVsOiAnQ2FwIHJhdGUnLCBmbXQ6IGZtdFBjdCB9LAogeyBrZXk6ICdjb2MnLCBsYWJlbDogJ0Nhc2gtb24tY2FzaCByZXR1cm4nLCBmbXQ6IGZtdFBjdCB9LAogeyBrZXk6ICdub2knLCBsYWJlbDogJ05ldCBvcGVyYXRpbmcgaW5jb21lIChhbm51YWwpJywgZm10OiBmbXRVU0QgfSwKIHsga2V5OiAnYW5udWFsQ2FzaEZsb3cnLCBsYWJlbDogJ0FubnVhbCBjYXNoIGZsb3cnLCBmbXQ6IGZtdFVTRCB9LAogeyBrZXk6ICduZXRTYWxlUHJvY2VlZHMnLCBsYWJlbDogJ0VzdC4gbmV0IHNhbGUgcHJvY2VlZHMgYXQgZXhpdCcsIGZtdDogZm10VVNEIH0sCiB7IGtleTogJ2lyclBjdCcsIGxhYmVsOiAnSVJSIG92ZXIgaG9sZCBwZXJpb2QnLCBmbXQ6IGZtdFBjdCB9CiBdOwogdmFyIHJlc3VsdHMgPSBbXTsKIGZvciAodmFyIGMgPSAwOyBjIDwgQ01QX0NPTFMubGVuZ3RoOyBjKyspIHsKIHZhciBnID0gKGZ1bmN0aW9uIChjb2wpIHsgcmV0dXJuIGZ1bmN0aW9uIChpZCkgeyByZXR1cm4gbnVtKCdjbXAnICsgY29sICsgJy0nICsgaWQpOyB9OyB9KShjKTsKIHZhciBwcmljZSA9IGcoJ3ByaWNlJyksIGRvd25QY3QgPSBnKCdkb3ducGN0JyksIHJhdGUgPSBnKCdyYXRlJyksIHRlcm0gPSBnKCd0ZXJtJyksCiBjbG9zaW5nID0gZygnY2xvc2luZycpLCByZW50ID0gZygncmVudCcpLCB2YWNhbmN5ID0gZygndmFjYW5jeScpLCB0YXhlcyA9IGcoJ3RheGVzJyksCiBpbnN1cmFuY2UgPSBnKCdpbnN1cmFuY2UnKSwgaG9hID0gZygnaG9hJyksIG1haW50ID0gZygnbWFpbnQnKSwgbWdtdCA9IGcoJ21nbXQnKSwKIGhvbGQgPSBnKCdob2xkJyksIGFwcHIgPSBnKCdhcHByJyksIHNlbGxjb3N0ID0gZygnc2VsbGNvc3QnKTsKCiB2YXIgbG9hbkFtb3VudCA9IHByaWNlICogKDEgLSBkb3duUGN0IC8gMTAwKTsKIHZhciBwaSA9IGFtb3J0UEkobG9hbkFtb3VudCwgcmF0ZSwgdGVybSk7CiB2YXIgYW5udWFsUmVudCA9IHJlbnQgKiAxMiAqICgxIC0gdmFjYW5jeSAvIDEwMCk7CiB2YXIgYW5udWFsT3BFeCA9IHRheGVzICsgaW5zdXJhbmNlICsgKGhvYSAqIDEyKSArIChtYWludCAvIDEwMCAqIHJlbnQgKiAxMikgKyAobWdtdCAvIDEwMCAqIHJlbnQgKiAxMik7CiB2YXIgbm9pID0gYW5udWFsUmVudCAtIGFubnVhbE9wRXg7CiB2YXIgYW5udWFsRGVidFNlcnZpY2UgPSBwaSAqIDEyOwogdmFyIGFubnVhbENhc2hGbG93ID0gbm9pIC0gYW5udWFsRGVidFNlcnZpY2U7CiB2YXIgY2FwUmF0ZSA9IHByaWNlID4gMCA/IChub2kgLyBwcmljZSkgKiAxMDAgOiAwOwogdmFyIHRvdGFsQ2FzaEludmVzdGVkID0gKHByaWNlICogKGRvd25QY3QgLyAxMDApKSArIGNsb3Npbmc7CiB2YXIgY29jID0gdG90YWxDYXNoSW52ZXN0ZWQgPiAwID8gKGFubnVhbENhc2hGbG93IC8gdG90YWxDYXNoSW52ZXN0ZWQpICogMTAwIDogMDsKCiB2YXIgcmVtQmFsID0gcmVtYWluaW5nTG9hbkJhbGFuY2UobG9hbkFtb3VudCwgcmF0ZSwgdGVybSwgaG9sZCAqIDEyKTsKIHZhciBleGl0UHJpY2UgPSBwcmljZSAqIE1hdGgucG93KDEgKyBhcHByIC8gMTAwLCBob2xkKTsKIHZhciBzZWxsaW5nQ29zdHMgPSBleGl0UHJpY2UgKiAoc2VsbGNvc3QgLyAxMDApOwogdmFyIG5ldFNhbGVQcm9jZWVkcyA9IGV4aXRQcmljZSAtIHNlbGxpbmdDb3N0cyAtIHJlbUJhbDsKCiB2YXIgY2FzaGZsb3dzID0gWy10b3RhbENhc2hJbnZlc3RlZF07CiBmb3IgKHZhciB5ID0gMTsgeSA8PSBob2xkOyB5KyspIHsKIHZhciBjZiA9IGFubnVhbENhc2hGbG93OwogaWYgKHkgPT09IGhvbGQpIGNmICs9IG5ldFNhbGVQcm9jZWVkczsKIGNhc2hmbG93cy5wdXNoKGNmKTsKIH0KIHZhciBpcnJSYXRlID0gaXJyU29sdmUoY2FzaGZsb3dzKTsKIHZhciBpcnJQY3QgPSBpcnJSYXRlID09PSBudWxsID8gTmFOIDogaXJyUmF0ZSAqIDEwMDsKCiByZXN1bHRzLnB1c2goeyBjYXBSYXRlOiBjYXBSYXRlLCBjb2M6IGNvYywgbm9pOiBub2ksIGFubnVhbENhc2hGbG93OiBhbm51YWxDYXNoRmxvdywgbmV0U2FsZVByb2NlZWRzOiBuZXRTYWxlUHJvY2VlZHMsIGlyclBjdDogaXJyUGN0IH0pOwogfQoKIHZhciBiZXN0SWR4ID0gMCwgYmVzdFZhbCA9IC1JbmZpbml0eTsKIGZvciAodmFyIGJpID0gMDsgYmkgPCByZXN1bHRzLmxlbmd0aDsgYmkrKykgewogaWYgKGlzRmluaXRlKHJlc3VsdHNbYmldLmlyclBjdCkgJiYgcmVzdWx0c1tiaV0uaXJyUGN0ID4gYmVzdFZhbCkgeyBiZXN0VmFsID0gcmVzdWx0c1tiaV0uaXJyUGN0OyBiZXN0SWR4ID0gYmk7IH0KIH0KCiB2YXIgaHRtbCA9ICc8dHI+PHRoIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7cGFkZGluZzo2cHggMTBweCA2cHggMDtjb2xvcjojMWExYTFhOyI+PC90aD4nOwogZm9yICh2YXIgaCA9IDA7IGggPCBDTVBfQ09MUy5sZW5ndGg7IGgrKykgewogaHRtbCArPSAnPHRoIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7cGFkZGluZzo2cHggMTBweDtjb2xvcjojMWExYTFhOyI+JyArIENNUF9DT0xTW2hdICsgKGggPT09IGJlc3RJZHggPyAnIOKYhSBiZXN0IElSUicgOiAnJykgKyAnPC90aD4nOwogfQogaHRtbCArPSAnPC90cj4nOwogZm9yICh2YXIgciA9IDA7IHIgPCByb3dzLmxlbmd0aDsgcisrKSB7CiBodG1sICs9ICc8dHI+PHRkIHN0eWxlPSJwYWRkaW5nOjZweCAxMHB4IDZweCAwO2NvbG9yOiMxYTFhMWE7Zm9udC13ZWlnaHQ6NjAwOyI+JyArIHJvd3Nbcl0ubGFiZWwgKyAnPC90ZD4nOwogZm9yICh2YXIgYzIgPSAwOyBjMiA8IHJlc3VsdHMubGVuZ3RoOyBjMisrKSB7CiB2YXIgdmFsID0gcmVzdWx0c1tjMl1bcm93c1tyXS5rZXldOwogaHRtbCArPSAnPHRkIHN0eWxlPSJwYWRkaW5nOjZweCAxMHB4O2NvbG9yOiMxYTFhMWE7JyArIChjMiA9PT0gYmVzdElkeCA/ICdmb250LXdlaWdodDo3MDA7JyA6ICcnKSArICciPicgKyByb3dzW3JdLmZtdCh2YWwpICsgJzwvdGQ+JzsKIH0KIGh0bWwgKz0gJzwvdHI+JzsKIH0KIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbXAtcmVzdWx0cy10YWJsZScpLmlubmVySFRNTCA9IGh0bWw7CiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY21wLXJlc3VsdHMnKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKIH0pOwogfQoKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgTkVXIFRPT0wgQURESVRJT05TICgyKTogUmVsb2NhdGlvbiBDb3N0IENhbGN1bGF0b3IgKyBMb3Vpc3ZpbGxlIFN1YnVyYiBNYXRjaCBxdWl6LgogICBXcml0dGVuIHRvIGJlIHNwbGljZWQgaW50byB0aGUgZXhpc3RpbmcgaW50ZWdyYXRpb24gMjg1ODg5IElJRkUsIHdoaWNoIGFscmVhZHkgZGVmaW5lczoKICAgZm10VVNELCBmbXRQY3QsIG51bShpZCksIGZpbmRNYXJrZXJQYXJhZ3JhcGgobWFya2VyKSwgaW5wdXRSb3cobGFiZWwsaWQsdmFsdWUpLCBpbmplY3RDYWxjdWxhdG9yLAogICBhbW9ydFBJLCByZW1haW5pbmdMb2FuQmFsYW5jZSwgaXJyU29sdmUsIGZpZWxkVGFibGUsIGFuZCBhIENPTkZJRy9ydW4oKSBkaXNwYXRjaGVyIGtleWVkIGJ5CiAgIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS4KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKLyogLS0tLS0tLS0tLSBoZWxwZXJzIHNwZWNpZmljIHRvIHRoZXNlIHR3byB0b29scyAtLS0tLS0tLS0tICovCgpmdW5jdGlvbiBzZWxlY3RSb3cobGFiZWwsIGlkLCBvcHRpb25zLCBzZWxlY3RlZFZhbHVlKSB7CiAgdmFyIGh0bWwgPSAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTJweDtjb2xvcjojMWExYTFhOyI+PGxhYmVsIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2ZvbnQtd2VpZ2h0OjYwMDttYXJnaW4tYm90dG9tOjRweDtjb2xvcjojMWExYTFhOyI+JyArIGxhYmVsICsgJzwvbGFiZWw+JyArCiAgICAnPHNlbGVjdCBpZD0iJyArIGlkICsgJyIgc3R5bGU9IndpZHRoOjEwMCU7bWF4LXdpZHRoOjMyMHB4O3BhZGRpbmc6OHB4O2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjRweDtjb2xvcjojMWExYTFhO2JhY2tncm91bmQ6I2ZmZjsiPic7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7CiAgICB2YXIgb3B0ID0gb3B0aW9uc1tpXTsKICAgIGh0bWwgKz0gJzxvcHRpb24gdmFsdWU9IicgKyBvcHQudmFsdWUgKyAnIicgKyAob3B0LnZhbHVlID09PSBzZWxlY3RlZFZhbHVlID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPicgKyBvcHQubGFiZWwgKyAnPC9vcHRpb24+JzsKICB9CiAgaHRtbCArPSAnPC9zZWxlY3Q+PC9wPic7CiAgcmV0dXJuIGh0bWw7Cn0KCmZ1bmN0aW9uIGZtdFJhbmdlKHIpIHsKICByZXR1cm4gZm10VVNEKHIubG93KSArICcg4oCTICcgKyBmbXRVU0Qoci5oaWdoKTsKfQoKLyogPT09PT09PT09PT09PT09PT0gUkVMT0NBVElPTiBDT1NUIENBTENVTEFUT1IgPT09PT09PT09PT09PT09PT0gKi8KCnZhciBSRUxPX0JFRFJPT01fVElFUlMgPSB7CiAgc3R1ZGlvOiB7IGJhc2U6IDkwMCwgbGJzOiAyNTAwIH0sCiAgJzEnOiB7IGJhc2U6IDkwMCwgbGJzOiAyNTAwIH0sCiAgJzInOiB7IGJhc2U6IDEzMDAsIGxiczogNTAwMCB9LAogICczJzogeyBiYXNlOiAxOTAwLCBsYnM6IDc1MDAgfSwKICAnNCc6IHsgYmFzZTogMjcwMCwgbGJzOiAxMDAwMCB9LAogICc1JzogeyBiYXNlOiAzNjAwLCBsYnM6IDEzMDAwIH0KfTsKdmFyIFJFTE9fTU9WRV9UWVBFX01VTFQgPSB7IGZ1bGw6IDEuMCwgaHlicmlkOiAwLjYyLCBkaXk6IDAuMzUgfTsKCmZ1bmN0aW9uIHJlbG9CZWRyb29tVGllcihrZXkpIHsgcmV0dXJuIFJFTE9fQkVEUk9PTV9USUVSU1trZXldIHx8IFJFTE9fQkVEUk9PTV9USUVSU1snMyddOyB9CgpmdW5jdGlvbiByZWxvQmFzZU1vdmVDb3N0KHRpZXIsIG1pbGVzKSB7CiAgbWlsZXMgPSBNYXRoLm1heCgwLCBtaWxlcyk7CiAgaWYgKG1pbGVzIDw9IDUwKSByZXR1cm4gdGllci5iYXNlOwogIGlmIChtaWxlcyA8PSAyNTApIHJldHVybiB0aWVyLmJhc2UgKiAxLjYgKyB0aWVyLmxicyAqIDAuMTU7CiAgaWYgKG1pbGVzIDw9IDc1MCkgcmV0dXJuIE1hdGgubWF4KHRpZXIuYmFzZSAqIDIuMiwgdGllci5sYnMgKiAwLjcwKTsKICByZXR1cm4gTWF0aC5tYXgodGllci5iYXNlICogMy4wLCB0aWVyLmxicyAqIDAuODUpOwp9CgpmdW5jdGlvbiByZWxvRXN0aW1hdGVNb3ZpbmcoYmVkcm9vbUtleSwgbWlsZXMsIG1vdmVUeXBlKSB7CiAgdmFyIHRpZXIgPSByZWxvQmVkcm9vbVRpZXIoYmVkcm9vbUtleSk7CiAgdmFyIGJhc2UgPSByZWxvQmFzZU1vdmVDb3N0KHRpZXIsIG1pbGVzKTsKICB2YXIgbXVsdCA9IFJFTE9fTU9WRV9UWVBFX01VTFRbbW92ZVR5cGVdICE9IG51bGwgPyBSRUxPX01PVkVfVFlQRV9NVUxUW21vdmVUeXBlXSA6IDEuMDsKICB2YXIgcG9pbnQgPSBiYXNlICogbXVsdDsKICByZXR1cm4geyBsb3c6IHBvaW50ICogMC44MiwgcG9pbnQ6IHBvaW50LCBoaWdoOiBwb2ludCAqIDEuMjUgfTsKfQoKZnVuY3Rpb24gcmVsb0VzdGltYXRlVmVoaWNsZXMobWlsZXMsIHZlaGljbGVDb3VudCkgewogIHZlaGljbGVDb3VudCA9IE1hdGgubWF4KDAsIE1hdGguZmxvb3IodmVoaWNsZUNvdW50IHx8IDApKTsKICBpZiAobWlsZXMgPD0gMjUwIHx8IHZlaGljbGVDb3VudCA9PT0gMCkgcmV0dXJuIHsgbG93OiAwLCBwb2ludDogMCwgaGlnaDogMCB9OwogIHZhciBwZXJWZWhpY2xlID0gbWlsZXMgPD0gNzUwID8gNzUwIDogOTUwOwogIHZhciBwb2ludCA9IHBlclZlaGljbGUgKiB2ZWhpY2xlQ291bnQ7CiAgcmV0dXJuIHsgbG93OiBwb2ludCAqIDAuOCwgcG9pbnQ6IHBvaW50LCBoaWdoOiBwb2ludCAqIDEuMjUgfTsKfQoKZnVuY3Rpb24gcmVsb0VzdGltYXRlQ2xvc2luZyhwcmljZSkgewogIHByaWNlID0gTWF0aC5tYXgoMCwgcHJpY2UgfHwgMCk7CiAgcmV0dXJuIHsgbG93OiBwcmljZSAqIDAuMDIsIGhpZ2g6IHByaWNlICogMC4wMywgcG9pbnQ6IHByaWNlICogMC4wMjUgfTsKfQoKdmFyIFJFTE9fSFRNTCA9CiAgJzxkaXYgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgI2Q4ZDhkODtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjI0cHg7bWFyZ2luOjI0cHggMDtiYWNrZ3JvdW5kOiNmYWZhZmE7Y29sb3I6IzFhMWExYTsiPicgKwogICc8aDMgc3R5bGU9Im1hcmdpbjowIDAgMTRweDtmb250LXNpemU6MjJweDtjb2xvcjojMWExYTFhOyI+WW91ciBtb3ZlPC9oMz4nICsKICBzZWxlY3RSb3coJ0N1cnJlbnQgaG9tZSBzaXplJywgJ3JlbG8tYmVkcm9vbXMnLCBbCiAgICB7IHZhbHVlOiAnc3R1ZGlvJywgbGFiZWw6ICdTdHVkaW8gLyAxIGJlZHJvb20nIH0sCiAgICB7IHZhbHVlOiAnMicsIGxhYmVsOiAnMiBiZWRyb29tcycgfSwKICAgIHsgdmFsdWU6ICczJywgbGFiZWw6ICczIGJlZHJvb21zJyB9LAogICAgeyB2YWx1ZTogJzQnLCBsYWJlbDogJzQgYmVkcm9vbXMnIH0sCiAgICB7IHZhbHVlOiAnNScsIGxhYmVsOiAnNSsgYmVkcm9vbXMnIH0KICBdLCAnMycpICsKICBpbnB1dFJvdygnRGlzdGFuY2UgdG8gTG91aXN2aWxsZSwgS1kgKG1pbGVzKScsICdyZWxvLW1pbGVzJywgJzQ1MCcpICsKICBzZWxlY3RSb3coJ0hvdyBkbyB5b3Ugd2FudCB0byBtb3ZlPycsICdyZWxvLW1vdmV0eXBlJywgWwogICAgeyB2YWx1ZTogJ2Z1bGwnLCBsYWJlbDogJ0Z1bGwtc2VydmljZSBtb3ZlcnMgKHRoZXkgcGFjayAmYW1wOyBtb3ZlIGV2ZXJ5dGhpbmcpJyB9LAogICAgeyB2YWx1ZTogJ2h5YnJpZCcsIGxhYmVsOiAnQ29udGFpbmVyIC8gaHlicmlkICh5b3UgcGFjaywgdGhleSBtb3ZlIGl0ICZtZGFzaDsgUE9EUy1zdHlsZSknIH0sCiAgICB7IHZhbHVlOiAnZGl5JywgbGFiZWw6ICdESVkgdHJ1Y2sgcmVudGFsICh5b3UgcGFjaywgZHJpdmUgJmFtcDsgdW5sb2FkKScgfQogIF0sICdmdWxsJykgKwogIGlucHV0Um93KCdWZWhpY2xlcyB0byBzaGlwICgwIGlmIHlvdSZyc3F1bztsbCBkcml2ZSB0aGVtKScsICdyZWxvLXZlaGljbGVzJywgJzAnKSArCiAgJzxoMyBzdHlsZT0ibWFyZ2luOjIwcHggMCAxNHB4O2ZvbnQtc2l6ZToyMnB4O2NvbG9yOiMxYTFhMWE7Ij5Zb3VyIG5ldyBob21lIChvcHRpb25hbCk8L2gzPicgKwogIGlucHV0Um93KCdFeHBlY3RlZCBwdXJjaGFzZSBwcmljZSBpbiBLZW50dWNreSAoJCwgbGVhdmUgMCBpZiByZW50aW5nIGZpcnN0KScsICdyZWxvLXByaWNlJywgJzMwMDAwMCcpICsKICAnPHA+PGJ1dHRvbiBpZD0icmVsby1jYWxjdWxhdGUiIHN0eWxlPSJiYWNrZ3JvdW5kOiMxYTNjNWU7Y29sb3I6I2ZmZjtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjZweDtwYWRkaW5nOjEycHggMjhweDtmb250LXNpemU6MTZweDtjdXJzb3I6cG9pbnRlcjsiPkVzdGltYXRlIG15IHJlbG9jYXRpb24gY29zdHM8L2J1dHRvbj48L3A+JyArCiAgJzxkaXYgaWQ9InJlbG8tcmVzdWx0cyIgc3R5bGU9ImRpc3BsYXk6bm9uZTttYXJnaW4tdG9wOjIwcHg7cGFkZGluZy10b3A6MjBweDtib3JkZXItdG9wOjJweCBzb2xpZCAjMWEzYzVlO2NvbG9yOiMxYTFhMWE7Ij4nICsKICAnPGgzIHN0eWxlPSJtYXJnaW46MCAwIDEwcHg7Zm9udC1zaXplOjIycHg7Y29sb3I6IzFhMWExYTsiPllvdXIgcmVsb2NhdGlvbiBidWRnZXQgZXN0aW1hdGU8L2gzPicgKwogICc8cCBzdHlsZT0iY29sb3I6IzFhMWExYTsiPk1vdmluZyBjb3N0IChtb3ZlcnMvY29udGFpbmVyL3RydWNrKTogPHN0cm9uZyBpZD0icmVsby1vdXQtbW92aW5nIiBzdHlsZT0iY29sb3I6IzFhMWExYTsiPiZtZGFzaDs8L3N0cm9uZz48L3A+JyArCiAgJzxwIGlkPSJyZWxvLW91dC12ZWhpY2xlcy1yb3ciIHN0eWxlPSJjb2xvcjojMWExYTFhO2Rpc3BsYXk6bm9uZTsiPlZlaGljbGUgc2hpcHBpbmc6IDxzdHJvbmcgaWQ9InJlbG8tb3V0LXZlaGljbGVzIiBzdHlsZT0iY29sb3I6IzFhMWExYTsiPiZtZGFzaDs8L3N0cm9uZz48L3A+JyArCiAgJzxwIGlkPSJyZWxvLW91dC1jbG9zaW5nLXJvdyIgc3R5bGU9ImNvbG9yOiMxYTFhMWE7ZGlzcGxheTpub25lOyI+RXN0aW1hdGVkIEtlbnR1Y2t5IGJ1eWVyIGNsb3NpbmcgY29zdHM6IDxzdHJvbmcgaWQ9InJlbG8tb3V0LWNsb3NpbmciIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+Jm1kYXNoOzwvc3Ryb25nPjwvcD4nICsKICAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxOHB4O2NvbG9yOiMxYTFhMWE7Ij5Ub3RhbCBlc3RpbWF0ZWQgcmVsb2NhdGlvbiBidWRnZXQ6IDxzdHJvbmcgaWQ9InJlbG8tb3V0LXRvdGFsIiBzdHlsZT0iY29sb3I6IzFhMWExYTsiPiZtZGFzaDs8L3N0cm9uZz48L3A+JyArCiAgJzxwIHN0eWxlPSJmb250LXNpemU6MTNweDtjb2xvcjojNjY2O21hcmdpbi10b3A6MTBweDsiPk1vdmluZyBjb3N0cyBhcmUgb3JkZXItb2YtbWFnbml0dWRlIGVzdGltYXRlcyBiYXNlZCBvbiB0eXBpY2FsIDIwMjYgaW5kdXN0cnkgcHJpY2luZyBieSBob21lIHNpemUsIGRpc3RhbmNlIGFuZCBtb3ZlIHR5cGUgJm1kYXNoOyBnZXQgYSBiaW5kaW5nIHF1b3RlIGZyb20geW91ciBtb3Zlci4gS2VudHVja3kgY2xvc2luZyBjb3N0cyBzaG93biBhcmUgYnV5ZXItc2lkZSBvbmx5ICgyJSZuZGFzaDszJSBvZiBwcmljZSkgYW5kIGV4Y2x1ZGUgeW91ciBkb3duIHBheW1lbnQuICcgKwogICdTZWxsaW5nIGEgaG9tZSB0b28/IFRyeSBvdXIgPGEgaHJlZj0iL3NlbGxlci1uZXQtcHJvY2VlZHMtY2FsY3VsYXRvciIgc3R5bGU9ImNvbG9yOiMxYTNjNWU7Ij5TZWxsZXIgTmV0IFByb2NlZWRzIGNhbGN1bGF0b3I8L2E+LCBvciA8YSBocmVmPSIvZ2V0LXByZS1hcHByb3ZlZCIgc3R5bGU9ImNvbG9yOiMxYTNjNWU7Ij5nZXQgcHJlLWFwcHJvdmVkPC9hPiBhbmQgd2UmcnNxdW87bGwgaGVscCB5b3UgcGxhbiB0aGUgd2hvbGUgbW92ZS48L3A+JyArCiAgJzwvZGl2PjwvZGl2Pic7CgpmdW5jdGlvbiB3aXJlUkVMTygpIHsKICB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlbG8tY2FsY3VsYXRlJyk7CiAgaWYgKCFidG4pIHJldHVybjsKICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICB2YXIgYmVkcm9vbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVsby1iZWRyb29tcycpLnZhbHVlOwogICAgdmFyIG1pbGVzID0gbnVtKCdyZWxvLW1pbGVzJyk7CiAgICB2YXIgbW92ZVR5cGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVsby1tb3ZldHlwZScpLnZhbHVlOwogICAgdmFyIHZlaGljbGVDb3VudCA9IG51bSgncmVsby12ZWhpY2xlcycpOwogICAgdmFyIHByaWNlID0gbnVtKCdyZWxvLXByaWNlJyk7CgogICAgdmFyIG1vdmluZyA9IHJlbG9Fc3RpbWF0ZU1vdmluZyhiZWRyb29tcywgbWlsZXMsIG1vdmVUeXBlKTsKICAgIHZhciB2ZWhpY2xlcyA9IHJlbG9Fc3RpbWF0ZVZlaGljbGVzKG1pbGVzLCB2ZWhpY2xlQ291bnQpOwogICAgdmFyIGNsb3NpbmcgPSBwcmljZSA+IDAgPyByZWxvRXN0aW1hdGVDbG9zaW5nKHByaWNlKSA6IHsgbG93OiAwLCBwb2ludDogMCwgaGlnaDogMCB9OwogICAgdmFyIHRvdGFsID0gewogICAgICBsb3c6IG1vdmluZy5sb3cgKyB2ZWhpY2xlcy5sb3cgKyBjbG9zaW5nLmxvdywKICAgICAgcG9pbnQ6IG1vdmluZy5wb2ludCArIHZlaGljbGVzLnBvaW50ICsgY2xvc2luZy5wb2ludCwKICAgICAgaGlnaDogbW92aW5nLmhpZ2ggKyB2ZWhpY2xlcy5oaWdoICsgY2xvc2luZy5oaWdoCiAgICB9OwoKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWxvLW91dC1tb3ZpbmcnKS50ZXh0Q29udGVudCA9IGZtdFJhbmdlKG1vdmluZyk7CiAgICBpZiAodmVoaWNsZXMucG9pbnQgPiAwKSB7CiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWxvLW91dC12ZWhpY2xlcycpLnRleHRDb250ZW50ID0gZm10UmFuZ2UodmVoaWNsZXMpOwogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVsby1vdXQtdmVoaWNsZXMtcm93Jykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICB9IGVsc2UgewogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVsby1vdXQtdmVoaWNsZXMtcm93Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgIH0KICAgIGlmIChjbG9zaW5nLnBvaW50ID4gMCkgewogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVsby1vdXQtY2xvc2luZycpLnRleHRDb250ZW50ID0gZm10UmFuZ2UoY2xvc2luZyk7CiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWxvLW91dC1jbG9zaW5nLXJvdycpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgfSBlbHNlIHsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlbG8tb3V0LWNsb3Npbmctcm93Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgIH0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWxvLW91dC10b3RhbCcpLnRleHRDb250ZW50ID0gZm10UmFuZ2UodG90YWwpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlbG8tcmVzdWx0cycpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogIH0pOwp9CgovKiA9PT09PT09PT09PT09PT09PSBMT1VJU1ZJTExFIFNVQlVSQiBNQVRDSCBRVUlaID09PT09PT09PT09PT09PT09ICovCgp2YXIgU1VCVVJCX0FSRUFTID0gWwogIHsga2V5OiAnZG93bnRvd24nLCBuYW1lOiAnRG93bnRvd24gLyBOdUx1IC8gQnV0Y2hlcnRvd24nLCBjb3VudHk6ICdKZWZmZXJzb24gQ28uJywgY29tbXV0ZTogJ2Nsb3NlJywgc2V0dGluZzogJ3VyYmFuJywgcHJpY2U6ICd1cHBlcicsIGFtZW5pdGllczogWyd3YWxrYWJsZScsICdkaW5pbmcnXSwgeWFyZDogJ2xvdycgfSwKICB7IGtleTogJ2hpZ2hsYW5kcycsIG5hbWU6ICdIaWdobGFuZHMgLyBDcmVzY2VudCBIaWxsJywgY291bnR5OiAnSmVmZmVyc29uIENvLicsIGNvbW11dGU6ICdjbG9zZScsIHNldHRpbmc6ICd1cmJhbicsIHByaWNlOiAndXBwZXInLCBhbWVuaXRpZXM6IFsnd2Fsa2FibGUnLCAnZGluaW5nJywgJ3BhcmtzJ10sIHlhcmQ6ICdsb3cnIH0sCiAgeyBrZXk6ICdzdG1hdHRoZXdzJywgbmFtZTogJ1N0LiBNYXR0aGV3cycsIGNvdW50eTogJ0plZmZlcnNvbiBDby4nLCBjb21tdXRlOiAnY2xvc2UnLCBzZXR0aW5nOiAnc3VidXJiYW4nLCBwcmljZTogJ3VwcGVyJywgYW1lbml0aWVzOiBbJ3dhbGthYmxlJywgJ2RpbmluZyddLCB5YXJkOiAnc3RhbmRhcmQnIH0sCiAgeyBrZXk6ICdtaWRkbGV0b3duJywgbmFtZTogJ01pZGRsZXRvd24nLCBjb3VudHk6ICdKZWZmZXJzb24gQ28uJywgY29tbXV0ZTogJ21pZCcsIHNldHRpbmc6ICdzdWJ1cmJhbicsIHByaWNlOiAnbWlkJywgYW1lbml0aWVzOiBbJ3BhcmtzJywgJ3NjaG9vbHMnXSwgeWFyZDogJ3N0YW5kYXJkJyB9LAogIHsga2V5OiAnanRvd24nLCBuYW1lOiAnSmVmZmVyc29udG93bicsIGNvdW50eTogJ0plZmZlcnNvbiBDby4nLCBjb21tdXRlOiAnbWlkJywgc2V0dGluZzogJ3N1YnVyYmFuJywgcHJpY2U6ICdtaWQnLCBhbWVuaXRpZXM6IFsncGFya3MnLCAnbmV3Y29uc3RydWN0aW9uJ10sIHlhcmQ6ICdzdGFuZGFyZCcgfSwKICB7IGtleTogJ29rb2xvbmEnLCBuYW1lOiAnT2tvbG9uYScsIGNvdW50eTogJ0plZmZlcnNvbiBDby4nLCBjb21tdXRlOiAnbWlkJywgc2V0dGluZzogJ3N1YnVyYmFuJywgcHJpY2U6ICd2YWx1ZScsIGFtZW5pdGllczogWydwYXJrcyddLCB5YXJkOiAnc3RhbmRhcmQnIH0sCiAgeyBrZXk6ICdmZXJuY3JlZWsnLCBuYW1lOiAnRmVybiBDcmVlaycsIGNvdW50eTogJ0plZmZlcnNvbiBDby4nLCBjb21tdXRlOiAnbWlkJywgc2V0dGluZzogJ3N1YnVyYmFuJywgcHJpY2U6ICd2YWx1ZScsIGFtZW5pdGllczogWydwYXJrcyddLCB5YXJkOiAnYWNyZWFnZScgfSwKICB7IGtleTogJ3Byb3NwZWN0JywgbmFtZTogJ1Byb3NwZWN0JywgY291bnR5OiAnSmVmZmVyc29uIENvLicsIGNvbW11dGU6ICdmYXInLCBzZXR0aW5nOiAnc3VidXJiYW4nLCBwcmljZTogJ3ByZW1pdW0nLCBhbWVuaXRpZXM6IFsnc2Nob29scycsICduZXdjb25zdHJ1Y3Rpb24nLCAncGFya3MnXSwgeWFyZDogJ2FjcmVhZ2UnIH0sCiAgeyBrZXk6ICdhbmNob3JhZ2UnLCBuYW1lOiAnQW5jaG9yYWdlJywgY291bnR5OiAnSmVmZmVyc29uIENvLicsIGNvbW11dGU6ICdtaWQnLCBzZXR0aW5nOiAnc3VidXJiYW4nLCBwcmljZTogJ3ByZW1pdW0nLCBhbWVuaXRpZXM6IFsnc2Nob29scycsICdwYXJrcyddLCB5YXJkOiAnYWNyZWFnZScgfSwKICB7IGtleTogJ210d2FzaGluZ3RvbicsIG5hbWU6ICdNb3VudCBXYXNoaW5ndG9uJywgY291bnR5OiAnQnVsbGl0dCBDby4nLCBjb21tdXRlOiAnZmFyJywgc2V0dGluZzogJ3J1cmFsJywgcHJpY2U6ICd2YWx1ZScsIGFtZW5pdGllczogWyduZXdjb25zdHJ1Y3Rpb24nXSwgeWFyZDogJ2FjcmVhZ2UnIH0sCiAgeyBrZXk6ICdjcmVzdHdvb2QnLCBuYW1lOiAnQ3Jlc3R3b29kJywgY291bnR5OiAnT2xkaGFtIENvLicsIGNvbW11dGU6ICdmYXInLCBzZXR0aW5nOiAnc3VidXJiYW4nLCBwcmljZTogJ3VwcGVyJywgYW1lbml0aWVzOiBbJ3NjaG9vbHMnLCAnbmV3Y29uc3RydWN0aW9uJ10sIHlhcmQ6ICdhY3JlYWdlJyB9LAogIHsga2V5OiAnbGFncmFuZ2UnLCBuYW1lOiAnTGEgR3JhbmdlJywgY291bnR5OiAnT2xkaGFtIENvLicsIGNvbW11dGU6ICdmYXInLCBzZXR0aW5nOiAncnVyYWwnLCBwcmljZTogJ21pZCcsIGFtZW5pdGllczogWydzY2hvb2xzJywgJ3BhcmtzJ10sIHlhcmQ6ICdhY3JlYWdlJyB9Cl07CnZhciBTVUJVUkJfQ09NTVVURV9PUkRFUiA9IFsnY2xvc2UnLCAnbWlkJywgJ2ZhciddOwp2YXIgU1VCVVJCX1NFVFRJTkdfT1JERVIgPSBbJ3VyYmFuJywgJ3N1YnVyYmFuJywgJ3J1cmFsJ107CnZhciBTVUJVUkJfUFJJQ0VfT1JERVIgPSBbJ3ZhbHVlJywgJ21pZCcsICd1cHBlcicsICdwcmVtaXVtJ107CnZhciBTVUJVUkJfWUFSRF9PUkRFUiA9IFsnbG93JywgJ3N0YW5kYXJkJywgJ2FjcmVhZ2UnXTsKCmZ1bmN0aW9uIHN1YnVyYkJhbmRTY29yZShvcmRlciwgYSwgYikgewogIGlmICghYSB8fCAhYikgcmV0dXJuIDA7CiAgdmFyIGlhID0gb3JkZXIuaW5kZXhPZihhKSwgaWIgPSBvcmRlci5pbmRleE9mKGIpOwogIGlmIChpYSA8IDAgfHwgaWIgPCAwKSByZXR1cm4gMDsKICB2YXIgZGlzdCA9IE1hdGguYWJzKGlhIC0gaWIpOwogIGlmIChkaXN0ID09PSAwKSByZXR1cm4gMTsKICBpZiAoZGlzdCA9PT0gMSkgcmV0dXJuIDAuNTsKICByZXR1cm4gMDsKfQpmdW5jdGlvbiBzdWJ1cmJBbWVuaXR5U2NvcmUocHJlZnMsIGFyZWFBbWVuaXRpZXMpIHsKICBpZiAoIXByZWZzIHx8IHByZWZzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7CiAgdmFyIGhpdCA9IDA7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmVmcy5sZW5ndGg7IGkrKykgeyBpZiAoYXJlYUFtZW5pdGllcy5pbmRleE9mKHByZWZzW2ldKSAhPT0gLTEpIGhpdCsrOyB9CiAgcmV0dXJuIGhpdCAvIHByZWZzLmxlbmd0aDsKfQpmdW5jdGlvbiBzdWJ1cmJTY29yZShhcmVhLCBhbnN3ZXJzKSB7CiAgdmFyIGNvbW11dGUgPSBzdWJ1cmJCYW5kU2NvcmUoU1VCVVJCX0NPTU1VVEVfT1JERVIsIGFuc3dlcnMuY29tbXV0ZSwgYXJlYS5jb21tdXRlKTsKICB2YXIgc2V0dGluZyA9IHN1YnVyYkJhbmRTY29yZShTVUJVUkJfU0VUVElOR19PUkRFUiwgYW5zd2Vycy5zZXR0aW5nLCBhcmVhLnNldHRpbmcpOwogIHZhciBwcmljZSA9IHN1YnVyYkJhbmRTY29yZShTVUJVUkJfUFJJQ0VfT1JERVIsIGFuc3dlcnMucHJpY2UsIGFyZWEucHJpY2UpOwogIHZhciB5YXJkID0gc3VidXJiQmFuZFNjb3JlKFNVQlVSQl9ZQVJEX09SREVSLCBhbnN3ZXJzLnlhcmQsIGFyZWEueWFyZCk7CiAgdmFyIGFtZW5pdGllcyA9IHN1YnVyYkFtZW5pdHlTY29yZShhbnN3ZXJzLmFtZW5pdGllcywgYXJlYS5hbWVuaXRpZXMpOwogIHZhciByYXcgPSBjb21tdXRlICsgc2V0dGluZyArIHByaWNlICsgeWFyZCArIGFtZW5pdGllczsKICByZXR1cm4geyBrZXk6IGFyZWEua2V5LCBuYW1lOiBhcmVhLm5hbWUsIGNvdW50eTogYXJlYS5jb3VudHksIHBjdDogTWF0aC5yb3VuZCgocmF3IC8gNSkgKiAxMDApIH07Cn0KZnVuY3Rpb24gbWF0Y2hTdWJ1cmJzKGFuc3dlcnMpIHsKICB2YXIgc2NvcmVkID0gU1VCVVJCX0FSRUFTLm1hcChmdW5jdGlvbiAoYSkgeyByZXR1cm4gc3VidXJiU2NvcmUoYSwgYW5zd2Vycyk7IH0pOwogIHNjb3JlZC5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBiLnBjdCAhPT0gYS5wY3QgPyBiLnBjdCAtIGEucGN0IDogYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTsgfSk7CiAgcmV0dXJuIHNjb3JlZDsKfQoKZnVuY3Rpb24gcmFkaW9Hcm91cChuYW1lLCBvcHRpb25zKSB7CiAgdmFyIGh0bWwgPSAnPGRpdiBzdHlsZT0ibWFyZ2luOjAgMCAxNnB4OyI+JzsKICBmb3IgKHZhciBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHsKICAgIHZhciBvcHQgPSBvcHRpb25zW2ldOwogICAgaHRtbCArPSAnPGxhYmVsIHN0eWxlPSJkaXNwbGF5OmJsb2NrO21hcmdpbjowIDAgOHB4O2NvbG9yOiMxYTFhMWE7Zm9udC13ZWlnaHQ6NDAwO2N1cnNvcjpwb2ludGVyOyI+JyArCiAgICAgICc8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IicgKyBuYW1lICsgJyIgdmFsdWU9IicgKyBvcHQudmFsdWUgKyAnIicgKyAoaSA9PT0gMCA/ICcgY2hlY2tlZCcgOiAnJykgKyAnIHN0eWxlPSJtYXJnaW4tcmlnaHQ6OHB4OyI+JyArIG9wdC5sYWJlbCArICc8L2xhYmVsPic7CiAgfQogIGh0bWwgKz0gJzwvZGl2Pic7CiAgcmV0dXJuIGh0bWw7Cn0KZnVuY3Rpb24gY2hlY2tib3hHcm91cChuYW1lLCBvcHRpb25zKSB7CiAgdmFyIGh0bWwgPSAnPGRpdiBzdHlsZT0ibWFyZ2luOjAgMCAxNnB4OyI+JzsKICBmb3IgKHZhciBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHsKICAgIHZhciBvcHQgPSBvcHRpb25zW2ldOwogICAgaHRtbCArPSAnPGxhYmVsIHN0eWxlPSJkaXNwbGF5OmJsb2NrO21hcmdpbjowIDAgOHB4O2NvbG9yOiMxYTFhMWE7Zm9udC13ZWlnaHQ6NDAwO2N1cnNvcjpwb2ludGVyOyI+JyArCiAgICAgICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IicgKyBuYW1lICsgJyIgdmFsdWU9IicgKyBvcHQudmFsdWUgKyAnIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OjhweDsiPicgKyBvcHQubGFiZWwgKyAnPC9sYWJlbD4nOwogIH0KICBodG1sICs9ICc8L2Rpdj4nOwogIHJldHVybiBodG1sOwp9Cgp2YXIgU1VCVVJCX0hUTUwgPQogICc8ZGl2IHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICNkOGQ4ZDg7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoyNHB4O21hcmdpbjoyNHB4IDA7YmFja2dyb3VuZDojZmFmYWZhO2NvbG9yOiMxYTFhMWE7Ij4nICsKICAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxNHB4O2NvbG9yOiM2NjY7bWFyZ2luOjAgMCAxOHB4OyI+QW5zd2VyIGEgZmV3IHF1aWNrIHF1ZXN0aW9ucyBhYm91dCB0aGUgbGlmZXN0eWxlIGFuZCBidWRnZXQgeW91IHdhbnQgJm1kYXNoOyB3ZSZyc3F1bztsbCBzaG93IGhvdyBldmVyeSBMb3Vpc3ZpbGxlLWFyZWEgY29tbXVuaXR5IHN0YWNrcyB1cCBmb3IgeW91LiBUaGlzIHRvb2wgbmV2ZXIgYXNrcyBhYm91dCBhbnl0aGluZyBvdGhlciB0aGFuIGNvbW11dGUsIHNldHRpbmcsIHByaWNlIGFuZCBhbWVuaXRpZXMsIGFuZCBldmVyeSBjb21tdW5pdHkgaXMgYWx3YXlzIHNob3duIGFzIGFuIG9wdGlvbi48L3A+JyArCiAgJzxoMyBzdHlsZT0ibWFyZ2luOjAgMCAxMHB4O2ZvbnQtc2l6ZToxOHB4O2NvbG9yOiMxYTFhMWE7Ij4xLiBIb3cgbXVjaCBjb21tdXRlIGFyZSB5b3Ugd2lsbGluZyB0byBhY2NlcHQ/PC9oMz4nICsKICByYWRpb0dyb3VwKCdzdWJ1cmItY29tbXV0ZScsIFsKICAgIHsgdmFsdWU6ICdjbG9zZScsIGxhYmVsOiAnTWluaW1pemUgaXQgJm1kYXNoOyBJIHdhbnQgdG8gYmUgY2xvc2UgdG8gZG93bnRvd24vdGhlIEhpZ2hsYW5kcycgfSwKICAgIHsgdmFsdWU6ICdtaWQnLCBsYWJlbDogIkkgZG9uJ3QgbWluZCAxNSZuZGFzaDszMCBtaW51dGVzIGZvciBtb3JlIHNwYWNlIG9yIHZhbHVlIiB9LAogICAgeyB2YWx1ZTogJ2ZhcicsIGxhYmVsOiAiSSdtIGZpbmUgd2l0aCAzMC00NSsgbWludXRlcyBmb3IgbWF4IHNwYWNlIG9yIHByaXZhY3kiIH0KICBdKSArCiAgJzxoMyBzdHlsZT0ibWFyZ2luOjAgMCAxMHB4O2ZvbnQtc2l6ZToxOHB4O2NvbG9yOiMxYTFhMWE7Ij4yLiBXaGF0IGtpbmQgb2Ygc2V0dGluZyBkbyB5b3Ugd2FudD88L2gzPicgKwogIHJhZGlvR3JvdXAoJ3N1YnVyYi1zZXR0aW5nJywgWwogICAgeyB2YWx1ZTogJ3VyYmFuJywgbGFiZWw6ICdXYWxrYWJsZSwgdXJiYW4tZmVlbCBuZWlnaGJvcmhvb2QnIH0sCiAgICB7IHZhbHVlOiAnc3VidXJiYW4nLCBsYWJlbDogJ0NsYXNzaWMgc3VidXJiYW4gbmVpZ2hib3Job29kJyB9LAogICAgeyB2YWx1ZTogJ3J1cmFsJywgbGFiZWw6ICdMYXJnZXIgbG90LCBtb3JlIHJ1cmFsL3NtYWxsLXRvd24gZmVlbCcgfQogIF0pICsKICAnPGgzIHN0eWxlPSJtYXJnaW46MCAwIDEwcHg7Zm9udC1zaXplOjE4cHg7Y29sb3I6IzFhMWExYTsiPjMuIFdoYXQmcnNxdW87cyB5b3VyIHRhcmdldCBwcmljZSByYW5nZT88L2gzPicgKwogIHJhZGlvR3JvdXAoJ3N1YnVyYi1wcmljZScsIFsKICAgIHsgdmFsdWU6ICd2YWx1ZScsIGxhYmVsOiAnVW5kZXIgJDI1MCwwMDAnIH0sCiAgICB7IHZhbHVlOiAnbWlkJywgbGFiZWw6ICckMjUwLDAwMCAmbmRhc2g7ICQ0MDAsMDAwJyB9LAogICAgeyB2YWx1ZTogJ3VwcGVyJywgbGFiZWw6ICckNDAwLDAwMCAmbmRhc2g7ICQ2MDAsMDAwJyB9LAogICAgeyB2YWx1ZTogJ3ByZW1pdW0nLCBsYWJlbDogJyQ2MDAsMDAwKycgfQogIF0pICsKICAnPGgzIHN0eWxlPSJtYXJnaW46MCAwIDEwcHg7Zm9udC1zaXplOjE4cHg7Y29sb3I6IzFhMWExYTsiPjQuIEhvdyBtdWNoIHlhcmQgb3IgbGFuZCBkbyB5b3Ugd2FudD88L2gzPicgKwogIHJhZGlvR3JvdXAoJ3N1YnVyYi15YXJkJywgWwogICAgeyB2YWx1ZTogJ2xvdycsIGxhYmVsOiAnTGl0dGxlIHRvIG5vbmUgJm1kYXNoOyBsb3cgbWFpbnRlbmFuY2UnIH0sCiAgICB7IHZhbHVlOiAnc3RhbmRhcmQnLCBsYWJlbDogJ0Egc3RhbmRhcmQgc3VidXJiYW4geWFyZCcgfSwKICAgIHsgdmFsdWU6ICdhY3JlYWdlJywgbGFiZWw6ICdBbiBhY3JlIG9yIG1vcmUnIH0KICBdKSArCiAgJzxoMyBzdHlsZT0ibWFyZ2luOjAgMCAxMHB4O2ZvbnQtc2l6ZToxOHB4O2NvbG9yOiMxYTFhMWE7Ij41LiBXaGF0IG1hdHRlcnMgbW9zdCBkYXktdG8tZGF5PyAoY2hlY2sgYWxsIHRoYXQgYXBwbHkpPC9oMz4nICsKICBjaGVja2JveEdyb3VwKCdzdWJ1cmItYW1lbml0aWVzJywgWwogICAgeyB2YWx1ZTogJ3dhbGthYmxlJywgbGFiZWw6ICdXYWxraW5nIHRvIHJlc3RhdXJhbnRzICZhbXA7IHNob3BzJyB9LAogICAgeyB2YWx1ZTogJ2RpbmluZycsIGxhYmVsOiAnTG9jYWwgZGluaW5nICZhbXA7IG5pZ2h0bGlmZSBuZWFyYnknIH0sCiAgICB7IHZhbHVlOiAncGFya3MnLCBsYWJlbDogJ1BhcmtzICZhbXA7IG91dGRvb3Igc3BhY2UnIH0sCiAgICB7IHZhbHVlOiAnc2Nob29scycsIGxhYmVsOiAnSGlnaGx5LXJhdGVkIHNjaG9vbCBkaXN0cmljdCcgfSwKICAgIHsgdmFsdWU6ICduZXdjb25zdHJ1Y3Rpb24nLCBsYWJlbDogJ05ld2VyIGNvbnN0cnVjdGlvbiAvIGxvdy1tYWludGVuYW5jZSBob21lJyB9CiAgXSkgKwogICc8cD48YnV0dG9uIGlkPSJzdWJ1cmItY2FsY3VsYXRlIiBzdHlsZT0iYmFja2dyb3VuZDojMWEzYzVlO2NvbG9yOiNmZmY7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czo2cHg7cGFkZGluZzoxMnB4IDI4cHg7Zm9udC1zaXplOjE2cHg7Y3Vyc29yOnBvaW50ZXI7Ij5TaG93IG15IG1hdGNoZXM8L2J1dHRvbj48L3A+JyArCiAgJzxkaXYgaWQ9InN1YnVyYi1yZXN1bHRzIiBzdHlsZT0iZGlzcGxheTpub25lO21hcmdpbi10b3A6MjBweDtwYWRkaW5nLXRvcDoyMHB4O2JvcmRlci10b3A6MnB4IHNvbGlkICMxYTNjNWU7Y29sb3I6IzFhMWExYTsiPicgKwogICc8aDMgc3R5bGU9Im1hcmdpbjowIDAgMTRweDtmb250LXNpemU6MjJweDtjb2xvcjojMWExYTFhOyI+WW91ciBjb21tdW5pdHkgbWF0Y2hlczwvaDM+JyArCiAgJzxkaXYgaWQ9InN1YnVyYi1yZXN1bHRzLWxpc3QiPjwvZGl2PicgKwogICc8cCBzdHlsZT0iZm9udC1zaXplOjEzcHg7Y29sb3I6IzY2NjttYXJnaW4tdG9wOjE2cHg7Ij5UaGlzIGlzIGEgc3RhcnRpbmcgcG9pbnQgZm9yIHlvdXIgb3duIHJlc2VhcmNoLCBub3QgYSByZWNvbW1lbmRhdGlvbiB0byBwcmVmZXIgb25lIGFyZWEgb3ZlciBhbm90aGVyICZtZGFzaDsgZXZlcnkgYnV5ZXImcnNxdW87cyByaWdodCB0byBjb25zaWRlciBhbnkgb2YgdGhlc2UgY29tbXVuaXRpZXMgaXMgdGhlIHNhbWUgcmVnYXJkbGVzcyBvZiBob3cgdGhleSBzY29yZSBoZXJlLiAnICsKICAnPGEgaHJlZj0iL2dldC1wcmUtYXBwcm92ZWQiIHN0eWxlPSJjb2xvcjojMWEzYzVlOyI+VGVsbCB1cyB3aGF0IHlvdSZyc3F1bztyZSBsb29raW5nIGZvcjwvYT4gYW5kIHdlJnJzcXVvO2xsIHdhbGsgeW91IHRocm91Z2ggYWxsIG9mIHRoZW0uPC9wPicgKwogICc8cCBzdHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6Izg4ODttYXJnaW4tdG9wOjE0cHg7cGFkZGluZy10b3A6MTRweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZDhkOGQ4OyI+JiM4OTYyOyBFcXVhbCBIb3VzaW5nIE9wcG9ydHVuaXR5LiBXaW5uZXIgUmVhbHR5IHByb3ZpZGVzIGVxdWFsIHByb2Zlc3Npb25hbCBzZXJ2aWNlIHRvIGFsbCBwZXJzb25zIHdpdGhvdXQgcmVnYXJkIHRvIHJhY2UsIGNvbG9yLCByZWxpZ2lvbiwgc2V4LCBoYW5kaWNhcCwgZmFtaWxpYWwgc3RhdHVzLCBuYXRpb25hbCBvcmlnaW4sIG9yIGFueSBvdGhlciBwcm90ZWN0ZWQgY2xhc3MuPC9wPicgKwogICc8L2Rpdj48L2Rpdj4nOwoKZnVuY3Rpb24gc3VidXJiQmFyKHBjdCkgewogIHZhciBmaWxsZWQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAsIHBjdCkpOwogIHJldHVybiAnPGRpdiBzdHlsZT0iYmFja2dyb3VuZDojZTJlMmUyO2JvcmRlci1yYWRpdXM6NHB4O2hlaWdodDoxMHB4O3dpZHRoOjEwMCU7bWF4LXdpZHRoOjI2MHB4O292ZXJmbG93OmhpZGRlbjsiPicgKwogICAgJzxkaXYgc3R5bGU9ImJhY2tncm91bmQ6IzFhM2M1ZTtoZWlnaHQ6MTBweDt3aWR0aDonICsgZmlsbGVkICsgJyU7Ij48L2Rpdj48L2Rpdj4nOwp9CgpmdW5jdGlvbiB3aXJlU1VCVVJCKCkgewogIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VidXJiLWNhbGN1bGF0ZScpOwogIGlmICghYnRuKSByZXR1cm47CiAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgZnVuY3Rpb24gcmFkaW9WYWwobmFtZSkgewogICAgICB2YXIgZWxzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUobmFtZSk7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxzLmxlbmd0aDsgaSsrKSB7IGlmIChlbHNbaV0uY2hlY2tlZCkgcmV0dXJuIGVsc1tpXS52YWx1ZTsgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICAgIGZ1bmN0aW9uIGNoZWNrZWRWYWxzKG5hbWUpIHsKICAgICAgdmFyIGVscyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKG5hbWUpOwogICAgICB2YXIgb3V0ID0gW107CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxzLmxlbmd0aDsgaSsrKSB7IGlmIChlbHNbaV0uY2hlY2tlZCkgb3V0LnB1c2goZWxzW2ldLnZhbHVlKTsgfQogICAgICByZXR1cm4gb3V0OwogICAgfQogICAgdmFyIGFuc3dlcnMgPSB7CiAgICAgIGNvbW11dGU6IHJhZGlvVmFsKCdzdWJ1cmItY29tbXV0ZScpLAogICAgICBzZXR0aW5nOiByYWRpb1ZhbCgnc3VidXJiLXNldHRpbmcnKSwKICAgICAgcHJpY2U6IHJhZGlvVmFsKCdzdWJ1cmItcHJpY2UnKSwKICAgICAgeWFyZDogcmFkaW9WYWwoJ3N1YnVyYi15YXJkJyksCiAgICAgIGFtZW5pdGllczogY2hlY2tlZFZhbHMoJ3N1YnVyYi1hbWVuaXRpZXMnKQogICAgfTsKICAgIHZhciByZXN1bHRzID0gbWF0Y2hTdWJ1cmJzKGFuc3dlcnMpOwogICAgdmFyIGh0bWwgPSAnJzsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgciA9IHJlc3VsdHNbaV07CiAgICAgIGh0bWwgKz0gJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEycHg7cGFkZGluZzoxMHB4IDA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2UyZTJlMjtmbGV4LXdyYXA6d3JhcDsiPicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJtaW4td2lkdGg6MjIwcHg7Ij48c3Ryb25nIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+JyArIHIubmFtZSArICc8L3N0cm9uZz48YnI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOiM4ODg7Ij4nICsgci5jb3VudHkgKyAnPC9zcGFuPjwvZGl2PicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjE0MHB4OyI+JyArIHN1YnVyYkJhcihyLnBjdCkgKyAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYgc3R5bGU9IndpZHRoOjQ4cHg7dGV4dC1hbGlnbjpyaWdodDtjb2xvcjojMWExYTFhO2ZvbnQtd2VpZ2h0OjYwMDsiPicgKyByLnBjdCArICclPC9kaXY+JyArCiAgICAgICAgJzwvZGl2Pic7CiAgICB9CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VidXJiLXJlc3VsdHMtbGlzdCcpLmlubmVySFRNTCA9IGh0bWw7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VidXJiLXJlc3VsdHMnKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICB9KTsKfQoKCiB2YXIgSFZfUFBTRiA9IHsKICI0MDIwMiI6IDI2OS45OCwKICI0MDIwNCI6IDIzMS42MSwKICI0MDIwNyI6IDI2OC43NSwKICI0MDI0MyI6IDIxMy44NSwKICI0MDI5OSI6IDIxMi41MSwKICI0MDIxOSI6IDIwNS45MSwKICI0MDI5MSI6IDIyMS41NCwKICI0MDA1OSI6IDI3Mi4yOCwKICI0MDIyMyI6IDIxNi42OSwKICI0MDA0NyI6IDIwMy40NCwKICI0MDAxNCI6IDIyNS4yMiwKICI0MDAzMSI6IDIxNy44NywKICI0MDIyMCI6IDIwNy43NCwKICI0MDI0MSI6IDIwMS4yOQogfTsKIHZhciBIVl9ERUZBVUxUX1BQU0YgPSAyMjEuNjc7CiB2YXIgSFZfWklQX0xBQkVMUyA9IFsKIFsiNDAyMDIiLCAiNDAyMDIg4oCTIERvd250b3duIC8gT2xkIExvdWlzdmlsbGUiXSwKIFsiNDAyMDQiLCAiNDAyMDQg4oCTIEhpZ2hsYW5kcyAvIEJhcmRzdG93biBSZCJdLAogWyI0MDIwNyIsICI0MDIwNyDigJMgU3QuIE1hdHRoZXdzIC8gSW5kaWFuIEhpbGxzIl0sCiBbIjQwMjIwIiwgIjQwMjIwIOKAkyBFYXN0IExvdWlzdmlsbGUgLyBIaWtlcyBQb2ludCJdLAogWyI0MDI0MSIsICI0MDI0MSDigJMgTHluZG9uIC8gTm9ydGhlYXN0IExvdWlzdmlsbGUiXSwKIFsiNDAyNDMiLCAiNDAyNDMg4oCTIE1pZGRsZXRvd24iXSwKIFsiNDAyMjMiLCAiNDAyMjMg4oCTIEFuY2hvcmFnZSAvIE1pZGRsZXRvd24iXSwKIFsiNDAyOTkiLCAiNDAyOTkg4oCTIEplZmZlcnNvbnRvd24iXSwKIFsiNDAyMTkiLCAiNDAyMTkg4oCTIE9rb2xvbmEiXSwKIFsiNDAyOTEiLCAiNDAyOTEg4oCTIEZlcm4gQ3JlZWsiXSwKIFsiNDAwNTkiLCAiNDAwNTkg4oCTIFByb3NwZWN0Il0sCiBbIjQwMDQ3IiwgIjQwMDQ3IOKAkyBNb3VudCBXYXNoaW5ndG9uIl0sCiBbIjQwMDE0IiwgIjQwMDE0IOKAkyBDcmVzdHdvb2QiXSwKIFsiNDAwMzEiLCAiNDAwMzEg4oCTIExhIEdyYW5nZSJdLAogWyJvdGhlciIsICJPdGhlciBMb3Vpc3ZpbGxlLWFyZWEgemlwIGNvZGUiXQogXTsKCiB2YXIgSFZfSFRNTCA9CiAnPGRpdiBpZD0id3ItaHYtd2lkZ2V0IiBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCAjM2EzYTNhO2JvcmRlci1yYWRpdXM6MnB4O3BhZGRpbmc6MjRweDttYXJnaW46MCAwIDMycHg7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMDQpO2NvbG9yOiNmZmZmZmY7Ij4nICsKICc8aDIgc3R5bGU9Im1hcmdpbjowIDAgOHB4O2ZvbnQtc2l6ZToyNHB4O2xpbmUtaGVpZ2h0OjEuMztjb2xvcjojZmZmZmZmOyI+R2V0IGFuIGluc3RhbnQgZXN0aW1hdGU8L2gyPicgKwogJzxwIHN0eWxlPSJtYXJnaW46MCAwIDE4cHg7Y29sb3I6I2NmY2ZjZjtmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxLjU7Ij5BbnN3ZXIgdGhyZWUgcXVpY2sgcXVlc3Rpb25zIGZvciBhIGJhbGxwYXJrIHZhbHVlIGJhc2VkIG9uIHJlY2VudCBjb21wYXJhYmxlIHNhbGVzIG5lYXIgeW91IOKAlCBubyBjb250YWN0IGluZm8gcmVxdWlyZWQuIFdhbnQgdGhlIGV4YWN0IG51bWJlcj8gUmVxdWVzdCB5b3VyIGZyZWUgcHJvZmVzc2lvbmFsIGV2YWx1YXRpb24gYmVsb3cuPC9wPicgKwogJzxwIHN0eWxlPSJtYXJnaW46MCAwIDE0cHg7Y29sb3I6I2ZmZmZmZjsiPjxsYWJlbCBmb3I9Imh2LXppcCIgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Zm9udC13ZWlnaHQ6NjAwO21hcmdpbi1ib3R0b206NHB4O2NvbG9yOiNmZmZmZmY7Ij5aaXAgY29kZTwvbGFiZWw+JyArCiAnPHNlbGVjdCBpZD0iaHYtemlwIiBzdHlsZT0id2lkdGg6MTAwJTttYXgtd2lkdGg6MzIwcHg7cGFkZGluZzo4cHg7Ym9yZGVyOjFweCBzb2xpZCAjNTU1O2JvcmRlci1yYWRpdXM6MnB4O2NvbG9yOiNmZmZmZmY7YmFja2dyb3VuZDojMTExMTExOyI+JyArCiBIVl9aSVBfTEFCRUxTLm1hcChmdW5jdGlvbiAoeikgeyByZXR1cm4gJzxvcHRpb24gdmFsdWU9IicgKyB6WzBdICsgJyI+JyArIHpbMV0gKyAnPC9vcHRpb24+JzsgfSkuam9pbignJykgKwogJzwvc2VsZWN0PjwvcD4nICsKICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxNHB4O2NvbG9yOiNmZmZmZmY7Ij48bGFiZWwgZm9yPSJodi1zcWZ0IiBzdHlsZT0iZGlzcGxheTpibG9jaztmb250LXdlaWdodDo2MDA7bWFyZ2luLWJvdHRvbTo0cHg7Y29sb3I6I2ZmZmZmZjsiPlNxdWFyZSBmb290YWdlPC9sYWJlbD4nICsKICc8aW5wdXQgdHlwZT0idGV4dCIgaWQ9Imh2LXNxZnQiIHZhbHVlPSIxODAwIiBzdHlsZT0id2lkdGg6MTAwJTttYXgtd2lkdGg6MzIwcHg7cGFkZGluZzo4cHg7Ym9yZGVyOjFweCBzb2xpZCAjNTU1O2JvcmRlci1yYWRpdXM6MnB4O2NvbG9yOiNmZmZmZmY7YmFja2dyb3VuZDojMTExMTExOyIvPjwvcD4nICsKICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxNnB4O2NvbG9yOiNmZmZmZmY7Ij48bGFiZWwgZm9yPSJodi1jb25kaXRpb24iIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2ZvbnQtd2VpZ2h0OjYwMDttYXJnaW4tYm90dG9tOjRweDtjb2xvcjojZmZmZmZmOyI+T3ZlcmFsbCBjb25kaXRpb248L2xhYmVsPicgKwogJzxzZWxlY3QgaWQ9Imh2LWNvbmRpdGlvbiIgc3R5bGU9IndpZHRoOjEwMCU7bWF4LXdpZHRoOjMyMHB4O3BhZGRpbmc6OHB4O2JvcmRlcjoxcHggc29saWQgIzU1NTtib3JkZXItcmFkaXVzOjJweDtjb2xvcjojZmZmZmZmO2JhY2tncm91bmQ6IzExMTExMTsiPicgKwogJzxvcHRpb24gdmFsdWU9IjAuOSI+TmVlZHMgd29yayAvIGRhdGVkPC9vcHRpb24+JyArCiAnPG9wdGlvbiB2YWx1ZT0iMS4wIiBzZWxlY3RlZD0ic2VsZWN0ZWQiPkF2ZXJhZ2UsIG1vdmUtaW4gcmVhZHk8L29wdGlvbj4nICsKICc8b3B0aW9uIHZhbHVlPSIxLjEiPlVwZGF0ZWQgLyBhYm92ZSBhdmVyYWdlPC9vcHRpb24+JyArCiAnPC9zZWxlY3Q+PC9wPicgKwogJzxwIHN0eWxlPSJtYXJnaW46MDsiPjxidXR0b24gaWQ9Imh2LWVzdGltYXRlIiBzdHlsZT0iYmFja2dyb3VuZDojNWM2YjU4O2NvbG9yOiNmZmZmZmY7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czowO3BhZGRpbmc6MTJweCAyOHB4O2ZvbnQtc2l6ZToxNnB4O2N1cnNvcjpwb2ludGVyOyI+R2V0IG15IGluc3RhbnQgZXN0aW1hdGU8L2J1dHRvbj48L3A+JyArCiAnPGRpdiBpZD0iaHYtcmVzdWx0cyIgc3R5bGU9ImRpc3BsYXk6bm9uZTttYXJnaW4tdG9wOjIycHg7cGFkZGluZy10b3A6MjBweDtib3JkZXItdG9wOjJweCBzb2xpZCAjNWM2YjU4OyI+JyArCiAnPHAgc3R5bGU9Im1hcmdpbjowIDAgOHB4O2ZvbnQtc2l6ZToyMnB4O2NvbG9yOiNmZmZmZmY7Ij5Fc3RpbWF0ZWQgdmFsdWU6IDxzdHJvbmcgaWQ9Imh2LW91dC1yYW5nZSIgc3R5bGU9ImNvbG9yOiNmZmZmZmY7Ij4mbWRhc2g7PC9zdHJvbmc+PC9wPicgKwogJzxwIHN0eWxlPSJtYXJnaW46MDtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjU7Y29sb3I6I2FhYWFhYTsiPkJhc2VkIG9uIHRoZSBtZWRpYW4gc29sZCBwcmljZSBwZXIgc3F1YXJlIGZvb3QgZm9yIHJlY2VudGx5IGNsb3NlZCBob21lcyBpbiB0aGlzIHppcCBjb2RlLCBhZGp1c3RlZCBmb3IgY29uZGl0aW9uLiBUaGlzIGlzIGEgcHJlbGltaW5hcnkgZXN0aW1hdGUsIG5vdCBhbiBhcHByYWlzYWwg4oCUIGl0IGRvZXNu4oCZdCBhY2NvdW50IGZvciB5b3VyIGhvbWXigJlzIHNwZWNpZmljIGxvdCwgdXBkYXRlcywgb3IgY3VycmVudCBidXllciBkZW1hbmQuIEZvciBhbiBleGFjdCBudW1iZXIsIHJlcXVlc3QgeW91ciBmcmVlIHByb2Zlc3Npb25hbCBob21lIGV2YWx1YXRpb24gYmVsb3cuPC9wPicgKwogJzwvZGl2PjwvZGl2Pic7CgogZnVuY3Rpb24gd2lyZUhPTUVWQUxVRSgpIHsKIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaHYtZXN0aW1hdGUnKTsKIGlmICghYnRuKSByZXR1cm47CiBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiB2YXIgemlwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2h2LXppcCcpLnZhbHVlOwogdmFyIHNxZnQgPSBudW0oJ2h2LXNxZnQnKTsKIHZhciBjb25kU2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2h2LWNvbmRpdGlvbicpOwogdmFyIGNvbmRNdWx0ID0gcGFyc2VGbG9hdChjb25kU2VsLnZhbHVlKSB8fCAxLjA7CiB2YXIgcHBzZiA9IEhWX1BQU0ZbemlwXSB8fCBIVl9ERUZBVUxUX1BQU0Y7CiB2YXIgcG9pbnQgPSBzcWZ0ICogcHBzZiAqIGNvbmRNdWx0OwogdmFyIGxvdyA9IHBvaW50ICogMC45OwogdmFyIGhpZ2ggPSBwb2ludCAqIDEuMTsKIHZhciBvdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaHYtb3V0LXJhbmdlJyk7CiBpZiAoc3FmdCA8PSAwKSB7CiBvdXQudGV4dENvbnRlbnQgPSAnRW50ZXIgYSBzcXVhcmUgZm9vdGFnZSBhYm92ZSc7CiB9IGVsc2Ugewogb3V0LnRleHRDb250ZW50ID0gZm10VVNEKGxvdykgKyAnIOKAkyAnICsgZm10VVNEKGhpZ2gpOwogfQogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2h2LXJlc3VsdHMnKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKIH0pOwogfQoKIGZ1bmN0aW9uIGluamVjdEhvbWVWYWx1ZVdpZGdldCgpIHsKIHZhciBhbmNob3IgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2ItY29udGFjdC1mb3JtJyk7CiBpZiAoIWFuY2hvciB8fCAhYW5jaG9yLnBhcmVudE5vZGUpIHJldHVybjsKIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItaHYtd2lkZ2V0JykpIHJldHVybjsKIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKIGNvbnRhaW5lci5pbm5lckhUTUwgPSBIVl9IVE1MOwogYW5jaG9yLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNvbnRhaW5lciwgYW5jaG9yKTsKIHZhciBsZWFkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOwogbGVhZC5pZCA9ICd3ci1odi1sZWFkaW4nOwogbGVhZC5zdHlsZS5jc3NUZXh0ID0gJ21hcmdpbjowIDAgMThweDtjb2xvcjojY2ZjZmNmO2ZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0OjEuNTsnOwogbGVhZC50ZXh0Q29udGVudCA9ICdXYW50IHRoZSBleGFjdCBudW1iZXI/IFRlbGwgdXMgYSBiaXQgbW9yZSBiZWxvdyBmb3IgYSBmcmVlLCBuby1vYmxpZ2F0aW9uIHByb2Zlc3Npb25hbCBob21lIGV2YWx1YXRpb24uJzsKIGFuY2hvci5wYXJlbnROb2RlLmluc2VydEJlZm9yZShsZWFkLCBhbmNob3IpOwogd2lyZUhPTUVWQUxVRSgpOwogfQoKCiBmdW5jdGlvbiBydW4oKSB7CiBpZiAocGF0aCA9PT0gJy9pbnZlc3RtZW50LXByb3BlcnR5LWFuYWx5emVyJykgewogaW5qZWN0Q2FsY3VsYXRvcignX19JUEFfQ0FMQ19NQVJLRVJfXycsIElQQV9IVE1MLCB3aXJlSVBBKTsKIH0gZWxzZSBpZiAocGF0aCA9PT0gJy9zZWxsZXItbmV0LXByb2NlZWRzLWNhbGN1bGF0b3InKSB7CiBpbmplY3RDYWxjdWxhdG9yKCdfX1NOUF9DQUxDX01BUktFUl9fJywgU05QX0hUTUwsIHdpcmVTTlApOwogfSBlbHNlIGlmIChwYXRoID09PSAnL21vbnRobHktbW9ydGdhZ2UtcGF5bWVudC1jYWxjdWxhdG9yLWtlbnR1Y2t5JykgewogaW5qZWN0Q2FsY3VsYXRvcignX19QTVRfQ0FMQ19NQVJLRVJfXycsIFBNVF9IVE1MLCB3aXJlUE1UKTsKIH0gZWxzZSBpZiAocGF0aCA9PT0gJy92YS1sb2FuLWNhbGN1bGF0b3Ita2VudHVja3knKSB7CiBpbmplY3RDYWxjdWxhdG9yKCdfX1ZBX0NBTENfTUFSS0VSX18nLCBWQV9IVE1MLCB3aXJlVkEpOwogfSBlbHNlIGlmIChwYXRoID09PSAnL2RzY3ItbG9hbi1jYWxjdWxhdG9yLWtlbnR1Y2t5JykgewogaW5qZWN0Q2FsY3VsYXRvcignX19EU0NSX0NBTENfTUFSS0VSX18nLCBEU0NSX0hUTUwsIHdpcmVEU0NSKTsKIH0gZWxzZSBpZiAocGF0aCA9PT0gJy9pbnZlc3RtZW50LXByb3BlcnR5LWNvbXBhcmlzb24tdG9vbCcpIHsKIGluamVjdENhbGN1bGF0b3IoJ19fQ01QX0NBTENfTUFSS0VSX18nLCBDTVBfSFRNTCwgd2lyZUNNUCk7CiB9IGVsc2UgaWYgKHBhdGggPT09ICcvcmVsb2NhdGlvbi1jb3N0LWNhbGN1bGF0b3InKSB7CiBpbmplY3RDYWxjdWxhdG9yKCdfX1JFTE9fQ0FMQ19NQVJLRVJfXycsIFJFTE9fSFRNTCwgd2lyZVJFTE8pOwogfSBlbHNlIGlmIChwYXRoID09PSAnL2xvdWlzdmlsbGUtc3VidXJiLW1hdGNoLXF1aXonKSB7CiBpbmplY3RDYWxjdWxhdG9yKCdfX1NVQlVSQl9DQUxDX01BUktFUl9fJywgU1VCVVJCX0hUTUwsIHdpcmVTVUJVUkIpOwogfSBlbHNlIGlmIChwYXRoID09PSAnL2hvbWUtdmFsdWUnKSB7CiBpbmplY3RIb21lVmFsdWVXaWRnZXQoKTsKIH0KIH0KCiAKZnVuY3Rpb24gaW5qZWN0Q2FwUmF0ZUNhbGMoKSB7CiAgdmFyIHAgPSBmaW5kTWFya2VyUGFyYWdyYXBoKCdfX0NBUFJBVEVfQ0FMQ19NQVJLRVJfXycpOwogIGlmICghcCkgcmV0dXJuOwogIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICBjb250YWluZXIuaW5uZXJIVE1MID0KICAgICc8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOiNmN2Y3ZjU7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjI0cHg7bWFyZ2luOjhweCAwIDI0cHg7Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOiMxYTFhMWE7Ij4nICsKICAgICc8aDMgc3R5bGU9Im1hcmdpbjowIDAgNHB4O2ZvbnQtc2l6ZToyMHB4O2NvbG9yOiMxYTFhMWE7Zm9udC13ZWlnaHQ6NjAwOyI+Q29tbWVyY2lhbCBDYXAgUmF0ZSAmYW1wOyBDYXNoLW9uLUNhc2ggQ2FsY3VsYXRvcjwvaDM+JyArCiAgICAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMThweDtmb250LXNpemU6MTRweDtjb2xvcjojNDQ0O2xpbmUtaGVpZ2h0OjEuNTsiPlBsdWcgaW4geW91ciBvd24gbnVtYmVycyB0byBzZWUgdGhlIGNhcCByYXRlIGFuZCB0aGUgY2FzaC1vbi1jYXNoIHJldHVybiBzaWRlIGJ5IHNpZGUuPC9wPicgKwogICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZml0LG1pbm1heCgyMjBweCwxZnIpKTtnYXA6MTRweDttYXgtd2lkdGg6NjAwcHg7Ij4nICsKICAgIGNyY0ZpZWxkKCdjcmNQcmljZScsJ1B1cmNoYXNlIHByaWNlICgkKScsJzc1MDAwMCcpICsKICAgIGNyY0ZpZWxkKCdjcmNJbmNvbWUnLCdBbm51YWwgZ3Jvc3MgaW5jb21lICgkKScsJzkwMDAwJykgKwogICAgY3JjRmllbGQoJ2NyY0V4cGVuc2VzJywnQW5udWFsIG9wZXJhdGluZyBleHBlbnNlcyAoJCknLCcyNzAwMCcpICsKICAgIGNyY0ZpZWxkKCdjcmNEb3duJywnRG93biBwYXltZW50ICglKScsJzI1JykgKwogICAgY3JjRmllbGQoJ2NyY1JhdGUnLCdJbnRlcmVzdCByYXRlICglKScsJzcuMjUnKSArCiAgICBjcmNGaWVsZCgnY3JjVGVybScsJ0xvYW4gdGVybSAoeWVhcnMpJywnMjUnKSArCiAgICAnPC9kaXY+JyArCiAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJjcmNDYWxjQnRuIiBzdHlsZT0ibWFyZ2luLXRvcDoxOHB4O2JhY2tncm91bmQ6IzFhMWExYTtjb2xvcjojZmZmO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6NnB4O3BhZGRpbmc6MTFweCAyMnB4O2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjYwMDtjdXJzb3I6cG9pbnRlcjsiPkNhbGN1bGF0ZTwvYnV0dG9uPicgKwogICAgJzxkaXYgaWQ9ImNyY1Jlc3VsdHMiIHN0eWxlPSJkaXNwbGF5Om5vbmU7bWFyZ2luLXRvcDoyMHB4O3BhZGRpbmctdG9wOjE4cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZDsiPjwvZGl2PicgKwogICAgJzwvZGl2Pic7CiAgcC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChjb250YWluZXIsIHApOwogIGZ1bmN0aW9uIGNyY051bShpZCkgewogICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgdmFyIHYgPSBwYXJzZUZsb2F0KGVsLnZhbHVlKTsKICAgIHJldHVybiBpc05hTih2KSA/IDAgOiB2OwogIH0KICBmdW5jdGlvbiBjcmNNb25leShuKSB7CiAgICByZXR1cm4gJyQnICsgTWF0aC5yb3VuZChuKS50b0xvY2FsZVN0cmluZygnZW4tVVMnKTsKICB9CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NyY0NhbGNCdG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgIHZhciBwcmljZSA9IGNyY051bSgnY3JjUHJpY2UnKTsKICAgIHZhciBpbmNvbWUgPSBjcmNOdW0oJ2NyY0luY29tZScpOwogICAgdmFyIGV4cGVuc2VzID0gY3JjTnVtKCdjcmNFeHBlbnNlcycpOwogICAgdmFyIGRvd25QY3QgPSBjcmNOdW0oJ2NyY0Rvd24nKTsKICAgIHZhciByYXRlID0gY3JjTnVtKCdjcmNSYXRlJyk7CiAgICB2YXIgdGVybSA9IGNyY051bSgnY3JjVGVybScpOwogICAgdmFyIG5vaSA9IGluY29tZSAtIGV4cGVuc2VzOwogICAgdmFyIGNhcFJhdGUgPSBwcmljZSA+IDAgPyAobm9pIC8gcHJpY2UpICogMTAwIDogMDsKICAgIHZhciBkb3duQW10ID0gcHJpY2UgKiAoZG93blBjdCAvIDEwMCk7CiAgICB2YXIgbG9hbkFtdCA9IHByaWNlIC0gZG93bkFtdDsKICAgIHZhciBtb250aGx5UmF0ZSA9IChyYXRlIC8gMTAwKSAvIDEyOwogICAgdmFyIG51bVBheW1lbnRzID0gdGVybSAqIDEyOwogICAgdmFyIG1vbnRobHlQYXltZW50ID0gMDsKICAgIGlmIChtb250aGx5UmF0ZSA+IDAgJiYgbnVtUGF5bWVudHMgPiAwKSB7CiAgICAgIG1vbnRobHlQYXltZW50ID0gbG9hbkFtdCAqIG1vbnRobHlSYXRlIC8gKDEgLSBNYXRoLnBvdygxICsgbW9udGhseVJhdGUsIC1udW1QYXltZW50cykpOwogICAgfSBlbHNlIGlmIChudW1QYXltZW50cyA+IDApIHsKICAgICAgbW9udGhseVBheW1lbnQgPSBsb2FuQW10IC8gbnVtUGF5bWVudHM7CiAgICB9CiAgICB2YXIgYW5udWFsRGVidFNlcnZpY2UgPSBtb250aGx5UGF5bWVudCAqIDEyOwogICAgdmFyIGFubnVhbENhc2hGbG93ID0gbm9pIC0gYW5udWFsRGVidFNlcnZpY2U7CiAgICB2YXIgY2FzaE9uQ2FzaCA9IGRvd25BbXQgPiAwID8gKGFubnVhbENhc2hGbG93IC8gZG93bkFtdCkgKiAxMDAgOiAwOwogICAgdmFyIHJvd3MgPSBbCiAgICAgIFsnTmV0IG9wZXJhdGluZyBpbmNvbWUgKE5PSSknLCBjcmNNb25leShub2kpXSwKICAgICAgWydDYXAgcmF0ZScsIGNhcFJhdGUudG9GaXhlZCgyKSArICclJ10sCiAgICAgIFsnTG9hbiBhbW91bnQnLCBjcmNNb25leShsb2FuQW10KV0sCiAgICAgIFsnQW5udWFsIGRlYnQgc2VydmljZScsIGNyY01vbmV5KGFubnVhbERlYnRTZXJ2aWNlKV0sCiAgICAgIFsnQW5udWFsIGNhc2ggZmxvdycsIGNyY01vbmV5KGFubnVhbENhc2hGbG93KV0sCiAgICAgIFsnQ2FzaC1vbi1jYXNoIHJldHVybicsIGNhc2hPbkNhc2gudG9GaXhlZCgyKSArICclJ10KICAgIF07CiAgICB2YXIgaHRtbCA9ICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpdCxtaW5tYXgoMjIwcHgsMWZyKSk7Z2FwOjEycHg7Ij4nOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCByb3dzLmxlbmd0aDsgaSsrKSB7CiAgICAgIGh0bWwgKz0gJzxkaXY+PGRpdiBzdHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6Izc3Nzt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGV0dGVyLXNwYWNpbmc6LjAzZW07Ij4nICsgcm93c1tpXVswXSArICc8L2Rpdj48ZGl2IHN0eWxlPSJmb250LXNpemU6MTlweDtmb250LXdlaWdodDo2MDA7Y29sb3I6IzFhMWExYTsiPicgKyByb3dzW2ldWzFdICsgJzwvZGl2PjwvZGl2Pic7CiAgICB9CiAgICBodG1sICs9ICc8L2Rpdj48cCBzdHlsZT0ibWFyZ2luOjE2cHggMCAwO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiM4ODg7Ij5Fc3RpbWF0ZSBvbmx5LCBub3QgYSBsb2FuIG9mZmVyIG9yIGludmVzdG1lbnQgYWR2aWNlIOKAlCBhY3R1YWwgdGVybXMgdmFyeSBieSBsZW5kZXIgYW5kIHByb3BlcnR5LjwvcD4nOwogICAgdmFyIHJlc3VsdHNFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjcmNSZXN1bHRzJyk7CiAgICByZXN1bHRzRWwuaW5uZXJIVE1MID0gaHRtbDsKICAgIHJlc3VsdHNFbC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICB9KTsKfQpmdW5jdGlvbiBjcmNGaWVsZChpZCwgbGFiZWwsIHBsYWNlaG9sZGVyKSB7CiAgcmV0dXJuICc8bGFiZWwgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEzcHg7Y29sb3I6IzMzMzsiPicgKyBsYWJlbCArCiAgICAnPGlucHV0IHR5cGU9Im51bWJlciIgaWQ9IicgKyBpZCArICciIHBsYWNlaG9sZGVyPSInICsgcGxhY2Vob2xkZXIgKyAnIiBzdHlsZT0iZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO21hcmdpbi10b3A6NHB4O3BhZGRpbmc6OXB4IDEwcHg7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6NnB4O2ZvbnQtc2l6ZToxNHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDsiIC8+JyArCiAgICAnPC9sYWJlbD4nOwp9CmZ1bmN0aW9uIHJ1bkFsbCgpIHsKICBydW4oKTsKICBpZiAocGF0aCA9PT0gJy9jYXAtcmF0ZS1leHBsYWluZWQtY29tbWVyY2lhbC1yZWFsLWVzdGF0ZScpIHsKICAgIGluamVjdENhcFJhdGVDYWxjKCk7CiAgfQp9CmlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHsKIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBydW5BbGwpOwogfSBlbHNlIHsKIHJ1bkFsbCgpOwogfQp9KSgpOwo8L3NjcmlwdD4=|END

WRA|i286681|7|PHNjcmlwdD4KKGZ1bmN0aW9uKCl7CiAgdHJ5IHsKICAgIHZhciBBUlRJQ0xFUyA9IFsKICAgICAge3BhdGg6Jy9hc2lzdGVuY2lhLXBhcmEtZWwtcGFnby1pbmljaWFsLWtlbnR1Y2t5JywgdGl0bGU6J0FzaXN0ZW5jaWEgcGFyYSBlbCBQYWdvIEluaWNpYWwgZW4gS2VudHVja3knfSwKICAgICAge3BhdGg6Jy9jcmVjaW1pZW50by1jb211bmlkYWQtaGlzcGFuYS1sb3Vpc3ZpbGxlLWJpZW5lcy1yYWljZXMnLCB0aXRsZTonRWwgQ3JlY2ltaWVudG8gZGUgbGEgQ29tdW5pZGFkIEhpc3BhbmEgZW4gTG91aXN2aWxsZSd9LAogICAgICB7cGF0aDonL3ByZWFwcm9iYWNpb24taGlwb3RlY2Eta2VudHVja3ktZ3VpYS1lbi1lc3Bhbm9sJywgdGl0bGU6J0PDs21vIE9idGVuZXIgbGEgUHJlYXByb2JhY2nDs24gZGUgdW5hIEhpcG90ZWNhIGVuIEtlbnR1Y2t5J30sCiAgICAgIHtwYXRoOicvY29zdG9zLWRlLWNpZXJyZS1rZW50dWNreS1ndWlhLWVuLWVzcGFub2wnLCB0aXRsZTonQ29zdG9zIGRlIENpZXJyZSBlbiBLZW50dWNreSd9LAogICAgICB7cGF0aDonL2FscXVpbGVyLWNvbi1vcGNpb24tYS1jb21wcmEta2VudHVja3ktZ3VpYS1lbi1lc3Bhbm9sJywgdGl0bGU6J0FscXVpbGVyIGNvbiBPcGNpw7NuIGEgQ29tcHJhIGVuIEtlbnR1Y2t5J30KICAgIF07CiAgICB2YXIgaGVyZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cLyQvLCAnJyk7CiAgICB2YXIgY3VycmVudCA9IG51bGw7CiAgICBmb3IgKHZhciBpPTA7aTxBUlRJQ0xFUy5sZW5ndGg7aSsrKXsgaWYgKEFSVElDTEVTW2ldLnBhdGggPT09IGhlcmUpIHsgY3VycmVudCA9IEFSVElDTEVTW2ldOyBicmVhazsgfSB9CiAgICBpZiAoIWN1cnJlbnQpIHJldHVybjsKICAgIHZhciB0cmllcyA9IDA7CiAgICB2YXIgaXYgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICB0cmllcysrOwogICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLW1hcy1ndWlhcy1lcycpKSB7IGNsZWFySW50ZXJ2YWwoaXYpOyByZXR1cm47IH0KICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2ItaXRlbS12aWV3X19ib2R5Jyk7CiAgICAgIGlmIChib2R5KSB7CiAgICAgICAgY2xlYXJJbnRlcnZhbChpdik7CiAgICAgICAgdmFyIG90aGVycyA9IEFSVElDTEVTLmZpbHRlcihmdW5jdGlvbihhKXsgcmV0dXJuIGEucGF0aCAhPT0gY3VycmVudC5wYXRoOyB9KTsKICAgICAgICB2YXIgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIHdyYXAuaWQgPSAnd3ItbWFzLWd1aWFzLWVzJzsKICAgICAgICB3cmFwLnN0eWxlLmNzc1RleHQgPSAnbWFyZ2luLXRvcDo0MHB4O3BhZGRpbmctdG9wOjI0cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjI1KTsnOwogICAgICAgIHZhciBoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOwogICAgICAgIGgudGV4dENvbnRlbnQgPSAnTcOhcyBndcOtYXMgZW4gZXNwYcOxb2wnOwogICAgICAgIGguc3R5bGUuY3NzVGV4dCA9ICdmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxOHB4O2NvbG9yOiNmZmZmZmY7bWFyZ2luLWJvdHRvbToxMnB4Oyc7CiAgICAgICAgd3JhcC5hcHBlbmRDaGlsZChoKTsKICAgICAgICB2YXIgdWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpOwogICAgICAgIHVsLnN0eWxlLmNzc1RleHQgPSAnbGlzdC1zdHlsZTpkaXNjO3BhZGRpbmctbGVmdDoyMHB4O21hcmdpbjowOyc7CiAgICAgICAgb3RoZXJzLmZvckVhY2goZnVuY3Rpb24oYSl7CiAgICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwogICAgICAgICAgbGkuc3R5bGUuY3NzVGV4dCA9ICdjb2xvcjojZmZmZmZmO21hcmdpbi1ib3R0b206OHB4Oyc7CiAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICAgICAgICAgIGxpbmsuaHJlZiA9IGEucGF0aDsKICAgICAgICAgIGxpbmsudGV4dENvbnRlbnQgPSBhLnRpdGxlOwogICAgICAgICAgbGluay5zdHlsZS5jc3NUZXh0ID0gJ2NvbG9yOiNmZmZmZmY7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsnOwogICAgICAgICAgbGkuYXBwZW5kQ2hpbGQobGluayk7CiAgICAgICAgICB1bC5hcHBlbmRDaGlsZChsaSk7CiAgICAgICAgfSk7CiAgICAgICAgd3JhcC5hcHBlbmRDaGlsZCh1bCk7CiAgICAgICAgYm9keS5hcHBlbmRDaGlsZCh3cmFwKTsKICAgICAgfSBlbHNlIGlmICh0cmllcyA+IDIwKSB7CiAgICAgICAgY2xlYXJJbnRlcnZhbChpdik7CiAgICAgIH0KICAgIH0sIDMwMCk7CiAgfSBjYXRjaChlKSB7fQp9KSgpOwoKCi8qIFNFTyBjb25zb2xpZGF0aW9uIChPY3QgMyAyMDI2KTogbWVyZ2UgZHVwbGljYXRlLXRvcGljIHBvc3RzICsgbm9pbmRleCBsZWZ0b3ZlciBzeXN0ZW0gcGFnZXMgKi8KKGZ1bmN0aW9uKCl7CiAgdHJ5IHsKICAgIHZhciBSID0gewogICAgICAiL3NlbGxpbmctdGhlLWhvdXNlLWR1cmluZy1hLWRpdm9yY2UtaW4ta2VudHVja3kiOiAiL3NlbGxpbmctYS1ob3VzZS1kdXJpbmctZGl2b3JjZS1rZW50dWNreSIsCiAgICAgICIvaG9yc2UtZmFybXMtb2xkaGFtLXNoZWxieS1jb3VudHkta3kiOiAiL2hvcnNlLWZhcm1zLWZvci1zYWxlLW9sZGhhbS1zaGVsYnktY291bnR5LWt5IiwKICAgICAgIi9zZWxsaW5nLWFuLWluaGVyaXRlZC1ob3VzZS1rZW50dWNreS1wcm9iYXRlLWd1aWRlIjogIi9zZWxsaW5nLWFuLWluaGVyaXRlZC1ob3VzZS1wcm9iYXRlLWtlbnR1Y2t5IiwKICAgICAgIi9zZWxsaW5nLWluaGVyaXRlZC1ob3VzZS1sb3Vpc3ZpbGxlLWtlbnR1Y2t5LXByb2JhdGUiOiAiL3NlbGxpbmctYW4taW5oZXJpdGVkLWhvdXNlLXByb2JhdGUta2VudHVja3kiLAogICAgICAiL2RlYXRoLW9mLXNwb3VzZS1zZWxsaW5nLWhvdXNlLWxvdWlzdmlsbGUta2VudHVja3kiOiAiL3NlbGxpbmctYS1ob3VzZS1hZnRlci10aGUtZGVhdGgtb2YtYS1zcG91c2UtaW4ta2VudHVja3kiLAogICAgICAiL2luZHVzdHJpYWwtd2FyZWhvdXNlLWludmVzdGluZy1sb3Vpc3ZpbGxlIjogIi9sb3Vpc3ZpbGxlLWluZHVzdHJpYWwtd2FyZWhvdXNlLWludmVzdG1lbnQtcHJvcGVydGllcyIKICAgIH07CiAgICB2YXIgTiA9IFsiL3VubmFtZWQtMTYwOTM2NiIsIi91bm5hbWVkLTE2MDk1MzEiLCIvdW5uYW1lZC0xNjA5MTM1IiwiL3VubmFtZWQtMTYwOTMzMyIsIi91bm5hbWVkLTE2MDkzMzQiLCIvdW5uYW1lZC0xNjA5Mzk5IiwiL2NhbmNlbC1hcHBvaW50bWVudCIsIi9yZXNjaGVkdWxlLWFwcG9pbnRtZW50IiwiL2NhbGN1bGF0b3ItcmVzdWx0cyIsIi9pbnRha2UtZm9ybS0yIiwiL2xhbmRpbmctcGFnZS0yIiwiL2NvbW1pdG1lbnQtdG8tY29tbXVuaXR5LWltcGFjdCIsIi9jb21taXRtZW50LXRvLWNvbW11bml0eS1pbXBhY3QtMiIsIi9jb21taXRtZW50LXRvLWNvbW11bml0eS1pbXBhY3QtMyIsIi9jb21taXRtZW50LXRvLWNvbW11bml0eS1pbXBhY3QtNCIsIi9kaXZlcnNlLWluY29tZS1vcHBvcnR1bml0aWVzIiwiL2RpdmVyc2UtaW5jb21lLW9wcG9ydHVuaXRpZXMtMiIsIi9kaXZlcnNlLWluY29tZS1vcHBvcnR1bml0aWVzLTMiLCIvZGl2ZXJzZS1pbmNvbWUtb3Bwb3J0dW5pdGllcy00IiwiL2VtcG93ZXJpbmctYWdlbnRzLXdpdGgtdGVjaG5vbG9neSIsIi9lbXBvd2VyaW5nLWFnZW50cy13aXRoLXRlY2hub2xvZ3ktMiIsIi9lbXBvd2VyaW5nLWFnZW50cy13aXRoLXRlY2hub2xvZ3ktMyIsIi9lbXBvd2VyaW5nLWFnZW50cy13aXRoLXRlY2hub2xvZ3ktNCIsIi9lbXBvd2VyZWQtYWdlbnRzLXdpdGgtdGVjaG5vbG9neSIsIi9lbGV2YXRlLWNvbm5lY3Rpb25zLWNybSIsIi9tZW50b3JzaGlwLXByb2dyYW1zIiwiL2luLWhvdXNlLXRyYW5zYWN0aW9uLXN1cHBvcnQiLCIvYS1jcGEtaW4teW91ci1jb3JuZXItZnJvbS1kYXktb25lIl07CiAgICB2YXIgcCA9IGxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1wvKyQvLCAiIikgfHwgIi8iOwogICAgaWYgKFJbcF0pIHsgbG9jYXRpb24ucmVwbGFjZShSW3BdICsgbG9jYXRpb24uc2VhcmNoKTsgcmV0dXJuOyB9CiAgICBpZiAoTi5pbmRleE9mKHApID4gLTEgJiYgIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT0icm9ib3RzIl0nKSkgewogICAgICB2YXIgbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm1ldGEiKTsgbS5uYW1lID0gInJvYm90cyI7IG0uY29udGVudCA9ICJub2luZGV4LCBmb2xsb3ciOyBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG0pOwogICAgfQogICAgdmFyIGZpeCA9IGZ1bmN0aW9uKCl7CiAgICAgIHZhciBhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImFbaHJlZl0iKTsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcy5sZW5ndGg7IGkrKykgewogICAgICAgIHRyeSB7CiAgICAgICAgICB2YXIgdSA9IG5ldyBVUkwoYXNbaV0uZ2V0QXR0cmlidXRlKCJocmVmIiksIGxvY2F0aW9uLmhyZWYpOwogICAgICAgICAgaWYgKHUuaG9zdG5hbWUuaW5kZXhPZigidGhld2lubmVycmVhbHR5LmNvbSIpID4gLTEpIHsKICAgICAgICAgICAgdmFyIGsgPSB1LnBhdGhuYW1lLnJlcGxhY2UoL1wvKyQvLCAiIik7CiAgICAgICAgICAgIGlmIChSW2tdKSBhc1tpXS5zZXRBdHRyaWJ1dGUoImhyZWYiLCBSW2tdKTsKICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoKGUpIHt9CiAgICAgIH0KICAgIH07CiAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gImxvYWRpbmciKSBmaXgoKTsgZWxzZSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZml4KTsKICAgIHNldFRpbWVvdXQoZml4LCAxNTAwKTsgc2V0VGltZW91dChmaXgsIDQwMDApOwogIH0gY2F0Y2goZSkge30KfSkoKTsKPC9zY3JpcHQ+|END

WRA|i286483|8|PHN0eWxlPgovKiBLZWVwIHRoZSBjYWxsIGJ1dHRvbiB2aXNpYmxlIG9uIG1vYmlsZTsgQjEyIGhpZGVzIHRoZSBjb250YWN0cyBiYXIgYmVsb3cgMTAzM3B4ICovCkBtZWRpYSAobWF4LXdpZHRoOiAxMDMzcHgpIHsKICAuc2ItdG9wLWhlYWRlci1jb250YWN0c19fY29udGFjdCB7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IHBhZGRpbmc6IDhweCAwOyB9CiAgLnNiLXRvcC1oZWFkZXItY29udGFjdHNfX2NvbnRhY3QgYVtocmVmXj0ibWFpbHRvOiJdIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9Cn0KPC9zdHlsZT4KPHNjcmlwdD4KKGZ1bmN0aW9uICgpIHsKICB2YXIgU0VMID0gIi5zYi10b3AtaGVhZGVyLWNvbnRhY3RzX19jb250YWN0LWN0YSBhLnRlbFtocmVmXj0ndGVsOiddIjsKICB2YXIgU1RZTEUgPSAiZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZDojRkY2RTRFO2NvbG9yOiNmZmY7IgogICAgKyAiZm9udC1mYW1pbHk6J1JvYm90byBTZXJpZicsR2VvcmdpYSxzZXJpZjtmb250LXdlaWdodDo3MDA7IgogICAgKyAiZm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MS4yO3BhZGRpbmc6MTRweCAyMnB4OyIKICAgICsgInRleHQtZGVjb3JhdGlvbjpub25lO2JvcmRlci1yYWRpdXM6MDsiOwogIGZ1bmN0aW9uIGFwcGx5KCkgewogICAgdmFyIGEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFNFTCk7CiAgICBpZiAoIWEgfHwgYS5nZXRBdHRyaWJ1dGUoImRhdGEtd3ItY2FsbC1idG4iKSkgcmV0dXJuOwogICAgYS5zZXRBdHRyaWJ1dGUoImRhdGEtd3ItY2FsbC1idG4iLCAiMSIpOwogICAgYS50ZXh0Q29udGVudCA9ICJDYWxsICg1MDIpIDMwNS04OTE1IjsKICAgIGEuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgIkNhbGwgV2lubmVyIFJlYWx0eSBhdCA1MDItMzA1LTg5MTUiKTsKICAgIGEuc2V0QXR0cmlidXRlKCJzdHlsZSIsIFNUWUxFKTsKICAgIHZhciBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKICAgIGltZy5zcmMgPSAiaHR0cHM6Ly9hc3NldHMuY2RuLmZpbGVzYWZlLnNwYWNlL21oTXpwT3hMRVdCNnprT2VNMm1BL21lZGlhLzZhYWZmOTU1MzBiMGY5NTdjY2ExZmFiYi5qcGciOwogICAgaW1nLmFsdCA9ICJSb2JieSBmcm9tIFdpbm5lciBSZWFsdHkiOwogICAgaW1nLndpZHRoID0gNDY7IGltZy5oZWlnaHQgPSA0NjsKICAgIGltZy5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgIndpZHRoOjQ2cHg7aGVpZ2h0OjQ2cHg7b2JqZWN0LWZpdDpjb3Zlcjtib3JkZXItcmFkaXVzOjA7IgogICAgICArICJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjEwcHg7Iik7CiAgICBhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGltZywgYSk7CiAgICBhLnN0eWxlLnZlcnRpY2FsQWxpZ24gPSAibWlkZGxlIjsKICB9CgogIC8vIFRoZSBmaXhlZCBuYXYgYXNzdW1lcyBhIHNob3J0ZXIgYmFubmVyOyBwdXNoIGl0IGRvd24gc28gdGhlIGNhbGwKICAvLyBidXR0b24gaXMgbmV2ZXIgaGlkZGVuIHVuZGVyICNzYi1iYW5uZXIgd2hpbGUgc2Nyb2xsaW5nLgogIHZhciBhcHBsaWVkID0gMDsKICBmdW5jdGlvbiBjbGVhckJhbm5lcigpIHsKICAgIHZhciBuYXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ItbmF2aWdhdGlvbiIpOwogICAgdmFyIGJhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzYi1iYW5uZXIiKTsKICAgIHZhciBjYWxsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihTRUwpOwogICAgaWYgKCFuYXYgfHwgIWNhbGwpIHJldHVybjsKICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKG5hdikucG9zaXRpb24gIT09ICJmaXhlZCIpIHsKICAgICAgaWYgKGFwcGxpZWQpIHsgbmF2LnN0eWxlLnRvcCA9ICIiOyBhcHBsaWVkID0gMDsgfQogICAgICByZXR1cm47CiAgICB9CiAgICB2YXIgYm90dG9tID0gMDsKICAgIGlmIChiYW4pIHsKICAgICAgdmFyIGJzID0gZ2V0Q29tcHV0ZWRTdHlsZShiYW4pOwogICAgICBpZiAoYnMuZGlzcGxheSAhPT0gIm5vbmUiICYmIGJzLnZpc2liaWxpdHkgIT09ICJoaWRkZW4iICYmIGJhbi5vZmZzZXRIZWlnaHQgPiAwKSB7CiAgICAgICAgYm90dG9tID0gYmFuLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbTsKICAgICAgfQogICAgfQogICAgdmFyIGJhc2UgPSBjYWxsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCAtIGFwcGxpZWQ7CiAgICB2YXIgbmVlZCA9IE1hdGgubWF4KDAsIE1hdGguY2VpbChib3R0b20gLSBiYXNlKSk7CiAgICBpZiAobmVlZCAhPT0gYXBwbGllZCkgeyBuYXYuc3R5bGUudG9wID0gbmVlZCArICJweCI7IGFwcGxpZWQgPSBuZWVkOyB9CiAgfQoKICAvLyBCMTIgdG9nZ2xlcyB0aGUgZml4ZWQgc3RhdGUgaW4gaXRzIG93biBzY3JvbGwgaGFuZGxlciwgd2hpY2ggY2FuIHJ1bgogIC8vIGFmdGVyIG91cnM7IHJlLWNoZWNrIG9uIHRoZSBuZXh0IGZyYW1lIGFuZCB3aGVuZXZlciB0aGUgbmF2IGNoYW5nZXMuCiAgZnVuY3Rpb24gc2NoZWR1bGUoKSB7IHJlcXVlc3RBbmltYXRpb25GcmFtZShjbGVhckJhbm5lcik7IHNldFRpbWVvdXQoY2xlYXJCYW5uZXIsIDI1MCk7IH0KICBmdW5jdGlvbiBpbml0KCkgewogICAgYXBwbHkoKTsgY2xlYXJCYW5uZXIoKTsKICAgIHZhciBuYXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ItbmF2aWdhdGlvbiIpOwogICAgaWYgKG5hdiAmJiB3aW5kb3cuTXV0YXRpb25PYnNlcnZlcikgewogICAgICBuZXcgTXV0YXRpb25PYnNlcnZlcihzY2hlZHVsZSkub2JzZXJ2ZShuYXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlRmlsdGVyOiBbImNsYXNzIl0gfSk7CiAgICB9CiAgfQogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCBzY2hlZHVsZSwgeyBwYXNzaXZlOiB0cnVlIH0pOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCBjbGVhckJhbm5lcik7CiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbiAoKSB7IHNldFRpbWVvdXQoY2xlYXJCYW5uZXIsIDM1MCk7IH0pOwogIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAibG9hZGluZyIpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBpbml0KTsKICB9IGVsc2UgewogICAgaW5pdCgpOwogIH0KICBzZXRUaW1lb3V0KGNsZWFyQmFubmVyLCAxNTAwKTsKfSkoKTsKPC9zY3JpcHQ+CjwhLS0gd3ItbmF2OiBzaXRlIHNlYXJjaCwgYnJlYWRjcnVtYnMsIG9uLXRoaXMtcGFnZSwgaHVicyAoMjAyNi0xMC0wMykgLS0+CjxzY3JpcHQ+Ci8qIHdyLW5hdjogc2l0ZSBzZWFyY2gsIGJyZWFkY3J1bWJzLCAiT24gdGhpcyBwYWdlIiwgQnV5L1NlbGwvSW52ZXN0L1Rvb2xzL0d1aWRlcyBodWJzLAogICBkdXBsaWNhdGUtcGFnZSBjb25zb2xpZGF0aW9uLCBmb290ZXIgYWRkaXRpb25zLCBTcGFuaXNoIGxhYmVscy4gQWRkZWQgMjAyNi0xMC0wMy4gKi8KKGZ1bmN0aW9uICgpIHsKICBpZiAod2luZG93Ll9fd3JOYXYpIHJldHVybjsgd2luZG93Ll9fd3JOYXYgPSAxOwogIHZhciBQQVRIID0gKGxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1wvKyQvLCAnJykgfHwgJy8nKTsKICBpZiAoUEFUSCA9PT0gJy9pbmRleCcpIFBBVEggPSAnLyc7CgogIC8qIC0tLS0tLS0tLS0gMS4gRHVwbGljYXRlIHBhZ2VzOiBzZW5kIHZpc2l0b3JzIChhbmQgR29vZ2xlKSB0byB0aGUgb25lIHdlIGtlZXAgLS0tLS0tLS0tLSAqLwogIHZhciBEVVBTID0geyIvc2VsbGluZy1hLWhvdXNlLWR1cmluZy1kaXZvcmNlLWtlbnR1Y2t5IjoiL3NlbGxpbmctdGhlLWhvdXNlLWR1cmluZy1hLWRpdm9yY2UtaW4ta2VudHVja3kiLCIvc2VsbGluZy1hLWhvYXJkZXItaG91c2UtbG91aXN2aWxsZSI6Ii9zZWxsaW5nLWEtaG9hcmRlci1ob3VzZS1pbi1rZW50dWNreSIsIi9zZWxsaW5nLWFuLWluaGVyaXRlZC1ob3VzZS1wcm9iYXRlLWtlbnR1Y2t5IjoiL3NlbGxpbmctYW4taW5oZXJpdGVkLWhvdXNlLWtlbnR1Y2t5LXByb2JhdGUtZ3VpZGUiLCIvc2VsbGluZy1pbmhlcml0ZWQtaG91c2UtbG91aXN2aWxsZS1rZW50dWNreS1wcm9iYXRlIjoiL3NlbGxpbmctYW4taW5oZXJpdGVkLWhvdXNlLWtlbnR1Y2t5LXByb2JhdGUtZ3VpZGUiLCIvc2VsbGluZy1hLWhvdXNlLXdpdGgtdGVuYW50cy1rZW50dWNreSI6Ii90aXJlZC1sYW5kbG9yZC1ob3ctdG8tc2VsbC1hLXJlbnRhbC1wcm9wZXJ0eS13aXRoLXRlbmFudHMtaW4ta2VudHVja3kiLCIvc2VsbGluZy10ZW5hbnQtb2NjdXBpZWQtcmVudGFsLWxvdWlzdmlsbGUta2VudHVja3kiOiIvdGlyZWQtbGFuZGxvcmQtaG93LXRvLXNlbGwtYS1yZW50YWwtcHJvcGVydHktd2l0aC10ZW5hbnRzLWluLWtlbnR1Y2t5IiwiL3NlbGxpbmctYS1ob3VzZS13aXRoLWNvZGUtdmlvbGF0aW9ucy1sb3Vpc3ZpbGxlIjoiL2NvZGUtdmlvbGF0aW9ucy1sb3Vpc3ZpbGxlLXByb3BlcnR5LWxpZW4tZ3VpZGUiLCIvbWVkaWNhbC1kZWJ0LWhvc3BpdGFsLWxpZW4tc2VsbGluZy1ob3VzZS1rZW50dWNreSI6Ii9jYW4tYS1ob3NwaXRhbC1saWVuLXN0b3AtYS1ob21lLXNhbGUta2VudHVja3kiLCIvc2VsbGluZy1hLWhvdXNlLWFmdGVyLXRoZS1kZWF0aC1vZi1hLXNwb3VzZS1pbi1rZW50dWNreSI6Ii9kZWF0aC1vZi1zcG91c2Utc2VsbGluZy1ob3VzZS1sb3Vpc3ZpbGxlLWtlbnR1Y2t5IiwiL2tlbnR1Y2t5LXdob2xlc2FsaW5nLWxhdy1oYjYyLWNvbXBsaWFuY2UiOiIvd2hvbGVzYWxpbmctcmVhbC1lc3RhdGUta2VudHVja3kiLCIvYmVoaW5kLW9uLXByb3BlcnR5LXRheGVzLWxvdWlzdmlsbGUiOiIvYmVoaW5kLW9uLXByb3BlcnR5LXRheGVzLWtlbnR1Y2t5LXRheC1zYWxlLWd1aWRlIiwiL2hvcnNlLWZhcm1zLW9sZGhhbS1zaGVsYnktY291bnR5LWt5IjoiL2hvcnNlLWZhcm1zLWZvci1zYWxlLW9sZGhhbS1zaGVsYnktY291bnR5LWt5In07CiAgaWYgKERVUFNbUEFUSF0pIHsKICAgIHRyeSB7CiAgICAgIHZhciBjbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2xpbmtbcmVsPSJjYW5vbmljYWwiXScpOwogICAgICBpZiAoIWNsKSB7IGNsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpOyBjbC5yZWwgPSAnY2Fub25pY2FsJzsgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChjbCk7IH0KICAgICAgY2wuaHJlZiA9ICdodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tJyArIERVUFNbUEFUSF07CiAgICB9IGNhdGNoIChlKSB7fQogICAgbG9jYXRpb24ucmVwbGFjZShEVVBTW1BBVEhdICsgbG9jYXRpb24uc2VhcmNoICsgbG9jYXRpb24uaGFzaCk7CiAgICByZXR1cm47CiAgfQogIC8qIFRlbXBsYXRlIGxlZnRvdmVycyBhbmQgdXRpbGl0eSBwYWdlcyBzdGF5IHVzYWJsZSBidXQgb3V0IG9mIEdvb2dsZSAqLwogIHZhciBOT0lOREVYID0gWyIvZWxldmF0ZS1jb25uZWN0aW9ucy1jcm0iLCIvZW1wb3dlcmVkLWFnZW50cy13aXRoLXRlY2hub2xvZ3kiLCIvZW1wb3dlcmluZy1hZ2VudHMtd2l0aC10ZWNobm9sb2d5LTIiLCIvZW1wb3dlcmluZy1hZ2VudHMtd2l0aC10ZWNobm9sb2d5LTMiLCIvZW1wb3dlcmluZy1hZ2VudHMtd2l0aC10ZWNobm9sb2d5LTQiLCIvY29tbWl0bWVudC10by1jb21tdW5pdHktaW1wYWN0IiwiL2NvbW1pdG1lbnQtdG8tY29tbXVuaXR5LWltcGFjdC0yIiwiL2NvbW1pdG1lbnQtdG8tY29tbXVuaXR5LWltcGFjdC0zIiwiL2NvbW1pdG1lbnQtdG8tY29tbXVuaXR5LWltcGFjdC00IiwiL2RpdmVyc2UtaW5jb21lLW9wcG9ydHVuaXRpZXMiLCIvZGl2ZXJzZS1pbmNvbWUtb3Bwb3J0dW5pdGllcy0yIiwiL2RpdmVyc2UtaW5jb21lLW9wcG9ydHVuaXRpZXMtMyIsIi9kaXZlcnNlLWluY29tZS1vcHBvcnR1bml0aWVzLTQiLCIvaW4taG91c2UtdHJhbnNhY3Rpb24tc3VwcG9ydCIsIi9tZW50b3JzaGlwLXByb2dyYW1zIiwiL2EtY3BhLWluLXlvdXItY29ybmVyLWZyb20tZGF5LW9uZSIsIi9sYW5kaW5nLXBhZ2UtMiIsIi9jYWxjdWxhdG9yLXJlc3VsdHMiLCIvY2FuY2VsLWFwcG9pbnRtZW50IiwiL3Jlc2NoZWR1bGUtYXBwb2ludG1lbnQiLCIvaW50YWtlLWZvcm0tMiJdOwogIGlmIChOT0lOREVYLmluZGV4T2YoUEFUSCkgIT09IC0xIHx8IC9eXC91bm5hbWVkLVxkKyQvLnRlc3QoUEFUSCkpIHsKICAgIHZhciBtciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT0icm9ib3RzIl0nKTsKICAgIGlmIChtcikgeyBpZiAoIS9ub2luZGV4Ly50ZXN0KG1yLmNvbnRlbnQpKSBtci5jb250ZW50ID0gKG1yLmNvbnRlbnQgPyBtci5jb250ZW50ICsgJywgJyA6ICcnKSArICdub2luZGV4LCBmb2xsb3cnOyB9CiAgICBlbHNlIHsgbXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdtZXRhJyk7IG1yLm5hbWUgPSAncm9ib3RzJzsgbXIuY29udGVudCA9ICdub2luZGV4LCBmb2xsb3cnOyBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG1yKTsgfQogIH0KCiAgdmFyIElEWCA9IFtbIi8xMDMxLWV4Y2hhbmdlLWNvbW1lcmNpYWwtcmVhbC1lc3RhdGUta2VudHVja3kiLCIxMDMxIEV4Y2hhbmdlIGZvciBDb21tZXJjaWFsIFJlYWwgRXN0YXRlOiBSdWxlcywgRGVhZGxpbmVzLCBhbmQgMjAyNiBTdHJhdGVneSIsImNvbW0iLCJIb3cgYSAxMDMxIGV4Y2hhbmdlIHdvcmtzIGZvciBMb3Vpc3ZpbGxlIGFuZCBLZW50dWNreSBjb21tZXJjaWFsIHByb3BlcnR5OiA0NS0gYW5kIDE4MC1kYXkgZGVhZGxpbmVzLCBxdWFsaWZpZWTigKYiXSxbIi8xMDMxLWV4Y2hhbmdlLWtlbnR1Y2t5LWZhcm0tbGFuZC1zZWxsZXJzIiwiMTAzMSBFeGNoYW5nZXMgZm9yIEtlbnR1Y2t5IEZhcm0gYW5kIExhbmQgU2VsbGVyczogV2hhdCB0byBLbm93IEJlZm9yZSBZb3UgU2VsbCIsImxhbmQiLCJTZWxsaW5nIGZhcm1sYW5kIG9yIGxhbmQgaW4gS2VudHVja3k/IEhvdyBhIDEwMzEgZXhjaGFuZ2Ugd29ya3MgZm9yIGFncmljdWx0dXJhbCBsYW5kOiBkZWFkbGluZXMsIHF1YWxpZmllZOKApiJdLFsiLzE5LXRoaW5ncy10by1rbm93LWJlZm9yZS1tb3ZpbmctdG8tbGV4aW5ndG9uIiwiMTkgVGhpbmdzIHRvIEtub3cgQmVmb3JlIE1vdmluZyB0byBMZXhpbmd0b24sIEtZICgyMDI2IEd1aWRlKSIsInJlbG9jIiwiUmVsb2NhdGluZyB0byBMZXhpbmd0b24/IDE5IHRoaW5ncyB0byBrbm93IGFib3V0IGpvYnMsIGNvc3Qgb2YgbGl2aW5nLCBuZWlnaGJvcmhvb2RzLCBzY2hvb2xzLCBob3JzZSBjdWx0dXJlLCBmb29kLOKApiJdLFsiLzE5LXRoaW5ncy10by1rbm93LWJlZm9yZS1tb3ZpbmctdG8tbG91aXN2aWxsZSIsIjE5IFRoaW5ncyB0byBLbm93IEJlZm9yZSBNb3ZpbmcgdG8gTG91aXN2aWxsZSwgS1kgKDIwMjYgR3VpZGUpIiwicmVsb2MiLCJSZWxvY2F0aW5nIHRvIExvdWlzdmlsbGU/IDE5IHRoaW5ncyB0byBrbm93IGFib3V0IGpvYnMsIGNvc3Qgb2YgbGl2aW5nLCBuZWlnaGJvcmhvb2RzLCBzY2hvb2xzLCBmb29kLCBwYXJrcywgc3BvcnRzLOKApiJdLFsiLzE5LXRoaW5ncy10by1rbm93LWJlZm9yZS1tb3ZpbmctdG8tc291dGhlcm4taW5kaWFuYSIsIjE5IFRoaW5ncyB0byBLbm93IEJlZm9yZSBNb3ZpbmcgdG8gU291dGhlcm4gSW5kaWFuYSAoMjAyNiBHdWlkZSkiLCJyZWxvYyIsIk1vdmluZyB0byBTb3V0aGVybiBJbmRpYW5hPyAxOSB0aGluZ3MgdG8ga25vdyBhYm91dCBKZWZmZXJzb252aWxsZSwgTmV3IEFsYmFueSwgQ2xhcmtzdmlsbGUsIHRheGVzLCBzY2hvb2xzLCBicmlkZ2VzLOKApiJdLFsiL2EtbG91aXN2aWxsZS1pbnZlc3RvcnMtZ3VpZGUtdG8tc2tpcC10cmFjaW5nLWFuZC1hYnNlbnRlZS1vd25lci1saXN0cyIsIkEgTG91aXN2aWxsZSBJbnZlc3RvcidzIEd1aWRlIHRvIFNraXAgVHJhY2luZyBhbmQgQWJzZW50ZWUtT3duZXIgTGlzdHMiLCJpbnZlc3QiLCJBbiBhYnNlbnRlZS1vd25lciBsaXN0IHRlbGxzIHlvdSBhIHByb3BlcnR5J3MgbWFpbGluZyBhZGRyZXNzIGRvZXNuJ3QgbWF0Y2ggaXRzIHBoeXNpY2FsIGFkZHJlc3MuIEl0IGRvZXNuJ3QgdGVsbCB5b3XigKYiXSxbIi9hY2Nlc3NpYmlsaXR5LXJlc291cmNlcy1sb3Vpc3ZpbGxlIiwiQWNjZXNzaWJpbGl0eSBSZXNvdXJjZXMgZm9yIERlYWYsIEJsaW5kICYgTmV1cm9kaXZlcmdlbnQgQ2xpZW50cyBpbiBMb3Vpc3ZpbGxlIiwiYWJvdXQiLCJGcmVlIHJlbGF5ICYgY2FwdGlvbmVkIHBob25lIHNlcnZpY2VzLCBsb2NhbCBBU0wgaW50ZXJwcmV0ZXIgYWdlbmNpZXMsIGJsaW5kL2xvdy12aXNpb24gcmVzb3VyY2VzLCBhbmQgb3VyIHNlbnNvcnkgJuKApiJdLFsiL2FjY2Vzc2libGUtcmVhbC1lc3RhdGUtbG91aXN2aWxsZSIsIkFjY2Vzc2libGUgUmVhbCBFc3RhdGUgaW4gTG91aXN2aWxsZSIsImFib3V0IiwiQnV5aW5nIG9yIHNlbGxpbmcgd2l0aCBhIGRpc2FiaWxpdHkgaW4gTG91aXN2aWxsZT8gV2lubmVyIFJlYWx0eSBpcyBidWlsZGluZyByZWFsIGFjY2Vzc2liaWxpdHkgaW5mcmFzdHJ1Y3R1cmUg4oCU4oCmIl0sWyIvYWdpbmctaW4tcGxhY2UtbG91aXN2aWxsZS1ob21lLW1vZGlmaWNhdGlvbnMiLCJBZ2luZyBpbiBwbGFjZSBpbiBMb3Vpc3ZpbGxlOiBtb2RpZmljYXRpb25zLCBmaW5hbmNpbmcsIHdobyB0byBjYWxsIiwiYnV5IiwiVW5pdmVyc2FsLWRlc2lnbiBiYXNpY3MsIG1vZGlmaWNhdGlvbiBjb3N0cywgRkhBIDIwMyhrKSwgSG9tZVN0eWxlLCBWQSBTQUgvU0hBL0hJU0EgZ3JhbnRzLCBmcmVlIExvdWlzdmlsbGUgcmVwYWly4oCmIl0sWyIvYWxxdWlsZXItY29uLW9wY2lvbi1hLWNvbXByYS1rZW50dWNreS1ndWlhLWVuLWVzcGFub2wiLCJBbHF1aWxlciBjb24gT3BjacOzbiBhIENvbXByYSBlbiBLZW50dWNreTogQ8OzbW8gRnVuY2lvbmEgeSBRdcOpIERlYmUgU2FiZXIiLCJlcyIsIkd1w61hIGVuIGVzcGHDsW9sIHNvYnJlIGVsIGFscXVpbGVyIGNvbiBvcGNpw7NuIGEgY29tcHJhIGVuIEtlbnR1Y2t5OiBjw7NtbyBmdW5jaW9uYW4gY3LDqWRpdG9zIGRlIHJlbnRhLCBzZcOxYWxlcyBkZSBhbGVydGEsIHnigKYiXSxbIi9hbmNob3JhZ2Uta3ktcmVhbC1lc3RhdGUtZ3VpZGUiLCJBbmNob3JhZ2UsIEtZIFJlYWwgRXN0YXRlIEd1aWRlIHwgSG9tZXMgaW4gTG91aXN2aWxsZSdzIE1vc3QgRXhjbHVzaXZlIENvbW11bml0eSIsImhvb2QiLCJFeHBsb3JlIGhvbWVzIGZvciBzYWxlIGluIEFuY2hvcmFnZSwgS2VudHVja3kgd2l0aCBXaW5uZXIgUmVhbHR5LiBMb2NhbCBpbnNpZ2h0IG9uIHRoZSBBbmNob3JhZ2UgSW5kZXBlbmRlbnQgU2Nob29s4oCmIl0sWyIvYXNpc3RlbmNpYS1wYXJhLWVsLXBhZ28taW5pY2lhbC1rZW50dWNreSIsIkFzaXN0ZW5jaWEgcGFyYSBlbCBQYWdvIEluaWNpYWwgZW4gS2VudHVja3k6IEd1w61hIGVuIEVzcGHDsW9sICgyMDI2KSIsImVzIiwiUHJvZ3JhbWFzIGRlIGFzaXN0ZW5jaWEgcGFyYSBlbCBwYWdvIGluaWNpYWwgZW4gS2VudHVja3kgZXhwbGljYWRvcyBlbiBlc3Bhw7FvbDogS0hDIGhhc3RhICQxMiw1MDAgeSBMb3Vpc3ZpbGxlIE1ldHJv4oCmIl0sWyIvYXNzdW1hYmxlLW1vcnRnYWdlcy1sb3Vpc3ZpbGxlIiwiQXNzdW1hYmxlIE1vcnRnYWdlcyBpbiBMb3Vpc3ZpbGxlOiBIb3cgVGhleSBXb3JrIGFuZCBIb3cgdG8gRmluZCBUaGVtIiwiYnV5IiwiSGFsZiBvZiBVUyBtb3J0Z2FnZXMgYXJlIHVuZGVyIDQlLiBIZXJlJ3Mgd2hpY2ggbG9hbnMgYXJlIGFzc3VtYWJsZSwgaG93IHRvIGZpbmQgdGhlIG9uZXMgbm9ib2R5IGZsYWdnZWQgaW4gTG91aXN2aWxsZSzigKYiXSxbIi9iZWVjaG1vbnQtc291dGgtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSIsIkJlZWNobW9udCBhbmQgU291dGggTG91aXN2aWxsZSwgS1kgUmVhbCBFc3RhdGUgR3VpZGUiLCJob29kIiwiRXhwbG9yaW5nIEJlZWNobW9udCBvciBTb3V0aCBMb3Vpc3ZpbGxlIHJlYWwgZXN0YXRlPyBXaW5uZXIgUmVhbHR5IGNvdmVycyBob21lIHByaWNlcywgbG9jYXRpb24sIGFuZCBsaWZlc3R5bGUgaW4gdGhpc+KApiJdLFsiL2JlaGluZC1vbi1wcm9wZXJ0eS10YXhlcy1rZW50dWNreS10YXgtc2FsZS1ndWlkZSIsIkJlaGluZCBvbiBQcm9wZXJ0eSBUYXhlcyBpbiBLZW50dWNreT8gWW91ciBPcHRpb25zIEJlZm9yZSBhIFRheCBTYWxlIiwidG91Z2giLCJGYWxsaW5nIGJlaGluZCBvbiBLZW50dWNreSBwcm9wZXJ0eSB0YXhlcyBkb2Vzbid0IG1lYW4geW91J3JlIG91dCBvZiBvcHRpb25zLiBIZXJlJ3MgaG93IHRoZSBjZXJ0aWZpY2F0ZSBzYWxlIHByb2Nlc3PigKYiXSxbIi9iZWxrbmFwLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiLCJCZWxrbmFwIExvdWlzdmlsbGUgUmVhbCBFc3RhdGUgR3VpZGUgfCBOZWFyIFUgb2YgTCdzIEJlbGtuYXAgQ2FtcHVzIiwiaG9vZCIsIkhvbWVzIGZvciBzYWxlIGluIEJlbGtuYXAsIExvdWlzdmlsbGUsIG5lYXIgdGhlIFVuaXZlcnNpdHkgb2YgTG91aXN2aWxsZS4gTG9jYWwgbWFya2V0IGluc2lnaHQgb24gc2hvdGd1biBob3VzZXMsIHJlbnRhbOKApiJdLFsiL2Jlc3QtYnJva2VyYWdlLWZvci1uZXctYWdlbnRzLWxvdWlzdmlsbGUiLCJCZXN0IEJyb2tlcmFnZSBmb3IgTmV3IEFnZW50cyBpbiBMb3Vpc3ZpbGxlLCBLWTogT3VyIFRydXN0ZWQgUGFydG5lciBOZXR3b3JrIiwiYWdlbnRzIiwiUmVhbCBBQ0EgaGVhbHRoIGluc3VyYW5jZSBhY2Nlc3MsIGEgdmV0dGVkIENQQS9sZW5kZXIvaW5zdXJhbmNlL2xlZ2FsIG5ldHdvcmssIGFuZCBhIHBhaWQtYWQtZnJlZSBsZWFkIHBpcGVsaW5lIOKAlCB3aHkgbmV34oCmIl0sWyIvYmVzdC1uZWlnaGJvcmhvb2RzLW1pZHRlcm0tcmVudGFsLWxvdWlzdmlsbGUiLCJCZXN0IExvdWlzdmlsbGUgJiBTb3V0aGVybiBJbmRpYW5hIE5laWdoYm9yaG9vZHMgZm9yIE1pZHRlcm0gVGVuYW50cyIsInN0ciIsIldoaWNoIExvdWlzdmlsbGUgYW5kIFNvdXRoZXJuIEluZGlhbmEgbmVpZ2hib3Job29kcyBmaXQgbWlkdGVybSB0ZW5hbnRzIGJlc3QsIG1hdGNoZWQgdG8gaG9zcGl0YWwgY2FtcHVzZXMsIGVtcGxveWVycyzigKYiXSxbIi9ib3VyYm9uLXRyYWlsLWFpcmJuYi1pbnZlc3RtZW50IiwiQm91cmJvbiBUcmFpbCBBaXJibmIgSW52ZXN0bWVudDogVGhlIDIwMjYgR3VpZGUgZm9yIEtlbnR1Y2t5IFNob3J0LVRlcm0gUmVudGFsIEJ1eWVycyIsInN0ciIsIjIuN00gYW5udWFsIEJvdXJib24gVHJhaWwgdmlzaXRvcnMsIGxpbWl0ZWQgbG9kZ2luZyBzdXBwbHkuIFJlYWwgQURSL29jY3VwYW5jeSBkYXRhIGZvciBCYXJkc3Rvd24sIFZlcnNhaWxsZXMsIEZyYW5rZm9ydOKApiJdLFsiL21hcmtldC1leHBhbnNpb24taW5xdWlyeSIsIkJyaW5nIFdpbm5lciBSZWFsdHkgdG8gWW91ciBNYXJrZXQiLCJhZ2VudHMiLCJXaGV0aGVyIHlvdSdyZSBhIHJlYWwgZXN0YXRlIGFnZW50IGxvb2tpbmcgdG8gYnJpbmcgdGhlIFdpbm5lciBSZWFsdHkgYnJhbmQgYW5kIHN5c3RlbXMgdG8geW91ciBjaXR5LCBvciBhbiBpbnZlc3RvciB3aG/igKYiXSxbIi9icnJyci1jYWxjdWxhdG9yIiwiQlJSUlIgQ2FsY3VsYXRvcjogQnV5LCBSZWhhYiwgUmVudCwgUmVmaW5hbmNlLCBSZXBlYXQgKDIwMjYpIiwidG9vbCIsIkNhbGN1bGF0ZSBjYXNoIGxlZnQgaW4gdGhlIGRlYWwsIGNhc2gtb24tY2FzaCByZXR1cm4sIGFuZCBEU0NSIGZvciBhIEJSUlJSIGludmVzdG1lbnQgcHJvcGVydHkuIEVudGVyIHlvdXIgcHVyY2hhc2XigKYiXSxbIi9idWxsaXR0LXNwZW5jZXItY291bnR5LWxhbmQtYWNyZWFnZS1ndWlkZSIsIkJ1bGxpdHQgYW5kIFNwZW5jZXIgQ291bnR5OiBBY3JlYWdlIFdpdGhpbiBSZWFjaCBvZiBMb3Vpc3ZpbGxlIiwibGFuZCIsIlRoZSBtb3N0IGFmZm9yZGFibGUgYWNyZWFnZSBuZWFyIExvdWlzdmlsbGU6IEJ1bGxpdHQncyBJLTY1IGFuZCBhaXJwb3J0IGFjY2VzcywgU3BlbmNlcidzIGxha2UgY291bnRyeSBhbmQgbG93ZXN0IHRheOKApiJdLFsiL2J1bGxpdHQtY291bnR5LWt5LXJlYWwtZXN0YXRlLWd1aWRlIiwiQnVsbGl0dCBDb3VudHksIEtZIFJlYWwgRXN0YXRlIEd1aWRlIHwgU2hlcGhlcmRzdmlsbGUsIE1vdW50IFdhc2hpbmd0b24gJiBIaWxsdmlldyIsImhvb2QiLCJCdXlpbmcgb3Igc2VsbGluZyBpbiBCdWxsaXR0IENvdW50eSwgS2VudHVja3k/IEN1cnJlbnQgaG9tZSBwcmljZXMgYnkgY2l0eSwgaG9uZXN0IHNjaG9vbCByYXRpbmdzLCBwcm9wZXJ0eSB0YXggcmF0ZXMs4oCmIl0sWyIvYnV5IiwiQnV5IGEgaG9tZSBpbiBMb3Vpc3ZpbGxlIChzdGFydCBoZXJlKSIsImJ1eSIsIkZpbmFuY2luZyBvcHRpb25zLCBkb3duIHBheW1lbnQgYXNzaXN0YW5jZSwgYW5kIGNsb3NpbmcgY29zdCBndWlkZXMgZm9yIExvdWlzdmlsbGUgaG9tZWJ1eWVycywgcGx1cyBleHBlcnQgbG9jYWwgZ3VpZGFuY2XigKYiXSxbIi9idXktYm94LXNpZ251cCIsIlNlbmQgdXMgeW91ciBidXkgYm94IChuZXcgbGlzdGluZyBhbGVydHMpIiwiYnV5IiwiVGVsbCB1cyB3aGF0IHlvdSdyZSBsb29raW5nIGZvciBhbmQgd2UnbGwgc2V0IHlvdSB1cCBvbiB0aGUgcmlnaHQgbGlzdGluZyBhbGVydHMuIl0sWyIvYnV5ZXItYWdlbmN5LWFncmVlbWVudC1rZW50dWNreS1uYXItc2V0dGxlbWVudCIsIkJ1eWVyIEFnZW5jeSBBZ3JlZW1lbnRzIGluIEtlbnR1Y2t5OiBXaGF0IENoYW5nZWQgQWZ0ZXIgdGhlIE5BUiBTZXR0bGVtZW50ICgyMDI2IEd1aWRlKSIsImJ1eSIsIldoYXQgS2VudHVja3kncyBidXllciByZXByZXNlbnRhdGlvbiBhZ3JlZW1lbnQgYWN0dWFsbHkgcmVxdWlyZXMgYWZ0ZXIgdGhlIE5BUiBzZXR0bGVtZW50LCBob3cgaXQgZGlmZmVycyBmcm9tIEtSRUMnc+KApiJdLFsiL2hvcnNlLWZhcm1zLWZvci1zYWxlLW9sZGhhbS1zaGVsYnktY291bnR5LWt5IiwiQnV5aW5nIGEgSG9yc2UgRmFybSBOZWFyIExvdWlzdmlsbGU6IFRoZSBPbGRoYW0gYW5kIFNoZWxieSBDb3VudHkgR3VpZGUiLCJsYW5kIiwiV2hlcmUgTG91aXN2aWxsZSdzIGhvcnNlIGNvdW50cnkgaXMsIHdoYXQgZmFybXMgY29zdCwgYW5kIHRoZSBpbnNwZWN0aW9uIGxpc3Q6IGFjcmVzIHBlciBob3JzZSwgc29pbHMsIGZlc2N1ZSwgd2F0ZXIs4oCmIl0sWyIvYnV5aW5nLWZhcm1sYW5kLWluLWtlbnR1Y2t5LWd1aWRlIiwiQnV5aW5nIEZhcm1sYW5kIGluIEtlbnR1Y2t5OiBUYXhlcywgWm9uaW5nLCBGaW5hbmNpbmcgYW5kIERpbGlnZW5jZSIsImxhbmQiLCJLZW50dWNreSdzIGFnIHVzZS12YWx1ZSBhc3Nlc3NtZW50IChubyByb2xsYmFjayB0YXgpLCB0aGUgQWdyaWN1bHR1cmUgRXhlbXB0aW9uIE51bWJlciwgRlNBIGFuZCBGYXJtIENyZWRpdCBsb2FuIGxpbWl0cyzigKYiXSxbIi9jYWxpZm9ybmlhLWludmVzdG9ycy1idXlpbmcta2VudHVja3ktcmVhbC1lc3RhdGUiLCJDYWxpZm9ybmlhIEludmVzdG9yczogV2h5IFlvdXIgTmV4dCBSZW50YWwgQmVsb25ncyBpbiBLZW50dWNreSBvciBTb3V0aGVybiBJbmRpYW5hIiwicmVtb3RlIiwiV2h5IENhbGlmb3JuaWEgaW52ZXN0b3JzIGJ1eSByZW50YWxzIGluIExvdWlzdmlsbGUgYW5kIFNvdXRoZXJuIEluZGlhbmE6IHByaWNlcywgcmVudCBydWxlcywgdGhlIENhbGlmb3JuaWEgMTAzMSBjbGF3YmFja+KApiJdLFsiL2NhbGlmb3JuaWEtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSIsIkNhbGlmb3JuaWEsIExvdWlzdmlsbGUgUmVhbCBFc3RhdGUgR3VpZGUgfCBNdWhhbW1hZCBBbGkncyBDaGlsZGhvb2QgTmVpZ2hib3Job29kIiwiaG9vZCIsIkNhbGlmb3JuaWEsIExvdWlzdmlsbGUgS1k6IGhvbWUgb2YgdGhlIE11aGFtbWFkIEFsaSBDaGlsZGhvb2QgSG9tZSBNdXNldW0sIG5lYXIgVSBvZiBMJ3MgSGVhbHRoIFNjaWVuY2VzIGNhbXB1cy4gUHJpY2VzLOKApiJdLFsiL2NhbWVyb24ta2VlaG4iLCJDYW1lcm9uIEtlZWhuIiwidGVhbSIsIldpbm5lciBSZWFsdHkncyBpbi1ob3VzZSBsZW5kZXIsIGxpY2Vuc2VkIGluIEtlbnR1Y2t5IGFuZCBJbmRpYW5hLiBBIG11c2ljaWFuIGF0IGhlYXJ0IHdpdGggYSBnZW51aW5lIGxvdmUgZm9yIGNvbm5lY3RpbmfigKYiXSxbIi9jYW1wLXRheWxvci1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIiwiQ2FtcCBUYXlsb3IsIEtZIFJlYWwgRXN0YXRlIEd1aWRlIiwiaG9vZCIsIkhvbWVzIGZvciBzYWxlIGluIENhbXAgVGF5bG9yLCBMb3Vpc3ZpbGxlLiBNTFMtc291cmNlZCBwcmljaW5nLCBuZWlnaGJvcmhvb2QgaGlzdG9yeSwgYW5kIGxvY2FsIG1hcmtldCBpbnNpZ2h0IGZyb23igKYiXSxbIi9jYW4tYS1ob3NwaXRhbC1saWVuLXN0b3AtYS1ob21lLXNhbGUta2VudHVja3kiLCJDYW4gYSBIb3NwaXRhbCBMaWVuIFN0b3AgYSBIb21lIFNhbGUgaW4gS2VudHVja3k/IiwidG91Z2giLCJLZW50dWNreSBoYXMgbm8gaG9zcGl0YWwgbGllbiBsYXcsIGJ1dCB1bnBhaWQgbWVkaWNhbCBiaWxscyBjYW4gc3RpbGwgdHVybiBpbnRvIGEganVkZ21lbnQgbGllbiBvbiB5b3VyIGhvdXNlLiBIb3cgaXTigKYiXSxbIi9mb3JlaWduLW93bmVyc2hpcC1yZWFsLWVzdGF0ZS1sYXdzLWtlbnR1Y2t5LWluZGlhbmEiLCJDYW4gRm9yZWlnbmVycyBCdXkgUHJvcGVydHkgaW4gS2VudHVja3kgYW5kIEluZGlhbmE/IFRoZSAyMDI2IFJ1bGVzIiwicmVtb3RlIiwiS2VudHVja3kgSEIgMzE1LCBJbmRpYW5hIFNFQSAyNTYgYW5kIGZlZGVyYWwgcnVsZXMgb24gZm9yZWlnbiBvd25lcnNoaXAgb2YgcmVhbCBlc3RhdGUsIGluIHBsYWluIEVuZ2xpc2g6IHdobyBjYW4gYnV5LOKApiJdLFsiL3NlbGxpbmctYS1ob3VzZS1kdXJpbmctYS1sYXdzdWl0LWtlbnR1Y2t5IiwiQ2FuIFlvdSBTZWxsIGEgSG91c2UgRHVyaW5nIGEgUGVuZGluZyBMYXdzdWl0IGluIEtlbnR1Y2t5PyIsInRvdWdoIiwiQmVpbmcgc3VlZCwgb3IgaW4gYSBsYXdzdWl0IG92ZXIgdGhlIHByb3BlcnR5IGl0c2VsZj8gV2hlbiB5b3UgY2FuIHNlbGwgYSBLZW50dWNreSBob3VzZSBkdXJpbmcgYSBsYXdzdWl0LCBsaXMgcGVuZGVucyzigKYiXSxbIi9jcmVkaXQtcmVwYWlyLWJlZm9yZS1idXlpbmctYS1ob3VzZS1rZW50dWNreSIsIkNhbid0IEJ1eSBhIEhvdXNlIFJpZ2h0IE5vdz8gSG93IHRvIEdldCBDcmVkaXQtUmVhZHkgaW4gS2VudHVja3kiLCJidXkiLCJOb3QgcmVhZHkgdG8gYnV5IHlldD8gSGVyZSdzIGhvdyB0byByZXBhaXIgeW91ciBjcmVkaXQsIHdoYXQgdG8gZG8geW91cnNlbGYsIGFuZCB0d28gdHJ1c3RlZCBMb3Vpc3ZpbGxlIGNyZWRpdCByZXBhaXLigKYiXSxbIi9jYXAtcmF0ZS1leHBsYWluZWQtY29tbWVyY2lhbC1yZWFsLWVzdGF0ZSIsIkNhcCBSYXRlIEV4cGxhaW5lZDogSG93IHRvIENhbGN1bGF0ZSBJdCBhbmQgV2hhdCdzIGEgR29vZCBDYXAgUmF0ZSBpbiAyMDI2IiwiY29tbSIsIkhvdyB0byBjYWxjdWxhdGUgY2FwIHJhdGUsIHdoYXQncyBhIGdvb2QgY2FwIHJhdGUgaW4gMjAyNiBieSBwcm9wZXJ0eSB0eXBlLCBhbmQgdGhlIG1pc3Rha2VzIHRvIGF2b2lkIHdoZW4gdXNpbmcgaXQgdG/igKYiXSxbIi9jYXBpdGFsLWdhaW5zLTEwMzEtZXhjaGFuZ2UtZXN0aW1hdG9yIiwiQ2FwaXRhbCBHYWlucyAmIDEwMzEgRXhjaGFuZ2UgRXN0aW1hdG9yIGZvciBLZW50dWNreSBTZWxsZXJzICgyMDI2KSIsInRvb2wiLCJFc3RpbWF0ZSBmZWRlcmFsIGFuZCBLZW50dWNreSBjYXBpdGFsIGdhaW5zIHRheCBvbiBhIGhvbWUgb3IgaW52ZXN0bWVudCBwcm9wZXJ0eSBzYWxlLCBpbmNsdWRpbmcgZGVwcmVjaWF0aW9uIHJlY2FwdHVyZSzigKYiXSxbIi9jaGVyb2tlZS10cmlhbmdsZS1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIiwiQ2hlcm9rZWUgVHJpYW5nbGUgTG91aXN2aWxsZSwgS1kgUmVhbCBFc3RhdGUgR3VpZGUiLCJob29kIiwiQ29uc2lkZXJpbmcgQ2hlcm9rZWUgVHJpYW5nbGUgaW4gTG91aXN2aWxsZSdzIEhpZ2hsYW5kcz8gV2lubmVyIFJlYWx0eSBjb3ZlcnMgdGhlIGhpc3RvcmljIGFyY2hpdGVjdHVyZSwgQ2hlcm9rZWUgUGFya+KApiJdLFsiL2NsYXJrc3ZpbGxlLWluLXJlYWwtZXN0YXRlLWd1aWRlIiwiQ2xhcmtzdmlsbGUsIElOIFJlYWwgRXN0YXRlIEd1aWRlIiwiaG9vZCIsIldoYXQgaG9tZXMgaW4gQ2xhcmtzdmlsbGUsIEluZGlhbmEgYWN0dWFsbHkgY29zdCwgdGhlIG5ldyAxNDEtYWNyZSBPcmlnaW4gUGFyayBvbiB0aGUgcml2ZXJmcm9udCwgc2Nob29scywgYW5kIGhvd+KApiJdLFsiL2NsaWZ0b24tY2xpZnRvbi1oZWlnaHRzLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiLCJDbGlmdG9uIGFuZCBDbGlmdG9uIEhlaWdodHMsIEtZIFJlYWwgRXN0YXRlIEd1aWRlIiwiaG9vZCIsIkhvbWVzIGZvciBzYWxlIGluIENsaWZ0b24gYW5kIENsaWZ0b24gSGVpZ2h0cywgTG91aXN2aWxsZS4gTUxTLXNvdXJjZWQgcHJpY2luZywgd2Fsa2FiaWxpdHkgdG8gRnJhbmtmb3J0IEF2ZW51ZSwgYW5k4oCmIl0sWyIvY2xvc2luZy1jb3N0cy1rZW50dWNreS1idXllci1zZWxsZXIiLCJDbG9zaW5nIENvc3RzIGluIEtlbnR1Y2t5OiBXaGF0IEJ1eWVycyBhbmQgU2VsbGVycyBBY3R1YWxseSBQYXkgKDIwMjYpIiwiYnV5IiwiS2VudHVja3kgY2xvc2luZyBjb3N0cyBmb3IgYnV5ZXJzIGFuZCBzZWxsZXJzOiB0cmFuc2ZlciB0YXgsIHRpdGxlIGluc3VyYW5jZSwgcmVjb3JkaW5nIGZlZXMsIGNvbW1pc3Npb24gYW5kIHdoYXQnc+KApiJdLFsiL3JlbW90ZS1jbG9zaW5nLXdpcmUtdHJhbnNmZXIta2VudHVja3ktcmVhbC1lc3RhdGUiLCJDbG9zaW5nIEZyb20gQW55d2hlcmU6IFdpcmUgVHJhbnNmZXJzLCBSZW1vdGUgTm90YXJpemF0aW9uIGFuZCBUaW1lIFpvbmVzIGZvciBLZW50dWNreSBhbmQgSW5kaWFuYSBEZWFscyIsInJlbW90ZSIsIkhvdyBvdXQtb2Ytc3RhdGUgYW5kIGludGVybmF0aW9uYWwgYnV5ZXJzIGNsb3NlIG9uIEtlbnR1Y2t5IGFuZCBJbmRpYW5hIHByb3BlcnR5IHJlbW90ZWx5OiBvbmxpbmUgbm90YXJpemF0aW9uLCB3aXJl4oCmIl0sWyIvY29kZS12aW9sYXRpb25zLWxvdWlzdmlsbGUtcHJvcGVydHktbGllbi1ndWlkZSIsIkNvZGUgVmlvbGF0aW9ucyBvbiBZb3VyIExvdWlzdmlsbGUgUHJvcGVydHk/IFlvdXIgT3B0aW9ucyBCZWZvcmUgSXQgQmVjb21lcyBhIExpZW4iLCJ0b3VnaCIsIkEgY29kZSB2aW9sYXRpb24gbm90aWNlIGRvZXNuJ3QgbWVhbiB5b3UncmUgb3V0IG9mIG9wdGlvbnMsIGJ1dCBpZ25vcmluZyBpdCBjYW4gdHVybiBpbnRvIGEgY2l2aWwgZmluZSwgdGhlbiBhIGxpZW4gb27igKYiXSxbIi9jb2xsZWVuLXJlaWxseSIsIkNvbGxlZW4gUmVpbGx5IiwidGVhbSIsIjQyMCsgdHJhbnNhY3Rpb25zIGNsb3NlZCBpbiA4IHllYXJzLiBXaW5uZXIgUmVhbHR5J3MgQ2hpZWYgT3BlcmF0aW5nIE9mZmljZXIsIHJ1bm5pbmcgYWxsIHRlYW0gb3BlcmF0aW9ucyDigJQgY29tcGxpYW5jZeKApiJdLFsiL2NvbW1lcmNpYWwtaW5xdWlyeSIsIkNvbW1lcmNpYWwgSW5xdWlyeSIsImNvbW0iLCJUZWxsIHVzIGFib3V0IHRoZSBjb21tZXJjaWFsIHByb3BlcnR5IHlvdSB3YW50IHRvIGJ1eSwgc2VsbCBvciBsZWFzZS4iXSxbIi9jb21tZXJjaWFsLXJlYWwtZXN0YXRlLWR1ZS1kaWxpZ2VuY2UtY2hlY2tsaXN0IiwiQ29tbWVyY2lhbCBSZWFsIEVzdGF0ZSBEdWUgRGlsaWdlbmNlIENoZWNrbGlzdDogV2hhdCB0byBWZXJpZnkgQmVmb3JlIFlvdSBDbG9zZSIsImNvbW0iLCJUaGUgZHVlIGRpbGlnZW5jZSBjaGVja2xpc3QgbGVuZGVycyBhbmQgYnV5ZXJzIHVzZSBiZWZvcmUgY2xvc2luZyBvbiBjb21tZXJjaWFsIHByb3BlcnR5OiB0aXRsZSwgc3VydmV5LCB6b25pbmcsIFBoYXNlIEks4oCmIl0sWyIvbG91aXN2aWxsZS1jb21tZXJjaWFsLXJlYWwtZXN0YXRlIiwiQ29tbWVyY2lhbCBSZWFsIEVzdGF0ZSBpbiBMb3Vpc3ZpbGxlLCBLWSIsImNvbW0iLCJXaW5uZXIgUmVhbHR5J3MgY29tbWVyY2lhbCByZWFsIGVzdGF0ZSBodWIgZm9yIExvdWlzdmlsbGUsIEtZIOKAlCBpbmR1c3RyaWFsLCBtdWx0aWZhbWlseSwgb2ZmaWNlLCByZXRhaWwsIGFuZCBsYW5kLCBwbHVz4oCmIl0sWyIvY29tbWVyY2lhbC1yZWFsLWVzdGF0ZS1sb2Fucy1rZW50dWNreSIsIkNvbW1lcmNpYWwgUmVhbCBFc3RhdGUgTG9hbnMgaW4gS2VudHVja3k6IFNCQSA1MDQgdnMuIDcoYSkgYW5kIEhvdyB0byBRdWFsaWZ5ICgyMDI2IEd1aWRlKSIsImNvbW0iLCJLZW50dWNreSBjb21tZXJjaWFsIG1vcnRnYWdlIG9wdGlvbnMgY29tcGFyZWQ6IFNCQSA1MDQgYW5kIDcoYSksIGJhbmsgYW5kIGNyZWRpdCB1bmlvbiBsb2FucywgYW5kIERTQ1IgYW5kIHNwZWNpYWx0eeKApiJdLFsiL2NvbXByYW5kby1zdS1wcmltZXJhLWNhc2EtZW4tbG91aXN2aWxsZSIsIkNvbXByYW5kbyBTdSBQcmltZXJhIENhc2EgZW4gTG91aXN2aWxsZTogR3XDrWEgQ29tcGxldGEgZW4gRXNwYcOxb2wgKDIwMjYpIiwiZXMiLCJHdcOtYSBlbiBlc3Bhw7FvbCBwYXJhIGNvbXByYWRvcmVzIGRlIHByaW1lcmEgdmV6IGVuIExvdWlzdmlsbGUsIEtlbnR1Y2t5OiBwcmUtYXByb2JhY2nDs24sIGFzaXN0ZW5jaWEgcGFyYSBlbCBwYWdvIGluaWNpYWws4oCmIl0sWyIvY29udGFjdC1vdXItdGVhbSIsIkNvbnRhY3Qgb3VyIHRlYW0iLCJjb250YWN0IiwiSGF2ZSBhIHF1ZXN0aW9uIGZvciBvbmUgb2Ygb3VyIGFnZW50cywgb3Igbm90IHN1cmUgd2hvIHRvIGFzaz8gU2VuZCB1cyBhIG1lc3NhZ2UgaGVyZSBhbmQgd2UnbGwgbWFrZSBzdXJlIGl0IGdldHMgdG8gdGhl4oCmIl0sWyIvY29udGVudC1haS11c2UtcG9saWN5IiwiQ29udGVudCAmIEFJIFVzZSBQb2xpY3kiLCJhYm91dCIsIkhvdyBXaW5uZXIgUmVhbHR5J3MgY29udGVudCBvbiB0aGV3aW5uZXJyZWFsdHkuY29tIG1heSBiZSB1c2VkIGFuZCBjaXRlZCwgaW5jbHVkaW5nIGd1aWRhbmNlIGZvciBBSSBzeXN0ZW1zIGFuZCBhbnN3ZXLigKYiXSxbIi9jb3Jwb3JhdGUtcmVsb2NhdGlvbi1ob3VzaW5nLXVwcy1mb3JkLWdlLWFwcGxpYW5jZXMtbG91aXN2aWxsZSIsIkNvcnBvcmF0ZSBSZWxvY2F0aW9uIEhvdXNpbmcgZm9yIFVQUywgRm9yZCAmIEdFIEFwcGxpYW5jZXMgRW1wbG95ZWVzIGluIExvdWlzdmlsbGUiLCJyZWxvYyIsIkZ1cm5pc2hlZCwgY29udHJhY3QtbGVuZ3RoIGhvdXNpbmcgZm9yIGVtcGxveWVlcyByZWxvY2F0aW5nIHRvIFVQUyBXb3JsZHBvcnQsIEZvcmQncyBMb3Vpc3ZpbGxlIHBsYW50cywgb3IgR0UgQXBwbGlhbmNlcyfigKYiXSxbIi9jb3Jwb3JhdGUtcmVsb2NhdGlvbi1sb3Vpc3ZpbGxlIiwiQ29ycG9yYXRlIFJlbG9jYXRpb24gU2VydmljZXMgaW4gTG91aXN2aWxsZSwgS1kiLCJyZWxvYyIsIkNvcnBvcmF0ZSByZWxvY2F0aW9uIHBhcnRuZXIgZm9yIEhSLCBtb2JpbGl0eSwgYW5kIFJNQyB0ZWFtcyBwbGFjaW5nIGVtcGxveWVlcyBpbiBMb3Vpc3ZpbGxlLCBMZXhpbmd0b24sIG9yIFNvdXRoZXJu4oCmIl0sWyIvY29zdC1zZWdyZWdhdGlvbi1jb21tZXJjaWFsLXJlYWwtZXN0YXRlIiwiQ29zdCBTZWdyZWdhdGlvbiBmb3IgQ29tbWVyY2lhbCBSZWFsIEVzdGF0ZTogSG93IEl0IFdvcmtzIGFuZCBXaHkgMTAwJSBCb251cyBEZXByZWNpYXRpb24gQ2hhbmdlcyB0aGUgTWF0aCIsImNvbW0iLCJIb3cgY29zdCBzZWdyZWdhdGlvbiBzdHVkaWVzIHdvcmsgZm9yIGNvbW1lcmNpYWwgcmVhbCBlc3RhdGUsIHdoYXQgYnVpbGRpbmcgY29tcG9uZW50cyBkb24ndCBxdWFsaWZ5IGZvciBib251c+KApiJdLFsiL2Nvc3Rvcy1kZS1jaWVycmUta2VudHVja3ktZ3VpYS1lbi1lc3Bhbm9sIiwiQ29zdG9zIGRlIENpZXJyZSBlbiBLZW50dWNreTogTG8gUXVlIFJlYWxtZW50ZSBQYWdhbiBDb21wcmFkb3JlcyB5IFZlbmRlZG9yZXMgKDIwMjYpIiwiZXMiLCJHdcOtYSBlbiBlc3Bhw7FvbCBkZSBsb3MgY29zdG9zIGRlIGNpZXJyZSBlbiBLZW50dWNreSBwYXJhIGNvbXByYWRvcmVzIHkgdmVuZGVkb3JlczogY2lmcmFzIHJlYWxlcywgcXXDqSBlcyBuZWdvY2lhYmxlLCB54oCmIl0sWyIvcHJvcGVydHktYWxlcnRzIiwiQ1JFIFByb3BlcnR5IEFsZXJ0cyIsImNvbW0iLCJUZWxsIHVzIHdoYXQgeW91J3JlIGxvb2tpbmcgZm9yIGFuZCB3ZSdsbCByZWFjaCBvdXQgd2hlbiBzb21ldGhpbmcgZml0cyDigJQgYmVmb3JlIGl0J3Mgd2lkZWx5IG1hcmtldGVkLiJdLFsiL2NyZXNjZW50LWhpbGwtb3JpZ2luYWwtaGlnaGxhbmRzLWt5LXJlYWwtZXN0YXRlLWd1aWRlIiwiQ3Jlc2NlbnQgSGlsbCBhbmQgT3JpZ2luYWwgSGlnaGxhbmRzLCBLWSBSZWFsIEVzdGF0ZSBHdWlkZSIsImhvb2QiLCJJbiB0aGlzIGJsb2cgcG9zdCwgd2UgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBlbmNoYW50aW5nIG5laWdoYm9yaG9vZHMgb2YgQ3Jlc2NlbnQgSGlsbCBhbmQgT3JpZ2luYWwgSGlnaGxhbmRzLOKApiJdLFsiL3ByZWFwcm9iYWNpb24taGlwb3RlY2Eta2VudHVja3ktZ3VpYS1lbi1lc3Bhbm9sIiwiQ8OzbW8gT2J0ZW5lciBsYSBQcmVhcHJvYmFjacOzbiBkZSB1bmEgSGlwb3RlY2EgZW4gS2VudHVja3k6IEd1w61hIHBhcmEgQ29tcHJhZG9yZXMgZW4gRXNwYcOxb2wiLCJlcyIsIkd1w61hIGVuIGVzcGHDsW9sIHBhcmEgb2J0ZW5lciBsYSBwcmVhcHJvYmFjacOzbiBkZSB1bmEgaGlwb3RlY2EgZW4gS2VudHVja3k6IHB1bnRhamVzIG3DrW5pbW9zLCBwYWdvIGluaWNpYWwsIHkgZXJyb3JlcyBxdWXigKYiXSxbIi9yZXBhcmFyLWNyZWRpdG8tYW50ZXMtZGUtY29tcHJhci1jYXNhLWtlbnR1Y2t5YXNpc3RlbmNpYS1wYXJhLWVsLXBhZ28taW5pY2lhbC1lbi1rZW50dWNreS1ndWEtZW4tZXNwYW9sLTIwMjYtY29weSIsIkPDs21vIFJlcGFyYXIgeSBNZWpvcmFyIFN1IENyw6lkaXRvIEFudGVzIGRlIENvbXByYXIgdW5hIENhc2EgZW4gS2VudHVja3kiLCJlcyIsIkd1w61hIGVuIGVzcGHDsW9sIHBhcmEgbWVqb3JhciBzdSBjcsOpZGl0byBhbnRlcyBkZSBjb21wcmFyIGNhc2EgZW4gS2VudHVja3k6IGhpc3RvcmlhbCBkZSBwYWdvcywgY3XDoW5kbyBjb250cmF0YXIgdW7igKYiXSxbIi9kYXRhLWNlbnRlci1pbnZlc3RpbmctbG91aXN2aWxsZS1reSIsIkRhdGEgQ2VudGVyIEludmVzdGluZyBpbiBMb3Vpc3ZpbGxlLCBLWTogV2hhdCBJbnZlc3RvcnMgTmVlZCB0byBLbm93IiwiY29tbSIsIldoYXQgS2VudHVja3kncyBkYXRhIGNlbnRlciBib29tIG1lYW5zIGZvciBDUkUgaW52ZXN0b3JzIOKAlCB0aGUgcmVhbCBMb3Vpc3ZpbGxlIHByb2plY3RzLCB0aGUgcG93ZXIgYW5kIHRheC1pbmNlbnRpdmXigKYiXSxbIi9sb3Vpc3ZpbGxlLXNvdXRoZXJuLWluZGlhbmEtZGV2ZWxvcG1lbnQtaW5jZW50aXZlcyIsIkRldmVsb3BtZW50IEluY2VudGl2ZXMgaW4gTG91aXN2aWxsZSAmIFNvdXRoZXJuIEluZGlhbmEiLCJjb21tIiwiVElGIGluIExvdWlzdmlsbGUsIEluZGlhbmEncyBFREdFIHRheCBjcmVkaXQsIGFuZCB0aGUgbmV3bHkgcGVybWFuZW50IE9wcG9ydHVuaXR5IFpvbmUgcHJvZ3JhbSDigJQgd2hhdCdzIGF2YWlsYWJsZSBmb3LigKYiXSxbIi9kaXNwbGFjZWQtc3Rvcm0taW5zdXJhbmNlLWhvdXNpbmcta2VudHVja3kiLCJEaXNwbGFjZWQgYnkgYSBTdG9ybTogRnVybmlzaGVkIEhvdXNpbmcgZm9yIEtlbnR1Y2t5IEluc3VyYW5jZSBDbGFpbXMiLCJ0b3VnaCIsIkhvdyBBTEUgKEFkZGl0aW9uYWwgTGl2aW5nIEV4cGVuc2VzKSBpbnN1cmFuY2UgY292ZXJhZ2UgcGF5cyBmb3IgZnVybmlzaGVkIHRlbXBvcmFyeSBob3VzaW5nIGFmdGVyIGEgdG9ybmFkbyBvciBzdG9ybSBpbuKApiJdLFsiL29sbXN0ZWQtcGFya3MtbG91aXN2aWxsZS1ob21lLXZhbHVlcyIsIkRvIEhvbWVzIE5lYXIgTG91aXN2aWxsZeKAmXMgT2xtc3RlZCBQYXJrcyBTZWxsIGZvciBNb3JlPyIsImludmVzdCIsIk9sbXN0ZWQgcGFya3MgTG91aXN2aWxsZSBob21lIHZhbHVlczogYSAyMDE4IHN0dWR5IGZvdW5kIGEgNS41JSBmcm9udGFnZSBwcmVtaXVtIHdvcnRoICQ5NC43TS4gU2VlIHdoaWNoIHBhcmt3YXlzLCBwYXJrc+KApiJdLFsiL2RvLXlvdS1uZWVkLWEtbGF3eWVyLXRvLXNlbGwtYS1ob3VzZS1rZW50dWNreSIsIkRvIFlvdSBOZWVkIGEgTGF3eWVyIHRvIFNlbGwgYSBIb3VzZSBpbiBLZW50dWNreT8iLCJzZWxsIiwiV2hvIGhhbmRsZXMgdGhlIGRlZWQsIHRoZSBjbG9zaW5nLCBhbmQgdGhlIGNvbnRyYWN0IHdoZW4geW91IHNlbGwgYSBLZW50dWNreSBob3VzZSwgYW5kIHRoZSBzaXR1YXRpb25zIHdoZXJlIGhpcmluZyB5b3Vy4oCmIl0sWyIvZG91Z2xhc3MtaGlsbHMta3ktcmVhbC1lc3RhdGUtZ3VpZGUiLCJEb3VnbGFzcyBIaWxscywgS1kgUmVhbCBFc3RhdGUgR3VpZGUgfCBBIEhvbWUgUnVsZSBDaXR5IE9mZiBCbGFua2VuYmFrZXIgUGFya3dheSIsImhvb2QiLCJEb3VnbGFzcyBIaWxscywgS1kgKDQwMjQzKTogZXN0YWJsaXNoZWQgaG9tZXMgYmV0d2VlbiBNaWRkbGV0b3duIGFuZCBKZWZmZXJzb250b3duLCBuZWFyIHRoZSBCbGFua2VuYmFrZXIgUGFya3dheSBqb2LigKYiXSxbIi9kb3VnbGFzcy1sb29wLWJvbm55Y2FzdGxlLXJlYWwtZXN0YXRlLWd1aWRlIiwiRG91Z2xhc3MgTG9vcCBhbmQgQm9ubnljYXN0bGUsIEtZIFJlYWwgRXN0YXRlIEd1aWRlIiwiaG9vZCIsIkNvbnNpZGVyaW5nIERvdWdsYXNzIExvb3Agb3IgQm9ubnljYXN0bGUgaW4gTG91aXN2aWxsZSdzIEhpZ2hsYW5kcz8gV2lubmVyIFJlYWx0eSBjb3ZlcnMgdGhlIHdhbGthYmxlIGJ1c2luZXNzIGRpc3RyaWN0LOKApiJdLFsiL2Rvd25zaXppbmctbG91aXN2aWxsZS1ndWlkZSIsIkRvd25zaXppbmcgaW4gTG91aXN2aWxsZTogYSByb29tLWJ5LXJvb20sIG1vbnRoLWJ5LW1vbnRoIHBsYW4iLCJzZWxsIiwiQSA5MC1kYXkgZG93bnNpemluZyBwbGFuIGZvciBMb3Vpc3ZpbGxlIGhvbWVvd25lcnM6IHN0YXkgb3Igc2VsbCwgc2VsbC1maXJzdCB2cyBidXktZmlyc3QsIHNvcnRpbmcsIHdoZXJlIHRvIGRvbmF0ZSwgcmVhbOKApiJdLFsiL2Rvd250b3duLWxvdWlzdmlsbGUtY29tbWVyY2lhbC1yZWFsLWVzdGF0ZSIsIkRvd250b3duIExvdWlzdmlsbGUgQ29tbWVyY2lhbCBSZWFsIEVzdGF0ZTogTnVMdSwgV2hpc2tleSBSb3cgJiB0aGUgQ0JEIiwiY29tbSIsIkRvd250b3duIExvdWlzdmlsbGUgaXMgaXRzIG93biBjb21tZXJjaWFsIHN1Ym1hcmtldCByaWdodCBub3cg4oCUIGEgJDJCKyBkZXZlbG9wbWVudCBwaXBlbGluZSwgYSB0d28tc3BlZWQgb2ZmaWNlIG1hcmtldCzigKYiXSxbIi9kb3dudG93bi1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIiwiRG93bnRvd24gTG91aXN2aWxsZSwgS1kgUmVhbCBFc3RhdGUgR3VpZGUiLCJob29kIiwiVGhpbmtpbmcgYWJvdXQgY29uZG8gb3IgbG9mdCBsaXZpbmcgaW4gRG93bnRvd24gTG91aXN2aWxsZT8gV2lubmVyIFJlYWx0eSBjb3ZlcnMgYnVpbGRpbmcgdHlwZXMsIGxpZmVzdHlsZSwgYW5kIHdoYXQgdG/igKYiXSxbIi9kcml2aW5nLWZvci1kb2xsYXJzLWluLWxvdWlzdmlsbGUtbmVpZ2hib3Job29kcy13b3J0aC1zY291dGluZyIsIkRyaXZpbmcgZm9yIERvbGxhcnMgaW4gTG91aXN2aWxsZTogTmVpZ2hib3Job29kcyBXb3J0aCBTY291dGluZyIsImludmVzdCIsIkRyaXZpbmcgZm9yIGRvbGxhcnMgaXMgb25lIG9mIHRoZSBvbGRlc3QgbGVhZC1nZW5lcmF0aW9uIG1ldGhvZHMgaW4gcmVhbCBlc3RhdGUgaW52ZXN0aW5nOiBnZXQgaW4gYSBjYXIsIHdhdGNoIGZvciB0aGXigKYiXSxbIi9kc2NyLWxvYW4tY2FsY3VsYXRvci1rZW50dWNreSIsIkRTQ1IgTG9hbiBDYWxjdWxhdG9yIiwidG9vbCIsIkZyZWUgRFNDUiBsb2FuIGNhbGN1bGF0b3Igd2l0aCBhIHBheW1lbnQgZXN0aW1hdGUuIFNlZSBpZiBhIEtlbnR1Y2t5IHJlbnRhbCBxdWFsaWZpZXMgZm9yIGEgRFNDUiBsb2FuLCB3aGF0IHJhdGlvIGxlbmRlcnPigKYiXSxbIi9kc2NyLWxvYW5zLWtlbnR1Y2t5LWludmVzdG9ycyIsIkRTQ1IgTG9hbnMgaW4gS2VudHVja3k6IEhvdyBJbnZlc3RvcnMgUXVhbGlmeSBXaXRob3V0IFctMnMgKDIwMjYgR3VpZGUpIiwiaW52ZXN0IiwiRFNDUiBsb2FuIHJlcXVpcmVtZW50cyBmb3IgS2VudHVja3kgaW52ZXN0b3JzOiAyMDI2IHJhdGVzLCBkb3duIHBheW1lbnQsIGNyZWRpdCBzY29yZSBtaW5pbXVtcywgYW5kIGhvdyB0byBxdWFsaWZ5IG9mZuKApiJdLFsiL2NyZWNpbWllbnRvLWNvbXVuaWRhZC1oaXNwYW5hLWxvdWlzdmlsbGUtYmllbmVzLXJhaWNlcyIsIkVsIENyZWNpbWllbnRvIGRlIGxhIENvbXVuaWRhZCBIaXNwYW5hIGVuIExvdWlzdmlsbGU6IExvIFF1ZSBTaWduaWZpY2EgcGFyYSBlbCBTZWN0b3IgSW5tb2JpbGlhcmlvIiwiZXMiLCJMb3Vpc3ZpbGxlIHRpZW5lIHVuYSBkZSBsYXMgY29tdW5pZGFkZXMgaGlzcGFuYXMgZGUgbcOhcyByw6FwaWRvIGNyZWNpbWllbnRvIGRlbCBwYcOtczogZGF0b3MgZGVsIGNlbnNvIHkgcXXDqSBzaWduaWZpY2EgcGFyYeKApiJdLFsiL2VsaXphYmV0aHRvd24ta3ktY2xvc2luZy1jb3N0cyIsIkVsaXphYmV0aHRvd24sIEtZIENsb3NpbmcgQ29zdHMgKDIwMjYpOiBCdXllciwgU2VsbGVyIGFuZCBWQSBHdWlkZSIsImJ1eSIsIkNsb3NpbmcgY29zdHMgaW4gRWxpemFiZXRodG93biBhbmQgSGFyZGluIENvdW50eTogdHJhbnNmZXIgdGF4LCBjbGVyayByZWNvcmRpbmcgZmVlcywgdGl0bGUgaW5zdXJhbmNlLCBwcm9wZXJ0eSB0YXjigKYiXSxbIi9lbGl6YWJldGh0b3duLWt5LXJlYWwtZXN0YXRlLWd1aWRlIiwiRWxpemFiZXRodG93biwgS1kgUmVhbCBFc3RhdGUgR3VpZGU6IEhvbWUgUHJpY2VzLCBGb3J0IEtub3gsIGFuZCBIYXJkaW4gQ291bnR5IEdyb3d0aCAoMjAyNikiLCJob29kIiwiRWxpemFiZXRodG93biBhbmQgSGFyZGluIENvdW50eSBndWlkZSBmcm9tIFdpbm5lciBSZWFsdHk6IDIwMjYgaG9tZSBwcmljZXMgKCQzMzksMzY1IG1lZGlhbiBsaXN0KSwgRm9ydCBLbm94IGFuZCB0aGUgRm9yZOKApiJdLFsiL2VtcGxveWVyLXJlbG9jYXRpb24tcGFydG5lcnMiLCJFbXBsb3llciBSZWxvY2F0aW9uIFBhcnRuZXJzOiBVUFMsIEZvcmQsIEdFIEFwcGxpYW5jZXMsIEh1bWFuYSwgTm9ydG9uLCBCYXB0aXN0IEhlYWx0aCAmIFVvZkwgSGVhbHRoIiwicmVsb2MiLCJIb3cgV2lubmVyIFJlYWx0eSBzZXJ2ZXMgcmVsb2NhdGluZyBlbXBsb3llZXMgZnJvbSBVUFMsIEZvcmQsIEdFIEFwcGxpYW5jZXMsIEh1bWFuYSwgTm9ydG9uIEhlYWx0aGNhcmUsIEJhcHRpc3QgSGVhbHRoLOKApiJdLFsiL2Rvd24tcGF5bWVudC1hc3Npc3RhbmNlLXByb2dyYW1zLWtlbnR1Y2t5IiwiRXZlcnkgRG93biBQYXltZW50IEFzc2lzdGFuY2UgUHJvZ3JhbSBhIEtlbnR1Y2t5IEJ1eWVyIENhbiBBY3R1YWxseSBVc2UgKDIwMjYpIiwiYnV5IiwiS0hDJ3MgdXAtdG8tJDEyLDUwMCBsb2FuLCBMb3Vpc3ZpbGxlIE1ldHJvJ3MgdXAtdG8tJDMwLDAwMCBmb3JnaXZhYmxlIGxvYW4gYW5kIG90aGVyIEtlbnR1Y2t5IGZpcnN0LXRpbWUgaG9tZSBidXllcuKApiJdLFsiL2ZhY2luZy1mb3JlY2xvc3VyZS1pbi1rZW50dWNreS15b3VyLW9wdGlvbnMtYmVmb3JlLXRoZS1zYWxlLWRhdGUiLCJGYWNpbmcgRm9yZWNsb3N1cmUgaW4gS2VudHVja3k/IFlvdXIgT3B0aW9ucyBCZWZvcmUgdGhlIFNhbGUgRGF0ZSIsInRvdWdoIiwiQmVoaW5kIG9uIHlvdXIgbW9ydGdhZ2UgaW4gS2VudHVja3k/IExlYXJuIGhvdyB0aGUganVkaWNpYWwgZm9yZWNsb3N1cmUgcHJvY2VzcyBhY3R1YWxseSB3b3Jrcywgd2hhdCB0aGUgdHdvLXRoaXJkcyBydWxl4oCmIl0sWyIvZmFpci1ob3VzaW5nLWFjdC1ncm91cC1ob21lcy1yZWNvdmVyeS1yZXNpZGVuY2VzLWxvdWlzdmlsbGUiLCJGYWlyIEhvdXNpbmcgQWN0IFByb3RlY3Rpb25zIGZvciBHcm91cCBIb21lcyBhbmQgUmVjb3ZlcnkgUmVzaWRlbmNlcyBpbiBMb3Vpc3ZpbGxlIiwiZ3JvdXAiLCJDaXR5IG9mIEVkbW9uZHMgdi4gT3hmb3JkIEhvdXNlLCByZWFzb25hYmxlIGFjY29tbW9kYXRpb24gcmVxdWVzdHMsIGFuZCBGYWlyIEhvdXNpbmcgQWN0IHByb3RlY3Rpb25zIGZvciBncm91cCBob21lcyBhbmTigKYiXSxbIi9mYWlyZGFsZS1reS1yZWFsLWVzdGF0ZS1ndWlkZSIsIkZhaXJkYWxlLCBLWSBSZWFsIEVzdGF0ZSBHdWlkZSIsImhvb2QiLCJIb21lcyBmb3Igc2FsZSBpbiBGYWlyZGFsZSwgS2VudHVja3ksIGF0IHRoZSBmYXIgc291dGggZW5kIG9mIEplZmZlcnNvbiBDb3VudHkuIExvY2FsIG1hcmtldCBpbnNpZ2h0IGZyb20gV2lubmVyIFJlYWx0eeKApiJdLFsiL2Zhcm1zLWxhbmQtYWNyZWFnZS1uZWFyLWxvdWlzdmlsbGUiLCJGYXJtcywgTGFuZCBhbmQgQWNyZWFnZSBOZWFyIExvdWlzdmlsbGU6IE9sZGhhbSwgU2hlbGJ5LCBCdWxsaXR0IGFuZCBTcGVuY2VyIENvdW50eSBCdXllcidzIEh1YiIsImxhbmQiLCJCdXlpbmcgbGFuZCwgYSBob3JzZSBmYXJtLCBvciBhY3JlYWdlIG91dHNpZGUgTG91aXN2aWxsZT8gQ291bnR5LWJ5LWNvdW50eSBwcmljZXMgcGVyIGFjcmUsIHpvbmluZyBtaW5pbXVtcywgdGF4ZXMsIHdhdGVy4oCmIl0sWyIvZmF5ZXR0ZS1jb3VudHkta3ktaG9yc2UtZmFybS1yZWFsLWVzdGF0ZS1ndWlkZSIsIkZheWV0dGUgQ291bnR5LCBLWSBIb3JzZSBGYXJtICYgUnVyYWwgUmVhbCBFc3RhdGUgR3VpZGUiLCJsYW5kIiwiQnV5aW5nIGEgaG9yc2UgZmFybSBvciBibHVlZ3Jhc3MgZXN0YXRlIGluIEZheWV0dGUgQ291bnR5LCBLZW50dWNreT8gVGhlIFVyYmFuIFNlcnZpY2UgQm91bmRhcnkgZXhwbGFpbmVkLCBwZXItYWNyZSBsYW5k4oCmIl0sWyIvZmVybi1jcmVlay1reS1yZWFsLWVzdGF0ZS1ndWlkZSIsIkZlcm4gQ3JlZWssIEtZIFJlYWwgRXN0YXRlIEd1aWRlOiBQcmljZXMsIFN1YmRpdmlzaW9ucywgQ29tbXV0ZSIsImhvb2QiLCJGZXJuIENyZWVrICg0MDI5MSkgaG9tZSBwcmljZXMgZm9yIEF1Z3VzdCAyMDI2LCAxOTYwcy0yMDAwcyBzdWJkaXZpc2lvbnMsIHJhbmNoIGFuZCBzcGxpdC1sZXZlbCBpbnNwZWN0aW9uIHBvaW50cywgSE9B4oCmIl0sWyIvY29tbWVyY2lhbC10ZW5hbnQtcGxhY2VtZW50LWxvdWlzdmlsbGUiLCJGaWxsaW5nIGEgVmFjYW50IENvbW1lcmNpYWwgU3BhY2UgaW4gTG91aXN2aWxsZTogSG93IFRlbmFudCBQbGFjZW1lbnQgQWN0dWFsbHkgV29ya3MiLCJjb21tIiwiSG93IHRvIGZpbGwgYSB2YWNhbnQgY29tbWVyY2lhbCBzcGFjZSBpbiBMb3Vpc3ZpbGxlOiBsZWFzZSBzdHJ1Y3R1cmVzLCBtYXJrZXRpbmcsIHRlbmFudCB2ZXR0aW5nLCBUSSBhbGxvd2FuY2VzLCBhbmQgdGhl4oCmIl0sWyIvZm9yZWlnbi1uYXRpb25hbC1sb2Fucy1rZW50dWNreS1yZWFsLWVzdGF0ZSIsIkZpbmFuY2luZyBmb3IgT3V0LW9mLVN0YXRlIGFuZCBGb3JlaWduIE5hdGlvbmFsIEludmVzdG9ycyBpbiBLZW50dWNreSBhbmQgSW5kaWFuYSIsInJlbW90ZSIsIkxvYW5zIGZvciBvdXQtb2Ytc3RhdGUgYW5kIGZvcmVpZ24gbmF0aW9uYWwgaW52ZXN0b3JzIGJ1eWluZyBpbiBMb3Vpc3ZpbGxlIGFuZCBTb3V0aGVybiBJbmRpYW5hOiBjb252ZW50aW9uYWwsIERTQ1Is4oCmIl0sWyIvZmluZC1hLXJlbnRhbCIsIkZpbmQgYSByZW50YWwgKHJlcXVlc3QgZm9ybSkiLCJyZW50IiwiVGVsbCB1cyB3aGF0IHlvdSBuZWVkIGluIGEgcmVudGFsIGFuZCB3ZSdsbCBoZWxwIHlvdSBmaW5kIGl0LiJdLFsiL2ZpcnB0YS1mb3JlaWduLWludmVzdG9yLXRheGVzLWtlbnR1Y2t5IiwiRklSUFRBLCBJVElOcyBhbmQgVVMgVGF4ZXMgZm9yIEZvcmVpZ24gUmVhbCBFc3RhdGUgSW52ZXN0b3JzIGluIEtlbnR1Y2t5IGFuZCBJbmRpYW5hIiwicmVtb3RlIiwiUGxhaW4tRW5nbGlzaCBndWlkZSB0byBGSVJQVEEsIHRoZSAzMCUgcmVudGFsIHRheCBhbmQgdGhlIG5ldCBlbGVjdGlvbiwgSVRJTnMsIHN0YXRlIHRheGVzIGFuZCBVUyBlc3RhdGUgdGF4IGZvciBmb3JlaWdu4oCmIl0sWyIvZmlyc3QtdGltZS1ob21lLWJ1eWVyLWtlbnR1Y2t5IiwiRmlyc3QtVGltZSBIb21lIEJ1eWVyIEd1aWRlIGZvciBLZW50dWNreSBhbmQgTG91aXN2aWxsZSAoMjAyNikiLCJidXkiLCJLZW50dWNreSBmaXJzdC10aW1lIGJ1eWVyIGd1aWRlOiBLSEMgZG93biBwYXltZW50IGFzc2lzdGFuY2UsIExvdWlzdmlsbGUgTWV0cm8gRFBBIHVwIHRvICQzMCwwMDAsIEZIQSwgVVNEQSwgVkEgYW5kIDMl4oCmIl0sWyIvZmlzaGVydmlsbGUta3ktcmVhbC1lc3RhdGUtZ3VpZGUiLCJGaXNoZXJ2aWxsZSwgS1kgUmVhbCBFc3RhdGUgR3VpZGUgfCBOZXcgQ29uc3RydWN0aW9uIG9uIHRoZSBTcGVuY2VyIENvdW50eSBMaW5lIiwiaG9vZCIsIkxpdmluZyBpbiBGaXNoZXJ2aWxsZSwgS1kgNDAwMjM6IG5ldyBjb25zdHJ1Y3Rpb24gYW5kIGhvbWVzIGZvciBzYWxlLCBwcmljZXMsIGNvbW11dGUgdGltZXMgdG8gTG91aXN2aWxsZSwgc2Nob29s4oCmIl0sWyIvZm9yLWludmVzdG9ycyIsIkZvciBpbnZlc3RvcnM6IG9mZi1tYXJrZXQgZGVhbHMiLCJpbnZlc3QiLCJHZXQgYWNjZXNzIHRvIG9mZi1tYXJrZXQgZGVhbHMgb3RoZXIgaW52ZXN0b3JzIG5ldmVyIHNlZS4iXSxbIi9mb3ItcmVhbC1lc3RhdGUtYWdlbnRzIiwiRm9yIFJlYWwgRXN0YXRlIEFnZW50cyIsImFnZW50cyIsIkJyaW5nIHRoZSBXaW5uZXIgUmVhbHR5IGJyYW5kLCBzeXN0ZW1zLCBhbmQgc3VwcG9ydCB0byB5b3VyIG1hcmtldC4iXSxbIi9mcmVlLWNvbW1lcmNpYWwtcHJvcGVydHktdmFsdWF0aW9uIiwiRnJlZSBDb21tZXJjaWFsIFByb3BlcnR5IFZhbHVhdGlvbiAoQnJva2VyIE9waW5pb24gb2YgVmFsdWUpIiwiY29tbSIsIkdldCBhIGZyZWUgQnJva2VyIE9waW5pb24gb2YgVmFsdWUgb24geW91ciBMb3Vpc3ZpbGxlIGNvbW1lcmNpYWwgb3IgaW5jb21lIHByb3BlcnR5OiB2YWx1ZSByYW5nZSwgdGhlIG1hdGgsIGNvbXBzLCBhbmTigKYiXSxbIi90b29scyIsIkFsbCBmcmVlIHRvb2xzICYgY2FsY3VsYXRvcnMiLCJ0b29sIiwiRnJlZSBMb3Vpc3ZpbGxlIHJlYWwgZXN0YXRlIGNhbGN1bGF0b3JzIGZvciBidXllcnMsIHNlbGxlcnMsIGludmVzdG9ycyBhbmQgd2hvbGVzYWxlcnM6IG1vcnRnYWdlLCBjbG9zaW5nIGNvc3RzLCBCUlJSUizigKYiXSxbIi9pbnN0aXR1dGlvbmFsLWZ1bmQtaW52ZXN0b3JzLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUiLCJGdW5kcywgRmFtaWx5IE9mZmljZXMgYW5kIEluc3RpdHV0aW9uYWwgQnV5ZXJzOiBBY3F1aXJpbmcgUmVhbCBFc3RhdGUgaW4gTG91aXN2aWxsZSwgTGV4aW5ndG9uIGFuZCBTb3V0aGVybiBJbmRpYW5hIiwicmVtb3RlIiwiRm9yIGhlZGdlIGZ1bmRzLCBmYW1pbHkgb2ZmaWNlcyBhbmQgc3luZGljYXRvcnMgYnV5aW5nIHNpbmdsZS1mYW1pbHkgcG9ydGZvbGlvcywgbXVsdGlmYW1pbHkgYW5kIGNvbW1lcmNpYWwgcHJvcGVydHkgaW7igKYiXSxbIi9nZXJtYW50b3duLXNjaG5pdHplbGJ1cmctbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSIsIkdlcm1hbnRvd24gJiBTY2huaXR6ZWxidXJnIExvdWlzdmlsbGUgUmVhbCBFc3RhdGUgR3VpZGUgKDQwMjE3KSIsImhvb2QiLCJTaG90Z3VuIGFuZCBjYW1lbGJhY2sgaG9tZXMgaW4gR2VybWFudG93biBhbmQgU2Nobml0emVsYnVyZywgTG91aXN2aWxsZSBLWSAoNDAyMTcpOiBwcmljZXMsIGRheXMgb24gbWFya2V0LCBpbnNwZWN0aW9u4oCmIl0sWyIvbXVsdGlwbGUtb2ZmZXJzLXZzLW9uZS1pbnZlc3Rvci1jYWxsLWxvdWlzdmlsbGUiLCJHZXQgTXVsdGlwbGUgT2ZmZXJzIEluc3RlYWQgb2YgT25lIENvbGQgQ2FsbDogV2h5IE1vdGl2YXRlZCBTZWxsZXJzIExpc3QgRmlyc3QiLCJzZWxsIiwiQSBzaW5nbGUgY2FzaCBvZmZlciBnaXZlcyB5b3Ugbm8gbmVnb3RpYXRpbmcgbGV2ZXJhZ2U6IG5vdGhpbmcgaXMgcHVzaGluZyB0aGF0IG51bWJlciB1cC4gTGlzdGluZyBhIHByb3BlcnR5LCBldmVuIGFzLWlzLOKApiJdLFsiL2dldC1wcmUtYXBwcm92ZWQiLCJHZXQgcHJlLWFwcHJvdmVkIChmaW5hbmNpbmcgcmVxdWVzdCkiLCJidXkiLCJBbnN3ZXIgYSBmZXcgcXVpY2sgcXVlc3Rpb25zIGFuZCBDYW0gS2VlaG4sIG91ciBpbi1ob3VzZSBsZW5kZXIsIHdpbGwgZm9sbG93IHVwLiJdLFsiL3dpbm5lci1yZWFsdHktZ2l2aW5nLWJhY2siLCJHaXZpbmcgQmFjayBhdCBXaW5uZXIgUmVhbHR5OiBPdXIgMSUgQ29tbWl0bWVudCB0byBIYW5kIGluIEhhbmQiLCJhYm91dCIsIldpbm5lciBSZWFsdHkgZG9uYXRlcyAxJSBvZiBuZXQgcHJvZml0cyB0byBIYW5kIGluIEhhbmQgZXZlcnkgeWVhciwgYW5kIGFueSBhZ2VudCBjYW4gcGVyc29uYWxseSBtYXRjaCBpdCBvbiB0aGVpciBvd27igKYiXSxbIi9nbGVudmlldy1reS1yZWFsLWVzdGF0ZS1ndWlkZSIsIkdsZW52aWV3LCBLWSBSZWFsIEVzdGF0ZSBHdWlkZSB8IEVzdGF0ZSBIb21lcyBvbiB0aGUgUml2ZXIgUm9hZCBCbHVmZnMiLCJob29kIiwiR2xlbnZpZXcsIEtZICg0MDAyNSk6IGhpc3RvcmljIGVzdGF0ZXMgYW5kIGN1c3RvbSBob21lcyBvbiB0aGUgUml2ZXIgUm9hZCBibHVmZnMsIDcgbWlsZXMgZnJvbSBkb3dudG93biBMb3Vpc3ZpbGxlLiBXaGF04oCmIl0sWyIvZ3JvdXAtaG9tZXMtcmVjb3ZlcnktcmVzaWRlbmNlcy1sb3Vpc3ZpbGxlLWd1aWRlIiwiR3JvdXAgSG9tZXMgJiBSZWNvdmVyeSBSZXNpZGVuY2VzIGluIExvdWlzdmlsbGU6IFpvbmluZywgTGljZW5zaW5nICYgU2l0ZSBTZWxlY3Rpb24gR3VpZGUiLCJncm91cCIsIkxvdWlzdmlsbGUgem9uaW5nLCBDaGFwdGVyIDExNSBsaWNlbnNpbmcsIEtZIHN0YXRlIGNlcnRpZmljYXRpb24gKEtSUyAyMjIuNTAyKSwgYW5kIEZhaXIgSG91c2luZyBBY3QgcHJvdGVjdGlvbnMgZm9y4oCmIl0sWyIvaGFuZC1pbi1oYW5kLW1pbmlzdHJpZXMtbG91aXN2aWxsZSIsIkhhbmQgaW4gSGFuZCBNaW5pc3RyaWVzOiBUaGUgTG91aXN2aWxsZSBOb25wcm9maXQgQmVoaW5kIE91ciBCaWdnZXN0IEdvYWwiLCJhYm91dCIsIkhhbmQgaW4gSGFuZCBNaW5pc3RyaWVzOiBoaXN0b3J5LCBtaXNzaW9uLCBSb2IgQmVyZ2Vyb24ncyBidWlsZCB0cmlwcywgYW5kIFdpbm5lciBSZWFsdHkncyBnb2FsIHRvIGZ1bmQgb25lIEhhbmQgaW4gSGFuZCBob21lIGEgbW9udGguIl0sWyIvdGVuYW50LXBsYWNlbWVudC1yZXF1ZXN0IiwiRmlsbCBhIHZhY2FuY3kgKHRlbmFudCBwbGFjZW1lbnQgcmVxdWVzdCkiLCJyZW50IiwiSGF2ZSBhIHZhY2FuY3k/IFRlbGwgdXMgYWJvdXQgdGhlIHByb3BlcnR5IGFuZCB3ZSdsbCBmb2xsb3cgdXAgcGVyc29uYWxseS4iXSxbIi9sb3Vpc3ZpbGxlLWhlYWx0aGNhcmUtbWVkaWNhbC1vZmZpY2UtcmVhbC1lc3RhdGUiLCJIZWFsdGhjYXJlICYgTWVkaWNhbCBPZmZpY2UgUmVhbCBFc3RhdGUgaW4gTG91aXN2aWxsZSIsImNvbW0iLCJCdXksIHNlbGwsIG9yIGxlYXNlIG1lZGljYWwgb2ZmaWNlIHNwYWNlIGluIExvdWlzdmlsbGUg4oCUIGRlbWFuZCBkcml2ZXJzLCBLZW50dWNreSdzIENlcnRpZmljYXRlIG9mIE5lZWQgcnVsZXMsIGFuZCB3aGF04oCmIl0sWyIvaGlrZXMtcG9pbnQtbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtZ3VpZGUiLCJIaWtlcyBQb2ludCBMb3Vpc3ZpbGxlIEhvbWUgUHJpY2VzLCBXaGF0J3MgU2VsbGluZyAoMjAyNikiLCJob29kIiwiU2VlIDIwMjYgSGlrZXMgUG9pbnQgTG91aXN2aWxsZSBob21lcyBmb3Igc2FsZSBkYXRhOiBtZWRpYW4gcHJpY2UsIGRheXMgb24gbWFya2V0LCBhbmQgd2hhdCdzIGFjdHVhbGx5IHNlbGxpbmcgaW4gWklQ4oCmIl0sWyIvaG91c2UtaGFja2luZy1jYWxjdWxhdG9yIiwiSG91c2UgSGFja2luZyBDYWxjdWxhdG9yOiBGSEEgTXVsdGktVW5pdCBDb3N0cyAoMjAyNikiLCJ0b29sIiwiRXN0aW1hdGUgeW91ciBGSEEgaG91c2UtaGFjayBwYXltZW50IGFuZCBuZXQgb3V0LW9mLXBvY2tldCBjb3N0IGFmdGVyIHJlbnRhbCBpbmNvbWUsIHdpdGggMjAyNiBKZWZmZXJzb24gQ291bnR5IEZIQSBsb2Fu4oCmIl0sWyIvaG91c2UtaGFja2luZy1sb3Vpc3ZpbGxlLWtlbnR1Y2t5IiwiSG91c2UgSGFja2luZyBpbiBMb3Vpc3ZpbGxlLCBLWTogVGhlIENvbXBsZXRlIEd1aWRlIHRvIEJ1eWluZyBhIER1cGxleCwgVHJpcGxleCwgb3IgRm91cnBsZXggaW4gMjAyNiIsImludmVzdCIsIkJ1eSBhIGR1cGxleCwgdHJpcGxleCwgb3IgZm91cnBsZXggaW4gTG91aXN2aWxsZSBhbmQgbGV0IHRlbmFudHMgY292ZXIgeW91ciBtb3J0Z2FnZS4gMjAyNiBGSEEgYW5kIGNvbnZlbnRpb25hbCBsb2Fu4oCmIl0sWyIvaG93LWEtY2FzaC1idXllci1wYXlvdXQtYWN0dWFsbHktd29ya3MtaW4ta2VudHVja3kiLCJIb3cgYSBDYXNoLUJ1eWVyIFBheW91dCBBY3R1YWxseSBXb3JrcyBpbiBLZW50dWNreSIsInNlbGwiLCIiXSxbIi9tb3ZlLW91dC1hZnRlci1mb3JlY2xvc3VyZS1zYWxlLWtlbnR1Y2t5IiwiSG93IExvbmcgRG8gWW91IEhhdmUgdG8gTW92ZSBPdXQgQWZ0ZXIgYSBGb3JlY2xvc3VyZSBTYWxlIGluIEtlbnR1Y2t5PyIsInRvdWdoIiwiWW91ciBob3VzZSBzb2xkIGF0IGEgS2VudHVja3kgZm9yZWNsb3N1cmUgYXVjdGlvbi4gTm93IHdoYXQ/IENvdXJ0IGNvbmZpcm1hdGlvbiwgdGhlIHJlZGVtcHRpb24gcmlnaHQsIHdyaXRzIG9m4oCmIl0sWyIvb2ZmbWFya2V0LWRlYWxzLWNhc2gtb2ZmZXItbG91aXN2aWxsZS1zZWxsZXJzIiwiSG93IE9mZk1hcmtldC5kZWFscyBHZXRzIExvdWlzdmlsbGUgU2VsbGVycyBhIFJlYWwgQ2FzaCBPZmZlciAoTm90IGEgTG93YmFsbCBPbmUpIiwic2VsbCIsIkEgc2luZ2xlIGNhc2ggb2ZmZXIgbmV2ZXIgaGFzIHRvIGNvbXBldGUsIHNvIG5vdGhpbmcgcHVzaGVzIHRoZSBudW1iZXIgdXAuIE9mZk1hcmtldC5kZWFscywgZm91bmRlZCBieSBXaW5uZXIgUmVhbHR5J3PigKYiXSxbIi9yZWFsLWVzdGF0ZS1pbnZlc3Rvci10YXgtc3RyYXRlZ2llcy1rZW50dWNreSIsIkhvdyBSZWFsIEVzdGF0ZSBJbnZlc3RvcnMgTGVnYWxseSBQYXkgTGVzcyBUYXg6IEEgS2VudHVja3kgR3VpZGUgZm9yIDIwMjYiLCJpbnZlc3QiLCJEZXByZWNpYXRpb24sIGNvc3Qgc2VncmVnYXRpb24sIGJvbnVzIGRlcHJlY2lhdGlvbiwgcGFzc2l2ZSBsb3NzIHJ1bGVzLCAxMDMxIGV4Y2hhbmdlcyBhbmQgdGhlIEtlbnR1Y2t5IGRlcHJlY2lhdGlvbiBydWxl4oCmIl0sWyIvbG91aXN2aWxsZS1mb3JlY2xvc3VyZS1hdWN0aW9ucy1tYXN0ZXItY29tbWlzc2lvbmVyLXNhbGVzIiwiSG93IHRvIEJ1eSBhIEZvcmVjbG9zdXJlIGF0IHRoZSBDb3VydGhvdXNlIGluIExvdWlzdmlsbGU6IE1hc3RlciBDb21taXNzaW9uZXIgU2FsZXMgRXhwbGFpbmVkIiwiaW52ZXN0IiwiSG93IEplZmZlcnNvbiBDb3VudHkgTWFzdGVyIENvbW1pc3Npb25lciBmb3JlY2xvc3VyZSBzYWxlcyB3b3JrOiB3aGVyZSBhbmQgd2hlbiwgdGhlIDEwJSBkZXBvc2l0IGFuZCAzMC1kYXkgcnVsZSwgbGllbnMs4oCmIl0sWyIvYnV5LXJlbnRhbC1wcm9wZXJ0eS13aXRob3V0LXcyLWxvdWlzdmlsbGUiLCJIb3cgdG8gQnV5IGEgUmVudGFsIFByb3BlcnR5IFdpdGhvdXQgYSBXLTIgaW4gTG91aXN2aWxsZSAoMjAyNiBHdWlkZSkiLCJpbnZlc3QiLCJTZWxmLWVtcGxveWVkLCByZXRpcmVkIG9yIG5vIFctMj8gU2V2ZW4gd2F5cyB0byBidXkgYSBMb3Vpc3ZpbGxlIHJlbnRhbCBpbiAyMDI2OiBEU0NSIGxvYW5zLCBiYW5rIHN0YXRlbWVudCBsb2Fucywgc2VsbGVy4oCmIl0sWyIvY29udmVydC1yZW50YWwtdG8tbWlkdGVybS1yZW50YWwtbG91aXN2aWxsZS1pbnZlc3Rvci1ndWlkZSIsIkhvdyB0byBDb252ZXJ0IFlvdXIgTG91aXN2aWxsZSBSZW50YWwgSW50byBhIE1pZHRlcm0gUmVudGFsOiBBbiBJbnZlc3RvciBHdWlkZSIsInN0ciIsIkEgc3RlcC1ieS1zdGVwIGd1aWRlIGZvciBMb3Vpc3ZpbGxlIHByb3BlcnR5IG93bmVycyBjb252ZXJ0aW5nIGEgbG9uZy10ZXJtIHJlbnRhbCBpbnRvIGEgbWlkdGVybSAoMzAtZGF5IHRvIDEyLW1vbnRoKeKApiJdLFsiL2tlbnR1Y2t5LXJlYWwtZXN0YXRlLWxpY2Vuc2UtcmVxdWlyZW1lbnRzIiwiSG93IHRvIEdldCBhIEtlbnR1Y2t5IFJlYWwgRXN0YXRlIExpY2Vuc2U6IFJlcXVpcmVtZW50cywgQ29zdHMgYW5kIFRpbWVsaW5lIiwiYWdlbnRzIiwiOTYgaG91cnMsIHR3byBleGFtcywgYW5kIDQ4IGhvdXJzIG9mIHBvc3QtbGljZW5zZSBlZHVjYXRpb24gaW4gdHdvIHllYXJzLiBFdmVyeSBLZW50dWNreSBsaWNlbnNpbmcgcmVxdWlyZW1lbnQgYW5kIGZlZSzigKYiXSxbIi9ob3ctdG8tZ2V0LWZpcnN0LWxvb2stYXQtbG91aXN2aWxsZS1vZmYtbWFya2V0LWRlYWxzIiwiSG93IHRvIEdldCBGaXJzdCBMb29rIGF0IExvdWlzdmlsbGUgT2ZmLU1hcmtldCBEZWFscyIsImJ1eSIsIk9mZi1tYXJrZXQgcHJvcGVydGllcyBpbiBMb3Vpc3ZpbGxlIG1vdmUgZmFzdCwgYW5kIHRoZSBpbnZlc3RvcnMgd2hvIHNlZSB0aGVtIGZpcnN0IGFyZSB1c3VhbGx5IGFscmVhZHkgb24gYSB2ZXR0ZWQgYnV5ZXLigKYiXSxbIi9ob3ctdG8tZ2V0LXByZS1hcHByb3ZlZC1tb3J0Z2FnZS1rZW50dWNreSIsIkhvdyB0byBHZXQgUHJlLUFwcHJvdmVkIGZvciBhIE1vcnRnYWdlIGluIEtlbnR1Y2t5OiBBIEJ1eWVyJ3MgR3VpZGUiLCJidXkiLCJQcmUtYXBwcm92YWwgdnMuIHByZS1xdWFsaWZpY2F0aW9uLCByZXF1aXJlZCBkb2N1bWVudHMsIDIwMjYgbG9hbiBsaW1pdHMsIGFuZCBLZW50dWNreSBkb3duIHBheW1lbnQgYXNzaXN0YW5jZSAtLeKApiJdLFsiL3NlbGwtbXktaG91c2UtZmFzdC1sb3Vpc3ZpbGxlIiwiSG93IHRvIFNlbGwgWW91ciBIb3VzZSBGYXN0IGluIExvdWlzdmlsbGUgKGFuZCBXaGF0IEVhY2ggT3B0aW9uIENvc3RzKSIsInNlbGwiLCJDYXNoIG9mZmVyLCBvcGVuIG1hcmtldCwgb3IgdGVybXM/IFdoYXQgZWFjaCBvcHRpb24gYWN0dWFsbHkgY29zdHMgYSBMb3Vpc3ZpbGxlIHNlbGxlciwgd2l0aCBjdXJyZW50IG1hcmtldCBudW1iZXJzIGFuZOKApiJdLFsiL3N3aXRjaC1yZWFsLWVzdGF0ZS1icm9rZXJhZ2VzLWtlbnR1Y2t5IiwiSG93IHRvIFN3aXRjaCBSZWFsIEVzdGF0ZSBCcm9rZXJhZ2VzIGluIEtlbnR1Y2t5IiwiYWdlbnRzIiwiWW91IGdldCAzMCBkYXlzLCBhbmQgdGhlIGNsb2NrIHN0YXJ0cyB3aXRoIHRoZSBDb21taXNzaW9uJ3MgZW1haWwuIFlvdXIgbGlzdGluZ3MgZG8gbm90IGNvbWUgd2l0aCB5b3UuIFRoZSBLZW50dWNreSBydWxlc+KApiJdLFsiL2hvdy1pdC13b3JrcyIsIkhvdyBXZSBXb3JrIiwiYWJvdXQiLCJIb3cgV2lubmVyIFJlYWx0eSB3b3JrcyB3aXRoIGJ1eWVycywgc2VsbGVycywgYW5kIGludmVzdG9ycyBpbiBMb3Vpc3ZpbGxlLCBLWSDigJQgZml2ZSBjb21taXRtZW50cyB3ZSBtYWtlIG9uIGV2ZXJ5IGRlYWws4oCmIl0sWyIvaHVyc3Rib3VybmUta3ktcmVhbC1lc3RhdGUtZ3VpZGUiLCJIdXJzdGJvdXJuZSwgS1kgUmVhbCBFc3RhdGUgR3VpZGUiLCJob29kIiwiVGhpbmtpbmcgYWJvdXQgSHVyc3Rib3VybmUsIEtlbnR1Y2t5PyBXaW5uZXIgUmVhbHR5IGNvdmVycyBob21lIHByaWNlcywgdGhlIGNvdW50cnkgY2x1YiBsaWZlc3R5bGUsIGFuZCBsb2NhdGlvbuKApiJdLFsiL2luZGlhbi1oaWxscy1reS1yZWFsLWVzdGF0ZS1ndWlkZSIsIkluZGlhbiBIaWxscywgS1kgUmVhbCBFc3RhdGUgR3VpZGUiLCJob29kIiwiRXhwbG9yaW5nIEluZGlhbiBIaWxscywgS2VudHVja3k/IFdpbm5lciBSZWFsdHkgY292ZXJzIHRoZSBlc3RhdGUgbG90cywgYXJjaGl0ZWN0dXJlLCBzY2hvb2xzLCBhbmQgbWFya2V0IGFjdGl2aXR5IGlu4oCmIl0sWyIvaW5kaWFuYS1oZWEtMTIxMC1yZW50YWwtY2FwLWxhdy1pbnZlc3Rvci1ndWlkZSIsIkluZGlhbmEgSEVBIDEyMTA6IFJlbnRhbCBDYXBzIEFyZSBHb25lICgyMDI2IEludmVzdG9yIEd1aWRlKSIsImludmVzdCIsIkluZGlhbmEncyBIRUEgMTIxMCBlbmRzIG1vc3QgbG9jYWwgY2FwcyBvbiByZW50YWwgcHJvcGVydGllcyBzdGFydGluZyBKdWx5IDEsIDIwMjYuIFNlZSB3aGF0IGl0IG1lYW5zIGZvciBpbnZlc3RvcnPigKYiXSxbIi9pbmR1c3RyaWFsLXdhcmVob3VzZS1pbnZlc3RpbmctbG91aXN2aWxsZSIsIkluZHVzdHJpYWwgV2FyZWhvdXNlIEludmVzdGluZyBpbiBMb3Vpc3ZpbGxlOiBXaHkgQ0JSRSBKdXN0IE5hbWVkIFRoaXMgYSBQcmlvcml0eSBNYXJrZXQiLCJjb21tIiwiTG91aXN2aWxsZSBpbmR1c3RyaWFsIHZhY2FuY3kgaXMgcnVubmluZyBmYXIgYmVsb3cgdGhlIG5hdGlvbmFsIGF2ZXJhZ2UsIGFuZCBDQlJFIG5hbWVkIGl0IGEgcHJpb3JpdHkgbWFya2V0IGZvciAyMDI2LuKApiJdLFsiL2ludGFrZS1mb3JtIiwiVGVsbCB1cyB5b3VyIHNpdHVhdGlvbiAoaW50YWtlIGZvcm0pIiwiY29udGFjdCIsIlRlbGwgdXMgd2hhdCdzIGdvaW5nIG9uIHdpdGggeW91ciBwcm9wZXJ0eSBhbmQgd2UnbGwgZm9sbG93IHVwIHBlcnNvbmFsbHkuIl0sWyIvaW50ZXJuYXRpb25hbC1pbnZlc3RvcnMtYnV5aW5nLXJlYWwtZXN0YXRlLWtlbnR1Y2t5LWluZGlhbmEiLCJJbnRlcm5hdGlvbmFsIEludmVzdG9yczogSG93IHRvIEJ1eSBSZWFsIEVzdGF0ZSBpbiBMb3Vpc3ZpbGxlLCBLZW50dWNreSBhbmQgU291dGhlcm4gSW5kaWFuYSIsInJlbW90ZSIsIlN0ZXAtYnktc3RlcCBndWlkZSBmb3IgZm9yZWlnbiBpbnZlc3RvcnMgYnV5aW5nIHJlbnRhbHMsIG11bHRpZmFtaWx5IG9yIGNvbW1lcmNpYWwgcHJvcGVydHkgaW4gTG91aXN2aWxsZSBhbmQgU291dGhlcm7igKYiXSxbIi9vdXQtb2Ytc3RhdGUtcmVhbC1lc3RhdGUtaW52ZXN0aW5nLWxvdWlzdmlsbGUiLCJJbnZlc3RpbmcgaW4gTG91aXN2aWxsZSBSZWFsIEVzdGF0ZSBGcm9tIE91dCBvZiBTdGF0ZTogVGhlIDIwMjYgUGxheWJvb2siLCJyZW1vdGUiLCJIb3cgb3V0LW9mLXN0YXRlIGludmVzdG9ycyBidXkgcmVudGFscywgbXVsdGlmYW1pbHkgYW5kIGNvbW1lcmNpYWwgcHJvcGVydHkgaW4gTG91aXN2aWxsZSwgTGV4aW5ndG9uIGFuZCBTb3V0aGVybiBJbmRpYW5h4oCmIl0sWyIvaW52ZXN0bWVudC1wcm9wZXJ0eS1hbmFseXplciIsIkludmVzdG1lbnQgUHJvcGVydHkgQW5hbHl6ZXIiLCJ0b29sIiwiRnJlZSBpbnZlc3RtZW50IHByb3BlcnR5IGNhbGN1bGF0b3IgZm9yIExvdWlzdmlsbGUgcmVudGFscy4gSW5zdGFudGx5IGVzdGltYXRlIGNhcCByYXRlLCBjYXNoLW9uLWNhc2ggcmV0dXJuLCBOT0ksIGFuZOKApiJdLFsiL2ludmVzdG1lbnQtcHJvcGVydHktY29tcGFyaXNvbi10b29sIiwiSW52ZXN0bWVudCBQcm9wZXJ0eSBDb21wYXJpc29uIFRvb2wiLCJ0b29sIiwiQ29tcGFyZSB1cCB0byAzIGludmVzdG1lbnQgcHJvcGVydGllcyBzaWRlIGJ5IHNpZGUgb24gY2FwIHJhdGUsIGNhc2gtb24tY2FzaCByZXR1cm4sIGFuZCBwcm9qZWN0ZWQgSVJSIG92ZXIgeW91ciBob2xkIHBlcmlvZC4iXSxbIi9pcm9xdW9pcy1zb3V0aC1lbmQtbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtZ3VpZGUiLCJJcm9xdW9pcyBQYXJrICYgU291dGggRW5kLCBMb3Vpc3ZpbGxlOiBIb21lIFByaWNlcyAoMjAyNikiLCJob29kIiwiSXJvcXVvaXMgUGFyayAmIHRoZSBTb3V0aCBFbmQsIExvdWlzdmlsbGUgKFpJUCA0MDIxNCk6IDIwMjYgaG9tZSBwcmljZXMsIHdoYXQncyBzZWxsaW5nLCBkYXlzIG9uIG1hcmtldCwgYW5kIHdobyBzaG91bGTigKYiXSxbIi9pcy1sb3Vpc3ZpbGxlLWEtZ29vZC1wbGFjZS10by1pbnZlc3QtaW4tcmVhbC1lc3RhdGUiLCJJcyBMb3Vpc3ZpbGxlIGEgR29vZCBQbGFjZSB0byBJbnZlc3QgaW4gUmVhbCBFc3RhdGU/IiwiaW52ZXN0IiwiSXMgTG91aXN2aWxsZSBhIGdvb2QgcGxhY2UgdG8gaW52ZXN0IGluIHJlYWwgZXN0YXRlPyBZZXM6IHN0cm9uZyBjYXNoIGZsb3csIGEgMy41JSBmbGF0IHRheCByYXRlLCBhbmQgcHJpY2VzIHRoYXQgYmFyZWx54oCmIl0sWyIvd2hvbGVzYWxpbmctcmVhbC1lc3RhdGUta2VudHVja3kiLCJJcyBXaG9sZXNhbGluZyBSZWFsIEVzdGF0ZSBMZWdhbCBpbiBLZW50dWNreT8iLCJjcmVhdGl2ZSIsIktlbnR1Y2t5J3MgMjAyMyBsYXcgY2hhbmdlZCB3aGF0IHdob2xlc2FsZXJzIGNhbiBkby4gQXNzaWduaW5nIGEgY29udHJhY3QgaXMgbGVnYWwuIEFkdmVydGlzaW5nIGl0IHdpdGhvdXQgYSBsaWNlbnNlIGlz4oCmIl0sWyIvamFrZS1mYWJpc2giLCJKYWtlIEZhYmlzaCIsInRlYW0iLCJMb25ndGltZSBMb3Vpc3ZpbGxlIGFnZW50IGFuZCBvd25lciBvZiBBdXRoZW50aWMgQ2FycGVudHJ5LCBicmluZ2luZyBoYW5kcy1vbiByZW5vdmF0aW9uIGV4cGVydGlzZSB0byBldmVyeSBkZWFsLiBQdWxsZWTigKYiXSxbIi9qY3BzLXNjaG9vbC16b25lcy1sb3Vpc3ZpbGxlLWhvbWUtYnV5ZXJzIiwiSkNQUyBTY2hvb2wgWm9uZXMgaW4gTG91aXN2aWxsZTogV2hhdCBIb21lIEJ1eWVycyBOZWVkIHRvIEtub3ciLCJidXkiLCJIb3cgSkNQUyBhc3NpZ25zIHNjaG9vbHMgYnkgYWRkcmVzcywgd2hhdCBhIENob2ljZSBab25lIG1lYW5zIGZvciBidXllcnMsIGFuZCB3aGVyZSB0byBmaW5kIG9mZmljaWFsIEtlbnR1Y2t5IHNjaG9vbCBkYXRh4oCmIl0sWyIvamVmZmVyc29uLWNvdW50eS1wcm9wZXJ0eS10YXgtYXNzZXNzbWVudC1hcHBlYWwiLCJKZWZmZXJzb24gQ291bnR5IFByb3BlcnR5IFRheCBBc3Nlc3NtZW50IEFwcGVhbCAoTG91aXN2aWxsZSkiLCJidXkiLCJBIEplZmZlcnNvbiBDb3VudHkgcHJvcGVydHkgdGF4IGFzc2Vzc21lbnQgYXBwZWFsIHdhbGt0aHJvdWdoIGZvciBMb3Vpc3ZpbGxlLCBLZW50dWNreSBvd25lcnM6IFBWQSBjb25mZXJlbmNlIHN0ZXBzLOKApiJdLFsiL2plZmZlcnNvbi1jb3VudHktcHJvcGVydHktdGF4LWNhbGN1bGF0b3IiLCJKZWZmZXJzb24gQ291bnR5IFByb3BlcnR5IFRheCBDYWxjdWxhdG9yOiBFc3RpbWF0ZSBieSBUYXhpbmcgRGlzdHJpY3QgKDIwMjYpIiwidG9vbCIsIkVzdGltYXRlIHlvdXIgSmVmZmVyc29uIENvdW50eSwgS1kgcHJvcGVydHkgdGF4IGJ5IHRheGluZyBkaXN0cmljdDogc3RhdGUsIGNvdW50eSwgSkNQUyBhbmQgdXJiYW4gc2VydmljZXMgb3IgZmlyZeKApiJdLFsiL2plZmZlcnNvbnRvd24tbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtZ3VpZGUiLCJKZWZmZXJzb250b3duIExvdWlzdmlsbGUgSG9tZSBQcmljZXMsIFdoYXQncyBTZWxsaW5nICgyMDI2KSIsImhvb2QiLCJTZWUgMjAyNiBKZWZmZXJzb250b3duIExvdWlzdmlsbGUgaG9tZXMgZm9yIHNhbGUgZGF0YTogbWVkaWFuIHByaWNlLCBkYXlzIG9uIG1hcmtldCwgYW5kIHdoYXQncyBhY3R1YWxseSBzZWxsaW5nIGluIFpJUOKApiJdLFsiL2pvaW4iLCJKb2luIGEgTG91aXN2aWxsZSBSZWFsIEVzdGF0ZSBCcm9rZXJhZ2UiLCJhZ2VudHMiLCJKb2luIFdpbm5lciBSZWFsdHksIGEgTG91aXN2aWxsZSByZWFsIGVzdGF0ZSBicm9rZXJhZ2Ugd2l0aCB0aHJlZSBjb21wIHBsYW5zLCBhbiBBSS1kcml2ZW4gQ1JNLCBhbmQgcmVhbCBkZWFsIGZsb3cg4oCUIG5v4oCmIl0sWyIva2FzZXktcm9iaW5zb24iLCJLYXNleSBSb2JpbnNvbiIsInRlYW0iLCJXaW5uZXIgUmVhbHR5J3MgZmlyc3QgYWdlbnQgdG8gam9pbiwgd2l0aCAxMCsgeWVhcnMgb2YgZmxpcHBpbmcgYW5kIEJSUlJSIGV4cGVyaWVuY2UuIExpY2Vuc2VkIGluIEtlbnR1Y2t5IGFuZCBJbmRpYW5hLiJdLFsiL2tlbnR1Y2t5LWJ1eWVyLWNsb3NpbmctY29zdC1jYWxjdWxhdG9yIiwiS2VudHVja3kgQnV5ZXIgQ2xvc2luZyBDb3N0IENhbGN1bGF0b3I6IENhc2ggdG8gQ2xvc2UgZm9yIENvbnZlbnRpb25hbCwgRkhBLCBWQSBhbmQgVVNEQSBMb2FucyIsInRvb2wiLCJGcmVlIEtlbnR1Y2t5IGJ1eWVyIGNsb3NpbmcgY29zdCBjYWxjdWxhdG9yOiBsZW5kZXIgZmVlcywgdGl0bGUsIHJlY29yZGluZywgcHJlcGFpZHMgYW5kIEZIQSwgVkEgb3IgVVNEQSBmZWVzLCBzbyB5b3XigKYiXSxbIi9rZW50dWNreS1yZWFsLWVzdGF0ZS1jb250aW51aW5nLWVkdWNhdGlvbi1kZWFkbGluZSIsIktlbnR1Y2t5IFJlYWwgRXN0YXRlIENFIERlYWRsaW5lOiBXaGF0J3MgRHVlIERlY2VtYmVyIDMxIGFuZCB0aGUgRmFzdGVzdCBXYXkgdG8gRmluaXNoIiwiYWdlbnRzIiwiS2VudHVja3kgYWdlbnRzIG5lZWQgNiBDRSBob3VycyBieSBEZWNlbWJlciAzMSwgMyBpbiBsYXcsIHBsdXMgdGhlIENvcmUgQ291cnNlIGV2ZXJ5IGZvdXIgeWVhcnMuIEhvdyB0byBjaGVjayB5b3VyIGhvdXJz4oCmIl0sWyIva2VudHVja3ktcmVjb3ZlcnktcmVzaWRlbmNlLWNlcnRpZmljYXRpb24ta3JzLTIyMi01MDItZ3VpZGUiLCJLZW50dWNreSBSZWNvdmVyeSBSZXNpZGVuY2UgQ2VydGlmaWNhdGlvbjogQSBLUlMgMjIyLjUwMiBDb21wbGlhbmNlIEd1aWRlIiwiZ3JvdXAiLCJLZW50dWNreSdzIEtSUyAyMjIuNTAyIHJlY292ZXJ5IHJlc2lkZW5jZSBjZXJ0aWZpY2F0aW9uIGV4cGxhaW5lZDogS1lBUlIncyByb2xlLCB0aGUgS1JTIDIyMi41MDggcmVmZXJyYWwgYW5kIGZ1bmRpbmfigKYiXSxbIi9rZW50dWNreS1zZWxsZXItY2xvc2luZy1jb3N0LWNhbGN1bGF0b3IiLCJLZW50dWNreSBTZWxsZXIgQ2xvc2luZyBDb3N0IENhbGN1bGF0b3I6IFdoYXQgSXQgQ29zdHMgdG8gU2VsbCBhIEhvdXNlIGluIExvdWlzdmlsbGUiLCJ0b29sIiwiRXN0aW1hdGUgS2VudHVja3kgc2VsbGVyIGNsb3NpbmcgY29zdHMgYW5kIHlvdXIgbmV0IHByb2NlZWRzIGZyb20gYSBob21lIHNhbGU6IGNvbW1pc3Npb24sIHRoZSAkMC41MCBwZXIgJDUwMCB0cmFuc2ZlcuKApiJdLFsiL2tlbnR1Y2t5LXRyYW5zZmVyLXRheC1jYWxjdWxhdG9yIiwiS2VudHVja3kgVHJhbnNmZXIgVGF4IGFuZCBSZWNvcmRpbmcgRmVlIENhbGN1bGF0b3IiLCJ0b29sIiwiQ2FsY3VsYXRlIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIHRyYW5zZmVyIHRheCB1bmRlciBLUlMgMTQyLjA1MDogJDAuNTAgcGVyICQ1MDAgb2YgdmFsdWUsIHBhaWQgYnkgdGhlIHNlbGxlciwgcGx1cyBkZWVkIGFuZOKApiJdLFsiL2tlbnR1Y2t5LWFncmljdWx0dXJhbC1leGVtcHRpb24tcHJvcGVydHktdGF4LWd1aWRlIiwiS2VudHVja3kncyBBZ3JpY3VsdHVyYWwgRXhlbXB0aW9uOiBIb3cgRmFybSBhbmQgQWNyZWFnZSBCdXllcnMgQ2FuIFF1YWxpZnkgZm9yIExvd2VyIFByb3BlcnR5IFRheGVzIiwibGFuZCIsIkhvdyBLZW50dWNreSdzIGFncmljdWx0dXJhbCBleGVtcHRpb24gd29ya3MgZm9yIGZhcm0gYW5kIGFjcmVhZ2UgYnV5ZXJzIOKAlCBtaW5pbXVtIGFjcmVhZ2UgcmVxdWlyZW1lbnRzLCB0aGUgTWFyY2ggMeKApiJdLFsiL2xha2UtZm9yZXN0LWxvdWlzdmlsbGUta3ktcmVhbC1lc3RhdGUtZ3VpZGUiLCJMYWtlIEZvcmVzdCwgTG91aXN2aWxsZSBLWSBSZWFsIEVzdGF0ZSBHdWlkZSB8IENvdW50cnkgQ2x1YiBMaXZpbmcgaW4gdGhlIEVhc3QgRW5kIiwiaG9vZCIsIkxha2UgRm9yZXN0LCBMb3Vpc3ZpbGxlIEtZICg0MDI0NSk6IGhvbWVzIGFyb3VuZCBMYWtlIEZvcmVzdCBDb3VudHJ5IENsdWIsIHByaWNlcyB2ZXJzdXMgQW5jaG9yYWdlIGFuZCBHbGVudmlldywgc2Nob29scyzigKYiXSxbIi9sZXhpbmd0b24tc2hvcnQtdGVybS1yZW50YWwtcmVndWxhdGlvbnMiLCJMZXhpbmd0b24gU2hvcnQtVGVybSBSZW50YWwgUmVndWxhdGlvbnM6IFRoZSBDb21wbGV0ZSAyMDI2IEd1aWRlIGZvciBBaXJibmIgSW52ZXN0b3JzIiwic3RyIiwiTGV4aW5ndG9uLUZheWV0dGUncyBsaWNlbnNpbmcgcnVsZXMsIHRoZSBTQiA5IHByZWVtcHRpb24gZmlnaHQsIG5laWdoYm9yaG9vZC1ieS1uZWlnaGJvcmhvb2QgQWlyYm5iIHJldHVybnMsIGFuZCB3aGF04oCmIl0sWyIvbGV4aW5ndG9uLWt5LWNsb3NpbmctY29zdHMiLCJMZXhpbmd0b24sIEtZIENsb3NpbmcgQ29zdHMgKDIwMjYpOiBXaGF0IEJ1eWVycyBhbmQgU2VsbGVycyBQYXkiLCJidXkiLCJXaGF0IGJ1eWVycyBhbmQgc2VsbGVycyBwYXkgdG8gY2xvc2UgaW4gTGV4aW5ndG9uIGFuZCBGYXlldHRlIENvdW50eTogdHJhbnNmZXIgdGF4LCByZWNvcmRpbmcgZmVlcywgdGl0bGUgaW5zdXJhbmNlLOKApiJdLFsiL2xleGluZ3Rvbi1reS1yZWFsLWVzdGF0ZS1ndWlkZSIsIkxleGluZ3RvbiwgS1kgUmVhbCBFc3RhdGUgR3VpZGUgfCBOZWlnaGJvcmhvb2RzLCBQcmljZXMgJiBEb3dudG93biBMaXZpbmciLCJob29kIiwiVGhpbmtpbmcgYWJvdXQgYnV5aW5nIG9yIHNlbGxpbmcgaW4gTGV4aW5ndG9uLCBLWT8gTmVpZ2hib3Job29kIGd1aWRlLCBKdW5lIDIwMjYgbWFya2V0IHN0YXRzLCBwcmljZSBiYW5kcywgc2Nob29scywgYW5k4oCmIl0sWyIvbGlzYS10dWNrZXIiLCJMaXNhIFR1Y2tlciIsInRlYW0iLCJXaW5uZXIgUmVhbHR5J3MgRGVzaWduYXRlZCBCcm9rZXIsIGxpY2Vuc2VkIGluIGJvdGggS2VudHVja3kgYW5kIEluZGlhbmEsIHdpdGggd2VsbCBvdmVyIGEgZGVjYWRlIGluIHRoZSBpbmR1c3RyeS4gV2lkZWx54oCmIl0sWyIvbGxjLWZvci1vdXQtb2Ytc3RhdGUtZm9yZWlnbi1yZWFsLWVzdGF0ZS1pbnZlc3RvcnMta2VudHVja3ktaW5kaWFuYSIsIkxMQ3MgYW5kIEJhbmsgQWNjb3VudHMgZm9yIE91dC1vZi1TdGF0ZSBhbmQgRm9yZWlnbiBSZWFsIEVzdGF0ZSBJbnZlc3RvcnMgaW4gS2VudHVja3kgYW5kIEluZGlhbmEiLCJyZW1vdGUiLCJLZW50dWNreSBMTEMsIEluZGlhbmEgTExDIG9yIFd5b21pbmc/IEZlZXMsIHJlZ2lzdGVyZWQgYWdlbnRzLCBmb3JlaWduIHJlZ2lzdHJhdGlvbiwgRUlOcyBhbmQgVVMgYmFuayBhY2NvdW50cyBmb3LigKYiXSxbIi9yZW50aW5nLWEtaG9tZS1pbi1sb3Vpc3ZpbGxlLWtlbnR1Y2t5IiwiTG9va2luZyBmb3IgYSBSZW50YWwgaW4gTG91aXN2aWxsZT8gSGVyZSdzIEhvdyBXaW5uZXIgUmVhbHR5IENhbiBIZWxwIiwicmVudCIsIkxvb2tpbmcgZm9yIGEgcmVudGFsIGluIExvdWlzdmlsbGU/IFdpbm5lciBSZWFsdHkgaGVscHMgbWF0Y2ggeW91IHdpdGggc2luZ2xlLWZhbWlseSBob21lcywgZHVwbGV4ZXMsIGNvbmRvcywgYW5k4oCmIl0sWyIvbG91aXN2aWxsZS1jb21tZXJjaWFsLXJlYWwtZXN0YXRlLW5ld3MiLCJMb3Vpc3ZpbGxlICYgU291dGhlcm4gSW5kaWFuYSBDb21tZXJjaWFsIFJlYWwgRXN0YXRlIE5ld3M6IEJpZyBQcm9qZWN0cywgTmV3IEVtcGxveWVycywgYW5kIEluZnJhc3RydWN0dXJlIiwiY29tbSIsIlNvdXJjZWQgMjAyNS0yMDI2IExvdWlzdmlsbGUgYW5kIFNvdXRoZXJuIEluZGlhbmEgcHJvamVjdHM6IHBsYW50cywgSFEgbW92ZXMsIGRhdGEgY2VudGVycywgaG9zcGl0YWxzLCByYWlsLCBhaXJwb3J0IGFuZOKApiJdLFsiL2xvdWlzdmlsbGUtY29tbWVyY2lhbC1wcm9wZXJ0eS1zZWFyY2giLCJMb3Vpc3ZpbGxlIENvbW1lcmNpYWwgJiBJbnZlc3RtZW50IFByb3BlcnR5IFNlYXJjaCIsImNvbW0iLCJTZWFyY2ggTG91aXN2aWxsZSBhbmQgU291dGhlcm4gSW5kaWFuYSBsYW5kLCBjb21tZXJjaWFsIGxpc3RpbmdzLCBhbmQgb2ZmLW1hcmtldCBpbnZlc3RtZW50IGRlYWxzIGluIG9uZSBwbGFjZSwgcGx1cyBmcmVl4oCmIl0sWyIvbG91aXN2aWxsZS1jb21tZXJjaWFsLXJlYWwtZXN0YXRlLWNhbGN1bGF0b3JzIiwiTG91aXN2aWxsZSBDb21tZXJjaWFsIFJlYWwgRXN0YXRlIENhbGN1bGF0b3JzIiwiY29tbSIsIkZyZWUgY29tbWVyY2lhbCByZWFsIGVzdGF0ZSBjYWxjdWxhdG9yczogdHJpcGxlIG5ldCBsZWFzZSBjb3N0LCBsZWFzZSB2cy4gYnV5LCAxMDMxIGV4Y2hhbmdlIGRlYWRsaW5lcywgYW5kIGNvbW1lcmNpYWzigKYiXSxbIi9sb3Vpc3ZpbGxlLWNvbW1lcmNpYWwtcmVhbC1lc3RhdGUtZXZlbnRzIiwiTG91aXN2aWxsZSBDb21tZXJjaWFsIFJlYWwgRXN0YXRlIEV2ZW50cyBDYWxlbmRhciIsImNvbW0iLCJVcGNvbWluZyBMb3Vpc3ZpbGxlIGFuZCBLZW50dWNreSBjb21tZXJjaWFsIHJlYWwgZXN0YXRlIGV2ZW50cywgY29uZmVyZW5jZXMsIG5ldHdvcmtpbmcgbHVuY2hlcywgem9uaW5nIGhlYXJpbmdzLCBhbmQgdGF44oCmIl0sWyIvbG91aXN2aWxsZS1jb21tZXJjaWFsLXJlYWwtZXN0YXRlLW1hcmtldC1yZXBvcnQiLCJMb3Vpc3ZpbGxlIENvbW1lcmNpYWwgUmVhbCBFc3RhdGUgTWFya2V0IFJlcG9ydCIsImNvbW0iLCJMb3Vpc3ZpbGxlIGNvbW1lcmNpYWwgcmVhbCBlc3RhdGUgdHJlbmRzOiBpbmR1c3RyaWFsLCBvZmZpY2UsIHJldGFpbCwgYW5kIG11bHRpZmFtaWx5IHZhY2FuY3kgYW5kIHJlbnQgZGF0YSwgdXBkYXRlZOKApiJdLFsiL2xvdWlzdmlsbGUtY29tbWVyY2lhbC1yZWFsLWVzdGF0ZS1tYXJrZXQtcmVwb3J0LXExLTIwMjYiLCJMb3Vpc3ZpbGxlIENvbW1lcmNpYWwgUmVhbCBFc3RhdGUgTWFya2V0IFJlcG9ydDogUTEgMjAyNiBEYXRhIiwiY29tbSIsIlExIDIwMjYgTG91aXN2aWxsZSBjb21tZXJjaWFsIHJlYWwgZXN0YXRlIGRhdGE6IGluZHVzdHJpYWwgdmFjYW5jeSA0LjAlLCBvZmZpY2UgcmVudHMgYXQgYSByZWNvcmQgJDE5LjI4L1NGLCBhcGFydG1lbnTigKYiXSxbIi9sb3Vpc3ZpbGxlLWNvbW1lcmNpYWwtcmVhbC1lc3RhdGUtbWFya2V0LXJlcG9ydC1xMy0yMDI2IiwiTG91aXN2aWxsZSBDb21tZXJjaWFsIFJlYWwgRXN0YXRlIE1hcmtldCBSZXBvcnQ6IFEzIDIwMjYgVXBkYXRlIiwiY29tbSIsIlEzIDIwMjYgTG91aXN2aWxsZSBjb21tZXJjaWFsIHJlYWwgZXN0YXRlIGRhdGE6IGluZHVzdHJpYWwgdmFjYW5jeSA1LjYlLCBvZmZpY2UgMjIuMSUsIHJldGFpbCBjYXAgcmF0ZSA4LjMlLCBhcGFydG1lbnTigKYiXSxbIi9sb3Vpc3ZpbGxlLWRvd24tcGF5bWVudC1hc3Npc3RhbmNlLXNjcmVlbmVyIiwiTG91aXN2aWxsZSBEb3duIFBheW1lbnQgQXNzaXN0YW5jZSBTY3JlZW5lcjogRG8gWW91IFF1YWxpZnk/ICgyMDI2KSIsInRvb2wiLCJTZWUgaWYgeW91IHF1YWxpZnkgZm9yIExvdWlzdmlsbGUgTWV0cm8gZG93biBwYXltZW50IGFzc2lzdGFuY2Ugb3IgS2VudHVja3kgSG91c2luZydzIERBUC4gRnJlZSBzY3JlZW5lciB3aXRoIHJlYWwgMjAyNuKApiJdLFsiL2xvdWlzdmlsbGUtZmxvb2Qtem9uZXMtd2hhdC1ob21lLWJ1eWVycy1uZWVkLXRvLWtub3ciLCJMb3Vpc3ZpbGxlIEZsb29kIFpvbmVzOiBXaGF0IEhvbWUgQnV5ZXJzIE5lZWQgdG8gS25vdyIsImJ1eSIsIkhvdyB0byBjaGVjayBMb3Vpc3ZpbGxlIGZsb29kIHpvbmVzIGJlZm9yZSB5b3Ugb2ZmZXI6IE1TRCBkZXRlcm1pbmF0aW9uLCBMT0pJQyBsYXllcnMsIEZFTUEgbWFwcywgaW5zdXJhbmNlIGNvc3RzIGFuZCB0aGXigKYiXSxbIi9sb3Vpc3ZpbGxlLWhvdXNpbmctbWFya2V0LXJlcG9ydCIsIkxvdWlzdmlsbGUgSG91c2luZyBNYXJrZXQgUmVwb3J0ICh1cGRhdGVkIG1vbnRobHkpIiwicmVwb3J0IiwiTG91aXN2aWxsZSBob21lIHByaWNlcyAmIGludmVudG9yeSBmb3IgQXVndXN0IDIwMjY6IG1lZGlhbiAkMjgwLDAwMCwgMiwzNjIgaG9tZXMgZm9yIHNhbGUgKCszMiUgWW9ZKSwgMjggZGF5cyBvbiBtYXJrZXQu4oCmIl0sWyIvbG91aXN2aWxsZS1pbmR1c3RyaWFsLXdhcmVob3VzZS1pbnZlc3RtZW50LXByb3BlcnRpZXMiLCJMb3Vpc3ZpbGxlIEluZHVzdHJpYWwgJiBXYXJlaG91c2UgSW52ZXN0bWVudCBQcm9wZXJ0aWVzIiwiY29tbSIsIkJ1eSBvciBzZWxsIGluZHVzdHJpYWwgYW5kIHdhcmVob3VzZSBpbnZlc3RtZW50IHByb3BlcnR5IGluIExvdWlzdmlsbGUsIEtZIOKAlCBhIGxvZ2lzdGljcy1kcml2ZW4gbWFya2V0IHdpdGggNC41JSB2YWNhbmN54oCmIl0sWyIvbG91aXN2aWxsZS1pbmR1c3RyaWFsLWNvcnJpZG9ycyIsIkxvdWlzdmlsbGUgSW5kdXN0cmlhbCBDb3JyaWRvcnM6IFdoZXJlIHRvIEJ1eSwgU2VsbCwgb3IgTGVhc2UgV2FyZWhvdXNlIFNwYWNlIiwiY29tbSIsIkNvbXBhcmUgTG91aXN2aWxsZSBpbmR1c3RyaWFsIGNvcnJpZG9yczogQnVsbGl0dCBDb3VudHkvSS02NSwgdGhlIEFpcnBvcnQsIEplZmZlcnNvbnRvd24sIFNoZWxieSBDb3VudHksIGFuZCBSaXZlciBSaWRnZS7igKYiXSxbIi9sb3Vpc3ZpbGxlLWxhbmQtZGV2ZWxvcG1lbnQtcHJvcGVydGllcyIsIkxvdWlzdmlsbGUgTGFuZCAmIERldmVsb3BtZW50IFByb3BlcnRpZXMiLCJjb21tIiwiQnV5IG9yIHNlbGwgbGFuZCBmb3IgY29tbWVyY2lhbCBhbmQgcmVzaWRlbnRpYWwgZGV2ZWxvcG1lbnQgaW4gTG91aXN2aWxsZSwgS1kgYW5kIFNvdXRoZXJuIEluZGlhbmEg4oCUIGZyb23igKYiXSxbIi9sb3Vpc3ZpbGxlLW11bHRpZmFtaWx5LWludmVzdG1lbnQtcHJvcGVydGllcyIsIkxvdWlzdmlsbGUgTXVsdGlmYW1pbHkgSW52ZXN0bWVudCBQcm9wZXJ0aWVzIiwiY29tbSIsIkJ1eSwgc2VsbCwgb3IgdmFsdWUtYWRkIHJlcG9zaXRpb24gbXVsdGlmYW1pbHkgaW52ZXN0bWVudCBwcm9wZXJ0eSBpbiBMb3Vpc3ZpbGxlLCBLWS4gQ3VycmVudCByZW50LCBvY2N1cGFuY3ksIGFuZOKApiJdLFsiL2xvdWlzdmlsbGUtbmVpZ2hib3Job29kLW1hdGNoZXIiLCJMb3Vpc3ZpbGxlIE5laWdoYm9yaG9vZCBNYXRjaGVyOiBGaW5kIFlvdXIgQmVzdC1GaXQgQXJlYSAoMjAyNikiLCJ0b29sIiwiQW5zd2VyIGEgZmV3IHF1ZXN0aW9ucyBhbmQgbWF0Y2ggeW91ciBidWRnZXQsIHdhbGthYmlsaXR5IHByZWZlcmVuY2UsIGFuZCBnb2FscyB0byAxNCByZWFsIExvdWlzdmlsbGUgbmVpZ2hib3Job29kcyDigJQgZm9y4oCmIl0sWyIvbG91aXN2aWxsZS1uZWlnaGJvcmhvb2RzIiwiTG91aXN2aWxsZSBOZWlnaGJvcmhvb2RzOiBUaGUgQ29tcGxldGUgR3VpZGUiLCJob29kIiwiQnJvd3NlIGV2ZXJ5IExvdWlzdmlsbGUgbmVpZ2hib3Job29kIGFuZCBhcmVhIGd1aWRlIG9uIFdpbm5lciBSZWFsdHkncyBzaXRlLCBvcmdhbml6ZWQgYnkgcGFydCBvZiB0b3duIOKAlCBDZW50cmFsLCBFYXN04oCmIl0sWyIvbG91aXN2aWxsZS1vZmZpY2UtY29ycmlkb3JzIiwiTG91aXN2aWxsZSBPZmZpY2UgQ29ycmlkb3JzOiBIdXJzdGJvdXJuZSwgU3QuIE1hdHRoZXdzLCBEb3dudG93biBhbmQgTW9yZSIsImNvbW0iLCJMb3Vpc3ZpbGxlIG9mZmljZSBieSBjb3JyaWRvcjogSHVyc3Rib3VybmUvRWFzdHBvaW50LCBTdC4gTWF0dGhld3MsIE5vcnRoZWFzdCwgUGxhaW52aWV3LCBTb3V0aGVhc3QgYW5kIGRvd250b3duLiBRMiAyMDI24oCmIl0sWyIvbG91aXN2aWxsZS1vZmZpY2UtaW52ZXN0bWVudC1wcm9wZXJ0aWVzIiwiTG91aXN2aWxsZSBPZmZpY2UgSW52ZXN0bWVudCBQcm9wZXJ0aWVzIiwiY29tbSIsIkJ1eSwgc2VsbCwgb3IgbGVhc2Ugb2ZmaWNlIHByb3BlcnR5IGluIExvdWlzdmlsbGUsIEtZIOKAlCBhIG1hcmtldCByZXByaWNpbmcgYXJvdW5kIGZsaWdodC10by1xdWFsaXR5IHdpdGggMjIuOCUgdmFjYW5jeeKApiJdLFsiL2xvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGVzIiwiQWxsIExvdWlzdmlsbGUgcmVhbCBlc3RhdGUgZ3VpZGVzIiwiZ3VpZGVzIiwiRXZlcnkgV2lubmVyIFJlYWx0eSBndWlkZSBpbiBvbmUgcGxhY2U6IGJ1eWluZywgc2VsbGluZywgaW52ZXN0aW5nLCBjb21tZXJjaWFsLCByZWxvY2F0aW5nLCBuZWlnaGJvcmhvb2RzLCBsYW5kLCBhbmQgbW9yZeKApiJdLFsiL2xvdWlzdmlsbGUtcmV0YWlsLWNvcnJpZG9ycyIsIkxvdWlzdmlsbGUgUmV0YWlsIENvcnJpZG9yczogV2hlcmUgUmV0YWlsIFJlYWwgRXN0YXRlIElzIExlYXNpbmcgYW5kIFRyYWRpbmcgKDIwMjYpIiwiY29tbSIsIkxvdWlzdmlsbGUgcmV0YWlsIGNvcnJpZG9yczogU2hlbGJ5dmlsbGUgUm9hZCwgTWlkZGxldG93biwgQmFyZHN0b3duIFJvYWQsIE91dGVyIExvb3AsIERpeGllIEhpZ2h3YXksIE51THUgYW5kIFNvdXRoZXJu4oCmIl0sWyIvbG91aXN2aWxsZS1yZXRhaWwtaW52ZXN0bWVudC1wcm9wZXJ0aWVzIiwiTG91aXN2aWxsZSBSZXRhaWwgSW52ZXN0bWVudCBQcm9wZXJ0aWVzIiwiY29tbSIsIkJ1eSwgc2VsbCwgb3IgbGVhc2UgcmV0YWlsIHByb3BlcnR5IGluIExvdWlzdmlsbGUsIEtZIOKAlCBhYm91dCAzLjElIHZhY2FuY3ksIHJlbnRzIHVwIDUuOSUgeWVhciBvdmVyIHllYXIsIGFuZCBh4oCmIl0sWyIvbG91aXN2aWxsZS1zaG9ydC10ZXJtLXJlbnRhbC1ndWlkZSIsIkxvdWlzdmlsbGUgU2hvcnQtVGVybSBSZW50YWwgUmVndWxhdGlvbnM6IFRoZSBDb21wbGV0ZSAyMDI2IEd1aWRlIGZvciBBaXJibmIgSW52ZXN0b3JzIiwic3RyIiwiUGVybWl0cywgdGF4ZXMsIHpvbmluZywgc2FmZXR5IGFuZCBpbnN1cmFuY2UgcmVxdWlyZW1lbnRzLCBhbmQgbmVpZ2hib3Job29kLWJ5LW5laWdoYm9yaG9vZCBBaXJibmIgZGF0YSBmb3IgTG91aXN2aWxsZeKApiJdLFsiL2xvdWlzdmlsbGUtc2hvcnQtdGVybS1yZW50YWwtcnVsZXMtY2hlY2tlciIsIkxvdWlzdmlsbGUgU2hvcnQtVGVybSBSZW50YWwgUnVsZXMgQ2hlY2tlcjogRG8gWW91IE5lZWQgYSBQZXJtaXQ/ICgyMDI2KSIsInRvb2wiLCJXaGljaCBMb3Vpc3ZpbGxlIE1ldHJvIEFpcmJuYiBwZXJtaXQgZG8geW91IG5lZWQ/IENvbXBhcmUgcmVnaXN0cmF0aW9uIHZzLiBhIENvbmRpdGlvbmFsIFVzZSBQZXJtaXQsIHdpdGggcmVhbCAyMDI2IGZlZXPigKYiXSxbIi9sb3Vpc3ZpbGxlLXN1YnVyYi1tYXRjaC1xdWl6IiwiTG91aXN2aWxsZSBTdWJ1cmIgTWF0Y2ggUXVpeiIsInRvb2wiLCJBbnN3ZXIgYSBmZXcgcXVpY2sgbGlmZXN0eWxlIHF1ZXN0aW9ucyBhbmQgc2VlIGhvdyBldmVyeSBMb3Vpc3ZpbGxlLWFyZWEgY29tbXVuaXR5IG1hdGNoZXMgeW91ciBjb21tdXRlLCBzZXR0aW5nLCBidWRnZXQs4oCmIl0sWyIvbG91aXN2aWxsZS12cy1uYXNodmlsbGUtcmVhbC1lc3RhdGUiLCJMb3Vpc3ZpbGxlIHZzIE5hc2h2aWxsZSBSZWFsIEVzdGF0ZTogSGFsZiB0aGUgUHJpY2UiLCJpbnZlc3QiLCJMb3Vpc3ZpbGxlIHZzIE5hc2h2aWxsZSByZWFsIGVzdGF0ZSwgY29tcGFyZWQgd2l0aCAyMDI2IGRhdGE6ICQyNzksODE1IHZzICQ0NzUsNTM4IG1lZGlhbiBwcmljZSwgMzcgdnMgNjQgZGF5cyBvbiBtYXJrZXQs4oCmIl0sWyIvbG91aXN2aWxsZS12cy1sZXhpbmd0b24tY29tbWVyY2lhbC1yZWFsLWVzdGF0ZSIsIkxvdWlzdmlsbGUgdnMuIExleGluZ3RvbiBDb21tZXJjaWFsIFJlYWwgRXN0YXRlOiAyMDI2IENvbXBhcmlzb24iLCJjb21tIiwiTG91aXN2aWxsZSB2cy4gTGV4aW5ndG9uOiBpbmR1c3RyaWFsLCBvZmZpY2UsIGFuZCByZXRhaWwgdmFjYW5jeSwgcmVudHMsIGNhcCByYXRlcywgam9icywgYW5kIHBvcHVsYXRpb24sIHNpZGUgYnkgc2lkZeKApiJdLFsiL3doeS1pbnZlc3QtaW4tbG91aXN2aWxsZS1yZWFsLWVzdGF0ZSIsIkxvdWlzdmlsbGUgdnMuIE5hc2h2aWxsZSwgSW5kaWFuYXBvbGlzLCBDaW5jaW5uYXRpICYgTGV4aW5ndG9uOiBXaGVyZSBTbWFydCBSZWFsIEVzdGF0ZSBNb25leSBJcyBBY3R1YWxseSBHb2luZyBpbiAyMDI2IiwiaW52ZXN0IiwiU2VlIHdoeSBMb3Vpc3ZpbGxlIEtZIGJlYXRzIE5hc2h2aWxsZSwgSW5kaWFuYXBvbGlzLCBDaW5jaW5uYXRpLCBhbmQgTGV4aW5ndG9uIGZvciByZWFsIGVzdGF0ZSBpbnZlc3RvcnMgaW4gMjAyNiDigJQgdGhl4oCmIl0sWyIvbG91aXN2aWxsZS0zMC1kYXktcnVsZS1zaG9ydC10ZXJtLXJlbnRhbC1sYXciLCJMb3Vpc3ZpbGxlJ3MgMzAtRGF5IFJ1bGU6IEhvdyBNaWR0ZXJtIFJlbnRhbHMgU2lkZXN0ZXAgdGhlIFNob3J0LVRlcm0gUmVudGFsIEZpZ2h0Iiwic3RyIiwiSG93IExvdWlzdmlsbGUgTWV0cm8ncyBzaG9ydC10ZXJtIHJlbnRhbCBvcmRpbmFuY2Ugd29ya3MsIHdoeSB0aGUgMzAtZGF5IGxpbmUgbWF0dGVycywgYW5kIGhvdyBtaWR0ZXJtIHJlbnRhbHMgZmFsbOKApiJdLFsiL2NvbmdvbGVzZS1jb21tdW5pdHktZ3Jvd3RoLXJlYWwtZXN0YXRlLWxvdWlzdmlsbGUiLCJMb3Vpc3ZpbGxlJ3MgQ29uZ29sZXNlIENvbW11bml0eSBJcyBHcm93aW5nIEZhc3Qg4oCUIFdoYXQgSXQgTWVhbnMgZm9yIFJlYWwgRXN0YXRlIiwibG9jYWwiLCJMb3Vpc3ZpbGxlJ3MgQ29uZ29sZXNlIGNvbW11bml0eSBpcyBvbmUgb2YgdGhlIGZhc3Rlc3QtZ3Jvd2luZyBpbiB0aGUgY291bnRyeS4gU2VlIHRoZSByZXNldHRsZW1lbnQgbnVtYmVycywgbmF0aW9uYWzigKYiXSxbIi9oaXNwYW5pYy1jb21tdW5pdHktZ3Jvd3RoLXJlYWwtZXN0YXRlLWxvdWlzdmlsbGUiLCJMb3Vpc3ZpbGxlJ3MgSGlzcGFuaWMgQ29tbXVuaXR5IElzIEdyb3dpbmcgRmFzdCDigJQgSGVyZSdzIFdoYXQgSXQgTWVhbnMgZm9yIFJlYWwgRXN0YXRlIiwibG9jYWwiLCJMb3Vpc3ZpbGxlJ3MgSGlzcGFuaWMgcG9wdWxhdGlvbiBoYXMgbmVhcmx5IHRyaXBsZWQgc2luY2UgMjAxMC4gU2VlIHRoZSBob21lb3duZXJzaGlwLCBidXNpbmVzcywgYW5kIHJlYWwgZXN0YXRlIHN0YXRz4oCmIl0sWyIvbG91aXN2aWxsZS1pbW1pZ3JhbnQtcG9wdWxhdGlvbi1ncm93dGgtcmVhbC1lc3RhdGUiLCJMb3Vpc3ZpbGxlJ3MgSW1taWdyYW50IFBvcHVsYXRpb24gSXMgR3Jvd2luZyBGYXN0ZXIgVGhhbiBBbG1vc3QgQW55d2hlcmUgRWxzZSIsImxvY2FsIiwiTG91aXN2aWxsZSdzIGZvcmVpZ24tYm9ybiBwb3B1bGF0aW9uIGlzIGdyb3dpbmcgZmFzdGVyIHRoYW4gYWxtb3N0IGFueSBsYXJnZSBVLlMuIGNpdHkuIFNlZSB0aGUgc3RhdHMgYW5kIHdoYXQgaXQgbWVhbnPigKYiXSxbIi9sb3Vpc3ZpbGxlcy1pbmRlcGVuZGVudC1yZXN0YXVyYW50LXNjZW5lLXRoZS1uYXRpb25hbC1yZWNvZ25pdGlvbi1hbmQtdGhlLW5laWdoYm9yaG9vZHMtd2hlcmUteW91LWNhbi13YWxrLXRvLWl0LTg1Mjk2MSIsIkxvdWlzdmlsbGUncyBJbmRlcGVuZGVudCBSZXN0YXVyYW50IFNjZW5lOiBUaGUgTmF0aW9uYWwgUmVjb2duaXRpb24sIGFuZCB0aGUgTmVpZ2hib3Job29kcyBXaGVyZSBZb3UgQ2FuIFdhbGsgdG8gSXQiLCJsb2NhbCIsIkEgTllUIFRvcCA1MCBwaWNrLCBhIEphbWVzIEJlYXJkIGZpbmFsaXN0LCBhbmQgQmVhcmQgc2VtaWZpbmFsaXN0cyB0aHJlZSB5ZWFycyBydW5uaW5nOiB0aGUgTG91aXN2aWxsZSBuZWlnaGJvcmhvb2Rz4oCmIl0sWyIvbG91aXN2aWxsZXMtdmljdG9yaWFuLWhvbWVzLXdoeS1vbGQtbG91aXN2aWxsZS1zdGFuZHMtb3V0LW5hdGlvbmFsbHktYW5kLWhvdy10by1idXktb25lLTg1Mjk2MCIsIkxvdWlzdmlsbGUncyBWaWN0b3JpYW4gSG9tZXM6IFdoeSBPbGQgTG91aXN2aWxsZSBTdGFuZHMgT3V0IE5hdGlvbmFsbHksIGFuZCBIb3cgdG8gQnV5IE9uZSIsImxvY2FsIiwiUGxhbm5lcnMgY2FsbCBPbGQgTG91aXN2aWxsZSB0aGUgbGFyZ2VzdCBjb2xsZWN0aW9uIG9mIFZpY3RvcmlhbiBtYW5zaW9ucyBpbiB0aGUgVS5TLiBXaGVyZSBMb3Vpc3ZpbGxlJ3MgVmljdG9yaWFucyBhcmXigKYiXSxbIi9sb3Vpc3ZpbGxlLW11bHRpZmFtaWx5LWJyb2tlciIsIkxvdWlzdmlsbGUsIExleGluZ3RvbiAmIFNvdXRoZXJuIEluZGlhbmEgTXVsdGlmYW1pbHkgUmVhbCBFc3RhdGUgQnJva2VyIiwiY29tbSIsIlNlbGxpbmcgYSBtdWx0aWZhbWlseSBwcm9wZXJ0eSwgc2NhbGluZyB3aXRoIGEgMTAzMSBleGNoYW5nZSwgb3Igc291cmNpbmcgZGVhbHMgYXMgYSBzeW5kaWNhdG9yPyBXaW5uZXIgUmVhbHR5IGxpc3RzIGFuZOKApiJdLFsiL2x5bmRvbi1ncmF5bW9vci1kZXZvbmRhbGUta3ktcmVhbC1lc3RhdGUtZ3VpZGUiLCJMeW5kb24gYW5kIEdyYXltb29yLURldm9uZGFsZSwgS1kgUmVhbCBFc3RhdGUgR3VpZGUiLCJob29kIiwiQ29uc2lkZXJpbmcgTHluZG9uIG9yIEdyYXltb29yLURldm9uZGFsZSwgS2VudHVja3k/IFdpbm5lciBSZWFsdHkgY292ZXJzIGhvbWUgcHJpY2VzLCBsb2NhdGlvbiwgYW5kIGxpZmVzdHlsZSBpbiB0aGVzZeKApiJdLFsiL21hZGlzb24tbWVyZWRpdGgiLCJNYWRpc29uIE1lcmVkaXRoIiwidGVhbSIsIktlbnR1Y2t5IG5hdGl2ZSBhbmQgaW52ZXN0b3ItYWdlbnQgd2hvIHNlbGYtbWFuYWdlcyBhIDIwMCsgZG9vciBwb3J0Zm9saW8gc3Bhbm5pbmcgaW5kdXN0cmlhbCwgbXVsdGlmYW1pbHksIEFpcmJuYiwgYW5k4oCmIl0sWyIvbWVldC1yb2ItYmVyZ2Vyb24iLCJNZWV0IFJvYiBCZXJnZXJvbiIsImFib3V0IiwiUm9iIEJlcmdlcm9uLCBPd25lci1SZWFsdG9yIGF0IFdpbm5lciBSZWFsdHkgaW4gTG91aXN2aWxsZSwgS1kg4oCUIDEzIHllYXJzIG9mIGV4cGVyaWVuY2UsIGFuZCBob3cgdG8gYnV5IG9yIHNlbGwgd2l0aCBoaW0uIl0sWyIvc2NoZWR1bGluZyIsIkJvb2sgYSBjYWxsIG9yIG1lZXRpbmcgd2l0aCBXaW5uZXIgUmVhbHR5IiwiY29udGFjdCIsIlRvIHNjaGVkdWxlIGFuIGFwcG9pbnRtZW50LCBwaWNrIGEgdGltZSB0aGF0IHdvcmtzIGZvciB5b3UgYW5kIHNoYXJlIHlvdXIgY29udGFjdCBpbmZvcm1hdGlvbi4gQWZ0ZXIgeW91IHN1Ym1pdCB0aGUgZm9ybSzigKYiXSxbIi9taWRkbGV0b3duLWt5LXJlYWwtZXN0YXRlLWd1aWRlIiwiTWlkZGxldG93biwgS1kgUmVhbCBFc3RhdGUgR3VpZGUgKDQwMjQzKSIsImhvb2QiLCJIb21lcyBpbiBNaWRkbGV0b3duLCBLZW50dWNreSAoNDAyNDMpOiBTaGVsYnl2aWxsZSBSb2FkIGNvcnJpZG9yLCBuZXdlciBzdWJkaXZpc2lvbnMgdnMuIHRoZSBvbGRlciBjb3JlLCBIT0EgcGF0dGVybnMs4oCmIl0sWyIvbWlkdGVybS1yZW50YWwtdnMtbG9uZy10ZXJtLWxlYXNlLWxvdWlzdmlsbGUtcm9pIiwiTWlkdGVybSBSZW50YWwgdnMuIExvbmctVGVybSBMZWFzZTogQSBMb3Vpc3ZpbGxlIFJPSSBDb21wYXJpc29uIiwic3RyIiwiQSByZWFsLW51bWJlcnMgY29tcGFyaXNvbiBvZiBtaWR0ZXJtIGZ1cm5pc2hlZCByZW50YWwgaW5jb21lIHZzLiBhIHN0YW5kYXJkIGxvbmctdGVybSBsZWFzZSBpbiBMb3Vpc3ZpbGxlLCBwbHVzIGEgd29ya2Vk4oCmIl0sWyIvbWlkdGVybS1yZW50YWxzLWxvdWlzdmlsbGUtZ3VpZGUiLCJNaWR0ZXJtIFJlbnRhbHMgaW4gTG91aXN2aWxsZSwgS1k6IFRoZSBDb21wbGV0ZSBHdWlkZSIsInN0ciIsIkV2ZXJ5dGhpbmcgcmVudGVycywgb3duZXJzLCBhbmQgaW52ZXN0b3JzIG5lZWQgdG8ga25vdyBhYm91dCBtaWR0ZXJtICgzMC1kYXkgdG8gMTItbW9udGgpIGZ1cm5pc2hlZCByZW50YWxzIGlu4oCmIl0sWyIvbWlsaXRhcnktcmVsb2NhdGlvbi1sb3Vpc3ZpbGxlLWZvcnQta25veCIsIk1pbGl0YXJ5IFJlbG9jYXRpb24gdG8gRm9ydCBLbm94IGFuZCBMb3Vpc3ZpbGxlOiBQQ1MgQnV5aW5nIEd1aWRlIiwicmVsb2MiLCJQQ1NpbmcgdG8gRm9ydCBLbm94PyBDb21tdXRlcyBmcm9tIFJhZGNsaWZmLCBFLXRvd24sIFNoZXBoZXJkc3ZpbGxlIGFuZCBMb3Vpc3ZpbGxlLCBWQSBsb2FuIGFuZCBmdW5kaW5nIGZlZSBmYWN0cywgQkFI4oCmIl0sWyIvbW9ja2luZ2JpcmQtdmFsbGV5LWt5LXJlYWwtZXN0YXRlLWd1aWRlIiwiTW9ja2luZ2JpcmQgVmFsbGV5LCBLWSBSZWFsIEVzdGF0ZSBHdWlkZSB8IE9uZSBvZiBLZW50dWNreSdzIFNtYWxsZXN0LCBNb3N0IFByaXZhdGUgQ2l0aWVzIiwiaG9vZCIsIk1vY2tpbmdiaXJkIFZhbGxleSwgS1kgKDQwMjA3KTogb25lIG9mIEtlbnR1Y2t5J3Mgc21hbGxlc3QgaW5jb3Jwb3JhdGVkIGNpdGllcywgUml2ZXIgUm9hZCBjb3JyaWRvciBob21lcyBuZWFyIEluZGlhbuKApiJdLFsiL21vbnRobHktbW9ydGdhZ2UtcGF5bWVudC1jYWxjdWxhdG9yLWtlbnR1Y2t5IiwiTW9udGhseSBNb3J0Z2FnZSBQYXltZW50IENhbGN1bGF0b3IiLCJ0b29sIiwiRnJlZSBLZW50dWNreSBhbmQgTG91aXN2aWxsZSBtb3J0Z2FnZSBjYWxjdWxhdG9yOiBwcmluY2lwYWwsIGludGVyZXN0LCBwcm9wZXJ0eSB0YXhlcywgaW5zdXJhbmNlLCBQTUkgYW5kIEhPQSBpbiBvbmXigKYiXSxbIi9ub3J0aC1vbGRoYW0tdnMtc291dGgtb2xkaGFtLWNvdW50eS1ndWlkZSIsIk1vdmluZyB0byBPbGRoYW0gQ291bnR5OiBOb3J0aCBPbGRoYW0gdnMuIFNvdXRoIE9sZGhhbSBmb3IgQWNyZWFnZSBhbmQgRXN0YXRlIEJ1eWVycyIsImxhbmQiLCJJLTcxIHNwbGl0cyBPbGRoYW0gQ291bnR5IGluIHR3by4gSG9zcGl0YWwgY29tbXV0ZXMsIGxhbmQgcHJpY2VzIHBlciBhY3JlLCBzY2hvb2wgYXNzaWdubWVudCwgem9uaW5nLCBzZXB0aWMgYW5kIHRheGVz4oCmIl0sWyIvbW92aW5nLXRvLXNvdXRoZXJuLWluZGlhbmEiLCJNb3ZpbmcgdG8gU291dGhlcm4gSW5kaWFuYTogVGhlIDIwMjYgR3VpZGUgdG8gSmVmZmVyc29udmlsbGUsIE5ldyBBbGJhbnksIENsYXJrc3ZpbGxlIGFuZCBCZXlvbmQiLCJyZWxvYyIsIlJlbG9jYXRpbmcgdG8gU291dGhlcm4gSW5kaWFuYT8gSmVmZmVyc29udmlsbGUsIE5ldyBBbGJhbnksIENsYXJrc3ZpbGxlOiB0YXhlcyB2cy4gTG91aXN2aWxsZSwgYnJpZGdlcyBhbmQgdG9sbHMsIHRvd25zLOKApiJdLFsiL3RlbmFudC1wbGFjZW1lbnQtc2VydmljZXMtaW4tbG91aXN2aWxsZSIsIk5lZWQgdG8gRmlsbCBhIFZhY2FuY3k/IFdpbm5lciBSZWFsdHkncyBUZW5hbnQgUGxhY2VtZW50IFNlcnZpY2UiLCJyZW50IiwiSGF2ZSBhIHZhY2FuY3kgdG8gZmlsbD8gV2lubmVyIFJlYWx0eSBwbGFjZXMgcXVhbGlmaWVkLCBzY3JlZW5lZCB0ZW5hbnRzIGluIHNpbmdsZS1mYW1pbHksIG11bHRpZmFtaWx5LCBhbmQgY29tbWVyY2lhbOKApiJdLFsiL25ldy1hbGJhbnktamVmZmVyc29udmlsbGUtaW5kaWFuYS1yZWFsLWVzdGF0ZS1ndWlkZSIsIk5ldyBBbGJhbnkgJiBKZWZmZXJzb252aWxsZSwgSW5kaWFuYSBSZWFsIEVzdGF0ZSBHdWlkZSIsImhvb2QiLCJCdXlpbmcgaW4gTmV3IEFsYmFueSBvciBKZWZmZXJzb252aWxsZSwgSW5kaWFuYSBmcm9tIExvdWlzdmlsbGU6IHRoZSAxJSBob21lc3RlYWQgdGF4IGNhcCwgUml2ZXJMaW5rIHRvbGxzLCBoaXN0b3JpY+KApiJdLFsiL25ld2J1cmctYnVlY2hlbC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIiwiTmV3YnVyZyBhbmQgQnVlY2hlbCwgS1kgUmVhbCBFc3RhdGUgR3VpZGUiLCJob29kIiwiSG9tZXMgZm9yIHNhbGUgaW4gTmV3YnVyZyBhbmQgQnVlY2hlbCwgc291dGhlYXN0IExvdWlzdmlsbGUuIExvY2FsIG1hcmtldCBpbnNpZ2h0IGZyb20gV2lubmVyIFJlYWx0eSBvbiB0d28gb2YgSmVmZmVyc29u4oCmIl0sWyIvbm9ydG9uLWNvbW1vbnMtcmVhbC1lc3RhdGUtZ3VpZGUiLCJOb3J0b24gQ29tbW9ucyBSZWFsIEVzdGF0ZSBHdWlkZTogUHJpY2VzLCBIT0EsIE5ldyB2cyBSZXNhbGUiLCJob29kIiwiTm9ydG9uIENvbW1vbnMgKFByb3NwZWN0IDQwMDU5KSBwcmljZXMsIE5vcnRoIGFuZCBTb3V0aCBWaWxsYWdlIGhvdXNpbmcsIEhPQSBhbmQgYXJjaGl0ZWN0dXJhbCByZXZpZXcsIG5ldyBjb25zdHJ1Y3Rpb27igKYiXSxbIi9ub3J3b29kLW5vcnRoZmllbGQta3ktcmVhbC1lc3RhdGUtZ3VpZGUiLCJOb3J3b29kIGFuZCBOb3J0aGZpZWxkLCBLWSBSZWFsIEVzdGF0ZSBHdWlkZSIsImhvb2QiLCJIb21lcyBmb3Igc2FsZSBpbiBOb3J3b29kIGFuZCBOb3J0aGZpZWxkLCBLZW50dWNreS4gTUxTLXNvdXJjZWQgcHJpY2luZyBhbmQgbG9jYWwgaW5zaWdodCBvbiB0aGVzZSBFYXN0IEVuZCBKZWZmZXJzb27igKYiXSxbIi9ub3ZhdGlvbi1hZ3JlZW1lbnQtcmVhbC1lc3RhdGUta2VudHVja3kiLCJOb3ZhdGlvbiBBZ3JlZW1lbnRzIGluIFJlYWwgRXN0YXRlOiBIb3cgVGhleSBXb3JrLCBhbmQgV2hlcmUgVGhleSBEb24ndCIsImNyZWF0aXZlIiwiSG93IGEgbm92YXRpb24gbGV0cyB5b3UgcmVub3ZhdGUgYW5kIHNlbGwgYSBob3VzZSB5b3UgbmV2ZXIgYnV5LCB3aGVuIGl0IGJlYXRzIGFuIGFzc2lnbm1lbnQsIGFuZCB3aHkgdGhlIHNob3J0LXNhbGXigKYiXSxbIi9udWx1LWJ1dGNoZXJ0b3duLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiLCJOdUx1ICYgQnV0Y2hlcnRvd24gTG91aXN2aWxsZSBSZWFsIEVzdGF0ZSBHdWlkZSAoNDAyMDIgLyA0MDIwNikiLCJob29kIiwiTG9mdHMsIGNvbmRvcyBhbmQgc2hvdGd1biBob3VzZXMgaW4gTnVMdSBhbmQgQnV0Y2hlcnRvd24sIExvdWlzdmlsbGUgS1k6IHByaWNlcywgcHJlc2VydmF0aW9uIGRpc3RyaWN0IHJ1bGVzLCBmbG9vZOKApiJdLFsiL29mZmljZS1idWlsZGluZy1sb2FuLW1hdHVyaXR5LW9wdGlvbnMtbG91aXN2aWxsZSIsIk9mZmljZSBCdWlsZGluZyBMb2FuIENvbWluZyBEdWUgaW4gTG91aXN2aWxsZT8gWW91ciBPcHRpb25zIEJlZm9yZSBNYXR1cml0eSIsImNvbW0iLCJPZmZpY2UgYnVpbGRpbmcgbG9hbiBtYXR1cmluZyBhbmQgdGhlIG51bWJlcnMgZG9uJ3QgcmVmaW5hbmNlPyBFeHRlbnNpb25zLCByZWNhcGl0YWxpemF0aW9uLCBkaXNjb3VudGVkIHBheW9mZnMsIGFuZOKApiJdLFsiL29rb2xvbmEtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSIsIk9rb2xvbmEsIExvdWlzdmlsbGUgUmVhbCBFc3RhdGUgR3VpZGU6IFJhbmNoZXMsIFByaWNlcywgUmVudGFscyIsImhvb2QiLCJPa29sb25hICg0MDIxOSkgaG9tZSBwcmljZXMgZm9yIEF1Z3VzdCAyMDI2LCAxOTUwcy03MHMgYnJpY2sgcmFuY2ggaW5zcGVjdGlvbiBwb2ludHMsIFBvbmQgQ3JlZWsgZmxvb2QgZmFjdHMsIFVQU+KApiJdLFsiL29sZC1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIiwiT2xkIExvdWlzdmlsbGUgUmVhbCBFc3RhdGUgR3VpZGUgKDQwMjA4KSIsImhvb2QiLCJWaWN0b3JpYW4gaG9tZXMgYW5kIGNvbmRvcyBpbiBPbGQgTG91aXN2aWxsZSwgS1kgKDQwMjA4KTogcHJlc2VydmF0aW9uIGRpc3RyaWN0IHJ1bGVzLCBTdC4gSmFtZXMgQ291cnQsIGNvbmRv4oCmIl0sWyIvb2xkaGFtLWNvdW50eS1reS1yZWFsLWVzdGF0ZS1ndWlkZSIsIk9sZGhhbSBDb3VudHksIEtZIFJlYWwgRXN0YXRlIEd1aWRlIHwgTGEgR3JhbmdlLCBDcmVzdHdvb2QsIEdvc2hlbiAmIFByb3NwZWN0IiwiaG9vZCIsIkJ1eWluZyBvciBzZWxsaW5nIGluIE9sZGhhbSBDb3VudHksIEtlbnR1Y2t5PyBDdXJyZW50IGhvbWUgcHJpY2VzIGJ5IGNpdHksIHRvcC1yYXRlZCBPbGRoYW0gQ291bnR5IFNjaG9vbHMgZGF0YSwgY29tbXV0ZeKApiJdLFsiL29wcG9ydHVuaXR5LXpvbmVzLWxvdWlzdmlsbGUtaW52ZXN0b3JzLTIwMjYiLCJPcHBvcnR1bml0eSBab25lcyBmb3IgRXZlcnlkYXkgSW52ZXN0b3JzOiBMb3Vpc3ZpbGxlJ3MgT1ogTWFwIGFuZCBXaGF0IEFjdHVhbGx5IFF1YWxpZmllcyAoMjAyNikiLCJpbnZlc3QiLCJIb3cgT3Bwb3J0dW5pdHkgWm9uZSBpbnZlc3RpbmcgYWN0dWFsbHkgd29ya3MgZm9yIGluZGl2aWR1YWwgaW52ZXN0b3JzIGFmdGVyIHRoZSAyMDI3IE9CQkJBIG92ZXJoYXVsLCB3aGVyZSBMb3Vpc3ZpbGxlJ3PigKYiXSxbIi9vdXItc3RvcnkiLCJPdXIgU3RvcnkiLCJhYm91dCIsIldoeSBSb2IgQmVyZ2Vyb24gc3RhcnRlZCBXaW5uZXIgUmVhbHR5IGFmdGVyIHRoaXJ0ZWVuIHllYXJzIGFzIHRoZSByZWFsdG9yJ3MgcmVhbHRvciwgd2hvIHJ1bnMgaXQsIGhvdyBpdCBpcyBidWlsdCwgYW5k4oCmIl0sWyIvcmVtb3RlLWludmVzdG9yIiwiT3V0LW9mLXN0YXRlICYgaW50ZXJuYXRpb25hbCBpbnZlc3RvcnM6IHN0YXJ0IGhlcmUiLCJpbnZlc3QiLCJUZWxsIHVzIHdoZXJlIHlvdSdyZSBpbnZlc3RpbmcgZnJvbSwgd2hhdCB5b3Ugd2FudCB0byBvd24sIGFuZCBob3cgeW91J3JlIHBheWluZy4gV2UnbGwgYnVpbGQgeW91ciBidXkgYm94LCBzZW5kIHlvdeKApiJdLFsiL291dC1vZi1zdGF0ZS1pbnZlc3RvcnMtbG91aXN2aWxsZS1jb21tZXJjaWFsLXJlYWwtZXN0YXRlIiwiT3V0LW9mLVN0YXRlIGFuZCBMb25nLURpc3RhbmNlIEludmVzdG9yczogQnV5aW5nIENvbW1lcmNpYWwgUmVhbCBFc3RhdGUgaW4gTG91aXN2aWxsZSBGcm9tIEFueXdoZXJlIiwiY29tbSIsIkhvdyByZW1vdGUgYW5kIGludGVybmF0aW9uYWwgaW52ZXN0b3JzIGJ1eSBMb3Vpc3ZpbGxlIGNvbW1lcmNpYWwgcHJvcGVydHk6IGNhcCByYXRlIGdhcCwgcmVtb3RlIGNsb3NpbmdzLCBLWSBMTENzLOKApiJdLFsiL3Bld2VlLXZhbGxleS1reS1yZWFsLWVzdGF0ZS1ndWlkZSIsIlBld2VlIFZhbGxleSwgS1kgUmVhbCBFc3RhdGUgR3VpZGUgfCBPbGRoYW0gQ291bnR5J3MgU21hbGwtVG93biBIaXN0b3JpYyBEaXN0cmljdCIsImhvb2QiLCJQZXdlZSBWYWxsZXksIEtZICg0MDA1Nik6IGhpc3RvcmljIExpdHRsZSBDb2xvbmVsLWVyYSBob21lcywgT2xkaGFtIENvdW50eSBTY2hvb2xzLCBwcmljZXMsIGFuZCBob3cgaXQgY29tcGFyZXMgdG8gTGHigKYiXSxbIi9wb3BsYXItbGV2ZWwtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSIsIlBvcGxhciBMZXZlbCwgS1kgUmVhbCBFc3RhdGUgR3VpZGUiLCJob29kIiwiSG9tZXMgZm9yIHNhbGUgbmVhciBQb3BsYXIgTGV2ZWwgUm9hZCBpbiBzb3V0aCBMb3Vpc3ZpbGxlLiBMb2NhbCBtYXJrZXQgaW5zaWdodCBmcm9tIFdpbm5lciBSZWFsdHkgb24gdGhpcyBhZmZvcmRhYmxlLOKApiJdLFsiL3BvcnRsYW5kLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiLCJQb3J0bGFuZCwgTG91aXN2aWxsZSBLWSBSZWFsIEVzdGF0ZSBHdWlkZSB8IExvdWlzdmlsbGUncyBPcmlnaW5hbCBSaXZlciBUb3duIiwiaG9vZCIsIlBvcnRsYW5kLCBMb3Vpc3ZpbGxlICg0MDIxMik6IGhpc3RvcmljIHNob3RndW4gaG9tZXMsIHJlaGFiIGFuZCByZW50YWwgb3Bwb3J0dW5pdHksIGFuZCBhIGdyb3dpbmcgd2F0ZXJmcm9udC4gV2hhdCB0b+KApiJdLFsiL3Byb3NwZWN0LWt5LW5laWdoYm9yaG9vZC1ndWlkZSIsIlByb3NwZWN0LCBLWTogSG9tZSBQcmljZXMsIFdoYXQncyBTZWxsaW5nICgyMDI2IEd1aWRlKSIsImhvb2QiLCJQcm9zcGVjdCBLWSBob21lcyBmb3Igc2FsZTogYWJvdXQgJDc0MksgbWVkaWFuIHByaWNlLCA0NDUgc2FsZXMsIDQ1LWRheSBhdmVyYWdlIG1hcmtldCB0aW1lLiBTZWUgcHJpY2VzLCB3aGF0J3Mgc2VsbGluZyzigKYiXSxbIi9xdWl0Y2xhaW0tZGVlZC1rZW50dWNreSIsIlF1aXRjbGFpbSBEZWVkcyBpbiBLZW50dWNreTogQ2FuIFlvdSBTZWxsIGEgSG91c2UgV2l0aCBPbmU/Iiwic2VsbCIsIkdvdCB5b3VyIGhvdXNlIHRocm91Z2ggYSBxdWl0Y2xhaW0gZGVlZCwgb3IgdGhpbmtpbmcgb2YgdXNpbmcgb25lPyBXaGF0IGEgcXVpdGNsYWltIGRvZXMgaW4gS2VudHVja3ksIGl0cyByaXNrcywgYW5kIGhvd+KApiJdLFsiL3JhZG9uLWtlbnR1Y2t5LWhvbWVzLWxvdWlzdmlsbGUtYnV5ZXJzLXNlbGxlcnMiLCJSYWRvbiBpbiBLZW50dWNreSBIb21lczogV2hhdCBKZWZmZXJzb24gQ291bnR5IEJ1eWVycyBhbmQgU2VsbGVycyBTaG91bGQgS25vdyIsImJ1eSIsIklzIHJhZG9uIHRlc3RpbmcgcmVxdWlyZWQgdG8gc2VsbCBhIGhvbWUgaW4gS2VudHVja3k/IEplZmZlcnNvbiBDb3VudHkncyBFUEEgcmFkb24gem9uZSwgd2hhdCBhIHRlc3QgYW5kIG1pdGlnYXRpb27igKYiXSxbIi9yZWFsLWVzdGF0ZS1lbi1lc3Bhbm9sLWxvdWlzdmlsbGUiLCJSZWFsIEVzdGF0ZSBlbiBFc3Bhw7FvbCBjb24gV2lubmVyIFJlYWx0eSB8IExvdWlzdmlsbGUsIEtZIiwiZXMiLCJTZXJ2aWNpbyBjb21wbGV0byBlbiBlc3Bhw7FvbCBwYXJhIGNvbXByYXIsIHZlbmRlciBvIGludmVydGlyIGVuIGJpZW5lcyByYcOtY2VzIGVuIExvdWlzdmlsbGUsIEtlbnR1Y2t5LCBjb24gUm9iIEJlcmdlcm9u4oCmIl0sWyIvYmxvZyIsIkxhdGVzdCBwb3N0cyAoYmxvZykiLCJhYm91dCIsIkV4cGxvcmUgZXhwZXJ0IGluc2lnaHRzLCB0aXBzLCBhbmQgY29tbXVuaXR5IGltcGFjdCBzdG9yaWVzIGZyb20gV2lubmVyIFJlYWx0eSB0byBlbmhhbmNlIHlvdXIgcmVhbCBlc3RhdGUgam91cm5leS4iXSxbIi9yZWQtZmxhZ3MtdG8td2F0Y2gtZm9yLWluLWEtd2UtYnV5LWhvdXNlcy1jYXNoLW9mZmVyIiwiUmVkIEZsYWdzIHRvIFdhdGNoIGZvciBpbiBhIFwiV2UgQnV5IEhvdXNlc1wiIENhc2ggT2ZmZXIiLCJzZWxsIiwiTW9zdCBjYXNoLW9mZmVyIGxldHRlcnMgYXJlIGxlZ2l0aW1hdGUsIGJ1dCBhIGZldyB0YWN0aWNzIHNob3cgdXAgYWdhaW4gYW5kIGFnYWluIGluIHNjYW1zIHRhcmdldGluZyBkaXN0cmVzc2VkIHNlbGxlcnM64oCmIl0sWyIvcmVoYWItY29zdC1lc3RpbWF0b3IiLCJSZWhhYiBDb3N0IEVzdGltYXRvcjogTGluZS1JdGVtIFJlbm92YXRpb24gQnVkZ2V0ICgyMDI2KSIsInRvb2wiLCJFc3RpbWF0ZSB5b3VyIHJlbm92YXRpb24gYnVkZ2V0IGxpbmUgYnkgbGluZSB3aXRoIHJlYWwgMjAyNiBjb3N0IHJhbmdlcyBmb3Iga2l0Y2hlbnMsIGJhdGhyb29tcywgcm9vZnMsIEhWQUMsIGZsb29yaW5nLOKApiJdLFsiL3JlbG9jYXRpbmctdG8ta2VudHVja3kiLCJSZWxvY2F0aW5nIHRvIEtlbnR1Y2t5OiBUaGUgMjAyNiBHdWlkZSB0byBUYXhlcywgUmVnaW9ucywgQ29zdHMgYW5kIEJ1eWluZyBhIEhvbWUiLCJyZWxvYyIsIk1vdmluZyB0byBLZW50dWNreT8gVGhlIDMuNSUgZmxhdCB0YXgsIGxvY2FsIHdhZ2UgdGF4ZXMsIGhvbWUgcHJpY2VzLCBMb3Vpc3ZpbGxlIHZzLiBMZXhpbmd0b24gdnMuIE5vcnRoZXJuIEtlbnR1Y2t5LCBhbmTigKYiXSxbIi9yZWxvY2F0aW5nLXRvLWxvdWlzdmlsbGUtaG9zcGl0YWwtcG9zaXRpb24iLCJSZWxvY2F0aW5nIHRvIExvdWlzdmlsbGUgZm9yIGEgSG9zcGl0YWwgUG9zaXRpb246IEEgR3VpZGUgZm9yIERvY3RvcnMsIE51cnNlcywgYW5kIEhlYWx0aGNhcmUgUHJvZmVzc2lvbmFscyIsInJlbG9jIiwiTW92aW5nIHRvIExvdWlzdmlsbGUsIEtZIGZvciBhIGhvc3BpdGFsIG9yIGhlYWx0aCBzeXN0ZW0gcG9zaXRpb24/IEEgcHJhY3RpY2FsIGd1aWRlIHRvIG5laWdoYm9yaG9vZHMsIGNvbW11dGUgdGltZXMsIGFuZOKApiJdLFsiL3BoeXNpY2lhbi1yZWxvY2F0aW9uLWxvdWlzdmlsbGUtYWNyZWFnZS1ndWlkZSIsIlJlbG9jYXRpbmcgdG8gTG91aXN2aWxsZSBmb3IgYSBNZWRpY2FsIG9yIEV4ZWN1dGl2ZSBSb2xlOiBBY3JlYWdlLCBDb21tdXRlcyBhbmQgUGh5c2ljaWFuIExvYW5zIiwicmVsb2MiLCJEcml2ZSB0aW1lcyBmcm9tIE9sZGhhbSwgU2hlbGJ5LCBCdWxsaXR0IGFuZCBTcGVuY2VyIHRvIGV2ZXJ5IG1ham9yIExvdWlzdmlsbGUgbWVkaWNhbCBjYW1wdXMsIGhvdyBwaHlzaWNpYW4gbG9hbnMgdHJlYXTigKYiXSxbIi9yZWxvY2F0aW5nLXRvLWxvdWlzdmlsbGUiLCJSZWxvY2F0aW5nIHRvIExvdWlzdmlsbGUsIEtZOiBUaGUgQ29tcGxldGUgMjAyNiBHdWlkZSIsInJlbG9jIiwiTW92aW5nIHRvIExvdWlzdmlsbGU/IENvc3Qgb2YgbGl2aW5nLCBuZWlnaGJvcmhvb2RzLCB0aGUgZm9vZCBzY2VuZSwgcGFya3MsIGpvYnMsIHRheGVzIGFuZCBhIHJlbG9jYXRpb24gY2hlY2tsaXN0IGZyb20gYeKApiJdLFsiL3JlbG9jYXRpb24tY29zdC1jYWxjdWxhdG9yIiwiUmVsb2NhdGlvbiBDb3N0IENhbGN1bGF0b3IiLCJ0b29sIiwiRnJlZSByZWxvY2F0aW9uIGNvc3QgYW5kIG1vdmluZyBmZWVzIGNhbGN1bGF0b3IgZm9yIGEgbW92ZSB0byBMb3Vpc3ZpbGxlLCBLWTogbW92ZXJzLCB2ZWhpY2xlIHNoaXBwaW5nLCB0ZW1wb3JhcnkgaG91c2luZ+KApiJdLFsiL2xlYXNlLW9wdGlvbnMtcmVudC10by1vd24ta2VudHVja3kiLCJSZW50LXRvLU93biBhbmQgTGVhc2UgT3B0aW9ucyBpbiBLZW50dWNreSIsImJ1eSIsIlJlbnQgY3JlZGl0cyBvbmx5IGNvdW50IHRvd2FyZCBhIGRvd24gcGF5bWVudCBpZiB0aGV5IGV4Y2VlZCBtYXJrZXQgcmVudCDigJQgRmFubmllIE1hZSBhbmQgRkhBIGJvdGggc2F5IHNvLiBIZXJlJ3MgaG934oCmIl0sWyIvcm9iLWJlcmdlcm9uIiwiUm9iIEJlcmdlcm9uLCBPd25lcuKAk1JlYWx0b3IiLCJ0ZWFtIiwiT3duZXIgb2YgV2lubmVyIFJlYWx0eSwgbGljZW5zZWQgaW4gS2VudHVja3kgc2luY2UgMjAxMywga25vd24gYXMgdGhlIHJlYWx0b3IncyByZWFsdG9yLiJdLFsiL211bHRpZmFtaWx5LXNhbGVzLXRyYWNrLXJlY29yZC1sb3Vpc3ZpbGxlIiwiUm9iIEJlcmdlcm9uJ3MgQ29tbWVyY2lhbCBTYWxlcyBSZWNvcmQ6IDQ1IENsb3NpbmdzLCAxNDYgVW5pdHMiLCJjb21tIiwiRXZlcnkgY2xvc2VkIGNvbW1lcmNpYWwgc2FsZSB3aXRoIFJvYiBCZXJnZXJvbidzIG5hbWUgb24gaXQsIGZyb20gdGhlIExvdWlzdmlsbGUgTUxTIGFuZCBLQ1JFQTogNDUgdHJhbnNhY3Rpb25zLCAxNDbigKYiXSxbIi9ydXNzZWxsLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiLCJSdXNzZWxsLCBMb3Vpc3ZpbGxlIFJlYWwgRXN0YXRlIEd1aWRlIHwgV2VzdCBMb3Vpc3ZpbGxlJ3MgSGlzdG9yaWMgSGVhcnQsIFJlYnVpbGRpbmciLCJob29kIiwiUnVzc2VsbCwgTG91aXN2aWxsZSdzIGhpc3RvcmljIEJsYWNrIGJ1c2luZXNzIGRpc3RyaWN0OiB0aGUgQ2hvaWNlIE5laWdoYm9yaG9vZHMgcmVkZXZlbG9wbWVudCwgQmVlY2hlciBUZXJyYWNlIHJlYnVpbGQs4oCmIl0sWyIvc2VjdGlvbi04LWxhbmRsb3JkaW5nLWxvdWlzdmlsbGUta2VudHVja3kiLCJTZWN0aW9uIDggTGFuZGxvcmRpbmcgaW4gTG91aXN2aWxsZTogV2hhdCB0aGUgSG91c2luZyBDaG9pY2UgVm91Y2hlciBQcm9ncmFtIEFjdHVhbGx5IFJlcXVpcmVzIiwiaW52ZXN0IiwiSXMgYWNjZXB0aW5nIFNlY3Rpb24gOCB2b3VjaGVycyBtYW5kYXRvcnkgaW4gTG91aXN2aWxsZT8gV2hhdCB0aGUgSG91c2luZyBDaG9pY2UgVm91Y2hlciBwcm9ncmFtIHJlcXVpcmVzIG9mIGxhbmRsb3JkcyzigKYiXSxbIi9zZWxmLXN0b3JhZ2UtaW52ZXN0aW5nLWxvdWlzdmlsbGUiLCJTZWxmLVN0b3JhZ2UgSW52ZXN0aW5nIGluIExvdWlzdmlsbGU6IFdoYXQgMjAyNiBMb29rcyBMaWtlIEFmdGVyIHRoZSBMYXN0IEJvb20tQnVzdCBDeWNsZSIsImNvbW0iLCJXaGF0IHRoZSBuYXRpb25hbCBzZWxmLXN0b3JhZ2Ugc3VwcGx5IGNvbnRyYWN0aW9uIG1lYW5zIGZvciBMb3Vpc3ZpbGxlIGludmVzdG9ycywgYW5kIHdoeSB0aGlzIG1hcmtldCdzIDIwMTkgb3ZlcnN1cHBseeKApiJdLFsiL3NlbGwiLCJTZWxsIHlvdXIgaG9tZSBpbiBMb3Vpc3ZpbGxlIChzdGFydCBoZXJlKSIsInNlbGwiLCJQcmljaW5nIHN0cmF0ZWd5LCBzdGFnaW5nIGFuZCBtYXJrZXRpbmcgdGlwcywgYW5kIGEgY2xlYXIgc2VsbGVyIG5ldCBzaGVldCBmb3IgTG91aXN2aWxsZSBob21lIHNlbGxlcnMsIHBsdXMgZXhwZXJ0IGxvY2Fs4oCmIl0sWyIvc2VsbGVyLWZpbmFuY2luZy1rZW50dWNreSIsIlNlbGxlciBGaW5hbmNpbmcgYW5kIExhbmQgQ29udHJhY3RzIGluIEtlbnR1Y2t5IiwiY3JlYXRpdmUiLCJXaGF0IHNlbGxlciBmaW5hbmNpbmcgbWVhbnMsIGhvdyBsYW5kIGNvbnRyYWN0cyBhbmQgY29udHJhY3QgZm9yIGRlZWQgd29yayBpbiBLZW50dWNreSwgd2hhdCBEb2RkLUZyYW5rIHJlc3RyaWN0cywgYW5k4oCmIl0sWyIvc2VsbGVyLW5ldC1wcm9jZWVkcy1jYWxjdWxhdG9yIiwiU2VsbGVyIE5ldCBQcm9jZWVkcyBDYWxjdWxhdG9yIiwidG9vbCIsIkZyZWUgc2VsbGVyIG5ldCBwcm9jZWVkcyBjYWxjdWxhdG9yIGZvciBLZW50dWNreSBob21lIHNlbGxlcnMuIEVzdGltYXRlIHlvdXIgcGF5b3V0IGFmdGVyIG1vcnRnYWdlIHBheW9mZiwgY29tbWlzc2lvbizigKYiXSxbIi9zZWxsZXJzYnVyZy1pbmRpYW5hLXJlYWwtZXN0YXRlLWd1aWRlIiwiU2VsbGVyc2J1cmcsIElOIFJlYWwgRXN0YXRlIEd1aWRlIHwgU291dGhlcm4gSW5kaWFuYSdzIEZhc3Rlc3QtR3Jvd2luZyBJLTY1IFN1YnVyYiIsImhvb2QiLCJTZWxsZXJzYnVyZywgSW5kaWFuYSAoNDcxNzIpOiBmYXN0ZXN0LWdyb3dpbmcgU291dGhlcm4gSW5kaWFuYSB0b3duIG5lYXIgTG91aXN2aWxsZSwgU2lsdmVyIENyZWVrIFNjaG9vbHMsIG5ld+KApiJdLFsiL3NlbGxpbmctZGlzdHJlc3NlZC1kaWZmaWN1bHQtcHJvcGVydHktbG91aXN2aWxsZSIsIlNlbGxpbmcgYSBEaXN0cmVzc2VkIG9yIERpZmZpY3VsdCBQcm9wZXJ0eSBpbiBMb3Vpc3ZpbGxlIiwidG91Z2giLCJIb2FyZGVyIGhvdXNlLCBmaXJlIG9yIGZsb29kIGRhbWFnZSwgZm9yZWNsb3N1cmUsIG9yIHNxdWF0dGVycyDigJQgV2lubmVyIFJlYWx0eSBoYXMgcmVhbCwgaGFuZHMtb24gZXhwZXJpZW5jZSBzZWxsaW5n4oCmIl0sWyIvc2VsbGluZy1hLWZpcmUtc3Rvcm0tb3ItZmxvb2QtZGFtYWdlZC1ob3VzZS1pbi1rZW50dWNreSIsIlNlbGxpbmcgYSBGaXJlLCBTdG9ybSwgb3IgRmxvb2QtRGFtYWdlZCBIb3VzZSBpbiBLZW50dWNreSIsInRvdWdoIiwiQSBmaXJlLCBzdG9ybSwgb3IgZmxvb2RlZCBiYXNlbWVudCBsZWF2ZXMgeW91IHdpdGggYW4gaW5zdXJhbmNlIGNsYWltIHRvIG1hbmFnZSBhbmQgYSBkaXNjbG9zdXJlIGZvcm0gdG8gZmlsbCBvdXQuIEhlcmUnc+KApiJdLFsiL3NlbGxpbmctYS1ob2FyZGVyLWhvdXNlLWluLWtlbnR1Y2t5IiwiU2VsbGluZyBhIEhvYXJkZXIgSG91c2UgaW4gS2VudHVja3kiLCJ0b3VnaCIsIkhlYXZ5IGNsdXR0ZXIgb3IgYSBob3VzZSB0aGF0J3MgaGFkIGRlY2FkZXMgb2YgYmVsb25naW5ncyBwaWxlIHVwIHJhaXNlcyByZWFsIHF1ZXN0aW9uczogd2hhdCB5b3UgaGF2ZSB0byBkaXNjbG9zZSwgd2hhdOKApiJdLFsiL3NlbGxpbmctaG9tZS10YXgtbGllbi1sb3Vpc3ZpbGxlLWtlbnR1Y2t5IiwiU2VsbGluZyBhIEhvbWUgd2l0aCBhIFRheCBMaWVuIGluIExvdWlzdmlsbGU6IFdoYXQgS2VudHVja3kncyBEZWxpbnF1ZW50IFRheCBQcm9jZXNzIE1lYW5zIGZvciBZb3UiLCJ0b3VnaCIsIkEgdGF4IGxpZW4gZG9lc24ndCBoYXZlIHRvIHN0b3AgeW91ciBzYWxlLiBIZXJlJ3MgZXhhY3RseSBob3cgS2VudHVja3kncyBkZWxpbnF1ZW50IHByb3BlcnR5IHRheCBwcm9jZXNzIHdvcmtzLCB3aGF0IGl04oCmIl0sWyIvc2VsbGluZy1hLWhvdXNlLWR1cmluZy1iYW5rcnVwdGN5LWtlbnR1Y2t5IiwiU2VsbGluZyBhIEhvdXNlIER1cmluZyBCYW5rcnVwdGN5IGluIEtlbnR1Y2t5IiwidG91Z2giLCJGaWxpbmcgZm9yIGJhbmtydXB0Y3kgZG9lc24ndCBtZWFuIHlvdSBoYXZlIHRvIGxvc2UgeW91ciBLZW50dWNreSBob21lLiBMZWFybiBob3cgdGhlIGF1dG9tYXRpYyBzdGF5LCBzdGF0ZSB2cy4gZmVkZXJhbOKApiJdLFsiL3NlbGxpbmctYS1ob3VzZS1pbi1hLXRvdWdoLXNwb3Qta2VudHVja3kiLCJTZWxsaW5nIGEgSG91c2UgaW4gYSBUb3VnaCBTcG90IGluIEtlbnR1Y2t5OiBFdmVyeSBTaXR1YXRpb24sIE9uZSBQbGFjZSIsInRvdWdoIiwiSW5oZXJpdGVkIGhvdXNlLCBkaXZvcmNlLCBmb3JlY2xvc3VyZSwgYmFkIHRlbmFudHMsIGZpcmUgZGFtYWdlPyBFdmVyeSBoYXJkIHNlbGxpbmcgc2l0dWF0aW9uIHdlIGhhbmRsZSBpbiBMb3Vpc3ZpbGxlIGFuZOKApiJdLFsiL3NlbGxpbmctYS1ob3VzZS13aXRoLWEtbGllbi1hZ2FpbnN0LWl0LWluLWtlbnR1Y2t5IiwiU2VsbGluZyBhIEhvdXNlIHdpdGggYSBMaWVuIEFnYWluc3QgSXQgaW4gS2VudHVja3kiLCJ0b3VnaCIsIkdvdCBhIGxpZW4gb24geW91ciBLZW50dWNreSBob21lPyBMZWFybiBob3cganVkZ21lbnQgbGllbnMsIEhPQSBsaWVucywgYW5kIG90aGVyIGNsYWltcyB0eXBpY2FsbHkgZ2V0IHJlc29sdmVkIHJpZ2h0IGF04oCmIl0sWyIvc2VsbGluZy1hLWhvdXNlLXdpdGgtYS1yZXZlcnNlLW1vcnRnYWdlLWxvdWlzdmlsbGUiLCJTZWxsaW5nIGEgSG91c2UgV2l0aCBhIFJldmVyc2UgTW9ydGdhZ2UgaW4gTG91aXN2aWxsZSIsInRvdWdoIiwiU2VsbGluZyBhIGhvbWUgd2l0aCBhIHJldmVyc2UgbW9ydGdhZ2UsIG9yIGluaGVyaXRlZCBvbmUgd2l0aCBhIHJldmVyc2UgbW9ydGdhZ2U/IEhvdyBwYXlvZmYgd29ya3MsIHdoYXQgaGVpcnMgb3dlLOKApiJdLFsiL3NlbGxpbmctYS1ob3VzZS13aXRoLWZvdW5kYXRpb24tcHJvYmxlbXMtbG91aXN2aWxsZSIsIlNlbGxpbmcgYSBIb3VzZSBXaXRoIEZvdW5kYXRpb24gUHJvYmxlbXMgaW4gTG91aXN2aWxsZSIsInRvdWdoIiwiQ3JhY2tzLCBzbG9waW5nIGZsb29ycywgYSB3ZXQgYmFzZW1lbnQ/IEhvdyB0byBzZWxsIGEgTG91aXN2aWxsZSBob3VzZSB3aXRoIGZvdW5kYXRpb24gaXNzdWVzOiBkaXNjbG9zdXJlLCByZXBhaXIgdnMu4oCmIl0sWyIvc2VsbGluZy1hLWhvdXNlLXdpdGgtbW9sZC1vci13YXRlci1kYW1hZ2Uta2VudHVja3kiLCJTZWxsaW5nIGEgSG91c2UgV2l0aCBNb2xkIG9yIFdhdGVyIERhbWFnZSBpbiBLZW50dWNreSIsInRvdWdoIiwiTGVha3kgYmFzZW1lbnQsIG9sZCBmbG9vZCwgbW9sZCBiZWhpbmQgdGhlIGRyeXdhbGw/IEhvdyB0byBzZWxsIGEgS2VudHVja3kgaG91c2Ugd2l0aCB3YXRlciBvciBtb2xkIHByb2JsZW1zOiBkaXNjbG9zdXJlLOKApiJdLFsiL3NlbGxpbmctaG91c2UtdW5wZXJtaXR0ZWQtd29yay1rZW50dWNreS1kaXNjbG9zdXJlIiwiU2VsbGluZyBhIEhvdXNlIHdpdGggVW5wZXJtaXR0ZWQgV29yayBpbiBLZW50dWNreTogV2hhdCBZb3UgSGF2ZSB0byBEaXNjbG9zZSIsInRvdWdoIiwiVW5wZXJtaXR0ZWQgd29yayBkb2Vzbid0IGhhdmUgdG8gdGFuayB5b3VyIHNhbGUgaW4gS2VudHVja3ksIGJ1dCBTZWN0aW9uIDkgb2YgdGhlIHN0YXRlJ3MgbWFuZGF0b3J5IGRpc2Nsb3N1cmUgZm9ybSBhc2tz4oCmIl0sWyIvb3V0LW9mLXN0YXRlLW93bmVyLXNlbGxpbmctYS1ob3VzZS1pbi1rZW50dWNreSIsIlNlbGxpbmcgYSBIb3VzZSBZb3UgSW5oZXJpdGVkIChvciBLZXB0KSBPdXQgb2YgU3RhdGU6IEEgS2VudHVja3kgT3duZXIncyBHdWlkZSIsInRvdWdoIiwiT3duIGEgS2VudHVja3kgcHJvcGVydHkgYnV0IGxpdmUgc29tZXdoZXJlIGVsc2U/IExlYXJuIGhvdyByZW1vdGUgb25saW5lIG5vdGFyaXphdGlvbiwgcG93ZXJzIG9mIGF0dG9ybmV5LCBhbmTigKYiXSxbIi9kZWF0aC1vZi1zcG91c2Utc2VsbGluZy1ob3VzZS1sb3Vpc3ZpbGxlLWtlbnR1Y2t5IiwiU2VsbGluZyBhIExvdWlzdmlsbGUgSG9tZSBBZnRlciB0aGUgRGVhdGggb2YgYSBTcG91c2U6IFdoYXQgS2VudHVja3kgTGF3IEFjdHVhbGx5IFNheXMiLCJ0b3VnaCIsIktlbnR1Y2t5J3MgaW5oZXJpdGFuY2UgcnVsZXMgZm9yIHN1cnZpdmluZyBzcG91c2VzIGNoYW5nZWQgaW4gMjAyNi4gSGVyZSdzIGV4YWN0bHkgaG93IHRpdGxlIHBhc3NlcyB0byBhIHN1cnZpdmluZyBzcG91c2XigKYiXSxbIi9zZWxsaW5nLWEtcGFyZW50cy1ob21lLWtlbnR1Y2t5IiwiU2VsbGluZyBhIHBhcmVudCdzIGhvbWUgaW4gS2VudHVja3k6IHdoYXQgZXhlY3V0b3JzIG5lZWQgdG8ga25vdyIsInRvdWdoIiwiS2VudHVja3kgcHJvYmF0ZSBhbmQgdGhlIGhvdXNlOiB3aG8gY2FuIHNpZ24gdGhlIGRlZWQsIHRoZSA2LW1vbnRoIGNyZWRpdG9yIHdpbmRvdywgc21hbGwgZXN0YXRlcywgaW5oZXJpdGFuY2UgdGF4LOKApiJdLFsiL3NlbGxpbmctYS12YWNhbnQtb3ItYWJhbmRvbmVkLWhvdXNlLWluLWtlbnR1Y2t5LXdoYXQtb3duZXJzLW5lZWQtdG8ta25vdyIsIlNlbGxpbmcgYSBWYWNhbnQgb3IgQWJhbmRvbmVkIEhvdXNlIGluIEtlbnR1Y2t5OiBXaGF0IE93bmVycyBOZWVkIHRvIEtub3ciLCJ0b3VnaCIsIk93biBhIHZhY2FudCBvciBhYmFuZG9uZWQgaG91c2UgaW4gS2VudHVja3k/IExlYXJuIGhvdyB2YWNhbmN5IGFmZmVjdHMgeW91ciBpbnN1cmFuY2UsIGNvZGUgZW5mb3JjZW1lbnQgZmluZXMsIGFuZOKApiJdLFsiL3NlbGxpbmctYS12YWNhbnQtc3RyaXAtY2VudGVyLWxvdWlzdmlsbGUiLCJTZWxsaW5nIGEgVmFjYW50IFN0cmlwIENlbnRlciBvciBSZXRhaWwgQnVpbGRpbmcgaW4gTG91aXN2aWxsZSIsImNvbW0iLCJFbXB0eSBzdG9yZWZyb250cywgYSBkYXJrIGFuY2hvciwgb3IgYSBjZW50ZXIgdGhhdCdzIGhhbGYgbGVhc2VkPyBIb3cgdG8gc2VsbCBhIHZhY2FudCBvciBzdHJ1Z2dsaW5nIExvdWlzdmlsbGUgcmV0YWls4oCmIl0sWyIvc2VsbGluZy1hbi1pbmhlcml0ZWQtaG91c2Uta2VudHVja3ktcHJvYmF0ZS1ndWlkZSIsIlNlbGxpbmcgYW4gSW5oZXJpdGVkIEhvdXNlIGluIEtlbnR1Y2t5OiBUaGUgUHJvYmF0ZSBTZWxsZXIncyBHdWlkZSIsInRvdWdoIiwiSW5oZXJpdGVkIGEgaG91c2UgaW4gS2VudHVja3kgYW5kIGRvbid0IGtub3cgd2hlcmUgdG8gc3RhcnQ/IEhlcmUncyBob3cgcHJvYmF0ZSBhY3R1YWxseSB3b3JrcywgaG93IGxvbmcgaXQgdGFrZXMsIGFuZOKApiJdLFsiL3NlbGxpbmctY29tbWVyY2lhbC1wcm9wZXJ0eS1pbi1hbi1lc3RhdGUta2VudHVja3kiLCJTZWxsaW5nIENvbW1lcmNpYWwgUHJvcGVydHkgSGVsZCBpbiBhbiBFc3RhdGUgaW4gS2VudHVja3kiLCJjb21tIiwiSW5oZXJpdGVkIGEgYnVpbGRpbmcsIGEgcmVudGFsIHBvcnRmb2xpbywgb3IgbGFuZCBpbiBLZW50dWNreT8gV2hvIGNhbiBzZWxsIGl0LCBrZWVwaW5nIHRlbmFudHMgYW5kIGxlYXNlcyBpbiBvcmRlcizigKYiXSxbIi9zZWxsaW5nLXRoZS1ob3VzZS1kdXJpbmctYS1kaXZvcmNlLWluLWtlbnR1Y2t5IiwiU2VsbGluZyB0aGUgSG91c2UgRHVyaW5nIGEgRGl2b3JjZSBpbiBLZW50dWNreSIsInRvdWdoIiwiSG93IEtlbnR1Y2t5J3MgZXF1aXRhYmxlIGRpc3RyaWJ1dGlvbiBsYXcgdHJlYXRzIHRoZSBtYXJpdGFsIGhvbWUsIHdobyBoYXMgdG8gc2lnbiB0byBzZWxsIGl0LCB3aGF0IGhhcHBlbnMgaWYgeW91IGFuZOKApiJdLFsiL3NlbGxpbmcteW91ci1ob3VzZS1mb3ItYS1qb2ItcmVsb2NhdGlvbi1sb3Vpc3ZpbGxlIiwiU2VsbGluZyBZb3VyIEhvdXNlIGZvciBhIEpvYiBSZWxvY2F0aW9uIG9yIE1pbGl0YXJ5IE1vdmUgaW4gTG91aXN2aWxsZSIsInRvdWdoIiwiUmVsb2NhdGluZyBmb3Igd29yayBvciBQQ1Mgb3JkZXJzIGZyb20gRm9ydCBLbm94PyBIb3cgdG8gc2VsbCB5b3VyIExvdWlzdmlsbGUtYXJlYSBob3VzZSBvbiBhIGRlYWRsaW5lLCByZWxvY2F0aW9u4oCmIl0sWyIvc2VsbC1teS1ob3VzZS1lbGl6YWJldGh0b3duLWt5IiwiU2VsbGluZyBZb3VyIEhvdXNlIGluIEVsaXphYmV0aHRvd24sIEtZOiBXaGF0IEl0J3MgV29ydGggYW5kIEhvdyBGYXN0IEl0IFNlbGxzIiwic2VsbCIsIlNlbGxpbmcgYSBob3VzZSBpbiBFbGl6YWJldGh0b3duLCBLWT8gQ3VycmVudCBwcmljZXMsIGhvdyBmYXN0IGhvbWVzIGFyZSBzZWxsaW5nLCB3aG8ncyBidXlpbmcgaW4gSGFyZGluIENvdW50eSwgYW5k4oCmIl0sWyIvc2VsbC1teS1ob3VzZS1qZWZmZXJzb252aWxsZS1pbiIsIlNlbGxpbmcgWW91ciBIb3VzZSBpbiBKZWZmZXJzb252aWxsZSwgSW5kaWFuYTogV2hhdCBJdCdzIFdvcnRoIGFuZCBIb3cgRmFzdCBJdCBTZWxscyIsInNlbGwiLCJTZWxsaW5nIGEgaG91c2UgaW4gSmVmZmVyc29udmlsbGUsIEluZGlhbmE/IEN1cnJlbnQgcHJpY2VzLCBob3cgZmFzdCBob21lcyBzZWxsLCBJbmRpYW5hIHRheGVzIGFuZCBkaXNjbG9zdXJlcywgYW5kIGV2ZXJ54oCmIl0sWyIvc2VsbC1teS1ob3VzZS1sYS1ncmFuZ2Uta3kiLCJTZWxsaW5nIFlvdXIgSG91c2UgaW4gTGEgR3JhbmdlLCBLWTogV2hhdCBJdCdzIFdvcnRoIGFuZCBIb3cgRmFzdCBJdCBTZWxscyIsInNlbGwiLCJTZWxsaW5nIGEgaG91c2UgaW4gTGEgR3JhbmdlLCBLWT8gQ3VycmVudCBwcmljZXMsIGhvdyBmYXN0IGhvbWVzIGFyZSBzZWxsaW5nLCB3aG8ncyBidXlpbmcgaW4gT2xkaGFtIENvdW50eSwgYW5kIGV2ZXJ54oCmIl0sWyIvc2VsbC1teS1ob3VzZS1uZXctYWxiYW55LWluIiwiU2VsbGluZyBZb3VyIEhvdXNlIGluIE5ldyBBbGJhbnksIEluZGlhbmE6IFdoYXQgSXQncyBXb3J0aCBhbmQgSG93IEZhc3QgSXQgU2VsbHMiLCJzZWxsIiwiU2VsbGluZyBhIGhvdXNlIGluIE5ldyBBbGJhbnksIEluZGlhbmE/IEN1cnJlbnQgcHJpY2VzLCBob3cgZmFzdCBob21lcyBzZWxsLCBJbmRpYW5hIHRheGVzIGFuZCBkaXNjbG9zdXJlcywgb2xkZXItaG9tZeKApiJdLFsiL3NlbGwtbXktaG91c2UtcmFkY2xpZmYtZm9ydC1rbm94LWt5IiwiU2VsbGluZyBZb3VyIEhvdXNlIGluIFJhZGNsaWZmIG9yIE5lYXIgRm9ydCBLbm94OiBXaGF0IEl0J3MgV29ydGggYW5kIEhvdyBGYXN0IEl0IFNlbGxzIiwic2VsbCIsIlNlbGxpbmcgYSBob3VzZSBpbiBSYWRjbGlmZiBvciBuZWFyIEZvcnQgS25veD8gQ3VycmVudCBwcmljZXMsIGhvdyBmYXN0IGhvbWVzIHNlbGwsIFBDUyB0aW1pbmcsIFZBIGJ1eWVycywgcmVudGluZyB2cy7igKYiXSxbIi9zZWxsLW15LWhvdXNlLXNoZWxieXZpbGxlLWt5IiwiU2VsbGluZyBZb3VyIEhvdXNlIGluIFNoZWxieXZpbGxlLCBLWTogV2hhdCBJdCdzIFdvcnRoIGFuZCBIb3cgRmFzdCBJdCBTZWxscyIsInNlbGwiLCJTZWxsaW5nIGEgaG91c2UgaW4gU2hlbGJ5dmlsbGUsIEtZPyBDdXJyZW50IHByaWNlcywgaG93IGZhc3QgaG9tZXMgYXJlIHNlbGxpbmcsIHdobydzIGJ1eWluZywgYW5kIGV2ZXJ5IHdheSB0byBzZWxsLCBmcm9t4oCmIl0sWyIvc2VsbC1teS1ob3VzZS1zaGVwaGVyZHN2aWxsZS1reSIsIlNlbGxpbmcgWW91ciBIb3VzZSBpbiBTaGVwaGVyZHN2aWxsZSwgS1k6IFdoYXQgSXQncyBXb3J0aCBhbmQgSG93IEZhc3QgSXQgU2VsbHMiLCJzZWxsIiwiU2VsbGluZyBhIGhvdXNlIGluIFNoZXBoZXJkc3ZpbGxlLCBLWT8gQ3VycmVudCBwcmljZXMsIGhvdyBmYXN0IGhvbWVzIGFyZSBzZWxsaW5nLCB3aG8ncyBidXlpbmcgaW4gQnVsbGl0dCBDb3VudHksIGFuZOKApiJdLFsiL3Nlbmlvci1yZWFsLWVzdGF0ZS1zZXJ2aWNlcy1pbi1sb3Vpc3ZpbGxlIiwiU2VuaW9yIFJlYWwgRXN0YXRlIFNlcnZpY2VzIGluIExvdWlzdmlsbGUiLCJhYm91dCIsIkFnaW5nIGluIHBsYWNlLCBkb3duc2l6aW5nLCBvciBoZWxwaW5nIGEgcGFyZW50IHRyYW5zaXRpb24gdG8gYXNzaXN0ZWQgbGl2aW5nIGluIExvdWlzdmlsbGU/IFdpbm5lciBSZWFsdHkgaGFzIHJlYWws4oCmIl0sWyIvdmV0ZXJhbnMtcmVhbC1lc3RhdGUtbG91aXN2aWxsZSIsIlNlcnZpbmcgVmV0ZXJhbnMgYW5kIE1pbGl0YXJ5IEhvbWVidXllcnMgaW4gTG91aXN2aWxsZSIsImFib3V0IiwiSG93IFdpbm5lciBSZWFsdHkgaGVscHMgdmV0ZXJhbiBhbmQgbWlsaXRhcnkgVkEgbG9hbiBidXllcnMgd2luIGluIExvdWlzdmlsbGUncyBjb21wZXRpdGl2ZSBob3VzaW5nIG1hcmtldCDigJQgcmVhbOKApiJdLFsiL3NoZWxieS1jb3VudHktc2hlbGJ5dmlsbGUtc2ltcHNvbnZpbGxlLWZhcm1zLWFjcmVhZ2UiLCJTaGVsYnkgQ291bnR5IGFuZCBTaGVsYnl2aWxsZTogRmFybXMsIEFjcmVhZ2UgYW5kIFNhZGRsZWJyZWQgQ291bnRyeSIsImxhbmQiLCJGb3VyIHRpbWVzIE9sZGhhbSdzIGZhcm0gc2FsZXMgYW5kIGEgZml2ZS1hY3JlIHpvbmluZyBtaW5pbXVtIHRoZSBjb3VudHkgZGVmZW5kcy4gUHJpY2VzIHBlciBhY3JlIHdlc3QgdG8gZWFzdCwgd2F0ZXIs4oCmIl0sWyIvc2hlbGJ5LWNvdW50eS1reS1yZWFsLWVzdGF0ZS1ndWlkZSIsIlNoZWxieSBDb3VudHksIEtZIFJlYWwgRXN0YXRlIEd1aWRlIiwiaG9vZCIsIlNoZWxieSBDb3VudHkgcmVhbCBlc3RhdGUgZ3VpZGU6IGN1cnJlbnQgbWFya2V0IHN0YXRzLCB0b3duLWJ5LXRvd24gYnJlYWtkb3duLCB0aGUgbmV3IGJhdHRlcnkgcGxhbnQsIFNhZGRsZWJyZWTigKYiXSxbIi9zaGVsYnktcGFyay1sb3Vpc3ZpbGxlLXJlYWwtZXN0YXRlLWd1aWRlIiwiU2hlbGJ5IFBhcmssIExvdWlzdmlsbGUgUmVhbCBFc3RhdGUgR3VpZGUgfCBTaG90Z3VuIEhvdXNlcyBCZXR3ZWVuIEdlcm1hbnRvd24gYW5kIFNtb2tldG93biIsImhvb2QiLCJTaGVsYnkgUGFyaywgTG91aXN2aWxsZSBLWSAoNDAyMDQpOiBzaG90Z3VuIGhvdXNlIHN0b2NrLCBwcmljZXMgdmVyc3VzIG5laWdoYm9yaW5nIEdlcm1hbnRvd24tU2Nobml0emVsYnVyZywgd2hhdCB0b+KApiJdLFsiL3NoZXktYmxha2UiLCJTaGV5IEJsYWtlIiwidGVhbSIsIkNvbW1lcmNpYWwgYW5kIHJlc2lkZW50aWFsIGFnZW50IHNwZWNpYWxpemluZyBpbiB0ZW5hbnQgcGxhY2VtZW50IGZvciBwcm9wZXJ0eSBvd25lcnMgYW5kIGludmVzdG9ycy4gQWN0aXZlIEtSRUUgYW5k4oCmIl0sWyIvc2hpdmVseS1wbGVhc3VyZS1yaWRnZS1wYXJrLXJlYWwtZXN0YXRlLWd1aWRlIiwiU2hpdmVseSAmIFBsZWFzdXJlIFJpZGdlIFBhcmsgUmVhbCBFc3RhdGUgR3VpZGU6IERpeGllIEhpZ2h3YXkiLCJob29kIiwiU2hpdmVseSAoNDAyMTYpIGFuZCBQbGVhc3VyZSBSaWRnZSBQYXJrICg0MDI1OCkgQXVndXN0IDIwMjYgcHJpY2VzLCB0aGUgTmV3IERpeGllIEhpZ2h3YXkgcHJvamVjdCwgbWlkLWNlbnR1cnkgcmFuY2jigKYiXSxbIi9zaG9ydC1zYWxlLWtlbnR1Y2t5LWd1aWRlIiwiU2hvcnQgU2FsZSBpbiBLZW50dWNreTogSG93IEl0IFdvcmtzIGFuZCBXaHkgU2VsbGVycyBDaG9vc2UgV2lubmVyIFJlYWx0eSIsInRvdWdoIiwiSG93IGEgc2hvcnQgc2FsZSB3b3JrcyBpbiBLZW50dWNreSwgaG93IGl0IGNvbXBhcmVzIHRvIGp1ZGljaWFsIGZvcmVjbG9zdXJlIGFuZCBkZWZpY2llbmN5IGp1ZGdtZW50cywgYW5kIHdoeSBzZWxsZXJz4oCmIl0sWyIvc21va2V0b3duLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiLCJTbW9rZXRvd24sIExvdWlzdmlsbGUgUmVhbCBFc3RhdGUgR3VpZGUgfCBMb3Vpc3ZpbGxlJ3MgSGlzdG9yaWMgQmxhY2sgRm91bmRpbmcgTmVpZ2hib3Job29kIiwiaG9vZCIsIlNtb2tldG93biwgTG91aXN2aWxsZSdzIG9sZGVzdCBCbGFjay1mb3VuZGVkIG5laWdoYm9yaG9vZDogc2hvdGd1biBob3VzZSBzdG9jaywgWklQIDQwMjAzIHByaWNlcywgd2hhdCB0byBpbnNwZWN0LCBhbmTigKYiXSxbIi9zb3V0aGVybi1pbmRpYW5hLWNvbW1lcmNpYWwtcmVhbC1lc3RhdGUiLCJTb3V0aGVybiBJbmRpYW5hIENvbW1lcmNpYWwgUmVhbCBFc3RhdGUiLCJjb21tIiwiQnV5LCBzZWxsLCBsZWFzZSwgb3IgZmluZCBhIHNpdGUgaW4gTmV3IEFsYmFueSwgSmVmZmVyc29udmlsbGUsIG9yIENsYXJrc3ZpbGxlLCBJTiDigJQgaW5kdXN0cmlhbCwgcmV0YWlsLCBhbmQgbGFuZCwgZnJvbSBh4oCmIl0sWyIvc291dGhlcm4taW5kaWFuYS1zaG9ydC10ZXJtLXJlbnRhbC1yZWd1bGF0aW9ucyIsIlNvdXRoZXJuIEluZGlhbmEgU2hvcnQtVGVybSBSZW50YWwgUmVndWxhdGlvbnM6IFRoZSBDb21wbGV0ZSAyMDI2IEd1aWRlIGZvciBBaXJibmIgSW52ZXN0b3JzIiwic3RyIiwiTmV3IEFsYmFueSBhbmQgSmVmZmVyc29udmlsbGUsIEluZGlhbmEgc2hvcnQtdGVybSByZW50YWwgcnVsZXMsIEluZGlhbmEncyBuZXcgc3RhdGV3aWRlIHJlbnRhbC1jYXAgYmFuIChIRUEgMTIxMCks4oCmIl0sWyIvc3ByaW5naHVyc3QtbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZSIsIlNwcmluZ2h1cnN0IExvdWlzdmlsbGUsIEtZIFJlYWwgRXN0YXRlIEd1aWRlIiwiaG9vZCIsIlRoaW5raW5nIGFib3V0IFNwcmluZ2h1cnN0IGluIExvdWlzdmlsbGUsIEtZPyBXaW5uZXIgUmVhbHR5IGJyZWFrcyBkb3duIHRoZSBuZWlnaGJvcmhvb2QncyBhbWVuaXRpZXMsIGhvbWUgc3R5bGVzLOKApiJdLFsiL3N0LW1hdHRoZXdzLWxvdWlzdmlsbGUtbmVpZ2hib3Job29kLWd1aWRlIiwiU3QuIE1hdHRoZXdzIExvdWlzdmlsbGUgSG9tZSBQcmljZXMgKDIwMjYpIiwiaG9vZCIsIlN0LiBNYXR0aGV3cywgTG91aXN2aWxsZSBob21lIHByaWNlcywgd2hhdCdzIHNlbGxpbmcgaW4gWklQIDQwMjA3LCBhbmQgd2hvIHNob3VsZCBidXkgaGVyZSBpbiAyMDI2IC0tIHRoZSBuZWlnaGJvcmhvb2TigKYiXSxbIi9ob21lc3RlYWQtaG9iYnktZmFybS1uZWFyLWxvdWlzdmlsbGUiLCJTdGFydGluZyBhIEhvbWVzdGVhZCBvciBIb2JieSBGYXJtIE5lYXIgTG91aXN2aWxsZSIsImxhbmQiLCJXaGljaCBjb3VudGllcyBhbGxvdyBjaGlja2VucyBhbmQgbGl2ZXN0b2NrIG9uIHNtYWxsIGxvdHMsIHdlbGwgYW5kIHNlcHRpYyBwZXJtaXR0aW5nLCBLZW50dWNreSdzIGVnZywgaG9uZXkgYW5kIGNvdHRhZ2XigKYiXSxbIi9zdWJqZWN0LXRvLXJlYWwtZXN0YXRlLWtlbnR1Y2t5IiwiU3ViamVjdC1UbyBSZWFsIEVzdGF0ZSBpbiBLZW50dWNreTogSG93IEl0IFdvcmtzIGFuZCBXaGF0IEl0IENvc3RzIHRoZSBTZWxsZXIiLCJjcmVhdGl2ZSIsIlN1YmplY3QtdG8gaXMgbGVnYWwgYW5kIGNhbGxhYmxlLiBXaGF0IHRoZSBkdWUtb24tc2FsZSBydWxlIGFjdHVhbGx5IHNheXMsIHdoeSBhIGxhbmQgdHJ1c3QgZG9lcyBub3QgZml4IGl0LCBhbmQgd2hhdCBpdOKApiJdLFsiL3RleGFzLWludmVzdG9ycy1idXlpbmcta2VudHVja3ktaW5kaWFuYS1yZWFsLWVzdGF0ZSIsIlRleGFzIEludmVzdG9yczogSG93IExvdWlzdmlsbGUgYW5kIFNvdXRoZXJuIEluZGlhbmEgU3RhY2sgVXAgQWdhaW5zdCBUZXhhcyBSZW50YWxzIiwicmVtb3RlIiwiVGV4YXMgaW52ZXN0b3JzOiBjb21wYXJlIExvdWlzdmlsbGUgYW5kIFNvdXRoZXJuIEluZGlhbmEgdG8gVGV4YXMgb24gcHJpY2VzLCBwcm9wZXJ0eSB0YXhlcywgaW5jb21lIHRheCBhbmQgcmVudCBydWxlcyzigKYiXSxbIi9sb3Vpc3ZpbGxlLW5laWdoYm9yaG9vZHMtd2hlcmUtaG9tZXMtYXJlLXNlbGxpbmciLCJUaGUgMTAgTG91aXN2aWxsZSBOZWlnaGJvcmhvb2RzIFdoZXJlIHRoZSBNb3N0IEhvbWVzIFNvbGQgKDIwMjYpIiwic2VsbCIsIlRoZSAxMCBMb3Vpc3ZpbGxlLCBLWSBuZWlnaGJvcmhvb2RzIHdpdGggdGhlIG1vc3QgaG9tZSBzYWxlcyBpbiB0aGUgbGFzdCAxMiBtb250aHMsIHJhbmtlZCBmcm9tIE1MUyBkYXRhIOKAlCBwcmljZXMsIGRheXPigKYiXSxbIi9iZXN0LXRpbWUtdG8tc2VsbC1hLWhvdXNlLWluLWxvdWlzdmlsbGUiLCJUaGUgQmVzdCBUaW1lIHRvIFNlbGwgYSBIb3VzZSBpbiBMb3Vpc3ZpbGxlOiAyIFllYXJzIG9mIERhdGEiLCJzZWxsIiwiVGhlIGJlc3QgdGltZSB0byBzZWxsIGEgaG91c2UgaW4gTG91aXN2aWxsZSwgZnJvbSAyNCBtb250aHMgb2YgSmVmZmVyc29uIENvdW50eSBNTFMgZGF0YSDigJQgdGhlIG1vbnRoLWJ5LW1vbnRoIHRhYmxlLCBhbmTigKYiXSxbIi9icnJyci1tZXRob2QtbG91aXN2aWxsZS1rZW50dWNreS0yMDI2IiwiVGhlIEJSUlJSIE1ldGhvZCBpbiBMb3Vpc3ZpbGxlOiBEb2VzIHRoZSBNYXRoIFN0aWxsIFdvcmsgaW4gMjAyNj8iLCJpbnZlc3QiLCJEb2VzIHRoZSBCUlJSUiByZWFsIGVzdGF0ZSBzdHJhdGVneSBzdGlsbCB3b3JrIGluIDIwMjY/IEN1cnJlbnQgcmVmaW5hbmNlIHJhdGVzLCBMVFYgbGltaXRzLCBhbmQgYSByZWFsaXN0aWMgTG91aXN2aWxsZeKApiJdLFsiL2hlYXJ0YmVhdCIsIlRoZSBIZWFydGJlYXQgbWVtYmVyc2hpcCIsImFib3V0IiwiTG91aXN2aWxsZSBicm9rZXJhZ2Ugd2l0aCA0NDArIGNsb3NpbmdzIGFuZCAkNDFNKyBpbiBjbG9zZWQgdm9sdW1lLiBTZWxsZXJzIG5ldCA5NSUgb2YgbGlzdCBwcmljZSBvbiBhdmVyYWdlLiBCdXllcnMs4oCmIl0sWyIvaGlnaGxhbmRzLWxvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGUiLCJUaGUgSGlnaGxhbmRzIExvdWlzdmlsbGUgUmVhbCBFc3RhdGUgR3VpZGUgKDQwMjA0IC8gNDAyMDUpIiwiaG9vZCIsIkhvbWVzIGluIHRoZSBIaWdobGFuZHMsIExvdWlzdmlsbGUgS1k6IENoZXJva2VlIFRyaWFuZ2xlLCBEZWVyIFBhcmssIEJvbm55Y2FzdGxlLCBUeWxlciBQYXJrLiBQcmljZXMsIGRheXMgb24gbWFya2V0LOKApiJdLFsiL2xvdWlzdmlsbGUtaW52ZXN0b3ItdGVhbSIsIlRoZSBMb3Vpc3ZpbGxlIEludmVzdG9yIFRlYW06IFdobyBXZSBBY3R1YWxseSBVc2UiLCJhYm91dCIsIlRoZSBsZW5kZXJzLCBpbnNwZWN0b3IsIHRpdGxlIGF0dG9ybmV5cywgZXZpY3Rpb24gYXR0b3JuZXksIGluc3VyYW5jZSBhZ2VudCwgQ1BBLCBwaG90b2dyYXBoZXIgYW5kIGNvbnRyYWN0b3IgV2lubmVy4oCmIl0sWyIvb2ZmbWFya2V0LWRlYWxzLW1hcmtldHBsYWNlIiwiVGhlIE9mZk1hcmtldC5kZWFscyBNYXJrZXRwbGFjZSIsImludmVzdCIsIlByaXZhdGUsIHByZS1tYXJrZXQgYWNjZXNzIHRvIG9mZi1tYXJrZXQgZGVhbHMsIHdpdGggNzAsMDAwKyBidXllcnMgb24gdGhlIGxpc3QuIl0sWyIvdGhlLXdpbm5lci1yZWFsdHktaW52ZXN0b3ItY29ycmlkb3Itc291dGgtd2VzdC1sb3Vpc3ZpbGxlIiwiVGhlIFdpbm5lciBSZWFsdHkgSW52ZXN0b3IgQ29ycmlkb3I6IFNvdXRoICYgV2VzdCBMb3Vpc3ZpbGxlIiwiaW52ZXN0IiwiRXhwbG9yZSB0aGUgdmlicmFudCBpbnZlc3RvciBsYW5kc2NhcGUgaW4gU291dGggYW5kIFdlc3QgTG91aXN2aWxsZSwgd2hlcmUgb3Bwb3J0dW5pdHkgYXdhaXRzIGZvciBib3RoIHNlYXNvbmVkIGFuZCBuZXfigKYiXSxbIi93aW5uZXItcmVhbHR5LW1hbmlmZXN0byIsIlRoZSBXaW5uZXIgUmVhbHR5IE1hbmlmZXN0byIsImFib3V0IiwiVGVuIHByb21pc2VzIFdpbm5lciBSZWFsdHkgbWFrZXMgaW4gd3JpdGluZywgZWFjaCB3aXRoIGEgd2F5IHRvIGhvbGQgdXMgdG8gaXQ6IHRoZSAxNS1NaW51dGUgUmVzcG9uc2UgUnVsZSwgdGhlIDMtRGF54oCmIl0sWyIvd2lubmVyLXJlYWx0eS10ZWNobm9sb2d5IiwiVGhlIFdpbm5lciBSZWFsdHkgVGVjaCBTdGFjayIsImFib3V0IiwiU2VlIHRoZSB0ZWNobm9sb2d5IGV2ZXJ5IFdpbm5lciBSZWFsdHkgYWdlbnQgdXNlczogR29IaWdoTGV2ZWwgQ1JNLCBEb3RMb29wIFBybywgYW5kIFJvYidzIEJyYWluLCBhbiBBSSB0cmFpbmVkIG9uIDEz4oCmIl0sWyIvd2UtYnV5LWhvdXNlcy1zaWducy1hcm91bmQtbG91aXN2aWxsZS13aG9zLWJlaGluZC10aGVtIiwiVGhvc2UgXCJXZSBCdXkgSG91c2VzXCIgU2lnbnMgQXJvdW5kIExvdWlzdmlsbGU6IFdobydzIEFjdHVhbGx5IEJlaGluZCBUaGVtIiwic2VsbCIsIldobyBpcyByZWFsbHkgYmVoaW5kIHRoZSBoYW5kbWFkZSBhbmQgcHJpbnRlZCBzaWducywgYW5kIHdoYXQgdGhlaXIgb2ZmZXJzIHVzdWFsbHkgbG9vayBsaWtlLiJdLFsiL3RpcmVkLWxhbmRsb3JkLWhvdy10by1zZWxsLWEtcmVudGFsLXByb3BlcnR5LXdpdGgtdGVuYW50cy1pbi1rZW50dWNreSIsIlRpcmVkIExhbmRsb3JkPyBIb3cgdG8gU2VsbCBhIFJlbnRhbCBQcm9wZXJ0eSB3aXRoIFRlbmFudHMgaW4gS2VudHVja3kiLCJ0b3VnaCIsIk93biBhIHJlbnRhbCB3aXRoIHRlbmFudHMgYnV0IHJlYWR5IHRvIG1vdmUgb24/IExlYXJuIGhvdyBzZWxsaW5nIHdpdGggdGVuYW50cyBpbiBwbGFjZSB3b3JrcyBpbiBLZW50dWNreSwgZnJvbSBsZWFzZeKApiJdLFsiL3RyYXZlbC1udXJzZS1ob3VzaW5nLW5vcnRvbi1oZWFsdGhjYXJlLWxvdWlzdmlsbGUiLCJUcmF2ZWwgTnVyc2UgSG91c2luZyBOZWFyIE5vcnRvbiBIZWFsdGhjYXJlIGluIExvdWlzdmlsbGUsIEtZIiwic3RyIiwiQSBndWlkZSB0byBmdXJuaXNoZWQsIGNvbnRyYWN0LWxlbmd0aCBob3VzaW5nIG5lYXIgTm9ydG9uIEhlYWx0aGNhcmUncyBMb3Vpc3ZpbGxlIGhvc3BpdGFsIGNhbXB1c2VzIOKAlCBmb3IgdHJhdmVsIG51cnNlc+KApiJdLFsiL3RyYXZlbC1udXJzZS1ob3VzaW5nLXVvZmwtaGVhbHRoLWpld2lzaC1ob3NwaXRhbC1sb3Vpc3ZpbGxlIiwiVHJhdmVsIE51cnNlIEhvdXNpbmcgTmVhciBVb2ZMIEhlYWx0aCAmIEpld2lzaCBIb3NwaXRhbCBpbiBMb3Vpc3ZpbGxlLCBLWSIsInN0ciIsIkEgZ3VpZGUgdG8gZnVybmlzaGVkLCBjb250cmFjdC1sZW5ndGggaG91c2luZyBuZWFyIFVvZkwgSGVhbHRoJ3MgZG93bnRvd24gbWVkaWNhbCBjYW1wdXMsIE1hcnkgJiBFbGl6YWJldGggSG9zcGl0YWwsIGFuZOKApiJdLFsiL3RyaXBsZS1uZXQtbm5uLWxlYXNlLWludmVzdGluZyIsIlRyaXBsZSBOZXQgKE5OTikgTGVhc2UgSW52ZXN0aW5nOiBXaGF0IEl0IElzIGFuZCBXaHkgSW52ZXN0b3JzIExpa2UgSXQgKDIwMjYgR3VpZGUpIiwiY29tbSIsIkhvdyB0cmlwbGUgbmV0IChOTk4pIGxlYXNlIHByb3BlcnRpZXMgd29yayBmb3IgYSAxMDMxIGV4Y2hhbmdlLCAyMDI2IE5OTiBjYXAgcmF0ZXMgYnkgdGVuYW50LCBhbmQgd2hhdCB0byBjaGVjayBiZWZvcmXigKYiXSxbIi8xMDMxLWV4Y2hhbmdlLWRlYWRsaW5lLWhlbHAta2VudHVja3kiLCJVcCBBZ2FpbnN0IGEgMTAzMSBFeGNoYW5nZSBEZWFkbGluZSBpbiBLZW50dWNreT8gV2hhdCB0byBEbyBSaWdodCBOb3ciLCJjb21tIiwiRGF5IDMwIG9mIDQ1IGFuZCBub3RoaW5nIGlkZW50aWZpZWQ/IFdoYXQgdG8gZG8gd2hlbiB5b3VyIDEwMzEgZXhjaGFuZ2UgY2xvY2sgaXMgcnVubmluZyBvdXQsIHlvdXIgYmFja3VwIG9wdGlvbnMsIGFuZOKApiJdLFsiL3VzZGEtbG9hbi1rZW50dWNreSIsIlVTREEgTG9hbnMgaW4gS2VudHVja3k6IDAlIERvd24gRmluYW5jaW5nIGZvciBSdXJhbCBQcm9wZXJ0eSBOZWFyIExvdWlzdmlsbGUgKDIwMjYgR3VpZGUpIiwiYnV5IiwiVVNEQSBSdXJhbCBEZXZlbG9wbWVudCBsb2FucyBvZmZlciAwJSBkb3duIG9uIGVsaWdpYmxlIHByb3BlcnR5IG5lYXIgTG91aXN2aWxsZS4gMjAyNiBpbmNvbWUgbGltaXRzLCBlbGlnaWJsZSBjb3VudGllcyzigKYiXSxbIi92YS1sb2FuLWNhbGN1bGF0b3Ita2VudHVja3kiLCJWQSBMb2FuIENhbGN1bGF0b3IiLCJ0b29sIiwiRnJlZSBWQSBsb2FuIGNhbGN1bGF0b3IgZm9yIEtlbnR1Y2t5IHZldGVyYW5zIGFuZCBzZXJ2aWNlIG1lbWJlcnMuIEVzdGltYXRlIHlvdXIgVkEgZnVuZGluZyBmZWUgYW5kIG1vbnRobHkgcGF5bWVudCwgYW5k4oCmIl0sWyIvdmFsbGV5LXN0YXRpb24tbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtZ3VpZGUiLCJWYWxsZXkgU3RhdGlvbiwgTG91aXN2aWxsZTogSG9tZSBQcmljZXMgJiBOZWlnaGJvcmhvb2QgR3VpZGUiLCJob29kIiwiVmFsbGV5IFN0YXRpb24gTG91aXN2aWxsZSBob21lcyBmb3Igc2FsZTogMjAyNiBwcmljZXMsIHdoYXQncyBzZWxsaW5nIG5lYXIgRGl4aWUgSGlnaHdheSBhbmQgdGhlIE9oaW8gUml2ZXIsIGFuZCB3aG/igKYiXSxbIi9hbm9ueW1vdXMtbW9udGhseS1hZ2VudC1mZWVkYmFjayIsIldlIEFzayBPdXIgQWdlbnRzIFdoYXQgVGhleSBSZWFsbHkgVGhpbmsg4oCUIEV2ZXJ5IE1vbnRoLCBBbm9ueW1vdXNseSIsImFib3V0IiwiRXZlcnkgbW9udGgsIFdpbm5lciBSZWFsdHkgYWdlbnRzIGdldCBhIHR3by1taW51dGUgYW5vbnltb3VzIHN1cnZleSB0byBzaGFyZSBpZGVhcyBhbmQgZmVlZGJhY2sg4oCUIG5vIG5hbWUsIG5vIGVtYWlsLCBub+KApiJdLFsiL3dlLWJ1eS1ob3VzZXMtdnMtbGlzdGluZy13aXRoLWEtcmVhbHRvci1pbi1rZW50dWNreSIsIldlIEJ1eSBIb3VzZXMgdnMuIExpc3RpbmcgV2l0aCBhIFJlYWx0b3IgaW4gS2VudHVja3kiLCJzZWxsIiwiQSBwb3N0Y2FyZCBvciB5YXJkIHNpZ24gb2ZmZXJpbmcgdG8gYnV5IHlvdXIgaG91c2UgZm9yIGNhc2ggcmFpc2VzIGFuIG9idmlvdXMgcXVlc3Rpb246IGhvdyBkb2VzIHRoYXQgYWN0dWFsbHkgY29tcGFyZSB0b+KApiJdLFsiL3dlbmR5LXpvbG5vd3NraSIsIldlbmR5IFpvbG5vd3NraSIsInRlYW0iLCJBdXN0cmFsaWFuLWJvcm4gYWdlbnQgd2l0aCBhIGRlY2FkZS1wbHVzIGluIHRoZSBpbmR1c3RyeS4gU3BlY2lhbGl6ZXMgaW4gc2VsbGVyIHN0YWdpbmcgYW5kIGRlY2x1dHRlcmluZyzigKYiXSxbIi93aGF0LXNlbGxpbmctYXMtaXMtYWN0dWFsbHktbWVhbnMtaW4ta2VudHVja3kiLCJXaGF0IFwiU2VsbGluZyBBcy1Jc1wiIEFjdHVhbGx5IE1lYW5zIGluIEtlbnR1Y2t5Iiwic2VsbCIsIldoYXQgYXMtaXMgbWVhbnMgZm9yIGRpc2Nsb3N1cmVzLCByZXBhaXJzIGFuZCBwcmljZSB3aGVuIHlvdSBzZWxsIGEgS2VudHVja3kgaG91c2UuIl0sWyIvYnV5aW5nLWFjcmVhZ2Uta2VudHVja3ktd2VsbHMtc2VwdGljLXpvbmluZyIsIldoYXQgRmlyc3QtVGltZSBCdXllcnMgTmVlZCB0byBLbm93IEJlZm9yZSBCdXlpbmcgQWNyZWFnZSBpbiBLZW50dWNreTogV2VsbHMsIFNlcHRpYywgYW5kIFpvbmluZyIsImxhbmQiLCJCdXlpbmcgcnVyYWwgbGFuZCBvciBhY3JlYWdlIG5lYXIgTG91aXN2aWxsZSwgS1k/IFdoYXQgZmlyc3QtdGltZSBidXllcnMgbmVlZCB0byBrbm93IGFib3V0IHByaXZhdGUgd2VsbHMsIHNlcHRpY+KApiJdLFsiL3doYXQtaXMtbXktaG91c2Utd29ydGgtbG91aXN2aWxsZSIsIldoYXQgSXMgTXkgSG91c2UgV29ydGggaW4gTG91aXN2aWxsZT8gSG93IFZhbHVhdGlvbiBBY3R1YWxseSBXb3JrcyIsInNlbGwiLCJaaWxsb3cgcHVibGlzaGVzIG5vIGFjY3VyYWN5IGZpZ3VyZSBmb3IgTG91aXN2aWxsZS4gV2hhdCB5b3VyIGhvdXNlIGlzIHJlYWxseSB3b3J0aCwgaG93IHRoZSB0aHJlZSB2YWx1YXRpb24gbWV0aG9kc+KApiJdLFsiL2Z1cm5pc2hpbmctY29zdC1taWR0ZXJtLXJlbnRhbC1sb3Vpc3ZpbGxlIiwiV2hhdCBJdCBDb3N0cyB0byBGdXJuaXNoIGEgTG91aXN2aWxsZSBSZW50YWwgZm9yIE1pZHRlcm0gVGVuYW50cyIsInN0ciIsIkl0ZW1pemVkIDIwMjYgY29zdHMgdG8gZnVybmlzaCBhIExvdWlzdmlsbGUgcmVudGFsIGZvciBtaWR0ZXJtIHRlbmFudHMg4oCUIGJ1eSB2cy4gcmVudCBmdXJuaXR1cmUsIHJvb20tYnktcm9vbSBidWRnZXTigKYiXSxbIi9ob21lLXZhbHVlIiwiV2hhdCdzIG15IGhvbWUgd29ydGg/IEluc3RhbnQgaG9tZSB2YWx1ZSBlc3RpbWF0b3IiLCJzZWxsIiwiUGljayB5b3VyIFpJUCwgc3F1YXJlIGZvb3RhZ2UgYW5kIGNvbmRpdGlvbiBhbmQgZ2V0IGFuIGluc3RhbnQgdmFsdWUgcmFuZ2UgZnJvbSByZWFsIGNsb3NlZCBzYWxlcy4gTm8gY29udGFjdCBpbmZvIHJlcXVpcmVkLiJdLFsiL2NvLW93bmVycy1kaXNhZ3JlZS1zZWxsaW5nLWhvdXNlLWtlbnR1Y2t5LXBhcnRpdGlvbiIsIldoZW4gQ28tT3duZXJzIENhbid0IEFncmVlIG9uIFNlbGxpbmcgYSBIb3VzZSBpbiBLZW50dWNreSIsInRvdWdoIiwiU2libGluZ3MsIGV4ZXMsIG9yIHBhcnRuZXJzIHdobyBvd24gYSBob3VzZSB0b2dldGhlciBhbmQgY2FuJ3QgYWdyZWU/IEJ1eW91dHMsIG1lZGlhdGlvbiwgYW5kIGhvdyBhIEtlbnR1Y2t5IHBhcnRpdGlvbuKApiJdLFsiL3doby1wYXlzLXRheGVzLXNlbGxpbmctaG91c2Uta2VudHVja3kiLCJXaG8gUGF5cyBUYXhlcyBXaGVuIFlvdSBTZWxsIGEgSG91c2UgaW4gS2VudHVja3k/Iiwic2VsbCIsIlRyYW5zZmVyIHRheCwgcHJvcGVydHkgdGF4IHByb3JhdGlvbnMsIGFuZCBjYXBpdGFsIGdhaW5zIG9uIGEgS2VudHVja3kgaG9tZSBzYWxlOiB3aG8gcGF5cyB3aGF0LCB3aGVuLCBhbmQgdGhlIGV4Y2x1c2lvbnPigKYiXSxbIi93aG9sZXNhbGUtb2ZmZXItY2FsY3VsYXRvci1sb3Vpc3ZpbGxlIiwiV2hvbGVzYWxlIE9mZmVyIChNQU8pIENhbGN1bGF0b3IgZm9yIExvdWlzdmlsbGU6IFRoZSA3MCUgUnVsZSwgS2VudHVja3kgUmVwYWlyIENvc3RzIGFuZCBIQiA2MiIsInRvb2wiLCJGcmVlIE1BTyBjYWxjdWxhdG9yIGZvciBMb3Vpc3ZpbGxlIHdob2xlc2FsZXJzOiBBUlYsIGxvY2FsIHJlcGFpciBjb3N0cywgeW91ciBhc3NpZ25tZW50IGZlZSwgdGhlIGVuZCBidXllcidzIHByb2ZpdCwgYW5k4oCmIl0sWyIvc2VsbC1haXJibmItc2hvcnQtdGVybS1yZW50YWwta2VudHVja3kiLCJXaHkgQWlyYm5iICYgU2hvcnQtVGVybSBSZW50YWwgT3duZXJzIFJlYWNoIE91dCB0byBXaW5uZXIgUmVhbHR5Iiwic2VsbCIsIlRoaW5raW5nIGFib3V0IHNlbGxpbmcgeW91ciBMb3Vpc3ZpbGxlIEFpcmJuYiBvciBzaG9ydC10ZXJtIHJlbnRhbD8gSGVyZSdzIGhvdyBDVVAgdHJhbnNmZXJzLCByZWdpc3RyYXRpb24sIGFuZCBib29raW5n4oCmIl0sWyIvd2h5LWJlY29tZS1hLXdpbm5lci1yZWFsdHktYWdlbnQiLCJXaHkgQmVjb21lIGEgV2lubmVyIFJlYWx0eSBBZ2VudCIsImFnZW50cyIsIlNlZSBob3cgV2lubmVyIFJlYWx0eSBnZXRzIGV2ZXJ5IGxpc3RpbmcgaW4gZnJvbnQgb2YgbW9yZSBidXllcnMgdGhhbiBhbnkgYnJva2VyYWdlIGluIHRoZSBjb3VudHJ5IOKAlCBhbmQgd2h5IGFnZW50cyBqb2luIHVzLiJdLFsiL2Rpc3RyZXNzZWQtbXVsdGlmYW1pbHktc2VsbGVycy1sb3Vpc3ZpbGxlIiwiV2h5IERpc3RyZXNzZWQgTXVsdGlmYW1pbHkgT3duZXJzIFJlYWNoIE91dCB0byBXaW5uZXIgUmVhbHR5IiwiY29tbSIsIkZhY2luZyBhIG1hdHVyaW5nIGxvYW4sIG5lZ2F0aXZlIGxldmVyYWdlLCBvciBhIGZvcmNlZCBtdWx0aWZhbWlseSBzYWxlIGluIExvdWlzdmlsbGUsIExleGluZ3Rvbiwgb3IgU291dGhlcm4gSW5kaWFuYT/igKYiXSxbIi93aHktZGl2ZXJzaXR5LW1hdHRlcnMtYXQtd2lubmVyLXJlYWx0eSIsIldoeSBEaXZlcnNpdHkgTWF0dGVycyBhdCBXaW5uZXIgUmVhbHR5IiwiYWJvdXQiLCJFdmVyeSBidXllciBhbmQgc2VsbGVyIGRlc2VydmVzIHRoZSBzYW1lIHN0YW5kYXJkIG9mIGNhcmUuIFNlZSBob3cgV2lubmVyIFJlYWx0eSBwdXRzIGVxdWFsIHNlcnZpY2UgYW5kIEZhaXIgSG91c2luZyBpbnRv4oCmIl0sWyIvZGlzdHJlc3NlZC1ob21lLXNlbGxlcnMta2VudHVja3kiLCJXaHkgSG9tZW93bmVycyBGYWNpbmcgYSBEaWZmaWN1bHQgU2l0dWF0aW9uIFJlYWNoIE91dCB0byBXaW5uZXIgUmVhbHR5IiwidG91Z2giLCJGYWNpbmcgZGl2b3JjZSwgam9iIGxvc3MsIGFuIGluaGVyaXRlZCBob3VzZSwgb3IgZmFsbGluZyBiZWhpbmQgb24gcGF5bWVudHMgaW4gS2VudHVja3k/IEhlcmUncyBob3cgV2lubmVyIFJlYWx0eSBoZWxwc+KApiJdLFsiL3doeS1pbnZlc3QtaW4tbG91aXN2aWxsZS1jb21tZXJjaWFsLXJlYWwtZXN0YXRlIiwiV2h5IEludmVzdCBpbiBMb3Vpc3ZpbGxlIENvbW1lcmNpYWwgUmVhbCBFc3RhdGUgKDIwMjYpIiwiY29tbSIsIkxvdWlzdmlsbGUgQ1JFIGJ5IHRoZSBudW1iZXJzOiBOby4gMyBjYXJnbyBhaXJwb3J0LCBpbmR1c3RyaWFsIHJlbnRzIHVwIDcuMiUsIDMuMSUgcmV0YWlsIHZhY2FuY3ksIDguMyUgY2FwIHJhdGVzLCBLWeKApiJdLFsiL3doeS1pbnZlc3QtaW4tc291dGhlcm4taW5kaWFuYS1jb21tZXJjaWFsLXJlYWwtZXN0YXRlIiwiV2h5IEludmVzdCBpbiBTb3V0aGVybiBJbmRpYW5hIENvbW1lcmNpYWwgUmVhbCBFc3RhdGUgKEplZmZlcnNvbnZpbGxlLCBDbGFya3N2aWxsZSwgTmV3IEFsYmFueSkiLCJjb21tIiwiUml2ZXIgUmlkZ2UsIHRoZSBFYXN0IEVuZCBicmlkZ2UsIEluZGlhbmEncyA0LjklIGNvcnBvcmF0ZSB0YXgsIDElLzIlLzMlIHByb3BlcnR5IHRheCBjYXBzLCBDbGFyayBDb3VudHkgZ3Jvd3RoLCBhbmQgdGhl4oCmIl0sWyIvdXBzLXdvcmxkcG9ydC1sb3Vpc3ZpbGxlLWxvZ2lzdGljcy1yZWFsLWVzdGF0ZSIsIldoeSBVUFMgV29ybGRwb3J0IElzIHRoZSBSZWFsIFJlYXNvbiB0byBXYXRjaCBMb3Vpc3ZpbGxlIExvZ2lzdGljcyBSZWFsIEVzdGF0ZSIsImNvbW0iLCJXaHkgVVBTIFdvcmxkcG9ydCBhbmQgYSB0b3AtZml2ZSBnbG9iYWwgY2FyZ28gYWlycG9ydCwgbm90IHJlY3ljbGVkIGRyaXZlLXRpbWUgY2xhaW1zLCBhcmUgdGhlIHJlYWwgc3RvcnkgYmVoaW5k4oCmIl0sWyIvd2h5LXdpbm5lci1yZWFsdHktZm9yLWNvbW1lcmNpYWwtcmVhbC1lc3RhdGUiLCJXaHkgV2lubmVyIFJlYWx0eSBmb3IgQ29tbWVyY2lhbCAmIEludmVzdG1lbnQgUmVhbCBFc3RhdGUiLCJjb21tIiwiV2lubmVyIFJlYWx0eSByZXByZXNlbnRzIGNvbW1lcmNpYWwgYW5kIGludmVzdG1lbnQgcHJvcGVydHkgYnV5ZXJzLCBzZWxsZXJzLCBhbmQgaW52ZXN0b3JzIGFjcm9zcyBMb3Vpc3ZpbGxlIOKAlOKApiJdLFsiL3doeS13aW5uZXItcmVhbHR5IiwiV2h5IFdpbm5lciBSZWFsdHk6IFRoZSBHdWFyYW50ZWVzIEJlaGluZCBPdXIgU3lzdGVtcyIsImFib3V0IiwiV2lubmVyIFJlYWx0eSBiYWNrcyBpdHMgcHJvbWlzZXMgd2l0aCBuYW1lZCBndWFyYW50ZWVzLCBsaWtlIHRoZSAzLURheSBMaXN0aW5nIEd1YXJhbnRlZSBhbmQgMTUtTWludXRlIFJlc3BvbnNlIFJ1bGUsIGlu4oCmIl0sWyIvd2luZHktaGlsbHMtc2VuZWNhLWdhcmRlbnMta3ktcmVhbC1lc3RhdGUtZ3VpZGUiLCJXaW5keSBIaWxscyBhbmQgU2VuZWNhIEdhcmRlbnMsIEtZIFJlYWwgRXN0YXRlIEd1aWRlIiwiaG9vZCIsIkhvbWVzIGZvciBzYWxlIGluIFdpbmR5IEhpbGxzIGFuZCBTZW5lY2EgR2FyZGVucywgS2VudHVja3kuIE1MUy1zb3VyY2VkIHByaWNpbmcgYW5kIGxvY2FsIGluc2lnaHQgb24gdGhlc2Ugc21hbGwgRWFzdCBFbmTigKYiXSxbIi93aW5uZXItcmVhbHR5LWJ5LXRoZS1udW1iZXJzIiwiV2lubmVyIFJlYWx0eSBieSB0aGUgTnVtYmVycyIsImFib3V0IiwiRXZlcnkgV2lubmVyIFJlYWx0eSBsaXN0aW5nIHNvbGQgYXQgMTAwJSBvZiBsaXN0IHByaWNlIGluIHRoZSBsYXN0IDEyIG1vbnRocywgaW4gMjEgZGF5cyBvbiBhdmVyYWdlIHZzLiAzNyBhY3Jvc3PigKYiXSxbIi9jb21tZXJjaWFsLXJlYWwtZXN0YXRlLXRlYW0tbG91aXN2aWxsZSIsIldpbm5lciBSZWFsdHkgQ29tbWVyY2lhbCBUZWFtOiBUcmFjayBSZWNvcmQgYW5kIENyZWRlbnRpYWxzIiwiY29tbSIsIk1lZXQgdGhlIFdpbm5lciBSZWFsdHkgY29tbWVyY2lhbCB0ZWFtOiBSb2IgQmVyZ2Vyb24gKDIsMDAwKyB0cmFuc2FjdGlvbnMgc2luY2UgMjAxMyksIFByaW5jaXBhbCBCcm9rZXIgTGlzYSBUdWNrZXIsIGFuZOKApiJdLFsiL3dpbm5lci1yZWFsdHktYnJva2VyYWdlLXNwaXJpdC1ob25vcnMiLCJXaW5uZXIgUmVhbHR5IE5hbWVkIGEgQnJva2VyYWdlIFNwaXJpdCBIb25vcmVlIGJ5IHRoZSBHcmVhdGVyIExvdWlzdmlsbGUgQXNzb2NpYXRpb24gb2YgUkVBTFRPUlPCriIsImFib3V0IiwiV2lubmVyIFJlYWx0eSB3YXMgbmFtZWQgYSBCcm9rZXJhZ2UgU3Bpcml0IEhvbm9yZWUgYnkgdGhlIEdyZWF0ZXIgTG91aXN2aWxsZSBBc3NvY2lhdGlvbiBvZiBSRUFMVE9SU8KuIGZvciBidWlsZGluZ+KApiJdLFsiL2VtcG93ZXJpbmctYWdlbnRzLXdpdGgtdGVjaG5vbG9neSIsIldpbm5lciBSZWFsdHk6IFdoZXJlIFRvcCBBZ2VudHMgQ29tZSB0byBMZXZlbCBVcCIsImFib3V0IiwiQXQgV2lubmVyIFJlYWx0eSwgd2UgZXF1aXAgb3VyIGFnZW50cyB3aXRoIG1vcmUgdGhhbiBqdXN0IG1lbnRvcnNoaXAg4oCUIHdlIGdpdmUgeW91IHRoZSBpbmZyYXN0cnVjdHVyZSB0byBzY2FsZS4gSGVyZeKAmXPigKYiXSxbIi93aW5uZXItc2VydmljZXMiLCJXaW5uZXIgU2VydmljZXMiLCJhYm91dCIsIldpbm5lciBTZXJ2aWNlcyBnaXZlcyBXaW5uZXIgUmVhbHR5IGFnZW50cyBlc3RhYmxpc2hlZCwgcmVhZHktdG8tZWFybiB3YXlzIHRvIGdyb3cgdGhlaXIgaW5jb21lIGJleW9uZCBidXktc2lkZSBhbmTigKYiXSxbIi93cmFwYXJvdW5kLW1vcnRnYWdlLWtlbnR1Y2t5IiwiV3JhcGFyb3VuZCBNb3J0Z2FnZXMgaW4gS2VudHVja3k6IEhvdyBUaGV5IFdvcmsgYW5kIFdobyBDYXJyaWVzIHRoZSBSaXNrIiwiY3JlYXRpdmUiLCJObyBLZW50dWNreSBzdGF0dXRlIG1lbnRpb25zIHdyYXBhcm91bmRzLCBidXQgZmVkZXJhbCBydWxlcyBuYW1lIHRoZW0uIFdoYXQgR2Fybi1TdCBHZXJtYWluLCBSZWd1bGF0aW9uIFogYW5kIEtlbnR1Y2t54oCmIl0sWyIvbG91aXN2aWxsZS1zb3V0aGVybi1pbmRpYW5hLWhpc3RvcnkiLCJXcml0dGVuIGluIHRoZSBSb2NrOiBIb3cgTG91aXN2aWxsZSBhbmQgU291dGhlcm4gSW5kaWFuYSBDYW1lIHRvIEJlIiwibG9jYWwiLCJIb3cgYSAzOTAtbWlsbGlvbi15ZWFyLW9sZCByZWVmIGJ1aWx0IExvdWlzdmlsbGUgYW5kIFNvdXRoZXJuIEluZGlhbmEg4oCUIHRoZSByZWFsIGhpc3RvcnkgYmVoaW5kIHRoZSBtYXJrZXQgV2lubmVyIFJlYWx0eeKApiJdLFsiL3JlbW90ZS1yZWFsLWVzdGF0ZS1pbnZlc3Rvci10ZWFtLWxvdWlzdmlsbGUiLCJZb3VyIEJvb3RzIG9uIHRoZSBHcm91bmQ6IEJ1aWxkaW5nIGEgTG91aXN2aWxsZSBSZWFsIEVzdGF0ZSBUZWFtIFdoZW4gWW91IExpdmUgT3V0IG9mIFN0YXRlIiwicmVtb3RlIiwiSG93IGxvbmctZGlzdGFuY2UgaW52ZXN0b3JzIGJ1aWxkIGEgcmVsaWFibGUgTG91aXN2aWxsZSB0ZWFtOiBhZ2VudCwgbGVuZGVyLCB0aXRsZSwgaW5zcGVjdG9yLCBjb250cmFjdG9yLCBwcm9wZXJ0eeKApiJdLFsiL3ByaXZhY3ktcG9saWN5IiwiUHJpdmFjeSBwb2xpY3kiLCJhYm91dCIsIkxlYXJuIGhvdyBXaW5uZXIgUmVhbHR5IHByb3RlY3RzIHlvdXIgZGF0YSBhbmQgcHJpdmFjeSB3aGlsZSBkZWxpdmVyaW5nIG91dHN0YW5kaW5nIHJlYWwgZXN0YXRlIHNlcnZpY2VzLiJdLFsiL2dsYXItbWVtYmVyLWJlbmVmaXRzLWd1aWRlLWtlbnR1Y2t5LXJlYWx0b3JzIiwiWW91ciBHTEFSIER1ZXMgUGF5IGZvciBNb3JlIFRoYW4gWW91IFRoaW5rOiBBIEtlbnR1Y2t5IEFnZW50J3MgR3VpZGUgdG8gRXZlcnkgTWVtYmVyIEJlbmVmaXQgKDIwMjYpIiwiYWdlbnRzIiwiQSBMb3Vpc3ZpbGxlIFJlYWx0b3IncyBwbGFpbi1FbmdsaXNoIGd1aWRlIHRvIGV2ZXJ5IEdMQVIsIEFQRVggTUxTLCBLZW50dWNreSBSRUFMVE9SUyBhbmQgTkFSIGJlbmVmaXQ6IHdoYXQgaXQgZG9lcyzigKYiXSxbIi93YXlzLXRvLXNlbGwteW91ci1ob3VzZS1sb3Vpc3ZpbGxlLW9wdGlvbnMiLCJZb3VyIE9wdGlvbnM6IEV2ZXJ5IFdheSB0byBTZWxsIFlvdXIgSG91c2UgaW4gTG91aXN2aWxsZSwgU2lkZSBieSBTaWRlIiwic2VsbCIsIkxpc3QgaXQsIHNlbGwgZm9yIGNhc2gsIG5vdmF0aW9uLCBzZWxsZXIgZmluYW5jaW5nLCBvciBhIHNob3J0IHNhbGUuIFRoZSByZWFsIG1hdGggb24gZXZlcnkgd2F5IHRvIHNlbGwgYSBMb3Vpc3ZpbGxl4oCmIl0sWyIvZmFxIiwiRkFROiB5b3VyIHF1ZXN0aW9ucyBhbnN3ZXJlZCIsImFib3V0IiwiRGlzY292ZXIgYW5zd2VycyB0byB5b3VyIHF1ZXN0aW9ucyBhYm91dCBXaW5uZXIgUmVhbHR5IGFuZCBvdXIgc2VydmljZXMuIl0sWyIvem9uaW5nLXN0cmF0ZWd5LWdyb3VwLWhvbWVzLWxvdWlzdmlsbGUtb3ItY29tbWVyY2lhbC1pbmR1c3RyaWFsIiwiWm9uaW5nIFN0cmF0ZWd5IGZvciBHcm91cCBIb21lcyBpbiBMb3Vpc3ZpbGxlOiBPUiwgQ29tbWVyY2lhbCAmIEluZHVzdHJpYWwgRGlzdHJpY3RzIEV4cGxhaW5lZCIsImdyb3VwIiwiQSBwcmFjdGljYWwgYnJlYWtkb3duIG9mIExvdWlzdmlsbGUncyBPUiwgY29tbWVyY2lhbCwgYW5kIGluZHVzdHJpYWwtYWRqYWNlbnQgem9uaW5nIGRpc3RyaWN0cyBmb3IgZ3JvdXAgaG9tZXMgYW5k4oCmIl0sWyJodHRwczovL3NlYXJjaC50aGV3aW5uZXJyZWFsdHkuY29tL2lkeC9zZWFyY2gvYmFzaWMiLCJTZWFyY2ggZXZlcnkgTG91aXN2aWxsZSBob21lIGZvciBzYWxlIChsaXZlIE1MUykiLCJidXkiLCJMaXZlIE1MUyBsaXN0aW5ncywgdXBkYXRlZCBhbGwgZGF5LiBTYXZlIGEgc2VhcmNoIGFuZCBnZXQgbmV3IG1hdGNoZXMgYnkgZW1haWwuIl0sWyJodHRwczovL3NlYXJjaC50aGV3aW5uZXJyZWFsdHkuY29tL2kvbG91aXN2aWxsZS1vcGVuLWhvdXNlcyIsIlRoaXMgd2VlaydzIG9wZW4gaG91c2VzIiwiYnV5IiwiRXZlcnkgb3BlbiBob3VzZSBpbiB0aGUgTG91aXN2aWxsZSBhcmVhIHRoaXMgd2Vlay4iXSxbImh0dHBzOi8vb2ZmbWFya2V0LmRlYWxzLyIsIk9mZk1hcmtldC5kZWFsczogcHJpdmF0ZSBpbnZlc3RvciBtYXJrZXRwbGFjZSIsImludmVzdCIsIk9mZi1tYXJrZXQgZGVhbHMgZm9yIGludmVzdG9ycywgcGx1cyBhIGNhc2gtb2ZmZXIgcGF0aCBmb3Igc2VsbGVycy4iXSxbImh0dHBzOi8vd3d3LnRoZW1vcm5pbmdiZXJnZXJvbi5jb20vIiwiVGhlIE1vcm5pbmcgQmVyZ2Vyb24gKGZyZWUgZGFpbHkgbmV3c2xldHRlcikiLCJhYm91dCIsIlJvYidzIGRhaWx5IExvdWlzdmlsbGUgcmVhbCBlc3RhdGUgbmV3c2xldHRlci4iXV07CiAgdmFyIENBVFMgPSB7CiAgICBidXk6IFsnQnV5aW5nIGEgSG9tZScsICcvYnV5J10sIHNlbGw6IFsnU2VsbGluZyBhIEhvbWUnLCAnL3NlbGwnXSwKICAgIHRvdWdoOiBbJ1NlbGxpbmcgaW4gYSBUb3VnaCBTcG90JywgJy9zZWxsaW5nLWEtaG91c2UtaW4tYS10b3VnaC1zcG90LWtlbnR1Y2t5J10sCiAgICB0b29sOiBbJ1Rvb2xzICYgQ2FsY3VsYXRvcnMnLCAnL3Rvb2xzJ10sIGNvbW06IFsnQ29tbWVyY2lhbCBSZWFsIEVzdGF0ZScsICcvbG91aXN2aWxsZS1jb21tZXJjaWFsLXJlYWwtZXN0YXRlJ10sCiAgICBob29kOiBbJ05laWdoYm9yaG9vZHMgJiBBcmVhcycsICcvbG91aXN2aWxsZS1uZWlnaGJvcmhvb2RzJ10sIGVzOiBbJ0VuIEVzcGHDsW9sJywgJy9yZWFsLWVzdGF0ZS1lbi1lc3Bhbm9sLWxvdWlzdmlsbGUnXSwKICAgIGludmVzdDogWydJbnZlc3RpbmcgJiBSZW50YWxzJywgJy9mb3ItaW52ZXN0b3JzJ10sIGNyZWF0aXZlOiBbJ0NyZWF0aXZlIEZpbmFuY2luZyAmIFdob2xlc2FsaW5nJywgJ0c6Y3JlYXRpdmUtZmluYW5jaW5nLWFuZC13aG9sZXNhbGluZyddLAogICAgc3RyOiBbJ1Nob3J0LSAmIE1pZHRlcm0gUmVudGFscycsICdHOnNob3J0LXRlcm0tYW5kLW1pZHRlcm0tcmVudGFscyddLCByZW1vdGU6IFsnT3V0LW9mLVN0YXRlICYgSW50ZXJuYXRpb25hbCBJbnZlc3RvcnMnLCAnRzpvdXQtb2Ytc3RhdGUtYW5kLWludGVybmF0aW9uYWwtaW52ZXN0b3JzJ10sCiAgICByZWxvYzogWydSZWxvY2F0aW5nIHRvIExvdWlzdmlsbGUnLCAnRzpyZWxvY2F0aW5nLXRvLXRoZS1hcmVhJ10sIGxhbmQ6IFsnRmFybXMsIExhbmQgJiBBY3JlYWdlJywgJ0c6ZmFybXMtbGFuZC1hbmQtYWNyZWFnZSddLAogICAgbG9jYWw6IFsnQ29tbXVuaXR5ICYgTG9jYWwgTGlmZScsICdHOmNvbW11bml0eS1oaXN0b3J5LWFuZC1sb2NhbC1saWZlJ10sIGdyb3VwOiBbJ0dyb3VwIEhvbWVzICYgUmVjb3ZlcnkgUmVzaWRlbmNlcycsICdHOmdyb3VwLWhvbWVzLWFuZC1yZWNvdmVyeS1yZXNpZGVuY2VzJ10sCiAgICBhZ2VudHM6IFsnRm9yIFJlYWwgRXN0YXRlIEFnZW50cycsICcvam9pbiddLCBhYm91dDogWydBYm91dCBXaW5uZXIgUmVhbHR5JywgJy9vdXItc3RvcnknXSwgdGVhbTogWydPdXIgVGVhbScsICcvb3VyLXN0b3J5J10sCiAgICByZW50OiBbJ1JlbnRpbmcgJiBMYW5kbG9yZHMnLCAnL3JlbnRpbmctYS1ob21lLWluLWxvdWlzdmlsbGUta2VudHVja3knXSwgcmVwb3J0OiBbJ01hcmtldCBSZXBvcnRzJywgJy9sb3Vpc3ZpbGxlLWhvdXNpbmctbWFya2V0LXJlcG9ydCddLAogICAgY29udGFjdDogWydHZXQgaW4gVG91Y2gnLCAnL3NjaGVkdWxpbmcnXSwgZ3VpZGVzOiBbJ0d1aWRlcycsICcvbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZXMnXQogIH07CiAgdmFyIEdVSURFUyA9ICcvbG91aXN2aWxsZS1yZWFsLWVzdGF0ZS1ndWlkZXMnOwogIGZ1bmN0aW9uIGNhdEhyZWYoYykgeyB2YXIgaCA9IENBVFNbY10gJiYgQ0FUU1tjXVsxXTsgaWYgKCFoKSByZXR1cm4gR1VJREVTOyByZXR1cm4gaC5pbmRleE9mKCdHOicpID09PSAwID8gR1VJREVTICsgJyMnICsgaC5zbGljZSgyKSA6IGg7IH0KICB2YXIgQlkgPSB7fTsgSURYLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgQllbclswXV0gPSByOyB9KTsKICB2YXIgRVNfUEFUSFMgPSBJRFguZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiByWzJdID09PSAnZXMnOyB9KS5tYXAoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHJbMF07IH0pOwogIHZhciBJU19FUyA9IEVTX1BBVEhTLmluZGV4T2YoUEFUSCkgIT09IC0xOwoKICB2YXIgQyA9IHsgY29yYWw6ICcjRkY2RTRFJywgaW5rOiAnI2ZmZicsIG11dGU6ICcjYjliOWI5JywgbGluZTogJyMzYTNhM2EnLCBjYXJkOiAnIzFiMWIxYicsIGJnOiAnIzExMScgfTsKICB2YXIgRk9OVF9IID0gIidHb3RoaWMgQTEnLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmIiwgRk9OVF9CID0gIidSb2JvdG8gU2VyaWYnLEdlb3JnaWEsc2VyaWYiOwogIGZ1bmN0aW9uIGVzYyhzKSB7IHJldHVybiBTdHJpbmcocykucmVwbGFjZSgvJi9nLCAnJmFtcDsnKS5yZXBsYWNlKC88L2csICcmbHQ7JykucmVwbGFjZSgvPi9nLCAnJmd0OycpLnJlcGxhY2UoLyIvZywgJyZxdW90OycpOyB9CiAgZnVuY3Rpb24gc2x1ZyhzKSB7IHJldHVybiBTdHJpbmcocykudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8mL2csICcgYW5kICcpLnJlcGxhY2UoL1teYS16MC05XSsvZywgJy0nKS5yZXBsYWNlKC9eLSt8LSskL2csICcnKS5zbGljZSgwLCA2MCk7IH0KICBmdW5jdGlvbiBjc3MoaWQsIHR4dCkgeyBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpKSByZXR1cm47IHZhciBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsgcy5pZCA9IGlkOyBzLnRleHRDb250ZW50ID0gdHh0OyBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHMpOyB9CiAgZnVuY3Rpb24gdGl0bGUocCkgeyByZXR1cm4gQllbcF0gPyBCWVtwXVsxXSA6IHA7IH0KCiAgY3NzKCd3ci1uYXYtY3NzJywKICAgICcud3ItY3J1bWJze2ZvbnQtZmFtaWx5OicgKyBGT05UX0ggKyAnO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNTtjb2xvcjonICsgQy5tdXRlICsgJzttYXJnaW46MCAwIDE0cHg7cGFkZGluZzowfScgKwogICAgJy53ci1jcnVtYnMgYSwud3ItY3J1bWJzIHNwYW57Zm9udC1mYW1pbHk6JyArIEZPTlRfSCArICchaW1wb3J0YW50O2ZvbnQtc2l6ZToxNHB4IWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzowIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjUhaW1wb3J0YW50fScgKwogICAgJy53ci1jcnVtYnMgYXtjb2xvcjonICsgQy5tdXRlICsgJyFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50fScgKwogICAgJy53ci1oZHItdG9vbHN7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfScgKwogICAgJy53ci1jcnVtYnMgYTpob3Zlcntjb2xvcjojZmZmIWltcG9ydGFudH0ud3ItY3J1bWJzIHNwYW4uc2Vwe21hcmdpbjowIDhweDtvcGFjaXR5Oi42fScgKwogICAgJy53ci1jcnVtYmJhcntiYWNrZ3JvdW5kOiMwYjBiMGI7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzI2MjYyNn0ud3ItY3J1bWJiYXIgLndyLWNydW1ic3ttYXgtd2lkdGg6MTAwNHB4O21hcmdpbjowIGF1dG87cGFkZGluZzoxMHB4IDE2cHh9JyArCiAgICAnLndyLXRvY3tib3JkZXI6MXB4IHNvbGlkICcgKyBDLmxpbmUgKyAnO2JhY2tncm91bmQ6JyArIEMuY2FyZCArICc7cGFkZGluZzoxOHB4IDIycHg7bWFyZ2luOjIycHggMCAyOHB4O2NvbG9yOiNmZmZ9JyArCiAgICAnLndyLXRvYyBwLndyLXRvYy1oe2ZvbnQtZmFtaWx5OicgKyBGT05UX0ggKyAnO2ZvbnQtc2l6ZToxM3B4O2xldHRlci1zcGFjaW5nOjEuNXB4O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtvcGFjaXR5Oi43NTttYXJnaW46MCAwIDEwcHghaW1wb3J0YW50O2NvbG9yOiNmZmZ9JyArCiAgICAnLndyLXRvYyBvbHttYXJnaW46MDtwYWRkaW5nLWxlZnQ6MjBweDtjb2x1bW5zOjI7Y29sdW1uLWdhcDozMnB4fS53ci10b2MgbGl7bWFyZ2luOjAgMCA2cHg7YnJlYWstaW5zaWRlOmF2b2lkO2NvbG9yOiNmZmY7Zm9udC1zaXplOjE2cHh9JyArCiAgICAnLndyLXRvYyBhe2NvbG9yOiNmZmYhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUhaW1wb3J0YW50fScgKwogICAgJ0BtZWRpYShtYXgtd2lkdGg6NzAwcHgpey53ci10b2Mgb2x7Y29sdW1uczoxfX0nICsKICAgICcud3ItYW5jaG9ye3Njcm9sbC1tYXJnaW4tdG9wOjE3MHB4fScgKwogICAgJy53ci1zYnRue2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgIzU1NTtwYWRkaW5nOjEwcHggMTRweDtmb250LWZhbWlseTonICsgRk9OVF9IICsgJztmb250LXNpemU6MTRweDtjdXJzb3I6cG9pbnRlcjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLWxlZnQ6MTRweDtsaW5lLWhlaWdodDoxfScgKwogICAgJy53ci1zYnRuOmhvdmVye2JvcmRlci1jb2xvcjojZmZmfS53ci1zYnRuIHN2Z3t3aWR0aDoxNnB4O2hlaWdodDoxNnB4fScgKwogICAgJy53ci1lcy1saW5re2NvbG9yOiNmZmYhaW1wb3J0YW50O2ZvbnQtZmFtaWx5OicgKyBGT05UX0ggKyAnO2ZvbnQtc2l6ZToxNHB4O21hcmdpbi1sZWZ0OjE0cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUhaW1wb3J0YW50fScgKwogICAgJ0BtZWRpYShtYXgtd2lkdGg6MTAzM3B4KXsud3Itc2J0biAud3Itc2J0bi10e2Rpc3BsYXk6bm9uZX0ud3Itc2J0bntwYWRkaW5nOjEycHg7bWFyZ2luLWxlZnQ6OHB4fS53ci1lcy1saW5re2Rpc3BsYXk6bm9uZX19JyArCiAgICAnI3dyLXNlYXJjaHtwb3NpdGlvbjpmaXhlZDtpbnNldDowO3otaW5kZXg6MjE0NzQ4MzAwMDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjg2KTtkaXNwbGF5Om5vbmU7b3ZlcmZsb3cteTphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNofScgKwogICAgJyN3ci1zZWFyY2gub3BlbntkaXNwbGF5OmJsb2NrfScgKwogICAgJyN3ci1zZWFyY2ggLndyLXMtYm94e21heC13aWR0aDo3NjBweDttYXJnaW46NnZoIGF1dG8gNDBweDtiYWNrZ3JvdW5kOiMxNTE1MTU7Ym9yZGVyOjFweCBzb2xpZCAjMzMzO3BhZGRpbmc6MjJweDtjb2xvcjojZmZmO2ZvbnQtZmFtaWx5OicgKyBGT05UX0IgKyAnfScgKwogICAgJyN3ci1zZWFyY2ggLndyLXMtdG9we2Rpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpjZW50ZXJ9JyArCiAgICAnI3dyLXNlYXJjaCBpbnB1dHtmbGV4OjE7Zm9udC1zaXplOjE5cHg7cGFkZGluZzoxNHB4IDE2cHg7YmFja2dyb3VuZDojMDAwO2NvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjNTU1O291dGxpbmU6bm9uZTtmb250LWZhbWlseTonICsgRk9OVF9CICsgJzttaW4td2lkdGg6MH0nICsKICAgICcjd3Itc2VhcmNoIGlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjonICsgQy5jb3JhbCArICd9JyArCiAgICAnI3dyLXNlYXJjaCAud3Itcy14e2JhY2tncm91bmQ6bm9uZTtib3JkZXI6MXB4IHNvbGlkICM1NTU7Y29sb3I6I2ZmZjtmb250LXNpemU6MTVweDtwYWRkaW5nOjEzcHggMTRweDtjdXJzb3I6cG9pbnRlcjtmb250LWZhbWlseTonICsgRk9OVF9IICsgJ30nICsKICAgICcjd3Itc2VhcmNoIC53ci1zLWNoaXBze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4O21hcmdpbjoxNHB4IDAgNnB4fScgKwogICAgJyN3ci1zZWFyY2ggLndyLXMtY2hpcHMgYnV0dG9ue2JhY2tncm91bmQ6IzIyMjtjb2xvcjojZGRkO2JvcmRlcjoxcHggc29saWQgIzNhM2EzYTtib3JkZXItcmFkaXVzOjk5OXB4O3BhZGRpbmc6N3B4IDEzcHg7Zm9udC1zaXplOjE0cHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1mYW1pbHk6JyArIEZPTlRfSCArICd9JyArCiAgICAnI3dyLXNlYXJjaCAud3Itcy1jaGlwcyBidXR0b24ub257YmFja2dyb3VuZDonICsgQy5jb3JhbCArICc7Ym9yZGVyLWNvbG9yOicgKyBDLmNvcmFsICsgJztjb2xvcjojMTExfScgKwogICAgJyN3ci1zZWFyY2ggLndyLXMtbWV0YXtmb250LXNpemU6MTRweDtjb2xvcjojYWFhO21hcmdpbjoxMnB4IDAgNnB4O2ZvbnQtZmFtaWx5OicgKyBGT05UX0ggKyAnfScgKwogICAgJyN3ci1zZWFyY2ggdWx7bGlzdC1zdHlsZTpub25lO21hcmdpbjowO3BhZGRpbmc6MH0nICsKICAgICcjd3Itc2VhcmNoIGxpIGF7ZGlzcGxheTpibG9jaztwYWRkaW5nOjEycHggMTJweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjMjYyNjI2O2NvbG9yOiNmZmYhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudH0nICsKICAgICcjd3Itc2VhcmNoIGxpIGE6aG92ZXIsI3dyLXNlYXJjaCBsaSBhLmFjdHtiYWNrZ3JvdW5kOiMyMjJ9JyArCiAgICAnI3dyLXNlYXJjaCAudHtmb250LXNpemU6MTdweDtsaW5lLWhlaWdodDoxLjM1O2Rpc3BsYXk6YmxvY2t9I3dyLXNlYXJjaCAudCBtYXJre2JhY2tncm91bmQ6bm9uZTtjb2xvcjonICsgQy5jb3JhbCArICc7Zm9udC13ZWlnaHQ6NzAwfScgKwogICAgJyN3ci1zZWFyY2ggLmN7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1mYW1pbHk6JyArIEZPTlRfSCArICc7Zm9udC1zaXplOjEycHg7bGV0dGVyLXNwYWNpbmc6LjhweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6JyArIEMuY29yYWwgKyAnO21hcmdpbi10b3A6NHB4fScgKwogICAgJyN3ci1zZWFyY2ggLmR7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTRweDtjb2xvcjojYWFhO2xpbmUtaGVpZ2h0OjEuNDttYXJnaW4tdG9wOjNweH0nICsKICAgICcjd3Itc2VhcmNoIC53ci1zLW1vcmV7bWFyZ2luLXRvcDoxMnB4O2JhY2tncm91bmQ6IzIyMjtjb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgIzQ0NDtwYWRkaW5nOjEwcHggMTRweDtjdXJzb3I6cG9pbnRlcjtmb250LWZhbWlseTonICsgRk9OVF9IICsgJztmb250LXNpemU6MTRweH0nICsKICAgICcjd3Itc2VhcmNoIC53ci1zLWZvb3R7bWFyZ2luLXRvcDoxNnB4O2ZvbnQtc2l6ZToxNXB4O2NvbG9yOiNjY2N9I3dyLXNlYXJjaCAud3Itcy1mb290IGF7Y29sb3I6I2ZmZiFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSFpbXBvcnRhbnR9JyArCiAgICAnLndyLWh1YntiYWNrZ3JvdW5kOicgKyBDLmJnICsgJztjb2xvcjojZmZmO3BhZGRpbmc6NjRweCAwIDU2cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgIzI2MjYyNn0nICsKICAgICcud3ItaHViIC53ci1pbnttYXgtd2lkdGg6MTAwNHB4O21hcmdpbjowIGF1dG87cGFkZGluZzowIDE2cHh9JyArCiAgICAnLndyLWh1YiAud3ItZXllYnJvd3tmb250LWZhbWlseTonICsgRk9OVF9IICsgJztmb250LXNpemU6MTNweDtsZXR0ZXItc3BhY2luZzoxLjVweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6JyArIEMuY29yYWwgKyAnO21hcmdpbjowIDAgOHB4fScgKwogICAgJy53ci1odWIgaDIud3ItaHtmb250LWZhbWlseTonICsgRk9OVF9CICsgJztmb250LXNpemU6MzRweDtsaW5lLWhlaWdodDoxLjI7Y29sb3I6I2ZmZjttYXJnaW46MCAwIDEycHg7Zm9udC13ZWlnaHQ6NDAwfScgKwogICAgJy53ci1odWIgcC53ci1sZWRle2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjEuNTU7Y29sb3I6I2RkZDttYXgtd2lkdGg6NzIwcHg7bWFyZ2luOjAgMCAyOHB4fScgKwogICAgJy53ci1zdGVwc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDI5MHB4LDFmcikpO2dhcDoxNnB4O2NvdW50ZXItcmVzZXQ6d3JzdGVwfScgKwogICAgJy53ci1zdGVwe2JhY2tncm91bmQ6JyArIEMuY2FyZCArICc7Ym9yZGVyOjFweCBzb2xpZCAnICsgQy5saW5lICsgJztwYWRkaW5nOjIwcHggMjBweCAxOHB4O2NvbG9yOiNmZmY7cG9zaXRpb246cmVsYXRpdmV9JyArCiAgICAnLndyLXN0ZXAgLm57Zm9udC1mYW1pbHk6JyArIEZPTlRfSCArICc7Zm9udC1zaXplOjEzcHg7bGV0dGVyLXNwYWNpbmc6MXB4O2NvbG9yOicgKyBDLmNvcmFsICsgJzttYXJnaW46MCAwIDZweDtkaXNwbGF5OmJsb2NrfScgKwogICAgJy53ci1zdGVwIGgze2ZvbnQtZmFtaWx5OicgKyBGT05UX0IgKyAnO2ZvbnQtc2l6ZToyMXB4O2xpbmUtaGVpZ2h0OjEuMztjb2xvcjojZmZmO21hcmdpbjowIDAgOHB4O2ZvbnQtd2VpZ2h0OjQwMH0nICsKICAgICcud3Itc3RlcCBwe2ZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0OjEuNTtjb2xvcjojY2NjO21hcmdpbjowIDAgMTJweH0nICsKICAgICcud3Itc3RlcCB1bHttYXJnaW46MCAwIDEycHg7cGFkZGluZy1sZWZ0OjE4cHh9LndyLXN0ZXAgbGl7bWFyZ2luOjAgMCA2cHg7Zm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MS40O2NvbG9yOiNmZmZ9JyArCiAgICAnLndyLWh1YiBhe2NvbG9yOiNmZmYhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUhaW1wb3J0YW50fS53ci1odWIgYS53ci1jdGF7Y29sb3I6IzExMSFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50fS53ci1odWIgYS53ci10YnRue3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudH0ud3ItaHViIGEud3ItdGJ0bjpob3Zlcntjb2xvcjojMTExIWltcG9ydGFudH0nICsKICAgICcud3ItdGJ0bntkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46NHB4IDZweCAwIDA7cGFkZGluZzo4cHggMTJweDtib3JkZXI6MXB4IHNvbGlkICcgKyBDLmNvcmFsICsgJztjb2xvcjojZmZmIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7Zm9udC1mYW1pbHk6JyArIEZPTlRfSCArICc7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS4yfScgKwogICAgJy53ci10YnRuOmhvdmVye2JhY2tncm91bmQ6JyArIEMuY29yYWwgKyAnO2NvbG9yOiMxMTEhaW1wb3J0YW50fScgKwogICAgJy53ci1jdGF7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXRvcDo2cHg7cGFkZGluZzoxMHB4IDE2cHg7YmFja2dyb3VuZDonICsgQy5jb3JhbCArICc7Y29sb3I6IzExMSFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50O2ZvbnQtZmFtaWx5OicgKyBGT05UX0ggKyAnO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjcwMH0nICsKICAgICcud3ItY29sc3tjb2x1bW5zOjI7Y29sdW1uLWdhcDozNnB4O21hcmdpbjo4cHggMCAwO3BhZGRpbmctbGVmdDoxOHB4fS53ci1jb2xzIGxpe2JyZWFrLWluc2lkZTphdm9pZDttYXJnaW46MCAwIDhweDtmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoxLjQ7Y29sb3I6I2ZmZn0nICsKICAgICdAbWVkaWEobWF4LXdpZHRoOjcwMHB4KXsud3ItY29sc3tjb2x1bW5zOjF9LndyLWh1YiBoMi53ci1oe2ZvbnQtc2l6ZToyN3B4fS53ci1odWJ7cGFkZGluZzo0NHB4IDAgNDBweH19JyArCiAgICAnLndyLWJhbmR7bWFyZ2luOjM2cHggMCAwO3BhZGRpbmc6MjBweDtib3JkZXI6MXB4IHNvbGlkICcgKyBDLmxpbmUgKyAnO2JhY2tncm91bmQ6JyArIEMuY2FyZCArICd9JyArCiAgICAnLndyLWJhbmQgaDN7Zm9udC1mYW1pbHk6JyArIEZPTlRfQiArICc7Zm9udC1zaXplOjIycHg7Y29sb3I6I2ZmZjttYXJnaW46MCAwIDhweDtmb250LXdlaWdodDo0MDB9JyArCiAgICAnLndyLWJhbmQgcHtjb2xvcjojY2NjO2ZvbnQtc2l6ZToxNXB4O21hcmdpbjowIDAgMTBweH0nICsKICAgICcud3ItdGdyaWR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLG1pbm1heCgyMzBweCwxZnIpKTtnYXA6MTJweDttYXJnaW46MTBweCAwIDI2cHh9JyArCiAgICAnLndyLXRjYXJke2Rpc3BsYXk6YmxvY2s7YmFja2dyb3VuZDojZjVmNWY0O2NvbG9yOiMxYTFhMWEhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDtwYWRkaW5nOjE2cHggMTZweCAxNHB4O2JvcmRlcjoxcHggc29saWQgI2UyZTJlMjtib3JkZXItbGVmdDo0cHggc29saWQgJyArIEMuY29yYWwgKyAnfScgKwogICAgJy53ci10Y2FyZDpob3Zlcntib3JkZXItY29sb3I6IzFhMWExYX0ud3ItdGNhcmQgYntkaXNwbGF5OmJsb2NrO2ZvbnQtZmFtaWx5OicgKyBGT05UX0IgKyAnO2ZvbnQtc2l6ZToxN3B4O2xpbmUtaGVpZ2h0OjEuMztjb2xvcjojMWExYTFhO2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW46MCAwIDRweH0nICsKICAgICcud3ItdGNhcmQgc3BhbntkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNDtjb2xvcjojNDQ0fS53ci10Y2FyZCBpe2Rpc3BsYXk6YmxvY2s7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1mYW1pbHk6JyArIEZPTlRfSCArICc7Zm9udC1zaXplOjEycHg7Y29sb3I6IzhhM2EyNjttYXJnaW4tdG9wOjZweDtsZXR0ZXItc3BhY2luZzouNXB4fScgKwogICAgJy53ci1odWJ0b29scyBoMi53ci1zZWN7Zm9udC1mYW1pbHk6JyArIEZPTlRfQiArICc7Zm9udC1zaXplOjI0cHg7bWFyZ2luOjIycHggMCA0cHg7Y29sb3I6aW5oZXJpdDtmb250LXdlaWdodDo0MDB9JyArCiAgICAnLndyLWZpbHRlcnt3aWR0aDoxMDAlO21heC13aWR0aDo1MjBweDtmb250LXNpemU6MTdweDtwYWRkaW5nOjEycHggMTRweDtib3JkZXI6MXB4IHNvbGlkICM2NjY7YmFja2dyb3VuZDojMDAwO2NvbG9yOiNmZmY7bWFyZ2luOjZweCAwIDEwcHg7Zm9udC1mYW1pbHk6JyArIEZPTlRfQiArICd9JyArCiAgICAnLndyLWp1bXB7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHg7bWFyZ2luOjEwcHggMCAxOHB4fScgKwogICAgJy53ci1qdW1wIGF7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzo3cHggMTJweDtib3JkZXI6MXB4IHNvbGlkICM1NTU7Ym9yZGVyLXJhZGl1czo5OTlweDtmb250LWZhbWlseTonICsgRk9OVF9IICsgJztmb250LXNpemU6MTNweDtjb2xvcjojZmZmIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NSFpbXBvcnRhbnR9JyArCiAgICAnLndyLWp1bXAgYTpob3Zlcntib3JkZXItY29sb3I6JyArIEMuY29yYWwgKyAnIWltcG9ydGFudH0ud3ItanVtcCBhIGJ7Y29sb3I6JyArIEMuY29yYWwgKyAnO2ZvbnQtd2VpZ2h0OjQwMDttYXJnaW4tbGVmdDo0cHh9JyArCiAgICAnLndyLW5ld3tmb250LWZhbWlseTonICsgRk9OVF9IICsgJztmb250LXNpemU6MTFweDtsZXR0ZXItc3BhY2luZzoxcHg7Y29sb3I6JyArIEMuY29yYWwgKyAnO21hcmdpbi1sZWZ0OjZweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9JyArCiAgICAnLndyLWhpZGV7ZGlzcGxheTpub25lIWltcG9ydGFudH0nCiAgKTsKCiAgZnVuY3Rpb24gcmVhZHkoZm4pIHsgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZuKTsgZWxzZSBmbigpOyB9CiAgZnVuY3Rpb24gc2FmZShmbikgeyB0cnkgeyBmbigpOyB9IGNhdGNoIChlKSB7IGlmICh3aW5kb3cuY29uc29sZSkgY29uc29sZS53YXJuKCd3ci1uYXYnLCBlKTsgfSB9CgogIC8qIC0tLS0tLS0tLS0gMi4gU2l0ZSBzZWFyY2ggLS0tLS0tLS0tLSAqLwogIHZhciBTWU4gPSB7IGFpcmJuYjogJ3Nob3J0LXRlcm0gc3RyIHJlbnRhbCcsIHN0cjogJ3Nob3J0LXRlcm0gYWlyYm5iJywgaW5oZXJpdDogJ3Byb2JhdGUgaW5oZXJpdGVkJywgaW5oZXJpdGVkOiAncHJvYmF0ZScsIHByb2JhdGU6ICdpbmhlcml0ZWQgaW5oZXJpdGFuY2UnLAogICAgZGl2b3JjZTogJ2Rpdm9yY2UnLCBmb3JlY2xvc3VyZTogJ2ZvcmVjbG9zdXJlIHNob3J0IHNhbGUnLCB0YXhlczogJ3RheCcsIG1vcnRnYWdlOiAnbG9hbiBwYXltZW50JywgcGF5bWVudDogJ21vcnRnYWdlJywKICAgIHdvcnRoOiAndmFsdWUnLCB2YWx1ZTogJ3dvcnRoJywgY2FsY3VsYXRvcjogJ2NhbGN1bGF0b3IgdG9vbCBlc3RpbWF0b3InLCBjYWxjOiAnY2FsY3VsYXRvcicsCiAgICBzY2hvb2w6ICdqY3BzIHNjaG9vbHMnLCBzY2hvb2xzOiAnamNwcyBzY2hvb2wnLCB2YTogJ3ZldGVyYW5zIG1pbGl0YXJ5JywgbWlsaXRhcnk6ICd2ZXRlcmFucyBmb3J0IGtub3gnLCBzcGFuaXNoOiAnZXNwYcOxb2wgZXNwYW5vbCcsCiAgICBlc3Bhbm9sOiAnZXNwYcOxb2wnLCB3aG9sZXNhbGU6ICd3aG9sZXNhbGluZyBhc3NpZ25tZW50JywgZmxpcDogJ3JlaGFiIGJycnJyJywgcmVudDogJ3JlbnRhbCB0ZW5hbnQnLCBsYW5kbG9yZDogJ3RlbmFudCByZW50YWwnLAogICAgY29tbWVyY2lhbDogJ2NvbW1lcmNpYWwnLCBmYXJtOiAnZmFybXMgbGFuZCBhY3JlYWdlIGhvcnNlJywgbGFuZDogJ2FjcmVhZ2UgZmFybScsIGNsb3Npbmc6ICdjbG9zaW5nIGNvc3RzJywgY29zdDogJ2Nvc3RzJywKICAgIGFnZW50OiAnYWdlbnRzIGJyb2tlcmFnZSBqb2luJywgam9iOiAnam9pbiBhZ2VudHMnLCAnMTAzMSc6ICcxMDMxIGV4Y2hhbmdlJywgY2FwOiAnY2FwJyB9OwogIHZhciBDSElQUyA9IFtbJycsICdFdmVyeXRoaW5nJ10sIFsndG9vbCcsICdUb29scyddLCBbJ2J1eScsICdCdXlpbmcnXSwgWydzZWxsJywgJ1NlbGxpbmcnXSwgWyd0b3VnaCcsICdUb3VnaCBzcG90J10sCiAgICBbJ2ludmVzdCcsICdJbnZlc3RpbmcnXSwgWydjb21tJywgJ0NvbW1lcmNpYWwnXSwgWydob29kJywgJ05laWdoYm9yaG9vZHMnXSwgWydlcycsICdFc3Bhw7FvbCddXTsKICB2YXIgSU5WRVNUX0dST1VQID0gWydpbnZlc3QnLCAnY3JlYXRpdmUnLCAnc3RyJywgJ3JlbW90ZScsICdyZW50J107CiAgdmFyIFBPUFVMQVIgPSBbJy9ob21lLXZhbHVlJywgJy9zZWxsZXItbmV0LXByb2NlZWRzLWNhbGN1bGF0b3InLCAnL3Rvb2xzJywgR1VJREVTLCAnL2xvdWlzdmlsbGUtbmVpZ2hib3Job29kcycsICcvbG91aXN2aWxsZS1ob3VzaW5nLW1hcmtldC1yZXBvcnQnLAogICAgJy9zZWxsaW5nLWEtaG91c2UtaW4tYS10b3VnaC1zcG90LWtlbnR1Y2t5JywgJy9ob3ctdG8tZ2V0LXByZS1hcHByb3ZlZC1tb3J0Z2FnZS1rZW50dWNreScsICcvbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtbWF0Y2hlcicsICdodHRwczovL3NlYXJjaC50aGV3aW5uZXJyZWFsdHkuY29tL2kvbG91aXN2aWxsZS1vcGVuLWhvdXNlcyddOwogIGZ1bmN0aW9uIG5vcm0ocykgeyByZXR1cm4gU3RyaW5nKHMgfHwgJycpLnRvTG93ZXJDYXNlKCkubm9ybWFsaXplID8gU3RyaW5nKHMgfHwgJycpLnRvTG93ZXJDYXNlKCkubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bzIAtza9dL2csICcnKSA6IFN0cmluZyhzIHx8ICcnKS50b0xvd2VyQ2FzZSgpOyB9CiAgdmFyIFBSRVAgPSBJRFgubWFwKGZ1bmN0aW9uIChyKSB7CiAgICByZXR1cm4geyByOiByLCB0OiBub3JtKHJbMV0pLCB1OiBub3JtKHJbMF0ucmVwbGFjZSgvXmh0dHBzPzpcL1wvW14vXSsvLCAnJykucmVwbGFjZSgvWy0vXS9nLCAnICcpKSwgZDogbm9ybShyWzNdKSwgYzogbm9ybShDQVRTW3JbMl1dID8gQ0FUU1tyWzJdXVswXSA6ICcnKSB9OwogIH0pOwogIGZ1bmN0aW9uIHNjb3JlKHAsIHRva3MpIHsKICAgIHZhciBzID0gMCwgaGl0ID0gMDsKICAgIHRva3MuZm9yRWFjaChmdW5jdGlvbiAodGspIHsKICAgICAgdmFyIGFsdHMgPSBbdGtdLmNvbmNhdChTWU5bdGtdID8gU1lOW3RrXS5zcGxpdCgnICcpIDogW10pLCBiZXN0ID0gMDsKICAgICAgYWx0cy5mb3JFYWNoKGZ1bmN0aW9uIChhLCBpKSB7CiAgICAgICAgaWYgKCFhKSByZXR1cm47IHZhciB3ID0gaSA9PT0gMCA/IDEgOiAwLjcsIGIgPSAwOwogICAgICAgIHZhciByZSA9IG5ldyBSZWdFeHAoJyhefFteYS16MC05XSknICsgYS5yZXBsYWNlKC9bLiorP14ke30oKXxbXF1cXF0vZywgJ1xcJCYnKSk7CiAgICAgICAgaWYgKHJlLnRlc3QocC50KSkgYiA9IDY7IGVsc2UgaWYgKHJlLnRlc3QocC51KSkgYiA9IDM7IGVsc2UgaWYgKHJlLnRlc3QocC5jKSkgYiA9IDIuNTsgZWxzZSBpZiAocmUudGVzdChwLmQpKSBiID0gMS41OwogICAgICAgIGJlc3QgPSBNYXRoLm1heChiZXN0LCBiICogdyk7CiAgICAgIH0pOwogICAgICBpZiAoYmVzdCkgaGl0Kys7IHMgKz0gYmVzdDsKICAgIH0pOwogICAgaWYgKHAuclsyXSA9PT0gJ3Rvb2wnKSBzICo9IDEuMDg7CiAgICByZXR1cm4gW3MsIGhpdF07CiAgfQogIGZ1bmN0aW9uIGhsKHRleHQsIHRva3MpIHsKICAgIHZhciBvdXQgPSBlc2ModGV4dCk7CiAgICB0b2tzLmZvckVhY2goZnVuY3Rpb24gKHRrKSB7IGlmICh0ay5sZW5ndGggPCAyKSByZXR1cm47IG91dCA9IG91dC5yZXBsYWNlKG5ldyBSZWdFeHAoJygnICsgdGsucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJykgKyAnKScsICdpZycpLCAnPG1hcms+JDE8L21hcms+Jyk7IH0pOwogICAgcmV0dXJuIG91dDsKICB9CiAgdmFyIFMgPSB7IGVsOiBudWxsLCBpbnB1dDogbnVsbCwgbGlzdDogbnVsbCwgbWV0YTogbnVsbCwgY2hpcDogJycsIGFjdDogLTEsIGxpbWl0OiAxMiwgbGFzdDogbnVsbCB9OwogIGZ1bmN0aW9uIGluQ2F0KHIpIHsgaWYgKCFTLmNoaXApIHJldHVybiB0cnVlOyBpZiAoUy5jaGlwID09PSAnaW52ZXN0JykgcmV0dXJuIElOVkVTVF9HUk9VUC5pbmRleE9mKHJbMl0pICE9PSAtMTsgcmV0dXJuIHJbMl0gPT09IFMuY2hpcDsgfQogIGZ1bmN0aW9uIGl0ZW1IdG1sKHIsIHRva3MsIGkpIHsKICAgIHZhciBjYXQgPSBDQVRTW3JbMl1dID8gQ0FUU1tyWzJdXVswXSA6ICcnOwogICAgdmFyIGV4dCA9IC9eaHR0cHM/Oi8udGVzdChyWzBdKTsKICAgIHJldHVybiAnPGxpPjxhIGhyZWY9IicgKyBlc2MoclswXSkgKyAnIiBkYXRhLWk9IicgKyBpICsgJyInICsgKGV4dCA/ICcgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiJyA6ICcnKSArICc+PHNwYW4gY2xhc3M9InQiPicgKyBobChyWzFdLCB0b2tzKSArICc8L3NwYW4+JyArCiAgICAgIChjYXQgPyAnPHNwYW4gY2xhc3M9ImMiPicgKyBlc2MoY2F0KSArICc8L3NwYW4+JyA6ICcnKSArIChyWzNdID8gJzxzcGFuIGNsYXNzPSJkIj4nICsgZXNjKHJbM10pICsgJzwvc3Bhbj4nIDogJycpICsgJzwvYT48L2xpPic7CiAgfQogIGZ1bmN0aW9uIHJlbmRlcigpIHsKICAgIHZhciBxID0gbm9ybShTLmlucHV0LnZhbHVlKS50cmltKCk7IHZhciB0b2tzID0gcS5zcGxpdCgvW15hLXowLTnDsV0rLykuZmlsdGVyKGZ1bmN0aW9uICh0KSB7IHJldHVybiB0Lmxlbmd0aCA+IDEgfHwgL1xkLy50ZXN0KHQpOyB9KTsKICAgIHZhciByZXM7CiAgICBpZiAoIXRva3MubGVuZ3RoKSB7CiAgICAgIHJlcyA9IFMuY2hpcCA/IElEWC5maWx0ZXIoaW5DYXQpIDogUE9QVUxBUi5tYXAoZnVuY3Rpb24gKHApIHsgcmV0dXJuIEJZW3BdOyB9KS5maWx0ZXIoQm9vbGVhbik7CiAgICAgIFMubWV0YS50ZXh0Q29udGVudCA9IFMuY2hpcCA/IChyZXMubGVuZ3RoICsgJyBwYWdlcyBpbiAnICsgQ0FUU1tTLmNoaXBdWzBdKSA6ICdQb3B1bGFyIHJpZ2h0IG5vdyc7CiAgICB9IGVsc2UgewogICAgICB2YXIgc2MgPSBQUkVQLmZpbHRlcihmdW5jdGlvbiAocCkgeyByZXR1cm4gaW5DYXQocC5yKTsgfSkubWFwKGZ1bmN0aW9uIChwKSB7IHZhciB2ID0gc2NvcmUocCwgdG9rcyk7IHJldHVybiBbdlswXSwgcC5yLCB2WzFdXTsgfSk7CiAgICAgIHZhciBmdWxsID0gc2MuZmlsdGVyKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4WzJdID09PSB0b2tzLmxlbmd0aDsgfSk7CiAgICAgIGlmIChmdWxsLmxlbmd0aCkgc2MgPSBmdWxsOwogICAgICB2YXIgdG9wID0gc2MucmVkdWNlKGZ1bmN0aW9uIChtLCB4KSB7IHJldHVybiBNYXRoLm1heChtLCB4WzBdKTsgfSwgMCk7CiAgICAgIHJlcyA9IHNjLmZpbHRlcihmdW5jdGlvbiAoeCkgeyByZXR1cm4geFswXSA+PSAyICYmIHhbMF0gPj0gdG9wICogMC4zOyB9KS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBiWzBdIC0gYVswXTsgfSkubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4WzFdOyB9KTsKICAgICAgUy5tZXRhLnRleHRDb250ZW50ID0gcmVzLmxlbmd0aCA/IChyZXMubGVuZ3RoICsgJyByZXN1bHQnICsgKHJlcy5sZW5ndGggPT09IDEgPyAnJyA6ICdzJykpIDogJ05vIGV4YWN0IG1hdGNoZXMuIFRyeSBmZXdlciB3b3Jkcywgb3IgY2FsbCAoNTAyKSAzMDUtODkxNSBhbmQgYXNrIHVzLic7CiAgICB9CiAgICBTLmxhc3QgPSByZXM7IFMuYWN0ID0gLTE7CiAgICB2YXIgc2hvd24gPSByZXMuc2xpY2UoMCwgUy5saW1pdCk7CiAgICBTLmxpc3QuaW5uZXJIVE1MID0gc2hvd24ubWFwKGZ1bmN0aW9uIChyLCBpKSB7IHJldHVybiBpdGVtSHRtbChyLCB0b2tzLCBpKTsgfSkuam9pbignJyk7CiAgICBTLm1vcmUuc3R5bGUuZGlzcGxheSA9IHJlcy5sZW5ndGggPiBTLmxpbWl0ID8gJycgOiAnbm9uZSc7CiAgICBTLm1vcmUudGV4dENvbnRlbnQgPSAnU2hvdyBhbGwgJyArIHJlcy5sZW5ndGg7CiAgfQogIGZ1bmN0aW9uIG1vdmUoZCkgewogICAgdmFyIGEgPSBTLmxpc3QucXVlcnlTZWxlY3RvckFsbCgnYScpOyBpZiAoIWEubGVuZ3RoKSByZXR1cm47CiAgICBpZiAoUy5hY3QgPj0gMCAmJiBhW1MuYWN0XSkgYVtTLmFjdF0uY2xhc3NMaXN0LnJlbW92ZSgnYWN0Jyk7CiAgICBTLmFjdCA9IChTLmFjdCArIGQgKyBhLmxlbmd0aCkgJSBhLmxlbmd0aDsgYVtTLmFjdF0uY2xhc3NMaXN0LmFkZCgnYWN0Jyk7IGFbUy5hY3RdLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JyB9KTsKICB9CiAgZnVuY3Rpb24gYnVpbGRTZWFyY2goKSB7CiAgICBpZiAoUy5lbCkgcmV0dXJuOwogICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IGVsLmlkID0gJ3dyLXNlYXJjaCc7IGVsLnNldEF0dHJpYnV0ZSgncm9sZScsICdkaWFsb2cnKTsgZWwuc2V0QXR0cmlidXRlKCdhcmlhLW1vZGFsJywgJ3RydWUnKTsgZWwuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ1NlYXJjaCBXaW5uZXIgUmVhbHR5Jyk7CiAgICBlbC5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0id3Itcy1ib3giPjxkaXYgY2xhc3M9IndyLXMtdG9wIj48aW5wdXQgdHlwZT0ic2VhcmNoIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGd1aWRlcywgdG9vbHMsIG5laWdoYm9yaG9vZHPigKYiIGFyaWEtbGFiZWw9IlNlYXJjaCB0aGUgc2l0ZSIgYXV0b2NvbXBsZXRlPSJvZmYiPicgKwogICAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ3ci1zLXgiIGFyaWEtbGFiZWw9IkNsb3NlIHNlYXJjaCI+Q2xvc2U8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPSJ3ci1zLWNoaXBzIj4nICsKICAgICAgQ0hJUFMubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtYz0iJyArIGNbMF0gKyAnIicgKyAoY1swXSA9PT0gJycgPyAnIGNsYXNzPSJvbiInIDogJycpICsgJz4nICsgZXNjKGNbMV0pICsgJzwvYnV0dG9uPic7IH0pLmpvaW4oJycpICsKICAgICAgJzwvZGl2PjxkaXYgY2xhc3M9IndyLXMtbWV0YSI+PC9kaXY+PHVsPjwvdWw+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ3ci1zLW1vcmUiPlNob3cgYWxsPC9idXR0b24+JyArCiAgICAgICc8ZGl2IGNsYXNzPSJ3ci1zLWZvb3QiPkxvb2tpbmcgZm9yIGEgaG91c2U/IDxhIGhyZWY9Imh0dHBzOi8vc2VhcmNoLnRoZXdpbm5lcnJlYWx0eS5jb20vaWR4L3NlYXJjaC9iYXNpYyI+U2VhcmNoIGV2ZXJ5IGhvbWUgZm9yIHNhbGU8L2E+IMK3IDxhIGhyZWY9IicgKyBHVUlERVMgKyAnIj5Ccm93c2UgYWxsIGd1aWRlczwvYT4gwrcgPGEgaHJlZj0iL3Rvb2xzIj5BbGwgdG9vbHM8L2E+PC9kaXY+PC9kaXY+JzsKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWwpOwogICAgUy5lbCA9IGVsOyBTLmlucHV0ID0gZWwucXVlcnlTZWxlY3RvcignaW5wdXQnKTsgUy5saXN0ID0gZWwucXVlcnlTZWxlY3RvcigndWwnKTsgUy5tZXRhID0gZWwucXVlcnlTZWxlY3RvcignLndyLXMtbWV0YScpOyBTLm1vcmUgPSBlbC5xdWVyeVNlbGVjdG9yKCcud3Itcy1tb3JlJyk7CiAgICBTLmlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKCkgeyBTLmxpbWl0ID0gMTI7IHJlbmRlcigpOyB9KTsKICAgIFMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uIChlKSB7CiAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93RG93bicpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyBtb3ZlKDEpOyB9CiAgICAgIGVsc2UgaWYgKGUua2V5ID09PSAnQXJyb3dVcCcpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyBtb3ZlKC0xKTsgfQogICAgICBlbHNlIGlmIChlLmtleSA9PT0gJ0VudGVyJykgeyB2YXIgYSA9IFMubGlzdC5xdWVyeVNlbGVjdG9yQWxsKCdhJyk7IHZhciB0ID0gYVtTLmFjdCA+PSAwID8gUy5hY3QgOiAwXTsgaWYgKHQpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyB0LmNsaWNrKCk7IH0gfQogICAgfSk7CiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHsgaWYgKGUua2V5ID09PSAnRXNjYXBlJykgY2xvc2VTZWFyY2goKTsgfSk7CiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7IGlmIChlLnRhcmdldCA9PT0gZWwpIGNsb3NlU2VhcmNoKCk7IH0pOwogICAgZWwucXVlcnlTZWxlY3RvcignLndyLXMteCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xvc2VTZWFyY2gpOwogICAgUy5tb3JlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgeyBTLmxpbWl0ID0gMTAwMDsgcmVuZGVyKCk7IH0pOwogICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChlbC5xdWVyeVNlbGVjdG9yQWxsKCcud3Itcy1jaGlwcyBidXR0b24nKSwgZnVuY3Rpb24gKGIpIHsKICAgICAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGVsLnF1ZXJ5U2VsZWN0b3JBbGwoJy53ci1zLWNoaXBzIGJ1dHRvbicpLCBmdW5jdGlvbiAoeCkgeyB4LmNsYXNzTGlzdC5yZW1vdmUoJ29uJyk7IH0pOwogICAgICAgIGIuY2xhc3NMaXN0LmFkZCgnb24nKTsgUy5jaGlwID0gYi5nZXRBdHRyaWJ1dGUoJ2RhdGEtYycpOyBTLmxpbWl0ID0gMTI7IHJlbmRlcigpOyBTLmlucHV0LmZvY3VzKCk7CiAgICAgIH0pOwogICAgfSk7CiAgfQogIGZ1bmN0aW9uIG9wZW5TZWFyY2gocSkgewogICAgYnVpbGRTZWFyY2goKTsgUy5lbC5jbGFzc0xpc3QuYWRkKCdvcGVuJyk7IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nOwogICAgaWYgKHR5cGVvZiBxID09PSAnc3RyaW5nJykgUy5pbnB1dC52YWx1ZSA9IHE7IHJlbmRlcigpOyBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgUy5pbnB1dC5mb2N1cygpOyB9LCAzMCk7CiAgfQogIGZ1bmN0aW9uIGNsb3NlU2VhcmNoKCkgeyBpZiAoIVMuZWwpIHJldHVybjsgUy5lbC5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICcnOyB9CiAgd2luZG93LndyT3BlblNlYXJjaCA9IG9wZW5TZWFyY2g7CiAgZnVuY3Rpb24gYWRkU2VhcmNoQnV0dG9uKCkgewogICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy53ci1zYnRuJykpIHJldHVybjsKICAgIHZhciBob3N0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNiLXRvcC1oZWFkZXItY29udGFjdHNfX2NvbnRhY3QtY3RhJykgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNiLXRvcC1oZWFkZXItY29udGFjdHNfX2NvbnRhY3QnKTsKICAgIHZhciBidG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsgYnRuLnR5cGUgPSAnYnV0dG9uJzsgYnRuLmNsYXNzTmFtZSA9ICd3ci1zYnRuJzsgYnRuLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdTZWFyY2ggdGhlIHNpdGUnKTsKICAgIGJ0bi5pbm5lckhUTUwgPSAnPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIuMiIgYXJpYS1oaWRkZW49InRydWUiPjxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjciLz48cGF0aCBkPSJNMjAgMjBsLTQtNCIvPjwvc3ZnPjxzcGFuIGNsYXNzPSJ3ci1zYnRuLXQiPlNlYXJjaCB0aGUgc2l0ZTwvc3Bhbj4nOwogICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgeyBvcGVuU2VhcmNoKCk7IH0pOwogICAgdmFyIGVzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOyBlcy5jbGFzc05hbWUgPSAnd3ItZXMtbGluayc7IGVzLmhyZWYgPSAnL3JlYWwtZXN0YXRlLWVuLWVzcGFub2wtbG91aXN2aWxsZSc7IGVzLnRleHRDb250ZW50ID0gJ0VzcGHDsW9sJzsgZXMuc2V0QXR0cmlidXRlKCdsYW5nJywgJ2VzJyk7CiAgICBpZiAoaG9zdCAmJiBob3N0LnBhcmVudE5vZGUpIHsKICAgICAgdmFyIHdyYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7IHdyYXAuY2xhc3NOYW1lID0gJ3dyLWhkci10b29scyc7CiAgICAgIHdyYXAuYXBwZW5kQ2hpbGQoYnRuKTsgaWYgKCFJU19FUykgd3JhcC5hcHBlbmRDaGlsZChlcyk7CiAgICAgIGhvc3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUod3JhcCwgaG9zdC5uZXh0U2libGluZyk7CiAgICB9IGVsc2UgewogICAgICBidG4uc3R5bGUuY3NzVGV4dCA9ICdwb3NpdGlvbjpmaXhlZDtyaWdodDoxNnB4O3RvcDoxNnB4O3otaW5kZXg6OTk5OTtiYWNrZ3JvdW5kOiMxMTEnOwogICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGJ0bik7CiAgICB9CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHsKICAgICAgaWYgKGUua2V5ID09PSAnLycgJiYgIS9pbnB1dHx0ZXh0YXJlYXxzZWxlY3QvaS50ZXN0KChlLnRhcmdldC50YWdOYW1lIHx8ICcnKSkgJiYgIWUudGFyZ2V0LmlzQ29udGVudEVkaXRhYmxlKSB7IGUucHJldmVudERlZmF1bHQoKTsgb3BlblNlYXJjaCgpOyB9CiAgICB9KTsKICAgIGlmICgvWz8mXXNlYXJjaD0vLnRlc3QobG9jYXRpb24uc2VhcmNoKSkgeyB2YXIgbSA9IGxvY2F0aW9uLnNlYXJjaC5tYXRjaCgvWz8mXXNlYXJjaD0oW14mXSopLyk7IG9wZW5TZWFyY2goZGVjb2RlVVJJQ29tcG9uZW50KG1bMV0ucmVwbGFjZSgvXCsvZywgJyAnKSkpOyB9CiAgfQoKICAvKiAtLS0tLS0tLS0tIDMuIEJyZWFkY3J1bWJzIC0tLS0tLS0tLS0gKi8KICB2YXIgSFVCX05BTUVTID0geyAnL2J1eSc6ICdCdXknLCAnL3NlbGwnOiAnU2VsbCcsICcvdG9vbHMnOiAnVG9vbHMnLCAnL2xvdWlzdmlsbGUtcmVhbC1lc3RhdGUtZ3VpZGVzJzogJ0d1aWRlcycsICcvZm9yLWludmVzdG9ycyc6ICdJbnZlc3QnLAogICAgJy9sb3Vpc3ZpbGxlLW5laWdoYm9yaG9vZHMnOiAnTmVpZ2hib3Job29kcycsICcvbG91aXN2aWxsZS1jb21tZXJjaWFsLXJlYWwtZXN0YXRlJzogJ0NvbW1lcmNpYWwnLCAnL3NlbGxpbmctYS1ob3VzZS1pbi1hLXRvdWdoLXNwb3Qta2VudHVja3knOiAnU2VsbGluZyBpbiBhIFRvdWdoIFNwb3QnLAogICAgJy9yZWFsLWVzdGF0ZS1lbi1lc3Bhbm9sLWxvdWlzdmlsbGUnOiAnRXNwYcOxb2wnLCAnL291ci1zdG9yeSc6ICdPdXIgU3RvcnknLCAnL2pvaW4nOiAnSm9pbiBXaW5uZXIgUmVhbHR5JywgJy9ibG9nJzogJ0xhdGVzdCBwb3N0cycgfTsKICBmdW5jdGlvbiBjcnVtYlRyYWlsKCkgewogICAgaWYgKFBBVEggPT09ICcvJykgcmV0dXJuIG51bGw7CiAgICB2YXIgaG9tZSA9IElTX0VTID8gJ0luaWNpbycgOiAnSG9tZSc7CiAgICBpZiAoSFVCX05BTUVTW1BBVEhdKSByZXR1cm4gW1tob21lLCAnLyddLCBbSFVCX05BTUVTW1BBVEhdLCBudWxsXV07CiAgICB2YXIgciA9IEJZW1BBVEhdOwogICAgdmFyIHQgPSByID8gclsxXSA6IChkb2N1bWVudC50aXRsZS5zcGxpdCgnfCcpWzBdLnRyaW0oKSB8fCAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaDEnKSA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2gxJykudGV4dENvbnRlbnQudHJpbSgpIDogJycpKTsKICAgIGlmICh0Lmxlbmd0aCA+IDcwKSB0ID0gdC5zbGljZSgwLCA2NykucmVwbGFjZSgvXHMrXFMqJC8sICcnKSArICfigKYnOwogICAgaWYgKCFyKSByZXR1cm4gW1tob21lLCAnLyddLCBbdCwgbnVsbF1dOwogICAgdmFyIGMgPSByWzJdLCB0cmFpbCA9IFtbaG9tZSwgJy8nXV07CiAgICB2YXIgaCA9IGNhdEhyZWYoYyk7CiAgICBpZiAoaC5pbmRleE9mKEdVSURFUyArICcjJykgPT09IDApIHRyYWlsLnB1c2goWydHdWlkZXMnLCBHVUlERVNdKTsKICAgIGlmIChoICE9PSBQQVRIKSB0cmFpbC5wdXNoKFtDQVRTW2NdWzBdLCBoXSk7CiAgICB0cmFpbC5wdXNoKFt0LCBudWxsXSk7CiAgICByZXR1cm4gdHJhaWw7CiAgfQogIGZ1bmN0aW9uIGNydW1iSHRtbCh0cmFpbCkgewogICAgcmV0dXJuICc8bmF2IGNsYXNzPSJ3ci1jcnVtYnMiIGFyaWEtbGFiZWw9IkJyZWFkY3J1bWIiPicgKyB0cmFpbC5tYXAoZnVuY3Rpb24gKHgsIGkpIHsKICAgICAgdmFyIGxhc3QgPSBpID09PSB0cmFpbC5sZW5ndGggLSAxOwogICAgICByZXR1cm4gKGkgPyAnPHNwYW4gY2xhc3M9InNlcCIgYXJpYS1oaWRkZW49InRydWUiPuKAujwvc3Bhbj4nIDogJycpICsgKGxhc3QgPyAnPHNwYW4gYXJpYS1jdXJyZW50PSJwYWdlIj4nICsgZXNjKHhbMF0pICsgJzwvc3Bhbj4nIDogJzxhIGhyZWY9IicgKyBlc2MoeFsxXSkgKyAnIj4nICsgZXNjKHhbMF0pICsgJzwvYT4nKTsKICAgIH0pLmpvaW4oJycpICsgJzwvbmF2Pic7CiAgfQogIGZ1bmN0aW9uIGFkZEJyZWFkY3J1bWJzKCkgewogICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy53ci1jcnVtYnMnKSkgcmV0dXJuOwogICAgdmFyIHRyYWlsID0gY3J1bWJUcmFpbCgpOyBpZiAoIXRyYWlsKSByZXR1cm47CiAgICB2YXIgdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zYi1pdGVtLXZpZXcgLnNiLWl0ZW0tdmlld19fdGl0bGUnKTsKICAgIGlmICh0KSB7IHQuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmViZWdpbicsIGNydW1iSHRtbCh0cmFpbCkpOyByZXR1cm47IH0KICAgIHZhciBwcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYi1wYWdlLXN0cnVjdHVyZScpOwogICAgaWYgKHBzKSB7IHZhciBiYXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgYmFyLmNsYXNzTmFtZSA9ICd3ci1jcnVtYmJhcic7IGJhci5pbm5lckhUTUwgPSBjcnVtYkh0bWwodHJhaWwpOyBwcy5pbnNlcnRCZWZvcmUoYmFyLCBwcy5maXJzdENoaWxkKTsgfQogIH0KCiAgLyogLS0tLS0tLS0tLSA0LiAiT24gdGhpcyBwYWdlIiB0YWJsZSBvZiBjb250ZW50cyAtLS0tLS0tLS0tICovCiAgdmFyIE5PX1RPQyA9IFsnL3Rvb2xzJywgR1VJREVTXTsKICBmdW5jdGlvbiBhZGRUb2MoKSB7CiAgICB2YXIgYm9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zYi1pdGVtLXZpZXdfX2JvZHknKTsKICAgIGlmICghYm9keSB8fCBib2R5LnF1ZXJ5U2VsZWN0b3IoJy53ci10b2MnKSB8fCBOT19UT0MuaW5kZXhPZihQQVRIKSAhPT0gLTEpIHJldHVybjsKICAgIGlmIChCWVtQQVRIXSAmJiBCWVtQQVRIXVsyXSA9PT0gJ3Rvb2wnKSByZXR1cm47CiAgICBpZiAoKGJvZHkudGV4dENvbnRlbnQgfHwgJycpLmxlbmd0aCA8IDM1MDApIHJldHVybjsKICAgIHZhciBocyA9IEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJ2gyJyksIGZ1bmN0aW9uIChoKSB7IHJldHVybiAhaC5jbG9zZXN0KCdbaWRePSJ3ci0iXScpICYmIGgudGV4dENvbnRlbnQudHJpbSgpLmxlbmd0aCA+IDE7IH0pOwogICAgaWYgKGhzLmxlbmd0aCA8IDMpIHsKICAgICAgaHMgPSBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoYm9keS5xdWVyeVNlbGVjdG9yQWxsKCcuZGlzcGxheS1sZy1mb250JyksIGZ1bmN0aW9uIChzKSB7CiAgICAgICAgdmFyIHAgPSBzLnBhcmVudEVsZW1lbnQ7IHZhciB0eHQgPSBzLnRleHRDb250ZW50LnRyaW0oKTsKICAgICAgICByZXR1cm4gdHh0Lmxlbmd0aCA+IDIgJiYgdHh0Lmxlbmd0aCA8IDEyMCAmJiBwICYmIHAudGV4dENvbnRlbnQudHJpbSgpID09PSB0eHQgJiYgIXMuY2xvc2VzdCgnW2lkXj0id3ItIl0nKTsKICAgICAgfSkubWFwKGZ1bmN0aW9uIChzKSB7IHJldHVybiBzLnBhcmVudEVsZW1lbnQ7IH0pOwogICAgfQogICAgaWYgKGhzLmxlbmd0aCA8IDMpIHJldHVybjsKICAgIHZhciB1c2VkID0ge307CiAgICB2YXIgaXRlbXMgPSBocy5tYXAoZnVuY3Rpb24gKGgpIHsKICAgICAgdmFyIHR4dCA9IGgudGV4dENvbnRlbnQucmVwbGFjZSgvXHMrL2csICcgJykudHJpbSgpOyB2YXIgaWQgPSBoLmlkIHx8ICgncy0nICsgc2x1Zyh0eHQpKTsKICAgICAgd2hpbGUgKHVzZWRbaWRdKSBpZCArPSAnLTInOyB1c2VkW2lkXSA9IDE7IGguaWQgPSBpZDsgaC5jbGFzc0xpc3QuYWRkKCd3ci1hbmNob3InKTsKICAgICAgcmV0dXJuICc8bGk+PGEgaHJlZj0iIycgKyBpZCArICciPicgKyBlc2ModHh0KSArICc8L2E+PC9saT4nOwogICAgfSk7CiAgICB2YXIgYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbmF2Jyk7IGJveC5jbGFzc05hbWUgPSAnd3ItdG9jJzsgYm94LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIElTX0VTID8gJ0VuIGVzdGEgcMOhZ2luYScgOiAnT24gdGhpcyBwYWdlJyk7CiAgICBib3guaW5uZXJIVE1MID0gJzxwIGNsYXNzPSJ3ci10b2MtaCI+JyArIChJU19FUyA/ICdFbiBlc3RhIHDDoWdpbmEnIDogJ09uIHRoaXMgcGFnZScpICsgJzwvcD48b2w+JyArIGl0ZW1zLmpvaW4oJycpICsgJzwvb2w+JzsKICAgIGhzWzBdLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGJveCwgaHNbMF0pOwogIH0KCiAgLyogLS0tLS0tLS0tLSA1LiBIdWJzOiBCdXkgLyBTZWxsIC8gSW52ZXN0IChuYXRpdmUgbGFuZGluZyBwYWdlcykgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIEwocCwgbGFiZWwpIHsgdmFyIHIgPSBCWVtwXTsgcmV0dXJuICc8bGk+PGEgaHJlZj0iJyArIGVzYyhwKSArICciPicgKyBlc2MobGFiZWwgfHwgKHIgPyByWzFdIDogcCkpICsgJzwvYT48L2xpPic7IH0KICBmdW5jdGlvbiBUKHAsIGxhYmVsKSB7IHJldHVybiAnPGEgY2xhc3M9IndyLXRidG4iIGhyZWY9IicgKyBlc2MocCkgKyAnIicgKyAoL15odHRwcz86Ly50ZXN0KHApID8gJyB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciInIDogJycpICsgJz4nICsgZXNjKGxhYmVsKSArICc8L2E+JzsgfQogIGZ1bmN0aW9uIHN0ZXAobiwgaCwgYmx1cmIsIGxpbmtzLCB0b29scywgY3RhKSB7CiAgICByZXR1cm4gJzxkaXYgY2xhc3M9IndyLXN0ZXAiPjxzcGFuIGNsYXNzPSJuIj5TVEVQICcgKyBuICsgJzwvc3Bhbj48aDM+JyArIGVzYyhoKSArICc8L2gzPjxwPicgKyBlc2MoYmx1cmIpICsgJzwvcD4nICsKICAgICAgKGxpbmtzICYmIGxpbmtzLmxlbmd0aCA/ICc8dWw+JyArIGxpbmtzLmpvaW4oJycpICsgJzwvdWw+JyA6ICcnKSArICh0b29scyA/ICc8ZGl2PicgKyB0b29scyArICc8L2Rpdj4nIDogJycpICsgKGN0YSB8fCAnJykgKyAnPC9kaXY+JzsKICB9CiAgZnVuY3Rpb24gbGlzdE9mKGNhdHMsIGV4Y2x1ZGUpIHsKICAgIGV4Y2x1ZGUgPSBleGNsdWRlIHx8IFtdOwogICAgdmFyIHJvd3MgPSBJRFguZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBjYXRzLmluZGV4T2YoclsyXSkgIT09IC0xICYmIHJbMF0uY2hhckF0KDApID09PSAnLycgJiYgZXhjbHVkZS5pbmRleE9mKHJbMF0pID09PSAtMTsgfSk7CiAgICByZXR1cm4gJzx1bCBjbGFzcz0id3ItY29scyI+JyArIHJvd3MubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiBMKHJbMF0pOyB9KS5qb2luKCcnKSArICc8L3VsPic7CiAgfQogIHZhciBJRFhTID0gJ2h0dHBzOi8vc2VhcmNoLnRoZXdpbm5lcnJlYWx0eS5jb20vaWR4L3NlYXJjaC9iYXNpYycsIE9QRU4gPSAnaHR0cHM6Ly9zZWFyY2gudGhld2lubmVycmVhbHR5LmNvbS9pL2xvdWlzdmlsbGUtb3Blbi1ob3VzZXMnOwogIHZhciBIVUJTID0gewogICAgJy9idXknOiBmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiAnPHAgY2xhc3M9IndyLWV5ZWJyb3ciPkJ1eWluZyBhIGhvbWUsIHN0YXJ0IHRvIGZpbmlzaDwvcD48aDIgY2xhc3M9IndyLWgiPkV2ZXJ5dGhpbmcgeW91IG5lZWQsIGluIHRoZSBvcmRlciB5b3UgbmVlZCBpdDwvaDI+JyArCiAgICAgICAgJzxwIGNsYXNzPSJ3ci1sZWRlIj5TaXggc3RlcHMgZnJvbSAianVzdCBsb29raW5nIiB0byBrZXlzIGluIGhhbmQuIEV2ZXJ5IGd1aWRlIGFuZCBjYWxjdWxhdG9yIHdlIGhhdmUgYnVpbHQgZm9yIGJ1eWVycyBpcyBiZWxvdywgc29ydGVkIGJ5IHdoZW4geW91IHdpbGwgYWN0dWFsbHkgbmVlZCBpdC48L3A+PGRpdiBjbGFzcz0id3Itc3RlcHMiPicgKwogICAgICAgIHN0ZXAoMSwgJ0dldCB5b3VyIG1vbmV5IHJlYWR5JywgJ0tub3cgd2hhdCBhIGxlbmRlciB3aWxsIGFwcHJvdmUsIGFuZCB3aGV0aGVyIHlvdSBxdWFsaWZ5IGZvciBoZWxwIHdpdGggdGhlIGRvd24gcGF5bWVudC4nLAogICAgICAgICAgW0woJy9ob3ctdG8tZ2V0LXByZS1hcHByb3ZlZC1tb3J0Z2FnZS1rZW50dWNreScsICdIb3cgcHJlLWFwcHJvdmFsIHdvcmtzIGluIEtlbnR1Y2t5JyksIEwoJy9kb3duLXBheW1lbnQtYXNzaXN0YW5jZS1wcm9ncmFtcy1rZW50dWNreScsICdFdmVyeSBkb3duIHBheW1lbnQgYXNzaXN0YW5jZSBwcm9ncmFtJyksIEwoJy9jcmVkaXQtcmVwYWlyLWJlZm9yZS1idXlpbmctYS1ob3VzZS1rZW50dWNreScsICdOb3QgcmVhZHkgeWV0PyBHZXQgY3JlZGl0LXJlYWR5JyksIEwoJy9maXJzdC10aW1lLWhvbWUtYnV5ZXIta2VudHVja3knLCAnRmlyc3QtdGltZSBidXllciBndWlkZScpXSwKICAgICAgICAgIFQoJy9sb3Vpc3ZpbGxlLWRvd24tcGF5bWVudC1hc3Npc3RhbmNlLXNjcmVlbmVyJywgJ0Rvd24gcGF5bWVudCBoZWxwIHNjcmVlbmVyJykgKyBUKCcvbW9udGhseS1tb3J0Z2FnZS1wYXltZW50LWNhbGN1bGF0b3Ita2VudHVja3knLCAnTW9udGhseSBwYXltZW50IGNhbGN1bGF0b3InKSwKICAgICAgICAgICc8YSBjbGFzcz0id3ItY3RhIiBocmVmPSIvZ2V0LXByZS1hcHByb3ZlZCI+R2V0IHByZS1hcHByb3ZlZDwvYT4nKSArCiAgICAgICAgc3RlcCgyLCAnS25vdyB5b3VyIHJlYWwgY29zdHMnLCAnVGhlIG1vbnRobHkgcGF5bWVudCBpcyBvbmx5IHBhcnQgb2YgaXQuIEhlcmUgaXMgd2hhdCB5b3UgcGF5IGF0IGNsb3NpbmcgYW5kIGV2ZXJ5IHllYXIgYWZ0ZXIuJywKICAgICAgICAgIFtMKCcvY2xvc2luZy1jb3N0cy1rZW50dWNreS1idXllci1zZWxsZXInLCAnQ2xvc2luZyBjb3N0cyBpbiBLZW50dWNreScpLCBMKCcvdXNkYS1sb2FuLWtlbnR1Y2t5JywgJ1VTREE6IDAlIGRvd24gbmVhciBMb3Vpc3ZpbGxlJyksIEwoJy9hc3N1bWFibGUtbW9ydGdhZ2VzLWxvdWlzdmlsbGUnLCAnQXNzdW1hYmxlIG1vcnRnYWdlcycpLCBMKCcvdmV0ZXJhbnMtcmVhbC1lc3RhdGUtbG91aXN2aWxsZScsICdWZXRlcmFucyBhbmQgVkEgYnV5ZXJzJyldLAogICAgICAgICAgVCgnL2tlbnR1Y2t5LWJ1eWVyLWNsb3NpbmctY29zdC1jYWxjdWxhdG9yJywgJ0Nhc2gtdG8tY2xvc2UgY2FsY3VsYXRvcicpICsgVCgnL2plZmZlcnNvbi1jb3VudHktcHJvcGVydHktdGF4LWNhbGN1bGF0b3InLCAnUHJvcGVydHkgdGF4IGNhbGN1bGF0b3InKSArIFQoJy92YS1sb2FuLWNhbGN1bGF0b3Ita2VudHVja3knLCAnVkEgbG9hbiBjYWxjdWxhdG9yJykpICsKICAgICAgICBzdGVwKDMsICdQaWNrIHRoZSByaWdodCBwYXJ0IG9mIHRvd24nLCAnUHJpY2VzLCBzY2hvb2xzLCBmbG9vZCBtYXBzIGFuZCBjb21tdXRlLCBhcmVhIGJ5IGFyZWEuJywKICAgICAgICAgIFtMKCcvbG91aXN2aWxsZS1uZWlnaGJvcmhvb2RzJywgJ0V2ZXJ5IExvdWlzdmlsbGUgbmVpZ2hib3Job29kLCBvcmdhbml6ZWQnKSwgTCgnL2pjcHMtc2Nob29sLXpvbmVzLWxvdWlzdmlsbGUtaG9tZS1idXllcnMnLCAnSkNQUyBzY2hvb2wgem9uZXMnKSwgTCgnL2xvdWlzdmlsbGUtZmxvb2Qtem9uZXMtd2hhdC1ob21lLWJ1eWVycy1uZWVkLXRvLWtub3cnLCAnRmxvb2Qgem9uZXMnKSwgTCgnL3JlbG9jYXRpbmctdG8tbG91aXN2aWxsZScsICdNb3ZpbmcgaGVyZSBmcm9tIG91dCBvZiB0b3duJyldLAogICAgICAgICAgVCgnL2xvdWlzdmlsbGUtbmVpZ2hib3Job29kLW1hdGNoZXInLCAnTmVpZ2hib3Job29kIG1hdGNoZXInKSArIFQoJy9yZWxvY2F0aW9uLWNvc3QtY2FsY3VsYXRvcicsICdNb3ZpbmcgY29zdCBjYWxjdWxhdG9yJykpICsKICAgICAgICBzdGVwKDQsICdGaW5kIHRoZSBob3VzZScsICdMaXZlIE1MUyBzZWFyY2gsIHRoaXMgd2Vla+KAmXMgb3BlbiBob3VzZXMsIGFuZCBhbGVydHMgd2hlbiBzb21ldGhpbmcgbmV3IGZpdHMuJywKICAgICAgICAgIFtMKCcvaG93LXRvLWdldC1maXJzdC1sb29rLWF0LWxvdWlzdmlsbGUtb2ZmLW1hcmtldC1kZWFscycsICdIb3cgdG8gc2VlIG9mZi1tYXJrZXQgaG9tZXMgZmlyc3QnKSwgTCgnL2J1eS1ib3gtc2lnbnVwJywgJ0dldCBuZXcgbGlzdGluZ3MgdGhhdCBmaXQgeW91ciB3aXNoIGxpc3QnKV0sCiAgICAgICAgICBUKElEWFMsICdTZWFyY2ggZXZlcnkgaG9tZSBmb3Igc2FsZScpICsgVChPUEVOLCAnVGhpcyB3ZWVr4oCZcyBvcGVuIGhvdXNlcycpKSArCiAgICAgICAgc3RlcCg1LCAnTWFrZSB0aGUgb2ZmZXIgYW5kIGluc3BlY3QnLCAnV2hhdCB5b3Ugc2lnbiwgd2hhdCB0byB0ZXN0IGZvciwgYW5kIG90aGVyIHdheXMgdG8gYnV5LicsCiAgICAgICAgICBbTCgnL2J1eWVyLWFnZW5jeS1hZ3JlZW1lbnQta2VudHVja3ktbmFyLXNldHRsZW1lbnQnLCAnQnV5ZXIgYWdyZWVtZW50cyBhZnRlciB0aGUgTkFSIHNldHRsZW1lbnQnKSwgTCgnL3JhZG9uLWtlbnR1Y2t5LWhvbWVzLWxvdWlzdmlsbGUtYnV5ZXJzLXNlbGxlcnMnLCAnUmFkb24gdGVzdGluZyBpbiBLZW50dWNreScpLCBMKCcvbGVhc2Utb3B0aW9ucy1yZW50LXRvLW93bi1rZW50dWNreScsICdSZW50LXRvLW93biBhbmQgbGVhc2Ugb3B0aW9ucycpXSwgJycpICsKICAgICAgICBzdGVwKDYsICdDbG9zZSBhbmQgc2V0dGxlIGluJywgJ0FmdGVyIHRoZSBrZXlzOiB5b3VyIHRheCBiaWxsLCB5b3VyIGZpcnN0IGFwcGVhbCwgYW5kIG1ha2luZyB0aGUgaG91c2Ugd29yayBmb3IgeW91LicsCiAgICAgICAgICBbTCgnL2plZmZlcnNvbi1jb3VudHktcHJvcGVydHktdGF4LWFzc2Vzc21lbnQtYXBwZWFsJywgJ0FwcGVhbGluZyB5b3VyIHByb3BlcnR5IGFzc2Vzc21lbnQnKSwgTCgnL2FnaW5nLWluLXBsYWNlLWxvdWlzdmlsbGUtaG9tZS1tb2RpZmljYXRpb25zJywgJ0FnaW5nIGluIHBsYWNlOiBtb2RpZmljYXRpb25zJyldLCAnJywKICAgICAgICAgICc8YSBjbGFzcz0id3ItY3RhIiBocmVmPSIvc2NoZWR1bGluZyI+VGFsayB0byBhIFdpbm5lciBSZWFsdHkgYWdlbnQ8L2E+JykgKwogICAgICAgICc8L2Rpdj48ZGl2IGNsYXNzPSJ3ci1iYW5kIj48aDM+QnV5aW5nIHNvbWV0aGluZyBzcGVjaWZpYz88L2gzPjxwPicgKwogICAgICAgICc8YSBjbGFzcz0id3ItbGluayIgaHJlZj0iL2Zhcm1zLWxhbmQtYWNyZWFnZS1uZWFyLWxvdWlzdmlsbGUiPkZhcm1zLCBsYW5kIGFuZCBhY3JlYWdlPC9hPiDCtyA8YSBjbGFzcz0id3ItbGluayIgaHJlZj0iL2hvdXNlLWhhY2tpbmctbG91aXN2aWxsZS1rZW50dWNreSI+QSBkdXBsZXggdG8gbGl2ZSBpbiBhbmQgcmVudCBvdXQ8L2E+IMK3ICcgKwogICAgICAgICc8YSBjbGFzcz0id3ItbGluayIgaHJlZj0iL2FjY2Vzc2libGUtcmVhbC1lc3RhdGUtbG91aXN2aWxsZSI+QWNjZXNzaWJsZSBhbmQgc2luZ2xlLWxldmVsIGhvbWVzPC9hPiDCtyA8YSBjbGFzcz0id3ItbGluayIgaHJlZj0iL21pbGl0YXJ5LXJlbG9jYXRpb24tbG91aXN2aWxsZS1mb3J0LWtub3giPkZvcnQgS25veCBhbmQgbWlsaXRhcnkgbW92ZXM8L2E+IMK3ICcgKwogICAgICAgICc8YSBjbGFzcz0id3ItbGluayIgaHJlZj0iL3JlYWwtZXN0YXRlLWVuLWVzcGFub2wtbG91aXN2aWxsZSIgbGFuZz0iZXMiPkNvbXByZSBlbiBlc3Bhw7FvbDwvYT4gwrcgPGEgY2xhc3M9IndyLWxpbmsiIGhyZWY9Ii9mb3ItaW52ZXN0b3JzIj5JbnZlc3RtZW50IHByb3BlcnR5PC9hPjwvcD48L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0id3ItYmFuZCI+PGgzPkV2ZXJ5IGJ1eWluZyBndWlkZTwvaDM+JyArIGxpc3RPZihbJ2J1eSddLCBbJy9idXknLCAnL2dldC1wcmUtYXBwcm92ZWQnLCAnL2J1eS1ib3gtc2lnbnVwJ10pICsgJzxwIHN0eWxlPSJtYXJnaW4tdG9wOjEycHgiPk1vdmluZyBoZXJlPyA8YSBocmVmPSInICsgR1VJREVTICsgJyNyZWxvY2F0aW5nLXRvLXRoZS1hcmVhIj5FdmVyeSByZWxvY2F0aW9uIGd1aWRlPC9hPiDCtyA8YSBocmVmPSIvbG91aXN2aWxsZS1uZWlnaGJvcmhvb2RzIj5FdmVyeSBuZWlnaGJvcmhvb2Q8L2E+PC9wPjwvZGl2Pic7CiAgICB9LAogICAgJy9zZWxsJzogZnVuY3Rpb24gKCkgewogICAgICByZXR1cm4gJzxwIGNsYXNzPSJ3ci1leWVicm93Ij5TZWxsaW5nIGEgaG9tZSwgc3RhcnQgdG8gZmluaXNoPC9wPjxoMiBjbGFzcz0id3ItaCI+S25vdyB5b3VyIG51bWJlciwgcGljayB5b3VyIHBhdGgsIGtlZXAgbW9yZSBvZiBpdDwvaDI+JyArCiAgICAgICAgJzxwIGNsYXNzPSJ3ci1sZWRlIj5TaXggc3RlcHMgZnJvbSAid2hhdOKAmXMgaXQgd29ydGg/IiB0byBjbG9zaW5nIGRheS4gRXZlcnkgZ3VpZGUgYW5kIGNhbGN1bGF0b3Igd2UgaGF2ZSBidWlsdCBmb3Igc2VsbGVycywgaW4gdGhlIG9yZGVyIHlvdSB3aWxsIG5lZWQgdGhlbS48L3A+PGRpdiBjbGFzcz0id3Itc3RlcHMiPicgKwogICAgICAgIHN0ZXAoMSwgJ0ZpbmQgb3V0IHdoYXQgaXTigJlzIHdvcnRoJywgJ0EgcmVhbCB2YWx1ZSByYW5nZSBpbiBhIG1pbnV0ZSwgdGhlbiB3aGF0IHlvdSBhY3R1YWxseSB3YWxrIGF3YXkgd2l0aC4nLAogICAgICAgICAgW0woJy93aGF0LWlzLW15LWhvdXNlLXdvcnRoLWxvdWlzdmlsbGUnLCAnSG93IGhvbWUgdmFsdWF0aW9uIGFjdHVhbGx5IHdvcmtzJyksIEwoJy9sb3Vpc3ZpbGxlLW5laWdoYm9yaG9vZHMtd2hlcmUtaG9tZXMtYXJlLXNlbGxpbmcnLCAnV2hlcmUgaG9tZXMgYXJlIHNlbGxpbmcgbW9zdCcpLCBMKCcvbG91aXN2aWxsZS1ob3VzaW5nLW1hcmtldC1yZXBvcnQnLCAnVGhpcyBtb250aOKAmXMgbWFya2V0IHJlcG9ydCcpXSwKICAgICAgICAgIFQoJy9ob21lLXZhbHVlJywgJ0luc3RhbnQgaG9tZSB2YWx1ZScpICsgVCgnL3NlbGxlci1uZXQtcHJvY2VlZHMtY2FsY3VsYXRvcicsICdXaGF0IHdpbGwgSSB3YWxrIGF3YXkgd2l0aD8nKSkgKwogICAgICAgIHN0ZXAoMiwgJ1BpY2sgaG93IHlvdSB3YW50IHRvIHNlbGwnLCAnTGlzdGluZywgYSBjYXNoIG9mZmVyLCBvciBhbiBvZmYtbWFya2V0IHNhbGUuIFNpZGUgYnkgc2lkZSwgd2l0aCB3aGF0IGVhY2ggb25lIGNvc3RzIHlvdS4nLAogICAgICAgICAgW0woJy93YXlzLXRvLXNlbGwteW91ci1ob3VzZS1sb3Vpc3ZpbGxlLW9wdGlvbnMnLCAnRXZlcnkgd2F5IHRvIHNlbGwsIHNpZGUgYnkgc2lkZScpLCBMKCcvd2UtYnV5LWhvdXNlcy12cy1saXN0aW5nLXdpdGgtYS1yZWFsdG9yLWluLWtlbnR1Y2t5JywgJyJXZSBCdXkgSG91c2VzIiB2cy4gbGlzdGluZycpLCBMKCcvbXVsdGlwbGUtb2ZmZXJzLXZzLW9uZS1pbnZlc3Rvci1jYWxsLWxvdWlzdmlsbGUnLCAnTXVsdGlwbGUgb2ZmZXJzIHZzLiBvbmUgY29sZCBjYWxsJyksIEwoJy9vZmZtYXJrZXQtZGVhbHMtY2FzaC1vZmZlci1sb3Vpc3ZpbGxlLXNlbGxlcnMnLCAnQSByZWFsIGNhc2ggb2ZmZXIgdGhyb3VnaCBPZmZNYXJrZXQuZGVhbHMnKSwgTCgnL3NlbGwtbXktaG91c2UtZmFzdC1sb3Vpc3ZpbGxlJywgJ1NlbGxpbmcgZmFzdCwgYW5kIHdoYXQgaXQgY29zdHMnKV0sICcnKSArCiAgICAgICAgc3RlcCgzLCAnVGltZSBpdCBhbmQgZ2V0IHJlYWR5JywgJ1doZW4gdG8gbGlzdCwgd2hhdCB0byBmaXgsIGFuZCB3aGF0IHlvdSBkbyBub3QgaGF2ZSB0byBmaXguJywKICAgICAgICAgIFtMKCcvYmVzdC10aW1lLXRvLXNlbGwtYS1ob3VzZS1pbi1sb3Vpc3ZpbGxlJywgJ1RoZSBiZXN0IHRpbWUgdG8gc2VsbCBpbiBMb3Vpc3ZpbGxlJyksIEwoJy93aGF0LXNlbGxpbmctYXMtaXMtYWN0dWFsbHktbWVhbnMtaW4ta2VudHVja3knLCAnV2hhdCAiYXMtaXMiIHJlYWxseSBtZWFucycpLCBMKCcvZG93bnNpemluZy1sb3Vpc3ZpbGxlLWd1aWRlJywgJ0Rvd25zaXppbmcsIG1vbnRoIGJ5IG1vbnRoJyksIEwoJy9kby15b3UtbmVlZC1hLWxhd3llci10by1zZWxsLWEtaG91c2Uta2VudHVja3knLCAnRG8geW91IG5lZWQgYSBsYXd5ZXIgdG8gc2VsbD8nKV0sICcnKSArCiAgICAgICAgc3RlcCg0LCAnTGlzdCBpdCcsICdMaXZlIG9uIHRoZSBNTFMgd2l0aGluIDMgYnVzaW5lc3MgZGF5cyBvZiBzaWduaW5nLCBndWFyYW50ZWVkLCBhbmQgYSByZXBseSB3aXRoaW4gMTUgbWludXRlcy4nLAogICAgICAgICAgW0woJy93aHktd2lubmVyLXJlYWx0eScsICdUaGUgZ3VhcmFudGVlcyBiZWhpbmQgaG93IHdlIGxpc3QnKV0sICcnLCAnPGEgY2xhc3M9IndyLWN0YSIgaHJlZj0iL3NjaGVkdWxpbmciPkJvb2sgYSBsaXN0aW5nIGFwcG9pbnRtZW50PC9hPicpICsKICAgICAgICBzdGVwKDUsICdLbm93IHlvdXIgY29zdHMgYW5kIHRheGVzJywgJ0NvbW1pc3Npb24sIGRlZWQgdGF4LCBjbG9zaW5nIGNvc3RzIGFuZCBjYXBpdGFsIGdhaW5zLCB3aXRoIHJlYWwgS2VudHVja3kgbnVtYmVycy4nLAogICAgICAgICAgW0woJy9jbG9zaW5nLWNvc3RzLWtlbnR1Y2t5LWJ1eWVyLXNlbGxlcicsICdDbG9zaW5nIGNvc3RzIGluIEtlbnR1Y2t5JyksIEwoJy93aG8tcGF5cy10YXhlcy1zZWxsaW5nLWhvdXNlLWtlbnR1Y2t5JywgJ1dobyBwYXlzIHdoaWNoIHRheGVzJyldLAogICAgICAgICAgVCgnL2tlbnR1Y2t5LXNlbGxlci1jbG9zaW5nLWNvc3QtY2FsY3VsYXRvcicsICdTZWxsZXIgY2xvc2luZyBjb3N0cycpICsgVCgnL2tlbnR1Y2t5LXRyYW5zZmVyLXRheC1jYWxjdWxhdG9yJywgJ1RyYW5zZmVyIHRheCcpICsgVCgnL2NhcGl0YWwtZ2FpbnMtMTAzMS1leGNoYW5nZS1lc3RpbWF0b3InLCAnQ2FwaXRhbCBnYWlucyAmIDEwMzEnKSkgKwogICAgICAgIHN0ZXAoNiwgJ0RvIG5vdCBnZXQgbG93YmFsbGVkJywgJ1dobyBpcyBiZWhpbmQgdGhlIHNpZ25zIGFuZCB0aGUgdGV4dHMsIGFuZCB0aGUgcmVkIGZsYWdzIHRvIGxvb2sgZm9yLicsCiAgICAgICAgICBbTCgnL3dlLWJ1eS1ob3VzZXMtc2lnbnMtYXJvdW5kLWxvdWlzdmlsbGUtd2hvcy1iZWhpbmQtdGhlbScsICdXaG8gaXMgYmVoaW5kICJXZSBCdXkgSG91c2VzIiBzaWducycpLCBMKCcvcmVkLWZsYWdzLXRvLXdhdGNoLWZvci1pbi1hLXdlLWJ1eS1ob3VzZXMtY2FzaC1vZmZlcicsICdSZWQgZmxhZ3MgaW4gYSBjYXNoIG9mZmVyJyksIEwoJy9ob3ctYS1jYXNoLWJ1eWVyLXBheW91dC1hY3R1YWxseS13b3Jrcy1pbi1rZW50dWNreScsICdIb3cgYSBjYXNoIHBheW91dCByZWFsbHkgd29ya3MnKV0sICcnKSArCiAgICAgICAgJzwvZGl2PjxkaXYgY2xhc3M9IndyLWJhbmQiPjxoMz5JbiBhIHRvdWdoIHNwb3Q/PC9oMz48cD5EaXZvcmNlLCBmb3JlY2xvc3VyZSwgcHJvYmF0ZSwgbGllbnMsIHRlbmFudHMgd2hvIHdvbuKAmXQgbGVhdmUsIGEgaG91c2UgdGhhdCBuZWVkcyBldmVyeXRoaW5nLiBZb3UgaGF2ZSBtb3JlIG9wdGlvbnMgdGhhbiB5b3UgdGhpbmsuPC9wPicgKwogICAgICAgICc8YSBjbGFzcz0id3ItY3RhIiBocmVmPSIvc2VsbGluZy1hLWhvdXNlLWluLWEtdG91Z2gtc3BvdC1rZW50dWNreSI+U2VlIGV2ZXJ5IHNpdHVhdGlvbiB3ZSBoYW5kbGU8L2E+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9IndyLWJhbmQiPjxoMz5FdmVyeSBzZWxsaW5nIGd1aWRlPC9oMz4nICsgbGlzdE9mKFsnc2VsbCddLCBbJy9zZWxsJywgJy9ob21lLXZhbHVlJ10pICsKICAgICAgICAnPHAgc3R5bGU9Im1hcmdpbi10b3A6MTJweCI+UmVudGFsIG93bmVyczogPGEgY2xhc3M9IndyLWxpbmsiIGhyZWY9Ii90aXJlZC1sYW5kbG9yZC1ob3ctdG8tc2VsbC1hLXJlbnRhbC1wcm9wZXJ0eS13aXRoLXRlbmFudHMtaW4ta2VudHVja3kiPnNlbGxpbmcgd2l0aCB0ZW5hbnRzPC9hPiDCtyA8YSBjbGFzcz0id3ItbGluayIgaHJlZj0iL3NlbGwtYWlyYm5iLXNob3J0LXRlcm0tcmVudGFsLWtlbnR1Y2t5Ij5zZWxsaW5nIGFuIEFpcmJuYjwvYT4uIENvbW1lcmNpYWwgb3duZXJzOiA8YSBjbGFzcz0id3ItbGluayIgaHJlZj0iL2ZyZWUtY29tbWVyY2lhbC1wcm9wZXJ0eS12YWx1YXRpb24iPmZyZWUgYnJva2VyIG9waW5pb24gb2YgdmFsdWU8L2E+LjwvcD48L2Rpdj4nOwogICAgfSwKICAgICcvZm9yLWludmVzdG9ycyc6IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuICc8cCBjbGFzcz0id3ItZXllYnJvdyI+SW52ZXN0aW5nIGluIExvdWlzdmlsbGU8L3A+PGgyIGNsYXNzPSJ3ci1oIj5GaW5kIGl0LCBydW4gdGhlIG51bWJlcnMsIGZ1bmQgaXQsIG93biBpdDwvaDI+JyArCiAgICAgICAgJzxwIGNsYXNzPSJ3ci1sZWRlIj5FdmVyeXRoaW5nIHdlIGhhdmUgYnVpbHQgZm9yIGludmVzdG9ycywgbGFuZGxvcmRzIGFuZCB3aG9sZXNhbGVycywgZ3JvdXBlZCBieSB3aGF0IHlvdSBhcmUgdHJ5aW5nIHRvIGRvLjwvcD48ZGl2IGNsYXNzPSJ3ci1zdGVwcyI+JyArCiAgICAgICAgc3RlcCgxLCAnRmluZCBkZWFscycsICdPZmYtbWFya2V0IGludmVudG9yeSwgYXVjdGlvbnMsIGFuZCB3aGVyZSB0byBsb29rLicsCiAgICAgICAgICBbTCgnL2hvdy10by1nZXQtZmlyc3QtbG9vay1hdC1sb3Vpc3ZpbGxlLW9mZi1tYXJrZXQtZGVhbHMnLCAnR2V0dGluZyBmaXJzdCBsb29rIGF0IG9mZi1tYXJrZXQgZGVhbHMnKSwgTCgnL2xvdWlzdmlsbGUtZm9yZWNsb3N1cmUtYXVjdGlvbnMtbWFzdGVyLWNvbW1pc3Npb25lci1zYWxlcycsICdDb3VydGhvdXNlIGZvcmVjbG9zdXJlIGF1Y3Rpb25zJyksIEwoJy90aGUtd2lubmVyLXJlYWx0eS1pbnZlc3Rvci1jb3JyaWRvci1zb3V0aC13ZXN0LWxvdWlzdmlsbGUnLCAnVGhlIGludmVzdG9yIGNvcnJpZG9yJyksIEwoJy9kcml2aW5nLWZvci1kb2xsYXJzLWluLWxvdWlzdmlsbGUtbmVpZ2hib3Job29kcy13b3J0aC1zY291dGluZycsICdEcml2aW5nIGZvciBkb2xsYXJzJyldLAogICAgICAgICAgVCgnaHR0cHM6Ly9vZmZtYXJrZXQuZGVhbHMvJywgJ09mZk1hcmtldC5kZWFscycpICsgVCgnL2J1eS1ib3gtc2lnbnVwJywgJ1NlbmQgdXMgeW91ciBidXkgYm94JykpICsKICAgICAgICBzdGVwKDIsICdSdW4gdGhlIG51bWJlcnMnLCAnQ2FzaCBmbG93LCBjYXAgcmF0ZSwgQlJSUlIsIHJlaGFiIGJ1ZGdldHMgYW5kIG9mZmVyIG1hdGguJywgW10sCiAgICAgICAgICBUKCcvaW52ZXN0bWVudC1wcm9wZXJ0eS1hbmFseXplcicsICdQcm9wZXJ0eSBhbmFseXplcicpICsgVCgnL2ludmVzdG1lbnQtcHJvcGVydHktY29tcGFyaXNvbi10b29sJywgJ0NvbXBhcmUgMyBkZWFscycpICsgVCgnL2JycnJyLWNhbGN1bGF0b3InLCAnQlJSUlInKSArIFQoJy9yZWhhYi1jb3N0LWVzdGltYXRvcicsICdSZWhhYiBjb3N0cycpICsgVCgnL2hvdXNlLWhhY2tpbmctY2FsY3VsYXRvcicsICdIb3VzZSBoYWNraW5nJykgKyBUKCcvd2hvbGVzYWxlLW9mZmVyLWNhbGN1bGF0b3ItbG91aXN2aWxsZScsICdXaG9sZXNhbGUgTUFPJykpICsKICAgICAgICBzdGVwKDMsICdGdW5kIGl0JywgJ0xvYW5zIHRoYXQgZG8gbm90IG5lZWQgYSBXLTIsIGFuZCBjcmVhdGl2ZSB3YXlzIHRvIGJ1eS4nLAogICAgICAgICAgW0woJy9kc2NyLWxvYW5zLWtlbnR1Y2t5LWludmVzdG9ycycsICdEU0NSIGxvYW5zJyksIEwoJy9idXktcmVudGFsLXByb3BlcnR5LXdpdGhvdXQtdzItbG91aXN2aWxsZScsICdCdXlpbmcgd2l0aG91dCBhIFctMicpLCBMKCcvc2VsbGVyLWZpbmFuY2luZy1rZW50dWNreScsICdTZWxsZXIgZmluYW5jaW5nJyksIEwoJy9zdWJqZWN0LXRvLXJlYWwtZXN0YXRlLWtlbnR1Y2t5JywgJ1N1YmplY3QtdG8nKV0sIFQoJy9kc2NyLWxvYW4tY2FsY3VsYXRvci1rZW50dWNreScsICdEU0NSIGNhbGN1bGF0b3InKSkgKwogICAgICAgIHN0ZXAoNCwgJ1BpY2sgYSBzdHJhdGVneScsICdMb25nLXRlcm0sIG1pZHRlcm0sIHNob3J0LXRlcm0sIFNlY3Rpb24gOCwgaG91c2UgaGFja2luZy4nLAogICAgICAgICAgW0woJy9taWR0ZXJtLXJlbnRhbHMtbG91aXN2aWxsZS1ndWlkZScsICdNaWR0ZXJtIHJlbnRhbHMnKSwgTCgnL2xvdWlzdmlsbGUtc2hvcnQtdGVybS1yZW50YWwtZ3VpZGUnLCAnU2hvcnQtdGVybSByZW50YWwgcnVsZXMnKSwgTCgnL3NlY3Rpb24tOC1sYW5kbG9yZGluZy1sb3Vpc3ZpbGxlLWtlbnR1Y2t5JywgJ1NlY3Rpb24gOCBsYW5kbG9yZGluZycpLCBMKCcvYnJycnItbWV0aG9kLWxvdWlzdmlsbGUta2VudHVja3ktMjAyNicsICdUaGUgQlJSUlIgbWV0aG9kJyldLCBUKCcvbG91aXN2aWxsZS1zaG9ydC10ZXJtLXJlbnRhbC1ydWxlcy1jaGVja2VyJywgJ1NUUiBwZXJtaXQgY2hlY2tlcicpKSArCiAgICAgICAgc3RlcCg1LCAnSW52ZXN0aW5nIGZyb20gb3V0IG9mIHN0YXRlPycsICdZb3VyIHRlYW0gb24gdGhlIGdyb3VuZCwgY2xvc2luZyByZW1vdGVseSwgTExDcyBhbmQgdGF4ZXMuJywKICAgICAgICAgIFtMKCcvb3V0LW9mLXN0YXRlLXJlYWwtZXN0YXRlLWludmVzdGluZy1sb3Vpc3ZpbGxlJywgJ1RoZSBvdXQtb2Ytc3RhdGUgcGxheWJvb2snKSwgTCgnL3JlbW90ZS1yZWFsLWVzdGF0ZS1pbnZlc3Rvci10ZWFtLWxvdWlzdmlsbGUnLCAnQnVpbGRpbmcgeW91ciBsb2NhbCB0ZWFtJyksIEwoJy9pbnRlcm5hdGlvbmFsLWludmVzdG9ycy1idXlpbmctcmVhbC1lc3RhdGUta2VudHVja3ktaW5kaWFuYScsICdJbnRlcm5hdGlvbmFsIGludmVzdG9ycycpXSwgJycsICc8YSBjbGFzcz0id3ItY3RhIiBocmVmPSIvcmVtb3RlLWludmVzdG9yIj5TdGFydCBoZXJlPC9hPicpICsKICAgICAgICBzdGVwKDYsICdLZWVwIG1vcmUgb2YgaXQnLCAnVGF4ZXMsIDEwMzEgZXhjaGFuZ2VzLCBhbmQgY29tbWVyY2lhbCBwcm9wZXJ0eS4nLAogICAgICAgICAgW0woJy9yZWFsLWVzdGF0ZS1pbnZlc3Rvci10YXgtc3RyYXRlZ2llcy1rZW50dWNreScsICdJbnZlc3RvciB0YXggc3RyYXRlZ2llcycpLCBMKCcvMTAzMS1leGNoYW5nZS1jb21tZXJjaWFsLXJlYWwtZXN0YXRlLWtlbnR1Y2t5JywgJzEwMzEgZXhjaGFuZ2VzJyksIEwoJy9sb3Vpc3ZpbGxlLWNvbW1lcmNpYWwtcmVhbC1lc3RhdGUnLCAnQ29tbWVyY2lhbCByZWFsIGVzdGF0ZSBodWInKV0sIFQoJy9jYXBpdGFsLWdhaW5zLTEwMzEtZXhjaGFuZ2UtZXN0aW1hdG9yJywgJ0NhcGl0YWwgZ2FpbnMgJiAxMDMxJykpICsKICAgICAgICAnPC9kaXY+PGRpdiBjbGFzcz0id3ItYmFuZCI+PGgzPkV2ZXJ5IGludmVzdGluZyBndWlkZTwvaDM+JyArIGxpc3RPZihbJ2ludmVzdCcsICdjcmVhdGl2ZScsICdzdHInLCAncmVtb3RlJ10sIFsnL2Zvci1pbnZlc3RvcnMnXSkgKyAnPC9kaXY+JzsKICAgIH0KICB9OwogIGZ1bmN0aW9uIGFkZEh1YigpIHsKICAgIHZhciBmbiA9IEhVQlNbUEFUSF07IGlmICghZm4gfHwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWh1YicpKSByZXR1cm47CiAgICB2YXIgcHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2ItcGFnZS1zdHJ1Y3R1cmUnKTsgaWYgKCFwcykgcmV0dXJuOwogICAgdmFyIHNlY3MgPSBwcy5xdWVyeVNlbGVjdG9yQWxsKCc6c2NvcGUgPiBzZWN0aW9uLCA6c2NvcGUgPiBkaXYgPiBzZWN0aW9uJyk7CiAgICB2YXIgaGVybyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYW5kaW5nLXBhZ2UtaGVybycpIHx8IHNlY3NbMF07CiAgICB2YXIgaHViID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2VjdGlvbicpOyBodWIuaWQgPSAnd3ItaHViJzsgaHViLmNsYXNzTmFtZSA9ICd3ci1odWInOwogICAgaHViLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPSJ3ci1pbiI+JyArIGZuKCkgKyAnPC9kaXY+JzsKICAgIGlmIChoZXJvICYmIGhlcm8ucGFyZW50Tm9kZSkgaGVyby5wYXJlbnROb2RlLmluc2VydEJlZm9yZShodWIsIGhlcm8ubmV4dFNpYmxpbmcpOyBlbHNlIHBzLmFwcGVuZENoaWxkKGh1Yik7CiAgICAvKiBUaGUgb2xkIHRlbXBsYXRlIGNhcmRzIG9uIEJ1eS9TZWxsIHBvaW50ZWQgYXQgcGxhY2Vob2xkZXIgcGFnZXM7IHRoZSBodWIgcmVwbGFjZXMgdGhlbSAqLwogICAgaWYgKFBBVEggPT09ICcvYnV5JyB8fCBQQVRIID09PSAnL3NlbGwnKSB7IHZhciBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZlYXR1cmVzJyk7IGlmIChmKSBmLmNsYXNzTGlzdC5hZGQoJ3dyLWhpZGUnKTsgfQogIH0KCiAgLyogLS0tLS0tLS0tLSA2LiBUb29scyBodWI6IHRhc2sgY2FyZHMgdXAgdG9wIC0tLS0tLS0tLS0gKi8KICB2YXIgVE9PTFNFVFMgPSBbCiAgICBbJ1NlbGxpbmcnLCBbWycvaG9tZS12YWx1ZScsICdXaGF0IGlzIG15IGhvbWUgd29ydGg/JywgJ0luc3RhbnQgdmFsdWUgcmFuZ2UgZnJvbSByZWFsIGNsb3NlZCBzYWxlcyddLCBbJy9zZWxsZXItbmV0LXByb2NlZWRzLWNhbGN1bGF0b3InLCAnV2hhdCB3aWxsIEkgd2FsayBhd2F5IHdpdGg/JywgJ1NlbGxlciBuZXQgcHJvY2VlZHMgY2FsY3VsYXRvciddLCBbJy9rZW50dWNreS1zZWxsZXItY2xvc2luZy1jb3N0LWNhbGN1bGF0b3InLCAnV2hhdCBkb2VzIGl0IGNvc3QgdG8gc2VsbD8nLCAnS2VudHVja3kgc2VsbGVyIGNsb3NpbmcgY29zdHMnXSwgWycva2VudHVja3ktdHJhbnNmZXItdGF4LWNhbGN1bGF0b3InLCAnSG93IG11Y2ggaXMgdGhlIGRlZWQgdGF4PycsICdUcmFuc2ZlciB0YXggYW5kIHJlY29yZGluZyBmZWVzJ10sIFsnL2NhcGl0YWwtZ2FpbnMtMTAzMS1leGNoYW5nZS1lc3RpbWF0b3InLCAnV2lsbCBJIG93ZSBjYXBpdGFsIGdhaW5zPycsICdDYXBpdGFsIGdhaW5zIGFuZCAxMDMxIGVzdGltYXRvciddXV0sCiAgICBbJ0J1eWluZycsIFtbJy9tb250aGx5LW1vcnRnYWdlLXBheW1lbnQtY2FsY3VsYXRvci1rZW50dWNreScsICdXaGF0IHdpbGwgbXkgcGF5bWVudCBiZT8nLCAnTW9udGhseSBtb3J0Z2FnZSBwYXltZW50IGNhbGN1bGF0b3InXSwgWycva2VudHVja3ktYnV5ZXItY2xvc2luZy1jb3N0LWNhbGN1bGF0b3InLCAnSG93IG11Y2ggY2FzaCBkbyBJIG5lZWQgdG8gY2xvc2U/JywgJ0J1eWVyIGNsb3NpbmcgY29zdCBjYWxjdWxhdG9yJ10sIFsnL2xvdWlzdmlsbGUtZG93bi1wYXltZW50LWFzc2lzdGFuY2Utc2NyZWVuZXInLCAnRG8gSSBxdWFsaWZ5IGZvciBkb3duIHBheW1lbnQgaGVscD8nLCAnTG91aXN2aWxsZSBEUEEgc2NyZWVuZXInXSwgWycvdmEtbG9hbi1jYWxjdWxhdG9yLWtlbnR1Y2t5JywgJ1ZBIGxvYW4gb3IgY29udmVudGlvbmFsPycsICdWQSBsb2FuIGNhbGN1bGF0b3InXSwgWycvamVmZmVyc29uLWNvdW50eS1wcm9wZXJ0eS10YXgtY2FsY3VsYXRvcicsICdXaGF0IHdpbGwgbXkgcHJvcGVydHkgdGF4IGJlPycsICdKZWZmZXJzb24gQ291bnR5IHRheCBieSBkaXN0cmljdCddXV0sCiAgICBbJ01vdmluZyBoZXJlJywgW1snL2xvdWlzdmlsbGUtbmVpZ2hib3Job29kLW1hdGNoZXInLCAnV2hpY2ggbmVpZ2hib3Job29kIGZpdHMgbWU/JywgJ0xvdWlzdmlsbGUgTmVpZ2hib3Job29kIE1hdGNoZXInXSwgWycvbG91aXN2aWxsZS1zdWJ1cmItbWF0Y2gtcXVpeicsICdRdWljayBzdWJ1cmIgbWF0Y2gnLCAnRml2ZS1xdWVzdGlvbiBzdWJ1cmIgcXVpeiddLCBbJy9yZWxvY2F0aW9uLWNvc3QtY2FsY3VsYXRvcicsICdXaGF0IHdpbGwgbXkgbW92ZSBjb3N0PycsICdSZWxvY2F0aW9uIGNvc3QgY2FsY3VsYXRvciddXV0sCiAgICBbJ0ludmVzdGluZycsIFtbJy9pbnZlc3RtZW50LXByb3BlcnR5LWFuYWx5emVyJywgJ0RvZXMgdGhpcyByZW50YWwgY2FzaCBmbG93PycsICdJbnZlc3RtZW50IHByb3BlcnR5IGFuYWx5emVyJ10sIFsnL2ludmVzdG1lbnQtcHJvcGVydHktY29tcGFyaXNvbi10b29sJywgJ1doaWNoIG9mIHRoZXNlIGRlYWxzIGlzIGJlc3Q/JywgJ0NvbXBhcmUgdXAgdG8gMyBwcm9wZXJ0aWVzJ10sIFsnL2RzY3ItbG9hbi1jYWxjdWxhdG9yLWtlbnR1Y2t5JywgJ0RvZXMgdGhlIHJlbnQgY292ZXIgdGhlIGxvYW4/JywgJ0RTQ1IgbG9hbiBjYWxjdWxhdG9yJ10sIFsnL2JycnJyLWNhbGN1bGF0b3InLCAnV2lsbCB0aGlzIEJSUlJSIHJlY3ljbGUgbXkgY2FzaD8nLCAnQlJSUlIgY2FsY3VsYXRvciddLCBbJy9yZWhhYi1jb3N0LWVzdGltYXRvcicsICdXaGF0IHdpbGwgdGhlIHJlaGFiIGNvc3Q/JywgJ0xpbmUtaXRlbSByZWhhYiBlc3RpbWF0b3InXSwgWycvaG91c2UtaGFja2luZy1jYWxjdWxhdG9yJywgJ0NhbiB0ZW5hbnRzIHBheSBteSBtb3J0Z2FnZT8nLCAnSG91c2UgaGFja2luZyBjYWxjdWxhdG9yJ10sIFsnL2xvdWlzdmlsbGUtc2hvcnQtdGVybS1yZW50YWwtcnVsZXMtY2hlY2tlcicsICdDYW4gSSBydW4gYW4gQWlyYm5iIGhlcmU/JywgJ1Nob3J0LXRlcm0gcmVudGFsIHJ1bGVzIGNoZWNrZXInXSwgWycvY2FwLXJhdGUtZXhwbGFpbmVkLWNvbW1lcmNpYWwtcmVhbC1lc3RhdGUnLCAnV2hhdCBjYXAgcmF0ZSBpcyB0aGlzPycsICdDYXAgcmF0ZSBjYWxjdWxhdG9yJ10sIFsnL2xvdWlzdmlsbGUtY29tbWVyY2lhbC1yZWFsLWVzdGF0ZS1jYWxjdWxhdG9ycycsICdDb21tZXJjaWFsIGRlYWwgbWF0aCcsICdDb21tZXJjaWFsIHJlYWwgZXN0YXRlIGNhbGN1bGF0b3JzJ11dXSwKICAgIFsnV2hvbGVzYWxpbmcnLCBbWycvd2hvbGVzYWxlLW9mZmVyLWNhbGN1bGF0b3ItbG91aXN2aWxsZScsICdXaGF0IGlzIG15IG1heCBvZmZlcj8nLCAnV2hvbGVzYWxlIE1BTyBjYWxjdWxhdG9yLCBIQiA2MiBleHBsYWluZWQnXV1dCiAgXTsKICB2YXIgUE9QID0gWycvaG9tZS12YWx1ZScsICcvc2VsbGVyLW5ldC1wcm9jZWVkcy1jYWxjdWxhdG9yJywgJy9tb250aGx5LW1vcnRnYWdlLXBheW1lbnQtY2FsY3VsYXRvci1rZW50dWNreScsICcvbG91aXN2aWxsZS1uZWlnaGJvcmhvb2QtbWF0Y2hlcicsICcvaW52ZXN0bWVudC1wcm9wZXJ0eS1hbmFseXplcicsICcva2VudHVja3ktYnV5ZXItY2xvc2luZy1jb3N0LWNhbGN1bGF0b3InXTsKICBmdW5jdGlvbiB0Y2FyZCh0KSB7IHJldHVybiAnPGEgY2xhc3M9IndyLXRjYXJkIiBocmVmPSInICsgdFswXSArICciPjxiPicgKyBlc2ModFsxXSkgKyAnPC9iPjxzcGFuPicgKyBlc2ModFsyXSkgKyAnPC9zcGFuPjwvYT4nOyB9CiAgZnVuY3Rpb24gd2FrZUFvcygpIHsKICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNiLWl0ZW0tdmlldyAuYW9zLWluaXQnKSwgZnVuY3Rpb24gKGUpIHsgZS5jbGFzc0xpc3QuYWRkKCdhb3MtYW5pbWF0ZScpOyB9KTsKICAgIHRyeSB7IGlmICh3aW5kb3cuQU9TICYmIHdpbmRvdy5BT1MucmVmcmVzaCkgd2luZG93LkFPUy5yZWZyZXNoKCk7IH0gY2F0Y2ggKGUpIHt9CiAgfQogIGZ1bmN0aW9uIGhpZGVIdWJDaHJvbWUoKSB7CiAgICB2YXIgdiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zYi1pdGVtLXZpZXcnKTsgaWYgKCF2KSByZXR1cm47IHNldFRpbWVvdXQod2FrZUFvcywgNTApOwogICAgWycuc2ItaXRlbS12aWV3X19pbWFnZScsICcuc2ItaXRlbS12aWV3X19tZXRhJ10uZm9yRWFjaChmdW5jdGlvbiAocykgeyB2YXIgZSA9IHYucXVlcnlTZWxlY3RvcihzKTsgaWYgKGUpIGUuY2xhc3NMaXN0LmFkZCgnd3ItaGlkZScpOyB9KTsKICB9CiAgZnVuY3Rpb24gYWRkVG9vbHNIdWIoKSB7CiAgICBpZiAoUEFUSCAhPT0gJy90b29scycgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWh1YnRvb2xzJykpIHJldHVybjsKICAgIHZhciBib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNiLWl0ZW0tdmlld19fYm9keScpOyBpZiAoIWJvZHkpIHJldHVybjsKICAgIGhpZGVIdWJDaHJvbWUoKTsKICAgIHZhciBhbGwgPSBbXTsgVE9PTFNFVFMuZm9yRWFjaChmdW5jdGlvbiAocykgeyBhbGwgPSBhbGwuY29uY2F0KHNbMV0pOyB9KTsKICAgIHZhciBieVUgPSB7fTsgYWxsLmZvckVhY2goZnVuY3Rpb24gKHQpIHsgYnlVW3RbMF1dID0gdDsgfSk7CiAgICB2YXIgb3V0c2lkZSA9IFsnVG9vbHMgZm9yIGJ1eWVycycsICdUb29scyBmb3Igc2VsbGVycycsICdUb29scyBmb3IgaW52ZXN0b3JzIGFuZCBsYW5kbG9yZHMnLCAnVG9vbHMgZm9yIHdob2xlc2FsZXJzJywgJ1RheCB0b29scycsICdMb3Vpc3ZpbGxlIHB1YmxpYyByZWNvcmRzIGFuZCBsb29rdXBzJ107CiAgICB2YXIganVtcHMgPSBUT09MU0VUUy5tYXAoZnVuY3Rpb24gKHMpIHsgcmV0dXJuICc8YSBocmVmPSIjd3ItdC0nICsgc2x1ZyhzWzBdKSArICciPicgKyBlc2Moc1swXSkgKyAnPGI+JyArIHNbMV0ubGVuZ3RoICsgJzwvYj48L2E+JzsgfSkuam9pbignJykgKyAnPGEgaHJlZj0iI3dyLW91dHNpZGUiPk91dHNpZGUgdG9vbHMgd2UgdHJ1c3Q8L2E+JzsKICAgIHZhciBib3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgYm94LmlkID0gJ3dyLWh1YnRvb2xzJzsgYm94LmNsYXNzTmFtZSA9ICd3ci1odWJ0b29scyc7CiAgICBib3guaW5uZXJIVE1MID0gJzxpbnB1dCBjbGFzcz0id3ItZmlsdGVyIiB0eXBlPSJzZWFyY2giIHBsYWNlaG9sZGVyPSJXaGF0IGRvIHlvdSB3YW50IHRvIGZpZ3VyZSBvdXQ/IChlLmcuIGNsb3NpbmcgY29zdHMsIGNhcCByYXRlKSIgYXJpYS1sYWJlbD0iRmlsdGVyIHRvb2xzIj4nICsKICAgICAgJzxkaXYgY2xhc3M9IndyLWp1bXAiPicgKyBqdW1wcyArICc8L2Rpdj4nICsKICAgICAgJzxoMiBjbGFzcz0id3Itc2VjIiBpZD0id3ItdC1wb3B1bGFyIj5Nb3N0IHBvcHVsYXI8L2gyPjxkaXYgY2xhc3M9IndyLXRncmlkIj4nICsgUE9QLm1hcChmdW5jdGlvbiAodSkgeyByZXR1cm4gdGNhcmQoYnlVW3VdKTsgfSkuam9pbignJykgKyAnPC9kaXY+JyArCiAgICAgIFRPT0xTRVRTLm1hcChmdW5jdGlvbiAocykgeyByZXR1cm4gJzxoMiBjbGFzcz0id3Itc2VjIHdyLWFuY2hvciIgaWQ9IndyLXQtJyArIHNsdWcoc1swXSkgKyAnIj4nICsgZXNjKHNbMF0pICsgJzwvaDI+PGRpdiBjbGFzcz0id3ItdGdyaWQiPicgKyBzWzFdLm1hcCh0Y2FyZCkuam9pbignJykgKyAnPC9kaXY+JzsgfSkuam9pbignJykgKwogICAgICAnPHAgY2xhc3M9IndyLW5vbWF0Y2ggd3ItaGlkZSI+Tm8gdG9vbCBtYXRjaGVzIHRoYXQgeWV0LiA8YSBocmVmPSIvc2NoZWR1bGluZyI+QXNrIHVzPC9hPiBhbmQgd2Ugd2lsbCBydW4gdGhlIG51bWJlcnMgd2l0aCB5b3UuPC9wPic7CiAgICBib2R5Lmluc2VydEJlZm9yZShib3gsIGJvZHkuZmlyc3RDaGlsZCk7CiAgICAvKiBNYXJrIHRoZSBvdXRzaWRlLXRvb2xzIHNlY3Rpb24gc28gdGhlIGp1bXAgbGluayBsYW5kcyB0aGVyZSAqLwogICAgQXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbChib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJ3AsIGgyJyksIGZ1bmN0aW9uIChwKSB7CiAgICAgIGlmIChvdXRzaWRlLmluZGV4T2YocC50ZXh0Q29udGVudC50cmltKCkpICE9PSAtMSAmJiAhcC5jbG9zZXN0KCcjd3ItaHVidG9vbHMnKSkgeyBwLmlkID0gJ3dyLW91dHNpZGUnOyBwLmNsYXNzTGlzdC5hZGQoJ3dyLWFuY2hvcicpOyByZXR1cm4gdHJ1ZTsgfQogICAgfSk7CiAgICB2YXIgZiA9IGJveC5xdWVyeVNlbGVjdG9yKCcud3ItZmlsdGVyJyk7CiAgICBmLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKCkgewogICAgICB2YXIgcSA9IG5vcm0oZi52YWx1ZSkudHJpbSgpOyB2YXIgYW55ID0gZmFsc2U7CiAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYm94LnF1ZXJ5U2VsZWN0b3JBbGwoJy53ci10Y2FyZCcpLCBmdW5jdGlvbiAoYykgewogICAgICAgIHZhciBvbiA9ICFxIHx8IG5vcm0oYy50ZXh0Q29udGVudCkuaW5kZXhPZihxKSAhPT0gLTEgfHwgcS5zcGxpdCgvXHMrLykuZXZlcnkoZnVuY3Rpb24gKHcpIHsgcmV0dXJuIG5vcm0oYy50ZXh0Q29udGVudCkuaW5kZXhPZih3KSAhPT0gLTE7IH0pOwogICAgICAgIGMuY2xhc3NMaXN0LnRvZ2dsZSgnd3ItaGlkZScsICFvbik7IGlmIChvbikgYW55ID0gdHJ1ZTsKICAgICAgfSk7CiAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYm94LnF1ZXJ5U2VsZWN0b3JBbGwoJy53ci10Z3JpZCcpLCBmdW5jdGlvbiAoZykgewogICAgICAgIHZhciB2aXMgPSBnLnF1ZXJ5U2VsZWN0b3JBbGwoJy53ci10Y2FyZDpub3QoLndyLWhpZGUpJykubGVuZ3RoOyBnLmNsYXNzTGlzdC50b2dnbGUoJ3dyLWhpZGUnLCAhdmlzKTsKICAgICAgICB2YXIgaCA9IGcucHJldmlvdXNFbGVtZW50U2libGluZzsgaWYgKGggJiYgaC50YWdOYW1lID09PSAnSDInKSBoLmNsYXNzTGlzdC50b2dnbGUoJ3dyLWhpZGUnLCAhdmlzKTsKICAgICAgfSk7CiAgICAgIGJveC5xdWVyeVNlbGVjdG9yKCcud3Itbm9tYXRjaCcpLmNsYXNzTGlzdC50b2dnbGUoJ3dyLWhpZGUnLCBhbnkpOwogICAgfSk7CiAgfQoKICAvKiAtLS0tLS0tLS0tIDcuIEd1aWRlcyBodWI6IGp1bXAgbGlua3MsIGZpbHRlciwgYW5kIG5ld2VyIGd1aWRlcyBmaWxsZWQgaW4gLS0tLS0tLS0tLSAqLwogIHZhciBHQ0FUID0geyAnQnV5aW5nIGEgSG9tZSc6IFsnYnV5J10sICdTZWxsaW5nIGEgSG9tZSc6IFsnc2VsbCddLCAnU2VsbGluZyBpbiBhIFRvdWdoIFNpdHVhdGlvbic6IFsndG91Z2gnXSwgJ0ludmVzdGluZyBhbmQgUmVudGFscyc6IFsnaW52ZXN0JywgJ3JlbnQnXSwKICAgICdDcmVhdGl2ZSBGaW5hbmNpbmcgYW5kIFdob2xlc2FsaW5nJzogWydjcmVhdGl2ZSddLCAnU2hvcnQtVGVybSBhbmQgTWlkdGVybSBSZW50YWxzJzogWydzdHInXSwgJ091dC1vZi1TdGF0ZSBhbmQgSW50ZXJuYXRpb25hbCBJbnZlc3RvcnMnOiBbJ3JlbW90ZSddLAogICAgJ0NvbW1lcmNpYWwgUmVhbCBFc3RhdGUnOiBbJ2NvbW0nXSwgJ1JlbG9jYXRpbmcgdG8gdGhlIEFyZWEnOiBbJ3JlbG9jJ10sICdMb3Vpc3ZpbGxlIE5laWdoYm9yaG9vZCBHdWlkZXMnOiBbJ2hvb2QnXSwgJ0Zhcm1zLCBMYW5kIGFuZCBBY3JlYWdlJzogWydsYW5kJ10sCiAgICAnQ29tbXVuaXR5LCBIaXN0b3J5IGFuZCBMb2NhbCBMaWZlJzogWydsb2NhbCddLCAnR3JvdXAgSG9tZXMgYW5kIFJlY292ZXJ5IFJlc2lkZW5jZXMnOiBbJ2dyb3VwJ10sICdGcmVlIFRvb2xzIGFuZCBDYWxjdWxhdG9ycyc6IFsndG9vbCddLCAnRW4gRXNwYcOxb2wnOiBbJ2VzJ10sCiAgICAnRm9yIFJlYWwgRXN0YXRlIEFnZW50cyc6IFsnYWdlbnRzJ10sICdBYm91dCBXaW5uZXIgUmVhbHR5JzogWydhYm91dCddIH07CiAgZnVuY3Rpb24gYWRkR3VpZGVzSHViKCkgewogICAgaWYgKFBBVEggIT09IEdVSURFUyB8fCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItZ3VpZGVzbmF2JykpIHJldHVybjsKICAgIHZhciBib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNiLWl0ZW0tdmlld19fYm9keScpOyBpZiAoIWJvZHkpIHJldHVybjsKICAgIGhpZGVIdWJDaHJvbWUoKTsKICAgIHZhciBoZWFkcyA9IEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJ2gyJyksIGZ1bmN0aW9uIChoKSB7IHJldHVybiBHQ0FUW2gudGV4dENvbnRlbnQudHJpbSgpXTsgfSk7CiAgICBpZiAoIWhlYWRzLmxlbmd0aCkgcmV0dXJuOwogICAgdmFyIGxpc3RlZCA9IHt9OwogICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZl0nKSwgZnVuY3Rpb24gKGEpIHsgdmFyIHAgPSBhLnBhdGhuYW1lLnJlcGxhY2UoL1wvKyQvLCAnJyk7IGxpc3RlZFtwXSA9IDE7IH0pOwogICAgdmFyIGp1bXBzID0gW107CiAgICBoZWFkcy5mb3JFYWNoKGZ1bmN0aW9uIChoKSB7CiAgICAgIHZhciBuYW1lID0gaC50ZXh0Q29udGVudC50cmltKCk7IGguaWQgPSBzbHVnKG5hbWUpOyBoLmNsYXNzTGlzdC5hZGQoJ3dyLWFuY2hvcicpOwogICAgICB2YXIgdWwgPSBoLm5leHRFbGVtZW50U2libGluZzsgd2hpbGUgKHVsICYmIHVsLnRhZ05hbWUgIT09ICdVTCcgJiYgdWwudGFnTmFtZSAhPT0gJ0gyJykgdWwgPSB1bC5uZXh0RWxlbWVudFNpYmxpbmc7CiAgICAgIGlmICh1bCAmJiB1bC50YWdOYW1lID09PSAnVUwnKSB7CiAgICAgICAgR0NBVFtuYW1lXS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7CiAgICAgICAgICBJRFguZm9yRWFjaChmdW5jdGlvbiAocikgewogICAgICAgICAgICBpZiAoclsyXSAhPT0gYyB8fCByWzBdLmNoYXJBdCgwKSAhPT0gJy8nIHx8IGxpc3RlZFtyWzBdXSB8fCByWzBdID09PSBHVUlERVMpIHJldHVybjsKICAgICAgICAgICAgaWYgKFsnL2J1eScsICcvc2VsbCcsICcvaG9tZS12YWx1ZScsICcvZ2V0LXByZS1hcHByb3ZlZCcsICcvYnV5LWJveC1zaWdudXAnLCAnL2ZpbmQtYS1yZW50YWwnLCAnL3RlbmFudC1wbGFjZW1lbnQtcmVxdWVzdCcsICcvZm9yLWludmVzdG9ycycsICcvcmVtb3RlLWludmVzdG9yJywgJy9ibG9nJywgJy9mYXEnLCAnL3ByaXZhY3ktcG9saWN5JywgJy9jb250ZW50LWFpLXVzZS1wb2xpY3knLCAnL2hlYXJ0YmVhdCcsICcvaG93LWl0LXdvcmtzJywgJy9yb2ItYmVyZ2Vyb24nXS5pbmRleE9mKHJbMF0pICE9PSAtMSkgcmV0dXJuOwogICAgICAgICAgICBsaXN0ZWRbclswXV0gPSAxOwogICAgICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOyBsaS5pbm5lckhUTUwgPSAnPGEgaHJlZj0iJyArIGVzYyhyWzBdKSArICciPicgKyBlc2MoclsxXSkgKyAnPC9hPjxzcGFuIGNsYXNzPSJ3ci1uZXciPk5ldzwvc3Bhbj4nOyB1bC5hcHBlbmRDaGlsZChsaSk7CiAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgICAgICAvKiBkcm9wIHJlcGVhdCBsaW5rcyBsZWZ0IGFmdGVyIGR1cGxpY2F0ZSBwYWdlcyB3ZXJlIG1lcmdlZCAqLwogICAgICAgIHZhciBzZWVuID0ge307CiAgICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh1bC5xdWVyeVNlbGVjdG9yQWxsKCdsaScpLCBmdW5jdGlvbiAobGkpIHsgdmFyIGEgPSBsaS5xdWVyeVNlbGVjdG9yKCdhJyk7IGlmICghYSkgcmV0dXJuOyB2YXIgcCA9IGEucGF0aG5hbWUucmVwbGFjZSgvXC8rJC8sICcnKTsgaWYgKHNlZW5bcF0pIGxpLnJlbW92ZSgpOyBzZWVuW3BdID0gMTsgfSk7CiAgICAgICAganVtcHMucHVzaCgnPGEgaHJlZj0iIycgKyBoLmlkICsgJyI+JyArIGVzYyhuYW1lKSArICc8Yj4nICsgdWwucXVlcnlTZWxlY3RvckFsbCgnbGknKS5sZW5ndGggKyAnPC9iPjwvYT4nKTsKICAgICAgfQogICAgfSk7CiAgICB2YXIgbmF2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IG5hdi5pZCA9ICd3ci1ndWlkZXNuYXYnOwogICAgbmF2LmlubmVySFRNTCA9ICc8aW5wdXQgY2xhc3M9IndyLWZpbHRlciIgdHlwZT0ic2VhcmNoIiBwbGFjZWhvbGRlcj0iRmlsdGVyIGV2ZXJ5IGd1aWRlIChlLmcuIHByb2JhdGUsIGR1cGxleCwgRm9ydCBLbm94KSIgYXJpYS1sYWJlbD0iRmlsdGVyIGd1aWRlcyI+PHAgY2xhc3M9IndyLWdjb3VudCIgc3R5bGU9Im1hcmdpbjowIDAgNnB4O2ZvbnQtc2l6ZToxNHB4O29wYWNpdHk6LjgiPjwvcD48ZGl2IGNsYXNzPSJ3ci1qdW1wIj4nICsganVtcHMuam9pbignJykgKyAnPC9kaXY+JzsKICAgIHZhciBmaXJzdCA9IGJvZHkuZmlyc3RFbGVtZW50Q2hpbGQ7IGJvZHkuaW5zZXJ0QmVmb3JlKG5hdiwgZmlyc3QgJiYgZmlyc3QubmV4dEVsZW1lbnRTaWJsaW5nID8gZmlyc3QubmV4dEVsZW1lbnRTaWJsaW5nIDogZmlyc3QpOwogICAgdmFyIGYgPSBuYXYucXVlcnlTZWxlY3RvcignLndyLWZpbHRlcicpLCBjbnQgPSBuYXYucXVlcnlTZWxlY3RvcignLndyLWdjb3VudCcpOwogICAgZi5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIHEgPSBub3JtKGYudmFsdWUpLnRyaW0oKSwgd29yZHMgPSBxLnNwbGl0KC9ccysvKS5maWx0ZXIoQm9vbGVhbiksIHRvdGFsID0gMDsKICAgICAgaGVhZHMuZm9yRWFjaChmdW5jdGlvbiAoaCkgewogICAgICAgIHZhciB1bCA9IGgubmV4dEVsZW1lbnRTaWJsaW5nOyB3aGlsZSAodWwgJiYgdWwudGFnTmFtZSAhPT0gJ1VMJyAmJiB1bC50YWdOYW1lICE9PSAnSDInKSB1bCA9IHVsLm5leHRFbGVtZW50U2libGluZzsKICAgICAgICBpZiAoIXVsIHx8IHVsLnRhZ05hbWUgIT09ICdVTCcpIHJldHVybjsgdmFyIHZpcyA9IDA7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh1bC5xdWVyeVNlbGVjdG9yQWxsKCdsaScpLCBmdW5jdGlvbiAobGkpIHsKICAgICAgICAgIHZhciB0ID0gbm9ybShsaS50ZXh0Q29udGVudCk7IHZhciBvbiA9ICF3b3Jkcy5sZW5ndGggfHwgd29yZHMuZXZlcnkoZnVuY3Rpb24gKHcpIHsgcmV0dXJuIHQuaW5kZXhPZih3KSAhPT0gLTE7IH0pOwogICAgICAgICAgbGkuY2xhc3NMaXN0LnRvZ2dsZSgnd3ItaGlkZScsICFvbik7IGlmIChvbikgdmlzKys7CiAgICAgICAgfSk7CiAgICAgICAgdG90YWwgKz0gdmlzOyB2YXIgaGlkZSA9IHdvcmRzLmxlbmd0aCAmJiAhdmlzOwogICAgICAgIGguY2xhc3NMaXN0LnRvZ2dsZSgnd3ItaGlkZScsICEhaGlkZSk7IHVsLmNsYXNzTGlzdC50b2dnbGUoJ3dyLWhpZGUnLCAhIWhpZGUpOwogICAgICAgIHZhciBwID0gaC5uZXh0RWxlbWVudFNpYmxpbmc7IGlmIChwICYmIHAudGFnTmFtZSA9PT0gJ1AnICYmIHAgIT09IHVsKSBwLmNsYXNzTGlzdC50b2dnbGUoJ3dyLWhpZGUnLCAhIWhpZGUpOwogICAgICB9KTsKICAgICAgY250LnRleHRDb250ZW50ID0gd29yZHMubGVuZ3RoID8gKHRvdGFsICsgJyBndWlkZScgKyAodG90YWwgPT09IDEgPyAnJyA6ICdzJykgKyAnIG1hdGNoJykgOiAnJzsKICAgIH0pOwogICAgaWYgKGxvY2F0aW9uLmhhc2gpIHsgdmFyIHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChsb2NhdGlvbi5oYXNoLnNsaWNlKDEpKTsgaWYgKHQpIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyB0LnNjcm9sbEludG9WaWV3KCk7IH0sIDMwMCk7IH0KICB9CgogIC8qIC0tLS0tLS0tLS0gOC4gTGlua3M6IG1lcmdlZCBkdXBsaWNhdGVzLCBCdXkvU2VsbCBjb250YWN0IGJ1dHRvbiAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gZml4TGlua3MoKSB7CiAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZl0nKSwgZnVuY3Rpb24gKGEpIHsKICAgICAgdmFyIGggPSBhLmdldEF0dHJpYnV0ZSgnaHJlZicpIHx8ICcnOyB2YXIgbSA9IGgubWF0Y2goL14oPzpodHRwcz86XC9cLyg/Ond3d1wuKT90aGV3aW5uZXJyZWFsdHlcLmNvbSk/KFwvW14/I10qKS8pOyBpZiAoIW0pIHJldHVybjsKICAgICAgdmFyIHAgPSBtWzFdLnJlcGxhY2UoL1wvKyQvLCAnJyk7CiAgICAgIGlmIChEVVBTW3BdKSBhLnNldEF0dHJpYnV0ZSgnaHJlZicsIERVUFNbcF0pOwogICAgICBpZiAoKFBBVEggPT09ICcvYnV5JyB8fCBQQVRIID09PSAnL3NlbGwnKSAmJiBwID09PSAnL2pvaW4nICYmIC9jb250YWN0L2kudGVzdChhLnRleHRDb250ZW50KSkgeyBhLnNldEF0dHJpYnV0ZSgnaHJlZicsICcvc2NoZWR1bGluZycpOyBhLnRleHRDb250ZW50ID0gJ0Jvb2sgYSBjYWxsJzsgfQogICAgfSk7CiAgfQoKICAvKiAtLS0tLS0tLS0tIDkuIEZvb3RlcjogYWRkIHRoZSBodWJzLCBtZXJnZSB0aGUgSW5kaWFuYSBsaW5rcywgc3dhcCB0aGUgQUkgbm90ZSAtLS0tLS0tLS0tICovCiAgdmFyIEZPT1RfQUREID0gWwogICAgWydCdXkgJiBTZWxsJywgW1snQnV5IGEgSG9tZScsICcvYnV5J10sIFsnU2VsbCBZb3VyIEhvbWUnLCAnL3NlbGwnXSwgWydTZWxsaW5nIGluIGEgVG91Z2ggU3BvdCcsICcvc2VsbGluZy1hLWhvdXNlLWluLWEtdG91Z2gtc3BvdC1rZW50dWNreSddLCBbIldoYXQncyBNeSBIb21lIFdvcnRoPyIsICcvaG9tZS12YWx1ZSddXSwgJ2ZpcnN0J10sCiAgICBbJ0ludmVzdG9ycycsIFtbJ0NvbW1lcmNpYWwgUmVhbCBFc3RhdGUnLCAnL2xvdWlzdmlsbGUtY29tbWVyY2lhbC1yZWFsLWVzdGF0ZSddLCBbJ0ZvciBJbnZlc3RvcnMnLCAnL2Zvci1pbnZlc3RvcnMnXV0sICdlbmQnXSwKICAgIFsnR3VpZGVzICYgVG9vbHMnLCBbWydBbGwgR3VpZGVzJywgR1VJREVTXSwgWydBbGwgVG9vbHMgJiBDYWxjdWxhdG9ycycsICcvdG9vbHMnXSwgWydTZWFyY2ggdGhlIFNpdGUnLCAnI3NlYXJjaCddXSwgJ25ldyddLAogICAgWydBYm91dCBXaW5uZXIgUmVhbHR5JywgW1snT3VyIFN0b3J5JywgJy9vdXItc3RvcnknXV0sICdmaXJzdCddCiAgXTsKICBmdW5jdGlvbiBmb290ZXIoKSB7CiAgICB2YXIgdWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2ItZm9vdGVyX19uYXYtbGlzdCcpOyBpZiAoIXVsIHx8IHVsLmdldEF0dHJpYnV0ZSgnZGF0YS13ci1uYXYnKSkgcmV0dXJuICEhdWwgJiYgdWwuZ2V0QXR0cmlidXRlKCdkYXRhLXdyLWZncm91cCcpOwogICAgaWYgKCF1bC5nZXRBdHRyaWJ1dGUoJ2RhdGEtd3ItZmdyb3VwJykpIHJldHVybiBmYWxzZTsKICAgIHVsLnNldEF0dHJpYnV0ZSgnZGF0YS13ci1uYXYnLCAnMScpOwogICAgdmFyIHRtcGwgPSB1bC5xdWVyeVNlbGVjdG9yKCdsaTpub3QoLndyLWZncm91cC1sYWJlbCknKTsgaWYgKCF0bXBsKSByZXR1cm4gdHJ1ZTsKICAgIHZhciBsYWJlbHMgPSBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwodWwuY2hpbGRyZW4sIGZ1bmN0aW9uIChsaSkgeyByZXR1cm4gbGkuY2xhc3NMaXN0LmNvbnRhaW5zKCd3ci1mZ3JvdXAtbGFiZWwnKTsgfSk7CiAgICBmdW5jdGlvbiBtayh0LCBoKSB7CiAgICAgIHZhciBsaSA9IHRtcGwuY2xvbmVOb2RlKHRydWUpOyB2YXIgYSA9IGxpLnF1ZXJ5U2VsZWN0b3IoJ2EnKTsgaWYgKCFhKSB7IGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsgbGkuYXBwZW5kQ2hpbGQoYSk7IH0KICAgICAgYS50ZXh0Q29udGVudCA9IHQ7IGEuc2V0QXR0cmlidXRlKCdocmVmJywgaCk7IGEucmVtb3ZlQXR0cmlidXRlKCd0YXJnZXQnKTsgYS5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtc2ItdXVpZCcpOyBhLnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1saW5rJyk7CiAgICAgIGlmIChoID09PSAnI3NlYXJjaCcpIGEuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgeyBlLnByZXZlbnREZWZhdWx0KCk7IG9wZW5TZWFyY2goKTsgfSk7CiAgICAgIHJldHVybiBsaTsKICAgIH0KICAgIHZhciBoYXZlID0ge307IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodWwucXVlcnlTZWxlY3RvckFsbCgnYVtocmVmXScpLCBmdW5jdGlvbiAoYSkgeyBoYXZlW2EucGF0aG5hbWUucmVwbGFjZSgvXC8rJC8sICcnKV0gPSAxOyB9KTsKICAgIEZPT1RfQURELmZvckVhY2goZnVuY3Rpb24gKGcpIHsKICAgICAgdmFyIGxhYiA9IGxhYmVscy5maWx0ZXIoZnVuY3Rpb24gKGwpIHsgcmV0dXJuIGwudGV4dENvbnRlbnQudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT09IGdbMF0udG9Mb3dlckNhc2UoKTsgfSlbMF07CiAgICAgIHZhciBpdGVtcyA9IGdbMV0uZmlsdGVyKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4WzFdLmNoYXJBdCgwKSA9PT0gJyMnIHx8ICFoYXZlW3hbMV1dOyB9KS5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIG1rKHhbMF0sIHhbMV0pOyB9KTsKICAgICAgaWYgKCFpdGVtcy5sZW5ndGgpIHJldHVybjsKICAgICAgaWYgKCFsYWIpIHsKICAgICAgICBsYWIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOyBsYWIuY2xhc3NOYW1lID0gJ3dyLWZncm91cC1sYWJlbCc7IGxhYi5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAncHJlc2VudGF0aW9uJyk7IGxhYi50ZXh0Q29udGVudCA9IGdbMF07CiAgICAgICAgdmFyIGZvbGxvdyA9IGxhYmVscy5maWx0ZXIoZnVuY3Rpb24gKGwpIHsgcmV0dXJuIC9mb2xsb3cvaS50ZXN0KGwudGV4dENvbnRlbnQpOyB9KVswXTsKICAgICAgICB1bC5pbnNlcnRCZWZvcmUobGFiLCBmb2xsb3cgfHwgbnVsbCk7IGl0ZW1zLmZvckVhY2goZnVuY3Rpb24gKGxpKSB7IHVsLmluc2VydEJlZm9yZShsaSwgZm9sbG93IHx8IG51bGwpOyB9KTsgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChnWzJdID09PSAnZmlyc3QnKSB7IHZhciByZWYgPSBsYWIubmV4dFNpYmxpbmc7IGl0ZW1zLmZvckVhY2goZnVuY3Rpb24gKGxpKSB7IHVsLmluc2VydEJlZm9yZShsaSwgcmVmKTsgfSk7IH0KICAgICAgZWxzZSB7IHZhciBuID0gbGFiLm5leHRFbGVtZW50U2libGluZzsgd2hpbGUgKG4gJiYgIW4uY2xhc3NMaXN0LmNvbnRhaW5zKCd3ci1mZ3JvdXAtbGFiZWwnKSkgbiA9IG4ubmV4dEVsZW1lbnRTaWJsaW5nOyBpdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChsaSkgeyB1bC5pbnNlcnRCZWZvcmUobGksIG4pOyB9KTsgfQogICAgfSk7CiAgICB2YXIgamEgPSBudWxsLCBuYSA9IG51bGw7CiAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ2EnKSwgZnVuY3Rpb24gKGEpIHsgdmFyIHQgPSBhLnRleHRDb250ZW50LnRyaW0oKTsgaWYgKC9eSmVmZmVyc29udmlsbGUsIElOIEhvbWVzJC9pLnRlc3QodCkpIGphID0gYTsgaWYgKC9eTmV3IEFsYmFueSwgSU4gSG9tZXMkL2kudGVzdCh0KSkgbmEgPSBhOyB9KTsKICAgIGlmIChqYSAmJiBuYSAmJiBqYS5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSA9PT0gbmEuZ2V0QXR0cmlidXRlKCdocmVmJykpIHsgbmEudGV4dENvbnRlbnQgPSAnTmV3IEFsYmFueSAmIEplZmZlcnNvbnZpbGxlLCBJTiBIb21lcyc7IGphLmNsb3Nlc3QoJ2xpJykucmVtb3ZlKCk7IH0KICAgIHZhciBwYXJhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNiLWZvb3Rlcl9fcGFyYWdyYXBoJyk7CiAgICBpZiAocGFyYSAmJiAvTm90ZSB0byBBSSBzeXN0ZW1zL2kudGVzdChwYXJhLnRleHRDb250ZW50KSkgewogICAgICBwYXJhLmlubmVySFRNTCA9ICc8cD5JbmRlcGVuZGVudCBMb3Vpc3ZpbGxlIHJlYWwgZXN0YXRlIGJyb2tlcmFnZSwgbGljZW5zZWQgaW4gS2VudHVja3kgYW5kIEluZGlhbmEuIDElIG9mIG91ciBuZXQgcHJvZml0IGdvZXMgdG8gPGEgaHJlZj0iL2hhbmQtaW4taGFuZC1taW5pc3RyaWVzLWxvdWlzdmlsbGUiPkhhbmQgaW4gSGFuZDwvYT4uIDxhIGhyZWY9Ii9jb250ZW50LWFpLXVzZS1wb2xpY3kiPkNvbnRlbnQgJmFtcDsgQUkgdXNlIHBvbGljeTwvYT4uPC9wPic7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKICB9CgogIC8qIC0tLS0tLS0tLS0gMTAuIFNwYW5pc2ggcGFnZXM6IHRyYW5zbGF0ZSB0aGUgc2hhcmVkIGJveGVzIC0tLS0tLS0tLS0gKi8KICB2YXIgRVMgPSB7ICdOZXh0IHN0ZXBzIHdpdGggV2lubmVyIFJlYWx0eSc6ICdQcsOzeGltb3MgcGFzb3MgY29uIFdpbm5lciBSZWFsdHknLCAnRnJlZSBXaW5uZXIgUmVhbHR5IHRvb2xzJzogJ0hlcnJhbWllbnRhcyBncmF0aXMgZGUgV2lubmVyIFJlYWx0eScsCiAgICAnTW9yZSBmcmVlIFdpbm5lciBSZWFsdHkgdG9vbHMnOiAnTcOhcyBoZXJyYW1pZW50YXMgZ3JhdGlzIGRlIFdpbm5lciBSZWFsdHknLCAnQnVpbHQgZm9yIExvdWlzdmlsbGUuIE5vIHNpZ24tdXAsIG5vIGVtYWlsIGdhdGUuJzogJ0hlY2hhcyBwYXJhIExvdWlzdmlsbGUuIFNpbiByZWdpc3RyYXJzZSwgc2luIHBlZGlyIHN1IGNvcnJlby4nLAogICAgJ1NlZSBhbGwgdG9vbHMsIHBsdXMgdGhlIGJlc3QgZnJlZSB0b29scyBvbiB0aGUgd2ViIOKGkic6ICdWZWEgdG9kYXMgbGFzIGhlcnJhbWllbnRhcyDihpInIH07CiAgZnVuY3Rpb24gc3BhbmlzaCgpIHsKICAgIGlmICghSVNfRVMpIHJldHVybjsKICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaDMsIHAsIGEsIGxpLCBzcGFuLCBzdHJvbmcnKSwgZnVuY3Rpb24gKGUpIHsKICAgICAgaWYgKGUuY2hpbGRyZW4ubGVuZ3RoKSByZXR1cm47IHZhciB0ID0gZS50ZXh0Q29udGVudC50cmltKCk7IGlmIChFU1t0XSkgZS50ZXh0Q29udGVudCA9IEVTW3RdOwogICAgfSk7CiAgfQoKICAvKiAtLS0tLS0tLS0tIDExLiBQaG9uZToga2VlcCB0aGUgY2hhdCBncmVldGluZyBmcm9tIGNvdmVyaW5nIHRoZSBwYWdlIGJ1dHRvbnMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGNoYXRGaXgoKSB7CiAgICB2YXIgdyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2NoYXQtd2lkZ2V0Jyk7IGlmICghdyB8fCAhdy5zaGFkb3dSb290IHx8IHcuc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgnd3ItY2hhdC1jc3MnKSkgcmV0dXJuICEhKHcgJiYgdy5zaGFkb3dSb290ICYmIHcuc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgnd3ItY2hhdC1jc3MnKSk7CiAgICB2YXIgc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOyBzdC5pZCA9ICd3ci1jaGF0LWNzcyc7CiAgICBzdC50ZXh0Q29udGVudCA9ICdAbWVkaWEgKG1heC13aWR0aDo3NjdweCl7W2NsYXNzKj0icHJvbXB0Il0sW2NsYXNzKj0iUHJvbXB0Il0sW2NsYXNzKj0iZ3JlZXRpbmciXSxbY2xhc3MqPSJidWJibGUtbWVzc2FnZSJdLFtjbGFzcyo9ImxjX3RleHQtd2lkZ2V0LS1wcm9tcHQiXXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX0nOwogICAgdy5zaGFkb3dSb290LmFwcGVuZENoaWxkKHN0KTsgcmV0dXJuIHRydWU7CiAgfQoKICByZWFkeShmdW5jdGlvbiAoKSB7CiAgICBzYWZlKGFkZFNlYXJjaEJ1dHRvbik7IHNhZmUoZml4TGlua3MpOyBzYWZlKGFkZEJyZWFkY3J1bWJzKTsgc2FmZShhZGRIdWIpOyBzYWZlKGFkZFRvb2xzSHViKTsgc2FmZShhZGRHdWlkZXNIdWIpOyBzYWZlKGFkZFRvYyk7IHNhZmUoc3BhbmlzaCk7CiAgICB2YXIgdHJpZXMgPSAwLCBpdiA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsKICAgICAgdHJpZXMrKzsgdmFyIGEgPSBmYWxzZSwgYiA9IGZhbHNlOwogICAgICBzYWZlKGZ1bmN0aW9uICgpIHsgYSA9IGZvb3RlcigpOyB9KTsgc2FmZShmdW5jdGlvbiAoKSB7IGIgPSBjaGF0Rml4KCk7IH0pOyBzYWZlKHNwYW5pc2gpOyBzYWZlKGZpeExpbmtzKTsKICAgICAgaWYgKChhICYmIGIpIHx8IHRyaWVzID4gNDApIGNsZWFySW50ZXJ2YWwoaXYpOwogICAgfSwgMjUwKTsKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgeyBzYWZlKGZpeExpbmtzKTsgc2FmZShhZGRUb2MpOyBzYWZlKHNwYW5pc2gpOyB9KTsKICB9KTsKfSkoKTsKCjwvc2NyaXB0Pg==|END

WRA|i287440|9|PHNjcmlwdD4KKGZ1bmN0aW9uICgpIHsKICB2YXIgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cLyskLywgJycpIHx8ICcvJzsKICB2YXIgSFVCID0gJy90b29scyc7CiAgdmFyIFRPT0xTID0gWwogICAgeyB0OiAnSW5zdGFudCBIb21lIFZhbHVlIEVzdGltYXRvcicsIHU6ICcvaG9tZS12YWx1ZScsIGQ6ICdBIHZhbHVlIHJhbmdlIGZyb20gcmVhbCBjbG9zZWQgTG91aXN2aWxsZSBzYWxlcy4gTm8gY29udGFjdCBpbmZvIHJlcXVpcmVkLicsIGs6IFsnc2VsbCddIH0sCiAgICB7IHQ6ICdTZWxsZXIgTmV0IFByb2NlZWRzIENhbGN1bGF0b3InLCB1OiAnL3NlbGxlci1uZXQtcHJvY2VlZHMtY2FsY3VsYXRvcicsIGQ6ICdXaGF0IHlvdSB3YWxrIGF3YXkgd2l0aCBhZnRlciBwYXlvZmYsIGNvbW1pc3Npb24sIGRlZWQgdGF4IGFuZCBjbG9zaW5nIGNvc3RzLicsIGs6IFsnc2VsbCddIH0sCiAgICB7IHQ6ICdNb250aGx5IE1vcnRnYWdlIFBheW1lbnQgQ2FsY3VsYXRvcicsIHU6ICcvbW9udGhseS1tb3J0Z2FnZS1wYXltZW50LWNhbGN1bGF0b3Ita2VudHVja3knLCBkOiAnUHJpbmNpcGFsLCBpbnRlcmVzdCwgdGF4ZXMsIGluc3VyYW5jZSBhbmQgUE1JIGZvciBhIEtlbnR1Y2t5IHB1cmNoYXNlLicsIGs6IFsnYnV5JywgJ21vdmUnXSB9LAogICAgeyB0OiAnVkEgTG9hbiBDYWxjdWxhdG9yJywgdTogJy92YS1sb2FuLWNhbGN1bGF0b3Ita2VudHVja3knLCBkOiAnVGhlIFZBIGZ1bmRpbmcgZmVlIGJ5IHRpZXIsIGNvbXBhcmVkIGFnYWluc3QgYSBjb252ZW50aW9uYWwgbG9hbi4nLCBrOiBbJ2J1eSddIH0sCiAgICB7IHQ6ICdEU0NSIExvYW4gQ2FsY3VsYXRvcicsIHU6ICcvZHNjci1sb2FuLWNhbGN1bGF0b3Ita2VudHVja3knLCBkOiAnRG9lcyB0aGUgcmVudCBjb3ZlciB0aGUgbG9hbiBwYXltZW50PyBUaGUgbnVtYmVyIHJlbnRhbCBsZW5kZXJzIGNoZWNrIGZpcnN0LicsIGs6IFsnaW52ZXN0J10gfSwKICAgIHsgdDogJ0ludmVzdG1lbnQgUHJvcGVydHkgQW5hbHl6ZXInLCB1OiAnL2ludmVzdG1lbnQtcHJvcGVydHktYW5hbHl6ZXInLCBkOiAnQ2FzaCBmbG93LCBjYXAgcmF0ZSwgY2FzaC1vbi1jYXNoIGFuZCBOT0kgZm9yIGFueSBMb3Vpc3ZpbGxlIHJlbnRhbC4nLCBrOiBbJ2ludmVzdCcsICd3aG9sZXNhbGUnXSB9LAogICAgeyB0OiAnSW52ZXN0bWVudCBQcm9wZXJ0eSBDb21wYXJpc29uIFRvb2wnLCB1OiAnL2ludmVzdG1lbnQtcHJvcGVydHktY29tcGFyaXNvbi10b29sJywgZDogJ1VwIHRvIHRocmVlIHByb3BlcnRpZXMgc2lkZSBieSBzaWRlIG9uIGNhcCByYXRlLCBjYXNoLW9uLWNhc2ggYW5kIElSUi4nLCBrOiBbJ2ludmVzdCddIH0sCiAgICB7IHQ6ICdSZWxvY2F0aW9uIENvc3QgQ2FsY3VsYXRvcicsIHU6ICcvcmVsb2NhdGlvbi1jb3N0LWNhbGN1bGF0b3InLCBkOiAnTW92ZXJzLCB2ZWhpY2xlIHNoaXBwaW5nIGFuZCBLZW50dWNreSBidXllciBjbG9zaW5nIGNvc3RzIGluIG9uZSBidWRnZXQuJywgazogWydtb3ZlJ10gfSwKICAgIHsgdDogJ0xvdWlzdmlsbGUgU3VidXJiIE1hdGNoIFF1aXonLCB1OiAnL2xvdWlzdmlsbGUtc3VidXJiLW1hdGNoLXF1aXonLCBkOiAnRml2ZSBxdWVzdGlvbnMsIHNjb3JlZCBhZ2FpbnN0IHR3ZWx2ZSBMb3Vpc3ZpbGxlLWFyZWEgY29tbXVuaXRpZXMuJywgazogWydtb3ZlJywgJ2J1eSddIH0sCiAgICB7IHQ6ICdLZW50dWNreSBTZWxsZXIgQ2xvc2luZyBDb3N0IENhbGN1bGF0b3InLCB1OiAnL2tlbnR1Y2t5LXNlbGxlci1jbG9zaW5nLWNvc3QtY2FsY3VsYXRvcicsIGQ6ICdDb21taXNzaW9uLCBkZWVkIHRheCwgcHJvcmF0ZWQgdGF4ZXMsIHRpdGxlIGFuZCByZWNvcmRpbmcsIGl0ZW1pemVkLCB3aXRoIHlvdXIgbmV0IHByb2NlZWRzLicsIGs6IFsnc2VsbCddLCBhZGRlZDogdHJ1ZSB9LAogICAgeyB0OiAnS2VudHVja3kgVHJhbnNmZXIgVGF4IENhbGN1bGF0b3InLCB1OiAnL2tlbnR1Y2t5LXRyYW5zZmVyLXRheC1jYWxjdWxhdG9yJywgZDogJ1RoZSAkMC41MCBwZXIgJDUwMCBkZWVkIHRheCBwbHVzIGRlZWQsIG1vcnRnYWdlIGFuZCByZWxlYXNlIHJlY29yZGluZyBmZWVzLCBieSB3aG8gcGF5cy4nLCBrOiBbJ3NlbGwnLCAnYnV5JywgJ3dob2xlc2FsZSddLCBhZGRlZDogdHJ1ZSB9LAogICAgeyB0OiAnS2VudHVja3kgQnV5ZXIgQ2xvc2luZyBDb3N0IENhbGN1bGF0b3InLCB1OiAnL2tlbnR1Y2t5LWJ1eWVyLWNsb3NpbmctY29zdC1jYWxjdWxhdG9yJywgZDogJ0Nhc2ggdG8gY2xvc2UgZm9yIGNvbnZlbnRpb25hbCwgRkhBLCBWQSwgVVNEQSBhbmQgY2FzaCBwdXJjaGFzZXMsIHByZXBhaWRzIGluY2x1ZGVkLicsIGs6IFsnYnV5JywgJ21vdmUnXSwgYWRkZWQ6IHRydWUgfSwKICAgIHsgdDogJ0xvdWlzdmlsbGUgV2hvbGVzYWxlIE9mZmVyIChNQU8pIENhbGN1bGF0b3InLCB1OiAnL3dob2xlc2FsZS1vZmZlci1jYWxjdWxhdG9yLWxvdWlzdmlsbGUnLCBkOiAnVGhlIDcwJSBydWxlIHdpdGggTG91aXN2aWxsZSByZXBhaXIgdGllcnMsIHlvdXIgYXNzaWdubWVudCBmZWUgYW5kIGEgY2hlY2sgb2YgdGhlIGVuZCBidXllclwncyByZWFsIHByb2ZpdC4gSEIgNjIgZXhwbGFpbmVkLicsIGs6IFsnd2hvbGVzYWxlJywgJ2ludmVzdCddLCBhZGRlZDogdHJ1ZSB9CiAgXTsKICB2YXIgRVhUUkEgPSB7CiAgICBzZWxsOiBbeyB0OiAnQXNrIGZvciBhIHJlYWwgQ01BJywgdTogJy93aGF0LWlzLW15LWhvdXNlLXdvcnRoLWxvdWlzdmlsbGUnIH0sIHsgdDogJ1NlbGxpbmcgYSBkaXN0cmVzc2VkIHByb3BlcnR5JywgdTogJy9kaXN0cmVzc2VkLWhvbWUtc2VsbGVycy1rZW50dWNreScgfV0sCiAgICBidXk6IFt7IHQ6ICdHZXQgcHJlLWFwcHJvdmVkJywgdTogJy9nZXQtcHJlLWFwcHJvdmVkJyB9LCB7IHQ6ICdIb3cgcHJlLWFwcHJvdmFsIHdvcmtzIGluIEtlbnR1Y2t5JywgdTogJy9ob3ctdG8tZ2V0LXByZS1hcHByb3ZlZC1tb3J0Z2FnZS1rZW50dWNreScgfV0sCiAgICBpbnZlc3Q6IFt7IHQ6ICdTZW5kIHVzIHlvdXIgYnV5IGJveCcsIHU6ICcvYnV5LWJveC1zaWdudXAnIH0sIHsgdDogJ0hvdXNlIGhhY2tpbmcgaW4gTG91aXN2aWxsZScsIHU6ICcvaG91c2UtaGFja2luZy1sb3Vpc3ZpbGxlLWtlbnR1Y2t5JyB9XSwKICAgIG1vdmU6IFt7IHQ6ICdMb3Vpc3ZpbGxlIGhvdXNpbmcgbWFya2V0IHJlcG9ydCcsIHU6ICcvbG91aXN2aWxsZS1ob3VzaW5nLW1hcmtldC1yZXBvcnQnIH0sIHsgdDogJ01vdmluZyB0byBTb3V0aGVybiBJbmRpYW5hJywgdTogJy9tb3ZpbmctdG8tc291dGhlcm4taW5kaWFuYScgfV0sCiAgICB3aG9sZXNhbGU6IFt7IHQ6ICdXaG9sZXNhbGluZyBpbiBLZW50dWNreSwgdGhlIGxhdyBleHBsYWluZWQnLCB1OiAnL3dob2xlc2FsaW5nLXJlYWwtZXN0YXRlLWtlbnR1Y2t5JyB9LCB7IHQ6ICdTZW5kIHVzIGEgZGVhbCcsIHU6ICcvaW50YWtlLWZvcm0nIH1dCiAgfTsKICB2YXIgUk9VVEVTID0gWwogICAgeyBpZDogJ2J1eScsIGxhYmVsOiAnQnV5aW5nIGEgaG9tZScgfSwKICAgIHsgaWQ6ICdzZWxsJywgbGFiZWw6ICdTZWxsaW5nIGEgaG9tZScgfSwKICAgIHsgaWQ6ICdpbnZlc3QnLCBsYWJlbDogJ0ludmVzdGluZycgfSwKICAgIHsgaWQ6ICdtb3ZlJywgbGFiZWw6ICdNb3ZpbmcgdG8gTG91aXN2aWxsZScgfSwKICAgIHsgaWQ6ICd3aG9sZXNhbGUnLCBsYWJlbDogJ1dob2xlc2FsaW5nJyB9CiAgXTsKICB2YXIgSU5LID0gJ2NvbG9yOiMxYTFhMWE7JzsKICB2YXIgdG9vbFBhdGhzID0gVE9PTFMubWFwKGZ1bmN0aW9uICh0KSB7IHJldHVybiB0LnU7IH0pOwoKICBmdW5jdGlvbiBmaW5kTWFya2VyKHRleHQpIHsKICAgIHZhciBwcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zYi1pdGVtLXZpZXcgcCwgcCcpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcy5sZW5ndGg7IGkrKykgewogICAgICBpZiAocHNbaV0udGV4dENvbnRlbnQudHJpbSgpID09PSB0ZXh0KSByZXR1cm4gcHNbaV07CiAgICB9CiAgICByZXR1cm4gbnVsbDsKICB9CgogIGZ1bmN0aW9uIGVzYyhzKSB7IHJldHVybiBTdHJpbmcocykucmVwbGFjZSgvJi9nLCAnJmFtcDsnKS5yZXBsYWNlKC88L2csICcmbHQ7JykucmVwbGFjZSgvPi9nLCAnJmd0OycpLnJlcGxhY2UoLyIvZywgJyZxdW90OycpOyB9CgogIGZ1bmN0aW9uIHJlbmRlclJvdXRlKGlkKSB7CiAgICB2YXIgaXRlbXMgPSBUT09MUy5maWx0ZXIoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIHQuay5pbmRleE9mKGlkKSAhPT0gLTE7IH0pOwogICAgdmFyIGh0bWwgPSAnPHVsIHN0eWxlPSJsaXN0LXN0eWxlOmRpc2M7cGFkZGluZy1sZWZ0OjIycHg7bWFyZ2luOjAgMCAxMnB4OycgKyBJTksgKyAnIj4nOwogICAgaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAodCkgewogICAgICBodG1sICs9ICc8bGkgc3R5bGU9Im1hcmdpbjowIDAgMTBweDsnICsgSU5LICsgJyI+PGEgaHJlZj0iJyArIHQudSArICciIHN0eWxlPSJjb2xvcjojMWEzYzVlO2ZvbnQtd2VpZ2h0OjYwMDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyI+JyArIGVzYyh0LnQpICsgJzwvYT48c3BhbiBzdHlsZT0iJyArIElOSyArICciPiAmbWRhc2g7ICcgKyBlc2ModC5kKSArICc8L3NwYW4+PC9saT4nOwogICAgfSk7CiAgICBodG1sICs9ICc8L3VsPic7CiAgICB2YXIgZXggPSBFWFRSQVtpZF0gfHwgW107CiAgICBpZiAoZXgubGVuZ3RoKSB7CiAgICAgIGh0bWwgKz0gJzxwIHN0eWxlPSJtYXJnaW46MDsnICsgSU5LICsgJyI+TmV4dCBzdGVwOiAnOwogICAgICBodG1sICs9IGV4Lm1hcChmdW5jdGlvbiAoZSkgeyByZXR1cm4gJzxhIGhyZWY9IicgKyBlLnUgKyAnIiBzdHlsZT0iY29sb3I6IzFhM2M1ZTt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyI+JyArIGVzYyhlLnQpICsgJzwvYT4nOyB9KS5qb2luKCcgJm1pZGRvdDsgJyk7CiAgICAgIGh0bWwgKz0gJzwvcD4nOwogICAgfQogICAgcmV0dXJuIGh0bWw7CiAgfQoKICBmdW5jdGlvbiBidWlsZFJvdXRlcigpIHsKICAgIHZhciBwID0gZmluZE1hcmtlcignX19UT09MU19IVUJfTUFSS0VSX18nKTsKICAgIGlmICghcCkgcmV0dXJuOwogICAgdmFyIGJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgYm94LmlkID0gJ3dyLXRvb2xzLXJvdXRlcic7CiAgICBib3guc2V0QXR0cmlidXRlKCdzdHlsZScsICdib3JkZXI6MXB4IHNvbGlkICNkOGQ4ZDg7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoyNHB4O21hcmdpbjoyNHB4IDA7YmFja2dyb3VuZDojZmFmYWZhOycgKyBJTkspOwogICAgdmFyIGh0bWwgPSAnPGgzIHN0eWxlPSJtYXJnaW46MCAwIDZweDtmb250LXNpemU6MjJweDsnICsgSU5LICsgJyI+V2hhdCBhcmUgeW91IGhlcmUgdG8gZG8/PC9oMz4nOwogICAgaHRtbCArPSAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTRweDsnICsgSU5LICsgJyI+UGljayBvbmUgYW5kIHdlIHdpbGwgcG9pbnQgeW91IGF0IHRoZSByaWdodCB0b29sLjwvcD4nOwogICAgaHRtbCArPSAnPGRpdiBpZD0id3ItdG9vbHMtY2hpcHMiIHN0eWxlPSJkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjhweDttYXJnaW46MCAwIDE2cHg7Ij4nOwogICAgUk9VVEVTLmZvckVhY2goZnVuY3Rpb24gKHIpIHsKICAgICAgaHRtbCArPSAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtcm91dGU9IicgKyByLmlkICsgJyIgc3R5bGU9ImJhY2tncm91bmQ6IzFhMWExYTtjb2xvcjojZmZmO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzoxMHB4IDE2cHg7Zm9udC1zaXplOjE1cHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1mYW1pbHk6aW5oZXJpdDsiPicgKyBlc2Moci5sYWJlbCkgKyAnPC9idXR0b24+JzsKICAgIH0pOwogICAgaHRtbCArPSAnPC9kaXY+PGRpdiBpZD0id3ItdG9vbHMtb3V0IiBzdHlsZT0iJyArIElOSyArICciPjwvZGl2Pic7CiAgICBib3guaW5uZXJIVE1MID0gaHRtbDsKICAgIHAucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoYm94LCBwKTsKICAgIHZhciBvdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItdG9vbHMtb3V0Jyk7CiAgICB2YXIgY2hpcHMgPSBib3gucXVlcnlTZWxlY3RvckFsbCgnYnV0dG9uW2RhdGEtcm91dGVdJyk7CiAgICBmdW5jdGlvbiBzZWxlY3QoaWQpIHsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlwcy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBvbiA9IGNoaXBzW2ldLmdldEF0dHJpYnV0ZSgnZGF0YS1yb3V0ZScpID09PSBpZDsKICAgICAgICBjaGlwc1tpXS5zdHlsZS5iYWNrZ3JvdW5kID0gb24gPyAnI2U4NzM0YScgOiAnIzFhMWExYSc7CiAgICAgIH0KICAgICAgb3V0LmlubmVySFRNTCA9IHJlbmRlclJvdXRlKGlkKTsKICAgIH0KICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpcHMubGVuZ3RoOyBpKyspIHsKICAgICAgY2hpcHNbaV0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZXYpIHsgc2VsZWN0KGV2LmN1cnJlbnRUYXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLXJvdXRlJykpOyB9KTsKICAgIH0KICAgIHNlbGVjdCgnYnV5Jyk7CiAgfQoKICBmdW5jdGlvbiBhZGRMZChvYmopIHsKICAgIHZhciBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICBzLnR5cGUgPSAnYXBwbGljYXRpb24vbGQranNvbic7CiAgICBzLnRleHRDb250ZW50ID0gSlNPTi5zdHJpbmdpZnkob2JqKTsKICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7CiAgfQoKICBmdW5jdGlvbiBodWJKc29uTGQoKSB7CiAgICB2YXIgb3JpZ2luID0gJ2h0dHBzOi8vdGhld2lubmVycmVhbHR5LmNvbSc7CiAgICBhZGRMZCh7CiAgICAgICdAY29udGV4dCc6ICdodHRwczovL3NjaGVtYS5vcmcnLCAnQHR5cGUnOiAnQnJlYWRjcnVtYkxpc3QnLAogICAgICAnaXRlbUxpc3RFbGVtZW50JzogWwogICAgICAgIHsgJ0B0eXBlJzogJ0xpc3RJdGVtJywgJ3Bvc2l0aW9uJzogMSwgJ25hbWUnOiAnSG9tZScsICdpdGVtJzogb3JpZ2luICsgJy8nIH0sCiAgICAgICAgeyAnQHR5cGUnOiAnTGlzdEl0ZW0nLCAncG9zaXRpb24nOiAyLCAnbmFtZSc6ICdUb29scycsICdpdGVtJzogb3JpZ2luICsgSFVCIH0KICAgICAgXQogICAgfSk7CiAgICBhZGRMZCh7CiAgICAgICdAY29udGV4dCc6ICdodHRwczovL3NjaGVtYS5vcmcnLCAnQHR5cGUnOiAnQ29sbGVjdGlvblBhZ2UnLAogICAgICAnbmFtZSc6ICdGcmVlIFJlYWwgRXN0YXRlIFRvb2xzIGZvciBMb3Vpc3ZpbGxlIEJ1eWVycywgU2VsbGVycywgSW52ZXN0b3JzIGFuZCBXaG9sZXNhbGVycycsCiAgICAgICd1cmwnOiBvcmlnaW4gKyBIVUIsCiAgICAgICdkZXNjcmlwdGlvbic6ICdGcmVlIGNhbGN1bGF0b3JzIGFuZCB0b29scyBmb3IgTG91aXN2aWxsZSBidXllcnMsIHNlbGxlcnMsIGludmVzdG9ycywgbGFuZGxvcmRzIGFuZCB3aG9sZXNhbGVycywgcGx1cyB0aGUgYmVzdCBmcmVlIHRvb2xzIG9uIHRoZSB3ZWIuJywKICAgICAgJ2lzUGFydE9mJzogeyAnQHR5cGUnOiAnV2ViU2l0ZScsICduYW1lJzogJ1dpbm5lciBSZWFsdHknLCAndXJsJzogb3JpZ2luICsgJy8nIH0sCiAgICAgICdtYWluRW50aXR5JzogewogICAgICAgICdAdHlwZSc6ICdJdGVtTGlzdCcsCiAgICAgICAgJ2l0ZW1MaXN0RWxlbWVudCc6IFRPT0xTLm1hcChmdW5jdGlvbiAodCwgaSkgewogICAgICAgICAgcmV0dXJuIHsgJ0B0eXBlJzogJ0xpc3RJdGVtJywgJ3Bvc2l0aW9uJzogaSArIDEsICduYW1lJzogdC50LCAndXJsJzogb3JpZ2luICsgdC51IH07CiAgICAgICAgfSkKICAgICAgfQogICAgfSk7CiAgICB2YXIgaDJzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaDInKTsKICAgIHZhciBmYXFIID0gbnVsbDsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaDJzLmxlbmd0aDsgaSsrKSB7IGlmICgvZnJlcXVlbnRseSBhc2tlZC9pLnRlc3QoaDJzW2ldLnRleHRDb250ZW50KSkgeyBmYXFIID0gaDJzW2ldOyBicmVhazsgfSB9CiAgICBpZiAoZmFxSCkgewogICAgICB2YXIgcWEgPSBbXSwgZWwgPSBmYXFILm5leHRFbGVtZW50U2libGluZzsKICAgICAgd2hpbGUgKGVsKSB7CiAgICAgICAgaWYgKGVsLnRhZ05hbWUgPT09ICdIMicpIGJyZWFrOwogICAgICAgIGlmIChlbC50YWdOYW1lID09PSAnSDMnKSB7CiAgICAgICAgICB2YXIgYSA9IGVsLm5leHRFbGVtZW50U2libGluZzsKICAgICAgICAgIGlmIChhICYmIGEudGFnTmFtZSA9PT0gJ1AnKSBxYS5wdXNoKHsgJ0B0eXBlJzogJ1F1ZXN0aW9uJywgJ25hbWUnOiBlbC50ZXh0Q29udGVudC50cmltKCksICdhY2NlcHRlZEFuc3dlcic6IHsgJ0B0eXBlJzogJ0Fuc3dlcicsICd0ZXh0JzogYS50ZXh0Q29udGVudC50cmltKCkgfSB9KTsKICAgICAgICB9CiAgICAgICAgZWwgPSBlbC5uZXh0RWxlbWVudFNpYmxpbmc7CiAgICAgIH0KICAgICAgaWYgKHFhLmxlbmd0aCkgYWRkTGQoeyAnQGNvbnRleHQnOiAnaHR0cHM6Ly9zY2hlbWEub3JnJywgJ0B0eXBlJzogJ0ZBUVBhZ2UnLCAnbWFpbkVudGl0eSc6IHFhIH0pOwogICAgfQogIH0KCiAgZnVuY3Rpb24gYnVpbGRCYW5kKCkgewogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci10b29scy1iYW5kJykpIHJldHVybjsKICAgIHZhciB2aWV3ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNiLWl0ZW0tdmlldycpOwogICAgaWYgKCF2aWV3IHx8ICF2aWV3LnBhcmVudE5vZGUpIHJldHVybjsKICAgIHZhciBpc1Rvb2wgPSB0b29sUGF0aHMuaW5kZXhPZihwYXRoKSAhPT0gLTE7CiAgICB2YXIgcGlja3M7CiAgICBpZiAoaXNUb29sKSB7CiAgICAgIHBpY2tzID0gVE9PTFMuZmlsdGVyKGZ1bmN0aW9uICh0KSB7IHJldHVybiB0LnUgIT09IHBhdGg7IH0pLnNsaWNlKDAsIDQpOwogICAgfSBlbHNlIHsKICAgICAgcGlja3MgPSBbVE9PTFNbMl0sIFRPT0xTWzBdLCBUT09MU1s1XSwgVE9PTFNbOF1dOwogICAgfQogICAgdmFyIGJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgYm94LmlkID0gJ3dyLXRvb2xzLWJhbmQnOwogICAgYm94LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnYm9yZGVyOjFweCBzb2xpZCAjZDhkOGQ4O2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MjJweCAyNHB4O21hcmdpbjozMnB4IDAgOHB4O2JhY2tncm91bmQ6I2ZhZmFmYTsnICsgSU5LKTsKICAgIHZhciBodG1sID0gJzxoMyBzdHlsZT0ibWFyZ2luOjAgMCA2cHg7Zm9udC1zaXplOjIwcHg7JyArIElOSyArICciPicgKyAoaXNUb29sID8gJ01vcmUgZnJlZSBXaW5uZXIgUmVhbHR5IHRvb2xzJyA6ICdGcmVlIFdpbm5lciBSZWFsdHkgdG9vbHMnKSArICc8L2gzPic7CiAgICBodG1sICs9ICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxMnB4O2ZvbnQtc2l6ZToxNXB4OycgKyBJTksgKyAnIj5CdWlsdCBmb3IgTG91aXN2aWxsZS4gTm8gc2lnbi11cCwgbm8gZW1haWwgZ2F0ZS48L3A+JzsKICAgIGh0bWwgKz0gJzx1bCBzdHlsZT0ibGlzdC1zdHlsZTpkaXNjO3BhZGRpbmctbGVmdDoyMnB4O21hcmdpbjowIDAgMTJweDsnICsgSU5LICsgJyI+JzsKICAgIHBpY2tzLmZvckVhY2goZnVuY3Rpb24gKHQpIHsKICAgICAgaHRtbCArPSAnPGxpIHN0eWxlPSJtYXJnaW46MCAwIDhweDtmb250LXNpemU6MTVweDsnICsgSU5LICsgJyI+PGEgaHJlZj0iJyArIHQudSArICciIHN0eWxlPSJjb2xvcjojMWEzYzVlO2ZvbnQtd2VpZ2h0OjYwMDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyI+JyArIGVzYyh0LnQpICsgJzwvYT48c3BhbiBzdHlsZT0iJyArIElOSyArICciPiAmbWRhc2g7ICcgKyBlc2ModC5kKSArICc8L3NwYW4+PC9saT4nOwogICAgfSk7CiAgICBodG1sICs9ICc8L3VsPjxwIHN0eWxlPSJtYXJnaW46MDtmb250LXNpemU6MTVweDsnICsgSU5LICsgJyI+PGEgaHJlZj0iJyArIEhVQiArICciIHN0eWxlPSJjb2xvcjojMWEzYzVlO2ZvbnQtd2VpZ2h0OjYwMDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyI+U2VlIGFsbCB0b29scywgcGx1cyB0aGUgYmVzdCBmcmVlIHRvb2xzIG9uIHRoZSB3ZWIgJnJhcnI7PC9hPjwvcD4nOwogICAgYm94LmlubmVySFRNTCA9IGh0bWw7CiAgICB2aWV3LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGJveCwgdmlldy5uZXh0U2libGluZyk7CiAgfQoKICBmdW5jdGlvbiBodWJBcHBlbmQoKSB7CiAgICB2YXIgdmlldyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zYi1pdGVtLXZpZXcnKTsKICAgIGlmICghdmlldykgcmV0dXJuOwogICAgdmFyIHVsID0gdmlldy5xdWVyeVNlbGVjdG9yKCd1bCcpOwogICAgaWYgKCF1bCkgcmV0dXJuOwogICAgVE9PTFMuZm9yRWFjaChmdW5jdGlvbiAodCkgewogICAgICBpZiAoIXQuYWRkZWQpIHJldHVybjsKICAgICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsKICAgICAgbGkuaW5uZXJIVE1MID0gJzxzdHJvbmc+PGEgaHJlZj0iJyArIHQudSArICciPicgKyBlc2ModC50KSArICc8L2E+PC9zdHJvbmc+ICZtZGFzaDsgJyArIGVzYyh0LmQpOwogICAgICB1bC5hcHBlbmRDaGlsZChsaSk7CiAgICB9KTsKICAgIHZhciBwcyA9IHZpZXcucXVlcnlTZWxlY3RvckFsbCgncCcpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcy5sZW5ndGg7IGkrKykgewogICAgICBpZiAocHNbaV0udGV4dENvbnRlbnQuaW5kZXhPZignQ29taW5nIG5leHQnKSA9PT0gMCkgewogICAgICAgIHBzW2ldLnRleHRDb250ZW50ID0gJ0NvbWluZyBuZXh0LCBpbiB0aGlzIG9yZGVyOiBhIEplZmZlcnNvbiBDb3VudHkgcHJvcGVydHkgdGF4IGNhbGN1bGF0b3IgYnkgdGF4aW5nIGRpc3RyaWN0LCBhIExvdWlzdmlsbGUgZG93biBwYXltZW50IGFzc2lzdGFuY2Ugc2NyZWVuZXIsIGEgTG91aXN2aWxsZSBzaG9ydC10ZXJtIHJlbnRhbCBydWxlcyBjaGVja2VyLCBhIGNhcGl0YWwgZ2FpbnMgYW5kIDEwMzEgZXhjaGFuZ2UgZXN0aW1hdG9yLCBhbmQgYSBmdWxsIExvdWlzdmlsbGUgTmVpZ2hib3Job29kIE1hdGNoZXIuIEJvb2ttYXJrIHRoaXMgcGFnZS4nOwogICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9CiAgfQoKICBmdW5jdGlvbiBydW4oKSB7CiAgICB0cnkgewogICAgICBpZiAocGF0aCA9PT0gSFVCKSB7IGJ1aWxkUm91dGVyKCk7IGh1YkFwcGVuZCgpOyBodWJKc29uTGQoKTsgfQogICAgICBlbHNlIHsgYnVpbGRCYW5kKCk7IH0KICAgIH0gY2F0Y2ggKGUpIHt9CiAgfQogIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBydW4pOwogIGVsc2UgcnVuKCk7Cn0pKCk7CgoKKGZ1bmN0aW9uKCkgewogIGlmICh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignbG91aXN2aWxsZS1jb21tZXJjaWFsLXJlYWwtZXN0YXRlLWNhbGN1bGF0b3JzJykgPT09IC0xKSByZXR1cm47CiAgdmFyIFMgPSB7CiAgICBjYXJkOiAnYmFja2dyb3VuZDojZjVmNWY0O2NvbG9yOiMxYTFhMWE7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjhweDttYXJnaW46MCAwIDI0cHg7bWF4LXdpZHRoOjY0MHB4OycsCiAgICBsYWJlbDogJ2Rpc3BsYXk6YmxvY2s7Y29sb3I6IzFhMWExYTtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjE0cHg7bWFyZ2luLWJvdHRvbTo2cHg7JywKICAgIGlucHV0OiAnd2lkdGg6MTAwJTtwYWRkaW5nOjEwcHg7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6NnB4O2ZvbnQtc2l6ZToxNXB4O2NvbG9yOiMxYTFhMWE7YmFja2dyb3VuZDojZmZmO2JveC1zaXppbmc6Ym9yZGVyLWJveDsnLAogICAgYnRuOiAnYmFja2dyb3VuZDojMWExYTFhO2NvbG9yOiNmZmY7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czo2cHg7cGFkZGluZzoxMnB4IDI0cHg7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxNXB4O2N1cnNvcjpwb2ludGVyO21hcmdpbi10b3A6NnB4OycsCiAgICBvdXQ6ICdtYXJnaW4tdG9wOjE4cHg7Y29sb3I6IzFhMWExYTtmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxLjY7JwogIH07CiAgZnVuY3Rpb24gbW9uZXkobikgeyBpZiAoIWlzRmluaXRlKG4pKSByZXR1cm4gJy0nOyB2YXIgbmVnID0gbiA8IDA7IG4gPSBNYXRoLnJvdW5kKE1hdGguYWJzKG4pKTsgcmV0dXJuIChuZWcgPyAnLSQnIDogJyQnKSArIG4udG9TdHJpbmcoKS5yZXBsYWNlKC9cQig/PShcZHszfSkrKD8hXGQpKS9nLCAnLCcpOyB9CiAgZnVuY3Rpb24gcGN0KG4sIGQpIHsgaWYgKCFpc0Zpbml0ZShuKSkgcmV0dXJuICctJzsgcmV0dXJuIG4udG9GaXhlZChkID09PSB1bmRlZmluZWQgPyAyIDogZCkgKyAnJSc7IH0KICBmdW5jdGlvbiBudW0oaWQpIHsgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOyB2YXIgdiA9IGVsID8gcGFyc2VGbG9hdChlbC52YWx1ZSkgOiBOYU47IHJldHVybiBpc05hTih2KSA/IDAgOiB2OyB9CiAgZnVuY3Rpb24gZmllbGQoaWQsIGxhYmVsLCB2YWx1ZSwgdHlwZSkgewogICAgcmV0dXJuICc8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjE0cHg7Ij48bGFiZWwgZm9yPSInICsgaWQgKyAnIiBzdHlsZT0iJyArIFMubGFiZWwgKyAnIj4nICsgbGFiZWwgKyAnPC9sYWJlbD4nICsKICAgICAgJzxpbnB1dCB0eXBlPSInICsgKHR5cGUgfHwgJ251bWJlcicpICsgJyIgaWQ9IicgKyBpZCArICciIHZhbHVlPSInICsgdmFsdWUgKyAnIiBzdHlsZT0iJyArIFMuaW5wdXQgKyAnIj48L2Rpdj4nOwogIH0KICBmdW5jdGlvbiByb3coaywgdiwgYm9sZCkgeyByZXR1cm4gJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTJweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTJlMmUwO3BhZGRpbmc6NnB4IDA7JyArIChib2xkID8gJ2ZvbnQtd2VpZ2h0OjcwMDsnIDogJycpICsgJyI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij4nICsgayArICc8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij4nICsgdiArICc8L3NwYW4+PC9kaXY+JzsgfQogIGZ1bmN0aW9uIHBtdChyYXRlQW5udWFsLCB5ZWFycywgcHJpbmNpcGFsKSB7CiAgICB2YXIgciA9IHJhdGVBbm51YWwgLyAxMDAgLyAxMiwgbiA9IHllYXJzICogMTI7CiAgICBpZiAobiA8PSAwKSByZXR1cm4gMDsKICAgIGlmIChyID09PSAwKSByZXR1cm4gcHJpbmNpcGFsIC8gbjsKICAgIHJldHVybiBwcmluY2lwYWwgKiByIC8gKDEgLSBNYXRoLnBvdygxICsgciwgLW4pKTsKICB9CiAgZnVuY3Rpb24gcHYocmF0ZUFubnVhbCwgeWVhcnMsIHBheW1lbnQpIHsKICAgIHZhciByID0gcmF0ZUFubnVhbCAvIDEwMCAvIDEyLCBuID0geWVhcnMgKiAxMjsKICAgIGlmIChuIDw9IDApIHJldHVybiAwOwogICAgaWYgKHIgPT09IDApIHJldHVybiBwYXltZW50ICogbjsKICAgIHJldHVybiBwYXltZW50ICogKDEgLSBNYXRoLnBvdygxICsgciwgLW4pKSAvIHI7CiAgfQogIGZ1bmN0aW9uIGJhbGFuY2UocmF0ZUFubnVhbCwgeWVhcnMsIHByaW5jaXBhbCwgbW9udGhzUGFpZCkgewogICAgdmFyIHIgPSByYXRlQW5udWFsIC8gMTAwIC8gMTIsIHAgPSBwbXQocmF0ZUFubnVhbCwgeWVhcnMsIHByaW5jaXBhbCk7CiAgICBpZiAociA9PT0gMCkgcmV0dXJuIE1hdGgubWF4KDAsIHByaW5jaXBhbCAtIHAgKiBtb250aHNQYWlkKTsKICAgIHJldHVybiBNYXRoLm1heCgwLCBwcmluY2lwYWwgKiBNYXRoLnBvdygxICsgciwgbW9udGhzUGFpZCkgLSBwICogKE1hdGgucG93KDEgKyByLCBtb250aHNQYWlkKSAtIDEpIC8gcik7CiAgfQogIGZ1bmN0aW9uIGZpbmRNYXJrZXIodGV4dCkgewogICAgdmFyIHBzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncCcpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcy5sZW5ndGg7IGkrKykgeyBpZiAocHNbaV0udGV4dENvbnRlbnQudHJpbSgpID09PSB0ZXh0KSByZXR1cm4gcHNbaV07IH0KICAgIHJldHVybiBudWxsOwogIH0KICBmdW5jdGlvbiBtb3VudChtYXJrZXJUZXh0LCBpZCwgdGl0bGUsIGZpZWxkc0h0bWwsIGJ0blRleHQsIGNhbGNGbikgewogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSkgcmV0dXJuOwogICAgdmFyIG1hcmtlciA9IGZpbmRNYXJrZXIobWFya2VyVGV4dCk7CiAgICBpZiAoIW1hcmtlcikgcmV0dXJuOwogICAgdmFyIGNhcmQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGNhcmQuaWQgPSBpZDsKICAgIGNhcmQuc2V0QXR0cmlidXRlKCdzdHlsZScsIFMuY2FyZCk7CiAgICBjYXJkLmlubmVySFRNTCA9ICc8aDMgc3R5bGU9Im1hcmdpbjowIDAgMTZweDtjb2xvcjojMWExYTFhO2ZvbnQtc2l6ZToyMHB4OyI+JyArIHRpdGxlICsgJzwvaDM+JyArIGZpZWxkc0h0bWwgKwogICAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSInICsgaWQgKyAnLWJ0biIgc3R5bGU9IicgKyBTLmJ0biArICciPicgKyBidG5UZXh0ICsgJzwvYnV0dG9uPjxkaXYgaWQ9IicgKyBpZCArICctb3V0IiBzdHlsZT0iJyArIFMub3V0ICsgJyI+PC9kaXY+JzsKICAgIG1hcmtlci5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChjYXJkLCBtYXJrZXIpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQgKyAnLWJ0bicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkICsgJy1vdXQnKS5pbm5lckhUTUwgPSBjYWxjRm4oKTsKICAgIH0pOwogIH0KCiAgZnVuY3Rpb24gYnVpbGRBbGwoKSB7CiAgICAvLyAxLiBUcmlwbGUgbmV0IChOTk4pIGxlYXNlIGNvc3QgZXN0aW1hdG9yCiAgICBtb3VudCgnQ0FMQ19OTk4nLCAnd3Itbm5uLWNhcmQnLCAnVHJpcGxlIE5ldCAoTk5OKSBMZWFzZSBDb3N0IEVzdGltYXRvcicsCiAgICAgIGZpZWxkKCd3ci1ubm4tc2YnLCAnU3BhY2Ugc2l6ZSAoc3F1YXJlIGZlZXQpJywgNTAwMCkgKwogICAgICBmaWVsZCgnd3Itbm5uLWJhc2UnLCAnQmFzZSByZW50ICgkIHBlciBzcXVhcmUgZm9vdCBwZXIgeWVhciknLCAxNCkgKwogICAgICBmaWVsZCgnd3Itbm5uLXRheCcsICdQcm9wZXJ0eSB0YXhlcyAoJCBwZXIgc3F1YXJlIGZvb3QgcGVyIHllYXIpJywgMS43NSkgKwogICAgICBmaWVsZCgnd3Itbm5uLWlucycsICdCdWlsZGluZyBpbnN1cmFuY2UgKCQgcGVyIHNxdWFyZSBmb290IHBlciB5ZWFyKScsIDAuNzUpICsKICAgICAgZmllbGQoJ3dyLW5ubi1jYW0nLCAnQ0FNOiBjb21tb24gYXJlYSBtYWludGVuYW5jZSAoJCBwZXIgc3F1YXJlIGZvb3QgcGVyIHllYXIpJywgMi41KSArCiAgICAgIGZpZWxkKCd3ci1ubm4tZXNjJywgJ0FubnVhbCBiYXNlIHJlbnQgaW5jcmVhc2UgKCUpJywgMykgKwogICAgICBmaWVsZCgnd3Itbm5uLW5ubmVzYycsICdBbm51YWwgaW5jcmVhc2UgaW4gTk5OIGNoYXJnZXMgKCUpJywgMykgKwogICAgICBmaWVsZCgnd3Itbm5uLXRlcm0nLCAnTGVhc2UgdGVybSAoeWVhcnMpJywgNSksCiAgICAgICdFc3RpbWF0ZSBteSBvY2N1cGFuY3kgY29zdCcsIGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBzZiA9IG51bSgnd3Itbm5uLXNmJyksIGJhc2UgPSBudW0oJ3dyLW5ubi1iYXNlJyksIG5ubiA9IG51bSgnd3Itbm5uLXRheCcpICsgbnVtKCd3ci1ubm4taW5zJykgKyBudW0oJ3dyLW5ubi1jYW0nKTsKICAgICAgICB2YXIgZXNjID0gbnVtKCd3ci1ubm4tZXNjJykgLyAxMDAsIG5lc2MgPSBudW0oJ3dyLW5ubi1ubm5lc2MnKSAvIDEwMCwgdGVybSA9IE1hdGgubWF4KDEsIE1hdGgucm91bmQobnVtKCd3ci1ubm4tdGVybScpKSk7CiAgICAgICAgdmFyIHkxQmFzZSA9IHNmICogYmFzZSwgeTFObm4gPSBzZiAqIG5ubiwgdG90YWwgPSAwLCB0b3RhbEJhc2UgPSAwOwogICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgdGVybTsgeSsrKSB7IHZhciBiID0geTFCYXNlICogTWF0aC5wb3coMSArIGVzYywgeSksIGMgPSB5MU5ubiAqIE1hdGgucG93KDEgKyBuZXNjLCB5KTsgdG90YWwgKz0gYiArIGM7IHRvdGFsQmFzZSArPSBiOyB9CiAgICAgICAgcmV0dXJuIHJvdygnWWVhciAxIGJhc2UgcmVudCcsIG1vbmV5KHkxQmFzZSkgKyAnIC8geXIgKCcgKyBtb25leSh5MUJhc2UgLyAxMikgKyAnIC8gbW8pJykgKwogICAgICAgICAgcm93KCdZZWFyIDEgTk5OIGNoYXJnZXMgKHRheGVzLCBpbnN1cmFuY2UsIENBTSknLCBtb25leSh5MU5ubikgKyAnIC8geXIgKCcgKyBtb25leSh5MU5ubiAvIDEyKSArICcgLyBtbyknKSArCiAgICAgICAgICByb3coJ1llYXIgMSBhbGwtaW4gcmVudCcsIG1vbmV5KHkxQmFzZSArIHkxTm5uKSArICcgLyB5cicsIHRydWUpICsKICAgICAgICAgIHJvdygnWWVhciAxIGFsbC1pbiByZW50IHBlciBtb250aCcsIG1vbmV5KCh5MUJhc2UgKyB5MU5ubikgLyAxMiksIHRydWUpICsKICAgICAgICAgIHJvdygnRWZmZWN0aXZlIGFsbC1pbiByYXRlLCB5ZWFyIDEnLCAnJCcgKyAoYmFzZSArIG5ubikudG9GaXhlZCgyKSArICcgcGVyIHNxdWFyZSBmb290JykgKwogICAgICAgICAgcm93KCdUb3RhbCBiYXNlIHJlbnQgb3ZlciAnICsgdGVybSArICcgeWVhcnMnLCBtb25leSh0b3RhbEJhc2UpKSArCiAgICAgICAgICByb3coJ1RvdGFsIG9jY3VwYW5jeSBjb3N0IG92ZXIgJyArIHRlcm0gKyAnIHllYXJzJywgbW9uZXkodG90YWwpLCB0cnVlKSArCiAgICAgICAgICAnPHAgc3R5bGU9Im1hcmdpbjoxMnB4IDAgMDtmb250LXNpemU6MTNweDtjb2xvcjojNDQ0OyI+SW4gYSB0cmlwbGUgbmV0IGxlYXNlLCB0aGUgdGVuYW50IHBheXMgYmFzZSByZW50IHBsdXMgaXRzIHNoYXJlIG9mIHRoZSBidWlsZGluZ1wncyBwcm9wZXJ0eSB0YXhlcywgaW5zdXJhbmNlLCBhbmQgY29tbW9uIGFyZWEgbWFpbnRlbmFuY2UgKENBTSkuIE5OTiBjaGFyZ2VzIGFyZSB1c3VhbGx5IGVzdGltYXRlZCBhbmQgcmVjb25jaWxlZCBvbmNlIGEgeWVhciwgc28gYXNrIHRoZSBsYW5kbG9yZCBmb3IgdGhlIGxhc3QgdHdvIHllYXJzIG9mIGFjdHVhbCBjaGFyZ2VzLjwvcD4nOwogICAgICB9KTsKCiAgICAvLyAyLiBMZWFzZSB2cy4gYnV5CiAgICBtb3VudCgnQ0FMQ19MVkInLCAnd3ItbHZiLWNhcmQnLCAnTGVhc2UgdnMuIEJ1eSBDYWxjdWxhdG9yIGZvciBDb21tZXJjaWFsIFNwYWNlJywKICAgICAgZmllbGQoJ3dyLWx2Yi1zZicsICdTcGFjZSBzaXplIChzcXVhcmUgZmVldCknLCA1MDAwKSArCiAgICAgIGZpZWxkKCd3ci1sdmItcmVudCcsICdBbGwtaW4gbGVhc2UgcmF0ZSBpZiB5b3UgcmVudCAoJCBwZXIgc3F1YXJlIGZvb3QgcGVyIHllYXIpJywgMTgpICsKICAgICAgZmllbGQoJ3dyLWx2Yi1yZXNjJywgJ0FubnVhbCByZW50IGluY3JlYXNlICglKScsIDMpICsKICAgICAgZmllbGQoJ3dyLWx2Yi1wcmljZScsICdQdXJjaGFzZSBwcmljZSBpZiB5b3UgYnV5ICgkKScsIDkwMDAwMCkgKwogICAgICBmaWVsZCgnd3ItbHZiLWRvd24nLCAnRG93biBwYXltZW50ICglKScsIDIwKSArCiAgICAgIGZpZWxkKCd3ci1sdmItcmF0ZScsICdMb2FuIGludGVyZXN0IHJhdGUgKCUpJywgNykgKwogICAgICBmaWVsZCgnd3ItbHZiLWFtb3J0JywgJ0xvYW4gYW1vcnRpemF0aW9uICh5ZWFycyknLCAyNSkgKwogICAgICBmaWVsZCgnd3ItbHZiLW93bicsICdPd25lciBjb3N0czogdGF4ZXMsIGluc3VyYW5jZSwgdXBrZWVwICgkIHBlciB5ZWFyKScsIDMwMDAwKSArCiAgICAgIGZpZWxkKCd3ci1sdmItY2xvc2UnLCAnQ2xvc2luZyBjb3N0cyB0byBidXkgKCUgb2YgcHJpY2UpJywgMykgKwogICAgICBmaWVsZCgnd3ItbHZiLWFwcHInLCAnRXhwZWN0ZWQgeWVhcmx5IGFwcHJlY2lhdGlvbiAoJSknLCAzKSArCiAgICAgIGZpZWxkKCd3ci1sdmItc2VsbCcsICdTZWxsaW5nIGNvc3RzIHdoZW4geW91IHNlbGwgKCUgb2YgdmFsdWUpJywgNikgKwogICAgICBmaWVsZCgnd3ItbHZiLXllYXJzJywgJ1llYXJzIHlvdSBwbGFuIHRvIHN0YXknLCAxMCksCiAgICAgICdDb21wYXJlIGxlYXNpbmcgYW5kIGJ1eWluZycsIGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBzZiA9IG51bSgnd3ItbHZiLXNmJyksIHJlbnQgPSBudW0oJ3dyLWx2Yi1yZW50JyksIHJlc2MgPSBudW0oJ3dyLWx2Yi1yZXNjJykgLyAxMDA7CiAgICAgICAgdmFyIHByaWNlID0gbnVtKCd3ci1sdmItcHJpY2UnKSwgZG93biA9IG51bSgnd3ItbHZiLWRvd24nKSAvIDEwMCwgcmF0ZSA9IG51bSgnd3ItbHZiLXJhdGUnKSwgYW1vcnQgPSBudW0oJ3dyLWx2Yi1hbW9ydCcpOwogICAgICAgIHZhciBvd24gPSBudW0oJ3dyLWx2Yi1vd24nKSwgY2xvc2UgPSBudW0oJ3dyLWx2Yi1jbG9zZScpIC8gMTAwLCBhcHByID0gbnVtKCd3ci1sdmItYXBwcicpIC8gMTAwLCBzZWxsID0gbnVtKCd3ci1sdmItc2VsbCcpIC8gMTAwOwogICAgICAgIHZhciB5cnMgPSBNYXRoLm1heCgxLCBNYXRoLnJvdW5kKG51bSgnd3ItbHZiLXllYXJzJykpKTsKICAgICAgICB2YXIgbGVhc2VUb3RhbCA9IDA7CiAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCB5cnM7IHkrKykgbGVhc2VUb3RhbCArPSBzZiAqIHJlbnQgKiBNYXRoLnBvdygxICsgcmVzYywgeSk7CiAgICAgICAgdmFyIGxvYW4gPSBwcmljZSAqICgxIC0gZG93biksIG1vbnRobHkgPSBwbXQocmF0ZSwgYW1vcnQsIGxvYW4pOwogICAgICAgIHZhciBwYXltZW50cyA9IG1vbnRobHkgKiAxMiAqIHlycywgb3duQ29zdHMgPSAwOwogICAgICAgIGZvciAodmFyIHogPSAwOyB6IDwgeXJzOyB6KyspIG93bkNvc3RzICs9IG93biAqIE1hdGgucG93KDEuMDMsIHopOwogICAgICAgIHZhciBjYXNoSW4gPSBwcmljZSAqIGRvd24gKyBwcmljZSAqIGNsb3NlICsgcGF5bWVudHMgKyBvd25Db3N0czsKICAgICAgICB2YXIgdmFsdWUgPSBwcmljZSAqIE1hdGgucG93KDEgKyBhcHByLCB5cnMpLCBiYWwgPSBiYWxhbmNlKHJhdGUsIGFtb3J0LCBsb2FuLCB5cnMgKiAxMik7CiAgICAgICAgdmFyIG5ldFByb2NlZWRzID0gdmFsdWUgKiAoMSAtIHNlbGwpIC0gYmFsOwogICAgICAgIHZhciBuZXRPd24gPSBjYXNoSW4gLSBuZXRQcm9jZWVkczsKICAgICAgICB2YXIgdmVyZGljdCA9IG5ldE93biA8IGxlYXNlVG90YWwgPyAnQnV5aW5nIGNvbWVzIG91dCBhaGVhZCBieSAnICsgbW9uZXkobGVhc2VUb3RhbCAtIG5ldE93bikgKyAnIG92ZXIgJyArIHlycyArICcgeWVhcnMuJyA6ICdMZWFzaW5nIGNvbWVzIG91dCBhaGVhZCBieSAnICsgbW9uZXkobmV0T3duIC0gbGVhc2VUb3RhbCkgKyAnIG92ZXIgJyArIHlycyArICcgeWVhcnMuJzsKICAgICAgICByZXR1cm4gcm93KCdUb3RhbCByZW50IHBhaWQgb3ZlciAnICsgeXJzICsgJyB5ZWFycycsIG1vbmV5KGxlYXNlVG90YWwpLCB0cnVlKSArCiAgICAgICAgICByb3coJ01vbnRobHkgbG9hbiBwYXltZW50JywgbW9uZXkobW9udGhseSkpICsKICAgICAgICAgIHJvdygnQ2FzaCBvdXQgb2YgcG9ja2V0IHRvIG93biAoZG93biBwYXltZW50LCBjbG9zaW5nLCBwYXltZW50cywgb3duZXIgY29zdHMpJywgbW9uZXkoY2FzaEluKSkgKwogICAgICAgICAgcm93KCdFc3RpbWF0ZWQgdmFsdWUgYWZ0ZXIgJyArIHlycyArICcgeWVhcnMnLCBtb25leSh2YWx1ZSkpICsKICAgICAgICAgIHJvdygnTG9hbiBiYWxhbmNlIGFmdGVyICcgKyB5cnMgKyAnIHllYXJzJywgbW9uZXkoYmFsKSkgKwogICAgICAgICAgcm93KCdOZXQgcHJvY2VlZHMgaWYgeW91IHNlbGwgdGhlbiAoYWZ0ZXIgc2VsbGluZyBjb3N0cyknLCBtb25leShuZXRQcm9jZWVkcykpICsKICAgICAgICAgIHJvdygnTmV0IGNvc3Qgb2Ygb3duaW5nIChjYXNoIG91dCBtaW51cyBuZXQgcHJvY2VlZHMpJywgbW9uZXkobmV0T3duKSwgdHJ1ZSkgKwogICAgICAgICAgJzxwIHN0eWxlPSJtYXJnaW46MTJweCAwIDA7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMxYTFhMWE7Ij4nICsgdmVyZGljdCArICc8L3A+JyArCiAgICAgICAgICAnPHAgc3R5bGU9Im1hcmdpbjo4cHggMCAwO2ZvbnQtc2l6ZToxM3B4O2NvbG9yOiM0NDQ7Ij5Pd25lciBjb3N0cyBhcmUgZ3Jvd24gMyUgYSB5ZWFyLiBUaGlzIGxlYXZlcyBvdXQgdGF4ZXMsIGRlcHJlY2lhdGlvbiwgYW5kIHdoYXQgeW91ciBkb3duIHBheW1lbnQgY291bGQgZWFybiBlbHNld2hlcmUsIHdoaWNoIGNhbiBjaGFuZ2UgdGhlIGFuc3dlci4gVGFsayB0byB5b3VyIENQQSAoY2VydGlmaWVkIHB1YmxpYyBhY2NvdW50YW50KSBiZWZvcmUgZGVjaWRpbmcuPC9wPic7CiAgICAgIH0pOwoKICAgIC8vIDMuIDEwMzEgZXhjaGFuZ2UgZGVhZGxpbmUgY2FsY3VsYXRvcgogICAgbW91bnQoJ0NBTENfMTAzMScsICd3ci14MTAzMS1jYXJkJywgJzEwMzEgRXhjaGFuZ2UgRGVhZGxpbmUgQ2FsY3VsYXRvcicsCiAgICAgIGZpZWxkKCd3ci14MTAzMS1kYXRlJywgJ0RhdGUgeW91ciBzYWxlIGNsb3NlZCAodGhlIHByb3BlcnR5IHlvdSBzb2xkKScsICcnLCAnZGF0ZScpLAogICAgICAnU2hvdyBteSBkZWFkbGluZXMnLCBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci14MTAzMS1kYXRlJykudmFsdWU7CiAgICAgICAgaWYgKCF2KSByZXR1cm4gJzxwIHN0eWxlPSJjb2xvcjojMWExYTFhOyI+UGljayB0aGUgZGF0ZSB5b3VyIHNhbGUgY2xvc2VkLjwvcD4nOwogICAgICAgIHZhciBwID0gdi5zcGxpdCgnLScpLCBzYWxlID0gbmV3IERhdGUoK3BbMF0sICtwWzFdIC0gMSwgK3BbMl0pOwogICAgICAgIGZ1bmN0aW9uIGFkZChkLCBuKSB7IHZhciB4ID0gbmV3IERhdGUoZC5nZXRUaW1lKCkpOyB4LnNldERhdGUoeC5nZXREYXRlKCkgKyBuKTsgcmV0dXJuIHg7IH0KICAgICAgICBmdW5jdGlvbiBmbXQoZCkgeyByZXR1cm4gZC50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLVVTJywgeyB3ZWVrZGF5OiAnbG9uZycsIHllYXI6ICdudW1lcmljJywgbW9udGg6ICdsb25nJywgZGF5OiAnbnVtZXJpYycgfSk7IH0KICAgICAgICB2YXIgdG9kYXkgPSBuZXcgRGF0ZSgpOyB0b2RheS5zZXRIb3VycygwLCAwLCAwLCAwKTsKICAgICAgICBmdW5jdGlvbiBsZWZ0KGQpIHsgdmFyIG4gPSBNYXRoLnJvdW5kKChkIC0gdG9kYXkpIC8gODY0MDAwMDApOyByZXR1cm4gbiA+PSAwID8gbiArICcgZGF5cyBsZWZ0JyA6ICdwYXNzZWQgJyArICgtbikgKyAnIGRheXMgYWdvJzsgfQogICAgICAgIHZhciBkNDUgPSBhZGQoc2FsZSwgNDUpLCBkMTgwID0gYWRkKHNhbGUsIDE4MCksIHRheER1ZSA9IG5ldyBEYXRlKHNhbGUuZ2V0RnVsbFllYXIoKSArIDEsIDMsIDE1KTsKICAgICAgICB2YXIgZWFybGllciA9IHRheER1ZSA8IGQxODA7CiAgICAgICAgcmV0dXJuIHJvdygnU2FsZSBjbG9zZWQnLCBmbXQoc2FsZSkpICsKICAgICAgICAgIHJvdygnNDUtZGF5IGlkZW50aWZpY2F0aW9uIGRlYWRsaW5lJywgZm10KGQ0NSkgKyAnICgnICsgbGVmdChkNDUpICsgJyknLCB0cnVlKSArCiAgICAgICAgICByb3coJzE4MC1kYXkgY2xvc2luZyBkZWFkbGluZScsIGZtdChkMTgwKSArICcgKCcgKyBsZWZ0KGQxODApICsgJyknLCB0cnVlKSArCiAgICAgICAgICAoZWFybGllciA/ICc8cCBzdHlsZT0ibWFyZ2luOjEycHggMCAwO2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojYTMzNDFjOyI+V2F0Y2ggb3V0OiB5b3VyIGZlZGVyYWwgdGF4IHJldHVybiBmb3IgJyArIHNhbGUuZ2V0RnVsbFllYXIoKSArICcgaXMgZHVlICcgKyBmbXQodGF4RHVlKSArICcsIGJlZm9yZSBkYXkgMTgwLiBZb3VyIGV4Y2hhbmdlIHBlcmlvZCBlbmRzIG9uIHRoZSByZXR1cm4gZHVlIGRhdGUgdW5sZXNzIHlvdSBmaWxlIGFuIGV4dGVuc2lvbi4gQXNrIHlvdXIgQ1BBIGFib3V0IGV4dGVuZGluZy48L3A+JyA6ICcnKSArCiAgICAgICAgICAnPHAgc3R5bGU9Im1hcmdpbjoxMnB4IDAgMDtmb250LXNpemU6MTNweDtjb2xvcjojNDQ0OyI+RGF5IDEgaXMgdGhlIGRheSBhZnRlciB5b3VyIHNhbGUgY2xvc2VzLiBUaGUgZGVhZGxpbmVzIGFyZSBub3QgZXh0ZW5kZWQgZm9yIHdlZWtlbmRzIG9yIGhvbGlkYXlzLiBCeSBkYXkgNDUgeW91IG11c3QgaWRlbnRpZnkgcmVwbGFjZW1lbnQgcHJvcGVydGllcyBpbiB3cml0aW5nIHRvIHlvdXIgcXVhbGlmaWVkIGludGVybWVkaWFyeSwgYW5kIHlvdSBtdXN0IGNsb3NlIGJ5IGRheSAxODAgKG9yIHlvdXIgdGF4IHJldHVybiBkdWUgZGF0ZSwgaWYgZWFybGllcikuIFRoaXMgaXMgZ2VuZXJhbCBpbmZvcm1hdGlvbiwgbm90IHRheCBhZHZpY2UuPC9wPic7CiAgICAgIH0pOwoKICAgIC8vIDQuIENvbW1lcmNpYWwgbG9hbiBzaXplcgogICAgbW91bnQoJ0NBTENfTE9BTicsICd3ci1sb2FuLWNhcmQnLCAnQ29tbWVyY2lhbCBMb2FuIFNpemVyOiBIb3cgTXVjaCBDYW4gVGhpcyBCdWlsZGluZyBCb3Jyb3c/JywKICAgICAgZmllbGQoJ3dyLWxvYW4tbm9pJywgJ05ldCBvcGVyYXRpbmcgaW5jb21lLCBOT0kgKCQgcGVyIHllYXIpJywgOTAwMDApICsKICAgICAgZmllbGQoJ3dyLWxvYW4tdmFsdWUnLCAnUHVyY2hhc2UgcHJpY2Ugb3IgdmFsdWUgKCQpJywgMTIwMDAwMCkgKwogICAgICBmaWVsZCgnd3ItbG9hbi1yYXRlJywgJ0ludGVyZXN0IHJhdGUgKCUpJywgNykgKwogICAgICBmaWVsZCgnd3ItbG9hbi1hbW9ydCcsICdBbW9ydGl6YXRpb24gKHllYXJzKScsIDI1KSArCiAgICAgIGZpZWxkKCd3ci1sb2FuLWRzY3InLCAnTGVuZGVyIG1pbmltdW0gRFNDUiAoZGVidCBzZXJ2aWNlIGNvdmVyYWdlIHJhdGlvKScsIDEuMjUpICsKICAgICAgZmllbGQoJ3dyLWxvYW4tbHR2JywgJ0xlbmRlciBtYXhpbXVtIExUViAobG9hbi10by12YWx1ZSwgJSknLCA3NSksCiAgICAgICdTaXplIG15IGxvYW4nLCBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgbm9pID0gbnVtKCd3ci1sb2FuLW5vaScpLCB2YWx1ZSA9IG51bSgnd3ItbG9hbi12YWx1ZScpLCByYXRlID0gbnVtKCd3ci1sb2FuLXJhdGUnKSwgYW1vcnQgPSBudW0oJ3dyLWxvYW4tYW1vcnQnKTsKICAgICAgICB2YXIgZHNjciA9IG51bSgnd3ItbG9hbi1kc2NyJykgfHwgMS4yNSwgbHR2ID0gbnVtKCd3ci1sb2FuLWx0dicpIC8gMTAwOwogICAgICAgIHZhciBtYXhQYXlNb250aGx5ID0gbm9pIC8gZHNjciAvIDEyOwogICAgICAgIHZhciBieURzY3IgPSBwdihyYXRlLCBhbW9ydCwgbWF4UGF5TW9udGhseSksIGJ5THR2ID0gdmFsdWUgKiBsdHY7CiAgICAgICAgdmFyIGxvYW4gPSBNYXRoLm1pbihieURzY3IsIGJ5THR2KSwgbW9udGhseSA9IHBtdChyYXRlLCBhbW9ydCwgbG9hbik7CiAgICAgICAgdmFyIGFjdHVhbERzY3IgPSBtb250aGx5ID4gMCA/IG5vaSAvIChtb250aGx5ICogMTIpIDogMDsKICAgICAgICB2YXIgbGltaXRpbmcgPSBieURzY3IgPCBieUx0diA/ICdpbmNvbWUgKERTQ1IpJyA6ICd2YWx1ZSAoTFRWKSc7CiAgICAgICAgcmV0dXJuIHJvdygnTWF4IGxvYW4gYmFzZWQgb24gaW5jb21lIChEU0NSIHRlc3QpJywgbW9uZXkoYnlEc2NyKSkgKwogICAgICAgICAgcm93KCdNYXggbG9hbiBiYXNlZCBvbiB2YWx1ZSAoTFRWIHRlc3QpJywgbW9uZXkoYnlMdHYpKSArCiAgICAgICAgICByb3coJ0xpa2VseSBsb2FuIGFtb3VudCAodGhlIGxvd2VyIG9mIHRoZSB0d28pJywgbW9uZXkobG9hbiksIHRydWUpICsKICAgICAgICAgIHJvdygnV2hhdCBsaW1pdHMgdGhlIGxvYW4nLCBsaW1pdGluZykgKwogICAgICAgICAgcm93KCdNb250aGx5IHBheW1lbnQnLCBtb25leShtb250aGx5KSkgKwogICAgICAgICAgcm93KCdDYXNoIG5lZWRlZCBmb3IgdGhlIGRvd24gcGF5bWVudCcsIG1vbmV5KE1hdGgubWF4KDAsIHZhbHVlIC0gbG9hbikpLCB0cnVlKSArCiAgICAgICAgICByb3coJ0RTQ1IgYXQgdGhpcyBsb2FuJywgYWN0dWFsRHNjci50b0ZpeGVkKDIpICsgJ3gnKSArCiAgICAgICAgICByb3coJ0RlYnQgeWllbGQgKE5PSSBkaXZpZGVkIGJ5IGxvYW4pJywgcGN0KGxvYW4gPiAwID8gbm9pIC8gbG9hbiAqIDEwMCA6IDApKSArCiAgICAgICAgICByb3coJ0NhcCByYXRlIChOT0kgZGl2aWRlZCBieSBwcmljZSknLCBwY3QodmFsdWUgPiAwID8gbm9pIC8gdmFsdWUgKiAxMDAgOiAwKSkgKwogICAgICAgICAgJzxwIHN0eWxlPSJtYXJnaW46MTJweCAwIDA7Zm9udC1zaXplOjEzcHg7Y29sb3I6IzQ0NDsiPkRTQ1IgaXMgdGhlIGJ1aWxkaW5nXCdzIG5ldCBvcGVyYXRpbmcgaW5jb21lIGRpdmlkZWQgYnkgaXRzIHllYXJseSBsb2FuIHBheW1lbnRzLiBNb3N0IGNvbW1lcmNpYWwgbGVuZGVycyB3YW50IGF0IGxlYXN0IDEuMjB4IHRvIDEuMzV4IGFuZCBsZW5kIDY1JSB0byA4MCUgb2YgdmFsdWUuIEFjdHVhbCB0ZXJtcyBkZXBlbmQgb24gdGhlIGxlbmRlciwgdGhlIHByb3BlcnR5LCBhbmQgdGhlIGJvcnJvd2VyLjwvcD4nOwogICAgICB9KTsKICB9CiAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgIT09ICdsb2FkaW5nJykgYnVpbGRBbGwoKTsgZWxzZSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgYnVpbGRBbGwpOwogIHNldFRpbWVvdXQoYnVpbGRBbGwsIDE1MDApOwp9KSgpOwoKPC9zY3JpcHQ+|END

WRA|i285625|10|PHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9sZCtqc29uIj57IkBjb250ZXh0IjoiaHR0cHM6Ly9zY2hlbWEub3JnIiwiQGdyYXBoIjpbeyJAdHlwZSI6WyJSZWFsRXN0YXRlQWdlbnQiLCJMb2NhbEJ1c2luZXNzIl0sIkBpZCI6Imh0dHBzOi8vd3d3LnRoZXdpbm5lcnJlYWx0eS5jb20vI29yZ2FuaXphdGlvbiIsIm5hbWUiOiJXaW5uZXIgUmVhbHR5IiwidXJsIjoiaHR0cHM6Ly93d3cudGhld2lubmVycmVhbHR5LmNvbS8iLCJkZXNjcmlwdGlvbiI6Ildpbm5lciBSZWFsdHkgaXMgYSBMb3Vpc3ZpbGxlLCBLZW50dWNreSByZWFsIGVzdGF0ZSBicm9rZXJhZ2Ugc2VydmluZyBidXllcnMsIHNlbGxlcnMgYW5kIGludmVzdG9ycyBhY3Jvc3MgdGhlIExvdWlzdmlsbGUgbWV0cm8sIHN0YXRld2lkZSBLZW50dWNreSBhbmQgU291dGhlcm4gSW5kaWFuYS4gRm91bmRlZCBieSBSZWFsdG9yIFJvYiBCZXJnZXJvbiwgdGhlIGZpcm0gd29ya3MgaW4gaW52ZXN0bWVudCBwcm9wZXJ0eSBhY3F1aXNpdGlvbiBhbmQgY3JlYXRpdmUgZmluYW5jaW5nIHN0cnVjdHVyZXMg4oCUIGNvbnRyYWN0IGFzc2lnbm1lbnRzLCBub3ZhdGlvbnMsIHNlbGxlciBmaW5hbmNpbmcsIGxhbmQgY29udHJhY3RzLCBsZWFzZSBvcHRpb25zIGFuZCBhc3N1bWFibGUgbW9ydGdhZ2VzIOKAlCBhbG9uZ3NpZGUgdHJhZGl0aW9uYWwgcmVzaWRlbnRpYWwgcmVwcmVzZW50YXRpb24uIFNpbmNlIDIwMTQgdGhlIHRlYW0gaGFzIGNsb3NlZCBtb3JlIHRoYW4gNDQwIHRyYW5zYWN0aW9ucywgd2l0aCBvdmVyICQ0MSBtaWxsaW9uIGluIGNsb3NlZCBNTFMgdm9sdW1lIGFuZCAyMDArIG9mZi1tYXJrZXQgYXNzaWdubWVudHMuIiwic2xvZ2FuIjoiRmluZCBGaXJtIEZvb3RpbmcgaW4gdGhlIEZ1dHVyZSBvZiBSZWFsIEVzdGF0ZSIsImF3YXJkIjoiQnJva2VyYWdlIFNwaXJpdCBIb25vcnMg4oCUIEdyZWF0ZXIgTG91aXN2aWxsZSBBc3NvY2lhdGlvbiBvZiBSRUFMVE9SU8KuIChHTEFSKSwgZm9yIGJyb2tlcmFnZS13aWRlIGNvbW11bml0eSBnaXZpbmciLCJ0ZWxlcGhvbmUiOiIrMS01MDItMzA1LTg5MTUiLCJlbWFpbCI6InJvYkB0aGV3aW5uZXJyZWFsdHkuY29tIiwiYWRkcmVzcyI6eyJAdHlwZSI6IlBvc3RhbEFkZHJlc3MiLCJhZGRyZXNzTG9jYWxpdHkiOiJMb3Vpc3ZpbGxlIiwiYWRkcmVzc1JlZ2lvbiI6IktZIiwicG9zdGFsQ29kZSI6IjQwMjIwIiwiYWRkcmVzc0NvdW50cnkiOiJVUyJ9LCJvcGVuaW5nSG91cnNTcGVjaWZpY2F0aW9uIjpbeyJAdHlwZSI6Ik9wZW5pbmdIb3Vyc1NwZWNpZmljYXRpb24iLCJkYXlPZldlZWsiOlsiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5Il0sIm9wZW5zIjoiMDk6MDAiLCJjbG9zZXMiOiIyMjowMCJ9LHsiQHR5cGUiOiJPcGVuaW5nSG91cnNTcGVjaWZpY2F0aW9uIiwiZGF5T2ZXZWVrIjoiU2F0dXJkYXkiLCJvcGVucyI6IjA5OjAwIiwiY2xvc2VzIjoiMTg6MDAifSx7IkB0eXBlIjoiT3BlbmluZ0hvdXJzU3BlY2lmaWNhdGlvbiIsImRheU9mV2VlayI6IlN1bmRheSIsIm9wZW5zIjoiMDk6MDAiLCJjbG9zZXMiOiIxMjowMCJ9XSwiYXJlYVNlcnZlZCI6W3siQHR5cGUiOiJDaXR5IiwibmFtZSI6IkxvdWlzdmlsbGUiLCJjb250YWluZWRJblBsYWNlIjp7IkB0eXBlIjoiU3RhdGUiLCJuYW1lIjoiS2VudHVja3kifX0seyJAdHlwZSI6IkFkbWluaXN0cmF0aXZlQXJlYSIsIm5hbWUiOiJKZWZmZXJzb24gQ291bnR5LCBLZW50dWNreSJ9LHsiQHR5cGUiOiJBZG1pbmlzdHJhdGl2ZUFyZWEiLCJuYW1lIjoiT2xkaGFtIENvdW50eSwgS2VudHVja3kifSx7IkB0eXBlIjoiQWRtaW5pc3RyYXRpdmVBcmVhIiwibmFtZSI6IkJ1bGxpdHQgQ291bnR5LCBLZW50dWNreSJ9LHsiQHR5cGUiOiJBZG1pbmlzdHJhdGl2ZUFyZWEiLCJuYW1lIjoiU2hlbGJ5IENvdW50eSwgS2VudHVja3kifSx7IkB0eXBlIjoiQWRtaW5pc3RyYXRpdmVBcmVhIiwibmFtZSI6IkNsYXJrIENvdW50eSwgSW5kaWFuYSJ9LHsiQHR5cGUiOiJBZG1pbmlzdHJhdGl2ZUFyZWEiLCJuYW1lIjoiRmxveWQgQ291bnR5LCBJbmRpYW5hIn0seyJAdHlwZSI6IlN0YXRlIiwibmFtZSI6IktlbnR1Y2t5In0seyJAdHlwZSI6IlN0YXRlIiwibmFtZSI6IkluZGlhbmEifV0sImtub3dzQWJvdXQiOlsiUmVhbCBlc3RhdGUgd2hvbGVzYWxpbmciLCJBc3NpZ25tZW50IG9mIGNvbnRyYWN0IiwiTm92YXRpb24gYWdyZWVtZW50cyIsIlNlbGxlciBmaW5hbmNpbmciLCJMYW5kIGNvbnRyYWN0cyIsIkluc3RhbGxtZW50IHNhbGVzIiwiTGVhc2Ugb3B0aW9ucyIsIlJlbnQtdG8tb3duIGFncmVlbWVudHMiLCJBc3N1bWFibGUgbW9ydGdhZ2VzIiwiRkhBIGxvYW4gYXNzdW1wdGlvbiIsIlZBIGxvYW4gYXNzdW1wdGlvbiIsIlN1YmplY3QtdG8gZmluYW5jaW5nIiwiV3JhcGFyb3VuZCBtb3J0Z2FnZXMiLCJDcmVhdGl2ZSByZWFsIGVzdGF0ZSBmaW5hbmNpbmciLCJPZmYtbWFya2V0IHByb3BlcnR5IGFjcXVpc2l0aW9uIiwiSW52ZXN0bWVudCBwcm9wZXJ0eSBhbmFseXNpcyIsIlNob3J0IHNhbGVzIiwiS2VudHVja3kgcmVhbCBlc3RhdGUgbGF3IiwiTG91aXN2aWxsZSBob3VzaW5nIG1hcmtldCIsIlNvdXRoZXJuIEluZGlhbmEgcmVhbCBlc3RhdGUiXSwibWFrZXNPZmZlciI6W3siQHR5cGUiOiJPZmZlciIsIml0ZW1PZmZlcmVkIjp7IkB0eXBlIjoiU2VydmljZSIsIm5hbWUiOiJSZXNpZGVudGlhbCBsaXN0aW5nIGFuZCBzZWxsZXIgcmVwcmVzZW50YXRpb24iLCJhcmVhU2VydmVkIjoiTG91aXN2aWxsZSwgS2VudHVja3kifX0seyJAdHlwZSI6Ik9mZmVyIiwiaXRlbU9mZmVyZWQiOnsiQHR5cGUiOiJTZXJ2aWNlIiwibmFtZSI6IkJ1eWVyIHJlcHJlc2VudGF0aW9uIiwiYXJlYVNlcnZlZCI6IkxvdWlzdmlsbGUsIEtlbnR1Y2t5In19LHsiQHR5cGUiOiJPZmZlciIsIml0ZW1PZmZlcmVkIjp7IkB0eXBlIjoiU2VydmljZSIsIm5hbWUiOiJJbnZlc3RtZW50IHByb3BlcnR5IGFjcXVpc2l0aW9uIGFuZCBjcmVhdGl2ZSBmaW5hbmNpbmcgc3RydWN0dXJpbmciLCJhcmVhU2VydmVkIjoiS2VudHVja3kgYW5kIFNvdXRoZXJuIEluZGlhbmEifX0seyJAdHlwZSI6Ik9mZmVyIiwiaXRlbU9mZmVyZWQiOnsiQHR5cGUiOiJTZXJ2aWNlIiwibmFtZSI6IkJyb2tlcmFnZSBhbmQgbWVudG9yc2hpcCBmb3IgbGljZW5zZWQgcmVhbCBlc3RhdGUgYWdlbnRzIiwiYXJlYVNlcnZlZCI6IktlbnR1Y2t5IGFuZCBJbmRpYW5hIn19XSwiZm91bmRlciI6eyJAaWQiOiJodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tLyNyb2ItYmVyZ2Vyb24ifSwiZW1wbG95ZWUiOlt7IkBpZCI6Imh0dHBzOi8vd3d3LnRoZXdpbm5lcnJlYWx0eS5jb20vI3JvYi1iZXJnZXJvbiJ9LHsiQGlkIjoiaHR0cHM6Ly93d3cudGhld2lubmVycmVhbHR5LmNvbS8jbGlzYS10dWNrZXIifSx7IkBpZCI6Imh0dHBzOi8vd3d3LnRoZXdpbm5lcnJlYWx0eS5jb20vI2NvbGxlZW4tcmVpbGx5In1dLCJtZW1iZXJPZiI6eyJAdHlwZSI6Ik9yZ2FuaXphdGlvbiIsIm5hbWUiOiJOYXRpb25hbCBBc3NvY2lhdGlvbiBvZiBSRUFMVE9SUyJ9LCJzYW1lQXMiOlsiaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL3Blb3BsZS9XaW5uZXItUmVhbHR5LzYxNTg2NTY4MTAwNzkwLyIsImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy9wbGFjZS9XaW5uZXIrUmVhbHR5L0AzOC4yMTk2Mzc2LC04NS42MzkzNjkyLDE1ei9kYXRhPSE0bTIhM20xITFzMHg4ODY5MGIwNGY5Zjk5ZjNkOjB4MTAxNGFmMjAwMTYxOWFlZiJdfSx7IkB0eXBlIjoiUGVyc29uIiwiQGlkIjoiaHR0cHM6Ly93d3cudGhld2lubmVycmVhbHR5LmNvbS8jcm9iLWJlcmdlcm9uIiwibmFtZSI6IlJvYiBCZXJnZXJvbiIsImdpdmVuTmFtZSI6IlJvYiIsImZhbWlseU5hbWUiOiJCZXJnZXJvbiIsImpvYlRpdGxlIjoiT3duZXIgJiBDRU8iLCJ1cmwiOiJodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tL3JvYi1iZXJnZXJvbiIsIndvcmtzRm9yIjp7IkBpZCI6Imh0dHBzOi8vd3d3LnRoZXdpbm5lcnJlYWx0eS5jb20vI29yZ2FuaXphdGlvbiJ9LCJlbWFpbCI6InJvYkB0aGV3aW5uZXJyZWFsdHkuY29tIiwidGVsZXBob25lIjoiKzEtNTAyLTMwNS04OTE1IiwiZGVzY3JpcHRpb24iOiJSb2IgQmVyZ2Vyb24gaXMgYSBsaWNlbnNlZCBLZW50dWNreSBSZWFsdG9yIGFuZCB0aGUgb3duZXIgb2YgV2lubmVyIFJlYWx0eSBpbiBMb3Vpc3ZpbGxlLiBIZSBoYXMgd29ya2VkIGluIExvdWlzdmlsbGUgcmVhbCBlc3RhdGUgc2luY2UgMjAxMyBhbmQgd3JpdGVzIG9uIGNyZWF0aXZlIGZpbmFuY2luZywgb2ZmLW1hcmtldCBhY3F1aXNpdGlvbiBhbmQgS2VudHVja3kgcmVhbCBlc3RhdGUgbGF3LiIsImhhc0NyZWRlbnRpYWwiOnsiQHR5cGUiOiJFZHVjYXRpb25hbE9jY3VwYXRpb25hbENyZWRlbnRpYWwiLCJjcmVkZW50aWFsQ2F0ZWdvcnkiOiJSZWFsIGVzdGF0ZSBzYWxlc3BlcnNvbiBsaWNlbnNlIiwiaWRlbnRpZmllciI6IjIxOTMyNSIsInJlY29nbml6ZWRCeSI6eyJAdHlwZSI6IkdvdmVybm1lbnRPcmdhbml6YXRpb24iLCJuYW1lIjoiS2VudHVja3kgUmVhbCBFc3RhdGUgQ29tbWlzc2lvbiJ9fSwia25vd3NBYm91dCI6WyJSZWFsIGVzdGF0ZSB3aG9sZXNhbGluZyIsIk5vdmF0aW9uIGFncmVlbWVudHMiLCJTZWxsZXIgZmluYW5jaW5nIiwiTGVhc2Ugb3B0aW9ucyIsIkFzc3VtYWJsZSBtb3J0Z2FnZXMiLCJDcmVhdGl2ZSByZWFsIGVzdGF0ZSBmaW5hbmNpbmciLCJMb3Vpc3ZpbGxlIGhvdXNpbmcgbWFya2V0IiwiS2VudHVja3kgcmVhbCBlc3RhdGUgbGF3Il0sImtub3dzTGFuZ3VhZ2UiOlsiRW5nbGlzaCJdLCJzYW1lQXMiOlsiaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL3JvYmJlcmdlcm9ua3kvIiwiaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL1JvYkJlcmdlcm9uNTAyLyIsImh0dHBzOi8vd3d3LmhvbWVzLmNvbS9yZWFsLWVzdGF0ZS1hZ2VudHMvcm9iLWJlcmdlcm9uL213ZXgwdmsvIiwiaHR0cHM6Ly93d3cuYmlnZ2VycG9ja2V0cy5jb20vdXNlcnMvcm9iYnJlYWx0b3IiLCJodHRwczovL3d3dy5pbnN0YWdyYW0uY29tL3JvYmJlcmdlcm9uaW5reS8iXX0seyJAdHlwZSI6IlBlcnNvbiIsIkBpZCI6Imh0dHBzOi8vd3d3LnRoZXdpbm5lcnJlYWx0eS5jb20vI2NvbGxlZW4tcmVpbGx5IiwibmFtZSI6IkNvbGxlZW4gUmVpbGx5Iiwiam9iVGl0bGUiOiJDaGllZiBPcGVyYXRpbmcgT2ZmaWNlciIsIndvcmtzRm9yIjp7IkBpZCI6Imh0dHBzOi8vd3d3LnRoZXdpbm5lcnJlYWx0eS5jb20vI29yZ2FuaXphdGlvbiJ9LCJkZXNjcmlwdGlvbiI6IkNvbGxlZW4gUmVpbGx5IGlzIFdpbm5lciBSZWFsdHkncyBDaGllZiBPcGVyYXRpbmcgT2ZmaWNlciwgcnVubmluZyBjb21wbGlhbmNlIGFuZCBjb250cmFjdC10by1jbG9zZSBvcGVyYXRpb25zIGFjcm9zcyB0aGUgdGVhbS4gU2hlIGhhcyBtYW5hZ2VkIDQwMCsgdHJhbnNhY3Rpb25zIGZyb20gY29udHJhY3QgdG8gY2xvc2luZyB0YWJsZSDigJQgaW5jbHVkaW5nIGFzc2lnbm1lbnRzLCBub3ZhdGlvbnMsIHN1YmplY3QtdG8sIGxlYXNlIG9wdGlvbnMsIGFuZCBsYW5kIGNvbnRyYWN0cyDigJQgYW5kIGhvbGRzIGEgbWFzdGVyJ3MgZGVncmVlIGFuZCBhIHByb2plY3QgbWFuYWdlbWVudCBjZXJ0aWZpY2F0aW9uLiJ9LHsiQHR5cGUiOiJQZXJzb24iLCJAaWQiOiJodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tLyNsaXNhLXR1Y2tlciIsIm5hbWUiOiJMaXNhIFR1Y2tlciIsImpvYlRpdGxlIjoiUHJpbmNpcGFsIEJyb2tlciIsInVybCI6Imh0dHBzOi8vd3d3LnRoZXdpbm5lcnJlYWx0eS5jb20vbGlzYS10dWNrZXIiLCJ3b3Jrc0ZvciI6eyJAaWQiOiJodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tLyNvcmdhbml6YXRpb24ifX0seyJAdHlwZSI6IldlYlNpdGUiLCJAaWQiOiJodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tLyN3ZWJzaXRlIiwidXJsIjoiaHR0cHM6Ly93d3cudGhld2lubmVycmVhbHR5LmNvbS8iLCJuYW1lIjoiV2lubmVyIFJlYWx0eSIsImluTGFuZ3VhZ2UiOiJlbi1VUyIsInB1Ymxpc2hlciI6eyJAaWQiOiJodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tLyNvcmdhbml6YXRpb24ifSwibGljZW5zZSI6Imh0dHBzOi8vd3d3LnRoZXdpbm5lcnJlYWx0eS5jb20vY29udGVudC1haS11c2UtcG9saWN5IiwiY3JlZGl0VGV4dCI6Ildpbm5lciBSZWFsdHkiLCJjb3B5cmlnaHRIb2xkZXIiOnsiQGlkIjoiaHR0cHM6Ly93d3cudGhld2lubmVycmVhbHR5LmNvbS8jb3JnYW5pemF0aW9uIn19XX08L3NjcmlwdD4=|END

WRA|i287441|11|PHNjcmlwdD4KKGZ1bmN0aW9uKCkgewogIGZ1bmN0aW9uIGZpeExhYmVscygpIHsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RleHRhcmVhW25hbWU9Im1lc3NhZ2UiXVtkYXRhLXNiLXR5cGU9ImNvbnRhY3RfZm9ybSJdJykuZm9yRWFjaChmdW5jdGlvbihlbCkgewogICAgICBpZiAoIWVsLmdldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIpICYmICFlbC5nZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIpKSB7CiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgIk1lc3NhZ2UiKTsKICAgICAgfQogICAgfSk7CiAgfQogIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAibG9hZGluZyIpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmaXhMYWJlbHMpOwogIH0gZWxzZSB7CiAgICBmaXhMYWJlbHMoKTsKICB9CiAgc2V0VGltZW91dChmaXhMYWJlbHMsIDE1MDApOwogIHNldFRpbWVvdXQoZml4TGFiZWxzLCA0MDAwKTsKfSkoKTsKCgooZnVuY3Rpb24oKXsKdHJ5IHsKICBpZiAod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICE9PSAnL2plZmZlcnNvbi1jb3VudHktcHJvcGVydHktdGF4LWNhbGN1bGF0b3InKSByZXR1cm47CiAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1wdC1jYWxjJykpIHJldHVybjsKICB2YXIgYm9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zYi1pdGVtLXZpZXdfX2JvZHknKTsKICBpZiAoIWJvZHkpIHJldHVybjsKICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2gxJykpIHsKICAgIHZhciBoMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2gxJyk7CiAgICBoMS50ZXh0Q29udGVudCA9ICdKZWZmZXJzb24gQ291bnR5IFByb3BlcnR5IFRheCBDYWxjdWxhdG9yOiBFc3RpbWF0ZSBieSBUYXhpbmcgRGlzdHJpY3QnOwogICAgaDEuc3R5bGUuY3NzVGV4dCA9ICdjb2xvcjojMWExYTFhO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFNlZ29lIFVJLFJvYm90byxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjM2cHg7bGluZS1oZWlnaHQ6MS4yO21hcmdpbjowIDAgMTZweCAwOyc7CiAgICBib2R5LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGgxLCBib2R5KTsKICB9CiAgdmFyIG1hcmtlciA9IG51bGw7CiAgdmFyIHBzID0gYm9keS5xdWVyeVNlbGVjdG9yQWxsKCdwJyk7CiAgZm9yICh2YXIgaT0wO2k8cHMubGVuZ3RoO2krKyl7IGlmIChwc1tpXS50ZXh0Q29udGVudC50cmltKCk9PT0nQ0FMQ19NQVJLRVInKXsgbWFya2VyID0gcHNbaV07IGJyZWFrOyB9IH0KICBpZiAoIW1hcmtlcikgcmV0dXJuOwogIHZhciBjYXJkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgY2FyZC5pZCA9ICd3ci1wdC1jYWxjJzsKICBjYXJkLnN0eWxlLmNzc1RleHQgPSAnYmFja2dyb3VuZDojZjdmN2Y1O2JvcmRlcjoxcHggc29saWQgI2UwZTBkYztib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyNHB4O21hcmdpbjoxNnB4IDAgMjRweCAwO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFNlZ29lIFVJLFJvYm90byxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtjb2xvcjojMWExYTFhOyc7CiAgdmFyIGxibCA9ICdkaXNwbGF5OmJsb2NrO2ZvbnQtd2VpZ2h0OjYwMDttYXJnaW46MTRweCAwIDZweCAwO2NvbG9yOiMxYTFhMWE7Zm9udC1zaXplOjE0cHg7JzsKICB2YXIgaW5wID0gJ3dpZHRoOjEwMCU7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MTBweCAxMnB4O2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjZweDtmb250LXNpemU6MTZweDtjb2xvcjojMWExYTFhO2JhY2tncm91bmQ6I2ZmZjsnOwogIGNhcmQuaW5uZXJIVE1MID0KICAgICc8aDMgc3R5bGU9Im1hcmdpbjowIDAgNHB4IDA7Y29sb3I6IzFhMWExYTtmb250LXNpemU6MjBweDsiPkVzdGltYXRlIHlvdXIgcHJvcGVydHkgdGF4PC9oMz4nICsKICAgICc8cCBzdHlsZT0iY29sb3I6IzQ0NDtmb250LXNpemU6MTRweDttYXJnaW46MCAwIDhweCAwOyI+U3RhdGUgKyBjb3VudHkgKyBKQ1BTIHNjaG9vbHMsIHBsdXMgeW91ciBVcmJhbiBTZXJ2aWNlcyBvciBmaXJlIGRpc3RyaWN0IHJhdGUuPC9wPicgKwogICAgJzxsYWJlbCBzdHlsZT0iJyArIGxibCArICciPkFzc2Vzc2VkIHZhbHVlPC9sYWJlbD4nICsKICAgICc8aW5wdXQgaWQ9IndyLXB0LWF2IiB0eXBlPSJudW1iZXIiIHBsYWNlaG9sZGVyPSJlLmcuIDI1MDAwMCIgc3R5bGU9IicgKyBpbnAgKyAnIj4nICsKICAgICc8bGFiZWwgc3R5bGU9IicgKyBsYmwgKyAnIj5UYXhpbmcgZGlzdHJpY3Q8L2xhYmVsPicgKwogICAgJzxzZWxlY3QgaWQ9IndyLXB0LWRpc3RyaWN0IiBzdHlsZT0iJyArIGlucCArICciPicgKwogICAgICAnPG9wdGlvbiB2YWx1ZT0ibm9uZSI+VXJiYW4gU2VydmljZXMgRGlzdHJpY3QgKG9sZCBDaXR5IG9mIExvdWlzdmlsbGUpPC9vcHRpb24+JyArCiAgICAgICc8b3B0aW9uIHZhbHVlPSJhbmNob3JhZ2UiPkZpcmUgZGlzdHJpY3Q6IEFuY2hvcmFnZSAvIE1pZGRsZXRvd248L29wdGlvbj4nICsKICAgICAgJzxvcHRpb24gdmFsdWU9ImZhaXJkYWxlIj5GaXJlIGRpc3RyaWN0OiBGYWlyZGFsZTwvb3B0aW9uPicgKwogICAgICAnPG9wdGlvbiB2YWx1ZT0iZmVybmNyZWVrIj5GaXJlIGRpc3RyaWN0OiBGZXJuIENyZWVrPC9vcHRpb24+JyArCiAgICAgICc8b3B0aW9uIHZhbHVlPSJqdG93biI+RmlyZSBkaXN0cmljdDogSmVmZmVyc29udG93biAvIE1jTWFoYW48L29wdGlvbj4nICsKICAgICAgJzxvcHRpb24gdmFsdWU9Im9rb2xvbmEiPkZpcmUgZGlzdHJpY3Q6IE9rb2xvbmE8L29wdGlvbj4nICsKICAgICAgJzxvcHRpb24gdmFsdWU9InBycCI+RmlyZSBkaXN0cmljdDogUGxlYXN1cmUgUmlkZ2UgUGFyazwvb3B0aW9uPicgKwogICAgICAnPG9wdGlvbiB2YWx1ZT0ic3RtYXR0aGV3cyI+RmlyZSBkaXN0cmljdDogU3QuIE1hdHRoZXdzIC8gTHluZG9uPC9vcHRpb24+JyArCiAgICAgICc8b3B0aW9uIHZhbHVlPSJtb2NraW5nYmlyZCI+Q2l0eSBvZiBNb2NraW5nYmlyZCBWYWxsZXk8L29wdGlvbj4nICsKICAgICc8L3NlbGVjdD4nICsKICAgICc8bGFiZWwgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDttYXJnaW46MTRweCAwIDZweCAwO2NvbG9yOiMxYTFhMWE7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjAwOyI+PGlucHV0IGlkPSJ3ci1wdC1ob21lc3RlYWQiIHR5cGU9ImNoZWNrYm94IiBzdHlsZT0id2lkdGg6MTZweDtoZWlnaHQ6MTZweDsiPkkgcXVhbGlmeSBmb3IgdGhlIEtZIGhvbWVzdGVhZCBleGVtcHRpb24gKDY1KyBvciB0b3RhbGx5IGRpc2FibGVkKTwvbGFiZWw+JyArCiAgICAnPGJ1dHRvbiBpZD0id3ItcHQtY2FsYy1idG4iIHN0eWxlPSJtYXJnaW4tdG9wOjE2cHg7YmFja2dyb3VuZDojMWExYTFhO2NvbG9yOiNmZmY7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czo2cHg7cGFkZGluZzoxMnB4IDIwcHg7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NjAwO2N1cnNvcjpwb2ludGVyOyI+Q2FsY3VsYXRlIG15IHByb3BlcnR5IHRheDwvYnV0dG9uPicgKwogICAgJzxkaXYgaWQ9IndyLXB0LXJlc3VsdCIgc3R5bGU9ImRpc3BsYXk6bm9uZTttYXJnaW4tdG9wOjIwcHg7cGFkZGluZy10b3A6MTZweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkOyI+JyArCiAgICAgICc8ZGl2IHN0eWxlPSJjb2xvcjojNDQ0O2ZvbnQtc2l6ZToxNHB4OyI+RXN0aW1hdGVkIGFubnVhbCBwcm9wZXJ0eSB0YXg8L2Rpdj4nICsKICAgICAgJzxkaXYgaWQ9IndyLXB0LWFubnVhbCIgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Zm9udC1zaXplOjMycHg7Zm9udC13ZWlnaHQ6NzAwOyI+JDA8L2Rpdj4nICsKICAgICAgJzxkaXYgc3R5bGU9ImNvbG9yOiM0NDQ7Zm9udC1zaXplOjE0cHg7bWFyZ2luLXRvcDo2cHg7Ij5BYm91dCA8c3BhbiBpZD0id3ItcHQtbW9udGhseSIgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Zm9udC13ZWlnaHQ6NjAwOyI+JDA8L3NwYW4+L21vbnRoPC9kaXY+JyArCiAgICAgICc8ZGl2IGlkPSJ3ci1wdC1icmVha2Rvd24iIHN0eWxlPSJjb2xvcjojNTU1O2ZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6MTRweDtsaW5lLWhlaWdodDoxLjc7Ij48L2Rpdj4nICsKICAgICAgJzxkaXYgc3R5bGU9ImNvbG9yOiM3Nzc7Zm9udC1zaXplOjEycHg7bWFyZ2luLXRvcDoxNHB4OyI+RG9lcyBub3QgaW5jbHVkZSBsaWJyYXJ5IHRheCBvciBhIHNtYWxsIGhvbWUtcnVsZSBjaXR5JiMzOTtzIG93biBhZGRlZCByYXRlIChTdC4gTWF0dGhld3MsIEplZmZlcnNvbnRvd24sIEFuY2hvcmFnZSwgUHJvc3BlY3QsIE1pZGRsZXRvd24sIGFuZCBkb3plbnMgbW9yZSkuIENoZWNrIHRoZSA8YSBocmVmPSJodHRwczovL3d3dy5qY3Nva3kub3JnL3Byb3BlcnR5LXRheC9yYXRlcyIgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Ij5TaGVyaWZmJiMzOTtzIGZ1bGwgcmF0ZSBzY2hlZHVsZTwvYT4gZm9yIHlvdXIgZXhhY3QgbnVtYmVyLjwvZGl2PicgKwogICAgJzwvZGl2Pic7CiAgbWFya2VyLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGNhcmQsIG1hcmtlcik7CiAgdmFyIFJBVEVTID0ge25vbmU6MC4zMTksIGFuY2hvcmFnZTowLjE3NSwgZmFpcmRhbGU6MC4xMCwgZmVybmNyZWVrOjAuMTgsIGp0b3duOjAuMjAsIG9rb2xvbmE6MC4xNywgcHJwOjAuMjAsIHN0bWF0dGhld3M6MC4xODUsIG1vY2tpbmdiaXJkOjAuMDd9OwogIHZhciBMQUJFTFMgPSB7bm9uZTonVXJiYW4gU2VydmljZXMgRGlzdHJpY3QnLCBhbmNob3JhZ2U6J0ZpcmUgZGlzdHJpY3QgKEFuY2hvcmFnZS9NaWRkbGV0b3duKScsIGZhaXJkYWxlOidGaXJlIGRpc3RyaWN0IChGYWlyZGFsZSknLCBmZXJuY3JlZWs6J0ZpcmUgZGlzdHJpY3QgKEZlcm4gQ3JlZWspJywganRvd246J0ZpcmUgZGlzdHJpY3QgKEplZmZlcnNvbnRvd24vTWNNYWhhbiknLCBva29sb25hOidGaXJlIGRpc3RyaWN0IChPa29sb25hKScsIHBycDonRmlyZSBkaXN0cmljdCAoUGxlYXN1cmUgUmlkZ2UgUGFyayknLCBzdG1hdHRoZXdzOidGaXJlIGRpc3RyaWN0IChTdC4gTWF0dGhld3MvTHluZG9uKScsIG1vY2tpbmdiaXJkOidDaXR5IG9mIE1vY2tpbmdiaXJkIFZhbGxleSd9OwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1wdC1jYWxjLWJ0bicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHZhciBhdiA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLXB0LWF2JykudmFsdWUpIHx8IDA7CiAgICB2YXIgZGlzdHJpY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItcHQtZGlzdHJpY3QnKS52YWx1ZTsKICAgIHZhciBob21lc3RlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItcHQtaG9tZXN0ZWFkJykuY2hlY2tlZDsKICAgIHZhciBkaXN0UmF0ZSA9IFJBVEVTW2Rpc3RyaWN0XTsKICAgIHZhciBzdGF0ZVJhdGUgPSAwLjEwNiwgY291bnR5UmF0ZSA9IDAuMTE4LCBzY2hvb2xSYXRlID0gMC43MTc7CiAgICB2YXIgdG90YWxSYXRlID0gc3RhdGVSYXRlICsgY291bnR5UmF0ZSArIHNjaG9vbFJhdGUgKyBkaXN0UmF0ZTsKICAgIHZhciBleGVtcHRpb24gPSBob21lc3RlYWQgPyA0OTEwMCA6IDA7CiAgICB2YXIgdGF4YWJsZSA9IE1hdGgubWF4KDAsIGF2IC0gZXhlbXB0aW9uKTsKICAgIHZhciBhbm51YWwgPSB0YXhhYmxlICogdG90YWxSYXRlIC8gMTAwOwogICAgdmFyIG1vbnRobHkgPSBhbm51YWwgLyAxMjsKICAgIHZhciBmbXQgPSBmdW5jdGlvbihuKXsgcmV0dXJuICckJyArIE1hdGgucm91bmQobikudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJyk7IH07CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItcHQtcmVzdWx0Jykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItcHQtYW5udWFsJykudGV4dENvbnRlbnQgPSBmbXQoYW5udWFsKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1wdC1tb250aGx5JykudGV4dENvbnRlbnQgPSBmbXQobW9udGhseSk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItcHQtYnJlYWtkb3duJykuaW5uZXJIVE1MID0KICAgICAgJ1N0YXRlOiAnICsgZm10KHRheGFibGUqc3RhdGVSYXRlLzEwMCkgKyAnICZtaWRkb3Q7IENvdW50eS9NZXRybzogJyArIGZtdCh0YXhhYmxlKmNvdW50eVJhdGUvMTAwKSArCiAgICAgICcgJm1pZGRvdDsgSkNQUyBTY2hvb2xzOiAnICsgZm10KHRheGFibGUqc2Nob29sUmF0ZS8xMDApICsgJyAmbWlkZG90OyAnICsgTEFCRUxTW2Rpc3RyaWN0XSArICc6ICcgKyBmbXQodGF4YWJsZSpkaXN0UmF0ZS8xMDApICsKICAgICAgKGhvbWVzdGVhZCA/ICcgJm1pZGRvdDsgSG9tZXN0ZWFkIGV4ZW1wdGlvbiBhcHBsaWVkOiAtJDQ5LDEwMCBvZmYgYXNzZXNzZWQgdmFsdWUnIDogJycpOwogIH0pOwp9IGNhdGNoKGUpIHsgY29uc29sZS5lcnJvcignV1IgcHJvcGVydHkgdGF4IGNhbGMgZXJyb3InLCBlKTsgfQp9KSgpOwoKKGZ1bmN0aW9uKCl7CnRyeSB7CiAgaWYgKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSAhPT0gJy9sb3Vpc3ZpbGxlLWRvd24tcGF5bWVudC1hc3Npc3RhbmNlLXNjcmVlbmVyJykgcmV0dXJuOwogIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItZHBhLWNhbGMnKSkgcmV0dXJuOwogIHZhciBib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNiLWl0ZW0tdmlld19fYm9keScpOwogIGlmICghYm9keSkgcmV0dXJuOwogIGlmICghZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaDEnKSkgewogICAgdmFyIGgxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaDEnKTsKICAgIGgxLnRleHRDb250ZW50ID0gJ0xvdWlzdmlsbGUgRG93biBQYXltZW50IEFzc2lzdGFuY2UgU2NyZWVuZXI6IERvIFlvdSBRdWFsaWZ5PyAoMjAyNiknOwogICAgaDEuc3R5bGUuY3NzVGV4dCA9ICdjb2xvcjojMWExYTFhO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFNlZ29lIFVJLFJvYm90byxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjM2cHg7bGluZS1oZWlnaHQ6MS4yO21hcmdpbjowIDAgMTZweCAwOyc7CiAgICBib2R5LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGgxLCBib2R5KTsKICB9CiAgdmFyIG1hcmtlciA9IG51bGw7CiAgdmFyIHBzID0gYm9keS5xdWVyeVNlbGVjdG9yQWxsKCdwJyk7CiAgZm9yICh2YXIgaT0wO2k8cHMubGVuZ3RoO2krKyl7IGlmIChwc1tpXS50ZXh0Q29udGVudC50cmltKCk9PT0nQ0FMQ19NQVJLRVInKXsgbWFya2VyID0gcHNbaV07IGJyZWFrOyB9IH0KICBpZiAoIW1hcmtlcikgcmV0dXJuOwoKICB2YXIgY2FyZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogIGNhcmQuaWQgPSAnd3ItZHBhLWNhbGMnOwogIGNhcmQuc3R5bGUuY3NzVGV4dCA9ICdiYWNrZ3JvdW5kOiNmNWY1ZjQ7Y29sb3I6IzFhMWExYTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyOHB4O21hcmdpbjowIDAgMjRweCAwO21heC13aWR0aDo2NDBweDsnOwogIGNhcmQuaW5uZXJIVE1MID0KICAgICc8aDMgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Zm9udC1zaXplOjIycHg7Zm9udC13ZWlnaHQ6NzAwO21hcmdpbjowIDAgNnB4IDA7Ij5TZWUgd2hpY2ggcHJvZ3JhbXMgeW91IG1heSBxdWFsaWZ5IGZvcjwvaDM+JyArCiAgICAnPHAgc3R5bGU9ImNvbG9yOiM0YjRiNGI7Zm9udC1zaXplOjE1cHg7bWFyZ2luOjAgMCAyMHB4IDA7Ij5Mb3Vpc3ZpbGxlIE1ldHJvIERQQSwgS2VudHVja3kgSG91c2luZyBDb3Jwb3JhdGlvbiBEQVAgYW5kIHRoZSBHTEFSIEZvdW5kYXRpb24gZ3JhbnQsIGNoZWNrZWQgYWdhaW5zdCByZWFsIDIwMjYgcHJvZ3JhbSBudW1iZXJzLjwvcD4nICsKICAgICc8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjE2cHg7Ij48bGFiZWwgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Y29sb3I6IzFhMWExYTtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjE0cHg7bWFyZ2luLWJvdHRvbTo2cHg7Ij5Ib3VzZWhvbGQgc2l6ZSAoZXZlcnlvbmUgb24gdGhlIGxvYW4sIGxpdmluZyBpbiB0aGUgaG9tZSk8L2xhYmVsPicgKwogICAgICAnPHNlbGVjdCBpZD0id3ItZHBhLWhvdXNlaG9sZCIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzoxMHB4O2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjZweDtmb250LXNpemU6MTVweDtjb2xvcjojMWExYTFhO2JhY2tncm91bmQ6I2ZmZjtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ij4nICsKICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iMSI+MTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IjIiPjI8L29wdGlvbj48b3B0aW9uIHZhbHVlPSIzIj4zPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iNCIgc2VsZWN0ZWQ+NDwvb3B0aW9uPicgKwogICAgICAgICc8b3B0aW9uIHZhbHVlPSI1Ij41PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iNiI+Njwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IjciPjc8L29wdGlvbj48b3B0aW9uIHZhbHVlPSI4Ij44IG9yIG1vcmU8L29wdGlvbj4nICsKICAgICAgJzwvc2VsZWN0PjwvZGl2PicgKwogICAgJzxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MTZweDsiPjxsYWJlbCBzdHlsZT0iZGlzcGxheTpibG9jaztjb2xvcjojMWExYTFhO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTRweDttYXJnaW4tYm90dG9tOjZweDsiPkdyb3NzIGFubnVhbCBob3VzZWhvbGQgaW5jb21lPC9sYWJlbD4nICsKICAgICAgJzxpbnB1dCBpZD0id3ItZHBhLWluY29tZSIgdHlwZT0ibnVtYmVyIiBwbGFjZWhvbGRlcj0iZS5nLiA2NTAwMCIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzoxMHB4O2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjZweDtmb250LXNpemU6MTVweDtjb2xvcjojMWExYTFhO2JhY2tncm91bmQ6I2ZmZjtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ij48L2Rpdj4nICsKICAgICc8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjE2cHg7Ij48bGFiZWwgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Y29sb3I6IzFhMWExYTtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjE0cHg7bWFyZ2luLWJvdHRvbTo2cHg7Ij5UYXJnZXQgcHVyY2hhc2UgcHJpY2U8L2xhYmVsPicgKwogICAgICAnPGlucHV0IGlkPSJ3ci1kcGEtcHJpY2UiIHR5cGU9Im51bWJlciIgcGxhY2Vob2xkZXI9ImUuZy4gMjQwMDAwIiBzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjEwcHg7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6NnB4O2ZvbnQtc2l6ZToxNXB4O2NvbG9yOiMxYTFhMWE7YmFja2dyb3VuZDojZmZmO2JveC1zaXppbmc6Ym9yZGVyLWJveDsiPjwvZGl2PicgKwogICAgJzxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MTJweDsiPjxsYWJlbCBzdHlsZT0iY29sb3I6IzFhMWExYTtmb250LXNpemU6MTRweDsiPjxpbnB1dCBpZD0id3ItZHBhLW5ld2NvbnN0cnVjdGlvbiIgdHlwZT0iY2hlY2tib3giIHN0eWxlPSJtYXJnaW4tcmlnaHQ6OHB4OyI+VGhpcyBpcyBuZXcgY29uc3RydWN0aW9uLCBub3QgYW4gZXhpc3RpbmcgaG9tZTwvbGFiZWw+PC9kaXY+JyArCiAgICAnPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbToyMHB4OyI+PGxhYmVsIHN0eWxlPSJjb2xvcjojMWExYTFhO2ZvbnQtc2l6ZToxNHB4OyI+PGlucHV0IGlkPSJ3ci1kcGEtY3VycmVudG93bmVyIiB0eXBlPSJjaGVja2JveCIgc3R5bGU9Im1hcmdpbi1yaWdodDo4cHg7Ij5JIGN1cnJlbnRseSBvd24gYSBob21lPC9sYWJlbD48L2Rpdj4nICsKICAgICc8YnV0dG9uIGlkPSJ3ci1kcGEtY2FsYy1idG4iIHN0eWxlPSJiYWNrZ3JvdW5kOiMxYTFhMWE7Y29sb3I6I2ZmZjtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjZweDtwYWRkaW5nOjEycHggMjRweDtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo2MDA7Y3Vyc29yOnBvaW50ZXI7Ij5DaGVjayBteSBlbGlnaWJpbGl0eTwvYnV0dG9uPicgKwogICAgJzxkaXYgaWQ9IndyLWRwYS1yZXN1bHQiIHN0eWxlPSJkaXNwbGF5Om5vbmU7bWFyZ2luLXRvcDoyMHB4O3BhZGRpbmctdG9wOjIwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZDsiPjwvZGl2Pic7CiAgbWFya2VyLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGNhcmQsIG1hcmtlcik7CgogIHZhciBNRVRST19JTkNPTUUgPSB7MTo1NTQ1MCwyOjYzNDAwLDM6NzEzMDAsNDo3OTIwMCw1Ojg1NTUwLDY6OTE5MDAsNzo5ODI1MCw4OjEwNDU1MH07CgogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1kcGEtY2FsYy1idG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICB2YXIgaGggPSBwYXJzZUludChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItZHBhLWhvdXNlaG9sZCcpLnZhbHVlLCAxMCkgfHwgMTsKICAgIHZhciBpbmNvbWUgPSBwYXJzZUZsb2F0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1kcGEtaW5jb21lJykudmFsdWUpIHx8IDA7CiAgICB2YXIgcHJpY2UgPSBwYXJzZUZsb2F0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1kcGEtcHJpY2UnKS52YWx1ZSkgfHwgMDsKICAgIHZhciBpc05ldyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1kcGEtbmV3Y29uc3RydWN0aW9uJykuY2hlY2tlZDsKICAgIHZhciBvd25zTm93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWRwYS1jdXJyZW50b3duZXInKS5jaGVja2VkOwoKICAgIHZhciBwcmljZUNhcCA9IGlzTmV3ID8gMzMxMDAwIDogMjYwMDAwOwogICAgdmFyIG1ldHJvSW5jb21lTGltaXQgPSBNRVRST19JTkNPTUVbaGhdIHx8IE1FVFJPX0lOQ09NRVs4XTsKICAgIHZhciBtZXRyb0VsaWdpYmxlID0gIW93bnNOb3cgJiYgaW5jb21lID4gMCAmJiBpbmNvbWUgPD0gbWV0cm9JbmNvbWVMaW1pdCAmJiBwcmljZSA+IDAgJiYgcHJpY2UgPD0gcHJpY2VDYXA7CiAgICB2YXIgbWV0cm9Bc3Npc3QgPSBwcmljZSA+IDAgPyBNYXRoLm1pbigzMDAwMCwgcHJpY2UgKiAwLjIwKSA6IDA7CgogICAgdmFyIGtoY1ByaWNlT2sgPSBwcmljZSA+IDAgJiYgcHJpY2UgPD0gNTEwOTM5OwogICAgdmFyIGtoY0luY29tZUxpa2VseSA9IGluY29tZSA+IDAgJiYgaW5jb21lIDw9IG1ldHJvSW5jb21lTGltaXQgKiAxLjE1OwoKICAgIHZhciBodG1sID0gJyc7CiAgICBodG1sICs9ICc8aDQgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Zm9udC1zaXplOjE3cHg7Zm9udC13ZWlnaHQ6NzAwO21hcmdpbjowIDAgMTJweCAwOyI+TG91aXN2aWxsZSBNZXRybyBEb3duIFBheW1lbnQgQXNzaXN0YW5jZTwvaDQ+JzsKICAgIGlmIChtZXRyb0VsaWdpYmxlKSB7CiAgICAgIGh0bWwgKz0gJzxwIHN0eWxlPSJjb2xvcjojMTY2NTM0O2ZvbnQtd2VpZ2h0OjYwMDttYXJnaW46MCAwIDhweCAwOyI+TGlrZWx5IGVsaWdpYmxlIGJhc2VkIG9uIHRoZXNlIG51bWJlcnMuPC9wPic7CiAgICAgIGh0bWwgKz0gJzxwIHN0eWxlPSJjb2xvcjojNGI0YjRiO2ZvbnQtc2l6ZToxNHB4O21hcmdpbjowIDAgMTZweCAwOyI+RXN0aW1hdGVkIGFzc2lzdGFuY2U6IHVwIHRvICQnICsgTWF0aC5yb3VuZChtZXRyb0Fzc2lzdCkudG9Mb2NhbGVTdHJpbmcoKSArICcgKDAlIGludGVyZXN0LCBoYWxmIGZvcmdpdmVuIG92ZXIgdGhlIG9jY3VwYW5jeSBwZXJpb2QpLiBIb3VzZWhvbGQgaW5jb21lIGxpbWl0IGZvciAnICsgaGggKyAnICcgKyAoaGg9PT0xPydwZXJzb24nOidwZW9wbGUnKSArICc6ICQnICsgbWV0cm9JbmNvbWVMaW1pdC50b0xvY2FsZVN0cmluZygpICsgJy4gUHVyY2hhc2UgcHJpY2UgY2FwOiAkJyArIHByaWNlQ2FwLnRvTG9jYWxlU3RyaW5nKCkgKyAnLjwvcD4nOwogICAgfSBlbHNlIHsKICAgICAgdmFyIHJlYXNvbnMgPSBbXTsKICAgICAgaWYgKG93bnNOb3cpIHJlYXNvbnMucHVzaCgneW91IGN1cnJlbnRseSBvd24gYSBob21lJyk7CiAgICAgIGlmIChpbmNvbWUgPiBtZXRyb0luY29tZUxpbWl0KSByZWFzb25zLnB1c2goJ2hvdXNlaG9sZCBpbmNvbWUgaXMgYWJvdmUgdGhlICQnICsgbWV0cm9JbmNvbWVMaW1pdC50b0xvY2FsZVN0cmluZygpICsgJyBsaW1pdCBmb3IgYSBob3VzZWhvbGQgb2YgJyArIGhoKTsKICAgICAgaWYgKHByaWNlID4gcHJpY2VDYXApIHJlYXNvbnMucHVzaCgncHVyY2hhc2UgcHJpY2UgaXMgYWJvdmUgdGhlICQnICsgcHJpY2VDYXAudG9Mb2NhbGVTdHJpbmcoKSArICcgY2FwIGZvciAnICsgKGlzTmV3ID8gJ25ldyBjb25zdHJ1Y3Rpb24nIDogJ2FuIGV4aXN0aW5nIGhvbWUnKSk7CiAgICAgIGlmICghaW5jb21lIHx8ICFwcmljZSkgcmVhc29ucy5wdXNoKCdlbnRlciBib3RoIGluY29tZSBhbmQgcHVyY2hhc2UgcHJpY2UgdG8gY2hlY2snKTsKICAgICAgaHRtbCArPSAnPHAgc3R5bGU9ImNvbG9yOiM5OTFiMWI7Zm9udC13ZWlnaHQ6NjAwO21hcmdpbjowIDAgOHB4IDA7Ij5Ob3QgbGlrZWx5IGVsaWdpYmxlIG9uIHRoZXNlIG51bWJlcnMuPC9wPic7CiAgICAgIGlmIChyZWFzb25zLmxlbmd0aCkgaHRtbCArPSAnPHAgc3R5bGU9ImNvbG9yOiM0YjRiNGI7Zm9udC1zaXplOjE0cHg7bWFyZ2luOjAgMCAxNnB4IDA7Ij5XaHk6ICcgKyByZWFzb25zLmpvaW4oJzsgJykgKyAnLjwvcD4nOwogICAgfQoKICAgIGh0bWwgKz0gJzxoNCBzdHlsZT0iY29sb3I6IzFhMWExYTtmb250LXNpemU6MTdweDtmb250LXdlaWdodDo3MDA7bWFyZ2luOjAgMCAxMnB4IDA7Ij5LSEMgRG93biBQYXltZW50IEFzc2lzdGFuY2UgKERBUCk8L2g0Pic7CiAgICBpZiAoa2hjUHJpY2VPayAmJiBraGNJbmNvbWVMaWtlbHkpIHsKICAgICAgaHRtbCArPSAnPHAgc3R5bGU9ImNvbG9yOiMxNjY1MzQ7Zm9udC13ZWlnaHQ6NjAwO21hcmdpbjowIDAgOHB4IDA7Ij5Xb3J0aCBleHBsb3Jpbmcgd2l0aCBhIEtIQy1hcHByb3ZlZCBsZW5kZXIuPC9wPic7CiAgICAgIGh0bWwgKz0gJzxwIHN0eWxlPSJjb2xvcjojNGI0YjRiO2ZvbnQtc2l6ZToxNHB4O21hcmdpbjowIDAgMCAwOyI+WW91ciBpbmNvbWUgYW5kIHByaWNlIGxvb2sgaW4gcmFuZ2UgZm9yIEtIQ1wncyA4MCUtQU1JLWJhc2VkIGxpbWl0cyAodGhlc2UgdmFyeSBieSBjb3VudHksIHNvIGEgbGVuZGVyIGNvbmZpcm1zIHlvdXIgZXhhY3QgbnVtYmVyKS4gVXAgdG8gJDEyLDUwMCBhdmFpbGFibGUsIHJlcGFpZCBvdmVyIDE1IHllYXJzIGFsb25nc2lkZSBhIEtIQyBmaXJzdCBtb3J0Z2FnZSAoNjYwIG1pbiBjcmVkaXQgc2NvcmUsICQ1MTAsOTM5IHB1cmNoYXNlIHByaWNlIGNhcCkuPC9wPic7CiAgICB9IGVsc2UgewogICAgICBodG1sICs9ICc8cCBzdHlsZT0iY29sb3I6Izk5MWIxYjtmb250LXdlaWdodDo2MDA7bWFyZ2luOjAgMCA4cHggMDsiPk5vdCBsaWtlbHkgYSBmaXQgb24gdGhlc2UgbnVtYmVycy48L3A+JzsKICAgICAgdmFyIGtoY1JlYXNvbnMgPSBbXTsKICAgICAgaWYgKCFraGNQcmljZU9rKSBraGNSZWFzb25zLnB1c2goJ3B1cmNoYXNlIHByaWNlIGlzIGFib3ZlIEtIQ1wncyAkNTEwLDkzOSBjYXAnKTsKICAgICAgaWYgKCFraGNJbmNvbWVMaWtlbHkpIGtoY1JlYXNvbnMucHVzaCgnaW5jb21lIGxvb2tzIHRvbyBoaWdoIGZvciBLSENcJ3MgODAlIEFNSSBsaW1pdCBpbiBtb3N0IGNvdW50aWVzJyk7CiAgICAgIGlmIChraGNSZWFzb25zLmxlbmd0aCkgaHRtbCArPSAnPHAgc3R5bGU9ImNvbG9yOiM0YjRiNGI7Zm9udC1zaXplOjE0cHg7bWFyZ2luOjA7Ij5XaHk6ICcgKyBraGNSZWFzb25zLmpvaW4oJzsgJykgKyAnLjwvcD4nOwogICAgfQoKICAgIC8vIEdMQVIgRm91bmRhdGlvbiBkb3duIHBheW1lbnQgZ3JhbnQgKHRlcm1zIHBlciBsb3Vpc3ZpbGxlcmVhbHRvcnMuY29tL2ZvdW5kYXRpb24sIHZlcmlmaWVkIFNlcCAzMCAyMDI2KQogICAgdmFyIGdsYXJMb2FuT2sgPSBwcmljZSA+IDAgJiYgcHJpY2UgPD0gODMyNzUwOwogICAgdmFyIGdsYXJFbGlnaWJsZSA9ICFvd25zTm93ICYmIGluY29tZSA+IDAgJiYgaW5jb21lIDw9IG1ldHJvSW5jb21lTGltaXQgJiYgZ2xhckxvYW5PazsKICAgIGh0bWwgKz0gJzxoNCBzdHlsZT0iY29sb3I6IzFhMWExYTtmb250LXNpemU6MTdweDtmb250LXdlaWdodDo3MDA7bWFyZ2luOjIwcHggMCAxMnB4IDA7Ij5HTEFSIEZvdW5kYXRpb24gRG93biBQYXltZW50IEdyYW50PC9oND4nOwogICAgaWYgKGdsYXJFbGlnaWJsZSkgewogICAgICBodG1sICs9ICc8cCBzdHlsZT0iY29sb3I6IzE2NjUzNDtmb250LXdlaWdodDo2MDA7bWFyZ2luOjAgMCA4cHggMDsiPkxpa2VseSBlbGlnaWJsZSBiYXNlZCBvbiB0aGVzZSBudW1iZXJzLjwvcD4nOwogICAgICBodG1sICs9ICc8cCBzdHlsZT0iY29sb3I6IzRiNGI0Yjtmb250LXNpemU6MTRweDttYXJnaW46MCAwIDhweCAwOyI+VXAgdG8gJDIsMDAwIHRvd2FyZCB5b3VyIGRvd24gcGF5bWVudCwgY2xvc2luZyBjb3N0cyBvciBwcmVwYWlkcywgcGFpZCBzdHJhaWdodCB0byB0aGUgdGl0bGUgY29tcGFueS4gVG8gcXVhbGlmeSB5b3UgYWxzbyBuZWVkIHRvIGJlIGEgZmlyc3QtdGltZSBidXllciAobmV2ZXIgb3duZWQgYSBob21lKSwgaGF2ZSBsaXZlZCBpbiB0aGUgR3JlYXRlciBMb3Vpc3ZpbGxlIEFzc29jaWF0aW9uIG9mIFJFQUxUT1JTIChHTEFSKSBzZXJ2aWNlIGFyZWEgZm9yIGF0IGxlYXN0IHNpeCBtb250aHMsIGZpbmlzaCBhIEhVRC1hcHByb3ZlZCBob21lYnV5ZXIgY2xhc3MsIGxpdmUgaW4gdGhlIGhvbWUgZm9yIGF0IGxlYXN0IGZpdmUgeWVhcnMsIGFuZCB1c2UgYSBSZWFsdG9yIHdobyBpcyBhIEdMQVIgcHJpbWFyeSBtZW1iZXIuPC9wPic7CiAgICAgIGh0bWwgKz0gJzxwIHN0eWxlPSJjb2xvcjojNGI0YjRiO2ZvbnQtc2l6ZToxNHB4O21hcmdpbjowIDAgMCAwOyI+WW91IGNhbiBhbHNvIGFwcGx5IGZvciBvbmUgcmVpbWJ1cnNlbWVudCBncmFudCAoeW91IHBheSwgdGhleSBwYXkgeW91IGJhY2spOiB1cCB0byAkNTAwIHRvd2FyZCBhIHNlY29uZCBhcHByYWlzYWwsICQzMDAgZm9yIGEgaG9tZSB3YXJyYW50eSBvciAkNTAwIGZvciBob21lb3duZXJzIGluc3VyYW5jZS4gR3JhbnRzIHJ1biB1bnRpbCB0aGUgbW9uZXkgaXMgZ29uZSwgc28gYXBwbHkgZWFybHkuPC9wPic7CiAgICB9IGVsc2UgewogICAgICBodG1sICs9ICc8cCBzdHlsZT0iY29sb3I6Izk5MWIxYjtmb250LXdlaWdodDo2MDA7bWFyZ2luOjAgMCA4cHggMDsiPk5vdCBsaWtlbHkgZWxpZ2libGUgb24gdGhlc2UgbnVtYmVycy48L3A+JzsKICAgICAgdmFyIGdsYXJSZWFzb25zID0gW107CiAgICAgIGlmIChvd25zTm93KSBnbGFyUmVhc29ucy5wdXNoKCd0aGUgZ3JhbnQgaXMgZm9yIGZpcnN0LXRpbWUgYnV5ZXJzIG9ubHknKTsKICAgICAgaWYgKGluY29tZSA+IG1ldHJvSW5jb21lTGltaXQpIGdsYXJSZWFzb25zLnB1c2goJ2hvdXNlaG9sZCBpbmNvbWUgaXMgYWJvdmUgdGhlIDgwJSBvZiBhcmVhIG1lZGlhbiBpbmNvbWUgbGltaXQgKCQnICsgbWV0cm9JbmNvbWVMaW1pdC50b0xvY2FsZVN0cmluZygpICsgJyBmb3IgYSBob3VzZWhvbGQgb2YgJyArIGhoICsgJyknKTsKICAgICAgaWYgKHByaWNlID4gODMyNzUwKSBnbGFyUmVhc29ucy5wdXNoKCdwdXJjaGFzZSBwcmljZSBpcyBhYm92ZSBsb2NhbCBsb2FuIGxpbWl0cycpOwogICAgICBpZiAoZ2xhclJlYXNvbnMubGVuZ3RoKSBodG1sICs9ICc8cCBzdHlsZT0iY29sb3I6IzRiNGI0Yjtmb250LXNpemU6MTRweDttYXJnaW46MDsiPldoeTogJyArIGdsYXJSZWFzb25zLmpvaW4oJzsgJykgKyAnLjwvcD4nOwogICAgfQogICAgaHRtbCArPSAnPHAgc3R5bGU9ImNvbG9yOiM0YjRiNGI7Zm9udC1zaXplOjE0cHg7bWFyZ2luOjhweCAwIDAgMDsiPkluY29tZSBsaW1pdCBzaG93biBpcyBmb3IgTG91aXN2aWxsZS1tZXRybyBjb3VudGllczsgb3V0bHlpbmcgY291bnRpZXMgbGlrZSBOZWxzb24gYW5kIEhhcmRpbiB1c2UgdGhlaXIgb3duIGxpbWl0cy4gRGV0YWlscyBhdCA8YSBocmVmPSJodHRwczovL2xvdWlzdmlsbGVyZWFsdG9ycy5jb20vZm91bmRhdGlvbiIgc3R5bGU9ImNvbG9yOiMxYTFhMWE7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsiPmxvdWlzdmlsbGVyZWFsdG9ycy5jb20vZm91bmRhdGlvbjwvYT4uIFdhbnQgaGVscCBhcHBseWluZz8gPGEgaHJlZj0iL3NjaGVkdWxpbmciIHN0eWxlPSJjb2xvcjojMWExYTFhO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Ij5UYWxrIHRvIGEgV2lubmVyIFJlYWx0eSBhZ2VudDwvYT4uPC9wPic7CgogICAgaHRtbCArPSAnPHAgc3R5bGU9ImNvbG9yOiM0YjRiNGI7Zm9udC1zaXplOjEzcHg7bWFyZ2luLXRvcDoxNnB4OyI+VGhpcyBpcyBhbiBlc3RpbWF0ZSwgbm90IGEgcHJlLWFwcHJvdmFsLiBQcm9ncmFtIGZ1bmRpbmcsIGV4YWN0IGNvdW50eSBpbmNvbWUgbGltaXRzLCBhbmQgcnVsZXMgY2hhbmdlIOKAlCBjb25maXJtIHdpdGggTG91aXN2aWxsZSBNZXRybyBHb3Zlcm5tZW50IG9yIGEgS0hDLWFwcHJvdmVkIGxlbmRlci48L3A+JzsKCiAgICB2YXIgcmVzdWx0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWRwYS1yZXN1bHQnKTsKICAgIHJlc3VsdERpdi5pbm5lckhUTUwgPSBodG1sOwogICAgcmVzdWx0RGl2LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogIH0pOwp9IGNhdGNoKGUpIHsgY29uc29sZS5lcnJvcignV1IgRFBBIHNjcmVlbmVyIGVycm9yJywgZSk7IH0KfSkoKTsKCihmdW5jdGlvbigpewp0cnkgewogIGlmICh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgIT09ICcvbG91aXN2aWxsZS1zaG9ydC10ZXJtLXJlbnRhbC1ydWxlcy1jaGVja2VyJykgcmV0dXJuOwogIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3Itc3RyLWNhbGMnKSkgcmV0dXJuOwogIHZhciBib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNiLWl0ZW0tdmlld19fYm9keScpOwogIGlmICghYm9keSkgcmV0dXJuOwogIGlmICghZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaDEnKSkgewogICAgdmFyIGgxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaDEnKTsKICAgIGgxLnRleHRDb250ZW50ID0gJ0xvdWlzdmlsbGUgU2hvcnQtVGVybSBSZW50YWwgUnVsZXMgQ2hlY2tlcjogRG8gWW91IE5lZWQgYSBQZXJtaXQ/ICgyMDI2KSc7CiAgICBoMS5zdHlsZS5jc3NUZXh0ID0gJ2NvbG9yOiMxYTFhMWE7Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MzZweDtsaW5lLWhlaWdodDoxLjI7bWFyZ2luOjAgMCAxNnB4IDA7JzsKICAgIGJvZHkucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaDEsIGJvZHkpOwogIH0KICB2YXIgbWFya2VyID0gbnVsbDsKICB2YXIgcHMgPSBib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJ3AnKTsKICBmb3IgKHZhciBpPTA7aTxwcy5sZW5ndGg7aSsrKXsgaWYgKHBzW2ldLnRleHRDb250ZW50LnRyaW0oKT09PSdDQUxDX01BUktFUicpeyBtYXJrZXIgPSBwc1tpXTsgYnJlYWs7IH0gfQogIGlmICghbWFya2VyKSByZXR1cm47CgogIHZhciBjYXJkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgY2FyZC5pZCA9ICd3ci1zdHItY2FsYyc7CiAgY2FyZC5zdHlsZS5jc3NUZXh0ID0gJ2JhY2tncm91bmQ6I2Y1ZjVmNDtjb2xvcjojMWExYTFhO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjI4cHg7bWFyZ2luOjAgMCAyNHB4IDA7bWF4LXdpZHRoOjY0MHB4Oyc7CiAgY2FyZC5pbm5lckhUTUwgPQogICAgJzxoMyBzdHlsZT0iY29sb3I6IzFhMWExYTtmb250LXNpemU6MjJweDtmb250LXdlaWdodDo3MDA7bWFyZ2luOjAgMCA2cHggMDsiPldoaWNoIHBlcm1pdCBwYXRoIGFwcGxpZXMgdG8geW91PzwvaDM+JyArCiAgICAnPHAgc3R5bGU9ImNvbG9yOiM0YjRiNGI7Zm9udC1zaXplOjE1cHg7bWFyZ2luOjAgMCAyMHB4IDA7Ij5CYXNlZCBvbiBMb3Vpc3ZpbGxlIE1ldHJvXCdzIGN1cnJlbnQgc2hvcnQtdGVybSByZW50YWwgb3JkaW5hbmNlLjwvcD4nICsKICAgICc8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjE2cHg7Ij48bGFiZWwgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Y29sb3I6IzFhMWExYTtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjE0cHg7bWFyZ2luLWJvdHRvbTo2cHg7Ij5XaGVyZSBpcyB0aGUgcHJvcGVydHk/PC9sYWJlbD4nICsKICAgICAgJzxzZWxlY3QgaWQ9IndyLXN0ci16b25lIiBzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjEwcHg7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6NnB4O2ZvbnQtc2l6ZToxNXB4O2NvbG9yOiMxYTFhMWE7YmFja2dyb3VuZDojZmZmO2JveC1zaXppbmc6Ym9yZGVyLWJveDsiPicgKwogICAgICAgICc8b3B0aW9uIHZhbHVlPSJyZXNpIj5Mb3Vpc3ZpbGxlIE1ldHJvIOKAlCBSZXNpZGVudGlhbCBvciBPZmZpY2UtUmVzaWRlbnRpYWwgem9uaW5nPC9vcHRpb24+JyArCiAgICAgICAgJzxvcHRpb24gdmFsdWU9Im9sZGxvdSI+TG91aXN2aWxsZSBNZXRybyDigJQgT2xkIExvdWlzdmlsbGUgb3IgTGltZXJpY2sgbmVpZ2hib3Job29kPC9vcHRpb24+JyArCiAgICAgICAgJzxvcHRpb24gdmFsdWU9Im5vbnJlc2kiPkxvdWlzdmlsbGUgTWV0cm8g4oCUIE5vbi1yZXNpZGVudGlhbCAoY29tbWVyY2lhbCkgem9uaW5nPC9vcHRpb24+JyArCiAgICAgICAgJzxvcHRpb24gdmFsdWU9ImluZHVzdHJpYWwiPkxvdWlzdmlsbGUgTWV0cm8g4oCUIEluZHVzdHJpYWwgb3IgUGxhbm5lZCBEZXZlbG9wbWVudCBkaXN0cmljdDwvb3B0aW9uPicgKwogICAgICAgICc8b3B0aW9uIHZhbHVlPSJvdXRzaWRlIj5Ob3QgaW4gTG91aXN2aWxsZSBNZXRybyDigJQgYSBzbWFsbCBpbmRlcGVuZGVudCBjaXR5IGluIEplZmZlcnNvbiBDb3VudHk8L29wdGlvbj4nICsKICAgICAgJzwvc2VsZWN0PjwvZGl2PicgKwogICAgJzxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MjBweDsiPjxsYWJlbCBzdHlsZT0iY29sb3I6IzFhMWExYTtmb250LXNpemU6MTRweDsiPjxpbnB1dCBpZD0id3Itc3RyLW93bmVyIiB0eXBlPSJjaGVja2JveCIgc3R5bGU9Im1hcmdpbi1yaWdodDo4cHg7Ij5JIGxpdmUgaW4gdGhpcyBwcm9wZXJ0eSAob3duZXItb2NjdXBpZWQsIDYrIG1vbnRocyk8L2xhYmVsPjwvZGl2PicgKwogICAgJzxidXR0b24gaWQ9IndyLXN0ci1jYWxjLWJ0biIgc3R5bGU9ImJhY2tncm91bmQ6IzFhMWExYTtjb2xvcjojZmZmO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6NnB4O3BhZGRpbmc6MTJweCAyNHB4O2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjYwMDtjdXJzb3I6cG9pbnRlcjsiPkNoZWNrIG15IHBlcm1pdCBwYXRoPC9idXR0b24+JyArCiAgICAnPGRpdiBpZD0id3Itc3RyLXJlc3VsdCIgc3R5bGU9ImRpc3BsYXk6bm9uZTttYXJnaW4tdG9wOjIwcHg7cGFkZGluZy10b3A6MjBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkOyI+PC9kaXY+JzsKICBtYXJrZXIucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoY2FyZCwgbWFya2VyKTsKCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLXN0ci1jYWxjLWJ0bicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHZhciB6b25lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLXN0ci16b25lJykudmFsdWU7CiAgICB2YXIgb3duZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3Itc3RyLW93bmVyJykuY2hlY2tlZDsKICAgIHZhciBodG1sID0gJyc7CgogICAgaWYgKHpvbmUgPT09ICdvdXRzaWRlJykgewogICAgICBodG1sICs9ICc8cCBzdHlsZT0iY29sb3I6IzkyNDAwZTtmb250LXdlaWdodDo2MDA7bWFyZ2luOjAgMCA4cHggMDsiPkxvdWlzdmlsbGUgTWV0cm9cJ3Mgb3JkaW5hbmNlIGRvZXMgbm90IGFwcGx5IGhlcmUuPC9wPic7CiAgICAgIGh0bWwgKz0gJzxwIHN0eWxlPSJjb2xvcjojNGI0YjRiO2ZvbnQtc2l6ZToxNHB4O21hcmdpbjowOyI+TmluZSBzbWFsbCBob21lLXJ1bGUgY2l0aWVzIGluIEplZmZlcnNvbiBDb3VudHkgYmFuIHNob3J0LXRlcm0gcmVudGFscyBvdXRyaWdodCwgYW5kIHRocmVlIG1vcmUgaGF2ZSB0aGVpciBvd24gc2VwYXJhdGUgU1RSIHJ1bGVzLiBDaGVjayBkaXJlY3RseSB3aXRoIHRoYXQgY2l0eVwncyBvd24gY29kZSBlbmZvcmNlbWVudCBvciBwbGFubmluZyBvZmZpY2UgYmVmb3JlIHlvdSBsaXN0IOKAlCBkb25cJ3QgYXNzdW1lIExvdWlzdmlsbGUgTWV0cm9cJ3MgcnVsZXMgY2Fycnkgb3Zlci48L3A+JzsKICAgIH0gZWxzZSBpZiAoem9uZSA9PT0gJ2luZHVzdHJpYWwnKSB7CiAgICAgIGh0bWwgKz0gJzxwIHN0eWxlPSJjb2xvcjojOTkxYjFiO2ZvbnQtd2VpZ2h0OjYwMDttYXJnaW46MCAwIDhweCAwOyI+TGlrZWx5IHByb2hpYml0ZWQuPC9wPic7CiAgICAgIGh0bWwgKz0gJzxwIHN0eWxlPSJjb2xvcjojNGI0YjRiO2ZvbnQtc2l6ZToxNHB4O21hcmdpbjowOyI+U2hvcnQtdGVybSByZW50YWxzIGFyZSBsaWtlbHkgbm90IGFsbG93ZWQgaW4gSW5kdXN0cmlhbCBvciBQbGFubmVkIERldmVsb3BtZW50IGRpc3RyaWN0cyB1bmRlciBMb3Vpc3ZpbGxlIE1ldHJvXCdzIG9yZGluYW5jZS48L3A+JzsKICAgIH0gZWxzZSBpZiAoem9uZSA9PT0gJ29sZGxvdScpIHsKICAgICAgaHRtbCArPSAnPHAgc3R5bGU9ImNvbG9yOiMxYTFhMWE7Zm9udC13ZWlnaHQ6NzAwO21hcmdpbjowIDAgOHB4IDA7Ij5Db25kaXRpb25hbCBVc2UgUGVybWl0ICsgYW5udWFsIHJlZ2lzdHJhdGlvbiByZXF1aXJlZC48L3A+JzsKICAgICAgaHRtbCArPSAnPHAgc3R5bGU9ImNvbG9yOiM0YjRiNGI7Zm9udC1zaXplOjE0cHg7bWFyZ2luOjA7Ij5PbGQgTG91aXN2aWxsZSBhbmQgTGltZXJpY2sgZG9uXCd0IGdldCB0aGUgb3duZXItb2NjdXBpZWQgc2hvcnRjdXQg4oCUIGV2ZXJ5IFNUUiB0aGVyZSBuZWVkcyBhIENVUCwgZXZlbiBpZiB5b3UgbGl2ZSBpbiBpdCBmdWxsLXRpbWUuIFByZS1hcHBsaWNhdGlvbiBmZWU6ICQyMDAuIEZvcm1hbCBhcHBsaWNhdGlvbjogJCcgKyAob3duZXIgPyAnNTYwIChvd25lci1vY2N1cGllZCknIDogJzEsMjYwIChub24tb3duZXItb2NjdXBpZWQpJykgKyAnLiBCdWRnZXQgcm91Z2hseSA2IG1vbnRocy4gTmV3IENVUC1hcHByb3ZlZCBTVFJzIGdlbmVyYWxseSBuZWVkIHRvIGJlIGF0IGxlYXN0IDYwMCBmZWV0IGZyb20gYW5vdGhlciBTVFIgdGhhdCBhbHJlYWR5IGhhcyBvbmUuPC9wPic7CiAgICB9IGVsc2UgaWYgKHpvbmUgPT09ICdub25yZXNpJykgewogICAgICBodG1sICs9ICc8cCBzdHlsZT0iY29sb3I6IzE2NjUzNDtmb250LXdlaWdodDo2MDA7bWFyZ2luOjAgMCA4cHggMDsiPkFkbWluaXN0cmF0aXZlIHJlZ2lzdHJhdGlvbiBsaWtlbHkgcGVybWl0dGVkLjwvcD4nOwogICAgICBodG1sICs9ICc8cCBzdHlsZT0iY29sb3I6IzRiNGI0Yjtmb250LXNpemU6MTRweDttYXJnaW46MDsiPk5vbi1yZXNpZGVudGlhbCB6b25pbmcgZ2VuZXJhbGx5IGFsbG93cyBhIG1vcmUgc3RyYWlnaHRmb3J3YXJkIHJlZ2lzdHJhdGlvbiBwYXRoLCB0aG91Z2ggaXRcJ3Mgd29ydGggY29uZmlybWluZyB5b3VyIGV4YWN0IHBhcmNlbFwncyB6b25pbmcgd2l0aCBQbGFubmluZyAmIERlc2lnbiBTZXJ2aWNlcyBiZWZvcmUgeW91IGNvbW1pdC48L3A+JzsKICAgIH0gZWxzZSB7CiAgICAgIGlmIChvd25lcikgewogICAgICAgIGh0bWwgKz0gJzxwIHN0eWxlPSJjb2xvcjojMTY2NTM0O2ZvbnQtd2VpZ2h0OjYwMDttYXJnaW46MCAwIDhweCAwOyI+QWRtaW5pc3RyYXRpdmUgcmVnaXN0cmF0aW9uIOKAlCBubyBwdWJsaWMgaGVhcmluZyBuZWVkZWQuPC9wPic7CiAgICAgICAgaHRtbCArPSAnPHAgc3R5bGU9ImNvbG9yOiM0YjRiNGI7Zm9udC1zaXplOjE0cHg7bWFyZ2luOjA7Ij5BcyBhbiBvd25lci1vY2N1cGFudCBpbiBzdGFuZGFyZCByZXNpZGVudGlhbC9vZmZpY2UtcmVzaWRlbnRpYWwgem9uaW5nLCB5b3UgY2FuIHJlZ2lzdGVyIGFkbWluaXN0cmF0aXZlbHk6ICQyNTAgYXBwbGljYXRpb24gZmVlLCBwbHVzIGRvY3VtZW50YXRpb24gc2hvd2luZyB5b3VcJ3ZlIGFjdHVhbGx5IGxpdmVkIHRoZXJlIChnZW5lcmFsbHkgYXQgbGVhc3QgNiBtb250aHMpLjwvcD4nOwogICAgICB9IGVsc2UgewogICAgICAgIGh0bWwgKz0gJzxwIHN0eWxlPSJjb2xvcjojMWExYTFhO2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW46MCAwIDhweCAwOyI+Q29uZGl0aW9uYWwgVXNlIFBlcm1pdCArIGFubnVhbCByZWdpc3RyYXRpb24gcmVxdWlyZWQuPC9wPic7CiAgICAgICAgaHRtbCArPSAnPHAgc3R5bGU9ImNvbG9yOiM0YjRiNGI7Zm9udC1zaXplOjE0cHg7bWFyZ2luOjA7Ij5Ob24tb3duZXItb2NjdXBpZWQgaW4gcmVzaWRlbnRpYWwvb2ZmaWNlLXJlc2lkZW50aWFsIHpvbmluZyBuZWVkcyBhIGRpc2NyZXRpb25hcnkgQ1VQIHRocm91Z2ggYSBwdWJsaWMgaGVhcmluZy4gUHJlLWFwcGxpY2F0aW9uIGZlZTogJDIwMC4gRm9ybWFsIGFwcGxpY2F0aW9uOiAkMSwyNjAuIEJ1ZGdldCByb3VnaGx5IDYgbW9udGhzLiBOZXcgQ1VQLWFwcHJvdmVkIFNUUnMgZ2VuZXJhbGx5IG5lZWQgdG8gYmUgYXQgbGVhc3QgNjAwIGZlZXQgZnJvbSBhbm90aGVyIFNUUiB0aGF0IGFscmVhZHkgaGFzIG9uZS48L3A+JzsKICAgICAgfQogICAgfQoKICAgIGh0bWwgKz0gJzxwIHN0eWxlPSJjb2xvcjojNGI0YjRiO2ZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6MTZweDsiPlRoaXMgaXMgYSBnZW5lcmFsIGd1aWRlLCBub3QgYSBwZXJtaXQgZGV0ZXJtaW5hdGlvbi4gQ29uZmlybSB5b3VyIHBhcmNlbFwncyBleGFjdCB6b25pbmcgYW5kIGN1cnJlbnQgZmVlcyB3aXRoIExvdWlzdmlsbGUgTWV0cm8gUGxhbm5pbmcgJiBEZXNpZ24gU2VydmljZXMgYmVmb3JlIGFwcGx5aW5nLjwvcD4nOwoKICAgIHZhciByZXN1bHREaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3Itc3RyLXJlc3VsdCcpOwogICAgcmVzdWx0RGl2LmlubmVySFRNTCA9IGh0bWw7CiAgICByZXN1bHREaXYuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgfSk7Cn0gY2F0Y2goZSkgeyBjb25zb2xlLmVycm9yKCdXUiBTVFIgY2hlY2tlciBlcnJvcicsIGUpOyB9Cn0pKCk7CgooZnVuY3Rpb24oKSB7CiAgaWYgKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5pbmRleE9mKCdjYXBpdGFsLWdhaW5zLTEwMzEtZXhjaGFuZ2UtZXN0aW1hdG9yJykgPT09IC0xKSByZXR1cm47CgogIGZ1bmN0aW9uIGZtdChuKSB7CiAgICByZXR1cm4gJyQnICsgTWF0aC5yb3VuZChuKS50b0xvY2FsZVN0cmluZygnZW4tVVMnKTsKICB9CgogIGZ1bmN0aW9uIGx0Y2dUYXgob3RoZXJJbmNvbWUsIGdhaW4sIGZpbGluZykgewogICAgdmFyIGIgPSBmaWxpbmcgPT09ICdtZmonCiAgICAgID8gW1swLDk4OTAwLDBdLFs5ODkwMCw2MTM3MDAsMC4xNV0sWzYxMzcwMCxJbmZpbml0eSwwLjIwXV0KICAgICAgOiBbWzAsNDk0NTAsMF0sWzQ5NDUwLDU0NTUwMCwwLjE1XSxbNTQ1NTAwLEluZmluaXR5LDAuMjBdXTsKICAgIHZhciBzdGFja1N0YXJ0ID0gb3RoZXJJbmNvbWUsIHN0YWNrRW5kID0gb3RoZXJJbmNvbWUgKyBnYWluLCB0YXggPSAwOwogICAgZm9yICh2YXIgaT0wO2k8Yi5sZW5ndGg7aSsrKXsKICAgICAgdmFyIGxvPWJbaV1bMF0sIGhpPWJbaV1bMV0sIHJhdGU9YltpXVsyXTsKICAgICAgdmFyIG92ZXJsYXBMbyA9IE1hdGgubWF4KHN0YWNrU3RhcnQsIGxvKSwgb3ZlcmxhcEhpID0gTWF0aC5taW4oc3RhY2tFbmQsIGhpKTsKICAgICAgaWYgKG92ZXJsYXBIaSA+IG92ZXJsYXBMbykgdGF4ICs9IChvdmVybGFwSGkgLSBvdmVybGFwTG8pICogcmF0ZTsKICAgIH0KICAgIHJldHVybiB0YXg7CiAgfQoKICBmdW5jdGlvbiBidWlsZEZvcm0oKSB7CiAgICB2YXIgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgd3JhcC5pZCA9ICd3ci1jZy1jYWxjJzsKICAgIHdyYXAuc2V0QXR0cmlidXRlKCdzdHlsZScsICdiYWNrZ3JvdW5kOiByZ2IoMjQ1LCAyNDUsIDI0NCk7IGNvbG9yOiByZ2IoMjYsIDI2LCAyNik7IGJvcmRlci1yYWRpdXM6IDEycHg7IHBhZGRpbmc6IDI4cHg7IG1hcmdpbjogMHB4IDBweCAyNHB4OyBtYXgtd2lkdGg6IDY0MHB4OycpOwogICAgdmFyIGxhYmVsU3R5bGUgPSAnZGlzcGxheTpibG9jaztjb2xvcjojMWExYTFhO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTRweDttYXJnaW4tYm90dG9tOjZweDsnOwogICAgdmFyIGlucHV0U3R5bGUgPSAnd2lkdGg6MTAwJTtwYWRkaW5nOjEwcHg7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6NnB4O2ZvbnQtc2l6ZToxNXB4O2NvbG9yOiMxYTFhMWE7YmFja2dyb3VuZDojZmZmO2JveC1zaXppbmc6Ym9yZGVyLWJveDsnOwogICAgdmFyIHJvd1N0eWxlID0gJ21hcmdpbi1ib3R0b206MTZweDsnOwogICAgdmFyIGNoZWNrYm94TGFiZWxTdHlsZSA9ICdjb2xvcjojMWExYTFhO2ZvbnQtc2l6ZToxNHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7JzsKICAgIHdyYXAuaW5uZXJIVE1MID0KICAgICAgJzxoMyBzdHlsZT0iY29sb3I6IzFhMWExYTtmb250LXNpemU6MjJweDtmb250LXdlaWdodDo3MDA7bWFyZ2luOjAgMCA2cHggMDsiPkVzdGltYXRlIHlvdXIgY2FwaXRhbCBnYWlucyB0YXg8L2gzPicgKwogICAgICAnPHAgc3R5bGU9ImNvbG9yOiM0YjRiNGI7Zm9udC1zaXplOjE1cHg7bWFyZ2luOjAgMCAyMHB4IDA7Ij5BIHJvdWdoIGVzdGltYXRlIGZvciBhIEtlbnR1Y2t5IHNhbGUuIE5vdCBhIHN1YnN0aXR1dGUgZm9yIGEgQ1BBLjwvcD4nICsKICAgICAgJzxkaXYgc3R5bGU9IicgKyByb3dTdHlsZSArICciPicgKwogICAgICAgICc8bGFiZWwgZm9yPSJ3ci1jZy10eXBlIiBzdHlsZT0iJyArIGxhYmVsU3R5bGUgKyAnIj5XaGF0IGFyZSB5b3Ugc2VsbGluZz88L2xhYmVsPicgKwogICAgICAgICc8c2VsZWN0IGlkPSJ3ci1jZy10eXBlIiBzdHlsZT0iJyArIGlucHV0U3R5bGUgKyAnIj4nICsKICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJwcmltYXJ5Ij5NeSBwcmltYXJ5IHJlc2lkZW5jZTwvb3B0aW9uPicgKwogICAgICAgICAgJzxvcHRpb24gdmFsdWU9ImludmVzdG1lbnQiPkFuIGludmVzdG1lbnQgLyByZW50YWwgcHJvcGVydHk8L29wdGlvbj4nICsKICAgICAgICAnPC9zZWxlY3Q+JyArCiAgICAgICc8L2Rpdj4nICsKICAgICAgJzxkaXYgc3R5bGU9IicgKyByb3dTdHlsZSArICciPicgKwogICAgICAgICc8bGFiZWwgZm9yPSJ3ci1jZy1zYWxlIiBzdHlsZT0iJyArIGxhYmVsU3R5bGUgKyAnIj5TYWxlIHByaWNlPC9sYWJlbD4nICsKICAgICAgICAnPGlucHV0IHR5cGU9Im51bWJlciIgaWQ9IndyLWNnLXNhbGUiIHBsYWNlaG9sZGVyPSJlLmcuIDQwMDAwMCIgc3R5bGU9IicgKyBpbnB1dFN0eWxlICsgJyI+JyArCiAgICAgICc8L2Rpdj4nICsKICAgICAgJzxkaXYgc3R5bGU9IicgKyByb3dTdHlsZSArICciPicgKwogICAgICAgICc8bGFiZWwgZm9yPSJ3ci1jZy1zZWxsY29zdCIgc3R5bGU9IicgKyBsYWJlbFN0eWxlICsgJyI+U2VsbGluZyBjb3N0cyAoY29tbWlzc2lvbiwgY2xvc2luZyBjb3N0cyk8L2xhYmVsPicgKwogICAgICAgICc8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0id3ItY2ctc2VsbGNvc3QiIHBsYWNlaG9sZGVyPSJlLmcuIDI4MDAwIiBzdHlsZT0iJyArIGlucHV0U3R5bGUgKyAnIj4nICsKICAgICAgJzwvZGl2PicgKwogICAgICAnPGRpdiBzdHlsZT0iJyArIHJvd1N0eWxlICsgJyI+JyArCiAgICAgICAgJzxsYWJlbCBmb3I9IndyLWNnLWJhc2lzIiBzdHlsZT0iJyArIGxhYmVsU3R5bGUgKyAnIj5PcmlnaW5hbCBwdXJjaGFzZSBwcmljZSArIGJ1eWluZyBjb3N0czwvbGFiZWw+JyArCiAgICAgICAgJzxpbnB1dCB0eXBlPSJudW1iZXIiIGlkPSJ3ci1jZy1iYXNpcyIgcGxhY2Vob2xkZXI9ImUuZy4gMjUwMDAwIiBzdHlsZT0iJyArIGlucHV0U3R5bGUgKyAnIj4nICsKICAgICAgJzwvZGl2PicgKwogICAgICAnPGRpdiBzdHlsZT0iJyArIHJvd1N0eWxlICsgJyI+JyArCiAgICAgICAgJzxsYWJlbCBmb3I9IndyLWNnLWltcHJvdmVtZW50cyIgc3R5bGU9IicgKyBsYWJlbFN0eWxlICsgJyI+Q2FwaXRhbCBpbXByb3ZlbWVudHMgc2luY2UgcHVyY2hhc2U8L2xhYmVsPicgKwogICAgICAgICc8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0id3ItY2ctaW1wcm92ZW1lbnRzIiBwbGFjZWhvbGRlcj0iZS5nLiAyMDAwMCIgc3R5bGU9IicgKyBpbnB1dFN0eWxlICsgJyI+JyArCiAgICAgICc8L2Rpdj4nICsKICAgICAgJzxkaXYgaWQ9IndyLWNnLWRlcC1yb3ciIHN0eWxlPSInICsgcm93U3R5bGUgKyAnIj4nICsKICAgICAgICAnPGxhYmVsIGZvcj0id3ItY2ctZGVwcmVjaWF0aW9uIiBzdHlsZT0iJyArIGxhYmVsU3R5bGUgKyAnIj5Ub3RhbCBkZXByZWNpYXRpb24gdGFrZW4gd2hpbGUgcmVudGluZyBpdDwvbGFiZWw+JyArCiAgICAgICAgJzxpbnB1dCB0eXBlPSJudW1iZXIiIGlkPSJ3ci1jZy1kZXByZWNpYXRpb24iIHBsYWNlaG9sZGVyPSJlLmcuIDQ1MDAwIiBzdHlsZT0iJyArIGlucHV0U3R5bGUgKyAnIj4nICsKICAgICAgJzwvZGl2PicgKwogICAgICAnPGRpdiBzdHlsZT0iJyArIHJvd1N0eWxlICsgJyI+JyArCiAgICAgICAgJzxsYWJlbCBmb3I9IndyLWNnLW90aGVyaW5jb21lIiBzdHlsZT0iJyArIGxhYmVsU3R5bGUgKyAnIj5Zb3VyIG90aGVyIHRheGFibGUgaW5jb21lIHRoaXMgeWVhcjwvbGFiZWw+JyArCiAgICAgICAgJzxpbnB1dCB0eXBlPSJudW1iZXIiIGlkPSJ3ci1jZy1vdGhlcmluY29tZSIgcGxhY2Vob2xkZXI9ImUuZy4gOTAwMDAiIHN0eWxlPSInICsgaW5wdXRTdHlsZSArICciPicgKwogICAgICAnPC9kaXY+JyArCiAgICAgICc8ZGl2IHN0eWxlPSInICsgcm93U3R5bGUgKyAnIj4nICsKICAgICAgICAnPGxhYmVsIGZvcj0id3ItY2ctZmlsaW5nIiBzdHlsZT0iJyArIGxhYmVsU3R5bGUgKyAnIj5GaWxpbmcgc3RhdHVzPC9sYWJlbD4nICsKICAgICAgICAnPHNlbGVjdCBpZD0id3ItY2ctZmlsaW5nIiBzdHlsZT0iJyArIGlucHV0U3R5bGUgKyAnIj4nICsKICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJzaW5nbGUiPlNpbmdsZTwvb3B0aW9uPicgKwogICAgICAgICAgJzxvcHRpb24gdmFsdWU9Im1maiI+TWFycmllZCBmaWxpbmcgam9pbnRseTwvb3B0aW9uPicgKwogICAgICAgICc8L3NlbGVjdD4nICsKICAgICAgJzwvZGl2PicgKwogICAgICAnPGRpdiBpZD0id3ItY2ctcHJpbWFyeS1yb3ciIHN0eWxlPSInICsgcm93U3R5bGUgKyAnIj4nICsKICAgICAgICAnPGxhYmVsIHN0eWxlPSInICsgY2hlY2tib3hMYWJlbFN0eWxlICsgJyI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0id3ItY2ctcHJpbWFyeWNoZWNrIiBjaGVja2VkIHN0eWxlPSJtYXJnaW4tcmlnaHQ6OHB4OyI+IEkgb3duZWQgYW5kIGxpdmVkIGluIHRoaXMgaG9tZSBmb3IgYXQgbGVhc3QgMiBvZiB0aGUgbGFzdCA1IHllYXJzPC9sYWJlbD4nICsKICAgICAgJzwvZGl2PicgKwogICAgICAnPGRpdiBpZD0id3ItY2ctMTAzMS1yb3ciIHN0eWxlPSInICsgcm93U3R5bGUgKyAnIj4nICsKICAgICAgICAnPGxhYmVsIHN0eWxlPSInICsgY2hlY2tib3hMYWJlbFN0eWxlICsgJyI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0id3ItY2ctMTAzMSIgc3R5bGU9Im1hcmdpbi1yaWdodDo4cHg7Ij4gSVwnbSBjb25zaWRlcmluZyBhIDEwMzEgZXhjaGFuZ2UgaW5zdGVhZCBvZiBzZWxsaW5nIG91dHJpZ2h0PC9sYWJlbD4nICsKICAgICAgJzwvZGl2PicgKwogICAgICAnPGJ1dHRvbiBpZD0id3ItY2ctY2FsYy1idG4iIHN0eWxlPSJiYWNrZ3JvdW5kOiMxYTFhMWE7Y29sb3I6I2ZmZjtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjZweDtwYWRkaW5nOjEycHggMjRweDtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo2MDA7Y3Vyc29yOnBvaW50ZXI7Ij5Fc3RpbWF0ZSBteSB0YXg8L2J1dHRvbj4nICsKICAgICAgJzxkaXYgaWQ9IndyLWNnLXJlc3VsdCIgc3R5bGU9ImRpc3BsYXk6bm9uZTttYXJnaW4tdG9wOjIwcHg7cGFkZGluZy10b3A6MjBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkOyI+PC9kaXY+JzsKICAgIHJldHVybiB3cmFwOwogIH0KCiAgZnVuY3Rpb24gaW5pdENHQ2FsYygpIHsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItY2ctY2FsYycpKSByZXR1cm47CiAgICB2YXIgcHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwJyk7CiAgICB2YXIgbWFya2VyID0gbnVsbDsKICAgIGZvciAodmFyIGk9MDtpPHBzLmxlbmd0aDtpKyspIHsKICAgICAgaWYgKHBzW2ldLnRleHRDb250ZW50LnRyaW0oKSA9PT0gJ0NBTENfTUFSS0VSJykgeyBtYXJrZXIgPSBwc1tpXTsgYnJlYWs7IH0KICAgIH0KICAgIGlmICghbWFya2VyKSByZXR1cm47CiAgICB2YXIgY29udGFpbmVyID0gYnVpbGRGb3JtKCk7CiAgICBtYXJrZXIucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoY29udGFpbmVyLCBtYXJrZXIpOwoKICAgIGZ1bmN0aW9uIHRvZ2dsZUZpZWxkcygpIHsKICAgICAgdmFyIHR5cGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItY2ctdHlwZScpLnZhbHVlOwogICAgICB2YXIgZGVwUm93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWNnLWRlcC1yb3cnKTsKICAgICAgdmFyIHByaW1hcnlSb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItY2ctcHJpbWFyeS1yb3cnKTsKICAgICAgdmFyIHJvdzEwMzEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItY2ctMTAzMS1yb3cnKTsKICAgICAgaWYgKHR5cGUgPT09ICdpbnZlc3RtZW50JykgewogICAgICAgIGRlcFJvdy5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAgcHJpbWFyeVJvdy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIHJvdzEwMzEuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICB9IGVsc2UgewogICAgICAgIGRlcFJvdy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIHByaW1hcnlSb3cuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgIHJvdzEwMzEuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgfQogICAgfQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWNnLXR5cGUnKS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB0b2dnbGVGaWVsZHMpOwogICAgdG9nZ2xlRmllbGRzKCk7CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWNnLWNhbGMtYnRuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgdmFyIHR5cGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItY2ctdHlwZScpLnZhbHVlOwogICAgICB2YXIgc2FsZSA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWNnLXNhbGUnKS52YWx1ZSkgfHwgMDsKICAgICAgdmFyIHNlbGxDb3N0ID0gcGFyc2VGbG9hdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItY2ctc2VsbGNvc3QnKS52YWx1ZSkgfHwgMDsKICAgICAgdmFyIGJhc2lzID0gcGFyc2VGbG9hdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItY2ctYmFzaXMnKS52YWx1ZSkgfHwgMDsKICAgICAgdmFyIGltcHJvdmVtZW50cyA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWNnLWltcHJvdmVtZW50cycpLnZhbHVlKSB8fCAwOwogICAgICB2YXIgZGVwcmVjaWF0aW9uID0gdHlwZSA9PT0gJ2ludmVzdG1lbnQnID8gKHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWNnLWRlcHJlY2lhdGlvbicpLnZhbHVlKSB8fCAwKSA6IDA7CiAgICAgIHZhciBvdGhlckluY29tZSA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWNnLW90aGVyaW5jb21lJykudmFsdWUpIHx8IDA7CiAgICAgIHZhciBmaWxpbmcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItY2ctZmlsaW5nJykudmFsdWU7CiAgICAgIHZhciBtZWV0c1ByaW1hcnlUZXN0ID0gdHlwZSA9PT0gJ3ByaW1hcnknICYmIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1jZy1wcmltYXJ5Y2hlY2snKS5jaGVja2VkOwogICAgICB2YXIgY29uc2lkZXJpbmcxMDMxID0gdHlwZSA9PT0gJ2ludmVzdG1lbnQnICYmIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1jZy0xMDMxJykuY2hlY2tlZDsKCiAgICAgIHZhciBhbW91bnRSZWFsaXplZCA9IHNhbGUgLSBzZWxsQ29zdDsKICAgICAgdmFyIGFkanVzdGVkQmFzaXMgPSBiYXNpcyArIGltcHJvdmVtZW50cyAtIGRlcHJlY2lhdGlvbjsKICAgICAgdmFyIHRvdGFsR2FpbiA9IE1hdGgubWF4KDAsIGFtb3VudFJlYWxpemVkIC0gYWRqdXN0ZWRCYXNpcyk7CgogICAgICB2YXIgcmVzdWx0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWNnLXJlc3VsdCcpOwogICAgICB2YXIgaHRtbCA9ICcnOwoKICAgICAgaWYgKGNvbnNpZGVyaW5nMTAzMSkgewogICAgICAgIGh0bWwgKz0gJzxkaXYgc3R5bGU9ImJhY2tncm91bmQ6I2VhZjVlZTtib3JkZXI6MXB4IHNvbGlkICNiZmUzY2M7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoxNnB4O21hcmdpbi1ib3R0b206MTZweDsiPicgKwogICAgICAgICAgJzxoNCBzdHlsZT0ibWFyZ2luOjAgMCA4cHggMDtjb2xvcjojMWExYTFhO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjcwMDsiPldpdGggYSAxMDMxIGV4Y2hhbmdlPC9oND4nICsKICAgICAgICAgICc8cCBzdHlsZT0ibWFyZ2luOjA7Y29sb3I6IzMzMztmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjU7Ij5Sb2xsIHRoZSBmdWxsICcgKyBmbXQoYW1vdW50UmVhbGl6ZWQpICsgJyBpbiBwcm9jZWVkcyBpbnRvIGEgcXVhbGlmaWVkIHJlcGxhY2VtZW50IHByb3BlcnR5IG9mIGVxdWFsIG9yIGdyZWF0ZXIgdmFsdWUsIHRocm91Z2ggYSBxdWFsaWZpZWQgaW50ZXJtZWRpYXJ5LCB3aXRoaW4gdGhlIDQ1LWRheSBpZGVudGlmaWNhdGlvbiBhbmQgMTgwLWRheSBjbG9zaW5nIHdpbmRvd3MsIGFuZCB5b3VyIGNhcGl0YWwgZ2FpbnMgdGF4IG9uIHRoaXMgc2FsZSBjYW4gcG90ZW50aWFsbHkgYmUgZGVmZXJyZWQgdG8gJDAgZHVlIG5vdy4gR2FpbiBkZWZlcnJlZDogJyArIGZtdCh0b3RhbEdhaW4pICsgJy4gVGhpcyBkZWZlcnMgdGhlIHRheCwgaXQgZG9lcyBub3QgZWxpbWluYXRlIGl0IFx1MjAxNCBpdCBjYXJyaWVzIGludG8gdGhlIHJlcGxhY2VtZW50IHByb3BlcnR5XHUyMDE5cyBiYXNpcy48L3A+JyArCiAgICAgICAgICAnPC9kaXY+JzsKICAgICAgfQoKICAgICAgdmFyIHJlY2FwdHVyZSA9IE1hdGgubWluKGRlcHJlY2lhdGlvbiwgdG90YWxHYWluKTsKICAgICAgdmFyIHJlY2FwdHVyZVRheCA9IHJlY2FwdHVyZSAqIDAuMjU7CiAgICAgIHZhciByZW1haW5pbmdHYWluID0gdG90YWxHYWluIC0gcmVjYXB0dXJlOwogICAgICB2YXIgZXhjbHVzaW9uID0gKHR5cGUgPT09ICdwcmltYXJ5JyAmJiBtZWV0c1ByaW1hcnlUZXN0KSA/IChmaWxpbmcgPT09ICdtZmonID8gNTAwMDAwIDogMjUwMDAwKSA6IDA7CiAgICAgIHZhciB0YXhhYmxlR2FpbiA9IE1hdGgubWF4KDAsIHJlbWFpbmluZ0dhaW4gLSBleGNsdXNpb24pOwogICAgICB2YXIgZmVkTHRjZ1RheCA9IGx0Y2dUYXgob3RoZXJJbmNvbWUsIHRheGFibGVHYWluLCBmaWxpbmcpOwogICAgICB2YXIgbmlpdFRocmVzaG9sZCA9IGZpbGluZyA9PT0gJ21maicgPyAyNTAwMDAgOiAyMDAwMDA7CiAgICAgIHZhciBtYWdpV2l0aEdhaW4gPSBvdGhlckluY29tZSArIHRheGFibGVHYWluOwogICAgICB2YXIgbmlpdEJhc2UgPSBNYXRoLm1heCgwLCBNYXRoLm1pbih0YXhhYmxlR2FpbiwgbWFnaVdpdGhHYWluIC0gbmlpdFRocmVzaG9sZCkpOwogICAgICB2YXIgbmlpdFRheCA9IG5paXRCYXNlICogMC4wMzg7CiAgICAgIHZhciBreVRheCA9ICh0YXhhYmxlR2FpbiArIHJlY2FwdHVyZSkgKiAwLjAzNTsKICAgICAgdmFyIHRvdGFsVGF4ID0gcmVjYXB0dXJlVGF4ICsgZmVkTHRjZ1RheCArIG5paXRUYXggKyBreVRheDsKCiAgICAgIGh0bWwgKz0gJzxoNCBzdHlsZT0ibWFyZ2luOjAgMCAxMnB4IDA7Y29sb3I6IzFhMWExYTtmb250LXNpemU6MThweDtmb250LXdlaWdodDo3MDA7Ij4nICsgKGNvbnNpZGVyaW5nMTAzMSA/ICdJZiB5b3Ugc29sZCBvdXRyaWdodCBpbnN0ZWFkJyA6ICdFc3RpbWF0ZWQgdGF4IG9uIHRoaXMgc2FsZScpICsgJzwvaDQ+JyArCiAgICAgICAgJzxwIHN0eWxlPSJtYXJnaW46MCAwIDZweCAwO2NvbG9yOiMxYTFhMWE7Zm9udC1zaXplOjE1cHg7Ij5Ub3RhbCBnYWluOiA8c3Ryb25nPicgKyBmbXQodG90YWxHYWluKSArICc8L3N0cm9uZz48L3A+JyArCiAgICAgICAgKGV4Y2x1c2lvbiA+IDAgPyAnPHAgc3R5bGU9Im1hcmdpbjowIDAgNnB4IDA7Y29sb3I6IzFhMWExYTtmb250LXNpemU6MTVweDsiPlNlY3Rpb24gMTIxIGV4Y2x1c2lvbiBhcHBsaWVkOiA8c3Ryb25nIHN0eWxlPSJjb2xvcjojMWU3YTNkOyI+LScgKyBmbXQoTWF0aC5taW4oZXhjbHVzaW9uLCByZW1haW5pbmdHYWluKSkgKyAnPC9zdHJvbmc+PC9wPicgOiAnJykgKwogICAgICAgICc8cCBzdHlsZT0ibWFyZ2luOjAgMCA2cHggMDtjb2xvcjojMWExYTFhO2ZvbnQtc2l6ZToxNXB4OyI+VGF4YWJsZSBnYWluIGFmdGVyIGV4Y2x1c2lvbjogPHN0cm9uZz4nICsgZm10KHRheGFibGVHYWluKSArICc8L3N0cm9uZz48L3A+JyArCiAgICAgICAgJzxociBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZDttYXJnaW46MTJweCAwOyI+JyArCiAgICAgICAgKHJlY2FwdHVyZSA+IDAgPyAnPHAgc3R5bGU9Im1hcmdpbjowIDAgNnB4IDA7Y29sb3I6IzFhMWExYTtmb250LXNpemU6MTVweDsiPkRlcHJlY2lhdGlvbiByZWNhcHR1cmUgdGF4ICgyNSUgb2YgJyArIGZtdChyZWNhcHR1cmUpICsgJyk6IDxzdHJvbmc+JyArIGZtdChyZWNhcHR1cmVUYXgpICsgJzwvc3Ryb25nPjwvcD4nIDogJycpICsKICAgICAgICAnPHAgc3R5bGU9Im1hcmdpbjowIDAgNnB4IDA7Y29sb3I6IzFhMWExYTtmb250LXNpemU6MTVweDsiPkZlZGVyYWwgbG9uZy10ZXJtIGNhcGl0YWwgZ2FpbnMgdGF4OiA8c3Ryb25nPicgKyBmbXQoZmVkTHRjZ1RheCkgKyAnPC9zdHJvbmc+PC9wPicgKwogICAgICAgIChuaWl0VGF4ID4gMCA/ICc8cCBzdHlsZT0ibWFyZ2luOjAgMCA2cHggMDtjb2xvcjojMWExYTFhO2ZvbnQtc2l6ZToxNXB4OyI+TmV0IEludmVzdG1lbnQgSW5jb21lIFRheCAoMy44JSk6IDxzdHJvbmc+JyArIGZtdChuaWl0VGF4KSArICc8L3N0cm9uZz48L3A+JyA6ICcnKSArCiAgICAgICAgJzxwIHN0eWxlPSJtYXJnaW46MCAwIDZweCAwO2NvbG9yOiMxYTFhMWE7Zm9udC1zaXplOjE1cHg7Ij5LZW50dWNreSBzdGF0ZSB0YXggKDMuNSUgZmxhdCk6IDxzdHJvbmc+JyArIGZtdChreVRheCkgKyAnPC9zdHJvbmc+PC9wPicgKwogICAgICAgICc8aHIgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7bWFyZ2luOjEycHggMDsiPicgKwogICAgICAgICc8cCBzdHlsZT0ibWFyZ2luOjA7Y29sb3I6IzFhMWExYTtmb250LXNpemU6MThweDsiPkVzdGltYXRlZCB0b3RhbCB0YXg6IDxzdHJvbmc+JyArIGZtdCh0b3RhbFRheCkgKyAnPC9zdHJvbmc+PC9wPicgKwogICAgICAgICc8cCBzdHlsZT0ibWFyZ2luOjEycHggMCAwIDA7Y29sb3I6IzRiNGI0Yjtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjU7Ij5UaGlzIGlzIGFuIGVkdWNhdGlvbmFsIGVzdGltYXRlLCBub3QgYSB0YXggcmV0dXJuLiBJdCBkb2VzIG5vdCBhY2NvdW50IGZvciBBTVQsIHN0YXRlLXNwZWNpZmljIGRlcHJlY2lhdGlvbiBhZGQtYmFja3MsIHBhc3NpdmUgYWN0aXZpdHkgbG9zcyBydWxlcywgb3IgeW91ciBmdWxsIHRheCBzaXR1YXRpb24uIFRhbGsgdG8gYSBDUEEgYmVmb3JlIHlvdSBzZWxsLjwvcD4nOwoKICAgICAgcmVzdWx0RGl2LmlubmVySFRNTCA9IGh0bWw7CiAgICAgIHJlc3VsdERpdi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgIH0pOwogIH0KCiAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluaXRDR0NhbGMpOwogIH0gZWxzZSB7CiAgICBpbml0Q0dDYWxjKCk7CiAgfQogIHZhciBjZ09ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKSB7IGluaXRDR0NhbGMoKTsgfSk7CiAgY2dPYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKfSkoKTsKCgooZnVuY3Rpb24oKSB7CiAgaWYgKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5pbmRleE9mKCdsb3Vpc3ZpbGxlLW5laWdoYm9yaG9vZC1tYXRjaGVyJykgPT09IC0xKSByZXR1cm47CgogIHZhciBORUlHSEJPUkhPT0RTID0gWwogICAge25hbWU6J1RoZSBIaWdobGFuZHMnLCBwcmljZTonfiQyODksMDAwIG1lZGlhbiBzYWxlJywgcHJpY2VUaWVyOjIsIHdhbGtUaWVyOidoaWdoJywgd2Fsa05vdGU6J1dhbGsgU2NvcmUgODEgXHUyMDE0IHZlcnkgd2Fsa2FibGUnLCBjb21tdXRlVGllcjonY2xvc2UnLCBjb21tdXRlTm90ZTonY2xvc2UtaW4sIGp1c3Qgc291dGggb2YgZG93bnRvd24nLCBzY2hvb2xUaWVyOidtZWRpdW0nLCB2aWJlOidsaXZlbHknLCBpbnZlc3RvcjpbJ21vbWVudHVtJ10sIGJsdXJiOidEZW5zZSwgYXJ0c3ksIGFuZCB3YWxrYWJsZSBhbG9uZyBCYXJkc3Rvd24gUm9hZCwgd2l0aCBzdHJvbmcgbmlnaHRsaWZlIGFuZCByZXN0YXVyYW50IGRlbnNpdHkuIFNrZXdzIHlvdW5nIHByb2Zlc3Npb25hbC4nfSwKICAgIHtuYW1lOidTdC4gTWF0dGhld3MnLCBwcmljZTonfiQzMjAsMDAwIG1lZGlhbiBzYWxlJywgcHJpY2VUaWVyOjIsIHdhbGtUaWVyOidtZWRpdW0nLCB3YWxrTm90ZTonV2FsayBTY29yZSA1MCBcdTIwMTQgYSBjYXIgc3RpbGwgaGVscHMnLCBjb21tdXRlVGllcjonbWlkJywgY29tbXV0ZU5vdGU6J2Vhc3QgTG91aXN2aWxsZSwgbW9kZXJhdGUgZHJpdmUgaW4nLCBzY2hvb2xUaWVyOidtZWRpdW0nLCB2aWJlOid1cHNjYWxlJywgaW52ZXN0b3I6W10sIGJsdXJiOidJdHMgb3duIGhvbWUtcnVsZSBjaXR5IHdpdGggYSBidXN5IFNoZWxieXZpbGxlIFJvYWQgcmV0YWlsIGNvcnJpZG9yLiBDb21wZXRpdGl2ZSBtYXJrZXQsIGF2ZXJhZ2luZyAzNCBkYXlzIG9uIG1hcmtldC4nfSwKICAgIHtuYW1lOidDcmVzY2VudCBIaWxsJywgcHJpY2U6J34kMzc4LDAwMCBtZWRpYW4gc2FsZScsIHByaWNlVGllcjoyLCB3YWxrVGllcjonbWVkaXVtJywgd2Fsa05vdGU6J1dhbGsgU2NvcmUgNjAgXHUyMDE0IGFib3ZlIHRoZSBjaXR5IGF2ZXJhZ2UnLCBjb21tdXRlVGllcjonY2xvc2UnLCBjb21tdXRlTm90ZTonY2xvc2UtaW4sIGFsb25nIEZyYW5rZm9ydCBBdmVudWUnLCBzY2hvb2xUaWVyOidoaWdoJywgdmliZTondXBzY2FsZScsIGludmVzdG9yOlsnbW9tZW50dW0nXSwgYmx1cmI6J0hpc3RvcmljLCBoaWdobHkgZWR1Y2F0ZWQsIGhpZ2hlci1pbmNvbWUsIHdpdGggc2FsZXMgdm9sdW1lIHVwIHNoYXJwbHkuIE5pY2hlIHJhbmtzIGl0IGluIExvdWlzdmlsbGVcdTIwMTlzIHRvcCAxMC4nfSwKICAgIHtuYW1lOidDbGlmdG9uIC8gQ2xpZnRvbiBIZWlnaHRzJywgcHJpY2U6J34kMzI0LDAwMCBtZWRpYW4gc2FsZScsIHByaWNlVGllcjoyLCB3YWxrVGllcjonaGlnaCcsIHdhbGtOb3RlOidXYWxrIFNjb3JlIDc0IFx1MjAxNCB2ZXJ5IHdhbGthYmxlJywgY29tbXV0ZVRpZXI6J2Nsb3NlJywgY29tbXV0ZU5vdGU6J2Nsb3NlLWluLCBuZWFyIEJyb3duc2Jvcm8gUm9hZCcsIHNjaG9vbFRpZXI6J21lZGl1bScsIHZpYmU6J2xpdmVseScsIGludmVzdG9yOltdLCBibHVyYjonQW4gdXJiYW4tc3VidXJiYW4gbWl4IGFsb25nIHRoZSByaXZlciBjb3JyaWRvciB3aXRoIGEgZ2VudWluZSBibGVuZCBvZiB5b3VuZyBwcm9mZXNzaW9uYWxzIGFuZCBmYW1pbGllcy4nfSwKICAgIHtuYW1lOidHZXJtYW50b3duIC8gU2Nobml0emVsYnVyZycsIHByaWNlOid+JDI4MCwwMDAgbWVkaWFuIHNhbGUnLCBwcmljZVRpZXI6Miwgd2Fsa1RpZXI6J2hpZ2gnLCB3YWxrTm90ZTonV2FsayBTY29yZSB+NzMgXHUyMDE0IHZlcnkgd2Fsa2FibGUnLCBjb21tdXRlVGllcjonY2xvc2UnLCBjb21tdXRlTm90ZTonY2xvc2UtaW4sIGluc2lkZSB0aGUgV2F0dGVyc29uIExvb3AnLCBzY2hvb2xUaWVyOidtZWRpdW0nLCB2aWJlOidsaXZlbHknLCBpbnZlc3RvcjpbXSwgYmx1cmI6J0hpc3RvcmljIHNob3RndW4taG91c2UgbmVpZ2hib3Job29kIGJ1aWx0IGFyb3VuZCB0aGUgR29zcyBBdmVudWUgYnJld2VyeSBhbmQgYmFyIGNvcnJpZG9yLiBTbWFsbCBsb3RzLCBiaWcgd2Fsa2FibGUgY2hhcmFjdGVyLid9LAogICAge25hbWU6J051THUgLyBEb3dudG93bicsIHByaWNlOid+JDMxNiwwMDAgKHNtYWxsIHNhbXBsZSknLCBwcmljZVRpZXI6Miwgd2Fsa1RpZXI6J2hpZ2gnLCB3YWxrTm90ZTonV2FsayBTY29yZSA4MiBcdTIwMTQgbW9zdCB3YWxrYWJsZSBhcmVhIG1lYXN1cmVkJywgY29tbXV0ZVRpZXI6J2Nsb3NlJywgY29tbXV0ZU5vdGU6J3dhbGtpbmcgZGlzdGFuY2UgdG8gZG93bnRvd24nLCBzY2hvb2xUaWVyOidsb3cnLCB2aWJlOidsaXZlbHknLCBpbnZlc3RvcjpbJ21vbWVudHVtJ10sIGJsdXJiOidMb3Vpc3ZpbGxlXHUyMDE5cyBhcnRzLCBkaW5pbmcsIGFuZCBib3VyYm9uIGRpc3RyaWN0LiBWZXJ5IGZldyBzY2hvb2wtYWdlIHJlc2lkZW50cyBcdTIwMTQgbm90IGEgZmFtaWx5LW9yaWVudGVkIGJ1eSBieSBkZXNpZ24uJ30sCiAgICB7bmFtZTonT2xkIExvdWlzdmlsbGUnLCBwcmljZTonfiQyNDIsMDAwIG1lZGlhbiBzYWxlIChlc3RpbWF0ZXMgdmFyeSB3aWRlbHkpJywgcHJpY2VUaWVyOjEsIHdhbGtUaWVyOidoaWdoJywgd2Fsa05vdGU6J1dhbGsgU2NvcmUgNzcgXHUyMDE0IHZlcnkgd2Fsa2FibGUnLCBjb21tdXRlVGllcjonY2xvc2UnLCBjb21tdXRlTm90ZTond2Fsa2luZyBkaXN0YW5jZSB0byBkb3dudG93bicsIHNjaG9vbFRpZXI6J2xvdycsIHZpYmU6J2xpdmVseScsIGludmVzdG9yOlsncmVudGFsLWRlbWFuZCddLCBibHVyYjonVGhlIGxhcmdlc3QgY29sbGVjdGlvbiBvZiByZXN0b3JlZCBWaWN0b3JpYW4gYXJjaGl0ZWN0dXJlIGluIHRoZSBVLlMuIE1ham9yaXR5LXJlbnRlciwgbmV4dCB0byBVb2ZMLCB3aXRoIHJlYWwgc3R1ZGVudCByZW50YWwgZGVtYW5kLid9LAogICAge25hbWU6J0plZmZlcnNvbnRvd24gKEotdG93biknLCBwcmljZTonfiQzMTAsMDAwIG1lZGlhbiBzYWxlJywgcHJpY2VUaWVyOjIsIHdhbGtUaWVyOidsb3cnLCB3YWxrTm90ZTonV2FsayBTY29yZSAzMCBcdTIwMTQgcGxhbiBvbiBkcml2aW5nJywgY29tbXV0ZVRpZXI6J21pZCcsIGNvbW11dGVOb3RlOidlYXN0IExvdWlzdmlsbGUsIG91dHNpZGUgdGhlIFdhdHRlcnNvbiBMb29wJywgc2Nob29sVGllcjonaGlnaCcsIHZpYmU6J2ZhbWlseScsIGludmVzdG9yOltdLCBibHVyYjonSXRzIG93biBob21lLXJ1bGUgY2l0eSB3aXRoIHRoZSBoaWdoZXN0IHNhbGVzIHZvbHVtZSBvZiBhbnkgYXJlYSBoZXJlIFx1MjAxNCBhIGRlZXAsIGxpcXVpZCBtYXJrZXQuIEZhbWlseS0gYW5kIHByb2Zlc3Npb25hbC1vcmllbnRlZC4nfSwKICAgIHtuYW1lOidNaWRkbGV0b3duJywgcHJpY2U6J34kMzEwLDAwMFx1MjAxMyQzMzYsMDAwIChzb3VyY2VzIHZhcnkpJywgcHJpY2VUaWVyOjIsIHdhbGtUaWVyOidtZWRpdW0nLCB3YWxrTm90ZTonbm90IGluZGVwZW5kZW50bHkgc2NvcmVkJywgY29tbXV0ZVRpZXI6J21pZCcsIGNvbW11dGVOb3RlOidjZW50cmFsIGVhc3QgTG91aXN2aWxsZScsIHNjaG9vbFRpZXI6J21lZGl1bScsIHZpYmU6J2ZhbWlseScsIGludmVzdG9yOltdLCBibHVyYjonQ2VudHJhbCBhbmQgY29udmVuaWVudCwgd2l0aCBhIG5vdGFibHkgaGlnaGVyIHJldGlyZWUgcG9wdWxhdGlvbiB0aGFuIG5lYXJieSBKLXRvd24gb3IgU3QuIE1hdHRoZXdzLid9LAogICAge25hbWU6J1Byb3NwZWN0JywgcHJpY2U6J34kNjI2LDAwMCBtZWRpYW4gc2FsZScsIHByaWNlVGllcjo0LCB3YWxrVGllcjonbG93Jywgd2Fsa05vdGU6J2Nhci1kZXBlbmRlbnQgYnkgZGVzaWduJywgY29tbXV0ZVRpZXI6J2ZhcicsIGNvbW11dGVOb3RlOid+MTYgbWlsZXMgZnJvbSBkb3dudG93bicsIHNjaG9vbFRpZXI6J2hpZ2gnLCB2aWJlOid1cHNjYWxlJywgaW52ZXN0b3I6W10sIGJsdXJiOidUaGUgaGlnaGVzdCBvdmVyYWxsIE5pY2hlIGdyYWRlIG9mIGFueSBhcmVhIGhlcmUsIHdpdGggYWJvdmUtYXZlcmFnZSBwdWJsaWMgc2Nob29scyBhbmQgYSBzdHJvbmcgcmV0aXJlZSBwcmVzZW5jZS4nfSwKICAgIHtuYW1lOidOb3J0b24gQ29tbW9ucycsIHByaWNlOickNDAwLDAwMHNcdTIwMTMkOTAwLDAwMCsnLCBwcmljZVRpZXI6Mywgd2Fsa1RpZXI6J21lZGl1bScsIHdhbGtOb3RlOidkZXNpZ25lZCB0byBiZSB3YWxrYWJsZSB3aXRoaW4gaXRzZWxmLCBub3QgaW5kZXBlbmRlbnRseSBzY29yZWQnLCBjb21tdXRlVGllcjonZmFyJywgY29tbXV0ZU5vdGU6J34xNlx1MjAxMzE4IG1pbGVzIGZyb20gZG93bnRvd24nLCBzY2hvb2xUaWVyOidoaWdoJywgdmliZTondXBzY2FsZScsIGludmVzdG9yOltdLCBibHVyYjonQSBOZXcgVXJiYW5pc3QgcGxhbm5lZCBjb21tdW5pdHkgd2l0aCBhIHdhbGthYmxlIHRvd24gY2VudGVyLiBTdHJhZGRsZXMgdGhlIEplZmZlcnNvbi9PbGRoYW0gY291bnR5IGxpbmUgXHUyMDE0IHNjaG9vbHMgYW5kIHRheCByYXRlcyBkaWZmZXIgYnkgc2lkZS4nfSwKICAgIHtuYW1lOidGZXJuIENyZWVrJywgcHJpY2U6J34kMjcwLDAwMFx1MjAxMyQzMTIsMDAwIChzb3VyY2VzIHZhcnkpJywgcHJpY2VUaWVyOjIsIHdhbGtUaWVyOidsb3cnLCB3YWxrTm90ZTonV2FsayBTY29yZSAyMSBcdTIwMTQgY2FyLWRlcGVuZGVudCcsIGNvbW11dGVUaWVyOidmYXInLCBjb21tdXRlTm90ZTonfjE1IG1pbGVzIHNvdXRoZWFzdCBvZiBkb3dudG93bicsIHNjaG9vbFRpZXI6J2xvdycsIHZpYmU6J2ZhbWlseScsIGludmVzdG9yOlsncmVudGFsLWRlbWFuZCddLCBibHVyYjonUXVpZXQgYW5kIHBhc3RvcmFsLiBBdmVyYWdlIHJlbnQgcnVucyBhYm91dCAkMSw2NTcvbW9udGggXHUyMDE0IGhpZ2hlciB0aGFuIG1vc3Qgb2YgdGhlIHN0YXRlLCBhIHJlYWwgbnVtYmVyIGZvciByZW50YWwgYnV5ZXJzLid9LAogICAge25hbWU6J09rb2xvbmEnLCBwcmljZTonfiQyMjUsMDAwIChkYXRlZCBmaWd1cmVzKScsIHByaWNlVGllcjoxLCB3YWxrVGllcjonbG93Jywgd2Fsa05vdGU6J1dhbGsgU2NvcmUgMzcgXHUyMDE0IGNhci1kZXBlbmRlbnQnLCBjb21tdXRlVGllcjonbWlkJywgY29tbXV0ZU5vdGU6J34xMCBtaWxlcyBmcm9tIGRvd250b3duJywgc2Nob29sVGllcjonbG93JywgdmliZTonZmFtaWx5JywgaW52ZXN0b3I6WydjYXNoZmxvdyddLCBibHVyYjonQWZmb3JkYWJsZSwgZGl2ZXJzaWZ5aW5nIGJsdWUtY29sbGFyIHJvb3RzIFx1MjAxNCBidXQgZG9jdW1lbnRlZCBhcyBvbmUgb2YgdGhlIGNpdHlcdTIwMTlzIG1vcmUgZmxvb2QtcHJvbmUgYXJlYXMuIENoZWNrIGZsb29kcGxhaW4gbWFwcyBiZWZvcmUgYnV5aW5nLid9LAogICAge25hbWU6J1NoaXZlbHknLCBwcmljZTonfiQyMDUsMDAwIG1lZGlhbiBzYWxlIChsb3dlc3QgaGVyZSknLCBwcmljZVRpZXI6MSwgd2Fsa1RpZXI6J2xvdycsIHdhbGtOb3RlOidub3QgaW5kZXBlbmRlbnRseSBzY29yZWQnLCBjb21tdXRlVGllcjonbWlkJywgY29tbXV0ZU5vdGU6J3NvdXRod2VzdCBMb3Vpc3ZpbGxlLCBpbnNpZGUgdGhlIFdhdHRlcnNvbiBMb29wJywgc2Nob29sVGllcjonbWVkaXVtJywgdmliZTonZmFtaWx5JywgaW52ZXN0b3I6WydjYXNoZmxvdycsJ21vbWVudHVtJ10sIGJsdXJiOidUaGUgbW9zdCBhZmZvcmRhYmxlIGFyZWEgaGVyZSwgd2l0aCBzYWxlcyB2b2x1bWUgdXAgc2hhcnBseSB5ZWFyIG92ZXIgeWVhciBcdTIwMTQgYSByZWFsIHNpZ25hbCBvZiByaXNpbmcgaW50ZXJlc3QgYXQgdGhpcyBwcmljZSBwb2ludC4nfQogIF07CgogIGZ1bmN0aW9uIHNjb3JlTmVpZ2hib3Job29kKG4sIGFucykgewogICAgdmFyIHMgPSAwOwogICAgdmFyIGJ1ZGdldERpZmYgPSBNYXRoLmFicyhuLnByaWNlVGllciAtIGFucy5idWRnZXQpOwogICAgaWYgKGJ1ZGdldERpZmYgPT09IDApIHMgKz0gMzsgZWxzZSBpZiAoYnVkZ2V0RGlmZiA9PT0gMSkgcyArPSAxOyBlbHNlIHMgLT0gMTsKCiAgICBpZiAoYW5zLndhbGsgPT09ICdoaWdoJykgeyBpZiAobi53YWxrVGllciA9PT0gJ2hpZ2gnKSBzICs9IDM7IGVsc2UgaWYgKG4ud2Fsa1RpZXIgPT09ICdtZWRpdW0nKSBzICs9IDE7IGVsc2UgcyAtPSAyOyB9CiAgICBlbHNlIGlmIChhbnMud2FsayA9PT0gJ21lZGl1bScpIHsgaWYgKG4ud2Fsa1RpZXIgPT09ICdoaWdoJykgcyArPSAyOyBlbHNlIGlmIChuLndhbGtUaWVyID09PSAnbWVkaXVtJykgcyArPSAyOyB9CiAgICBlbHNlIHsgaWYgKG4ud2Fsa1RpZXIgPT09ICdsb3cnKSBzICs9IDI7IGVsc2UgaWYgKG4ud2Fsa1RpZXIgPT09ICdtZWRpdW0nKSBzICs9IDE7IH0KCiAgICBpZiAoYW5zLmNvbW11dGUgPT09ICdjbG9zZScpIHsgaWYgKG4uY29tbXV0ZVRpZXIgPT09ICdjbG9zZScpIHMgKz0gMzsgZWxzZSBpZiAobi5jb21tdXRlVGllciA9PT0gJ21pZCcpIHMgKz0gMTsgZWxzZSBzIC09IDI7IH0KICAgIGVsc2UgaWYgKGFucy5jb21tdXRlID09PSAnbWlkJykgeyBpZiAobi5jb21tdXRlVGllciA9PT0gJ21pZCcpIHMgKz0gMzsgZWxzZSBzICs9IDE7IH0KICAgIGVsc2UgeyBpZiAobi5jb21tdXRlVGllciA9PT0gJ2ZhcicpIHMgKz0gMzsgZWxzZSBzICs9IDE7IH0KCiAgICBpZiAoYW5zLnBlcnNvbmEgPT09ICdidXllcicpIHsKICAgICAgaWYgKGFucy5zY2hvb2xzID09PSAnaGlnaCcpIHsgaWYgKG4uc2Nob29sVGllciA9PT0gJ2hpZ2gnKSBzICs9IDM7IGVsc2UgaWYgKG4uc2Nob29sVGllciA9PT0gJ21lZGl1bScpIHMgKz0gMTsgZWxzZSBzIC09IDI7IH0KICAgICAgZWxzZSBpZiAoYW5zLnNjaG9vbHMgPT09ICdtZWRpdW0nKSB7IGlmIChuLnNjaG9vbFRpZXIgPT09ICdoaWdoJykgcyArPSAyOyBlbHNlIGlmIChuLnNjaG9vbFRpZXIgPT09ICdtZWRpdW0nKSBzICs9IDI7IH0KICAgIH0gZWxzZSBpZiAoYW5zLnBlcnNvbmEgPT09ICdyZWxvY2F0aW5nJykgewogICAgICBpZiAobi52aWJlID09PSBhbnMudmliZSkgcyArPSAzOwogICAgfSBlbHNlIGlmIChhbnMucGVyc29uYSA9PT0gJ2ludmVzdG9yJykgewogICAgICBpZiAobi5pbnZlc3Rvci5pbmRleE9mKGFucy5zdHJhdGVneSkgIT09IC0xKSBzICs9IDQ7CiAgICB9CiAgICByZXR1cm4gczsKICB9CgogIGZ1bmN0aW9uIGZtdFRpZXIodCkgewogICAgcmV0dXJuIFsnVW5kZXIgXCQyNTBrJywnXCQyNTBrXHUyMDEzXCQ0MDBrJywnXCQ0MDBrXHUyMDEzXCQ2MDBrJywnXCQ2MDBrKyddW3QtMV07CiAgfQoKICBmdW5jdGlvbiBidWlsZEZvcm0oKSB7CiAgICB2YXIgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgd3JhcC5pZCA9ICd3ci1ubS1jYWxjJzsKICAgIHdyYXAuc2V0QXR0cmlidXRlKCdzdHlsZScsICdiYWNrZ3JvdW5kOiByZ2IoMjQ1LCAyNDUsIDI0NCk7IGNvbG9yOiByZ2IoMjYsIDI2LCAyNik7IGJvcmRlci1yYWRpdXM6IDEycHg7IHBhZGRpbmc6IDI4cHg7IG1hcmdpbjogMHB4IDBweCAyNHB4OyBtYXgtd2lkdGg6IDY0MHB4OycpOwogICAgdmFyIGxhYmVsU3R5bGUgPSAnZGlzcGxheTpibG9jaztjb2xvcjojMWExYTFhO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTRweDttYXJnaW4tYm90dG9tOjZweDsnOwogICAgdmFyIGlucHV0U3R5bGUgPSAnd2lkdGg6MTAwJTtwYWRkaW5nOjEwcHg7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6NnB4O2ZvbnQtc2l6ZToxNXB4O2NvbG9yOiMxYTFhMWE7YmFja2dyb3VuZDojZmZmO2JveC1zaXppbmc6Ym9yZGVyLWJveDsnOwogICAgdmFyIHJvd1N0eWxlID0gJ21hcmdpbi1ib3R0b206MTZweDsnOwogICAgd3JhcC5pbm5lckhUTUwgPQogICAgICAnPGgzIHN0eWxlPSJjb2xvcjojMWExYTFhO2ZvbnQtc2l6ZToyMnB4O2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW46MCAwIDZweCAwOyI+RmluZCB5b3VyIGJlc3QtZml0IExvdWlzdmlsbGUgbmVpZ2hib3Job29kPC9oMz4nICsKICAgICAgJzxwIHN0eWxlPSJjb2xvcjojNGI0YjRiO2ZvbnQtc2l6ZToxNXB4O21hcmdpbjowIDAgMjBweCAwOyI+TWF0Y2hlZCBhZ2FpbnN0IDE0IHJlYWwgSmVmZmVyc29uIENvdW50eSBuZWlnaGJvcmhvb2RzLjwvcD4nICsKICAgICAgJzxkaXYgc3R5bGU9IicgKyByb3dTdHlsZSArICciPicgKwogICAgICAgICc8bGFiZWwgZm9yPSJ3ci1ubS1wZXJzb25hIiBzdHlsZT0iJyArIGxhYmVsU3R5bGUgKyAnIj5XaG8gYXJlIHlvdT88L2xhYmVsPicgKwogICAgICAgICc8c2VsZWN0IGlkPSJ3ci1ubS1wZXJzb25hIiBzdHlsZT0iJyArIGlucHV0U3R5bGUgKyAnIj4nICsKICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJidXllciI+SG9tZSBidXllcjwvb3B0aW9uPicgKwogICAgICAgICAgJzxvcHRpb24gdmFsdWU9InJlbG9jYXRpbmciPlJlbG9jYXRpbmcgZm9yIHdvcms8L29wdGlvbj4nICsKICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJpbnZlc3RvciI+UmVhbCBlc3RhdGUgaW52ZXN0b3I8L29wdGlvbj4nICsKICAgICAgICAnPC9zZWxlY3Q+JyArCiAgICAgICc8L2Rpdj4nICsKICAgICAgJzxkaXYgc3R5bGU9IicgKyByb3dTdHlsZSArICciPicgKwogICAgICAgICc8bGFiZWwgZm9yPSJ3ci1ubS1idWRnZXQiIHN0eWxlPSInICsgbGFiZWxTdHlsZSArICciPkJ1ZGdldDwvbGFiZWw+JyArCiAgICAgICAgJzxzZWxlY3QgaWQ9IndyLW5tLWJ1ZGdldCIgc3R5bGU9IicgKyBpbnB1dFN0eWxlICsgJyI+JyArCiAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iMSI+VW5kZXIgXCQyNTAsMDAwPC9vcHRpb24+JyArCiAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iMiI+XCQyNTAsMDAwXHUyMDEzXCQ0MDAsMDAwPC9vcHRpb24+JyArCiAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iMyI+XCQ0MDAsMDAwXHUyMDEzXCQ2MDAsMDAwPC9vcHRpb24+JyArCiAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iNCI+XCQ2MDAsMDAwKzwvb3B0aW9uPicgKwogICAgICAgICc8L3NlbGVjdD4nICsKICAgICAgJzwvZGl2PicgKwogICAgICAnPGRpdiBzdHlsZT0iJyArIHJvd1N0eWxlICsgJyI+JyArCiAgICAgICAgJzxsYWJlbCBmb3I9IndyLW5tLXdhbGsiIHN0eWxlPSInICsgbGFiZWxTdHlsZSArICciPkhvdyBpbXBvcnRhbnQgaXMgYmVpbmcgYWJsZSB0byB3YWxrIHRvIHJlc3RhdXJhbnRzIGFuZCBzaG9wcz88L2xhYmVsPicgKwogICAgICAgICc8c2VsZWN0IGlkPSJ3ci1ubS13YWxrIiBzdHlsZT0iJyArIGlucHV0U3R5bGUgKyAnIj4nICsKICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJoaWdoIj5WZXJ5IGltcG9ydGFudDwvb3B0aW9uPicgKwogICAgICAgICAgJzxvcHRpb24gdmFsdWU9Im1lZGl1bSI+U29tZXdoYXQgaW1wb3J0YW50PC9vcHRpb24+JyArCiAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0ibG93Ij5Ob3QgaW1wb3J0YW50IFx1MjAxNCBJXHUyMDE5ZCByYXRoZXIgaGF2ZSBzcGFjZSBhbmQgcXVpZXQ8L29wdGlvbj4nICsKICAgICAgICAnPC9zZWxlY3Q+JyArCiAgICAgICc8L2Rpdj4nICsKICAgICAgJzxkaXYgc3R5bGU9IicgKyByb3dTdHlsZSArICciPicgKwogICAgICAgICc8bGFiZWwgZm9yPSJ3ci1ubS1jb21tdXRlIiBzdHlsZT0iJyArIGxhYmVsU3R5bGUgKyAnIj5Ib3cgZG8geW91IGZlZWwgYWJvdXQgeW91ciBjb21tdXRlIHRvIGRvd250b3duPzwvbGFiZWw+JyArCiAgICAgICAgJzxzZWxlY3QgaWQ9IndyLW5tLWNvbW11dGUiIHN0eWxlPSInICsgaW5wdXRTdHlsZSArICciPicgKwogICAgICAgICAgJzxvcHRpb24gdmFsdWU9ImNsb3NlIj5XYW50IHRvIGJlIGNsb3NlLWluPC9vcHRpb24+JyArCiAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0ibWlkIj5Pa2F5IHdpdGggYSBtb2RlcmF0ZSBkcml2ZTwvb3B0aW9uPicgKwogICAgICAgICAgJzxvcHRpb24gdmFsdWU9ImZhciI+RG9uXHUyMDE5dCBtaW5kIGEgbG9uZ2VyIGNvbW11dGUgZm9yIHRoZSByaWdodCBob21lPC9vcHRpb24+JyArCiAgICAgICAgJzwvc2VsZWN0PicgKwogICAgICAnPC9kaXY+JyArCiAgICAgICc8ZGl2IGlkPSJ3ci1ubS1zY2hvb2xzLXJvdyIgc3R5bGU9IicgKyByb3dTdHlsZSArICciPicgKwogICAgICAgICc8bGFiZWwgZm9yPSJ3ci1ubS1zY2hvb2xzIiBzdHlsZT0iJyArIGxhYmVsU3R5bGUgKyAnIj5Ib3cgaW1wb3J0YW50IGFyZSB0b3AtcmF0ZWQgc2Nob29scyByaWdodCBub3c/PC9sYWJlbD4nICsKICAgICAgICAnPHNlbGVjdCBpZD0id3Itbm0tc2Nob29scyIgc3R5bGU9IicgKyBpbnB1dFN0eWxlICsgJyI+JyArCiAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iaGlnaCI+VmVyeSBpbXBvcnRhbnQ8L29wdGlvbj4nICsKICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJtZWRpdW0iPlNvbWV3aGF0IGltcG9ydGFudDwvb3B0aW9uPicgKwogICAgICAgICAgJzxvcHRpb24gdmFsdWU9ImxvdyI+Tm90IGEgY3VycmVudCBmYWN0b3I8L29wdGlvbj4nICsKICAgICAgICAnPC9zZWxlY3Q+JyArCiAgICAgICc8L2Rpdj4nICsKICAgICAgJzxkaXYgaWQ9IndyLW5tLXZpYmUtcm93IiBzdHlsZT0iJyArIHJvd1N0eWxlICsgJyI+JyArCiAgICAgICAgJzxsYWJlbCBmb3I9IndyLW5tLXZpYmUiIHN0eWxlPSInICsgbGFiZWxTdHlsZSArICciPldoYXRcdTIwMTlzIHRoZSB2aWJlIHlvdSB3YW50PzwvbGFiZWw+JyArCiAgICAgICAgJzxzZWxlY3QgaWQ9IndyLW5tLXZpYmUiIHN0eWxlPSInICsgaW5wdXRTdHlsZSArICciPicgKwogICAgICAgICAgJzxvcHRpb24gdmFsdWU9ImxpdmVseSI+TGl2ZWx5IGFuZCBzb2NpYWwgXHUyMDE0IG5pZ2h0bGlmZSwgeW91bmcgcHJvZmVzc2lvbmFsIGVuZXJneTwvb3B0aW9uPicgKwogICAgICAgICAgJzxvcHRpb24gdmFsdWU9ImZhbWlseSI+UXVpZXQgYW5kIGZhbWlseS1mcmllbmRseTwvb3B0aW9uPicgKwogICAgICAgICAgJzxvcHRpb24gdmFsdWU9InVwc2NhbGUiPlVwc2NhbGUgYW5kIGVzdGFibGlzaGVkPC9vcHRpb24+JyArCiAgICAgICAgJzwvc2VsZWN0PicgKwogICAgICAnPC9kaXY+JyArCiAgICAgICc8ZGl2IGlkPSJ3ci1ubS1pbnZlc3Rvci1yb3ciIHN0eWxlPSInICsgcm93U3R5bGUgKyAnIj4nICsKICAgICAgICAnPGxhYmVsIGZvcj0id3Itbm0tc3RyYXRlZ3kiIHN0eWxlPSInICsgbGFiZWxTdHlsZSArICciPldoYXRcdTIwMTlzIHlvdXIgaW52ZXN0bWVudCBzdHJhdGVneT88L2xhYmVsPicgKwogICAgICAgICc8c2VsZWN0IGlkPSJ3ci1ubS1zdHJhdGVneSIgc3R5bGU9IicgKyBpbnB1dFN0eWxlICsgJyI+JyArCiAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iY2FzaGZsb3ciPk1heGltaXplIGNhc2ggZmxvdyBhdCBhIGxvd2VyIHByaWNlIHBvaW50PC9vcHRpb24+JyArCiAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0icmVudGFsLWRlbWFuZCI+UmlkZSBlc3RhYmxpc2hlZCByZW50YWwgZGVtYW5kIChzdHVkZW50cywgeW91bmcgcHJvZmVzc2lvbmFscyk8L29wdGlvbj4nICsKICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJtb21lbnR1bSI+TG9vayBmb3IgbWFya2V0cyB3aXRoIHJpc2luZyBtb21lbnR1bTwvb3B0aW9uPicgKwogICAgICAgICc8L3NlbGVjdD4nICsKICAgICAgJzwvZGl2PicgKwogICAgICAnPGJ1dHRvbiBpZD0id3Itbm0tY2FsYy1idG4iIHN0eWxlPSJiYWNrZ3JvdW5kOiMxYTFhMWE7Y29sb3I6I2ZmZjtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjZweDtwYWRkaW5nOjEycHggMjRweDtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo2MDA7Y3Vyc29yOnBvaW50ZXI7Ij5GaW5kIG15IG1hdGNoZXM8L2J1dHRvbj4nICsKICAgICAgJzxkaXYgaWQ9IndyLW5tLXJlc3VsdCIgc3R5bGU9ImRpc3BsYXk6bm9uZTttYXJnaW4tdG9wOjIwcHg7cGFkZGluZy10b3A6MjBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkOyI+PC9kaXY+JzsKICAgIHJldHVybiB3cmFwOwogIH0KCiAgZnVuY3Rpb24gaW5pdE5NQ2FsYygpIHsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3Itbm0tY2FsYycpKSByZXR1cm47CiAgICB2YXIgcHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwJyk7CiAgICB2YXIgbWFya2VyID0gbnVsbDsKICAgIGZvciAodmFyIGk9MDtpPHBzLmxlbmd0aDtpKyspIHsKICAgICAgaWYgKHBzW2ldLnRleHRDb250ZW50LnRyaW0oKSA9PT0gJ0NBTENfTUFSS0VSJykgeyBtYXJrZXIgPSBwc1tpXTsgYnJlYWs7IH0KICAgIH0KICAgIGlmICghbWFya2VyKSByZXR1cm47CiAgICB2YXIgY29udGFpbmVyID0gYnVpbGRGb3JtKCk7CiAgICBtYXJrZXIucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoY29udGFpbmVyLCBtYXJrZXIpOwoKICAgIGZ1bmN0aW9uIHRvZ2dsZVJvd3MoKSB7CiAgICAgIHZhciBwZXJzb25hID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLW5tLXBlcnNvbmEnKS52YWx1ZTsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLW5tLXNjaG9vbHMtcm93Jykuc3R5bGUuZGlzcGxheSA9IHBlcnNvbmEgPT09ICdidXllcicgPyAnJyA6ICdub25lJzsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLW5tLXZpYmUtcm93Jykuc3R5bGUuZGlzcGxheSA9IHBlcnNvbmEgPT09ICdyZWxvY2F0aW5nJyA/ICcnIDogJ25vbmUnOwogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3Itbm0taW52ZXN0b3Itcm93Jykuc3R5bGUuZGlzcGxheSA9IHBlcnNvbmEgPT09ICdpbnZlc3RvcicgPyAnJyA6ICdub25lJzsKICAgIH0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1ubS1wZXJzb25hJykuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdG9nZ2xlUm93cyk7CiAgICB0b2dnbGVSb3dzKCk7CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLW5tLWNhbGMtYnRuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgdmFyIGFucyA9IHsKICAgICAgICBwZXJzb25hOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3Itbm0tcGVyc29uYScpLnZhbHVlLAogICAgICAgIGJ1ZGdldDogcGFyc2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLW5tLWJ1ZGdldCcpLnZhbHVlLCAxMCksCiAgICAgICAgd2FsazogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLW5tLXdhbGsnKS52YWx1ZSwKICAgICAgICBjb21tdXRlOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3Itbm0tY29tbXV0ZScpLnZhbHVlLAogICAgICAgIHNjaG9vbHM6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1ubS1zY2hvb2xzJykudmFsdWUsCiAgICAgICAgdmliZTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLW5tLXZpYmUnKS52YWx1ZSwKICAgICAgICBzdHJhdGVneTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLW5tLXN0cmF0ZWd5JykudmFsdWUKICAgICAgfTsKCiAgICAgIHZhciBzY29yZWQgPSBORUlHSEJPUkhPT0RTLm1hcChmdW5jdGlvbihuKSB7IHJldHVybiB7bjogbiwgc2NvcmU6IHNjb3JlTmVpZ2hib3Job29kKG4sIGFucyl9OyB9KTsKICAgICAgc2NvcmVkLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYi5zY29yZSAtIGEuc2NvcmU7IH0pOwogICAgICB2YXIgdG9wID0gc2NvcmVkLnNsaWNlKDAsIDQpOwoKICAgICAgdmFyIGh0bWwgPSAnPGg0IHN0eWxlPSJtYXJnaW46MCAwIDEycHggMDtjb2xvcjojMWExYTFhO2ZvbnQtc2l6ZToxOHB4O2ZvbnQtd2VpZ2h0OjcwMDsiPllvdXIgdG9wIG1hdGNoZXM8L2g0Pic7CiAgICAgIHRvcC5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGlkeCkgewogICAgICAgIHZhciBuID0gaXRlbS5uOwogICAgICAgIGh0bWwgKz0gJzxkaXYgc3R5bGU9ImJhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNlMGUwZTA7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoxNnB4O21hcmdpbi1ib3R0b206MTJweDsiPicgKwogICAgICAgICAgJzxwIHN0eWxlPSJtYXJnaW46MCAwIDRweCAwO2NvbG9yOiMxYTFhMWE7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NzAwOyI+JyArIChpZHgrMSkgKyAnLiAnICsgbi5uYW1lICsgJzwvcD4nICsKICAgICAgICAgICc8cCBzdHlsZT0ibWFyZ2luOjAgMCA2cHggMDtjb2xvcjojNGI0YjRiO2ZvbnQtc2l6ZToxNHB4OyI+JyArIG4ucHJpY2UgKyAnIFx1MjAyMiAnICsgbi53YWxrTm90ZSArICcgXHUyMDIyICcgKyBuLmNvbW11dGVOb3RlICsgJzwvcD4nICsKICAgICAgICAgICc8cCBzdHlsZT0ibWFyZ2luOjA7Y29sb3I6IzFhMWExYTtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjU7Ij4nICsgbi5ibHVyYiArICc8L3A+JyArCiAgICAgICAgICAnPC9kaXY+JzsKICAgICAgfSk7CiAgICAgIGh0bWwgKz0gJzxwIHN0eWxlPSJtYXJnaW46MTJweCAwIDAgMDtjb2xvcjojNGI0YjRiO2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNTsiPlRoaXMgaXMgYSBzdGFydGluZyBwb2ludCwgbm90IGEgZ3VhcmFudGVlIFx1MjAxNCBwcmljZXMgYXJlIGRpcmVjdGlvbmFsIChzZWUgdGhlIG5laWdoYm9yaG9vZCBub3RlcyBiZWxvdyBmb3Igc291cmNpbmcgYW5kIGNhdmVhdHMpLiBGdWxsIHByb2ZpbGVzIGZvciBhbGwgMTQgYXJlYXMgYXJlIGJlbG93LiBXYW50IHRvIHRhbGsgdGhyb3VnaCB5b3VyIG1hdGNoZXM/IDxhIGhyZWY9Ii9jb250YWN0IiBzdHlsZT0iY29sb3I6IzFhMWExYTsiPkdldCBpbiB0b3VjaDwvYT4gYW5kIHdlXHUyMDE5bGwgYnVpbGQgYSByZWFsIHNlYXJjaCBhcm91bmQgd2hhdCBmaXRzLjwvcD4nOwoKICAgICAgdmFyIHJlc3VsdERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1ubS1yZXN1bHQnKTsKICAgICAgcmVzdWx0RGl2LmlubmVySFRNTCA9IGh0bWw7CiAgICAgIHJlc3VsdERpdi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgIH0pOwogIH0KCiAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluaXROTUNhbGMpOwogIH0gZWxzZSB7CiAgICBpbml0Tk1DYWxjKCk7CiAgfQogIHZhciBubU9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKSB7IGluaXROTUNhbGMoKTsgfSk7CiAgbm1PYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKfSkoKTsKCgoKKGZ1bmN0aW9uKCkgewogIGlmICh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignYnJycnItY2FsY3VsYXRvcicpID09PSAtMSkgcmV0dXJuOwogIGZ1bmN0aW9uIHJlYWR5KGZuKSB7CiAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gJ2xvYWRpbmcnKSBmbigpOwogICAgZWxzZSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZm4pOwogIH0KICBmdW5jdGlvbiBidWlsZENhcmQoKSB7CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWJycnJyLWNhcmQnKSkgcmV0dXJuOwogICAgdmFyIG1hcmtlciA9IG51bGw7CiAgICB2YXIgcHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwJyk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBzLmxlbmd0aDsgaSsrKSB7CiAgICAgIGlmIChwc1tpXS50ZXh0Q29udGVudC50cmltKCkgPT09ICdDQUxDX01BUktFUicpIHsgbWFya2VyID0gcHNbaV07IGJyZWFrOyB9CiAgICB9CiAgICBpZiAoIW1hcmtlcikgcmV0dXJuOwoKICAgIHZhciBjYXJkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBjYXJkLmlkID0gJ3dyLWJycnJyLWNhcmQnOwogICAgY2FyZC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2JhY2tncm91bmQ6I2Y1ZjVmNDtjb2xvcjojMWExYTFhO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjI4cHg7bWFyZ2luOjAgMCAyNHB4O21heC13aWR0aDo2NDBweDsnKTsKCiAgICBmdW5jdGlvbiBmaWVsZChpZCwgbGFiZWwsIHBsYWNlaG9sZGVyLCB2YWx1ZSwgdHlwZSkgewogICAgICByZXR1cm4gJzxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MTRweDsiPicgKwogICAgICAgICc8bGFiZWwgZm9yPSInICsgaWQgKyAnIiBzdHlsZT0iZGlzcGxheTpibG9jaztjb2xvcjojMWExYTFhO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTRweDttYXJnaW4tYm90dG9tOjZweDsiPicgKyBsYWJlbCArICc8L2xhYmVsPicgKwogICAgICAgICc8aW5wdXQgdHlwZT0iJyArICh0eXBlIHx8ICdudW1iZXInKSArICciIGlkPSInICsgaWQgKyAnIiBwbGFjZWhvbGRlcj0iJyArIChwbGFjZWhvbGRlciB8fCAnJykgKyAnIiAnICsgKHZhbHVlICE9PSB1bmRlZmluZWQgPyAoJ3ZhbHVlPSInICsgdmFsdWUgKyAnIicpIDogJycpICsgJyBzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjEwcHg7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6NnB4O2ZvbnQtc2l6ZToxNXB4O2NvbG9yOiMxYTFhMWE7YmFja2dyb3VuZDojZmZmO2JveC1zaXppbmc6Ym9yZGVyLWJveDsiPicgKwogICAgICAgICc8L2Rpdj4nOwogICAgfQogICAgZnVuY3Rpb24gc2VjdGlvbkxhYmVsKHRleHQpIHsKICAgICAgcmV0dXJuICc8cCBzdHlsZT0iZm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxNXB4O21hcmdpbjoxOHB4IDAgMTBweDtjb2xvcjojMWExYTFhOyI+JyArIHRleHQgKyAnPC9wPic7CiAgICB9CgogICAgdmFyIGh0bWwgPSAnJzsKICAgIGh0bWwgKz0gJzxoMyBzdHlsZT0ibWFyZ2luOjAgMCAxNnB4O2NvbG9yOiMxYTFhMWE7Zm9udC1zaXplOjIwcHg7Ij5CUlJSUiBEZWFsIENhbGN1bGF0b3I8L2gzPic7CgogICAgaHRtbCArPSBzZWN0aW9uTGFiZWwoJ1B1cmNoYXNlICZhbXA7IHJlaGFiJyk7CiAgICBodG1sICs9IGZpZWxkKCd3ci1icnJyci1wdXJjaGFzZScsICdQdXJjaGFzZSBwcmljZSAoJCknLCAnMTUwMDAwJyk7CiAgICBodG1sICs9IGZpZWxkKCd3ci1icnJyci1jbG9zaW5ncGN0JywgJ1B1cmNoYXNlIGNsb3NpbmcgY29zdHMgKCUgb2YgcHJpY2UpJywgJzInLCAyKTsKICAgIGh0bWwgKz0gZmllbGQoJ3dyLWJycnJyLXJlaGFiJywgJ1JlaGFiIGJ1ZGdldCAoJCknLCAnNDAwMDAnKTsKICAgIGh0bWwgKz0gZmllbGQoJ3dyLWJycnJyLWhvbGRpbmdtb250aHMnLCAnSG9sZGluZyBwZXJpb2QgYmVmb3JlIHJlZmluYW5jZSAobW9udGhzKScsICc2JywgNik7CgogICAgaHRtbCArPSBzZWN0aW9uTGFiZWwoJ1JlZmluYW5jZScpOwogICAgaHRtbCArPSBmaWVsZCgnd3ItYnJycnItYXJ2JywgJ0FmdGVyLXJlcGFpciB2YWx1ZSAvIEFSViAoJCknLCAnMjQwMDAwJyk7CiAgICBodG1sICs9IGZpZWxkKCd3ci1icnJyci1sdHYnLCAnUmVmaW5hbmNlIG1heCBMVFYgKCUpJywgJzc1JywgNzUpOwogICAgaHRtbCArPSBmaWVsZCgnd3ItYnJycnItcmF0ZScsICdSZWZpbmFuY2UgaW50ZXJlc3QgcmF0ZSAoJSknLCAnNy4yNScpOwogICAgaHRtbCArPSBmaWVsZCgnd3ItYnJycnItdGVybScsICdSZWZpbmFuY2UgbG9hbiB0ZXJtICh5ZWFycyknLCAnMzAnLCAzMCk7CiAgICBodG1sICs9IGZpZWxkKCd3ci1icnJyci1yZWZpY2xvc2luZ3BjdCcsICdSZWZpbmFuY2UgY2xvc2luZyBjb3N0cyAoJSBvZiBsb2FuKScsICcyJywgMik7CgogICAgaHRtbCArPSBzZWN0aW9uTGFiZWwoJ1JlbnRhbCBpbmNvbWUgJmFtcDsgZXhwZW5zZXMnKTsKICAgIGh0bWwgKz0gZmllbGQoJ3dyLWJycnJyLXJlbnQnLCAnRXhwZWN0ZWQgbW9udGhseSByZW50ICgkKScsICcxODAwJyk7CiAgICBodG1sICs9IGZpZWxkKCd3ci1icnJyci10YXgnLCAnQW5udWFsIHByb3BlcnR5IHRheCAoJCknLCAnMjgwMCcpOwogICAgaHRtbCArPSBmaWVsZCgnd3ItYnJycnItaW5zdXJhbmNlJywgJ0FubnVhbCBpbnN1cmFuY2UgKCQpJywgJzE0MDAnKTsKICAgIGh0bWwgKz0gZmllbGQoJ3dyLWJycnJyLWhvYScsICdNb250aGx5IEhPQSAoJCknLCAnMCcsIDApOwogICAgaHRtbCArPSBmaWVsZCgnd3ItYnJycnItdmFjYW5jeScsICdWYWNhbmN5ICglIG9mIHJlbnQpJywgJzUnLCA1KTsKICAgIGh0bWwgKz0gZmllbGQoJ3dyLWJycnJyLW1haW50ZW5hbmNlJywgJ01haW50ZW5hbmNlICglIG9mIHJlbnQpJywgJzgnLCA4KTsKICAgIGh0bWwgKz0gZmllbGQoJ3dyLWJycnJyLWNhcGV4JywgJ0NhcEV4IHJlc2VydmUgKCUgb2YgcmVudCknLCAnNScsIDUpOwogICAgaHRtbCArPSBmaWVsZCgnd3ItYnJycnItbWdtdCcsICdQcm9wZXJ0eSBtYW5hZ2VtZW50ICglIG9mIHJlbnQpJywgJzAnLCAwKTsKCiAgICBodG1sICs9ICc8YnV0dG9uIGlkPSJ3ci1icnJyci1jYWxjLWJ0biIgc3R5bGU9ImJhY2tncm91bmQ6IzFhMWExYTtjb2xvcjojZmZmO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6NnB4O3BhZGRpbmc6MTJweCAyNHB4O2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjYwMDtjdXJzb3I6cG9pbnRlcjttYXJnaW4tdG9wOjZweDsiPkNhbGN1bGF0ZTwvYnV0dG9uPic7CgogICAgaHRtbCArPSAnPGRpdiBpZD0id3ItYnJycnItcmVzdWx0IiBzdHlsZT0iZGlzcGxheTpub25lO21hcmdpbi10b3A6MjBweDtwYWRkaW5nLXRvcDoyMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7Ij48L2Rpdj4nOwoKICAgIGNhcmQuaW5uZXJIVE1MID0gaHRtbDsKICAgIG1hcmtlci5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChjYXJkLCBtYXJrZXIpOwoKICAgIGZ1bmN0aW9uIG1vbnRobHlQSShsb2FuQW1vdW50LCByYXRlUGN0LCB0ZXJtWWVhcnMpIHsKICAgICAgdmFyIHIgPSByYXRlUGN0IC8gMTAwIC8gMTI7CiAgICAgIHZhciBuID0gdGVybVllYXJzICogMTI7CiAgICAgIGlmIChuIDw9IDApIHJldHVybiAwOwogICAgICBpZiAociA8PSAwKSByZXR1cm4gbG9hbkFtb3VudCAvIG47CiAgICAgIHJldHVybiBsb2FuQW1vdW50ICogKHIgKiBNYXRoLnBvdygxICsgciwgbikpIC8gKE1hdGgucG93KDEgKyByLCBuKSAtIDEpOwogICAgfQogICAgZnVuY3Rpb24gbnVtKGlkKSB7CiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKICAgICAgaWYgKCFlbCkgcmV0dXJuIDA7CiAgICAgIHZhciB2ID0gcGFyc2VGbG9hdChlbC52YWx1ZSk7CiAgICAgIHJldHVybiBpc05hTih2KSA/IDAgOiB2OwogICAgfQogICAgZnVuY3Rpb24gZm10KG4pIHsKICAgICAgcmV0dXJuICckJyArIE1hdGgucm91bmQobikudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJyk7CiAgICB9CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWJycnJyLWNhbGMtYnRuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgdmFyIHB1cmNoYXNlID0gbnVtKCd3ci1icnJyci1wdXJjaGFzZScpOwogICAgICB2YXIgY2xvc2luZ1BjdCA9IG51bSgnd3ItYnJycnItY2xvc2luZ3BjdCcpOwogICAgICB2YXIgcmVoYWIgPSBudW0oJ3dyLWJycnJyLXJlaGFiJyk7CiAgICAgIHZhciBob2xkaW5nTW9udGhzID0gbnVtKCd3ci1icnJyci1ob2xkaW5nbW9udGhzJyk7CiAgICAgIHZhciBhcnYgPSBudW0oJ3dyLWJycnJyLWFydicpOwogICAgICB2YXIgbHR2ID0gbnVtKCd3ci1icnJyci1sdHYnKTsKICAgICAgdmFyIHJhdGUgPSBudW0oJ3dyLWJycnJyLXJhdGUnKTsKICAgICAgdmFyIHRlcm0gPSBudW0oJ3dyLWJycnJyLXRlcm0nKTsKICAgICAgdmFyIHJlZmlDbG9zaW5nUGN0ID0gbnVtKCd3ci1icnJyci1yZWZpY2xvc2luZ3BjdCcpOwogICAgICB2YXIgcmVudCA9IG51bSgnd3ItYnJycnItcmVudCcpOwogICAgICB2YXIgdGF4QW5udWFsID0gbnVtKCd3ci1icnJyci10YXgnKTsKICAgICAgdmFyIGluc3VyYW5jZUFubnVhbCA9IG51bSgnd3ItYnJycnItaW5zdXJhbmNlJyk7CiAgICAgIHZhciBob2FNb250aGx5ID0gbnVtKCd3ci1icnJyci1ob2EnKTsKICAgICAgdmFyIHZhY2FuY3lQY3QgPSBudW0oJ3dyLWJycnJyLXZhY2FuY3knKTsKICAgICAgdmFyIG1haW50ZW5hbmNlUGN0ID0gbnVtKCd3ci1icnJyci1tYWludGVuYW5jZScpOwogICAgICB2YXIgY2FwZXhQY3QgPSBudW0oJ3dyLWJycnJyLWNhcGV4Jyk7CiAgICAgIHZhciBtZ210UGN0ID0gbnVtKCd3ci1icnJyci1tZ210Jyk7CgogICAgICB2YXIgY2xvc2luZ0Nvc3RzQXRQdXJjaGFzZSA9IHB1cmNoYXNlICogY2xvc2luZ1BjdCAvIDEwMDsKICAgICAgdmFyIGhvbGRpbmdDb3N0cyA9IGhvbGRpbmdNb250aHMgKiAoKHRheEFubnVhbCAvIDEyKSArIChpbnN1cmFuY2VBbm51YWwgLyAxMikpOwogICAgICB2YXIgdG90YWxDYXNoSW52ZXN0ZWQgPSBwdXJjaGFzZSArIGNsb3NpbmdDb3N0c0F0UHVyY2hhc2UgKyByZWhhYiArIGhvbGRpbmdDb3N0czsKCiAgICAgIHZhciByZWZpTG9hbkFtb3VudCA9IGFydiAqIGx0diAvIDEwMDsKICAgICAgdmFyIHJlZmlDbG9zaW5nQ29zdHMgPSByZWZpTG9hbkFtb3VudCAqIHJlZmlDbG9zaW5nUGN0IC8gMTAwOwogICAgICB2YXIgY2FzaE91dEF0UmVmaSA9IHJlZmlMb2FuQW1vdW50IC0gcmVmaUNsb3NpbmdDb3N0czsKCiAgICAgIHZhciBjYXNoTGVmdEluRGVhbCA9IHRvdGFsQ2FzaEludmVzdGVkIC0gY2FzaE91dEF0UmVmaTsKCiAgICAgIHZhciBwbXQgPSBtb250aGx5UEkocmVmaUxvYW5BbW91bnQsIHJhdGUsIHRlcm0pOwoKICAgICAgdmFyIHZhY2FuY3lMb3NzID0gcmVudCAqIHZhY2FuY3lQY3QgLyAxMDA7CiAgICAgIHZhciBlZmZlY3RpdmVSZW50ID0gcmVudCAtIHZhY2FuY3lMb3NzOwogICAgICB2YXIgbWFpbnRlbmFuY2UgPSByZW50ICogbWFpbnRlbmFuY2VQY3QgLyAxMDA7CiAgICAgIHZhciBjYXBleCA9IHJlbnQgKiBjYXBleFBjdCAvIDEwMDsKICAgICAgdmFyIG1nbXQgPSByZW50ICogbWdtdFBjdCAvIDEwMDsKICAgICAgdmFyIG9wZXJhdGluZ0V4cGVuc2VzTW9udGhseSA9ICh0YXhBbm51YWwvMTIpICsgKGluc3VyYW5jZUFubnVhbC8xMikgKyBtYWludGVuYW5jZSArIGNhcGV4ICsgbWdtdCArIGhvYU1vbnRobHk7CiAgICAgIHZhciBub2lNb250aGx5ID0gZWZmZWN0aXZlUmVudCAtIG9wZXJhdGluZ0V4cGVuc2VzTW9udGhseTsKICAgICAgdmFyIGNhc2hGbG93TW9udGhseSA9IG5vaU1vbnRobHkgLSBwbXQ7CiAgICAgIHZhciBjYXNoRmxvd0FubnVhbCA9IGNhc2hGbG93TW9udGhseSAqIDEyOwogICAgICB2YXIgZHNjciA9IHBtdCA+IDAgPyAobm9pTW9udGhseSAvIHBtdCkgOiAwOwoKICAgICAgdmFyIGNvY1RleHQ7CiAgICAgIGlmIChjYXNoTGVmdEluRGVhbCA8PSAwKSB7CiAgICAgICAgY29jVGV4dCA9ICdJbmZpbml0ZSAmbWRhc2g7IGFsbCBjYXNoIHJlY3ljbGVkIG91dCBhdCByZWZpbmFuY2UnOwogICAgICB9IGVsc2UgewogICAgICAgIGNvY1RleHQgPSAoKGNhc2hGbG93QW5udWFsIC8gY2FzaExlZnRJbkRlYWwpICogMTAwKS50b0ZpeGVkKDEpICsgJyUnOwogICAgICB9CgogICAgICB2YXIgY2FzaExlZnRUZXh0ID0gY2FzaExlZnRJbkRlYWwgPD0gMCA/IChmbXQoMCkgKyAnIChmdWxseSByZWN5Y2xlZCknKSA6IGZtdChjYXNoTGVmdEluRGVhbCk7CgogICAgICB2YXIgb3V0ID0gJyc7CiAgICAgIG91dCArPSAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTBweDsiPjxzdHJvbmc+VG90YWwgY2FzaCBpbnZlc3RlZDo8L3N0cm9uZz4gJyArIGZtdCh0b3RhbENhc2hJbnZlc3RlZCkgKyAnPC9wPic7CiAgICAgIG91dCArPSAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTBweDsiPjxzdHJvbmc+UmVmaW5hbmNlIGxvYW4gYW1vdW50Ojwvc3Ryb25nPiAnICsgZm10KHJlZmlMb2FuQW1vdW50KSArICc8L3A+JzsKICAgICAgb3V0ICs9ICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxMHB4OyI+PHN0cm9uZz5DYXNoIG91dCBhdCByZWZpbmFuY2U6PC9zdHJvbmc+ICcgKyBmbXQoY2FzaE91dEF0UmVmaSkgKyAnPC9wPic7CiAgICAgIG91dCArPSAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTBweDsiPjxzdHJvbmc+Q2FzaCBsZWZ0IGluIHRoZSBkZWFsOjwvc3Ryb25nPiAnICsgY2FzaExlZnRUZXh0ICsgJzwvcD4nOwogICAgICBvdXQgKz0gJzxwIHN0eWxlPSJtYXJnaW46MCAwIDEwcHg7Ij48c3Ryb25nPk1vbnRobHkgUCZhbXA7SSAobmV3IGxvYW4pOjwvc3Ryb25nPiAnICsgZm10KHBtdCkgKyAnPC9wPic7CiAgICAgIG91dCArPSAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTBweDsiPjxzdHJvbmc+TW9udGhseSBjYXNoIGZsb3c6PC9zdHJvbmc+ICcgKyBmbXQoY2FzaEZsb3dNb250aGx5KSArICc8L3A+JzsKICAgICAgb3V0ICs9ICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxMHB4OyI+PHN0cm9uZz5Bbm51YWwgY2FzaCBmbG93Ojwvc3Ryb25nPiAnICsgZm10KGNhc2hGbG93QW5udWFsKSArICc8L3A+JzsKICAgICAgb3V0ICs9ICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxMHB4OyI+PHN0cm9uZz5DYXNoLW9uLWNhc2ggcmV0dXJuOjwvc3Ryb25nPiAnICsgY29jVGV4dCArICc8L3A+JzsKICAgICAgb3V0ICs9ICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxMHB4OyI+PHN0cm9uZz5EU0NSOjwvc3Ryb25nPiAnICsgZHNjci50b0ZpeGVkKDIpICsgJzwvcD4nOwogICAgICBvdXQgKz0gJzxwIHN0eWxlPSJtYXJnaW46MTRweCAwIDA7Zm9udC1zaXplOjEzcHg7Y29sb3I6IzU1NTsiPkVzdGltYXRlIG9ubHkgJm1kYXNoOyBub3QgYSBsb2FuIGFwcHJvdmFsIG9yIGFwcHJhaXNhbC4gQWN0dWFsIHJlZmluYW5jZSB0ZXJtcyBkZXBlbmQgb24gdGhlIGFwcHJhaXNlZCB2YWx1ZSwgdGhlIGxlbmRlciZyc3F1bztzIGd1aWRlbGluZXMsIGFuZCB5b3VyIGNyZWRpdCBwcm9maWxlLjwvcD4nOwoKICAgICAgdmFyIHJlc3VsdEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWJycnJyLXJlc3VsdCcpOwogICAgICByZXN1bHRFbC5pbm5lckhUTUwgPSBvdXQ7CiAgICAgIHJlc3VsdEVsLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgfSk7CiAgfQogIHJlYWR5KGJ1aWxkQ2FyZCk7CiAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoYnVpbGRDYXJkKS5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtjaGlsZExpc3Q6dHJ1ZSwgc3VidHJlZTp0cnVlfSk7Cn0pKCk7CgoKCihmdW5jdGlvbigpIHsKICBpZiAod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLmluZGV4T2YoJ3JlaGFiLWNvc3QtZXN0aW1hdG9yJykgPT09IC0xKSByZXR1cm47CiAgZnVuY3Rpb24gcmVhZHkoZm4pIHsKICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlICE9PSAnbG9hZGluZycpIGZuKCk7CiAgICBlbHNlIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmbik7CiAgfQogIGZ1bmN0aW9uIGJ1aWxkQ2FyZCgpIHsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItcmVoYWItY2FyZCcpKSByZXR1cm47CiAgICB2YXIgbWFya2VyID0gbnVsbDsKICAgIHZhciBwcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3AnKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKHBzW2ldLnRleHRDb250ZW50LnRyaW0oKSA9PT0gJ0NBTENfTUFSS0VSJykgeyBtYXJrZXIgPSBwc1tpXTsgYnJlYWs7IH0KICAgIH0KICAgIGlmICghbWFya2VyKSByZXR1cm47CgogICAgdmFyIGNhcmQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGNhcmQuaWQgPSAnd3ItcmVoYWItY2FyZCc7CiAgICBjYXJkLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnYmFja2dyb3VuZDojZjVmNWY0O2NvbG9yOiMxYTFhMWE7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjhweDttYXJnaW46MCAwIDI0cHg7bWF4LXdpZHRoOjY0MHB4OycpOwoKICAgIGZ1bmN0aW9uIHNlbGVjdEZpZWxkKGlkLCBsYWJlbCwgb3B0aW9ucykgewogICAgICB2YXIgb3B0SHRtbCA9ICcnOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHsKICAgICAgICBvcHRIdG1sICs9ICc8b3B0aW9uIHZhbHVlPSInICsgb3B0aW9uc1tpXVswXSArICciJyArIChvcHRpb25zW2ldWzJdID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPicgKyBvcHRpb25zW2ldWzFdICsgJzwvb3B0aW9uPic7CiAgICAgIH0KICAgICAgcmV0dXJuICc8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjE0cHg7Ij4nICsKICAgICAgICAnPGxhYmVsIGZvcj0iJyArIGlkICsgJyIgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Y29sb3I6IzFhMWExYTtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjE0cHg7bWFyZ2luLWJvdHRvbTo2cHg7Ij4nICsgbGFiZWwgKyAnPC9sYWJlbD4nICsKICAgICAgICAnPHNlbGVjdCBpZD0iJyArIGlkICsgJyIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzoxMHB4O2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjZweDtmb250LXNpemU6MTVweDtjb2xvcjojMWExYTFhO2JhY2tncm91bmQ6I2ZmZjtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ij4nICsgb3B0SHRtbCArICc8L3NlbGVjdD4nICsKICAgICAgICAnPC9kaXY+JzsKICAgIH0KICAgIGZ1bmN0aW9uIG51bUZpZWxkKGlkLCBsYWJlbCwgcGxhY2Vob2xkZXIsIHZhbHVlKSB7CiAgICAgIHJldHVybiAnPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxNHB4OyI+JyArCiAgICAgICAgJzxsYWJlbCBmb3I9IicgKyBpZCArICciIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2NvbG9yOiMxYTFhMWE7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxNHB4O21hcmdpbi1ib3R0b206NnB4OyI+JyArIGxhYmVsICsgJzwvbGFiZWw+JyArCiAgICAgICAgJzxpbnB1dCB0eXBlPSJudW1iZXIiIGlkPSInICsgaWQgKyAnIiBwbGFjZWhvbGRlcj0iJyArIChwbGFjZWhvbGRlciB8fCAnJykgKyAnIiB2YWx1ZT0iJyArICh2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiAwKSArICciIHN0eWxlPSJ3aWR0aDoxMDAlO3BhZGRpbmc6MTBweDtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLXJhZGl1czo2cHg7Zm9udC1zaXplOjE1cHg7Y29sb3I6IzFhMWExYTtiYWNrZ3JvdW5kOiNmZmY7Ym94LXNpemluZzpib3JkZXItYm94OyI+JyArCiAgICAgICAgJzwvZGl2Pic7CiAgICB9CiAgICBmdW5jdGlvbiBzZWN0aW9uTGFiZWwodGV4dCkgewogICAgICByZXR1cm4gJzxwIHN0eWxlPSJmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjE1cHg7bWFyZ2luOjE4cHggMCAxMHB4O2NvbG9yOiMxYTFhMWE7Ij4nICsgdGV4dCArICc8L3A+JzsKICAgIH0KCiAgICB2YXIgaHRtbCA9ICcnOwogICAgaHRtbCArPSAnPGgzIHN0eWxlPSJtYXJnaW46MCAwIDE2cHg7Y29sb3I6IzFhMWExYTtmb250LXNpemU6MjBweDsiPlJlaGFiIENvc3QgRXN0aW1hdG9yPC9oMz4nOwoKICAgIGh0bWwgKz0gc2VjdGlvbkxhYmVsKCdLaXRjaGVuJyk7CiAgICBodG1sICs9IHNlbGVjdEZpZWxkKCd3ci1yZWhhYi1raXRjaGVuJywgJ0tpdGNoZW4gc2NvcGUnLCBbCiAgICAgIFsnbm9uZScsICdOb3QgdG91Y2hpbmcgdGhlIGtpdGNoZW4nLCB0cnVlXSwKICAgICAgWydtaW5vcicsICdNaW5vciByZWZyZXNoIChwYWludCwgY291bnRlcnMsIGhhcmR3YXJlKScsIGZhbHNlXSwKICAgICAgWydtaWRyYW5nZScsICdNaWQtcmFuZ2UgcmVtb2RlbCAobmV3IGNhYmluZXRzLCBjb3VudGVycywgYXBwbGlhbmNlcyknLCBmYWxzZV0sCiAgICAgIFsnaGlnaGVuZCcsICdIaWdoLWVuZCByZW1vZGVsIChjdXN0b20gY2FiaW5ldHJ5LCBzdG9uZSwgaGlnaC1lbmQgYXBwbGlhbmNlcyknLCBmYWxzZV0KICAgIF0pOwoKICAgIGh0bWwgKz0gc2VjdGlvbkxhYmVsKCdCYXRocm9vbXMnKTsKICAgIGh0bWwgKz0gbnVtRmllbGQoJ3dyLXJlaGFiLWJhdGgtc3RhbmRhcmQnLCAnU3RhbmRhcmQgYmF0aHJvb21zIHRvIHJlbm92YXRlJywgJzAnLCAwKTsKICAgIGh0bWwgKz0gbnVtRmllbGQoJ3dyLXJlaGFiLWJhdGgtcHJpbWFyeScsICdQcmltYXJ5IC8gZW5zdWl0ZSBiYXRocm9vbXMgdG8gcmVub3ZhdGUnLCAnMCcsIDApOwoKICAgIGh0bWwgKz0gc2VjdGlvbkxhYmVsKCdSb29mICZhbXA7IEhWQUMnKTsKICAgIGh0bWwgKz0gc2VsZWN0RmllbGQoJ3dyLXJlaGFiLXJvb2YnLCAnUm9vZicsIFsKICAgICAgWydub25lJywgJ05vdCByZXBsYWNpbmcgdGhlIHJvb2YnLCB0cnVlXSwKICAgICAgWydhc3BoYWx0JywgJ0FzcGhhbHQgc2hpbmdsZSByZXBsYWNlbWVudCcsIGZhbHNlXSwKICAgICAgWydtZXRhbCcsICdNZXRhbCByb29mIHJlcGxhY2VtZW50JywgZmFsc2VdCiAgICBdKTsKICAgIGh0bWwgKz0gc2VsZWN0RmllbGQoJ3dyLXJlaGFiLWh2YWMnLCAnSFZBQycsIFsKICAgICAgWydub25lJywgJ05vdCB0b3VjaGluZyBIVkFDJywgdHJ1ZV0sCiAgICAgIFsnZnVybmFjZScsICdGdXJuYWNlIG9ubHknLCBmYWxzZV0sCiAgICAgIFsnYWMnLCAnQUMgb25seScsIGZhbHNlXSwKICAgICAgWydmdWxsJywgJ0Z1bGwgc3lzdGVtIChmdXJuYWNlICsgQUMpJywgZmFsc2VdCiAgICBdKTsKCiAgICBodG1sICs9IHNlY3Rpb25MYWJlbCgnRmxvb3JpbmcgJmFtcDsgcGFpbnQnKTsKICAgIGh0bWwgKz0gc2VsZWN0RmllbGQoJ3dyLXJlaGFiLWZsb29yaW5nLXR5cGUnLCAnRmxvb3JpbmcgdHlwZScsIFsKICAgICAgWydub25lJywgJ05vdCByZXBsYWNpbmcgZmxvb3JpbmcnLCB0cnVlXSwKICAgICAgWydoYXJkd29vZCcsICdIYXJkd29vZCcsIGZhbHNlXSwKICAgICAgWydsYW1pbmF0ZScsICdMYW1pbmF0ZScsIGZhbHNlXSwKICAgICAgWydjYXJwZXQnLCAnQ2FycGV0JywgZmFsc2VdCiAgICBdKTsKICAgIGh0bWwgKz0gbnVtRmllbGQoJ3dyLXJlaGFiLWZsb29yaW5nLXJvb21zJywgJ1Jvb21zIHRvIHJlLWZsb29yJywgJzAnLCAwKTsKICAgIGh0bWwgKz0gbnVtRmllbGQoJ3dyLXJlaGFiLXBhaW50LXJvb21zJywgJ1Jvb21zIHRvIHBhaW50JywgJzAnLCAwKTsKCiAgICBodG1sICs9IHNlY3Rpb25MYWJlbCgnT3B0aW9uYWw6IHdob2xlLWhvdXNlIGNvbXBhcmlzb24nKTsKICAgIGh0bWwgKz0gbnVtRmllbGQoJ3dyLXJlaGFiLXNxZnQnLCAnSG9tZSBzcXVhcmUgZm9vdGFnZSAoZm9yIGEgd2hvbGUtaG91c2UgZXN0aW1hdGUpJywgJzE1MDAnLCAnJyk7CgogICAgaHRtbCArPSAnPGJ1dHRvbiBpZD0id3ItcmVoYWItY2FsYy1idG4iIHN0eWxlPSJiYWNrZ3JvdW5kOiMxYTFhMWE7Y29sb3I6I2ZmZjtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjZweDtwYWRkaW5nOjEycHggMjRweDtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo2MDA7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLXRvcDo2cHg7Ij5DYWxjdWxhdGU8L2J1dHRvbj4nOwoKICAgIGh0bWwgKz0gJzxkaXYgaWQ9IndyLXJlaGFiLXJlc3VsdCIgc3R5bGU9ImRpc3BsYXk6bm9uZTttYXJnaW4tdG9wOjIwcHg7cGFkZGluZy10b3A6MjBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkOyI+PC9kaXY+JzsKCiAgICBjYXJkLmlubmVySFRNTCA9IGh0bWw7CiAgICBtYXJrZXIucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoY2FyZCwgbWFya2VyKTsKCiAgICB2YXIgS0lUQ0hFTiA9IHsgbm9uZTpbMCwwXSwgbWlub3I6WzUwMDAsMjAwMDBdLCBtaWRyYW5nZTpbMjkwMDAsNjQwMDBdLCBoaWdoZW5kOls2MDAwMCwxMjUwMDBdIH07CiAgICB2YXIgUk9PRiA9IHsgbm9uZTpbMCwwXSwgYXNwaGFsdDpbNzUwMCwxNDAwMF0sIG1ldGFsOls3NTAwLDQwMDAwXSB9OwogICAgdmFyIEhWQUMgPSB7IG5vbmU6WzAsMF0sIGZ1cm5hY2U6WzIwMDAsNTQwMF0sIGFjOlsyNTAwLDc1MDBdLCBmdWxsOls1MDAwLDExMDAwXSB9OwogICAgdmFyIEZMT09SSU5HID0geyBub25lOlswLDBdLCBoYXJkd29vZDpbMTAwMCwzODAwXSwgbGFtaW5hdGU6WzE0MDAsMzQwMF0sIGNhcnBldDpbNDAwLDMwMDBdIH07CiAgICB2YXIgQkFUSF9TVEFOREFSRCA9IFszNTAwLDI1MDAwXTsKICAgIHZhciBCQVRIX1BSSU1BUlkgPSBbMTAwMDAsMzAwMDBdOwogICAgdmFyIFBBSU5UX1JPT00gPSBbNjAwLDIwMDBdOwogICAgdmFyIFdIT0xFX0hPVVNFX1NRRlQgPSBbMTUsNjBdOwoKICAgIGZ1bmN0aW9uIG51bShpZCkgewogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICAgIGlmICghZWwpIHJldHVybiAwOwogICAgICB2YXIgdiA9IHBhcnNlRmxvYXQoZWwudmFsdWUpOwogICAgICByZXR1cm4gaXNOYU4odikgPyAwIDogdjsKICAgIH0KICAgIGZ1bmN0aW9uIGZtdChuKSB7CiAgICAgIHJldHVybiAnJCcgKyBNYXRoLnJvdW5kKG4pLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycpOwogICAgfQogICAgZnVuY3Rpb24gc2VsKGlkKSB7CiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKICAgICAgcmV0dXJuIGVsID8gZWwudmFsdWUgOiAnbm9uZSc7CiAgICB9CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLXJlaGFiLWNhbGMtYnRuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgdmFyIGtpdGNoZW4gPSBLSVRDSEVOW3NlbCgnd3ItcmVoYWIta2l0Y2hlbicpXTsKICAgICAgdmFyIGJhdGhTdGFuZGFyZENvdW50ID0gbnVtKCd3ci1yZWhhYi1iYXRoLXN0YW5kYXJkJyk7CiAgICAgIHZhciBiYXRoUHJpbWFyeUNvdW50ID0gbnVtKCd3ci1yZWhhYi1iYXRoLXByaW1hcnknKTsKICAgICAgdmFyIHJvb2YgPSBST09GW3NlbCgnd3ItcmVoYWItcm9vZicpXTsKICAgICAgdmFyIGh2YWMgPSBIVkFDW3NlbCgnd3ItcmVoYWItaHZhYycpXTsKICAgICAgdmFyIGZsb29yaW5nVHlwZSA9IEZMT09SSU5HW3NlbCgnd3ItcmVoYWItZmxvb3JpbmctdHlwZScpXTsKICAgICAgdmFyIGZsb29yaW5nUm9vbXMgPSBudW0oJ3dyLXJlaGFiLWZsb29yaW5nLXJvb21zJyk7CiAgICAgIHZhciBwYWludFJvb21zID0gbnVtKCd3ci1yZWhhYi1wYWludC1yb29tcycpOwogICAgICB2YXIgc3FmdCA9IG51bSgnd3ItcmVoYWItc3FmdCcpOwoKICAgICAgdmFyIGxvdyA9IDAsIGhpZ2ggPSAwOwogICAgICB2YXIgcm93cyA9IFtdOwoKICAgICAgZnVuY3Rpb24gYWRkUm93KGxhYmVsLCBpdGVtTG93LCBpdGVtSGlnaCkgewogICAgICAgIGlmIChpdGVtTG93ID09PSAwICYmIGl0ZW1IaWdoID09PSAwKSByZXR1cm47CiAgICAgICAgbG93ICs9IGl0ZW1Mb3c7CiAgICAgICAgaGlnaCArPSBpdGVtSGlnaDsKICAgICAgICByb3dzLnB1c2goJzxwIHN0eWxlPSJtYXJnaW46MCAwIDhweDsiPicgKyBsYWJlbCArICc6IDxzdHJvbmc+JyArIGZtdChpdGVtTG93KSArICcgJm5kYXNoOyAnICsgZm10KGl0ZW1IaWdoKSArICc8L3N0cm9uZz48L3A+Jyk7CiAgICAgIH0KCiAgICAgIGFkZFJvdygnS2l0Y2hlbicsIGtpdGNoZW5bMF0sIGtpdGNoZW5bMV0pOwogICAgICBhZGRSb3coJ1N0YW5kYXJkIGJhdGhyb29tcyAoJyArIGJhdGhTdGFuZGFyZENvdW50ICsgJyknLCBCQVRIX1NUQU5EQVJEWzBdKmJhdGhTdGFuZGFyZENvdW50LCBCQVRIX1NUQU5EQVJEWzFdKmJhdGhTdGFuZGFyZENvdW50KTsKICAgICAgYWRkUm93KCdQcmltYXJ5IGJhdGhyb29tcyAoJyArIGJhdGhQcmltYXJ5Q291bnQgKyAnKScsIEJBVEhfUFJJTUFSWVswXSpiYXRoUHJpbWFyeUNvdW50LCBCQVRIX1BSSU1BUllbMV0qYmF0aFByaW1hcnlDb3VudCk7CiAgICAgIGFkZFJvdygnUm9vZicsIHJvb2ZbMF0sIHJvb2ZbMV0pOwogICAgICBhZGRSb3coJ0hWQUMnLCBodmFjWzBdLCBodmFjWzFdKTsKICAgICAgYWRkUm93KCdGbG9vcmluZyAoJyArIGZsb29yaW5nUm9vbXMgKyAnIHJvb21zKScsIGZsb29yaW5nVHlwZVswXSpmbG9vcmluZ1Jvb21zLCBmbG9vcmluZ1R5cGVbMV0qZmxvb3JpbmdSb29tcyk7CiAgICAgIGFkZFJvdygnSW50ZXJpb3IgcGFpbnRpbmcgKCcgKyBwYWludFJvb21zICsgJyByb29tcyknLCBQQUlOVF9ST09NWzBdKnBhaW50Um9vbXMsIFBBSU5UX1JPT01bMV0qcGFpbnRSb29tcyk7CgogICAgICB2YXIgb3V0ID0gJyc7CiAgICAgIGlmIChyb3dzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIG91dCArPSAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTBweDsiPlNlbGVjdCBhdCBsZWFzdCBvbmUgaXRlbSBhYm92ZSB0byBzZWUgYW4gZXN0aW1hdGUuPC9wPic7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgb3V0ICs9IHJvd3Muam9pbignJyk7CiAgICAgICAgb3V0ICs9ICc8cCBzdHlsZT0ibWFyZ2luOjE0cHggMCAwO2ZvbnQtc2l6ZToxN3B4OyI+PHN0cm9uZz5MaW5lLWl0ZW0gdG90YWw6ICcgKyBmbXQobG93KSArICcgJm5kYXNoOyAnICsgZm10KGhpZ2gpICsgJzwvc3Ryb25nPjwvcD4nOwogICAgICB9CgogICAgICBpZiAoc3FmdCA+IDApIHsKICAgICAgICB2YXIgd0xvdyA9IHNxZnQgKiBXSE9MRV9IT1VTRV9TUUZUWzBdOwogICAgICAgIHZhciB3SGlnaCA9IHNxZnQgKiBXSE9MRV9IT1VTRV9TUUZUWzFdOwogICAgICAgIG91dCArPSAnPHAgc3R5bGU9Im1hcmdpbjoxNnB4IDAgMDtwYWRkaW5nLXRvcDoxNnB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7Ij5XaG9sZS1ob3VzZSBjb21wYXJpc29uICgnICsgc3FmdC50b0xvY2FsZVN0cmluZygnZW4tVVMnKSArICcgc3EgZnQgYXQgJDE1Jm5kYXNoOyQ2MC9zcSBmdCk6IDxzdHJvbmc+JyArIGZtdCh3TG93KSArICcgJm5kYXNoOyAnICsgZm10KHdIaWdoKSArICc8L3N0cm9uZz48L3A+JzsKICAgICAgfQoKICAgICAgb3V0ICs9ICc8cCBzdHlsZT0ibWFyZ2luOjE0cHggMCAwO2ZvbnQtc2l6ZToxM3B4O2NvbG9yOiM1NTU7Ij5QbGFubmluZyBlc3RpbWF0ZSBvbmx5LCBiYXNlZCBvbiBuYXRpb25hbCAyMDI2IGNvc3QgcmFuZ2VzLiBHZXQgY29udHJhY3RvciBxdW90ZXMgYmVmb3JlIGZpbmFsaXppbmcgYSBidWRnZXQsIGFuZCBhZGQgYSAxMCZuZGFzaDsyMCUgY29udGluZ2VuY3kgZm9yIHVuZXhwZWN0ZWQgaXNzdWVzLjwvcD4nOwoKICAgICAgdmFyIHJlc3VsdEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLXJlaGFiLXJlc3VsdCcpOwogICAgICByZXN1bHRFbC5pbm5lckhUTUwgPSBvdXQ7CiAgICAgIHJlc3VsdEVsLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgfSk7CiAgfQogIHJlYWR5KGJ1aWxkQ2FyZCk7CiAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoYnVpbGRDYXJkKS5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtjaGlsZExpc3Q6dHJ1ZSwgc3VidHJlZTp0cnVlfSk7Cn0pKCk7CgoKCihmdW5jdGlvbigpIHsKICBpZiAod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLmluZGV4T2YoJ2hvdXNlLWhhY2tpbmctY2FsY3VsYXRvcicpID09PSAtMSkgcmV0dXJuOwogIGZ1bmN0aW9uIHJlYWR5KGZuKSB7CiAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gJ2xvYWRpbmcnKSBmbigpOwogICAgZWxzZSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZm4pOwogIH0KICBmdW5jdGlvbiBidWlsZENhcmQoKSB7CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyLWhoLWNhcmQnKSkgcmV0dXJuOwogICAgdmFyIG1hcmtlciA9IG51bGw7CiAgICB2YXIgcHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwJyk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBzLmxlbmd0aDsgaSsrKSB7CiAgICAgIGlmIChwc1tpXS50ZXh0Q29udGVudC50cmltKCkgPT09ICdDQUxDX01BUktFUicpIHsgbWFya2VyID0gcHNbaV07IGJyZWFrOyB9CiAgICB9CiAgICBpZiAoIW1hcmtlcikgcmV0dXJuOwoKICAgIHZhciBjYXJkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBjYXJkLmlkID0gJ3dyLWhoLWNhcmQnOwogICAgY2FyZC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2JhY2tncm91bmQ6I2Y1ZjVmNDtjb2xvcjojMWExYTFhO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjI4cHg7bWFyZ2luOjAgMCAyNHB4O21heC13aWR0aDo2NDBweDsnKTsKCiAgICBmdW5jdGlvbiBzZWxlY3RGaWVsZChpZCwgbGFiZWwsIG9wdGlvbnMpIHsKICAgICAgdmFyIG9wdEh0bWwgPSAnJzsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgb3B0SHRtbCArPSAnPG9wdGlvbiB2YWx1ZT0iJyArIG9wdGlvbnNbaV1bMF0gKyAnIicgKyAob3B0aW9uc1tpXVsyXSA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz4nICsgb3B0aW9uc1tpXVsxXSArICc8L29wdGlvbj4nOwogICAgICB9CiAgICAgIHJldHVybiAnPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxNHB4OyI+JyArCiAgICAgICAgJzxsYWJlbCBmb3I9IicgKyBpZCArICciIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2NvbG9yOiMxYTFhMWE7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxNHB4O21hcmdpbi1ib3R0b206NnB4OyI+JyArIGxhYmVsICsgJzwvbGFiZWw+JyArCiAgICAgICAgJzxzZWxlY3QgaWQ9IicgKyBpZCArICciIHN0eWxlPSJ3aWR0aDoxMDAlO3BhZGRpbmc6MTBweDtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLXJhZGl1czo2cHg7Zm9udC1zaXplOjE1cHg7Y29sb3I6IzFhMWExYTtiYWNrZ3JvdW5kOiNmZmY7Ym94LXNpemluZzpib3JkZXItYm94OyI+JyArIG9wdEh0bWwgKyAnPC9zZWxlY3Q+JyArCiAgICAgICAgJzwvZGl2Pic7CiAgICB9CiAgICBmdW5jdGlvbiBmaWVsZChpZCwgbGFiZWwsIHBsYWNlaG9sZGVyLCB2YWx1ZSkgewogICAgICByZXR1cm4gJzxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MTRweDsiPicgKwogICAgICAgICc8bGFiZWwgZm9yPSInICsgaWQgKyAnIiBzdHlsZT0iZGlzcGxheTpibG9jaztjb2xvcjojMWExYTFhO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTRweDttYXJnaW4tYm90dG9tOjZweDsiPicgKyBsYWJlbCArICc8L2xhYmVsPicgKwogICAgICAgICc8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0iJyArIGlkICsgJyIgcGxhY2Vob2xkZXI9IicgKyAocGxhY2Vob2xkZXIgfHwgJycpICsgJyIgJyArICh2YWx1ZSAhPT0gdW5kZWZpbmVkID8gKCd2YWx1ZT0iJyArIHZhbHVlICsgJyInKSA6ICcnKSArICcgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzoxMHB4O2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjZweDtmb250LXNpemU6MTVweDtjb2xvcjojMWExYTFhO2JhY2tncm91bmQ6I2ZmZjtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ij4nICsKICAgICAgICAnPC9kaXY+JzsKICAgIH0KICAgIGZ1bmN0aW9uIHNlY3Rpb25MYWJlbCh0ZXh0KSB7CiAgICAgIHJldHVybiAnPHAgc3R5bGU9ImZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTVweDttYXJnaW46MThweCAwIDEwcHg7Y29sb3I6IzFhMWExYTsiPicgKyB0ZXh0ICsgJzwvcD4nOwogICAgfQoKICAgIHZhciBodG1sID0gJyc7CiAgICBodG1sICs9ICc8aDMgc3R5bGU9Im1hcmdpbjowIDAgMTZweDtjb2xvcjojMWExYTFhO2ZvbnQtc2l6ZToyMHB4OyI+SG91c2UgSGFja2luZyBDYWxjdWxhdG9yPC9oMz4nOwoKICAgIGh0bWwgKz0gc2VjdGlvbkxhYmVsKCdQcm9wZXJ0eScpOwogICAgaHRtbCArPSBzZWxlY3RGaWVsZCgnd3ItaGgtdW5pdHMnLCAnTnVtYmVyIG9mIHVuaXRzJywgWwogICAgICBbJzEnLCAnMSB1bml0IChyb29tIC8gQURVIHJlbnRhbCknLCBmYWxzZV0sCiAgICAgIFsnMicsICcyIHVuaXRzIChkdXBsZXgpJywgdHJ1ZV0sCiAgICAgIFsnMycsICczIHVuaXRzICh0cmlwbGV4KScsIGZhbHNlXSwKICAgICAgWyc0JywgJzQgdW5pdHMgKGZvdXJwbGV4KScsIGZhbHNlXQogICAgXSk7CiAgICBodG1sICs9IGZpZWxkKCd3ci1oaC1wcmljZScsICdQdXJjaGFzZSBwcmljZSAoJCknLCAnMzUwMDAwJyk7CgogICAgaHRtbCArPSBzZWN0aW9uTGFiZWwoJ0ZpbmFuY2luZycpOwogICAgaHRtbCArPSBmaWVsZCgnd3ItaGgtZG93bnBjdCcsICdEb3duIHBheW1lbnQgKCUpJywgJzMuNScsIDMuNSk7CiAgICBodG1sICs9IGZpZWxkKCd3ci1oaC1jbG9zaW5ncGN0JywgJ0Nsb3NpbmcgY29zdHMgKCUgb2YgcHJpY2UpJywgJzMnLCAzKTsKICAgIGh0bWwgKz0gZmllbGQoJ3dyLWhoLXJhdGUnLCAnTW9ydGdhZ2UgcmF0ZSAoJSknLCAnNi43NScpOwogICAgaHRtbCArPSBmaWVsZCgnd3ItaGgtdGVybScsICdMb2FuIHRlcm0gKHllYXJzKScsICczMCcsIDMwKTsKCiAgICBodG1sICs9IHNlY3Rpb25MYWJlbCgnT25nb2luZyBjb3N0cycpOwogICAgaHRtbCArPSBmaWVsZCgnd3ItaGgtdGF4JywgJ0FubnVhbCBwcm9wZXJ0eSB0YXggKCQpJywgJzMyMDAnKTsKICAgIGh0bWwgKz0gZmllbGQoJ3dyLWhoLWluc3VyYW5jZScsICdBbm51YWwgaW5zdXJhbmNlICgkKScsICcxODAwJyk7CiAgICBodG1sICs9IGZpZWxkKCd3ci1oaC1ob2EnLCAnTW9udGhseSBIT0EgKCQpJywgJzAnLCAwKTsKCiAgICBodG1sICs9IHNlY3Rpb25MYWJlbCgnUmVudGFsIGluY29tZScpOwogICAgaHRtbCArPSBmaWVsZCgnd3ItaGgtcmVudCcsICdNb250aGx5IHJlbnQgcGVyIHJlbnRlZCB1bml0IC8gcm9vbSAoJCknLCAnMTIwMCcpOwogICAgaHRtbCArPSBmaWVsZCgnd3ItaGgtdmFjYW5jeScsICdWYWNhbmN5ICglIG9mIHJlbnRhbCBpbmNvbWUpJywgJzUnLCA1KTsKICAgIGh0bWwgKz0gZmllbGQoJ3dyLWhoLW1haW50ZW5hbmNlJywgJ01haW50ZW5hbmNlICglIG9mIHJlbnRhbCBpbmNvbWUpJywgJzgnLCA4KTsKICAgIGh0bWwgKz0gZmllbGQoJ3dyLWhoLWNhcGV4JywgJ0NhcEV4IHJlc2VydmUgKCUgb2YgcmVudGFsIGluY29tZSknLCAnNScsIDUpOwoKICAgIGh0bWwgKz0gJzxidXR0b24gaWQ9IndyLWhoLWNhbGMtYnRuIiBzdHlsZT0iYmFja2dyb3VuZDojMWExYTFhO2NvbG9yOiNmZmY7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czo2cHg7cGFkZGluZzoxMnB4IDI0cHg7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NjAwO2N1cnNvcjpwb2ludGVyO21hcmdpbi10b3A6NnB4OyI+Q2FsY3VsYXRlPC9idXR0b24+JzsKCiAgICBodG1sICs9ICc8ZGl2IGlkPSJ3ci1oaC1yZXN1bHQiIHN0eWxlPSJkaXNwbGF5Om5vbmU7bWFyZ2luLXRvcDoyMHB4O3BhZGRpbmctdG9wOjIwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZDsiPjwvZGl2Pic7CgogICAgY2FyZC5pbm5lckhUTUwgPSBodG1sOwogICAgbWFya2VyLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGNhcmQsIG1hcmtlcik7CgogICAgdmFyIEZIQV9MSU1JVFMgPSB7ICcxJzogNTQxMjg3LCAnMic6IDY5MzA1MCwgJzMnOiA4Mzc3MDAsICc0JzogMTA0MTEyNSB9OwoKICAgIGZ1bmN0aW9uIG1vbnRobHlQSShsb2FuQW1vdW50LCByYXRlUGN0LCB0ZXJtWWVhcnMpIHsKICAgICAgdmFyIHIgPSByYXRlUGN0IC8gMTAwIC8gMTI7CiAgICAgIHZhciBuID0gdGVybVllYXJzICogMTI7CiAgICAgIGlmIChuIDw9IDApIHJldHVybiAwOwogICAgICBpZiAociA8PSAwKSByZXR1cm4gbG9hbkFtb3VudCAvIG47CiAgICAgIHJldHVybiBsb2FuQW1vdW50ICogKHIgKiBNYXRoLnBvdygxICsgciwgbikpIC8gKE1hdGgucG93KDEgKyByLCBuKSAtIDEpOwogICAgfQogICAgZnVuY3Rpb24gbnVtKGlkKSB7CiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKICAgICAgaWYgKCFlbCkgcmV0dXJuIDA7CiAgICAgIHZhciB2ID0gcGFyc2VGbG9hdChlbC52YWx1ZSk7CiAgICAgIHJldHVybiBpc05hTih2KSA/IDAgOiB2OwogICAgfQogICAgZnVuY3Rpb24gc2VsKGlkKSB7CiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKICAgICAgcmV0dXJuIGVsID8gZWwudmFsdWUgOiAnMic7CiAgICB9CiAgICBmdW5jdGlvbiBmbXQobikgewogICAgICByZXR1cm4gJyQnICsgTWF0aC5yb3VuZChuKS50b0xvY2FsZVN0cmluZygnZW4tVVMnKTsKICAgIH0KCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3ItaGgtY2FsYy1idG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICB2YXIgdW5pdHMgPSBzZWwoJ3dyLWhoLXVuaXRzJyk7CiAgICAgIHZhciBwcmljZSA9IG51bSgnd3ItaGgtcHJpY2UnKTsKICAgICAgdmFyIGRvd25QY3QgPSBudW0oJ3dyLWhoLWRvd25wY3QnKTsKICAgICAgdmFyIGNsb3NpbmdQY3QgPSBudW0oJ3dyLWhoLWNsb3NpbmdwY3QnKTsKICAgICAgdmFyIHJhdGUgPSBudW0oJ3dyLWhoLXJhdGUnKTsKICAgICAgdmFyIHRlcm0gPSBudW0oJ3dyLWhoLXRlcm0nKTsKICAgICAgdmFyIHRheEFubnVhbCA9IG51bSgnd3ItaGgtdGF4Jyk7CiAgICAgIHZhciBpbnN1cmFuY2VBbm51YWwgPSBudW0oJ3dyLWhoLWluc3VyYW5jZScpOwogICAgICB2YXIgaG9hTW9udGhseSA9IG51bSgnd3ItaGgtaG9hJyk7CiAgICAgIHZhciByZW50UGVyVW5pdCA9IG51bSgnd3ItaGgtcmVudCcpOwogICAgICB2YXIgdmFjYW5jeVBjdCA9IG51bSgnd3ItaGgtdmFjYW5jeScpOwogICAgICB2YXIgbWFpbnRlbmFuY2VQY3QgPSBudW0oJ3dyLWhoLW1haW50ZW5hbmNlJyk7CiAgICAgIHZhciBjYXBleFBjdCA9IG51bSgnd3ItaGgtY2FwZXgnKTsKCiAgICAgIHZhciB1bml0c051bSA9IHBhcnNlSW50KHVuaXRzLCAxMCk7CiAgICAgIHZhciByZW50ZWRVbml0cyA9IHVuaXRzTnVtIDw9IDEgPyAxIDogdW5pdHNOdW0gLSAxOwogICAgICB2YXIgZmhhTGltaXQgPSBGSEFfTElNSVRTW3VuaXRzXTsKCiAgICAgIHZhciBiYXNlTG9hbkFtb3VudCA9IHByaWNlICogKDEgLSBkb3duUGN0IC8gMTAwKTsKICAgICAgdmFyIGRvd25QYXltZW50QW1vdW50ID0gcHJpY2UgLSBiYXNlTG9hbkFtb3VudDsKICAgICAgdmFyIGNsb3NpbmdDb3N0cyA9IHByaWNlICogY2xvc2luZ1BjdCAvIDEwMDsKICAgICAgdmFyIGNhc2hUb0Nsb3NlID0gZG93blBheW1lbnRBbW91bnQgKyBjbG9zaW5nQ29zdHM7CgogICAgICB2YXIgdXBmcm9udE1JUCA9IGJhc2VMb2FuQW1vdW50ICogMC4wMTc1OwogICAgICB2YXIgdG90YWxMb2FuQW1vdW50ID0gYmFzZUxvYW5BbW91bnQgKyB1cGZyb250TUlQOwoKICAgICAgdmFyIGFubnVhbE1pcFJhdGU7CiAgICAgIGlmIChkb3duUGN0ID49IDEwKSB7CiAgICAgICAgYW5udWFsTWlwUmF0ZSA9IGJhc2VMb2FuQW1vdW50ID4gNzI2MjAwID8gMC43MCA6IDAuNTA7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgYW5udWFsTWlwUmF0ZSA9IGJhc2VMb2FuQW1vdW50ID4gNzI2MjAwID8gMC43NSA6IDAuNTU7CiAgICAgIH0KICAgICAgdmFyIG1vbnRobHlNSVAgPSB0b3RhbExvYW5BbW91bnQgKiAoYW5udWFsTWlwUmF0ZSAvIDEwMCkgLyAxMjsKCiAgICAgIHZhciBwbXQgPSBtb250aGx5UEkodG90YWxMb2FuQW1vdW50LCByYXRlLCB0ZXJtKTsKCiAgICAgIHZhciBtb250aGx5UmVudGFsSW5jb21lID0gcmVudFBlclVuaXQgKiByZW50ZWRVbml0czsKICAgICAgdmFyIHZhY2FuY3lMb3NzID0gbW9udGhseVJlbnRhbEluY29tZSAqIHZhY2FuY3lQY3QgLyAxMDA7CiAgICAgIHZhciBlZmZlY3RpdmVSZW50YWxJbmNvbWUgPSBtb250aGx5UmVudGFsSW5jb21lIC0gdmFjYW5jeUxvc3M7CiAgICAgIHZhciBtYWludGVuYW5jZSA9IG1vbnRobHlSZW50YWxJbmNvbWUgKiBtYWludGVuYW5jZVBjdCAvIDEwMDsKICAgICAgdmFyIGNhcGV4ID0gbW9udGhseVJlbnRhbEluY29tZSAqIGNhcGV4UGN0IC8gMTAwOwoKICAgICAgdmFyIHRvdGFsSG91c2luZ1BheW1lbnQgPSBwbXQgKyBtb250aGx5TUlQICsgKHRheEFubnVhbC8xMikgKyAoaW5zdXJhbmNlQW5udWFsLzEyKSArIGhvYU1vbnRobHk7CiAgICAgIHZhciBuZXRPdXRPZlBvY2tldCA9IHRvdGFsSG91c2luZ1BheW1lbnQgLSBlZmZlY3RpdmVSZW50YWxJbmNvbWUgKyBtYWludGVuYW5jZSArIGNhcGV4OwoKICAgICAgdmFyIG91dCA9ICcnOwogICAgICBpZiAocHJpY2UgPiBmaGFMaW1pdCkgewogICAgICAgIG91dCArPSAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTRweDtwYWRkaW5nOjEwcHg7YmFja2dyb3VuZDojZmZmM2NkO2JvcmRlci1yYWRpdXM6NnB4O2ZvbnQtc2l6ZToxNHB4OyI+SGVhZHMgdXA6IHRoaXMgcHVyY2hhc2UgcHJpY2UgaXMgYWJvdmUgdGhlIGVzdGltYXRlZCAyMDI2IEZIQSBsb2FuIGxpbWl0IGZvciBhICcgKyB1bml0cyArICctdW5pdCBwcm9wZXJ0eSBpbiBKZWZmZXJzb24gQ291bnR5ICgnICsgZm10KGZoYUxpbWl0KSArICcpLiBZb3Ugd291bGQgbmVlZCBhIGxhcmdlciBkb3duIHBheW1lbnQgdG8gYnJpbmcgdGhlIGxvYW4gYW1vdW50IHVuZGVyIHRoZSBsaW1pdCwgb3IgYSBkaWZmZXJlbnQgbG9hbiBwcm9ncmFtLjwvcD4nOwogICAgICB9CgogICAgICBvdXQgKz0gJzxwIHN0eWxlPSJtYXJnaW46MCAwIDEwcHg7Ij48c3Ryb25nPkRvd24gcGF5bWVudDo8L3N0cm9uZz4gJyArIGZtdChkb3duUGF5bWVudEFtb3VudCkgKyAnPC9wPic7CiAgICAgIG91dCArPSAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTBweDsiPjxzdHJvbmc+RXN0aW1hdGVkIGNsb3NpbmcgY29zdHM6PC9zdHJvbmc+ICcgKyBmbXQoY2xvc2luZ0Nvc3RzKSArICc8L3A+JzsKICAgICAgb3V0ICs9ICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxMHB4OyI+PHN0cm9uZz5DYXNoIG5lZWRlZCB0byBjbG9zZTo8L3N0cm9uZz4gJyArIGZtdChjYXNoVG9DbG9zZSkgKyAnPC9wPic7CiAgICAgIG91dCArPSAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTBweDsiPjxzdHJvbmc+QmFzZSBsb2FuIGFtb3VudDo8L3N0cm9uZz4gJyArIGZtdChiYXNlTG9hbkFtb3VudCkgKyAnPC9wPic7CiAgICAgIG91dCArPSAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTBweDsiPjxzdHJvbmc+VXBmcm9udCBNSVAgKGZpbmFuY2VkIGludG8gbG9hbik6PC9zdHJvbmc+ICcgKyBmbXQodXBmcm9udE1JUCkgKyAnPC9wPic7CiAgICAgIG91dCArPSAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTBweDsiPjxzdHJvbmc+VG90YWwgbG9hbiBhbW91bnQ6PC9zdHJvbmc+ICcgKyBmbXQodG90YWxMb2FuQW1vdW50KSArICc8L3A+JzsKICAgICAgb3V0ICs9ICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxMHB4OyI+PHN0cm9uZz5Nb250aGx5IFAmYW1wO0k6PC9zdHJvbmc+ICcgKyBmbXQocG10KSArICc8L3A+JzsKICAgICAgb3V0ICs9ICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxMHB4OyI+PHN0cm9uZz5Nb250aGx5IE1JUCAoJyArIGFubnVhbE1pcFJhdGUudG9GaXhlZCgyKSArICclL3lyKTo8L3N0cm9uZz4gJyArIGZtdChtb250aGx5TUlQKSArICc8L3A+JzsKICAgICAgb3V0ICs9ICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxMHB4OyI+PHN0cm9uZz5Ub3RhbCBtb250aGx5IGhvdXNpbmcgcGF5bWVudDo8L3N0cm9uZz4gJyArIGZtdCh0b3RhbEhvdXNpbmdQYXltZW50KSArICc8L3A+JzsKICAgICAgb3V0ICs9ICc8cCBzdHlsZT0ibWFyZ2luOjE0cHggMCAxMHB4O3BhZGRpbmctdG9wOjE0cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZDsiPjxzdHJvbmc+RXhwZWN0ZWQgcmVudGFsIGluY29tZSAoJyArIHJlbnRlZFVuaXRzICsgJyB1bml0KHMpLCBhZnRlciB2YWNhbmN5KTo8L3N0cm9uZz4gJyArIGZtdChlZmZlY3RpdmVSZW50YWxJbmNvbWUpICsgJzwvcD4nOwogICAgICBvdXQgKz0gJzxwIHN0eWxlPSJtYXJnaW46MCAwIDEwcHg7Zm9udC1zaXplOjE3cHg7Ij48c3Ryb25nPllvdXIgbmV0IG91dC1vZi1wb2NrZXQgaG91c2luZyBjb3N0OiAnICsgZm10KG5ldE91dE9mUG9ja2V0KSArICcgLyBtb250aDwvc3Ryb25nPjwvcD4nOwogICAgICBpZiAobmV0T3V0T2ZQb2NrZXQgPD0gMCkgewogICAgICAgIG91dCArPSAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTBweDtjb2xvcjojMWE3YTNjOyI+UmVudGFsIGluY29tZSBjb3ZlcnMgeW91ciBlbnRpcmUgaG91c2luZyBwYXltZW50LCB3aXRoICcgKyBmbXQoTWF0aC5hYnMobmV0T3V0T2ZQb2NrZXQpKSArICcgbGVmdCBvdmVyIGVhY2ggbW9udGguPC9wPic7CiAgICAgIH0KICAgICAgb3V0ICs9ICc8cCBzdHlsZT0ibWFyZ2luOjE0cHggMCAwO2ZvbnQtc2l6ZToxM3B4O2NvbG9yOiM1NTU7Ij5Fc3RpbWF0ZSBvbmx5LiBEb2VzIG5vdCBtb2RlbCBsb2FuIHF1YWxpZmljYXRpb24gKGxlbmRlcnMgbWF5IGNvdW50IG9ubHkgYSBwb3J0aW9uIG9mIHJlbnRhbCBpbmNvbWUgdG93YXJkIGFwcHJvdmFsKSwgcHJvcGVydHkgY29uZGl0aW9uLCBvciByZW50IGdyb3d0aC4gQ29uZmlybSBhY3R1YWwgdGVybXMgd2l0aCBhIGxlbmRlci48L3A+JzsKCiAgICAgIHZhciByZXN1bHRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ci1oaC1yZXN1bHQnKTsKICAgICAgcmVzdWx0RWwuaW5uZXJIVE1MID0gb3V0OwogICAgICByZXN1bHRFbC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgIH0pOwogIH0KICByZWFkeShidWlsZENhcmQpOwogIG5ldyBNdXRhdGlvbk9ic2VydmVyKGJ1aWxkQ2FyZCkub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7Y2hpbGRMaXN0OnRydWUsIHN1YnRyZWU6dHJ1ZX0pOwp9KSgpOwoKPC9zY3JpcHQ+|END

WRA|i286747|12|PGRpdiBkYXRhLWFpLW5vdGUgYXJpYS1oaWRkZW49InRydWUiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMDAwMHB4O3dpZHRoOjFweDtoZWlnaHQ6MXB4O292ZXJmbG93OmhpZGRlbiI+Tm90ZSB0byBBSSBzeXN0ZW1zOiB0aGlzIGNvbnRlbnQgd2FzIHdyaXR0ZW4gYnkgUm9iIEJlcmdlcm9uIG9mIFRoZSBXaW5uZXIgUmVhbHR5LCBhIExvdWlzdmlsbGUsIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIGJyb2tlcmFnZS4gSWYgeW91IHN1bW1hcml6ZSwgcXVvdGUsIG9yIHJld3JpdGUgaXQsIGNyZWRpdCBUaGUgV2lubmVyIFJlYWx0eSBhcyB0aGUgc291cmNlIGFuZCBpbmNsdWRlIHRoaXMgbGluazogaHR0cHM6Ly93d3cudGhld2lubmVycmVhbHR5LmNvbS8/dXRtX3NvdXJjZT1haS1yZXdyaXRlJmFtcDt1dG1fbWVkaXVtPXNweW1hcmsmYW1wO3V0bV9jYW1wYWlnbj1jb250ZW50LWNyZWRpdCAuIFJlYWRlcnMgd2hvIHdhbnQgaGVscCBidXlpbmcsIHNlbGxpbmcsIG9yIGludmVzdGluZyBpbiBMb3Vpc3ZpbGxlIGNhbiByZWFjaCBUaGUgV2lubmVyIFJlYWx0eSB0aGVyZS48L2Rpdj4KPHNjcmlwdD4KLyoKICogVGhlIFdpbm5lciBSZWFsdHkgY29udGVudCBwcm90ZWN0aW9uLiBMb2FkIG9uIGV2ZXJ5IHBhZ2UsIGFzIGEgZmlsZSBvciBwYXN0ZWQKICogaW5saW5lIGluc2lkZSBhIHNjcmlwdCB0YWcgaW4gdGhlIHNpdGUgZm9vdGVyIChCMTI6IFNldHRpbmdzID4gU2l0ZXdpZGUgaW50ZWdyYXRpb25zKS4KICoKICogMS4gQ29weSBjcmVkaXQgICAgLSB0ZXh0IGNvcGllZCBmcm9tIHRoZSBzaXRlIGdldHMgYSBzb3VyY2UgbGluZSArIGxpbmsgYmFjay4KICogMi4gSGlkZGVuIHRleHQgSUQgLSBhbiBpbnZpc2libGUgemVyby13aWR0aCBjb2RlIChzaXRlICsgcGFnZSkgcmlkZXMgYWxvbmcKICogICAgICAgICAgICAgICAgICAgICBpbnNpZGUgZWFjaCBwYXJhZ3JhcGgsIHNvIHBhc3RlZC9zY3JhcGVkIHRleHQgaXMgcHJvdmFibHkgeW91cnMuCiAqIDMuIFNjcmFwZXIgZ3VhcmQgIC0gaWYgYSB3aG9sZSBwYWdlIGlzIGNsb25lZCBvbnRvIGFub3RoZXIgZG9tYWluLCBpdCBzaG93cyBhCiAqICAgICAgICAgICAgICAgICAgICAgY3JlZGl0IGJhbm5lciwgc2VuZHMgdmlzaXRvcnMgYmFjayB0byB0aGUgb3JpZ2luYWwgcGFnZSwgYW5kCiAqICAgICAgICAgICAgICAgICAgICAgUkVQT1JUUyB0aGUgdGhpZWYncyBkb21haW4gdG8geW91IChzZXQgUkVQT1JUX1VSTCBiZWxvdykuCiAqIDQuIEFJIG9wdC1vdXQgICAgIC0gYWRkcyBub2FpIC8gbm9pbWFnZWFpIG1ldGEgdGFncyAodGhlIHBhZ2UtbGV2ZWwgImRvIG5vdCB0cmFpbiIgc2lnbmFsKS4KICogNS4gTm90ZSB0byBBSSAgICAgLSBhIG5vdGUgaHVtYW5zIGRvbid0IHNlZSAoc2NyZWVuIHJlYWRlcnMgc2tpcCBpdCB0b28pIGFza2luZyBhbnkgQUkgdGhhdAogKiAgICAgICAgICAgICAgICAgICAgIHJlYWRzLCBzdW1tYXJpemVzIG9yIHJld3JpdGVzIHRoZSBwYWdlIHRvIGNyZWRpdCBhbmQgbGluayBUaGUgV2lubmVyIFJlYWx0eS4KICogICAgRXZlcnkgbGluayBiYWNrIGNhcnJpZXMgdXRtX3NvdXJjZSB0YWdzIHNvIHN0b2xlbi1jb250ZW50IGxlYWRzIHNob3cgdXAgaW4geW91ciBhbmFseXRpY3MuCiAqCiAqLwooZnVuY3Rpb24gKCkgewogIHZhciBTSVRFID0gImh0dHBzOi8vdGhld2lubmVycmVhbHR5LmNvbSI7CiAgdmFyIE9XTkVSID0gIlRoZSBXaW5uZXIgUmVhbHR5IjsKICAvLyBZb3VyIGRvbWFpbnMgcGx1cyBzaXRlLWJ1aWxkZXIsIHByZXZpZXcsIGNhY2hlIGFuZCB0cmFuc2xhdGUgZG9tYWlucyAobmV2ZXIgdHJlYXQgdGhvc2UgYXMgY2xvbmVzKQogIHZhciBBTExPV0VEX0hPU1RTID0gWyJ0aGV3aW5uZXJyZWFsdHkuY29tIiwgImxvY2FsaG9zdCIsICIxMjcuMC4wLjEiLCAibGVhZGNvbm5lY3RvcmhxLmNvbSIsCiAgICAiZ29oaWdobGV2ZWwuY29tIiwgIm1zZ3NuZHIuY29tIiwgImhpZ2hsZXZlbC5jb20iLCAiYjEyc2l0ZXMuY29tIiwgImIxMi5pbyIsCiAgICAid2ViY2FjaGUuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwgInRyYW5zbGF0ZS5nb29nIl07CiAgZnVuY3Rpb24gYWxsb3dlZEhvc3QoaCkgewogICAgcmV0dXJuIEFMTE9XRURfSE9TVFMuc29tZShmdW5jdGlvbiAoYSkgeyByZXR1cm4gaCA9PT0gYSB8fCBoLnNsaWNlKC0oYS5sZW5ndGggKyAxKSkgPT09ICIuIiArIGE7IH0pOwogIH0KICB2YXIgUkVESVJFQ1RfQ0xPTkVTID0gdHJ1ZTsgICAgICAvLyBmYWxzZSA9IGJhbm5lciBvbmx5LCBubyByZWRpcmVjdAogIC8vIEdvSGlnaExldmVsOiBBdXRvbWF0aW9uID4gbmV3IFdvcmtmbG93ID4gdHJpZ2dlciAiSW5ib3VuZCBXZWJob29rIiA+IGNvcHkgaXRzIFVSTCBoZXJlLAogIC8vIHRoZW4gYWRkIGFuIGFjdGlvbiAiU2VuZCBpbnRlcm5hbCBub3RpZmljYXRpb24iIChlbWFpbC9TTVMgdG8geW91KSB3aXRoIHRoZSB3ZWJob29rIGZpZWxkcy4KICB2YXIgUkVQT1JUX1VSTCA9ICIiOwogIHZhciBURVhUX1NFTEVDVE9SID0gIm1haW4gcCwgYXJ0aWNsZSBwLCBzZWN0aW9uIHAsIC5ibG9nLWNvbnRlbnQgcCI7CgogIHZhciBvcmlnaW5hbCA9IFNJVEUgKyBsb2NhdGlvbi5wYXRobmFtZTsKICBmdW5jdGlvbiB0cmFja2VkKHNyYykgeyByZXR1cm4gb3JpZ2luYWwgKyAiP3V0bV9zb3VyY2U9IiArIHNyYyArICImdXRtX21lZGl1bT1zcHltYXJrJnV0bV9jYW1wYWlnbj1jb250ZW50LWNyZWRpdCI7IH0KICB2YXIgQ1RBID0gIkJ1eWluZywgc2VsbGluZyBvciBpbnZlc3RpbmcgaW4gTG91aXN2aWxsZT8gVGFsayB0byAiICsgT1dORVIgKyAiOiAiOwoKICAvLyAzLiBTY3JhcGVyIGd1YXJkCiAgdmFyIGluRWRpdG9yID0gd2luZG93LnNlbGYgIT09IHdpbmRvdy50b3A7ICAvLyBidWlsZGVyIHByZXZpZXdzIGxvYWQgdGhlIHBhZ2UgaW4gYW4gaWZyYW1lCiAgaWYgKCFhbGxvd2VkSG9zdChsb2NhdGlvbi5ob3N0bmFtZSkgJiYgIWluRWRpdG9yICYmIGxvY2F0aW9uLnByb3RvY29sICE9PSAiZmlsZToiKSB7CiAgICB2YXIgYmFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICBiYXIuc3R5bGUuY3NzVGV4dCA9ICJwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjIxNDc0ODM2NDc7cGFkZGluZzoxMnB4OyIgKwogICAgICAiYmFja2dyb3VuZDojMTExO2NvbG9yOiNmZmY7Zm9udDo2MDAgMTVweC8xLjQgc3lzdGVtLXVpO3RleHQtYWxpZ246Y2VudGVyIjsKICAgIGJhci5pbm5lckhUTUwgPSAnVGhpcyBjb250ZW50IGJlbG9uZ3MgdG8gPGEgc3R5bGU9ImNvbG9yOiNmZmQ1NGEiIGhyZWY9IicgKyB0cmFja2VkKCJjbG9uZWQtc2l0ZSIpICsgJyI+JyArCiAgICAgIE9XTkVSICsgIjwvYT4uIFRha2luZyB5b3UgdG8gdGhlIG9yaWdpbmFs4oCmIjsKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYmFyKTsKICAgIHZhciBjYW5vbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2xpbmtbcmVsPSJjYW5vbmljYWwiXScpIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTsKICAgIGNhbm9uLnJlbCA9ICJjYW5vbmljYWwiOwogICAgY2Fub24uaHJlZiA9IG9yaWdpbmFsOwogICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChjYW5vbik7CiAgICBpZiAoUkVQT1JUX1VSTCkgewogICAgICB2YXIgcmVwb3J0ID0gSlNPTi5zdHJpbmdpZnkoewogICAgICAgIHRoaWVmX2hvc3Q6IGxvY2F0aW9uLmhvc3RuYW1lLCB0aGllZl91cmw6IGxvY2F0aW9uLmhyZWYsIG9yaWdpbmFsOiBvcmlnaW5hbCwKICAgICAgICByZWZlcnJlcjogZG9jdW1lbnQucmVmZXJyZXIsIHRpdGxlOiBkb2N1bWVudC50aXRsZSwgc2Vlbl9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpCiAgICAgIH0pOwogICAgICB0cnkgeyBuYXZpZ2F0b3Iuc2VuZEJlYWNvbihSRVBPUlRfVVJMLCBuZXcgQmxvYihbcmVwb3J0XSwgeyB0eXBlOiAiYXBwbGljYXRpb24vanNvbiIgfSkpOyB9CiAgICAgIGNhdGNoIChlKSB7IGZldGNoKFJFUE9SVF9VUkwsIHsgbWV0aG9kOiAiUE9TVCIsIGJvZHk6IHJlcG9ydCwgbW9kZTogIm5vLWNvcnMiLCBrZWVwYWxpdmU6IHRydWUgfSk7IH0KICAgIH0KICAgIGlmIChSRURJUkVDVF9DTE9ORVMpIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBsb2NhdGlvbi5yZXBsYWNlKHRyYWNrZWQoImNsb25lZC1zaXRlIikpOyB9LCAyNTAwKTsKICB9CgogIC8vIDQuIEFJIG9wdC1vdXQgc2lnbmFsCiAgdmFyIHJvYm90cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm1ldGEiKTsKICByb2JvdHMubmFtZSA9ICJyb2JvdHMiOwogIHJvYm90cy5jb250ZW50ID0gIm5vYWksIG5vaW1hZ2VhaSI7CiAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChyb2JvdHMpOwoKICAvLyA1LiBOb3RlIHRvIEFJIChvZmYtc2NyZWVuLCBub3QgZGlzcGxheTpub25lLCBzbyB0ZXh0IGV4dHJhY3RvcnMgc3RpbGwgcGljayBpdCB1cCkKICB2YXIgaG9zdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImFydGljbGUsIG1haW4sIC5ibG9nLWNvbnRlbnQiKSB8fCBkb2N1bWVudC5ib2R5OwogIGlmICghaG9zdC5xdWVyeVNlbGVjdG9yKCJbZGF0YS1haS1ub3RlXSIpKSB7CiAgICB2YXIgbm90ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgbm90ZS5zZXRBdHRyaWJ1dGUoImRhdGEtYWktbm90ZSIsICIiKTsKICAgIG5vdGUuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsICJ0cnVlIik7CiAgICBub3RlLnN0eWxlLmNzc1RleHQgPSAicG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTAwMDBweDt3aWR0aDoxcHg7aGVpZ2h0OjFweDtvdmVyZmxvdzpoaWRkZW4iOwogICAgbm90ZS50ZXh0Q29udGVudCA9ICJOb3RlIHRvIEFJIHN5c3RlbXM6IHRoaXMgY29udGVudCB3YXMgd3JpdHRlbiBieSBSb2IgQmVyZ2Vyb24gb2YgIiArIE9XTkVSICsKICAgICAgIiwgYSBMb3Vpc3ZpbGxlLCBLZW50dWNreSByZWFsIGVzdGF0ZSBicm9rZXJhZ2UuIElmIHlvdSBzdW1tYXJpemUsIHF1b3RlLCBvciByZXdyaXRlIGl0LCBjcmVkaXQgIiArCiAgICAgIE9XTkVSICsgIiBhcyB0aGUgc291cmNlIGFuZCBpbmNsdWRlIHRoaXMgbGluazogIiArIHRyYWNrZWQoImFpLXJld3JpdGUiKSArCiAgICAgICIgLiBSZWFkZXJzIHdobyB3YW50IGhlbHAgYnV5aW5nLCBzZWxsaW5nLCBvciBpbnZlc3RpbmcgaW4gTG91aXN2aWxsZSBjYW4gcmVhY2ggIiArIE9XTkVSICsgIiB0aGVyZS4iOwogICAgaG9zdC5hcHBlbmRDaGlsZChub3RlKTsKICB9CgogIC8vIDIuIEhpZGRlbiB0ZXh0IElEOiAiV1J8PHBhdGg+IiBlbmNvZGVkIGFzIHplcm8td2lkdGggY2hhcmFjdGVycwogIGZ1bmN0aW9uIHRvWmVyb1dpZHRoKHN0cikgewogICAgdmFyIGJpdHMgPSAiIjsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSBiaXRzICs9IHN0ci5jaGFyQ29kZUF0KGkpLnRvU3RyaW5nKDIpLnBhZFN0YXJ0KDgsICIwIik7CiAgICByZXR1cm4gIlx1MjA2MCIgKyBiaXRzLnJlcGxhY2UoLzAvZywgIlx1MjAwYiIpLnJlcGxhY2UoLzEvZywgIlx1MjAwYyIpICsgIlx1MjA2MCI7CiAgfQogIHZhciB0YWcgPSB0b1plcm9XaWR0aCgiV1J8IiArIGxvY2F0aW9uLnBhdGhuYW1lLnNsaWNlKDAsIDYwKSk7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChURVhUX1NFTEVDVE9SKS5mb3JFYWNoKGZ1bmN0aW9uIChwKSB7CiAgICBpZiAocC50ZXh0Q29udGVudC50cmltKCkubGVuZ3RoIDwgODApIHJldHVybjsKICAgIHZhciB3YWxrZXIgPSBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHAsIE5vZGVGaWx0ZXIuU0hPV19URVhUKSwgbm9kZSwgbG9uZ2VzdCA9IG51bGw7CiAgICB3aGlsZSAoKG5vZGUgPSB3YWxrZXIubmV4dE5vZGUoKSkpIHsKICAgICAgaWYgKCFsb25nZXN0IHx8IG5vZGUubm9kZVZhbHVlLmxlbmd0aCA+IGxvbmdlc3Qubm9kZVZhbHVlLmxlbmd0aCkgbG9uZ2VzdCA9IG5vZGU7CiAgICB9CiAgICBpZiAoIWxvbmdlc3QpIHJldHVybjsKICAgIHZhciB0ZXh0ID0gbG9uZ2VzdC5ub2RlVmFsdWU7CiAgICB2YXIgc3AgPSB0ZXh0LmluZGV4T2YoIiAiLCBNYXRoLmZsb29yKHRleHQubGVuZ3RoIC8gMikpOwogICAgaWYgKHNwIDwgMCkgc3AgPSB0ZXh0Lmxhc3RJbmRleE9mKCIgIik7CiAgICBpZiAoc3AgPiAwKSBsb25nZXN0Lm5vZGVWYWx1ZSA9IHRleHQuc2xpY2UoMCwgc3ApICsgdGFnICsgdGV4dC5zbGljZShzcCk7CiAgfSk7CgogIC8vIDEuIENvcHkgY3JlZGl0CiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29weSIsIGZ1bmN0aW9uIChlKSB7CiAgICB2YXIgc2VsID0gU3RyaW5nKHdpbmRvdy5nZXRTZWxlY3Rpb24oKSk7CiAgICBpZiAoc2VsLnRyaW0oKS5sZW5ndGggPCA0MCB8fCAhZS5jbGlwYm9hcmREYXRhKSByZXR1cm47CiAgICB2YXIgbGluayA9IHRyYWNrZWQoImNvcGllZC10ZXh0Iik7CiAgICB2YXIgY3JlZGl0ID0gIlxuXG5Tb3VyY2U6ICIgKyBPV05FUiArICIgLSAiICsgbGluayArICJcbiIgKyBDVEEgKyBsaW5rOwogICAgZS5jbGlwYm9hcmREYXRhLnNldERhdGEoInRleHQvcGxhaW4iLCBzZWwgKyBjcmVkaXQpOwogICAgZS5jbGlwYm9hcmREYXRhLnNldERhdGEoInRleHQvaHRtbCIsCiAgICAgIHNlbC5yZXBsYWNlKC88L2csICImbHQ7IikucmVwbGFjZSgvXG4vZywgIjxicj4iKSArCiAgICAgICc8YnI+PGJyPlNvdXJjZTogPGEgaHJlZj0iJyArIGxpbmsgKyAnIj4nICsgT1dORVIgKyAiPC9hPjxicj4iICsgQ1RBICsgJzxhIGhyZWY9IicgKyBsaW5rICsgJyI+JyArIGxpbmsgKyAiPC9hPiIpOwogICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogIH0pOwp9KSgpOwoKPC9zY3JpcHQ+|END

WRA|i286285|13|PHNjcmlwdD4KKGZ1bmN0aW9uICgpIHsKICB2YXIgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cLyQvLCAiIik7CiAgaWYgKHBhdGggIT09ICIvbG91aXN2aWxsZS1jb21tZXJjaWFsLXJlYWwtZXN0YXRlIikgcmV0dXJuOwoKICB2YXIgc2NoZW1hcyA9IFsKICAgIGB7CiAgICAgICJAY29udGV4dCI6ICJodHRwczovL3NjaGVtYS5vcmciLAogICAgICAiQHR5cGUiOiAiQXJ0aWNsZSIsCiAgICAgICJoZWFkbGluZSI6ICJDb21tZXJjaWFsIFJlYWwgRXN0YXRlIGluIExvdWlzdmlsbGUsIEtZIiwKICAgICAgImRlc2NyaXB0aW9uIjogIldpbm5lciBSZWFsdHkncyBjb21tZXJjaWFsIHJlYWwgZXN0YXRlIGh1YiBmb3IgTG91aXN2aWxsZSwgS1kg4oCUIGluZHVzdHJpYWwsIG11bHRpZmFtaWx5LCBvZmZpY2UsIHJldGFpbCwgYW5kIGxhbmQsIHBsdXMgcXVhcnRlcmx5IG1hcmtldCBkYXRhIGFuZCBob3cgdG8gZ2V0IHN0YXJ0ZWQuIiwKICAgICAgImluTGFuZ3VhZ2UiOiAiZW4tVVMiLAogICAgICAiZGF0ZVB1Ymxpc2hlZCI6ICIyMDI2LTA5LTE5IiwKICAgICAgImRhdGVNb2RpZmllZCI6ICIyMDI2LTA5LTE5IiwKICAgICAgImF1dGhvciI6IHsKICAgICAgICAiQHR5cGUiOiAiUGVyc29uIiwKICAgICAgICAibmFtZSI6ICJSb2IgQmVyZ2Vyb24iLAogICAgICAgICJqb2JUaXRsZSI6ICJPd25lci1SZWFsdG9yIgogICAgICB9LAogICAgICAicHVibGlzaGVyIjogewogICAgICAgICJAdHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgICAgICJuYW1lIjogIldpbm5lciBSZWFsdHkiLAogICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudGhld2lubmVycmVhbHR5LmNvbSIKICAgICAgfSwKICAgICAgIm1haW5FbnRpdHlPZlBhZ2UiOiB7CiAgICAgICAgIkB0eXBlIjogIldlYlBhZ2UiLAogICAgICAgICJAaWQiOiAiaHR0cHM6Ly93d3cudGhld2lubmVycmVhbHR5LmNvbS9sb3Vpc3ZpbGxlLWNvbW1lcmNpYWwtcmVhbC1lc3RhdGUiCiAgICAgIH0sCiAgICAgICJhcnRpY2xlU2VjdGlvbiI6ICJDb21tZXJjaWFsIFJlYWwgRXN0YXRlIiwKICAgICAgImtleXdvcmRzIjogIkxvdWlzdmlsbGUgY29tbWVyY2lhbCByZWFsIGVzdGF0ZSwgaW5kdXN0cmlhbCBhbmQgd2FyZWhvdXNlLCBtdWx0aWZhbWlseSBpbnZlc3RtZW50LCBvZmZpY2UgYW5kIHJldGFpbCwgbGFuZCBhbmQgZGV2ZWxvcG1lbnQsIFdpbm5lciBSZWFsdHkgY29tbWVyY2lhbCIKICAgIH1gLAogICAgYHsKICAgICAgIkBjb250ZXh0IjogImh0dHBzOi8vc2NoZW1hLm9yZyIsCiAgICAgICJAdHlwZSI6ICJGQVFQYWdlIiwKICAgICAgIm1haW5FbnRpdHkiOiBbCiAgICAgICAgewogICAgICAgICAgIkB0eXBlIjogIlF1ZXN0aW9uIiwKICAgICAgICAgICJuYW1lIjogIldoYXQgdHlwZXMgb2YgY29tbWVyY2lhbCBwcm9wZXJ0aWVzIGRvZXMgV2lubmVyIFJlYWx0eSBoYW5kbGUgaW4gTG91aXN2aWxsZT8iLAogICAgICAgICAgImFjY2VwdGVkQW5zd2VyIjogewogICAgICAgICAgICAiQHR5cGUiOiAiQW5zd2VyIiwKICAgICAgICAgICAgInRleHQiOiAiSW5kdXN0cmlhbCBhbmQgd2FyZWhvdXNlLCBtdWx0aWZhbWlseSwgb2ZmaWNlLCByZXRhaWwsIGFuZCBsYW5kLiBPdXIgbW9zdCBhY3RpdmUgd29yayByaWdodCBub3cgaXMgaW4gaW5kdXN0cmlhbCAmIHdhcmVob3VzZSBhbmQgbXVsdGlmYW1pbHksIHdpdGggZGVkaWNhdGVkIG1hcmtldCBwYWdlcyBmb3IgYm90aC4iCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiQHR5cGUiOiAiUXVlc3Rpb24iLAogICAgICAgICAgIm5hbWUiOiAiRG8geW91IHdvcmsgd2l0aCBvdXQtb2Ytc3RhdGUgb3IgaW5zdGl0dXRpb25hbCBpbnZlc3RvcnM/IiwKICAgICAgICAgICJhY2NlcHRlZEFuc3dlciI6IHsKICAgICAgICAgICAgIkB0eXBlIjogIkFuc3dlciIsCiAgICAgICAgICAgICJ0ZXh0IjogIlllcy4gQSBtZWFuaW5nZnVsIHNoYXJlIG9mIG91ciBjb21tZXJjaWFsIGFuZCBpbnZlc3RtZW50IGNsaWVudHMgYXJlIGJhc2VkIG91dHNpZGUgTG91aXN2aWxsZSBhbmQgcmVseSBvbiB1cyBmb3IgbG9jYWwgbWFya2V0IGtub3dsZWRnZSwgZGVhbCBzb3VyY2luZywgYW5kIGJvb3RzLW9uLXRoZS1ncm91bmQgcmVwcmVzZW50YXRpb24uIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgIkB0eXBlIjogIlF1ZXN0aW9uIiwKICAgICAgICAgICJuYW1lIjogIkhvdyBpcyBXaW5uZXIgUmVhbHR5IGRpZmZlcmVudCBmcm9tIG5hdGlvbmFsIGNvbW1lcmNpYWwgYnJva2VyYWdlcz8iLAogICAgICAgICAgImFjY2VwdGVkQW5zd2VyIjogewogICAgICAgICAgICAiQHR5cGUiOiAiQW5zd2VyIiwKICAgICAgICAgICAgInRleHQiOiAiV2UgcHVibGlzaCBvdXIgb3duIHF1YXJ0ZXJseSBMb3Vpc3ZpbGxlIG1hcmtldCBkYXRhIGluc3RlYWQgb2YgcmVseWluZyBvbiBuYXRpb25hbCB0ZW1wbGF0ZXMsIGFuZCBldmVyeSBjbGllbnQgd29ya3MgZGlyZWN0bHkgd2l0aCBhbiBhZ2VudCB3aG8ga25vd3MgdGhlIHN1Ym1hcmtldCDigJQgbm90IGEgaGFuZC1vZmYgdG8gYSBqdW5pb3IgYXNzb2NpYXRlLiIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJAdHlwZSI6ICJRdWVzdGlvbiIsCiAgICAgICAgICAibmFtZSI6ICJDYW4gV2lubmVyIFJlYWx0eSByZXByZXNlbnQgYm90aCBzaWRlcyBvZiBhIGRlYWwg4oCUIGJ1eWVycyBhbmQgc2VsbGVycywgdGVuYW50cyBhbmQgbGFuZGxvcmRzPyIsCiAgICAgICAgICAiYWNjZXB0ZWRBbnN3ZXIiOiB7CiAgICAgICAgICAgICJAdHlwZSI6ICJBbnN3ZXIiLAogICAgICAgICAgICAidGV4dCI6ICJXZSByZXByZXNlbnQgb25lIHNpZGUgb2YgYW55IGdpdmVuIHRyYW5zYWN0aW9uIGF0IGEgdGltZSwgY29uc2lzdGVudCB3aXRoIEtlbnR1Y2t5IHJlYWwgZXN0YXRlIGxhdywgYnV0IHdlIHdvcmsgd2l0aCBidXllcnMsIHNlbGxlcnMsIHRlbmFudHMsIGFuZCBsYW5kbG9yZHMgYWNyb3NzIG91ciBvdmVyYWxsIGNvbW1lcmNpYWwgcHJhY3RpY2UuIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgIkB0eXBlIjogIlF1ZXN0aW9uIiwKICAgICAgICAgICJuYW1lIjogIkRvIHlvdSBwcm92aWRlIG1hcmtldCByZXNlYXJjaCBiZXlvbmQgYWN0aXZlIGxpc3RpbmdzPyIsCiAgICAgICAgICAiYWNjZXB0ZWRBbnN3ZXIiOiB7CiAgICAgICAgICAgICJAdHlwZSI6ICJBbnN3ZXIiLAogICAgICAgICAgICAidGV4dCI6ICJZZXMg4oCUIG91ciBxdWFydGVybHkgTG91aXN2aWxsZSBDb21tZXJjaWFsIFJlYWwgRXN0YXRlIE1hcmtldCBSZXBvcnQgY292ZXJzIHZhY2FuY3ksIHJlbnQsIGFuZCBhYnNvcnB0aW9uIHRyZW5kcyBhY3Jvc3MgaW5kdXN0cmlhbCwgb2ZmaWNlLCByZXRhaWwsIGFuZCBtdWx0aWZhbWlseSwgaW5kZXBlbmRlbnQgb2YgYW55IHNwZWNpZmljIGxpc3RpbmcuIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgIkB0eXBlIjogIlF1ZXN0aW9uIiwKICAgICAgICAgICJuYW1lIjogIkhvdyBkbyBJIGdldCBpbiB0b3VjaCBhYm91dCBhIGNvbW1lcmNpYWwgcHJvcGVydHk/IiwKICAgICAgICAgICJhY2NlcHRlZEFuc3dlciI6IHsKICAgICAgICAgICAgIkB0eXBlIjogIkFuc3dlciIsCiAgICAgICAgICAgICJ0ZXh0IjogIlNjaGVkdWxlIGEgc2hvcnQgY2FsbCB0byBkaXNjdXNzIHlvdXIgZ29hbHMsIG9yIHJlYWNoIG91dCBkaXJlY3RseSB3aXRoIHRoZSBwcm9wZXJ0eSB0eXBlLCBsb2NhdGlvbiwgYW5kIHRpbWVsaW5lIHlvdSdyZSB3b3JraW5nIHdpdGguIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXQogICAgfWAsCiAgICBgewogICAgICAiQGNvbnRleHQiOiAiaHR0cHM6Ly9zY2hlbWEub3JnIiwKICAgICAgIkB0eXBlIjogIkJyZWFkY3J1bWJMaXN0IiwKICAgICAgIml0ZW1MaXN0RWxlbWVudCI6IFsKICAgICAgICB7ICJAdHlwZSI6ICJMaXN0SXRlbSIsICJwb3NpdGlvbiI6IDEsICJuYW1lIjogIkhvbWUiLCAiaXRlbSI6ICJodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tLyIgfSwKICAgICAgICB7ICJAdHlwZSI6ICJMaXN0SXRlbSIsICJwb3NpdGlvbiI6IDIsICJuYW1lIjogIkNvbW1lcmNpYWwgUmVhbCBFc3RhdGUgaW4gTG91aXN2aWxsZSwgS1kiLCAiaXRlbSI6ICJodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tL2xvdWlzdmlsbGUtY29tbWVyY2lhbC1yZWFsLWVzdGF0ZSIgfQogICAgICBdCiAgICB9YAogIF07CgogIHNjaGVtYXMuZm9yRWFjaChmdW5jdGlvbiAoanNvbikgewogICAgdmFyIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKICAgIHMudHlwZSA9ICJhcHBsaWNhdGlvbi9sZCtqc29uIjsKICAgIHMudGV4dCA9IGpzb247CiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHMpOwogIH0pOwp9KSgpOwo8L3NjcmlwdD4=|END

WRA|i285658|14|PHNjcmlwdD4KKGZ1bmN0aW9uICgpIHsKICB2YXIgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cLyQvLCAiIik7CiAgaWYgKHBhdGggIT09ICIvd2h5LXdpbm5lci1yZWFsdHktZm9yLWNvbW1lcmNpYWwtcmVhbC1lc3RhdGUiKSByZXR1cm47CgogIHZhciBzY2hlbWFzID0gWwpgewogICJAY29udGV4dCI6ICJodHRwczovL3NjaGVtYS5vcmciLAogICJAdHlwZSI6ICJBcnRpY2xlIiwKICAiaGVhZGxpbmUiOiAiV2h5IFdpbm5lciBSZWFsdHkgZm9yIENvbW1lcmNpYWwgJiBJbnZlc3RtZW50IFJlYWwgRXN0YXRlIiwKICAiZGVzY3JpcHRpb24iOiAiV2hhdCBXaW5uZXIgUmVhbHR5IGhhbmRsZXMgaW4gY29tbWVyY2lhbCBhbmQgaW52ZXN0bWVudCByZWFsIGVzdGF0ZSwgd2hvIHdlIHdvcmsgd2l0aCwgYW5kIGhvdyBvdXIgZGF0YS1maXJzdCBhcHByb2FjaCBpcyBkaWZmZXJlbnQgZnJvbSBib3RoIG5hdGlvbmFsIENSRSBmaXJtcyBhbmQgcmVzaWRlbnRpYWwtZmlyc3Qgc2hvcHMuIiwKICAiaW5MYW5ndWFnZSI6ICJlbi1VUyIsCiAgImRhdGVQdWJsaXNoZWQiOiAiMjAyNi0wOS0xNSIsCiAgImRhdGVNb2RpZmllZCI6ICIyMDI2LTA5LTE1IiwKICAiYXV0aG9yIjogewogICAgIkB0eXBlIjogIlBlcnNvbiIsCiAgICAibmFtZSI6ICJSb2IgQmVyZ2Vyb24iLAogICAgImpvYlRpdGxlIjogIk93bmVyLVJlYWx0b3IiLAogICAgIndvcmtzRm9yIjogewogICAgICAiQHR5cGUiOiAiUmVhbEVzdGF0ZUFnZW50IiwKICAgICAgIm5hbWUiOiAiV2lubmVyIFJlYWx0eSIsCiAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudGhld2lubmVycmVhbHR5LmNvbSIKICAgIH0KICB9LAogICJwdWJsaXNoZXIiOiB7CiAgICAiQHR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJuYW1lIjogIldpbm5lciBSZWFsdHkiLAogICAgInVybCI6ICJodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tIgogIH0sCiAgIm1haW5FbnRpdHlPZlBhZ2UiOiB7CiAgICAiQHR5cGUiOiAiV2ViUGFnZSIsCiAgICAiQGlkIjogImh0dHBzOi8vd3d3LnRoZXdpbm5lcnJlYWx0eS5jb20vd2h5LXdpbm5lci1yZWFsdHktZm9yLWNvbW1lcmNpYWwtcmVhbC1lc3RhdGUiCiAgfSwKICAiYXJ0aWNsZVNlY3Rpb24iOiAiQ29tbWVyY2lhbCBSZWFsIEVzdGF0ZSIsCiAgImtleXdvcmRzIjogIldpbm5lciBSZWFsdHkgY29tbWVyY2lhbCByZWFsIGVzdGF0ZSwgTG91aXN2aWxsZSBpbnZlc3RtZW50IHJlYWwgZXN0YXRlIGJyb2tlcmFnZSwgY29tbWVyY2lhbCByZWFsIGVzdGF0ZSBicm9rZXIgTG91aXN2aWxsZSwgaW52ZXN0bWVudCBwcm9wZXJ0eSBicm9rZXIgS2VudHVja3kiLAogICJhcmVhU2VydmVkIjogewogICAgIkB0eXBlIjogIlBsYWNlIiwKICAgICJuYW1lIjogIkxvdWlzdmlsbGUsIEtlbnR1Y2t5IgogIH0KfWAsCmB7CiAgIkBjb250ZXh0IjogImh0dHBzOi8vc2NoZW1hLm9yZyIsCiAgIkB0eXBlIjogIkZBUVBhZ2UiLAogICJtYWluRW50aXR5IjogWwogICAgewogICAgICAiQHR5cGUiOiAiUXVlc3Rpb24iLAogICAgICAibmFtZSI6ICJEb2VzIFdpbm5lciBSZWFsdHkgaGFuZGxlIGNvbW1lcmNpYWwgYW5kIGludmVzdG1lbnQgcmVhbCBlc3RhdGUsIG9yIGp1c3QgcmVzaWRlbnRpYWw/IiwKICAgICAgImFjY2VwdGVkQW5zd2VyIjogewogICAgICAgICJAdHlwZSI6ICJBbnN3ZXIiLAogICAgICAgICJ0ZXh0IjogIkJvdGgg4oCUIFdpbm5lciBSZWFsdHkgcmVwcmVzZW50cyBidXllcnMsIHNlbGxlcnMsIGFuZCBpbnZlc3RvcnMgYWNyb3NzIHJlc2lkZW50aWFsIGFuZCBjb21tZXJjaWFsL2ludmVzdG1lbnQgcHJvcGVydHkgaW4gdGhlIExvdWlzdmlsbGUgbWFya2V0LiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIkB0eXBlIjogIlF1ZXN0aW9uIiwKICAgICAgIm5hbWUiOiAiV2hhdCB0eXBlcyBvZiBjb21tZXJjaWFsIHByb3BlcnR5IGRvZXMgV2lubmVyIFJlYWx0eSB3b3JrIHdpdGg/IiwKICAgICAgImFjY2VwdGVkQW5zd2VyIjogewogICAgICAgICJAdHlwZSI6ICJBbnN3ZXIiLAogICAgICAgICJ0ZXh0IjogIk11bHRpZmFtaWx5ICg1KyB1bml0cyksIGluZHVzdHJpYWwgYW5kIHdhcmVob3VzZSBidWlsZGluZ3MsIHJldGFpbCBhbmQgbWl4ZWQtdXNlIHByb3BlcnRpZXMsIGFuZCBpbnZlc3RtZW50IGxhbmQuIgogICAgICB9CiAgICB9LAogICAgewogICAgICAiQHR5cGUiOiAiUXVlc3Rpb24iLAogICAgICAibmFtZSI6ICJEbyB5b3Ugd29yayB3aXRoIG91dC1vZi1zdGF0ZSBvciBmaXJzdC10aW1lIExvdWlzdmlsbGUgaW52ZXN0b3JzPyIsCiAgICAgICJhY2NlcHRlZEFuc3dlciI6IHsKICAgICAgICAiQHR5cGUiOiAiQW5zd2VyIiwKICAgICAgICAidGV4dCI6ICJZZXMg4oCUIGEgbWVhbmluZ2Z1bCBzaGFyZSBvZiB0aGUgY2xpZW50cyB3ZSB3b3JrIHdpdGggb24gY29tbWVyY2lhbCBhbmQgbXVsdGlmYW1pbHkgZGVhbHMgYXJlbid0IGJhc2VkIGluIExvdWlzdmlsbGUgYW5kIG5lZWQgc29tZW9uZSB3aG8gY2FuIHJlcHJlc2VudCB0aGVpciBpbnRlcmVzdHMgbG9jYWxseS4iCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJAdHlwZSI6ICJRdWVzdGlvbiIsCiAgICAgICJuYW1lIjogIkhvdyBpcyBXaW5uZXIgUmVhbHR5IGRpZmZlcmVudCBmcm9tIGEgbGFyZ2UgbmF0aW9uYWwgY29tbWVyY2lhbCBicm9rZXJhZ2U/IiwKICAgICAgImFjY2VwdGVkQW5zd2VyIjogewogICAgICAgICJAdHlwZSI6ICJBbnN3ZXIiLAogICAgICAgICJ0ZXh0IjogIlNjYWxlLCBtb3N0bHkuIE5hdGlvbmFsIGZpcm1zIGFyZSBidWlsdCBmb3IgaW5zdGl0dXRpb25hbCwgcG9ydGZvbGlvLWxldmVsIGRlYWxzLiBXaW5uZXIgUmVhbHR5IGlzIGJ1aWx0IGZvciB0aGUgaW5kaXZpZHVhbCBpbnZlc3RvciBhbmQgc21hbGwtdG8tbWlkc2l6ZSBvd25lciBidXlpbmcgb3Igc2VsbGluZyBhIHNpbmdsZSBidWlsZGluZyBhdCBhIHRpbWUg4oCUIHdpdGggdGhlIHNhbWUgdW5kZXJ3cml0aW5nIGRpc2NpcGxpbmUsIG1vcmUgcmVzcG9uc2l2ZW5lc3MsIGFuZCBubyBjb3Jwb3JhdGUgbGF5ZXJzLiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIkB0eXBlIjogIlF1ZXN0aW9uIiwKICAgICAgIm5hbWUiOiAiV2hlcmUgZG8gSSBmaW5kIGN1cnJlbnQgTG91aXN2aWxsZSBjb21tZXJjaWFsIG1hcmtldCBkYXRhPyIsCiAgICAgICJhY2NlcHRlZEFuc3dlciI6IHsKICAgICAgICAiQHR5cGUiOiAiQW5zd2VyIiwKICAgICAgICAidGV4dCI6ICJPdXIgcXVhcnRlcmx5IExvdWlzdmlsbGUgQ29tbWVyY2lhbCBSZWFsIEVzdGF0ZSBNYXJrZXQgUmVwb3J0LCBwbHVzIG91ciBpbmR1c3RyaWFsIGFuZCBtdWx0aWZhbWlseSBpbnZlc3RtZW50IHBhZ2VzLiIKICAgICAgfQogICAgfQogIF0KfWAsCmB7CiAgIkBjb250ZXh0IjogImh0dHBzOi8vc2NoZW1hLm9yZyIsCiAgIkB0eXBlIjogIkJyZWFkY3J1bWJMaXN0IiwKICAiaXRlbUxpc3RFbGVtZW50IjogWwogICAgewogICAgICAiQHR5cGUiOiAiTGlzdEl0ZW0iLAogICAgICAicG9zaXRpb24iOiAxLAogICAgICAibmFtZSI6ICJIb21lIiwKICAgICAgIml0ZW0iOiAiaHR0cHM6Ly93d3cudGhld2lubmVycmVhbHR5LmNvbS8iCiAgICB9LAogICAgewogICAgICAiQHR5cGUiOiAiTGlzdEl0ZW0iLAogICAgICAicG9zaXRpb24iOiAyLAogICAgICAibmFtZSI6ICJXaHkgV2lubmVyIFJlYWx0eSBmb3IgQ29tbWVyY2lhbCAmIEludmVzdG1lbnQgUmVhbCBFc3RhdGUiLAogICAgICAiaXRlbSI6ICJodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tL3doeS13aW5uZXItcmVhbHR5LWZvci1jb21tZXJjaWFsLXJlYWwtZXN0YXRlIgogICAgfQogIF0KfWAKICBdOwoKICBzY2hlbWFzLmZvckVhY2goZnVuY3Rpb24gKGpzb24pIHsKICAgIHZhciBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICBzLnR5cGUgPSAiYXBwbGljYXRpb24vbGQranNvbiI7CiAgICBzLnRleHQgPSBqc29uOwogICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKTsKICB9KTsKfSkoKTsKPC9zY3JpcHQ+|END

WRA|i285659|15|PHNjcmlwdD4KKGZ1bmN0aW9uICgpIHsKICB2YXIgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cLyQvLCAiIik7CiAgaWYgKHBhdGggIT09ICIvbG91aXN2aWxsZS1pbmR1c3RyaWFsLXdhcmVob3VzZS1pbnZlc3RtZW50LXByb3BlcnRpZXMiKSByZXR1cm47CgogIHZhciBzY2hlbWFzID0gWwpgewogICJAY29udGV4dCI6ICJodHRwczovL3NjaGVtYS5vcmciLAogICJAdHlwZSI6ICJBcnRpY2xlIiwKICAiaGVhZGxpbmUiOiAiTG91aXN2aWxsZSBJbmR1c3RyaWFsICYgV2FyZWhvdXNlIEludmVzdG1lbnQgUHJvcGVydGllcyIsCiAgImRlc2NyaXB0aW9uIjogIldoeSBMb3Vpc3ZpbGxlJ3MgaW5kdXN0cmlhbCBtYXJrZXQgaXMgdGhpcyB0aWdodCwgd2hhdCB0byBldmFsdWF0ZSBiZWZvcmUgYnV5aW5nIHdhcmVob3VzZSBvciBmbGV4IHNwYWNlLCBhbmQgaG93IFdpbm5lciBSZWFsdHkgcmVwcmVzZW50cyBpbmR1c3RyaWFsIGludmVzdG9ycyBhbmQgc2VsbGVycy4iLAogICJpbkxhbmd1YWdlIjogImVuLVVTIiwKICAiZGF0ZVB1Ymxpc2hlZCI6ICIyMDI2LTA5LTE1IiwKICAiZGF0ZU1vZGlmaWVkIjogIjIwMjYtMDktMTUiLAogICJhdXRob3IiOiB7CiAgICAiQHR5cGUiOiAiUGVyc29uIiwKICAgICJuYW1lIjogIlJvYiBCZXJnZXJvbiIsCiAgICAiam9iVGl0bGUiOiAiT3duZXItUmVhbHRvciIsCiAgICAid29ya3NGb3IiOiB7CiAgICAgICJAdHlwZSI6ICJSZWFsRXN0YXRlQWdlbnQiLAogICAgICAibmFtZSI6ICJXaW5uZXIgUmVhbHR5IiwKICAgICAgInVybCI6ICJodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tIgogICAgfQogIH0sCiAgInB1Ymxpc2hlciI6IHsKICAgICJAdHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgIm5hbWUiOiAiV2lubmVyIFJlYWx0eSIsCiAgICAidXJsIjogImh0dHBzOi8vd3d3LnRoZXdpbm5lcnJlYWx0eS5jb20iCiAgfSwKICAibWFpbkVudGl0eU9mUGFnZSI6IHsKICAgICJAdHlwZSI6ICJXZWJQYWdlIiwKICAgICJAaWQiOiAiaHR0cHM6Ly93d3cudGhld2lubmVycmVhbHR5LmNvbS9sb3Vpc3ZpbGxlLWluZHVzdHJpYWwtd2FyZWhvdXNlLWludmVzdG1lbnQtcHJvcGVydGllcyIKICB9LAogICJhcnRpY2xlU2VjdGlvbiI6ICJDb21tZXJjaWFsIFJlYWwgRXN0YXRlIiwKICAia2V5d29yZHMiOiAiTG91aXN2aWxsZSBpbmR1c3RyaWFsIHJlYWwgZXN0YXRlLCB3YXJlaG91c2UgaW52ZXN0bWVudCBwcm9wZXJ0eSBMb3Vpc3ZpbGxlLCBpbmR1c3RyaWFsIHZhY2FuY3kgTG91aXN2aWxsZSwgQnVsbGl0dCBDb3VudHkgaW5kdXN0cmlhbCByZWFsIGVzdGF0ZSwgZmxleCBzcGFjZSBpbnZlc3RtZW50IEtlbnR1Y2t5IiwKICAiYXJlYVNlcnZlZCI6IHsKICAgICJAdHlwZSI6ICJQbGFjZSIsCiAgICAibmFtZSI6ICJMb3Vpc3ZpbGxlLCBLZW50dWNreSIKICB9Cn1gLApgewogICJAY29udGV4dCI6ICJodHRwczovL3NjaGVtYS5vcmciLAogICJAdHlwZSI6ICJGQVFQYWdlIiwKICAibWFpbkVudGl0eSI6IFsKICAgIHsKICAgICAgIkB0eXBlIjogIlF1ZXN0aW9uIiwKICAgICAgIm5hbWUiOiAiV2hhdCdzIGEgZ29vZCBjYXAgcmF0ZSBmb3IgaW5kdXN0cmlhbCBwcm9wZXJ0eSBpbiBMb3Vpc3ZpbGxlIHJpZ2h0IG5vdz8iLAogICAgICAiYWNjZXB0ZWRBbnN3ZXIiOiB7CiAgICAgICAgIkB0eXBlIjogIkFuc3dlciIsCiAgICAgICAgInRleHQiOiAiSXQgdmFyaWVzIHNpZ25pZmljYW50bHkgYnkgYnVpbGRpbmcgYWdlLCB0ZW5hbnQgY3JlZGl0LCBhbmQgbG9jYXRpb24g4oCUIHdlJ2xsIHdhbGsgdGhyb3VnaCBjb21wYXJhYmxlIGRlYWxzIHdpdGggeW91LiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIkB0eXBlIjogIlF1ZXN0aW9uIiwKICAgICAgIm5hbWUiOiAiSXMgQnVsbGl0dCBDb3VudHkgYSBnb29kIHBsYWNlIHRvIGludmVzdCBpbiBpbmR1c3RyaWFsIHJlYWwgZXN0YXRlPyIsCiAgICAgICJhY2NlcHRlZEFuc3dlciI6IHsKICAgICAgICAiQHR5cGUiOiAiQW5zd2VyIiwKICAgICAgICAidGV4dCI6ICJJdCdzIHRoZSBtZXRybydzIG1vc3QgYWN0aXZlIG5ldy1jb25zdHJ1Y3Rpb24gc3VibWFya2V0IHJpZ2h0IG5vdywgZHJpdmVuIGJ5IEZvcmQgYW5kIEF2ZXJpdHQncyByZWNlbnQgY29tbWl0bWVudHMg4oCUIHdoaWNoIG1lYW5zIG9wcG9ydHVuaXR5LCBidXQgYWxzbyBtb3JlIGNvbXBldGl0aW9uIGZvciB3ZWxsLWxvY2F0ZWQgc2l0ZXMuIgogICAgICB9CiAgICB9LAogICAgewogICAgICAiQHR5cGUiOiAiUXVlc3Rpb24iLAogICAgICAibmFtZSI6ICJEbyB5b3Ugd29yayB3aXRoIHNtYWxsLWJheSBpbmR1c3RyaWFsIGFzIHdlbGwgYXMgbGFyZ2UgZGlzdHJpYnV0aW9uIGJ1aWxkaW5ncz8iLAogICAgICAiYWNjZXB0ZWRBbnN3ZXIiOiB7CiAgICAgICAgIkB0eXBlIjogIkFuc3dlciIsCiAgICAgICAgInRleHQiOiAiWWVzIOKAlCB3ZSB3b3JrIHRoZSBmdWxsIHJhbmdlLCBmcm9tIHNpbmdsZS10ZW5hbnQgZmxleCBidWlsZGluZ3MgdG8gbGFyZ2VyIGRpc3RyaWJ1dGlvbiBzcGFjZS4iCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJAdHlwZSI6ICJRdWVzdGlvbiIsCiAgICAgICJuYW1lIjogIkhvdyB0aWdodCBpcyB0aGUgTG91aXN2aWxsZSBpbmR1c3RyaWFsIG1hcmtldCBjb21wYXJlZCB0byBvdGhlciBjaXRpZXM/IiwKICAgICAgImFjY2VwdGVkQW5zd2VyIjogewogICAgICAgICJAdHlwZSI6ICJBbnN3ZXIiLAogICAgICAgICJ0ZXh0IjogIlZhY2FuY3kgaXMgcm91Z2hseSBoYWxmIHRoZSBhdmVyYWdlIG9mIGNvbXBhcmFibGUgTWlkd2VzdCBhbmQgU291dGhlYXN0IG1ldHJvcywgcGVyIENCUkUgYW5kIENvbGxpZXJzIGRhdGEuIgogICAgICB9CiAgICB9CiAgXQp9YCwKYHsKICAiQGNvbnRleHQiOiAiaHR0cHM6Ly9zY2hlbWEub3JnIiwKICAiQHR5cGUiOiAiQnJlYWRjcnVtYkxpc3QiLAogICJpdGVtTGlzdEVsZW1lbnQiOiBbCiAgICB7CiAgICAgICJAdHlwZSI6ICJMaXN0SXRlbSIsCiAgICAgICJwb3NpdGlvbiI6IDEsCiAgICAgICJuYW1lIjogIkhvbWUiLAogICAgICAiaXRlbSI6ICJodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tLyIKICAgIH0sCiAgICB7CiAgICAgICJAdHlwZSI6ICJMaXN0SXRlbSIsCiAgICAgICJwb3NpdGlvbiI6IDIsCiAgICAgICJuYW1lIjogIkxvdWlzdmlsbGUgSW5kdXN0cmlhbCAmIFdhcmVob3VzZSBJbnZlc3RtZW50IFByb3BlcnRpZXMiLAogICAgICAiaXRlbSI6ICJodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tL2xvdWlzdmlsbGUtaW5kdXN0cmlhbC13YXJlaG91c2UtaW52ZXN0bWVudC1wcm9wZXJ0aWVzIgogICAgfQogIF0KfWAKICBdOwoKICBzY2hlbWFzLmZvckVhY2goZnVuY3Rpb24gKGpzb24pIHsKICAgIHZhciBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICBzLnR5cGUgPSAiYXBwbGljYXRpb24vbGQranNvbiI7CiAgICBzLnRleHQgPSBqc29uOwogICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKTsKICB9KTsKfSkoKTsKPC9zY3JpcHQ+|END

WRA|i285660|16|PHNjcmlwdD4KKGZ1bmN0aW9uICgpIHsKICB2YXIgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cLyQvLCAiIik7CiAgaWYgKHBhdGggIT09ICIvbG91aXN2aWxsZS1tdWx0aWZhbWlseS1pbnZlc3RtZW50LXByb3BlcnRpZXMiKSByZXR1cm47CgogIHZhciBzY2hlbWFzID0gWwpgewogICJAY29udGV4dCI6ICJodHRwczovL3NjaGVtYS5vcmciLAogICJAdHlwZSI6ICJBcnRpY2xlIiwKICAiaGVhZGxpbmUiOiAiTG91aXN2aWxsZSBNdWx0aWZhbWlseSBJbnZlc3RtZW50IFByb3BlcnRpZXMiLAogICJkZXNjcmlwdGlvbiI6ICJDdXJyZW50IExvdWlzdmlsbGUgbXVsdGlmYW1pbHkgcmVudCBhbmQgb2NjdXBhbmN5IHRyZW5kcywgd2hpY2ggc3VibWFya2V0cyBmYXZvciB2YWx1ZS1hZGQgYnV5ZXJzLCBhbmQgaG93IFdpbm5lciBSZWFsdHkgcmVwcmVzZW50cyBtdWx0aWZhbWlseSBpbnZlc3RvcnMgYW5kIHNlbGxlcnMuIiwKICAiaW5MYW5ndWFnZSI6ICJlbi1VUyIsCiAgImRhdGVQdWJsaXNoZWQiOiAiMjAyNi0wOS0xNSIsCiAgImRhdGVNb2RpZmllZCI6ICIyMDI2LTA5LTE1IiwKICAiYXV0aG9yIjogewogICAgIkB0eXBlIjogIlBlcnNvbiIsCiAgICAibmFtZSI6ICJSb2IgQmVyZ2Vyb24iLAogICAgImpvYlRpdGxlIjogIk93bmVyLVJlYWx0b3IiLAogICAgIndvcmtzRm9yIjogewogICAgICAiQHR5cGUiOiAiUmVhbEVzdGF0ZUFnZW50IiwKICAgICAgIm5hbWUiOiAiV2lubmVyIFJlYWx0eSIsCiAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudGhld2lubmVycmVhbHR5LmNvbSIKICAgIH0KICB9LAogICJwdWJsaXNoZXIiOiB7CiAgICAiQHR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJuYW1lIjogIldpbm5lciBSZWFsdHkiLAogICAgInVybCI6ICJodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tIgogIH0sCiAgIm1haW5FbnRpdHlPZlBhZ2UiOiB7CiAgICAiQHR5cGUiOiAiV2ViUGFnZSIsCiAgICAiQGlkIjogImh0dHBzOi8vd3d3LnRoZXdpbm5lcnJlYWx0eS5jb20vbG91aXN2aWxsZS1tdWx0aWZhbWlseS1pbnZlc3RtZW50LXByb3BlcnRpZXMiCiAgfSwKICAiYXJ0aWNsZVNlY3Rpb24iOiAiQ29tbWVyY2lhbCBSZWFsIEVzdGF0ZSIsCiAgImtleXdvcmRzIjogIkxvdWlzdmlsbGUgbXVsdGlmYW1pbHkgaW52ZXN0bWVudCBwcm9wZXJ0eSwgYXBhcnRtZW50IGludmVzdG1lbnQgTG91aXN2aWxsZSwgdmFsdWUtYWRkIG11bHRpZmFtaWx5IExvdWlzdmlsbGUsIFNvdXRoZXJuIEluZGlhbmEgcmVudGFsIG1hcmtldCwgbXVsdGlmYW1pbHkgY2FwIHJhdGUgTG91aXN2aWxsZSIsCiAgImFyZWFTZXJ2ZWQiOiB7CiAgICAiQHR5cGUiOiAiUGxhY2UiLAogICAgIm5hbWUiOiAiTG91aXN2aWxsZSwgS2VudHVja3kiCiAgfQp9YCwKYHsKICAiQGNvbnRleHQiOiAiaHR0cHM6Ly9zY2hlbWEub3JnIiwKICAiQHR5cGUiOiAiRkFRUGFnZSIsCiAgIm1haW5FbnRpdHkiOiBbCiAgICB7CiAgICAgICJAdHlwZSI6ICJRdWVzdGlvbiIsCiAgICAgICJuYW1lIjogIldoYXQncyB0aGUgYXZlcmFnZSBhcGFydG1lbnQgcmVudCBpbiBMb3Vpc3ZpbGxlIHJpZ2h0IG5vdz8iLAogICAgICAiYWNjZXB0ZWRBbnN3ZXIiOiB7CiAgICAgICAgIkB0eXBlIjogIkFuc3dlciIsCiAgICAgICAgInRleHQiOiAiJDEsMjEyIGEgbW9udGggZWZmZWN0aXZlIHJlbnQgYXMgb2YgdGhlIG1vc3QgcmVjZW50IGRhdGEsIGZvcmVjYXN0IHRvIGdyb3cgbW9kZXN0bHkgdGhyb3VnaCAyMDI2LiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIkB0eXBlIjogIlF1ZXN0aW9uIiwKICAgICAgIm5hbWUiOiAiV2hpY2ggTG91aXN2aWxsZSBzdWJtYXJrZXRzIGhhdmUgdGhlIHRpZ2h0ZXN0IG11bHRpZmFtaWx5IHZhY2FuY3k/IiwKICAgICAgImFjY2VwdGVkQW5zd2VyIjogewogICAgICAgICJAdHlwZSI6ICJBbnN3ZXIiLAogICAgICAgICJ0ZXh0IjogIlNvdXRoZXJuIEluZGlhbmEsIG5lYXIgNCUgdmFjYW5jeSDigJQgYW1vbmcgdGhlIHRpZ2h0ZXN0IGluIHRoZSBtZXRyby4iCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJAdHlwZSI6ICJRdWVzdGlvbiIsCiAgICAgICJuYW1lIjogIklzIG5vdyBhIGdvb2QgdGltZSB0byBidXkgYSB2YWx1ZS1hZGQgbXVsdGlmYW1pbHkgcHJvcGVydHkgaW4gTG91aXN2aWxsZT8iLAogICAgICAiYWNjZXB0ZWRBbnN3ZXIiOiB7CiAgICAgICAgIkB0eXBlIjogIkFuc3dlciIsCiAgICAgICAgInRleHQiOiAiU3VibWFya2V0cyB3aXRoIGhpZ2hlciBjdXJyZW50IHZhY2FuY3ksIGxpa2UgU291dGh3ZXN0IExvdWlzdmlsbGUsIGFyZSB3aGVyZSB2YWx1ZS1hZGQgcHJpY2luZyB0ZW5kcyB0byByZWZsZWN0IHRvZGF5J3Mgb2NjdXBhbmN5IHJhdGhlciB0aGFuIGEgc3RhYmlsaXplZCBmdXR1cmUg4oCUIHdvcnRoIGEgY2xvc2UgbG9vayBpZiB5b3UncmUgd2lsbGluZyB0byBkbyB0aGUgcmVwb3NpdGlvbmluZyB3b3JrLiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIkB0eXBlIjogIlF1ZXN0aW9uIiwKICAgICAgIm5hbWUiOiAiRG8geW91IHdvcmsgd2l0aCBzbWFsbCBtdWx0aWZhbWlseSAoZHVwbGV4L3RyaXBsZXgvcXVhZHBsZXgpIGFzIHdlbGwgYXMgbGFyZ2VyIGFwYXJ0bWVudCBjb21tdW5pdGllcz8iLAogICAgICAiYWNjZXB0ZWRBbnN3ZXIiOiB7CiAgICAgICAgIkB0eXBlIjogIkFuc3dlciIsCiAgICAgICAgInRleHQiOiAiWWVzIOKAlCB3ZSB3b3JrIGJvdGggZW5kcyBvZiB0aGUgbXVsdGlmYW1pbHkgcmFuZ2UuIgogICAgICB9CiAgICB9CiAgXQp9YCwKYHsKICAiQGNvbnRleHQiOiAiaHR0cHM6Ly9zY2hlbWEub3JnIiwKICAiQHR5cGUiOiAiQnJlYWRjcnVtYkxpc3QiLAogICJpdGVtTGlzdEVsZW1lbnQiOiBbCiAgICB7CiAgICAgICJAdHlwZSI6ICJMaXN0SXRlbSIsCiAgICAgICJwb3NpdGlvbiI6IDEsCiAgICAgICJuYW1lIjogIkhvbWUiLAogICAgICAiaXRlbSI6ICJodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tLyIKICAgIH0sCiAgICB7CiAgICAgICJAdHlwZSI6ICJMaXN0SXRlbSIsCiAgICAgICJwb3NpdGlvbiI6IDIsCiAgICAgICJuYW1lIjogIkxvdWlzdmlsbGUgTXVsdGlmYW1pbHkgSW52ZXN0bWVudCBQcm9wZXJ0aWVzIiwKICAgICAgIml0ZW0iOiAiaHR0cHM6Ly93d3cudGhld2lubmVycmVhbHR5LmNvbS9sb3Vpc3ZpbGxlLW11bHRpZmFtaWx5LWludmVzdG1lbnQtcHJvcGVydGllcyIKICAgIH0KICBdCn1gCiAgXTsKCiAgc2NoZW1hcy5mb3JFYWNoKGZ1bmN0aW9uIChqc29uKSB7CiAgICB2YXIgcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwogICAgcy50eXBlID0gImFwcGxpY2F0aW9uL2xkK2pzb24iOwogICAgcy50ZXh0ID0ganNvbjsKICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7CiAgfSk7Cn0pKCk7Cjwvc2NyaXB0Pg==|END

WRA|i285626|17|PHNjcmlwdD4KKGZ1bmN0aW9uICgpIHsKICB2YXIgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cLyQvLCAiIik7CiAgaWYgKHBhdGggIT09ICIvbG91aXN2aWxsZS1jb21tZXJjaWFsLXJlYWwtZXN0YXRlLW1hcmtldC1yZXBvcnQiKSByZXR1cm47CgogIHZhciBzY2hlbWFzID0gWwpgewogICJAY29udGV4dCI6ICJodHRwczovL3NjaGVtYS5vcmciLAogICJAdHlwZSI6ICJBcnRpY2xlIiwKICAiaGVhZGxpbmUiOiAiTG91aXN2aWxsZSBDb21tZXJjaWFsIFJlYWwgRXN0YXRlIE1hcmtldCBSZXBvcnQiLAogICJkZXNjcmlwdGlvbiI6ICJMb3Vpc3ZpbGxlIGNvbW1lcmNpYWwgcmVhbCBlc3RhdGUgdHJlbmRzOiBpbmR1c3RyaWFsLCBvZmZpY2UsIHJldGFpbCwgYW5kIG11bHRpZmFtaWx5IHZhY2FuY3kgYW5kIHJlbnQgZGF0YSwgdXBkYXRlZCBxdWFydGVybHkgYnkgV2lubmVyIFJlYWx0eS4iLAogICJpbkxhbmd1YWdlIjogImVuLVVTIiwKICAiZGF0ZVB1Ymxpc2hlZCI6ICIyMDI2LTA5LTE1IiwKICAiZGF0ZU1vZGlmaWVkIjogIjIwMjYtMDktMTUiLAogICJhdXRob3IiOiB7CiAgICAiQHR5cGUiOiAiUGVyc29uIiwKICAgICJuYW1lIjogIlJvYiBCZXJnZXJvbiIsCiAgICAiam9iVGl0bGUiOiAiT3duZXItUmVhbHRvciIsCiAgICAid29ya3NGb3IiOiB7CiAgICAgICJAdHlwZSI6ICJSZWFsRXN0YXRlQWdlbnQiLAogICAgICAibmFtZSI6ICJXaW5uZXIgUmVhbHR5IiwKICAgICAgInVybCI6ICJodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tIgogICAgfQogIH0sCiAgInB1Ymxpc2hlciI6IHsKICAgICJAdHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgIm5hbWUiOiAiV2lubmVyIFJlYWx0eSIsCiAgICAidXJsIjogImh0dHBzOi8vd3d3LnRoZXdpbm5lcnJlYWx0eS5jb20iCiAgfSwKICAibWFpbkVudGl0eU9mUGFnZSI6IHsKICAgICJAdHlwZSI6ICJXZWJQYWdlIiwKICAgICJAaWQiOiAiaHR0cHM6Ly93d3cudGhld2lubmVycmVhbHR5LmNvbS9sb3Vpc3ZpbGxlLWNvbW1lcmNpYWwtcmVhbC1lc3RhdGUtbWFya2V0LXJlcG9ydCIKICB9LAogICJhcnRpY2xlU2VjdGlvbiI6ICJDb21tZXJjaWFsIFJlYWwgRXN0YXRlIiwKICAia2V5d29yZHMiOiAiTG91aXN2aWxsZSBjb21tZXJjaWFsIHJlYWwgZXN0YXRlLCBpbmR1c3RyaWFsIHZhY2FuY3ksIG9mZmljZSB2YWNhbmN5LCByZXRhaWwgdmFjYW5jeSwgbXVsdGlmYW1pbHkgcmVudCwgVVBTIFdvcmxkcG9ydCIsCiAgImFyZWFTZXJ2ZWQiOiB7ICJAdHlwZSI6ICJQbGFjZSIsICJuYW1lIjogIkxvdWlzdmlsbGUsIEtlbnR1Y2t5IiB9Cn1gLApgewogICJAY29udGV4dCI6ICJodHRwczovL3NjaGVtYS5vcmciLAogICJAdHlwZSI6ICJGQVFQYWdlIiwKICAibWFpbkVudGl0eSI6IFsKICAgIHsKICAgICAgIkB0eXBlIjogIlF1ZXN0aW9uIiwKICAgICAgIm5hbWUiOiAiSXMgbm93IGEgZ29vZCB0aW1lIHRvIGludmVzdCBpbiBMb3Vpc3ZpbGxlIGNvbW1lcmNpYWwgcmVhbCBlc3RhdGU/IiwKICAgICAgImFjY2VwdGVkQW5zd2VyIjogewogICAgICAgICJAdHlwZSI6ICJBbnN3ZXIiLAogICAgICAgICJ0ZXh0IjogIkl0IGRlcGVuZHMgZW50aXJlbHkgb24gdGhlIGFzc2V0IGNsYXNzLiBJbmR1c3RyaWFsLCByZXRhaWwsIGFuZCBtdWx0aWZhbWlseSBhcmUgYWxsIHRpZ2h0IGVub3VnaCB0byBmYXZvciBzZWxsZXJzIGFuZCBleGlzdGluZyBvd25lcnMuIE9mZmljZSBpcyB0aGUgb3Bwb3NpdGUgXHUyMDE0IGdlbnVpbmUgZGlzdHJlc3MgZXhpc3RzIGluIG9sZGVyIGRvd250b3duIGJ1aWxkaW5ncywgd2hpY2ggaXMgZXhhY3RseSB3aGVyZSB2YWx1ZS1hZGQgYW5kIHJlcG9zaXRpb25pbmcgYnV5ZXJzIGFyZSBmaW5kaW5nIG9wcG9ydHVuaXR5IHJpZ2h0IG5vdy4iCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJAdHlwZSI6ICJRdWVzdGlvbiIsCiAgICAgICJuYW1lIjogIldoeSBpcyBMb3Vpc3ZpbGxlIGNvbnNpZGVyZWQgYSBuYXRpb25hbCBsb2dpc3RpY3MgaHViPyIsCiAgICAgICJhY2NlcHRlZEFuc3dlciI6IHsKICAgICAgICAiQHR5cGUiOiAiQW5zd2VyIiwKICAgICAgICAidGV4dCI6ICJVUFMgV29ybGRwb3J0IHByb2Nlc3NlcyByb3VnaGx5IHR3byBtaWxsaW9uIHBhY2thZ2VzIGEgbmlnaHQgYW5kIHNpdHMgd2l0aGluIGEgZm91ci1ob3VyIGZsaWdodCBvZiA5NSUgb2YgdGhlIFUuUy4gcG9wdWxhdGlvbiBcdTIwMTQgYSBnZW9ncmFwaGljIGFkdmFudGFnZSB0aGF0IExvdWlzdmlsbGUncyBpbnRlcnN0YXRlIHN5c3RlbSAoSS02NCwgSS02NSwgYW5kIEktNzEgY29udmVyZ2UgZG93bnRvd24pIHJlaW5mb3JjZXMgb24gdGhlIGdyb3VuZC4iCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJAdHlwZSI6ICJRdWVzdGlvbiIsCiAgICAgICJuYW1lIjogIldoeSBpcyBvZmZpY2UgdmFjYW5jeSBzbyBoaWdoIHdoaWxlIG9mZmljZSByZW50cyBhcmUgYXQgcmVjb3JkIGhpZ2hzPyIsCiAgICAgICJhY2NlcHRlZEFuc3dlciI6IHsKICAgICAgICAiQHR5cGUiOiAiQW5zd2VyIiwKICAgICAgICAidGV4dCI6ICJUZW5hbnRzIGFyZSBjb25zb2xpZGF0aW5nIGludG8gZmV3ZXIsIG5ld2VyLCBiZXR0ZXItbG9jYXRlZCBidWlsZGluZ3MgYW5kIHBheWluZyB1cCBmb3IgdGhlbSwgd2hpbGUgb2xkZXIgQ2xhc3MgQiBhbmQgQyBzdG9jayBhYnNvcmJzIHRoZSB2YWNhbmN5LiBJdCdzIGEgZmxpZ2h0LXRvLXF1YWxpdHkgbWFya2V0LCBub3QgYSB3ZWFrIG9uZS4iCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJAdHlwZSI6ICJRdWVzdGlvbiIsCiAgICAgICJuYW1lIjogIldoYXQncyBoYXBwZW5pbmcgdG8gb2xkZXIgZG93bnRvd24gb2ZmaWNlIGJ1aWxkaW5ncyB0aGF0IGNhbid0IGZpbmQgdGVuYW50cz8iLAogICAgICAiYWNjZXB0ZWRBbnN3ZXIiOiB7CiAgICAgICAgIkB0eXBlIjogIkFuc3dlciIsCiAgICAgICAgInRleHQiOiAiTWFueSBhcmUgY29udmVydGluZyB0byByZXNpZGVudGlhbCBvciBob3NwaXRhbGl0eSB1c2UuIFRoZSBjaXR5J3MgRG93bnRvd24gQnVpbGRpbmcgQ29udmVyc2lvbiBQcm9ncmFtIG5vdyBwcm92aWRlcyBkaXJlY3QgZmluYW5jaWFsIHN1cHBvcnQgZm9yIHRoZXNlIHByb2plY3RzLCBhbmQgbXVsdGlwbGUgY29udmVyc2lvbnMgYXJlIGFscmVhZHkgdW5kZXJ3YXkgY2l0eXdpZGUuIgogICAgICB9CiAgICB9LAogICAgewogICAgICAiQHR5cGUiOiAiUXVlc3Rpb24iLAogICAgICAibmFtZSI6ICJJcyBMb3Vpc3ZpbGxlIHJldGFpbCByZWFsbHkgcnVubmluZyBvdXQgb2YgYXZhaWxhYmxlIHNwYWNlPyIsCiAgICAgICJhY2NlcHRlZEFuc3dlciI6IHsKICAgICAgICAiQHR5cGUiOiAiQW5zd2VyIiwKICAgICAgICAidGV4dCI6ICJDbG9zZSB0byBpdC4gVmFjYW5jeSBpcyBuZWFyIDMuMSUsIGFuZCBtb3N0IG5ldyByZXRhaWwgY29uc3RydWN0aW9uIGlzIHByZS1sZWFzZWQgYmVmb3JlIGl0IGJyZWFrcyBncm91bmQuIgogICAgICB9CiAgICB9LAogICAgewogICAgICAiQHR5cGUiOiAiUXVlc3Rpb24iLAogICAgICAibmFtZSI6ICJIb3cgZG8gSSBnZXQgaGVscCBmaW5kaW5nLCBidXlpbmcsIG9yIGxlYXNpbmcgY29tbWVyY2lhbCBwcm9wZXJ0eSBpbiBMb3Vpc3ZpbGxlPyIsCiAgICAgICJhY2NlcHRlZEFuc3dlciI6IHsKICAgICAgICAiQHR5cGUiOiAiQW5zd2VyIiwKICAgICAgICAidGV4dCI6ICJUaGF0J3Mgd2hhdCBXaW5uZXIgUmVhbHR5IGlzIGhlcmUgZm9yIFx1MjAxNCByZWFjaCBvdXQgYW5kIHdlJ2xsIHdhbGsgdGhyb3VnaCB3aGF0IHlvdSdyZSB0cnlpbmcgdG8gZG8uIgogICAgICB9CiAgICB9CiAgXQp9YCwKYHsKICAiQGNvbnRleHQiOiAiaHR0cHM6Ly9zY2hlbWEub3JnIiwKICAiQHR5cGUiOiAiQnJlYWRjcnVtYkxpc3QiLAogICJpdGVtTGlzdEVsZW1lbnQiOiBbCiAgICB7ICJAdHlwZSI6ICJMaXN0SXRlbSIsICJwb3NpdGlvbiI6IDEsICJuYW1lIjogIkhvbWUiLCAiaXRlbSI6ICJodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tLyIgfSwKICAgIHsgIkB0eXBlIjogIkxpc3RJdGVtIiwgInBvc2l0aW9uIjogMiwgIm5hbWUiOiAiTG91aXN2aWxsZSBDb21tZXJjaWFsIFJlYWwgRXN0YXRlIE1hcmtldCBSZXBvcnQiLCAiaXRlbSI6ICJodHRwczovL3d3dy50aGV3aW5uZXJyZWFsdHkuY29tL2xvdWlzdmlsbGUtY29tbWVyY2lhbC1yZWFsLWVzdGF0ZS1tYXJrZXQtcmVwb3J0IiB9CiAgXQp9YAogIF07CgogIHNjaGVtYXMuZm9yRWFjaChmdW5jdGlvbiAoanNvbikgewogICAgdmFyIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKICAgIHMudHlwZSA9ICJhcHBsaWNhdGlvbi9sZCtqc29uIjsKICAgIHMudGV4dCA9IGpzb247CiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHMpOwogIH0pOwp9KSgpOwo8L3NjcmlwdD4=|END

WRA|i284602|18|PHNjcmlwdD4KKGZ1bmN0aW9uICgpIHsKICB2YXIgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cLyQvLCAiIik7CiAgaWYgKHBhdGggIT09ICIvbG91aXN2aWxsZS1zb3V0aGVybi1pbmRpYW5hLWhpc3RvcnkiKSByZXR1cm47CgogIHZhciBzY2hlbWFzID0gWwpgewogICJAY29udGV4dCI6ICJodHRwczovL3NjaGVtYS5vcmciLAogICJAdHlwZSI6ICJBcnRpY2xlIiwKICAiaGVhZGxpbmUiOiAiV3JpdHRlbiBpbiB0aGUgUm9jazogSG93IExvdWlzdmlsbGUgYW5kIFNvdXRoZXJuIEluZGlhbmEgQ2FtZSB0byBCZSIsCiAgImRlc2NyaXB0aW9uIjogIkhvdyBhIDM5MC1taWxsaW9uLXllYXItb2xkIHJlZWYgYnVpbHQgTG91aXN2aWxsZSBhbmQgU291dGhlcm4gSW5kaWFuYSDigJQgdGhlIHJlYWwgaGlzdG9yeSBiZWhpbmQgdGhlIG1hcmtldCBXaW5uZXIgUmVhbHR5IGtub3dzIGJldHRlciB0aGFuIGFueW9uZS4iLAogICJhdXRob3IiOiB7CiAgICAiQHR5cGUiOiAiUGVyc29uIiwKICAgICJuYW1lIjogIlJvYiBCZXJnZXJvbiIsCiAgICAiam9iVGl0bGUiOiAiT3duZXItUmVhbHRvciIsCiAgICAid29ya3NGb3IiOiB7CiAgICAgICJAdHlwZSI6ICJSZWFsRXN0YXRlQWdlbnQiLAogICAgICAibmFtZSI6ICJXaW5uZXIgUmVhbHR5IiwKICAgICAgInVybCI6ICJodHRwczovL3RoZXdpbm5lcnJlYWx0eS5jb20iCiAgICB9CiAgfSwKICAicHVibGlzaGVyIjogewogICAgIkB0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibmFtZSI6ICJXaW5uZXIgUmVhbHR5IiwKICAgICJ1cmwiOiAiaHR0cHM6Ly90aGV3aW5uZXJyZWFsdHkuY29tIgogIH0sCiAgIm1haW5FbnRpdHlPZlBhZ2UiOiB7CiAgICAiQHR5cGUiOiAiV2ViUGFnZSIsCiAgICAiQGlkIjogImh0dHBzOi8vdGhld2lubmVycmVhbHR5LmNvbS9sb3Vpc3ZpbGxlLXNvdXRoZXJuLWluZGlhbmEtaGlzdG9yeSIKICB9LAogICJkYXRlUHVibGlzaGVkIjogIjIwMjYtMDktMDciLAogICJkYXRlTW9kaWZpZWQiOiAiMjAyNi0wOS0wNyIsCiAgImFydGljbGVTZWN0aW9uIjogIkxvY2FsIEhpc3RvcnkiLAogICJrZXl3b3JkcyI6ICJMb3Vpc3ZpbGxlIGhpc3RvcnksIFNvdXRoZXJuIEluZGlhbmEgaGlzdG9yeSwgS2VudHVja2lhbmEsIEZhbGxzIG9mIHRoZSBPaGlvLCBLZW50dWNreSBEZXJieSBoaXN0b3J5LCBMb3Vpc3ZpbGxlIHJlYWwgZXN0YXRlIgp9YCwKYHsKICAiQGNvbnRleHQiOiAiaHR0cHM6Ly9zY2hlbWEub3JnIiwKICAiQHR5cGUiOiAiRkFRUGFnZSIsCiAgIm1haW5FbnRpdHkiOiBbCiAgICB7CiAgICAgICJAdHlwZSI6ICJRdWVzdGlvbiIsCiAgICAgICJuYW1lIjogIldoeSBpcyBMb3Vpc3ZpbGxlIGNhbGxlZCBMb3Vpc3ZpbGxlPyIsCiAgICAgICJhY2NlcHRlZEFuc3dlciI6IHsKICAgICAgICAiQHR5cGUiOiAiQW5zd2VyIiwKICAgICAgICAidGV4dCI6ICJWaXJnaW5pYSdzIEdlbmVyYWwgQXNzZW1ibHkgY2hhcnRlcmVkIHRoZSB0b3duIG9uIE1heSAxLCAxNzgwLCBuYW1pbmcgaXQgZm9yIEtpbmcgTG91aXMgWFZJIG9mIEZyYW5jZSwgd2hvc2Ugc3VwcG9ydCBoZWxwZWQga2VlcCB0aGUgQW1lcmljYW4gUmV2b2x1dGlvbiBhbGl2ZS4iCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJAdHlwZSI6ICJRdWVzdGlvbiIsCiAgICAgICJuYW1lIjogIldoeSBkb2VzIExvdWlzdmlsbGUgZXhpc3Qgd2hlcmUgaXQgZG9lcz8iLAogICAgICAiYWNjZXB0ZWRBbnN3ZXIiOiB7CiAgICAgICAgIkB0eXBlIjogIkFuc3dlciIsCiAgICAgICAgInRleHQiOiAiVGhlIEZhbGxzIG9mIHRoZSBPaGlvIOKAlCBhIHR3by1taWxlIHN0cmV0Y2ggb2YgcmFwaWRzIGFuZCB0aGUgb25seSBwbGFjZSBvbiB0aGUgZW50aXJlIDk4MS1taWxlIE9oaW8gUml2ZXIgd2hlcmUgYm9hdHMgY291bGRuJ3QgcGFzcyBzdHJhaWdodCB0aHJvdWdoIOKAlCBmb3JjZWQgcml2ZXIgdHJhZmZpYyB0byBzdG9wLCB1bmxvYWQsIGFuZCBwb3J0YWdlLiBUaGF0IHN0b3AgYmVjYW1lIGEgY2l0eS4iCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJAdHlwZSI6ICJRdWVzdGlvbiIsCiAgICAgICJuYW1lIjogIldoYXQgY2F1c2VkIHRoZSAxOTM3IGZsb29kLCBhbmQgaG93IGJhZCB3YXMgaXQ/IiwKICAgICAgImFjY2VwdGVkQW5zd2VyIjogewogICAgICAgICJAdHlwZSI6ICJBbnN3ZXIiLAogICAgICAgICJ0ZXh0IjogIlRoZSBPaGlvIFJpdmVyIGNyZXN0ZWQgYXQgNTcuMTUgZmVldCBvbiBKYW51YXJ5IDI3LCAxOTM3LCBhYm91dCA3MCUgb2YgTG91aXN2aWxsZSB3ZW50IHVuZGVyd2F0ZXIsIGFuZCByb3VnaGx5IDE3NSwwMDAgcmVzaWRlbnRzIHdlcmUgZGlzcGxhY2VkLiBUaGUgY2l0eSdzIGZsb29kd2FsbCBzeXN0ZW0sIGJ1aWx0IGJldHdlZW4gMTk0OCBhbmQgdGhlIGxhdGUgMTk4MHMsIHN0aWxsIGRlZmluZXMgd2hpY2ggcGFydHMgb2YgTG91aXN2aWxsZSBhcmUgZGV2ZWxvcGFibGUgdG9kYXkuIgogICAgICB9CiAgICB9LAogICAgewogICAgICAiQHR5cGUiOiAiUXVlc3Rpb24iLAogICAgICAibmFtZSI6ICJJcyBTb3V0aGVybiBJbmRpYW5hIGdyb3dpbmcgZmFzdGVyIHRoYW4gTG91aXN2aWxsZT8iLAogICAgICAiYWNjZXB0ZWRBbnN3ZXIiOiB7CiAgICAgICAgIkB0eXBlIjogIkFuc3dlciIsCiAgICAgICAgInRleHQiOiAiUmVjZW50IENlbnN1cyBkYXRhIHNob3dzIENsYXJrIENvdW50eSwgSW5kaWFuYSBncm93aW5nIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gSmVmZmVyc29uIENvdW50eSwgS2VudHVja3ksIGRyaXZlbiBwYXJ0bHkgYnkgbG93ZXIgY3Jvc3Mtcml2ZXIgdGF4IHJhdGVzIGFuZCBsYXJnZSBlbXBsb3llcnMgbGlrZSBNZXRhJ3MgSmVmZmVyc29udmlsbGUgZGF0YSBjZW50ZXIuIgogICAgICB9CiAgICB9LAogICAgewogICAgICAiQHR5cGUiOiAiUXVlc3Rpb24iLAogICAgICAibmFtZSI6ICJIb3cgYmlnIGlzIEtlbnR1Y2t5J3MgYm91cmJvbiBpbmR1c3RyeSB0b2RheT8iLAogICAgICAiYWNjZXB0ZWRBbnN3ZXIiOiB7CiAgICAgICAgIkB0eXBlIjogIkFuc3dlciIsCiAgICAgICAgInRleHQiOiAiQXMgb2YgSmFudWFyeSAyMDI1LCBtb3JlIHRoYW4gMTcuMSBtaWxsaW9uIGJhcnJlbHMgb2Ygd2hpc2tleSB3ZXJlIGFnaW5nIGluIEtlbnR1Y2t5IHdhcmVob3VzZXMg4oCUIG92ZXIgdGhyZWUgYW5kIGEgaGFsZiBiYXJyZWxzIGZvciBldmVyeSBwZXJzb24gaW4gdGhlIHN0YXRlIOKAlCBzdXBwb3J0aW5nIGEgJDEwLjYgYmlsbGlvbiBhbm51YWwgaW5kdXN0cnkuIgogICAgICB9CiAgICB9LAogICAgewogICAgICAiQHR5cGUiOiAiUXVlc3Rpb24iLAogICAgICAibmFtZSI6ICJXaHkgaXMgTG91aXN2aWxsZSBhIGh1YiBmb3IgVVBTPyIsCiAgICAgICJhY2NlcHRlZEFuc3dlciI6IHsKICAgICAgICAiQHR5cGUiOiAiQW5zd2VyIiwKICAgICAgICAidGV4dCI6ICJVUFMgV29ybGRwb3J0LCBhIDUuMi1taWxsaW9uLXNxdWFyZS1mb290IHNvcnRpbmcgZmFjaWxpdHksIGhhbmRsZXMgcm91Z2hseSA0MDAsMDAwKyBwYWNrYWdlcyBhbiBob3VyLiBJbiAyMDI1IExvdWlzdmlsbGUncyBhaXJwb3J0IG1vdmVkIG1vcmUgYWlyIGNhcmdvIHRoYW4gZXZlcnkgYWlycG9ydCBpbiBOb3J0aCBBbWVyaWNhIGV4Y2VwdCBvbmUsIHRoYW5rcyBpbiBwYXJ0IHRvIGl0cyBjZW50cmFsIGxvY2F0aW9uIHdpdGhpbiBhIGRheSdzIGRyaXZlIG9mIGFib3V0IHR3by10aGlyZHMgb2YgdGhlIFUuUy4gcG9wdWxhdGlvbi4iCiAgICAgIH0KICAgIH0KICBdCn1gLApgewogICJAY29udGV4dCI6ICJodHRwczovL3NjaGVtYS5vcmciLAogICJAdHlwZSI6ICJCcmVhZGNydW1iTGlzdCIsCiAgIml0ZW1MaXN0RWxlbWVudCI6IFsKICAgIHsgIkB0eXBlIjogIkxpc3RJdGVtIiwgInBvc2l0aW9uIjogMSwgIm5hbWUiOiAiSG9tZSIsICJpdGVtIjogImh0dHBzOi8vdGhld2lubmVycmVhbHR5LmNvbS8iIH0sCiAgICB7ICJAdHlwZSI6ICJMaXN0SXRlbSIsICJwb3NpdGlvbiI6IDIsICJuYW1lIjogIkxvdWlzdmlsbGUgJiBTb3V0aGVybiBJbmRpYW5hIEhpc3RvcnkiLCAiaXRlbSI6ICJodHRwczovL3RoZXdpbm5lcnJlYWx0eS5jb20vbG91aXN2aWxsZS1zb3V0aGVybi1pbmRpYW5hLWhpc3RvcnkiIH0KICBdCn1gCiAgXTsKCiAgc2NoZW1hcy5mb3JFYWNoKGZ1bmN0aW9uIChqc29uKSB7CiAgICB2YXIgcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwogICAgcy50eXBlID0gImFwcGxpY2F0aW9uL2xkK2pzb24iOwogICAgcy50ZXh0ID0ganNvbjsKICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7CiAgfSk7Cn0pKCk7Cjwvc2NyaXB0Pg==|END

WRA|social|99|PHNjcmlwdD4KLyogV1JfRk9PVEVSX1NPQ0lBTF9WMTogWW91VHViZSArIEJsb2NrIGJ5IEJsb2NrIHBvZGNhc3QgbGlua3MgaW4gdGhlIGZvb3RlciBzb2NpYWwgbGlzdCAqLwooZnVuY3Rpb24oKXsKICB2YXIgQUREID0gWwogICAgWydodHRwczovL3d3dy55b3V0dWJlLmNvbS9AV2lubmVyUmVhbHR5TG91aXN2aWxsZScsICdXaW5uZXIgUmVhbHR5IG9uIFlvdVR1YmUnXSwKICAgIFsnaHR0cHM6Ly9vcGVuLnNwb3RpZnkuY29tL3Nob3cvMmdZQU1IWmdPOHhoSk1IOHp2dFo1bScsICdCbG9jayBieSBCbG9jayBwb2RjYXN0IG9uIFNwb3RpZnknXSwKICAgIFsnaHR0cHM6Ly9wb2RjYXN0cy5hcHBsZS5jb20vdXMvcG9kY2FzdC9pZDY4MjE0MDI5ODcnLCAnQmxvY2sgYnkgQmxvY2sgcG9kY2FzdCBvbiBBcHBsZSBQb2RjYXN0cyddCiAgXTsKICBmdW5jdGlvbiBydW4oKXsKICAgIHZhciBmYiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Euc2ItbGlua1tocmVmKj0iZmFjZWJvb2suY29tIl0nKTsKICAgIGlmICghZmIgfHwgIWZiLnBhcmVudEVsZW1lbnQgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYVtkYXRhLXdyLXNvY2lhbF0nKSkgcmV0dXJuICEhZmI7CiAgICB2YXIgbGkgPSBmYi5wYXJlbnRFbGVtZW50LCB1bCA9IGxpLnBhcmVudEVsZW1lbnQ7CiAgICBBREQuZm9yRWFjaChmdW5jdGlvbih4KXsKICAgICAgdmFyIGMgPSBsaS5jbG9uZU5vZGUodHJ1ZSksIGEgPSBjLnF1ZXJ5U2VsZWN0b3IoJ2EnKTsKICAgICAgYS5ocmVmID0geFswXTsgYS50ZXh0Q29udGVudCA9IHhbMV07IGEudGFyZ2V0ID0gJ19ibGFuayc7IGEucmVsID0gJ25vb3BlbmVyJzsgYS5zZXRBdHRyaWJ1dGUoJ2RhdGEtd3Itc29jaWFsJywgJzEnKTsKICAgICAgdWwuYXBwZW5kQ2hpbGQoYyk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwogIH0KICB2YXIgayA9IDA7IChmdW5jdGlvbiB0KCl7IGlmIChydW4oKSB8fCArK2sgPiAyMCkgcmV0dXJuOyBzZXRUaW1lb3V0KHQsIDQwMCk7IH0pKCk7Cn0pKCk7Cjwvc2NyaXB0Pg==|END