Clientele - 1

Graziani Clientele

90-94 Crown Street is an address that is synonymous with Cars & Lifestyle.

The Graziani name that proudly adorns the building is a constant reminder that this family business is fuelled by passion to deliver motoring dreams to its clients and followers.

Approaching 40 years of automotive affair, Tony and his Team at Scuderia Graziani have had the honour of working with some of the world’s best Luxury Automotive Brands and an equally aspirational clientele.


I find it rewarding to be among the people who have invested in our product and long to gather and share their experiences and enthusiasm…

– Tony Graziani

MEET OUR CLIENTELE

Clientele - 2Tony Sal
03:59 27 Jun 25
I recently sold my car through Scuderia Graziani and the experience was outstanding! The team was professional and efficient, completing the sale in a remarkably short time. Their expertise and customer service made the process smooth and hassle-free. I highly recommend Scuderia Graziani to anyone looking to sell their vehicle!

Tony
Clientele - 3Johnson Chen
06:51 11 Jun 25
Wonderful experience buying a car here. Tony and his team and family have created a beautiful business. Tony has been in the car industry since the 90s and the longevity of his business speaks for itself. I was foremost elated at the fair prices on all his vehicles and then at the amounts of coffee I was graciously offered, which were also very good. I also traded in my old vehicle which was a swift and convenient process. Every step of the transaction from seeing and buying a new car to trading in my old car was a very transparent process so I was confident in the prices Tony offered. I hope that his business continues to grow and flourish for years to come.
Clientele - 4Eugene Chong
09:37 10 Jun 25
My transaction with tony was so easy. Tony worked out a great prjce where I could upgrade my car on such an easy way. Sent my car to them and Tony sent the new car over. All happened within a week, no issue, no fuss, just base on gentlemen’s trust.
Clientele - 5Paul Gray
01:25 25 May 25
I recently bought a late model Porsche Macan GTS sight unseen, from this company and had it delivered to the Gold Coast, based on a positive referral from a Sydney based friend. It was a very competitive price for a low mileage, well optioned vehicle. When it did arrive there were a couple of defects that would not normally be covered under warranty, but after a positive discussion with the company they were more than prepared to rectify all issues. Very happy with my experience particularly as they provided post sales support above and beyond warranty conditions. Would be happy to deal with them again and recommend them to anyone looking for a high-end car.
Clientele - 6Paresh Khandhar
12:11 23 May 25
This is not just any dealership. Scuderia Graziani are a family who are passionate about luxury cars and want you in the one that suits you. I wandered in and was greeted and treated like a family member. I was unsure which of 2 cars I should buy and was given patient, careful and considered guidance to ensure which was right for me (and they nailed it... thank you Zio Tony, Stef, GP, Max & Ben). I wouldn't hesitate selling and buying through the Grazianis. Absolute first class people.
Clientele - 7Marco Levy
05:46 16 May 25
Scuderia Graziani are truly the best in the business! The entire experience from initially inquiring about the car, to collection and drive away was a very easy and memorable journey. I had the pleasure of dealing with Tony, Gianpaolo, Stefania & Max throughout the experience of purchasing a car from their showroom. Highly recommend to all car enthusiasts who are looking to deal with a knowledgeable, caring, and diligent team (as well as making the best coffee in Sydney) - thank you Team SG!
Clientele - 8Pat
06:46 28 Apr 25
I recently had a fantastic experience with the Godfathter of luxury cars, Tony. From the moment I walked in, I was offerred coffee, professional service and genuine help. Tony took the time to listen to what I was looking for and guided me through the options without any pressure. Highly recommend Tony and the Scuderia Graziani family to anyone looking for a stress-free and enjoyable experience!
Clientele - 9Sherman Nand
07:16 27 Apr 25
This was my first purchase with Schuderia Grazanii and it was nothing short of the most exceptional level of service I have ever experienced. Tony and his family have a genuine passion for helping their clients. I highly recommend Schuderia Grazanii and have built a friendship throughout the process. My recent purchase from Scuderia Grazanii was my first, and I was blown away by the unparalleled level of service I received. From the moment I walked through the door, it was clear that Tony and his family have an absolute passion for what they do, and they go above and beyond to ensure their clients are not just satisfied, but genuinely delighted. Their expertise and dedication are evident in every interaction, making the entire experience not just a transaction, but a pleasure. I wholeheartedly recommend Scuderia Grazanii to anyone seeking not only a high-quality product, but also a personalized and memorable experience. In fact, I'm proud to say that throughout the process, I've also gained genuine friends.
Clientele - 10Bob the Blob
06:31 22 Apr 25
Schuderia Grazanii isn’t just a business trying to sell you their cars. They’re a dream store, their front window an escape into the never before seen riches of the top one percent. Many times at lunch I would go here, gazing and taking photos of the various cars in full air conditioning. The staff never minded me, poring over their cars, never afraid for me to damage them. And I remember one member going out of his way and volunteering to take a photo of me and an sto. I may never have the money to afford one, but they sure did let me witness the enjoyments of be upper class. Definitely would recommend Schuderia!
Clientele - 11Jordan Chahal
08:07 12 Apr 25
Thank you to Tony and he’s family for such an amazing sales experience. After purchasing my vehicle at Scuderia Graziani I highly recommend getting in contact with Tony to find your dream car. The sales experience was above and beyond, very helpful, kind and well experienced in ever kind of vehicle.
Clientele - 12Tendai Muchacha
09:20 28 Mar 25
SCUDERIA GRAZIANI!
You only get the best with Scuderia Graziani.
The team is so informative and they make you feel so welcome.
My wife and i did not feel like we are buying a car but we felt like we are making a dream come true.

Tony Graziani, i’m coming back for the Aventador 😁
Clientele - 13Chris Li
00:53 27 Mar 25
If you’re chasing the dream of owning a supercar, stop searching — go straight to Gianpaolo and his incredible team. Today I picked up my Ferrari, and I can truly say this was far more than just buying a car. It was a once-in-a-lifetime experience, made unforgettable by people who live and breathe their passion for cars.

Gianpaolo (GP) is not just professional — he is inspiring. His knowledge, honesty, and above all, his uncontainable passion for cars shines through in every conversation. He doesn’t just sell cars — he shares stories, experiences, and a genuine excitement that’s contagious. When you’re speaking with GP, you’re not just buying a car — you’re stepping into a world of automotive dreams.

