ibp-max 1.1.21 → 1.1.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PrivacyPolicy.js +48 -0
- package/areamap.js +2 -2
- package/assets/css/grid.css +82 -0
- package/fileupload.js +2 -2
- package/index.html +16 -2
- package/index.js +11 -2
- package/lib.js +1 -2
- package/onesearch.js +1 -2
- package/package.json +1 -1
- package/84ad24799d99013dd884.png +0 -0
- package/areamap.css +0 -2
- package/b2047de42cf326305963.webp +0 -0
- package/fileupload.css +0 -2
- package/index.css +0 -2
- package/privacypolicy.js +0 -2
package/PrivacyPolicy.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
|
|
2
|
+
(function(){
|
|
3
|
+
function c(name) {
|
|
4
|
+
this.node = document.createElement(name);
|
|
5
|
+
return this;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
c.prototype.a = function (name, value) {
|
|
9
|
+
this.node.setAttribute(name, value)
|
|
10
|
+
return this;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
c.prototype.n = function (name) {
|
|
14
|
+
var item = new c(name);
|
|
15
|
+
this.node.appendChild(item.node);
|
|
16
|
+
return item;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
c.prototype.h = function (text) {
|
|
20
|
+
this.node.innerHTML = text;
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
c.prototype.cl = function (action) {
|
|
25
|
+
this.node.addEventListener('click', action);
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
var style = `.data-privacy-policy{display:block;width: 100%;background:var(--secondary-color-500);max-height:0;transition: 0.8s cubic-bezier(0.4, 0.0, 0.2, 1) all;}
|
|
30
|
+
.data-privacy-policy.active{max-height:16vh;}
|
|
31
|
+
.data-privacy-policy .content{display:-webkit-flex;display:flex;width:100%;margin:0 auto;max-width:1440px;flex-flow:row wrap;padding:6px;box-sizing:border-box;align-items: center;justify-content: center;}
|
|
32
|
+
.data-privacy-policy .content h2{width:100%;color:var(--primary-color-500);font-size:16px;margin:0 0 6px 0;}
|
|
33
|
+
.data-privacy-policy .content p{color:rgba(255,255,255,0.96);margin:0;font-size:12px;text-align: justify;line-height: 1.4;width: auto;}
|
|
34
|
+
.data-privacy-policy .content p a{color:rgba(255,255,255,0.96);text-decoration: underline;}
|
|
35
|
+
.data-privacy-policy .content .action{display:flex;display:-webkit-flex;padding-left:16px;}
|
|
36
|
+
.data-privacy-policy .content .action a+a{margin-left:16px;background-color: var(--secondary-color-400);}
|
|
37
|
+
.data-privacy-policy .content .action a{color: rgb(255,255,255);background-color: var(--primary-color-500);border: none;border-radius: 2px;position: relative;height: 36px;margin: 0;min-width: 64px;padding: 0 16px;display: inline-block;font-family: ""Roboto"", ""Helvetica"", ""Arial"", sans-serif;font-size: 14px;font-weight: 400;text-transform: capitalize;line-height: 1;letter-spacing: 0;overflow: hidden;will-change: box-shadow;-webkit-transition: background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1), -webkit-box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1);transition: background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1), -webkit-box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1);-o-transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1);transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1);transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1), -webkit-box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1);outline: none;cursor: pointer;text-decoration: none;text-align: center;line-height: 36px;vertical-align: middle;}
|
|
38
|
+
.data-privacy-policy .content .action label{color: rgb(255,255,255);background-color: var(--primary-color-500);border: none;border-radius: 2px;position: relative;height: 36px;margin: 0;min-width: 64px;padding: 0 16px;display: inline-block;font-family: ""Roboto"", ""Helvetica"", ""Arial"", sans-serif;font-size: 14px;font-weight: 400;text-transform: capitalize;line-height: 1;letter-spacing: 0;overflow: hidden;will-change: box-shadow;-webkit-transition: background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1), -webkit-box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1);transition: background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1), -webkit-box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1);-o-transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1);transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1);transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1), -webkit-box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1);outline: none;cursor: pointer;text-decoration: none;text-align: center;line-height: 36px;vertical-align: middle;}
|
|
39
|
+
@media only screen and (max-width:1024px){.data-privacy-policy .content p{width:100%;text-align: center;}.data-privacy-policy .content .action{width: 100%;padding-top:8px;padding-left:0;justify-content: center;}}`;
|
|
40
|
+
var privacyPolicy = new c('div').a('class','data-privacy-policy active');
|
|
41
|
+
privacyPolicy.n('style').h(style);
|
|
42
|
+
var content = privacyPolicy.n('div').a('class', 'content');
|
|
43
|
+
content.n('p').h('We use cookies to improve your user experience. By continuing to visit our site, you agree to our use of cookies. <a title="Our Privacy Policy" href="/privacy-policy">Our Privacy Policy</a>');
|
|
44
|
+
content.n('div').a('class', 'action').n('label').cl(function(){window.localStorage.setItem('PrivacyPolicy','1');privacyPolicy.node.remove();}).a('class', 's-c-p s-bi-lg').a('aria-label', 'Got it Button').a('data-privacy-policy', '1').h('Got it');
|
|
45
|
+
document.body.appendChild(privacyPolicy.node);
|
|
46
|
+
})();
|
|
47
|
+
|
|
48
|
+
|
package/areamap.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var a=t();for(var o in a)("object"==typeof exports?exports:e)[o]=a[o]}}(self,(()=>(()=>{var e={640:()=>{var e;(e=jQuery).fn.AreaMap=function(t){var a={init:function(t){var a=this;function o(e){(e=e||{}).labelContent=e.labelContent||"",e.labelAnchor=e.labelAnchor||new google.maps.Point(0,0),e.labelClass=e.labelClass||"markerLabels",e.labelStyle=e.labelStyle||{},e.labelInBackground=e.labelInBackground||!1,void 0===e.labelVisible&&(e.labelVisible=!0),void 0===e.raiseOnDrag&&(e.raiseOnDrag=!0),void 0===e.clickable&&(e.clickable=!0),void 0===e.draggable&&(e.draggable=!1),void 0===e.optimized&&(e.optimized=!1),e.crossImage=e.crossImage||"http"+("https:"===document.location.protocol?"s":"")+"://maps.gstatic.com/intl/en_us/mapfiles/drag_cross_67_16.png",e.handCursor=e.handCursor||"http"+("https:"===document.location.protocol?"s":"")+"://maps.gstatic.com/intl/en_us/mapfiles/closedhand_8_8.cur",e.optimized=!1,this.label=new n(this,e.crossImage,e.handCursor),google.maps.Marker.apply(this,arguments)}function i(e,t){function a(){}a.prototype=t.prototype,e.superClass_=t.prototype,e.prototype=new a,e.prototype.constructor=e}function n(e,t,a){this.marker_=e,this.handCursorURL_=e.handCursorURL,this.labelDiv_=document.createElement("div"),this.labelDiv_.style.cssText="position: absolute; overflow: hidden;",this.eventDiv_=document.createElement("div"),this.eventDiv_.style.cssText=this.labelDiv_.style.cssText,this.eventDiv_.setAttribute("onselectstart","return false;"),this.eventDiv_.setAttribute("ondragstart","return false;"),this.crossDiv_=n.getSharedCross(t)}return a.$map=e(this),a.Latitude=a.$map.data("latitude"),a.Longitude=a.$map.data("longitude"),a.MapIconnHref=a.$map.data("map-pin"),a.POI=a.$map.data("poi"),a.Address=a.$map.data("address"),a.Markers=[],a.POIService=null,a.zoom_handler=null,a.$POIContext=a.$map.find(".poi-context"),a.$mapType=a.$map.find(".mapType"),e(a.$mapType).off("click").on("click",(function(){var t=e(this);t.hasClass("satelite")?a._map.setMapTypeId("roadmap"):a._map.setMapTypeId("satellite"),t.toggleClass("satelite")})),a._options=e.extend({zoom:void 0!==a.$map.data("zoom")&&""!=a.$map.data("zoom")?a.$map.data("zoom"):15,locationZoom:13},t),a.IsInitialized=!1,a.Zoom=function(e){if("+"==e){var t=a._map.getZoom();a._map.setZoom(++t)}else"-"==e?(t=a._map.getZoom(),a._map.setZoom(--t)):a._map.setZoom(parseInt(e,10))},a.Resize=function(){google.maps.event.trigger(a._map,"resize")},a.MapType=function(e){a._map.setMapTypeId(e)},a.ShowPOI=function(){a.$POIContext.hasClass("active")?a.$POIContext.removeClass("active"):a.$POIContext.addClass("active")},a.getGeoCodeForAddress=function(e,t){void 0!==a._geoCoder&&null!=a._geoCoder||(a._geoCoder=new google.maps.Geocoder),a._geoCoder.geocode({address:e},(function(e,a){a==google.maps.GeocoderStatus.OK?t(e[0].geometry.location):t(null)}))},a.initialize=function(){try{null!=a.Latitude&&null!=a.Longitude&&null!=a.Address&&("0"!=a.Latitude&&"0"!=a.Longitude?a.initMap(new google.maps.LatLng(a.Latitude,a.Longitude)):null!=a.Address&&""!=a.Address&&a.getGeoCodeForAddress(a.Address,(function(e){a.initMap(e)})))}catch(e){}},a.initMap=function(t){var o=[];a.haveOwnPOI()&&o.push({featureType:"poi",elementType:"labels",stylers:[{visibility:"off"}]}),null!=isdarkmode&&isdarkmode&&(o=[{elementType:"geometry",stylers:[{color:"#212121"}]},{elementType:"labels.text.fill",stylers:[{color:"#757575"}]},{elementType:"labels.text.stroke",stylers:[{color:"#212121"}]},{featureType:"poi",elementType:"labels",stylers:[{visibility:"off"}]},{featureType:"administrative.country",elementType:"labels.text.fill",stylers:[{color:"#9e9e9e"}]},{featureType:"administrative.land_parcel",stylers:[{visibility:"off"}]},{featureType:"administrative.locality",elementType:"labels.text.fill",stylers:[{color:"#bdbdbd"}]},{featureType:"road",elementType:"geometry.fill",stylers:[{color:"#2c2c2c"}]},{featureType:"road",elementType:"labels.text.fill",stylers:[{color:"#8a8a8a"}]},{featureType:"road.arterial",elementType:"geometry",stylers:[{color:"#373737"}]},{featureType:"road.highway",elementType:"geometry",stylers:[{color:"#3c3c3c"}]},{featureType:"road.highway.controlled_access",elementType:"geometry",stylers:[{color:"#4e4e4e"}]},{featureType:"road.local",elementType:"labels.text.fill",stylers:[{color:"#616161"}]},{featureType:"transit",elementType:"labels.text.fill",stylers:[{color:"#757575"}]},{featureType:"water",elementType:"geometry",stylers:[{color:"#000000"}]},{featureType:"water",elementType:"labels.text.fill",stylers:[{color:"#3d3d3d"}]}]);var i={zoom:a._options.zoom,center:t,scrollwheel:!1,mapTypeId:google.maps.MapTypeId.ROADMAP,panControl:!1,streetViewControl:!0,mapTypeControl:!1,disableDefaultUI:!0,minZoom:2,zoomControl:!1,zoomControlOptions:{position:google.maps.ControlPosition.TOP_RIGHT,style:google.maps.ZoomControlStyle.SMALL},styles:o};a._map=new google.maps.Map(a.$map.find(".map-context").get(0),i),a.$map.find("[data-zoom-in]").off("click").on("click",(function(){a.Zoom("+")})),a.$map.find("[data-zoom-out]").off("click").on("click",(function(){a.Zoom("-")})),a.$map.find("[data-fullscreen]").off("click").on("click",(function(){a.$map.hasClass("full-view")?(a.$map.removeClass("full-view"),e("body").removeClass("agora-map-full-view")):(a.$map.addClass("full-view"),e("body").addClass("agora-map-full-view")),a.Resize()})),a.$map.find("[data-poi-toggle]").off("click").on("click",(function(){a.ShowPOI()})),a.$map.find("[data-satelite-view]").off("click").on("click",(function(){e(this),a.$map.hasClass("satelite")?a.MapType("roadmap"):a.MapType("satellite"),a.$map.toggleClass("satelite")}));var n=new google.maps.Marker({map:a._map,position:t,icon:a.MapIconnHref});a.Markers.push(n),a.POIService=a.enablePlacesService(t),a.IsInitialized=!0,a.EnableActionListeners(),a.SubscribeAction()},a.EnableActionListeners=function(){a.addZoomHandler()},a.DisableActionListeners=function(){a.removeZoomHandler()},a.addZoomHandler=function(){a.zoom_handler=google.maps.event.addListenerOnce(a._map,"zoom_changed",(function(){a.addZoomHandler(),a.zoomAction()}))},a.removeZoomHandler=function(){try{a.zoom_handler.remove()}catch(e){}},a.zoomAction=function(){a.haveOwnPOI()&&null!=a.POIService&&a.POIService.clear()},a.SubscribeAction=function(){a.IsInitialized&&a.$map.data("on-initialized")()},a.haveOwnPOI=function(){return void 0!==a.POI&&null!=a.POI&&""!=a.POI},a.enablePlacesService=function(t){if(a.haveOwnPOI()){var i=new google.maps.places.PlacesService(a._map),n={},l=null,r={},s={default:{label:"Default",icon:"map-icon-postal-code"},accounting:{label:"Accounting",icon:"map-icon-accounting"},airport:{label:"Airport",icon:"map-icon-airport"},amusement_park:{label:"Amusement Park",icon:"map-icon-amusement-park"},aquarium:{label:"Aquarium",icon:"map-icon-aquarium"},art_gallery:{label:"Art Gallery",icon:"map-icon-art-gallery"},atm:{label:"ATM",icon:"map-icon-atm"},bakery:{label:"Bakery",icon:"map-icon-bakery"},bank:{label:"Bank",icon:"map-icon-bank"},bar:{label:"Bar",icon:"map-icon-bar"},beauty_salon:{label:"Beauty Salon",icon:"map-icon-beauty-salon"},bicycle_store:{label:"Bicycle Store",icon:"map-icon-bicycle-store"},book_store:{label:"Book Store",icon:"map-icon-book-store"},bowling_alley:{label:"Bowling Alley",icon:"map-icon-bowling-alley"},bus_station:{label:"Bus Station",icon:"map-icon-bus-station"},cafe:{label:"Cafe",icon:"map-icon-cafe"},campground:{label:"Campground",icon:"map-icon-campground"},car_dealer:{label:"Car Dealer",icon:"map-icon-car-dealer"},car_rental:{label:"Car Rental",icon:"map-icon-car-rental"},car_repair:{label:"Car Repair",icon:"map-icon-car-repair"},car_wash:{label:"Car Wash",icon:"map-icon-car-wash"},casino:{label:"Casino",icon:"map-icon-casino"},cemetery:{label:"Cemetery",icon:"map-icon-cemetery"},church:{label:"Church",icon:"map-icon-church"},city_hall:{label:"City Hall",icon:"map-icon-city-hall"},clothing_store:{label:"Clothing Store",icon:"map-icon-clothing-store"},convenience_store:{label:"Convenience Store",icon:"map-icon-convenience-store"},courthouse:{label:"Courthouse",icon:"map-icon-courthouse"},dentist:{label:"Dentist",icon:"map-icon-dentist"},department_store:{label:"Department Store",icon:"map-icon-department-store"},doctor:{label:"Doctor",icon:"map-icon-doctor"},electrician:{label:"Electrician",icon:"map-icon-electrician"},electronics_store:{label:"Electronics Store",icon:"map-icon-electronics-store"},embassy:{label:"Embassy",icon:"map-icon-embassy"},fire_station:{label:"Fire Station",icon:"map-icon-fire-station"},florist:{label:"Florist",icon:"map-icon-florist"},funeral_home:{label:"Funeral Home",icon:"map-icon-funeral-home"},furniture_store:{label:"Furniture Store",icon:"map-icon-furniture-store"},gas_station:{label:"Gas Station",icon:"map-icon-gas-station"},gym:{label:"Gym",icon:"map-icon-gym"},hair_care:{label:"Hair Care",icon:"map-icon-hair-care"},hardware_store:{label:"Hardware Store",icon:"map-icon-hardware-store"},hindu_temple:{label:"Hindu Temple",icon:"map-icon-hindu-temple"},home_goods_store:{label:"Home Goods Store",icon:"map-icon-shopping-mall"},hospital:{label:"Hospital",icon:"map-icon-hospital"},insurance_agency:{label:"Insurance Agency",icon:"map-icon-insurance-agency"},jewelry_store:{label:"Jewelry Store",icon:"map-icon-jewelry-store"},laundry:{label:"Laundry",icon:"map-icon-laundry"},lawyer:{label:"Lawyer",icon:"map-icon-lawyer"},library:{label:"Library",icon:"map-icon-library"},liquor_store:{label:"Liquor Store",icon:"map-icon-liquor-store"},local_government_office:{label:"Local Government Office",icon:"map-icon-local-government"},locksmith:{label:"Locksmith",icon:"map-icon-locksmith"},lodging:{label:"Lodging",icon:"map-icon-lodging"},meal_delivery:{label:"Meal",icon:"map-icon-restaurant"},meal_takeaway:{label:"Meal",icon:"map-icon-restaurant"},mosque:{label:"Mosque",icon:"map-icon-mosque"},movie_rental:{label:"Movie Rental",icon:"map-icon-movie-rental"},movie_theater:{label:"Movie Theater",icon:"map-icon-movie-theater"},moving_company:{label:"Moving Company",icon:"map-icon-moving-company"},museum:{label:"Museum",icon:"map-icon-museum"},night_club:{label:"Night Club",icon:"map-icon-night-club"},painter:{label:"Painter",icon:"map-icon-painter"},park:{label:"Park",icon:"map-icon-park"},parking:{label:"Parking",icon:"map-icon-parking"},pet_store:{label:"Pet Store",icon:"map-icon-pet-store"},pharmacy:{label:"Pharmacy",icon:"map-icon-pharmacy"},physiotherapist:{label:"Physiotherapist",icon:"map-icon-physiotherapist"},plumber:{label:"Plumber",icon:"map-icon-plumber"},police:{label:"Police",icon:"map-icon-police"},post_office:{label:"Post Office",icon:"map-icon-post-office"},real_estate_agency:{label:"Real Estate Agency",icon:"map-icon-real-estate-agency"},restaurant:{label:"Restaurant",icon:"map-icon-restaurant"},roofing_contractor:{label:"Roofing Contractor",icon:"map-icon-roofing-contractor"},rv_park:{label:"RV Park",icon:"map-icon-rv-park"},school:{label:"School",icon:"map-icon-school"},shopping_mall:{label:"Shopping Mall",icon:"map-icon-shopping-mall"},spa:{label:"Spa",icon:"map-icon-spa"},stadium:{label:"Stadium",icon:"map-icon-stadium"},storage:{label:"Storage",icon:"map-icon-storage"},shoe_store:{label:"Shoe Store",icon:"map-icon-store"},store:{label:"Store",icon:"map-icon-store"},subway_station:{label:"Subway Station",icon:"map-icon-subway-station"},supermarket:{label:"Supermarket",icon:"map-icon-grocery-or-supermarket"},synagogue:{label:"Synagogue",icon:"map-icon-synagogue"},taxi_stand:{label:"Taxi Stand",icon:"map-icon-taxi-stand"},train_station:{label:"Train Station",icon:"map-icon-train-station"},transit_station:{label:"Transit Station",icon:"map-icon-transit-station"},travel_agency:{label:"Travel Agency",icon:"map-icon-travel-agency"},veterinary_care:{label:"Veterinary Care",icon:"map-icon-veterinary-care"},zoo:{label:"Zoo",icon:"map-icon-zoo"}};return this.clear=function(){for(var e in r){var t=r[e];t.isAllowed&&(t.isAllowed=t.actionItem[0].checked=!1,m(t.key))}},a.POI.split(",").forEach((function(e){!function(e){var t=function(e){if(void 0!==s[e]){var t=s[e];return t.key=e,t}return null}(e.toLowerCase());null!=t&&void 0===r[t.key]&&(r[t.key]=t,r[t.key].isAllowed=!1)}(e)})),function(){var t=e('<i data-poi-toggle="" class="aga-close"></i>');t.on("click",a.ShowPOI),t.appendTo(a.$POIContext);var o=e("<ul></ul>"),i=a.$map.attr("id");for(var n in r)o.append(d(r[n],n,i));a.$POIContext.append(o)}(),this}function c(e){m(e);var t=a._map.getBounds();i.nearbySearch({bounds:t,radius:500,type:[e]},(function(t,a,o){"OK"===a&&function(e,t){for(var a,o=0;a=t[o];o++)p(e,a)}(e,t)}))}function p(e,t){var c=" "+e,p=function(e){if("string"==typeof e){if(void 0!==r[e.toLowerCase()])return r[e.toLowerCase()]}else{for(var t in e)if(void 0!==r[e[t].toLowerCase()])return r[e[t].toLowerCase()];for(var t in e)if(void 0!==s[e[t].toLowerCase()])return s[e[t].toLowerCase()]}return s.default}(e),m=new o({position:t.geometry.location,icon:"/images/c0.png",labelContent:'<i class="map-icon '+p.icon+'"></i>',labelInBackground:!1,labelClass:"poi-marker"+c,title:t.name,placeId:t.place_id,map:a._map});google.maps.event.addListener(m,"click",(function(){try{l.close()}catch(e){}l=new google.maps.InfoWindow,i.getDetails({placeId:m.placeId},(function(e,t){if("OK"==t){var o=null!=e.formatted_address?e.formatted_address:"",i=null!=e.formatted_phone_number?e.formatted_phone_number:"",n=null!=e.website?e.website:"",r=null!=e.url?e.url:"",s="";s+='<div class="poi-info-window">',s+='<a class="mdl-color-text--primary address"'+(null!=r&&""!=r?' href="'+r+'"':"")+' target="_blank"><b>'+m.title+"</b></a>",null!=o&&""!=o&&(s+="<i>"+o+"</i>"),s+='<div class="contact" data-value="'+i+n+'">',null!=i&&""!=i&&(s+='<a class="mdl-color-text--primary phone" data-material-icon="phone_iphone" href="tel:'+i+'" target="_blank">Call</a>'),null!=n&&""!=n&&(s+='<a class="mdl-color-text--primary website" data-material-icon="public" href="'+n+'" target="_blank">Website</a>'),s+="</div>",s+="</div>",l.setContent(s),l.open(a._map,m)}}))})),void 0===n[e]&&(n[e]=[]),n[e].push(m)}function m(e){if(void 0!==n[e]){for(var t in n[e])n[e][t].setMap(null);delete n[e]}}function d(t,o,i){var n=e("<li></li>"),l=e('<input id="'+i+"_poi_"+o+'" type="checkbox" '+(t.isAllowed?" checked":"")+' value="'+t.key+'" />');return t.actionItem=l,l.on("change",(function(){a._map.getZoom()<14||(a.DisableActionListeners(),a._map.setZoom(14),a.EnableActionListeners()),t.isAllowed=e(this)[0].checked,t.isAllowed?c(t.key):m(t.key)})),l.appendTo(n),n.append('<label for="'+i+"_poi_"+o+'" class="'+t.key+'"><i class="map-icon '+t.icon+'"></i><span>'+t.label+"</span></label"),n}},i(n,google.maps.OverlayView),n.getSharedCross=function(e){var t;return void 0===n.getSharedCross.crossDiv&&((t=document.createElement("img")).style.cssText="position: absolute; z-index: 1000002; display: none;",t.style.marginLeft="0px",t.style.marginTop="0px",t.src=e,n.getSharedCross.crossDiv=t),n.getSharedCross.crossDiv},n.prototype.onAdd=function(){var e,t,a,o,i,l,r,s=this,c=!1,p=!1,m="url("+this.handCursorURL_+")",d=function(e){e.preventDefault&&e.preventDefault(),e.cancelBubble=!0,e.stopPropagation&&e.stopPropagation()},g=function(){s.marker_.setAnimation(null)};this.getPanes().overlayImage.appendChild(this.labelDiv_),this.getPanes().overlayMouseTarget.appendChild(this.eventDiv_),void 0===n.getSharedCross.processed&&(this.getPanes().overlayImage.appendChild(this.crossDiv_),n.getSharedCross.processed=!0),this.listeners_=[google.maps.event.addDomListener(this.eventDiv_,"mouseover",(function(e){(s.marker_.getDraggable()||s.marker_.getClickable())&&(this.style.cursor="pointer",google.maps.event.trigger(s.marker_,"mouseover",e))})),google.maps.event.addDomListener(this.eventDiv_,"mouseout",(function(e){!s.marker_.getDraggable()&&!s.marker_.getClickable()||p||(this.style.cursor=s.marker_.getCursor(),google.maps.event.trigger(s.marker_,"mouseout",e))})),google.maps.event.addDomListener(this.eventDiv_,"mousedown",(function(e){p=!1,s.marker_.getDraggable()&&(c=!0,this.style.cursor=m),(s.marker_.getDraggable()||s.marker_.getClickable())&&(google.maps.event.trigger(s.marker_,"mousedown",e),d(e))})),google.maps.event.addDomListener(document,"mouseup",(function(t){var a;if(c&&(c=!1,s.eventDiv_.style.cursor="pointer",google.maps.event.trigger(s.marker_,"mouseup",t)),p){if(i){(a=s.getProjection().fromLatLngToDivPixel(s.marker_.getPosition())).y+=0,s.marker_.setPosition(s.getProjection().fromDivPixelToLatLng(a));try{s.marker_.setAnimation(google.maps.Animation.BOUNCE),setTimeout(g,1406)}catch(e){}}s.crossDiv_.style.display="none",s.marker_.setZIndex(e),o=!0,p=!1,t.latLng=s.marker_.getPosition(),google.maps.event.trigger(s.marker_,"dragend",t)}})),google.maps.event.addListener(s.marker_.getMap(),"mousemove",(function(o){var n;c&&(p?(o.latLng=new google.maps.LatLng(o.latLng.lat()-t,o.latLng.lng()-a),n=s.getProjection().fromLatLngToDivPixel(o.latLng),i&&(s.crossDiv_.style.left=n.x+"px",s.crossDiv_.style.top=n.y+"px",s.crossDiv_.style.display="",n.y-=0),s.marker_.setPosition(s.getProjection().fromDivPixelToLatLng(n)),i&&(s.eventDiv_.style.top=n.y+0+"px"),google.maps.event.trigger(s.marker_,"drag",o)):(t=o.latLng.lat()-s.marker_.getPosition().lat(),a=o.latLng.lng()-s.marker_.getPosition().lng(),e=s.marker_.getZIndex(),l=s.marker_.getPosition(),r=s.marker_.getMap().getCenter(),i=s.marker_.get("raiseOnDrag"),p=!0,s.marker_.setZIndex(1e6),o.latLng=s.marker_.getPosition(),google.maps.event.trigger(s.marker_,"dragstart",o)))})),google.maps.event.addDomListener(document,"keydown",(function(e){p&&27===e.keyCode&&(i=!1,s.marker_.setPosition(l),s.marker_.getMap().setCenter(r),google.maps.event.trigger(document,"mouseup",e))})),google.maps.event.addDomListener(this.eventDiv_,"click",(function(e){(s.marker_.getDraggable()||s.marker_.getClickable())&&(o?o=!1:(google.maps.event.trigger(s.marker_,"click",e),d(e)))})),google.maps.event.addDomListener(this.eventDiv_,"dblclick",(function(e){(s.marker_.getDraggable()||s.marker_.getClickable())&&(google.maps.event.trigger(s.marker_,"dblclick",e),d(e))})),google.maps.event.addListener(this.marker_,"dragstart",(function(e){p||(i=this.get("raiseOnDrag"))})),google.maps.event.addListener(this.marker_,"drag",(function(e){p||i&&(s.setPosition(0),s.labelDiv_.style.zIndex=1e6+(this.get("labelInBackground")?-1:1))})),google.maps.event.addListener(this.marker_,"dragend",(function(e){p||i&&s.setPosition(0)})),google.maps.event.addListener(this.marker_,"position_changed",(function(){s.setPosition()})),google.maps.event.addListener(this.marker_,"zindex_changed",(function(){s.setZIndex()})),google.maps.event.addListener(this.marker_,"visible_changed",(function(){s.setVisible()})),google.maps.event.addListener(this.marker_,"labelvisible_changed",(function(){s.setVisible()})),google.maps.event.addListener(this.marker_,"title_changed",(function(){s.setTitle()})),google.maps.event.addListener(this.marker_,"labelcontent_changed",(function(){s.setContent()})),google.maps.event.addListener(this.marker_,"labelanchor_changed",(function(){s.setAnchor()})),google.maps.event.addListener(this.marker_,"labelclass_changed",(function(){s.setStyles()})),google.maps.event.addListener(this.marker_,"labelstyle_changed",(function(){s.setStyles()}))]},n.prototype.onRemove=function(){var e;for(this.labelDiv_.parentNode.removeChild(this.labelDiv_),this.eventDiv_.parentNode.removeChild(this.eventDiv_),e=0;e<this.listeners_.length;e++)google.maps.event.removeListener(this.listeners_[e])},n.prototype.draw=function(){this.setContent(),this.setTitle(),this.setStyles()},n.prototype.setContent=function(){var e=this.marker_.get("labelContent");void 0===e.nodeType?(this.labelDiv_.innerHTML='<span class="content">'+e+"</span>",this.eventDiv_.innerHTML=this.labelDiv_.innerHTML):(this.labelDiv_.innerHTML="",this.labelDiv_.appendChild('<span class="content">'+e+"</span>"),e=e.cloneNode(!0),this.eventDiv_.appendChild(e))},n.prototype.setTitle=function(){this.eventDiv_.title=this.marker_.getTitle()||""},n.prototype.setStyles=function(){var e,t;for(e in this.labelDiv_.className=this.marker_.get("labelClass"),this.eventDiv_.className=this.labelDiv_.className,this.labelDiv_.style.cssText="",this.eventDiv_.style.cssText="",t=this.marker_.get("labelStyle"))t.hasOwnProperty(e)&&(this.labelDiv_.style[e]=t[e],this.eventDiv_.style[e]=t[e]);this.setMandatoryStyles()},n.prototype.setMandatoryStyles=function(){this.labelDiv_.style.position="absolute",this.labelDiv_.style.overflow="hidden",void 0!==this.labelDiv_.style.opacity&&""!==this.labelDiv_.style.opacity&&(this.labelDiv_.style.MsFilter='"progid:DXImageTransform.Microsoft.Alpha(opacity='+100*this.labelDiv_.style.opacity+')"',this.labelDiv_.style.filter="alpha(opacity="+100*this.labelDiv_.style.opacity+")"),this.eventDiv_.style.position=this.labelDiv_.style.position,this.eventDiv_.style.overflow=this.labelDiv_.style.overflow,this.eventDiv_.style.opacity=.01,this.eventDiv_.style.MsFilter='"progid:DXImageTransform.Microsoft.Alpha(opacity=1)"',this.eventDiv_.style.filter="alpha(opacity=1)",this.setAnchor(),this.setPosition(),this.setVisible()},n.prototype.setAnchor=function(){var e=this.marker_.get("labelAnchor");this.labelDiv_.style.marginLeft=-e.x+"px",this.labelDiv_.style.marginTop=-e.y+"px",this.eventDiv_.style.marginLeft=-e.x+"px",this.eventDiv_.style.marginTop=-e.y+"px"},n.prototype.setPosition=function(e){var t=this.getProjection().fromLatLngToDivPixel(this.marker_.getPosition());void 0===e&&(e=0),this.labelDiv_.style.left=Math.round(t.x)+"px",this.labelDiv_.style.top=Math.round(t.y-e)+"px",this.eventDiv_.style.left=this.labelDiv_.style.left,this.eventDiv_.style.top=this.labelDiv_.style.top,this.setZIndex()},n.prototype.setZIndex=function(){var e=this.marker_.get("labelInBackground")?-1:1;void 0===this.marker_.getZIndex()?(this.labelDiv_.style.zIndex=parseInt(this.labelDiv_.style.top,10)+e,this.eventDiv_.style.zIndex=this.labelDiv_.style.zIndex):(this.labelDiv_.style.zIndex=this.marker_.getZIndex()+e,this.eventDiv_.style.zIndex=this.labelDiv_.style.zIndex)},n.prototype.setVisible=function(){this.marker_.get("labelVisible")?this.labelDiv_.style.display=this.marker_.getVisible()?"block":"none":this.labelDiv_.style.display="none",this.eventDiv_.style.display=this.labelDiv_.style.display},i(o,google.maps.Marker),o.prototype.setMap=function(e){google.maps.Marker.prototype.setMap.apply(this,arguments),this.label.setMap(e)},a.initialize(),a.$map.data("AreaMap",a),a},zoom:function(t){e(this).data("AgoraMap").Zoom(t)},mapType:function(t){e(this).data("AgoraMap").MapType(t)},resize:function(){e(this).data("AgoraMap").Resize()}};return a[t]?a[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void e.error("Error : Invalid Operation "+t+" for AgoraMap "):a.init.apply(this,arguments)}}},t={};function a(o){var i=t[o];if(void 0!==i)return i.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,a),n.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var o in t)a.o(t,o)&&!a.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";a.r(o);a(640)})(),o})()));
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RUFBeUJFLEdBQzVDLFFBQXFCbk4sSUFBakJvTixFQUNILE9BQU9BLEVBQWFwVSxRQUdyQixJQUFJQyxFQUFTZ1UsRUFBeUJFLEdBQVksQ0FHakRuVSxRQUFTLENBQUMsR0FPWCxPQUhBcVUsRUFBb0JGLEdBQVVsVSxFQUFRQSxFQUFPRCxRQUFTa1UsR0FHL0NqVSxFQUFPRCxPQUNmLENDckJBa1UsRUFBb0JJLEVBQUtyVSxJQUN4QixJQUFJc1UsRUFBU3RVLEdBQVVBLEVBQU91VSxXQUM3QixJQUFPdlUsRUFBaUIsUUFDeEIsSUFBTSxFQUVQLE9BREFpVSxFQUFvQk8sRUFBRUYsRUFBUSxDQUFFblUsRUFBR21VLElBQzVCQSxDQUFNLEVDTGRMLEVBQW9CTyxFQUFJLENBQUN6VSxFQUFTMFUsS0FDakMsSUFBSSxJQUFJbEssS0FBT2tLLEVBQ1hSLEVBQW9CUyxFQUFFRCxFQUFZbEssS0FBUzBKLEVBQW9CUyxFQUFFM1UsRUFBU3dLLElBQzVFb0ssT0FBT0MsZUFBZTdVLEVBQVN3SyxFQUFLLENBQUVzSyxZQUFZLEVBQU01TCxJQUFLd0wsRUFBV2xLLElBRTFFLEVDTkQwSixFQUFvQlMsRUFBSSxDQUFDSSxFQUFLQyxJQUFVSixPQUFPOVIsVUFBVWdRLGVBQWVpQixLQUFLZ0IsRUFBS0MsR0NDbEZkLEVBQW9CZSxFQUFLalYsSUFDSCxvQkFBWGtWLFFBQTBCQSxPQUFPQyxhQUMxQ1AsT0FBT0MsZUFBZTdVLEVBQVNrVixPQUFPQyxZQUFhLENBQUUzUCxNQUFPLFdBRTdEb1AsT0FBT0MsZUFBZTdVLEVBQVMsYUFBYyxDQUFFd0YsT0FBTyxHQUFPLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy8uLi8uLi9BZ29yYSA0LjAvSWRjR2xvYmFsLkFnb3JhLkphdmFTY3JpcHQuUGx1Z0luL01heEFyZWFNYXAuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Il0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSB7XG5cdFx0dmFyIGEgPSBmYWN0b3J5KCk7XG5cdFx0Zm9yKHZhciBpIGluIGEpICh0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgPyBleHBvcnRzIDogcm9vdClbaV0gPSBhW2ldO1xuXHR9XG59KShzZWxmLCAoKSA9PiB7XG5yZXR1cm4gIiwi77u/KGZ1bmN0aW9uICgkKSB7XHJcbiAgICAkLmZuLkFyZWFNYXAgPSBmdW5jdGlvbiAobWV0aG9kT3JPcHRpb25zKSB7XHJcblxyXG4gICAgICAgIHZhciBtZXRob2RzID0ge1xyXG4gICAgICAgICAgICBpbml0OiBfaW5pdCxcclxuICAgICAgICAgICAgem9vbTogX3pvb20sXHJcbiAgICAgICAgICAgIG1hcFR5cGU6IF9tYXBUeXBlLFxyXG4gICAgICAgICAgICByZXNpemU6IF9yZXNpemUsXHJcbiAgICAgICAgfTtcclxuXHJcblxyXG4gICAgICAgIGlmIChtZXRob2RzW21ldGhvZE9yT3B0aW9uc10pIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1ldGhvZHNbbWV0aG9kT3JPcHRpb25zXS5hcHBseSh0aGlzLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBtZXRob2RPck9wdGlvbnMgPT09ICdvYmplY3QnIHx8ICFtZXRob2RPck9wdGlvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1ldGhvZHMuaW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICQuZXJyb3IoJ0Vycm9yIDogSW52YWxpZCBPcGVyYXRpb24gJyArIG1ldGhvZE9yT3B0aW9ucyArICcgZm9yIEFnb3JhTWFwICcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZnVuY3Rpb24gX3Jlc2l6ZSgpIHtcclxuICAgICAgICAgICAgdmFyIF9zZWxmID0gJCh0aGlzKS5kYXRhKCdBZ29yYU1hcCcpO1xyXG4gICAgICAgICAgICBfc2VsZi5SZXNpemUoKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBmdW5jdGlvbiBfem9vbSh2YWx1ZSkge1xyXG4gICAgICAgICAgICB2YXIgX3NlbGYgPSAkKHRoaXMpLmRhdGEoJ0Fnb3JhTWFwJyk7XHJcbiAgICAgICAgICAgIF9zZWxmLlpvb20odmFsdWUpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIF9tYXBUeXBlKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHZhciBfc2VsZiA9ICQodGhpcykuZGF0YSgnQWdvcmFNYXAnKTtcclxuICAgICAgICAgICAgX3NlbGYuTWFwVHlwZSh2YWx1ZSk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgZnVuY3Rpb24gX2luaXQob3B0aW9ucykge1xyXG4gICAgICAgICAgICAvLy9EZWNsYXJhdGlvbnNcclxuICAgICAgICAgICAgdmFyIF9zZWxmID0gdGhpcztcclxuICAgICAgICAgICAgX3NlbGYuJG1hcCA9ICQodGhpcyk7XHJcblxyXG4gICAgICAgICAgICBfc2VsZi5MYXRpdHVkZSA9IF9zZWxmLiRtYXAuZGF0YSgnbGF0aXR1ZGUnKTtcclxuICAgICAgICAgICAgX3NlbGYuTG9uZ2l0dWRlID0gX3NlbGYuJG1hcC5kYXRhKCdsb25naXR1ZGUnKTtcclxuICAgICAgICAgICAgX3NlbGYuTWFwSWNvbm5IcmVmID0gX3NlbGYuJG1hcC5kYXRhKCdtYXAtcGluJyk7XHJcbiAgICAgICAgICAgIF9zZWxmLlBPSSA9IF9zZWxmLiRtYXAuZGF0YSgncG9pJyk7XHJcbiAgICAgICAgICAgIF9zZWxmLkFkZHJlc3MgPSBfc2VsZi4kbWFwLmRhdGEoJ2FkZHJlc3MnKTtcclxuICAgICAgICAgICAgX3NlbGYuTWFya2VycyA9IFtdO1xyXG4gICAgICAgICAgICBfc2VsZi5QT0lTZXJ2aWNlID0gbnVsbDtcclxuICAgICAgICAgICAgX3NlbGYuem9vbV9oYW5kbGVyID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIF9zZWxmLiRQT0lDb250ZXh0ID0gX3NlbGYuJG1hcC5maW5kKCcucG9pLWNvbnRleHQnKTtcclxuXHJcbiAgICAgICAgICAgIF9zZWxmLiRtYXBUeXBlID0gX3NlbGYuJG1hcC5maW5kKCcubWFwVHlwZScpO1xyXG5cclxuICAgICAgICAgICAgJChfc2VsZi4kbWFwVHlwZSkub2ZmKCdjbGljaycpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoISR0aGlzLmhhc0NsYXNzKCdzYXRlbGl0ZScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3NlbGYuX21hcC5zZXRNYXBUeXBlSWQoJ3NhdGVsbGl0ZScpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3NlbGYuX21hcC5zZXRNYXBUeXBlSWQoJ3JvYWRtYXAnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICR0aGlzLnRvZ2dsZUNsYXNzKCdzYXRlbGl0ZScpO1xyXG5cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBfc2VsZi5fb3B0aW9ucyA9ICQuZXh0ZW5kKHtcclxuICAgICAgICAgICAgICAgIHpvb206ICh0eXBlb2YgKF9zZWxmLiRtYXAuZGF0YSgnem9vbScpKSAhPSAndW5kZWZpbmVkJyAmJiBfc2VsZi4kbWFwLmRhdGEoJ3pvb20nKSAhPSAnJyA/IF9zZWxmLiRtYXAuZGF0YSgnem9vbScpIDogMTUpLFxyXG4gICAgICAgICAgICAgICAgbG9jYXRpb25ab29tOiAxMyxcclxuICAgICAgICAgICAgfSwgb3B0aW9ucyk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIF9zZWxmLklzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIC8vL0VuZCBEZWNsYXJhdGlvbnNcclxuXHJcbiAgICAgICAgICAgIC8vL0RlZmluaXRpb25cclxuXHJcbiAgICAgICAgICAgIF9zZWxmLlpvb20gPSBmdW5jdGlvbiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAnKycpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgX3pvb20gPSBfc2VsZi5fbWFwLmdldFpvb20oKTtcclxuICAgICAgICAgICAgICAgICAgICBfc2VsZi5fbWFwLnNldFpvb20oKytfem9vbSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09ICctJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBfem9vbSA9IF9zZWxmLl9tYXAuZ2V0Wm9vbSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9zZWxmLl9tYXAuc2V0Wm9vbSgtLV96b29tKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3NlbGYuX21hcC5zZXRab29tKHBhcnNlSW50KHZhbHVlLCAxMCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgX3NlbGYuUmVzaXplID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQudHJpZ2dlcihfc2VsZi5fbWFwLCBcInJlc2l6ZVwiKTtcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIF9zZWxmLk1hcFR5cGUgPSBmdW5jdGlvbiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIF9zZWxmLl9tYXAuc2V0TWFwVHlwZUlkKHZhbHVlKTtcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIF9zZWxmLlNob3dQT0kgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoX3NlbGYuJFBPSUNvbnRleHQuaGFzQ2xhc3MoJ2FjdGl2ZScpKVxyXG4gICAgICAgICAgICAgICAgICAgIF9zZWxmLiRQT0lDb250ZXh0LnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICBfc2VsZi4kUE9JQ29udGV4dC5hZGRDbGFzcygnYWN0aXZlJyk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBfc2VsZi5nZXRHZW9Db2RlRm9yQWRkcmVzcyA9IGZ1bmN0aW9uIChhZGRyZXNzLCBjYWxsQmFjaykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAoX3NlbGYuX2dlb0NvZGVyKSA9PSAndW5kZWZpbmVkJyB8fCBfc2VsZi5fZ2VvQ29kZXIgPT0gbnVsbCkgX3NlbGYuX2dlb0NvZGVyID0gbmV3IGdvb2dsZS5tYXBzLkdlb2NvZGVyKCk7XHJcbiAgICAgICAgICAgICAgICBfc2VsZi5fZ2VvQ29kZXIuZ2VvY29kZSh7ICdhZGRyZXNzJzogYWRkcmVzcyB9LCBmdW5jdGlvbiAocmVzdWx0cywgc3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBnb29nbGUubWFwcy5HZW9jb2RlclN0YXR1cy5PSykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsQmFjayhyZXN1bHRzWzBdLmdlb21ldHJ5LmxvY2F0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsQmFjayhudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIF9zZWxmLmluaXRpYWxpemUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChfc2VsZi5MYXRpdHVkZSAhPSB1bmRlZmluZWQgJiYgX3NlbGYuTG9uZ2l0dWRlICE9IHVuZGVmaW5lZCAmJiBfc2VsZi5BZGRyZXNzICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3NlbGYuTGF0aXR1ZGUgIT0gXCIwXCIgJiYgX3NlbGYuTG9uZ2l0dWRlICE9IFwiMFwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGYuaW5pdE1hcChuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nKF9zZWxmLkxhdGl0dWRlLCBfc2VsZi5Mb25naXR1ZGUpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoX3NlbGYuQWRkcmVzcyAhPSBudWxsICYmIF9zZWxmLkFkZHJlc3MgIT0gJycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2VsZi5nZXRHZW9Db2RlRm9yQWRkcmVzcyhfc2VsZi5BZGRyZXNzLCBmdW5jdGlvbiAocG9pbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2VsZi5pbml0TWFwKHBvaW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgfVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgX3NlbGYuaW5pdE1hcCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGRlZmF1bHRTdHlsZSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgdmFyIHN0eWxlcyA9IFt7IGVsZW1lbnRUeXBlOiBcImdlb21ldHJ5XCIsIHN0eWxlcnM6IFt7IGNvbG9yOiBcIiNlYmUzY2RcIiB9XSB9LCB7IGVsZW1lbnRUeXBlOiBcImxhYmVscy50ZXh0LmZpbGxcIiwgc3R5bGVyczogW3sgY29sb3I6IFwiIzUyMzczNVwiIH1dIH0sIHsgZWxlbWVudFR5cGU6IFwibGFiZWxzLnRleHQuc3Ryb2tlXCIsIHN0eWxlcnM6IFt7IGNvbG9yOiBcIiNmNWYxZTZcIiB9XSB9LCB7IGZlYXR1cmVUeXBlOiBcImFkbWluaXN0cmF0aXZlXCIsIGVsZW1lbnRUeXBlOiBcImdlb21ldHJ5LnN0cm9rZVwiLCBzdHlsZXJzOiBbeyBjb2xvcjogXCIjYzliMmE2XCIgfV0gfSwgeyBmZWF0dXJlVHlwZTogXCJhZG1pbmlzdHJhdGl2ZS5sYW5kX3BhcmNlbFwiLCBlbGVtZW50VHlwZTogXCJnZW9tZXRyeS5zdHJva2VcIiwgc3R5bGVyczogW3sgY29sb3I6IFwiI2RjZDJiZVwiIH1dIH0sIHsgZmVhdHVyZVR5cGU6IFwiYWRtaW5pc3RyYXRpdmUubGFuZF9wYXJjZWxcIiwgZWxlbWVudFR5cGU6IFwibGFiZWxzXCIsIHN0eWxlcnM6IFt7IHZpc2liaWxpdHk6IFwib2ZmXCIgfV0gfSwgeyBmZWF0dXJlVHlwZTogXCJhZG1pbmlzdHJhdGl2ZS5sYW5kX3BhcmNlbFwiLCBlbGVtZW50VHlwZTogXCJsYWJlbHMudGV4dC5maWxsXCIsIHN0eWxlcnM6IFt7IGNvbG9yOiBcIiNhZTllOTBcIiB9XSB9LCB7IGZlYXR1cmVUeXBlOiBcImxhbmRzY2FwZS5uYXR1cmFsXCIsIGVsZW1lbnRUeXBlOiBcImdlb21ldHJ5XCIsIHN0eWxlcnM6IFt7IGNvbG9yOiBcIiNkZmQyYWVcIiB9XSB9LCB7IGZlYXR1cmVUeXBlOiBcInBvaVwiLCBlbGVtZW50VHlwZTogXCJnZW9tZXRyeVwiLCBzdHlsZXJzOiBbeyBjb2xvcjogXCIjZGZkMmFlXCIgfV0gfSwgeyBmZWF0dXJlVHlwZTogXCJwb2lcIiwgZWxlbWVudFR5cGU6IFwibGFiZWxzLnRleHRcIiwgc3R5bGVyczogW3sgdmlzaWJpbGl0eTogXCJvZmZcIiB9XSB9LCB7IGZlYXR1cmVUeXBlOiBcInBvaVwiLCBlbGVtZW50VHlwZTogXCJsYWJlbHMudGV4dC5maWxsXCIsIHN0eWxlcnM6IFt7IGNvbG9yOiBcIiM5MzgxN2NcIiB9XSB9LCB7IGZlYXR1cmVUeXBlOiBcInBvaS5wYXJrXCIsIGVsZW1lbnRUeXBlOiBcImdlb21ldHJ5LmZpbGxcIiwgc3R5bGVyczogW3sgY29sb3I6IFwiI2E1YjA3NlwiIH1dIH0sIHsgZmVhdHVyZVR5cGU6IFwicG9pLnBhcmtcIiwgZWxlbWVudFR5cGU6IFwibGFiZWxzLnRleHQuZmlsbFwiLCBzdHlsZXJzOiBbeyBjb2xvcjogXCIjNDQ3NTMwXCIgfV0gfSwgeyBmZWF0dXJlVHlwZTogXCJyb2FkXCIsIGVsZW1lbnRUeXBlOiBcImdlb21ldHJ5XCIsIHN0eWxlcnM6IFt7IGNvbG9yOiBcIiNmNWYxZTZcIiB9XSB9LCB7IGZlYXR1cmVUeXBlOiBcInJvYWQuYXJ0ZXJpYWxcIiwgZWxlbWVudFR5cGU6IFwiZ2VvbWV0cnlcIiwgc3R5bGVyczogW3sgY29sb3I6IFwiI2ZkZmNmOFwiIH1dIH0sIHsgZmVhdHVyZVR5cGU6IFwicm9hZC5oaWdod2F5XCIsIGVsZW1lbnRUeXBlOiBcImdlb21ldHJ5XCIsIHN0eWxlcnM6IFt7IGNvbG9yOiBcIiNmOGM5NjdcIiB9XSB9LCB7IGZlYXR1cmVUeXBlOiBcInJvYWQuaGlnaHdheVwiLCBlbGVtZW50VHlwZTogXCJnZW9tZXRyeS5zdHJva2VcIiwgc3R5bGVyczogW3sgY29sb3I6IFwiI2U5YmM2MlwiIH1dIH0sIHsgZmVhdHVyZVR5cGU6IFwicm9hZC5oaWdod2F5LmNvbnRyb2xsZWRfYWNjZXNzXCIsIGVsZW1lbnRUeXBlOiBcImdlb21ldHJ5XCIsIHN0eWxlcnM6IFt7IGNvbG9yOiBcIiNlOThkNThcIiB9XSB9LCB7IGZlYXR1cmVUeXBlOiBcInJvYWQuaGlnaHdheS5jb250cm9sbGVkX2FjY2Vzc1wiLCBlbGVtZW50VHlwZTogXCJnZW9tZXRyeS5zdHJva2VcIiwgc3R5bGVyczogW3sgY29sb3I6IFwiI2RiODU1NVwiIH1dIH0sIHsgZmVhdHVyZVR5cGU6IFwicm9hZC5sb2NhbFwiLCBlbGVtZW50VHlwZTogXCJsYWJlbHNcIiwgc3R5bGVyczogW3sgdmlzaWJpbGl0eTogXCJvZmZcIiB9XSB9LCB7IGZlYXR1cmVUeXBlOiBcInJvYWQubG9jYWxcIiwgZWxlbWVudFR5cGU6IFwibGFiZWxzLnRleHQuZmlsbFwiLCBzdHlsZXJzOiBbeyBjb2xvcjogXCIjODA2YjYzXCIgfV0gfSwgeyBmZWF0dXJlVHlwZTogXCJ0cmFuc2l0LmxpbmVcIiwgZWxlbWVudFR5cGU6IFwiZ2VvbWV0cnlcIiwgc3R5bGVyczogW3sgY29sb3I6IFwiI2RmZDJhZVwiIH1dIH0sIHsgZmVhdHVyZVR5cGU6IFwidHJhbnNpdC5saW5lXCIsIGVsZW1lbnRUeXBlOiBcImxhYmVscy50ZXh0LmZpbGxcIiwgc3R5bGVyczogW3sgY29sb3I6IFwiIzhmN2Q3N1wiIH1dIH0sIHsgZmVhdHVyZVR5cGU6IFwidHJhbnNpdC5saW5lXCIsIGVsZW1lbnRUeXBlOiBcImxhYmVscy50ZXh0LnN0cm9rZVwiLCBzdHlsZXJzOiBbeyBjb2xvcjogXCIjZWJlM2NkXCIgfV0gfSwgeyBmZWF0dXJlVHlwZTogXCJ0cmFuc2l0LnN0YXRpb25cIiwgZWxlbWVudFR5cGU6IFwiZ2VvbWV0cnlcIiwgc3R5bGVyczogW3sgY29sb3I6IFwiI2RmZDJhZVwiIH1dIH0sIHsgZmVhdHVyZVR5cGU6IFwid2F0ZXJcIiwgZWxlbWVudFR5cGU6IFwiZ2VvbWV0cnkuZmlsbFwiLCBzdHlsZXJzOiBbeyBjb2xvcjogXCIjYjlkM2MyXCIgfV0gfSwgeyBmZWF0dXJlVHlwZTogXCJ3YXRlclwiLCBlbGVtZW50VHlwZTogXCJsYWJlbHMudGV4dC5maWxsXCIsIHN0eWxlcnM6IFt7IGNvbG9yOiBcIiM5Mjk5OGRcIiB9XSB9XTtcclxuICAgICAgICAgICAgICAgICB2YXIgbm9QT0kgPSB7IGZlYXR1cmVUeXBlOiBcInBvaVwiLCBlbGVtZW50VHlwZTogXCJsYWJlbHNcIiwgc3R5bGVyczogW3sgdmlzaWJpbGl0eTogXCJvZmZcIiB9XSB9O1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmIChfc2VsZi5oYXZlT3duUE9JKCkpIGRlZmF1bHRTdHlsZS5wdXNoKG5vUE9JKTtcclxuICAgICAgICAgICAgICAgIGlmIChpc2Rhcmttb2RlICE9IHVuZGVmaW5lZCAmJiBpc2Rhcmttb2RlKSBkZWZhdWx0U3R5bGUgPSBbeyBlbGVtZW50VHlwZTogXCJnZW9tZXRyeVwiLCBzdHlsZXJzOiBbeyBjb2xvcjogXCIjMjEyMTIxXCIgfV0gfSwgeyBlbGVtZW50VHlwZTogXCJsYWJlbHMudGV4dC5maWxsXCIsIHN0eWxlcnM6IFt7IGNvbG9yOiBcIiM3NTc1NzVcIiB9XSB9LCB7IGVsZW1lbnRUeXBlOiBcImxhYmVscy50ZXh0LnN0cm9rZVwiLCBzdHlsZXJzOiBbeyBcImNvbG9yXCI6IFwiIzIxMjEyMVwiIH1dIH0sIHsgZmVhdHVyZVR5cGU6IFwicG9pXCIsIGVsZW1lbnRUeXBlOiBcImxhYmVsc1wiLCBzdHlsZXJzOiBbeyB2aXNpYmlsaXR5OiBcIm9mZlwiIH1dIH0sIHsgZmVhdHVyZVR5cGU6IFwiYWRtaW5pc3RyYXRpdmUuY291bnRyeVwiLCBlbGVtZW50VHlwZTogXCJsYWJlbHMudGV4dC5maWxsXCIsIHN0eWxlcnM6IFt7IGNvbG9yOiBcIiM5ZTllOWVcIiB9XSB9LCB7IGZlYXR1cmVUeXBlOiBcImFkbWluaXN0cmF0aXZlLmxhbmRfcGFyY2VsXCIsIHN0eWxlcnM6IFt7IFwidmlzaWJpbGl0eVwiOiBcIm9mZlwiIH1dIH0sIHsgZmVhdHVyZVR5cGU6IFwiYWRtaW5pc3RyYXRpdmUubG9jYWxpdHlcIiwgZWxlbWVudFR5cGU6IFwibGFiZWxzLnRleHQuZmlsbFwiLCBzdHlsZXJzOiBbeyBjb2xvcjogXCIjYmRiZGJkXCIgfV0gfSwgeyBmZWF0dXJlVHlwZTogXCJyb2FkXCIsIGVsZW1lbnRUeXBlOiBcImdlb21ldHJ5LmZpbGxcIiwgc3R5bGVyczogW3sgY29sb3I6IFwiIzJjMmMyY1wiIH1dIH0sIHsgZmVhdHVyZVR5cGU6IFwicm9hZFwiLCBlbGVtZW50VHlwZTogXCJsYWJlbHMudGV4dC5maWxsXCIsIHN0eWxlcnM6IFt7IGNvbG9yOiBcIiM4YThhOGFcIiB9XSB9LCB7IGZlYXR1cmVUeXBlOiBcInJvYWQuYXJ0ZXJpYWxcIiwgZWxlbWVudFR5cGU6IFwiZ2VvbWV0cnlcIiwgc3R5bGVyczogW3sgY29sb3I6IFwiIzM3MzczN1wiIH1dIH0sIHsgZmVhdHVyZVR5cGU6IFwicm9hZC5oaWdod2F5XCIsIGVsZW1lbnRUeXBlOiBcImdlb21ldHJ5XCIsIHN0eWxlcnM6IFt7IGNvbG9yOiBcIiMzYzNjM2NcIiB9XSB9LCB7IGZlYXR1cmVUeXBlOiBcInJvYWQuaGlnaHdheS5jb250cm9sbGVkX2FjY2Vzc1wiLCBlbGVtZW50VHlwZTogXCJnZW9tZXRyeVwiLCBzdHlsZXJzOiBbeyBjb2xvcjogXCIjNGU0ZTRlXCIgfV0gfSwgeyBmZWF0dXJlVHlwZTogXCJyb2FkLmxvY2FsXCIsIGVsZW1lbnRUeXBlOiBcImxhYmVscy50ZXh0LmZpbGxcIiwgc3R5bGVyczogW3sgY29sb3I6IFwiIzYxNjE2MVwiIH1dIH0sIHsgZmVhdHVyZVR5cGU6IFwidHJhbnNpdFwiLCBlbGVtZW50VHlwZTogXCJsYWJlbHMudGV4dC5maWxsXCIsIHN0eWxlcnM6IFt7IGNvbG9yOiBcIiM3NTc1NzVcIiB9XSB9LCB7IGZlYXR1cmVUeXBlOiBcIndhdGVyXCIsIGVsZW1lbnRUeXBlOiBcImdlb21ldHJ5XCIsIHN0eWxlcnM6IFt7IGNvbG9yOiBcIiMwMDAwMDBcIiB9XSB9LCB7IGZlYXR1cmVUeXBlOiBcIndhdGVyXCIsIGVsZW1lbnRUeXBlOiBcImxhYmVscy50ZXh0LmZpbGxcIiwgc3R5bGVyczogW3sgY29sb3I6IFwiIzNkM2QzZFwiIH1dIH1dO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdmFyIF9tYXBPcHRpb25zID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHpvb206IF9zZWxmLl9vcHRpb25zLnpvb20sXHJcbiAgICAgICAgICAgICAgICAgICAgY2VudGVyOiB2YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICBzY3JvbGx3aGVlbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgbWFwVHlwZUlkOiBnb29nbGUubWFwcy5NYXBUeXBlSWQuUk9BRE1BUCxcclxuICAgICAgICAgICAgICAgICAgICBwYW5Db250cm9sOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBzdHJlZXRWaWV3Q29udHJvbDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBtYXBUeXBlQ29udHJvbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZURlZmF1bHRVSTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBtaW5ab29tOiAyLFxyXG4gICAgICAgICAgICAgICAgICAgIHpvb21Db250cm9sOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICB6b29tQ29udHJvbE9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGdvb2dsZS5tYXBzLkNvbnRyb2xQb3NpdGlvbi5UT1BfUklHSFQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiBnb29nbGUubWFwcy5ab29tQ29udHJvbFN0eWxlLlNNQUxMXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IGRlZmF1bHRTdHlsZVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIF9zZWxmLl9tYXAgPSBuZXcgZ29vZ2xlLm1hcHMuTWFwKF9zZWxmLiRtYXAuZmluZCgnLm1hcC1jb250ZXh0JykuZ2V0KDApLCBfbWFwT3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICBfc2VsZi4kbWFwLmZpbmQoJ1tkYXRhLXpvb20taW5dJykub2ZmKCdjbGljaycpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsgX3NlbGYuWm9vbSgnKycpOyB9KTtcclxuICAgICAgICAgICAgICAgIF9zZWxmLiRtYXAuZmluZCgnW2RhdGEtem9vbS1vdXRdJykub2ZmKCdjbGljaycpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsgX3NlbGYuWm9vbSgnLScpOyB9KTtcclxuICAgICAgICAgICAgICAgIF9zZWxmLiRtYXAuZmluZCgnW2RhdGEtZnVsbHNjcmVlbl0nKS5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChfc2VsZi4kbWFwLmhhc0NsYXNzKCdmdWxsLXZpZXcnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfc2VsZi4kbWFwLnJlbW92ZUNsYXNzKCdmdWxsLXZpZXcnKTsgJCgnYm9keScpLnJlbW92ZUNsYXNzKCdhZ29yYS1tYXAtZnVsbC12aWV3Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGYuJG1hcC5hZGRDbGFzcygnZnVsbC12aWV3Jyk7ICQoJ2JvZHknKS5hZGRDbGFzcygnYWdvcmEtbWFwLWZ1bGwtdmlldycpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBfc2VsZi5SZXNpemUoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgX3NlbGYuJG1hcC5maW5kKCdbZGF0YS1wb2ktdG9nZ2xlXScpLm9mZignY2xpY2snKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3NlbGYuU2hvd1BPSSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBfc2VsZi4kbWFwLmZpbmQoJ1tkYXRhLXNhdGVsaXRlLXZpZXddJykub2ZmKCdjbGljaycpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghX3NlbGYuJG1hcC5oYXNDbGFzcygnc2F0ZWxpdGUnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfc2VsZi5NYXBUeXBlKCdzYXRlbGxpdGUnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmLk1hcFR5cGUoJ3JvYWRtYXAnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgX3NlbGYuJG1hcC50b2dnbGVDbGFzcygnc2F0ZWxpdGUnKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdmFyIF9tYXJrZXIgPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtcclxuICAgICAgICAgICAgICAgICAgICBtYXA6IF9zZWxmLl9tYXAsXHJcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgIGljb246IF9zZWxmLk1hcEljb25uSHJlZixcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgX3NlbGYuTWFya2Vycy5wdXNoKF9tYXJrZXIpO1xyXG5cclxuICAgICAgICAgICAgICAgIF9zZWxmLlBPSVNlcnZpY2UgPSBfc2VsZi5lbmFibGVQbGFjZXNTZXJ2aWNlKHZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgICAgICBfc2VsZi5Jc0luaXRpYWxpemVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICBfc2VsZi5FbmFibGVBY3Rpb25MaXN0ZW5lcnMoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBfc2VsZi5TdWJzY3JpYmVBY3Rpb24oKTtcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIF9zZWxmLkVuYWJsZUFjdGlvbkxpc3RlbmVycyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIF9zZWxmLmFkZFpvb21IYW5kbGVyKCk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBfc2VsZi5EaXNhYmxlQWN0aW9uTGlzdGVuZXJzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgX3NlbGYucmVtb3ZlWm9vbUhhbmRsZXIoKTtcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIF9zZWxmLmFkZFpvb21IYW5kbGVyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgX3NlbGYuem9vbV9oYW5kbGVyID0gZ29vZ2xlLm1hcHMuZXZlbnQuYWRkTGlzdGVuZXJPbmNlKF9zZWxmLl9tYXAsICd6b29tX2NoYW5nZWQnLCBmdW5jdGlvbiAoKSB7IF9zZWxmLmFkZFpvb21IYW5kbGVyKCk7IF9zZWxmLnpvb21BY3Rpb24oKTsgfSk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBfc2VsZi5yZW1vdmVab29tSGFuZGxlciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3NlbGYuem9vbV9oYW5kbGVyLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyB9XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBfc2VsZi56b29tQWN0aW9uID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKF9zZWxmLmhhdmVPd25QT0koKSAmJiBfc2VsZi5QT0lTZXJ2aWNlICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgX3NlbGYuUE9JU2VydmljZS5jbGVhcigpO1xyXG5cclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIF9zZWxmLlN1YnNjcmliZUFjdGlvbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGlmIChfc2VsZi5Jc0luaXRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluaXRpYWxpemVBY3Rpb24gPSBfc2VsZi4kbWFwLmRhdGEoJ29uLWluaXRpYWxpemVkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZUFjdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgX3NlbGYuaGF2ZU93blBPSSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAodHlwZW9mIChfc2VsZi5QT0kpICE9ICd1bmRlZmluZWQnICYmIF9zZWxmLlBPSSAhPSBudWxsICYmIF9zZWxmLlBPSSAhPSAnJyk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIF9zZWxmLmVuYWJsZVBsYWNlc1NlcnZpY2UgPSBmdW5jdGlvbiAobG9jYXRpb24pIHtcclxuICAgICAgICAgICAgICAgIGlmICghX3NlbGYuaGF2ZU93blBPSSgpKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB2YXIgX3BsYWNlU2VydmljZSA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2VydmljZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZShfc2VsZi5fbWFwKTtcclxuICAgICAgICAgICAgICAgIHZhciBwbGFjZXNNYXJrZXJzID0ge307XHJcbiAgICAgICAgICAgICAgICB2YXIgcGxhY2VzSW5mb1dpbmRvdyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB2YXIgcG9pSXRlbXMgPSB7fTtcclxuICAgICAgICAgICAgICAgIHZhciBwb2lJdGVtc01hc3RlciA9IHtcclxuICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdCc6IHsgbGFiZWw6ICdEZWZhdWx0JywgaWNvbjogJ21hcC1pY29uLXBvc3RhbC1jb2RlJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdhY2NvdW50aW5nJzogeyBsYWJlbDogJ0FjY291bnRpbmcnLCBpY29uOiAnbWFwLWljb24tYWNjb3VudGluZycgfSxcclxuICAgICAgICAgICAgICAgICAgICAnYWlycG9ydCc6IHsgbGFiZWw6ICdBaXJwb3J0JywgaWNvbjogJ21hcC1pY29uLWFpcnBvcnQnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2FtdXNlbWVudF9wYXJrJzogeyBsYWJlbDogJ0FtdXNlbWVudCBQYXJrJywgaWNvbjogJ21hcC1pY29uLWFtdXNlbWVudC1wYXJrJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdhcXVhcml1bSc6IHsgbGFiZWw6ICdBcXVhcml1bScsIGljb246ICdtYXAtaWNvbi1hcXVhcml1bScgfSxcclxuICAgICAgICAgICAgICAgICAgICAnYXJ0X2dhbGxlcnknOiB7IGxhYmVsOiAnQXJ0IEdhbGxlcnknLCBpY29uOiAnbWFwLWljb24tYXJ0LWdhbGxlcnknIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2F0bSc6IHsgbGFiZWw6ICdBVE0nLCBpY29uOiAnbWFwLWljb24tYXRtJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdiYWtlcnknOiB7IGxhYmVsOiAnQmFrZXJ5JywgaWNvbjogJ21hcC1pY29uLWJha2VyeScgfSxcclxuICAgICAgICAgICAgICAgICAgICAnYmFuayc6IHsgbGFiZWw6ICdCYW5rJywgaWNvbjogJ21hcC1pY29uLWJhbmsnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2Jhcic6IHsgbGFiZWw6ICdCYXInLCBpY29uOiAnbWFwLWljb24tYmFyJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdiZWF1dHlfc2Fsb24nOiB7IGxhYmVsOiAnQmVhdXR5IFNhbG9uJywgaWNvbjogJ21hcC1pY29uLWJlYXV0eS1zYWxvbicgfSxcclxuICAgICAgICAgICAgICAgICAgICAnYmljeWNsZV9zdG9yZSc6IHsgbGFiZWw6ICdCaWN5Y2xlIFN0b3JlJywgaWNvbjogJ21hcC1pY29uLWJpY3ljbGUtc3RvcmUnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2Jvb2tfc3RvcmUnOiB7IGxhYmVsOiAnQm9vayBTdG9yZScsIGljb246ICdtYXAtaWNvbi1ib29rLXN0b3JlJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdib3dsaW5nX2FsbGV5JzogeyBsYWJlbDogJ0Jvd2xpbmcgQWxsZXknLCBpY29uOiAnbWFwLWljb24tYm93bGluZy1hbGxleScgfSxcclxuICAgICAgICAgICAgICAgICAgICAnYnVzX3N0YXRpb24nOiB7IGxhYmVsOiAnQnVzIFN0YXRpb24nLCBpY29uOiAnbWFwLWljb24tYnVzLXN0YXRpb24nIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2NhZmUnOiB7IGxhYmVsOiAnQ2FmZScsIGljb246ICdtYXAtaWNvbi1jYWZlJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdjYW1wZ3JvdW5kJzogeyBsYWJlbDogJ0NhbXBncm91bmQnLCBpY29uOiAnbWFwLWljb24tY2FtcGdyb3VuZCcgfSxcclxuICAgICAgICAgICAgICAgICAgICAnY2FyX2RlYWxlcic6IHsgbGFiZWw6ICdDYXIgRGVhbGVyJywgaWNvbjogJ21hcC1pY29uLWNhci1kZWFsZXInIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2Nhcl9yZW50YWwnOiB7IGxhYmVsOiAnQ2FyIFJlbnRhbCcsIGljb246ICdtYXAtaWNvbi1jYXItcmVudGFsJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdjYXJfcmVwYWlyJzogeyBsYWJlbDogJ0NhciBSZXBhaXInLCBpY29uOiAnbWFwLWljb24tY2FyLXJlcGFpcicgfSxcclxuICAgICAgICAgICAgICAgICAgICAnY2FyX3dhc2gnOiB7IGxhYmVsOiAnQ2FyIFdhc2gnLCBpY29uOiAnbWFwLWljb24tY2FyLXdhc2gnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2Nhc2lubyc6IHsgbGFiZWw6ICdDYXNpbm8nLCBpY29uOiAnbWFwLWljb24tY2FzaW5vJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdjZW1ldGVyeSc6IHsgbGFiZWw6ICdDZW1ldGVyeScsIGljb246ICdtYXAtaWNvbi1jZW1ldGVyeScgfSxcclxuICAgICAgICAgICAgICAgICAgICAnY2h1cmNoJzogeyBsYWJlbDogJ0NodXJjaCcsIGljb246ICdtYXAtaWNvbi1jaHVyY2gnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2NpdHlfaGFsbCc6IHsgbGFiZWw6ICdDaXR5IEhhbGwnLCBpY29uOiAnbWFwLWljb24tY2l0eS1oYWxsJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdjbG90aGluZ19zdG9yZSc6IHsgbGFiZWw6ICdDbG90aGluZyBTdG9yZScsIGljb246ICdtYXAtaWNvbi1jbG90aGluZy1zdG9yZScgfSxcclxuICAgICAgICAgICAgICAgICAgICAnY29udmVuaWVuY2Vfc3RvcmUnOiB7IGxhYmVsOiAnQ29udmVuaWVuY2UgU3RvcmUnLCBpY29uOiAnbWFwLWljb24tY29udmVuaWVuY2Utc3RvcmUnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2NvdXJ0aG91c2UnOiB7IGxhYmVsOiAnQ291cnRob3VzZScsIGljb246ICdtYXAtaWNvbi1jb3VydGhvdXNlJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdkZW50aXN0JzogeyBsYWJlbDogJ0RlbnRpc3QnLCBpY29uOiAnbWFwLWljb24tZGVudGlzdCcgfSxcclxuICAgICAgICAgICAgICAgICAgICAnZGVwYXJ0bWVudF9zdG9yZSc6IHsgbGFiZWw6ICdEZXBhcnRtZW50IFN0b3JlJywgaWNvbjogJ21hcC1pY29uLWRlcGFydG1lbnQtc3RvcmUnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2RvY3Rvcic6IHsgbGFiZWw6ICdEb2N0b3InLCBpY29uOiAnbWFwLWljb24tZG9jdG9yJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdlbGVjdHJpY2lhbic6IHsgbGFiZWw6ICdFbGVjdHJpY2lhbicsIGljb246ICdtYXAtaWNvbi1lbGVjdHJpY2lhbicgfSxcclxuICAgICAgICAgICAgICAgICAgICAnZWxlY3Ryb25pY3Nfc3RvcmUnOiB7IGxhYmVsOiAnRWxlY3Ryb25pY3MgU3RvcmUnLCBpY29uOiAnbWFwLWljb24tZWxlY3Ryb25pY3Mtc3RvcmUnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2VtYmFzc3knOiB7IGxhYmVsOiAnRW1iYXNzeScsIGljb246ICdtYXAtaWNvbi1lbWJhc3N5JyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdmaXJlX3N0YXRpb24nOiB7IGxhYmVsOiAnRmlyZSBTdGF0aW9uJywgaWNvbjogJ21hcC1pY29uLWZpcmUtc3RhdGlvbicgfSxcclxuICAgICAgICAgICAgICAgICAgICAnZmxvcmlzdCc6IHsgbGFiZWw6ICdGbG9yaXN0JywgaWNvbjogJ21hcC1pY29uLWZsb3Jpc3QnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2Z1bmVyYWxfaG9tZSc6IHsgbGFiZWw6ICdGdW5lcmFsIEhvbWUnLCBpY29uOiAnbWFwLWljb24tZnVuZXJhbC1ob21lJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdmdXJuaXR1cmVfc3RvcmUnOiB7IGxhYmVsOiAnRnVybml0dXJlIFN0b3JlJywgaWNvbjogJ21hcC1pY29uLWZ1cm5pdHVyZS1zdG9yZScgfSxcclxuICAgICAgICAgICAgICAgICAgICAnZ2FzX3N0YXRpb24nOiB7IGxhYmVsOiAnR2FzIFN0YXRpb24nLCBpY29uOiAnbWFwLWljb24tZ2FzLXN0YXRpb24nIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2d5bSc6IHsgbGFiZWw6ICdHeW0nLCBpY29uOiAnbWFwLWljb24tZ3ltJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdoYWlyX2NhcmUnOiB7IGxhYmVsOiAnSGFpciBDYXJlJywgaWNvbjogJ21hcC1pY29uLWhhaXItY2FyZScgfSxcclxuICAgICAgICAgICAgICAgICAgICAnaGFyZHdhcmVfc3RvcmUnOiB7IGxhYmVsOiAnSGFyZHdhcmUgU3RvcmUnLCBpY29uOiAnbWFwLWljb24taGFyZHdhcmUtc3RvcmUnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2hpbmR1X3RlbXBsZSc6IHsgbGFiZWw6ICdIaW5kdSBUZW1wbGUnLCBpY29uOiAnbWFwLWljb24taGluZHUtdGVtcGxlJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdob21lX2dvb2RzX3N0b3JlJzogeyBsYWJlbDogJ0hvbWUgR29vZHMgU3RvcmUnLCBpY29uOiAnbWFwLWljb24tc2hvcHBpbmctbWFsbCcgfSxcclxuICAgICAgICAgICAgICAgICAgICAnaG9zcGl0YWwnOiB7IGxhYmVsOiAnSG9zcGl0YWwnLCBpY29uOiAnbWFwLWljb24taG9zcGl0YWwnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2luc3VyYW5jZV9hZ2VuY3knOiB7IGxhYmVsOiAnSW5zdXJhbmNlIEFnZW5jeScsIGljb246ICdtYXAtaWNvbi1pbnN1cmFuY2UtYWdlbmN5JyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdqZXdlbHJ5X3N0b3JlJzogeyBsYWJlbDogJ0pld2VscnkgU3RvcmUnLCBpY29uOiAnbWFwLWljb24tamV3ZWxyeS1zdG9yZScgfSxcclxuICAgICAgICAgICAgICAgICAgICAnbGF1bmRyeSc6IHsgbGFiZWw6ICdMYXVuZHJ5JywgaWNvbjogJ21hcC1pY29uLWxhdW5kcnknIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2xhd3llcic6IHsgbGFiZWw6ICdMYXd5ZXInLCBpY29uOiAnbWFwLWljb24tbGF3eWVyJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdsaWJyYXJ5JzogeyBsYWJlbDogJ0xpYnJhcnknLCBpY29uOiAnbWFwLWljb24tbGlicmFyeScgfSxcclxuICAgICAgICAgICAgICAgICAgICAnbGlxdW9yX3N0b3JlJzogeyBsYWJlbDogJ0xpcXVvciBTdG9yZScsIGljb246ICdtYXAtaWNvbi1saXF1b3Itc3RvcmUnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2xvY2FsX2dvdmVybm1lbnRfb2ZmaWNlJzogeyBsYWJlbDogJ0xvY2FsIEdvdmVybm1lbnQgT2ZmaWNlJywgaWNvbjogJ21hcC1pY29uLWxvY2FsLWdvdmVybm1lbnQnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2xvY2tzbWl0aCc6IHsgbGFiZWw6ICdMb2Nrc21pdGgnLCBpY29uOiAnbWFwLWljb24tbG9ja3NtaXRoJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdsb2RnaW5nJzogeyBsYWJlbDogJ0xvZGdpbmcnLCBpY29uOiAnbWFwLWljb24tbG9kZ2luZycgfSxcclxuICAgICAgICAgICAgICAgICAgICAnbWVhbF9kZWxpdmVyeSc6IHsgbGFiZWw6ICdNZWFsJywgaWNvbjogJ21hcC1pY29uLXJlc3RhdXJhbnQnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ21lYWxfdGFrZWF3YXknOiB7IGxhYmVsOiAnTWVhbCcsIGljb246ICdtYXAtaWNvbi1yZXN0YXVyYW50JyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdtb3NxdWUnOiB7IGxhYmVsOiAnTW9zcXVlJywgaWNvbjogJ21hcC1pY29uLW1vc3F1ZScgfSxcclxuICAgICAgICAgICAgICAgICAgICAnbW92aWVfcmVudGFsJzogeyBsYWJlbDogJ01vdmllIFJlbnRhbCcsIGljb246ICdtYXAtaWNvbi1tb3ZpZS1yZW50YWwnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ21vdmllX3RoZWF0ZXInOiB7IGxhYmVsOiAnTW92aWUgVGhlYXRlcicsIGljb246ICdtYXAtaWNvbi1tb3ZpZS10aGVhdGVyJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdtb3ZpbmdfY29tcGFueSc6IHsgbGFiZWw6ICdNb3ZpbmcgQ29tcGFueScsIGljb246ICdtYXAtaWNvbi1tb3ZpbmctY29tcGFueScgfSxcclxuICAgICAgICAgICAgICAgICAgICAnbXVzZXVtJzogeyBsYWJlbDogJ011c2V1bScsIGljb246ICdtYXAtaWNvbi1tdXNldW0nIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ25pZ2h0X2NsdWInOiB7IGxhYmVsOiAnTmlnaHQgQ2x1YicsIGljb246ICdtYXAtaWNvbi1uaWdodC1jbHViJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdwYWludGVyJzogeyBsYWJlbDogJ1BhaW50ZXInLCBpY29uOiAnbWFwLWljb24tcGFpbnRlcicgfSxcclxuICAgICAgICAgICAgICAgICAgICAncGFyayc6IHsgbGFiZWw6ICdQYXJrJywgaWNvbjogJ21hcC1pY29uLXBhcmsnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ3BhcmtpbmcnOiB7IGxhYmVsOiAnUGFya2luZycsIGljb246ICdtYXAtaWNvbi1wYXJraW5nJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdwZXRfc3RvcmUnOiB7IGxhYmVsOiAnUGV0IFN0b3JlJywgaWNvbjogJ21hcC1pY29uLXBldC1zdG9yZScgfSxcclxuICAgICAgICAgICAgICAgICAgICAncGhhcm1hY3knOiB7IGxhYmVsOiAnUGhhcm1hY3knLCBpY29uOiAnbWFwLWljb24tcGhhcm1hY3knIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ3BoeXNpb3RoZXJhcGlzdCc6IHsgbGFiZWw6ICdQaHlzaW90aGVyYXBpc3QnLCBpY29uOiAnbWFwLWljb24tcGh5c2lvdGhlcmFwaXN0JyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdwbHVtYmVyJzogeyBsYWJlbDogJ1BsdW1iZXInLCBpY29uOiAnbWFwLWljb24tcGx1bWJlcicgfSxcclxuICAgICAgICAgICAgICAgICAgICAncG9saWNlJzogeyBsYWJlbDogJ1BvbGljZScsIGljb246ICdtYXAtaWNvbi1wb2xpY2UnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ3Bvc3Rfb2ZmaWNlJzogeyBsYWJlbDogJ1Bvc3QgT2ZmaWNlJywgaWNvbjogJ21hcC1pY29uLXBvc3Qtb2ZmaWNlJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdyZWFsX2VzdGF0ZV9hZ2VuY3knOiB7IGxhYmVsOiAnUmVhbCBFc3RhdGUgQWdlbmN5JywgaWNvbjogJ21hcC1pY29uLXJlYWwtZXN0YXRlLWFnZW5jeScgfSxcclxuICAgICAgICAgICAgICAgICAgICAncmVzdGF1cmFudCc6IHsgbGFiZWw6ICdSZXN0YXVyYW50JywgaWNvbjogJ21hcC1pY29uLXJlc3RhdXJhbnQnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ3Jvb2ZpbmdfY29udHJhY3Rvcic6IHsgbGFiZWw6ICdSb29maW5nIENvbnRyYWN0b3InLCBpY29uOiAnbWFwLWljb24tcm9vZmluZy1jb250cmFjdG9yJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdydl9wYXJrJzogeyBsYWJlbDogJ1JWIFBhcmsnLCBpY29uOiAnbWFwLWljb24tcnYtcGFyaycgfSxcclxuICAgICAgICAgICAgICAgICAgICAnc2Nob29sJzogeyBsYWJlbDogJ1NjaG9vbCcsIGljb246ICdtYXAtaWNvbi1zY2hvb2wnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ3Nob3BwaW5nX21hbGwnOiB7IGxhYmVsOiAnU2hvcHBpbmcgTWFsbCcsIGljb246ICdtYXAtaWNvbi1zaG9wcGluZy1tYWxsJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdzcGEnOiB7IGxhYmVsOiAnU3BhJywgaWNvbjogJ21hcC1pY29uLXNwYScgfSxcclxuICAgICAgICAgICAgICAgICAgICAnc3RhZGl1bSc6IHsgbGFiZWw6ICdTdGFkaXVtJywgaWNvbjogJ21hcC1pY29uLXN0YWRpdW0nIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ3N0b3JhZ2UnOiB7IGxhYmVsOiAnU3RvcmFnZScsIGljb246ICdtYXAtaWNvbi1zdG9yYWdlJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdzaG9lX3N0b3JlJzogeyBsYWJlbDogJ1Nob2UgU3RvcmUnLCBpY29uOiAnbWFwLWljb24tc3RvcmUnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ3N0b3JlJzogeyBsYWJlbDogJ1N0b3JlJywgaWNvbjogJ21hcC1pY29uLXN0b3JlJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICdzdWJ3YXlfc3RhdGlvbic6IHsgbGFiZWw6ICdTdWJ3YXkgU3RhdGlvbicsIGljb246ICdtYXAtaWNvbi1zdWJ3YXktc3RhdGlvbicgfSxcclxuICAgICAgICAgICAgICAgICAgICAnc3VwZXJtYXJrZXQnOiB7IGxhYmVsOiAnU3VwZXJtYXJrZXQnLCBpY29uOiAnbWFwLWljb24tZ3JvY2VyeS1vci1zdXBlcm1hcmtldCcgfSxcclxuICAgICAgICAgICAgICAgICAgICAnc3luYWdvZ3VlJzogeyBsYWJlbDogJ1N5bmFnb2d1ZScsIGljb246ICdtYXAtaWNvbi1zeW5hZ29ndWUnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ3RheGlfc3RhbmQnOiB7IGxhYmVsOiAnVGF4aSBTdGFuZCcsIGljb246ICdtYXAtaWNvbi10YXhpLXN0YW5kJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICd0cmFpbl9zdGF0aW9uJzogeyBsYWJlbDogJ1RyYWluIFN0YXRpb24nLCBpY29uOiAnbWFwLWljb24tdHJhaW4tc3RhdGlvbicgfSxcclxuICAgICAgICAgICAgICAgICAgICAndHJhbnNpdF9zdGF0aW9uJzogeyBsYWJlbDogJ1RyYW5zaXQgU3RhdGlvbicsIGljb246ICdtYXAtaWNvbi10cmFuc2l0LXN0YXRpb24nIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ3RyYXZlbF9hZ2VuY3knOiB7IGxhYmVsOiAnVHJhdmVsIEFnZW5jeScsIGljb246ICdtYXAtaWNvbi10cmF2ZWwtYWdlbmN5JyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICd2ZXRlcmluYXJ5X2NhcmUnOiB7IGxhYmVsOiAnVmV0ZXJpbmFyeSBDYXJlJywgaWNvbjogJ21hcC1pY29uLXZldGVyaW5hcnktY2FyZScgfSxcclxuICAgICAgICAgICAgICAgICAgICAnem9vJzogeyBsYWJlbDogJ1pvbycsIGljb246ICdtYXAtaWNvbi16b28nIH0sXHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBzZWFyY2godHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyUGxhY2VNYXJrZXJzKHR5cGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWFyY2hMb2NhdGlvbiA9IF9zZWxmLl9tYXAuZ2V0Qm91bmRzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VydmljZS5uZWFyYnlTZWFyY2goeyBib3VuZHM6IHNlYXJjaExvY2F0aW9uLCByYWRpdXM6IDUwMCwgdHlwZTogW3R5cGVdIH0sIGZ1bmN0aW9uIChyZXN1bHRzLCBzdGF0dXMsIHBhZ2luYXRpb24pIHsgaWYgKHN0YXR1cyAhPT0gJ09LJykgcmV0dXJuOyBjcmVhdGVNYXJrZXJzKHR5cGUsIHJlc3VsdHMpOyB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgX3BsYWNlU2VydmljZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gcG9pSXRlbXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvaSA9IHBvaUl0ZW1zW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb2kuaXNBbGxvd2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2kuaXNBbGxvd2VkID0gcG9pLmFjdGlvbkl0ZW1bMF0uY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJQbGFjZU1hcmtlcnMocG9pLmtleSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gZW5hYmxlU2VhcmNoYWJsZVZpZXdzKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChfc2VsZi5fbWFwLmdldFpvb20oKSA8IDE0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgX3NlbGYuRGlzYWJsZUFjdGlvbkxpc3RlbmVycygpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9zZWxmLl9tYXAuc2V0Wm9vbSgxNCk7XHJcbiAgICAgICAgICAgICAgICAgICAgX3NlbGYuRW5hYmxlQWN0aW9uTGlzdGVuZXJzKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRlTWFya2Vycyh0eXBlLCBwbGFjZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgcGxhY2U7IHBsYWNlID0gcGxhY2VzW2ldOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlUGxhY2VNYXJrZXIodHlwZSwgcGxhY2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBjcmVhdGVQbGFjZU1hcmtlcih0eXBlLCBwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGVzQ2xhc3NlcyA9ICcgJyArIHR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvaUl0ZW0gPSBnZXRQT0lJdGVtKHR5cGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwbGFjZU1hcmtlciA9IG5ldyBNYXJrZXJXaXRoTGFiZWwoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcC5nZW9tZXRyeS5sb2NhdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJy9pbWFnZXMvYzAucG5nJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxDb250ZW50OiAnPGkgY2xhc3M9XCJtYXAtaWNvbiAnICsgcG9pSXRlbS5pY29uICsgJ1wiPjwvaT4nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbEluQmFja2dyb3VuZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsQ2xhc3M6ICdwb2ktbWFya2VyJyArIHR5cGVzQ2xhc3NlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHAubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VJZDogcC5wbGFjZV9pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwOiBfc2VsZi5fbWFwXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQuYWRkTGlzdGVuZXIocGxhY2VNYXJrZXIsICdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlc0luZm9XaW5kb3cuY2xvc2UoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlc0luZm9XaW5kb3cgPSBuZXcgZ29vZ2xlLm1hcHMuSW5mb1dpbmRvdygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLmdldERldGFpbHMoeyBwbGFjZUlkOiBwbGFjZU1hcmtlci5wbGFjZUlkIH0sIGZ1bmN0aW9uIChQbGFjZVJlc3VsdCwgUGxhY2VzU2VydmljZVN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBsYWNlc1NlcnZpY2VTdGF0dXMgPT0gJ09LJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBQbGFjZUFkZHIgPSAoUGxhY2VSZXN1bHQuZm9ybWF0dGVkX2FkZHJlc3MgIT0gdW5kZWZpbmVkKSA/IFBsYWNlUmVzdWx0LmZvcm1hdHRlZF9hZGRyZXNzIDogJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIFBsYWNlUGhvbmUgPSAoUGxhY2VSZXN1bHQuZm9ybWF0dGVkX3Bob25lX251bWJlciAhPSB1bmRlZmluZWQpID8gUGxhY2VSZXN1bHQuZm9ybWF0dGVkX3Bob25lX251bWJlciA6ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBQbGFjZVdlYiA9IChQbGFjZVJlc3VsdC53ZWJzaXRlICE9IHVuZGVmaW5lZCkgPyBQbGFjZVJlc3VsdC53ZWJzaXRlIDogJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIFBsYWNlVXJsID0gKFBsYWNlUmVzdWx0LnVybCAhPSB1bmRlZmluZWQpID8gUGxhY2VSZXN1bHQudXJsIDogJyc7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50ID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCArPSAnPGRpdiBjbGFzcz1cInBvaS1pbmZvLXdpbmRvd1wiPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCArPSAnPGEgY2xhc3M9XCJtZGwtY29sb3ItdGV4dC0tcHJpbWFyeSBhZGRyZXNzXCInICsgKFBsYWNlVXJsICE9IG51bGwgJiYgUGxhY2VVcmwgIT0gJycgPyAnIGhyZWY9XCInICsgUGxhY2VVcmwgKyAnXCInIDogJycpICsgJyB0YXJnZXQ9XCJfYmxhbmtcIj48Yj4nICsgcGxhY2VNYXJrZXIudGl0bGUgKyAnPC9iPjwvYT4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQbGFjZUFkZHIgIT0gbnVsbCAmJiBQbGFjZUFkZHIgIT0gJycpIGNvbnRlbnQgKz0gJzxpPicgKyBQbGFjZUFkZHIgKyAnPC9pPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCArPSAnPGRpdiBjbGFzcz1cImNvbnRhY3RcIiBkYXRhLXZhbHVlPVxcXCInICsgUGxhY2VQaG9uZSArIFBsYWNlV2ViICsgJ1xcXCI+J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQbGFjZVBob25lICE9IG51bGwgJiYgUGxhY2VQaG9uZSAhPSAnJykgY29udGVudCArPSAnPGEgY2xhc3M9XCJtZGwtY29sb3ItdGV4dC0tcHJpbWFyeSBwaG9uZVwiIGRhdGEtbWF0ZXJpYWwtaWNvbj1cInBob25lX2lwaG9uZVwiIGhyZWY9XCJ0ZWw6JyArIFBsYWNlUGhvbmUgKyAnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+Q2FsbDwvYT4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQbGFjZVdlYiAhPSBudWxsICYmIFBsYWNlV2ViICE9ICcnKSBjb250ZW50ICs9ICc8YSBjbGFzcz1cIm1kbC1jb2xvci10ZXh0LS1wcmltYXJ5IHdlYnNpdGVcIiBkYXRhLW1hdGVyaWFsLWljb249XCJwdWJsaWNcIiBocmVmPVwiJyArIFBsYWNlV2ViICsgJ1wiIHRhcmdldD1cIl9ibGFua1wiPldlYnNpdGU8L2E+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ICs9ICc8L2Rpdj4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgKz0gJzwvZGl2Pic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VzSW5mb1dpbmRvdy5zZXRDb250ZW50KGNvbnRlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlc0luZm9XaW5kb3cub3Blbihfc2VsZi5fbWFwLCBwbGFjZU1hcmtlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKHBsYWNlc01hcmtlcnNbdHlwZV0pID09ICd1bmRlZmluZWQnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZXNNYXJrZXJzW3R5cGVdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VzTWFya2Vyc1t0eXBlXS5wdXNoKHBsYWNlTWFya2VyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBjbGVhclBsYWNlTWFya2Vycyh0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAocGxhY2VzTWFya2Vyc1t0eXBlXSkgIT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHBsYWNlc01hcmtlcnNbdHlwZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlc01hcmtlcnNbdHlwZV1ba2V5XS5zZXRNYXAobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBsYWNlc01hcmtlcnNbdHlwZV07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGVzRW5hYmxlZCA9IF9zZWxmLlBPSS5zcGxpdCgnLCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGVzRW5hYmxlZC5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVBPSUl0ZW0odHlwZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnVpbGRVSSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGdldFBPSUl0ZW0odHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKHR5cGUpID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKHBvaUl0ZW1zW3R5cGUudG9Mb3dlckNhc2UoKV0pICE9ICd1bmRlZmluZWQnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvaUl0ZW1zW3R5cGUudG9Mb3dlckNhc2UoKV07XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKHBvaUl0ZW1zW3R5cGVba2V5XS50b0xvd2VyQ2FzZSgpXSkgIT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvaUl0ZW1zW3R5cGVba2V5XS50b0xvd2VyQ2FzZSgpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKHBvaUl0ZW1zTWFzdGVyW3R5cGVba2V5XS50b0xvd2VyQ2FzZSgpXSkgIT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvaUl0ZW1zTWFzdGVyW3R5cGVba2V5XS50b0xvd2VyQ2FzZSgpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcG9pSXRlbXNNYXN0ZXJbJ2RlZmF1bHQnXTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBjcmVhdGVQT0lJdGVtKHR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcG9pSXRlbSA9IGdldFBPSUl0ZW1Gcm9tTWFzdGVyKHR5cGUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvaUl0ZW0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIChwb2lJdGVtc1twb2lJdGVtLmtleV0pID09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2lJdGVtc1twb2lJdGVtLmtleV0gPSBwb2lJdGVtO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pSXRlbXNbcG9pSXRlbS5rZXldLmlzQWxsb3dlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGdldFBPSUl0ZW1Gcm9tTWFzdGVyKHR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIChwb2lJdGVtc01hc3Rlclt0eXBlXSkgIT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvaVR5cGUgPSBwb2lJdGVtc01hc3Rlclt0eXBlXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9pVHlwZS5rZXkgPSB0eXBlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcG9pVHlwZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gYnVpbGRVSSgpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgJGNsb3NlID0gJCgnPGkgZGF0YS1wb2ktdG9nZ2xlPVwiXCIgY2xhc3M9XCJhZ2EtY2xvc2VcIj48L2k+Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgJGNsb3NlLm9uKCdjbGljaycsIF9zZWxmLlNob3dQT0kpO1xyXG4gICAgICAgICAgICAgICAgICAgICRjbG9zZS5hcHBlbmRUbyhfc2VsZi4kUE9JQ29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyICRwb2lMaXN0ID0gJCgnPHVsPjwvdWw+Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmVudElEID0gX3NlbGYuJG1hcC5hdHRyKCdpZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBwb2lJdGVtcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHBvaUxpc3QuYXBwZW5kKGJ1aWxkVUlQT0lJdGVtKHBvaUl0ZW1zW2tleV0sIGtleSwgcGFyZW50SUQpKTtcclxuICAgICAgICAgICAgICAgICAgICBfc2VsZi4kUE9JQ29udGV4dC5hcHBlbmQoJHBvaUxpc3QpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGJ1aWxkVUlQT0lJdGVtKHBvaSwga2V5LCBwYXJlbnRJRCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB2YXIgJGl0ZW0gPSAkKCc8bGk+PC9saT4nKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgJGl0ZW1DaGVjayA9ICQoJzxpbnB1dCBpZD1cIicgKyBwYXJlbnRJRCArICdfcG9pXycgKyBrZXkgKyAnXCIgdHlwZT1cXFwiY2hlY2tib3hcXFwiICcgKyAocG9pLmlzQWxsb3dlZCA/ICcgY2hlY2tlZCcgOiAnJykgKyAnIHZhbHVlPVwiJyArIHBvaS5rZXkgKyAnXCIgLz4nKTtcclxuICAgICAgICAgICAgICAgICAgICBwb2kuYWN0aW9uSXRlbSA9ICRpdGVtQ2hlY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgJGl0ZW1DaGVjay5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVTZWFyY2hhYmxlVmlld3MoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9pLmlzQWxsb3dlZCA9ICQodGhpcylbMF0uY2hlY2tlZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvaS5pc0FsbG93ZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2gocG9pLmtleSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyUGxhY2VNYXJrZXJzKHBvaS5rZXkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICRpdGVtQ2hlY2suYXBwZW5kVG8oJGl0ZW0pXHJcbiAgICAgICAgICAgICAgICAgICAgJGl0ZW0uYXBwZW5kKCc8bGFiZWwgZm9yPVwiJyArIHBhcmVudElEICsgJ19wb2lfJyArIGtleSArICdcIiBjbGFzcz1cIicgKyBwb2kua2V5ICsgJ1wiPjxpIGNsYXNzPVwibWFwLWljb24gJyArIHBvaS5pY29uICsgJ1wiPjwvaT48c3Bhbj4nICsgcG9pLmxhYmVsICsgJzwvc3Bhbj48L2xhYmVsJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRpdGVtO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICBpbml0KCk7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9wbGFjZVNlcnZpY2U7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vL0VuZCBEZWZpbml0aW9uXHJcblxyXG4gICAgICAgICAgICBmdW5jdGlvbiBNYXJrZXJXaXRoTGFiZWwob3B0X29wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIG9wdF9vcHRpb25zID0gb3B0X29wdGlvbnMgfHwge307XHJcbiAgICAgICAgICAgICAgICBvcHRfb3B0aW9ucy5sYWJlbENvbnRlbnQgPSBvcHRfb3B0aW9ucy5sYWJlbENvbnRlbnQgfHwgXCJcIjtcclxuICAgICAgICAgICAgICAgIG9wdF9vcHRpb25zLmxhYmVsQW5jaG9yID0gb3B0X29wdGlvbnMubGFiZWxBbmNob3IgfHwgbmV3IGdvb2dsZS5tYXBzLlBvaW50KDAsIDApO1xyXG4gICAgICAgICAgICAgICAgb3B0X29wdGlvbnMubGFiZWxDbGFzcyA9IG9wdF9vcHRpb25zLmxhYmVsQ2xhc3MgfHwgXCJtYXJrZXJMYWJlbHNcIjtcclxuICAgICAgICAgICAgICAgIG9wdF9vcHRpb25zLmxhYmVsU3R5bGUgPSBvcHRfb3B0aW9ucy5sYWJlbFN0eWxlIHx8IHt9O1xyXG4gICAgICAgICAgICAgICAgb3B0X29wdGlvbnMubGFiZWxJbkJhY2tncm91bmQgPSBvcHRfb3B0aW9ucy5sYWJlbEluQmFja2dyb3VuZCB8fCBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0X29wdGlvbnMubGFiZWxWaXNpYmxlID09PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3B0X29wdGlvbnMubGFiZWxWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0X29wdGlvbnMucmFpc2VPbkRyYWcgPT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICBvcHRfb3B0aW9ucy5yYWlzZU9uRHJhZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdF9vcHRpb25zLmNsaWNrYWJsZSA9PT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIG9wdF9vcHRpb25zLmNsaWNrYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdF9vcHRpb25zLmRyYWdnYWJsZSA9PT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIG9wdF9vcHRpb25zLmRyYWdnYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRfb3B0aW9ucy5vcHRpbWl6ZWQgPT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICBvcHRfb3B0aW9ucy5vcHRpbWl6ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG9wdF9vcHRpb25zLmNyb3NzSW1hZ2UgPSBvcHRfb3B0aW9ucy5jcm9zc0ltYWdlIHx8IFwiaHR0cFwiICsgKGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sID09PSBcImh0dHBzOlwiID8gXCJzXCIgOiBcIlwiKSArIFwiOi8vbWFwcy5nc3RhdGljLmNvbS9pbnRsL2VuX3VzL21hcGZpbGVzL2RyYWdfY3Jvc3NfNjdfMTYucG5nXCI7XHJcbiAgICAgICAgICAgICAgICBvcHRfb3B0aW9ucy5oYW5kQ3Vyc29yID0gb3B0X29wdGlvbnMuaGFuZEN1cnNvciB8fCBcImh0dHBcIiArIChkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCA9PT0gXCJodHRwczpcIiA/IFwic1wiIDogXCJcIikgKyBcIjovL21hcHMuZ3N0YXRpYy5jb20vaW50bC9lbl91cy9tYXBmaWxlcy9jbG9zZWRoYW5kXzhfOC5jdXJcIjtcclxuICAgICAgICAgICAgICAgIG9wdF9vcHRpb25zLm9wdGltaXplZCA9IGZhbHNlOyAvLyBPcHRpbWl6ZWQgcmVuZGVyaW5nIGlzIG5vdCBzdXBwb3J0ZWRcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsID0gbmV3IE1hcmtlckxhYmVsXyh0aGlzLCBvcHRfb3B0aW9ucy5jcm9zc0ltYWdlLCBvcHRfb3B0aW9ucy5oYW5kQ3Vyc29yKTsgLy8gQmluZCB0aGUgbGFiZWwgdG8gdGhlIG1hcmtlclxyXG4gICAgICAgICAgICAgICAgZ29vZ2xlLm1hcHMuTWFya2VyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIGluaGVyaXRzKGNoaWxkQ3RvciwgcGFyZW50Q3Rvcikge1xyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gdGVtcEN0b3IoKSB7IH1cclxuICAgICAgICAgICAgICAgIHRlbXBDdG9yLnByb3RvdHlwZSA9IHBhcmVudEN0b3IucHJvdG90eXBlO1xyXG4gICAgICAgICAgICAgICAgY2hpbGRDdG9yLnN1cGVyQ2xhc3NfID0gcGFyZW50Q3Rvci5wcm90b3R5cGU7XHJcbiAgICAgICAgICAgICAgICBjaGlsZEN0b3IucHJvdG90eXBlID0gbmV3IHRlbXBDdG9yKCk7XHJcbiAgICAgICAgICAgICAgICBjaGlsZEN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY2hpbGRDdG9yO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBmdW5jdGlvbiBNYXJrZXJMYWJlbF8obWFya2VyLCBjcm9zc1VSTCwgaGFuZEN1cnNvclVSTCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXJrZXJfID0gbWFya2VyO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kQ3Vyc29yVVJMXyA9IG1hcmtlci5oYW5kQ3Vyc29yVVJMO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbERpdl8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxEaXZfLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBhYnNvbHV0ZTsgb3ZlcmZsb3c6IGhpZGRlbjtcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXZlbnREaXZfID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXZlbnREaXZfLnN0eWxlLmNzc1RleHQgPSB0aGlzLmxhYmVsRGl2Xy5zdHlsZS5jc3NUZXh0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ldmVudERpdl8uc2V0QXR0cmlidXRlKFwib25zZWxlY3RzdGFydFwiLCBcInJldHVybiBmYWxzZTtcIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50RGl2Xy5zZXRBdHRyaWJ1dGUoXCJvbmRyYWdzdGFydFwiLCBcInJldHVybiBmYWxzZTtcIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyb3NzRGl2XyA9IE1hcmtlckxhYmVsXy5nZXRTaGFyZWRDcm9zcyhjcm9zc1VSTCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGluaGVyaXRzKE1hcmtlckxhYmVsXywgZ29vZ2xlLm1hcHMuT3ZlcmxheVZpZXcpO1xyXG4gICAgICAgICAgICBNYXJrZXJMYWJlbF8uZ2V0U2hhcmVkQ3Jvc3MgPSBmdW5jdGlvbiAoY3Jvc3NVUkwpIHtcclxuICAgICAgICAgICAgICAgIHZhciBkaXY7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIE1hcmtlckxhYmVsXy5nZXRTaGFyZWRDcm9zcy5jcm9zc0RpdiA9PT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgZGl2LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogMTAwMDAwMjsgZGlzcGxheTogbm9uZTtcIjtcclxuICAgICAgICAgICAgICAgICAgICBkaXYuc3R5bGUubWFyZ2luTGVmdCA9IFwiMHB4XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgZGl2LnN0eWxlLm1hcmdpblRvcCA9IFwiMHB4XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgZGl2LnNyYyA9IGNyb3NzVVJMO1xyXG4gICAgICAgICAgICAgICAgICAgIE1hcmtlckxhYmVsXy5nZXRTaGFyZWRDcm9zcy5jcm9zc0RpdiA9IGRpdjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBNYXJrZXJMYWJlbF8uZ2V0U2hhcmVkQ3Jvc3MuY3Jvc3NEaXY7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIE1hcmtlckxhYmVsXy5wcm90b3R5cGUub25BZGQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbWUgPSB0aGlzO1xyXG4gICAgICAgICAgICAgICAgdmFyIGNNb3VzZUlzRG93biA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdmFyIGNEcmFnZ2luZ0xhYmVsID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB2YXIgY1NhdmVkWkluZGV4O1xyXG4gICAgICAgICAgICAgICAgdmFyIGNMYXRPZmZzZXQsIGNMbmdPZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICB2YXIgY0lnbm9yZUNsaWNrO1xyXG4gICAgICAgICAgICAgICAgdmFyIGNSYWlzZUVuYWJsZWQ7XHJcbiAgICAgICAgICAgICAgICB2YXIgY1N0YXJ0UG9zaXRpb247XHJcbiAgICAgICAgICAgICAgICB2YXIgY1N0YXJ0Q2VudGVyO1xyXG4gICAgICAgICAgICAgICAgdmFyIGNSYWlzZU9mZnNldCA9IDA7XHJcbiAgICAgICAgICAgICAgICB2YXIgY0RyYWdnaW5nQ3Vyc29yID0gXCJ1cmwoXCIgKyB0aGlzLmhhbmRDdXJzb3JVUkxfICsgXCIpXCI7XHJcbiAgICAgICAgICAgICAgICB2YXIgY0Fib3J0RXZlbnQgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnByZXZlbnREZWZhdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZS5jYW5jZWxCdWJibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnN0b3BQcm9wYWdhdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIGNTdG9wQm91bmNlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lLm1hcmtlcl8uc2V0QW5pbWF0aW9uKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0UGFuZXMoKS5vdmVybGF5SW1hZ2UuYXBwZW5kQ2hpbGQodGhpcy5sYWJlbERpdl8pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRQYW5lcygpLm92ZXJsYXlNb3VzZVRhcmdldC5hcHBlbmRDaGlsZCh0aGlzLmV2ZW50RGl2Xyk7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIE1hcmtlckxhYmVsXy5nZXRTaGFyZWRDcm9zcy5wcm9jZXNzZWQgPT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFBhbmVzKCkub3ZlcmxheUltYWdlLmFwcGVuZENoaWxkKHRoaXMuY3Jvc3NEaXZfKTtcclxuICAgICAgICAgICAgICAgICAgICBNYXJrZXJMYWJlbF8uZ2V0U2hhcmVkQ3Jvc3MucHJvY2Vzc2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzXyA9IFtcclxuICAgICAgICAgICAgICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQuYWRkRG9tTGlzdGVuZXIodGhpcy5ldmVudERpdl8sIFwibW91c2VvdmVyXCIsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAobWUubWFya2VyXy5nZXREcmFnZ2FibGUoKSB8fCBtZS5tYXJrZXJfLmdldENsaWNrYWJsZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdHlsZS5jdXJzb3IgPSBcInBvaW50ZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBnb29nbGUubWFwcy5ldmVudC50cmlnZ2VyKG1lLm1hcmtlcl8sIFwibW91c2VvdmVyXCIsIGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQuYWRkRG9tTGlzdGVuZXIodGhpcy5ldmVudERpdl8sIFwibW91c2VvdXRcIiwgZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICgobWUubWFya2VyXy5nZXREcmFnZ2FibGUoKSB8fCBtZS5tYXJrZXJfLmdldENsaWNrYWJsZSgpKSAmJiAhY0RyYWdnaW5nTGFiZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0eWxlLmN1cnNvciA9IG1lLm1hcmtlcl8uZ2V0Q3Vyc29yKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQudHJpZ2dlcihtZS5tYXJrZXJfLCBcIm1vdXNlb3V0XCIsIGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQuYWRkRG9tTGlzdGVuZXIodGhpcy5ldmVudERpdl8sIFwibW91c2Vkb3duXCIsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjRHJhZ2dpbmdMYWJlbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG1lLm1hcmtlcl8uZ2V0RHJhZ2dhYmxlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjTW91c2VJc0Rvd24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3R5bGUuY3Vyc29yID0gY0RyYWdnaW5nQ3Vyc29yO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG1lLm1hcmtlcl8uZ2V0RHJhZ2dhYmxlKCkgfHwgbWUubWFya2VyXy5nZXRDbGlja2FibGUoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdvb2dsZS5tYXBzLmV2ZW50LnRyaWdnZXIobWUubWFya2VyXywgXCJtb3VzZWRvd25cIiwgZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY0Fib3J0RXZlbnQoZSk7IC8vIFByZXZlbnQgbWFwIHBhbiB3aGVuIHN0YXJ0aW5nIGEgZHJhZyBvbiBhIGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICBnb29nbGUubWFwcy5ldmVudC5hZGREb21MaXN0ZW5lcihkb2N1bWVudCwgXCJtb3VzZXVwXCIsIGZ1bmN0aW9uIChtRXZlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHZhciBwb3NpdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChjTW91c2VJc0Rvd24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjTW91c2VJc0Rvd24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZS5ldmVudERpdl8uc3R5bGUuY3Vyc29yID0gXCJwb2ludGVyXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQudHJpZ2dlcihtZS5tYXJrZXJfLCBcIm1vdXNldXBcIiwgbUV2ZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChjRHJhZ2dpbmdMYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjUmFpc2VFbmFibGVkKSB7IC8vIExvd2VyIHRoZSBtYXJrZXIgJiBsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IG1lLmdldFByb2plY3Rpb24oKS5mcm9tTGF0TG5nVG9EaXZQaXhlbChtZS5tYXJrZXJfLmdldFBvc2l0aW9uKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbi55ICs9IGNSYWlzZU9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWUubWFya2VyXy5zZXRQb3NpdGlvbihtZS5nZXRQcm9qZWN0aW9uKCkuZnJvbURpdlBpeGVsVG9MYXRMbmcocG9zaXRpb24pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgLy8gV2lsbCBmYWlsIGlmIHJ1bm5pbmcgR29vZ2xlIE1hcHMgQVBJIGVhcmxpZXIgdGhhbiBWMy4zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZS5tYXJrZXJfLnNldEFuaW1hdGlvbihnb29nbGUubWFwcy5BbmltYXRpb24uQk9VTkNFKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY1N0b3BCb3VuY2UsIDE0MDYpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7IH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWUuY3Jvc3NEaXZfLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZS5tYXJrZXJfLnNldFpJbmRleChjU2F2ZWRaSW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNJZ25vcmVDbGljayA9IHRydWU7IC8vIFNldCBmbGFnIHRvIGlnbm9yZSB0aGUgY2xpY2sgZXZlbnQgcmVwb3J0ZWQgYWZ0ZXIgYSBsYWJlbCBkcmFnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY0RyYWdnaW5nTGFiZWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtRXZlbnQubGF0TG5nID0gbWUubWFya2VyXy5nZXRQb3NpdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdvb2dsZS5tYXBzLmV2ZW50LnRyaWdnZXIobWUubWFya2VyXywgXCJkcmFnZW5kXCIsIG1FdmVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICBnb29nbGUubWFwcy5ldmVudC5hZGRMaXN0ZW5lcihtZS5tYXJrZXJfLmdldE1hcCgpLCBcIm1vdXNlbW92ZVwiLCBmdW5jdGlvbiAobUV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9zaXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoY01vdXNlSXNEb3duKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNEcmFnZ2luZ0xhYmVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1FdmVudC5sYXRMbmcgPSBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nKG1FdmVudC5sYXRMbmcubGF0KCkgLSBjTGF0T2Zmc2V0LCBtRXZlbnQubGF0TG5nLmxuZygpIC0gY0xuZ09mZnNldCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gbWUuZ2V0UHJvamVjdGlvbigpLmZyb21MYXRMbmdUb0RpdlBpeGVsKG1FdmVudC5sYXRMbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY1JhaXNlRW5hYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWUuY3Jvc3NEaXZfLnN0eWxlLmxlZnQgPSBwb3NpdGlvbi54ICsgXCJweFwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWUuY3Jvc3NEaXZfLnN0eWxlLnRvcCA9IHBvc2l0aW9uLnkgKyBcInB4XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZS5jcm9zc0Rpdl8uc3R5bGUuZGlzcGxheSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbi55IC09IGNSYWlzZU9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZS5tYXJrZXJfLnNldFBvc2l0aW9uKG1lLmdldFByb2plY3Rpb24oKS5mcm9tRGl2UGl4ZWxUb0xhdExuZyhwb3NpdGlvbikpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY1JhaXNlRW5hYmxlZCkgeyAvLyBEb24ndCByYWlzZSB0aGUgdmVpbDsgdGhpcyBoYWNrIG5lZWRlZCB0byBtYWtlIE1TSUUgYWN0IHByb3Blcmx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZS5ldmVudERpdl8uc3R5bGUudG9wID0gKHBvc2l0aW9uLnkgKyBjUmFpc2VPZmZzZXQpICsgXCJweFwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvb2dsZS5tYXBzLmV2ZW50LnRyaWdnZXIobWUubWFya2VyXywgXCJkcmFnXCIsIG1FdmVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIG9mZnNldHMgZnJvbSB0aGUgY2xpY2sgcG9pbnQgdG8gdGhlIG1hcmtlciBwb3NpdGlvbjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY0xhdE9mZnNldCA9IG1FdmVudC5sYXRMbmcubGF0KCkgLSBtZS5tYXJrZXJfLmdldFBvc2l0aW9uKCkubGF0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNMbmdPZmZzZXQgPSBtRXZlbnQubGF0TG5nLmxuZygpIC0gbWUubWFya2VyXy5nZXRQb3NpdGlvbigpLmxuZygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjU2F2ZWRaSW5kZXggPSBtZS5tYXJrZXJfLmdldFpJbmRleCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjU3RhcnRQb3NpdGlvbiA9IG1lLm1hcmtlcl8uZ2V0UG9zaXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1N0YXJ0Q2VudGVyID0gbWUubWFya2VyXy5nZXRNYXAoKS5nZXRDZW50ZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1JhaXNlRW5hYmxlZCA9IG1lLm1hcmtlcl8uZ2V0KFwicmFpc2VPbkRyYWdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNEcmFnZ2luZ0xhYmVsID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWUubWFya2VyXy5zZXRaSW5kZXgoMTAwMDAwMCk7IC8vIE1vdmVzIHRoZSBtYXJrZXIgJiBsYWJlbCB0byB0aGUgZm9yZWdyb3VuZCBkdXJpbmcgYSBkcmFnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1FdmVudC5sYXRMbmcgPSBtZS5tYXJrZXJfLmdldFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvb2dsZS5tYXBzLmV2ZW50LnRyaWdnZXIobWUubWFya2VyXywgXCJkcmFnc3RhcnRcIiwgbUV2ZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICBnb29nbGUubWFwcy5ldmVudC5hZGREb21MaXN0ZW5lcihkb2N1bWVudCwgXCJrZXlkb3duXCIsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoY0RyYWdnaW5nTGFiZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5rZXlDb2RlID09PSAyNykgeyAvLyBFc2Mga2V5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNSYWlzZUVuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWUubWFya2VyXy5zZXRQb3NpdGlvbihjU3RhcnRQb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lLm1hcmtlcl8uZ2V0TWFwKCkuc2V0Q2VudGVyKGNTdGFydENlbnRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvb2dsZS5tYXBzLmV2ZW50LnRyaWdnZXIoZG9jdW1lbnQsIFwibW91c2V1cFwiLCBlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICBnb29nbGUubWFwcy5ldmVudC5hZGREb21MaXN0ZW5lcih0aGlzLmV2ZW50RGl2XywgXCJjbGlja1wiLCBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG1lLm1hcmtlcl8uZ2V0RHJhZ2dhYmxlKCkgfHwgbWUubWFya2VyXy5nZXRDbGlja2FibGUoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjSWdub3JlQ2xpY2spIHsgLy8gSWdub3JlIHRoZSBjbGljayByZXBvcnRlZCB3aGVuIGEgbGFiZWwgZHJhZyBlbmRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNJZ25vcmVDbGljayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvb2dsZS5tYXBzLmV2ZW50LnRyaWdnZXIobWUubWFya2VyXywgXCJjbGlja1wiLCBlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY0Fib3J0RXZlbnQoZSk7IC8vIFByZXZlbnQgY2xpY2sgZnJvbSBiZWluZyBwYXNzZWQgb24gdG8gbWFwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQuYWRkRG9tTGlzdGVuZXIodGhpcy5ldmVudERpdl8sIFwiZGJsY2xpY2tcIiwgZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChtZS5tYXJrZXJfLmdldERyYWdnYWJsZSgpIHx8IG1lLm1hcmtlcl8uZ2V0Q2xpY2thYmxlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBnb29nbGUubWFwcy5ldmVudC50cmlnZ2VyKG1lLm1hcmtlcl8sIFwiZGJsY2xpY2tcIiwgZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY0Fib3J0RXZlbnQoZSk7IC8vIFByZXZlbnQgbWFwIHpvb20gd2hlbiBkb3VibGUtY2xpY2tpbmcgb24gYSBsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQuYWRkTGlzdGVuZXIodGhpcy5tYXJrZXJfLCBcImRyYWdzdGFydFwiLCBmdW5jdGlvbiAobUV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNEcmFnZ2luZ0xhYmVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY1JhaXNlRW5hYmxlZCA9IHRoaXMuZ2V0KFwicmFpc2VPbkRyYWdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICBnb29nbGUubWFwcy5ldmVudC5hZGRMaXN0ZW5lcih0aGlzLm1hcmtlcl8sIFwiZHJhZ1wiLCBmdW5jdGlvbiAobUV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNEcmFnZ2luZ0xhYmVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNSYWlzZUVuYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWUuc2V0UG9zaXRpb24oY1JhaXNlT2Zmc2V0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWUubGFiZWxEaXZfLnN0eWxlLnpJbmRleCA9IDEwMDAwMDAgKyAodGhpcy5nZXQoXCJsYWJlbEluQmFja2dyb3VuZFwiKSA/IC0xIDogKzEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgIGdvb2dsZS5tYXBzLmV2ZW50LmFkZExpc3RlbmVyKHRoaXMubWFya2VyXywgXCJkcmFnZW5kXCIsIGZ1bmN0aW9uIChtRXZlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICghY0RyYWdnaW5nTGFiZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY1JhaXNlRW5hYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZS5zZXRQb3NpdGlvbigwKTsgLy8gQWxzbyByZXN0b3JlcyB6LWluZGV4IG9mIGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQuYWRkTGlzdGVuZXIodGhpcy5tYXJrZXJfLCBcInBvc2l0aW9uX2NoYW5nZWRcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbWUuc2V0UG9zaXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgIGdvb2dsZS5tYXBzLmV2ZW50LmFkZExpc3RlbmVyKHRoaXMubWFya2VyXywgXCJ6aW5kZXhfY2hhbmdlZFwiLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBtZS5zZXRaSW5kZXgoKTtcclxuICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgIGdvb2dsZS5tYXBzLmV2ZW50LmFkZExpc3RlbmVyKHRoaXMubWFya2VyXywgXCJ2aXNpYmxlX2NoYW5nZWRcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbWUuc2V0VmlzaWJsZSgpO1xyXG4gICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQuYWRkTGlzdGVuZXIodGhpcy5tYXJrZXJfLCBcImxhYmVsdmlzaWJsZV9jaGFuZ2VkXCIsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG1lLnNldFZpc2libGUoKTtcclxuICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgIGdvb2dsZS5tYXBzLmV2ZW50LmFkZExpc3RlbmVyKHRoaXMubWFya2VyXywgXCJ0aXRsZV9jaGFuZ2VkXCIsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG1lLnNldFRpdGxlKCk7XHJcbiAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICBnb29nbGUubWFwcy5ldmVudC5hZGRMaXN0ZW5lcih0aGlzLm1hcmtlcl8sIFwibGFiZWxjb250ZW50X2NoYW5nZWRcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbWUuc2V0Q29udGVudCgpO1xyXG4gICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQuYWRkTGlzdGVuZXIodGhpcy5tYXJrZXJfLCBcImxhYmVsYW5jaG9yX2NoYW5nZWRcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbWUuc2V0QW5jaG9yKCk7XHJcbiAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICBnb29nbGUubWFwcy5ldmVudC5hZGRMaXN0ZW5lcih0aGlzLm1hcmtlcl8sIFwibGFiZWxjbGFzc19jaGFuZ2VkXCIsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG1lLnNldFN0eWxlcygpO1xyXG4gICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQuYWRkTGlzdGVuZXIodGhpcy5tYXJrZXJfLCBcImxhYmVsc3R5bGVfY2hhbmdlZFwiLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBtZS5zZXRTdHlsZXMoKTtcclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBNYXJrZXJMYWJlbF8ucHJvdG90eXBlLm9uUmVtb3ZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsRGl2Xy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMubGFiZWxEaXZfKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXZlbnREaXZfLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5ldmVudERpdl8pO1xyXG5cclxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxpc3RlbmVyc18ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBnb29nbGUubWFwcy5ldmVudC5yZW1vdmVMaXN0ZW5lcih0aGlzLmxpc3RlbmVyc19baV0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBNYXJrZXJMYWJlbF8ucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldENvbnRlbnQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0VGl0bGUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3R5bGVzKCk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIE1hcmtlckxhYmVsXy5wcm90b3R5cGUuc2V0Q29udGVudCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBjb250ZW50ID0gdGhpcy5tYXJrZXJfLmdldChcImxhYmVsQ29udGVudFwiKTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29udGVudC5ub2RlVHlwZSA9PT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGFiZWxEaXZfLmlubmVySFRNTCA9ICc8c3BhbiBjbGFzcz1cImNvbnRlbnRcIj4nICsgY29udGVudCArICc8L3NwYW4+JztcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmV2ZW50RGl2Xy5pbm5lckhUTUwgPSB0aGlzLmxhYmVsRGl2Xy5pbm5lckhUTUw7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGFiZWxEaXZfLmlubmVySFRNTCA9IFwiXCI7IC8vIFJlbW92ZSBjdXJyZW50IGNvbnRlbnRcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsRGl2Xy5hcHBlbmRDaGlsZCgnPHNwYW4gY2xhc3M9XCJjb250ZW50XCI+JyArIGNvbnRlbnQgKyAnPC9zcGFuPicpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LmNsb25lTm9kZSh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmV2ZW50RGl2Xy5hcHBlbmRDaGlsZChjb250ZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIE1hcmtlckxhYmVsXy5wcm90b3R5cGUuc2V0VGl0bGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50RGl2Xy50aXRsZSA9IHRoaXMubWFya2VyXy5nZXRUaXRsZSgpIHx8IFwiXCI7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBNYXJrZXJMYWJlbF8ucHJvdG90eXBlLnNldFN0eWxlcyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBpLCBsYWJlbFN0eWxlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbERpdl8uY2xhc3NOYW1lID0gdGhpcy5tYXJrZXJfLmdldChcImxhYmVsQ2xhc3NcIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50RGl2Xy5jbGFzc05hbWUgPSB0aGlzLmxhYmVsRGl2Xy5jbGFzc05hbWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsRGl2Xy5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXZlbnREaXZfLnN0eWxlLmNzc1RleHQgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgbGFiZWxTdHlsZSA9IHRoaXMubWFya2VyXy5nZXQoXCJsYWJlbFN0eWxlXCIpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChpIGluIGxhYmVsU3R5bGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobGFiZWxTdHlsZS5oYXNPd25Qcm9wZXJ0eShpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsRGl2Xy5zdHlsZVtpXSA9IGxhYmVsU3R5bGVbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXZlbnREaXZfLnN0eWxlW2ldID0gbGFiZWxTdHlsZVtpXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldE1hbmRhdG9yeVN0eWxlcygpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBNYXJrZXJMYWJlbF8ucHJvdG90eXBlLnNldE1hbmRhdG9yeVN0eWxlcyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxEaXZfLnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbERpdl8uc3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxhYmVsRGl2Xy5zdHlsZS5vcGFjaXR5ICE9PSBcInVuZGVmaW5lZFwiICYmIHRoaXMubGFiZWxEaXZfLnN0eWxlLm9wYWNpdHkgIT09IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsRGl2Xy5zdHlsZS5Nc0ZpbHRlciA9IFwiXFxcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShvcGFjaXR5PVwiICsgKHRoaXMubGFiZWxEaXZfLnN0eWxlLm9wYWNpdHkgKiAxMDApICsgXCIpXFxcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGFiZWxEaXZfLnN0eWxlLmZpbHRlciA9IFwiYWxwaGEob3BhY2l0eT1cIiArICh0aGlzLmxhYmVsRGl2Xy5zdHlsZS5vcGFjaXR5ICogMTAwKSArIFwiKVwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ldmVudERpdl8uc3R5bGUucG9zaXRpb24gPSB0aGlzLmxhYmVsRGl2Xy5zdHlsZS5wb3NpdGlvbjtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXZlbnREaXZfLnN0eWxlLm92ZXJmbG93ID0gdGhpcy5sYWJlbERpdl8uc3R5bGUub3ZlcmZsb3c7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50RGl2Xy5zdHlsZS5vcGFjaXR5ID0gMC4wMTsgLy8gRG9uJ3QgdXNlIDA7IERJViB3b24ndCBiZSBjbGlja2FibGUgb24gTVNJRVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ldmVudERpdl8uc3R5bGUuTXNGaWx0ZXIgPSBcIlxcXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEob3BhY2l0eT0xKVxcXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXZlbnREaXZfLnN0eWxlLmZpbHRlciA9IFwiYWxwaGEob3BhY2l0eT0xKVwiOyAvLyBGb3IgTVNJRVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0QW5jaG9yKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFBvc2l0aW9uKCk7IC8vIFRoaXMgYWxzbyB1cGRhdGVzIHotaW5kZXgsIGlmIG5lY2Vzc2FyeS5cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmlzaWJsZSgpO1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgTWFya2VyTGFiZWxfLnByb3RvdHlwZS5zZXRBbmNob3IgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYW5jaG9yID0gdGhpcy5tYXJrZXJfLmdldChcImxhYmVsQW5jaG9yXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbERpdl8uc3R5bGUubWFyZ2luTGVmdCA9IC1hbmNob3IueCArIFwicHhcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxEaXZfLnN0eWxlLm1hcmdpblRvcCA9IC1hbmNob3IueSArIFwicHhcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXZlbnREaXZfLnN0eWxlLm1hcmdpbkxlZnQgPSAtYW5jaG9yLnggKyBcInB4XCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50RGl2Xy5zdHlsZS5tYXJnaW5Ub3AgPSAtYW5jaG9yLnkgKyBcInB4XCI7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBNYXJrZXJMYWJlbF8ucHJvdG90eXBlLnNldFBvc2l0aW9uID0gZnVuY3Rpb24gKHlPZmZzZXQpIHtcclxuICAgICAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHRoaXMuZ2V0UHJvamVjdGlvbigpLmZyb21MYXRMbmdUb0RpdlBpeGVsKHRoaXMubWFya2VyXy5nZXRQb3NpdGlvbigpKTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgeU9mZnNldCA9PT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHlPZmZzZXQgPSAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbERpdl8uc3R5bGUubGVmdCA9IE1hdGgucm91bmQocG9zaXRpb24ueCkgKyBcInB4XCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsRGl2Xy5zdHlsZS50b3AgPSBNYXRoLnJvdW5kKHBvc2l0aW9uLnkgLSB5T2Zmc2V0KSArIFwicHhcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXZlbnREaXZfLnN0eWxlLmxlZnQgPSB0aGlzLmxhYmVsRGl2Xy5zdHlsZS5sZWZ0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ldmVudERpdl8uc3R5bGUudG9wID0gdGhpcy5sYWJlbERpdl8uc3R5bGUudG9wO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0WkluZGV4KCk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBNYXJrZXJMYWJlbF8ucHJvdG90eXBlLnNldFpJbmRleCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHZhciB6QWRqdXN0ID0gKHRoaXMubWFya2VyXy5nZXQoXCJsYWJlbEluQmFja2dyb3VuZFwiKSA/IC0xIDogKzEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1hcmtlcl8uZ2V0WkluZGV4KCkgPT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsRGl2Xy5zdHlsZS56SW5kZXggPSBwYXJzZUludCh0aGlzLmxhYmVsRGl2Xy5zdHlsZS50b3AsIDEwKSArIHpBZGp1c3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ldmVudERpdl8uc3R5bGUuekluZGV4ID0gdGhpcy5sYWJlbERpdl8uc3R5bGUuekluZGV4O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsRGl2Xy5zdHlsZS56SW5kZXggPSB0aGlzLm1hcmtlcl8uZ2V0WkluZGV4KCkgKyB6QWRqdXN0O1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXZlbnREaXZfLnN0eWxlLnpJbmRleCA9IHRoaXMubGFiZWxEaXZfLnN0eWxlLnpJbmRleDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIE1hcmtlckxhYmVsXy5wcm90b3R5cGUuc2V0VmlzaWJsZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcmtlcl8uZ2V0KFwibGFiZWxWaXNpYmxlXCIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbERpdl8uc3R5bGUuZGlzcGxheSA9IHRoaXMubWFya2VyXy5nZXRWaXNpYmxlKCkgPyBcImJsb2NrXCIgOiBcIm5vbmVcIjtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbERpdl8uc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ldmVudERpdl8uc3R5bGUuZGlzcGxheSA9IHRoaXMubGFiZWxEaXZfLnN0eWxlLmRpc3BsYXk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBpbmhlcml0cyhNYXJrZXJXaXRoTGFiZWwsIGdvb2dsZS5tYXBzLk1hcmtlcik7XHJcbiAgICAgICAgICAgIE1hcmtlcldpdGhMYWJlbC5wcm90b3R5cGUuc2V0TWFwID0gZnVuY3Rpb24gKHRoZU1hcCkge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIENhbGwgdGhlIGluaGVyaXRlZCBmdW5jdGlvbi4uLlxyXG4gICAgICAgICAgICAgICAgZ29vZ2xlLm1hcHMuTWFya2VyLnByb3RvdHlwZS5zZXRNYXAuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyAuLi4gdGhlbiBkZWFsIHdpdGggdGhlIGxhYmVsOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbC5zZXRNYXAodGhlTWFwKTtcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIC8vbG9nZ2VyLmxvZyhfc2VsZi5Jc0luaXRpYWxpemVkKTtcclxuICAgICAgICAgICAgX3NlbGYuaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgICAgICAgICAgX3NlbGYuJG1hcC5kYXRhKCdBcmVhTWFwJywgX3NlbGYpO1xyXG4gICAgICAgICAgICByZXR1cm4gX3NlbGY7XHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcblxyXG59KGpRdWVyeSkpOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwiZGVmaW5lIiwiYW1kIiwiYSIsImkiLCJzZWxmIiwiJCIsImpRdWVyeSIsImZuIiwiQXJlYU1hcCIsIm1ldGhvZE9yT3B0aW9ucyIsIm1ldGhvZHMiLCJpbml0Iiwib3B0aW9ucyIsIl9zZWxmIiwidGhpcyIsIk1hcmtlcldpdGhMYWJlbCIsIm9wdF9vcHRpb25zIiwibGFiZWxDb250ZW50IiwibGFiZWxBbmNob3IiLCJnb29nbGUiLCJtYXBzIiwiUG9pbnQiLCJsYWJlbENsYXNzIiwibGFiZWxTdHlsZSIsImxhYmVsSW5CYWNrZ3JvdW5kIiwibGFiZWxWaXNpYmxlIiwicmFpc2VPbkRyYWciLCJjbGlja2FibGUiLCJkcmFnZ2FibGUiLCJvcHRpbWl6ZWQiLCJjcm9zc0ltYWdlIiwiZG9jdW1lbnQiLCJsb2NhdGlvbiIsInByb3RvY29sIiwiaGFuZEN1cnNvciIsImxhYmVsIiwiTWFya2VyTGFiZWxfIiwiTWFya2VyIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJpbmhlcml0cyIsImNoaWxkQ3RvciIsInBhcmVudEN0b3IiLCJ0ZW1wQ3RvciIsInByb3RvdHlwZSIsInN1cGVyQ2xhc3NfIiwiY29uc3RydWN0b3IiLCJtYXJrZXIiLCJjcm9zc1VSTCIsImhhbmRDdXJzb3JVUkwiLCJtYXJrZXJfIiwiaGFuZEN1cnNvclVSTF8iLCJsYWJlbERpdl8iLCJjcmVhdGVFbGVtZW50Iiwic3R5bGUiLCJjc3NUZXh0IiwiZXZlbnREaXZfIiwic2V0QXR0cmlidXRlIiwiY3Jvc3NEaXZfIiwiZ2V0U2hhcmVkQ3Jvc3MiLCIkbWFwIiwiTGF0aXR1ZGUiLCJkYXRhIiwiTG9uZ2l0dWRlIiwiTWFwSWNvbm5IcmVmIiwiUE9JIiwiQWRkcmVzcyIsIk1hcmtlcnMiLCJQT0lTZXJ2aWNlIiwiem9vbV9oYW5kbGVyIiwiJFBPSUNvbnRleHQiLCJmaW5kIiwiJG1hcFR5cGUiLCJvZmYiLCJvbiIsIiR0aGlzIiwiaGFzQ2xhc3MiLCJfbWFwIiwic2V0TWFwVHlwZUlkIiwidG9nZ2xlQ2xhc3MiLCJfb3B0aW9ucyIsImV4dGVuZCIsInpvb20iLCJsb2NhdGlvblpvb20iLCJJc0luaXRpYWxpemVkIiwiWm9vbSIsInZhbHVlIiwiX3pvb20iLCJnZXRab29tIiwic2V0Wm9vbSIsInBhcnNlSW50IiwiUmVzaXplIiwiZXZlbnQiLCJ0cmlnZ2VyIiwiTWFwVHlwZSIsIlNob3dQT0kiLCJyZW1vdmVDbGFzcyIsImFkZENsYXNzIiwiZ2V0R2VvQ29kZUZvckFkZHJlc3MiLCJhZGRyZXNzIiwiY2FsbEJhY2siLCJfZ2VvQ29kZXIiLCJHZW9jb2RlciIsImdlb2NvZGUiLCJyZXN1bHRzIiwic3RhdHVzIiwiR2VvY29kZXJTdGF0dXMiLCJPSyIsImdlb21ldHJ5IiwiaW5pdGlhbGl6ZSIsInVuZGVmaW5lZCIsImluaXRNYXAiLCJMYXRMbmciLCJwb2ludCIsImUiLCJkZWZhdWx0U3R5bGUiLCJoYXZlT3duUE9JIiwicHVzaCIsImZlYXR1cmVUeXBlIiwiZWxlbWVudFR5cGUiLCJzdHlsZXJzIiwidmlzaWJpbGl0eSIsImlzZGFya21vZGUiLCJjb2xvciIsIl9tYXBPcHRpb25zIiwiY2VudGVyIiwic2Nyb2xsd2hlZWwiLCJtYXBUeXBlSWQiLCJNYXBUeXBlSWQiLCJST0FETUFQIiwicGFuQ29udHJvbCIsInN0cmVldFZpZXdDb250cm9sIiwibWFwVHlwZUNvbnRyb2wiLCJkaXNhYmxlRGVmYXVsdFVJIiwibWluWm9vbSIsInpvb21Db250cm9sIiwiem9vbUNvbnRyb2xPcHRpb25zIiwicG9zaXRpb24iLCJDb250cm9sUG9zaXRpb24iLCJUT1BfUklHSFQiLCJab29tQ29udHJvbFN0eWxlIiwiU01BTEwiLCJzdHlsZXMiLCJNYXAiLCJnZXQiLCJfbWFya2VyIiwibWFwIiwiaWNvbiIsImVuYWJsZVBsYWNlc1NlcnZpY2UiLCJFbmFibGVBY3Rpb25MaXN0ZW5lcnMiLCJTdWJzY3JpYmVBY3Rpb24iLCJhZGRab29tSGFuZGxlciIsIkRpc2FibGVBY3Rpb25MaXN0ZW5lcnMiLCJyZW1vdmVab29tSGFuZGxlciIsImFkZExpc3RlbmVyT25jZSIsInpvb21BY3Rpb24iLCJyZW1vdmUiLCJjbGVhciIsImluaXRpYWxpemVBY3Rpb24iLCJzZXJ2aWNlIiwicGxhY2VzIiwiUGxhY2VzU2VydmljZSIsInBsYWNlc01hcmtlcnMiLCJwbGFjZXNJbmZvV2luZG93IiwicG9pSXRlbXMiLCJwb2lJdGVtc01hc3RlciIsImtleSIsInBvaSIsImlzQWxsb3dlZCIsImFjdGlvbkl0ZW0iLCJjaGVja2VkIiwiY2xlYXJQbGFjZU1hcmtlcnMiLCJzcGxpdCIsImZvckVhY2giLCJ0eXBlIiwicG9pSXRlbSIsInBvaVR5cGUiLCJnZXRQT0lJdGVtRnJvbU1hc3RlciIsInRvTG93ZXJDYXNlIiwiY3JlYXRlUE9JSXRlbSIsIiRjbG9zZSIsImFwcGVuZFRvIiwiJHBvaUxpc3QiLCJwYXJlbnRJRCIsImF0dHIiLCJhcHBlbmQiLCJidWlsZFVJUE9JSXRlbSIsImJ1aWxkVUkiLCJzZWFyY2giLCJzZWFyY2hMb2NhdGlvbiIsImdldEJvdW5kcyIsIm5lYXJieVNlYXJjaCIsImJvdW5kcyIsInJhZGl1cyIsInBhZ2luYXRpb24iLCJwbGFjZSIsImNyZWF0ZVBsYWNlTWFya2VyIiwiY3JlYXRlTWFya2VycyIsInAiLCJ0eXBlc0NsYXNzZXMiLCJnZXRQT0lJdGVtIiwicGxhY2VNYXJrZXIiLCJ0aXRsZSIsIm5hbWUiLCJwbGFjZUlkIiwicGxhY2VfaWQiLCJhZGRMaXN0ZW5lciIsImNsb3NlIiwiSW5mb1dpbmRvdyIsImdldERldGFpbHMiLCJQbGFjZVJlc3VsdCIsIlBsYWNlc1NlcnZpY2VTdGF0dXMiLCJQbGFjZUFkZHIiLCJmb3JtYXR0ZWRfYWRkcmVzcyIsIlBsYWNlUGhvbmUiLCJmb3JtYXR0ZWRfcGhvbmVfbnVtYmVyIiwiUGxhY2VXZWIiLCJ3ZWJzaXRlIiwiUGxhY2VVcmwiLCJ1cmwiLCJjb250ZW50Iiwic2V0Q29udGVudCIsIm9wZW4iLCJzZXRNYXAiLCIkaXRlbSIsIiRpdGVtQ2hlY2siLCJPdmVybGF5VmlldyIsImRpdiIsImNyb3NzRGl2IiwibWFyZ2luTGVmdCIsIm1hcmdpblRvcCIsInNyYyIsIm9uQWRkIiwiY1NhdmVkWkluZGV4IiwiY0xhdE9mZnNldCIsImNMbmdPZmZzZXQiLCJjSWdub3JlQ2xpY2siLCJjUmFpc2VFbmFibGVkIiwiY1N0YXJ0UG9zaXRpb24iLCJjU3RhcnRDZW50ZXIiLCJtZSIsImNNb3VzZUlzRG93biIsImNEcmFnZ2luZ0xhYmVsIiwiY0RyYWdnaW5nQ3Vyc29yIiwiY0Fib3J0RXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsImNhbmNlbEJ1YmJsZSIsInN0b3BQcm9wYWdhdGlvbiIsImNTdG9wQm91bmNlIiwic2V0QW5pbWF0aW9uIiwiZ2V0UGFuZXMiLCJvdmVybGF5SW1hZ2UiLCJhcHBlbmRDaGlsZCIsIm92ZXJsYXlNb3VzZVRhcmdldCIsInByb2Nlc3NlZCIsImxpc3RlbmVyc18iLCJhZGREb21MaXN0ZW5lciIsImdldERyYWdnYWJsZSIsImdldENsaWNrYWJsZSIsImN1cnNvciIsImdldEN1cnNvciIsIm1FdmVudCIsImdldFByb2plY3Rpb24iLCJmcm9tTGF0TG5nVG9EaXZQaXhlbCIsImdldFBvc2l0aW9uIiwieSIsInNldFBvc2l0aW9uIiwiZnJvbURpdlBpeGVsVG9MYXRMbmciLCJBbmltYXRpb24iLCJCT1VOQ0UiLCJzZXRUaW1lb3V0IiwiZGlzcGxheSIsInNldFpJbmRleCIsImxhdExuZyIsImdldE1hcCIsImxhdCIsImxuZyIsImxlZnQiLCJ4IiwidG9wIiwiZ2V0WkluZGV4IiwiZ2V0Q2VudGVyIiwia2V5Q29kZSIsInNldENlbnRlciIsInpJbmRleCIsInNldFZpc2libGUiLCJzZXRUaXRsZSIsInNldEFuY2hvciIsInNldFN0eWxlcyIsIm9uUmVtb3ZlIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwibGVuZ3RoIiwicmVtb3ZlTGlzdGVuZXIiLCJkcmF3Iiwibm9kZVR5cGUiLCJpbm5lckhUTUwiLCJjbG9uZU5vZGUiLCJnZXRUaXRsZSIsImNsYXNzTmFtZSIsImhhc093blByb3BlcnR5Iiwic2V0TWFuZGF0b3J5U3R5bGVzIiwib3ZlcmZsb3ciLCJvcGFjaXR5IiwiTXNGaWx0ZXIiLCJmaWx0ZXIiLCJhbmNob3IiLCJ5T2Zmc2V0IiwiTWF0aCIsInJvdW5kIiwiekFkanVzdCIsImdldFZpc2libGUiLCJ0aGVNYXAiLCJtYXBUeXBlIiwicmVzaXplIiwiQXJyYXkiLCJzbGljZSIsImNhbGwiLCJlcnJvciIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJuIiwiZ2V0dGVyIiwiX19lc01vZHVsZSIsImQiLCJkZWZpbml0aW9uIiwibyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsIm9iaiIsInByb3AiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciXSwic291cmNlUm9vdCI6IiJ9
|
|
1
|
+
import '../../../Agora 4.0/IdcGlobal.Agora.JavaScript.PlugIn/MaxAreaMap.js'
|
|
2
|
+
import '../../../Agora 4.0/IdcGlobal.Agora.JavaScript.PlugIn/AreaMap.css'
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
body{min-height: auto;--gcs:0.6rem;}
|
|
2
|
+
[ag-c]>p{background: rgba(0,0,0,0.16);display: block;padding: 0;margin: 0;padding: 0.75rem;font-size: 1.5rem;text-align: center;line-height: 2rem;}
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
[ag-c]{display: block;flex-basis: 0;flex-grow: 1;flex-shrink: 1;padding: var(--gcs);}
|
|
6
|
+
[ag-c] [ag-g]{padding: var(--gcs);}
|
|
7
|
+
[ag-c]:not([ag-c=""]){flex: none;}
|
|
8
|
+
[ag-r]{display: flex;--gs:4;flex-flow: row wrap;/* margin: var(--gcs); */align-items: flex-start;}
|
|
9
|
+
[ag-r]:not(:last-child) {}
|
|
10
|
+
[ag-r][ag-c]{display: flex;flex-flow: row wrap;padding: 0;margin: 0;}
|
|
11
|
+
|
|
12
|
+
[ag-c*="1/4"]{--cs:1;}
|
|
13
|
+
[ag-c*="2/4"]{--cs:2;}
|
|
14
|
+
[ag-c*="3/4"]{--cs:3;}
|
|
15
|
+
[ag-c*="4/4"]{--cs:4;}
|
|
16
|
+
|
|
17
|
+
@media screen and (max-width:767px) {
|
|
18
|
+
[ag-c$="0/4"]{display: none;}
|
|
19
|
+
[ag-c]:not([ag-c*="/4"]){flex: auto;}
|
|
20
|
+
[ag-c][ag-c*="/4"]{flex: none;}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@media screen and (min-width:768px) {
|
|
24
|
+
[ag-r]{--gs:8;}
|
|
25
|
+
[ag-c$="0/8"]{display: none;}
|
|
26
|
+
[ag-c*="1/8"]{--cs:1;}
|
|
27
|
+
[ag-c*="2/8"]{--cs:2;}
|
|
28
|
+
[ag-c*="3/8"]{--cs:3;}
|
|
29
|
+
[ag-c*="4/8"]{--cs:4;}
|
|
30
|
+
[ag-c*="5/8"]{--cs:5;}
|
|
31
|
+
[ag-c*="6/8"]{--cs:6;}
|
|
32
|
+
[ag-c*="7/8"]{--cs:7;}
|
|
33
|
+
[ag-c*="8/8"]{--cs:8;}
|
|
34
|
+
[ag-c]:not([ag-c*="/8"]){flex: auto;}
|
|
35
|
+
[ag-c][ag-c*="/8"]{flex: none;}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@media screen and (min-width:1024px) {
|
|
39
|
+
[ag-r]{--gs:12;}
|
|
40
|
+
[ag-c$="0/12"]{display: none;}
|
|
41
|
+
[ag-c*="1/12"]{--cs:1;}
|
|
42
|
+
[ag-c*="2/12"]{--cs:2;}
|
|
43
|
+
[ag-c*="3/12"]{--cs:3;}
|
|
44
|
+
[ag-c*="4/12"]{--cs:4;}
|
|
45
|
+
[ag-c*="5/12"]{--cs:5;}
|
|
46
|
+
[ag-c*="6/12"]{--cs:6;}
|
|
47
|
+
[ag-c*="7/12"]{--cs:7;}
|
|
48
|
+
[ag-c*="8/12"]{--cs:8;}
|
|
49
|
+
[ag-c*="9/12"]{--cs:9;}
|
|
50
|
+
[ag-c*="10/12"]{--cs:10;}
|
|
51
|
+
[ag-c*="11/12"]{--cs:11;}
|
|
52
|
+
[ag-c*="12/12"]{--cs:12;}
|
|
53
|
+
[ag-c]:not([ag-c*="/12"]){flex: auto;}
|
|
54
|
+
[ag-c][ag-c*="/12"]{flex: none;}
|
|
55
|
+
[ag-c*="2.4/12"]{--cs:2.4;}
|
|
56
|
+
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@media screen and (min-width:1440px) {
|
|
60
|
+
[ag-r]{--gs:16;}
|
|
61
|
+
[ag-c$="0/16"]{display: none;}
|
|
62
|
+
[ag-c*="1/16"]{--cs:1;}
|
|
63
|
+
[ag-c*="2/16"]{--cs:2;}
|
|
64
|
+
[ag-c*="3/16"]{--cs:3;}
|
|
65
|
+
[ag-c*="4/16"]{--cs:4;}
|
|
66
|
+
[ag-c*="5/16"]{--cs:5;}
|
|
67
|
+
[ag-c*="6/16"]{--cs:6;}
|
|
68
|
+
[ag-c*="7/16"]{--cs:7;}
|
|
69
|
+
[ag-c*="8/16"]{--cs:8;}
|
|
70
|
+
[ag-c*="9/16"]{--cs:9;}
|
|
71
|
+
[ag-c*="10/16"]{--cs:10;}
|
|
72
|
+
[ag-c*="11/16"]{--cs:8;}
|
|
73
|
+
[ag-c*="12/16"]{--cs:12;}
|
|
74
|
+
[ag-c*="13/16"]{--cs:13;}
|
|
75
|
+
[ag-c*="14/16"]{--cs:14;}
|
|
76
|
+
[ag-c*="15/16"]{--cs:15;}
|
|
77
|
+
[ag-c*="16/16"]{--cs:16;}
|
|
78
|
+
[ag-c]:not([ag-c*="/16"]){flex: auto;}
|
|
79
|
+
[ag-c*="3.2/16"]{--cs:3.2;}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
[ag-c]:not([ag-c=""]){width: calc(100% * var(--cs,--gs)/var(--gs));box-sizing: border-box;}
|
package/fileupload.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEdDN1VFQyxFQUEyQixDQUFDLEVBR2hDLFNBQVNDLEVBQW9CQyxHQUU1QixJQUFJQyxFQUFlSCxFQUF5QkUsR0FDNUMsUUFBcUJoRSxJQUFqQmlFLEVBQ0gsT0FBT0EsRUFBYTNMLFFBR3JCLElBQUlDLEVBQVN1TCxFQUF5QkUsR0FBWSxDQUdqRDFMLFFBQVMsQ0FBQyxHQU9YLE9BSEE0TCxFQUFvQkYsR0FBVXpMLEVBQVFBLEVBQU9ELFFBQVN5TCxHQUcvQ3hMLEVBQU9ELE9BQ2YsQ0NyQkF5TCxFQUFvQi9JLEVBQUt6QyxJQUN4QixJQUFJNEwsRUFBUzVMLEdBQVVBLEVBQU82TCxXQUM3QixJQUFPN0wsRUFBaUIsUUFDeEIsSUFBTSxFQUVQLE9BREF3TCxFQUFvQk0sRUFBRUYsRUFBUSxDQUFFekwsRUFBR3lMLElBQzVCQSxDQUFNLEVDTGRKLEVBQW9CTSxFQUFJLENBQUMvTCxFQUFTZ00sS0FDakMsSUFBSSxJQUFJekgsS0FBT3lILEVBQ1hQLEVBQW9CUSxFQUFFRCxFQUFZekgsS0FBU2tILEVBQW9CUSxFQUFFak0sRUFBU3VFLElBQzVFMkgsT0FBT0MsZUFBZW5NLEVBQVN1RSxFQUFLLENBQUU2SCxZQUFZLEVBQU1DLElBQUtMLEVBQVd6SCxJQUUxRSxFQ05Ea0gsRUFBb0JRLEVBQUksQ0FBQ0ssRUFBS0MsSUFBVUwsT0FBT00sVUFBVUMsZUFBZUMsS0FBS0osRUFBS0MsR0NDbEZkLEVBQW9Ca0IsRUFBSzNNLElBQ0gsb0JBQVg0TSxRQUEwQkEsT0FBT0MsYUFDMUNYLE9BQU9DLGVBQWVuTSxFQUFTNE0sT0FBT0MsWUFBYSxDQUFFNUgsTUFBTyxXQUU3RGlILE9BQU9DLGVBQWVuTSxFQUFTLGFBQWMsQ0FBRWlGLE9BQU8sR0FBTyxFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly8vLi4vLi4vQWdvcmEgNC4wL0lkY0dsb2JhbC5BZ29yYS5KYXZhU2NyaXB0LlBsdWdJbi9NYXhGaWxlVXBsb2FkLmpzIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2Uge1xuXHRcdHZhciBhID0gZmFjdG9yeSgpO1xuXHRcdGZvcih2YXIgaSBpbiBhKSAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnID8gZXhwb3J0cyA6IHJvb3QpW2ldID0gYVtpXTtcblx0fVxufSkoc2VsZiwgKCkgPT4ge1xucmV0dXJuICIsIu+7v1xyXG5cclxuKGZ1bmN0aW9uICgkKSB7XHJcbiAgICAndXNlIHN0cmljdCc7XHJcblxyXG4gICAgJC5mbi5BZ29yYUZpbGVVcGxvYWQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xyXG5cclxuICAgICAgICB2YXIgJF9zZW5kZXIgPSAkKHRoaXMpO1xyXG4gICAgICAgIHZhciBfc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgdmFyICRfZmlsZSA9ICRfc2VuZGVyLmZpbmQoJ2lucHV0W3R5cGU9XCJmaWxlXCJdJyk7XHJcbiAgICAgICAgdmFyICRfdmFsdWVOb2RlID0gJF9zZW5kZXIuZmluZCgnaW5wdXRbdHlwZT1cImhpZGRlblwiXVtub2RlXScpO1xyXG4gICAgICAgIHZhciAkX2xhYmVsID0gJF9zZW5kZXIuZmluZCgnbGFiZWwnKTtcclxuICAgICAgICB2YXIgJF9pdGVtQ29udGV4dCA9ICRfc2VuZGVyLmZpbmQoJy5pdGVtcy1jb250ZXh0Jyk7XHJcbiAgICAgICAgdmFyICRwcm9ncmVzcyA9ICRfc2VuZGVyLmZpbmQoJy5wcm9ncmVzcycpO1xyXG4gICAgICAgIHZhciAkcHJvZ3Jlc3NCYXIgPSAkcHJvZ3Jlc3MuZmluZCgnZGl2Jyk7XHJcbiAgICAgICAgdmFyIF9zZXJ2aWNlVVJMID0gJF9zZW5kZXIuZGF0YSgnYWdvcmEtZmlsZS11cGxvYWQnKTtcclxuICAgICAgICB2YXIgX3VwbG9hZFBhdGggPSAkX3NlbmRlci5kYXRhKCdhZ29yYS1maWxlLXVwbG9hZC1wYXRoJyk7XHJcbiAgICAgICAgdmFyIF9maWxlSWQgPSAkX3NlbmRlci5kYXRhKCdhZ29yYS1maWxlLWlkJyk7XHJcbiAgICAgICAgdmFyIF9maWxlSW5kZXggPSAkX3NlbmRlci5kYXRhKCdhZ29yYS1maWxlLWluZGV4Jyk7XHJcbiAgICAgICAgdmFyIF9hdXRvR2VuZXJhdGVUaHVtYiA9IHR5cGVvZiAoJF9zZW5kZXIuZGF0YSgnZ2VuZXJhdGUtdGh1bWInKSkgIT0gJ3VuZGVmaW5lZCcgJiYgJF9zZW5kZXIuZGF0YSgnZ2VuZXJhdGUtdGh1bWInKSA9PSB0cnVlO1xyXG4gICAgICAgIHZhciBfaXNBdXRvR2VuZXJhdGVUaHVtYkFjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIHZhciBfZmlsZVNpemUgPSB0eXBlb2YgKCRfc2VuZGVyLmRhdGEoJ2ZpbGUtc2l6ZScpKSAhPSAndW5kZWZpbmVkJyA/ICRfc2VuZGVyLmRhdGEoJ2ZpbGUtc2l6ZScpIDogMDtcclxuICAgICAgICB2YXIgX21heFdpZHRoID0gdHlwZW9mICgkX3NlbmRlci5kYXRhKCdtYXgtd2lkdGgnKSkgIT0gJ3VuZGVmaW5lZCcgPyAkX3NlbmRlci5kYXRhKCdtYXgtd2lkdGgnKSA6IC0xO1xyXG4gICAgICAgIHZhciBfbWF4SGVpZ2h0ID0gdHlwZW9mICgkX3NlbmRlci5kYXRhKCdtYXgtaGVpZ2h0JykpICE9ICd1bmRlZmluZWQnID8gJF9zZW5kZXIuZGF0YSgnbWF4LWhlaWdodCcpIDogLTE7XHJcbiAgICAgICAgdmFyIF9taW1lVHlwZSA9ICRfZmlsZS5hdHRyKCdhY2NlcHQnKTtcclxuXHJcbiAgICAgICAgdmFyIF9vbkNoYW5nZSA9IChvcHRpb25zICE9IG51bGwgJiYgb3B0aW9ucy5PbkNoYW5nZSAhPSBudWxsKSA/IG9wdGlvbnMuT25DaGFuZ2UgOiBudWxsO1xyXG5cclxuXHJcbiAgICAgICAgX3NlbGYuX3NlbmQgPSBmdW5jdGlvbiAoaGVhZGVycywgZGF0YSwgc3VjY2Vzcykge1xyXG5cclxuICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsXHJcbiAgICAgICAgICAgICAgICB1cmw6IF9zZXJ2aWNlVVJMLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgICAgICAgICAgIHByb2Nlc3NEYXRhOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBfc2VsZi5fZ2V0RGF0YSA9IGZ1bmN0aW9uICgpIHtcclxuXHJcbiAgICAgICAgICAgIGlmICgkX2ZpbGUuZmlsZXMubGVuZ3RoID4gMCkge1xyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gX2Zvcm1EYXRhO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIF9zZWxmLl9zdGFydFByb2dyZXNzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAkX3NlbmRlci5hZGRDbGFzcygnaXMtYnVzeScpO1xyXG4gICAgICAgICAgICBfc2VsZi5fdXBkYXRlUHJvZ3Jlc3MoMCk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgX3NlbGYuX3VwZGF0ZVByb2dyZXNzID0gZnVuY3Rpb24gKGNvdW50KSB7XHJcbiAgICAgICAgICAgICRwcm9ncmVzc0Jhci5hdHRyKCdkYXRhLXZhbHVlJywgTWF0aC5mbG9vcihjb3VudCkgKyAnJScpO1xyXG4gICAgICAgICAgICAkcHJvZ3Jlc3NCYXIud2lkdGgoY291bnQgKyAnJScpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIF9zZWxmLl9lbmRQcm9ncmVzcyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgJF9zZW5kZXIucmVtb3ZlQ2xhc3MoJ2lzLWJ1c3knKTtcclxuICAgICAgICAgICAgX3NlbGYuX3VwZGF0ZVByb2dyZXNzKDEwMCk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgX3NlbGYuX3VwbG9hZENvbXBsZXRlID0gZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIGlmICghX2lzQXV0b0dlbmVyYXRlVGh1bWJBY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgIF9zZWxmLl9iaW5kSXRlbXMocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgaWYgKF9hdXRvR2VuZXJhdGVUaHVtYikge1xyXG4gICAgICAgICAgICAgICAgICAgIF9pc0F1dG9HZW5lcmF0ZVRodW1iQWN0aW9uID0gIShfYXV0b0dlbmVyYXRlVGh1bWIgPSBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkdmFsdWVYbWwgPSAkKHJlc3BvbnNlW2tleV0ueG1sKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGYuX2NyZWF0ZVNuYXBTaG90KCR2YWx1ZVhtbC5maW5kKCdmaWxlJykuYXR0cigndXJsJyksIGZ1bmN0aW9uIChpbWFnZVVybCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGYuX3NlbmRGaWxlKGRhdGFVUkx0b0ZpbGUoaW1hZ2VVcmwsICdwb3N0ZXIuanBnJykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBfaXNBdXRvR2VuZXJhdGVUaHVtYkFjdGlvbiA9ICEoX2F1dG9HZW5lcmF0ZVRodW1iID0gdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gcmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgJHZhbHVlWG1sID0gJChyZXNwb25zZVtrZXldLnhtbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyICRmaWxlVmFsdWUgPSAkKCRfdmFsdWVOb2RlLnZhbCgpKTtcclxuICAgICAgICAgICAgICAgICAgICAkZmlsZVZhbHVlLmZpbmQoJ2ZpbGUnKS5hdHRyKCdwb3N0ZXInLCAkdmFsdWVYbWwuZmluZCgnZmlsZScpLmF0dHIoJ3VybCcpKTtcclxuICAgICAgICAgICAgICAgICAgICAkX3ZhbHVlTm9kZS52YWwoJGZpbGVWYWx1ZVswXS5vdXRlckhUTUwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgaWYgKF9vbkNoYW5nZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWU7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiByZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHJlc3BvbnNlW2tleV0udXJsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIF9vbkNoYW5nZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBfc2VsZi5fYmluZEl0ZW1zID0gZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICRfaXRlbUNvbnRleHQuaHRtbCgnJyk7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiByZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgJChfc2VsZi5fZ2V0SXRlbShyZXNwb25zZVtrZXldKSkuYXBwZW5kVG8oJF9pdGVtQ29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAkX3ZhbHVlTm9kZS52YWwocmVzcG9uc2Vba2V5XS54bWwpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIF9zZWxmLl9yZW1vdmVJdGVtID0gZnVuY3Rpb24gKCRpdGVtKSB7XHJcbiAgICAgICAgICAgICRpdGVtLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAkX3ZhbHVlTm9kZS52YWwoJycpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIF9zZWxmLl9nZXRJdGVtID0gZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIHZhciAkcmVzdWx0ID0gJCgnPGxhYmVsPjwvbGFiZWw+Jyk7XHJcbiAgICAgICAgICAgICRyZXN1bHQuaHRtbCgnPGI+JyArIHJlc3BvbnNlLm5hbWUgKyAnPC9iPicpO1xyXG4gICAgICAgICAgICB2YXIgJHJlc3VsdEhpZGRlbiA9ICQoJzxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgLz4nKTtcclxuICAgICAgICAgICAgJHJlc3VsdEhpZGRlbi52YWwocmVzcG9uc2UueG1sKTtcclxuICAgICAgICAgICAgdmFyICRyZW1vdmUgPSAkKCc8aT48L2k+Jyk7XHJcbiAgICAgICAgICAgICRyZXN1bHQuYXBwZW5kKCRyZW1vdmUpO1xyXG4gICAgICAgICAgICAkcmVtb3ZlLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsgX3NlbGYuX3JlbW92ZUl0ZW0oJHJlc3VsdCk7IH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gJHJlc3VsdC5hcHBlbmQoJHJlc3VsdEhpZGRlbik7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgX3NlbGYuX3NlbmRGaWxlID0gZnVuY3Rpb24gKGZpbGUsIG5hbWUsIGZpbGVUeXBlLCBzdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIGlmICghX2lzQXV0b0dlbmVyYXRlVGh1bWJBY3Rpb24pXHJcbiAgICAgICAgICAgICAgICBfc2VsZi5fc3RhcnRQcm9ncmVzcygpO1xyXG4gICAgICAgICAgICB2YXIgX2NodW5rc0NvbXBsZXRlZCA9IDA7XHJcbiAgICAgICAgICAgIC8vIGNyZWF0ZSBhcnJheSB0byBzdG9yZSB0aGUgYnVmZmVyIGNodW5rc1xyXG4gICAgICAgICAgICB2YXIgRmlsZUNodW5rID0gW107XHJcbiAgICAgICAgICAgIC8vIHNldCB1cCBvdGhlciBpbml0aWFsIHZhcnNcclxuICAgICAgICAgICAgdmFyIE1heEZpbGVTaXplTUIgPSAxO1xyXG4gICAgICAgICAgICB2YXIgQnVmZmVyQ2h1bmtTaXplID0gTWF4RmlsZVNpemVNQiAqICgxMDI0ICogMTAyNCk7XHJcbiAgICAgICAgICAgIHZhciBSZWFkQnVmZmVyX1NpemUgPSAxMDI0O1xyXG4gICAgICAgICAgICB2YXIgRmlsZVN0cmVhbVBvcyA9IDA7XHJcbiAgICAgICAgICAgIC8vIHNldCB0aGUgaW5pdGlhbCBjaHVuayBsZW5ndGhcclxuICAgICAgICAgICAgdmFyIEVuZFBvcyA9IEJ1ZmZlckNodW5rU2l6ZTtcclxuICAgICAgICAgICAgdmFyIFNpemUgPSB0eXBlb2YgKGZpbGUuc2l6ZSkgIT0gJ3VuZGVmaW5lZCcgPyBmaWxlLnNpemUgOiBmaWxlLmxlbmd0aDtcclxuICAgICAgICAgICAgdmFyIGlzU3ViRmlsZSA9IHR5cGVvZiAoc3VjY2VzcykgPT0gJ2Z1bmN0aW9uJztcclxuXHJcbiAgICAgICAgICAgIC8vIGFkZCB0byB0aGUgRmlsZUNodW5rIGFycmF5IHVudGlsIHdlIGdldCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlXHJcbiAgICAgICAgICAgIHdoaWxlIChGaWxlU3RyZWFtUG9zIDwgU2l6ZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gXCJzbGljZVwiIHRoZSBmaWxlIGZyb20gdGhlIHN0YXJ0aW5nIHBvc2l0aW9uL29mZnNldCwgdG8gIHRoZSByZXF1aXJlZCBsZW5ndGhcclxuICAgICAgICAgICAgICAgIEZpbGVDaHVuay5wdXNoKGZpbGUuc2xpY2UoRmlsZVN0cmVhbVBvcywgRW5kUG9zKSk7XHJcbiAgICAgICAgICAgICAgICBGaWxlU3RyZWFtUG9zID0gRW5kUG9zOyAvLyBqdW1wIGJ5IHRoZSBhbW91bnQgcmVhZFxyXG4gICAgICAgICAgICAgICAgRW5kUG9zID0gRmlsZVN0cmVhbVBvcyArIEJ1ZmZlckNodW5rU2l6ZTsgLy8gc2V0IG5leHQgY2h1bmsgbGVuZ3RoXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gZ2V0IHRvdGFsIG51bWJlciBvZiBcImZpbGVzXCIgd2Ugd2lsbCBiZSBzZW5kaW5nXHJcbiAgICAgICAgICAgIHZhciBUb3RhbFBhcnRzID0gRmlsZUNodW5rLmxlbmd0aDtcclxuICAgICAgICAgICAgdmFyIFBhcnRDb3VudCA9IDA7XHJcbiAgICAgICAgICAgIC8vIGxvb3AgdGhyb3VnaCwgcHVsbGluZyB0aGUgZmlyc3QgaXRlbSBmcm9tIHRoZSBhcnJheSBlYWNoIHRpbWUgYW5kIHNlbmRpbmcgaXRcclxuICAgICAgICAgICAgdmFyIGNodW5rO1xyXG4gICAgICAgICAgICB3aGlsZSAoY2h1bmsgPSBGaWxlQ2h1bmsuc2hpZnQoKSkge1xyXG4gICAgICAgICAgICAgICAgUGFydENvdW50Kys7XHJcbiAgICAgICAgICAgICAgICAvLyBmaWxlIG5hbWUgY29udmVudGlvblxyXG4gICAgICAgICAgICAgICAgdmFyIEZpbGVQYXJ0TmFtZSA9IF9maWxlSWQgKyBfZmlsZUluZGV4ICsgXCIucGFydF9cIiArIFBhcnRDb3VudCArIFwiLlwiICsgVG90YWxQYXJ0cztcclxuICAgICAgICAgICAgICAgIC8vIHNlbmQgdGhlIGZpbGVcclxuICAgICAgICAgICAgICAgIHZhciBfaGVhZGVycyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAnWC1GaWxlLU5hbWUnOiB0eXBlb2YgKG5hbWUpICE9ICd1bmRlZmluZWQnID8gbmFtZSA6IGZpbGUubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAnWC1GaWxlLVBhcnQtTmFtZSc6IEZpbGVQYXJ0TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAnWC1GaWxlLVR5cGUnOiB0eXBlb2YgKGZpbGVUeXBlKSAhPSAndW5kZWZpbmVkJyA/IGZpbGVUeXBlIDogZmlsZS50eXBlLFxyXG4gICAgICAgICAgICAgICAgICAgICdYLUZpbGUtU2l6ZSc6IFNpemUsXHJcbiAgICAgICAgICAgICAgICAgICAgJ1gtRmlsZS1QYXRoJzogX3VwbG9hZFBhdGhcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB2YXIgX2Zvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAgICAgICAgICAgICBfZm9ybURhdGEuYXBwZW5kKFwiZmlsZWl0ZW1cIiwgY2h1bmssIEZpbGVQYXJ0TmFtZSk7XHJcbiAgICAgICAgICAgICAgICBfc2VsZi5fc2VuZChfaGVhZGVycywgX2Zvcm1EYXRhLCBfY2h1bmtDb21wbGV0ZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9jaHVua0NvbXBsZXRlKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgIF9jaHVua3NDb21wbGV0ZWQrKztcclxuICAgICAgICAgICAgICAgIGlmIChpc1N1YkZpbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBfZmlsZUluZGV4Kys7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzcygpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoX2NodW5rc0NvbXBsZXRlZCA9PSBUb3RhbFBhcnRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmLl91cGxvYWRDb21wbGV0ZShkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2ZpbGVJbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIV9pc0F1dG9HZW5lcmF0ZVRodW1iQWN0aW9uKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGYuX2VuZFByb2dyZXNzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmLl91cGRhdGVQcm9ncmVzcyg5OSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGYuX3VwZGF0ZVByb2dyZXNzKChfY2h1bmtzQ29tcGxldGVkIC8gVG90YWxQYXJ0cykgKiAxMDApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBmdW5jdGlvbiBkYXRhVVJMdG9GaWxlKGRhdGF1cmwsIGZpbGVuYW1lKSB7XHJcbiAgICAgICAgICAgIHZhciBhcnIgPSBkYXRhdXJsLnNwbGl0KCcsJyksIG1pbWUgPSBhcnJbMF0ubWF0Y2goLzooLio/KTsvKVsxXSwgYnN0ciA9IGF0b2IoYXJyWzFdKSwgbiA9IGJzdHIubGVuZ3RoLCB1OGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xyXG4gICAgICAgICAgICB3aGlsZSAobi0tKSB7XHJcbiAgICAgICAgICAgICAgICB1OGFycltuXSA9IGJzdHIuY2hhckNvZGVBdChuKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEZpbGUoW3U4YXJyXSwgZmlsZW5hbWUsIHsgdHlwZTogbWltZSB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIF9zZWxmLl91cGxvYWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgJF9maWxlWzBdLmZpbGVzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgICAgICAgaWYgKF9zZWxmLl9wZXJmb3JtVmFsaWRhdGlvbigkX2ZpbGVbMF0uZmlsZXNbaV0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbGVUb1VwbG9hZCA9ICRfZmlsZVswXS5maWxlc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZmlsZU5hbWUgPSBmaWxlVG9VcGxvYWQubmFtZTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZmlsZVR5cGUgPSBmaWxlVG9VcGxvYWQudHlwZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZVR5cGUuaW5kZXhPZignaW1hZ2UnKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmLnJlc2l6ZUltYWdlKGZpbGVUb1VwbG9hZCwgZmlsZVR5cGUsIGZ1bmN0aW9uICh1cGRhdGVkRmlsZVRvVXBsb2FkLCB3ZWJwRmlsZVRvVXBsb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2VsZi5fc2VuZEZpbGUod2VicEZpbGVUb1VwbG9hZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2VsZi5fc2VuZEZpbGUodXBkYXRlZEZpbGVUb1VwbG9hZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHVwZGF0ZWRGaWxlVG9VcGxvYWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmLl9zZW5kRmlsZSh1cGRhdGVkRmlsZVRvVXBsb2FkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGYuX3NlbmRGaWxlKCRfZmlsZVswXS5maWxlc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIF9zZWxmLnJlc2l6ZUltYWdlID0gZnVuY3Rpb24gKGZpbGVUb1VwbG9hZCwgZmlsZVR5cGUsIHN1Y2Nlc3MsIGZhaWwpIHtcclxuICAgICAgICAgICAgaWYgKF9tYXhIZWlnaHQgPT0gX21heFdpZHRoID09IFwiLTFcIikgc3VjY2VzcyhmaWxlVG9VcGxvYWQpO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGltYWdlID0gbmV3IEltYWdlKCk7XHJcbiAgICAgICAgICAgICAgICBpbWFnZS5jcm9zc09yaWdpbiA9ICdBbm9ueW1vdXMnO1xyXG4gICAgICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc2l6ZXJDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc2l6ZUNvbnRleHQgPSByZXNpemVyQ2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBpbWFnZS5uYXR1cmFsSGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMud2lkdGggPSBpbWFnZS5uYXR1cmFsV2lkdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCAwLCAwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjYWxlTWF4V2lkdGggPSBfbWF4V2lkdGggIT0gJzAnID8gcGFyc2VJbnQoX21heFdpZHRoKSA6IDE5MjA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY2FsZU1heEhlaWdodCA9IF9tYXhIZWlnaHQgIT0gJzAnID8gcGFyc2VJbnQoX21heEhlaWdodCkgOiAxMDgwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NhbGVXaWR0aENvbnN0YW50ID0gc2NhbGVNYXhXaWR0aCA8IGltYWdlLm5hdHVyYWxXaWR0aCA/IChzY2FsZU1heFdpZHRoIC8gaW1hZ2UubmF0dXJhbFdpZHRoKSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY2FsZUhlaWdodENvbnN0YW50ID0gc2NhbGVNYXhIZWlnaHQgPCBpbWFnZS5uYXR1cmFsSGVpZ2h0ID8gKHNjYWxlTWF4SGVpZ2h0IC8gaW1hZ2UubmF0dXJhbEhlaWdodCkgOiAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NhbGVDb25zdGFudCA9IE1hdGgubWluKHNjYWxlV2lkdGhDb25zdGFudCwgc2NhbGVIZWlnaHRDb25zdGFudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY2FsZVdpZHRoID0gaW1hZ2UubmF0dXJhbFdpZHRoICogc2NhbGVDb25zdGFudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjYWxlSGVpZ2h0ID0gaW1hZ2UubmF0dXJhbEhlaWdodCAqIHNjYWxlQ29uc3RhbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZXJDYW52YXMud2lkdGggPSBzY2FsZVdpZHRoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNpemVyQ2FudmFzLmhlaWdodCA9IHNjYWxlSGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNpemVDb250ZXh0LmRyYXdJbWFnZShjYW52YXMsIDAsIDAsIHNjYWxlV2lkdGgsIHNjYWxlSGVpZ2h0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc2l6ZWREYXRhVXJsID0gcmVzaXplckNhbnZhcy50b0RhdGFVUkwoZmlsZVR5cGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2VicFJlc2l6ZWREYXRhVXJsID0gZmlsZVR5cGUgIT0gJ2ltYWdlL3dlYnAnID8gcmVzaXplckNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3dlYnAnKSA6IHJlc2l6ZWREYXRhVXJsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKGRhdGFVUkx0b0ZpbGUocmVzaXplZERhdGFVcmwsIGZpbGVUb1VwbG9hZC5uYW1lKSwgZGF0YVVSTHRvRmlsZSh3ZWJwUmVzaXplZERhdGFVcmwsICdPXycrZmlsZVRvVXBsb2FkLm5hbWUucmVwbGFjZSgvXFwuW0Etel17Myw0fS9naSwnLndlYnAnKSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgZmFpbChmaWxlVG9VcGxvYWQpOyB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgaW1hZ2Uub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICBmYWlsKGZpbGVUb1VwbG9hZCk7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgIHZhciByZWFkZXJGaWxlRGF0YSA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgICAgICAgICByZWFkZXJGaWxlRGF0YS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlLnNyYyA9IHJlYWRlckZpbGVEYXRhLnJlc3VsdDtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIHJlYWRlckZpbGVEYXRhLnJlYWRBc0RhdGFVUkwoZmlsZVRvVXBsb2FkKTtcclxuXHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgZmFpbChmaWxlVG9VcGxvYWQpOyB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgX3NlbGYuX3BlcmZvcm1WYWxpZGF0aW9uID0gZnVuY3Rpb24gKGZpbGUpIHtcclxuICAgICAgICAgICAgaWYgKF9maWxlU2l6ZSA+IDAgJiYgZmlsZS5zaXplID4gX2ZpbGVTaXplKSB7XHJcbiAgICAgICAgICAgICAgICBhbGVydCgnRmlsZSBzaXplIGxpbWl0IGV4Y2VlZGVkIScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgKF9taW1lVHlwZSkgIT0gJ3VuZGVmaW5lZCcgJiYgX21pbWVUeXBlLnRyaW0oKSAhPSAnJyAmJiBfbWltZVR5cGUudHJpbSgpICE9IFwiKlwiKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgX2ZpbGVUeXBlcyA9IF9taW1lVHlwZS5zcGxpdCgnLCcpO1xyXG4gICAgICAgICAgICAgICAgdmFyIF92YWxpZEZpbGVUeXBlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gX2ZpbGVUeXBlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBfZmlsZVR5cGVUb0NoZWNrID0gX2ZpbGVUeXBlc1trZXldLnJlcGxhY2UoJyonLCAnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgX3ZhbGlkRmlsZVR5cGUgfD0gIShmaWxlLnR5cGUuaW5kZXhPZihfZmlsZVR5cGVUb0NoZWNrKSA9PSAtMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIV92YWxpZEZpbGVUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxlcnQoJ0ZpbGUgdHlwZSBub3Qgc3VwcG9ydGVkIScpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBfc2VsZi5fY3JlYXRlU25hcFNob3QgPSBmdW5jdGlvbiAodXJsLCBzdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHZhciAkYm9keSA9ICQoJ2JvZHknKTtcclxuICAgICAgICAgICAgdmFyICR3cmFwcGVyID0gJCgnPGRpdiBjbGFzcz1cInZpZGVvLXByb2Nlc3MgbWRsLWNlbGwtLWhpZGVcIj48L2RpdicpXHJcbiAgICAgICAgICAgIHZhciAkdmlkZW8gPSAkKCc8dmlkZW8gbXV0ZWQ9XCJtdXRlZFwiIGF1dG9idWZmZXI9XCJhdXRvYnVmZmVyXCIgbXV0ZWQgcGxheXNpbmxpbmUgd2lkdGg9XCI2NDBcIiBoZWlnaHQ9XCI0ODBcIj48L3ZpZGVvPicpO1xyXG4gICAgICAgICAgICB2YXIgJHNvdXJlID0gJCgnPHNvdXJjZSBzcmM9XCInICsgdXJsICsgJ1wiIHR5cGU9XCJ2aWRlby9tcDRcIiAvPicpO1xyXG4gICAgICAgICAgICB2YXIgJGNhbnZhcyA9ICQoJzxjYW52YXMgd2lkdGg9XCI2NDBcIiBoZWlnaHQ9XCI0ODBcIj48L2NhbnZhcz4nKTtcclxuICAgICAgICAgICAgJHZpZGVvLmFwcGVuZCgkc291cmUpO1xyXG4gICAgICAgICAgICAkd3JhcHBlci5hcHBlbmQoJHZpZGVvKTtcclxuICAgICAgICAgICAgJHdyYXBwZXIuYXBwZW5kKCRjYW52YXMpO1xyXG4gICAgICAgICAgICAkYm9keS5hcHBlbmQoJHdyYXBwZXIpO1xyXG4gICAgICAgICAgICB2YXIgY2FudmFzID0gJGNhbnZhc1swXTtcclxuICAgICAgICAgICAgdmFyIHZpZGVvID0gJHZpZGVvWzBdO1xyXG4gICAgICAgICAgICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgICAgICAgICB2YXIgaXNTdGFydGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHcgPSB2aWRlby52aWRlb1dpZHRoO1xyXG4gICAgICAgICAgICAgICAgdmFyIGggPSB2aWRlby52aWRlb0hlaWdodDtcclxuICAgICAgICAgICAgICAgIGNhbnZhcy53aWR0aCA9IHc7XHJcbiAgICAgICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaDtcclxuICAgICAgICAgICAgfSwgZmFsc2UpO1xyXG4gICAgICAgICAgICB2aWRlby5vbnRpbWV1cGRhdGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzU3RhcnRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlzU3RhcnRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdmlkZW8ucGF1c2UoKTtcclxuICAgICAgICAgICAgICAgICAgICBidWlsZFNuYXAoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdmlkZW8ucGxheSgpO1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBidWlsZFNuYXAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgdyA9IGNhbnZhcy53aWR0aDtcclxuICAgICAgICAgICAgICAgIHZhciBoID0gY2FudmFzLmhlaWdodDtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgdywgaCk7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSh2aWRlbywgMCwgMCwgdywgaCk7XHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzKGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZycpKTtcclxuICAgICAgICAgICAgICAgICR3cmFwcGVyLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgX3NlbGYuX2luaXQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICRfZmlsZS5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdGaWxlIGNoYW5nZScpO1xyXG4gICAgICAgICAgICAgICAgX3NlbGYuX3VwbG9hZCgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgJF9zZW5kZXIuZmluZCgnLml0ZW1zLWNvbnRleHQgbGFiZWw+aScpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsgX3NlbGYuX3JlbW92ZUl0ZW0oJCh0aGlzKS5jbG9zZXN0KCdsYWJlbCcpKTsgfSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBfc2VsZi5faW5pdCgpO1xyXG4gICAgfVxyXG5cclxufShqUXVlcnkpKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07Il0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsImRlZmluZSIsImFtZCIsImEiLCJpIiwic2VsZiIsIiQiLCJmbiIsIkFnb3JhRmlsZVVwbG9hZCIsIm9wdGlvbnMiLCIkX3NlbmRlciIsInRoaXMiLCJfc2VsZiIsIiRfZmlsZSIsImZpbmQiLCIkX3ZhbHVlTm9kZSIsIiRfaXRlbUNvbnRleHQiLCIkcHJvZ3Jlc3NCYXIiLCJfc2VydmljZVVSTCIsImRhdGEiLCJfdXBsb2FkUGF0aCIsIl9maWxlSWQiLCJfZmlsZUluZGV4IiwiX2F1dG9HZW5lcmF0ZVRodW1iIiwiX2lzQXV0b0dlbmVyYXRlVGh1bWJBY3Rpb24iLCJfZmlsZVNpemUiLCJfbWF4V2lkdGgiLCJfbWF4SGVpZ2h0IiwiX21pbWVUeXBlIiwiYXR0ciIsIl9vbkNoYW5nZSIsIk9uQ2hhbmdlIiwiZGF0YVVSTHRvRmlsZSIsImRhdGF1cmwiLCJmaWxlbmFtZSIsImFyciIsInNwbGl0IiwibWltZSIsIm1hdGNoIiwiYnN0ciIsImF0b2IiLCJuIiwibGVuZ3RoIiwidThhcnIiLCJVaW50OEFycmF5IiwiY2hhckNvZGVBdCIsIkZpbGUiLCJ0eXBlIiwiX3NlbmQiLCJoZWFkZXJzIiwic3VjY2VzcyIsImFqYXgiLCJ1cmwiLCJwcm9jZXNzRGF0YSIsImNvbnRlbnRUeXBlIiwiZGF0YVR5cGUiLCJfZ2V0RGF0YSIsImZpbGVzIiwiX2Zvcm1EYXRhIiwiX3N0YXJ0UHJvZ3Jlc3MiLCJhZGRDbGFzcyIsIl91cGRhdGVQcm9ncmVzcyIsImNvdW50IiwiTWF0aCIsImZsb29yIiwid2lkdGgiLCJfZW5kUHJvZ3Jlc3MiLCJyZW1vdmVDbGFzcyIsIl91cGxvYWRDb21wbGV0ZSIsInJlc3BvbnNlIiwia2V5IiwiJHZhbHVlWG1sIiwieG1sIiwiJGZpbGVWYWx1ZSIsInZhbCIsIm91dGVySFRNTCIsIl9iaW5kSXRlbXMiLCJfY3JlYXRlU25hcFNob3QiLCJpbWFnZVVybCIsIl9zZW5kRmlsZSIsInZhbHVlIiwiaHRtbCIsIl9nZXRJdGVtIiwiYXBwZW5kVG8iLCJfcmVtb3ZlSXRlbSIsIiRpdGVtIiwicmVtb3ZlIiwiJHJlc3VsdCIsIm5hbWUiLCIkcmVzdWx0SGlkZGVuIiwiJHJlbW92ZSIsImFwcGVuZCIsIm9uIiwiZmlsZSIsImZpbGVUeXBlIiwiX2NodW5rc0NvbXBsZXRlZCIsIkZpbGVDaHVuayIsIkJ1ZmZlckNodW5rU2l6ZSIsIk1heEZpbGVTaXplTUIiLCJGaWxlU3RyZWFtUG9zIiwiRW5kUG9zIiwiU2l6ZSIsInNpemUiLCJpc1N1YkZpbGUiLCJwdXNoIiwic2xpY2UiLCJjaHVuayIsIlRvdGFsUGFydHMiLCJQYXJ0Q291bnQiLCJzaGlmdCIsIkZpbGVQYXJ0TmFtZSIsIl9oZWFkZXJzIiwiRm9ybURhdGEiLCJfY2h1bmtDb21wbGV0ZSIsIl91cGxvYWQiLCJfcGVyZm9ybVZhbGlkYXRpb24iLCJmaWxlVG9VcGxvYWQiLCJpbmRleE9mIiwicmVzaXplSW1hZ2UiLCJ1cGRhdGVkRmlsZVRvVXBsb2FkIiwid2VicEZpbGVUb1VwbG9hZCIsInVuZGVmaW5lZCIsImZhaWwiLCJpbWFnZSIsIkltYWdlIiwiY3Jvc3NPcmlnaW4iLCJvbmxvYWQiLCJjYW52YXMiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJyZXNpemVyQ2FudmFzIiwiY29udGV4dCIsImdldENvbnRleHQiLCJyZXNpemVDb250ZXh0IiwiaGVpZ2h0IiwibmF0dXJhbEhlaWdodCIsIm5hdHVyYWxXaWR0aCIsImRyYXdJbWFnZSIsInNjYWxlTWF4V2lkdGgiLCJwYXJzZUludCIsInNjYWxlTWF4SGVpZ2h0Iiwic2NhbGVXaWR0aENvbnN0YW50Iiwic2NhbGVIZWlnaHRDb25zdGFudCIsInNjYWxlQ29uc3RhbnQiLCJtaW4iLCJzY2FsZVdpZHRoIiwic2NhbGVIZWlnaHQiLCJyZXNpemVkRGF0YVVybCIsInRvRGF0YVVSTCIsIndlYnBSZXNpemVkRGF0YVVybCIsInJlcGxhY2UiLCJlIiwib25lcnJvciIsInJlYWRlckZpbGVEYXRhIiwiRmlsZVJlYWRlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJzcmMiLCJyZXN1bHQiLCJyZWFkQXNEYXRhVVJMIiwiYWxlcnQiLCJ0cmltIiwiX2ZpbGVUeXBlcyIsIl92YWxpZEZpbGVUeXBlIiwiX2ZpbGVUeXBlVG9DaGVjayIsIiRib2R5IiwiJHdyYXBwZXIiLCIkdmlkZW8iLCIkc291cmUiLCIkY2FudmFzIiwidmlkZW8iLCJpc1N0YXJ0ZWQiLCJ3IiwidmlkZW9XaWR0aCIsImgiLCJ2aWRlb0hlaWdodCIsIm9udGltZXVwZGF0ZSIsInBhdXNlIiwiZmlsbFJlY3QiLCJwbGF5IiwiX2luaXQiLCJiaW5kIiwiY2xvc2VzdCIsImpRdWVyeSIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJnZXR0ZXIiLCJfX2VzTW9kdWxlIiwiZCIsImRlZmluaXRpb24iLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInIiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyJdLCJzb3VyY2VSb290IjoiIn0=
|
|
1
|
+
import '../../../Agora 4.0/IdcGlobal.Agora.JavaScript.PlugIn/MaxFileUpload.js'
|
|
2
|
+
import '../../../Agora 4.0/IdcGlobal.Agora.JavaScript.PlugIn/FileUpload.css'
|
package/index.html
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
-
<!
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
5
|
+
</head>
|
|
6
|
+
<body>
|
|
7
|
+
<div aga-component>
|
|
8
|
+
|
|
9
|
+
</div>
|
|
10
|
+
<script src="dist/index.js"></script>
|
|
11
|
+
<script>
|
|
12
|
+
$(function(){
|
|
2
13
|
alert('working');
|
|
3
|
-
})
|
|
14
|
+
});
|
|
15
|
+
</script>
|
|
16
|
+
</body>
|
|
17
|
+
</html>
|