(function() {
var c=1;
var x = document.getElementById("Sureview356");
var sureview_logo_container=document.createElement("div");
var vdo = document.createElement("div");
var vi_maindiv = document.createElement("div");
var teads = document.createElement("script");
teads.id="sureview_2";
var third_party = document.createElement("script");
var adipolo = document.createElement("div");
var teads_main_div = document.createElement("div");
var vdo_id="";
var is_active_adipolo=0;
var is_active_teads=0;
var is_active_aniview=0;
var is_active_vdo=0;
var is_active_valueImpression=0;
var ad_displaying=0;
var running_ads=0;
var by_tag_name="";
var placement_salector="";
var no_of_tag="";
var placed_by="";
var priority1="2";
var priority2="1";
var priority3="4";
var refreshIntervalId;
var iframe="iframe";
var is_added_smc_header=0;
var vdo_player;
var teads_player;
var teads_ads_duration=10000;
var vdo_ads_duration=10000;
var setlogo_intval;
var setlogoTeads_intval;
var dailyMotionStyle = document.createElement('style');
dailyMotionStyle.innerHTML="#dailymotion-pip-large-viewport{ --dm--pip-left: 0px;} #dailymotion-pip-large-viewport{ --dm--pip-left: 0; --dm--pip-right: auto; } #dailymotion-pip-small-viewport {--dm--pip-size-width: 200px !important; --dm--pip-size-height: 110px !important;} .dm-player.dm-player-close-show #dailymotion-pip-large-viewport .dm__close-button, .dm-player.dm-player-close-show #dailymotion-pip-small-viewport .dm__close-button { visibility: visible !important;} .dm-player.dm-player-close-show .dm__close-button { visibility: visible !important; } .dm__close-button { position: absolute !important; top: var(--dm-close-top, -28px) !important; right: unset !important; width: var(--dm-close-width, 25px) !important; height: var(--dm-close-height, 25px) !important; background: var(--dm-close-bg, #000) !important; opacity: var(--dm-close-opacity, 0.45) !important; border-radius: 50% !important; padding: var(--dm-close-padding, 7px) !important; border: var(--dm-close-border, 0) !important; cursor: pointer; visibility: hidden; } .dailymotion-player-wrapper#dailymotion-pip-small-viewport .dm__close-button { left: 0px !important; right: unset !important; }";
top.document.getElementsByTagName('head')[0].appendChild(dailyMotionStyle);
var dailyMotionStyle = document.createElement('style');
dailyMotionStyle.innerHTML="#dailymotion-pip-small-viewport, #dailymotion-pip-large-viewport { width: var(--dm--pip-size-width, 410px) !important; left: var(--dm--pip-left, 0) !important; height: var(--dm--pip-size-height, 231px) !important; transition: right .5s ease !important; right: var(--dm--pip-right, initial) !important;} .dailymotion-player-wrapper#dailymotion-pip-small-viewport .dm__close-button { left: 0px !important; right: unset !important; }";
var reduce_size_for_big_screen= document.createElement('style');
reduce_size_for_big_screen.innerHTML="@media screen and (min-width: 640px) {.dm-player { padding-left: 20% !important; padding-right: 20% !important; }} #dailymotion-pip-small-viewport .dailymotion-player, #dailymotion-pip-small-viewport .dm__pip-new-controls{ border-radius: 10px; }";
top.document.getElementsByTagName('head')[0].appendChild(reduce_size_for_big_screen);
placement_salector=0;
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('GET', "https://lb-app.sureview.tv/api/log-imp/356");
xmlhttp.send();
setTimeout(function(){
var widget_code="ICAgICAgICA8ZGl2IGlkPSJzdXJldmlldy12aWV3LWFkcy0wMDEiPg0KICAgICAgICAgICAgPHN0eWxlPg0KICAgICAgICAgICAgICAgIC5kYWlseW1vdGlvbi1wbGF5ZXItd3JhcHBlciBpZnJhbWV7DQogICAgICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6dW5zZXQgIWltcG9ydGFudA0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAjc3YtcGxheWVyLXRvcC1jb250cm9sc3sNCiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgICAgICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwOw0KICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93Ow0KICAgICAgICAgICAgICAgICAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0Ow0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICNzdi1wbGF5ZXItdG9wLWNvbnRyb2xzIGRpdiB7DQogICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjJweDsNCg0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAuZml4ZWRFbGVtZW50IHsNCiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246Zml4ZWQ7DQogICAgICAgICAgICAgICAgICAgIHRvcDotNHB4Ow0KICAgICAgICAgICAgICAgICAgICAvKndpZHRoOjEwMCU7Ki8NCiAgICAgICAgICAgICAgICAgICAgei1pbmRleDogOTk5OTk5OTk5OTk5OTk5OTk7DQogICAgICAgICAgICAgICAgICAgIC8qd2lkdGg6MTAwJSAhaW1wb3J0YW50OyovDQogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOw0KICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4Ow0KICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOw0KICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOw0KICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMWYxZTFlODc7DQogICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDNweDsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAuZml4ZWRFbGVtZW50Rmlyc3RDaGlsZHsNCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE3OXB4Ow0KICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAwLjY7Ki8NCg0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICNzdi1wbGF5ZXItbWFpbi1jb250YWluZXJ7DQogICAgICAgICAgICAgICAgICAgIHdpZHRoOjEwMCU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC5zdi1wbGF5ZXItbG9nb3sNCiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7DQogICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTBweDsNCiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogNXB4Ow0KICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHggNXB4IDBweCAwcHg7DQogICAgICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IHVuc2V0ICFpbXBvcnRhbnQ7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC5zdi1wbGF5ZXItY2xvc2V7DQogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOw0KICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwcHg7DQogICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDJweDsNCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweCAxMHB4IDEwcHggMTBweDsNCiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgICAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiB1bnNldCAhaW1wb3J0YW50Ow0KICAgICAgICAgICAgICAgICAgICBtYXJnaW46IHVuc2V0ICFpbXBvcnRhbnQ7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLypORVcgU1RZTEUqLw0KICAgICAgICAgICAgICAgIC5zdi1jb250ZW50LXBhcmVudHsNCiAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA2NDBweDsNCiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOw0KICAgICAgICAgICAgICAgICAgICBtYXJnaW46IGF1dG87DQogICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47DQogICAgICAgICAgICAgICAgICAgIGhlaWdodDogMzYwcHg7DQogICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGhlaWdodCAwLjRzIGxpbmVhcjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgLnN2LWNvbnRlbnQtcGFyZW50LmNvbGxhcHNlew0KICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDAgIWltcG9ydGFudDsNCiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTpub25lOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAuc3YtY29udGVudC1wYXJlbnQuY29sbGFwc2UgLnN2LWxvZ28sIC5zdi1jb250ZW50LXBhcmVudC5jb2xsYXBzZSAucGxheWVyLXRvZ2dsZS1jb250YWluZXIsIC5zdi1jb250ZW50LXBhcmVudC5jb2xsYXBzZSAuc291bmQtdG9nZ2xlLWNvbnRhaW5lcnsNCiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgLmNyZWRpdC1jb250YWluZXJ7DQogICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNXB4Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAuY3JlZGl0LWNvbnRhaW5lciBzcGFuew0KICAgICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOw0KICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDlweDsNCiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNiYmI7DQogICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsQXJpYWwsZmFsbGJhY2ssc2Fucy1zZXJpZjsNCiAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEwcHg7DQogICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQogICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC5zdi1pbWFmcmFtZS1jb250YWluZXJ7DQogICAgICAgICAgICAgICAgICAgIHdpZHRoOiA2NDBweDsNCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OjM0MHB4Ow0KICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7DQogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDA7DQogICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47DQogICAgICAgICAgICAgICAgICAgIG9iamVjdC1maXQ6IGluaXRpYWw7DQogICAgICAgICAgICAgICAgICAgIC8qdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOyovDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC5zdi1sb2dvew0KICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAxMHB4ICFpbXBvcnRhbnQ7DQogICAgICAgICAgICAgICAgICAgIHRvcDogMTBweDsNCiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAuc3YtbG9nbyBpbWd7DQogICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjJweCAhaW1wb3J0YW50Ow0KICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTlweCAhaW1wb3J0YW50Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAuYnRuLXBsYWNlbWVudC1mb290ZXJ7DQogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7DQogICAgICAgICAgICAgICAgICAgIGJvdHRvbTogMDsNCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNSU7DQogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50IDAlLCByZ2JhKDAsIDAsIDAsIDAuNSkgMTAwJSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC5wbGF5ZXItdG9nZ2xlLWNvbnRhaW5lcnsNCiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAxMHB4Ow0KICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgICAgICAgICAgICAgICAgIGxlZnQ6IDEwcHg7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC5zb3VuZC10b2dnbGUtY29udGFpbmVyew0KICAgICAgICAgICAgICAgICAgICAvKnJpZ2h0OiAxMHB4OyovDQogICAgICAgICAgICAgICAgICAgIGxlZnQ6IDExcHg7DQogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICAgICAgICAgICAgICAgICAgLypib3R0b206IDhweDsqLw0KICAgICAgICAgICAgICAgICAgICBib3R0b206IDM0cHg7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC52aWRlby1idG4tcGF1c2UsIC52aWRlby1idG4tcGxheSwgLnNvdW5kLWJ0bi1wbGF5LCAuc291bmQtYnRuLXBhdXNlew0KICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBub25lOw0KICAgICAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7DQogICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7DQogICAgICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgLnZpZGVvLWJ0bi1wYXVzZSBpbWcsIC52aWRlby1idG4tcGxheSBpbWcsIC5zb3VuZC1idG4tcGxheSBpbWcsIC5zb3VuZC1idG4tcGF1c2UgaW1new0KICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDI0cHggIWltcG9ydGFudDsNCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDI0cHggIWltcG9ydGFudDsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAucGxheWVyLXRvZ2dsZS1jb250YWluZXIgLnZpZGVvLWJ0bi1wbGF5IGltZ3sNCiAgICAgICAgICAgICAgICAgICAgY29udGVudDp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRm9BQUFCYUNBWUFBQUE0cUVFQ0FBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFDamtsRVFWUjRuTzJkUVdvVVFSU0dXeFNWZ0pCTndLMnVkUkVQb0tmSTFxVlhFRHlBMGFWTHI1QXJKQjVBRHpCcmhZeUtRNmozMS9RbUJPWkpTOE5vVUVGVFZhK3Ezdi9CMjFkOVBLcjduMzQ5UFF5RUVFSUlJWVFRMGlPcWVsTkVYb3ZJWnhINUN1QXd4cmhudmE3dUFQQUtnRjRxaU1pTDVYSzVZNzIrYnBnNitUZWlmNVNJbklySU0xVzlicjNPNXZtVDVFdkNGeUp5WUwzVzdrWC9WQ2NoaEgzck5Yc1FyU0t5QVhBVVFyaG52ZmF1UldNci9GeEUzb1FRZHEzMzBMVm9iT3RNUko2cjZpM3J2ZlF1V3VmNkJPQ3BxbDZ6M2xQdm9uV3VEekhHSjliNzhpQmE1enBlcjljUHJQZm5RYlNLeUFXQXQrTTQzaDI4azFNMHRqVk9VWCsxV3QwWnZGSkl0TTRkdm5RYjZVdUtodWRJYnlFYXYwYjZSNE1IakVXcm0waHZMUnBlSXIyMVlIaUo5QldJVlJlUnZnS2g2aUxTVnlCU1hVVDZDZ1NxaTBodkxROWVJbjBGMHRSRnBMZVdCUytSM2xvUzB0YTdhaU45QlhJMFI2UVhrZnREVFZpTGdaZElieTBFNVNMOWJZcUdnMGhmUWNlcGkwaGZ3Y2JWTU5JL3BHaVVpZlRURUw2cTNtQkhvMGgzSDFJMGluVDJpcUpSUlBRM2lrYVJvK01sUllNWFEyMjhlSHVIdklJWldKQlhNQ000UE15SlZIQldhbzdpejZSd09zdG4zWG53TXAzYVNSY3YrSEFXV1FWejNBQjV1NWdETk1qYndSd0pRLzZ6bUVPT3lDdVlZN3ZJSzVpRDZQQVFtVk5UNEd6VkppZUxVbE9CNEUyVmtia3owU2ZWUnViVUdIWHhvdnJJbkpyQ2drK2JtZEJQVFNISlkzUHZuS1FtY3dkZk5Qc1dWVU9pajV0K0x6QTFHUVMvanpFK3R0NVhkU1FVL0xHcmQ3ZFRrMER3V1plUk9UVlh1TkNkZHgyWlUvTWZnamN1SW5OcS92Vk9JdkJ2amZPSmRobVpVek05U2Y2TFlMK1JPVFg4bUVMQno0Tk1zdWNaaVMvOFBBZ2hoQkJDQ0NHRURPM3hIWmExSHRuMHNxQ1dBQUFBQUVsRlRrU3VRbUNDIik7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLnBsYXllci10b2dnbGUtY29udGFpbmVyIC52aWRlby1idG4tcGF1c2UgaW1new0KICAgICAgICAgICAgICAgICAgICBjb250ZW50OnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFHUUFBQUJrQ0FZQUFBQnc0cFZVQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUJMa2xFUVZSNG5PM1J3UW1BUUJBRXdjcy8yNDVBZzFCd2hCclk5MExYT1dabVptWm1abVptWm1abVp2Wm8xZlhtblovOW45dlhRUUt5RlNRZ1cwRUNzaFVrSUZ0QkFySVZKQ0JiUVFLeUZTUWdXMEVDc2hVa0lGdEJBcklWSkNCYlFRS3lGU1FnVzBFQ3NoVWtJRnRCQXJJVkpDQmJRUUt5RlNRZ1cwRUNzaFVrSUZ0QkFySVZKQ0JiUVFLeUZTUWdXMEVDc2hVa0lGdEJBcklWSkNCYlFRS3lGU1FnVzBFQ3NoVWtJRnRCQXJJVkpDQmJRUUt5RlNRZ1cwRUNzaFVrSUZ0QkFySVZKQ0JiUVFLeUZTUWdXMEVDc2hVa0lGdEJBcklWSkNCYlFRS3lGU1FnVzBFQ3NoVWtJRnRCQXJJVkpDQmJRUUt5RlNRZ1cwRUNzaFVrSUZ0QkFySVZKQ0JiUVFLeUZTUWdXMEVDc2hVa0lGdEJBcklWSkNCYlFRSmlabVptWm1abVptWm1abVoybG5ZREFUU1ptWUlMNDhrQUFBQUFTVVZPUks1Q1lJST0iKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAuc291bmQtdG9nZ2xlLWNvbnRhaW5lciAuc291bmQtYnRuLXBsYXkgaW1new0KICAgICAgICAgICAgICAgICAgICBjb250ZW50OnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFHQUFBQUJnQ0FZQUFBRGltSGM0QUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUVvMGxFUVZSNG5PMmRUNmhWUlJ6SHAyeFJrSkc3VWtqVS9pektUWnZTaFpGQ0xRcHFtMEdRcmZwREZpVlJLT2hDTjZHZ0lKanBvaFpCQlM0TnNvaUNFbDVCejR5TU5vcTFlYnpYbmUvM25Ic293NXFZT0EvaU1iL3pQUGVlT2VlZXViOFB6RzVtN3R6ZjkvejV6Y3h2ZnNjWVJWRVVSVkVVUlZFVVJWRVVSVkVVcFdmTXpjM2RET0JGQUtjQW5DWDVNY2xubkhNcnVoNWI4bVJaOWhESlN5UmRvSHhiRk1YcXJzZVlMQUMyQTdnaUdIK3huSFBPM2RUMVdKT0Q1RTRBZnk5ai9NWHljdGZqVFFibjNQVUFEbCtqNFJmTFROZmpUZ0xuM0kzbEM5YlZMRm5YWSs4OUFGWUIrSElFNC85WHVoNS9yeW1LWXJWL21ZNXFmQlZnRFBJOHY0L2s1WEdNcndLTWlMVjJLMG1NYS95bUJQQU9nSmtXY0cwK2Zpc0NXR3UzQWZqSjl3UGdSMnZ0d3labFNPNEM4RTlUeGg5SGdNRmdzSlprc2FTL29iVjJuVWtOTjVxUEgxVUFrcStHK2dOd3dxU0VHOTNIanlvQWdKY0VBZjd5ZDRkSnlNZi9LcGJ4eHhHZ0tJbzEzdGhDdjBkTTN5a2E4UEZqdjRRQnZDZjBteTBzTE54aXB0M0haMlFCL0RnbHA4QS9vc3kwKy9pTUxJQUh3R21oNzNPbWJid2ZUUEk0Z0F2ZUpXdkxpT3hRZ1BJL0IvdjJkNGhwQXdBYlNIN2V0VEhaZ1FBZWtyTkMvd2VhNkgrNUg5OE1ZS0ZyUTdKaEFjcFo3Zy9sckh1RzVBTVZObmd0MURlQW4wM3NLNy9QeHFjZ0FJRDFnVm11SFE2SHQ0WHFENGZEMndGY0ZVUllIMDJBdmo1MnVMd0Fid2oxOTBtMkFQQjFxOTVRNmEyNEZBVWcrYnBRLzFjcHBBWEFtMEtiajZJSTRMMmRoQVc0dTJMUjcvRlFHMnZ0L1pKb1VRVHdMNWhVQmZDUS9DSlVIOEJKRThEZkdYNEdIR3JqbHkxTTAwZy8xcmRpQkFBOEpRandtM1B1T3NFbW53bHRIbzBoZ0V0WmdQbjUrWlhTeGsrZTV4dERiUUFjRkg1bnB3ckFlZ0pVWGRFa2R3ajFkd2oxajZvQXJDOEFnTjNDSStWZ3FINldaVnVFK3FkVUFOWVhJTXV5SjRSMm53aUMzU2tJY0ZZRjRFaVBvTHZxckhUNmNIaEJnRjlVQU5ZWHdGcDdxOUR1WXNYZWRXaitjRmtGWUgwQlNvT0dJcTEvbDlvQStETndCOHlyQUJ4SmdCWENGVDFRQVJoM0hsQmV6YXYwRWNTSmZBblBodXJyUzVqTkNwQmwyWk9DVjNPNmptQUF2akZORS92S1pFdWw2ajhDMkNNWTlPMktnNEdoK2pvUlk3TkxFYzhLQWp3bjFOZWxDTllVd0FkV1ZTekdCYU1kQUJ4cWN6RXU5ZVhvN1hVM1dDcVdveDlwWElBcDNwQjVOMVRmT1hjRHliek5EWmwzVWhXQTVEMFZXNUtQMWR5U2JINFpZcm1Jc0FRRTJDVVpzMkpUL2kyaHpZZFJCQ2dIZW1iS3dsTDJTcmJ3dm42b2pVOFdFazBBZnh6SEx6UWxLTUFHQUg4c3FRc2ZnQ1dGMGt2cEVhSUdabmxJYnVxekNLWTZOUEY4K1M3NGp1U0RGVFlJeGhINUlPVm9obDh5MkhVa1AwMUpnRHBVSENUWmI5cWtuSW9mSzQ5dUJsMnlTU3NtWW9SZ251ZjNtcjVoMHptZzhiM3BLM2wvamlodHJEaWk5THhKNEpEZTdDUUxBT0Q5SkEvcDlmMllxajlVYmxMQjllK2c5cFhCWUhDSFNRazNtYWtLWHBtS1ZBWC9SNU4xVEFDWXZIUTFGOG9yLzN6eTZXb1cwWVJORTBDdUtjdlNtQ3NZWlR5Z2FTdTd4Mm5pMXU1eG1ycDRNcUFtNys3TlhHRlcwOWQzOXdHSEdmMkFRM3VmTUhuQkI4ZVdFUndmQUhoYVAyR2lLSXFpS0lxaUtJcWlLSXFpS0lwaU91WmY0UUQ4OGp3L0dCd0FBQUFBU1VWT1JLNUNZSUk9Iik7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLnNvdW5kLXRvZ2dsZS1jb250YWluZXIgLnNvdW5kLWJ0bi1wYXVzZSBpbWd7DQogICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdBQUFBQmdDQVlBQUFEaW1IYzRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBRExVbEVRVlI0bk8yY1MyN1RVQmhHZnlpQ01Wc0FVVUNBUUVEVnJvZ3RNR1VGQ0NRZUM0QUJESkFxS2dRVEhuc0ExZ0FUNHUrTGVaZnFvaXZkVEtva3RaMXIvN2J6SGNtakt0ZkpPWDRrOXEzTmhCQkNDQ0dFRUVJSUlZUVFRZ2d4anhEQzhibC9FTzBDNEJhQXJ3QitrM3dPNExTY2R3VEpPeVREb2VXcEF2akpEeVNoQUg3eVExd1V3RkUrRmNCWFBoWEFWejRWd0ZjK0ZjQlhQaFhBVno0VndGYytGY0JYUGhYQVZ6NFZ3RmMrRmNCWFBoWEFWejVyQmdnaEhHdndsbnN6ZnUva3MyS0FvaWl1a1h3RDRCZUFQd0QycHRQcGhWeWZhenFkWGdTd0c2L094blhFZFUwbWs2czJkdm1zRUNESkwrZTh0aUM1bmVGemJhZXhEbzlmOWlaQ1cvSlpJVURjR3BlOEhxdEVTUEt4WlB6WE5tYjVQQ0pBdkhlY0Rna2hkNFFLOGtOY2QvYnpRbG1XVndEY0IvQ0o1UGMyNVRMREhnRGdaNFZ4YWtXb0lqOHRQeXdYSVlSVEpCOEJPUENXem5vQmRpdU9WU2xDRGZseEQzaVJVLzQ3Yjlsc0Z1RHNncE5rN1FoMTVNZDFBamlUSlFESng5NmkyVEJBQTNGekkrUVlZNVZqL3NHUUE2d3EwRTErSko1d3ZTVXpRNEJJVVJUWFNYNnJJWElId0EyU0V4ZjVLY0Ruc1FSb3VEWDdiUGt6RnZ5SzdNMWlEYWk1Si9qSmozZ0xaZ3NCTWtkb1QzNWtyQUV5UldoWGZtVE1BVmFNMEw3OHlOZ0ROSXpRamZ6SU9nUkF2YSthc3dBNzFnVmpENEQ2OHJ1Tk1PWUFhQzYvdXdoakRZRFY1WGNUWVl3L3hKQlBmdnNSZENtQ3ZwY2lBTndieXg2QUJoZldtbHpBeXhxZ0xNdkxBUDROUFFDSGVqazZ2WUdIUXc3QUlkK1FpWVFRVHBKOE84UUFKTTk3M1pJa3Vaazd3b08rSFk3c0NBQzhjcndwdjJlNUtjdnlFb0M3QUQ3MjRTdXFMU0dFc0JHbkl1YVNYemRDbWhmaysxd0xBTGNkQTV3QXNKOVQvb3dxMzQ0QS9JMGJnYTN6MUVRQUgzTExyN0VudkxkMW41d0xZR3ZCOU1SV0orZW1tZGczclU5NFRVOEhzQlczeG5nNGlvKzZBZkNTNUxtTW4yc3pubkRUMlB0cFhmMlMzNU4vME5obzg2UVl4KzdGTWIvTEU3TUozd2dtZlBjRUU3NFJUUGhHTU9FYndZUnZCQk8rRVV6NFJqRGhHOEdFYndRVHZoRk10QS8xNk9KK1JnRHd4UHQ5cmVQajY3K2tHeXpQOVBoNko0TDNqVzRoaEJCQ0NDR0VFRUlJSVlRUXdnYkZmMGhGVDBMT0dNTGNBQUFBQUVsRlRrU3VRbUNDIik7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLnN2aWV3X2Zsb2F0X3BsYXllcl9vdXRzdHJlYW17DQogICAgICAgICAgICAgICAgICAgIGhlaWdodDogdW5zZXQgIWltcG9ydGFudDsNCiAgICAgICAgICAgICAgICAgICAgei1pbmRleDogOTk5OTk5OTk5OTk5OTkgIWltcG9ydGFudDsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAvKmNvZGUgZm9yIG1vYmlsZSovDQogICAgICAgICAgICAgICAgLnN2LWltYWZyYW1lLWNvbnRhaW5lci1tb2JpbGV7DQogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxNzlweCAhaW1wb3J0YW50Ow0KICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMXB4ICFpbXBvcnRhbnQ7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLm5vX2Fkc3sNCiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTpub25lICFpbXBvcnRhbnQ7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLmNsb3NlX2J0bl9zZWN7DQogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyMHB4Ow0KICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB1bnNldCFpbXBvcnRhbnQ7DQogICAgICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IHVuc2V0IWltcG9ydGFudDsNCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogMjBweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNyk7DQogICAgICAgICAgICAgICAgICAgIGxlZnQ6IDA7DQogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICAgICAgICAgICAgICAgICAgdG9wOjA7DQogICAgICAgICAgICAgICAgICAgIHotaW5kZXg6MjE0NzQ4MzY0NjsNCiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTVweDsNCiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTpub25lOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAuY2xvc2VfYnRuX3NlY19hZnRlcl8xMHsNCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIwcHg7DQogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHVuc2V0IWltcG9ydGFudDsNCiAgICAgICAgICAgICAgICAgICAgYm94LXNpemluZzogdW5zZXQhaW1wb3J0YW50Ow0KICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsNCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogMjBweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNyk7DQogICAgICAgICAgICAgICAgICAgIGxlZnQ6IDA7DQogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICAgICAgICAgICAgICAgICAgdG9wOjA7DQogICAgICAgICAgICAgICAgICAgIHotaW5kZXg6MjE0NzQ4MzY0NjsNCiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTVweDsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAuY2xvc2VfYnRuX3NlY3sNCiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTpub25lICFpbXBvcnRhbnQ7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLmNyZWRpdC1jb250YWluZXJ7DQogICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50Ow0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIC8qRW5kIENvZGUgZm9yIG1vYmlsZSovDQoNCiAgICAgICAgICAgICAgICAvKkVORCBORVcgU1RZTEUqLw0KICAgICAgICAgICAgPC9zdHlsZT4NCiAgICAgICAgICAgIDxkaXYgaWQ9J2R2LXBsYXllci1zaXplJyBzdHlsZT0nJz4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3Atc3R5bGUiPg0KDQogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InN2LXBsYXllci1tYWluLWNvbnRhaW5lciIgY2xhc3M9ImZpeGVkRWxlbWVudCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJzdi1wbGF5ZXItY29udHJvbHMtY29udGFpbmVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJzdi1wbGF5ZXItdG9wLWNvbnRyb2xzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0ic3VyZXZpZXctbG9nbyIgc3R5bGU9J3RleHQtYWxpZ246IGxlZnQ7IGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50Oyc+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vc3VyZXZpZXcudHYvIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBjbGFzcz0ic3YtcGxheWVyLWxvZ28iIHNyYz0iaHR0cHM6Ly9hcHAuc3VyZXZpZXcudHYvbG9nby9zdXJldmlld19iYW5uZXJfbG9nby5zdmciIC8+PC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImN1c3RvbS1kbS1wbGF5ZXIiIHN0eWxlPSJiYWNrZ3JvdW5kOnJlZDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJ0ZXN0LXN1cmV2aWV3Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY3JpcHQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1haW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWFpbl9jb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluX2NvbnRhaW5lci5pZCA9ICJzdi1naW1hLWNvbnN0LWNvbnRuciI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbl9jb250YWluZXIuY2xhc3NOYW1lID0gInN2LWNvbnRlbnQtcGFyZW50IHN2aWV3X2Zsb2F0X3BsYXllcl9vdXRzdHJlYW0gY29sbGFwc2UiOw0KDQoNCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpOw0KLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluay50eXBlID0gInRleHQvY3NzIjsNCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsucmVsID0gInN0eWxlc2hlZXQiOw0KLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluay5ocmVmID0gImh0dHBzOi8vYXBwLnN1cmV2aWV3LnR2L2Fzc2V0cy9vdXRzdHJlYW1fcGxheWVyL3N0eWxlLmNzcyI7DQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluLmFwcGVuZENoaWxkKGxpbmspOw0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3JlZGl0X2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWRpdF9jb250YWluZXIuY2xhc3NOYW1lID0gImNyZWRpdC1jb250YWluZXIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzcGFuX2FkdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFuX2Fkdi5pbm5lckhUTUwgPSAiLS0iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWRpdF9jb250YWluZXIuYXBwZW5kQ2hpbGQoc3Bhbl9hZHYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW5fY29udGFpbmVyLmFwcGVuZENoaWxkKGNyZWRpdF9jb250YWluZXIpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNsb3NlX2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2NvbnRhaW5lci5jbGFzc05hbWUgPSAiY2xvc2VfYnRuX3NlYyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfY29udGFpbmVyLmlkID0gInN2aWV3LWNsb3NlLXNlY3Rpb24iOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNsb3NlX3N1Yl9jb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9zdWJfY29udGFpbmVyLnN0eWxlLmNzc1RleHQgPSAiYmFja2dyb3VuZDogdW5zZXQhaW1wb3J0YW50O2JveC1zaXppbmc6IHVuc2V0IWltcG9ydGFudDtwYWRkaW5nOiAycHg7cG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbTogMDsgbGVmdDogMDsiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjbG9zZV9zdWJfc3ViX2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX3N1Yl9zdWJfY29udGFpbmVyLmlkID0gImhpZGVTdmlld1NtYXJ0QmFubmVyIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9zdWJfc3ViX2NvbnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gImJhY2tncm91bmQ6IHVuc2V0IWltcG9ydGFudDtib3gtc2l6aW5nOiB1bnNldCFpbXBvcnRhbnQ7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTogYmxvY2s7IGZsb2F0OiBsZWZ0OyB3aWR0aDogMTBweDsgaGVpZ2h0OiAxMHB4OyBtYXJnaW46IDNweDsgZm9udC1zaXplOiAxOHB4OyBib3gtc2l6aW5nOiB1bnNldCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDogMDsiOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNyb3NzX2ltYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3NfaW1hZ2Uuc3JjID0gImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBREFBQUFBd0NBWUFBQUJYQXZtSEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFCSUVsRVFWUjRuTzJaM1E0Qk1SQkd5N3NMRjBLNDRBYnZLSDV1anpTN1Fsald0cDNwU09ZOHdQUTczZjVNc3lFNGp1TTRVZ0FUNEFTc2dMSGl1R05nRFp5QmFVNmhJdy8yR2hJMDRlTllkNDQ1eGVaUGhjUWxlQThmbWVjVUhBR2JsNElIQ1FtYXNiYkZKMHhEQXFud0doSkloNWVVUUN1OGhJUjYrSklTMWNLWGtLZ2VQa2ZDVFBnVUNYUGhoMGlZRGYrTGhQbndkOXF3dTQ2Z3I3M056bHo0bmk5aGUrWUhTTmdQSC9tdzV0ODI5citGdHk5QjkyT2theFBiVzBwOE9TbzFIMFZKL0hMT201Vmd3Q1ZsVG9LRUc5YU1CQm50UVhVSkN2UTIxU1FvMkppcFN5RFFWYUlsSWRrU0l5MmgwYzhqSmFINUdFRkNBbGhxaE8vcHB4WWhGZUNxRmY2THhDV2tBc3hpZ1RnTEZYNXdMTnF4MDM5d09JN2pPS0dIRy9Ia0NRb3kxaHJvQUFBQUFFbEZUa1N1UW1DQyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3NfaW1hZ2Uuc3R5bGUuY3NzVGV4dCA9ICJoZWlnaHQ6IDE1cHg7IGN1cnNvcjogcG9pbnRlcjsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbjogdW5zZXQ7IHZlcnRpY2FsLWFsaWduOiB1bnNldDsgYm9yZGVyLXN0eWxlOiB1bnNldDsgbWFyZ2luLWxlZnQ6IC00cHg7IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9zdWJfc3ViX2NvbnRhaW5lci5hcHBlbmRDaGlsZChjcm9zc19pbWFnZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2Vfc3ViX2NvbnRhaW5lci5hcHBlbmRDaGlsZChjbG9zZV9zdWJfc3ViX2NvbnRhaW5lcik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfY29udGFpbmVyLmFwcGVuZENoaWxkKGNsb3NlX3N1Yl9jb250YWluZXIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW5fY29udGFpbmVyLmFwcGVuZENoaWxkKGNsb3NlX2NvbnRhaW5lcik7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW1hZnJhbWVfY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZnJhbWVfY29udGFpbmVyLmNsYXNzTmFtZSA9ICJzdi1pbWFmcmFtZS1jb250YWluZXIgc3YtaW1hZnJhbWUtY29udGFpbmVyLW1vYmlsZSI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBsYXllcl9jb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5ZXJfY29udGFpbmVyLmlkID0gInZpZGVvLXBsYXllci1jb250YWluZXIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWZyYW1lX2NvbnRhaW5lci5hcHBlbmRDaGlsZChwbGF5ZXJfY29udGFpbmVyKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdl9sb2dvX2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2X2xvZ29fY29udGFpbmVyLmNsYXNzTmFtZSA9ICJzdi1sb2dvIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdl9sb2dvX2NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9wZW4oJ2h0dHBzOi8vc3VyZXZpZXcudHYnLCAnX2JsYW5rJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3ZfbG9nbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2X2xvZ28uc3JjID0gImh0dHBzOi8vYXBwLnN1cmV2aWV3LnR2L2NvbnRyb2xzL3N1cmV2aWV3LWljb24uc3ZnIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdl9sb2dvX2NvbnRhaW5lci5hcHBlbmRDaGlsZChzdl9sb2dvKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFmcmFtZV9jb250YWluZXIuYXBwZW5kQ2hpbGQoc3ZfbG9nb19jb250YWluZXIpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJybl9wbGFjZW1lbnRfZm9vdGVyX2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJybl9wbGFjZW1lbnRfZm9vdGVyX2NvbnRhaW5lci5jbGFzc05hbWUgPSAiYnRuLXBsYWNlbWVudC1mb290ZXIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWZyYW1lX2NvbnRhaW5lci5hcHBlbmRDaGlsZChicm5fcGxhY2VtZW50X2Zvb3Rlcl9jb250YWluZXIpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBsYXllcl90b2dnZXJfY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheWVyX3RvZ2dlcl9jb250YWluZXIuY2xhc3NOYW1lID0gInBsYXllci10b2dnbGUtY29udGFpbmVyIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGxheV9wYXVzZV9idG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5X3BhdXNlX2J0bi5pZCA9ICJwbGF5ZXItdG9nZ2xlIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5X3BhdXNlX2J0bi5jbGFzc05hbWUgPSAidmlkZW8tYnRuLXBhdXNlIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGxheXBhdXNlX2ljb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5X3BhdXNlX2J0bi5hcHBlbmRDaGlsZChwbGF5cGF1c2VfaWNvbik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheWVyX3RvZ2dlcl9jb250YWluZXIuYXBwZW5kQ2hpbGQocGxheV9wYXVzZV9idG4pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWZyYW1lX2NvbnRhaW5lci5hcHBlbmRDaGlsZChwbGF5ZXJfdG9nZ2VyX2NvbnRhaW5lcik7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc291bmRfdG9nZ2VyX2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdW5kX3RvZ2dlcl9jb250YWluZXIuY2xhc3NOYW1lID0gInNvdW5kLXRvZ2dsZS1jb250YWluZXIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzb3VuZF9wYXVzZV9idG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VuZF9wYXVzZV9idG4uaWQgPSAic291bmQtdG9nZ2xlIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VuZF9wYXVzZV9idG4uY2xhc3NOYW1lID0gInNvdW5kLWJ0bi1wYXVzZSI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNvdW5kX2ljb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VuZF9wYXVzZV9idG4uYXBwZW5kQ2hpbGQoc291bmRfaWNvbik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291bmRfdG9nZ2VyX2NvbnRhaW5lci5hcHBlbmRDaGlsZChzb3VuZF9wYXVzZV9idG4pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWZyYW1lX2NvbnRhaW5lci5hcHBlbmRDaGlsZChzb3VuZF90b2dnZXJfY29udGFpbmVyKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW5fY29udGFpbmVyLmFwcGVuZENoaWxkKGltYWZyYW1lX2NvbnRhaW5lcik7DQoNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbi5hcHBlbmRDaGlsZChtYWluX2NvbnRhaW5lcik7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeHl6ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Qtc3VyZXZpZXciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4eXouYXBwZW5kQ2hpbGQobWFpbik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NjcmlwdD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY3JpcHQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmN1cnJQbGF5ZXIgPSAiIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc3ZfcGdfcmVxID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29uc3RydWN0QWRDb250YWluZXIgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zdl9wZ19yZXEgPSB3aW5kb3cuc3ZfcGdfcmVxICsgMTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5zdl9wZ19yZXEgPD0gMTApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdmFpbGFibGVBZENvbnRhaW5lcklkcyA9IFsic3YtZ2ltYS0xIiwgInN2LWdpbWEtMiIsICJzdi1naW1hLTMiLCAic3YtZ2ltYS00IiwgInN2LWdpbWEtNSIsICJzdi1naW1hLTYiLCAic3YtZ2ltYS03IiwgInN2LWdpbWEtOCIsICJzdi1naW1hLTkiLCAic3YtZ2ltYS0xMCJdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN2UGFyZW50U2xvdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8tcGxheWVyLWNvbnRhaW5lciIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF2YWlsYWJsZVBsYXllcnMgPSBzdlBhcmVudFNsb3RzLmNoaWxkcmVuOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRpc3RhbnRQbGF5ZXJJRHMgPSBbXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdmFpbGFibGVQbGF5ZXJzLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF2YWlsYWJsZVBsYXllcnMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVhY2hQbGF5ZXJJZCA9IGF2YWlsYWJsZVBsYXllcnNbaV0uaWQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gYXZhaWxhYmxlQWRDb250YWluZXJJZHMuaW5kZXhPZihlYWNoUGxheWVySWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlQWRDb250YWluZXJJZHMuc3BsaWNlKGluZGV4LCAxKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdmFpbGFibGVBZENvbnRhaW5lcklkcy5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkQ29udGFpbmVySWQgPSBhdmFpbGFibGVBZENvbnRhaW5lcklkcy5wb3AoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZENvbnRhaW5lci5pZCA9IGFkQ29udGFpbmVySWQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvLXBsYXllci1jb250YWluZXIiKS5hcHBlbmRDaGlsZChhZENvbnRhaW5lcik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkQ29udGFpbmVySWQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGxvYWRHSU1BKHBsYXllckNvbnRhaW5lcklEKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXRQbGF5ZXJDb250YWluZXJJZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBsYXllckNvbnRhaW5lcklEKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkRGlzcGxheUNvbnRhaW5lciA9IG5ldyBnb29nbGUuaW1hLkFkRGlzcGxheUNvbnRhaW5lcih0YXJnZXRQbGF5ZXJDb250YWluZXJJZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkRGlzcGxheUNvbnRhaW5lci5pbml0aWFsaXplKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFBsYXllckNvbnRhaW5lcklkLnNldEF0dHJpYnV0ZSgiZGF0YS1naW1hLXAtaWQiLCBhZERpc3BsYXlDb250YWluZXIuWik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnSU1BTG9hZGVyID0gbmV3IGdvb2dsZS5pbWEuQWRzTG9hZGVyKGFkRGlzcGxheUNvbnRhaW5lcik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdJTUFMb2FkZXIuYWRkRXZlbnRMaXN0ZW5lcihnb29nbGUuaW1hLkFkc01hbmFnZXJMb2FkZWRFdmVudC5UeXBlLkFEU19NQU5BR0VSX0xPQURFRCwgb25BZHNNYW5hZ2VyTG9hZGVkLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdJTUFMb2FkZXIuZ2V0U2V0dGluZ3MoKS5zZXRGZWF0dXJlRmxhZ3MoeydkaXNhYmxlQ2xpY2tBZFBhdXNlJzogdHJ1ZX0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnSU1BTG9hZGVyLmFkZEV2ZW50TGlzdGVuZXIoZ29vZ2xlLmltYS5BZEVycm9yRXZlbnQuVHlwZS5BRF9FUlJPUiwgb25BZHNFcnJvciwgZmFsc2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ0lNQUxvYWRlcjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjb25maWd1cmVHSU1BKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ0lNQUNvbmYgPSBuZXcgZ29vZ2xlLmltYS5BZHNSZXF1ZXN0KCk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ0lNQUNvbmYuYWRUYWdVcmwgPSAnaHR0cHM6Ly9wdWJhZHMuZy5kb3VibGVjbGljay5uZXQvZ2FtcGFkL2Fkcz9pdT0vMjI3MjkzMTU1NzQsMjMwMDQ2NjIxODQvSnVibmEvSnVibmFfQWwtbWFyc2QmZGVzY3JpcHRpb25fdXJsPWh0dHBzJTNBJTJGJTJGYWwtbWFyc2QuY29tJTJGJnRmY2Q9MCZucGE9MCZzej00MDB4MzAwJTdDNjQweDQ4MCZnZGZwX3JlcT0xJnVudmlld2VkX3Bvc2l0aW9uX3N0YXJ0PTEmb3V0cHV0PXZhc3QmZW52PXZwJmltcGw9cyZ2cG11dGU9MSZjb3JyZWxhdG9yPSc7DQoNCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ0lNQUNvbmYuYWRUYWdVcmwgPSAiaHR0cHM6Ly9wdWJhZHMuZy5kb3VibGVjbGljay5uZXQvZ2FtcGFkL2Fkcz9pdT0vMjE3NzU3NDQ5MjMvZXh0ZXJuYWwvc2luZ2xlX2FkX3NhbXBsZXMmc3o9NjQweDQ4MCZjdXN0X3BhcmFtcz1zYW1wbGVfY3QlM0RsaW5lYXImY2l1X3N6cz0zMDB4MjUwJTJDNzI4eDkwJmdkZnBfcmVxPTEmb3V0cHV0PXZhc3QmdW52aWV3ZWRfcG9zaXRpb25fc3RhcnQ9MSZlbnY9dnAmaW1wbD1zJnZwbXV0ZT0wJmNvcnJlbGF0b3I9IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdJTUFDb25mLmxpbmVhckFkU2xvdFdpZHRoID0gNDQwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnSU1BQ29uZi5saW5lYXJBZFNsb3RIZWlnaHQgPSAyNDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdJTUFDb25mLm5vbkxpbmVhckFkU2xvdFdpZHRoID0gMjQwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnSU1BQ29uZi5ub25MaW5lYXJBZFNsb3RIZWlnaHQgPSAxNTA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnSU1BQ29uZjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb25BZHNNYW5hZ2VyTG9hZGVkID0gZnVuY3Rpb24gKGFkc01hbmFnZXJMb2FkZWRFdmVudCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZHNNYW5hZ2VyID0gYWRzTWFuYWdlckxvYWRlZEV2ZW50LmdldEFkc01hbmFnZXIoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkc01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcigNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb29nbGUuaW1hLkFkRXZlbnQuVHlwZS5TVEFSVEVELA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRTdGFydGVkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRzTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvb2dsZS5pbWEuQWRFdmVudC5UeXBlLlJFU1VNRUQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRzUmVzdW1lKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRzTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvb2dsZS5pbWEuQWRFdmVudC5UeXBlLlBBVVNFRCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZHNQYXVzZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkc01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcigNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb29nbGUuaW1hLkFkRXZlbnQuVHlwZS5WT0xVTUVfTVVURUQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRzTXV0ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkc01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcigNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb29nbGUuaW1hLkFkRXZlbnQuVHlwZS5WT0xVTUVfQ0hBTkdFRCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZHNVbk11dGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZHNNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ29vZ2xlLmltYS5BZEV2ZW50LlR5cGUuQ0xJQ0ssDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25BZHNDbGljayk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkc01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcigNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb29nbGUuaW1hLkFkRXZlbnQuVHlwZS5DT01QTEVURSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkc0NvbXBsZXRlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRzTWFuYWdlci5zZXRWb2x1bWUoMCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZHNNYW5hZ2VyLmluaXQoMTc5LCAxMDEsIGdvb2dsZS5pbWEuVmlld01vZGUuTk9STUFMKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkc01hbmFnZXIuc3RhcnQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoYWRFcnJvcikgew0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXNfcGxheWluZyA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlzX211dGVkID0gMTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWRzTWFuYWdlcjsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZXN0cm95UGxheWVyID0gZnVuY3Rpb24gKHBsYXllcklkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXZbZGF0YS1naW1hLXAtaWQ9IicgKyBwbGF5ZXJJZCArICciXScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnJlbW92ZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGluaXRBZHMoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwbGF5ZXJDb250YWluZXJJRCA9IGNvbnN0cnVjdEFkQ29udGFpbmVyKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnSU1BTG9hZGVyID0gbG9hZEdJTUEocGxheWVyQ29udGFpbmVySUQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ0lNQUNvbmYgPSBjb25maWd1cmVHSU1BKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdJTUFMb2FkZXIucmVxdWVzdEFkcyhnSU1BQ29uZik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG9uQWRzQ29tcGxldGUoZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3ZpZXctY2xvc2Utc2VjdGlvbiIpLmNsYXNzTGlzdC5yZW1vdmUoImNsb3NlX2J0bl9zZWNfYWZ0ZXJfMTAiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRzTWFuYWdlci5zZXRWb2x1bWUoMCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX211dGVkID0gMTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBsYXllcklkID0gZS50YXJnZXQuZy5aOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdkdpbWFDb25zdENvbnRuciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdi1naW1hLWNvbnN0LWNvbnRuciIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdkdpbWFDb25zdENvbnRuci5jbGFzc0xpc3QuYWRkKCJjb2xsYXBzZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lQbGF5ZXIocGxheWVySWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdEFkcygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAyMDAwKTsNCg0KLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdi1wbGF5ZXItbWFpbi1jb250YWluZXIiKS5zdHlsZS5jc3NUZXh0ID0gImRpc3BsYXk6bm9uZSI7DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBvbkFkU3RhcnRlZChlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN2R2ltYUNvbnN0Q29udG5yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2LWdpbWEtY29uc3QtY29udG5yIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2R2ltYUNvbnN0Q29udG5yLmNsYXNzTGlzdC5yZW1vdmUoImNvbGxhcHNlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3BsYXlpbmcgPSAxOw0KLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdi1wbGF5ZXItbWFpbi1jb250YWluZXIiKS5zdHlsZS5jc3NUZXh0ID0gImRpc3BsYXk6dW5zZXQiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcl8xMF9zZWMoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYWRzUGF1c2UoZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19wbGF5aW5nID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYWRzUmVzdW1lKGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfcGxheWluZyA9IDE7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFkc011dGUoZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19tdXRlZCA9IDE7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFkc1VuTXV0ZShlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX211dGVkID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb25BZHNDbGljayhlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG9uQWRzRXJyb3IoZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0cm95UGxheWVyKGUuY3VycmVudFRhcmdldC5nLlopOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0QWRzKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvZ2dsZVZpZGVvUGxheWVyKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNfcGxheWluZykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRzTWFuYWdlci5wYXVzZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfcGxheWluZyA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGxheWVyLXRvZ2dsZSIpLmNsYXNzTmFtZSA9ICJ2aWRlby1idG4tcGxheSI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZHNNYW5hZ2VyLnJlc3VtZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfcGxheWluZyA9IDE7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGxheWVyLXRvZ2dsZSIpLmNsYXNzTmFtZSA9ICJ2aWRlby1idG4tcGF1c2UiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvZ2dsZVNvdW5kQnV0dG9uKCkgew0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19tdXRlZCA9PT0gMSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfbXV0ZWQgPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRzTWFuYWdlci5zZXRWb2x1bWUoMSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic291bmQtdG9nZ2xlIikuY2xhc3NOYW1lID0gInNvdW5kLWJ0bi1wbGF5IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX211dGVkID0gMTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkc01hbmFnZXIuc2V0Vm9sdW1lKDApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNvdW5kLXRvZ2dsZSIpLmNsYXNzTmFtZSA9ICJzb3VuZC1idG4tcGF1c2UiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwbGF5UGF1c2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGxheWVyLXRvZ2dsZScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlQYXVzZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRvZ2dsZVZpZGVvUGxheWVyKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzb3VuZFVubXV0ZWJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzb3VuZC10b2dnbGUnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VuZFVubXV0ZWJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRvZ2dsZVNvdW5kQnV0dG9uKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBHSU1BU2RrU2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0lNQVNka1NjcmlwdC50eXBlID0gInRleHQvamF2YXNjcmlwdCI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0lNQVNka1NjcmlwdC5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRBZHMoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdJTUFTZGtTY3JpcHQuc3JjID0gIi8vaW1hc2RrLmdvb2dsZWFwaXMuY29tL2pzL3Nka2xvYWRlci9pbWEzLmpzIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKEdJTUFTZGtTY3JpcHQpOw0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpZGVTdmlld1NtYXJ0QmFubmVyJykub25jbGljayA9IGZ1bmN0aW9uIChldnQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3ZHaW1hQ29uc3RDb250bnIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3YtZ2ltYS1jb25zdC1jb250bnIiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRzTWFuYWdlci5wYXVzZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdkdpbWFDb25zdENvbnRuci5jbGFzc0xpc3QuYWRkKCJjb2xsYXBzZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLCBmdW5jdGlvbiAoZXZlbnQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmhpZGRlbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlVmlkZW9QbGF5ZXIoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZVZpZGVvUGxheWVyKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaXNJblZpZXdwb3J0KGVsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LnRvcCA+PSAwICYmDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5sZWZ0ID49IDAgJiYNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LmJvdHRvbSA8PSAod2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpICYmDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5yaWdodCA8PSAod2luZG93LmlubmVyV2lkdGggfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib3ggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc3YtY29udGVudC1wYXJlbnQnKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZVRleHQgPSBpc0luVmlld3BvcnQoYm94KTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZVRleHQpIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzaXZlOiB0cnVlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFmdGVyXzEwX3NlYygpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3ZpZXctY2xvc2Utc2VjdGlvbiIpLmNsYXNzTGlzdC5hZGQoImNsb3NlX2J0bl9zZWNfYWZ0ZXJfMTAiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb3BlbklOSG91c2UoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKCdodHRwczovL3N1cmV2aWV3LnR2JywgJ19ibGFuaycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zY3JpcHQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0ic3YtcGxheWVyLWNsb3NlLXBsYXllciIgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyB3aWR0aDoxMDAlOyBtYXJnaW4tdG9wOiAtMThweDsiIG9uY2xpY2s9ImNsb3NlUGxheWVyKCk7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPSJzdi1wbGF5ZXItY2xvc2UiIHNyYz0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFEQUFBQUF3Q0FZQUFBQlhBdm1IQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUJJRWxFUVZSNG5PMlozUTRCTVJCR3k3c0xGMEs0NEFidktINXVqelM3UWxqV3RwM3BTT1k4d1BRNzNmNU1zeUU0anVNNFVnQVQ0QVNzZ0xIaXVHTmdEWnlCYVU2aEl3LzJHaEkwNGVOWWQ0NDV4ZVpQaGNRbGVBOGZtZWNVSEFHYmw0SUhDUW1hc2JiRkoweERBcW53R2hKSWg1ZVVRQ3U4aElSNitKSVMxY0tYa0tnZVBrZkNUUGdVQ1hQaGgwaVlEZitMaFBud2Q5cXd1NDZncjczTnpsejRuaTloZStZSFNOZ1BIL213NXQ4MjlyK0Z0eTlCOTJPa2F4UGJXMHA4T1NvMUgwVkovSExPbTVWZ3dDVmxUb0tFRzlhTUJCbnRRWFVKQ3ZRMjFTUW8ySmlwU3lEUVZhSWxJZGtTSXkyaDBjOGpKYUg1R0VGQ0FsaHFoTy9wcHhZaEZlQ3FGZjZMeENXa0FzeGlnVGdMRlg1d0xOcXgwMzl3T0k3ak9LR0hHL0hrQ1FveTFocm9BQUFBQUVsRlRrU3VRbUNDIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgPHNjcmlwdD4NCiAgICAgICAgICAgIHZhciBmaXJzdF90aW1lID0gMTsNCiAgICAgICAgICAgIGxldCBpc1NWVGFiQWN0aXZlID0gdHJ1ZTsNCiAgICAgICAgICAgIGZ1bmN0aW9uIGdldFBsYXllclZpZXdhYmlsaXR5KHBsYXllcl9vYmopIHsNCiAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0SGVpZ2h0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N1c3RvbS1kbS1wbGF5ZXInKS5vZmZzZXRIZWlnaHQ7DQogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1cmV2aWV3LXZpZXctYWRzLTAwMScpLnN0eWxlLmhlaWdodCA9IG9mZnNldEhlaWdodCArIDMyICsgJ3B4JzsNCiAgICAgICAgICAgICAgICBwbGF5ZXJfb2JqLnNldFZvbHVtZSgwKTsNCiAgICAgICAgICAgICAgICBwbGF5ZXJfb2JqLm9uKGRhaWx5bW90aW9uLmV2ZW50cy5QTEFZRVJfVklFV0FCSUxJVFlDSEFOR0UsIChwbGF5ZXJfb2JqKSA9PiB7DQogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJSZWNlaXZlZCBQTEFZRVJfU1RBUlQgZXZlbnQuIiwgcGxheWVyX29iai5wbGF5ZXJJc1ZpZXdhYmxlKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHBsYXllcl9vYmoucGxheWVySXNWaWV3YWJsZSkgew0KDQoNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCg0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGZ1bmN0aW9uIGNsb3NlUGxheWVyKCkgew0KICAgICAgICAgICAgICAgIGNvbnN0IHN2R2ltYUNvbnN0Q29udG5yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2LWdpbWEtY29uc3QtY29udG5yIik7DQogICAgICAgICAgICAgICAgYWRzTWFuYWdlci5wYXVzZSgpOw0KICAgICAgICAgICAgICAgIGlmIChhZHNNYW5hZ2VyKSB7DQogICAgICAgICAgICAgICAgICAgIGFkc01hbmFnZXIuZGVzdHJveSgpOw0KICAgICAgICAgICAgICAgICAgICBhZHNNYW5hZ2VyID0gbnVsbDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgc3ZHaW1hQ29uc3RDb250bnIuY2xhc3NMaXN0LmFkZCgiY29sbGFwc2UiKTsNCiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3YtcGxheWVyLWNvbnRyb2xzLWNvbnRhaW5lciIpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQovLyAgICAgICAgICAgICAgICBkYWlseW1vdGlvbi5nZXRQbGF5ZXIoKQ0KLy8gICAgICAgICAgICAgICAgICAgICAgICAudGhlbigocGxheWVyKSA9PiB7DQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5ZXIuZGVzdHJveSgpOw0KLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2LXBsYXllci1jb250cm9scy1jb250YWluZXIiKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2LXBsYXllci1jbG9zZS1wbGF5ZXIiKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KLy8gICAgICAgICAgICAgICAgICAgICAgICB9KQ0KLy8gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IGNvbnNvbGUuZXJyb3IoZSkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICANCg0KICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuc2Nyb2xsWSA8PSA0MDApIHsNCiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coInRvcCBvZiBwYWdlIik7DQoNCiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2LXBsYXllci1jb250cm9scy1jb250YWluZXIiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3YtcGxheWVyLWNsb3NlLXBsYXllciIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX3BsYXlpbmcgJiYgYWRzTWFuYWdlcikgew0KICAgICAgICAgICAgICAgICAgICAgICAgYWRzTWFuYWdlci5wYXVzZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaXNfcGxheWluZyA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGxheWVyLXRvZ2dsZSIpLmNsYXNzTmFtZSA9ICJ2aWRlby1idG4tcGxheSI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIA0KDQoNCiAgICAgICAgICAgIHdpbmRvdy5vbnNjcm9sbCA9IGZ1bmN0aW9uIChldikgew0KLy8gICAgICAgICAgICAgICAgY29uc29sZS5sb2coImRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0Iixkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCk7DQovLyAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygid2luZG93LnNjcm9sbFkiLHdpbmRvdy5zY3JvbGxZKTsNCiAgICAgICAgICAgICAgICBpZiAod2luZG93LnNjcm9sbFkgPD0gNDAwKSB7DQovLyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coInRvcCBvZiBwYWdlIik7DQovLyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2LXBsYXllci1tYWluLWNvbnRhaW5lciIpLmNsYXNzTGlzdC5yZW1vdmUoImZpeGVkRWxlbWVudCIpOw0KLy8gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdi1wbGF5ZXItY29udHJvbHMtY29udGFpbmVyIikuY2xhc3NMaXN0LnJlbW92ZSgiZml4ZWRFbGVtZW50Rmlyc3RDaGlsZCIpOw0KICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3YtcGxheWVyLWNvbnRyb2xzLWNvbnRhaW5lciIpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdi1wbGF5ZXItY2xvc2UtcGxheWVyIikuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX3BsYXlpbmcgJiYgYWRzTWFuYWdlcikgew0KICAgICAgICAgICAgICAgICAgICAgICAgYWRzTWFuYWdlci5wYXVzZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaXNfcGxheWluZyA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGxheWVyLXRvZ2dsZSIpLmNsYXNzTmFtZSA9ICJ2aWRlby1idG4tcGxheSI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBpZiAoaXNfcGxheWluZyA9PSAwICYmIGFkc01hbmFnZXIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGFkc01hbmFnZXIucmVzdW1lKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpc19wbGF5aW5nID0gMTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbGF5ZXItdG9nZ2xlIikuY2xhc3NOYW1lID0gInZpZGVvLWJ0bi1wYXVzZSI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0X3RpbWUgPT0gMSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2LXBsYXllci1jb250cm9scy1jb250YWluZXIiKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdi1wbGF5ZXItY2xvc2UtcGxheWVyIikuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH07DQoNCg0KICAgICAgICA8L3NjcmlwdD4=";
var googleBs64Code=widget_code;
top.svJQInj_1 = {};
by_tag_name="body";
placed_by="1";
no_of_tag="0";
if (!top.window.jQuery) {
var dJqDynamic = document.createElement("script");
dJqDynamic.src = atob("aHR0cHM6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnkvMy43LjAvanF1ZXJ5Lm1pbi5qcw==");
top.document.getElementsByTagName("head")[0].append(dJqDynamic);
dJqDynamic.onload = function(){
top.svJQInj_1 = jQuery.noConflict(true);
}
}else{
}
setTimeout(function(){
try{
}catch{
}
if(document.getElementsByClassName('teads-inread').length>0){
var teadsMarginStyle = document.createElement('style');
teadsMarginStyle.innerHTML=".teads-inread {padding-bottom:10px !important;}";
document.getElementsByClassName('teads-inread')[0].appendChild(teadsMarginStyle);
}
},8000);
},800);
function set_aniview_after15sec(){
setlogoTeads_intval=setInterval(function(){
try{
document.querySelector(".teads-inread").remove();
}catch{
}
},15000);
}
function new_logo(company_id){
var isLogoTriggered = false;
var isLogoTriggeredTeads = false;
if(company_id==2){
var test_id=356;
setlogoTeads_intval=setInterval(function(){
teads_primary_div=document.getElementById('teads0');
if(test_id==64 && !isLogoTriggeredTeads){
isLogoTriggeredTeads = true;
clearInterval(setlogoTeads_intval);
var bottom_div = document.createElement("div");
bottom_div.id="sureview_branding_2";
bottom_div.style.cssText="line-height:0px;";
bottom_div.className="sureviewBottomDiv sureviewtv";
var anchor1=document.createElement("a");
anchor1.href="http://sureview.tv/";
anchor1.target="_BLANK";
var bottom_logo_img = document.createElement("img");
bottom_logo_img.id="sureview_logo_bottom_2";
bottom_logo_img.src="https://b-cdn.sureview.tv/ads-images/logo/sureview_logo.svg";
bottom_logo_img.style.cssText="height: 18px !important; margin: 0 !important; margin-top: 2px !important; width: 70px !important;";
anchor1.appendChild(bottom_logo_img);
bottom_div.appendChild(anchor1);
teads_primary_div.appendChild(bottom_div);
}else{
}
},1000);
}else{
daily_motion_ads=document.getElementById('daily_motion_ads_div');
setlogo_intval=setInterval(function(){
if(document.getElementsByClassName('dm-player-wrapper').length > 0 && !isLogoTriggered){
isLogoTriggered = true;
clearInterval(setlogo_intval);
var bottom_div = document.createElement("div");
bottom_div.id="sureview_branding";
bottom_div.style.cssText="line-height:0px;";
bottom_div.className="sureviewBottomDiv sureviewtv";
var anchor1=document.createElement("a");
anchor1.href="http://sureview.tv/";
anchor1.target="_BLANK";
var bottom_logo_img = document.createElement("img");
bottom_logo_img.id="sureview_logo_bottom";
bottom_logo_img.src="https://b-cdn.sureview.tv/ads-images/logo/sureview_logo.svg";
bottom_logo_img.style.cssText="height: 18px !important; margin: 0 !important; margin-top: 2px !important; width: 70px !important;";
anchor1.appendChild(bottom_logo_img);
bottom_div.appendChild(anchor1);
daily_motion_ads.appendChild(bottom_div);
is_dm_ready();
}
},1000);
}
}
function is_dm_ready(){
var is_dm_sv_ready = setInterval(function(){
if(top.document.querySelectorAll(".dailymotion-player-wrapper .dm__close-button").length > 0){
clearInterval(is_dm_sv_ready);
document.querySelector(".dailymotion-player-wrapper .dm__close-button").innerHTML += '
';
}
},500);
}
function is_avail_selector(name, by){
if(by==1){
placement_salector=document.getElementsByTagName(name);
if(placement_salector.length>0){
return placement_salector;
}else{
return 0;
}
}else if(by==2){
placement_salector=document.getElementsByClassName(name);
if(placement_salector.length>0){
return placement_salector;
}else{
return 0;
}
}else if(by==3){
placement_salector=top.document.getElementById(name);
if(placement_salector===null){
return 0;
}else{
return placement_salector;
}
}else if(by==4){
placement_salector=document.querySelectorAll(name);
if(placement_salector===null){
return 0;
}else{
return placement_salector;
}
}else{
placement_salector=document.getElementById(name);
if(placement_salector===null){
return 0;
}else{
return placement_salector;
}
}
}
function set_bottom_logo(company){
var counter=1;
setlogo_intval=setInterval(function(){
counter++;
try{
document.getElementById("sureview_branding").remove();
}catch(error){
}
var sureview_div=document.getElementById('Sureview356').clientWidth;
try{
if(company==1){
var video_div=document.getElementsByClassName('ima-ad-container')[0].clientWidth;
}else if(company==2){
var video_div=document.getElementsByClassName('teads-player')[0].clientWidth;
}else if(company==4){
var video_div=document.getElementById('ifr_ICAgICAgICA8ZGl2IGlkPSJzdXJldmlldy12aWV3LWFkcy0wMDEiPg0KICAgICAgICAgICAgPHN0eWxlPg0KICAgICAgICAgICAgICAgIC5kYWlseW1vdGlvbi1wbGF5ZXItd3JhcHBlciBpZnJhbWV7DQogICAgICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6dW5zZXQgIWltcG9ydGFudA0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAjc3YtcGxheWVyLXRvcC1jb250cm9sc3sNCiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgICAgICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwOw0KICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93Ow0KICAgICAgICAgICAgICAgICAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0Ow0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICNzdi1wbGF5ZXItdG9wLWNvbnRyb2xzIGRpdiB7DQogICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjJweDsNCg0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAuZml4ZWRFbGVtZW50IHsNCiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246Zml4ZWQ7DQogICAgICAgICAgICAgICAgICAgIHRvcDotNHB4Ow0KICAgICAgICAgICAgICAgICAgICAvKndpZHRoOjEwMCU7Ki8NCiAgICAgICAgICAgICAgICAgICAgei1pbmRleDogOTk5OTk5OTk5OTk5OTk5OTk7DQogICAgICAgICAgICAgICAgICAgIC8qd2lkdGg6MTAwJSAhaW1wb3J0YW50OyovDQogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOw0KICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4Ow0KICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOw0KICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOw0KICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMWYxZTFlODc7DQogICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDNweDsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAuZml4ZWRFbGVtZW50Rmlyc3RDaGlsZHsNCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE3OXB4Ow0KICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAwLjY7Ki8NCg0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICNzdi1wbGF5ZXItbWFpbi1jb250YWluZXJ7DQogICAgICAgICAgICAgICAgICAgIHdpZHRoOjEwMCU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC5zdi1wbGF5ZXItbG9nb3sNCiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7DQogICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTBweDsNCiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogNXB4Ow0KICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHggNXB4IDBweCAwcHg7DQogICAgICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IHVuc2V0ICFpbXBvcnRhbnQ7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC5zdi1wbGF5ZXItY2xvc2V7DQogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOw0KICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwcHg7DQogICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDJweDsNCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweCAxMHB4IDEwcHggMTBweDsNCiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgICAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiB1bnNldCAhaW1wb3J0YW50Ow0KICAgICAgICAgICAgICAgICAgICBtYXJnaW46IHVuc2V0ICFpbXBvcnRhbnQ7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLypORVcgU1RZTEUqLw0KICAgICAgICAgICAgICAgIC5zdi1jb250ZW50LXBhcmVudHsNCiAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA2NDBweDsNCiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOw0KICAgICAgICAgICAgICAgICAgICBtYXJnaW46IGF1dG87DQogICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47DQogICAgICAgICAgICAgICAgICAgIGhlaWdodDogMzYwcHg7DQogICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGhlaWdodCAwLjRzIGxpbmVhcjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgLnN2LWNvbnRlbnQtcGFyZW50LmNvbGxhcHNlew0KICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDAgIWltcG9ydGFudDsNCiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTpub25lOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAuc3YtY29udGVudC1wYXJlbnQuY29sbGFwc2UgLnN2LWxvZ28sIC5zdi1jb250ZW50LXBhcmVudC5jb2xsYXBzZSAucGxheWVyLXRvZ2dsZS1jb250YWluZXIsIC5zdi1jb250ZW50LXBhcmVudC5jb2xsYXBzZSAuc291bmQtdG9nZ2xlLWNvbnRhaW5lcnsNCiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgLmNyZWRpdC1jb250YWluZXJ7DQogICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNXB4Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAuY3JlZGl0LWNvbnRhaW5lciBzcGFuew0KICAgICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOw0KICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDlweDsNCiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNiYmI7DQogICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsQXJpYWwsZmFsbGJhY2ssc2Fucy1zZXJpZjsNCiAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEwcHg7DQogICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQogICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC5zdi1pbWFmcmFtZS1jb250YWluZXJ7DQogICAgICAgICAgICAgICAgICAgIHdpZHRoOiA2NDBweDsNCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OjM0MHB4Ow0KICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7DQogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDA7DQogICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47DQogICAgICAgICAgICAgICAgICAgIG9iamVjdC1maXQ6IGluaXRpYWw7DQogICAgICAgICAgICAgICAgICAgIC8qdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOyovDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC5zdi1sb2dvew0KICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAxMHB4ICFpbXBvcnRhbnQ7DQogICAgICAgICAgICAgICAgICAgIHRvcDogMTBweDsNCiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAuc3YtbG9nbyBpbWd7DQogICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjJweCAhaW1wb3J0YW50Ow0KICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTlweCAhaW1wb3J0YW50Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAuYnRuLXBsYWNlbWVudC1mb290ZXJ7DQogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7DQogICAgICAgICAgICAgICAgICAgIGJvdHRvbTogMDsNCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNSU7DQogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50IDAlLCByZ2JhKDAsIDAsIDAsIDAuNSkgMTAwJSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC5wbGF5ZXItdG9nZ2xlLWNvbnRhaW5lcnsNCiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAxMHB4Ow0KICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgICAgICAgICAgICAgICAgIGxlZnQ6IDEwcHg7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC5zb3VuZC10b2dnbGUtY29udGFpbmVyew0KICAgICAgICAgICAgICAgICAgICAvKnJpZ2h0OiAxMHB4OyovDQogICAgICAgICAgICAgICAgICAgIGxlZnQ6IDExcHg7DQogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICAgICAgICAgICAgICAgICAgLypib3R0b206IDhweDsqLw0KICAgICAgICAgICAgICAgICAgICBib3R0b206IDM0cHg7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC52aWRlby1idG4tcGF1c2UsIC52aWRlby1idG4tcGxheSwgLnNvdW5kLWJ0bi1wbGF5LCAuc291bmQtYnRuLXBhdXNlew0KICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBub25lOw0KICAgICAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7DQogICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7DQogICAgICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgLnZpZGVvLWJ0bi1wYXVzZSBpbWcsIC52aWRlby1idG4tcGxheSBpbWcsIC5zb3VuZC1idG4tcGxheSBpbWcsIC5zb3VuZC1idG4tcGF1c2UgaW1new0KICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDI0cHggIWltcG9ydGFudDsNCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDI0cHggIWltcG9ydGFudDsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAucGxheWVyLXRvZ2dsZS1jb250YWluZXIgLnZpZGVvLWJ0bi1wbGF5IGltZ3sNCiAgICAgICAgICAgICAgICAgICAgY29udGVudDp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRm9BQUFCYUNBWUFBQUE0cUVFQ0FBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFDamtsRVFWUjRuTzJkUVdvVVFSU0dXeFNWZ0pCTndLMnVkUkVQb0tmSTFxVlhFRHlBMGFWTHI1QXJKQjVBRHpCcmhZeUtRNmozMS9RbUJPWkpTOE5vVUVGVFZhK3Ezdi9CMjFkOVBLcjduMzQ5UFF5RUVFSUlJWVFRMGlPcWVsTkVYb3ZJWnhINUN1QXd4cmhudmE3dUFQQUtnRjRxaU1pTDVYSzVZNzIrYnBnNitUZWlmNVNJbklySU0xVzlicjNPNXZtVDVFdkNGeUp5WUwzVzdrWC9WQ2NoaEgzck5Yc1FyU0t5QVhBVVFyaG52ZmF1UldNci9GeEUzb1FRZHEzMzBMVm9iT3RNUko2cjZpM3J2ZlF1V3VmNkJPQ3BxbDZ6M2xQdm9uV3VEekhHSjliNzhpQmE1enBlcjljUHJQZm5RYlNLeUFXQXQrTTQzaDI4azFNMHRqVk9VWCsxV3QwWnZGSkl0TTRkdm5RYjZVdUtodWRJYnlFYXYwYjZSNE1IakVXcm0waHZMUnBlSXIyMVlIaUo5QldJVlJlUnZnS2g2aUxTVnlCU1hVVDZDZ1NxaTBodkxROWVJbjBGMHRSRnBMZVdCUytSM2xvUzB0YTdhaU45QlhJMFI2UVhrZnREVFZpTGdaZElieTBFNVNMOWJZcUdnMGhmUWNlcGkwaGZ3Y2JWTU5JL3BHaVVpZlRURUw2cTNtQkhvMGgzSDFJMGluVDJpcUpSUlBRM2lrYVJvK01sUllNWFEyMjhlSHVIdklJWldKQlhNQ000UE15SlZIQldhbzdpejZSd09zdG4zWG53TXAzYVNSY3YrSEFXV1FWejNBQjV1NWdETk1qYndSd0pRLzZ6bUVPT3lDdVlZN3ZJSzVpRDZQQVFtVk5UNEd6VkppZUxVbE9CNEUyVmtia3owU2ZWUnViVUdIWHhvdnJJbkpyQ2drK2JtZEJQVFNISlkzUHZuS1FtY3dkZk5Qc1dWVU9pajV0K0x6QTFHUVMvanpFK3R0NVhkU1FVL0xHcmQ3ZFRrMER3V1plUk9UVlh1TkNkZHgyWlUvTWZnamN1SW5OcS92Vk9JdkJ2amZPSmRobVpVek05U2Y2TFlMK1JPVFg4bUVMQno0Tk1zdWNaaVMvOFBBZ2hoQkJDQ0NHRURPM3hIWmExSHRuMHNxQ1dBQUFBQUVsRlRrU3VRbUNDIik7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLnBsYXllci10b2dnbGUtY29udGFpbmVyIC52aWRlby1idG4tcGF1c2UgaW1new0KICAgICAgICAgICAgICAgICAgICBjb250ZW50OnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFHUUFBQUJrQ0FZQUFBQnc0cFZVQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUJMa2xFUVZSNG5PM1J3UW1BUUJBRXdjcy8yNDVBZzFCd2hCclk5MExYT1dabVptWm1abVptWm1abVp2Wm8xZlhtblovOW45dlhRUUt5RlNRZ1cwRUNzaFVrSUZ0QkFySVZKQ0JiUVFLeUZTUWdXMEVDc2hVa0lGdEJBcklWSkNCYlFRS3lGU1FnVzBFQ3NoVWtJRnRCQXJJVkpDQmJRUUt5RlNRZ1cwRUNzaFVrSUZ0QkFySVZKQ0JiUVFLeUZTUWdXMEVDc2hVa0lGdEJBcklWSkNCYlFRS3lGU1FnVzBFQ3NoVWtJRnRCQXJJVkpDQmJRUUt5RlNRZ1cwRUNzaFVrSUZ0QkFySVZKQ0JiUVFLeUZTUWdXMEVDc2hVa0lGdEJBcklWSkNCYlFRS3lGU1FnVzBFQ3NoVWtJRnRCQXJJVkpDQmJRUUt5RlNRZ1cwRUNzaFVrSUZ0QkFySVZKQ0JiUVFLeUZTUWdXMEVDc2hVa0lGdEJBcklWSkNCYlFRSmlabVptWm1abVptWm1abVoybG5ZREFUU1ptWUlMNDhrQUFBQUFTVVZPUks1Q1lJST0iKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAuc291bmQtdG9nZ2xlLWNvbnRhaW5lciAuc291bmQtYnRuLXBsYXkgaW1new0KICAgICAgICAgICAgICAgICAgICBjb250ZW50OnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFHQUFBQUJnQ0FZQUFBRGltSGM0QUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUVvMGxFUVZSNG5PMmRUNmhWUlJ6SHAyeFJrSkc3VWtqVS9pektUWnZTaFpGQ0xRcHFtMEdRcmZwREZpVlJLT2hDTjZHZ0lKanBvaFpCQlM0TnNvaUNFbDVCejR5TU5vcTFlYnpYbmUvM25Ic293NXFZT0EvaU1iL3pQUGVlT2VlZXViOFB6RzVtN3R6ZjkvejV6Y3h2ZnNjWVJWRVVSVkVVUlZFVVJWRVVSVkVVcFdmTXpjM2RET0JGQUtjQW5DWDVNY2xubkhNcnVoNWI4bVJaOWhESlN5UmRvSHhiRk1YcXJzZVlMQUMyQTdnaUdIK3huSFBPM2RUMVdKT0Q1RTRBZnk5ai9NWHljdGZqVFFibjNQVUFEbCtqNFJmTFROZmpUZ0xuM0kzbEM5YlZMRm5YWSs4OUFGWUIrSElFNC85WHVoNS9yeW1LWXJWL21ZNXFmQlZnRFBJOHY0L2s1WEdNcndLTWlMVjJLMG1NYS95bUJQQU9nSmtXY0cwK2Zpc0NXR3UzQWZqSjl3UGdSMnZ0d3labFNPNEM4RTlUeGg5SGdNRmdzSlprc2FTL29iVjJuVWtOTjVxUEgxVUFrcStHK2dOd3dxU0VHOTNIanlvQWdKY0VBZjd5ZDRkSnlNZi9LcGJ4eHhHZ0tJbzEzdGhDdjBkTTN5a2E4UEZqdjRRQnZDZjBteTBzTE54aXB0M0haMlFCL0RnbHA4QS9vc3kwKy9pTUxJQUh3R21oNzNPbWJid2ZUUEk0Z0F2ZUpXdkxpT3hRZ1BJL0IvdjJkNGhwQXdBYlNIN2V0VEhaZ1FBZWtyTkMvd2VhNkgrNUg5OE1ZS0ZyUTdKaEFjcFo3Zy9sckh1RzVBTVZObmd0MURlQW4wM3NLNy9QeHFjZ0FJRDFnVm11SFE2SHQ0WHFENGZEMndGY0ZVUllIMDJBdmo1MnVMd0Fid2oxOTBtMkFQQjFxOTVRNmEyNEZBVWcrYnBRLzFjcHBBWEFtMEtiajZJSTRMMmRoQVc0dTJMUjcvRlFHMnZ0L1pKb1VRVHdMNWhVQmZDUS9DSlVIOEJKRThEZkdYNEdIR3JqbHkxTTAwZy8xcmRpQkFBOEpRandtM1B1T3NFbW53bHRIbzBoZ0V0WmdQbjUrWlhTeGsrZTV4dERiUUFjRkg1bnB3ckFlZ0pVWGRFa2R3ajFkd2oxajZvQXJDOEFnTjNDSStWZ3FINldaVnVFK3FkVUFOWVhJTXV5SjRSMm53aUMzU2tJY0ZZRjRFaVBvTHZxckhUNmNIaEJnRjlVQU5ZWHdGcDdxOUR1WXNYZWRXaitjRmtGWUgwQlNvT0dJcTEvbDlvQStETndCOHlyQUJ4SmdCWENGVDFRQVJoM0hsQmV6YXYwRWNTSmZBblBodXJyUzVqTkNwQmwyWk9DVjNPNmptQUF2akZORS92S1pFdWw2ajhDMkNNWTlPMktnNEdoK2pvUlk3TkxFYzhLQWp3bjFOZWxDTllVd0FkV1ZTekdCYU1kQUJ4cWN6RXU5ZVhvN1hVM1dDcVdveDlwWElBcDNwQjVOMVRmT1hjRHliek5EWmwzVWhXQTVEMFZXNUtQMWR5U2JINFpZcm1Jc0FRRTJDVVpzMkpUL2kyaHpZZFJCQ2dIZW1iS3dsTDJTcmJ3dm42b2pVOFdFazBBZnh6SEx6UWxLTUFHQUg4c3FRc2ZnQ1dGMGt2cEVhSUdabmxJYnVxekNLWTZOUEY4K1M3NGp1U0RGVFlJeGhINUlPVm9obDh5MkhVa1AwMUpnRHBVSENUWmI5cWtuSW9mSzQ5dUJsMnlTU3NtWW9SZ251ZjNtcjVoMHptZzhiM3BLM2wvamlodHJEaWk5THhKNEpEZTdDUUxBT0Q5SkEvcDlmMllxajlVYmxMQjllK2c5cFhCWUhDSFNRazNtYWtLWHBtS1ZBWC9SNU4xVEFDWXZIUTFGOG9yLzN6eTZXb1cwWVJORTBDdUtjdlNtQ3NZWlR5Z2FTdTd4Mm5pMXU1eG1ycDRNcUFtNys3TlhHRlcwOWQzOXdHSEdmMkFRM3VmTUhuQkI4ZVdFUndmQUhoYVAyR2lLSXFpS0lxaUtJcWlLSXFpS0lwaU91WmY0UUQ4OGp3L0dCd0FBQUFBU1VWT1JLNUNZSUk9Iik7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLnNvdW5kLXRvZ2dsZS1jb250YWluZXIgLnNvdW5kLWJ0bi1wYXVzZSBpbWd7DQogICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdBQUFBQmdDQVlBQUFEaW1IYzRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBRExVbEVRVlI0bk8yY1MyN1RVQmhHZnlpQ01Wc0FVVUNBUUVEVnJvZ3RNR1VGQ0NRZUM0QUJESkFxS2dRVEhuc0ExZ0FUNHUrTGVaZnFvaXZkVEtva3RaMXIvN2J6SGNtakt0ZkpPWDRrOXEzTmhCQkNDQ0dFRUVJSUlZUVFRZ2d4anhEQzhibC9FTzBDNEJhQXJ3QitrM3dPNExTY2R3VEpPeVREb2VXcEF2akpEeVNoQUg3eVExd1V3RkUrRmNCWFBoWEFWejRWd0ZjK0ZjQlhQaFhBVno0VndGYytGY0JYUGhYQVZ6NFZ3RmMrRmNCWFBoWEFWejVyQmdnaEhHdndsbnN6ZnUva3MyS0FvaWl1a1h3RDRCZUFQd0QycHRQcGhWeWZhenFkWGdTd0c2L094blhFZFUwbWs2czJkdm1zRUNESkwrZTh0aUM1bmVGemJhZXhEbzlmOWlaQ1cvSlpJVURjR3BlOEhxdEVTUEt4WlB6WE5tYjVQQ0pBdkhlY0Rna2hkNFFLOGtOY2QvYnpRbG1XVndEY0IvQ0o1UGMyNVRMREhnRGdaNFZ4YWtXb0lqOHRQeXdYSVlSVEpCOEJPUENXem5vQmRpdU9WU2xDRGZseEQzaVJVLzQ3Yjlsc0Z1RHNncE5rN1FoMTVNZDFBamlUSlFESng5NmkyVEJBQTNGekkrUVlZNVZqL3NHUUE2d3EwRTErSko1d3ZTVXpRNEJJVVJUWFNYNnJJWElId0EyU0V4ZjVLY0Ruc1FSb3VEWDdiUGt6RnZ5SzdNMWlEYWk1Si9qSmozZ0xaZ3NCTWtkb1QzNWtyQUV5UldoWGZtVE1BVmFNMEw3OHlOZ0ROSXpRamZ6SU9nUkF2YSthc3dBNzFnVmpENEQ2OHJ1Tk1PWUFhQzYvdXdoakRZRFY1WGNUWVl3L3hKQlBmdnNSZENtQ3ZwY2lBTndieXg2QUJoZldtbHpBeXhxZ0xNdkxBUDROUFFDSGVqazZ2WUdIUXc3QUlkK1FpWVFRVHBKOE84UUFKTTk3M1pJa3Vaazd3b08rSFk3c0NBQzhjcndwdjJlNUtjdnlFb0M3QUQ3MjRTdXFMU0dFc0JHbkl1YVNYemRDbWhmaysxd0xBTGNkQTV3QXNKOVQvb3dxMzQ0QS9JMGJnYTN6MUVRQUgzTExyN0VudkxkMW41d0xZR3ZCOU1SV0orZW1tZGczclU5NFRVOEhzQlczeG5nNGlvKzZBZkNTNUxtTW4yc3pubkRUMlB0cFhmMlMzNU4vME5obzg2UVl4KzdGTWIvTEU3TUozd2dtZlBjRUU3NFJUUGhHTU9FYndZUnZCQk8rRVV6NFJqRGhHOEdFYndRVHZoRk10QS8xNk9KK1JnRHd4UHQ5cmVQajY3K2tHeXpQOVBoNko0TDNqVzRoaEJCQ0NDR0VFRUlJSVlRUXdnYkZmMGhGVDBMT0dNTGNBQUFBQUVsRlRrU3VRbUNDIik7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLnN2aWV3X2Zsb2F0X3BsYXllcl9vdXRzdHJlYW17DQogICAgICAgICAgICAgICAgICAgIGhlaWdodDogdW5zZXQgIWltcG9ydGFudDsNCiAgICAgICAgICAgICAgICAgICAgei1pbmRleDogOTk5OTk5OTk5OTk5OTkgIWltcG9ydGFudDsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAvKmNvZGUgZm9yIG1vYmlsZSovDQogICAgICAgICAgICAgICAgLnN2LWltYWZyYW1lLWNvbnRhaW5lci1tb2JpbGV7DQogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxNzlweCAhaW1wb3J0YW50Ow0KICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMXB4ICFpbXBvcnRhbnQ7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLm5vX2Fkc3sNCiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTpub25lICFpbXBvcnRhbnQ7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLmNsb3NlX2J0bl9zZWN7DQogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyMHB4Ow0KICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB1bnNldCFpbXBvcnRhbnQ7DQogICAgICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IHVuc2V0IWltcG9ydGFudDsNCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogMjBweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNyk7DQogICAgICAgICAgICAgICAgICAgIGxlZnQ6IDA7DQogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICAgICAgICAgICAgICAgICAgdG9wOjA7DQogICAgICAgICAgICAgICAgICAgIHotaW5kZXg6MjE0NzQ4MzY0NjsNCiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTVweDsNCiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTpub25lOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAuY2xvc2VfYnRuX3NlY19hZnRlcl8xMHsNCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIwcHg7DQogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHVuc2V0IWltcG9ydGFudDsNCiAgICAgICAgICAgICAgICAgICAgYm94LXNpemluZzogdW5zZXQhaW1wb3J0YW50Ow0KICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsNCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogMjBweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNyk7DQogICAgICAgICAgICAgICAgICAgIGxlZnQ6IDA7DQogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICAgICAgICAgICAgICAgICAgdG9wOjA7DQogICAgICAgICAgICAgICAgICAgIHotaW5kZXg6MjE0NzQ4MzY0NjsNCiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTVweDsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAuY2xvc2VfYnRuX3NlY3sNCiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTpub25lICFpbXBvcnRhbnQ7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLmNyZWRpdC1jb250YWluZXJ7DQogICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50Ow0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIC8qRW5kIENvZGUgZm9yIG1vYmlsZSovDQoNCiAgICAgICAgICAgICAgICAvKkVORCBORVcgU1RZTEUqLw0KICAgICAgICAgICAgPC9zdHlsZT4NCiAgICAgICAgICAgIDxkaXYgaWQ9J2R2LXBsYXllci1zaXplJyBzdHlsZT0nJz4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3Atc3R5bGUiPg0KDQogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InN2LXBsYXllci1tYWluLWNvbnRhaW5lciIgY2xhc3M9ImZpeGVkRWxlbWVudCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJzdi1wbGF5ZXItY29udHJvbHMtY29udGFpbmVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJzdi1wbGF5ZXItdG9wLWNvbnRyb2xzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0ic3VyZXZpZXctbG9nbyIgc3R5bGU9J3RleHQtYWxpZ246IGxlZnQ7IGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50Oyc+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vc3VyZXZpZXcudHYvIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBjbGFzcz0ic3YtcGxheWVyLWxvZ28iIHNyYz0iaHR0cHM6Ly9hcHAuc3VyZXZpZXcudHYvbG9nby9zdXJldmlld19iYW5uZXJfbG9nby5zdmciIC8+PC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImN1c3RvbS1kbS1wbGF5ZXIiIHN0eWxlPSJiYWNrZ3JvdW5kOnJlZDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJ0ZXN0LXN1cmV2aWV3Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY3JpcHQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1haW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWFpbl9jb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluX2NvbnRhaW5lci5pZCA9ICJzdi1naW1hLWNvbnN0LWNvbnRuciI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbl9jb250YWluZXIuY2xhc3NOYW1lID0gInN2LWNvbnRlbnQtcGFyZW50IHN2aWV3X2Zsb2F0X3BsYXllcl9vdXRzdHJlYW0gY29sbGFwc2UiOw0KDQoNCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpOw0KLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluay50eXBlID0gInRleHQvY3NzIjsNCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsucmVsID0gInN0eWxlc2hlZXQiOw0KLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluay5ocmVmID0gImh0dHBzOi8vYXBwLnN1cmV2aWV3LnR2L2Fzc2V0cy9vdXRzdHJlYW1fcGxheWVyL3N0eWxlLmNzcyI7DQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluLmFwcGVuZENoaWxkKGxpbmspOw0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3JlZGl0X2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWRpdF9jb250YWluZXIuY2xhc3NOYW1lID0gImNyZWRpdC1jb250YWluZXIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzcGFuX2FkdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFuX2Fkdi5pbm5lckhUTUwgPSAiLS0iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWRpdF9jb250YWluZXIuYXBwZW5kQ2hpbGQoc3Bhbl9hZHYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW5fY29udGFpbmVyLmFwcGVuZENoaWxkKGNyZWRpdF9jb250YWluZXIpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNsb3NlX2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2NvbnRhaW5lci5jbGFzc05hbWUgPSAiY2xvc2VfYnRuX3NlYyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfY29udGFpbmVyLmlkID0gInN2aWV3LWNsb3NlLXNlY3Rpb24iOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNsb3NlX3N1Yl9jb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9zdWJfY29udGFpbmVyLnN0eWxlLmNzc1RleHQgPSAiYmFja2dyb3VuZDogdW5zZXQhaW1wb3J0YW50O2JveC1zaXppbmc6IHVuc2V0IWltcG9ydGFudDtwYWRkaW5nOiAycHg7cG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbTogMDsgbGVmdDogMDsiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjbG9zZV9zdWJfc3ViX2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX3N1Yl9zdWJfY29udGFpbmVyLmlkID0gImhpZGVTdmlld1NtYXJ0QmFubmVyIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9zdWJfc3ViX2NvbnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gImJhY2tncm91bmQ6IHVuc2V0IWltcG9ydGFudDtib3gtc2l6aW5nOiB1bnNldCFpbXBvcnRhbnQ7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTogYmxvY2s7IGZsb2F0OiBsZWZ0OyB3aWR0aDogMTBweDsgaGVpZ2h0OiAxMHB4OyBtYXJnaW46IDNweDsgZm9udC1zaXplOiAxOHB4OyBib3gtc2l6aW5nOiB1bnNldCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDogMDsiOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNyb3NzX2ltYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3NfaW1hZ2Uuc3JjID0gImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBREFBQUFBd0NBWUFBQUJYQXZtSEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFCSUVsRVFWUjRuTzJaM1E0Qk1SQkd5N3NMRjBLNDRBYnZLSDV1anpTN1Fsald0cDNwU09ZOHdQUTczZjVNc3lFNGp1TTRVZ0FUNEFTc2dMSGl1R05nRFp5QmFVNmhJdy8yR2hJMDRlTllkNDQ1eGVaUGhjUWxlQThmbWVjVUhBR2JsNElIQ1FtYXNiYkZKMHhEQXFud0doSkloNWVVUUN1OGhJUjYrSklTMWNLWGtLZ2VQa2ZDVFBnVUNYUGhoMGlZRGYrTGhQbndkOXF3dTQ2Z3I3M056bHo0bmk5aGUrWUhTTmdQSC9tdzV0ODI5citGdHk5QjkyT2theFBiVzBwOE9TbzFIMFZKL0hMT201Vmd3Q1ZsVG9LRUc5YU1CQm50UVhVSkN2UTIxU1FvMkppcFN5RFFWYUlsSWRrU0l5MmgwYzhqSmFINUdFRkNBbGhxaE8vcHB4WWhGZUNxRmY2THhDV2tBc3hpZ1RnTEZYNXdMTnF4MDM5d09JN2pPS0dIRy9Ia0NRb3kxaHJvQUFBQUFFbEZUa1N1UW1DQyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3NfaW1hZ2Uuc3R5bGUuY3NzVGV4dCA9ICJoZWlnaHQ6IDE1cHg7IGN1cnNvcjogcG9pbnRlcjsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbjogdW5zZXQ7IHZlcnRpY2FsLWFsaWduOiB1bnNldDsgYm9yZGVyLXN0eWxlOiB1bnNldDsgbWFyZ2luLWxlZnQ6IC00cHg7IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9zdWJfc3ViX2NvbnRhaW5lci5hcHBlbmRDaGlsZChjcm9zc19pbWFnZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2Vfc3ViX2NvbnRhaW5lci5hcHBlbmRDaGlsZChjbG9zZV9zdWJfc3ViX2NvbnRhaW5lcik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfY29udGFpbmVyLmFwcGVuZENoaWxkKGNsb3NlX3N1Yl9jb250YWluZXIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW5fY29udGFpbmVyLmFwcGVuZENoaWxkKGNsb3NlX2NvbnRhaW5lcik7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW1hZnJhbWVfY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZnJhbWVfY29udGFpbmVyLmNsYXNzTmFtZSA9ICJzdi1pbWFmcmFtZS1jb250YWluZXIgc3YtaW1hZnJhbWUtY29udGFpbmVyLW1vYmlsZSI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBsYXllcl9jb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5ZXJfY29udGFpbmVyLmlkID0gInZpZGVvLXBsYXllci1jb250YWluZXIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWZyYW1lX2NvbnRhaW5lci5hcHBlbmRDaGlsZChwbGF5ZXJfY29udGFpbmVyKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdl9sb2dvX2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2X2xvZ29fY29udGFpbmVyLmNsYXNzTmFtZSA9ICJzdi1sb2dvIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdl9sb2dvX2NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9wZW4oJ2h0dHBzOi8vc3VyZXZpZXcudHYnLCAnX2JsYW5rJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3ZfbG9nbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2X2xvZ28uc3JjID0gImh0dHBzOi8vYXBwLnN1cmV2aWV3LnR2L2NvbnRyb2xzL3N1cmV2aWV3LWljb24uc3ZnIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdl9sb2dvX2NvbnRhaW5lci5hcHBlbmRDaGlsZChzdl9sb2dvKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFmcmFtZV9jb250YWluZXIuYXBwZW5kQ2hpbGQoc3ZfbG9nb19jb250YWluZXIpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJybl9wbGFjZW1lbnRfZm9vdGVyX2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJybl9wbGFjZW1lbnRfZm9vdGVyX2NvbnRhaW5lci5jbGFzc05hbWUgPSAiYnRuLXBsYWNlbWVudC1mb290ZXIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWZyYW1lX2NvbnRhaW5lci5hcHBlbmRDaGlsZChicm5fcGxhY2VtZW50X2Zvb3Rlcl9jb250YWluZXIpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBsYXllcl90b2dnZXJfY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheWVyX3RvZ2dlcl9jb250YWluZXIuY2xhc3NOYW1lID0gInBsYXllci10b2dnbGUtY29udGFpbmVyIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGxheV9wYXVzZV9idG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5X3BhdXNlX2J0bi5pZCA9ICJwbGF5ZXItdG9nZ2xlIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5X3BhdXNlX2J0bi5jbGFzc05hbWUgPSAidmlkZW8tYnRuLXBhdXNlIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGxheXBhdXNlX2ljb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5X3BhdXNlX2J0bi5hcHBlbmRDaGlsZChwbGF5cGF1c2VfaWNvbik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheWVyX3RvZ2dlcl9jb250YWluZXIuYXBwZW5kQ2hpbGQocGxheV9wYXVzZV9idG4pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWZyYW1lX2NvbnRhaW5lci5hcHBlbmRDaGlsZChwbGF5ZXJfdG9nZ2VyX2NvbnRhaW5lcik7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc291bmRfdG9nZ2VyX2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdW5kX3RvZ2dlcl9jb250YWluZXIuY2xhc3NOYW1lID0gInNvdW5kLXRvZ2dsZS1jb250YWluZXIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzb3VuZF9wYXVzZV9idG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VuZF9wYXVzZV9idG4uaWQgPSAic291bmQtdG9nZ2xlIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VuZF9wYXVzZV9idG4uY2xhc3NOYW1lID0gInNvdW5kLWJ0bi1wYXVzZSI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNvdW5kX2ljb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VuZF9wYXVzZV9idG4uYXBwZW5kQ2hpbGQoc291bmRfaWNvbik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291bmRfdG9nZ2VyX2NvbnRhaW5lci5hcHBlbmRDaGlsZChzb3VuZF9wYXVzZV9idG4pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWZyYW1lX2NvbnRhaW5lci5hcHBlbmRDaGlsZChzb3VuZF90b2dnZXJfY29udGFpbmVyKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW5fY29udGFpbmVyLmFwcGVuZENoaWxkKGltYWZyYW1lX2NvbnRhaW5lcik7DQoNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbi5hcHBlbmRDaGlsZChtYWluX2NvbnRhaW5lcik7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeHl6ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Qtc3VyZXZpZXciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4eXouYXBwZW5kQ2hpbGQobWFpbik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NjcmlwdD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY3JpcHQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmN1cnJQbGF5ZXIgPSAiIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc3ZfcGdfcmVxID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29uc3RydWN0QWRDb250YWluZXIgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zdl9wZ19yZXEgPSB3aW5kb3cuc3ZfcGdfcmVxICsgMTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5zdl9wZ19yZXEgPD0gMTApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdmFpbGFibGVBZENvbnRhaW5lcklkcyA9IFsic3YtZ2ltYS0xIiwgInN2LWdpbWEtMiIsICJzdi1naW1hLTMiLCAic3YtZ2ltYS00IiwgInN2LWdpbWEtNSIsICJzdi1naW1hLTYiLCAic3YtZ2ltYS03IiwgInN2LWdpbWEtOCIsICJzdi1naW1hLTkiLCAic3YtZ2ltYS0xMCJdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN2UGFyZW50U2xvdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8tcGxheWVyLWNvbnRhaW5lciIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF2YWlsYWJsZVBsYXllcnMgPSBzdlBhcmVudFNsb3RzLmNoaWxkcmVuOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRpc3RhbnRQbGF5ZXJJRHMgPSBbXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdmFpbGFibGVQbGF5ZXJzLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF2YWlsYWJsZVBsYXllcnMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVhY2hQbGF5ZXJJZCA9IGF2YWlsYWJsZVBsYXllcnNbaV0uaWQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gYXZhaWxhYmxlQWRDb250YWluZXJJZHMuaW5kZXhPZihlYWNoUGxheWVySWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlQWRDb250YWluZXJJZHMuc3BsaWNlKGluZGV4LCAxKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdmFpbGFibGVBZENvbnRhaW5lcklkcy5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkQ29udGFpbmVySWQgPSBhdmFpbGFibGVBZENvbnRhaW5lcklkcy5wb3AoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZENvbnRhaW5lci5pZCA9IGFkQ29udGFpbmVySWQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvLXBsYXllci1jb250YWluZXIiKS5hcHBlbmRDaGlsZChhZENvbnRhaW5lcik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkQ29udGFpbmVySWQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGxvYWRHSU1BKHBsYXllckNvbnRhaW5lcklEKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXRQbGF5ZXJDb250YWluZXJJZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBsYXllckNvbnRhaW5lcklEKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkRGlzcGxheUNvbnRhaW5lciA9IG5ldyBnb29nbGUuaW1hLkFkRGlzcGxheUNvbnRhaW5lcih0YXJnZXRQbGF5ZXJDb250YWluZXJJZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkRGlzcGxheUNvbnRhaW5lci5pbml0aWFsaXplKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFBsYXllckNvbnRhaW5lcklkLnNldEF0dHJpYnV0ZSgiZGF0YS1naW1hLXAtaWQiLCBhZERpc3BsYXlDb250YWluZXIuWik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnSU1BTG9hZGVyID0gbmV3IGdvb2dsZS5pbWEuQWRzTG9hZGVyKGFkRGlzcGxheUNvbnRhaW5lcik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdJTUFMb2FkZXIuYWRkRXZlbnRMaXN0ZW5lcihnb29nbGUuaW1hLkFkc01hbmFnZXJMb2FkZWRFdmVudC5UeXBlLkFEU19NQU5BR0VSX0xPQURFRCwgb25BZHNNYW5hZ2VyTG9hZGVkLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdJTUFMb2FkZXIuZ2V0U2V0dGluZ3MoKS5zZXRGZWF0dXJlRmxhZ3MoeydkaXNhYmxlQ2xpY2tBZFBhdXNlJzogdHJ1ZX0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnSU1BTG9hZGVyLmFkZEV2ZW50TGlzdGVuZXIoZ29vZ2xlLmltYS5BZEVycm9yRXZlbnQuVHlwZS5BRF9FUlJPUiwgb25BZHNFcnJvciwgZmFsc2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ0lNQUxvYWRlcjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjb25maWd1cmVHSU1BKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ0lNQUNvbmYgPSBuZXcgZ29vZ2xlLmltYS5BZHNSZXF1ZXN0KCk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ0lNQUNvbmYuYWRUYWdVcmwgPSAnaHR0cHM6Ly9wdWJhZHMuZy5kb3VibGVjbGljay5uZXQvZ2FtcGFkL2Fkcz9pdT0vMjI3MjkzMTU1NzQsMjMwMDQ2NjIxODQvSnVibmEvSnVibmFfQWwtbWFyc2QmZGVzY3JpcHRpb25fdXJsPWh0dHBzJTNBJTJGJTJGYWwtbWFyc2QuY29tJTJGJnRmY2Q9MCZucGE9MCZzej00MDB4MzAwJTdDNjQweDQ4MCZnZGZwX3JlcT0xJnVudmlld2VkX3Bvc2l0aW9uX3N0YXJ0PTEmb3V0cHV0PXZhc3QmZW52PXZwJmltcGw9cyZ2cG11dGU9MSZjb3JyZWxhdG9yPSc7DQoNCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ0lNQUNvbmYuYWRUYWdVcmwgPSAiaHR0cHM6Ly9wdWJhZHMuZy5kb3VibGVjbGljay5uZXQvZ2FtcGFkL2Fkcz9pdT0vMjE3NzU3NDQ5MjMvZXh0ZXJuYWwvc2luZ2xlX2FkX3NhbXBsZXMmc3o9NjQweDQ4MCZjdXN0X3BhcmFtcz1zYW1wbGVfY3QlM0RsaW5lYXImY2l1X3N6cz0zMDB4MjUwJTJDNzI4eDkwJmdkZnBfcmVxPTEmb3V0cHV0PXZhc3QmdW52aWV3ZWRfcG9zaXRpb25fc3RhcnQ9MSZlbnY9dnAmaW1wbD1zJnZwbXV0ZT0wJmNvcnJlbGF0b3I9IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdJTUFDb25mLmxpbmVhckFkU2xvdFdpZHRoID0gNDQwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnSU1BQ29uZi5saW5lYXJBZFNsb3RIZWlnaHQgPSAyNDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdJTUFDb25mLm5vbkxpbmVhckFkU2xvdFdpZHRoID0gMjQwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnSU1BQ29uZi5ub25MaW5lYXJBZFNsb3RIZWlnaHQgPSAxNTA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnSU1BQ29uZjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb25BZHNNYW5hZ2VyTG9hZGVkID0gZnVuY3Rpb24gKGFkc01hbmFnZXJMb2FkZWRFdmVudCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZHNNYW5hZ2VyID0gYWRzTWFuYWdlckxvYWRlZEV2ZW50LmdldEFkc01hbmFnZXIoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkc01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcigNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb29nbGUuaW1hLkFkRXZlbnQuVHlwZS5TVEFSVEVELA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRTdGFydGVkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRzTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvb2dsZS5pbWEuQWRFdmVudC5UeXBlLlJFU1VNRUQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRzUmVzdW1lKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRzTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvb2dsZS5pbWEuQWRFdmVudC5UeXBlLlBBVVNFRCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZHNQYXVzZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkc01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcigNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb29nbGUuaW1hLkFkRXZlbnQuVHlwZS5WT0xVTUVfTVVURUQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRzTXV0ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkc01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcigNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb29nbGUuaW1hLkFkRXZlbnQuVHlwZS5WT0xVTUVfQ0hBTkdFRCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZHNVbk11dGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZHNNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ29vZ2xlLmltYS5BZEV2ZW50LlR5cGUuQ0xJQ0ssDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25BZHNDbGljayk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkc01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcigNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb29nbGUuaW1hLkFkRXZlbnQuVHlwZS5DT01QTEVURSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkc0NvbXBsZXRlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRzTWFuYWdlci5zZXRWb2x1bWUoMCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZHNNYW5hZ2VyLmluaXQoMTc5LCAxMDEsIGdvb2dsZS5pbWEuVmlld01vZGUuTk9STUFMKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkc01hbmFnZXIuc3RhcnQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoYWRFcnJvcikgew0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXNfcGxheWluZyA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlzX211dGVkID0gMTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWRzTWFuYWdlcjsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZXN0cm95UGxheWVyID0gZnVuY3Rpb24gKHBsYXllcklkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXZbZGF0YS1naW1hLXAtaWQ9IicgKyBwbGF5ZXJJZCArICciXScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnJlbW92ZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGluaXRBZHMoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwbGF5ZXJDb250YWluZXJJRCA9IGNvbnN0cnVjdEFkQ29udGFpbmVyKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnSU1BTG9hZGVyID0gbG9hZEdJTUEocGxheWVyQ29udGFpbmVySUQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ0lNQUNvbmYgPSBjb25maWd1cmVHSU1BKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdJTUFMb2FkZXIucmVxdWVzdEFkcyhnSU1BQ29uZik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG9uQWRzQ29tcGxldGUoZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3ZpZXctY2xvc2Utc2VjdGlvbiIpLmNsYXNzTGlzdC5yZW1vdmUoImNsb3NlX2J0bl9zZWNfYWZ0ZXJfMTAiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRzTWFuYWdlci5zZXRWb2x1bWUoMCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX211dGVkID0gMTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBsYXllcklkID0gZS50YXJnZXQuZy5aOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdkdpbWFDb25zdENvbnRuciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdi1naW1hLWNvbnN0LWNvbnRuciIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdkdpbWFDb25zdENvbnRuci5jbGFzc0xpc3QuYWRkKCJjb2xsYXBzZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lQbGF5ZXIocGxheWVySWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdEFkcygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAyMDAwKTsNCg0KLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdi1wbGF5ZXItbWFpbi1jb250YWluZXIiKS5zdHlsZS5jc3NUZXh0ID0gImRpc3BsYXk6bm9uZSI7DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBvbkFkU3RhcnRlZChlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN2R2ltYUNvbnN0Q29udG5yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2LWdpbWEtY29uc3QtY29udG5yIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2R2ltYUNvbnN0Q29udG5yLmNsYXNzTGlzdC5yZW1vdmUoImNvbGxhcHNlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3BsYXlpbmcgPSAxOw0KLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdi1wbGF5ZXItbWFpbi1jb250YWluZXIiKS5zdHlsZS5jc3NUZXh0ID0gImRpc3BsYXk6dW5zZXQiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcl8xMF9zZWMoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYWRzUGF1c2UoZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19wbGF5aW5nID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYWRzUmVzdW1lKGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfcGxheWluZyA9IDE7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFkc011dGUoZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19tdXRlZCA9IDE7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFkc1VuTXV0ZShlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX211dGVkID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb25BZHNDbGljayhlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG9uQWRzRXJyb3IoZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0cm95UGxheWVyKGUuY3VycmVudFRhcmdldC5nLlopOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0QWRzKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvZ2dsZVZpZGVvUGxheWVyKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNfcGxheWluZykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRzTWFuYWdlci5wYXVzZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfcGxheWluZyA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGxheWVyLXRvZ2dsZSIpLmNsYXNzTmFtZSA9ICJ2aWRlby1idG4tcGxheSI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZHNNYW5hZ2VyLnJlc3VtZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfcGxheWluZyA9IDE7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGxheWVyLXRvZ2dsZSIpLmNsYXNzTmFtZSA9ICJ2aWRlby1idG4tcGF1c2UiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvZ2dsZVNvdW5kQnV0dG9uKCkgew0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19tdXRlZCA9PT0gMSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfbXV0ZWQgPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRzTWFuYWdlci5zZXRWb2x1bWUoMSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic291bmQtdG9nZ2xlIikuY2xhc3NOYW1lID0gInNvdW5kLWJ0bi1wbGF5IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX211dGVkID0gMTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkc01hbmFnZXIuc2V0Vm9sdW1lKDApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNvdW5kLXRvZ2dsZSIpLmNsYXNzTmFtZSA9ICJzb3VuZC1idG4tcGF1c2UiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwbGF5UGF1c2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGxheWVyLXRvZ2dsZScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlQYXVzZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRvZ2dsZVZpZGVvUGxheWVyKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzb3VuZFVubXV0ZWJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzb3VuZC10b2dnbGUnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VuZFVubXV0ZWJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRvZ2dsZVNvdW5kQnV0dG9uKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBHSU1BU2RrU2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0lNQVNka1NjcmlwdC50eXBlID0gInRleHQvamF2YXNjcmlwdCI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0lNQVNka1NjcmlwdC5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRBZHMoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdJTUFTZGtTY3JpcHQuc3JjID0gIi8vaW1hc2RrLmdvb2dsZWFwaXMuY29tL2pzL3Nka2xvYWRlci9pbWEzLmpzIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKEdJTUFTZGtTY3JpcHQpOw0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpZGVTdmlld1NtYXJ0QmFubmVyJykub25jbGljayA9IGZ1bmN0aW9uIChldnQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3ZHaW1hQ29uc3RDb250bnIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3YtZ2ltYS1jb25zdC1jb250bnIiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRzTWFuYWdlci5wYXVzZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdkdpbWFDb25zdENvbnRuci5jbGFzc0xpc3QuYWRkKCJjb2xsYXBzZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLCBmdW5jdGlvbiAoZXZlbnQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmhpZGRlbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlVmlkZW9QbGF5ZXIoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZVZpZGVvUGxheWVyKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaXNJblZpZXdwb3J0KGVsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LnRvcCA+PSAwICYmDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5sZWZ0ID49IDAgJiYNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LmJvdHRvbSA8PSAod2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpICYmDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5yaWdodCA8PSAod2luZG93LmlubmVyV2lkdGggfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib3ggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc3YtY29udGVudC1wYXJlbnQnKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZVRleHQgPSBpc0luVmlld3BvcnQoYm94KTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZVRleHQpIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzaXZlOiB0cnVlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFmdGVyXzEwX3NlYygpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3ZpZXctY2xvc2Utc2VjdGlvbiIpLmNsYXNzTGlzdC5hZGQoImNsb3NlX2J0bl9zZWNfYWZ0ZXJfMTAiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb3BlbklOSG91c2UoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKCdodHRwczovL3N1cmV2aWV3LnR2JywgJ19ibGFuaycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zY3JpcHQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0ic3YtcGxheWVyLWNsb3NlLXBsYXllciIgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyB3aWR0aDoxMDAlOyBtYXJnaW4tdG9wOiAtMThweDsiIG9uY2xpY2s9ImNsb3NlUGxheWVyKCk7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPSJzdi1wbGF5ZXItY2xvc2UiIHNyYz0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFEQUFBQUF3Q0FZQUFBQlhBdm1IQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUJJRWxFUVZSNG5PMlozUTRCTVJCR3k3c0xGMEs0NEFidktINXVqelM3UWxqV3RwM3BTT1k4d1BRNzNmNU1zeUU0anVNNFVnQVQ0QVNzZ0xIaXVHTmdEWnlCYVU2aEl3LzJHaEkwNGVOWWQ0NDV4ZVpQaGNRbGVBOGZtZWNVSEFHYmw0SUhDUW1hc2JiRkoweERBcW53R2hKSWg1ZVVRQ3U4aElSNitKSVMxY0tYa0tnZVBrZkNUUGdVQ1hQaGgwaVlEZitMaFBud2Q5cXd1NDZncjczTnpsejRuaTloZStZSFNOZ1BIL213NXQ4MjlyK0Z0eTlCOTJPa2F4UGJXMHA4T1NvMUgwVkovSExPbTVWZ3dDVmxUb0tFRzlhTUJCbnRRWFVKQ3ZRMjFTUW8ySmlwU3lEUVZhSWxJZGtTSXkyaDBjOGpKYUg1R0VGQ0FsaHFoTy9wcHhZaEZlQ3FGZjZMeENXa0FzeGlnVGdMRlg1d0xOcXgwMzl3T0k3ak9LR0hHL0hrQ1FveTFocm9BQUFBQUVsRlRrU3VRbUNDIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgPHNjcmlwdD4NCiAgICAgICAgICAgIHZhciBmaXJzdF90aW1lID0gMTsNCiAgICAgICAgICAgIGxldCBpc1NWVGFiQWN0aXZlID0gdHJ1ZTsNCiAgICAgICAgICAgIGZ1bmN0aW9uIGdldFBsYXllclZpZXdhYmlsaXR5KHBsYXllcl9vYmopIHsNCiAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0SGVpZ2h0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N1c3RvbS1kbS1wbGF5ZXInKS5vZmZzZXRIZWlnaHQ7DQogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1cmV2aWV3LXZpZXctYWRzLTAwMScpLnN0eWxlLmhlaWdodCA9IG9mZnNldEhlaWdodCArIDMyICsgJ3B4JzsNCiAgICAgICAgICAgICAgICBwbGF5ZXJfb2JqLnNldFZvbHVtZSgwKTsNCiAgICAgICAgICAgICAgICBwbGF5ZXJfb2JqLm9uKGRhaWx5bW90aW9uLmV2ZW50cy5QTEFZRVJfVklFV0FCSUxJVFlDSEFOR0UsIChwbGF5ZXJfb2JqKSA9PiB7DQogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJSZWNlaXZlZCBQTEFZRVJfU1RBUlQgZXZlbnQuIiwgcGxheWVyX29iai5wbGF5ZXJJc1ZpZXdhYmxlKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHBsYXllcl9vYmoucGxheWVySXNWaWV3YWJsZSkgew0KDQoNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCg0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGZ1bmN0aW9uIGNsb3NlUGxheWVyKCkgew0KICAgICAgICAgICAgICAgIGNvbnN0IHN2R2ltYUNvbnN0Q29udG5yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2LWdpbWEtY29uc3QtY29udG5yIik7DQogICAgICAgICAgICAgICAgYWRzTWFuYWdlci5wYXVzZSgpOw0KICAgICAgICAgICAgICAgIGlmIChhZHNNYW5hZ2VyKSB7DQogICAgICAgICAgICAgICAgICAgIGFkc01hbmFnZXIuZGVzdHJveSgpOw0KICAgICAgICAgICAgICAgICAgICBhZHNNYW5hZ2VyID0gbnVsbDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgc3ZHaW1hQ29uc3RDb250bnIuY2xhc3NMaXN0LmFkZCgiY29sbGFwc2UiKTsNCiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3YtcGxheWVyLWNvbnRyb2xzLWNvbnRhaW5lciIpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQovLyAgICAgICAgICAgICAgICBkYWlseW1vdGlvbi5nZXRQbGF5ZXIoKQ0KLy8gICAgICAgICAgICAgICAgICAgICAgICAudGhlbigocGxheWVyKSA9PiB7DQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5ZXIuZGVzdHJveSgpOw0KLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2LXBsYXllci1jb250cm9scy1jb250YWluZXIiKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2LXBsYXllci1jbG9zZS1wbGF5ZXIiKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KLy8gICAgICAgICAgICAgICAgICAgICAgICB9KQ0KLy8gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IGNvbnNvbGUuZXJyb3IoZSkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICANCg0KICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuc2Nyb2xsWSA8PSA0MDApIHsNCiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coInRvcCBvZiBwYWdlIik7DQoNCiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2LXBsYXllci1jb250cm9scy1jb250YWluZXIiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3YtcGxheWVyLWNsb3NlLXBsYXllciIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX3BsYXlpbmcgJiYgYWRzTWFuYWdlcikgew0KICAgICAgICAgICAgICAgICAgICAgICAgYWRzTWFuYWdlci5wYXVzZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaXNfcGxheWluZyA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGxheWVyLXRvZ2dsZSIpLmNsYXNzTmFtZSA9ICJ2aWRlby1idG4tcGxheSI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIA0KDQoNCiAgICAgICAgICAgIHdpbmRvdy5vbnNjcm9sbCA9IGZ1bmN0aW9uIChldikgew0KLy8gICAgICAgICAgICAgICAgY29uc29sZS5sb2coImRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0Iixkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCk7DQovLyAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygid2luZG93LnNjcm9sbFkiLHdpbmRvdy5zY3JvbGxZKTsNCiAgICAgICAgICAgICAgICBpZiAod2luZG93LnNjcm9sbFkgPD0gNDAwKSB7DQovLyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coInRvcCBvZiBwYWdlIik7DQovLyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2LXBsYXllci1tYWluLWNvbnRhaW5lciIpLmNsYXNzTGlzdC5yZW1vdmUoImZpeGVkRWxlbWVudCIpOw0KLy8gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdi1wbGF5ZXItY29udHJvbHMtY29udGFpbmVyIikuY2xhc3NMaXN0LnJlbW92ZSgiZml4ZWRFbGVtZW50Rmlyc3RDaGlsZCIpOw0KICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3YtcGxheWVyLWNvbnRyb2xzLWNvbnRhaW5lciIpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdi1wbGF5ZXItY2xvc2UtcGxheWVyIikuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX3BsYXlpbmcgJiYgYWRzTWFuYWdlcikgew0KICAgICAgICAgICAgICAgICAgICAgICAgYWRzTWFuYWdlci5wYXVzZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaXNfcGxheWluZyA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGxheWVyLXRvZ2dsZSIpLmNsYXNzTmFtZSA9ICJ2aWRlby1idG4tcGxheSI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBpZiAoaXNfcGxheWluZyA9PSAwICYmIGFkc01hbmFnZXIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGFkc01hbmFnZXIucmVzdW1lKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpc19wbGF5aW5nID0gMTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbGF5ZXItdG9nZ2xlIikuY2xhc3NOYW1lID0gInZpZGVvLWJ0bi1wYXVzZSI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0X3RpbWUgPT0gMSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2LXBsYXllci1jb250cm9scy1jb250YWluZXIiKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdi1wbGF5ZXItY2xvc2UtcGxheWVyIikuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH07DQoNCg0KICAgICAgICA8L3NjcmlwdD4=').clientWidth;
}else if(company==9){
var video_div=document.getElementsByClassName("dm-player")[0].clientWidth;
}else{
video_div=sureview_div;
}
var diff=(sureview_div)-(video_div);
var padd='0px';
if(diff>10){
padd=diff/2+"px";
}
var bottom_div = document.createElement("div");
bottom_div.id="sureview_branding";
bottom_div.className="sureviewBottomDiv sureviewtv";
var anchor1=document.createElement("a");
anchor1.href="http://sureview.tv/";
anchor1.target="_BLANK";
var bottom_logo_img = document.createElement("img");
bottom_logo_img.id="sureview_logo_bottom";
bottom_logo_img.src="https://b-cdn.sureview.tv/ads-images/logo/sureview_logo.svg";
anchor1.appendChild(bottom_logo_img);
bottom_div.appendChild(anchor1);
if(company==1){
try{
vdo_player= document.getElementsByClassName("vdo_content")[0].getElementsByTagName("video-js")[0].getElementsByClassName('ima-ad-container')[0].getElementsByTagName('div')[1].getElementsByTagName('video')[0];
if(vdo_player.duration>5){
x.appendChild(bottom_div);
document.getElementById("sureview_logo_bottom").style.padding = "0px "+padd+" 0px 0px";
if(video_div>0){
clearInterval(setlogo_intval);
}
}else{
if(counter==2){
clearInterval(setlogo_intval);
}
}
}catch(error){
if(counter==2){
clearInterval(setlogo_intval);
}
}
}else if(company==2){
try{
teads_player=document.getElementsByClassName("teads-inread")[0].getElementsByTagName("iframe")[0].contentDocument.getElementsByTagName("iframe")[0].contentDocument.getElementsByTagName('video')[0];
if(teads_player.duration>5){
x.appendChild(bottom_div);
document.getElementById("sureview_logo_bottom").style.padding = "0px "+padd+" 0px 0px";
if(video_div>0){
clearInterval(setlogo_intval);
}
}else{
}
}catch(error){
}
}else if(company==9){
}
}catch(Error){
if(counter==10){
clearInterval(setlogo_intval);
}
}
},1000);
}
function get_video_duration(){
refreshIntervalId=setInterval(function(){
try{
vdo_player= document.getElementsByClassName("vdo_content")[0].getElementsByTagName("video-js")[0].getElementsByClassName('ima-ad-container')[0].getElementsByTagName('div')[1].getElementsByTagName('video')[0];
if(isNaN(vdo_player.duration) || vdo_player.duration==0){
setTimeout(function(){
clearInterval(refreshIntervalId);
change_ads(2);
},1000);
}else{
}
}catch(error){
try{
teads_player=document.getElementsByClassName("teads-inread")[0].getElementsByTagName("iframe")[0].contentDocument.getElementsByTagName("iframe")[0].contentDocument.getElementsByTagName('video')[0];
setTimeout(function(){
if(teads_player.currentTime===0){
change_ads(1);
clearInterval(refreshIntervalId);
}else{
}
},10000);
if(isNaN(teads_player.duration)){
setTimeout(function(){
change_ads(1);
},10000);
}else{
if(teads_player.duration==teads_player.currentTime){
setTimeout(function(){
change_ads(1);
},10000);
}
}
}catch(error){
clearInterval(refreshIntervalId);
try{
teads_player=document.getElementsByClassName("teads-inread")[0].getElementsByTagName("iframe")[0].children;
}catch(error){
change_ads(1);
}
}
}
}, 10000);
}
function change_ads(ads_id){
clearInterval(refreshIntervalId);
if(ads_id==1){
add_vdo();
}else if(ads_id==2){
add_teads();
}
}
function add_vdo(){
if(is_active_vdo==1){
set_bottom_logo(1);
try{
document.querySelector('script[src*="vdo.ai"]').remove();
}catch(error){
console.log("VDO ERROR",error);
}
document.getElementsByClassName("sureview-content")[0].innerHTML = "";
running_ads=1;
if(placement_salector!=0){
try {
placement_salector[no_of_tag].appendChild(x);
}
catch (exception_var) {
}
ad_displaying=1;
x.appendChild(vdo);
(function(v,d,o,ai)
{ai=d.createElement('script');ai.defer=true;ai.async=true;ai.src=v.location.protocol+o;d.head.appendChild(ai);})(window, document, '//a.vdo.ai/core/'+vdo_id+'/vdo.ai.js');
}else{
x.appendChild(vdo);
(function(v,d,o,ai)
{ai=d.createElement('script');ai.defer=true;ai.async=true;ai.src=v.location.protocol+o;d.head.appendChild(ai);})(window, document, '//a.vdo.ai/core/'+vdo_id+'/vdo.ai.js');
}
}
}
function add_teads(){
if(is_active_teads==1){
set_bottom_logo(2);
clearInterval(setlogo_intval);
document.getElementsByClassName("sureview-content")[0].innerHTML = "";
running_ads=2;
if(placement_salector!=0){
ad_displaying=1;
x.appendChild(teads_main_div);
try {
placement_salector[no_of_tag].appendChild(x);
}catch (exception_var) {
}
}else{
x.appendChild(teads_main_div);
}
}
}
function remove_logo_2(){
try{
document.getElementById("sureview_branding").remove();
}catch(error){
}
}
const box = document.getElementById('Sureview356');
document.addEventListener('scroll', function () {
var inVpPartial = isElementPartiallyInViewport(box);
if(inVpPartial==true){
}else{
}
}, {
passive: true
});
function isElementPartiallyInViewport(el)
{
if (typeof jQuery !== 'undefined' && el instanceof jQuery)
el = el[0];
var rect = el.getBoundingClientRect();
var windowHeight = (window.innerHeight || document.documentElement.clientHeight);
var windowWidth = (window.innerWidth || document.documentElement.clientWidth);
var vertInView = (rect.top <= windowHeight) && ((rect.top + rect.height) >= 0);
var horInView = (rect.left <= windowWidth) && ((rect.left + rect.width) >= 0);
return (vertInView && horInView);
}
})();