Tony was equally fantastic — professional, attentive, and just as passionate. The entire team made me feel welcomed, valued, and looked after. Their attention to detail, care throughout the process, and willingness to go the extra mile made everything seamless and memorable.

This is the kind of place where car dreams come true. If you’ve ever dreamed of owning a supercar, don’t think twice — go see Gianpaolo and the team. I will forever be grateful for their guidance and support on this journey.

Thank you, Gianpaolo, Tony, and everyone at the dealership — this experience will stay with me forever.
Clientele - 14G M
04:30 06 Nov 24
Tony, John and Stefania have been an absolute pleasure to deal with. They have made the process of purchasing the car so easy and simple. Thank you Graziani Team.
Clientele - 15Ramy Niami
03:42 31 Oct 24
What a wonderful experience, would not buy a luxury car from anywhere else!
Clientele - 16Jason
12:50 26 Oct 24
Outstanding Customer Service! & Outstanding support

Thank you Team
Clientele - 17Hung Chuy
11:38 25 Oct 24
Purchased my first Supercar from them. The team , (Stefania in particular) were helpful every step of the way through the journey. I really needed to get everything in order before the weekend and they helped every step of the way. Thank you for this. I would definitely buy/sell from them again.
Clientele - 18tony sal
01:34 25 Oct 24
I had a great experience with Scuderia Graziani. The staff were very helpful, I sold my car within 2 weeks. The selling process was smooth and transparent. I’d definitely recommend them to others.
Clientele - 19Gerard Tiffen
05:44 11 Oct 24
⭐️⭐️⭐️⭐️⭐️
I recently purchased my second car through Scuderia Graziani, and once again, the experience was outstanding! Gianpaolo and Stefania were incredibly helpful and professional throughout the entire process. They made everything seamless and straightforward, without any of the usual hassle when it comes to trades and purchasing. If you’re looking for a trustworthy dealership that values their customers, I highly recommend Scuderia Graziani. Thank you, G and Stefania, for making it such an easy and enjoyable experience!
Clientele - 20Sam Hassan
19:46 11 Sep 24
As a returning customer, I had high expectations when I recently visited Scuderia Graziani again, and I am thrilled to say that they exceeded every one of them. Tony and Stefania continue to provide the kind of exceptional service that keeps me coming back.
This dealership truly embodies what it means to be a honest and genuine family business. From the moment I stepped through the door, I was welcomed with warm smiles and genuine care, let’s not forget the coffee by the man himself!!
Their commitment, honesty and integrity is evident in every interaction.
What truly touched my heart was their thoughtful gesture of surprising me with a birthday cake during my visit. This kind act turned what was already a positive experience into a memorable celebration. It’s this level of personal attention and care that sets Scuderia Graziani apart from any other dealership.
If you’re looking for a dealership that treats you like family and consistently delivers outstanding service with honesty, look no further than Scuderia Graziani. I can’t recommend them highly enough.
Cheers
Sam
Clientele - 21Arthur D
01:11 31 Jul 24
A sincere and warm thank you to the Scuderia Graziani Team.

Purchased my 911 4S, and unlike dealing with other organisations (or people) buying a car, dealing with Tony and Stefania made the process very comfortable. Made you feel like you were dealing with family.

From the initial engagement with Tony, where the discussion starts with a coffee and about getting to know each other, before getting into the discussion about the car.
No pressure in making a decision, just there to help in the decision process.

To dealing with Stefania, who made the whole process easy, from the transaction to the admin and the pick-up of the vehicle.

Anyone looking for high end luxury cars, no better place to deal with.
Clientele - 22Jim Kopsaris
22:33 03 Jul 24
My recent purchased from Scuderia Graziani AMG E63S was outstanding service from Amir and Stefania, from there supercars and performance vehicles are highest level expectations and they delivery! I absolutely love new beast to my collection hopefully do more business in the future.
Thank you for the gift bag was nice touch!
Clientele - 23Joseph Lowery
00:35 27 Mar 24
Tony is a gentleman, I recently consigned my Rolls Royce Wraith with Tony ,he was highly recommended as a professional that can be trusted with a high value unencumbered car
In every he out performs expectations.
A most trustworthy person is rare but is found in Tony
All the best Tony & Family
Many Thanks Brian
Clientele - 24JunJie Cheng
20:18 26 Mar 24
The experience of purchasing a car from Scuderia Graziani has undoubtedly been a memorable journey. The Rolls-Royce Wraith I acquired not only impresses with its extraordinary craftsmanship but also, through the premium service provided by the dealership, offered an unparalleled joy of purchase. Tony, the founder, displayed incredible patience and enthusiasm. His expertise and attention to detail made the entire process smooth and enjoyable. Stefania's professional skills were also remarkably impressive. Her understanding of cars and her problem-solving abilities are truly top-notch. Benjamin, as an administrative officer, demonstrated professional demeanor and efficiency, ensuring all administrative processes were seamless. In summary, Scuderia Graziani is not just a dealership that sells high-end cars; it's a place where customers can feel esteemed and professional. I express my highest appreciation for them and look forward to more opportunities to collaborate in the future.
Clientele - 25David Naamo
12:52 26 Mar 24
The team at Graziani are amazing. Smooth sale of my MC20 Maserati. Very highly recommended
Clientele - 26Sav M
07:24 20 Mar 24
I purchased my very first Lamborghini Huracan Evo from Scuderia Graziani. Tony was a gentleman who made me one of the best coffees I’ve had and sold me one of the best cars I’ve owned till date. Thank you Stefania for also organising all the transport side of things and making sure the transaction was a smooth sail. Prompt reply from both Tony & Stefania during the whole deal, sale & freight.

