Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MTV.com] ERROR: Unable to extract mgid #11148

Closed
Deflated-Criossant opened this issue Nov 9, 2016 · 10 comments
Closed

[MTV.com] ERROR: Unable to extract mgid #11148

Deflated-Criossant opened this issue Nov 9, 2016 · 10 comments

Comments

@Deflated-Criossant
Copy link

@Deflated-Criossant Deflated-Criossant commented Nov 9, 2016

Please follow the guide below

  • You will be asked some questions and requested to provide some information, please read them carefully and answer honestly
  • Put an x into all the boxes [ ] relevant to your issue (like that [x])
  • Use Preview tab to see how your issue will actually look like

Make sure you are using the latest version: run youtube-dl --version and ensure your version is 2016.11.08.1. If it's not read this FAQ entry and update. Issues with outdated version will be rejected.

  • I've verified and I assure that I'm running youtube-dl 2016.11.08.1

Before submitting an issue make sure you have:

  • At least skimmed through README and most notably FAQ and BUGS sections
  • [ x] Searched the bugtracker for similar issues including closed ones

What is the purpose of your issue?

  • Bug report (encountered problems with youtube-dl)
  • Site support request (request for adding support for a new site)
  • Feature request (request for a new functionality)
  • Question
  • Other

The following sections concretize particular purposed issues, you can erase any section (the contents between triple ---) not applicable to your issue


If the purpose of this issue is a bug report, site support request or you are not completely sure provide the full verbose output as follows:

