Du findest die Produkte der HAUPTSTADTMARKE BERLIN in unseren Souvenir-Shops an folgenden Standorten:
| Standort | Adresse | Öffnungszeiten | Externe Karte |
| Kranzler Eck | Kurfürstendamm 21 | 09:00 – 21:00 Uhr | bei Google ansehen |
| Dom-Aquarée | Karl-Liebknecht-Straße 5 | 09:00 – 21:00 Uhr | bei Google ansehen |
| ALEXA Shopping Center | Grunerstraße 20 | 10:00 – 21:00 Uhr | bei Google ansehen |
| Mall of Berlin | Leipziger Platz 12 | 10:00 – 21:00 Uhr | bei Google ansehen |
| The Wall Store am „Uber Platz“ | Mühlenstraße 13-19 | 09:00 – 21:00 Uhr | bei Google ansehen |
| The Wall Store am Flughafen BER | Willy-Brandt-Platz 1 Terminal 1 | 09:00 – 21:00 Uhr | bei Google ansehen |
| BERLIN Store Ostbahnhof | Am Ostbahnhof 9 | 09:00 – 21:00 Uhr | bei Google ansehen |
| Allied Checkpoint Store am Checkpoint Charlie | Friedrichstraße 200 | 09:00 – 21:00 Uhr | bei Google ansehen |
Hier kannst Du dir alle Stores auf einer OpenStreetMap-Karte anzeigen lassen:
Die Karte wird durch OpenStreetMap zur Verfügung gestellt.
PGJyIC8+CjxkaXYgY2xhc3M9ImxlYWZsZXQtbWFwIFdQTGVhZmxldE1hcCIgc3R5bGU9ImhlaWdodDo2MDBweDsgd2lkdGg6MTAwJTsiPjwvZGl2PjxzY3JpcHQ+CndpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4gPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luIHx8IFtdOwp3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLnB1c2goZnVuY3Rpb24gV1BMZWFmbGV0TWFwU2hvcnRjb2RlKCkgey8qPHNjcmlwdD4qLwp2YXIgYmFzZVVybCA9IGF0b2IoJ2FIUjBjSE02THk5N2MzMHVkR2xzWlM1dmNHVnVjM1J5WldWMGJXRndMbTl5Wnk5N2VuMHZlM2g5TDN0NWZTNXdibWM9Jyk7CnZhciBiYXNlID0gKCFiYXNlVXJsICYmIHdpbmRvdy5NUSkgPwogICAgd2luZG93Lk1RLm1hcExheWVyKCkgOiBMLnRpbGVMYXllcihiYXNlVXJsLAogICAgICAgIEwuVXRpbC5leHRlbmQoe30sIHsKICAgICAgICAgICAgZGV0ZWN0UmV0aW5hOiAwLAogICAgICAgIH0sCiAgICAgICAgeyJzdWJkb21haW5zIjoiYWJjIiwibm9XcmFwIjpmYWxzZSwibWF4Wm9vbSI6MTl9ICAgICAgICApCiAgICApOwogICAgdmFyIG9wdGlvbnMgPSBMLlV0aWwuZXh0ZW5kKHt9LCB7CiAgICAgICAgbGF5ZXJzOiBbYmFzZV0sCiAgICAgICAgYXR0cmlidXRpb25Db250cm9sOiBmYWxzZQogICAgfSwKICAgIHsiem9vbUNvbnRyb2wiOmZhbHNlLCJzY3JvbGxXaGVlbFpvb20iOnRydWUsImRvdWJsZUNsaWNrWm9vbSI6ZmFsc2UsImZpdEJvdW5kcyI6ZmFsc2UsIm1pblpvb20iOjAsIm1heFpvb20iOjE5LCJtYXhCb3VuZHMiOm51bGwsImF0dHJpYnV0aW9uIjoiPGEgaHJlZj1cImh0dHA6XC9cL2xlYWZsZXRqcy5jb21cIiB0aXRsZT1cIkVpbmUgSmF2YXNjcmlwdC1CaWJsaW90aGVrIGZcdTAwZmNyIGludGVyYWt0aXZlIEthcnRlblwiPkxlYWZsZXQ8XC9hPjsgXHUwMGE5IDxhIGhyZWY9XCJodHRwOlwvXC93d3cub3BlbnN0cmVldG1hcC5vcmdcL2NvcHlyaWdodFwiPk9wZW5TdHJlZXRNYXA8XC9hPiBNaXR3aXJrZW5kZSJ9LAogICAge30pOwp3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmNyZWF0ZU1hcChvcHRpb25zKS5zZXRWaWV3KFs1Mi41MTYxNzY3LDEzLjM3NzUwMjFdLDEzKTt9KTs8L3NjcmlwdD48YnIgLz4KPHNjcmlwdD4Kd2luZG93LldQTGVhZmxldE1hcFBsdWdpbiA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4gfHwgW107CndpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4ucHVzaChmdW5jdGlvbiBXUExlYWZsZXRNYXJrZXJTaG9ydGNvZGUoKSB7Lyo8c2NyaXB0PiovCnZhciBtYXAgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEN1cnJlbnRNYXAoKTsKdmFyIGdyb3VwID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5nZXRDdXJyZW50R3JvdXAoKTsKdmFyIG1hcmtlcl9vcHRpb25zID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5nZXRJY29uT3B0aW9ucyh7fSk7CnZhciBtYXJrZXIgPSBMLm1hcmtlcigKICAgIFs1Mi41MDM4MDM3NjIwOTcsMTMuMzMwMzY5MDM1NTg4XSwKICAgIG1hcmtlcl9vcHRpb25zCik7CnZhciBpc19pbWFnZSA9IG1hcC5pc19pbWFnZV9tYXA7CmlmIChtYXJrZXJfb3B0aW9ucy5kcmFnZ2FibGUpIHsKICAgIG1hcmtlci5vbignZHJhZ2VuZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgbGF0bG5nID0gdGhpcy5nZXRMYXRMbmcoKTsKICAgICAgICB2YXIgbGF0ID0gbGF0bG5nLmxhdDsKICAgICAgICB2YXIgbG5nID0gbGF0bG5nLmxuZzsKICAgICAgICBpZiAoaXNfaW1hZ2UpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coJ2xlYWZsZXQtbWFya2VyIHk9JyArIGxhdCArICcgeD0nICsgbG5nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb25zb2xlLmxvZygnbGVhZmxldC1tYXJrZXIgbGF0PScgKyBsYXQgKyAnIGxuZz0nICsgbG5nKTsKICAgICAgICB9CiAgICB9KTsKfQptYXJrZXIuYWRkVG8oIGdyb3VwICk7Cm1hcmtlci5iaW5kUG9wdXAod2luZG93LldQTGVhZmxldE1hcFBsdWdpbi51bmVzY2FwZSgnU3RvcmUgS3JhbnpsZXIgRWNrICZsdDthIGhyZWY9XCZxdW90O2h0dHBzOi8vbWFwcy5hcHAuZ29vLmdsL2JNRDFGeXRMcDVka0ZkMTY3XCZxdW90OyB0YXJnZXQ9XCZxdW90O19ibGFua1wmcXVvdDsmZ3Q7YmVpIEdvb2dsZSBhdWZydWZlbiZsdDsvYSZndDsnKSk7d2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5tYXJrZXJzLnB1c2goIG1hcmtlciApOwogICAgICAgIH0pOzwvc2NyaXB0PjxiciAvPgo8c2NyaXB0Pgp3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbiB8fCBbXTsKd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5wdXNoKGZ1bmN0aW9uIFdQTGVhZmxldE1hcmtlclNob3J0Y29kZSgpIHsvKjxzY3JpcHQ+Ki8KdmFyIG1hcCA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4uZ2V0Q3VycmVudE1hcCgpOwp2YXIgZ3JvdXAgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEN1cnJlbnRHcm91cCgpOwp2YXIgbWFya2VyX29wdGlvbnMgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEljb25PcHRpb25zKHt9KTsKdmFyIG1hcmtlciA9IEwubWFya2VyKAogICAgWzUyLjUxOTg0MDU3NTc4NSwxMy40MDQwMDk0Nzg5MzhdLAogICAgbWFya2VyX29wdGlvbnMKKTsKdmFyIGlzX2ltYWdlID0gbWFwLmlzX2ltYWdlX21hcDsKaWYgKG1hcmtlcl9vcHRpb25zLmRyYWdnYWJsZSkgewogICAgbWFya2VyLm9uKCdkcmFnZW5kJywgZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBsYXRsbmcgPSB0aGlzLmdldExhdExuZygpOwogICAgICAgIHZhciBsYXQgPSBsYXRsbmcubGF0OwogICAgICAgIHZhciBsbmcgPSBsYXRsbmcubG5nOwogICAgICAgIGlmIChpc19pbWFnZSkgewogICAgICAgICAgICBjb25zb2xlLmxvZygnbGVhZmxldC1tYXJrZXIgeT0nICsgbGF0ICsgJyB4PScgKyBsbmcpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsZWFmbGV0LW1hcmtlciBsYXQ9JyArIGxhdCArICcgbG5nPScgKyBsbmcpOwogICAgICAgIH0KICAgIH0pOwp9Cm1hcmtlci5hZGRUbyggZ3JvdXAgKTsKbWFya2VyLmJpbmRQb3B1cCh3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLnVuZXNjYXBlKCdTdG9yZSBEb20tQXF1YXLDqWUgJmx0O2EgaHJlZj1cJnF1b3Q7aHR0cHM6Ly9tYXBzLmFwcC5nb28uZ2wva1FyN1FBU3hqbWhucWpXTjdcJnF1b3Q7IHRhcmdldD1cJnF1b3Q7X2JsYW5rXCZxdW90OyZndDtiZWkgR29vZ2xlIGF1ZnJ1ZmVuJmx0Oy9hJmd0OycpKTt3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLm1hcmtlcnMucHVzaCggbWFya2VyICk7CiAgICAgICAgfSk7PC9zY3JpcHQ+PGJyIC8+CjxzY3JpcHQ+CndpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4gPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luIHx8IFtdOwp3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLnB1c2goZnVuY3Rpb24gV1BMZWFmbGV0TWFya2VyU2hvcnRjb2RlKCkgey8qPHNjcmlwdD4qLwp2YXIgbWFwID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5nZXRDdXJyZW50TWFwKCk7CnZhciBncm91cCA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4uZ2V0Q3VycmVudEdyb3VwKCk7CnZhciBtYXJrZXJfb3B0aW9ucyA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4uZ2V0SWNvbk9wdGlvbnMoe30pOwp2YXIgbWFya2VyID0gTC5tYXJrZXIoCiAgICBbNTIuNTIwMDQ4NjEyMDAzLDEzLjQxNDcyNTA5NjczXSwKICAgIG1hcmtlcl9vcHRpb25zCik7CnZhciBpc19pbWFnZSA9IG1hcC5pc19pbWFnZV9tYXA7CmlmIChtYXJrZXJfb3B0aW9ucy5kcmFnZ2FibGUpIHsKICAgIG1hcmtlci5vbignZHJhZ2VuZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgbGF0bG5nID0gdGhpcy5nZXRMYXRMbmcoKTsKICAgICAgICB2YXIgbGF0ID0gbGF0bG5nLmxhdDsKICAgICAgICB2YXIgbG5nID0gbGF0bG5nLmxuZzsKICAgICAgICBpZiAoaXNfaW1hZ2UpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coJ2xlYWZsZXQtbWFya2VyIHk9JyArIGxhdCArICcgeD0nICsgbG5nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb25zb2xlLmxvZygnbGVhZmxldC1tYXJrZXIgbGF0PScgKyBsYXQgKyAnIGxuZz0nICsgbG5nKTsKICAgICAgICB9CiAgICB9KTsKfQptYXJrZXIuYWRkVG8oIGdyb3VwICk7Cm1hcmtlci5iaW5kUG9wdXAod2luZG93LldQTGVhZmxldE1hcFBsdWdpbi51bmVzY2FwZSgnQUxFWEEgU2hvcHBpbmctQ2VudGVyICZsdDthIGhyZWY9XCZxdW90O2h0dHBzOi8vbWFwcy5hcHAuZ29vLmdsL3A4NjFjd0xMdTF2Wm9yRFo2XCZxdW90OyB0YXJnZXQ9XCZxdW90O19ibGFua1wmcXVvdDsmZ3Q7YmVpIEdvb2dsZSBhdWZydWZlbiZsdDsvYSZndDsnKSk7d2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5tYXJrZXJzLnB1c2goIG1hcmtlciApOwogICAgICAgIH0pOzwvc2NyaXB0PjxiciAvPgo8c2NyaXB0Pgp3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbiB8fCBbXTsKd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5wdXNoKGZ1bmN0aW9uIFdQTGVhZmxldE1hcmtlclNob3J0Y29kZSgpIHsvKjxzY3JpcHQ+Ki8KdmFyIG1hcCA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4uZ2V0Q3VycmVudE1hcCgpOwp2YXIgZ3JvdXAgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEN1cnJlbnRHcm91cCgpOwp2YXIgbWFya2VyX29wdGlvbnMgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEljb25PcHRpb25zKHt9KTsKdmFyIG1hcmtlciA9IEwubWFya2VyKAogICAgWzUyLjUxMDIyMjAwNjQ0NywxMy4zNzk2NzYyNDE1MjldLAogICAgbWFya2VyX29wdGlvbnMKKTsKdmFyIGlzX2ltYWdlID0gbWFwLmlzX2ltYWdlX21hcDsKaWYgKG1hcmtlcl9vcHRpb25zLmRyYWdnYWJsZSkgewogICAgbWFya2VyLm9uKCdkcmFnZW5kJywgZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBsYXRsbmcgPSB0aGlzLmdldExhdExuZygpOwogICAgICAgIHZhciBsYXQgPSBsYXRsbmcubGF0OwogICAgICAgIHZhciBsbmcgPSBsYXRsbmcubG5nOwogICAgICAgIGlmIChpc19pbWFnZSkgewogICAgICAgICAgICBjb25zb2xlLmxvZygnbGVhZmxldC1tYXJrZXIgeT0nICsgbGF0ICsgJyB4PScgKyBsbmcpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsZWFmbGV0LW1hcmtlciBsYXQ9JyArIGxhdCArICcgbG5nPScgKyBsbmcpOwogICAgICAgIH0KICAgIH0pOwp9Cm1hcmtlci5hZGRUbyggZ3JvdXAgKTsKbWFya2VyLmJpbmRQb3B1cCh3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLnVuZXNjYXBlKCdNYWxsIG9mIEJlcmxpbiAmbHQ7YSBocmVmPVwmcXVvdDtodHRwczovL21hcHMuYXBwLmdvby5nbC9wOHUzRE1mMzdWeURFU1AyOVwmcXVvdDsgdGFyZ2V0PVwmcXVvdDtfYmxhbmtcJnF1b3Q7Jmd0O2JlaSBHb29nbGUgYXVmcnVmZW4mbHQ7L2EmZ3Q7JykpO3dpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4ubWFya2Vycy5wdXNoKCBtYXJrZXIgKTsKICAgICAgICB9KTs8L3NjcmlwdD48YnIgLz4KPHNjcmlwdD4Kd2luZG93LldQTGVhZmxldE1hcFBsdWdpbiA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4gfHwgW107CndpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4ucHVzaChmdW5jdGlvbiBXUExlYWZsZXRNYXJrZXJTaG9ydGNvZGUoKSB7Lyo8c2NyaXB0PiovCnZhciBtYXAgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEN1cnJlbnRNYXAoKTsKdmFyIGdyb3VwID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5nZXRDdXJyZW50R3JvdXAoKTsKdmFyIG1hcmtlcl9vcHRpb25zID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5nZXRJY29uT3B0aW9ucyh7fSk7CnZhciBtYXJrZXIgPSBMLm1hcmtlcigKICAgIFs1Mi41MDQ1MTAzNzAzNDcsMTMuNDQyMzc0Njk2NzI5XSwKICAgIG1hcmtlcl9vcHRpb25zCik7CnZhciBpc19pbWFnZSA9IG1hcC5pc19pbWFnZV9tYXA7CmlmIChtYXJrZXJfb3B0aW9ucy5kcmFnZ2FibGUpIHsKICAgIG1hcmtlci5vbignZHJhZ2VuZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgbGF0bG5nID0gdGhpcy5nZXRMYXRMbmcoKTsKICAgICAgICB2YXIgbGF0ID0gbGF0bG5nLmxhdDsKICAgICAgICB2YXIgbG5nID0gbGF0bG5nLmxuZzsKICAgICAgICBpZiAoaXNfaW1hZ2UpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coJ2xlYWZsZXQtbWFya2VyIHk9JyArIGxhdCArICcgeD0nICsgbG5nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb25zb2xlLmxvZygnbGVhZmxldC1tYXJrZXIgbGF0PScgKyBsYXQgKyAnIGxuZz0nICsgbG5nKTsKICAgICAgICB9CiAgICB9KTsKfQptYXJrZXIuYWRkVG8oIGdyb3VwICk7Cm1hcmtlci5iaW5kUG9wdXAod2luZG93LldQTGVhZmxldE1hcFBsdWdpbi51bmVzY2FwZSgnVGhlIFdhbGwgU3RvcmUgJmx0O2EgaHJlZj1cJnF1b3Q7aHR0cHM6Ly9tYXBzLmFwcC5nb28uZ2wvOG5jS21lN3ZuYVQ4amtzMzhcJnF1b3Q7IHRhcmdldD1cJnF1b3Q7X2JsYW5rXCZxdW90OyZndDtiZWkgR29vZ2xlIGF1ZnJ1ZmVuJmx0Oy9hJmd0OycpKTt3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLm1hcmtlcnMucHVzaCggbWFya2VyICk7CiAgICAgICAgfSk7PC9zY3JpcHQ+PGJyIC8+CjxzY3JpcHQ+CndpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4gPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luIHx8IFtdOwp3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLnB1c2goZnVuY3Rpb24gV1BMZWFmbGV0TWFya2VyU2hvcnRjb2RlKCkgey8qPHNjcmlwdD4qLwp2YXIgbWFwID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5nZXRDdXJyZW50TWFwKCk7CnZhciBncm91cCA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4uZ2V0Q3VycmVudEdyb3VwKCk7CnZhciBtYXJrZXJfb3B0aW9ucyA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4uZ2V0SWNvbk9wdGlvbnMoe30pOwp2YXIgbWFya2VyID0gTC5tYXJrZXIoCiAgICBbNTIuMzY5NDg5MDEzMjksMTMuNTExMDQxMTI5NTI5XSwKICAgIG1hcmtlcl9vcHRpb25zCik7CnZhciBpc19pbWFnZSA9IG1hcC5pc19pbWFnZV9tYXA7CmlmIChtYXJrZXJfb3B0aW9ucy5kcmFnZ2FibGUpIHsKICAgIG1hcmtlci5vbignZHJhZ2VuZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgbGF0bG5nID0gdGhpcy5nZXRMYXRMbmcoKTsKICAgICAgICB2YXIgbGF0ID0gbGF0bG5nLmxhdDsKICAgICAgICB2YXIgbG5nID0gbGF0bG5nLmxuZzsKICAgICAgICBpZiAoaXNfaW1hZ2UpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coJ2xlYWZsZXQtbWFya2VyIHk9JyArIGxhdCArICcgeD0nICsgbG5nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb25zb2xlLmxvZygnbGVhZmxldC1tYXJrZXIgbGF0PScgKyBsYXQgKyAnIGxuZz0nICsgbG5nKTsKICAgICAgICB9CiAgICB9KTsKfQptYXJrZXIuYWRkVG8oIGdyb3VwICk7Cm1hcmtlci5iaW5kUG9wdXAod2luZG93LldQTGVhZmxldE1hcFBsdWdpbi51bmVzY2FwZSgnVGhlIFdhbGwgU3RvcmUgJmx0O2EgaHJlZj1cJnF1b3Q7aHR0cHM6Ly9tYXBzLmFwcC5nb28uZ2wvVTRkc3gyWFFzTGlSblNneDhcJnF1b3Q7IHRhcmdldD1cJnF1b3Q7X2JsYW5rXCZxdW90OyZndDtiZWkgR29vZ2xlIGF1ZnJ1ZmVuJmx0Oy9hJmd0OycpKTt3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLm1hcmtlcnMucHVzaCggbWFya2VyICk7CiAgICAgICAgfSk7PC9zY3JpcHQ+PGJyIC8+CjxzY3JpcHQ+CndpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4gPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luIHx8IFtdOwp3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLnB1c2goZnVuY3Rpb24gV1BMZWFmbGV0TWFya2VyU2hvcnRjb2RlKCkgey8qPHNjcmlwdD4qLwp2YXIgbWFwID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5nZXRDdXJyZW50TWFwKCk7CnZhciBncm91cCA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4uZ2V0Q3VycmVudEdyb3VwKCk7CnZhciBtYXJrZXJfb3B0aW9ucyA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4uZ2V0SWNvbk9wdGlvbnMoe30pOwp2YXIgbWFya2VyID0gTC5tYXJrZXIoCiAgICBbNTIuNTA5NzkwNDc5NTk2LDEzLjQzNDg4Mjg1NDRdLAogICAgbWFya2VyX29wdGlvbnMKKTsKdmFyIGlzX2ltYWdlID0gbWFwLmlzX2ltYWdlX21hcDsKaWYgKG1hcmtlcl9vcHRpb25zLmRyYWdnYWJsZSkgewogICAgbWFya2VyLm9uKCdkcmFnZW5kJywgZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBsYXRsbmcgPSB0aGlzLmdldExhdExuZygpOwogICAgICAgIHZhciBsYXQgPSBsYXRsbmcubGF0OwogICAgICAgIHZhciBsbmcgPSBsYXRsbmcubG5nOwogICAgICAgIGlmIChpc19pbWFnZSkgewogICAgICAgICAgICBjb25zb2xlLmxvZygnbGVhZmxldC1tYXJrZXIgeT0nICsgbGF0ICsgJyB4PScgKyBsbmcpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsZWFmbGV0LW1hcmtlciBsYXQ9JyArIGxhdCArICcgbG5nPScgKyBsbmcpOwogICAgICAgIH0KICAgIH0pOwp9Cm1hcmtlci5hZGRUbyggZ3JvdXAgKTsKbWFya2VyLmJpbmRQb3B1cCh3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLnVuZXNjYXBlKCdCRVJMSU4gU3RvcmUgT3N0YmFobmhvZiAmbHQ7YSBocmVmPVwmcXVvdDtodHRwczovL21hcHMuYXBwLmdvby5nbC9qbUNOdGlibndDbzRadTRuOVwmcXVvdDsgdGFyZ2V0PVwmcXVvdDtfYmxhbmtcJnF1b3Q7Jmd0O2JlaSBHb29nbGUgYXVmcnVmZW4mbHQ7L2EmZ3Q7JykpO3dpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4ubWFya2Vycy5wdXNoKCBtYXJrZXIgKTsKICAgICAgICB9KTs8L3NjcmlwdD48YnIgLz4KPHNjcmlwdD4Kd2luZG93LldQTGVhZmxldE1hcFBsdWdpbiA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4gfHwgW107CndpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4ucHVzaChmdW5jdGlvbiBXUExlYWZsZXRNYXJrZXJTaG9ydGNvZGUoKSB7Lyo8c2NyaXB0PiovCnZhciBtYXAgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEN1cnJlbnRNYXAoKTsKdmFyIGdyb3VwID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5nZXRDdXJyZW50R3JvdXAoKTsKdmFyIG1hcmtlcl9vcHRpb25zID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5nZXRJY29uT3B0aW9ucyh7fSk7CnZhciBtYXJrZXIgPSBMLm1hcmtlcigKICAgIFs1Mi41MDkyNTkwNjgyNTgsMTMuMzg5ODQ5OTM3ODM0XSwKICAgIG1hcmtlcl9vcHRpb25zCik7CnZhciBpc19pbWFnZSA9IG1hcC5pc19pbWFnZV9tYXA7CmlmIChtYXJrZXJfb3B0aW9ucy5kcmFnZ2FibGUpIHsKICAgIG1hcmtlci5vbignZHJhZ2VuZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgbGF0bG5nID0gdGhpcy5nZXRMYXRMbmcoKTsKICAgICAgICB2YXIgbGF0ID0gbGF0bG5nLmxhdDsKICAgICAgICB2YXIgbG5nID0gbGF0bG5nLmxuZzsKICAgICAgICBpZiAoaXNfaW1hZ2UpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coJ2xlYWZsZXQtbWFya2VyIHk9JyArIGxhdCArICcgeD0nICsgbG5nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb25zb2xlLmxvZygnbGVhZmxldC1tYXJrZXIgbGF0PScgKyBsYXQgKyAnIGxuZz0nICsgbG5nKTsKICAgICAgICB9CiAgICB9KTsKfQptYXJrZXIuYWRkVG8oIGdyb3VwICk7Cm1hcmtlci5iaW5kUG9wdXAod2luZG93LldQTGVhZmxldE1hcFBsdWdpbi51bmVzY2FwZSgnQWxsaWVkIENoZWNrcG9pbnQgU3RvcmUgJmx0O2EgaHJlZj1cJnF1b3Q7aHR0cHM6Ly9tYXBzLmFwcC5nb28uZ2wvQlZteEZXaUdXQXdLN1BIMThcJnF1b3Q7IHRhcmdldD1cJnF1b3Q7X2JsYW5rXCZxdW90OyZndDtiZWkgR29vZ2xlIGF1ZnJ1ZmVuJmx0Oy9hJmd0OycpKTt3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLm1hcmtlcnMucHVzaCggbWFya2VyICk7CiAgICAgICAgfSk7PC9zY3JpcHQ+PGJyIC8+Cg==