Once again Thank you team & will hopefully be back again for future purchases.
P.s don’t spend more than an hour in the showroom as Tony will over dose you with his speciality Italian coffee! 😜
Clientele - 27Bmoney
05:47 13 Mar 24
I sold my Lamborghini Huracan through Scuderia Graziani. They delivered what they promised in a timely manner. Gave constant updates and the whole team worked great. Would definitely use them again and would happily recommend.
Clientele - 28David Fraser
11:20 26 Feb 24
Just had the most wonderful experience purchasing my Audi SQ7 from Scuderia Grazianj . Tony Graziani is a true Gentleman who treats his clients with respect and honour and also has a fantastic sense of humour. I truly enjoyed every moment when dealing with Tony and also his delightful daughter Stefania who was so warm and welcoming .
I am so happy with my new Audi it is a beautiful drive and in excellent condition as described.
Also a huge thanks to my beautiful wife Kate who suggested I need to buy this car .🥹
Scuderia Graziani is also a treasure trove of exotic super cars that just enhances your overall experience being there .
Also the coffee is great too !!
Thank you so much team Graziani
You are a true gem in the automotive industry
Cheers David 👏👏👏👏❤️
Clientele - 29Adam Thomas
10:32 12 Feb 24
I had the absolute pleasure of buying a vehicle from Tony And his team, After unfortunately missing out on one of their vehicles to another buyer, Tony quickly sourced me another G63 Which was even better. Tony, his family and team are lovely and a pleasure to deal with. They made me and my wife feel extremely welcome when we came to the showroom with our dogs, And I left with a beaut of a car!

The process from start to end was seamless and Tony and his team kept me updated at all times.

Their vehicles are all amazing, And you know that you are getting the best of the best when you buy from this garage!

This was my first purchase from Tony , but I know I will be back time and time again When I decide to change my cars.

I can’t recommend this garage highly enough.

Great service
Amazing cars
Pleasure to deal with
I’m one happy customer

Thank you again to all the team at Scuderia Graziani !

Regards - Adam
Clientele - 30Delmas C
01:10 25 Jan 24
From start to finish, my car buying experience at Scuderia Graziani was nothing short of exceptional. I recently had the pleasure of purchasing a continental from this dealership, and I am thoroughly impressed by Tony and Stefania professionalism and customer service provided.

Stefania made payment method a seamless and transparent experience. She was efficient, clear in his explanations, and genuinely worked to find the best financial solution that suited my needs. His professionalism and expertise in handling the financial details were truly impressive.

The Owner, Tony Graziani deserves a special mention for his outstanding leadership. The level of customer care and attention to detail under his management is evident in every interaction. tony was approachable, responsive, and ensured that the entire purchase experience was up to the high standards one expects when buying a luxury car.

The car itself is a marvel – a testament to the Bentley brand. Driving it has been an absolute joy, and I couldn't be happier with my purchase. The quality, performance, and elegance of the vehicle are unparalleled.

I would like to extend my sincere thanks to the entire team at Scuderia Graziani, especially Tony, and Stefania, for making my Bentley purchase an unforgettable experience. I wholeheartedly recommend this dealership to anyone considering a luxury vehicle. Their commitment to excellence in customer service and their impressive inventory of high-end cars is truly commendable.
Clientele - 31

Select your service

Clientele - 65

Sell Your Car

If you would like to sell your quality pre-loved motorcars or If you wish to find your perfect Luxury or Sports Car, simply let us do the work for you.

Clientele - 66

Consign Your Car

If you are looking at selling your car, consigning is one of the best methods. We will work with you to get the ideal result whenever selling your prestige car.

Clientele - 67

Source Your Car

You are at the stage of buying your first or next motor vehicle. Talk with the team at Scuderia Graziani to discuss options of financing and insurance

Clientele - 68

Venue Hire

Scuderia Graziani is a unique showroom is an event space that will undoubtedly set you apart from the status quo.