Add -v flag to your command line you run youtube-dl with, copy the whole output and insert it here. It should look similar to one below (replace it with your log inserted between triple ```):

$ youtube-dl -v http://www.mtv.com/full-episodes/94bd0m/sweet-vicious-the-blueprint-season-1-ep-101
[debug] System config: []
[debug] User config: []
[debug] Command-line args: ['-v', 'http://www.mtv.com/full-episodes/94bd0m/sweet-vicious-the-blueprint-season-1-ep-101']
[debug] Encodings: locale cp1252, fs mbcs, out cp437, pref cp1252
[debug] youtube-dl version 2016.11.08.1
[debug] Python version 3.4.4 - Windows-10-10.0.10586
[debug] exe versions: none
[debug] Proxy map: {}
[mtv] sweet-vicious-the-blueprint-season-1-ep-101: Downloading webpage
ERROR: Unable to extract mgid; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpee_sdt7t\build\youtube_dl\YoutubeDL.py", line 694, in extract_info
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpee_sdt7t\build\youtube_dl\extractor\common.py", line 357, in extract
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpee_sdt7t\build\youtube_dl\extractor\mtv.py", line 230, in _real_extract
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpee_sdt7t\build\youtube_dl\extractor\mtv.py", line 224, in _extract_mgid
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpee_sdt7t\build\youtube_dl\extractor\common.py", line 660, in _search_regex
youtube_dl.utils.RegexNotFoundError: Unable to extract mgid; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.


If the purpose of this issue is a site support request please provide all kinds of example URLs support for which should be included (replace following example URLs by yours):


Description of your issue, suggested solution and other information

"Unable to extract mgid"
yt-dl worked successfully till 20th Oct 2016
same links do not work anymore..
Please update the extractor so it supports the site again
thanks

@Deflated-Criossant Deflated-Criossant changed the title MTV.com does not work anymore MTV.com Unable to extract mgid Nov 9, 2016
@Deflated-Criossant Deflated-Criossant changed the title MTV.com Unable to extract mgid [MTV.com] ERROR: Unable to extract mgid Nov 9, 2016
@dstftw
Copy link
Collaborator

@dstftw dstftw commented Nov 9, 2016

This video does not play in browser.

@dstftw dstftw closed this Nov 10, 2016
@dstftw dstftw added the invalid label Nov 10, 2016
@mrplePurple
Copy link

@mrplePurple mrplePurple commented Nov 20, 2016

This issue still occurs.

Here is a video that does play in browser:
http://www.mtv.com/full-episodes/7kqkgc/real-world-seattle-bad-blood-petered-out-season-32-ep-3207

@yan12125
Copy link
Collaborator

@yan12125 yan12125 commented Nov 21, 2016

@mrplePurple your example requires login. Did you provide your credentials?

@mrplePurple
Copy link

@mrplePurple mrplePurple commented Nov 21, 2016

@yan12125 Yes I was, using my APO, username and password in my config file. I'm pretty sure it's something to do with a change in the resulting successful login page.

An example of a link that does not require login is this one: http://www.mtv.com/video-clips/6juejv/teen-mom-deleted-scene-the-best-man-olympics

Links that do not require login work as intended.

@yan12125
Copy link
Collaborator

@yan12125 yan12125 commented Nov 21, 2016

Could you run this command and upload all the output? Of course remove username and password before uploading.

youtube-dl -v --ap-mso (provider ID) --ap-username (username) --ap-password (password) --dump-pages http://www.mtv.com/full-episodes/7kqkgc/real-world-seattle-bad-blood-petered-out-season-32-ep-3207
@mrplePurple
Copy link

@mrplePurple mrplePurple commented Nov 21, 2016

~ $ youtube-dl -v --ap-mso Comcast_SSO --ap-username REMOVED --ap-password REMOVED --dump-pages http://www.mtv.com/full-episodes/7kqkgc/real-world-seattle-bad-blood-petered-out-season-32-ep-3207
[debug] System config: []
[debug] User config: [u'--ap-mso', u'Comcast_SSO', u'--ap-username', u'PRIVATE', u'--ap-password', u'PRIVATE', u'-f', u'best', u'--restrict-filenames', u'-o', u'./%(extractor)s/%(title)s.%(ext)s']
[debug] Command-line args: [u'-v', u'--ap-mso', u'Comcast_SSO', u'--ap-username', u'PRIVATE', u'--ap-password', u'PRIVATE', u'--dump-pages', u'http://www.mtv.com/full-episodes/7kqkgc/real-world-seattle-bad-blood-petered-out-season-32-ep-3207']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2016.11.18
[debug] Python version 2.7.9 - Linux-4.4.13-v7+-armv7l-with-debian-8.0
[debug] exe versions: avconv 11.7-6, avprobe 11.7-6, rtmpdump 2.4
[debug] Proxy map: {}
[mtv] real-world-seattle-bad-blood-petered-out-season-32-ep-3207: Downloading webpage
[mtv] Dumping request to http://www.mtv.com/full-episodes/7kqkgc/real-world-seattle-bad-blood-petered-out-season-32-ep-3207
PCFET0NUWVBFIGh0bWw+Cgo8aHRtbCA+Cgk8aGVhZD4KCiAgICA8c2NyaXB0Pkdsb2JhbExvYWRUaW1lPXBlcmZvcm1hbmNlLm5vdygpOzwvc2NyaXB0PgoKICAgIAogICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4NCjx0aXRsZT5GdWxsIEVwaXNvZGUgfCBSZWFsIFdvcmxkIFNlYXR0bGU6IEJhZCBCbG9vZCA6IFMzMiwgRTcgLSBQZXRlcmVkIE91dDwvdGl0bGU+DQo8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iV2F0Y2ggZnVsbCBlcGlzb2RlIG9ubGluZS4gUGV0ZXJlZCBPdXQgIChTMzIsIEU3KSBvZiBUViBTZXJpZXMgUmVhbCBXb3JsZCBTZWF0dGxlOiBCYWQgQmxvb2QiIC8+DQo8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9Im5veWRpcixub29kcCI+DQo8bWV0YSBuYW1lPSJvcmlnaW5hbC1zb3VyY2UiIGNvbnRlbnQ9Imh0dHA6Ly93d3cubXR2LmNvbS9mdWxsLWVwaXNvZGVzLzdrcWtnYy9yZWFsLXdvcmxkLXNlYXR0bGUtYmFkLWJsb29kLXBldGVyZWQtb3V0LXNlYXNvbi0zMi1lcC0zMjA3Ij4NCg0KICAgIDxtZXRhIG5hbWU9ImFwcGxlLWl0dW5lcy1hcHAiIGNvbnRlbnQ9IiIvPg0KDQo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii9mYXZpY29uLmljbyIgdHlwZT0iaW1hZ2UveC1pY29uIiAvPg0KPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHA6Ly93d3cubXR2LmNvbS9lcGlzb2Rlcy83a3FrZ2MvcmVhbC13b3JsZC1zZWF0dGxlLWJhZC1ibG9vZC1wZXRlcmVkLW91dC1zZWFzb24tMzItZXAtMzIwNyIgLz4NCg0KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPTAsIG1heGltdW0tc2NhbGU9MSI+DQoNCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGhyZWY9ImFuZHJvaWQtYXBwOi8vY29tLm10dm4ubXR2UHJpbWVBbmRyb2lkL210dm5ldHdvcmthcHAvZXBpc29kZS9jNDQ4MTBiZS04YzUwLTExZTYtYmZkNC0wMDI2Yjk0MTRmMzA/eHJzPXNlYXJjaCIvPg0KICAgICAgICAKCiAgICANCg0KPG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVudD0iaHR0cDovL3d3dy5tdHYuY29tL2Z1bGwtZXBpc29kZXMvN2txa2djL3JlYWwtd29ybGQtc2VhdHRsZS1iYWQtYmxvb2QtcGV0ZXJlZC1vdXQtc2Vhc29uLTMyLWVwLTMyMDciLz4NCjxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9Ik1UViIvPg0KPG1ldGEgcHJvcGVydHk9ImZiOmFwcF9pZCIgY29udGVudD0iIi8+DQo8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IkZ1bGwgRXBpc29kZSB8IFJlYWwgV29ybGQgU2VhdHRsZTogQmFkIEJsb29kIDogUzMyLCBFNyAtIFBldGVyZWQgT3V0Ii8+DQo8bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IldhdGNoIGZ1bGwgZXBpc29kZSBvbmxpbmUuIFBldGVyZWQgT3V0ICAoUzMyLCBFNykgb2YgVFYgU2VyaWVzIFJlYWwgV29ybGQgU2VhdHRsZTogQmFkIEJsb29kIi8+DQo8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Imh0dHA6Ly9tdHYubXR2bmltYWdlcy5jb20vYXJjL2ltYWdlcy9zaG93cy9yZWFsLXdvcmxkLXNlYXR0bGUtYmFkLWJsb29kL3ZpZGVvcy9SZWFsV29ybGRTZWFfTkFfODY4NDc5OTUubW92Lm1wNC5TdGlsbDAxMV9lZGl0ZWQuanBnP3dpZHRoPTY0MCZoZWlnaHQ9MzU5JmNyb3A9dHJ1ZSIvPg0KDQoNCgogICAgCiAgICAKICAgICAgICANCjxtZXRhIG5hbWU9InR3aXR0ZXI6Y2FyZCIgY29udGVudD0ic3VtbWFyeV9sYXJnZV9pbWFnZSI+DQo8bWV0YSBuYW1lPSJ0d2l0dGVyOnNpdGUiIGNvbnRlbnQ9IkBNVFYiPg0KPG1ldGEgbmFtZT0idHdpdHRlcjpjcmVhdG9yIiBjb250ZW50PSIiPg0KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6dGl0bGUiIGNvbnRlbnQ9IlBldGVyZWQgT3V0Ij4NCiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmRlc2NyaXB0aW9uIiBjb250ZW50PSJBIHNjYW5kYWxvdXMgaG9va3VwIGJldHdlZW4gSmVubiBhbmQgUGV0ZXIgaGFzIG1ham9yIHJlcGVyY3Vzc2lvbnMgZm9yIGJvdGggb2YgdGhlbS4gVHlhcmEgcHJvdmVzIHRvIGJlIGhlciBvd24gd29yc3QgZW5lbXkgaW4gaGVyIGJ1ZGRpbmcgcmVsYXRpb25zaGlwIHdpdGggVGhlby4iPg0KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6aW1hZ2U6c3JjIiBjb250ZW50PSJodHRwOi8vbXR2Lm10dm5pbWFnZXMuY29tL2FyYy9pbWFnZXMvc2hvd3MvcmVhbC13b3JsZC1zZWF0dGxlLWJhZC1ibG9vZC92aWRlb3MvUmVhbFdvcmxkU2VhX05BXzg2ODQ3OTk1Lm1vdi5tcDQuU3RpbGwwMTFfZWRpdGVkLmpwZyI+CiAgICAKICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii9tZWRpYS9iYXNlLmNzcz9oYXNoPWFjNTU4NDhjYTg2YmU0ZiIgZGF0YS10eXBlPSJkZWZhdWx0U2l0ZUNTUyIvPgogICAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Ii8vbXR2Lm10dm5pbWFnZXMuY29tIj4KICAgIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSIvL3JlcG8uY2MuY29tIj4KICAgIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSIvL2J0Zy5tdHZuc2VydmljZXMuY29tIj4KICAgIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSIvL21lZGlhLm10dm5zZXJ2aWNlcy5jb20iPgogICAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Ii8vbWVkaWEtdXRpbHMubXR2bnNlcnZpY2VzLmNvbSI+CgogICAgICAgICAgICAKICAgICAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgICAgICAgICAgd2luZG93Lk5SRVVNfHwoTlJFVU09e30pLF9fbnJfcmVxdWlyZT1mdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcihuKXtpZighZVtuXSl7dmFyIG89ZVtuXT17ZXhwb3J0czp7fX07dFtuXVswXS5jYWxsKG8uZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbz10W25dWzFdW2VdO3JldHVybiByKG98fGUpfSxvLG8uZXhwb3J0cyl9cmV0dXJuIGVbbl0uZXhwb3J0c31pZigiZnVuY3Rpb24iPT10eXBlb2YgX19ucl9yZXF1aXJlKXJldHVybiBfX25yX3JlcXVpcmU7Zm9yKHZhciBvPTA7bzxuLmxlbmd0aDtvKyspcihuW29dKTtyZXR1cm4gcn0oezE6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe3RyeXtjLmNvbnNvbGUmJmNvbnNvbGUubG9nKHQpfWNhdGNoKGUpe319dmFyIG8saT10KCJlZSIpLGE9dCgxOSksYz17fTt0cnl7bz1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiX19ucl9mbGFncyIpLnNwbGl0KCIsIiksY29uc29sZSYmImZ1bmN0aW9uIj09dHlwZW9mIGNvbnNvbGUubG9nJiYoYy5jb25zb2xlPSEwLG8uaW5kZXhPZigiZGV2IikhPT0tMSYmKGMuZGV2PSEwKSxvLmluZGV4T2YoIm5yX2RldiIpIT09LTEmJihjLm5yRGV2PSEwKSl9Y2F0Y2gocyl7fWMubnJEZXYmJmkub24oImludGVybmFsLWVycm9yIixmdW5jdGlvbih0KXtyKHQuc3RhY2spfSksYy5kZXYmJmkub24oImZuLWVyciIsZnVuY3Rpb24odCxlLG4pe3Iobi5zdGFjayl9KSxjLmRldiYmKHIoIk5SIEFHRU5UIElOIERFVkVMT1BNRU5UIE1PREUiKSxyKCJmbGFnczogIithKGMsZnVuY3Rpb24odCxlKXtyZXR1cm4gdH0pLmpvaW4oIiwgIikpKX0se31dLDI6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSxuLHIsbyl7dHJ5e2g/aC09MTppKCJlcnIiLFtvfHxuZXcgVW5jYXVnaHRFeGNlcHRpb24odCxlLG4pXSl9Y2F0Y2goYyl7dHJ5e2koImllcnIiLFtjLChuZXcgRGF0ZSkuZ2V0VGltZSgpLCEwXSl9Y2F0Y2gocyl7fX1yZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZiYmZi5hcHBseSh0aGlzLGEoYXJndW1lbnRzKSl9ZnVuY3Rpb24gVW5jYXVnaHRFeGNlcHRpb24odCxlLG4pe3RoaXMubWVzc2FnZT10fHwiVW5jYXVnaHQgZXJyb3Igd2l0aCBubyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIix0aGlzLnNvdXJjZVVSTD1lLHRoaXMubGluZT1ufWZ1bmN0aW9uIG8odCl7aSgiZXJyIixbdCwobmV3IERhdGUpLmdldFRpbWUoKV0pfXZhciBpPXQoImhhbmRsZSIpLGE9dCgyMCksYz10KCJlZSIpLHM9dCgibG9hZGVyIiksZj13aW5kb3cub25lcnJvcix1PSExLGg9MDtzLmZlYXR1cmVzLmVycj0hMCx0KDEpLHdpbmRvdy5vbmVycm9yPXI7dHJ5e3Rocm93IG5ldyBFcnJvcn1jYXRjaChwKXsic3RhY2siaW4gcCYmKHQoMTIpLHQoMTEpLCJhZGRFdmVudExpc3RlbmVyImluIHdpbmRvdyYmdCg2KSxzLnhocldyYXBwYWJsZSYmdCgxMyksdT0hMCl9Yy5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKHQsZSxuKXt1JiYoaCs9MSl9KSxjLm9uKCJmbi1lcnIiLGZ1bmN0aW9uKHQsZSxuKXt1JiYodGhpcy50aHJvd249ITAsbyhuKSl9KSxjLm9uKCJmbi1lbmQiLGZ1bmN0aW9uKCl7dSYmIXRoaXMudGhyb3duJiZoPjAmJihoLT0xKX0pLGMub24oImludGVybmFsLWVycm9yIixmdW5jdGlvbih0KXtpKCJpZXJyIixbdCwobmV3IERhdGUpLmdldFRpbWUoKSwhMF0pfSl9LHt9XSwzOltmdW5jdGlvbih0LGUsbil7dCgibG9hZGVyIikuZmVhdHVyZXMuaW5zPSEwfSx7fV0sNDpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIoKXtOKyssUz15Lmhhc2gsdGhpc1t1XT1EYXRlLm5vdygpfWZ1bmN0aW9uIG8oKXtOLS0seS5oYXNoIT09UyYmaSgwLCEwKTt2YXIgdD1EYXRlLm5vdygpO3RoaXNbbF09fn50aGlzW2xdK3QtdGhpc1t1XSx0aGlzW2hdPXR9ZnVuY3Rpb24gaSh0LGUpe3guZW1pdCgibmV3VVJMIixbIiIreSxlXSl9ZnVuY3Rpb24gYSh0LGUpe3Qub24oZSxmdW5jdGlvbigpe3RoaXNbZV09RGF0ZS5ub3coKX0pfXZhciBjPSItc3RhcnQiLHM9Ii1lbmQiLGY9Ii1ib2R5Iix1PSJmbiIrYyxoPSJmbiIrcyxwPSJjYiIrYyxkPSJjYiIrcyxsPSJqc1RpbWUiLG09ImZldGNoIix2PSJhZGRFdmVudExpc3RlbmVyIix3PXdpbmRvdyx5PXcubG9jYXRpb247aWYod1t2XSl7dmFyIGc9dCg5KSxiPXQoMTApLHg9dCg4KSxFPXQoNiksVD10KDEyKSxPPXQoNyksUD10KDEzKSxSPXQoImVlIiksRD1SLmdldCgidHJhY2VyIik7dCgxNCksdCgibG9hZGVyIikuZmVhdHVyZXMuc3BhPSEwO3ZhciBTLE09d1t2XSxOPTA7Ui5vbih1LHIpLFIub24ocCxyKSxSLm9uKGgsbyksUi5vbihkLG8pLFIuYnVmZmVyKFt1LGgsInhoci1kb25lIiwieGhyLXJlc29sdmVkIl0pLEUuYnVmZmVyKFt1XSksVC5idWZmZXIoWyJzZXRUaW1lb3V0IitzLCJjbGVhclRpbWVvdXQiK2MsdV0pLFAuYnVmZmVyKFt1LCJuZXcteGhyIiwib3Blbi14aHIiK2NdKSxPLmJ1ZmZlcihbbStjLG0rIi1kb25lIixtK2YrYyxtK2Yrc10pLHguYnVmZmVyKFsibmV3VVJMIl0pLGcuYnVmZmVyKFt1XSksYi5idWZmZXIoWyJwcm9wYWdhdGUiLHAsZCwiZXhlY3V0b3ItZXJyIiwicmVzb2x2ZSIrY10pLEQuYnVmZmVyKFt1LCJuby0iK3VdKSxhKFAsIm9wZW4teGhyIitjKSxhKFIsInhoci1yZXNvbHZlZCIpLGEoUiwieGhyLWRvbmUiKSxhKE8sbStjKSxhKE8sbSsiLWRvbmUiKSx4Lm9uKCJwdXNoU3RhdGUtZW5kIixpKSx4Lm9uKCJyZXBsYWNlU3RhdGUtZW5kIixpKSxNKCJoYXNoY2hhbmdlIixpLCEwKSxNKCJsb2FkIixpLCEwKSxNKCJwb3BzdGF0ZSIsZnVuY3Rpb24oKXtpKDAsTj4xKX0sITApfX0se31dLDU6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe31pZih3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmcmJndpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKXt2YXIgbz10KCJlZSIpLGk9dCgiaGFuZGxlIiksYT10KDEyKSxjPXQoMTEpLHM9ImxlYXJSZXNvdXJjZVRpbWluZ3MiLGY9ImFkZEV2ZW50TGlzdGVuZXIiLHU9InJlc291cmNldGltaW5nYnVmZmVyZnVsbCIsaD0iYnN0UmVzb3VyY2UiLHA9InJlc291cmNlIixkPSItc3RhcnQiLGw9Ii1lbmQiLG09ImZuIitkLHY9ImZuIitsLHc9ImJzdFRpbWVyIix5PSJwdXNoU3RhdGUiO3QoImxvYWRlciIpLmZlYXR1cmVzLnN0bj0hMCx0KDgpO3ZhciBnPU5SRVVNLm8uRVY7by5vbihtLGZ1bmN0aW9uKHQsZSl7dmFyIG49dFswXTtuIGluc3RhbmNlb2YgZyYmKHRoaXMuYnN0U3RhcnQ9RGF0ZS5ub3coKSl9KSxvLm9uKHYsZnVuY3Rpb24odCxlKXt2YXIgbj10WzBdO24gaW5zdGFuY2VvZiBnJiZpKCJic3QiLFtuLGUsdGhpcy5ic3RTdGFydCxEYXRlLm5vdygpXSl9KSxhLm9uKG0sZnVuY3Rpb24odCxlLG4pe3RoaXMuYnN0U3RhcnQ9RGF0ZS5ub3coKSx0aGlzLmJzdFR5cGU9bn0pLGEub24odixmdW5jdGlvbih0LGUpe2kodyxbZSx0aGlzLmJzdFN0YXJ0LERhdGUubm93KCksdGhpcy5ic3RUeXBlXSl9KSxjLm9uKG0sZnVuY3Rpb24oKXt0aGlzLmJzdFN0YXJ0PURhdGUubm93KCl9KSxjLm9uKHYsZnVuY3Rpb24odCxlKXtpKHcsW2UsdGhpcy5ic3RTdGFydCxEYXRlLm5vdygpLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiXSl9KSxvLm9uKHkrZCxmdW5jdGlvbih0KXt0aGlzLnRpbWU9RGF0ZS5ub3coKSx0aGlzLnN0YXJ0UGF0aD1sb2NhdGlvbi5wYXRobmFtZStsb2NhdGlvbi5oYXNofSksby5vbih5K2wsZnVuY3Rpb24odCl7aSgiYnN0SGlzdCIsW2xvY2F0aW9uLnBhdGhuYW1lK2xvY2F0aW9uLmhhc2gsdGhpcy5zdGFydFBhdGgsdGhpcy50aW1lXSl9KSxmIGluIHdpbmRvdy5wZXJmb3JtYW5jZSYmKHdpbmRvdy5wZXJmb3JtYW5jZVsiYyIrc10/d2luZG93LnBlcmZvcm1hbmNlW2ZdKHUsZnVuY3Rpb24odCl7aShoLFt3aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZShwKV0pLHdpbmRvdy5wZXJmb3JtYW5jZVsiYyIrc10oKX0sITEpOndpbmRvdy5wZXJmb3JtYW5jZVtmXSgid2Via2l0Iit1LGZ1bmN0aW9uKHQpe2koaCxbd2luZG93LnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUocCldKSx3aW5kb3cucGVyZm9ybWFuY2VbIndlYmtpdEMiK3NdKCl9LCExKSksZG9jdW1lbnRbZl0oInNjcm9sbCIsciwhMSksZG9jdW1lbnRbZl0oImtleXByZXNzIixyLCExKSxkb2N1bWVudFtmXSgiY2xpY2siLHIsITEpfX0se31dLDY6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe2Zvcih2YXIgZT10O2UmJiFlLmhhc093blByb3BlcnR5KHUpOyllPU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtlJiZvKGUpfWZ1bmN0aW9uIG8odCl7Yy5pblBsYWNlKHQsW3UsaF0sIi0iLGkpfWZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gdFsxXX12YXIgYT10KCJlZSIpLmdldCgiZXZlbnRzIiksYz10KDIxKShhKSxzPXQoImdvcyIpLGY9WE1MSHR0cFJlcXVlc3QsdT0iYWRkRXZlbnRMaXN0ZW5lciIsaD0icmVtb3ZlRXZlbnRMaXN0ZW5lciI7ZS5leHBvcnRzPWEsImdldFByb3RvdHlwZU9mImluIE9iamVjdD8ocihkb2N1bWVudCkscih3aW5kb3cpLHIoZi5wcm90b3R5cGUpKTpmLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSh1KSYmKG8od2luZG93KSxvKGYucHJvdG90eXBlKSksYS5vbih1KyItc3RhcnQiLGZ1bmN0aW9uKHQsZSl7aWYodFsxXSl7dmFyIG49dFsxXTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygbil7dmFyIHI9cyhuLCJuckB3cmFwcGVkIixmdW5jdGlvbigpe3JldHVybiBjKG4sImZuLSIsbnVsbCxuLm5hbWV8fCJhbm9ueW1vdXMiKX0pO3RoaXMud3JhcHBlZD10WzFdPXJ9ZWxzZSJmdW5jdGlvbiI9PXR5cGVvZiBuLmhhbmRsZUV2ZW50JiZjLmluUGxhY2UobixbImhhbmRsZUV2ZW50Il0sImZuLSIpfX0pLGEub24oaCsiLXN0YXJ0IixmdW5jdGlvbih0KXt2YXIgZT10aGlzLndyYXBwZWQ7ZSYmKHRbMV09ZSl9KX0se31dLDc6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSxuKXt2YXIgcj10W2VdOyJmdW5jdGlvbiI9PXR5cGVvZiByJiYodFtlXT1mdW5jdGlvbigpe3ZhciB0PXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBvLmVtaXQobisic3RhcnQiLGFyZ3VtZW50cyx0KSx0LnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIG8uZW1pdChuKyJlbmQiLFtudWxsLGVdLHQpLGV9LGZ1bmN0aW9uKGUpe3Rocm93IG8uZW1pdChuKyJlbmQiLFtlXSx0KSxlfSl9KX12YXIgbz10KCJlZSIpLmdldCgiZmV0Y2giKSxpPXQoMTkpO2UuZXhwb3J0cz1vO3ZhciBhPXdpbmRvdyxjPSJmZXRjaC0iLHM9YysiYm9keS0iLGY9WyJhcnJheUJ1ZmZlciIsImJsb2IiLCJqc29uIiwidGV4dCIsImZvcm1EYXRhIl0sdT1hLlJlcXVlc3QsaD1hLlJlc3BvbnNlLHA9YS5mZXRjaCxkPSJwcm90b3R5cGUiO3UmJmgmJnAmJihpKGYsZnVuY3Rpb24odCxlKXtyKHVbZF0sZSxzKSxyKGhbZF0sZSxzKX0pLHIoYSwiZmV0Y2giLGMpLG8ub24oYysiZW5kIixmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7ZT9lLmNsb25lKCkuYXJyYXlCdWZmZXIoKS50aGVuKGZ1bmN0aW9uKHQpe24ucnhTaXplPXQuYnl0ZUxlbmd0aCxvLmVtaXQoYysiZG9uZSIsW251bGwsZV0sbil9KTpvLmVtaXQoYysiZG9uZSIsW3RdLG4pfSkpfSx7fV0sODpbZnVuY3Rpb24odCxlLG4pe3ZhciByPXQoImVlIikuZ2V0KCJoaXN0b3J5Iiksbz10KDIxKShyKTtlLmV4cG9ydHM9cixvLmluUGxhY2Uod2luZG93Lmhpc3RvcnksWyJwdXNoU3RhdGUiLCJyZXBsYWNlU3RhdGUiXSwiLSIpfSx7fV0sOTpbZnVuY3Rpb24odCxlLG4pe3ZhciByPXQoImVlIikuZ2V0KCJtdXRhdGlvbiIpLG89dCgyMSkociksaT1OUkVVTS5vLk1PO2UuZXhwb3J0cz1yLGkmJih3aW5kb3cuTXV0YXRpb25PYnNlcnZlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGk/bmV3IGkobyh0LCJmbi0iKSk6aS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LE11dGF0aW9uT2JzZXJ2ZXIucHJvdG90eXBlPWkucHJvdG90eXBlKX0se31dLDEwOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXt2YXIgZT1hLmNvbnRleHQoKSxuPWModCwiZXhlY3V0b3ItIixlKSxyPW5ldyBmKG4pO3JldHVybiBhLmNvbnRleHQocikuZ2V0Q3R4PWZ1bmN0aW9uKCl7cmV0dXJuIGV9LGEuZW1pdCgibmV3LXByb21pc2UiLFtyLGVdLGUpLHJ9ZnVuY3Rpb24gbyh0LGUpe3JldHVybiBlfXZhciBpPXQoMjEpLGE9dCgiZWUiKS5nZXQoInByb21pc2UiKSxjPWkoYSkscz10KDE5KSxmPU5SRVVNLm8uUFI7ZS5leHBvcnRzPWEsZiYmKHdpbmRvdy5Qcm9taXNlPXIsWyJhbGwiLCJyYWNlIl0uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1mW3RdO2ZbdF09ZnVuY3Rpb24obil7ZnVuY3Rpb24gcih0KXtyZXR1cm4gZnVuY3Rpb24oKXthLmVtaXQoInByb3BhZ2F0ZSIsW251bGwsIW9dLGkpLG89b3x8IXR9fXZhciBvPSExO3MobixmdW5jdGlvbihlLG4pe1Byb21pc2UucmVzb2x2ZShuKS50aGVuKHIoImFsbCI9PT10KSxyKCExKSl9KTt2YXIgaT1lLmFwcGx5KGYsYXJndW1lbnRzKSxjPWYucmVzb2x2ZShpKTtyZXR1cm4gY319KSxbInJlc29sdmUiLCJyZWplY3QiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPWZbdF07Zlt0XT1mdW5jdGlvbih0KXt2YXIgbj1lLmFwcGx5KGYsYXJndW1lbnRzKTtyZXR1cm4gdCE9PW4mJmEuZW1pdCgicHJvcGFnYXRlIixbdCwhMF0sbiksbn19KSxmLnByb3RvdHlwZVsiY2F0Y2giXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKG51bGwsdCl9LGYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZi5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpyfX0pLHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZiksZnVuY3Rpb24odCxlKXt0cnl7cltlXT1mW2VdfWNhdGNoKG4pe319KSxhLm9uKCJleGVjdXRvci1zdGFydCIsZnVuY3Rpb24odCl7dFswXT1jKHRbMF0sInJlc29sdmUtIix0aGlzKSx0WzFdPWModFsxXSwicmVzb2x2ZS0iLHRoaXMpfSksYS5vbigiZXhlY3V0b3ItZXJyIixmdW5jdGlvbih0LGUsbil7dFsxXShuKX0pLGMuaW5QbGFjZShmLnByb3RvdHlwZSxbInRoZW4iXSwidGhlbi0iLG8pLGEub24oInRoZW4tc3RhcnQiLGZ1bmN0aW9uKHQsZSl7dGhpcy5wcm9taXNlPWUsdFswXT1jKHRbMF0sImNiLSIsdGhpcyksdFsxXT1jKHRbMV0sImNiLSIsdGhpcyl9KSxhLm9uKCJ0aGVuLWVuZCIsZnVuY3Rpb24odCxlLG4pe3RoaXMubmV4dFByb21pc2U9bjt2YXIgcj10aGlzLnByb21pc2U7YS5lbWl0KCJwcm9wYWdhdGUiLFtyLCEwXSxuKX0pLGEub24oImNiLWVuZCIsZnVuY3Rpb24odCxlLG4pe2EuZW1pdCgicHJvcGFnYXRlIixbbiwhMF0sdGhpcy5uZXh0UHJvbWlzZSl9KSxhLm9uKCJwcm9wYWdhdGUiLGZ1bmN0aW9uKHQsZSxuKXt0aGlzLmdldEN0eCYmIWV8fCh0aGlzLmdldEN0eD1mdW5jdGlvbigpe2lmKHQgaW5zdGFuY2VvZiBQcm9taXNlKXZhciBlPWEuY29udGV4dCh0KTtyZXR1cm4gZSYmZS5nZXRDdHg/ZS5nZXRDdHgoKTp0aGlzfSl9KSxyLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIiIrZn0pfSx7fV0sMTE6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj10KCJlZSIpLmdldCgicmFmIiksbz10KDIxKShyKSxpPSJlcXVlc3RBbmltYXRpb25GcmFtZSI7ZS5leHBvcnRzPXIsby5pblBsYWNlKHdpbmRvdyxbInIiK2ksIm1velIiK2ksIndlYmtpdFIiK2ksIm1zUiIraV0sInJhZi0iKSxyLm9uKCJyYWYtc3RhcnQiLGZ1bmN0aW9uKHQpe3RbMF09byh0WzBdLCJmbi0iKX0pfSx7fV0sMTI6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSxuKXt0WzBdPWEodFswXSwiZm4tIixudWxsLG4pfWZ1bmN0aW9uIG8odCxlLG4pe3RoaXMubWV0aG9kPW4sdGhpcy50aW1lckR1cmF0aW9uPSJudW1iZXIiPT10eXBlb2YgdFsxXT90WzFdOjAsdFswXT1hKHRbMF0sImZuLSIsdGhpcyxuKX12YXIgaT10KCJlZSIpLmdldCgidGltZXIiKSxhPXQoMjEpKGkpLGM9InNldFRpbWVvdXQiLHM9InNldEludGVydmFsIixmPSJjbGVhclRpbWVvdXQiLHU9Ii1zdGFydCIsaD0iLSI7ZS5leHBvcnRzPWksYS5pblBsYWNlKHdpbmRvdyxbYywic2V0SW1tZWRpYXRlIl0sYytoKSxhLmluUGxhY2Uod2luZG93LFtzXSxzK2gpLGEuaW5QbGFjZSh3aW5kb3csW2YsImNsZWFySW1tZWRpYXRlIl0sZitoKSxpLm9uKHMrdSxyKSxpLm9uKGMrdSxvKX0se31dLDEzOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUpe2guaW5QbGFjZShlLFsib25yZWFkeXN0YXRlY2hhbmdlIl0sImZuLSIsYyl9ZnVuY3Rpb24gbygpe3ZhciB0PXRoaXMsZT11LmNvbnRleHQodCk7dC5yZWFkeVN0YXRlPjMmJiFlLnJlc29sdmVkJiYoZS5yZXNvbHZlZD0hMCx1LmVtaXQoInhoci1yZXNvbHZlZCIsW10sdCkpLGguaW5QbGFjZSh0LHYsImZuLSIsYyl9ZnVuY3Rpb24gaSh0KXt3LnB1c2godCksbCYmKGc9LWcsYi5kYXRhPWcpfWZ1bmN0aW9uIGEoKXtmb3IodmFyIHQ9MDt0PHcubGVuZ3RoO3QrKylyKFtdLHdbdF0pO3cubGVuZ3RoJiYodz1bXSl9ZnVuY3Rpb24gYyh0LGUpe3JldHVybiBlfWZ1bmN0aW9uIHModCxlKXtmb3IodmFyIG4gaW4gdCllW25dPXRbbl07cmV0dXJuIGV9dCg2KTt2YXIgZj10KCJlZSIpLHU9Zi5nZXQoInhociIpLGg9dCgyMSkodSkscD1OUkVVTS5vLGQ9cC5YSFIsbD1wLk1PLG09InJlYWR5c3RhdGVjaGFuZ2UiLHY9WyJvbmxvYWQiLCJvbmVycm9yIiwib25hYm9ydCIsIm9ubG9hZHN0YXJ0Iiwib25sb2FkZW5kIiwib25wcm9ncmVzcyIsIm9udGltZW91dCJdLHc9W107ZS5leHBvcnRzPXU7dmFyIHk9d2luZG93LlhNTEh0dHBSZXF1ZXN0PWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBkKHQpO3RyeXt1LmVtaXQoIm5ldy14aHIiLFtlXSxlKSxlLmFkZEV2ZW50TGlzdGVuZXIobSxvLCExKX1jYXRjaChuKXt0cnl7dS5lbWl0KCJpbnRlcm5hbC1lcnJvciIsW25dKX1jYXRjaChyKXt9fXJldHVybiBlfTtpZihzKGQseSkseS5wcm90b3R5cGU9ZC5wcm90b3R5cGUsaC5pblBsYWNlKHkucHJvdG90eXBlLFsib3BlbiIsInNlbmQiXSwiLXhoci0iLGMpLHUub24oInNlbmQteGhyLXN0YXJ0IixmdW5jdGlvbih0LGUpe3IodCxlKSxpKGUpfSksdS5vbigib3Blbi14aHItc3RhcnQiLHIpLGwpe3ZhciBnPTEsYj1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShnKTtuZXcgbChhKS5vYnNlcnZlKGIse2NoYXJhY3RlckRhdGE6ITB9KX1lbHNlIGYub24oImZuLWVuZCIsZnVuY3Rpb24odCl7dFswXSYmdFswXS50eXBlPT09bXx8YSgpfSl9LHt9XSwxNDpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCl7dmFyIGU9dGhpcy5wYXJhbXMsbj10aGlzLm1ldHJpY3M7aWYoIXRoaXMuZW5kZWQpe3RoaXMuZW5kZWQ9ITA7Zm9yKHZhciByPTA7cjxoO3IrKyl0LnJlbW92ZUV2ZW50TGlzdGVuZXIodVtyXSx0aGlzLmxpc3RlbmVyLCExKTtpZighZS5hYm9ydGVkKXtpZihuLmR1cmF0aW9uPShuZXcgRGF0ZSkuZ2V0VGltZSgpLXRoaXMuc3RhcnRUaW1lLDQ9PT10LnJlYWR5U3RhdGUpe2Uuc3RhdHVzPXQuc3RhdHVzO3ZhciBpPW8odCx0aGlzLmxhc3RTaXplKTtpZihpJiYobi5yeFNpemU9aSksdGhpcy5zYW1lT3JpZ2luKXt2YXIgYT10LmdldFJlc3BvbnNlSGVhZGVyKCJYLU5ld1JlbGljLUFwcC1EYXRhIik7YSYmKGUuY2F0PWEuc3BsaXQoIiwgIikucG9wKCkpfX1lbHNlIGUuc3RhdHVzPTA7bi5jYlRpbWU9dGhpcy5jYlRpbWUsZi5lbWl0KCJ4aHItZG9uZSIsW3RdLHQpLGMoInhociIsW2Usbix0aGlzLnN0YXJ0VGltZV0pfX19ZnVuY3Rpb24gbyh0LGUpe3ZhciBuPXQucmVzcG9uc2VUeXBlO2lmKCJqc29uIj09PW4mJm51bGwhPT1lKXJldHVybiBlO3ZhciByPSJhcnJheWJ1ZmZlciI9PT1ufHwiYmxvYiI9PT1ufHwianNvbiI9PT1uP3QucmVzcG9uc2U6dC5yZXNwb25zZVRleHQ7cmV0dXJuIGwocil9ZnVuY3Rpb24gaSh0LGUpe3ZhciBuPXMoZSkscj10LnBhcmFtcztyLmhvc3Q9bi5ob3N0bmFtZSsiOiIrbi5wb3J0LHIucGF0aG5hbWU9bi5wYXRobmFtZSx0LnNhbWVPcmlnaW49bi5zYW1lT3JpZ2lufXZhciBhPXQoImxvYWRlciIpO2lmKGEueGhyV3JhcHBhYmxlKXt2YXIgYz10KCJoYW5kbGUiKSxzPXQoMTUpLGY9dCgiZWUiKSx1PVsibG9hZCIsImVycm9yIiwiYWJvcnQiLCJ0aW1lb3V0Il0saD11Lmxlbmd0aCxwPXQoImlkIiksZD10KDE4KSxsPXQoMTcpLG09d2luZG93LlhNTEh0dHBSZXF1ZXN0O2EuZmVhdHVyZXMueGhyPSEwLHQoMTMpLGYub24oIm5ldy14aHIiLGZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7ZS50b3RhbENicz0wLGUuY2FsbGVkPTAsZS5jYlRpbWU9MCxlLmVuZD1yLGUuZW5kZWQ9ITEsZS54aHJHdWlkcz17fSxlLmxhc3RTaXplPW51bGwsZCYmKGQ+MzR8fGQ8MTApfHx3aW5kb3cub3BlcmF8fHQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGZ1bmN0aW9uKHQpe2UubGFzdFNpemU9dC5sb2FkZWR9LCExKX0pLGYub24oIm9wZW4teGhyLXN0YXJ0IixmdW5jdGlvbih0KXt0aGlzLnBhcmFtcz17bWV0aG9kOnRbMF19LGkodGhpcyx0WzFdKSx0aGlzLm1ldHJpY3M9e319KSxmLm9uKCJvcGVuLXhoci1lbmQiLGZ1bmN0aW9uKHQsZSl7ImxvYWRlcl9jb25maWciaW4gTlJFVU0mJiJ4cGlkImluIE5SRVVNLmxvYWRlcl9jb25maWcmJnRoaXMuc2FtZU9yaWdpbiYmZS5zZXRSZXF1ZXN0SGVhZGVyKCJYLU5ld1JlbGljLUlEIixOUkVVTS5sb2FkZXJfY29uZmlnLnhwaWQpfSksZi5vbigic2VuZC14aHItc3RhcnQiLGZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5tZXRyaWNzLHI9dFswXSxvPXRoaXM7aWYobiYmcil7dmFyIGk9bChyKTtpJiYobi50eFNpemU9aSl9dGhpcy5zdGFydFRpbWU9KG5ldyBEYXRlKS5nZXRUaW1lKCksdGhpcy5saXN0ZW5lcj1mdW5jdGlvbih0KXt0cnl7ImFib3J0Ij09PXQudHlwZSYmKG8ucGFyYW1zLmFib3J0ZWQ9ITApLCgibG9hZCIhPT10LnR5cGV8fG8uY2FsbGVkPT09by50b3RhbENicyYmKG8ub25sb2FkQ2FsbGVkfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5vbmxvYWQpKSYmby5lbmQoZSl9Y2F0Y2gobil7dHJ5e2YuZW1pdCgiaW50ZXJuYWwtZXJyb3IiLFtuXSl9Y2F0Y2gocil7fX19O2Zvcih2YXIgYT0wO2E8aDthKyspZS5hZGRFdmVudExpc3RlbmVyKHVbYV0sdGhpcy5saXN0ZW5lciwhMSl9KSxmLm9uKCJ4aHItY2ItdGltZSIsZnVuY3Rpb24odCxlLG4pe3RoaXMuY2JUaW1lKz10LGU/dGhpcy5vbmxvYWRDYWxsZWQ9ITA6dGhpcy5jYWxsZWQrPTEsdGhpcy5jYWxsZWQhPT10aGlzLnRvdGFsQ2JzfHwhdGhpcy5vbmxvYWRDYWxsZWQmJiJmdW5jdGlvbiI9PXR5cGVvZiBuLm9ubG9hZHx8dGhpcy5lbmQobil9KSxmLm9uKCJ4aHItbG9hZC1hZGRlZCIsZnVuY3Rpb24odCxlKXt2YXIgbj0iIitwKHQpKyEhZTt0aGlzLnhockd1aWRzJiYhdGhpcy54aHJHdWlkc1tuXSYmKHRoaXMueGhyR3VpZHNbbl09ITAsdGhpcy50b3RhbENicys9MSl9KSxmLm9uKCJ4aHItbG9hZC1yZW1vdmVkIixmdW5jdGlvbih0LGUpe3ZhciBuPSIiK3AodCkrISFlO3RoaXMueGhyR3VpZHMmJnRoaXMueGhyR3VpZHNbbl0mJihkZWxldGUgdGhpcy54aHJHdWlkc1tuXSx0aGlzLnRvdGFsQ2JzLT0xKX0pLGYub24oImFkZEV2ZW50TGlzdGVuZXItZW5kIixmdW5jdGlvbih0LGUpe2UgaW5zdGFuY2VvZiBtJiYibG9hZCI9PT10WzBdJiZmLmVtaXQoInhoci1sb2FkLWFkZGVkIixbdFsxXSx0WzJdXSxlKX0pLGYub24oInJlbW92ZUV2ZW50TGlzdGVuZXItZW5kIixmdW5jdGlvbih0LGUpe2UgaW5zdGFuY2VvZiBtJiYibG9hZCI9PT10WzBdJiZmLmVtaXQoInhoci1sb2FkLXJlbW92ZWQiLFt0WzFdLHRbMl1dLGUpfSksZi5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKHQsZSxuKXtlIGluc3RhbmNlb2YgbSYmKCJvbmxvYWQiPT09biYmKHRoaXMub25sb2FkPSEwKSwoImxvYWQiPT09KHRbMF0mJnRbMF0udHlwZSl8fHRoaXMub25sb2FkKSYmKHRoaXMueGhyQ2JTdGFydD0obmV3IERhdGUpLmdldFRpbWUoKSkpfSksZi5vbigiZm4tZW5kIixmdW5jdGlvbih0LGUpe3RoaXMueGhyQ2JTdGFydCYmZi5lbWl0KCJ4aHItY2ItdGltZSIsWyhuZXcgRGF0ZSkuZ2V0VGltZSgpLXRoaXMueGhyQ2JTdGFydCx0aGlzLm9ubG9hZCxlXSxlKX0pfX0se31dLDE1OltmdW5jdGlvbih0LGUsbil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxuPXdpbmRvdy5sb2NhdGlvbixyPXt9O2UuaHJlZj10LHIucG9ydD1lLnBvcnQ7dmFyIG89ZS5ocmVmLnNwbGl0KCI6Ly8iKTshci5wb3J0JiZvWzFdJiYoci5wb3J0PW9bMV0uc3BsaXQoIi8iKVswXS5zcGxpdCgiQCIpLnBvcCgpLnNwbGl0KCI6IilbMV0pLHIucG9ydCYmIjAiIT09ci5wb3J0fHwoci5wb3J0PSJodHRwcyI9PT1vWzBdPyI0NDMiOiI4MCIpLHIuaG9zdG5hbWU9ZS5ob3N0bmFtZXx8bi5ob3N0bmFtZSxyLnBhdGhuYW1lPWUucGF0aG5hbWUsci5wcm90b2NvbD1vWzBdLCIvIiE9PXIucGF0aG5hbWUuY2hhckF0KDApJiYoci5wYXRobmFtZT0iLyIrci5wYXRobmFtZSk7dmFyIGk9IWUucHJvdG9jb2x8fCI6Ij09PWUucHJvdG9jb2x8fGUucHJvdG9jb2w9PT1uLnByb3RvY29sLGE9ZS5ob3N0bmFtZT09PWRvY3VtZW50LmRvbWFpbiYmZS5wb3J0PT09bi5wb3J0O3JldHVybiByLnNhbWVPcmlnaW49aSYmKCFlLmhvc3RuYW1lfHxhKSxyfX0se31dLDE2OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcigpe31mdW5jdGlvbiBvKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gaSh0LFsobmV3IERhdGUpLmdldFRpbWUoKV0uY29uY2F0KGMoYXJndW1lbnRzKSksZT9udWxsOnRoaXMsbiksZT92b2lkIDA6dGhpc319dmFyIGk9dCgiaGFuZGxlIiksYT10KDE5KSxjPXQoMjApLHM9dCgiZWUiKS5nZXQoInRyYWNlciIpLGY9TlJFVU07InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cubmV3cmVsaWMmJihuZXdyZWxpYz1mKTt2YXIgdT1bInNldFBhZ2VWaWV3TmFtZSIsInNldEN1c3RvbUF0dHJpYnV0ZSIsInNldEVycm9ySGFuZGxlciIsImZpbmlzaGVkIiwiYWRkVG9UcmFjZSIsImlubGluZUhpdCJdLGg9ImFwaS0iLHA9aCsiaXhuLSI7YSh1LGZ1bmN0aW9uKHQsZSl7ZltlXT1vKGgrZSwhMCwiYXBpIil9KSxmLmFkZFBhZ2VBY3Rpb249byhoKyJhZGRQYWdlQWN0aW9uIiwhMCksZS5leHBvcnRzPW5ld3JlbGljLGYuaW50ZXJhY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHIpLmdldCgpfTt2YXIgZD1yLnByb3RvdHlwZT17Y3JlYXRlVHJhY2VyOmZ1bmN0aW9uKHQsZSl7dmFyIG49e30scj10aGlzLG89ImZ1bmN0aW9uIj09dHlwZW9mIGU7cmV0dXJuIGkocCsidHJhY2VyIixbRGF0ZS5ub3coKSx0LG5dLHIpLGZ1bmN0aW9uKCl7aWYocy5lbWl0KChvPyIiOiJuby0iKSsiZm4tc3RhcnQiLFtEYXRlLm5vdygpLHIsb10sbiksbyl0cnl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7cy5lbWl0KCJmbi1lbmQiLFtEYXRlLm5vdygpXSxuKX19fX07YSgic2V0TmFtZSxzZXRBdHRyaWJ1dGUsc2F2ZSxpZ25vcmUsb25FbmQsZ2V0Q29udGV4dCxlbmQsZ2V0Ii5zcGxpdCgiLCIpLGZ1bmN0aW9uKHQsZSl7ZFtlXT1vKHArZSl9KSxuZXdyZWxpYy5ub3RpY2VFcnJvcj1mdW5jdGlvbih0KXsic3RyaW5nIj09dHlwZW9mIHQmJih0PW5ldyBFcnJvcih0KSksaSgiZXJyIixbdCwobmV3IERhdGUpLmdldFRpbWUoKV0pfX0se31dLDE3OltmdW5jdGlvbih0LGUsbil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdCYmdC5sZW5ndGgpcmV0dXJuIHQubGVuZ3RoO2lmKCJvYmplY3QiPT10eXBlb2YgdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmdCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiZ0LmJ5dGVMZW5ndGgpcmV0dXJuIHQuYnl0ZUxlbmd0aDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEJsb2ImJnQgaW5zdGFuY2VvZiBCbG9iJiZ0LnNpemUpcmV0dXJuIHQuc2l6ZTtpZighKCJ1bmRlZmluZWQiIT10eXBlb2YgRm9ybURhdGEmJnQgaW5zdGFuY2VvZiBGb3JtRGF0YSkpdHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeSh0KS5sZW5ndGh9Y2F0Y2goZSl7cmV0dXJufX19fSx7fV0sMTg6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj0wLG89bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvRmlyZWZveFtcL1xzXShcZCtcLlxkKykvKTtvJiYocj0rb1sxXSksZS5leHBvcnRzPXJ9LHt9XSwxOTpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlKXt2YXIgbj1bXSxyPSIiLGk9MDtmb3IociBpbiB0KW8uY2FsbCh0LHIpJiYobltpXT1lKHIsdFtyXSksaSs9MSk7cmV0dXJuIG59dmFyIG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9cn0se31dLDIwOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbil7ZXx8KGU9MCksInVuZGVmaW5lZCI9PXR5cGVvZiBuJiYobj10P3QubGVuZ3RoOjApO2Zvcih2YXIgcj0tMSxvPW4tZXx8MCxpPUFycmF5KG88MD8wOm8pOysrcjxvOylpW3JdPXRbZStyXTtyZXR1cm4gaX1lLmV4cG9ydHM9cn0se31dLDIxOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXtyZXR1cm4hKHQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmFwcGx5JiYhdFthXSl9dmFyIG89dCgiZWUiKSxpPXQoMjApLGE9Im5yQG9yaWdpbmFsIixjPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscz0hMTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGUsbixvKXtmdW5jdGlvbiBucldyYXBwZXIoKXt2YXIgcixhLGMsczt0cnl7YT10aGlzLHI9aShhcmd1bWVudHMpLGM9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bihyLGEpOm58fHt9fWNhdGNoKHUpe2goW3UsIiIsW3IsYSxvXSxjXSl9ZihlKyJzdGFydCIsW3IsYSxvXSxjKTt0cnl7cmV0dXJuIHM9dC5hcHBseShhLHIpfWNhdGNoKHApe3Rocm93IGYoZSsiZXJyIixbcixhLHBdLGMpLHB9ZmluYWxseXtmKGUrImVuZCIsW3IsYSxzXSxjKX19cmV0dXJuIHIodCk/dDooZXx8KGU9IiIpLG5yV3JhcHBlclthXT10LHUodCxucldyYXBwZXIpLG5yV3JhcHBlcil9ZnVuY3Rpb24gbih0LG4sbyxpKXtvfHwobz0iIik7dmFyIGEsYyxzLGY9Ii0iPT09by5jaGFyQXQoMCk7Zm9yKHM9MDtzPG4ubGVuZ3RoO3MrKyljPW5bc10sYT10W2NdLHIoYSl8fCh0W2NdPWUoYSxmP2MrbzpvLGksYykpfWZ1bmN0aW9uIGYoZSxuLHIpe2lmKCFzKXtzPSEwO3RyeXt0LmVtaXQoZSxuLHIpfWNhdGNoKG8pe2goW28sZSxuLHJdKX1zPSExfX1mdW5jdGlvbiB1KHQsZSl7aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5JiZPYmplY3Qua2V5cyl0cnl7dmFyIG49T2JqZWN0LmtleXModCk7cmV0dXJuIG4uZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX0sc2V0OmZ1bmN0aW9uKGUpe3JldHVybiB0W25dPWUsZX19KX0pLGV9Y2F0Y2gocil7aChbcl0pfWZvcih2YXIgbyBpbiB0KWMuY2FsbCh0LG8pJiYoZVtvXT10W29dKTtyZXR1cm4gZX1mdW5jdGlvbiBoKGUpe3RyeXt0LmVtaXQoImludGVybmFsLWVycm9yIixlKX1jYXRjaChuKXt9fXJldHVybiB0fHwodD1vKSxlLmluUGxhY2U9bixlLmZsYWc9YSxlfX0se31dLGVlOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcigpe31mdW5jdGlvbiBvKHQpe2Z1bmN0aW9uIGUodCl7cmV0dXJuIHQmJnQgaW5zdGFuY2VvZiByP3Q6dD9jKHQsYSxpKTppKCl9ZnVuY3Rpb24gbihuLHIsbyl7dCYmdChuLHIsbyk7Zm9yKHZhciBpPWUobyksYT1wKG4pLGM9YS5sZW5ndGgscz0wO3M8YztzKyspYVtzXS5hcHBseShpLHIpO3ZhciB1PWZbdltuXV07cmV0dXJuIHUmJnUucHVzaChbdyxuLHIsaV0pLGl9ZnVuY3Rpb24gaCh0LGUpe21bdF09cCh0KS5jb25jYXQoZSl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gbVt0XXx8W119ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdVt0XT11W3RdfHxvKG4pfWZ1bmN0aW9uIGwodCxlKXtzKHQsZnVuY3Rpb24odCxuKXtlPWV8fCJmZWF0dXJlIix2W25dPWUsZSBpbiBmfHwoZltlXT1bXSl9KX12YXIgbT17fSx2PXt9LHc9e29uOmgsZW1pdDpuLGdldDpkLGxpc3RlbmVyczpwLGNvbnRleHQ6ZSxidWZmZXI6bH07cmV0dXJuIHd9ZnVuY3Rpb24gaSgpe3JldHVybiBuZXcgcn12YXIgYT0ibnJAY29udGV4dCIsYz10KCJnb3MiKSxzPXQoMTkpLGY9e30sdT17fSxoPWUuZXhwb3J0cz1vKCk7aC5iYWNrbG9nPWZ9LHt9XSxnb3M6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSxuKXtpZihvLmNhbGwodCxlKSlyZXR1cm4gdFtlXTt2YXIgcj1uKCk7aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5JiZPYmplY3Qua2V5cyl0cnl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOnIsd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMX0pLHJ9Y2F0Y2goaSl7fXJldHVybiB0W2VdPXIscn12YXIgbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1yfSx7fV0saGFuZGxlOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbixyKXtvLmJ1ZmZlcihbdF0sciksby5lbWl0KHQsZSxuKX12YXIgbz10KCJlZSIpLmdldCgiaGFuZGxlIik7ZS5leHBvcnRzPXIsci5lZT1vfSx7fV0saWQ6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiF0fHwib2JqZWN0IiE9PWUmJiJmdW5jdGlvbiIhPT1lPy0xOnQ9PT13aW5kb3c/MDphKHQsaSxmdW5jdGlvbigpe3JldHVybiBvKyt9KX12YXIgbz0xLGk9Im5yQGlkIixhPXQoImdvcyIpO2UuZXhwb3J0cz1yfSx7fV0sbG9hZGVyOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcigpe2lmKCFnKyspe3ZhciB0PXkuaW5mbz1OUkVVTS5pbmZvLGU9dS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07aWYodCYmdC5saWNlbnNlS2V5JiZ0LmFwcGxpY2F0aW9uSUQmJmUpe3ModixmdW5jdGlvbihlLG4pe3RbZV18fCh0W2VdPW4pfSk7dmFyIG49Imh0dHBzIj09PW0uc3BsaXQoIjoiKVswXXx8dC5zc2xGb3JIdHRwO3kucHJvdG89bj8iaHR0cHM6Ly8iOiJodHRwOi8vIixjKCJtYXJrIixbIm9ubG9hZCIsYSgpXSxudWxsLCJhcGkiKTt2YXIgcj11LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3Iuc3JjPXkucHJvdG8rdC5hZ2VudCxlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHIsZSl9fX1mdW5jdGlvbiBvKCl7ImNvbXBsZXRlIj09PXUucmVhZHlTdGF0ZSYmaSgpfWZ1bmN0aW9uIGkoKXtjKCJtYXJrIixbImRvbUNvbnRlbnQiLGEoKV0sbnVsbCwiYXBpIil9ZnVuY3Rpb24gYSgpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfXZhciBjPXQoImhhbmRsZSIpLHM9dCgxOSksZj13aW5kb3csdT1mLmRvY3VtZW50LGg9ImFkZEV2ZW50TGlzdGVuZXIiLHA9ImF0dGFjaEV2ZW50IixkPWYuWE1MSHR0cFJlcXVlc3QsbD1kJiZkLnByb3RvdHlwZTtOUkVVTS5vPXtTVDpzZXRUaW1lb3V0LENUOmNsZWFyVGltZW91dCxYSFI6ZCxSRVE6Zi5SZXF1ZXN0LEVWOmYuRXZlbnQsUFI6Zi5Qcm9taXNlLE1POmYuTXV0YXRpb25PYnNlcnZlcn0sdCgxNik7dmFyIG09IiIrbG9jYXRpb24sdj17YmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGVycm9yQmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGFnZW50OiJqcy1hZ2VudC5uZXdyZWxpYy5jb20vbnItc3BhLTk3NC5taW4uanMifSx3PWQmJmwmJmxbaF0mJiEvQ3JpT1MvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkseT1lLmV4cG9ydHM9e29mZnNldDphKCksb3JpZ2luOm0sZmVhdHVyZXM6e30seGhyV3JhcHBhYmxlOnd9O3VbaF0/KHVbaF0oIkRPTUNvbnRlbnRMb2FkZWQiLGksITEpLGZbaF0oImxvYWQiLHIsITEpKToodVtwXSgib25yZWFkeXN0YXRlY2hhbmdlIixvKSxmW3BdKCJvbmxvYWQiLHIpKSxjKCJtYXJrIixbImZpcnN0Ynl0ZSIsYSgpXSxudWxsLCJhcGkiKTt2YXIgZz0wfSx7fV19LHt9LFsibG9hZGVyIiwyLDE0LDUsMyw0XSk7CiAgICAgICAgICAgICAgICA7TlJFVU0uaW5mbz17YmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGVycm9yQmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGxpY2Vuc2VLZXk6IjIxZGRlMTQxYjkiLGFwcGxpY2F0aW9uSUQ6IjIxNjM3NzIxIixzYToxfQogICAgICAgICAgICA8L3NjcmlwdD4KICAgICAgICAKICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vYnRnLm10dm5zZXJ2aWNlcy5jb20vYXJpYS9wcm9qZWN0WC9wcm9qZWN0WC5odG1sIj48L3NjcmlwdD4KCgogICAgPHNjcmlwdD4KICAgICAgICB2YXIgdHJpZm9yY2VNYW5pZmVzdFVSTCA9ICJodHRwOi8vd3d3Lm10di5jb20vZmVlZHMvdHJpZm9yY2UvbWFuaWZlc3Qvdjg/dXJsPWh0dHAlM0ElMkYlMkZ3d3cubXR2LmNvbSUyRmZ1bGwtZXBpc29kZXMlMkY3a3FrZ2MlMkZyZWFsLXdvcmxkLXNlYXR0bGUtYmFkLWJsb29kLXBldGVyZWQtb3V0LXNlYXNvbi0zMi1lcC0zMjA3JmN1cnJlbnRNYW5pZmVzdD1Qcm9kdWN0aW9uJmhhc2g9ZDVmNzNkOTUyY2VjNjc3MWI2Y2QwM2U1MWU1ZTY2MjMyMzNjNjJmYiI7CiAgICAgICAgdmFyIHRyaWZvcmNlTWFuaWZlc3RGZWVkID0geyJtYW5pZmVzdCI6eyJjc3MiOm51bGwsInBhZ2VDbGFzcyI6ImVudF9wMDA2X210diIsImlkIjoiMDZhM2U4YzUtMmM0Ni00OGZkLTk1MzgtMjllZTI2NDQxYTYzIiwiQ01TVGl0bGUiOiJFTlRfUDAwNiAtIFNlcmllcyBGdWxsIEVwaXNvZGUgUGxheWVyIChWMikiLCJwYXJhbWV0ZXJzIjpudWxsLCJyZXBvcnRpbmciOnsiaXRlbUlkIjoiYzQ0ODEwYmUtOGM1MC0xMWU2LWJmZDQtMDAyNmI5NDE0ZjMwIn0sInRpdGxlIjoiRnVsbCBFcGlzb2RlIHwgUmVhbCBXb3JsZCBTZWF0dGxlOiBCYWQgQmxvb2QgOiBTMzIsIEU3IC0gUGV0ZXJlZCBPdXQiLCJ0eXBlIjoiRU5UX1AwMDYiLCJ6b25lcyI6eyJ0MF9sY19wcm9tbzEiOnsiZmVlZCI6Imh0dHA6XC9cL3d3dy5tdHYuY29tXC9mZWVkc1wvZW50X20yMDlcL1YxXzFfMFwvZTI4MzhiYzAtNjE1ZS00MDY3LWI1ZjEtMjZmNjY2MWJmMzJiXC9jNDQ4MTBiZS04YzUwLTExZTYtYmZkNC0wMDI2Yjk0MTRmMzA/aGFzaD04ZWFmYTU4YzMyMjNhMDg2YTk5N2IwNTdjNjc3ZjUxMTY4NTE0ZWZjIiwidmVyc2lvbiI6IlYzIiwibW9kdWxlTmFtZSI6IkVOVF9NMjA5IiwicHJpb3JpdHkiOiItMTAwIiwiZHJpdmVyIjoiZW50X20yMDlfVjFfMV8wIiwic2NyaXB0SGFzaCI6ImY5OGU4MzliN2Q1ZWYzZCIsInpvbmUiOiJ0MF9sY19wcm9tbzEifSwidDBfcmNfcHJvbW8xIjp7ImZlZWQiOiJodHRwOlwvXC93d3cubXR2LmNvbVwvZmVlZHNcL2VudF9tMTY0X210dlwvVjFfMV8wXC9mNmVhZWFkMS0zZmU0LTQ4OGItOTNjMS0xZTMwODc1ZmQxNWZcL2M0NDgxMGJlLThjNTAtMTFlNi1iZmQ0LTAwMjZiOTQxNGYzMD9oYXNoPTcyMmIwMzcxMmZmZjkxOGQzZDc1OTA2OGM2NTg2OWRmN2YwMWJiZWIiLCJ2ZXJzaW9uIjoiVjMiLCJtb2R1bGVOYW1lIjoiRU5UX00xNjRfTVRWIiwicHJpb3JpdHkiOiItMTAwIiwiZHJpdmVyIjoiZW50X20xNjRfbXR2X1YxXzFfMCIsInNjcmlwdEhhc2giOiIxYTMxMDBkYWQ0YmQxNDAiLCJ6b25lIjoidDBfcmNfcHJvbW8xIn0sInQ1X2xjX3Byb21vMSI6eyJmZWVkIjoiaHR0cDpcL1wvd3d3Lm10di5jb21cL2ZlZWRzXC9lbnRfbTE3MF9tdHZcL1YxXzJfMFwvYTUwOTg1NjMtZjYzMS00OWRmLTg5MTYtNDc3YzAzYzMwMTgwXC84NmY3ZWY3MC02OWJiLTExZTYtYmZkNC0wMDI2Yjk0MTRmMzA/aGFzaD00ZWNiNGQwZGE0ZmRiODY1NjQzMjgwZmMzZWE1M2E3NjllYzQxMjQ5IiwidmVyc2lvbiI6IlYzIiwibW9kdWxlTmFtZSI6IkVOVF9NMTcwX01UViIsInByaW9yaXR5IjoiMSIsImRyaXZlciI6ImVudF9tMTcwX210dl9WMV8yXzAiLCJzY3JpcHRIYXNoIjoiNDcwOTFmN2Y3OGViMjNkIiwiem9uZSI6InQ1X2xjX3Byb21vMSJ9LCJ0NV9yY19wcm9tbzEiOnsiZmVlZCI6Imh0dHA6XC9cL3d3dy5tdHYuY29tXC9mZWVkc1wvZW50X20wNjFfbXR2XC9WMV8wXzBcL2ViNjYyYWI2LTc4MmMtNDgyYS1hMzI4LWY2Mzc4NjIxNGFkMT9oYXNoPTU1NzgyNTE1YjFiZDZkMWRlOWQwYmRhZGI0NTA0NTRiNjJjZWZkMzgiLCJ2ZXJzaW9uIjoiVjMiLCJtb2R1bGVOYW1lIjoiRU5UX00wNjFfTVRWIiwicHJpb3JpdHkiOiIxNCIsImRyaXZlciI6ImVudF9tMDYxX210dl9WMV8wXzAiLCJzY3JpcHRIYXNoIjoiMTg0MjgwOGIzNDgwMDYwIiwiem9uZSI6InQ1X3JjX3Byb21vMSJ9LCJFTlRfTTE3MSI6eyJmZWVkIjoiaHR0cDpcL1wvd3d3Lm10di5jb21cL2ZlZWRzXC9lbnRfbTE3MVwvVjFfMV8wXC9kMmFjNzk2YS1mMzc1LTQzNGUtYTE1Ny0xMzRkNzllYWQxOGY/aGFzaD1iYjI0YzI2Mjc4YzkzOGM1YWViMWY0ZjIxZjE2MDJkMjg5MmI4MTJiIiwidmVyc2lvbiI6IlYzIiwibW9kdWxlTmFtZSI6IkVOVF9NMTcxIiwiZHJpdmVyIjoiZW50X20xNzFfVjFfMV8wIiwic2NyaXB0SGFzaCI6IjA1NzczNmJjYzdlYWQ3MSIsInpvbmUiOiJFTlRfTTE3MSJ9LCJoZWFkZXIiOnsiZmVlZCI6Imh0dHA6XC9cL3d3dy5tdHYuY29tXC9mZWVkc1wvZW50X20wNzBfbXR2XC9WMV8wXzRcLzNiYzFiMTZhLTUzNTUtNGVlNy04N2RmLTI4ZWYxY2Q2NGQzMFwvODZmN2VmNzAtNjliYi0xMWU2LWJmZDQtMDAyNmI5NDE0ZjMwP2hhc2g9YWFkZjYwMmE5NGE3Yzk1MzYyNzc3NDFlOWIzNGNkMTgwYTQxYjk3NSIsInZlcnNpb24iOiJWMyIsIm1vZHVsZU5hbWUiOiJFTlRfTTA3MF9NVFYiLCJwcmlvcml0eSI6Ii0xMDAiLCJkcml2ZXIiOiJlbnRfbTA3MF9tdHZfVjFfMF80Iiwic2NyaXB0SGFzaCI6IjEzMWRkYjJiYjRlYzRhMyIsInpvbmUiOiJoZWFkZXIifSwiZm9vdGVyIjp7ImZlZWQiOiJodHRwOlwvXC93d3cubXR2LmNvbVwvZmVlZHNcL2VudF9tMDA2X210dlwvVjFfMF8xXC8wOGVhODI1MC0zNWMxLTQxYzUtOTNjMi03ZTgxZjFkZDUyNGFcLzg2ZjdlZjcwLTY5YmItMTFlNi1iZmQ0LTAwMjZiOTQxNGYzMD9oYXNoPTM3YjczMDdhZjMzZDk4MGQ2Yzk5ZjgwYjc1ZGJmYTA1YzVjODY5MzMiLCJ2ZXJzaW9uIjoiVjMiLCJtb2R1bGVOYW1lIjoiRU5UX00wMDZfTVRWIiwicHJpb3JpdHkiOiIxNCIsImRyaXZlciI6ImVudF9tMDA2X210dl9WMV8wXzEiLCJzY3JpcHRIYXNoIjoiZjYzMDdkNWJiMjFhNDQwIiwiem9uZSI6ImZvb3RlciJ9fSwic2hvd0NTUyI6bnVsbCwic3VwcGxlbWVudGFsIjp7ImNoYW5uZWwiOiJNVFYiLCJwbGF5ZXJTY3JpcHRPdmVycmlkZSI6Imh0dHA6XC9cL21lZGlhLm10dm5zZXJ2aWNlcy5jb21cL2VkZ2VcL3BsYXllclwvZWRnZXBsYXllci0yLjEuMi5taW4uanMifX19OwogICAgPC9zY3JpcHQ+CiAgICAgICAgCgoKCgkKCTwvaGVhZD4KCjxib2R5IGlkPSJlbnRfcDAwNl8tX3Nlcmllc19mdWxsX2VwaXNvZGVfcGxheWVyX3YyIiBjbGFzcz0idHJpZm9yY2VfcmVuZGVyZWQiPgoKCQoJCQoJCQkKCgoJCQoJCQoJCQogICAgPGRpdiBpZD0iYmFja2dyb3VuZF9ob2xkZXIiPgogICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0ibGVhZGVyYm9hcmQiIGNsYXNzPSJwcmltYXJ5X2JhY2tncm91bmQiIGRhdGEtYWRzaXplPSI3Mjh4OTAiPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWFkZXJib2FyZCBjZW50ZXIgbW9iaWxlIHByaW1hcnlfYmFja2dyb3VuZCIgZGF0YS1hZHNpemU9IjMwMHg1MCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUiPjwvZGl2PgogICAgICAgICAgICAKICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImhlYWRlciIgZGF0YS16b25lPSJoZWFkZXIiIGNsYXNzPSJtb2R1bGUgZW50X20wNzAgcHJpbWFyeV9iYWNrZ3JvdW5kIiBkYXRhLXRmc3RhdGljPSJ0cnVlIiBkYXRhLXRmbGlicz0iRU5UX00wNzBfTVRWIiBkYXRhLXRmZHJpdmVyPSJlbnRfbTA3MF9tdHZfVjFfMF80IiAgIHN0eWxlPSJkaXNwbGF5OmJsb2NrOyI+CgoNCiAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAKPGRpdiBjbGFzcz0ic2l0ZV9oZWFkZXIiPgogICAgPGRpdiBjbGFzcz0idG9wX291dGVyIHByaW1hcnlfYmFja2dyb3VuZCI+CiAgICAgICAgPGRpdiBjbGFzcz0idG9wX2lubmVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVudV9ob2xkZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGFtYnVyZ2VyIiBpZD0idHJpZ2dlciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imljb24iPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2NyZWVuLXJlYWRlci10ZXh0Ij5NVFYgTWVudTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2l0ZV9sb2dvIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBkYXRhLWdyYXBoaWNzPSJBIiBjbGFzcz0iaWNvbiI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzY3JlZW4tcmVhZGVyLXRleHQiPk1UVjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2xpZGVfbWVudSIgPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlYXJjaCI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJzaWRlX25hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lm10di5jb20vIj5NVFYgSG9tZTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJzaG93cyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9zaG93cyIgY2xhc3M9Imhhc19hcnJvdyBub3RyaWZvcmNlIiAgZGF0YS1ncmFwaGljcy1hZnRlcj0iJiM4NjsiPlNob3dzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViX2VudHJpZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvZnVsbC1lcGlzb2RlcyIgPkZ1bGwgRXBpc29kZXM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Nob3dzIiA+U2hvd3MgQS1aPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii90di1zY2hlZHVsZSIgPlRWIFNjaGVkdWxlPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHAiID5BcHA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL210djIiID5NVFYyPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9uZXdzL2NvbGxlY3Rpb24vbXR2LXNob3dzLyIgPlNob3dzIE5ld3M8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3NvdW5kdHJhY2subXR2LmNvbSIgPk11c2ljIGZyb20gdGhlIFNob3dzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9jYXN0aW5nLWNhbGxzIiA+Q2FzdGluZyBDYWxsczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvc2hvd3MiIGNsYXNzPSJzZWVfYWxsIj5TZWUgYWxsIFNob3dzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJtdXNpYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cubXR2LmNvbS9tdXNpYy8iIGNsYXNzPSJoYXNfYXJyb3cgbm90cmlmb3JjZSIgIGRhdGEtZ3JhcGhpY3MtYWZ0ZXI9IiYjODY7Ij5NdXNpYzwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yl9lbnRyaWVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5tdHYuY29tL211c2ljLyIgPk11c2ljPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cubXR2LmNvbS9hcnRpc3RzLyIgPkFydGlzdHMgQS1aPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cubXR2LmNvbS9tdXNpYy92aWRlb3MvIiA+TXVzaWMgVmlkZW9zPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cubXR2LmNvbS9zaG93cy93b25kZXJsYW5kIiA+V29uZGVybGFuZDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lm10di5jb20vbXVzaWMvIiBjbGFzcz0ic2VlX2FsbCI+U2VlIGFsbCBNdXNpYzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibmV3cyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cubXR2LmNvbS9uZXdzLyIgY2xhc3M9Imhhc19hcnJvdyBub3RyaWZvcmNlIiAgZGF0YS1ncmFwaGljcy1hZnRlcj0iJiM4NjsiPk5ld3M8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWJfZW50cmllcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cubXR2LmNvbS9uZXdzLyIgPkxhdGVzdCBOZXdzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cubXR2LmNvbS9uZXdzL211c2ljLyIgPk11c2ljPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cubXR2LmNvbS9uZXdzL2NlbGVicml0eS8iID5DZWxlYnJpdHk8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5tdHYuY29tL25ld3MvdHYvIiA+VFY8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5tdHYuY29tL25ld3MvbW92aWVzLyIgPk1vdmllczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lm10di5jb20vbmV3cy9zdHlsZS8iID5TdHlsZTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lm10di5jb20vbmV3cy9wb2xpdGljcy8iID5Qb2xpdGljczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lm10di5jb20vbmV3cy9saWZlLyIgPkxpZmU8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5tdHYuY29tL25ld3MvIiBjbGFzcz0ic2VlX2FsbCI+U2VlIGFsbCBOZXdzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJwcm92aWRlcl9zaWdub3V0IiBzdHlsZT0iZGlzcGxheTpub25lOyI+VFYgUHJvdmlkZXIgU2lnbiBPdXQ8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InNvY2lhbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmZhY2Vib29rLmNvbS9NVFYiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0ibm90cmlmb3JjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBkYXRhLWdyYXBoaWNzPSJOIiBjbGFzcz0iaWNvbiI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNjcmVlbi1yZWFkZXItdGV4dCI+ZmFjZWJvb2s8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9NVFYiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0ibm90cmlmb3JjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBkYXRhLWdyYXBoaWNzPSJPIiBjbGFzcz0iaWNvbiI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNjcmVlbi1yZWFkZXItdGV4dCI+dHdpdHRlcjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vbXR2LnR1bWJsci5jb20vIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9Im5vdHJpZm9yY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZGF0YS1ncmFwaGljcz0iUSIgY2xhc3M9Imljb24iPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzY3JlZW4tcmVhZGVyLXRleHQiPnR1bWJscjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhZ2Vfb3ZlcmxheSI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cubXR2LmNvbS9zaG93cy9yZWFsLXdvcmxkLXNlYXR0bGUtYmFkLWJsb29kIiBjbGFzcz0ic2hvd19sb2dvIGxvbmdfdGl0bGUiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gVGhlIGV4dHJhIG1hcmsgdXAgaXMgbmVlZGVkIGZvciB2ZXJ0aWNhbCBjZW50ZXJpbmcgbG9uZyBzaG93IHRpdGxlcy4gSXQgY291bGQgYmUgb25lIGxpbmUgb3IgdHdvIGxpbmVzLiAtLT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0id3JhcHBlciAiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDEgY2xhc3M9InRpdGxlIj5SZWFsIFdvcmxkIFNlYXR0bGU6IEJhZCBCbG9vZDwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmV3X2Vwc19pbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHA+d2VkbmVzZGF5cyAxMC85YzwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VhcmNoX3dyYXBwZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VhcmNoX2J0biI+PC9kaXY+CiAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaG93X21lbnVfd3JhcHBlciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaG93X21lbnVfYnRuIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5NZW51PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGRhdGEtZ3JhcGhpY3M9IlYiPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hvd19tZW51X3Njcm9sbF93cmFwcGVyIj4KICAgICAgICAgICAgICAgIDx1bCBpdGVtc2NvcGU9IiIgaXRlbXR5cGU9Imh0dHA6Ly93d3cuc2NoZW1hLm9yZy9TaXRlTmF2aWdhdGlvbkVsZW1lbnQiIGNsYXNzPSJzaG93X21lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGl0ZW1wcm9wPSJ1cmwiIGhyZWY9Imh0dHA6Ly93d3cubXR2LmNvbS9zaG93cy9yZWFsLXdvcmxkLXNlYXR0bGUtYmFkLWJsb29kIiAgY2xhc3M9IiBob21lIj5Ib21lPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaXRlbXByb3A9InVybCIgaHJlZj0iaHR0cDovL3d3dy5tdHYuY29tL3Nob3dzL3JlYWwtd29ybGQtc2VhdHRsZS1iYWQtYmxvb2QvZXBpc29kZS1ndWlkZSIgIGNsYXNzPSIgZnVsbF9lcGlzb2RlcyI+RnVsbCBFcGlzb2RlczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGl0ZW1wcm9wPSJ1cmwiIGhyZWY9Imh0dHA6Ly93d3cubXR2LmNvbS9zaG93cy9yZWFsLXdvcmxkLXNlYXR0bGUtYmFkLWJsb29kL3ZpZGVvLWd1aWRlIiAgY2xhc3M9IiB2aWRlb3MiPlZpZGVvczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGl0ZW1wcm9wPSJ1cmwiIGhyZWY9Imh0dHA6Ly93d3cubXR2LmNvbS9zaG93cy9yZWFsLXdvcmxkLXNlYXR0bGUtYmFkLWJsb29kL2Nhc3QiICBjbGFzcz0iIGNhc3QiPkNhc3Q8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBpdGVtcHJvcD0idXJsIiBocmVmPSJodHRwOi8vd3d3Lm10di5jb20vc2hvd3MvcmVhbC13b3JsZC1zZWF0dGxlLWJhZC1ibG9vZC90di1zY2hlZHVsZSIgIGNsYXNzPSIgc2NoZWR1bGUiPlNjaGVkdWxlPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InNvY2lhbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJib3R0b21fb3V0ZXIiPjwvZGl2Pgo8L2Rpdj4KDQogICAgCgo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAKICAgIAogICAgPGRpdiBpZD0iY29udGVudF9ob2xkZXIiIGRhdGEtaW5pdGlhbD0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InRpZXJfMCIgY2xhc3M9InRpZXJfMl9jb2wiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJ0MF9sYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0idDBfbGNfcHJvbW8xIiBkYXRhLXpvbmU9InQwX2xjX3Byb21vMSIgY2xhc3M9Im1vZHVsZSBlbnRfbTIwOSIgZGF0YS10ZnN0YXRpYz0idHJ1ZSIgZGF0YS10ZmxpYnM9IkVOVF9NMjA5IiBkYXRhLXRmZHJpdmVyPSJlbnRfbTIwOV9WMV8xXzAiICAgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2R1bGVfY29udGVudCBwbGF5ZXIiPjxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI+eyJAY29udGV4dCI6Imh0dHA6Ly9zY2hlbWEub3JnLyIsIkB0eXBlIjoiVFZFcGlzb2RlIiwiQGlkIjoiYzQ0ODEwYmUtOGM1MC0xMWU2LWJmZDQtMDAyNmI5NDE0ZjMwIiwibmFtZSI6IlBldGVyZWQgT3V0IiwiZGVzY3JpcHRpb24iOiJBIHNjYW5kYWxvdXMgaG9va3VwIGJldHdlZW4gSmVubiBhbmQgUGV0ZXIgaGFzIG1ham9yIHJlcGVyY3Vzc2lvbnMgZm9yIGJvdGggb2YgdGhlbS4gVHlhcmEgcHJvdmVzIHRvIGJlIGhlciBvd24gd29yc3QgZW5lbXkgaW4gaGVyIGJ1ZGRpbmcgcmVsYXRpb25zaGlwIHdpdGggVGhlby4iLCJlcGlzb2RlTnVtYmVyIjoiMzIwNyIsInBhcnRPZlNlYXNvbiI6eyJAdHlwZSI6IlRWU2Vhc29uIiwic2Vhc29uTnVtYmVyIjozMn0sInBhcnRPZlNlcmllcyI6eyJAdHlwZSI6IlRWU2VyaWVzIiwibmFtZSI6IlJlYWwgV29ybGQgU2VhdHRsZTogQmFkIEJsb29kIiwidXJsIjoiaHR0cDovL3d3dy5tdHYuY29tL3Nob3dzL3JlYWwtd29ybGQtc2VhdHRsZS1iYWQtYmxvb2QiLCJkZXNjcmlwdGlvbiI6Ik9uIHRoaXMgc2Vhc29uIG9mIFJlYWwgV29ybGQgU2VhdHRsZTogQmFkIEJsb29kLCBzZXZlbiBzdHJhbmdlcnMgaW4gdGhlaXIgZWFybHkgdHdlbnRpZXMgbW92ZSBpbnRvIGFuIHVwc2NhbGUgbG9mdCBpbiBTZWF0dGxlXHUyMDE5cyBDYXBpdG9sIEhpbGwgbmVpZ2hib3Job29kIHdpdGggdGhlIGhvcGUgb2Ygc3RhcnRpbmcgYW4gZXhjaXRpbmcgbmV3IGNoYXB0ZXIgaW4gdGhlaXIgbGl2ZXMuIEluIFJlYWwgV29ybGQgU2VhdHRsZTogQmFkIEJsb29kLCB0aGUgcm9vbW1hdGVzIGJlbGlldmUgdGhleSBoYXZlIHRoZWlyIG5ldyBob21lIGFsbCB0byB0aGVtc2VsdmVzLCBidXQgd2hhdCB0aGV5IGRvblx1MjAxOXQga25vdyBpcyB0aGVyZSBhcmUgc2V2ZW4gb3RoZXIgcGVvcGxlIGNvbWluZyB0byBjcmFzaCB0aGVpciBwYXJ0eS5cblxuV2hpbGUgdGhlIGZpcnN0IHNldmVuIHJvb21tYXRlcyBmb3JtIGZyaWVuZHNoaXBzLCBob29rIHVwIHdpdGggZWFjaCBvdGhlciwgYW5kIGhhdmUgdGhlIHRpbWUgb2YgdGhlaXIgbGl2ZXMgaW4gU2VhdHRsZSAtIGFub3RoZXIgZ3JvdXAgb2Ygc2V2ZW4gc3RyYW5nZXJzIHNlY3JldGx5IG1lZXQgaW4gUG9ydGxhbmQuIEJ1dCB0aGVzZSBzZXZlbiBuZXcgcGVvcGxlIGFyZSBubyBzdHJhbmdlcnMgdG8gdGhlIGZpcnN0IGdyb3VwIG9mIHJvb21tYXRlcy4gSW4gZmFjdCxlYWNoIG9mIHRoZW0gaGFzIHNvbWUgc2VyaW91cyBiYWQgYmxvb2Qgd2l0aCBvbmUgbWVtYmVyIG9mIHRoZSBTZWF0dGxlIGdyb3VwIFx1MjAxMyB0aGV5IGFyZSB0aGVpciBleGVzLCByaXZhbHMsIGZyZW5lbWllcywgb3IgZXN0cmFuZ2VkIGZhbWlseSBtZW1iZXJzLiBUaGUgdHdvIGdyb3VwcyBhcmUgc2V0IG9uIGFuIHVuZXhwZWN0ZWQgY29sbGlzaW9uIGNvdXJzZSBhcyB0aGUgbmV3IGdyb3VwIHRha2VzIGEgcm9hZCB0cmlwIGluIGFuIFJWIHRvIFNlYXR0bGUgd2hlcmUgdGhleSB3aWxsIHN1cnByaXNlIHRoZSBvcmlnaW5hbCBzZXZlbiBhbmQgbW92ZSBpbnRvIHRoZWlyIGhvdXNlLiAgTm93LCB0aGUgZm91cnRlZW4gbXVzdCBsZWFybiB0byBjby1leGlzdCwgZ2V0IGJleW9uZCB0aGUgY29uZmxpY3RzIG9mIHRoZSBwYXN0LCBhbmQgcmVzb2x2ZSB0aGVpciB1bmZpbmlzaGVkIGJ1c2luZXNzLlxuXG5SZWFsIFdvcmxkIFNlYXR0bGU6IEJhZCBCbG9vZCBpcyB0aGUgZmlyc3QgdGltZSBpbiB0aGUgc2VyaWVzXHUyMDE5IGhpc3RvcnkgdG8gaGF2ZSBzbyBtYW55IHJvb21tYXRlcyBjb21lIHRvZ2V0aGVyIHRvIGZvcm0gbmV3IGZyaWVuZHNoaXBzLCBuZXcgcml2YWxyaWVzLCBhbmQgbmV3IGZsYW1lcy4gQXMgdGhlIGR5bmFtaWNzIGNoYW5nZSBiZXR3ZWVuIHRoZSB0d28gZ3JvdXBzIG9mIHJpdmFscywgd2lsbCB0aGV5IHdvcmsgb3V0IHRoZSBiYWQgYmxvb2QgYmV0d2VlbiB0aGVtPyBPciB3aWxsIHRoZWlyIGRpc2FncmVlbWVudHMgcHJvdmUgdG9vIG11Y2ggdG8gb3ZlcmNvbWUsIGxlYWRpbmcgc29tZSB0byBjYWxsIGl0IHF1aXRzPyJ9LCJyZWxlYXNlZEV2ZW50Ijp7IkB0eXBlIjoiUHVibGljYXRpb25FdmVudCIsInN0YXJ0RGF0ZSI6IjIwMTYtMTEtMTZUMjI6MDA6MDAtMDUwMCIsImxvY2F0aW9uIjp7IkB0eXBlIjoiQ291bnRyeSIsIm5hbWUiOiJVUyJ9fSwicG90ZW50aWFsQWN0aW9uIjpbeyJAdHlwZSI6IldhdGNoQWN0aW9uIiwidGFyZ2V0Ijp7IkB0eXBlIjoiRW50cnlQb2ludCIsInVybFRlbXBsYXRlIjoiYW5kcm9pZC1hcHA6Ly9jb20ubXR2bi5tdHZQcmltZUFuZHJvaWQvbXR2bmV0d29ya2FwcC9lcGlzb2RlL2M0NDgxMGJlLThjNTAtMTFlNi1iZmQ0LTAwMjZiOTQxNGYzMD94cnM9d2F0Y2hBY3Rpb24iLCJhY3Rpb25QbGF0Zm9ybSI6Imh0dHA6Ly9zY2hlbWEub3JnL0FuZHJvaWRQbGF0Zm9ybSIsImluTGFuZ3VhZ2UiOiJlbi1VUyJ9LCJleHBlY3RzQWNjZXB0YW5jZU9mIjp7IkB0eXBlIjoiT2ZmZXIiLCJhdmFpbGFiaWxpdHlTdGFydHMiOiIyMDE2LTExLTE3VDExOjAwOjAwKzAwMDAiLCJhdmFpbGFiaWxpdHlFbmRzIjoiMjQwMC0xMi0zMFQwNTowMDowMCswMDAwIiwiY2F0ZWdvcnkiOiJleHRlcm5hbFN1YnNjcmlwdGlvbiIsImVsaWdpYmxlUmVnaW9uIjp7IkB0eXBlIjoiQ291bnRyeSIsIm5hbWUiOiJVUyJ9fX0seyJAdHlwZSI6IldhdGNoQWN0aW9uIiwidGFyZ2V0Ijp7IkB0eXBlIjoiRW50cnlQb2ludCIsInVybFRlbXBsYXRlIjoiaHR0cDovL3d3dy5tdHYuY29tL2Z1bGwtZXBpc29kZXMvN2txa2djL3JlYWwtd29ybGQtc2VhdHRsZS1iYWQtYmxvb2QtcGV0ZXJlZC1vdXQtc2Vhc29uLTMyLWVwLTMyMDc/eHJzPXdhdGNoQWN0aW9uIiwiYWN0aW9uUGxhdGZvcm0iOiJodHRwOi8vc2NoZW1hLm9yZy9EZXNrdG9wV2ViUGxhdGZvcm0iLCJpbkxhbmd1YWdlIjoiZW4tVVMifSwiZXhwZWN0c0FjY2VwdGFuY2VPZiI6eyJAdHlwZSI6Ik9mZmVyIiwiYXZhaWxhYmlsaXR5U3RhcnRzIjoiMjAxNi0xMS0xN1QxMTowMDowMCswMDAwIiwiYXZhaWxhYmlsaXR5RW5kcyI6IjI0MDAtMTItMzBUMDU6MDA6MDArMDAwMCIsImNhdGVnb3J5IjoiZXh0ZXJuYWxTdWJzY3JpcHRpb24iLCJlbGlnaWJsZVJlZ2lvbiI6eyJAdHlwZSI6IkNvdW50cnkiLCJuYW1lIjoiVVMifX19XSwidmlkZW8iOnsiQHR5cGUiOiJWaWRlb09iamVjdCIsIm5hbWUiOiJQZXRlcmVkIE91dCIsImRlc2NyaXB0aW9uIjoiQSBzY2FuZGFsb3VzIGhvb2t1cCBiZXR3ZWVuIEplbm4gYW5kIFBldGVyIGhhcyBtYWpvciByZXBlcmN1c3Npb25zIGZvciBib3RoIG9mIHRoZW0uIFR5YXJhIHByb3ZlcyB0byBiZSBoZXIgb3duIHdvcnN0IGVuZW15IGluIGhlciBidWRkaW5nIHJlbGF0aW9uc2hpcCB3aXRoIFRoZW8uIiwidGh1bWJuYWlsVXJsIjoiaHR0cDovL210di5tdHZuaW1hZ2VzLmNvbS9hcmMvaW1hZ2VzL3Nob3dzL3JlYWwtd29ybGQtc2VhdHRsZS1iYWQtYmxvb2QvdmlkZW9zL1JlYWxXb3JsZFNlYV9OQV84Njg0Nzk5NS5tb3YubXA0LlN0aWxsMDExX2VkaXRlZC5qcGciLCJ1cGxvYWREYXRlIjoiMjAxNi0xMS0xNlQyMjowMDowMC0wNTAwIiwidHJhbnNjcmlwdCI6Ii0gUHJldmlvdXNseSBvbiBcIlJlYWwgV29ybGRcIi4uLiAtIFR5YXJhIGlzIGZpbmUgYXMgaGVsbC4gU2hlIGdvdCBhc3MsYW5kIHNoZSBnb3Qgc3dhZy4gW3RodW1waW5nIGNsdWIgbXVzaWNdIC0gU2hlJ3MgdHdlcmtpbmcgb24gaGltLCBhbmQgaGUncywgbGlrZSxyZWNlaXZpbmcgdGhlIHR3ZXJrYWdlLiBNYWtlcyBtZSBzbyBtYWQuIC0gWW91J3JlIHN1cGVyIGVhcmx5LiAtIFtsYXVnaHNdIC0gSXQncyBhIGJpZyBkZWFsLGJlY2F1c2UgSSdtIHRlbGxpbmcgaGVyIEkgaGF2ZSBhIGNydXNoIG9uIGhlcm9uIG5hdGlvbmFsIHRlbGV2aXNpb24uIC0gSSBqdXN0IGZlZWwgbGlrZXlvdXIgc2lzdGVyIGlzIHRoZSB3ZWRnZSBiZXR3ZWVuIG1lIGFuZCB5b3UuIC0gSSdtIHNvcnJ5Li0gW3NpZ2hzXSBNZSBhbmQgQW5uYSBhcmUgZG9uZS4gQW5kIEknbSBsaWtlLCB5b3Uga25vdyB3aGF0P0dyZWF0LiBUaGF0J3MgYXdlc29tZS5JIGRvbid0IGNhcmUuIFdlIGFyZSBkb25lLiAtIEkganVzdCB3ZW50IG91dCBhbmQgdG8gZGlubmVyIHdpdGggbXkgZXgtYm95ZnJpZW5kLCBhbmQgZXZlcnl0aGluZyB3YXMgZmluZSxhbmQgeW91J3JlIG9rYXkgd2l0aCBpdC4gLSBJIHRydXN0IHlvdS4tIE5vLCBJIGtub3cuIFRoZXJlJ3Mgbm90IG9uZSB0aGluZyB0aGF0IFRyYXZpcyBzaG91bGQgaGF2ZWFuIGlzc3VlIHdpdGgsIG9yIHdvcnJ5IGFib3V0LiBbZHJhbWF0aWMgZHJ1bXNdIFx1MjY2YSBbdXBiZWF0IHRlY2hubyBtdXNpY10gXHUyNjZhIFtsYWlkLWJhY2sgc3ludGggbXVzaWNdIFx1MjY2YSAtIFt3aGltcGVyc10gW3NpZ2hpbmddT2theS4gU3RvcC5UaGVvLCBJIFtibGVlcF0gc2F3IGEgc3BpZGVyLi0gQWgsIGRhbW4sIHNvbi4gLSBUaGVvLS1bZ2lnZ2xlc10gLSBJdCdzIG9uIHlvdXIgYmFjay4tIFRoZW8tLSBbZ2lnZ2xlc11JJ20gbm90LS0gLSBJIGRvbid0IHRoaW5rIHlvdSBzYXcgaXQuIC0gVGhpcyBpcyBub3QgZnVubnkuIEkgc2F3IGEgc3BpZGVyLkkga25vdyBJIHNhdyBhIHNwaWRlci4gSXQgd2FzIGEgY3JlZXB5IHNwaWRlci4gSSdtIG5vdCBzbGVlcGluZyBpbiBteSBiZWQuIC0gSXMgdGhpcyBhbiBleGN1c2UgdG8gY2xpbWIgaW50byBoaXMgYmVkPyAtIE5vLCB0aGlzIGlzIG5vdCBhbiBleGN1c2UuW2xhdWdoc10gLSBJIHVuZGVyc3RhbmQuIFdlJ3JlIGRhdGluZywgYnV0IG5vdCBkYXRpbmcuIEJ1dCBJJ20gdGhyZWUgd2Vla3MgaW4gd2l0aG91dFtibGVlcF0gYSBbYmxlZXBdLCBjdXouIERvIHlvdSBrbm93IHdoYXQgaXQncyBsaWtlIHRvIHdha2UgdXAgZXZlcnkgbW9ybmluZyB3aXRoIGEgaGFyZC1hc3MgYm9uZXI/IEFuZCBub3QgYmUgYWJsZSB0byBkbyBhbnl0aGluZ3dpdGggaXQ/IFlvdSBjYW4ndCBbYmxlZXBdIG9mZiwnY2F1c2UgdGhlcmUncywgbGlrZSwgYSBtaWxsaW9uIGNhbWVyYXNsb29raW5nIGF0IHlvdXIgYXNzLiAtIFtpbmRpc3RpbmN0IGdyb2Fuc10gSSBzdGlsbCBmZWVsIGxpa2UgW2JsZWVwXS4gLSBXaGF0IGFyZSB5b3UgZ29ubmEgZG8gYWJvdXQgeW91ciBib3lmcmllbmQ/IC0gSSBmZWVsIGxpa2UgSSdtIHRocm93aW5nIGF3YXkgc29tZXRoaW5nIHRoYXQgY291bGRiZSBteSBmdXR1cmUsIGFuZC4uLiBpdCdzIGp1c3QtLWl0J3MgYnJlYWtpbmdteSBoZWFydCBjb21wbGV0ZWx5LiBbbGluZSB0cmlsbGluZ10gLSBbc2lnaHNdIC0gV2hhdCBhcmUgeW91IGRvaW5nPy0gVGhlIGJpZyBtYW4sIHlvdSBva2F5IHdpdGggYmVpbmcgcmVjb3JkZWQ/IC0gWWVhaCwgSSdtIG9rYXkgd2l0aCBiZWluZyByZWNvcmRlZC4gLSBTb21lIFtibGVlcF0gZ29pbmcgZG93bmxhc3QgbmlnaHQuIC0gT2gsIG9mIGNvdXJzZSwgb2J2aW91c2x5LiBXaXRoIHRoYXQgZ2lybCBBbXkgb3Igd2hhdGV2ZXIgaGVyIG5hbWUgaXM/LSBObywgbm90IHdpdGggaGVyLiBbbGF1Z2hzXU5vLi4uIC0gV2l0aCB3aG8/LSBTb21lYm9keSBlbHNlLiAtIE5pY2UuIC0gSSdtIG92ZXIgQW5uYS5JIGNhbiBjYXJlIGxlc3MgYWJvdXQgaGVyLiBJIGxpa2UgSmVubixsaWtlLi4uIEl0J3MgYSB0b3VnaCBzaXR1YXRpb24uIFNoZSBoYXMsIGxpa2UsIGEgYm95IHRoaW5nLS1hIGJveWZyaWVuZCBiYWNrIGhvbWUuIEl0J3MgW2JsZWVwXSB1cCwgZHVkZS5bc2lnaHNdIC0gVGhhdCdzIG5vdCBnb29kLCBtYW4uIC0gW2dyb2Fuc10gSSBkb25lIFtibGVlcF0gdXAuLSBPaCwgbXkgR29kLiBJIGFscmVhZHkga25vd3doYXQgc2hlJ3MgZ29ubmEgc2F5LiAtIFlvdSBrbm93IHdoYXQgSSdtIGdvbm5hIHNheS4gV2FpdCwgbm8sIGhvbGQgb24sIHdhaXQuLi4gLSBObyB3YXkuIE9rYXkuIC0gQ2FuIHdlIHRhbGsgYWJvdXQgaXRpbiB0aGUgY29uZmVzc2lvbmFsPyAtIFllYWgsIHlvdSB3YW5uYSBnbyBpbiB0aGVyZT8gLSBNbS1obW0uLSBPa2F5LiAtIERhbW4uLSBZZWFoLiAtIERhbW4sIGdpcmwuLSBZZWFoLiBbc2lnaHNdW2JsZWVwXSAtIFtibGVlcF0gbXkgbGlmZSByaWdodCBub3csIHRob3VnaC4gLSBXaGF0IGhhcHBlbmVkPy0gTW0uIC0gSSBraXNzZWQgaGltLiAtIFlvdSBraXNzZWQgaGltb3IgaGUga2lzc2VkIHlvdT8gLSBJIGp1c3QsIGxpa2UsIHR1cm5lZCBteSBoZWFkLi0gT2gsIGFuZCB0aGVuIHdoYXQgZGlkIGhlIGRvYWZ0ZXIgdGhhdD8gSGUga2lzc2VkIHlvdSBiYWNrLCBvci4uLi0gWWVhaC4gLSBJIGtub3cgeW91ciBtYW4ncyBub3Rnb25uYSBiZSBoYXBweSBhYm91dCB0aGF0LiBIZSdzIG5vdC0tLSBJdCByZWFsbHkgW2JsZWVwXSBzdWNrcywgYW5kIEkgYWxtb3N0IHdpc2ggdGhhdCBJIGRpZG4ndCxsaWtlLCB0YWxrIGFib3V0IGhpbSBoZXJlLCBiZWNhdXNlIG5vdyBJIGZlZWwgbGlrZUkgbWFkZSBhIGZvb2wgb2YgaGltLiBBbmQgdGhhdCdzIGxpdGVyYWxseSB3aGF0J3MtLUknbSBnb25uYSBzdGFydCBjcnlpbmctLSAtIE5vLGRvbid0IGNyeSwgYm9vLiAtIE5vLi0gRG9uJ3QgY3J5LiBDb21lIG9uLCBnaXJsLGRvbid0IGNyeS4gLSBNbS4uLiAtIExvb2ssZXZlcnlib2R5IFtibGVlcF0gdXAuIC0gSXQncyBub3QgYW4gZXhjdXNlLCB0aG91Z2guLSBJIGtub3cgaXQncyBub3QgYW4gZXhjdXNlLiAtIEkgdG90YWxseSBqdXN0IGJyb2tlaGlzIGhlYXJ0LiAtIE5vLi0gW3NuaWZmbGVzXSBJIG1hZGUgYSBwcm9taXNlIHRoYXQgSSB3b3VsZG4ndCBkb2FueXRoaW5nIGxpa2UgdGhpcywgYW5kLi4uIHVuZm9ydHVuYXRlbHksIEkgW2JsZWVwXSB0aGF0IHVwLiBPaCwgZ3V5cy5JJ2QgZ28gbnV0cyB3aXRob3V0IHlvdSBndXlzLiAtIFlvdSBkb24ndCBrbm93Lldha2UgbWUgdXAsIFtibGVlcF0uIC0gTGV0J3MgZG8gdGhpcy4gLSBXZWxsLCBob3BlZnVsbHl5b3UncmUganVzdCBmb3JnaXZlbi4gJ0NhdXNlIGl0IHdhc24ndCB0aGF0IGJpZ2V2ZW50LS1pdCdzIG5vdCBsaWtlIHlvdSBkaWQgdGhpcyBodWdlLS1bcmluZ3RvbmUgY2hpbWVzXSAtIEhlJ3MgY2FsbGluZyBtZS5JIGZlZWwgbGlrZSBJJ20gZ29ubmEgdGhyb3cgdXAgcmlnaHQgbm93LiAtIEhlbGxvLiAtIEkgW2JsZWVwXSB1cC4gLSBPa2F5LiBZb3Uga25vdywgSSBmaWd1cmVkIGZvciBzb21ldGhpbmcgdG8gYWN0dWFsbHkgaGFwcGVuIGxpa2UgdGhpcywgeW91J2QgaGF2ZSBhIGxpdHRsZSBtb3JlIGVtb3Rpb24gd2hlbiB5b3UgdG9sZCBtZS4gJ0NhdXNlIHlvdXIgZW1vdGlvbiB3YXMgdG93YXJkcyBtZSwgYW5kLi4uIHRoYXQncyBub3QgeW91LiBLYXk/IFNvLi4uLSBZZWFoLiAtIE5vdyBnbyBhaGVhZCwgYW5kIGVuam95IHlvdXJzZWxmLiBJIGhvcGUgdGhpcyBmaXZlIHNlY29uZHMgb2YgZmFtZSBpcyB3b3J0aCBpdC4gR29vZC1ieWUuIC0gS2F5LCBJIGtuZXcgaGUgd2FzIGdvbm5haGFuZyB1cCwgc28gdGhhdCdzIHdoeSBJIGRpZG4ndCBldmVuIHNheSBhbnl0aGluZy4gW2dyb2Fuc10gSSB3YXNuJ3QgcmVhbGx5IGV4cGVjdGluZy4uLiBhIHNwZWNpZmljIHJlYWN0aW9uLGJ1dCBJIHctLUkgaGFkIGEgZmVlbGluZyB0aGF0IHRoaW5ncyB3ZXJlIGdvbm5hIGJlIGRvbmUuIFNvIEknbSBraW5kIG9mIGp1c3QgYSBiYWxsb2YgZW1vdGlvbnMgYXQgdGhlIG1vbWVudC4gLSBXaGF0IGRvIHlvdSBub3c/Q2FuIHlvdSBrZWVwIGhvb2tpbmcgdXAgd2l0aCBQZXRlcj9JJ20gY29uZnVzZWQuIC0gSSdtIG5vdCBwbGFubmluZ3RvIGhvb2sgdXAgd2l0aCBQZXRlciBhZ2Fpbi4gQnV0IGF0IHRoZSBzYW1lIHRpbWUsIGl0J3MgcmVhbGx5IHRvdWdoLCBiZWNhdXNlIEkgZG8gZmVlbCBhdHRyYWN0ZWQgdG8gUGV0ZXIuIEJ1dCBJIGRvbid0IHJlYWxseSBrbm93aG93IGhlIGZlZWxzLiBJIGZlZWwgbGlrZSBJIG5lZWQgdG8gaGF2ZWEgY29udmVyc2F0aW9uIHdpdGggaGltLiAtIFx1MjY2YSBJJ20gaW4gYWxsIHRoZSB3YXkgXHUyNjZhIFx1MjY2YSBPdmVyIG15IGhlYWQgLSBIZXkuIFdoYXQncyB1cD8tIEknbSBqdXN0LS1JLi4uIEkgW2JsZWVwXSB1cCBiYWQuLSBXaGF0PyAtIFBldGVyIGRpZG4ndCB0ZWxsIHlvdT8tIEh1aD8gLSBQZXRlciBkaWRuJ3QgdGVsbCB5b3UtLS0gWW91IGd1eXMgbWFkZSBvdXQ/IC0gWWVhaC4gTWFuLCBJJ20gcmVhbGx5cGlzc2VkIG9mZiBhdCBteXNlbGYuIC0gVGhpcyBpcyBteS0tdGhpcyBpcyBteSBxdWVzdGlvbiB0byB5b3UuIElmIHlvdSBsaWtlIFRyYXZpcyBhcyBtdWNoIGFzeW91IHNheSB5b3UgZG8sIHdoeSdkIHlvdSBkbyB3aGF0IHlvdSBkaWQgbGFzdCBuaWdodD8tIEkgY2FuJ3QgYW5zd2VyIHRoYXQuIFRoZXkgd2hhdC0tLSBUaGF0J3MgZmFpci4gLSBJIHdhcyB0YWxraW5nIHRvIHRoZSBnaXJscyxhbmQgdGhleSB3ZXJlIGp1c3QgbGlrZS0tIFRoZXkgc2FpZCB0aGUgc2FtZSB0aGluZy5UaGV5J3JlIGxpa2UsIFwiV2h5IGRpZCB5b3UgZG8gaXQ/XCJBbmQgSSB3YXMgbGlrZSwgXCJJIGNhbid0IGFuc3dlciB0aGF0LlwiSSBoYXZlIG5vIFtibGVlcF0gaWRlYS4gLSBTby4uLi0gWW91IGhhZCBhIG1vbWVudCBvZiB3ZWFrbmVzcy4gWW91IGRpZCBzb21ldGhpbmdvdXQgb2YgaW1wdWxzZS4gWW91IGhhZCBhbiBleHBlcmllbmNlLldlJ3JlIGhlcmUgZm9yIGV4cGVyaWVuY2VzLiBBbmQgdGhhdCdzIHdoYXQgd2UncmUgZ29ubmEgZG8uIEknbSBhIGxpdHRsZSBkaXNhcHBvaW50ZWR0aGF0IHNoZSB3ZW50IGFuZCwgdWgsIGhvb2tlZCB1cCB3aXRoIHNvbWVvbmV3aGVuIHNoZSBoYXMgYSBtYW4gYXQgaG9tZS4gT24tLWFuZCBvbiB0aGUgb3RoZXIgaGFuZCwgSSBkb2NhcmUgYWJvdXQgSmVubmEgYXMgYSBmcmllbmQuIFNoZSdzIGEgZ29vZCBwZXJzb24uSSBrbm93IHNoZSdzIGdvdCBhIGdvb2QgaGVhcnQuIEknbGwgYWx3YXlzIGJlIHRoZXJlIGZvciBoZXJ3aGVuIHNoZSBuZWVkcyBtZSwgYW5kLCB1aCxob3BlZnVsbHkgaXQncyB2aWNlIHZlcnNhLiBBbGwgcmlnaHQuV2UncmUgaGVyZSB0byBoYXZlIGZ1biwgc28gZG9uJ3Qgc3RyZXNzIHlvdXJzZWxmYWJvdXQgaXQuIC0gW2dyb2Fuc11UaGFua3MsIFJvYi4gLSBZb3UgZ290IGl0Li0gWW91IHRoZSBiZXN0LiAtIFtpbmRpc3RpbmN0XS0gV2hhdCB1cCwgd2hhdCB1cCwgd2hhdCB1cC4gLSBJcyB0aGF0IGEgbmV3IHNoaXJ0LCBtYW4/LSBHaXZlIG1lIHR3byBzZWNvbmRzIHdpdGggUGV0ZS4gLSBZZWFoLCB3b3JkLXdvcmQtd29yZC4tIFR3byBzZWNvbmRzLiAtIEhleSwgeW91IHNob3VsZCByZWFsbHkgdGFsa3RvIEplbm4gYXQgdGhpcyBwYXJ0eS4gLSBbbGF1Z2hzXS0gTXkgYm95PyAtIFllYWguLSBObyBoYXJkIGZlZWxpbmdzPyAtIE5vLi0gSXQncyBjb29sLiAtIEFib3V0IHdoYXQ/LSBXaXRoIEplbm4uIFNoZSBzYWlkIHRoYXQgeW91IGd1eXMgbWFkZSBvdXQuIC0gVW0uLi5XZWxsLi4uIC0gTGlzdGVuLEkga25ldyBpdCBoYXBwZW5lZCBiZWNhdXNlIEkgc2F3IGl0IHdyaXR0ZW5hbGwgb3ZlciBoZXIgZmFjZS4gU2hlJ3MgbXkgZXguIFNoZSdzIGluIHRoZSBwYXN0Li0gWWVhaC4gLSBJIGRvbid0IHdhbnQgeW91IHRvIGZlZWxzb21lIHR5cGUgb2Ygd2F5IGFib3V0IGl0LCBhbmQgSSBkb24ndCB3YW50IHlvdSB0byB0aGlua3RoYXQgd2UncmUgZ29ubmEgaGF2ZSBiYWQgYmxvb2QuIEkganVzdCB3YW50IHlvdSB0byBrbm93LEkga25vdywgaXQncyBzdHJhaWdodC4gVGhlcmUgYWluJ3Qgbm8gd2F5IGFib3V0IGl0Li0gR29vZCwgYWxsIHJpZ2h0LCB3b3JkLCB5ZWFoLiAtIENvb2wuLSBJLS1JLS1ob25lc3RseSwgbGlrZSwgSSB3YXMgZ29ubmEgdGVsbCB5b3UgYXQgdGhlIGRheSBwYXJ0eS4tIFllYWgsIHllYWgteWVhaC4gWW8sIGl0J3Mgc3RyYWlnaHQuLSBCZWNhdXNlIEkgZG9uJ3Qga25vdyBob3cgc2hlIGYtLUkgaGF2ZW4ndCB0YWxrZWQgdG8gaGVyIHlldC5MaWtlLCBJIGRvbid0IGtub3cgd2hhdCB0aGUgW2JsZWVwXSBpcyBnb29kIHdpdGggaGVyLkJ1dCBJIGRvbid0IHdhbnQgaGVyIHRvIGZlZWwsIGxpa2UsIHdlaXJkIHRvd2FyZHMgbWUuLSBObywgSSBkb24ndCB0aGluayBzaGUgZmVlbHMgd2VpcmQgdG93YXJkcyB5b3UuSSB0aGluayB5b3UganVzdCBnb3R0YSB0YWxrIHRvIGhlci4gU2hlJ3MgYXZlcnkgdW5kZXJzdGFuZGluZyBwZXJzb24gLSBJIHRoaW5rIGV2ZXJ5dGhpbmcgaGFwcGVucyBmb3IgYSByZWFzb24sIHdoZXRoZXIgaXQgd2FzIGdvb2Qgb3IgYmFkLiBTbyB0aGUgbmV4dCBzdGVwaXMsIEkgZ3Vlc3MsIHRvLCB1aCwganVzdCB0YWxrIHRvIEplbm5iZWZvcmUgc2hlIHRhbGtzIHRvIEFubmEsIGJlY2F1c2UgSSBkb24ndCBrbm93IHdoYXR0aGUgW2JsZWVwXSBBbm5hJ3MgZ29ubmEgc2F5LiAtIExhZGllcyBhbmQgZ2VudGxlbWVuLGl0J3MgMzozMC4gRG8geW91IGtub3d3aGVyZSB5b3VyIGNoaWxkcmVuIGFyZT8gSSBkby5JdCdzIGFib3V0IHRvIGdldCB0dXJudCB1cC4gRGF5IHNoaWZ0LCBiYWJ5LiBTdW4ncyBvdXQsZ3VucyBvdXQuIFtncnVudGluZ10gVHVybiB1cC4gW2dyb292eSBzeW50aCBtdXNpY10gXHUyNjZhIC0gT2gsIG15IEdvZCx0aGVyZSdzIGEgYy0tIFtsYXVnaHNdIFdoYXQgYXJlIHlvdSBkb2luZz8gTG9vayBhdCBoaW0gc21pcmtpbmcuLSBbaW5kaXN0aW5jdF0gXHUyNjZhIC0gSSdtIDEwMCUgY29uY2VybmVkIHRvIHNlZSB3aGF0IEFubmEga2luZGEgdGhpbmtzb2YgdGhpcyBzaXR1YXRpb24sIGJlY2F1c2Ugc2hlJ3MgbXkgZnJpZW5kLiBMaWtlLCBpdCdzIGdpcmwgY29kZS4gQW5kIEknbSBraW5kIG9mIGp1c3R0aGlua2luZyB0byBteXNlbGYsIFwib2gsIG15IEdvZCwgdGhpcyBpcyBnb25uYXJ1aW4gbXkgZnJpZW5kc2hpcCB3aXRoIEFubmEuXCIgLSBJIGRpZCBub3Qgd2FudCB0aGlzIHRvIGhhcHBlbi4gSSB3YW50ZWQgdG8gdGFsayB3aXRoIEplbm4gYmVmb3JlIEFubmEgZmlsbHMgaGVyIGhlYWQgd2l0aCBvdGhlciBbYmxlZXBdLiBJIGp1c3QgZG9uJ3QgdHJ1c3QgaGVyLCBzby4uLiBBaCwgaGVyZSB3ZSBnby4gXHUyNjZhIFtzZW5zdWFsIGNsdWIgbXVzaWNdIC0gSSBmaW5kIGEgZ3V5LCBhbmQgSSdtIGRhbmNpbmcgd2l0aCBoaW0uIEFuZCBJJ20gaGF2aW5nIGEgZ29vZCB0aW1lLiAtIEkgZG9uJ3Qgd2FubmEgW2JsZWVwXXRhbGsgdG8geW91LiBKdXN0IGRyb3AgdGhlIFtibGVlcF0sIGJyby4tIFRoZW4gZG9uJ3QgdGFsayB0byBtZSB0aGVuLiAtIENvb2wsIHRoZW4gc3RvcGJyaW5naW5nIGl0IHVwLiAtIEknbSBub3QgbnV0dGluZyB0aGVzZW90aGVyIFtibGVlcF0sICdjYXVzZSBJJ21hIGNvbWUgcmlnaHQgYmFjayBhdCB5b3VyIGFzcywnY2F1c2UgeW91IGtub3cgdGhlIHRydXRoLiAtIEJybywgd2hhdD8tIEJybyEgLSBEdWRlLCBsZWF2ZSBtZXRoZSBbYmxlZXBdIGFsb25lLiBbc3ludGggbXVzaWNdIC0gV293LCBBbm5hJ3MgZGVmaW5pdGVseSB0YWtpbmcgaXQgYSBsb3QgYmV0dGVyIHRoYW4gSSB0aG91Z2h0LiBbc2lnaHNdSXQncyBzdWNoIGEgcmVsaWVmLiBbbGF1Z2hzXSAtIFBldGVyLCBoZSBwcm9iYWJseSBkb2VzIGdlbnVpbmVseSBsaWtlIGhlci4gTGlrZSwgSSBob3BlIHNvLCBiZWNhdXNlSSBkb24ndCB3YW50IGhpbSB0byBodXJ0IGhlci4gLSBZb3UncmUgbm90IGplYWxvdXMgYXQgYWxsPyAtIE5vLCB0aGVyZSdzIG5vdCBhbiBvdW5jZSBvZiBqZWFsb3VzeSB3aGF0c29ldmVyLiBbc2NvZmZzXUhhdmUgaGltLiBbbGF1Z2hzXSAtIEdvZCwgSSByZWFsbHkgd2lzaHlvdSB0YWxrZWQgdG8gbWUgZmlyc3QuIC0gSSBrbm93LCB3ZWxsLS1zaGUgY2FtZSBhdCBtZS4tIEkgcmVhbGx5IGRpZC4gSSBqdXN0IGRvbid0IHdhbnQgeW91IHRvIGZlZWxhd2t3YXJkICdjYXVzZSBvZiBBbm5hLiAtIEkgZGVmaW5pdGVseSBmZWVsIGJldHRlcmJlY2F1c2UgSSB0YWxrZWQgdG8gaGVyLCBidXQgaXQganVzdCwgbGlrZS0tSSBkb24ndCBrbm93LCBJIGRvbid0IGRvIGdvb2R3aXRoIGNvbmZyb250YXRpb24uIEkgZG9uJ3QgZG8tLWRvIGdvb2Qgd2l0aHRlbnNpb24sIGxpa2UsIEknbSBmcmVha2luZyBvdXQuIC0gSSBsaXRlcmFsbHkgY2FuIGdpdmV0d28gW2JsZWVwXS4gLSBZZWFoLCBuZWl0aGVyIGNhbiBJLi0gSGUncyBzdWNoIGEgbGl0dGxlIGJpdGNoLiBJIGZlZWwgYmFkIGZvciBKZW5uLCB0aGF0IHNoZSdzYWN0dWFsbHkgYXR0cmFjdGVkIHRvIFBldGVyLiBCdXQgSSBtZWFuLCBpZiBzaGUgbGlrZXMgaGltLCBzaGUgbGlrZXMgaGltLiBZb3Uga25vdywgd2hhdCBhbSBJIGdvbm5hIGRvPyBTaGUgc2F3IGhvdyBQZXRlciByZWFjdGVkdG93YXJkcyBBbm5hLi4uIEhhdmUgZnVuLiAtIFttb2Fuc10gLSBJJ20ga2luZGEganVzdCwgbGlrZS0tbXkgbWluZCdzIHNwaW5uaW5nIHJpZ2h0IG5vdywgaG9uZXN0bHkuLSBJJ20gc29ycnkuIC0gTm8sIGl0J3MtLUktLUktLUkgbWVhbixJIHdpbGwgYmUgaG9uZXN0LCBJIHdhcyBhdm9pZGluZyB5b3UgYWxsIG1vcm5pbmcsYmVjYXVzZSwgbGlrZSwgSSBqdXN0LS0ganVzdCBkaWRuJ3Qga25vdywgbGlrZSxpZiB5b3Ugd2VyZSBnb25uYSBhcHByb2FjaCBtZS4gU28sIGxpa2UtLS0gWWVhaC4gLSBJJ20gbm90IHRoZSB0eXBlIG9mIHBlcnNvbi0tLSBJIGtub3cgd2hhdCB5b3UncmUgZ29ubmEgc2F5LiBMaXN0ZW4sIEkgZGlkbid0IHVzZSB5b3V0byBnZXQgYmFjayBhdCBBbm5hLiBMaWtlLCBJJ20gYSBnZW51aW5lIHBlcnNvbixhbmQgSSB3ZWFyIG15IGhlYXJ0IG9uIG15IHNsZWV2ZS5XZSdyZSB0aGUgc2FtZSBleGFjdCBwZW9wbGUuIEknbSBub3QgdGhlIHR5cGUgb2YgcGVyc29udGhhdCB3aWxsLi4uIHRyeSB0byBnZXQgYmFjayBhdCBwZW9wbGUsYW5kIHBsYXkgYnVsbFtibGVlcF0gZ2FtZXMuIC0gTm8sIEkga25vdywgYnV0LS0tIEplbm4sIEknbSBub3QgbGlrZSB0aGF0LiAtIEkga25vdywgYnV0IHlvdSBoYXZlIHRvIGxvb2thdCBpdCBmcm9tIG15IHBlcnNwZWN0aXZlLiBIb3cgZG8geW91IHRoaW5rIEkgZmVlbD9XaGVyZSBpdCdzIGp1c3QgbGlrZSwgb2gsIGlzIGl0IGdvbm5hIHdvcmsgb3V0d2l0aCBBbm5hLCBoZXIgc2lzdGVyJ3MgaGVyZSwgc28gd2hhdCBpZiBoZXIgc2lzdGVyd2Fzbid0IGhlcmU/IExpa2UsIHlvdSB3b3VsZCd2ZSBuZXZlci0tSSB3b3VsZG4ndCBldmVuIGJlIGEgdGhvdWdodC4gLSBXaGVuIEkgZmlyc3QgbWV0IHlvdSx3aGF0J2QgeW91IHRlbGwgbWU/IC0gVGhhdCBJIGhhZCBzb21lb25lIGJhY2sgaG9tZS4tIE9rYXkuIEhvbmVzdGx5LCBpZiB5b3UtLWlmLS1pZiB5b3Ugc2FpZCB5b3Ugd2VyZSBzaW5nbGUgb2ZmIHRoZSBiYXQsZGlmZmVyZW50IHN0b3J5LiBJIG1ldCB5b3UgZmlyc3QuMTAwJSBkaWZmZXJlbnQgc3RvcnkuIERvIHlvdSBub3Qgd2FudCBtZSB0bywgbGlrZSxwdXJzdWUgeW91LCBvciBub3Q/IExpa2UsIEkgZG9uJ3QtLUkgZG9uJ3QgZ2V0IGl0Li0gSS0tSS0tSSBkb24ndCBrbm93LiBMaWtlLCBJIGRvLCBidXQgSSBkb24ndC4gLSBXZSdsbCBqdXN0LCB1aC0tSSBndWVzcyB3ZSdsbGp1c3Qgc2VlIHdoYXQgaGFwcGVucywgbGlrZS0tIC0gWWVhaC4gW21lbGxvdyByb2NrIG11c2ljXSBcdTI2NmEgLSBEaWQgeW91IGdvIHRvIDctRWxldmVuLCBkdWRlPy0gWWVhaC4gLSBHZXQgc29tZSBGVU5ZVU5TPy0gWXVwLiAtIFRoaXMgbW90aGVyW2JsZWVwXSBpc2RlZmluaXRlbHkgZWF0aW5nIEZVTllVTlMgcmlnaHQgbm93Li0gSSdtIGdvbm5hIHRyeSBvbmUuIC0gT2gsIG15IEdvZCx0aGV5J3JlIGluIHRoZSBiYWcsIGxpa2UtLSAtIE9oLCBteSBHb2QuLSBZbywgSSBoYXZlbid0IGhhZCB0aG9zZSBpbiBhIGxvbmcgdGltZS5UaGF0J3Mgd2h5IEkgd2FzIHNheWluZywgXCJZZWFoLCBJJ20gZ29ubmEgZ2V0IHRoZXNlLlwiLSBPaCwgSSBoYXZlIHRvIGJ1cnAuIFtiZWxjaGVzXS0gV2hhdCBhcmUgd2UgZG9pbmc/IC0gSHVoPy0gV2hhdCBhcmUgd2UgZG9pbmcgdG9uaWdodD8gLSBJJ20gZG93biB0byBjaGlsbCxidXQgSSdtIGRvd24gdG8gZG8gc29tZXRoaW5nLiAtIElmIGV2ZXJ5b25lJ3MgZ29ubmEgZ28sdGhlbiBJJ2xsIGdvLCBidXQsIGxpa2UsIGlmLS0gLSBDYW4gd2UganVzdC0tY2FuIHdlIGp1c3Qgc2F5LCBsaWtlLCB0aGUgT0dzIGFyZSBnb2luZz8gLSBZZWFoLCB3aGF0IHRoZSBbYmxlZXBdLi0gTW0taG1tLCB5ZWFoLCB5ZWFoLCBkbyB0aGF0LiAtIExldCdzIGp1c3QgZG8gdGhhdC4tIEZvciByZWFsLiBKdXN0IGxpa2UtLWp1c3QgYnJpbmcgaXQgdXBvbiB0aGUgbG93LiAtIFNvIGl0IGxvb2tzIGxpa2UgdGhlIG9yaWdpbmFsIHNldmVuLCB0aGUgT0dzLCBhcmUgZ29pbmcgb3V0IHRvbmlnaHQuIEFsbCByaWdodCwgbm93IEknbSBmZWVsaW5nIGdvb2Qsbm93IEknbSBmZWVsaW5nIGdvb2QuIExldCdzIGRvIHRoaXMuIFtjbHViIG11c2ljXSAtIEJhdCBwaG9uZS4gLSBIZXksIG1hbiwgeW91IGd1eXMgYXJlIGZyZWUgdG8gZ28uLSBXZSBhcmUgZ29vZCB0byBnby4gQWxsIHJpZ2h0LCB0aGFuayB5b3Ugc28gbXVjaC4tIFRoYW5rIHlvdS4gQWxsIHJpZ2h0LCBidWRkeS4gQWxsIHJpZ2h0LCB3ZSdyZSBnb29kIHRvIGdvLiAtIFJvbGwgb3V0LiBcdTI2NmEgLSBJIGNhcmUgYWJvdXQgVGhlbywgYnV0IEknbSBub3QgcmVhZHkgdG8gdHJ1c3QgaGltIGFzLCBsaWtlLCBhIGJveWZyaWVuZC4gU28gSSBmaW5kIGEgZ3V5LCBJJ20gZGFuY2luZyB3aXRoIGhpbSwgYW5kIEknbSBoYXZpbmcgYSBnb29kIHRpbWUuIFx1MjY2YSAtIFNvIFR5YXJhJ3MgdGFsa2luZyB0byB0aGlzcHJvZmVzc2lvbmFsIHNvY2NlciBwbGF5ZXIuIEl0IGRvZXMgYm90aGVyIG1lLiBJJ2QgYmUgbHlpbmcgaWYgSSBzYWlkIEkgZGlkbid0LiBZb3Uga25vdyxJIHRob3VnaHQgd2UgaGFkIHNvbWV0aGluZy4gLSBNeSBndXkgdGhhdCBJIHdhcyBkYW5jaW5nIG9uLCBoZSB3YXMgYSBwcm9mZXNzaW9uYWxzb2NjZXIgcGxheWVyLiAtIE5vIHdheS4tIEhpbT8gLSBJIHdhbm5hIHNlZXdoYXQgaGUncyBbYmxlZXBdIHdvcmtpbmcgd2l0aC4gLSBUcnVlLi0gT2gsIG15IEdvZC4gLSBXaGF0IGlmIGl0J3MsIGxpa2UsIHRoaXMgYmlnPy0gW2xhdWdoc10gLSBTaGUncyBmcmllbmQtem9uaW5nIG1lLiBTaGUncyBmcmllbmQtem9uaW5nIG1lLiAtIFNoZSdzIGp1c3QgZnJpZW5kLXpvbmluZyB5b3U/IC0gTWUgYW5kIFQsd2UgZ29ubmEgZ28gdGhyb3VnaCBvdXIgW2JsZWVwXS4gLSBZZWFoLi0gV2UgZ29ubmEgaGF0ZSBlYWNoIG90aGVyIG9uZSBkYXksIGxhdGVyIG9uIHRocm91Z2h0aGUgbmlnaHQsIHdlIGdvbm5hIGJlIGNvb2wuIFRoYXQgaXMgd2hhdCBpdCBpcy4tICdDYXVzZSB5b3UncmUgYSBnb29kIHBlcnNvbi4gRG8geW91IHNlZSBob3cgc2hlJ3MgZmVlbGluZ29uIG1lIHJpZ2h0IG5vdywgYWxsIHNleHVhbD8gLSBIZXksIFQsIGFzIG11Y2gtLUhleSwgcmVhbCBbYmxlZXBdLCBULCBJIGRvbid0IGdpdmUgYSBbYmxlZXBdaWYgeW91IGFuZCBJIGRvbid0IGV2ZXIgaGF2ZW5vIHR5cGUgb2YuLi4gYW55Li4uIHJvbWFuY2Usd2hhdGV2ZXIgdGhlIGNhc2UgbWF5IGJlLiBCdXQgZ3Vlc3Mgd2hhdD8gSSB3b3VsZCBkYXRldGhlIFtibGVlcF0gb3V0IG9mIHlvdS4gSSB3b3VsZCBwdXQgYSBiYWJ5aW4geW91ciBhc3MuIEkgZmVlbCBsaWtlSSd2ZSBiZWVuIHZhbHVpbmcgaGVyLCBidXQgdGhhdCdzIG9ubHkgZnJvbW15IHBlcnNwZWN0aXZlLiBJIGp1c3Qgd2FudCBoZXIgdG8gdW5kZXJzdGFuZCwgSSdtIGp1c3QgZG9pbmcgdGhpbmdzIGJhc2VkIG9mZiBvZiBteSBvd24gaGVhcnQsIGFuZCBteSBvd24gZmVlbGluZ3MuIEl0J3MganVzdCB0aGF0IHNpbXBsZS4gVCwgSSBoYXZlIG5vdGhpbmcgdG8gc2F5Li0gV2hhdCBkbyB5b3UgaGF2ZSB0byBzYXk/IC0gTmFoLCB5b3UgcmVtZW1iZXIgd2hhdHlvdSBzYWlkIHRvIG1lIGxhc3QgbW9ybmluZz8gLSBXaGF0P0xldCBtZSBzZWUuIC0gTm9wZSwgbm9wZS4tIExldCBtZSBzZWUuIC0gTW0tbW0sIG5vcGUuWW91IHNlZSB3aGF0IEknbSBzYXlpbmc/IExvb2sgYXQgeW91LCBsb29rIGF0IHlvdS4gWW91IHNlZSB3aGF0IEknbSBzYXlpbmc/LSBMZXQgbWUgc2VlLiBULCB3aGF0IGRpZCB5b3UganVzdCBzYXkgdG8gbWV0aGUgb3RoZXIgZGF5PyBXaGF0J2QgeW91IGp1c3Qgc2F5LlN0b3AuIFtmYWtlIGNyeWluZ11ULCBzdG9wLiBTdG9wLiBbc2Vuc3VhbCBtdXNpY10gXHUyNjZhIFtyaW5ndG9uZSBjaGltZXNdIC0gSWYgdGhpcyBndXkgZG9lc24ndGJsb29keSBzdG9wIGNhbGxpbmcgbWUtLSAtIExldCBtZSBwaWNrIHVwLGxldCBtZSBwaWNrIHVwLi4uW211bWJsaW5nXSBbY2VsbCBwaG9uZSBjaGltZXNdIC0gV2hhdCBhcmUgeW91IGdvbm5hIHNheT8tIEhlbGxvLiAtIEhlbGxvLCB3aGF0J3MgdXA/LSBZbywgd2hhdCB1cD8gLSBUeWFyYSB0b2xkIHVzIHRvIGNvbWUgdG8gdGhhdCBhZGRyZXNzLCBzby4uLiAtIERpZCBzaGUgcmVhbGx5PyBXaGF0IHRoZSBbYmxlZXBdLiBJIHRvbGQgaGVyLCBcIkkgd291bGQgbW9zdGRlZmluaXRlbHkgZGF0ZSB5b3UsXCIgbWF5YmUgZml2ZSBtaW51dGVzIGFnby4gLSBBbGwgcmlnaHQsIGJ5ZS4gLSBNYW4sIHRoaXMgaXMgW2JsZWVwXSB1cC5bbGF1Z2hzXSBMaWtlLCBhcmUgeW91IHNlcmlvdXM/IC0gU3RvcCBpdC4tIEdldCB1cCwgZ2V0IHVwLiAtIEh1bi4tIExldCdzIGdvLiAtIFdhaXQsIHdlJ3JlIGdvbm5hIHRhbGthYm91dCBpdC4gLSBZb3UgZ290dGEgY2FsbHlvdXIgZHVkZSBiYWNrLCB0aG91Z2guIEhlIHdhcyBzdXBwb3NlZCB0byBjb21lIGhlcmUuIE1hbiwgeW91IGFyZVtibGVlcF0gZGlmZmljdWx0LCBmb3IgcmVhbC4gSSBnZXQgZGVuaWVkIGV2ZXJ5IHNpbmdsZSBkYXkuIFlvdSBrbm93IGhhcmQgdGhhdCBjYW4gaGl0PyAtIEZpbmUsIEknbGwgZ28uIEkgY2FuIHBsYXkgeW91ciBsaXR0bGUgZ2FtZS4gSm9yZGFuISBKb3JkYW4sdGhpcyBpcyBub3Qgd29ya2luZy4gLSBUaGUgb25seSB0aGluZyBJIGtub3csbGlrZSwgZnJvbSBteSBwZXJzb25hbCwgbGlrZSwgb3BpbmlvbiwgaXMganVzdCB0aGF0LGxpa2UsIEkgZmVlbCBsaWtlLCB5b3Uga25vdywgaGFsZiB0aGUgdGltZSB5b3UsIGxpa2UsIHdhbm5hYWN0IGxpa2UgeW91IGRvbid0IGNhcmUsIGFuZCBoYWxmIHRoZSB0aW1leW91IGdvbm5hIGFjdCBsaWtlIHlvdSBkby4gWW91IGd1eXMga2VlcCBvbiB0ZWV0ZXJpbmdiYWNrIGFuZCBmb3J0aC4gLSBUaGF0J3Mgd2hhdCBJJ20gc2F5aW5nLkkga2VlcCB0cnlpbmcgdG8gZmlndXJlIHRoaXMgW2JsZWVwXSBvdXQuSSdtIGxpa2UsIFwiVGhlbywgbGV0J3MganVzdCBiZSBcImJyb3RoZXJzIGFuZCBzaXN0ZXJzIHNpbmNleW91IHdhbm5hIGJlIHdpc2gtd2FzaHksICdjYXVzZSBJIGRvbid0IFtibGVlcF0gdW5kZXJzdGFuZC5cIkFuZCB0aGVuIHRoZSBuZXh0IGRheSwgaGUnbGwgZmxpcnQgd2l0aCBtZS4gTGlrZSx5b3UncmUgY29uZnVzaW5nIGFzIFtibGVlcF0uIEFuZCBJJ20gW2JsZWVwXSBvdmVyIGl0LiBBbmQgZXZlcnkgbmlnaHQgdGhhdCB3ZSBnbyBvdXQseW91IGctLXlvdSBndXlzIGFyZSBnb25uYSBnZXQgdGhlIFR5YSB0aGF0IHlvdSBnb3QgdG9uaWdodC5JJ20gZ29ubmEgZ28gb3V0LCBJJ20gZ29ubmEgaGF2ZSBmdW4sIEknbSBnb25uYSBkb3doYXQgdGhlIFtibGVlcF0gSSB3YW5uYSBkbywgYmVjYXVzZSBJJ20gdGlyZWRvZiBob2xkaW5nIG15c2VsZiBiYWNrIGZvciBhIFtibGVlcF0gdGhhdCBkb2Vzbm90IGdpdmUgYSBbYmxlZXBdLCBwZXJpb2QuIFttYW4gc2luZ2luZyBpbmRpc3RpbmN0bHldIFtzb21iZXIgbXVzaWNdIFx1MjY2YSBbZ3Jvb3Z5IHN5bnRoIG11c2ljXSAtIFtzaWdoc10gSSdtIGxpa2UgZHJlYWRpbmcgdGhpc3JpZ2h0IG5vdy4gLSBXaHk/IEl0IGh1cnRzPy0gSSdtIGdldHRpbmcgd2F4ZWQuIC0gT2guSSd2ZSBuZXZlciBoYWQgYSB3YXggYW55dGhpbmcuIC0gSSBoYXRlIGdldHRpbmdteSBleWVicm93cyBkb25lLiAtIFdoZW4gd2UgZGF0ZWQsIEkgYWN0dWFsbHkgYm91Z2h0IGEgd2F4IG1hY2hpbmUgdG8gd2F4IGhpcyBleWVicm93cyBvbmNlIGEgd2Vlay4gSGVsbG8uLSBIZWxsby4gQ29tZSB3aXRoIG1lLEkgZG8gZm9yIHlvdS4gLSBBbGwgcmlnaHQuLSBbbGF1Z2hzXSAtIFlvdSBndXlzIGFyZSBhYm91dCB0byBoZWFyc29tZSBmdW5ueSBhc3Mgbm9pc2VzLiBbcmlwcGluZyBub2lzZXNdIE93Li0gT2gsIG15IEdvZCwgSGUgaXMgc3VjaCBhIGRpdmEuIC0gTm8gcGFpbiwgbm8gZ2Fpbi4tIEkga25vdy4gTm8gcGFpbiwgbm8gZ2Fpbi4gLSBMb29rIGF0IHRoaXMuLSBUaGUgc3RydWdnbGUgb2YgYmVpbmcgYSBnaXJsLiAtIEVlc2guIFtyaXBzXS0gVG9ydHVyZS4gLSBbZ2FzcHNdTmFoLCBJJ20gb25seSBwbGF5aW5nLiAtIERvbid0IHNjYXJlIG1lLCBtYW4uLSBOYWgsIHRoZXkgbG9vayBncmVhdC4gSSBnb3R0YSBkbyB3aGF0IEkgZ290dGEgZG8uSSBnb3R0YSBzdGF5IGZyZXNoLiBNYXogUm9iYmllIG5hdGlvbi5IYS4gLSBCeWUsIHRoYW5rIHlvdS4tIFRoYW5rIHlvdSwgYXBwcmVjaWF0ZSBpdC4gLSBUaGFua3MuLSBCeWUtYnllLCB0aGFuayB5b3UuIC0gTXkgaGVhZCdzIHNwaW5uaW5nLiBJJ20ganVzdCBub3QgZmVlbGluZyBteXNlbGZ0b2RheS4gLSBJIHdvdWxkbid0IGJlIGZlZWxpbmcgbXlzZWxmLiBJIHdvdWxkbid0IGtub3cgaG93dG8gaGFuZGxlIHRoaXMsIGJ1dCwgdWguLi4gRG9lcyBQZXRlIHdhbm5hIHN0aWxsIHB1cnN1ZSBpdD8gLSBIZSBzYWlkIHRoYXQtLWhlIHNhaWQgdGhhdGlmLS1pZiBoZS0taWYgSSB3YW50IGhpbSB0bywgdGhlbiB5ZXMuQnV0IGl0J3MganVzdCBsaWtlIHlvdS0tIEkganVzdCwgbGlrZSwgaGF2ZSBpbnNlY3VyaXRpZXMsc28gSSBkb24ndCBrbm93LiAtIFNlZW1zIGxpa2UgYW4gaG9uZXN0IGd1eS4tIEkga25vdywgYnV0IGl0J3Mgb25seSBiZWVuIGEgd2Vlay4tIEJ1dCBJIGhhdmUgcHJldHR5IGJhZCBqdWRnZSBvZiBjaGFyYWN0ZXIuLSBZZWFoLCBtZSB0b28sIG1lIHRvby4gLSBJIGRvbid0IGtub3cgaG93IEkgY2FyZS4gWW91IGtub3csIEktLUkgYXNrIG15c2VsZixcIldoeSBhbSBJIHB1dHRpbmcgbXlzZWxmIGluIHRoZSBtaWRkbGUgb2YgaGVyIHNpdHVhdGlvbj9cIiBEbyBJIGZlZWwgZ3VpbHR5IGZvciBtYXliZSBzb21lIG9mIHRoZSB0aGluZ3MgSSBkaWQgd2hlbiB3ZSB3ZXJlIGluYSByZWxhdGlvbnNoaXA/IEFtIEkgdHJ5aW5nIHRvIGJlYSBiZXR0ZXIgcGVyc29uPyBJIHRoaW5rIHRoYXQgaGFzIGEgbG90dG8gZG8gd2l0aCBpdC4gXHUyNjZhIFR5YXJhIGFuZCBJIG5vdCB0YWxraW5nIHJpZ2h0IG5vdywgYWZmZWN0cyBtZSBiZWNhdXNlIEkgbG92ZSBoZXIgYXMgYSB3b21hbixhcyBhIHBlcnNvbiwgYXMgYSBzb3VsLiAtIEdvZCBkYW1uLCBUaGVvLi0gSSdtIGdvaW5nIHRocm91Z2ggaXQsIGJyby4gLSBZZWFoLi0gV2Uga2VlcCBkb2luZyBhbGwgdGhpcyBzdHVwaWQgYXNzIFtibGVlcF0uQWxsIHRoaXMgYXJndWluZy4gLSBJdCdzIGVpdGhlciB5b3UgZ3V5cyBhcmVbYmxlZXBdIHdpdGggZWFjaCBvdGhlciwgb3IgeW91IGd1eXMgYWluJ3RbYmxlZXBdIHdpdGggZWFjaCBvdGhlci4gV2hhdGV2ZXIgdGhlIGhlbGwgaXQgaXMsaXQncyBsaWtlLCBqdXN0IG1ha2UgdXAgeW91ciBtaW5kcy4tIEknbSBqdXN0IHRpcmVkIG9mIGl0LiBJdCdzIGdldHRpbmcgYW5ub3lpbmcuIFt1cGJlYXQgc3ludGggbXVzaWNdIFx1MjY2YSAtIE1pa2UgZ2V0dGluZyBkcmVzc2VkLkF5ISBib3RoOiBNaWtlIGdldHRpbmcgZHJlc3NlZC5BeSEgLSBUb3dlbC0tW3NxdWVhbHNdIFtsYXVnaHRlcl0gT2gsIEdvZCwgdGhhdCB3YXMgZ3JlYXQuLSBUaGF0IHdhcy4gLSBEb24ndCB5b3UgbGlrZSBvdXIgc29uZz8gLSBJIGRvbid0IGtub3cgd2hhdCBoYXBwZW5lZGJldHdlZW4sIGxpa2UsIG1lIGFuZCBKZW5uLiBMaWtlLCB3ZSBqdXN0LCBsaWtlLG91dCBvZiBub3doZXJlLCBsaWtlLCBjbGlja2VkLiBMaWtlLCBhbmQgSSB3YXNuJ3RleHBlY3RpbmcgdGhhdCwgd2hpY2ggaXMgY29vbC4gTGlrZSwgeW91IGtub3cgaG93IGl0IGlzLi0gSGV5LCBzbmVha3kuIC0gSSB3YXMganVzdCB0ZWxsaW5nIHRoZW1hYm91dCBob3cgSSBmZWx0IGFib3V0IHlvdS4gLSBTbyB5b3UgZ2VudWluZWx5IGxpa2UgSmVubixyaWdodD8gWW91J3JlIG5vdCBqdXN0IHdpdGggSmVubixiZWNhdXNlIGl0IGRpZG4ndCB3b3JrIG91dCB3aXRoIEFubmE/LSBEYW1uLCBicm8uIC0gTm8sIG5haCwgYnV0IEktLS0gSSdtIGp1c3Qgc2F5aW5nLiAtIEkgdG90YWxseSB1bmRlcnN0YW5kLCBsaWtlLHdoeSB0aGF0IHlvdSB3b3VsZCB0aGluayB0aGF0LiAtIFllYWgsIHllYWgsIHllYWguLSBBbnlib2R5IHdvdWxkIHRoaW5rIHRoYXQuIEl0J3MtLWl0J3MgbGVnaXQuLSBObywgd2UtLXdlLS13ZSB0YWxrZWQgYWJvdXQgdGhhdCBbYmxlZXBdLi0gJ0NhdXNlIHlvdSBndXlzIGFyZSBjdXRlIHRvZ2V0aGVyLi0gVGhhbmsgeW91LCB5ZWFoLCBidXQganVzdCBrbm93aXQgd2Fzbid0IGJlY2F1c2Ugb2YgaGVyLiAtIEF3LCB5b3UncmUgc28gY3V0ZSwgdGhvdWdoLi0gWWVhaCwgdGhhbmtzLiBJIG1lYW4sIGxpa2UsIEkgd2FzIGJlaW5nc2VyaW91cywgdGhvdWdoLCBsaWtlLCBJLCBsaWtlLS0gWW91IGtub3cuLi5bbGF1Z2hzXSAtIEl0J3MgYWxsIHJpZ2h0Li0gRG9uJ3QgYWN0IGFsbCBzaHkgbm93LiAtIEkgd2Fzbid0IGFjdGluZyBzaHkuLSBIZSdzIHNvIGN1dGUuIC0gQ29tZSBvbiwgbGV0IGl0IG91dC4tIEknbSBkZWFkIGFzcywgbGlrZS0tIC0gW2xpcHMgc3F1ZWFraW5nXS0gW2xhdWdodGVyXSAtIFJlYWxseT8tIE9vaCEgLSBPaCwgW2JsZWVwXSwgc29ycnktLUknbWdvaW5nLS1JJ20gZ29ubmEgbGVhdmUgbm93LiAtIFdlJ3JlIGdvbm5hIGdvLi0gUG9wLCBraXNzLCBhbmQgZHJvcC4gLSBbbGF1Z2h0ZXJdLSBNeSBtYW4uIFtkb29yIHNxdWVha3NdIC0gSHVycmFoLS13YWl0LEkgd2FubmEgZ28gb3V0c2lkZSBmb3IgYSBjaWdhcmV0dGUsIG9ubHkgbGlrZS0tLSBJIHdhbm5hIGNoYW5nZS4gLSBFdyB0b28uW2Zha2UgbW9hbmluZ10gLSBSaW5nIGdpcmwgc3RhdHVzLiBZb3UgZ2V0IHRvIFJpbmcgZ2lybCxnZXQgdG8gUmluZyBnaXJsLiBZb3UgcmVtZW1iZXIgaXQuLSBbbGF1Z2hzXSAtIFtncnVudGluZ10tIFt3aGlzcGVyaW5nXSAtIE1lIGFuZCBteSBzaXN0ZXIsIHdlIHVzZWR0byBkbyB0aGlzIHdoZW4gd2Ugd2VyZSB5b3VuZ2VyLiBBbm5hIHVzZWQgdG8gZG8gdGhpcyB0byBtZS4gU2hlJ2QgYWN0IGxpa2Ugc2hlIHdhcywgbGlrZSx0aGUgUmluZyBsYWR5LCBmcm9tIHRoZSBtb3ZpZSBcIlRoZSBSaW5nLlwiLSBbZGVtb25pYyBjcm9ha2luZ10gLSBUaGF0IFJpbmcgZ2lybCBnb25uYSBoYXZlIGZ1bi4gLSBSaW5nIGdpcmwuLSBbbGF1Z2hzXSBbZ2liYmVyc10gW2RyYW1hdGljIHN5bnRoIG11c2ljXSAtIFlvdSdyZSBzbyBtYXR1cmUuLi4gSXQncyBhIFtibGVlcF0gam9rZSwgeW8uQ2hpbGwgdGhlIFtibGVlcF0gb3V0LiBTZXJpb3VzbHksIGxpa2UsIGdyb3cgdXAuIFBldGVyIFBhbiB3b24ndCBbYmxlZXBdIGZseW92ZXIgaGVyZSB0b25pZ2h0LiBZbywgaGUgc3Vja3MseW91IGNhbid0IGFyZ3VlIHdpdGggaGltLiAtIE5vYm9keSBbYmxlZXBdIGxpa2VzdGhlbSBib3RoLiBOb2JvZHkgW2JsZWVwXSBsaWtlcyB0aGVtLkxpa2UsIGl0J3MgYnVsbFtibGVlcF0uIFdoeSB0YWxrIGFib3V0IHNvbWVib2R5J3MgZmFtaWx5d2hlbiB5b3UgZG9uJ3Qga25vdyBhbnl0aGluZyBhYm91dCBteSBtb3RoZXI/IC0gUGV0ZXIgUGFuJ3Mgb3V0IG9mIE5ldmVybGFuZC5HbyB0byBiZWQuIEhleSwgYmFieSBib3ksIEkgY2FuIHBpY2sgeW91IHVwYW5kIHdyZWNrIHlvdS4gUGV0ZXIseW91IGhhZCBldmVyeW9uZSBiZWxpZXZpbmcgdGhhdCBBbm5hIHdhcyBpbiBsb3ZlIHdpdGggeW91LG9yIHNvbWUgW2JsZWVwXS4gLSBJIGRvbid0IGdpdmUgYSBbYmxlZXBdYWJvdXQgeW91ciBzaXN0ZXIgb3IgeW91LiAtIFlvLCB5b3UgaGF2ZSBhbm90aGVyIGdpcmx0aGF0IHlvdSBjYXJlIGFib3V0IGluIHlvdXIgW2JsZWVwXSBhcm1zLCBicm8uSGF2ZSBzb21lLS0gLSBKdXN0IGRvbid0IHRlbGwtLS0gU29tZSByZXNwZWN0LCB5by4gLSBBbmQgeW91IGhhdmUgbm8gaWRlYSB3aGF0IHRoZVtibGVlcF0geW91J3JlIHRhbGtpbmcgYWJvdXQuIEknbSBnb2luZyB0byB0aGUgW2JsZWVwXSByb29tLkktLUktLUktLUknbSBkb25lLiAtIExvdmUgeW91LiBbc3dpbmdpbmcgcm9jayBtdXNpY10gLSBJIGRvbid0IGhhdmUgYW55c3dpbSBib3R0b21zIG9uLiBJJ20ganVzdCB3ZWFyaW5nIFtibGVlcF0gc2hvcnRzLiBJIGp1c3Qgd2FudCBteSBib29icyB0byBnZXQgdGFuLi0gW2xhdWdoc10gLSBZb3Uga25vdywgSSd2ZSBzZWVuIHlvdXIgdGl0c21vcmUgdGhhbiBJJ3ZlIHNlZW4gbXkgb3duLiAtIFNoZSdzIGxpa2UsIFwiU3VycHJpc2UsXCIgeWVhaC4tIEkgbmVlZCBteSBib29icyB0byBnZXQgdGFuLiBUaGV5J3JlIHBhbGUgYXMgaGVsbC4gLSBBbm5hLCB3aGVyZSdzLCBsaWtlLG15IGJpa2luaSBib3R0b21zIGFuZCBbYmxlZXBdPyAtIFVtLCB3aGF0IGRvIHlvdSBtZWFuPy0gQmVjYXVzZSB5b3UndmUgYmVlbiBbYmxlZXBdIGFyb3VuZCB3aXRoIGFsbCBteSBjbG90aGVzLiAtIEkgZGlkbid0IHRvdWNoeW91ciBiaWtpbmkgYm90dG9tcy4gW3VwYmVhdCBtdXNpY10gXHUyNjZhIC0gW3NjcmVhbXMgcGxheWZ1bGx5XSAtIEFoIS0gT2theS4gLSBJIGhhdmUsIGxpa2UsZGFkZHkgbG9uZy1hcm1zLiBbY2FtZXJhIHNodXR0ZXIgY2xpY2tzXSBcdTI2NmEgLSBTZXJpb3VzbHksIHRob3VnaCwgSSByZWFsbHlob3BlIHdlIGhhdmUgZnVuIHRoaXMgd2Vla2VuZC4gLSBJIHRoaW5rIHdlIHdpbGwuV2h5IHdvdWxkbid0IHdlPyAtIFBlb3BsZSB3aG8gd2FubmEgYnJpbmd0aGVpciBbYmxlZXBdIGRyYW1hLCBhbmQgYmUgbmVnYXRpdmUuLSBUYWxrIHRvIFBldGVyIGFib3V0LCBsaWtlLCBub3QgdHJ5aW5nIHRvIGJlLS1nbyBvdXQgb2YgaGlzIHdheSB0byBiZSBtZWFuLiAtIEkgZmVsdCBsaWtlIGhlIHdhc2EgbmVnYXRpdmUgcGVyc29uLiBJIGxlZ2l0IHdhcyBqb2tpbmcgYXJvdW5kd2hlbiBoZSBhc2tlZCB3aG8tLXdoZXJlIG15LS0gd2hvc2UgcHVyc2UgaXQgd2FzLGFuZCBJIHNhaWQgeW91ciBtb21tYSdzLiBJdCdzIGxpLS1pdCB3YXNuJ3QgZXZlbiBmdW5ueS5JdCB3YXMgdGhlIHN0dXBpZGVzdCBqb2tlIGV2ZXIuIExpa2UsIGhvdyBpcyB0aGF0IGV2ZW4gaHVydGZ1bD8gLSBJIGZlZWwgbGlrZSBJJ20gY2F1Z2h0aW4gdGhlIG1pZGRsZS4gLSBXZWxsLCBoZSdzIHB1dHRpbmcgeW91aW4gdGhlIG1pZGRsZS4gSSB0aGluayBoZSdzIHRyeWluZ3RvIHN0YXJ0IGRyYW1hIGJldHdlZW4gdXMuIC0gSSBmZWVsIGxpa2UgaXQnc25vdCBnb25uYSB3b3JrLiAtIEJ1dCBpc24ndCBpdCBraW5kIG9mYW5ub3lpbmcsIHRob3VnaC0teWVhaCwgdGhhdCdzIHdoYXQgSSdtIHNheWluZywgdGhvdWdoLllvdSdyZSBkb2luZyBhbiBhbWF6aW5nIGpvYi4gLSBBaC4tIE1tLiAtIFtjaHVja2xlc10tIFdoYXQgaXMgdGhhdD8gSXQncyBjcmVlcHkuIC0gTXkgZmluZ2Vycy5BcmUgeW91IHRpY2tsaXNoPyAtIFllcywgSSdtIHN1cGVyIHRpY2tsaXNoLiAtIEknbSBraW5kIG9mIGhpdHRpbmcgdGhhdCBtYXJrIHdoZXJlIEknbSwgbGlrZSxib3JkZXJsaW5lIGluc2FuZS4gTm93LCBsaWtlLCBJJ20gbGl0ZXJhbGx5bG9zaW5nIG15IGluc2FuaXR5LiBJIGZlZWwgbGlrZSBJIG5lZWQgdG8sIGxpa2UsZ2V0IG91dCBtb3JlIGFuZCBkbyBtb3JlLi4uIC0gWWVhaC4tIEJlY2F1c2UgSSd2ZSBiZWVuIHNvIGNvb3BlZCB1cCBpbiB0aGUgaG91c2UuLSBMaWtlLCB0aGF0J3MgaG93LS13aGVyZSBpdCBjb21lcyB0bywgbGlrZSwgb3ZlciB0aGUgd2hvbGVQZXRlciB0aGluZywgaXQncyBqdXN0LCBsaWtlLCBpcyBpdCBvbmx5IGEgd29ycnksJ2NhdXNlLCBsaWtlLCBoZSBzbGVwdCB3aXRoIG1lPyAtIE1tLWhtbSwgeWVhaC4tIFRoYXQga2luZGEgdGhpbmc/IFRoYXQncyB3aHkgSSdtIGp1c3QsIGxpa2UsdWdoLi4uIEl0J3Mgc28gaGFyZCB0byBjb3BlLGJ1dCBJIGFsc28ganVzdCwgbGlrZS0tIEkgbmV2ZXIgdGhpbmsgYW55b25lYWN0dWFsbHkgbGlrZXMgbWUsIHNvIHRoYXQncyBhbHNvIHRoZSBwcm9ibGVtLSBZZWFoLCBtZSB0b28uIE1vc3RseSBmcm9tLCBsaWtlLHBhc3QgcmVsYXRpb25zaGlwcy0tIC0gTW0taG1tLi0gQW5kIGluc2VjdXJpdGllcyB3aXRoIG15c2VsZi0tIC0gWXVwLiAtIFNvIHRoYXQgYWZmZWN0c3RoZSBmdXR1cmUgcmVsYXRpb25zaGlwcywgd2hpY2ggc3Vja3MsIGJ1dCBpdCdzIGxpa2VhdCB0aGUgc2FtZSB0aW1lLCB5b3UgY2FuJ3QgcmVhbGx5IGNvbnRyb2wgaXQgc29tZXRpbWVzLi0gTW0taG1tLiAtIEkgaGF2ZSB0aGV1Z2x5IGR1Y2tsaW5nIHN5bmRyb21lLiBTbywgbGlrZSwgd2hlbiBJIHdhcyBsaXR0bGUsSSB3YXMgdWdseSBhcyBbYmxlZXBdLiBMaWtlLCBJIGNhbiBhZG1pdHRoYXQgSSB3YXMgdWdseSBhcyBoZWxsLiBBbmQgSSBraW5kYSwgbGlrZSwgbW9ycGhlZGludG8gdGhpcyBkZWNlbnQtbG9va2luZyB3b21hbi4gU28gc29tZXRpbWVzIEkgaGF2ZSBteSBtb21lbnRzd2hlcmUgSSdtIGxpa2UsIFwiSSBrbm93IEknbSBub3QgaG90IFtibGVlcF0uXCIgJ0NhdXNlIEktLUkndmUgaGFkdGhlIHVnbHkgZHVja2xpbmcgc3ktc3luZHJvbWUuIC0gV2Ugc3Vjay4tIFdlIHN1Y2sgc28gYmFkLiAtIFtsYXVnaHNdLSBTbyBiYWQuIFtncm9vdnkgc3ludGggbXVzaWNdIC0gQWxsIHJpZ2h0LCBzbyBjaG9vc2Ugbm93LkFyZSB5b3UgdGVhbSBUaGVvIG9yIHRlYW0gVHlhPyAnQ2F1c2UgdGhhdCdzIHdoYXQncy0tLSBJJ20gbm90IGNob29zaW5nIFtibGVlcF0uIC0gTm93Li0gV2h5PyAtIEknbSB0aXJlZCBvZiB3YWtpbmcgdXBldmVyeSBtb3JuaW5nLCBhbmQgbm90IGtub3dpbmcgaWYgc2hlJ3MgW2JsZWVwXSB3aXRoIG1lb3Igbm90LiAtIFlvdSBrbm93IHNoZSBbYmxlZXBdIHdpdGggeW91Li0gTmFoLiBTaGUgY2FuIGJyaW5nIGJ1ZGR5IGJhY2suIFNoZSBjYW4gW2JsZWVwXSBoaW1yaWdodCBuZXh0IHRvIG1lLiBJJ21hIHdha2UgdXAsZ2l2ZSBoaW0gYSBoaWdoLWZpdmUsIGFuZCB0ZWxsIGhpbSxcIlBvdW5kIGhhcmRlci5cIiBJJ20gbm90LS0tIFRoYXQncyBub3QgZnVubnkuIC0gSXQgYWluJ3QgZnVubnksJ2NhdXNlIEknbSBzZXJpb3VzLiAtIFR5YSBoYXMgdG9sZCBtZSBhIGxvdCBvZiB0aW1lcyB0aGF0IHNoZSdzIGRvbmUgd2l0aCBUaGVvLiBUaGVvIGhhcyB0b2xkIG1lIGEgbG90IG9mIHRpbWVzIHRoYXQgaGUncyBvdmVyIGl0LiBJJ20ganVzdCB0cnlpbicgdG8gY29udGludWV0byBoZWxwIHRoZW0uIFlvdSBndXlzIG9idmlvdXNseSwgbGlrZS0teW91IGhhdmUgc29tZXRoaW5nLCB5b3UgZ3V5cyBsaWtlIGVhY2ggb3RoZXIuQW5kIEkganVzdCBkb24ndCB3YW50IHlvdSB0byBiZSBhd2t3YXJkLi0gQXMgR29kIGFzIG15IHdpdG5lc3MsIEknbSBub3QgZ29ubmEgYmUgYXdrd2FyZC4gSSdtIGJvdXQgdG8gYmUgdGhlIHNhbWUuLi4gVGhlby4gLSBZb3UgYWx3YXlzIGdldCBbYmxlZXBdZmFjZWQuIC0gSSBkb24ndCBnZXQgZHJ1bmsuIC0gVHJvdWJsZSwgdGhvdWdoLi0gQXksIGxldCdzIGdvLiAtIEpvcmRhbiwgaHVycnkgdGhlIFtibGVlcF0gdXAuIC0gVGhlbywgbGV0J3MgZ28uIFR5YSBhbmQgVGhlby0tIE15IGlkZWEgaXMgdG8gaGF2ZSB0aGVtc2l0IGluIHRoZSBjb25mZXNzaW9uYWwsIGFuZCBqdXN0IHNheXdoYXQgdGhleSBuZWVkIHRvIHNheSwgYnV0IG1heWJlIGF0IHRoaXMgdGltZSxuZWVkIGFuZCBoYXZlIGEgbWVkaWF0b3IuIEdldCB5b3VyIGFzcyBpbiB0aGVyZS4gLSBBbGwgcmlnaHQsYWxsIEknbSBnb25uYSBzYXkgaXMgSSBjYW4ndCBzcGVhayBvbiB0aGUgc2l0dWF0aW9uLkkgZG9uJ3Qga25vdyBpdC4gQWxsIEknbSBzYXlpbmcgaXNhIG1pbGxpb24gdGltZXMgSSdkIHNheSwgXCJHbyBmaXggaXQgd2l0aCBUeWEuXCJUeWEsIGdvIHRhbGsgdG8gVGhlby5cIiAtIE1tLWhtbS4tIFlvdSBndXlzIGp1c3QgbmVlZCB0byB0YWxrLiAtIFlvdSBib3RoIGNsZWFybHkgaGF2ZXNvbWUgdHlwZSBvZiBmZWVsaW5ncyBmb3IgZWFjaCBvdGhlcixzbyB5b3UgZ290dGEgcmVhbGl6ZSwgb2theSwgZG8gSSB3YW5uYSBwdXJzdWUgaXQ/WWVzIG9yIG5vPyBEbyBJIHdhbm5hIHB1cnN1ZSBpdD9NYXliZSBub3QgcmlnaHQgbm93PyBNYXliZSBsYXRlcj9UaGF0J3MgZmluZS4gLSBJJ20gdGlyZWQgb2YgcnVubmluZyB1cGJlaGluZCBhIHBlcnNvbiwgQUtBIHlvdS4gSSdtIHRpcmVkIHRoYXQgZXZlcnl0aGluZyBJIGRvLEkgZ290dGEgbWFrZSBzdXJlIHRoYXQgSSBkb24ndCBkbyBhIGNlcnRhaW4gYW1vdW50b2YgdGhpbmdzLCBqdXN0IGJlY2F1c2UgVHlhJ3MgZ29ubmEgZ2V0IG1hZC4gQnV0IFQgY2FuIGRvd2hhdCBzaGUgd2FudHMgdG8gZG8uIExpdGVyYWxseSBldmVyeXRoaW5nIEkgZG8scmVnYXJkbGVzcyBvZiB5J2FsbC0tIFknYWxsIG1pZ2h0IHNpdCBoZXJlIGFuZCBzYXksXCJUaGVvIGdvbm5hIHRyeSB0byBwbGF5IHlvdXIgYXNzLCBUaGVvIGdvbm5hIHRyeXRvIHBsYXkgeW91ciBhc3MuXCIgUmVnYXJkbGVzcywgSSBkb24ndCBnaXZlbm8gW2JsZWVwXS4gWSdhbGwgZ29ubmEgc2l0IGhlcmVhbmQgZG8geSdhbGwgZ2lybCB0YWxrLiBZJ2FsbCBnb25uYSBkbyBhbGx0aGUgc2FtZSBbYmxlZXBdLiBHdWVzcyB3aGF0P0knbWEgdGFrZSB0aGUgTC4gRGlkIHNoZSBkYW5jZSBvbiBvdGhlciBbYmxlZXBdP1llcy4gU2hlIGRhbmNlZCBvbiBtb3RoZXJbYmxlZXBdTWlrZSwgYnV0IGd1ZXNzIHdoYXQ/IEl0J3MgY29vbC4gU2hlJ3MgaGF2aW5nIGZ1bi5JJ21hIHRha2UgdGhhdCBMLCBhbmQgSSdtYSBsZWF2ZXRoYXQgW2JsZWVwXSBhbG9uZS4gQnV0IGd1ZXNzIHdoYXQ/R3Vlc3MgaWYgSSBkYW5jZSB3aXRoIGEgW2JsZWVwXSwgd2hhdCdzIGdvbm5hIFtibGVlcF0gaGFwcGVuP0knbWEgZ2V0IGNoZXdlZCBvdXQuIEJ1dCBzYXkgbWUgYW5kIHlvdSBiZWVuIHRhbGtpbmcuLSBULS1UISAtIE15IHBvaW50IGV4YWN0bHkuU2VlIHdoYXQgdGhlIFtibGVlcF0gSSdtIHNheWluZz8gW2Ryb25pbmcgc3ludGggbXVzaWNdIC0gVGVsbCBoZXIgdG8gbGVhdmUgbWUgYWxvbmUuSSB0b2xkIHlhIEkgc2hvdWxkbid0LS0gLSBZb3UgdGVsbCBoZXIuLSBUZWxsIGhlciB0byBsZWF2ZSBtZSBhbG9uZS4gSSdtIHRpcmVkIG9mIHRoaXNkdW1iYXNzIFtibGVlcF0uIEknbSB0aXJlZCBvZiB0aGlzc3R1cGlkIGFzcyBbYmxlZXBdIHdpdGggdGhlIHNhbWVtb3RoZXJbYmxlZXBdLCBicm8uIFt0ZW5zZSBzeW50aCBtdXNpY10gLSBDYWxtIGRvd24sIGJybyxkb24ndCBiZSBzbyBtYWQuIFdoYXQncyBnb2luZyBvbj8tIFQncyBbYmxlZXBdIGFubm95aW5nLiAtIFNoZSdzIGRvaW5nIHRoaXMgW2JsZWVwXXRvIGdldCB5b3VyIGF0dGVudGlvbi4gWW91IGdpdmluZyBoZXIgc29tZXRoaW5ndGhhdCBzaGUgbmV2ZXIgaGFkLCBicm8uIFlvdSB0b2xkIGhlciBzaGUgZGlkbid0IGhhdmVoZXIgZmF0aGVyIGluIGhlciBsaWZlLCBicm8uIC0gTm8sIHNoZSB0b2xkIG1lc2hlIGRpZG4ndCBoYXZlIGhlciBmYXRoZXIuIC0gT2theSwgc2hlIHRvbGQgeW91IHRoYXQsYW5kIHlvdSBiZWNhbWUgaGVyLi4uIG1hbiBmaWd1cmUuSSBkb24ndCB3YW5uYSBzYXkgZmF0aGVyIGZpZ3VyZS4gWW91IGJlY2FtZSBoZXIgbWFuIGZpZ3VyZS4gWW91IGp1c3QgZ290dGEgdGVsbCBoZXJ0aGF0IHlvdSBqdXN0IHdhbm5hLS0gLSBIZXksIEtheiwgaGV5LCBLYXosIEthei4uLi0gS2VlcCBldmVyeXRoaW5nIGtvc2hlciwgYW5kIHlvdSBqdXN0IHdhbm5hIGJlaGVyIGZyaWVuZC4gTm90aGluZyBtb3JlLCBub3RoaW5nIGxlc3MsIGJyby5UaGF0J3MgaXQuIEJ1dCB0aGUgc2xlZXBpbmdpbiB0aGUgYmVkIFtibGVlcF0/IC0gQnJvLCBzYXkgd2hhdCB5b3UncmUgc2F5aW5nLi4uLSBUaGF0IGhhcyB0byBzdG9wLiBUaGF0IGhhcyB0byBzdG9wLCBicm8uIC0gSSdtIGxlYXZpbmd0aGlzIFtibGVlcF0gYWxvbmUuIC0gU28gb24gYmlnIGRhZCx5b3UgZG9uZSB3aXRoIGhlcj8gLSBDb3JyZWN0LCBJIGp1c3Qgc3RyYWlnaHQgdXAtLS0gU2F5IGl0LCBzYXkgaXQuIC0gT24gYmlnIGRhZCwgSSdtIGRvbmUuLSBPa2F5LCBJJ20gZG9uZS4gLSBJIG1lYW4sIEknbSBnb25uYSBlYXQsYnV0IEknbSBnb25uYSBlYXQgaW4gYSBsaXR0bGUgYml0Li0gV2hhdCBhcmUgeW91IGdvbm5hIGVhdD8gLSBUaG9zZSB3aW5ncy5bYm90aCBsYXVnaGluZ10gLSBMaWtlLCBkbyB5b3UgaGF2ZSBtb3JlIGZvb2Q/LSBZb3Ugb25seSB0b29rIHRocmVlLiAtIEkga25vdy5UaGVyZSdzIGZpdmUuIC0gSSBvbmx5IGhhZCB0d28uLSBZb3UgZ2F2ZSBvbmUgdG8gUm9iYmllLiBObywgaXQgZG9lc24ndCBtYWtlIHNlbnNlLkhvdyBtYW55IHdpbmdzIHlvdSBnZXQ/IFR3ZWx2ZT8tIFRoZXJlJ3MgZml2ZSBsZWZ0LiAtIFllYWgsIHNvIHRoYXQgbWVhbnNJIGhhZCB0aHJlZSwgeW91IGhhZCB0d28uIC0gT2theSwgc28gSSBnZXQgdGhyZWUuLSBNbSwgeW91IGdldCB0aHJlZSwgSSdsbCB0YWtlIHR3by4tIFlvdSBnZXQgdHdvLiBJJ20gdGFsa2luZyxhbmQgaGVyZSBoZSBjb21lcyByaWdodCBub3csIFtibGVlcF0gYnkgdGhlIGNvbXB1dGVyLiAtIENyZWVwaW5nIHRocm91Z2ggdGhlIHdpbmRvdz8tIENyZWVwaW5nIHRocm91Z2ggdGhlIHdpbmRvdy4gLSBJZiB5b3UncmUgbm90IHVwLHdoZW4gSSBnZXQgdXAgYmVmb3JlIHlvdSwgSSBqdXN0LCBsaWtlLCB3YWxrb3V0dGEgbXkgcm9vbSwgYW5kIEkgY2FuIGp1c3Qgc2VleW91ciBsaXR0bGUgW2JsZWVwXSBmZWV0LCBsaWtlLS0gLSBIb3cgZG8geW91IHNlZSBteSBmZWV0Py0gJ0NhdXNlIHlvdXIgZmVldCBoYW5nIG9mZiB0aGUgYmVkLCBkdWRlLi0gT2theSwgYnV0IHlvdXIgYmVkLS0geW91ciByb29tIGlzLCBsaWtlLCBhbGwgdGhlLS0tIFllYWgsIEkgdGFrZSBhIHdpZGUgdHVybi4gW2JvdGggbGF1Z2hpbmddLSBUYWtlIGEgd2lkZSB0dXJuIGludG8gbXkgZmVldC4gW2VycmF0aWMgc3ludGggbXVzaWNdIFdoYXQgZGlkIHNoZSBnZXQ/IFNoZSBnb3QgZm9vZC4tIFllYWgsIHdoYXQgZGlkIHlvdSBnZXQ/IEJyaW5nIHRoYXQgb3ZlciBoZXJlLi0gU2hlIGdvdCBmb29kLiAtIEJyaW5nIHRoYXQgYXNzIGhlcmUsZ2lybC4gLSBbbW9hbnMgcGxheWZ1bGx5XS0gSSBsaWtlIGl0LiAtIENhbiBJIGdldCBvbmUgZnJ5PyAtIE1tbS4gLSBbZ2FzcHNdLSBXZSBuZWVkIGtldGNodXAgb24gaXQsIGJyby4gLSBObyBrZXRjaHVwLGp1c3QgdGhyb3cgdXMgYSBmcnkuIE9vaCwgSSBjYXVnaHQgdGhhdCBbYmxlZXBdISAtIFRoYXQgd2FzIGEgZ3JlYXQgY2F0Y2guLSBPb2ghIE1tbS4gLSBJdCB3YXMgcmlnaHQgYmVoaW5kIGEgW2JsZWVwXS4tIFRoZXNlIGFyZSBbYmxlZXBdIGRlbGljaW91cy4gLSBXaGF0J3MgZ29pbmcgb24gdXBzdGFpcnM/IC0gSSBhbHdheXMganVzdCBmZWVsdGhlIHByZXNlbmNlIG9mIGhpbSwgYW5kIEkgZG9uJ3Qgd2FudCBpdC4uLiBhdCBhbGwuIC0gQXQgYWxsLiAtIE5vIEJyaXQuLSBEZWxldGUuIC0gRGVsZXRlLlZldG8hIC0gQmFja3NwYWNlLCBiYWNrc3BhY2UuLi4tIFJldHVybiEgLSBbbGF1Z2hzXVJldHVybi4gLSBJIHdhbm5hIHJldHVybiB0aGlzIGl0ZW0uRGVsZXRlISBTYXkgaXQgd2l0aCBtZS5EZWxldGUhIC0gRGVsZXRlIS0gRGVsZXRlISAtIERlbGV0ZSEtIFZldG8hIC0gW2xhdWdoc10gLSBNbW0sIG5vbSwgbm9tLi0gTm9tLCBub20tLSAtIFtibGVlcF0gdGhhdC4tIEkgd2FudCB0aG9zZSBmcmllcy4gLSBUb28gYmFkLiBbdXBiZWF0IG11c2ljXSBcdTI2NmEgLSBJJ20gYWxsIHN3ZWF0eSBhbmQgc21lbGx5Li0gW3Ntb29jaGVzXSAtIEknbSBqdXN0IHNheWluZy4tIFllYWg/IC0gTW0taG1tLi0gW2xhdWdoc10gLSBbc3F1ZWFsc10tIEkgbGlrZSBzd2VhdCwgSSB0b2xkIHlvdS4gLSBZZWFoLCBidXQgeW91IGxpa2VzbWVsbHkgcGVvcGxlPyAnQ2F1c2UgSSBkb24ndCBsaWtlc21lbGx5IHBlb3BsZS4gQWN0dWFsbHksIEkgcmVhbGx5IGRvbid0IHNtZWxsdGhhdCBiYWQsIG9rYXkuIC0gSmVubidzIGFuIGFtYXppbmcgZ2lybCBEbyB3YW5uYSwgbGlrZSwgZ2V0LCBsaWtlZGlubmVyIHRvbmlnaHQ/IC0gTGlrZSBnbyB0byBkaW5uZXI/LSBZZWFoLiBXaGVuIEkgbGlrZSBzb21lYm9keSxJIGxpa2UgdGhlbS4gLSBJIGNhbiBkbyB0aGF0LiAtIEkganVzdCB3YW5uYSB0YWtlIGhlciBvdXQgb24gYSBkYXRlLCBhbmQgSSBkb24ndFtibGVlcF0gYXJvdW5kIHdpdGggdGhhdC4gLSBNbW0uLi5EbyBJIGhhdmUgQ2hlZXRvcyBpbiBteSB0ZWV0aD8gLSBNbSwgbm8uIC0gRml4IHRoZSBiLS1saWtlLCBob29rIHRoZSBiYWNrcmVhbCBxdWljaywgJ2NhdXNlIGl0J3MgbGlrZSB5b3UgdXN1YWxseXRoaW5rIHRoYXQgdGhlIGJlbGwgaXMgbGlrZS0tIHB1dCB0aGUgYmVsbCBvbiB0aGUgYm90dG9tLiBUaGVyZSB3ZSBnby4gLSBJIHdhbm5hIGxvb2sgbmljZS4gSXQncyBvdXIgZmlyc3QgZGF0ZSxidXQgSSB3YW50IGhpbSB0byBiZSBsaWtlLCBcIkRhbW4sIGxpa2UsIHRoYXQncyBteSBnaXJsLlwiW2xhdWdoc10gSSdtIG9uIGEgZGF0ZSB3aXRoIGhlci4gLSBIZWgsIEkganVzdCB3YW5uYSBwcmVzcyxsaWtlIHJpZ2h0IGluIHRoZSBtaWRkbGUuIEluIHRoZSBtaWRkbGUsbGlrZSwgb2YgeW91ciBjaGVzdCwgbGlrZS0tIC0gV2h5Py0gSXQncyBzZXBhcmF0ZWQsIGxpa2UtLSAtIFlvdSdyZSBzbyB3ZWlyZCwgc3RvcC5bbGF1Z2hpbmddIC0gSXQncyBsaWtlIGEgc2VwYXJhdGlvbi4gW3JlbGF4aW5nIHBlcmN1c3NpdmUgbXVzaWNdIC0gVGhpcyBpcyBteSBbYmxlZXBdLkkgY2FuJ3Qgd2FpdCB0byB3YWxrIGluIGhlcmUgcmlnaHQgbm93LCBJJ20gc28gZXhjaXRlZC4gWWVhaCwganVzdCBmb3IgdHdvLCBwbGVhc2UuIFdlJ3JlIG9uIG91ciBmaXJzdCBkYXRlLi0gSS0tSXQncyBkYXRlIG5pZ2h0LiAtIENoZWVycy4tIFllYWghIEkgbG92ZSBjb2NvbnV0Li0gV2hvbyEgU28gZ29vZC4tIEl0J3MgZGVmaW5pdGVseSBjcmF6eSwgJ2NhdXNlIG1lZXRpbmcgeW91LEkgZGlkbid0IHRoaW5rIHlvdSB3ZXJlLCBsaWtlLCBhIGdvb2QgZ3V5IGFuZC0tLSBXaGF0J2QgeW91IHRoaW5rIEkgd2FzPyBTb21lIHNjdW1iYWc/LSBOby4gTGlrZSwgSSdtLCBsaWtlLS1JJ20gcmVhbGx5LHJlYWxseSwgcmVhbGx5IGdsYWQgdGhhdCB3ZSB3ZXJlIGFibGUgdG8gY29ubmVjdG9uIGEgZnJpZW5kIGxldmVsIGZpcnN0LiAtIEknbSBzbyBoYXBweSBJJ20gaGVyZSx3aXRoIHlvdS4gLSBZb3UncmUgYWRvcmFibGUuLSBJJ20gc2VyaW91cy4gLSBUaGVzZSBhcHBsZXNvciB0aGUgY2FyYW1lbC0teWVhaCwgcmlnaHQuIC0gSSdtLCBsaWtlLCBub3QgYSBiaWctLUkgaGF0ZSBjYXJhbWVsLiAtIFVtLFBldGVyIHdvbid0IGV2ZW4gbG9vayBhdCBtZS4gSSB3b25kZXIgd2h5LkhlIGFjdHMgbGlrZSBJIGRpZCBoaW0gZGlydHkuIC0gSnVzdCB0cnkgdG8gaGFuZyBvdXQgd2l0aCBoaW0uIC0gWW8sIEkgZG9uJ3QgZXZlbiB3YW5uYXN0ZXAgb24gSmVubidzIHRvZXMuIEkgZmVlbCBsaWtlIHNoZSBkb2VzIGxpa2UgaGltLiAtIEkgdGhpbmsgaGUncywgbGlrZS0tTWlrZSBhbHdheXMgc2FpZCBoZSdzIGEgcmVsYXRpb25zaGlwIGtpbmRhIGd1eS5IZSdzIHBvc3Nlc3NpdmUsIHlvdSBrbm93LiAtIEkgbWVhbiwgSSBkb24ndCBnaXZlYSBbYmxlZXBdLiBJIGp1c3QtLWhvbmVzdGx5LCBhcyBiYWRhcyBpdCBzb3VuZHMsIGxpa2UsIEkgZG9uJ3Qgd2FubmEgYmUgbGlrZSB0aGF0IGdpcmx3aG8ncywgbGlrZSwgXCJXYXRjaCBvdXQsXCIgYmVjYXVzZSwgeW91IGtub3cgd2hhdCBJIG1lYW4tLS0gSSBrbm93LCB5b3UgZ28gYSBsaXR0bGUgY3JhenksIHllYWguLSBUaGVyZSB5b3UgZ28uIC0gVGhhbmsgeW91Li0gWXVwLiAtIFlvdSBhY3R1YWxseSBsb29rbGlrZSBhIGNyYXp5IHBlcnNvbi4gLSBZZWFoLkkgbWVhbiwgc2hlJ2xsIGxlYXJuLiBTaGUncyBzbWFydCwgc2hlJ2xsIGdldCBpdC4gW3VwYmVhdCBwZXJjdXNzaXZlIG11c2ljXSAtIEkgaGVhcmQgdGhpcyBtaWdodCBiZWEgcm9tYW50aWMgZGF0ZSwgYW5kIG5vdGhpbmcgc2F5cyByb21hbmNlbW9yZSB0aGFuIGdyYXNzaG9wcGVycy4gLSBFdywgcmVhbGx5Py0gWWVhaC15ZWFoLCBnbyBvbiwgZ28gb24uIC0gTm8uRXchIFVoLXVoLCBuby1uby4gLSBPbmNlLi0gTm8sIEknbSBub3QgZG9pbmcgaXQuIEFsbCByaWdodCwgaGVyZSB3ZSBnby4gLSBFdy5bZ2lnZ2xpbmddIC0gSXQncyBnb29kLkl0J3MgcmVhbGx5IHNhbHR5LiAtIFlvdSBhdGUgYSBbYmxlZXBdIGNyaWNrZXQuLSBXaWxsIHlvdSBzdGlsbCBraXNzIG1lPyAtIEd1ZXNzIHlvdSdsbCBoYXZlIHRvIHdhaXRhbmQgZmluZCBvdXQuIFx1MjY2YSAtIEkgd2FubmEgZG8gdGhhdCBwaG90byBzaG9vdHdpdGggeW91IHJpZ2h0IHRoZXJlLiAtIFdoYXQgcGhvdG8gc2hvb3Q/W2dhc3BzXSBJIGxvdmUgdGhvc2UgdGhpbmdzLiBcdTI2NmEgLSBLaXNzLiAtIEhhdmUgYSBnb29kIG5pZ2h0Li0gVGhhbmsgeW91LiBCZXN0IGZpcnN0IGRhdGUgZXZlci4tIEV2ZXIsIGV2ZXIsIGV2ZXIuIFx1MjY2YSAtIEl0J3MgSmVubi5DYW4gSSBnZXQgZGUtbWljJ2Q/IC0gTGF1cmVuLCBpdCdzIFBldGVyLGNhbiBJIGdldCBkZS1taWMnZD8gXHUyNjZhIC0gWWVzLCB5ZXMsIHllcyxvZiBjb3Vyc2UgaGUgaXMuIC0gVGhhdCdzIGp1c3QgW2JsZWVwXSB1cC4gLSBUaGF0J3Mgd2h5IHNoZSdzbGFzaGluZyBiYWNrIG91dC4gVGhlIFtibGVlcF0gdGhhdCB3ZW50IGRvd253aXRoIGhpbSBhbmQgQW5uYSwgYW5kIGFsbCBvZiB0aGUgc3VkZGVuLS1ubywgaGUgd2VudCBmcm9tLCBsaWtlLCBoYXZpbmcsIGxpa2UsIHRoYXQgcGVyc29udGhhdCBoZSwgbGlrZSwgbGF0Y2hlZCBvbnRvLiBBbmQgdGhlbiwgbGlrZSwgdGhhdCBbYmxlZXBdaXMgYmxvd24gdXAsIGFuZCBub3cgaGUgcmVhbGl6ZWQsIGxpa2UsaGUgZG9lc24ndCwgbGlrZSwgaGF2ZSBpdC4gW3Ntb290aCBiYXNzIG11c2ljXSBQZXRlIGRvZXMgdGhpcywgYW5kIGhhcyBiZWVuIGRvaW5nIHRoaXMsIGZvciB5ZWFycy4gSGUgbWVldHMgYSBnaXJsdGhhdCBoZSBmaW5kcyBhdHRyYWN0aXZlLCBhbmQgaWYgdGhlIGdpcmwgaGFwcGVucyB0byBmaW5kaGltIGF0dHJhY3RpdmUgYXQgdGhlIHNhbWUgdGltZSwgaXQncyBsaWtlIGJhbGxzLXRvLXRoZS13YWxsLDEwMCBtaWxlcyBhbiBob3VyLiAtIEhlJ3MgbGlrZSxcIkkgZ2V0IHJlYWxseSBpbnRvIG15IGdpcmxzLlwiIEFuZCBJIHdhcyBsaWtlLCBcIldvd1wiLS1bYm90aCB3aGlzcGVyaW5nXSAtIEhlJ3MgdmVyeSBjb250cm9sbGluZyxhbmQgdmVyeSwganVzdCBsaWtlLCBcIllvdSB0aGluay0teW91IHRoaW5rdGhpcyBpcyBsaWtlIGEgb25lLXRpbWUgdGhpbmc/IEh1aCwgaG1tLlwiIFwiVGhpcyB5ZWFyJ3MgZ29ubmEgYmUtLW9oLCBteSBHb2QuXCIgLSBXb3cuLSBUaGlzIGlzLCBsaWtlLCB0aGUgZmlyc3Qgc3RlcCB0byB0aGUgcHJvY2Vzcy5bY2xlYXJzIHRocm9hdF0gVGhlIHNlY29uZCBzdGVwIGlzd2hlbiBzaGUgY29tZXMgb3V0IHdpdGggdXMsIGhlJ3MgZ29ubmEgZ2V0IHRoZXJlLHRoZW4gaGUncyBnb25uYSBzZWUgaGVyIGdpdmUsIGxpa2UsIG9uZSBsb29rdG8sIGxpa2UsIGFub3RoZXIgZHVkZSwgYW5kIHRoYXQncyB3aGVuIFtibGVlcF1pcyBnb2luZyB0byBnbyBvZmYuIFt1cGJlYXQgcm9jayBtdXNpY10gLSBBbGwgcmlnaHQsc28gd2hhdCdzIGluIHRoZSBmcmlkZ2U/IEknbSBzY2FyZWQgdG8gbG9vay4tIE9oLCBnbyBsb29rLCBnbyBsb29rLiAtIE9oLCBnZWUuIC0gSSBoZWFyZCB0aGVyZSdzIHNvbWV0aGluZ2luIHRoZSBmcmlkZ2UuIC0gVGhlcmUgaXMuLSBJJ20gc2NhcmVkLiAtIEdvIGNoZWNrLi0gW2xhdWdoc10gQWxsIHJpZ2h0LCB3aGF0J3MgaW4gaGVyZT8gW2xhdWdoc10gSXQncyBhZG9yYWJsZS4gSSBnb3QgZWRpYmxlIGFycmFuZ2VtZW50cy4tIEZyb20gd2hvPyAtIFRyYXZpcz8tIE5vLiBbc2NvZmZzXVllYWgsIHJpZ2h0LiBObywgUGV0ZXIuLSBMb29rIGF0IHRoYXQgc2xpY2sgY2F0LiAtIFtsYXVnaHNdSGUncyBzdWNoIGEgdGVycmlibGUgc3VycHJpc2VyLiBIZSBrZXB0IHRlbGxpbmcgbWUsXCJPaCwgeW91IGp1c3QtLSB0aGVyZSdzIHNvbWV0aGluZyBjb21pbmd0byB0aGUgaG91c2UuXCIgSSdtIGxpa2UsIFwiWW91J3JlIG5vdCBzdXBwb3NlZHRvIHRlbGwgbWUuXCIgVGhhdCdzIGFkb3JhYmxlLkknbSBqdXN0IG5vdCB1c2VkIHRvIHNvbWVvbmUgYmVpbmcgc28gdGhvdWdodGZ1bC4gTGlrZSwgaXQncyBqdXN0LS1pdCdzIGFkb3JhYmxlLiAtIFdoYXQncyB1cD8tIFRoYW5rIHlvdS4gLSBZb3UncmUgd2VsY29tZS4tIFlvdSBhcmUgc28gY3V0ZS4gLSBUaGFua3MuLSBXaHkgYXJlIHlvdSBzbyBhZG9yYWJsZT8gSXQncyB0aGUgY3V0ZXN0IHRoaW5nIGV2ZXIuIFtncm9vdnkgcm9jayBtdXNpY10gXHUyNjZhIC0gQWxsIHJpZ2h0LCBjbGFzcyxhcmUgd2UgcmVhZHk/IE9uZSwgdHdvLi4uR29vZCBqb2IsIGd1eXMuIFtsYXVnaGluZ10tIFtibGVlcF0uIFtsYXVnaGluZ10gQWghIC0gW2dydW50c10gLSBBaCwgdHJ1ZS4gLSBJLS1JIHN3ZWFyIEkgdGhvdWdodCB5b3V3ZXJlIGFscmVhZHkgaGl0dGluJyBhbGwgdGhhdC4gLSBObywgaGUtLWxpa2UtLSBoZSBbYmxlZXBdIHdpdGggbWUgYW5kIFtibGVlcF0sYnV0IHdlIG5ldmVyIFtibGVlcF0gZXZlci4gSSdtIGp1c3Qgbm90IHRoYXQgdHlwZSBvZiBnaXJsLkkga25vdyBob3cgdG8ga2VlcCBteSBsZWdzIGNsb3NlZC5bbGF1Z2hzXSBJJ20gbGlrZSwgXCJJZiB5b3UncmUgbm90W2JsZWVwXSBtZSwgYnJvLCBsaWtlLCBpdCdzIG5vdCBnb2luZyBkb3duLlwiICdDYXVzZSB0aGF0J3MsIGxpa2UsIHJlYWxseWRpc3Jlc3BlY3RpbmcgbXlzZWxmLiBJIGRvbid0IHRoaW5rIFRoZW8gZGVzZXJ2ZXMgbWUsIGJlY2F1c2UgSSdtIHdvcnRoIGEgbG90LiBBbmQgZm9yIGhpbSB0byBkbyBzb21lb2YgdGhlIHRoaW5ncyB0aGF0IGhlIGRvZXMsIGhlIGRvZXMgbm90IGRlc2VydmUgbWUuIEknbSB0aGlua2luZyBhYm91dGNoYW5naW5nIG15IHJvb20uIC0gWWVhaD8tIFllYWguIEkgdGhpbmstLUknbSB0aGlua2luZ2Fib3V0IHRha2luZyBLYXRyaW5hJ3MgYmVkLiAtIEhlIGdvbm5hIGJlIHBpc3NlZC5IZSBnb25uYSBiZSBwaXNzZWQuIC0gQW5kIHlvdSBhYm91dCB0byBzZWUuLi5bbW91dGhzIHdvcmRzXSAtIFdoZW4gYSBndXkgaGVhci0td2hlbiBhIFtibGVlcF0gZG9uJ3Qgd2FudCB5b3UsIGJybywgaXQgbWFrZXlvdSB3YW50IGhlciBzbyBtdWNoLCBbYmxlZXBdLiBbZHJhbWF0aWMgbXVzaWNdIC0gV2hhdCBkbyB5b3UtLXdoYXQgZG8geW91IHdhbnQ/LSBEbyB5b3Ugd2FudCB0aGlzIGJlZD8gLSBJIHdhbnQgdGhlIGJlZCBhbmQsIGxpa2UseW91ciBwYXJ0IG9mIHRoZSBjbG9zZXQsIGJ1dCB5b3UgY2FuIGhhdmUgdGhlIGRyYXdlcnVwc3RhaXJzLiBUaGVyZSdzLCBsaWtlLCBhIGZ1bGwgZHJhd2VydXBzdGFpcnMgZm9yIHlvdSBhbmQgSmVubi4gLSBNaWtlLCBjb21lIGhlcmUgZm9yIGEgc2Vjb25kLi0gWW8uIC0gSGUga25vd3MgYWxyZWFkeSwgYWJvdXQgbWV3YW50aW5nIHRvIHN3aXRjaCByb29tcywgeWVhaC4gLSBNbS1obW0uLSBTbyBhcmUgeW91IHNsZWVwaW5nIHVwc3RhaXJzPyAtIFllYWguLSBXZWxsLCB5b3Ugd2VyZSBnb25uYSB0YWtlIG15IGJlZCwgYnV0IEknbSBvZmZlcmluZyBpdHRvIFBldGUgbm93LiAtIFdoYXQgdGhlIFtibGVlcF0sIFRpYS0tLSBJJ20gc29ycnksIEknbSBzb3JyeSEgTGlrZSwgd2UganVzdCB0YWxrZWQgYWJvdXQgdGhpc2xhc3QgbmlnaHQuIEkgcmVhbGx5IGhvcGUsZm9yIHRoZSBzYWtlIG9mIG15IHNhbml0eSwgdGhhdCB0aGlzIHNpdHVhdGlvbmlzIHB1dCB0byBiZWQuIEFsbCByaWdodC4gU28gSSB0aGluayBzaGUncyB0cnlpbmd0byBtb3ZlIG91dC4gLSBTaGUgY2FuIG1vdmUgb3V0LkknbSBub3QgbW92aW5nIG15IGJlZCBmb3Igbm9ib2R5Li0gU28geW91IHdhbnQgaXQtLSB5b3Ugc3RpbGwgd2FubmEgc2xlZXAgdXAgdGhlcmU/LSBJJ20ga2VlcGluZyBteSBiZWQsIGJyby4gVGhhdCBbYmxlZXBdJ3MgY29va2VkLldoYXQgdGhlIFtibGVlcF0gd3Jvbmcgd2l0aCB0aGF0Py0gVGhhdCdzIHdoYXQgSSdtIGNoZWNraW5nLiAtIFRoZSBmYWN0IHRoYXQgeW91IHdhbm5hIGNvbXBsZXRlbHkganVzdCBtb3ZlIGFsbCB5b3VyIFtibGVlcF0gZG93bnN0YWlycywgdG8sIGxpa2UsIG5vdCBiZSBhcm91bmQgbWUsdGhhdCBraW5kYS4uLiB0aGF0IGtpbmRhIGlya3MgbWUuIEFuZCBpdCdzIHdlYWssJ2NhdXNlIHNoZSdzIHRoZSBjbG9zZXN0IHBlcnNvbi4gQmVzaWRlcyB5b3Usc2hlJ3MgdGhlIGNsb3Nlc3QgcGVyc29uIEkgaGF2ZSBpbiB0aGUgaG91c2UuLSBJIGFscmVhZHkga25vdywgYnJvLCBidXQgSS0tIC0gVGhhdCBbYmxlZXBdLS10aGF0J3Mgd2hhdCdzIHNvIHdlYWsuIC0gWW91IGd1eXMgYXJlIGJvdGggc2F5aW5nIHRoYXR5b3UgZ3V5cyB3YW5uYSwgbGlrZSwgbm90IHRhbGs/IC0gU3BpdGVmdWxuZXNzLi0gV2h5IGNhbid0IHlvdSB0cnkgdG8gcmVzcGVjdCBlYWNoIG90aGVyIHRoZW4gaWYgeSdhbGxkb24ndCB3YW5uYSB0YWxrIHRvIGVhY2ggb3RoZXI/IC0gT2theSwgaWYgd2UgcmVzcGVjdGVhY2ggb3RoZXIsIHRoZW4gd2h5IHRoZSBbYmxlZXBdIHNoZSBuZWVkcyB0byBtb3ZlIGRvd25zdGFpcnM/LSBTaGUtLXNoZSBqdXN0IHdhbnRlZCBzcGFjZSwgJ2NhdXNlIHNoZSBnb3Qgc3Ryb25nZXIgZmVlbGluZ3Nmb3IgeW91IHRoZW4geW91IGdvdCBmb3IgaGVyLiAtIEkgYWluJ3QgdHJ5aW5nIGFueW9mIHRoYXQgZHVtYmFzcyBbYmxlZXBdLiAtIElmIHNoZS0taWYgc2hlLS1pZiBzaGUgd2FudHMtLS0gVGhhdCdzIHdoYXQgc2hlIHRvbGQgbWUuIC0gSSdtIG5vdCB0cnlpbicgaGVhciB0aGF0LCBtYW4uLSBCcm8sIEkgc3dlYXIgdG8gR29kLCBzaGUgc2FpZCB0aGF0LCBicm8uLSBJJ20gbm90IHRyeW5hIGhlYXIgdGhhdC4gLSBMb29rLCB0aGV5LS1sb29rLCBub3cgbGlzdGVuLi0gSSB3YW5uYS0tc2hoLCBzd2VydmUuIFlvdSB0ZWxsIHlvdXIgc3RvcnksSSB3YW5uYSBoZWFyIGV2ZXJ5dGhpbmcgeW91LS0gLSBUaGVyZSdzIG5vIHN0b3J5LkkgYWxyZWFkeSB0b2xkIHlvdSBJIGRvbid0IHdhbnQgdG8gdGFsa3RvIHlvdSBhbnltb3JlLiAtIFlvdSdyZSBoaWxhcmlvdXMuIFlvdSdyZXRoZSBmcmVzaCBwcmluY2Ugb2YgaGlsYXIuIC0gSSdtIG1vdGhlcltibGVlcF1LZXZpbiBIYXJ0LCBbYmxlZXBdLiBbYmxlZXBdIHlvdS4tIEZyZXNoIHByaW5jZSBvZiBoaWxhci4gLSBJIGRvbid0IHdhbm5hIFtibGVlcF10YWxrIHRvIHlvdS4gSnVzdCBkcm9wIHRoZSBbYmxlZXBdLCBicnVoLi0gVGhlbiB0YWxrIHRvIG1lIHRoZW4hIC0gQ29vbCwgdGhlbiBzdG9wIGJyaW5naW5naXQgW2JsZWVwXSB1cCEgLSBJJ20gdGFsa2luZyBhYm91dCBpdCBub3cuIC0gQnJvLCBbYmxlZXBdLCB5J2FsbCBbYmxlZXBdLkJybywgc3RvcCwgYnJvLiAtIEFyZSB5b3UgZ29ubmFkbyBzb21ldGhpbmcgYWJvdXQgaXQ/IC0gVGhlbiBzdG9wIGJyaW5naW5ndGhpcyBbYmxlZXBdIHVwIHRoZW4uIC0gTWFuLCBbYmxlZXBdIHRoYXQgW2JsZWVwXS5JIGRvbid0IGdpdmUgbm8gW2JsZWVwXS4gSWYgeW91J3JlIGdvbm5hIHNpdCBoZXJlLGRvaW5nIHRoaXMgeWVsbGluZywgc3R1cGlkIGFzcy4gSSdtIGdvbm5hIGNvbWUgcmlnaHQgYmFja2F0IHlvdXIgYXNzLCAnY2F1c2UgeW91IGtub3cgdGhlIHRydXRoLiAtIEJybywgd2hhdD8tIEJybyEgLSBJJ20gbGVhdmluZyB5b3VyIGFzcyBhbG9uZSxicm8sIGRvIHdoYXQgdGhlIFtibGVlcF0geW91IHdhbm5hIGRvLkxlYXZlIG1lIHRoZSBbYmxlZXBdIGFsb25lLiBCaXRjaC1hc3MuLSBXZWxsLCB0aGF0J3MgZ3JlYXQuIFtibGVlcF0gd3Jvbmcgd2l0aCBoZXI/IFdob28hQWxsIHRoYXQgeWVsbGluZyBnb3QgbWUgaHVuZ3J5LiBCcm8sIEknbSBzdGFydmluZywgYnJvLiAtIFdoYXQgeW91IHNheT8gLSBJJ20gSnVzdCBhbm5veWVkLkknbSBbYmxlZXBdIGFubm95ZWQuIFNvIFtibGVlcF0gYW5ub3llZC4gLSBIZXkuLi4tIFtzb2JiaW5nXSAtIEF3Li4uIFt1cGJlYXQgbXVzaWNdIFx1MjY2YSAtIFtzb2JiaW5nXSAtIE1vdmUgb3Zlci4gLSBbZ3JvYW5zXSAtIExpa2UsIEkgZGlkIHRoaXNmb3IsIGxpa2UsIGEgaGEtLUkgd2FudGVkIHRvIGhhdmUgaGFwcHkgbW9tZW50cy0tLSBNbS1obW0uIC0gQW5kLCBsaWtlLCBbYmxlZXBdIG1ha2VmcmllbmRzIGFuZCBbYmxlZXBdLCBhbmQgSSBkb24ndCBmZWVsIGxpa2VJJ20gZG9pbmcgdGhhdC4gSXQncyBqdXN0IG1ha2luZyBtZXRoZSBjb21wbGV0ZSBvcHBvc2l0ZS4gSSdtIFtibGVlcF0gZ29pbmcgY3JhenkuW3NoYWt5IGJyZWF0aHNdIC0gSSBtZWFuLCB5b3UgZGVmaW5pdGVseW1hZGUgdXMgYXMgZnJpZW5kcy4gLSBJIHRoaW5rIFR5YS0tIHNoZSBkb2Vzbid0IHRydXN0IHBlb3BsZSwgYW5kIHNoZSBkb2Vzbid0IHdhbm5hIGxldCBwZW9wbGUgaW4uIFR5YSBwdXRzIHVwIGEgZnJvbnQsdW0sIHRvIHByb3RlY3QgaGVyc2VsZi4gLSBbbW9hbmluZ11NbS1rYXkuIC0gV2UgbG92ZSB5b3UuW2FsbCBtb2FuaW5nXSBJJ3ZlIG5ldmVyIGJlZW4gd3JhcHBlZCB1cCB3aXRoIGEgZ3V5IGxpa2UgdGhpcyBldmVyIGluIG15IGVudGlyZSBsaWZlLkknbSBtYWtpbmcgbXlzZWxmIGxvb2sgc3R1cGlkLCBhbmQgSSdtIGFsdGVyaW5nYW5kIGNoYW5naW5nIG15c2VsZiwgd2hpY2ggaXMgdGhlIGxhc3QgdGhpbmd5b3Ugc2hvdWxkIGRvIGluIGEgcmVsYXRpb25zaGlwLCBzby4uLiBBYnNvbHV0ZWx5IGRvbmUgd2l0aCBUaGVvLiBKdXN0IHB1dCBteSBzdHVmZiB0aGVyZSxhbmQuLi4uIHRoYXQncyBhbGwgSSBnb3R0YSBkby5Ob3cgSSBqdXN0IGdvdHRhIGdldCBteSBzdHVmZiBmcm9tIHVwc3RhaXJzLiAtIFlvdSByZWFkeSB0byBtb3ZlPyAtIFllcC4tIEFsbCByaWdodCwgbGV0J3MgZG8gaXQuIC0gVGhpcyBmZWVscyBsaWtlLS10aGlzIGZlZWxzIGxpa2UgYSBkaXZvcmNlIHRoYXQncyBnb2luZyBmaW5hbC4gLSBcdTI2NmEgWW91IHNhaWQgdGhhdCB5b3UgY2FyZWQgXHUyNjZhIFlvdSBzYWlkIHRoYXQgd2Ugd2VyZSBpbiBsb3ZlIFx1MjY2YSBcdTI2NmEgWW91IHNhaWQgeW91ciBoZWFydCBiZWF0IGFuZCB0aGF0IFx1MjY2YSBcdTI2NmEgSSBhbSBtb3JlIHRoYW4gZW5vdWdoIFtsb3VkIHRodWRdLSBEYW1uLCB0aGF0IHdhcyByZWFsbHkgbG91ZC4gU29ycnkuIC0gVWgsIHdoZXJlIGRvIHlvdSBndXlzIGdvZnJvbSBoZXJlPyAtIExpa2UgSSBzYWlkLGl0J3MganVzdCBUeWFyYS4uLiBUaGF0J3MgbXkgYm9vLiBJJ21hIGxvdmUgaGVyIGZvcmV2ZXIuIFx1MjY2YSAtIFRoYW5rIHlvdSBmb3IgdGFsa2luZyB0byBtZSxBbmlrYS4gLSBPZiBjb3Vyc2UuIC0gSSB0aGluayBvbmNlIGhlIGp1c3RsZWF2ZXMgbWUgYWxvbmUsIEknbGwgYmUgZmluZS4gXHUyNjZhIn19PC9zY3JpcHQ+PGRpdiBjbGFzcz0icGxheWVyX2hvbGRlciI+PGRpdiBkYXRhLXRvcXVldWU9InRydWUiIGRhdGEtaW5mbz0iW3smcXVvdDtvcmlnaW5hbCZxdW90OzogeyAmcXVvdDt3aWR0aCZxdW90OzogMTkyMCwgJnF1b3Q7aGVpZ2h0JnF1b3Q7OjEwODAgfSwgJnF1b3Q7c3JjJnF1b3Q7OiAmcXVvdDtodHRwOi8vbXR2Lm10dm5pbWFnZXMuY29tL2FyYy9pbWFnZXMvc2hvd3MvcmVhbC13b3JsZC1zZWF0dGxlLWJhZC1ibG9vZC92aWRlb3MvUmVhbFdvcmxkU2VhX05BXzg2ODQ3OTk1Lm1vdi5tcDQuU3RpbGwwMTFfZWRpdGVkLmpwZyZxdW90OywgJnF1b3Q7cXVhbGl0eSZxdW90OzogMC44NX0sbnVsbF0iIGNsYXNzPSJpbWFnZV9ob2xkZXIgZGVmZXJyZWQgcGxheWVyX3RodW1ibmFpbCIgPjwvZGl2PjxkaXYgY2xhc3M9InBsYXllcl92aWRlbyI+PC9kaXY+PC9kaXY+PHVsIGNsYXNzPSJwbGF5ZXJfc2hhcmUiPjxsaSBjbGFzcz0icGxheWVyX3NoYXJlLWJ1dHRvbiBoYXNfaWNvbiBmYWNlYm9vayI+PHNwYW4gY2xhc3M9InNjcmVlbl9yZWFkZXJfdGV4dCI+RmFjZWJvb2s8L3NwYW4+PC9saT48bGkgY2xhc3M9InBsYXllcl9zaGFyZS1idXR0b24gaGFzX2ljb24gdHdpdHRlciI+PHNwYW4gY2xhc3M9InNjcmVlbl9yZWFkZXJfdGV4dCI+VHdpdHRlcjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0icGxheWVyX3NoYXJlLWJ1dHRvbiBoYXNfaWNvbiBlbWFpbCI+PHNwYW4gY2xhc3M9InNjcmVlbl9yZWFkZXJfdGV4dCI+RW1haWw8L3NwYW4+PC9saT48L3VsPjxkaXYgY2xhc3M9InBsYXllcl9tZXRhIj48aDIgY2xhc3M9InBsYXllcl9wYXJlbnQtdGl0bGUiPlNlYXNvbiAzMiwgRXAgNzwvaDI+PGgxIGNsYXNzPSJwbGF5ZXJfdmlkZW8tdGl0bGUiPlBldGVyZWQgT3V0PC9oMT48cCBjbGFzcz0icGxheWVyX2Rlc2NyaXB0aW9uIj5BIHNjYW5kYWxvdXMgaG9va3VwIGJldHdlZW4gSmVubiBhbmQgUGV0ZXIgaGFzIG1ham9yIHJlcGVyY3Vzc2lvbnMgZm9yIGJvdGggb2YgdGhlbS4gVHlhcmEgcHJvdmVzIHRvIGJlIGhlciBvd24gd29yc3QgZW5lbXkgaW4gaGVyIGJ1ZGRpbmcgcmVsYXRpb25zaGlwIHdpdGggVGhlby48L3A+PGRpdiBjbGFzcz0icGxheWVyX2Rpc3BsYXktZGF0ZSI+MTEvMTYvMjAxNiAxMDowMDwvZGl2PjwvZGl2PjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0idDBfcmMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0cmlmb3JjZS1tb2R1bGUiIGlkPSJ0MF9yY19wcm9tbzEiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJ0aWVyXzUiIGNsYXNzPSJ0aWVyXzJfY29sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0idDVfbGMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0cmlmb3JjZS1tb2R1bGUiIGlkPSJ0NV9sY19wcm9tbzEiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0idDVfcmMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0cmlmb3JjZS1tb2R1bGUiIGlkPSJ0NV9yY19wcm9tbzEiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJmb290ZXIiIGRhdGEtem9uZT0iZm9vdGVyIiBjbGFzcz0ibW9kdWxlIGVudF9tMDA2IiBkYXRhLXRmc3RhdGljPSJ0cnVlIiBkYXRhLXRmbGlicz0iRU5UX00wMDZfTVRWIiBkYXRhLXRmZHJpdmVyPSJlbnRfbTAwNl9tdHZfVjFfMF8xIiAgIHN0eWxlPSJkaXNwbGF5OmJsb2NrOyI+Cg0KCQkJPHVsIGNsYXNzPSJsaXN0Ij4NCgkJCQkJCQk8bGkgY2xhc3M9Imxpc3RfaXRlbSI+DQoJCQkJCTxhIGhyZWY9Ii9sZWdhbC9mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucyIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJGQVEvSGVscCIgY2xhc3M9ImZhcV9oZWxwIj5GQVEvSGVscDwvYT4NCgkJCQk8L2xpPg0KCQkJCQkJCTxsaSBjbGFzcz0ibGlzdF9pdGVtIj4NCgkJCQkJPGEgaHJlZj0iaHR0cDovL3d3dy52aWFjb21jYXJlZXJzLmNvbS8iIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iSm9icyIgY2xhc3M9ImpvYnMiPkpvYnM8L2E+DQoJCQkJPC9saT4NCgkJCQkJCQk8bGkgY2xhc3M9Imxpc3RfaXRlbSI+DQoJCQkJCTxhIGhyZWY9Ii9sZWdhbC90ZXJtcyIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJUZXJtcyBvZiBVc2UgW1VwZGF0ZWQgOS8zMC8yMDE2XSIgY2xhc3M9InRlcm1zX29mX3VzZV9fdXBkYXRlZF85XzMwXzIwMTZfIj5UZXJtcyBvZiBVc2UgW1VwZGF0ZWQgOS8zMC8yMDE2XTwvYT4NCgkJCQk8L2xpPg0KCQkJCQkJCTxsaSBjbGFzcz0ibGlzdF9pdGVtIj4NCgkJCQkJPGEgaHJlZj0iL2xlZ2FsL3ByaXZhY3kiIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iUHJpdmFjeSBQb2xpY3kvUHJpdmFjeSBSaWdodHMgW1VwZGF0ZWQgOS8zMC8yMDE2XSIgY2xhc3M9InByaXZhY3lfcG9saWN5X3ByaXZhY3lfcmlnaHRzX191cGRhdGVkXzlfMzBfMjAxNl8iPlByaXZhY3kgUG9saWN5L1ByaXZhY3kgUmlnaHRzIFtVcGRhdGVkIDkvMzAvMjAxNl08L2E+DQoJCQkJPC9saT4NCgkJCQkJCQk8bGkgY2xhc3M9Imxpc3RfaXRlbSI+DQoJCQkJCTxhIGhyZWY9Ii9sZWdhbC9jb3B5cmlnaHQiIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iQ29weXJpZ2h0IiBjbGFzcz0iY29weXJpZ2h0Ij5Db3B5cmlnaHQ8L2E+DQoJCQkJPC9saT4NCgkJCQkJCQk8bGkgY2xhc3M9Imxpc3RfaXRlbSI+DQoJCQkJCTxhIGhyZWY9Imh0dHA6Ly9tYWluZXZlbnRzLm10dm4uY29tL2FjY2Vzc2liaWxpdHkvIiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IkNsb3NlZCBDYXB0aW9uaW5nIiBjbGFzcz0iY2xvc2VkX2NhcHRpb25pbmciPkNsb3NlZCBDYXB0aW9uaW5nPC9hPg0KCQkJCTwvbGk+DQoJCQkJCQkJPGxpIGNsYXNzPSJsaXN0X2l0ZW0iPg0KCQkJCQk8YSBocmVmPSJodHRwOi8vbG9zYW5nZWxlcy5ldmVudGZ1bC5jb20vZXZlbnRzIiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IkV2ZW50ZnVsIiBjbGFzcz0iZXZlbnRmdWwiPkV2ZW50ZnVsPC9hPg0KCQkJCTwvbGk+DQoJCQkJCQkJPGxpIGNsYXNzPSJsaXN0X2l0ZW0iPg0KCQkJCQk8YSBocmVmPSIvYXNtL3BhcnRuZXJzLyIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJQYXJ0bmVycyIgY2xhc3M9InBhcnRuZXJzIj5QYXJ0bmVyczwvYT4NCgkJCQk8L2xpPg0KCQkJCQkJCTxsaSBjbGFzcz0ibGlzdF9pdGVtIj4NCgkJCQkJPGEgaHJlZj0iaHR0cDovL3NycC52aWFjb20uY29tL3NpdGVmYXEuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJBZCBDaG9pY2VzIiBjbGFzcz0iYWRfY2hvaWNlcyI+QWQgQ2hvaWNlczwvYT4NCgkJCQk8L2xpPg0KCQkJCQk8L3VsPg0KCQkJPHVsIGNsYXNzPSJsaXN0Ij4NCgkJCQkJCQk8bGkgY2xhc3M9Imxpc3RfaXRlbSI+DQoJCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL01UViIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJmYWNlYm9vayIgY2xhc3M9ImZhY2Vib29rIj5mYWNlYm9vazwvYT4NCgkJCQk8L2xpPg0KCQkJCQkJCTxsaSBjbGFzcz0ibGlzdF9pdGVtIj4NCgkJCQkJPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9NVFYiIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iVHdpdHRlciIgY2xhc3M9InR3aXR0ZXIiPlR3aXR0ZXI8L2E+DQoJCQkJPC9saT4NCgkJCQkJCQk8bGkgY2xhc3M9Imxpc3RfaXRlbSI+DQoJCQkJCTxhIGhyZWY9Imh0dHA6Ly9tdHYudHVtYmxyLmNvbS8iIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iVHVtYmxyIiBjbGFzcz0idHVtYmxyIj5UdW1ibHI8L2E+DQoJCQkJPC9saT4NCgkJCQkJCQk8bGkgY2xhc3M9Imxpc3RfaXRlbSI+DQoJCQkJCTxhIGhyZWY9Imh0dHA6Ly9pbnN0YWdyYW0uY29tL210diIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJJbnN0YWdyYW0iIGNsYXNzPSJpbnN0YWdyYW0iPkluc3RhZ3JhbTwvYT4NCgkJCQk8L2xpPg0KCQkJCQkJCTxsaSBjbGFzcz0ibGlzdF9pdGVtIj4NCgkJCQkJPGEgaHJlZj0iaHR0cHM6Ly92aW5lLmNvL01UViIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJWaW5lIiBjbGFzcz0idmluZSI+VmluZTwvYT4NCgkJCQk8L2xpPg0KCQkJCQk8L3VsPg0KCQkNCgk8ZGl2IGNsYXNzPSJsb2dvIj48L2Rpdj48cCBjbGFzcz0iY29weXJpZ2h0Ij4mIzE2OTsgMjAxNiBWaWFjb20gSW50ZXJuYXRpb25hbCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIE1UViBhbmQgYWxsIHJlbGF0ZWQgdGl0bGVzIGFuZCBsb2dvcyBhcmUgdHJhZGVtYXJrcyBvZiBWaWFjb20gSW50ZXJuYXRpb25hbCBJbmMuPC9wPg0KCjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAKPC9kaXY+ICAgIDxkaXYgaWQ9ImFjdGl2aXR5SW5kaWNhdG9yIj48L2Rpdj4KCgkJCgkJCgogICAgPHNjcmlwdCBhc3luYyB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDovL2J0Zy5tdHZuc2VydmljZXMuY29tL2FyaWEvYmVudG9qcy5qcz9zaXRlPXd3dy5tdHYuY29tJnY9MS45LjMiPjwvc2NyaXB0PgoKICAgICAgICAgICAgPCEtLSBNYXh5bWlzZXIgUHJvZCBDb2RlIC0tPgogICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii8vc2VydmljZS5tYXh5bWlzZXIubmV0L2Nkbi92aWFjb20vanMvbW1jb3JlLmpzIj48L3NjcmlwdD4KICAgICAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3NpdGV3aWRlL2pzL2pxdWVyeS0xLjExLjAubWluLmpzIj48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPCEtLVtpZiBndGUgSUUgOV0+PCEtLT4KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9zaXRld2lkZS9qcy9qcXVlcnktMi4xLjAubWluLmpzIj48L3NjcmlwdD4KICAgIDwhLS08IVtlbmRpZl0tLT4KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9tZWRpYS9iYXNlLmpzP2hhc2g9ZWY5M2EzNjgyNzZkMWVlIj48L3NjcmlwdD4KCgoKICAgIDxzY3JpcHQ+CiAgICAgICAgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgX2ZicSA9IHdpbmRvdy5fZmJxIHx8ICh3aW5kb3cuX2ZicSA9IFtdKTsKICAgICAgICAgICAgaWYgKCFfZmJxLmxvYWRlZCkgewogICAgICAgICAgICAgICAgdmFyIGZiZHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICAgICAgICAgIGZiZHMuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICAgICAgZmJkcy5zcmMgPSAnLy9jb25uZWN0LmZhY2Vib29rLm5ldC9lbl9VUy9mYmRzLmpzJzsKICAgICAgICAgICAgICAgIHZhciBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdOwogICAgICAgICAgICAgICAgcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShmYmRzLCBzKTsKICAgICAgICAgICAgICAgIF9mYnEubG9hZGVkID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBfZmJxLnB1c2goWydhZGRQaXhlbElkJywgJzMzMTI4OTA2MzczODY4NyddKTsKICAgICAgICB9KSgpOwogICAgICAgIHdpbmRvdy5fZmJxID0gd2luZG93Ll9mYnEgfHwgW107CiAgICAgICAgd2luZG93Ll9mYnEucHVzaChbJ3RyYWNrJywgJ1BpeGVsSW5pdGlhbGl6ZWQnLCB7fV0pOwogICAgPC9zY3JpcHQ+CgogICAgPCEtLSBUd2l0dGVyIHVuaXZlcnNhbCB3ZWJzaXRlIHRhZyBjb2RlIC0tPgogICAgPHNjcmlwdD4KICAgICAgICAhZnVuY3Rpb24oZSxuLHUsYSl7IGUudHdxfHwoYT1lLnR3cT1mdW5jdGlvbigpeyBhLmV4ZT9hLmV4ZS5hcHBseShhLGFyZ3VtZW50cyk6CiAgICAgICAgICAgICAgICBhLnF1ZXVlLnB1c2goYXJndW1lbnRzKTsgfSxhLnZlcnNpb249JzEnLGEucXVldWU9W10sdD1uLmNyZWF0ZUVsZW1lbnQodSksCiAgICAgICAgICAgICAgICB0LmFzeW5jPSEwLHQuc3JjPScvL3N0YXRpYy5hZHMtdHdpdHRlci5jb20vdXd0LmpzJyxzPW4uZ2V0RWxlbWVudHNCeVRhZ05hbWUodSlbMF0sCiAgICAgICAgICAgICAgICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQscykpIH0od2luZG93LGRvY3VtZW50LCdzY3JpcHQnKTsKICAgICAgICAvLyBJbnNlcnQgVHdpdHRlciBQaXhlbCBJRCBhbmQgU3RhbmRhcmQgRXZlbnQgZGF0YSBiZWxvdwogICAgICAgIHR3cSgnaW5pdCcsJ252YXY0Jyk7CiAgICAgICAgdHdxKCd0cmFjaycsJ1BhZ2VWaWV3Jyk7CiAgICA8L3NjcmlwdD4KICAgIDwhLS0gRW5kIFR3aXR0ZXIgdW5pdmVyc2FsIHdlYnNpdGUgdGFnIGNvZGUgLS0+CgoKCgoJPCEtLVBBR0VPSy0tPgoJPC9ib2R5Pgo8L2h0bWw+
ERROR: Unable to extract mgid; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/mtv.py", line 208, in _extract_mgid
    og_url = self._og_search_video_url(webpage)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 778, in _og_search_video_url
    return self._html_search_regex(regexes, html, name, **kargs)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 669, in _html_search_regex
    res = self._search_regex(pattern, string, name, default, fatal, flags, group)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 660, in _search_regex
    raise RegexNotFoundError('Unable to extract %s' % _name)
RegexNotFoundError: Unable to extract video url; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 694, in extract_info
    ie_result = ie.extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 357, in extract
    return self._real_extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/mtv.py", line 230, in _real_extract
    mgid = self._extract_mgid(webpage)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/mtv.py", line 224, in _extract_mgid
    r'embed/(mgid:.+?)["\'&?/]', sm4_embed, 'mgid')
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 660, in _search_regex
    raise RegexNotFoundError('Unable to extract %s' % _name)
RegexNotFoundError: Unable to extract mgid; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
@mrplePurple
Copy link

@mrplePurple mrplePurple commented Nov 21, 2016

Just so you know, I get the same output by simply running

youtube-dl -v --ignore-config --dump-pages http://www.mtv.com/full-episodes/7kqkgc/real-world-seattle-bad-blood-petered-out-season-32-ep-3207
@yan12125
Copy link
Collaborator

@yan12125 yan12125 commented Nov 21, 2016

OK let me reopen it first

@jonas5
Copy link

@jonas5 jonas5 commented Dec 13, 2016

MTV does actually not require a login as long as you have a valid ip address from US.

@StevenDTX
Copy link

@StevenDTX StevenDTX commented Jan 3, 2017

bump :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
7 participants
You can’t perform that action at this time.