JOIN THE SCUDERIA GRAZIANI COMMUNITY
DREAM CARS, NEW ARRIVALS, LATEST EVENTS!
PHNjcmlwdD4KdmFyIGdmb3JtO2dmb3JtfHwoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZ2Zvcm1fbWFpbl9zY3JpcHRzX2xvYWRlZCIsZnVuY3Rpb24oKXtnZm9ybS5zY3JpcHRzTG9hZGVkPSEwfSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZ2Zvcm0vdGhlbWUvc2NyaXB0c19sb2FkZWQiLGZ1bmN0aW9uKCl7Z2Zvcm0udGhlbWVTY3JpcHRzTG9hZGVkPSEwfSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGZ1bmN0aW9uKCl7Z2Zvcm0uZG9tTG9hZGVkPSEwfSksZ2Zvcm09e2RvbUxvYWRlZDohMSxzY3JpcHRzTG9hZGVkOiExLHRoZW1lU2NyaXB0c0xvYWRlZDohMSxpc0Zvcm1FZGl0b3I6KCk9PiJmdW5jdGlvbiI9PXR5cGVvZiBJbml0aWFsaXplRWRpdG9yLGNhbGxJZkxvYWRlZDpmdW5jdGlvbihvKXtyZXR1cm4hKCFnZm9ybS5kb21Mb2FkZWR8fCFnZm9ybS5zY3JpcHRzTG9hZGVkfHwhZ2Zvcm0udGhlbWVTY3JpcHRzTG9hZGVkJiYhZ2Zvcm0uaXNGb3JtRWRpdG9yKCl8fChnZm9ybS5pc0Zvcm1FZGl0b3IoKSYmY29uc29sZS53YXJuKCJUaGUgdXNlIG9mIGdmb3JtLmluaXRpYWxpemVPbkxvYWRlZCgpIGlzIGRlcHJlY2F0ZWQgaW4gdGhlIGZvcm0gZWRpdG9yIGNvbnRleHQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBHcmF2aXR5IEZvcm1zIDMuMS4iKSxvKCksMCkpfSxpbml0aWFsaXplT25Mb2FkZWQ6ZnVuY3Rpb24obyl7Z2Zvcm0uY2FsbElmTG9hZGVkKG8pfHwoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZ2Zvcm1fbWFpbl9zY3JpcHRzX2xvYWRlZCIsKCk9PntnZm9ybS5zY3JpcHRzTG9hZGVkPSEwLGdmb3JtLmNhbGxJZkxvYWRlZChvKX0pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImdmb3JtL3RoZW1lL3NjcmlwdHNfbG9hZGVkIiwoKT0+e2dmb3JtLnRoZW1lU2NyaXB0c0xvYWRlZD0hMCxnZm9ybS5jYWxsSWZMb2FkZWQobyl9KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsKCk9PntnZm9ybS5kb21Mb2FkZWQ9ITAsZ2Zvcm0uY2FsbElmTG9hZGVkKG8pfSkpfSxob29rczp7YWN0aW9uOnt9LGZpbHRlcjp7fX0sYWRkQWN0aW9uOmZ1bmN0aW9uKG8scixlLHQpe2dmb3JtLmFkZEhvb2soImFjdGlvbiIsbyxyLGUsdCl9LGFkZEZpbHRlcjpmdW5jdGlvbihvLHIsZSx0KXtnZm9ybS5hZGRIb29rKCJmaWx0ZXIiLG8scixlLHQpfSxkb0FjdGlvbjpmdW5jdGlvbihvKXtnZm9ybS5kb0hvb2soImFjdGlvbiIsbyxhcmd1bWVudHMpfSxhcHBseUZpbHRlcnM6ZnVuY3Rpb24obyl7cmV0dXJuIGdmb3JtLmRvSG9vaygiZmlsdGVyIixvLGFyZ3VtZW50cyl9LHJlbW92ZUFjdGlvbjpmdW5jdGlvbihvLHIpe2dmb3JtLnJlbW92ZUhvb2soImFjdGlvbiIsbyxyKX0scmVtb3ZlRmlsdGVyOmZ1bmN0aW9uKG8scixlKXtnZm9ybS5yZW1vdmVIb29rKCJmaWx0ZXIiLG8scixlKX0sYWRkSG9vazpmdW5jdGlvbihvLHIsZSx0LG4pe251bGw9PWdmb3JtLmhvb2tzW29dW3JdJiYoZ2Zvcm0uaG9va3Nbb11bcl09W10pO3ZhciBkPWdmb3JtLmhvb2tzW29dW3JdO251bGw9PW4mJihuPXIrIl8iK2QubGVuZ3RoKSxnZm9ybS5ob29rc1tvXVtyXS5wdXNoKHt0YWc6bixjYWxsYWJsZTplLHByaW9yaXR5OnQ9bnVsbD09dD8xMDp0fSl9LGRvSG9vazpmdW5jdGlvbihyLG8sZSl7dmFyIHQ7aWYoZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLDEpLG51bGwhPWdmb3JtLmhvb2tzW3JdW29dJiYoKG89Z2Zvcm0uaG9va3Nbcl1bb10pLnNvcnQoZnVuY3Rpb24obyxyKXtyZXR1cm4gby5wcmlvcml0eS1yLnByaW9yaXR5fSksby5mb3JFYWNoKGZ1bmN0aW9uKG8peyJmdW5jdGlvbiIhPXR5cGVvZih0PW8uY2FsbGFibGUpJiYodD13aW5kb3dbdF0pLCJhY3Rpb24iPT1yP3QuYXBwbHkobnVsbCxlKTplWzBdPXQuYXBwbHkobnVsbCxlKX0pKSwiZmlsdGVyIj09cilyZXR1cm4gZVswXX0scmVtb3ZlSG9vazpmdW5jdGlvbihvLHIsdCxuKXt2YXIgZTtudWxsIT1nZm9ybS5ob29rc1tvXVtyXSYmKGU9KGU9Z2Zvcm0uaG9va3Nbb11bcl0pLmZpbHRlcihmdW5jdGlvbihvLHIsZSl7cmV0dXJuISEobnVsbCE9biYmbiE9by50YWd8fG51bGwhPXQmJnQhPW8ucHJpb3JpdHkpfSksZ2Zvcm0uaG9va3Nbb11bcl09ZSl9fSk7Cjwvc2NyaXB0PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2dmX2Jyb3dzZXJfdW5rbm93biBnZm9ybV93cmFwcGVyIGdyYXZpdHktdGhlbWUgZ2Zvcm0tdGhlbWUtLW5vLWZyYW1ld29yayBqb2luLWNvbW11bml0eV93cmFwcGVyJyBkYXRhLWZvcm0tdGhlbWU9J2dyYXZpdHktdGhlbWUnIGRhdGEtZm9ybS1pbmRleD0nMCcgaWQ9J2dmb3JtX3dyYXBwZXJfNicgPjxkaXYgaWQ9J2dmXzYnIGNsYXNzPSdnZm9ybV9hbmNob3InIHRhYmluZGV4PSctMSc+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2dmb3JtX2hlYWRpbmcnPgoJCQkJCQkJPHAgY2xhc3M9J2dmb3JtX3JlcXVpcmVkX2xlZ2VuZCc+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48Zm9ybSBtZXRob2Q9J3Bvc3QnIGVuY3R5cGU9J211bHRpcGFydC9mb3JtLWRhdGEnIHRhcmdldD0nZ2Zvcm1fYWpheF9mcmFtZV82JyBpZD0nZ2Zvcm1fNicgY2xhc3M9J2pvaW4tY29tbXVuaXR5JyBhY3Rpb249Jy9jbGllbnRlbGUjZ2ZfNicgZGF0YS1mb3JtaWQ9JzYnIG5vdmFsaWRhdGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2dmb3JtLWJvZHkgZ2Zvcm1fYm9keSc+PGRpdiBpZD0nZ2Zvcm1fZmllbGRzXzYnIGNsYXNzPSdnZm9ybV9maWVsZHMgdG9wX2xhYmVsIGZvcm1fc3VibGFiZWxfYmVsb3cgZGVzY3JpcHRpb25fYmVsb3cgdmFsaWRhdGlvbl9iZWxvdyc+PGRpdiBpZD0iZmllbGRfNl8xIiBjbGFzcz0iZ2ZpZWxkIGdmaWVsZC0tdHlwZS10ZXh0IGdmaWVsZC0taW5wdXQtdHlwZS10ZXh0IGdmaWVsZC0td2lkdGgtdGhpcmQgZ2ZpZWxkX2NvbnRhaW5zX3JlcXVpcmVkIGZpZWxkX3N1YmxhYmVsX2JlbG93IGdmaWVsZC0tbm8tZGVzY3JpcHRpb24gZmllbGRfZGVzY3JpcHRpb25fYmVsb3cgaGlkZGVuX2xhYmVsIGZpZWxkX3ZhbGlkYXRpb25fYmVsb3cgZ2ZpZWxkX3Zpc2liaWxpdHlfdmlzaWJsZSIgID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCBnZm9ybS1maWVsZC1sYWJlbCcgZm9yPSdpbnB1dF82XzEnPkZpcnN0IE5hbWU8c3BhbiBjbGFzcz0iZ2ZpZWxkX3JlcXVpcmVkIj48c3BhbiBjbGFzcz0iZ2ZpZWxkX3JlcXVpcmVkIGdmaWVsZF9yZXF1aXJlZF9hc3RlcmlzayI+Kjwvc3Bhbj48L3NwYW4+PC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyIGdpbnB1dF9jb250YWluZXJfdGV4dCc+PGlucHV0IG5hbWU9J2lucHV0XzEnIGlkPSdpbnB1dF82XzEnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSdsYXJnZScgICAgcGxhY2Vob2xkZXI9J0ZpcnN0IE5hbWUnIGFyaWEtcmVxdWlyZWQ9InRydWUiIGFyaWEtaW52YWxpZD0iZmFsc2UiICAgLz48L2Rpdj48L2Rpdj48ZGl2IGlkPSJmaWVsZF82XzIiIGNsYXNzPSJnZmllbGQgZ2ZpZWxkLS10eXBlLXRleHQgZ2ZpZWxkLS1pbnB1dC10eXBlLXRleHQgZ2ZpZWxkLS13aWR0aC10aGlyZCBnZmllbGRfY29udGFpbnNfcmVxdWlyZWQgZmllbGRfc3VibGFiZWxfYmVsb3cgZ2ZpZWxkLS1uby1kZXNjcmlwdGlvbiBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdyBoaWRkZW5fbGFiZWwgZmllbGRfdmFsaWRhdGlvbl9iZWxvdyBnZmllbGRfdmlzaWJpbGl0eV92aXNpYmxlIiAgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsIGdmb3JtLWZpZWxkLWxhYmVsJyBmb3I9J2lucHV0XzZfMic+TGFzdCBOYW1lPHNwYW4gY2xhc3M9ImdmaWVsZF9yZXF1aXJlZCI+PHNwYW4gY2xhc3M9ImdmaWVsZF9yZXF1aXJlZCBnZmllbGRfcmVxdWlyZWRfYXN0ZXJpc2siPio8L3NwYW4+PC9zcGFuPjwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lciBnaW5wdXRfY29udGFpbmVyX3RleHQnPjxpbnB1dCBuYW1lPSdpbnB1dF8yJyBpZD0naW5wdXRfNl8yJyB0eXBlPSd0ZXh0JyB2YWx1ZT0nJyBjbGFzcz0nbGFyZ2UnICAgIHBsYWNlaG9sZGVyPSdMYXN0IE5hbWUnIGFyaWEtcmVxdWlyZWQ9InRydWUiIGFyaWEtaW52YWxpZD0iZmFsc2UiICAgLz48L2Rpdj48L2Rpdj48ZGl2IGlkPSJmaWVsZF82XzQiIGNsYXNzPSJnZmllbGQgZ2ZpZWxkLS10eXBlLWVtYWlsIGdmaWVsZC0taW5wdXQtdHlwZS1lbWFpbCBnZmllbGQtLXdpZHRoLXRoaXJkIGdmaWVsZF9jb250YWluc19yZXF1aXJlZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBnZmllbGQtLW5vLWRlc2NyaXB0aW9uIGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93IGhpZGRlbl9sYWJlbCBmaWVsZF92YWxpZGF0aW9uX2JlbG93IGdmaWVsZF92aXNpYmlsaXR5X3Zpc2libGUiICA+PGxhYmVsIGNsYXNzPSdnZmllbGRfbGFiZWwgZ2Zvcm0tZmllbGQtbGFiZWwnIGZvcj0naW5wdXRfNl80Jz5FbWFpbDxzcGFuIGNsYXNzPSJnZmllbGRfcmVxdWlyZWQiPjxzcGFuIGNsYXNzPSJnZmllbGRfcmVxdWlyZWQgZ2ZpZWxkX3JlcXVpcmVkX2FzdGVyaXNrIj4qPC9zcGFuPjwvc3Bhbj48L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXIgZ2lucHV0X2NvbnRhaW5lcl9lbWFpbCc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0naW5wdXRfNCcgaWQ9J2lucHV0XzZfNCcgdHlwZT0nZW1haWwnIHZhbHVlPScnIGNsYXNzPSdsYXJnZScgICBwbGFjZWhvbGRlcj0nRW1haWwnIGFyaWEtcmVxdWlyZWQ9InRydWUiIGFyaWEtaW52YWxpZD0iZmFsc2UiICAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj48ZGl2IGlkPSJmaWVsZF82XzUiIGNsYXNzPSJnZmllbGQgZ2ZpZWxkLS10eXBlLXNlbGVjdCBnZmllbGQtLWlucHV0LXR5cGUtc2VsZWN0IGdmaWVsZC0td2lkdGgtdHdvLXRoaXJkcyBnZmllbGRfY29udGFpbnNfcmVxdWlyZWQgZmllbGRfc3VibGFiZWxfYmVsb3cgZ2ZpZWxkLS1uby1kZXNjcmlwdGlvbiBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdyBoaWRkZW5fbGFiZWwgZmllbGRfdmFsaWRhdGlvbl9iZWxvdyBnZmllbGRfdmlzaWJpbGl0eV92aXNpYmxlIiAgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsIGdmb3JtLWZpZWxkLWxhYmVsJyBmb3I9J2lucHV0XzZfNSc+V2hhdCBpbnRlcmVzdHMgeW91PzxzcGFuIGNsYXNzPSJnZmllbGRfcmVxdWlyZWQiPjxzcGFuIGNsYXNzPSJnZmllbGRfcmVxdWlyZWQgZ2ZpZWxkX3JlcXVpcmVkX2FzdGVyaXNrIj4qPC9zcGFuPjwvc3Bhbj48L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXIgZ2lucHV0X2NvbnRhaW5lcl9zZWxlY3QnPjxzZWxlY3QgbmFtZT0naW5wdXRfNScgaWQ9J2lucHV0XzZfNScgY2xhc3M9J2xhcmdlIGdmaWVsZF9zZWxlY3QnICAgIGFyaWEtcmVxdWlyZWQ9InRydWUiIGFyaWEtaW52YWxpZD0iZmFsc2UiID48b3B0aW9uIHZhbHVlPScnIHNlbGVjdGVkPSdzZWxlY3RlZCcgY2xhc3M9J2dmX3BsYWNlaG9sZGVyJz5XaGF0IGludGVyZXN0cyB5b3U/PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ2FyczogTGF0ZXN0IEFycml2YWxzICZhbXA7IFN0b2NrJyA+Q2FyczogTGF0ZXN0IEFycml2YWxzICZhbXA7IFN0b2NrPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTmV3czogU0cgTmV3cycgPk5ld3M6IFNHIE5ld3M8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdMaWZlc3R5bGUnID5MaWZlc3R5bGU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBbGwgb2YgdGhlIGFib3ZlJyA+QWxsIG9mIHRoZSBhYm92ZTwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2PjwvZGl2PjxkaXYgaWQ9ImZpZWxkXzZfNiIgY2xhc3M9ImdmaWVsZCBnZmllbGQtLXR5cGUtaGlkZGVuIGdmaWVsZC0taW5wdXQtdHlwZS1oaWRkZW4gZ2ZpZWxkLS13aWR0aC1mdWxsIGdmb3JtX2hpZGRlbiBmaWVsZF9zdWJsYWJlbF9iZWxvdyBnZmllbGQtLW5vLWRlc2NyaXB0aW9uIGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93IGZpZWxkX3ZhbGlkYXRpb25fYmVsb3cgZ2ZpZWxkX3Zpc2liaWxpdHlfdmlzaWJsZSIgID48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyIGdpbnB1dF9jb250YWluZXJfdGV4dCc+PGlucHV0IG5hbWU9J2lucHV0XzYnIGlkPSdpbnB1dF82XzYnIHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgIGFyaWEtaW52YWxpZD0iZmFsc2UiIHZhbHVlPSdDbGllbnRlbGUnIC8+PC9kaXY+PC9kaXY+PGRpdiBpZD0iZmllbGRfNl83IiBjbGFzcz0iZ2ZpZWxkIGdmaWVsZC0tdHlwZS1oaWRkZW4gZ2ZpZWxkLS1pbnB1dC10eXBlLWhpZGRlbiBnZmllbGQtLXdpZHRoLWZ1bGwgZ2Zvcm1faGlkZGVuIGZpZWxkX3N1YmxhYmVsX2JlbG93IGdmaWVsZC0tbm8tZGVzY3JpcHRpb24gZmllbGRfZGVzY3JpcHRpb25fYmVsb3cgZmllbGRfdmFsaWRhdGlvbl9iZWxvdyBnZmllbGRfdmlzaWJpbGl0eV92aXNpYmxlIiAgPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXIgZ2lucHV0X2NvbnRhaW5lcl90ZXh0Jz48aW5wdXQgbmFtZT0naW5wdXRfNycgaWQ9J2lucHV0XzZfNycgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyAgYXJpYS1pbnZhbGlkPSJmYWxzZSIgdmFsdWU9J2h0dHBzOi8vd3d3LnNjdWRlcmlhZ3JhemlhbmkuY29tL2NsaWVudGVsZScgLz48L2Rpdj48L2Rpdj48ZGl2IGlkPSJmaWVsZF82XzgiIGNsYXNzPSJnZmllbGQgZ2ZpZWxkLS10eXBlLWhvbmV5cG90IGdmb3JtX3ZhbGlkYXRpb25fY29udGFpbmVyIGZpZWxkX3N1YmxhYmVsX2JlbG93IGdmaWVsZC0taGFzLWRlc2NyaXB0aW9uIGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93IGZpZWxkX3ZhbGlkYXRpb25fYmVsb3cgZ2ZpZWxkX3Zpc2liaWxpdHlfdmlzaWJsZSIgID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCBnZm9ybS1maWVsZC1sYWJlbCcgZm9yPSdpbnB1dF82XzgnPkNvbW1lbnRzPC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyJz48aW5wdXQgbmFtZT0naW5wdXRfOCcgaWQ9J2lucHV0XzZfOCcgdHlwZT0ndGV4dCcgdmFsdWU9JycgYXV0b2NvbXBsZXRlPSduZXctcGFzc3dvcmQnLz48L2Rpdj48ZGl2IGNsYXNzPSdnZmllbGRfZGVzY3JpcHRpb24nIGlkPSdnZmllbGRfZGVzY3JpcHRpb25fNl84Jz5UaGlzIGZpZWxkIGlzIGZvciB2YWxpZGF0aW9uIHB1cnBvc2VzIGFuZCBzaG91bGQgYmUgbGVmdCB1bmNoYW5nZWQuPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0nZ2Zvcm0tZm9vdGVyIGdmb3JtX2Zvb3RlciB0b3BfbGFiZWwnPiA8YnV0dG9uIGNsYXNzPSdidXR0b24nIHR5cGU9J3N1Ym1pdCcgaWQ9J2dmb3JtX3N1Ym1pdF9idXR0b25fNic+U3Vic2NyaWJlPC9idXR0b24+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2dmb3JtX2FqYXgnIHZhbHVlPSdmb3JtX2lkPTYmYW1wO3RpdGxlPSZhbXA7ZGVzY3JpcHRpb249JmFtcDt0YWJpbmRleD0wJmFtcDt0aGVtZT1ncmF2aXR5LXRoZW1lJmFtcDtzdHlsZXM9W10mYW1wO2hhc2g9ZmFlYTI5MzE1NDUxNDAzMzhkY2EyM2M5OTNhNDFjMWEnIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2dmb3JtX3N1Ym1pc3Npb25fbWV0aG9kJyBkYXRhLWpzPSdnZm9ybV9zdWJtaXNzaW9uX21ldGhvZF82JyB2YWx1ZT0naWZyYW1lJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdnZm9ybV90aGVtZScgZGF0YS1qcz0nZ2Zvcm1fdGhlbWVfNicgaWQ9J2dmb3JtX3RoZW1lXzYnIHZhbHVlPSdncmF2aXR5LXRoZW1lJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdnZm9ybV9zdHlsZV9zZXR0aW5ncycgZGF0YS1qcz0nZ2Zvcm1fc3R5bGVfc2V0dGluZ3NfNicgaWQ9J2dmb3JtX3N0eWxlX3NldHRpbmdzXzYnIHZhbHVlPSdbXScgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0naXNfc3VibWl0XzYnIHZhbHVlPScxJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdnZm9ybV9zdWJtaXQnIHZhbHVlPSc2JyAvPgogICAgICAgICAgICAKICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0nZ2Zvcm1fdW5pcXVlX2lkJyB2YWx1ZT0nJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdzdGF0ZV82JyB2YWx1ZT0nV3lKYlhTSXNJakl4TkRVMVltVTVOakF3WTJSbU9EUmtORGxqWkdFNFkyRmpZalUzTlRoaklsMD0nIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGF1dG9jb21wbGV0ZT0nb2ZmJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdnZm9ybV90YXJnZXRfcGFnZV9udW1iZXJfNicgaWQ9J2dmb3JtX3RhcmdldF9wYWdlX251bWJlcl82JyB2YWx1ZT0nMCcgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgYXV0b2NvbXBsZXRlPSdvZmYnIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2dmb3JtX3NvdXJjZV9wYWdlX251bWJlcl82JyBpZD0nZ2Zvcm1fc291cmNlX3BhZ2VfbnVtYmVyXzYnIHZhbHVlPScxJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdnZm9ybV9maWVsZF92YWx1ZXMnIHZhbHVlPScnIC8+CiAgICAgICAgICAgIAogICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoJCSAgICAgICAgICAgICAgICA8aWZyYW1lIHN0eWxlPSdkaXNwbGF5Om5vbmU7d2lkdGg6MHB4O2hlaWdodDowcHg7JyBzcmM9J2Fib3V0OmJsYW5rJyBuYW1lPSdnZm9ybV9hamF4X2ZyYW1lXzYnIGlkPSdnZm9ybV9hamF4X2ZyYW1lXzYnIHRpdGxlPSdUaGlzIGlmcmFtZSBjb250YWlucyB0aGUgbG9naWMgcmVxdWlyZWQgdG8gaGFuZGxlIEFqYXggcG93ZXJlZCBHcmF2aXR5IEZvcm1zLic+PC9pZnJhbWU+CgkJICAgICAgICAgICAgICAgIDxzY3JpcHQ+Cmdmb3JtLmluaXRpYWxpemVPbkxvYWRlZCggZnVuY3Rpb24oKSB7Z2Zvcm1Jbml0U3Bpbm5lciggNiwgJ2h0dHBzOi8vd3d3LnNjdWRlcmlhZ3JhemlhbmkuY29tL3dwLWNvbnRlbnQvcGx1Z2lucy9ncmF2aXR5Zm9ybXMvaW1hZ2VzL3NwaW5uZXIuc3ZnJywgdHJ1ZSApO2pRdWVyeSgnI2dmb3JtX2FqYXhfZnJhbWVfNicpLm9uKCdsb2FkJyxmdW5jdGlvbigpe3ZhciBjb250ZW50cyA9IGpRdWVyeSh0aGlzKS5jb250ZW50cygpLmZpbmQoJyonKS5odG1sKCk7dmFyIGlzX3Bvc3RiYWNrID0gY29udGVudHMuaW5kZXhPZignR0ZfQUpBWF9QT1NUQkFDSycpID49IDA7aWYoIWlzX3Bvc3RiYWNrKXtyZXR1cm47fXZhciBmb3JtX2NvbnRlbnQgPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcjZ2Zvcm1fd3JhcHBlcl82Jyk7dmFyIGlzX2NvbmZpcm1hdGlvbiA9IGpRdWVyeSh0aGlzKS5jb250ZW50cygpLmZpbmQoJyNnZm9ybV9jb25maXJtYXRpb25fd3JhcHBlcl82JykubGVuZ3RoID4gMDt2YXIgaXNfcmVkaXJlY3QgPSBjb250ZW50cy5pbmRleE9mKCdnZm9ybVJlZGlyZWN0KCl7JykgPj0gMDt2YXIgaXNfZm9ybSA9IGZvcm1fY29udGVudC5sZW5ndGggPiAwICYmICEgaXNfcmVkaXJlY3QgJiYgISBpc19jb25maXJtYXRpb247dmFyIG10ID0gcGFyc2VJbnQoalF1ZXJ5KCdodG1sJykuY3NzKCdtYXJnaW4tdG9wJyksIDEwKSArIHBhcnNlSW50KGpRdWVyeSgnYm9keScpLmNzcygnbWFyZ2luLXRvcCcpLCAxMCkgKyAxMDA7aWYoaXNfZm9ybSl7alF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl82JykuaHRtbChmb3JtX2NvbnRlbnQuaHRtbCgpKTtpZihmb3JtX2NvbnRlbnQuaGFzQ2xhc3MoJ2dmb3JtX3ZhbGlkYXRpb25fZXJyb3InKSl7alF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl82JykuYWRkQ2xhc3MoJ2dmb3JtX3ZhbGlkYXRpb25fZXJyb3InKTt9IGVsc2Uge2pRdWVyeSgnI2dmb3JtX3dyYXBwZXJfNicpLnJlbW92ZUNsYXNzKCdnZm9ybV92YWxpZGF0aW9uX2Vycm9yJyk7fXNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgeyAvKiBkZWxheSB0aGUgc2Nyb2xsIGJ5IDUwIG1pbGxpc2Vjb25kcyB0byBmaXggYSBidWcgaW4gY2hyb21lICovIGpRdWVyeShkb2N1bWVudCkuc2Nyb2xsVG9wKGpRdWVyeSgnI2dmb3JtX3dyYXBwZXJfNicpLm9mZnNldCgpLnRvcCAtIG10KTsgfSwgNTAgKTtpZih3aW5kb3dbJ2dmb3JtSW5pdERhdGVwaWNrZXInXSkge2dmb3JtSW5pdERhdGVwaWNrZXIoKTt9aWYod2luZG93WydnZm9ybUluaXRQcmljZUZpZWxkcyddKSB7Z2Zvcm1Jbml0UHJpY2VGaWVsZHMoKTt9dmFyIGN1cnJlbnRfcGFnZSA9IGpRdWVyeSgnI2dmb3JtX3NvdXJjZV9wYWdlX251bWJlcl82JykudmFsKCk7Z2Zvcm1Jbml0U3Bpbm5lciggNiwgJ2h0dHBzOi8vd3d3LnNjdWRlcmlhZ3JhemlhbmkuY29tL3dwLWNvbnRlbnQvcGx1Z2lucy9ncmF2aXR5Zm9ybXMvaW1hZ2VzL3NwaW5uZXIuc3ZnJywgdHJ1ZSApO2pRdWVyeShkb2N1bWVudCkudHJpZ2dlcignZ2Zvcm1fcGFnZV9sb2FkZWQnLCBbNiwgY3VycmVudF9wYWdlXSk7d2luZG93WydnZl9zdWJtaXR0aW5nXzYnXSA9IGZhbHNlO31lbHNlIGlmKCFpc19yZWRpcmVjdCl7dmFyIGNvbmZpcm1hdGlvbl9jb250ZW50ID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnLkdGX0FKQVhfUE9TVEJBQ0snKS5odG1sKCk7aWYoIWNvbmZpcm1hdGlvbl9jb250ZW50KXtjb25maXJtYXRpb25fY29udGVudCA9IGNvbnRlbnRzO31qUXVlcnkoJyNnZm9ybV93cmFwcGVyXzYnKS5yZXBsYWNlV2l0aChjb25maXJtYXRpb25fY29udGVudCk7alF1ZXJ5KGRvY3VtZW50KS5zY3JvbGxUb3AoalF1ZXJ5KCcjZ2ZfNicpLm9mZnNldCgpLnRvcCAtIG10KTtqUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIoJ2dmb3JtX2NvbmZpcm1hdGlvbl9sb2FkZWQnLCBbNl0pO3dpbmRvd1snZ2Zfc3VibWl0dGluZ182J10gPSBmYWxzZTt3cC5hMTF5LnNwZWFrKGpRdWVyeSgnI2dmb3JtX2NvbmZpcm1hdGlvbl9tZXNzYWdlXzYnKS50ZXh0KCkpO31lbHNle2pRdWVyeSgnI2dmb3JtXzYnKS5hcHBlbmQoY29udGVudHMpO2lmKHdpbmRvd1snZ2Zvcm1SZWRpcmVjdCddKSB7Z2Zvcm1SZWRpcmVjdCgpO319alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCJnZm9ybV9wcmVfcG9zdF9yZW5kZXIiLCBbeyBmb3JtSWQ6ICI2IiwgY3VycmVudFBhZ2U6ICJjdXJyZW50X3BhZ2UiLCBhYm9ydDogZnVuY3Rpb24oKSB7IHRoaXMucHJldmVudERlZmF1bHQoKTsgfSB9XSk7ICAgICAgICBpZiAoZXZlbnQgJiYgZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgeyAgICAgICAgICAgICAgICByZXR1cm47ICAgICAgICB9ICAgICAgICBjb25zdCBnZm9ybVdyYXBwZXJEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggImdmb3JtX3dyYXBwZXJfNiIgKTsgICAgICAgIGlmICggZ2Zvcm1XcmFwcGVyRGl2ICkgeyAgICAgICAgICAgIGNvbnN0IHZpc2liaWxpdHlTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggInNwYW4iICk7ICAgICAgICAgICAgdmlzaWJpbGl0eVNwYW4uaWQgPSAiZ2Zvcm1fdmlzaWJpbGl0eV90ZXN0XzYiOyAgICAgICAgICAgIGdmb3JtV3JhcHBlckRpdi5pbnNlcnRBZGphY2VudEVsZW1lbnQoICJhZnRlcmVuZCIsIHZpc2liaWxpdHlTcGFuICk7ICAgICAgICB9ICAgICAgICBjb25zdCB2aXNpYmlsaXR5VGVzdERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAiZ2Zvcm1fdmlzaWJpbGl0eV90ZXN0XzYiICk7ICAgICAgICBsZXQgcG9zdFJlbmRlckZpcmVkID0gZmFsc2U7ICAgICAgICBmdW5jdGlvbiB0cmlnZ2VyUG9zdFJlbmRlcigpIHsgICAgICAgICAgICBpZiAoIHBvc3RSZW5kZXJGaXJlZCApIHsgICAgICAgICAgICAgICAgcmV0dXJuOyAgICAgICAgICAgIH0gICAgICAgICAgICBwb3N0UmVuZGVyRmlyZWQgPSB0cnVlOyAgICAgICAgICAgIGdmb3JtLmNvcmUudHJpZ2dlclBvc3RSZW5kZXJFdmVudHMoIDYsIGN1cnJlbnRfcGFnZSApOyAgICAgICAgICAgIGlmICggdmlzaWJpbGl0eVRlc3REaXYgKSB7ICAgICAgICAgICAgICAgIHZpc2liaWxpdHlUZXN0RGl2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHZpc2liaWxpdHlUZXN0RGl2ICk7ICAgICAgICAgICAgfSAgICAgICAgfSAgICAgICAgZnVuY3Rpb24gZGVib3VuY2UoIGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSApIHsgICAgICAgICAgICB2YXIgdGltZW91dDsgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsgICAgICAgICAgICAgICAgdmFyIGxhdGVyID0gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gbnVsbDsgICAgICAgICAgICAgICAgICAgIGlmICggIWltbWVkaWF0ZSApIGZ1bmMuYXBwbHkoIGNvbnRleHQsIGFyZ3MgKTsgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgdmFyIGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXQ7ICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCggdGltZW91dCApOyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCggbGF0ZXIsIHdhaXQgKTsgICAgICAgICAgICAgICAgaWYgKCBjYWxsTm93ICkgZnVuYy5hcHBseSggY29udGV4dCwgYXJncyApOyAgICAgICAgICAgIH07ICAgICAgICB9ICAgICAgICBjb25zdCBkZWJvdW5jZWRUcmlnZ2VyUG9zdFJlbmRlciA9IGRlYm91bmNlKCBmdW5jdGlvbigpIHsgICAgICAgICAgICB0cmlnZ2VyUG9zdFJlbmRlcigpOyAgICAgICAgfSwgMjAwICk7ICAgICAgICBpZiAoIHZpc2liaWxpdHlUZXN0RGl2ICYmIHZpc2liaWxpdHlUZXN0RGl2Lm9mZnNldFBhcmVudCA9PT0gbnVsbCApIHsgICAgICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCAoIG11dGF0aW9ucyApID0+IHsgICAgICAgICAgICAgICAgbXV0YXRpb25zLmZvckVhY2goICggbXV0YXRpb24gKSA9PiB7ICAgICAgICAgICAgICAgICAgICBpZiAoIG11dGF0aW9uLnR5cGUgPT09ICdhdHRyaWJ1dGVzJyAmJiB2aXNpYmlsaXR5VGVzdERpdi5vZmZzZXRQYXJlbnQgIT09IG51bGwgKSB7ICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VkVHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7ICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgIH0pOyAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoIGRvY3VtZW50LmJvZHksIHsgICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSwgICAgICAgICAgICAgICAgY2hpbGRMaXN0OiBmYWxzZSwgICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSwgICAgICAgICAgICAgICAgYXR0cmlidXRlRmlsdGVyOiBbICdzdHlsZScsICdjbGFzcycgXSwgICAgICAgICAgICB9KTsgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgdHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgIH0gICAgfSApO30gKTsKPC9zY3JpcHQ+Cg==