@digitransit-component/digitransit-component-autosuggest-panel 8.2.4 → 8.3.1
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/lib/index.development.js +2 -2
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/package.json +3 -3
package/lib/index.development.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("classnames"),require("prop-types"),require("react"),require("react-i18next"),require("react-sortablejs"),require("@digitransit-component/digitransit-component-autosuggest"),require("@digitransit-component/digitransit-component-icon"),require("lodash/isEmpty"),require("downshift"),require("i18next")):"function"==typeof define&&define.amd?define(["exports","classnames","prop-types","react","react-i18next","react-sortablejs","@digitransit-component/digitransit-component-autosuggest","@digitransit-component/digitransit-component-icon","lodash/isEmpty","downshift","i18next"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-autosuggest-panel"]={},e.cx,e.PropTypes,e.React,e.reactI18next,e.reactSortablejs,e.DTAutosuggest,e.Icon,e.isEmpty,e.downshift,e.i18next)}(this,function(e,t,n,i,a,o,s,l,r,c,p){"use strict";function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=d(t),_=d(n),h=d(i),g=d(s),f=d(l),y=d(r);function v(e){return v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},v(e)}function m(e){var t=function(e,t){if("object"!=v(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=v(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==v(t)?t:t+""}function b(e,t,n){return(t=m(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function x(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&i.firstChild?i.insertBefore(a,i.firstChild):i.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}var k="select_combobox-container__0lRpm",w="select_left-column__cSrMR",S="select_combobox-label__F9Ayd",E="select_container__yrA-N",P="select_suggestion__b05iD",N="select_suggestionHighlighted__ZFPWo",C="select_suggestionsContainerOpen__9wcJ5",A="select_input__pK5vk";x(".select_combobox-container__0lRpm {\n background-color: #fff;\n border: solid #888 1px;\n display: flex;\n align-items: center;\n border-radius: 5px;\n height: 50px;\n justify-content: space-between;\n flex-grow: 1;\n}\n.select_combobox-container__0lRpm:focus-within {\n border-color: #007ac9;\n}\n.select_combobox-container__0lRpm .select_left-column__cSrMR {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.select_combobox-label__F9Ayd {\n font-size: 12px;\n line-height: 20px;\n color: #666;\n letter-spacing: -0.48px;\n margin-left: 12px;\n margin-top: 4px;\n}\n\n.select_container__yrA-N {\n position: relative;\n width: 100%;\n height: 100%;\n}\n.select_container__yrA-N > div {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: 100%;\n cursor: pointer;\n}\n.select_container__yrA-N .select_suggestion__b05iD {\n font-size: 15px;\n line-height: 49px;\n height: 50px;\n padding: 0 0 0 12px;\n letter-spacing: -0.6px;\n color: #333;\n font-weight: 500;\n}\n.select_container__yrA-N .select_suggestionHighlighted__ZFPWo {\n font-size: 15px;\n font-weight: 500;\n background: #f2f5f7;\n}\n.select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 {\n position: absolute;\n background-color: #fff;\n z-index: 20;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: calc(100% + 4px);\n left: 0;\n width: 100%;\n list-style-type: none;\n padding: 0;\n margin: 0;\n}\n.select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 ul {\n padding: 0;\n margin: 0;\n}\n.select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 li:not(:last-child) {\n border-bottom: 1px solid #ddd;\n}\n.select_container__yrA-N .select_input__pK5vk {\n -webkit-appearance: none;\n appearance: none;\n margin: -4px 0 0 0;\n padding-left: 12px;\n border: none;\n height: 26px;\n}\n.select_container__yrA-N .select_input__pK5vk:focus {\n outline: none;\n border: none;\n box-shadow: none;\n background: #fff;\n}\n.select_container__yrA-N .select_input__pK5vk:read-only {\n cursor: pointer;\n background: #fff;\n}\n.select_container__yrA-N .select_input__pK5vk {\n background: #fff;\n font-weight: 500;\n box-shadow: none;\n font-size: 15px;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.6px;\n color: #333;\n}");const V=({value:e,options:t,onSlackTimeSelected:n,viaPointIndex:i,id:a,label:o,icon:s})=>{const l=`${a}-label`,r=t.find(t=>t.value===e),{isOpen:p,getToggleButtonProps:d,getMenuProps:_,getItemProps:g,getLabelProps:f,highlightedIndex:y}=c.useSelect({selectedItem:r,items:t,labelId:l,id:a,itemToString:e=>e.displayName,onSelectedItemChange:({selectedItem:e})=>{n(e.value,i)}});return h.default.createElement("div",{className:k},h.default.createElement("div",{className:E},h.default.createElement("div",d(),h.default.createElement("span",{className:w},h.default.createElement("label",Object.assign({},f(),{className:S}),o),h.default.createElement("div",{className:A},h.default.createElement("span",null,r.displayName))),s),h.default.createElement("ul",Object.assign({className:u.default(C,!p&&"hidden")},_()),p&&t.map((e,t)=>h.default.createElement("li",Object.assign({key:e.value,className:u.default(P,t===y&&N)},g({index:t})),h.default.createElement("span",null,e.displayName))))))};"production"!==process.env.NODE_ENV&&(V.propTypes={value:_.default.number.isRequired,onSlackTimeSelected:_.default.func.isRequired,options:_.default.arrayOf(_.default.shape({displayName:_.default.string.isRequired,value:_.default.number.isRequired}).isRequired).isRequired,id:_.default.string.isRequired,label:_.default.node.isRequired,icon:_.default.node.isRequired,viaPointIndex:_.default.number.isRequired});const O=p.createInstance({fallbackLng:"fi",resources:{de:{translation:{"add-via-button-label":"Füge Zwischenziel hinzu","add-via-duration-button-label":"Setze Umsteigezeit für Zwischenziel {{index}}","add-via-duration-button-label-close":"Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}","add-via-duration-button-label-open":"Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}","minute-short":"min","remove-via-button-label":"Entferne Zwischenziel {{index}}","swap-order-button-label":"Tausche Start mit Ziel","via-point":"Zwischenziel","via-point-index":"Zwischenziel {{index}}","viapoint-slack-amount":"Umsteigezeit"}},en:{translation:{"add-via-button-label":"Add via point","add-via-duration-button-label":"Set stop duration at via point {{index}}","add-via-duration-button-label-close":"Close stop duration selector at via point {{index}}","add-via-duration-button-label-open":"Open stop duration selector at via point {{index}}","minute-short":"min","remove-via-button-label":"Remove via point {{index}}","swap-order-button-label":"Reverse origin and destination","via-point":"Via point","via-point-index":"Via point {{index}}","viapoint-slack-amount":"Stop duration"}},fi:{translation:{"add-via-button-label":"Lisää välipiste","add-via-duration-button-label":"Aseta välipisteelle {{index}} pysähdyksen kesto","add-via-duration-button-label-close":"Avaa välipisteen {{index}} pysähdyksen kesto valitsin","add-via-duration-button-label-open":"Sulje välipisteen {{index}} pysähdyksen kesto valitsin","minute-short":"min","remove-via-button-label":"Poista välipiste {{index}}","swap-order-button-label":"Käännä reitin suunta vastakkaiseksi","via-point":"Välipiste","via-point-index":"Välipiste {{index}}","viapoint-slack-amount":"Pysähdyksen kesto"}},pl:{translation:{"add-via-button-label":"Dodaj punkt pośredni","add-via-duration-button-label":"Wybierz czas postoju dla punktu {{index}}","add-via-duration-button-label-close":"Zamknij wybornik czasu postoju w punkcie {{index}}","add-via-duration-button-label-open":"Otwórz wybornik czasu postoju w punkcie {{index}}","minute-short":"min.","remove-via-button-label":"Usuń punkt pośredni {{index}}","swap-order-button-label":"Odwróć początek i cel","via-point":"Punkt pośredni","via-point-index":"Punkt pośredni {{index}}","viapoint-slack-amount":"Czas postoju"}},sv:{translation:{"add-via-button-label":"Lägg till viapunkt","add-via-duration-button-label":"Ställ in varaktighet för viapunkten {{index}}","add-via-duration-button-label-close":"Stäng väljaren för varaktighet vid via-punkten {{index}}","add-via-duration-button-label-open":"Öppna väljaren för varaktighet vid via-punkten {{index}}","minute-short":"min","remove-via-button-label":"Ta bort viapunkt {{index}}","swap-order-button-label":"Sväng ruttens riktning till den motsatta","via-point":"Via punkt","via-point-index":"Via punkt {{index}}","viapoint-slack-amount":"Stoppets varaktighet"}}},defaultNS:"translation",react:{useSuspense:!0}});O.init();var I={"autosuggest-panel":"styles_autosuggest-panel__meNwd","autosuggest-searchpanel-text":"styles_autosuggest-searchpanel-text__-VQTg","origin-input-container":"styles_origin-input-container__p4Qik","destination-input-container":"styles_destination-input-container__jBY4I",row:"styles_row__1GhCD","viapoints-container":"styles_viapoints-container__FYp7K","viapoint-container":"styles_viapoint-container__8yh1M","light-gray-background":"styles_light-gray-background__4fyZs","viapoint-before":"styles_viapoint-before__t4saF","viapoint-input-container":"styles_viapoint-input-container__uZx95","viapoint-1":"styles_viapoint-1__8Mna8",viapoint:"styles_viapoint__vUO9L","viapoint-2":"styles_viapoint-2__-OoUa","viapoint-3":"styles_viapoint-3__vvivE","viapoint-4":"styles_viapoint-4__jS9k1","viapoint-5":"styles_viapoint-5__J4V5N","viapoint-slack-time":"styles_viapoint-slack-time__Xpo0G","select-wrapper":"styles_select-wrapper__1usZw","via-point-button-container":"styles_via-point-button-container__cI2JI","input-viapoint-slack-container":"styles_input-viapoint-slack-container__TNgVy","itinerary-search-control":"styles_itinerary-search-control__cEL1X",opposite:"styles_opposite__zQQhd","add-via-point":"styles_add-via-point__E-gGB","add-via-point-slack":"styles_add-via-point-slack__GKjFf","remove-via-point":"styles_remove-via-point__e9DMQ","combobox-icon":"styles_combobox-icon__d3k1e","time-input-icon":"styles_time-input-icon__M8dmw","rectangle-container":"styles_rectangle-container__AdbAA",rectangle:"styles_rectangle__1IO7E","search-panel-whitespace":"styles_search-panel-whitespace__Luhwx"};x(".styles_autosuggest-panel__meNwd {\n width: 100%;\n}\n\n.styles_autosuggest-searchpanel-text__-VQTg {\n font-size: 24px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.8px;\n color: #333;\n line-height: 1;\n margin-bottom: 17px;\n margin-top: unset;\n}\n@media screen and (min-width: 768px) {\n .styles_autosuggest-searchpanel-text__-VQTg {\n letter-spacing: -0.8px;\n line-height: 27px;\n margin-bottom: 21px;\n }\n}\n\n.styles_origin-input-container__p4Qik,\n.styles_destination-input-container__jBY4I {\n display: flex;\n flex: 1 0 100%;\n}\n.styles_origin-input-container__p4Qik input[type=text],\n.styles_destination-input-container__jBY4I input[type=text] {\n margin: 0;\n}\n\n.styles_row__1GhCD {\n display: flex;\n flex-direction: row;\n}\n\n.styles_viapoints-container__FYp7K {\n display: flex;\n flex-direction: column;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M {\n display: flex;\n flex: 1 0 100%;\n min-height: 50px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:first-child {\n margin-top: 6px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:not(:first-child) {\n margin-top: 3px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:last-child {\n margin-bottom: 6px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs {\n display: flex;\n padding: 3px 0;\n flex-direction: column;\n background: #f2f5f7;\n border-radius: 5px;\n width: 100%;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF {\n display: flex;\n min-width: 27px;\n justify-content: center;\n align-items: center;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF svg {\n fill: #888;\n height: 20px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 {\n display: flex;\n align-items: center;\n width: 100%;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 input[type=text] {\n margin: 0;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-1__8Mna8 > div.styles_viapoint__vUO9L {\n z-index: 15;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-2__-OoUa > div.styles_viapoint__vUO9L {\n z-index: 14;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-3__vvivE > div.styles_viapoint__vUO9L {\n z-index: 13;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-4__jS9k1 > div.styles_viapoint__vUO9L {\n z-index: 12;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-5__J4V5N > div.styles_viapoint__vUO9L {\n z-index: 11;\n}\n\n.styles_viapoint-slack-time__Xpo0G {\n font-size: 13px;\n font-weight: normal;\n letter-spacing: -0.36px;\n color: #333;\n padding-left: 27px;\n padding-top: 12px;\n padding-bottom: 10px;\n}\n\n.styles_select-wrapper__1usZw {\n display: flex;\n height: 50px;\n margin-top: 9px;\n padding-left: 27px;\n padding-right: 47px;\n}\n\n.styles_via-point-button-container__cI2JI {\n display: flex;\n}\n.styles_via-point-button-container__cI2JI > div:nth-child(1) {\n order: 1;\n border-left: none;\n}\n.styles_via-point-button-container__cI2JI > div:nth-child(2) {\n order: 2;\n border-left: 1px solid rgba(151, 151, 151, 0.2);\n}\n\n.styles_input-viapoint-slack-container__TNgVy {\n display: flex;\n flex-direction: column;\n}\n\n.styles_itinerary-search-control__cEL1X {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n max-height: 50px;\n min-width: var(--width);\n}\n.styles_itinerary-search-control__cEL1X + .styles_itinerary-search-control__cEL1X {\n border-left: 1px solid rgba(151, 151, 151, 0.2);\n}\n.styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd svg {\n width: 19px;\n height: 17px;\n}\n.styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB svg {\n width: 20px;\n height: 22px;\n}\n.styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 47px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf svg {\n width: 18px;\n height: 19px;\n}\n.styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n max-height: 44px;\n min-width: 40px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ svg {\n width: 14px;\n height: 14px;\n}\n\n.styles_combobox-icon__d3k1e {\n color: var(--color);\n border-left: solid #888 1px;\n height: 35px;\n}\n.styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw {\n padding: 9px 13px 0 13px;\n}\n.styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw svg {\n width: 18px;\n height: 19px;\n}\n\n.styles_rectangle-container__AdbAA {\n display: block;\n position: relative;\n height: 9px;\n z-index: 19;\n}\n.styles_rectangle-container__AdbAA .styles_rectangle__1IO7E {\n position: absolute;\n width: 4px;\n height: 21px;\n border-radius: 2px;\n background-color: #ddd;\n margin-left: 25px;\n margin-top: -5px;\n}\n\n.styles_search-panel-whitespace__Luhwx {\n min-width: 40px;\n}");const M=["children","className","enabled","onClick","onKeyPress","wide"],R=()=>({}),j=e=>{if(void 0===e||y.default(e))return!0;const t=Object.keys(e);return 1===t.length||2===t.length&&t.includes("locationSlack")},L=e=>{let{children:t,className:n,enabled:i,onClick:a,onKeyPress:o,wide:s}=e,l=function(e,t){if(null==e)return{};var n,i,a=function(e,t){if(null==e)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(-1!==t.indexOf(i))continue;n[i]=e[i]}return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],-1===t.indexOf(n)&&{}.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,M);return h.default.createElement("div",{className:I["itinerary-search-control"],style:{"--width":s?"47px":"40px"}},a&&i&&h.default.createElement("div",Object.assign({},l,{className:n,onClick:a,onKeyPress:o,role:"button",tabIndex:"0"}),t))},F=(e,t,n=!1)=>{const i=e.indexOf(t);return i>-1&&e.splice(i,1),n?e.map(e=>e>t?e-1:e):e},z=e=>{const t=e&&(e.key||e.which||e.keyCode)||"";return!(!t||![13," ","Spacebar"].concat([32,"Enter"]).includes(t))&&(e.preventDefault(),!0)},K=e=>e&&e.address||e&&e.gps&&e.ready&&"Nykyinen sijainti"||"",T=e=>e&&!0===e.gps?"position":"location";"production"!==process.env.NODE_ENV&&(L.propTypes={children:_.default.node,className:_.default.string.isRequired,enabled:_.default.bool.isRequired,onClick:_.default.func.isRequired,onKeyPress:_.default.func.isRequired,wide:_.default.bool}),L.defaultProps={children:void 0,wide:!1};const Z="production"!==process.env.NODE_ENV?_.default.shape({address:_.default.string,lat:_.default.number,lon:_.default.number,locationSlack:_.default.number}):{};class q extends h.default.Component{constructor(e){super(e),b(this,"storeReference",e=>{this.setState(t=>({refs:[...t.refs,e]}))}),b(this,"handleFocusChange",()=>{const{destination:e}=this.props;e&&e.lat||this.state.refs[1].focus()}),b(this,"updateViaPoints",e=>{0!==e.length?this.props.updateViaPoints(e.filter(e=>!j(e))):this.props.updateViaPoints([])}),b(this,"handleToggleViaPointSlackClick",e=>{const{activeSlackInputs:t}=this.state;this.setState({activeSlackInputs:t.includes(e)?F(t,e):t.concat([e])})}),b(this,"handleViaPointSlackTimeSelected",(e,t)=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"EditViaPointStopDuration",category:"ItinerarySettings",name:e/60});const{viaPoints:n}=this.props;n[t].locationSlack=Number.parseInt(e,10),this.updateViaPoints(n)}),b(this,"handleViaPointLocationSelected",(e,t)=>{this.props.handleViaPointLocationSelected(e,t)}),b(this,"handleRemoveViaPointClick",e=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"RemoveJourneyViaPoint",category:"ItinerarySettings",name:null});const{activeSlackInputs:t}=this.state,{viaPoints:n}=this.props;n.splice(e,1),this.setState({activeSlackInputs:F(t,e,!0)},()=>this.updateViaPoints(n))}),b(this,"handleAddViaPointClick",()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"AddJourneyViaPoint",category:"ItinerarySettings",name:"QuickSettingsButton"});const{viaPoints:e}=this.props;e.push({}),this.setState(this.state)}),b(this,"handleSwapOrderClick",()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"SwitchJourneyStartAndEndPointOrder",category:"ItinerarySettings",name:null});const{viaPoints:e}=this.props;e.reverse(),this.props.swapOrder()}),b(this,"getSlackDisplay",e=>`${e/60} ${this.props.t("minute-short",{lng:this.props.lang})}`),this.state={activeSlackInputs:[],refs:[]}}render(){const{origin:e,searchPanelText:t,searchContext:n,disableAutoFocus:i,viaPoints:a,originMobileLabel:s,destinationMobileLabel:l,fontWeights:r,onFocusChange:c,showSwapControl:p,showViapointControl:d,t:_,lang:y}=this.props,{primary:v}=this.props.colors,{activeSlackInputs:m}=this.state,b=(e=>{const t=[];for(let n=0;n<=9;n++){const i=10*n;t.push({displayName:`${i} ${e("minute-short")}`,value:60*i})}return t})(_),x=(e,t=0)=>e&&e.locationSlack||t,k=e=>m.includes(e);return h.default.createElement("div",{className:u.default(I["autosuggest-panel"],this.props.isMobile&&"small"),style:{"--color":v,"--font-weight-medium":r.medium}}," ",t?h.default.createElement("div",null,h.default.createElement("h1",{className:I["autosuggest-searchpanel-text"]}," ",t)):null,h.default.createElement("div",{className:I["origin-input-container"]},h.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"origin",autoFocus:!0!==i&&(!this.props.isMobile&&!e.lat),storeRef:this.storeReference,refPoint:this.props.refPoint,className:T(e),placeholder:this.props.originPlaceHolder,value:K(e),searchContext:n,getAutoSuggestIcons:this.props.getAutoSuggestIcons,onSelect:this.props.onSelect,onClear:this.props.onClear,focusChange:c||this.handleFocusChange,lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,colors:this.props.colors,mobileLabel:s,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||d)&&h.default.createElement(L,{className:I.opposite,enabled:p,onClick:()=>this.handleSwapOrderClick(),onKeyPress:e=>z(e)&&this.handleSwapOrderClick(),"aria-label":_("swap-order-button-label",{lng:y})},h.default.createElement(f.default,{img:"opposite",color:v}))),0===a.length&&h.default.createElement("div",{className:I["rectangle-container"]},h.default.createElement("div",{className:I.rectangle})),h.default.createElement(o.ReactSortable,{className:I["viapoints-container"],list:a,handle:`.${I["viapoint-before"]}`,animation:200,disabled:a.length<=1,setList:e=>{const t=e.filter(e=>!j(e));t.length>0&&this.props.updateViaPoints(t)}},a.map((e,t)=>h.default.createElement("div",{className:u.default(I["viapoint-container"]),key:`viapoint-${t}`},h.default.createElement("div",{className:I["light-gray-background"]},h.default.createElement("div",{className:I.row},h.default.createElement("div",{className:I["viapoint-before"],style:a.length>1?{cursor:"move"}:{}},a.length>1&&h.default.createElement(f.default,{img:"ellipsis",rotate:90,color:v})),h.default.createElement("div",{className:`${I["viapoint-input-container"]} ${I[`viapoint-${t+1}`]}`},h.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"via-point",ariaLabel:_("via-point-index",{index:t+1,lng:y}),autoFocus:!0!==i&&!this.props.isMobile,placeholder:"via-point",className:"viapoint",searchContext:n,refPoint:this.props.refPoint,value:e&&e.address||"",onSelect:this.props.onSelect,onClear:this.props.onClear,handleViaPoints:e=>this.handleViaPointLocationSelected(e,t),lang:this.props.lang,sources:this.props.sources,targets:["Stops","Stations"],filterResults:this.props.filterResults,getAutoSuggestIcons:this.props.getAutoSuggestIcons,isMobile:this.props.isMobile,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,colors:this.props.colors,showScroll:this.props.showScroll})),this.props.showSlackControl&&h.default.createElement(L,{className:I["add-via-point-slack"],enabled:this.props.showViapointControl,onClick:()=>this.handleToggleViaPointSlackClick(t),onKeyPress:e=>z(e)&&this.handleToggleViaPointSlackClick(t),"aria-label":_(k(t)?"add-via-duration-button-label-open":"add-via-duration-button-label-close",{index:t+1,lng:y}),wide:!0},h.default.createElement(f.default,{img:"time",color:v}))),!k(t)&&a[t]&&a[t].locationSlack>0&&h.default.createElement("span",{className:I["viapoint-slack-time"]},`${_("viapoint-slack-amount",{lng:y})}: ${this.getSlackDisplay(a[t].locationSlack)}`),h.default.createElement("div",{className:u.default(I["input-viapoint-slack-container"],!k(t)&&"collapsed")},h.default.createElement("div",{className:I["select-wrapper"]},h.default.createElement(V,{id:`viapoint-slack-${t}`,label:_("viapoint-slack-amount",{lng:y}),options:b,value:x(a[t]),viaPointIndex:t,icon:h.default.createElement("span",{className:`${I["combobox-icon"]} ${I["time-input-icon"]}`},h.default.createElement(f.default,{img:"time",color:v})),onSlackTimeSelected:this.handleViaPointSlackTimeSelected})))),h.default.createElement(L,{className:I["remove-via-point"],enabled:this.props.showViapointControl,onClick:()=>this.handleRemoveViaPointClick(t),onKeyPress:e=>z(e)&&this.handleRemoveViaPointClick(t),"aria-label":_("remove-via-button-label",{index:t+1,lng:y})},h.default.createElement(f.default,{img:"trash",color:v}))))),h.default.createElement("div",{className:I["destination-input-container"]},h.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"destination",autoFocus:!0!==i&&(!this.props.isMobile&&!Number.isNaN(e.lat)),storeRef:this.storeReference,placeholder:this.props.destinationPlaceHolder,className:T(this.props.destination),getAutoSuggestIcons:this.props.getAutoSuggestIcons,searchContext:n,onSelect:this.props.onSelect,onClear:this.props.onClear,refPoint:this.props.refPoint,value:K(this.props.destination),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,mobileLabel:l,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,colors:this.props.colors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||d)&&h.default.createElement(L,{className:u.default(I["add-via-point"],I.more,a.length>4&&"collapsed"),enabled:d&&0===a.length,onClick:()=>this.handleAddViaPointClick(),onKeyPress:e=>z(e)&&this.handleAddViaPointClick(),"aria-label":_("add-via-button-label",{lng:y})},h.default.createElement(f.default,{img:"viapoint",width:1.25,height:1.375,color:v}))))}}b(q,"defaultProps",{origin:void 0,destination:void 0,viaPoints:[],originPlaceHolder:"give-origin",destinationPlaceHolder:"give-destination",swapOrder:void 0,updateViaPoints:()=>{},searchPanelText:void 0,sources:[],targets:[],filterResults:void 0,onClear:void 0,getAutoSuggestIcons:void 0,refPoint:void 0,addAnalyticsEvent:void 0,disableAutoFocus:!1,isMobile:!1,handleViaPointLocationSelected:void 0,originMobileLabel:null,destinationMobileLabel:null,modeSet:void 0,colors:l.defaultColors,fontWeights:{medium:500},showScroll:!1,onFocusChange:void 0,isEmbedded:!1,showSwapControl:!1,showViapointControl:!1,showSlackControl:!1}),"production"!==process.env.NODE_ENV&&(q.propTypes={appElement:_.default.string.isRequired,origin:Z,destination:Z,originPlaceHolder:_.default.string,destinationPlaceHolder:_.default.string,viaPoints:_.default.arrayOf(Z),updateViaPoints:_.default.func,handleViaPointLocationSelected:_.default.func,swapOrder:_.default.func,searchPanelText:_.default.string,searchContext:_.default.shape({URL_PELIAS:_.default.string}).isRequired,onSelect:_.default.func.isRequired,onClear:_.default.func,addAnalyticsEvent:_.default.func,lang:_.default.string.isRequired,disableAutoFocus:_.default.bool,sources:_.default.arrayOf(_.default.string),targets:_.default.arrayOf(_.default.string),filterResults:_.default.func,isMobile:_.default.bool,originMobileLabel:_.default.string,destinationMobileLabel:_.default.string,refPoint:Z,modeSet:_.default.string,colors:_.default.objectOf(_.default.string),getAutoSuggestIcons:_.default.objectOf(_.default.func),fontWeights:_.default.shape({medium:_.default.number}),showScroll:_.default.bool,onFocusChange:_.default.func,isEmbedded:_.default.bool,showSwapControl:_.default.bool,showViapointControl:_.default.bool,showSlackControl:_.default.bool,t:_.default.func.isRequired});const Y=a.withTranslation()(q);e.default=e=>h.default.createElement(a.I18nextProvider,{i18n:O},h.default.createElement(Y,e)),e.getEmptyViaPointPlaceHolder=R,Object.defineProperty(e,"__esModule",{value:!0})});
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1pbmplY3QvZGlzdC9zdHlsZS1pbmplY3QuZXMuanMiLCIuLi9zcmMvaGVscGVycy9TZWxlY3QuanMiLCIuLi9zcmMvaGVscGVycy90cmFuc2xhdGlvbnMuanMiLCIuLi9zcmMvaGVscGVycy9pMThuLmpzIiwiLi4vc3JjL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvO1xuICB9IDogZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbztcbiAgfSwgX3R5cGVvZihvKTtcbn1cbmV4cG9ydCB7IF90eXBlb2YgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuaW1wb3J0IHRvUHJpbWl0aXZlIGZyb20gXCIuL3RvUHJpbWl0aXZlLmpzXCI7XG5mdW5jdGlvbiB0b1Byb3BlcnR5S2V5KHQpIHtcbiAgdmFyIGkgPSB0b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTtcbiAgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjtcbn1cbmV4cG9ydCB7IHRvUHJvcGVydHlLZXkgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuZnVuY3Rpb24gdG9QcmltaXRpdmUodCwgcikge1xuICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDtcbiAgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG4gIGlmICh2b2lkIDAgIT09IGUpIHtcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTtcbiAgICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7XG4gIH1cbiAgcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcbn1cbmV4cG9ydCB7IHRvUHJpbWl0aXZlIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgdG9Qcm9wZXJ0eUtleSBmcm9tIFwiLi90b1Byb3BlcnR5S2V5LmpzXCI7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcbiAgICB2YWx1ZTogdCxcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICBjb25maWd1cmFibGU6ICEwLFxuICAgIHdyaXRhYmxlOiAhMFxuICB9KSA6IGVbcl0gPSB0LCBlO1xufVxuZXhwb3J0IHsgX2RlZmluZVByb3BlcnR5IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBzdHlsZUluamVjdChjc3MsIHJlZikge1xuICBpZiAoIHJlZiA9PT0gdm9pZCAwICkgcmVmID0ge307XG4gIHZhciBpbnNlcnRBdCA9IHJlZi5pbnNlcnRBdDtcblxuICBpZiAoIWNzcyB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7IHJldHVybjsgfVxuXG4gIHZhciBoZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBzdHlsZS50eXBlID0gJ3RleHQvY3NzJztcblxuICBpZiAoaW5zZXJ0QXQgPT09ICd0b3AnKSB7XG4gICAgaWYgKGhlYWQuZmlyc3RDaGlsZCkge1xuICAgICAgaGVhZC5pbnNlcnRCZWZvcmUoc3R5bGUsIGhlYWQuZmlyc3RDaGlsZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgfVxuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0eWxlSW5qZWN0O1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VTZWxlY3QgfSBmcm9tICdkb3duc2hpZnQnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3NlbGVjdC5zY3NzJztcblxuY29uc3QgU2VsZWN0ID0gKHtcbiAgdmFsdWUsXG4gIG9wdGlvbnMsXG4gIG9uU2xhY2tUaW1lU2VsZWN0ZWQsXG4gIHZpYVBvaW50SW5kZXgsXG4gIGlkLFxuICBsYWJlbCxcbiAgaWNvbixcbn0pID0+IHtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG4gIGNvbnN0IHNlbGVjdGVkSXRlbSA9IG9wdGlvbnMuZmluZChvcHRpb24gPT4gb3B0aW9uLnZhbHVlID09PSB2YWx1ZSk7XG5cbiAgY29uc3Qge1xuICAgIGlzT3BlbixcbiAgICBnZXRUb2dnbGVCdXR0b25Qcm9wcyxcbiAgICBnZXRNZW51UHJvcHMsXG4gICAgZ2V0SXRlbVByb3BzLFxuICAgIGdldExhYmVsUHJvcHMsXG4gICAgaGlnaGxpZ2h0ZWRJbmRleCxcbiAgfSA9IHVzZVNlbGVjdCh7XG4gICAgc2VsZWN0ZWRJdGVtLFxuICAgIGl0ZW1zOiBvcHRpb25zLFxuICAgIGxhYmVsSWQsXG4gICAgaWQsXG4gICAgaXRlbVRvU3RyaW5nOiBpdGVtID0+IGl0ZW0uZGlzcGxheU5hbWUsXG4gICAgb25TZWxlY3RlZEl0ZW1DaGFuZ2U6ICh7IHNlbGVjdGVkSXRlbTogbmV3SXRlbSB9KSA9PiB7XG4gICAgICBvblNsYWNrVGltZVNlbGVjdGVkKG5ld0l0ZW0udmFsdWUsIHZpYVBvaW50SW5kZXgpO1xuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snY29tYm9ib3gtY29udGFpbmVyJ119PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5jb250YWluZXJ9PlxuICAgICAgICA8ZGl2IHsuLi5nZXRUb2dnbGVCdXR0b25Qcm9wcygpfT5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snbGVmdC1jb2x1bW4nXX0+XG4gICAgICAgICAgICA8bGFiZWwgey4uLmdldExhYmVsUHJvcHMoKX0gY2xhc3NOYW1lPXtzdHlsZXNbJ2NvbWJvYm94LWxhYmVsJ119PlxuICAgICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5pbnB1dH0+XG4gICAgICAgICAgICAgIDxzcGFuPntzZWxlY3RlZEl0ZW0uZGlzcGxheU5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtpY29ufVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHVsXG4gICAgICAgICAgY2xhc3NOYW1lPXtjeChbc3R5bGVzLnN1Z2dlc3Rpb25zQ29udGFpbmVyT3BlbiwgIWlzT3BlbiAmJiAnaGlkZGVuJ10pfVxuICAgICAgICAgIHsuLi5nZXRNZW51UHJvcHMoKX1cbiAgICAgICAgPlxuICAgICAgICAgIHtpc09wZW4gJiZcbiAgICAgICAgICAgIG9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goW1xuICAgICAgICAgICAgICAgICAgc3R5bGVzLnN1Z2dlc3Rpb24sXG4gICAgICAgICAgICAgICAgICBpbmRleCA9PT0gaGlnaGxpZ2h0ZWRJbmRleCAmJiBzdHlsZXMuc3VnZ2VzdGlvbkhpZ2hsaWdodGVkLFxuICAgICAgICAgICAgICAgIF0pfVxuICAgICAgICAgICAgICAgIHsuLi5nZXRJdGVtUHJvcHMoeyBpbmRleCB9KX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPntvcHRpb24uZGlzcGxheU5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblNlbGVjdC5wcm9wVHlwZXMgPSB7XG4gIHZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIG9uU2xhY2tUaW1lU2VsZWN0ZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9wdGlvbnM6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBkaXNwbGF5TmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICB9KS5pc1JlcXVpcmVkLFxuICApLmlzUmVxdWlyZWQsXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGxhYmVsOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBpY29uOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICB2aWFQb2ludEluZGV4OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWxlY3Q7XG4iLCJjb25zdCB0cmFuc2xhdGlvbnMgPSB7XG4gIGRlOiB7XG4gICAgdHJhbnNsYXRpb246IHtcbiAgICAgICdhZGQtdmlhLWJ1dHRvbi1sYWJlbCc6ICdGw7xnZSBad2lzY2hlbnppZWwgaGluenUnLFxuICAgICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsJzpcbiAgICAgICAgJ1NldHplIFVtc3RlaWdlemVpdCBmw7xyIFp3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLWNsb3NlJzpcbiAgICAgICAgJ1NjaGxpZcOfZSBVbXN0ZWlnZXplaXQtQXVzd2FobCBmw7xyIFp3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLW9wZW4nOlxuICAgICAgICAnw5ZmZm5lIFVtc3RlaWdlemVpdC1BdXN3YWhsIGbDvHIgWndpc2NoZW56aWVsIHt7aW5kZXh9fScsXG4gICAgICAnbWludXRlLXNob3J0JzogJ21pbicsXG4gICAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnRW50ZmVybmUgWndpc2NoZW56aWVsIHt7aW5kZXh9fScsXG4gICAgICAnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnOiAnVGF1c2NoZSBTdGFydCBtaXQgWmllbCcsXG4gICAgICAndmlhLXBvaW50JzogJ1p3aXNjaGVuemllbCcsXG4gICAgICAndmlhLXBvaW50LWluZGV4JzogJ1p3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICAgJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCc6ICdVbXN0ZWlnZXplaXQnLFxuICAgIH0sXG4gIH0sXG4gIGVuOiB7XG4gICAgdHJhbnNsYXRpb246IHtcbiAgICAgICdhZGQtdmlhLWJ1dHRvbi1sYWJlbCc6ICdBZGQgdmlhIHBvaW50JyxcbiAgICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbCc6XG4gICAgICAgICdTZXQgc3RvcCBkdXJhdGlvbiBhdCB2aWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1jbG9zZSc6XG4gICAgICAgICdDbG9zZSBzdG9wIGR1cmF0aW9uIHNlbGVjdG9yIGF0IHZpYSBwb2ludCB7e2luZGV4fX0nLFxuICAgICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLW9wZW4nOlxuICAgICAgICAnT3BlbiBzdG9wIGR1cmF0aW9uIHNlbGVjdG9yIGF0IHZpYSBwb2ludCB7e2luZGV4fX0nLFxuICAgICAgJ21pbnV0ZS1zaG9ydCc6ICdtaW4nLFxuICAgICAgJ3JlbW92ZS12aWEtYnV0dG9uLWxhYmVsJzogJ1JlbW92ZSB2aWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAgICdzd2FwLW9yZGVyLWJ1dHRvbi1sYWJlbCc6ICdSZXZlcnNlIG9yaWdpbiBhbmQgZGVzdGluYXRpb24nLFxuICAgICAgJ3ZpYS1wb2ludCc6ICdWaWEgcG9pbnQnLFxuICAgICAgJ3ZpYS1wb2ludC1pbmRleCc6ICdWaWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAgICd2aWFwb2ludC1zbGFjay1hbW91bnQnOiAnU3RvcCBkdXJhdGlvbicsXG4gICAgfSxcbiAgfSxcbiAgZmk6IHtcbiAgICB0cmFuc2xhdGlvbjoge1xuICAgICAgJ2FkZC12aWEtYnV0dG9uLWxhYmVsJzogJ0xpc8Okw6QgdsOkbGlwaXN0ZScsXG4gICAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwnOlxuICAgICAgICAnQXNldGEgdsOkbGlwaXN0ZWVsbGUge3tpbmRleH19IHB5c8OkaGR5a3NlbiBrZXN0bycsXG4gICAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtY2xvc2UnOlxuICAgICAgICAnQXZhYSB2w6RsaXBpc3RlZW4ge3tpbmRleH19IHB5c8OkaGR5a3NlbiBrZXN0byB2YWxpdHNpbicsXG4gICAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtb3Blbic6XG4gICAgICAgICdTdWxqZSB2w6RsaXBpc3RlZW4ge3tpbmRleH19IHB5c8OkaGR5a3NlbiBrZXN0byB2YWxpdHNpbicsXG4gICAgICAnbWludXRlLXNob3J0JzogJ21pbicsXG4gICAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnUG9pc3RhIHbDpGxpcGlzdGUge3tpbmRleH19JyxcbiAgICAgICdzd2FwLW9yZGVyLWJ1dHRvbi1sYWJlbCc6ICdLw6TDpG5uw6QgcmVpdGluIHN1dW50YSB2YXN0YWtrYWlzZWtzaScsXG4gICAgICAndmlhLXBvaW50JzogJ1bDpGxpcGlzdGUnLFxuICAgICAgJ3ZpYS1wb2ludC1pbmRleCc6ICdWw6RsaXBpc3RlIHt7aW5kZXh9fScsXG4gICAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JzogJ1B5c8OkaGR5a3NlbiBrZXN0bycsXG4gICAgfSxcbiAgfSxcbiAgcGw6IHtcbiAgICB0cmFuc2xhdGlvbjoge1xuICAgICAgJ2FkZC12aWEtYnV0dG9uLWxhYmVsJzogJ0RvZGFqIHB1bmt0IHBvxZtyZWRuaScsXG4gICAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwnOlxuICAgICAgICAnV3liaWVyeiBjemFzIHBvc3RvanUgZGxhIHB1bmt0dSB7e2luZGV4fX0nLFxuICAgICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLWNsb3NlJzpcbiAgICAgICAgJ1phbWtuaWogd3lib3JuaWsgY3phc3UgcG9zdG9qdSB3IHB1bmtjaWUge3tpbmRleH19JyxcbiAgICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1vcGVuJzpcbiAgICAgICAgJ090d8Ozcnogd3lib3JuaWsgY3phc3UgcG9zdG9qdSB3IHB1bmtjaWUge3tpbmRleH19JyxcbiAgICAgICdtaW51dGUtc2hvcnQnOiAnbWluLicsXG4gICAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnVXN1xYQgcHVua3QgcG/Fm3JlZG5pIHt7aW5kZXh9fScsXG4gICAgICAnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnOiAnT2R3csOzxIcgcG9jesSFdGVrIGkgY2VsJyxcbiAgICAgICd2aWEtcG9pbnQnOiAnUHVua3QgcG/Fm3JlZG5pJyxcbiAgICAgICd2aWEtcG9pbnQtaW5kZXgnOiAnUHVua3QgcG/Fm3JlZG5pIHt7aW5kZXh9fScsXG4gICAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JzogJ0N6YXMgcG9zdG9qdScsXG4gICAgfSxcbiAgfSxcbiAgc3Y6IHtcbiAgICB0cmFuc2xhdGlvbjoge1xuICAgICAgJ2FkZC12aWEtYnV0dG9uLWxhYmVsJzogJ0zDpGdnIHRpbGwgdmlhcHVua3QnLFxuICAgICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsJzpcbiAgICAgICAgJ1N0w6RsbCBpbiB2YXJha3RpZ2hldCBmw7ZyIHZpYXB1bmt0ZW4ge3tpbmRleH19JyxcbiAgICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1jbG9zZSc6XG4gICAgICAgICdTdMOkbmcgdsOkbGphcmVuIGbDtnIgdmFyYWt0aWdoZXQgdmlkIHZpYS1wdW5rdGVuIHt7aW5kZXh9fScsXG4gICAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtb3Blbic6XG4gICAgICAgICfDlnBwbmEgdsOkbGphcmVuIGbDtnIgdmFyYWt0aWdoZXQgdmlkIHZpYS1wdW5rdGVuIHt7aW5kZXh9fScsXG4gICAgICAnbWludXRlLXNob3J0JzogJ21pbicsXG4gICAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnVGEgYm9ydCB2aWFwdW5rdCB7e2luZGV4fX0nLFxuICAgICAgJ3N3YXAtb3JkZXItYnV0dG9uLWxhYmVsJzogJ1N2w6RuZyBydXR0ZW5zIHJpa3RuaW5nIHRpbGwgZGVuIG1vdHNhdHRhJyxcbiAgICAgICd2aWEtcG9pbnQnOiAnVmlhIHB1bmt0JyxcbiAgICAgICd2aWEtcG9pbnQtaW5kZXgnOiAnVmlhIHB1bmt0IHt7aW5kZXh9fScsXG4gICAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JzogJ1N0b3BwZXRzIHZhcmFrdGlnaGV0JyxcbiAgICB9LFxuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRpb25zO1xuIiwiaW1wb3J0IHsgY3JlYXRlSW5zdGFuY2UgfSBmcm9tICdpMThuZXh0JztcbmltcG9ydCB0cmFuc2xhdGlvbnMgZnJvbSAnLi90cmFuc2xhdGlvbnMnO1xuXG5jb25zdCBpMThuID0gY3JlYXRlSW5zdGFuY2Uoe1xuICBmYWxsYmFja0xuZzogJ2ZpJyxcbiAgLy8gZGVidWc6IHRydWUsXG4gIHJlc291cmNlczogdHJhbnNsYXRpb25zLFxuICBkZWZhdWx0TlM6ICd0cmFuc2xhdGlvbicsXG4gIHJlYWN0OiB7XG4gICAgdXNlU3VzcGVuc2U6IHRydWUsXG4gIH0sXG59KTtcblxuaTE4bi5pbml0KCk7XG5cbmV4cG9ydCBkZWZhdWx0IGkxOG47XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSTE4bmV4dFByb3ZpZGVyLCB3aXRoVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmltcG9ydCB7IFJlYWN0U29ydGFibGUgfSBmcm9tICdyZWFjdC1zb3J0YWJsZWpzJztcbmltcG9ydCBEVEF1dG9TdWdnZXN0IGZyb20gJ0BkaWdpdHJhbnNpdC1jb21wb25lbnQvZGlnaXRyYW5zaXQtY29tcG9uZW50LWF1dG9zdWdnZXN0JztcbmltcG9ydCBJY29uLCB7XG4gIGRlZmF1bHRDb2xvcnMsXG59IGZyb20gJ0BkaWdpdHJhbnNpdC1jb21wb25lbnQvZGlnaXRyYW5zaXQtY29tcG9uZW50LWljb24nO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IFNlbGVjdCBmcm9tICcuL2hlbHBlcnMvU2VsZWN0JztcbmltcG9ydCBpMThuIGZyb20gJy4vaGVscGVycy9pMThuJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9oZWxwZXJzL3N0eWxlcy5zY3NzJztcblxuZXhwb3J0IGNvbnN0IGdldEVtcHR5VmlhUG9pbnRQbGFjZUhvbGRlciA9ICgpID0+ICh7fSk7XG5cbmNvbnN0IGlzVmlhUG9pbnRFbXB0eSA9IHZpYVBvaW50ID0+IHtcbiAgaWYgKHZpYVBvaW50ID09PSB1bmRlZmluZWQgfHwgaXNFbXB0eSh2aWFQb2ludCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModmlhUG9pbnQpO1xuICByZXR1cm4gKFxuICAgIGtleXMubGVuZ3RoID09PSAxIHx8IChrZXlzLmxlbmd0aCA9PT0gMiAmJiBrZXlzLmluY2x1ZGVzKCdsb2NhdGlvblNsYWNrJykpXG4gICk7XG59O1xuXG5jb25zdCBJdGluZXJhcnlTZWFyY2hDb250cm9sID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgZW5hYmxlZCxcbiAgb25DbGljayxcbiAgb25LZXlQcmVzcyxcbiAgd2lkZSxcbiAgLi4ucmVzdFxufSkgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2l0aW5lcmFyeS1zZWFyY2gtY29udHJvbCddfVxuICAgIHN0eWxlPXt7ICctLXdpZHRoJzogd2lkZSA/ICc0N3B4JyA6ICc0MHB4JyB9fVxuICA+XG4gICAge29uQ2xpY2sgJiYgZW5hYmxlZCAmJiAoXG4gICAgICA8ZGl2XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgb25LZXlQcmVzcz17b25LZXlQcmVzc31cbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIHRhYkluZGV4PVwiMFwiXG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuICAgICl9XG4gIDwvZGl2PlxuKTtcblxuY29uc3QgdXBkYXRlVmlhUG9pbnRTbGFjayA9IChcbiAgYWN0aXZlVmlhUG9pbnRTbGFja3MsXG4gIHVwZGF0ZWRWaWFQb2ludEluZGV4LFxuICB2aWFQb2ludFJlbW92ZWQgPSBmYWxzZSxcbikgPT4ge1xuICBjb25zdCBmb3VuZEF0SW5kZXggPSBhY3RpdmVWaWFQb2ludFNsYWNrcy5pbmRleE9mKHVwZGF0ZWRWaWFQb2ludEluZGV4KTtcbiAgaWYgKGZvdW5kQXRJbmRleCA+IC0xKSB7XG4gICAgYWN0aXZlVmlhUG9pbnRTbGFja3Muc3BsaWNlKGZvdW5kQXRJbmRleCwgMSk7XG4gIH1cbiAgcmV0dXJuIHZpYVBvaW50UmVtb3ZlZFxuICAgID8gYWN0aXZlVmlhUG9pbnRTbGFja3MubWFwKHZhbHVlID0+XG4gICAgICAgIHZhbHVlID4gdXBkYXRlZFZpYVBvaW50SW5kZXggPyB2YWx1ZSAtIDEgOiB2YWx1ZSxcbiAgICAgIClcbiAgICA6IGFjdGl2ZVZpYVBvaW50U2xhY2tzO1xufTtcblxuY29uc3QgaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50ID0gZXZlbnQgPT4ge1xuICBjb25zdCBzcGFjZSA9IFsxMywgJyAnLCAnU3BhY2ViYXInXTtcbiAgY29uc3QgZW50ZXIgPSBbMzIsICdFbnRlciddO1xuICBjb25zdCBrZXkgPSAoZXZlbnQgJiYgKGV2ZW50LmtleSB8fCBldmVudC53aGljaCB8fCBldmVudC5rZXlDb2RlKSkgfHwgJyc7XG4gIGlmICgha2V5IHx8ICFzcGFjZS5jb25jYXQoZW50ZXIpLmluY2x1ZGVzKGtleSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5jb25zdCB2YWx1ZSA9IGxvY2F0aW9uID0+XG4gIChsb2NhdGlvbiAmJiBsb2NhdGlvbi5hZGRyZXNzKSB8fFxuICAobG9jYXRpb24gJiYgbG9jYXRpb24uZ3BzICYmIGxvY2F0aW9uLnJlYWR5ICYmICdOeWt5aW5lbiBzaWphaW50aScpIHx8XG4gICcnO1xuXG5jb25zdCBnZXRMb2NhdGlvblR5cGUgPSBsb2NhdGlvbiA9PlxuICBsb2NhdGlvbiAmJiBsb2NhdGlvbi5ncHMgPT09IHRydWUgPyAncG9zaXRpb24nIDogJ2xvY2F0aW9uJztcblxuY29uc3QgZ2V0U2xhY2tUaW1lT3B0aW9ucyA9IHQgPT4ge1xuICBjb25zdCB0aW1lT3B0aW9ucyA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8PSA5OyBpKyspIHtcbiAgICBjb25zdCB2YWx1ZUluTWludXRlcyA9IGkgKiAxMDtcbiAgICB0aW1lT3B0aW9ucy5wdXNoKHtcbiAgICAgIGRpc3BsYXlOYW1lOiBgJHt2YWx1ZUluTWludXRlc30gJHt0KCdtaW51dGUtc2hvcnQnKX1gLFxuICAgICAgdmFsdWU6IHZhbHVlSW5NaW51dGVzICogNjAsXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHRpbWVPcHRpb25zO1xufTtcblxuSXRpbmVyYXJ5U2VhcmNoQ29udHJvbC5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGVuYWJsZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uS2V5UHJlc3M6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHdpZGU6IFByb3BUeXBlcy5ib29sLFxufTtcblxuSXRpbmVyYXJ5U2VhcmNoQ29udHJvbC5kZWZhdWx0UHJvcHMgPSB7XG4gIGNoaWxkcmVuOiB1bmRlZmluZWQsXG4gIHdpZGU6IGZhbHNlLFxufTtcblxuLyoqXG4gKiBQYW5lbCB0aGF0IHJlbmRlcnMgdHdvIERUQXV0b3N1Z2dlc3Qgc2VhcmNoIGZpZWxkcywgaW5jbHVkaW5nIHZpYXBvaW50IGhhbmRsaW5nXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHNlYXJjaENvbnRleHQgPSB7XG4gKiAgIGlzUGVsaWFzTG9jYXRpb25Bd2FyZTogZmFsc2UgLy8gdHJ1ZSAvIGZhbHNlIGRvZXMgTGV0IFBlbGlhcyBzdWdnZXN0IGJhc2VkIG9uIGN1cnJlbnQgdXNlciBsb2NhdGlvblxuICogICBtaW5pbWFsUmVnZXhwOiB1bmRlZmluZWQgLy8gdXNlZCBmb3IgdGVzdGluZyBtaW4uIHJlZ2V4cC4gRm9yIGV4YW1wbGU6IG5ldyBSZWdFeHAoJy57Mix9JyksXG4gKiAgIGxpbmVSZWdleHA6IHVuZGVmaW5lZCAvLyAgaWRlbnRpZnkgc2VhcmNoZXMgZm9yIHJvdXRlIG51bWJlcnMvbGFiZWxzOiBidXMgfCB0cmFpbiB8IG1ldHJvLiBGb3IgZXhhbXBsZTogbmV3IFJlZ0V4cChcbiAqICAgIC8vICAgJyheWzAtOV0rW2Etel0/JHxeW3l1bGVhcGlua3J0ZHpdJHwoXm1bMTJdP2I/JCkpJyxcbiAqICAgIC8vICAnaScsXG4gKiAgICAvLyAgKSxcbiAqICAgVVJMX1BFTElBUzogJycgLy8gdXJsIGZvciBwZWxpYXMgc2VhcmNoZXNcbiAqICAgZmVlZElEczogWydIU0wnLCAnSFNMTGF1dHRhJ10gLy8gRmVlZElkJ3MgbGlrZSAgW0hTTCwgSFNMTGF1dHRhXVxuICogICBnZW9jb2RpbmdTb3VyY2VzOiBbJ29hJywnb3NtJywnbmxzZmknXSAgLy8gc291cmNlcyBmb3IgZ2VvY29kaW5nXG4gKiAgIGdlb2NvZGluZ1NlYXJjaFBhcmFtczsge30gIC8vIFNlYXJjaHBhcm1hcyBmcm8gZ2VvY29kaW5nXG4gKiAgIGdldEZhdm91cml0ZUxvY2F0aW9uczogKCkgPT4gKHt9KSwgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGFycmF5IG9mIGZhdm91cml0ZSBsb2NhdGlvbnMuXG4gKiAgIGdldEZhdm91cml0ZVN0b3BzOiAoKSA9PiAoe30pLCAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGFycmF5IG9mIGZhdm91cml0ZSBzdG9wcy5cbiAqICAgZ2V0TGFuZ3VhZ2U6ICgpID0+ICh7fSksICAgICAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgY3VycmVudCBsYW5ndWFnZS5cbiAqICAgZ2V0RmF2b3VyaXRlUm91dGVzOiAoKSA9PiAoe30pLCAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgYXJyYXkgb2YgZmF2b3VyaXRlIHJvdXRlcy5cbiAqICAgZ2V0UG9zaXRpb25zOiAoKSA9PiAoe30pLCAgICAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgdXNlcidzIGdlb2xvY2F0aW9uLlxuICogICBnZXRSb3V0ZXNRdWVyeTogKCkgPT4gKHt9KSwgICAgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBxdWVyeSBmb3IgZmV0Y2hpbmcgcm91dGVzLlxuICogICBnZXRTdG9wQW5kU3RhdGlvbnNRdWVyeTogKCkgPT4gKHt9KSwgIC8vIEZ1bmN0aW9uIHRoYXQgZmV0Y2hlcyBmYXZvdXJpdGUgc3RvcHMgYW5kIHN0YXRpb25zIGZyb20gZ3JhcGhxbCBBUEkuXG4gKiAgIGdldEZhdm91cml0ZVJvdXRlc1F1ZXJ5OiAoKSA9PiAoe30pLCAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIHF1ZXJ5IGZvciBmZXRjaGluZyBmYXZvdXJpdGUgcm91dGVzLlxuICogICBnZXRGYXZvdXJpdGVWZWhpY2xlUmVudGFsU3RhdGlvbnM6ICgpID0+ICh7fSksICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgZmF2b3VyaXRlIGJpa2UgcmVudGFsIHN0YXRpb24uXG4gKiAgIGdldEZhdm91cml0ZVZlaGljbGVSZW50YWxTdGF0aW9uc1F1ZXJ5OiAoKSA9PiAoe30pLCAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgcXVlcnkgZm9yIGZldGNoaW5nIGZhdm91cml0ZSBiaWtlIHJlbnRhbCBzdGF0aW9ucy5cbiAqICAgc3RhcnRMb2NhdGlvbldhdGNoOiAoKSA9PiAoe30pLCAgICAgICAvLyBGdW5jdGlvbiB0aGF0IGxvY2F0ZXMgdXNlcnMgZ2VvbG9jYXRpb24uXG4gKiAgIHNhdmVTZWFyY2g6ICgpID0+ICh7fSksICAgICAgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCBzYXZlcyBzZWFyY2ggdG8gb2xkIHNlYXJjaGVzIHN0b3JlLlxuICogICBjbGVhck9sZFNlYXJjaGVzOiAoKSA9PiAoe30pLCAgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgY2xlYXJzIG9sZCBzZWFyY2hlcyBzdG9yZS5cbiAqICAgZ2V0RnV0dXJlUm91dGVzOiAoKSA9PiAoe30pLCAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybiBmdXR1cmUgcm91dGVzXG4gKiAgIHNhdmVGdXR1cmVSb3V0ZTogKCkgPT4gKHt9KSwgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCBzYXZlcyBhIGZ1dHVyZSByb3V0ZVxuICogICBjbGVhckZ1dHVyZVJvdXRlczogKCkgPT4gKHt9KSwgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgY2xlYXJzIGZ1dHVyZSByb3V0ZXNcbiAqIH07XG4gKlxuICogY29uc3Qgb3JpZ2luID0ge1xuICogIGxhdDogNjAuMTY5MTk2LFxuICogIGxvbjogMjQuOTU3Njc0LFxuICogIGFkZHJlc3M6ICdBbGVrc2FudGVyaW5rYXR1LCBIZWxzaW5raScsXG4gKiAgc2V0OiB0cnVlLFxuICogIHJlYWR5OiB0cnVlLFxuICogfVxuICpcbiAqIGNvbnN0IGRlc3RpbmF0aW9uID0ge1xuICogICBsYXQ6IDYwLjE5OTA5MyxcbiAqICAgbG9uOiAyNC45NDA1MzYsXG4gKiAgIGFkZHJlc3M6ICdPcGFzdGluc2lsdGEgNiwgSGVsc2lua2knLFxuICogICBzZXQ6IHRydWUsXG4gKiAgIHJlYWR5OiB0cnVlLFxuICogfVxuICogb25TZWxlY3QoaXRlbSwgaWQpIHtcbiAqICByZXR1cm4gbnVsbDsgIC8vIERlZmluZSB3aGF0IHRvIGRvIHdoZW4gYSBzdWdnZXN0aW9uIGlzIGJlaW5nIHNlbGVjdGVkLiBOb25lIGJ5IGRlZmF1bHQuXG4gKiAgfVxuICogb25DbGVhcihpZCkge1xuICogIHJldHVybiBudWxsOyAgLy8gRGVmaW5lIHdoYXQgdG8gZG8gd2hlbiBhIHN1Z2dlc3Rpb24gaXMgYmVpbmcgc2VsZWN0ZWQuIE5vbmUgYnkgZGVmYXVsdC5cbiAqIH1cbiAqIGNvbnN0IGdldEF1dG9TdWdnZXN0SWNvbnM6IHtcbiAqICAgLy8gQ2FsbGVkIGZvciBldmVyeSBjaXR5IGJpa2Ugc3RhdGlvbiByZW5kZXJlZCBhcyBhIHNlYXJjaCBzdWdnZXN0aW9uLiBTaG91bGQgcmV0dXJuIHRoZSBpY29uIGFuZFxuICogICAvLyBjb2xvciB1c2VkIGZvciB0aGF0IHN0YXRpb24uIFR3byBpY29ucyBhcmUgYXZhaWxhYmxlLCAnY2l0eWJpa2Utc3RvcC1kaWdpdHJhbnNpdCcgYW5kaXR5YmlrZS1zdG9wLWRpZ2l0cmFuc2l0LXNlY29uZGFyeScuXG4gKiAgIGNpdHliaWtlczogc3RhdGlvbiA9PiB7XG4gKiAgICAgIHJldHVybiBbJ2NpdHliaWtlLXN0b3AtZGlnaXRyYW5zaXQnLCAnI2YyYjYyZCddO1xuICogICB9XG4gKiB9XG4gKiBjb25zdCB0YXJnZXRzID0gWydMb2NhdGlvbnMnLCAnU3RvcHMnLCAnUm91dGVzJ107IC8vIERlZmluZXMgd2hhdCB5b3UgYXJlIHNlYXJjaGluZy4gYWxsIGF2YWlsYWJsZSBvcHRpb25zIGFyZSBMb2NhdGlvbnMsIFN0b3BzLCBSb3V0ZXMsIFZlaGljbGVSZW50YWxTdGF0aW9ucywgRnV0dXJlUm91dGVzLCBNYXBQb3NpdGlvbiBhbmQgQ3VycmVudFBvc2l0aW9uLiBMZWF2ZSBlbXB0eSB0byBzZWFyY2ggYWxsIHRhcmdldHMuXG4gKiBjb25zdCBzb3VyY2VzID0gWydGYXZvdXJpdGUnLCAnSGlzdG9yeScsICdEYXRhc291cmNlJ10gLy8gRGVmaW5lcyB3aGVyZSB5b3UgYXJlIHNlYXJjaGluZy4gYWxsIGF2YWlsYWJsZSBhcmU6IEZhdm91cml0ZSwgSGlzdG9yeSAocHJldmlvdXNseSBzZWFyY2hlZCBzZWFyY2hlcyksIGFuZCBEYXRhc291cmNlLiBMZWF2ZSBlbXB0eSB0byB1c2UgYWxsIHNvdXJjZXMuXG4gKiA8RFRBdXRvc3VnZ2VzdFBhbmVsXG4gKiAgICBhcHBFbGVtZW50PXthcHBFbGVtZW50fSAvLyBSZXF1aXJlZC4gUm9vdCBlbGVtZW50J3MgaWQuIE5lZWRlZCBmb3IgcmVhY3QtbW9kYWwgY29tcG9uZW50LlxuICogICAgb3JpZ2luPXtvcmlnaW59IC8vIFNlbGVjdGVkIG9yaWdpbiBwb2ludFxuICogICAgZGVzdGluYXRpb249e2Rlc3RpbmF0aW9ufSAvLyBTZWxlY3RlZCBkZXN0aW5hdGlvbiBwb2ludFxuICogICAgb3JpZ2luUGxhY2VIb2xkZXI9eydHaXZlIG9yaWdpbid9IC8vIE9wdGlvbmFsIEdpdmUgc3RyaW5nIHNob3duIGluaXRpYWxseSBpbnNpZGUgb3JpZ2luIHNlYXJjaCBmaWVsZFxuICogICAgZGVzdGluYXRpb25QbGFjZUhvbGRlcj17J0dpdmUgZGVzdGluYXRpb24nfSAvLyBPcHRpb25hbCBHaXZlIHN0cmluZyBzaG93biBpbml0YWxseSBpbnNpZGUgZGVzdGluYXRpb24gc2VhcmNoIGZpZWxkXG4gKiAgICBpbml0aWFsVmlhUG9pbnRzPXtbXX0gLy8gT3B0aW9uYWwuICBJZiBzaG93VmlhcG9pbnRDb250cm9sIGlzIHNldCB0byB0cnVlLCBwYXNzIGluaXRpYWwgdmlhIHBvaW50cyB0byB0aGUgcGFuZWwuIEN1cnJlbnRseSBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGdpdmVuLlxuICogICAgdXBkYXRlVmlhUG9pbnRzPXsoKSA9PiByZXR1cm4gW119IC8vIE9wdGlvbmFsLiBJZiBzaG93VmlhcG9pbnRDb250cm9sIGlzIHNldCB0byB0cnVlLCBkZWZpbmUgaG93IHRvIHVwZGF0ZSB5b3VyIHZpYSBwb2ludCBsaXN0IHdpdGggdGhpcyBmdW5jdGlvbi4gQ3VycmVubHR5IG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgZ2l2ZW4uXG4gKiAgICBzd2FwT3JkZXI9eygpID0+IHJldHVybiBudWxsfSAvLyBPcHRpb25hbC4gSWYgc2hvd1N3YXBDb250cm9sIGlzIHNldCB0byB0cnVlLCBkZWZpbmUgaG93IHRvIHN3YXAgb3JkZXIgb2YgeW91ciBwb2ludHMgKG9yaWdpbiwgZGVzdGluYXRpb24sIHZpYXBvaW50cykuIEN1cnJlbnRseSBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGdpdmVuLlxuICogICAgc2VhcmNoQ29udGV4dD17c2VhcmNoQ29udGV4dH1cbiAqICAgIGdldEF1dG9TdWdnZXN0SWNvbnM9e2dldEF1dG9TdWdnZXN0SWNvbnN9XG4gKiAgICBvblNlbGVjdD17dGhpcy5vblNlbGVjdH1cbiAqICAgIG9uQ2xlYXI9e3RoaXMub25DbGVhcn1cbiAqICAgIGxhbmc9XCJmaVwiIC8vIERlZmluZSBsYW5ndWFnZSBmaSBzdiBvciBlbi5cbiAqICAgIGFkZEFuYWx5dGljc0V2ZW50PXtudWxsfSAvLyBPcHRpb25hbC4geW91IGNhbiByZWNvcmQgYW4gYW5hbHl0aWNzIGV2ZW50IGlmIHlvdSB3aXNoLiBpZiBwYXNzZWQsIGNvbXBvbmVudCB3aWxsIHBhc3MgYW4gY2F0ZWdvcnksIGFjdGlvbiwgbmFtZSBwYXJhbWV0ZXJzIHRvIGFkZEFuYWx5dGljc0V2ZW50XG4gKiAgICBkaXNhYmxlQXV0b0ZvY3VzPXtmYWxzZX0gLy8gT3B0aW9uYWwuIHVzZSB0aGlzIHRvIGRpc2FibGUgYXV0b2ZvY3VzIGNvbXBsZXRlbHkgZnJvbSBEVEF1dG9zdWdnZXN0UGFuZWxcbiAqICAgIHNvdXJjZXM9e3NvdXJjZXN9XG4gKiAgICB0YXJnZXRzPXt0YXJnZXRzfVxuICogICAgaXNNb2JpbGUgIC8vIE9wdGlvbmFsLiBEZWZhdWx0cyB0byBmYWxzZS4gV2hldGhlciB0byB1c2UgbW9iaWxlIHNlYXJjaC5cbiAqICAgIG9yaWdpbk1vYmlsZUxhYmVsPVwiT3JpZ2luIGxhYmVsXCIgLy8gT3B0aW9uYWwuIEN1c3RvbSBsYWJlbCB0ZXh0IGZvciBvcmlnaW4gZmllbGQgb24gbW9iaWxlLlxuICogICAgZGVzdGluYXRpb25Nb2JpbGVMYWJlbD1cIkRlc3RpbmF0aW9uIGxhYmVsXCIgLy8gT3B0aW9uYWwuIEN1c3RvbSBsYWJlbCB0ZXh0IGZvciBkZXN0aW5hdGlvbiBmaWVsZCBvbiBtb2JpbGUuXG4gKiAgICBoYW5kbGVGb2N1c0NoYW5nZT17KCkgPT4ge319IC8vIE9wdGlvbmFsLiBJZiBkZWZpbmVkIG92ZXJyaWRlcyBkZWZhdWx0IG9uRm9jdXNDaGFuZ2UgYmVoYXZpb3VyXG4gKiAgICBzaG93U3dhcENvbnRyb2w9e2ZhbHNlfSAvLyBPcHRpb25hbC5cbiAqICAgIHNob3dWaWFwb2ludENvbnRyb2w9e2ZhbHNlfSAvLyBPcHRpb25hbC5cbiAqL1xuXG5jb25zdCBsb2NhdGlvblNoYXBlID0gUHJvcFR5cGVzLnNoYXBlKHtcbiAgYWRkcmVzczogUHJvcFR5cGVzLnN0cmluZyxcbiAgbGF0OiBQcm9wVHlwZXMubnVtYmVyLFxuICBsb246IFByb3BUeXBlcy5udW1iZXIsXG4gIGxvY2F0aW9uU2xhY2s6IFByb3BUeXBlcy5udW1iZXIsXG59KTtcblxuY2xhc3MgRFRBdXRvc3VnZ2VzdFBhbmVsIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBhcHBFbGVtZW50OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgb3JpZ2luOiBsb2NhdGlvblNoYXBlLFxuICAgIGRlc3RpbmF0aW9uOiBsb2NhdGlvblNoYXBlLFxuICAgIG9yaWdpblBsYWNlSG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRlc3RpbmF0aW9uUGxhY2VIb2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdmlhUG9pbnRzOiBQcm9wVHlwZXMuYXJyYXlPZihsb2NhdGlvblNoYXBlKSxcbiAgICB1cGRhdGVWaWFQb2ludHM6IFByb3BUeXBlcy5mdW5jLFxuICAgIGhhbmRsZVZpYVBvaW50TG9jYXRpb25TZWxlY3RlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgc3dhcE9yZGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBzZWFyY2hQYW5lbFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2VhcmNoQ29udGV4dDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIFVSTF9QRUxJQVM6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgfSkuaXNSZXF1aXJlZCxcbiAgICBvblNlbGVjdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvbkNsZWFyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBhZGRBbmFseXRpY3NFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgbGFuZzogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIGRpc2FibGVBdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAgIHNvdXJjZXM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLFxuICAgIHRhcmdldHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLFxuICAgIGZpbHRlclJlc3VsdHM6IFByb3BUeXBlcy5mdW5jLFxuICAgIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBvcmlnaW5Nb2JpbGVMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkZXN0aW5hdGlvbk1vYmlsZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHJlZlBvaW50OiBsb2NhdGlvblNoYXBlLFxuICAgIG1vZGVTZXQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY29sb3JzOiBQcm9wVHlwZXMub2JqZWN0T2YoUHJvcFR5cGVzLnN0cmluZyksXG4gICAgZ2V0QXV0b1N1Z2dlc3RJY29uczogUHJvcFR5cGVzLm9iamVjdE9mKFByb3BUeXBlcy5mdW5jKSxcbiAgICBmb250V2VpZ2h0czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIG1lZGl1bTogUHJvcFR5cGVzLm51bWJlcixcbiAgICB9KSxcbiAgICBzaG93U2Nyb2xsOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBvbkZvY3VzQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBpc0VtYmVkZGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBzaG93U3dhcENvbnRyb2w6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dWaWFwb2ludENvbnRyb2w6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dTbGFja0NvbnRyb2w6IFByb3BUeXBlcy5ib29sLFxuICAgIHQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBvcmlnaW46IHVuZGVmaW5lZCxcbiAgICBkZXN0aW5hdGlvbjogdW5kZWZpbmVkLFxuICAgIHZpYVBvaW50czogW10sXG4gICAgb3JpZ2luUGxhY2VIb2xkZXI6ICdnaXZlLW9yaWdpbicsXG4gICAgZGVzdGluYXRpb25QbGFjZUhvbGRlcjogJ2dpdmUtZGVzdGluYXRpb24nLFxuICAgIHN3YXBPcmRlcjogdW5kZWZpbmVkLFxuICAgIHVwZGF0ZVZpYVBvaW50czogKCkgPT4ge30sXG4gICAgc2VhcmNoUGFuZWxUZXh0OiB1bmRlZmluZWQsXG4gICAgc291cmNlczogW10sXG4gICAgdGFyZ2V0czogW10sXG4gICAgZmlsdGVyUmVzdWx0czogdW5kZWZpbmVkLFxuICAgIG9uQ2xlYXI6IHVuZGVmaW5lZCxcbiAgICBnZXRBdXRvU3VnZ2VzdEljb25zOiB1bmRlZmluZWQsXG4gICAgcmVmUG9pbnQ6IHVuZGVmaW5lZCxcbiAgICBhZGRBbmFseXRpY3NFdmVudDogdW5kZWZpbmVkLFxuICAgIGRpc2FibGVBdXRvRm9jdXM6IGZhbHNlLFxuICAgIGlzTW9iaWxlOiBmYWxzZSxcbiAgICBoYW5kbGVWaWFQb2ludExvY2F0aW9uU2VsZWN0ZWQ6IHVuZGVmaW5lZCxcbiAgICBvcmlnaW5Nb2JpbGVMYWJlbDogbnVsbCxcbiAgICBkZXN0aW5hdGlvbk1vYmlsZUxhYmVsOiBudWxsLFxuICAgIG1vZGVTZXQ6IHVuZGVmaW5lZCxcbiAgICBjb2xvcnM6IGRlZmF1bHRDb2xvcnMsXG4gICAgZm9udFdlaWdodHM6IHtcbiAgICAgIG1lZGl1bTogNTAwLFxuICAgIH0sXG4gICAgc2hvd1Njcm9sbDogZmFsc2UsXG4gICAgb25Gb2N1c0NoYW5nZTogdW5kZWZpbmVkLFxuICAgIGlzRW1iZWRkZWQ6IGZhbHNlLFxuICAgIHNob3dTd2FwQ29udHJvbDogZmFsc2UsXG4gICAgc2hvd1ZpYXBvaW50Q29udHJvbDogZmFsc2UsXG4gICAgc2hvd1NsYWNrQ29udHJvbDogZmFsc2UsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGFjdGl2ZVNsYWNrSW5wdXRzOiBbXSxcbiAgICAgIHJlZnM6IFtdLFxuICAgIH07XG4gIH1cblxuICBzdG9yZVJlZmVyZW5jZSA9IHJlZiA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZShwcmV2U3RhdGUgPT4gKHsgcmVmczogWy4uLnByZXZTdGF0ZS5yZWZzLCByZWZdIH0pKTtcbiAgfTtcblxuICBoYW5kbGVGb2N1c0NoYW5nZSA9ICgpID0+IHtcbiAgICBjb25zdCB7IGRlc3RpbmF0aW9uIH0gPSB0aGlzLnByb3BzO1xuICAgIGlmICghZGVzdGluYXRpb24gfHwgIWRlc3RpbmF0aW9uLmxhdCkge1xuICAgICAgdGhpcy5zdGF0ZS5yZWZzWzFdLmZvY3VzKCk7XG4gICAgfVxuICB9O1xuXG4gIHVwZGF0ZVZpYVBvaW50cyA9IHZpYVBvaW50cyA9PiB7XG4gICAgaWYgKHZpYVBvaW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMucHJvcHMudXBkYXRlVmlhUG9pbnRzKFtdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wcm9wcy51cGRhdGVWaWFQb2ludHModmlhUG9pbnRzLmZpbHRlcih2cCA9PiAhaXNWaWFQb2ludEVtcHR5KHZwKSkpO1xuICB9O1xuXG4gIGhhbmRsZVRvZ2dsZVZpYVBvaW50U2xhY2tDbGljayA9IHZpYVBvaW50SW5kZXggPT4ge1xuICAgIGNvbnN0IHsgYWN0aXZlU2xhY2tJbnB1dHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBhY3RpdmVTbGFja0lucHV0czogYWN0aXZlU2xhY2tJbnB1dHMuaW5jbHVkZXModmlhUG9pbnRJbmRleClcbiAgICAgICAgPyB1cGRhdGVWaWFQb2ludFNsYWNrKGFjdGl2ZVNsYWNrSW5wdXRzLCB2aWFQb2ludEluZGV4KVxuICAgICAgICA6IGFjdGl2ZVNsYWNrSW5wdXRzLmNvbmNhdChbdmlhUG9pbnRJbmRleF0pLFxuICAgIH0pO1xuICB9O1xuXG4gIGhhbmRsZVZpYVBvaW50U2xhY2tUaW1lU2VsZWN0ZWQgPSAoc2xhY2tUaW1lSW5TZWNvbmRzLCBpKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdFZGl0VmlhUG9pbnRTdG9wRHVyYXRpb24nLFxuICAgICAgICBjYXRlZ29yeTogJ0l0aW5lcmFyeVNldHRpbmdzJyxcbiAgICAgICAgbmFtZTogc2xhY2tUaW1lSW5TZWNvbmRzIC8gNjAsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgeyB2aWFQb2ludHMgfSA9IHRoaXMucHJvcHM7XG4gICAgdmlhUG9pbnRzW2ldLmxvY2F0aW9uU2xhY2sgPSBOdW1iZXIucGFyc2VJbnQoc2xhY2tUaW1lSW5TZWNvbmRzLCAxMCk7XG4gICAgdGhpcy51cGRhdGVWaWFQb2ludHModmlhUG9pbnRzKTtcbiAgfTtcblxuICBoYW5kbGVWaWFQb2ludExvY2F0aW9uU2VsZWN0ZWQgPSAodmlhUG9pbnRMb2NhdGlvbiwgaSkgPT4ge1xuICAgIHRoaXMucHJvcHMuaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkKHZpYVBvaW50TG9jYXRpb24sIGkpO1xuICB9O1xuXG4gIGhhbmRsZVJlbW92ZVZpYVBvaW50Q2xpY2sgPSB2aWFQb2ludEluZGV4ID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCkge1xuICAgICAgdGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCh7XG4gICAgICAgIGFjdGlvbjogJ1JlbW92ZUpvdXJuZXlWaWFQb2ludCcsXG4gICAgICAgIGNhdGVnb3J5OiAnSXRpbmVyYXJ5U2V0dGluZ3MnLFxuICAgICAgICBuYW1lOiBudWxsLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHsgYWN0aXZlU2xhY2tJbnB1dHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgeyB2aWFQb2ludHMgfSA9IHRoaXMucHJvcHM7XG4gICAgdmlhUG9pbnRzLnNwbGljZSh2aWFQb2ludEluZGV4LCAxKTtcbiAgICB0aGlzLnNldFN0YXRlKFxuICAgICAge1xuICAgICAgICBhY3RpdmVTbGFja0lucHV0czogdXBkYXRlVmlhUG9pbnRTbGFjayhcbiAgICAgICAgICBhY3RpdmVTbGFja0lucHV0cyxcbiAgICAgICAgICB2aWFQb2ludEluZGV4LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgKCkgPT4gdGhpcy51cGRhdGVWaWFQb2ludHModmlhUG9pbnRzKSxcbiAgICApO1xuICB9O1xuXG4gIGhhbmRsZUFkZFZpYVBvaW50Q2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdBZGRKb3VybmV5VmlhUG9pbnQnLFxuICAgICAgICBjYXRlZ29yeTogJ0l0aW5lcmFyeVNldHRpbmdzJyxcbiAgICAgICAgbmFtZTogJ1F1aWNrU2V0dGluZ3NCdXR0b24nLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHsgdmlhUG9pbnRzIH0gPSB0aGlzLnByb3BzO1xuICAgIHZpYVBvaW50cy5wdXNoKGdldEVtcHR5VmlhUG9pbnRQbGFjZUhvbGRlcigpKTtcbiAgICAvLyBXZSBuZWVkIHRvIHVwZGF0ZSB0aGUgc3RhdGUgc28gdGhhdCBwbGFjZUhvbGRlciB3aWxsIHNob3cgdXAgaW4gcGFuZWwuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFjY2Vzcy1zdGF0ZS1pbi1zZXRzdGF0ZVxuICAgIHRoaXMuc2V0U3RhdGUodGhpcy5zdGF0ZSk7XG4gIH07XG5cbiAgaGFuZGxlU3dhcE9yZGVyQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdTd2l0Y2hKb3VybmV5U3RhcnRBbmRFbmRQb2ludE9yZGVyJyxcbiAgICAgICAgY2F0ZWdvcnk6ICdJdGluZXJhcnlTZXR0aW5ncycsXG4gICAgICAgIG5hbWU6IG51bGwsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgeyB2aWFQb2ludHMgfSA9IHRoaXMucHJvcHM7XG4gICAgdmlhUG9pbnRzLnJldmVyc2UoKTtcbiAgICB0aGlzLnByb3BzLnN3YXBPcmRlcigpO1xuICB9O1xuXG4gIGdldFNsYWNrRGlzcGxheSA9IHNsYWNrSW5TZWNvbmRzID0+XG4gICAgYCR7c2xhY2tJblNlY29uZHMgLyA2MH0gJHt0aGlzLnByb3BzLnQoJ21pbnV0ZS1zaG9ydCcsIHtcbiAgICAgIGxuZzogdGhpcy5wcm9wcy5sYW5nLFxuICAgIH0pfWA7XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIG9yaWdpbixcbiAgICAgIHNlYXJjaFBhbmVsVGV4dCxcbiAgICAgIHNlYXJjaENvbnRleHQsXG4gICAgICBkaXNhYmxlQXV0b0ZvY3VzLFxuICAgICAgdmlhUG9pbnRzLFxuICAgICAgb3JpZ2luTW9iaWxlTGFiZWwsXG4gICAgICBkZXN0aW5hdGlvbk1vYmlsZUxhYmVsLFxuICAgICAgZm9udFdlaWdodHMsXG4gICAgICBvbkZvY3VzQ2hhbmdlLFxuICAgICAgc2hvd1N3YXBDb250cm9sLFxuICAgICAgc2hvd1ZpYXBvaW50Q29udHJvbCxcbiAgICAgIHQsXG4gICAgICBsYW5nOiBsbmcsXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBwcmltYXJ5IH0gPSB0aGlzLnByb3BzLmNvbG9ycztcbiAgICBjb25zdCB7IGFjdGl2ZVNsYWNrSW5wdXRzIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHNsYWNrVGltZSA9IGdldFNsYWNrVGltZU9wdGlvbnModCk7XG4gICAgY29uc3QgZGVmYXVsdFNsYWNrVGltZVZhbHVlID0gMDtcbiAgICBjb25zdCBnZXRWaWFQb2ludFNsYWNrVGltZU9yRGVmYXVsdCA9IChcbiAgICAgIHZpYVBvaW50LFxuICAgICAgZGVmYXVsdFZhbHVlID0gZGVmYXVsdFNsYWNrVGltZVZhbHVlLFxuICAgICkgPT4gKHZpYVBvaW50ICYmIHZpYVBvaW50LmxvY2F0aW9uU2xhY2spIHx8IGRlZmF1bHRWYWx1ZTtcbiAgICBjb25zdCBpc1ZpYVBvaW50U2xhY2tUaW1lSW5wdXRBY3RpdmUgPSBpbmRleCA9PlxuICAgICAgYWN0aXZlU2xhY2tJbnB1dHMuaW5jbHVkZXMoaW5kZXgpO1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y3goW1xuICAgICAgICAgIHN0eWxlc1snYXV0b3N1Z2dlc3QtcGFuZWwnXSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzbWFsbDogdGhpcy5wcm9wcy5pc01vYmlsZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKX1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAnLS1jb2xvcic6IHByaW1hcnksXG4gICAgICAgICAgJy0tZm9udC13ZWlnaHQtbWVkaXVtJzogZm9udFdlaWdodHMubWVkaXVtLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7JyAnfVxuICAgICAgICB7c2VhcmNoUGFuZWxUZXh0ID8gKFxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aDEgY2xhc3NOYW1lPXtzdHlsZXNbJ2F1dG9zdWdnZXN0LXNlYXJjaHBhbmVsLXRleHQnXX0+XG4gICAgICAgICAgICAgIHsnICd9XG4gICAgICAgICAgICAgIHtzZWFyY2hQYW5lbFRleHR9XG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snb3JpZ2luLWlucHV0LWNvbnRhaW5lciddfT5cbiAgICAgICAgICA8RFRBdXRvU3VnZ2VzdFxuICAgICAgICAgICAgYXBwRWxlbWVudD17dGhpcy5wcm9wcy5hcHBFbGVtZW50fVxuICAgICAgICAgICAgaWNvbj1cIm1hcE1hcmtlclwiXG4gICAgICAgICAgICBpZD1cIm9yaWdpblwiXG4gICAgICAgICAgICBhdXRvRm9jdXM9e1xuICAgICAgICAgICAgICBkaXNhYmxlQXV0b0ZvY3VzID09PSB0cnVlXG4gICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgIDogIXRoaXMucHJvcHMuaXNNb2JpbGUgJiYgIW9yaWdpbi5sYXRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0b3JlUmVmPXt0aGlzLnN0b3JlUmVmZXJlbmNlfVxuICAgICAgICAgICAgcmVmUG9pbnQ9e3RoaXMucHJvcHMucmVmUG9pbnR9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2dldExvY2F0aW9uVHlwZShvcmlnaW4pfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3RoaXMucHJvcHMub3JpZ2luUGxhY2VIb2xkZXJ9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWUob3JpZ2luKX1cbiAgICAgICAgICAgIHNlYXJjaENvbnRleHQ9e3NlYXJjaENvbnRleHR9XG4gICAgICAgICAgICBnZXRBdXRvU3VnZ2VzdEljb25zPXt0aGlzLnByb3BzLmdldEF1dG9TdWdnZXN0SWNvbnN9XG4gICAgICAgICAgICBvblNlbGVjdD17dGhpcy5wcm9wcy5vblNlbGVjdH1cbiAgICAgICAgICAgIG9uQ2xlYXI9e3RoaXMucHJvcHMub25DbGVhcn1cbiAgICAgICAgICAgIGZvY3VzQ2hhbmdlPXtvbkZvY3VzQ2hhbmdlIHx8IHRoaXMuaGFuZGxlRm9jdXNDaGFuZ2V9XG4gICAgICAgICAgICBsYW5nPXt0aGlzLnByb3BzLmxhbmd9XG4gICAgICAgICAgICBzb3VyY2VzPXt0aGlzLnByb3BzLnNvdXJjZXN9XG4gICAgICAgICAgICB0YXJnZXRzPXt0aGlzLnByb3BzLnRhcmdldHN9XG4gICAgICAgICAgICBmaWx0ZXJSZXN1bHRzPXt0aGlzLnByb3BzLmZpbHRlclJlc3VsdHN9XG4gICAgICAgICAgICBpc01vYmlsZT17dGhpcy5wcm9wcy5pc01vYmlsZX1cbiAgICAgICAgICAgIGNvbG9ycz17dGhpcy5wcm9wcy5jb2xvcnN9XG4gICAgICAgICAgICBtb2JpbGVMYWJlbD17b3JpZ2luTW9iaWxlTGFiZWx9XG4gICAgICAgICAgICBmb250V2VpZ2h0cz17dGhpcy5wcm9wcy5mb250V2VpZ2h0c31cbiAgICAgICAgICAgIG1vZGVTZXQ9e3RoaXMucHJvcHMubW9kZVNldH1cbiAgICAgICAgICAgIHNob3dTY3JvbGw9e3RoaXMucHJvcHMuc2hvd1Njcm9sbH1cbiAgICAgICAgICAgIGlzRW1iZWRkZWQ9e3RoaXMucHJvcHMuaXNFbWJlZGRlZH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHsoc2hvd1N3YXBDb250cm9sIHx8IHNob3dWaWFwb2ludENvbnRyb2wpICYmIChcbiAgICAgICAgICAgIDxJdGluZXJhcnlTZWFyY2hDb250cm9sXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9wcG9zaXRlfVxuICAgICAgICAgICAgICBlbmFibGVkPXtzaG93U3dhcENvbnRyb2x9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMuaGFuZGxlU3dhcE9yZGVyQ2xpY2soKX1cbiAgICAgICAgICAgICAgb25LZXlQcmVzcz17ZSA9PlxuICAgICAgICAgICAgICAgIGlzS2V5Ym9hcmRTZWxlY3Rpb25FdmVudChlKSAmJiB0aGlzLmhhbmRsZVN3YXBPcmRlckNsaWNrKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdzd2FwLW9yZGVyLWJ1dHRvbi1sYWJlbCcsIHsgbG5nIH0pfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJvcHBvc2l0ZVwiIGNvbG9yPXtwcmltYXJ5fSAvPlxuICAgICAgICAgICAgPC9JdGluZXJhcnlTZWFyY2hDb250cm9sPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7dmlhUG9pbnRzLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1sncmVjdGFuZ2xlLWNvbnRhaW5lciddfT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMucmVjdGFuZ2xlfSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgICA8UmVhY3RTb3J0YWJsZVxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWyd2aWFwb2ludHMtY29udGFpbmVyJ119XG4gICAgICAgICAgbGlzdD17dmlhUG9pbnRzfVxuICAgICAgICAgIGhhbmRsZT17YC4ke3N0eWxlc1sndmlhcG9pbnQtYmVmb3JlJ119YH1cbiAgICAgICAgICBhbmltYXRpb249ezIwMH1cbiAgICAgICAgICBkaXNhYmxlZD17dmlhUG9pbnRzLmxlbmd0aCA8PSAxfVxuICAgICAgICAgIHNldExpc3Q9e2l0ZW1zID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZpYVBvaW50cyA9IGl0ZW1zLmZpbHRlcih2cCA9PiAhaXNWaWFQb2ludEVtcHR5KHZwKSk7XG4gICAgICAgICAgICBpZiAobmV3VmlhUG9pbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcy51cGRhdGVWaWFQb2ludHMobmV3VmlhUG9pbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge3ZpYVBvaW50cy5tYXAoKG8sIGkpID0+IChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeChzdHlsZXNbJ3ZpYXBvaW50LWNvbnRhaW5lciddKX1cbiAgICAgICAgICAgICAga2V5PXtgdmlhcG9pbnQtJHtpfWB9IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snbGlnaHQtZ3JheS1iYWNrZ3JvdW5kJ119PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMucm93fT5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3ZpYXBvaW50LWJlZm9yZSddfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17dmlhUG9pbnRzLmxlbmd0aCA+IDEgPyB7IGN1cnNvcjogJ21vdmUnIH0gOiB7fX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3ZpYVBvaW50cy5sZW5ndGggPiAxICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJlbGxpcHNpc1wiIHJvdGF0ZT17OTB9IGNvbG9yPXtwcmltYXJ5fSAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgICAgICAgICAgICAgYCR7c3R5bGVzWyd2aWFwb2ludC1pbnB1dC1jb250YWluZXInXX0gJHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlc1tgdmlhcG9pbnQtJHtpICsgMX1gXVxuICAgICAgICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RFRBdXRvU3VnZ2VzdFxuICAgICAgICAgICAgICAgICAgICAgIGFwcEVsZW1lbnQ9e3RoaXMucHJvcHMuYXBwRWxlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVwibWFwTWFya2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cInZpYS1wb2ludFwiXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYUxhYmVsPXt0KCd2aWEtcG9pbnQtaW5kZXgnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSArIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBsbmcsXG4gICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzPXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVBdXRvRm9jdXMgPT09IHRydWUgPyBmYWxzZSA6ICF0aGlzLnByb3BzLmlzTW9iaWxlXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwidmlhLXBvaW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ2aWFwb2ludFwiXG4gICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQ29udGV4dD17c2VhcmNoQ29udGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICByZWZQb2ludD17dGhpcy5wcm9wcy5yZWZQb2ludH1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17KG8gJiYgby5hZGRyZXNzKSB8fCAnJ31cbiAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy5wcm9wcy5vblNlbGVjdH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsZWFyPXt0aGlzLnByb3BzLm9uQ2xlYXJ9XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlVmlhUG9pbnRzPXtpdGVtID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVZpYVBvaW50TG9jYXRpb25TZWxlY3RlZChpdGVtLCBpKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBsYW5nPXt0aGlzLnByb3BzLmxhbmd9XG4gICAgICAgICAgICAgICAgICAgICAgc291cmNlcz17dGhpcy5wcm9wcy5zb3VyY2VzfVxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHM9e1snU3RvcHMnLCAnU3RhdGlvbnMnXX1cbiAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJSZXN1bHRzPXt0aGlzLnByb3BzLmZpbHRlclJlc3VsdHN9XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0QXV0b1N1Z2dlc3RJY29ucz17dGhpcy5wcm9wcy5nZXRBdXRvU3VnZ2VzdEljb25zfVxuICAgICAgICAgICAgICAgICAgICAgIGlzTW9iaWxlPXt0aGlzLnByb3BzLmlzTW9iaWxlfVxuICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHRzPXt0aGlzLnByb3BzLmZvbnRXZWlnaHRzfVxuICAgICAgICAgICAgICAgICAgICAgIG1vZGVTZXQ9e3RoaXMucHJvcHMubW9kZVNldH1cbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcnM9e3RoaXMucHJvcHMuY29sb3JzfVxuICAgICAgICAgICAgICAgICAgICAgIHNob3dTY3JvbGw9e3RoaXMucHJvcHMuc2hvd1Njcm9sbH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuc2hvd1NsYWNrQ29udHJvbCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxJdGluZXJhcnlTZWFyY2hDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2FkZC12aWEtcG9pbnQtc2xhY2snXX1cbiAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkPXt0aGlzLnByb3BzLnNob3dWaWFwb2ludENvbnRyb2x9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5oYW5kbGVUb2dnbGVWaWFQb2ludFNsYWNrQ2xpY2soaSl9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlQcmVzcz17ZSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50KGUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVRvZ2dsZVZpYVBvaW50U2xhY2tDbGljayhpKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNWaWFQb2ludFNsYWNrVGltZUlucHV0QWN0aXZlKGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLW9wZW4nXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLWNsb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaW5kZXg6IGkgKyAxLCBsbmcgfSxcbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIHdpZGVcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGltZz1cInRpbWVcIiBjb2xvcj17cHJpbWFyeX0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JdGluZXJhcnlTZWFyY2hDb250cm9sPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB7IWlzVmlhUG9pbnRTbGFja1RpbWVJbnB1dEFjdGl2ZShpKSAmJlxuICAgICAgICAgICAgICAgICAgdmlhUG9pbnRzW2ldICYmXG4gICAgICAgICAgICAgICAgICB2aWFQb2ludHNbaV0ubG9jYXRpb25TbGFjayA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1sndmlhcG9pbnQtc2xhY2stdGltZSddfT57YCR7dChcbiAgICAgICAgICAgICAgICAgICAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JyxcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsbmcsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgKX06ICR7dGhpcy5nZXRTbGFja0Rpc3BsYXkoXG4gICAgICAgICAgICAgICAgICAgICAgdmlhUG9pbnRzW2ldLmxvY2F0aW9uU2xhY2ssXG4gICAgICAgICAgICAgICAgICAgICl9YH08L3NwYW4+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goc3R5bGVzWydpbnB1dC12aWFwb2ludC1zbGFjay1jb250YWluZXInXSwge1xuICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6ICFpc1ZpYVBvaW50U2xhY2tUaW1lSW5wdXRBY3RpdmUoaSksXG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydzZWxlY3Qtd3JhcHBlciddfT5cbiAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgIGlkPXtgdmlhcG9pbnQtc2xhY2stJHtpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e3QoJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCcsIHsgbG5nIH0pfVxuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e3NsYWNrVGltZX1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Z2V0VmlhUG9pbnRTbGFja1RpbWVPckRlZmF1bHQodmlhUG9pbnRzW2ldKX1cbiAgICAgICAgICAgICAgICAgICAgICB2aWFQb2ludEluZGV4PXtpfVxuICAgICAgICAgICAgICAgICAgICAgIGljb249e1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ2NvbWJvYm94LWljb24nXX0gJHtzdHlsZXNbJ3RpbWUtaW5wdXQtaWNvbiddfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGltZz1cInRpbWVcIiBjb2xvcj17cHJpbWFyeX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgb25TbGFja1RpbWVTZWxlY3RlZD17dGhpcy5oYW5kbGVWaWFQb2ludFNsYWNrVGltZVNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8SXRpbmVyYXJ5U2VhcmNoQ29udHJvbFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydyZW1vdmUtdmlhLXBvaW50J119XG4gICAgICAgICAgICAgICAgZW5hYmxlZD17dGhpcy5wcm9wcy5zaG93VmlhcG9pbnRDb250cm9sfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMuaGFuZGxlUmVtb3ZlVmlhUG9pbnRDbGljayhpKX1cbiAgICAgICAgICAgICAgICBvbktleVByZXNzPXtlID0+XG4gICAgICAgICAgICAgICAgICBpc0tleWJvYXJkU2VsZWN0aW9uRXZlbnQoZSkgJiZcbiAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUmVtb3ZlVmlhUG9pbnRDbGljayhpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdyZW1vdmUtdmlhLWJ1dHRvbi1sYWJlbCcsIHtcbiAgICAgICAgICAgICAgICAgIGluZGV4OiBpICsgMSxcbiAgICAgICAgICAgICAgICAgIGxuZyxcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxJY29uIGltZz1cInRyYXNoXCIgY29sb3I9e3ByaW1hcnl9IC8+XG4gICAgICAgICAgICAgIDwvSXRpbmVyYXJ5U2VhcmNoQ29udHJvbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1JlYWN0U29ydGFibGU+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2Rlc3RpbmF0aW9uLWlucHV0LWNvbnRhaW5lciddfT5cbiAgICAgICAgICA8RFRBdXRvU3VnZ2VzdFxuICAgICAgICAgICAgYXBwRWxlbWVudD17dGhpcy5wcm9wcy5hcHBFbGVtZW50fVxuICAgICAgICAgICAgaWNvbj1cIm1hcE1hcmtlclwiXG4gICAgICAgICAgICBpZD1cImRlc3RpbmF0aW9uXCJcbiAgICAgICAgICAgIGF1dG9Gb2N1cz17XG4gICAgICAgICAgICAgIGRpc2FibGVBdXRvRm9jdXMgPT09IHRydWVcbiAgICAgICAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgICAgICAgOiAhdGhpcy5wcm9wcy5pc01vYmlsZSAmJiAhTnVtYmVyLmlzTmFOKG9yaWdpbi5sYXQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdG9yZVJlZj17dGhpcy5zdG9yZVJlZmVyZW5jZX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0aGlzLnByb3BzLmRlc3RpbmF0aW9uUGxhY2VIb2xkZXJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2dldExvY2F0aW9uVHlwZSh0aGlzLnByb3BzLmRlc3RpbmF0aW9uKX1cbiAgICAgICAgICAgIGdldEF1dG9TdWdnZXN0SWNvbnM9e3RoaXMucHJvcHMuZ2V0QXV0b1N1Z2dlc3RJY29uc31cbiAgICAgICAgICAgIHNlYXJjaENvbnRleHQ9e3NlYXJjaENvbnRleHR9XG4gICAgICAgICAgICBvblNlbGVjdD17dGhpcy5wcm9wcy5vblNlbGVjdH1cbiAgICAgICAgICAgIG9uQ2xlYXI9e3RoaXMucHJvcHMub25DbGVhcn1cbiAgICAgICAgICAgIHJlZlBvaW50PXt0aGlzLnByb3BzLnJlZlBvaW50fVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlKHRoaXMucHJvcHMuZGVzdGluYXRpb24pfVxuICAgICAgICAgICAgbGFuZz17dGhpcy5wcm9wcy5sYW5nfVxuICAgICAgICAgICAgc291cmNlcz17dGhpcy5wcm9wcy5zb3VyY2VzfVxuICAgICAgICAgICAgdGFyZ2V0cz17dGhpcy5wcm9wcy50YXJnZXRzfVxuICAgICAgICAgICAgZmlsdGVyUmVzdWx0cz17dGhpcy5wcm9wcy5maWx0ZXJSZXN1bHRzfVxuICAgICAgICAgICAgaXNNb2JpbGU9e3RoaXMucHJvcHMuaXNNb2JpbGV9XG4gICAgICAgICAgICBtb2JpbGVMYWJlbD17ZGVzdGluYXRpb25Nb2JpbGVMYWJlbH1cbiAgICAgICAgICAgIGZvbnRXZWlnaHRzPXt0aGlzLnByb3BzLmZvbnRXZWlnaHRzfVxuICAgICAgICAgICAgbW9kZVNldD17dGhpcy5wcm9wcy5tb2RlU2V0fVxuICAgICAgICAgICAgY29sb3JzPXt0aGlzLnByb3BzLmNvbG9yc31cbiAgICAgICAgICAgIHNob3dTY3JvbGw9e3RoaXMucHJvcHMuc2hvd1Njcm9sbH1cbiAgICAgICAgICAgIGlzRW1iZWRkZWQ9e3RoaXMucHJvcHMuaXNFbWJlZGRlZH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHsoc2hvd1N3YXBDb250cm9sIHx8IHNob3dWaWFwb2ludENvbnRyb2wpICYmIChcbiAgICAgICAgICAgIDxJdGluZXJhcnlTZWFyY2hDb250cm9sXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goc3R5bGVzWydhZGQtdmlhLXBvaW50J10sIHN0eWxlcy5tb3JlLCB7XG4gICAgICAgICAgICAgICAgY29sbGFwc2VkOiB2aWFQb2ludHMubGVuZ3RoID4gNCxcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIGVuYWJsZWQ9e3Nob3dWaWFwb2ludENvbnRyb2wgJiYgdmlhUG9pbnRzLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5oYW5kbGVBZGRWaWFQb2ludENsaWNrKCl9XG4gICAgICAgICAgICAgIG9uS2V5UHJlc3M9e2UgPT5cbiAgICAgICAgICAgICAgICBpc0tleWJvYXJkU2VsZWN0aW9uRXZlbnQoZSkgJiYgdGhpcy5oYW5kbGVBZGRWaWFQb2ludENsaWNrKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdhZGQtdmlhLWJ1dHRvbi1sYWJlbCcsIHsgbG5nIH0pfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8SWNvblxuICAgICAgICAgICAgICAgIGltZz1cInZpYXBvaW50XCJcbiAgICAgICAgICAgICAgICB3aWR0aD17MS4yNX1cbiAgICAgICAgICAgICAgICBoZWlnaHQ9ezEuMzc1fVxuICAgICAgICAgICAgICAgIGNvbG9yPXtwcmltYXJ5fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9JdGluZXJhcnlTZWFyY2hDb250cm9sPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBEVEF1dG9zdWdnZXN0UGFuZWxXaXRoVHJhbnNsYXRpb24gPSB3aXRoVHJhbnNsYXRpb24oKShEVEF1dG9zdWdnZXN0UGFuZWwpO1xuXG5leHBvcnQgZGVmYXVsdCBwcm9wcyA9PiB7XG4gIHJldHVybiAoXG4gICAgPEkxOG5leHRQcm92aWRlciBpMThuPXtpMThufT5cbiAgICAgIDxEVEF1dG9zdWdnZXN0UGFuZWxXaXRoVHJhbnNsYXRpb24gey4uLnByb3BzfSAvPlxuICAgIDwvSTE4bmV4dFByb3ZpZGVyPlxuICApO1xufTtcbiIsImltcG9ydCBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCIuL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanNcIjtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhlLCB0KSB7XG4gIGlmIChudWxsID09IGUpIHJldHVybiB7fTtcbiAgdmFyIG8sXG4gICAgcixcbiAgICBpID0gb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShlLCB0KTtcbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgbiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7XG4gICAgZm9yIChyID0gMDsgciA8IG4ubGVuZ3RoOyByKyspIG8gPSBuW3JdLCAtMSA9PT0gdC5pbmRleE9mKG8pICYmIHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSwgbykgJiYgKGlbb10gPSBlW29dKTtcbiAgfVxuICByZXR1cm4gaTtcbn1cbmV4cG9ydCB7IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UociwgZSkge1xuICBpZiAobnVsbCA9PSByKSByZXR1cm4ge307XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIG4gaW4gcikgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwociwgbikpIHtcbiAgICBpZiAoLTEgIT09IGUuaW5kZXhPZihuKSkgY29udGludWU7XG4gICAgdFtuXSA9IHJbbl07XG4gIH1cbiAgcmV0dXJuIHQ7XG59XG5leHBvcnQgeyBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBhcyBkZWZhdWx0IH07Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsInRvUHJvcGVydHlLZXkiLCJ0IiwiaSIsInIiLCJlIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiX2RlZmluZVByb3BlcnR5IiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsInN0eWxlSW5qZWN0IiwiY3NzIiwicmVmIiwiaW5zZXJ0QXQiLCJkb2N1bWVudCIsImhlYWQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInN0eWxlIiwiY3JlYXRlRWxlbWVudCIsInR5cGUiLCJmaXJzdENoaWxkIiwiaW5zZXJ0QmVmb3JlIiwiYXBwZW5kQ2hpbGQiLCJzdHlsZVNoZWV0IiwiY3NzVGV4dCIsImNyZWF0ZVRleHROb2RlIiwiU2VsZWN0Iiwib3B0aW9ucyIsIm9uU2xhY2tUaW1lU2VsZWN0ZWQiLCJ2aWFQb2ludEluZGV4IiwiaWQiLCJsYWJlbCIsImljb24iLCJsYWJlbElkIiwic2VsZWN0ZWRJdGVtIiwiZmluZCIsIm9wdGlvbiIsImlzT3BlbiIsImdldFRvZ2dsZUJ1dHRvblByb3BzIiwiZ2V0TWVudVByb3BzIiwiZ2V0SXRlbVByb3BzIiwiZ2V0TGFiZWxQcm9wcyIsImhpZ2hsaWdodGVkSW5kZXgiLCJ1c2VTZWxlY3QiLCJpdGVtcyIsIml0ZW1Ub1N0cmluZyIsIml0ZW0iLCJkaXNwbGF5TmFtZSIsIm9uU2VsZWN0ZWRJdGVtQ2hhbmdlIiwibmV3SXRlbSIsIlJlYWN0IiwiY2xhc3NOYW1lIiwic3R5bGVzIiwiYXNzaWduIiwiY3giLCJtYXAiLCJpbmRleCIsImtleSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm51bWJlciIsImlzUmVxdWlyZWQiLCJmdW5jIiwiYXJyYXlPZiIsInNoYXBlIiwic3RyaW5nIiwibm9kZSIsImkxOG4iLCJjcmVhdGVJbnN0YW5jZSIsImZhbGxiYWNrTG5nIiwicmVzb3VyY2VzIiwiZGUiLCJ0cmFuc2xhdGlvbiIsImVuIiwiZmkiLCJwbCIsInN2IiwiZGVmYXVsdE5TIiwicmVhY3QiLCJ1c2VTdXNwZW5zZSIsImluaXQiLCJnZXRFbXB0eVZpYVBvaW50UGxhY2VIb2xkZXIiLCJpc1ZpYVBvaW50RW1wdHkiLCJ2aWFQb2ludCIsInVuZGVmaW5lZCIsImlzRW1wdHkiLCJrZXlzIiwibGVuZ3RoIiwiaW5jbHVkZXMiLCJJdGluZXJhcnlTZWFyY2hDb250cm9sIiwiX3JlZiIsImNoaWxkcmVuIiwiZW5hYmxlZCIsIm9uQ2xpY2siLCJvbktleVByZXNzIiwid2lkZSIsInJlc3QiLCJuIiwiaGFzT3duUHJvcGVydHkiLCJpbmRleE9mIiwib2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwicm9sZSIsInRhYkluZGV4IiwidXBkYXRlVmlhUG9pbnRTbGFjayIsImFjdGl2ZVZpYVBvaW50U2xhY2tzIiwidXBkYXRlZFZpYVBvaW50SW5kZXgiLCJ2aWFQb2ludFJlbW92ZWQiLCJmb3VuZEF0SW5kZXgiLCJzcGxpY2UiLCJpc0tleWJvYXJkU2VsZWN0aW9uRXZlbnQiLCJldmVudCIsIndoaWNoIiwia2V5Q29kZSIsImNvbmNhdCIsInByZXZlbnREZWZhdWx0IiwibG9jYXRpb24iLCJhZGRyZXNzIiwiZ3BzIiwicmVhZHkiLCJnZXRMb2NhdGlvblR5cGUiLCJib29sIiwiZGVmYXVsdFByb3BzIiwibG9jYXRpb25TaGFwZSIsImxhdCIsImxvbiIsImxvY2F0aW9uU2xhY2siLCJEVEF1dG9zdWdnZXN0UGFuZWwiLCJDb21wb25lbnQiLCJwcm9wcyIsInN1cGVyIiwidGhpcyIsInNldFN0YXRlIiwicHJldlN0YXRlIiwicmVmcyIsImRlc3RpbmF0aW9uIiwic3RhdGUiLCJmb2N1cyIsInZpYVBvaW50cyIsInVwZGF0ZVZpYVBvaW50cyIsImZpbHRlciIsInZwIiwiYWN0aXZlU2xhY2tJbnB1dHMiLCJzbGFja1RpbWVJblNlY29uZHMiLCJhZGRBbmFseXRpY3NFdmVudCIsImFjdGlvbiIsImNhdGVnb3J5IiwibmFtZSIsInBhcnNlSW50IiwidmlhUG9pbnRMb2NhdGlvbiIsImhhbmRsZVZpYVBvaW50TG9jYXRpb25TZWxlY3RlZCIsInB1c2giLCJyZXZlcnNlIiwic3dhcE9yZGVyIiwic2xhY2tJblNlY29uZHMiLCJsbmciLCJsYW5nIiwicmVuZGVyIiwib3JpZ2luIiwic2VhcmNoUGFuZWxUZXh0Iiwic2VhcmNoQ29udGV4dCIsImRpc2FibGVBdXRvRm9jdXMiLCJvcmlnaW5Nb2JpbGVMYWJlbCIsImRlc3RpbmF0aW9uTW9iaWxlTGFiZWwiLCJmb250V2VpZ2h0cyIsIm9uRm9jdXNDaGFuZ2UiLCJzaG93U3dhcENvbnRyb2wiLCJzaG93VmlhcG9pbnRDb250cm9sIiwicHJpbWFyeSIsImNvbG9ycyIsInNsYWNrVGltZSIsInRpbWVPcHRpb25zIiwidmFsdWVJbk1pbnV0ZXMiLCJnZXRTbGFja1RpbWVPcHRpb25zIiwiZ2V0VmlhUG9pbnRTbGFja1RpbWVPckRlZmF1bHQiLCJkZWZhdWx0VmFsdWUiLCJpc1ZpYVBvaW50U2xhY2tUaW1lSW5wdXRBY3RpdmUiLCJpc01vYmlsZSIsIm1lZGl1bSIsIkRUQXV0b1N1Z2dlc3QiLCJhcHBFbGVtZW50IiwiYXV0b0ZvY3VzIiwic3RvcmVSZWYiLCJzdG9yZVJlZmVyZW5jZSIsInJlZlBvaW50IiwicGxhY2Vob2xkZXIiLCJvcmlnaW5QbGFjZUhvbGRlciIsImdldEF1dG9TdWdnZXN0SWNvbnMiLCJvblNlbGVjdCIsIm9uQ2xlYXIiLCJmb2N1c0NoYW5nZSIsImhhbmRsZUZvY3VzQ2hhbmdlIiwic291cmNlcyIsInRhcmdldHMiLCJmaWx0ZXJSZXN1bHRzIiwibW9iaWxlTGFiZWwiLCJtb2RlU2V0Iiwic2hvd1Njcm9sbCIsImlzRW1iZWRkZWQiLCJvcHBvc2l0ZSIsImhhbmRsZVN3YXBPcmRlckNsaWNrIiwiSWNvbiIsImltZyIsImNvbG9yIiwicmVjdGFuZ2xlIiwiUmVhY3RTb3J0YWJsZSIsImxpc3QiLCJoYW5kbGUiLCJhbmltYXRpb24iLCJkaXNhYmxlZCIsInNldExpc3QiLCJuZXdWaWFQb2ludHMiLCJyb3ciLCJjdXJzb3IiLCJyb3RhdGUiLCJhcmlhTGFiZWwiLCJoYW5kbGVWaWFQb2ludHMiLCJzaG93U2xhY2tDb250cm9sIiwiaGFuZGxlVG9nZ2xlVmlhUG9pbnRTbGFja0NsaWNrIiwiZ2V0U2xhY2tEaXNwbGF5IiwiaGFuZGxlVmlhUG9pbnRTbGFja1RpbWVTZWxlY3RlZCIsImhhbmRsZVJlbW92ZVZpYVBvaW50Q2xpY2siLCJpc05hTiIsImRlc3RpbmF0aW9uUGxhY2VIb2xkZXIiLCJtb3JlIiwiaGFuZGxlQWRkVmlhUG9pbnRDbGljayIsIndpZHRoIiwiaGVpZ2h0IiwiZGVmYXVsdENvbG9ycyIsIlVSTF9QRUxJQVMiLCJvYmplY3RPZiIsIkRUQXV0b3N1Z2dlc3RQYW5lbFdpdGhUcmFuc2xhdGlvbiIsIndpdGhUcmFuc2xhdGlvbiIsIkkxOG5leHRQcm92aWRlciJdLCJtYXBwaW5ncyI6Im1qQ0FBQSxTQUFTQSxFQUFRQyxHQUdmLE9BQU9ELEVBQVUsbUJBQXFCRSxRQUFVLGlCQUFtQkEsT0FBT0MsU0FBVyxTQUFVRixHQUM3RixjQUFjQSxDQUNmLEVBQUcsU0FBVUEsR0FDWixPQUFPQSxHQUFLLG1CQUFxQkMsUUFBVUQsRUFBRUcsY0FBZ0JGLFFBQVVELElBQU1DLE9BQU9HLFVBQVksZ0JBQWtCSixDQUN0SCxFQUFLRCxFQUFRQyxFQUNiLENDTkEsU0FBU0ssRUFBY0MsR0FDckIsSUFBSUMsRUNGTixTQUFxQkQsRUFBR0UsR0FDdEIsR0FBSSxVQUFZVCxFQUFRTyxLQUFPQSxFQUFHLE9BQU9BLEVBQ3pDLElBQUlHLEVBQUlILEVBQUVMLE9BQU9TLGFBQ2pCLFFBQVMsSUFBTUQsRUFBRyxDQUNoQixJQUFJRixFQUFJRSxFQUFFRSxLQUFLTCxFQUFHRSxHQUFLLFdBQ3ZCLEdBQUksVUFBWVQsRUFBUVEsR0FBSSxPQUFPQSxFQUNuQyxNQUFNLElBQUlLLFVBQVUsK0NBQ3JCLENBQ0QsT0FBUSxXQUFhSixFQUFJSyxPQUFTQyxRQUFRUixFQUM1QyxDRFBVSSxDQUFZSixFQUFHLFVBQ3ZCLE1BQU8sVUFBWVAsRUFB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
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("classnames"),require("prop-types"),require("react"),require("react-i18next"),require("react-sortablejs"),require("@digitransit-component/digitransit-component-autosuggest"),require("@digitransit-component/digitransit-component-icon"),require("lodash/isEmpty"),require("downshift"),require("i18next")):"function"==typeof define&&define.amd?define(["exports","classnames","prop-types","react","react-i18next","react-sortablejs","@digitransit-component/digitransit-component-autosuggest","@digitransit-component/digitransit-component-icon","lodash/isEmpty","downshift","i18next"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-autosuggest-panel"]={},e.cx,e.PropTypes,e.React,e.reactI18next,e.reactSortablejs,e.DTAutosuggest,e.Icon,e.isEmpty,e.downshift,e.i18next)}(this,function(e,t,n,i,a,o,s,l,r,c,p){"use strict";function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=d(t),_=d(n),h=d(i),g=d(s),f=d(l),y=d(r);function v(e){return v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},v(e)}function m(e){var t=function(e,t){if("object"!=v(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=v(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==v(t)?t:t+""}function b(e,t,n){return(t=m(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function x(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&i.firstChild?i.insertBefore(a,i.firstChild):i.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}var k="select_combobox-container__0lRpm",w="select_left-column__cSrMR",S="select_combobox-label__F9Ayd",E="select_container__yrA-N",P="select_suggestion__b05iD",N="select_suggestionHighlighted__ZFPWo",C="select_suggestionsContainerOpen__9wcJ5",A="select_input__pK5vk";x(".select_combobox-container__0lRpm {\n background-color: #fff;\n border: solid #888 1px;\n display: flex;\n align-items: center;\n border-radius: 5px;\n height: 50px;\n justify-content: space-between;\n flex-grow: 1;\n}\n.select_combobox-container__0lRpm:focus-within {\n border-color: #007ac9;\n}\n.select_combobox-container__0lRpm .select_left-column__cSrMR {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.select_combobox-label__F9Ayd {\n font-size: 12px;\n line-height: 20px;\n color: #666;\n letter-spacing: -0.48px;\n margin-left: 12px;\n margin-top: 4px;\n}\n\n.select_container__yrA-N {\n position: relative;\n width: 100%;\n height: 100%;\n}\n.select_container__yrA-N > div {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: 100%;\n cursor: pointer;\n}\n.select_container__yrA-N .select_suggestion__b05iD {\n font-size: 15px;\n line-height: 49px;\n height: 50px;\n padding: 0 0 0 12px;\n letter-spacing: -0.6px;\n color: #333;\n font-weight: 500;\n}\n.select_container__yrA-N .select_suggestionHighlighted__ZFPWo {\n font-size: 15px;\n font-weight: 500;\n background: #f2f5f7;\n}\n.select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 {\n position: absolute;\n background-color: #fff;\n z-index: 20;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: calc(100% + 4px);\n left: 0;\n width: 100%;\n list-style-type: none;\n padding: 0;\n margin: 0;\n}\n.select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 ul {\n padding: 0;\n margin: 0;\n}\n.select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 li:not(:last-child) {\n border-bottom: 1px solid #ddd;\n}\n.select_container__yrA-N .select_input__pK5vk {\n -webkit-appearance: none;\n appearance: none;\n margin: -4px 0 0 0;\n padding-left: 12px;\n border: none;\n height: 26px;\n}\n.select_container__yrA-N .select_input__pK5vk:focus {\n outline: none;\n border: none;\n box-shadow: none;\n background: #fff;\n}\n.select_container__yrA-N .select_input__pK5vk:read-only {\n cursor: pointer;\n background: #fff;\n}\n.select_container__yrA-N .select_input__pK5vk {\n background: #fff;\n font-weight: 500;\n box-shadow: none;\n font-size: 15px;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.6px;\n color: #333;\n}");const V=({value:e,options:t,onSlackTimeSelected:n,viaPointIndex:i,id:a,label:o,icon:s})=>{const l=`${a}-label`,r=t.find(t=>t.value===e),{isOpen:p,getToggleButtonProps:d,getMenuProps:_,getItemProps:g,getLabelProps:f,highlightedIndex:y}=c.useSelect({selectedItem:r,items:t,labelId:l,id:a,itemToString:e=>e.displayName,onSelectedItemChange:({selectedItem:e})=>{n(e.value,i)}});return h.default.createElement("div",{className:k},h.default.createElement("div",{className:E},h.default.createElement("div",d(),h.default.createElement("span",{className:w},h.default.createElement("label",Object.assign({},f(),{className:S}),o),h.default.createElement("div",{className:A},h.default.createElement("span",null,r.displayName))),s),h.default.createElement("ul",Object.assign({className:u.default(C,!p&&"hidden")},_()),p&&t.map((e,t)=>h.default.createElement("li",Object.assign({key:e.value,className:u.default(P,t===y&&N)},g({index:t})),h.default.createElement("span",null,e.displayName))))))};"production"!==process.env.NODE_ENV&&(V.propTypes={value:_.default.number.isRequired,onSlackTimeSelected:_.default.func.isRequired,options:_.default.arrayOf(_.default.shape({displayName:_.default.string.isRequired,value:_.default.number.isRequired}).isRequired).isRequired,id:_.default.string.isRequired,label:_.default.node.isRequired,icon:_.default.node.isRequired,viaPointIndex:_.default.number.isRequired});const O=p.createInstance({fallbackLng:"fi",resources:{de:{translation:{"add-via-button-label":"Füge Zwischenziel hinzu","add-via-duration-button-label":"Setze Umsteigezeit für Zwischenziel {{index}}","add-via-duration-button-label-close":"Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}","add-via-duration-button-label-open":"Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}","minute-short":"min","remove-via-button-label":"Entferne Zwischenziel {{index}}","swap-order-button-label":"Tausche Start mit Ziel","via-point":"Zwischenziel","via-point-index":"Zwischenziel {{index}}","viapoint-slack-amount":"Umsteigezeit"}},en:{translation:{"add-via-button-label":"Add via point","add-via-duration-button-label":"Set stop duration at via point {{index}}","add-via-duration-button-label-close":"Close stop duration selector at via point {{index}}","add-via-duration-button-label-open":"Open stop duration selector at via point {{index}}","minute-short":"min","remove-via-button-label":"Remove via point {{index}}","swap-order-button-label":"Reverse origin and destination","via-point":"Via point","via-point-index":"Via point {{index}}","viapoint-slack-amount":"Stop duration"}},fi:{translation:{"add-via-button-label":"Lisää välipiste","add-via-duration-button-label":"Aseta välipisteelle {{index}} pysähdyksen kesto","add-via-duration-button-label-close":"Avaa välipisteen {{index}} pysähdyksen kesto valitsin","add-via-duration-button-label-open":"Sulje välipisteen {{index}} pysähdyksen kesto valitsin","minute-short":"min","remove-via-button-label":"Poista välipiste {{index}}","swap-order-button-label":"Käännä reitin suunta vastakkaiseksi","via-point":"Välipiste","via-point-index":"Välipiste {{index}}","viapoint-slack-amount":"Pysähdyksen kesto"}},pl:{translation:{"add-via-button-label":"Dodaj punkt pośredni","add-via-duration-button-label":"Wybierz czas postoju dla punktu {{index}}","add-via-duration-button-label-close":"Zamknij wybornik czasu postoju w punkcie {{index}}","add-via-duration-button-label-open":"Otwórz wybornik czasu postoju w punkcie {{index}}","minute-short":"min.","remove-via-button-label":"Usuń punkt pośredni {{index}}","swap-order-button-label":"Odwróć początek i cel","via-point":"Punkt pośredni","via-point-index":"Punkt pośredni {{index}}","viapoint-slack-amount":"Czas postoju"}},sv:{translation:{"add-via-button-label":"Lägg till viapunkt","add-via-duration-button-label":"Ställ in varaktighet för viapunkten {{index}}","add-via-duration-button-label-close":"Stäng väljaren för varaktighet vid via-punkten {{index}}","add-via-duration-button-label-open":"Öppna väljaren för varaktighet vid via-punkten {{index}}","minute-short":"min","remove-via-button-label":"Ta bort viapunkt {{index}}","swap-order-button-label":"Sväng ruttens riktning till den motsatta","via-point":"Via punkt","via-point-index":"Via punkt {{index}}","viapoint-slack-amount":"Stoppets varaktighet"}}},defaultNS:"translation",react:{useSuspense:!0}});O.init();var I={"autosuggest-panel":"styles_autosuggest-panel__meNwd","autosuggest-searchpanel-text":"styles_autosuggest-searchpanel-text__-VQTg","origin-input-container":"styles_origin-input-container__p4Qik","destination-input-container":"styles_destination-input-container__jBY4I",row:"styles_row__1GhCD","viapoints-container":"styles_viapoints-container__FYp7K","viapoint-container":"styles_viapoint-container__8yh1M","light-gray-background":"styles_light-gray-background__4fyZs","viapoint-before":"styles_viapoint-before__t4saF","viapoint-input-container":"styles_viapoint-input-container__uZx95","viapoint-1":"styles_viapoint-1__8Mna8",viapoint:"styles_viapoint__vUO9L","viapoint-2":"styles_viapoint-2__-OoUa","viapoint-3":"styles_viapoint-3__vvivE","viapoint-4":"styles_viapoint-4__jS9k1","viapoint-5":"styles_viapoint-5__J4V5N","viapoint-slack-time":"styles_viapoint-slack-time__Xpo0G","select-wrapper":"styles_select-wrapper__1usZw","via-point-button-container":"styles_via-point-button-container__cI2JI","input-viapoint-slack-container":"styles_input-viapoint-slack-container__TNgVy","itinerary-search-control":"styles_itinerary-search-control__cEL1X",opposite:"styles_opposite__zQQhd","add-via-point":"styles_add-via-point__E-gGB","add-via-point-slack":"styles_add-via-point-slack__GKjFf","remove-via-point":"styles_remove-via-point__e9DMQ","combobox-icon":"styles_combobox-icon__d3k1e","time-input-icon":"styles_time-input-icon__M8dmw","rectangle-container":"styles_rectangle-container__AdbAA",rectangle:"styles_rectangle__1IO7E","search-panel-whitespace":"styles_search-panel-whitespace__Luhwx"};x(".styles_autosuggest-panel__meNwd {\n width: 100%;\n}\n\n.styles_autosuggest-searchpanel-text__-VQTg {\n font-size: 24px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.8px;\n color: #333;\n line-height: 1;\n margin-bottom: 17px;\n margin-top: unset;\n}\n@media screen and (min-width: 768px) {\n .styles_autosuggest-searchpanel-text__-VQTg {\n letter-spacing: -0.8px;\n line-height: 27px;\n margin-bottom: 21px;\n }\n}\n\n.styles_origin-input-container__p4Qik,\n.styles_destination-input-container__jBY4I {\n display: flex;\n flex: 1 0 100%;\n}\n.styles_origin-input-container__p4Qik input[type=text],\n.styles_destination-input-container__jBY4I input[type=text] {\n margin: 0;\n}\n\n.styles_row__1GhCD {\n display: flex;\n flex-direction: row;\n}\n\n.styles_viapoints-container__FYp7K {\n display: flex;\n flex-direction: column;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M {\n display: flex;\n flex: 1 0 100%;\n min-height: 50px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:first-child {\n margin-top: 6px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:not(:first-child) {\n margin-top: 3px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:last-child {\n margin-bottom: 6px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs {\n display: flex;\n padding: 3px 0;\n flex-direction: column;\n background: #f2f5f7;\n border-radius: 5px;\n width: 100%;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF {\n display: flex;\n min-width: 27px;\n justify-content: center;\n align-items: center;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF svg {\n fill: #888;\n height: 20px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 {\n display: flex;\n align-items: center;\n width: 100%;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 input[type=text] {\n margin: 0;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-1__8Mna8 > div.styles_viapoint__vUO9L {\n z-index: 15;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-2__-OoUa > div.styles_viapoint__vUO9L {\n z-index: 14;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-3__vvivE > div.styles_viapoint__vUO9L {\n z-index: 13;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-4__jS9k1 > div.styles_viapoint__vUO9L {\n z-index: 12;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-5__J4V5N > div.styles_viapoint__vUO9L {\n z-index: 11;\n}\n\n.styles_viapoint-slack-time__Xpo0G {\n font-size: 13px;\n font-weight: normal;\n letter-spacing: -0.36px;\n color: #333;\n padding-left: 27px;\n padding-top: 12px;\n padding-bottom: 10px;\n}\n\n.styles_select-wrapper__1usZw {\n display: flex;\n height: 50px;\n margin-top: 9px;\n padding-left: 27px;\n padding-right: 47px;\n}\n\n.styles_via-point-button-container__cI2JI {\n display: flex;\n}\n.styles_via-point-button-container__cI2JI > div:nth-child(1) {\n order: 1;\n border-left: none;\n}\n.styles_via-point-button-container__cI2JI > div:nth-child(2) {\n order: 2;\n border-left: 1px solid rgba(151, 151, 151, 0.2);\n}\n\n.styles_input-viapoint-slack-container__TNgVy {\n display: flex;\n flex-direction: column;\n}\n\n.styles_itinerary-search-control__cEL1X {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n max-height: 50px;\n min-width: var(--width);\n}\n.styles_itinerary-search-control__cEL1X + .styles_itinerary-search-control__cEL1X {\n border-left: 1px solid rgba(151, 151, 151, 0.2);\n}\n.styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd svg {\n width: 19px;\n height: 17px;\n}\n.styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB svg {\n width: 20px;\n height: 22px;\n}\n.styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 47px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf svg {\n width: 18px;\n height: 19px;\n}\n.styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n max-height: 44px;\n min-width: 40px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ svg {\n width: 14px;\n height: 14px;\n}\n\n.styles_combobox-icon__d3k1e {\n color: var(--color);\n border-left: solid #888 1px;\n height: 35px;\n}\n.styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw {\n padding: 9px 13px 0 13px;\n}\n.styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw svg {\n width: 18px;\n height: 19px;\n}\n\n.styles_rectangle-container__AdbAA {\n display: block;\n position: relative;\n height: 9px;\n z-index: 19;\n}\n.styles_rectangle-container__AdbAA .styles_rectangle__1IO7E {\n position: absolute;\n width: 4px;\n height: 21px;\n border-radius: 2px;\n background-color: #ddd;\n margin-left: 25px;\n margin-top: -5px;\n}\n\n.styles_search-panel-whitespace__Luhwx {\n min-width: 40px;\n}");const M=["children","className","enabled","onClick","onKeyPress","wide"],R=()=>({}),j=e=>{if(void 0===e||y.default(e))return!0;const t=Object.keys(e);return 1===t.length||2===t.length&&t.includes("locationSlack")},L=e=>{let{children:t,className:n,enabled:i,onClick:a,onKeyPress:o,wide:s}=e,l=function(e,t){if(null==e)return{};var n,i,a=function(e,t){if(null==e)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(-1!==t.indexOf(i))continue;n[i]=e[i]}return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],-1===t.indexOf(n)&&{}.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,M);return h.default.createElement("div",{className:I["itinerary-search-control"],style:{"--width":s?"47px":"40px"}},a&&i&&h.default.createElement("div",Object.assign({},l,{className:n,onClick:a,onKeyPress:o,role:"button",tabIndex:"0"}),t))},F=(e,t,n=!1)=>{const i=e.indexOf(t);return i>-1&&e.splice(i,1),n?e.map(e=>e>t?e-1:e):e},z=e=>{const t=e&&(e.key||e.which||e.keyCode)||"";return!(!t||![13," ","Spacebar"].concat([32,"Enter"]).includes(t))&&(e.preventDefault(),!0)},K=e=>e&&e.address||e&&e.gps&&e.ready&&"Nykyinen sijainti"||"",T=e=>e&&!0===e.gps?"position":"location";"production"!==process.env.NODE_ENV&&(L.propTypes={children:_.default.node,className:_.default.string.isRequired,enabled:_.default.bool.isRequired,onClick:_.default.func.isRequired,onKeyPress:_.default.func.isRequired,wide:_.default.bool}),L.defaultProps={children:void 0,wide:!1};const Z="production"!==process.env.NODE_ENV?_.default.shape({address:_.default.string,lat:_.default.number,lon:_.default.number,locationSlack:_.default.number}):{};class q extends h.default.Component{constructor(e){super(e),b(this,"storeReference",e=>{this.setState(t=>({refs:[...t.refs,e]}))}),b(this,"handleFocusChange",()=>{const{destination:e}=this.props;e&&e.lat||this.state.refs[1].focus()}),b(this,"updateViaPoints",e=>{0!==e.length?this.props.updateViaPoints(e.filter(e=>!j(e))):this.props.updateViaPoints([])}),b(this,"handleToggleViaPointSlackClick",e=>{const{activeSlackInputs:t}=this.state;this.setState({activeSlackInputs:t.includes(e)?F(t,e):t.concat([e])})}),b(this,"handleViaPointSlackTimeSelected",(e,t)=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"EditViaPointStopDuration",category:"ItinerarySettings",name:e/60});const{viaPoints:n}=this.props;n[t].locationSlack=Number.parseInt(e,10),this.updateViaPoints(n)}),b(this,"handleViaPointLocationSelected",(e,t)=>{this.props.handleViaPointLocationSelected(e,t)}),b(this,"handleRemoveViaPointClick",e=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"RemoveJourneyViaPoint",category:"ItinerarySettings",name:null});const{activeSlackInputs:t}=this.state,{viaPoints:n}=this.props;n.splice(e,1),this.setState({activeSlackInputs:F(t,e,!0)},()=>this.updateViaPoints(n))}),b(this,"handleAddViaPointClick",()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"AddJourneyViaPoint",category:"ItinerarySettings",name:"QuickSettingsButton"});const{viaPoints:e}=this.props;e.push({}),this.setState(this.state)}),b(this,"handleSwapOrderClick",()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"SwitchJourneyStartAndEndPointOrder",category:"ItinerarySettings",name:null});const{viaPoints:e}=this.props;e.reverse(),this.props.swapOrder()}),b(this,"getSlackDisplay",e=>`${e/60} ${this.props.t("minute-short",{lng:this.props.lang})}`),this.state={activeSlackInputs:[],refs:[]}}render(){const{origin:e,searchPanelText:t,searchContext:n,disableAutoFocus:i,viaPoints:a,originMobileLabel:s,destinationMobileLabel:l,fontWeights:r,onFocusChange:c,showSwapControl:p,showViapointControl:d,t:_,lang:y}=this.props,{primary:v}=this.props.colors,{activeSlackInputs:m}=this.state,b=(e=>{const t=[];for(let n=0;n<=9;n++){const i=10*n;t.push({displayName:`${i} ${e("minute-short")}`,value:60*i})}return t})(_),x=(e,t=0)=>e&&e.locationSlack||t,k=e=>m.includes(e);return h.default.createElement("div",{className:u.default(I["autosuggest-panel"],this.props.isMobile&&"small"),style:{"--color":v,"--font-weight-medium":r.medium}}," ",t?h.default.createElement("div",null,h.default.createElement("h1",{className:I["autosuggest-searchpanel-text"]}," ",t)):null,h.default.createElement("div",{className:I["origin-input-container"]},h.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"origin",autoFocus:!0!==i&&(!this.props.isMobile&&!e.lat),storeRef:this.storeReference,refPoint:this.props.refPoint,className:T(e),placeholder:this.props.originPlaceHolder,value:K(e),searchContext:n,getAutoSuggestIcons:this.props.getAutoSuggestIcons,onSelect:this.props.onSelect,onClear:this.props.onClear,focusChange:c||this.handleFocusChange,lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,colors:this.props.colors,mobileLabel:s,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||d)&&h.default.createElement(L,{className:I.opposite,enabled:p,onClick:()=>this.handleSwapOrderClick(),onKeyPress:e=>z(e)&&this.handleSwapOrderClick(),"aria-label":_("swap-order-button-label",{lng:y})},h.default.createElement(f.default,{img:"opposite",color:v}))),0===a.length&&h.default.createElement("div",{className:I["rectangle-container"]},h.default.createElement("div",{className:I.rectangle})),h.default.createElement(o.ReactSortable,{className:I["viapoints-container"],list:a,handle:`.${I["viapoint-before"]}`,animation:200,disabled:a.length<=1,setList:e=>{const t=e.filter(e=>!j(e));t.length>0&&this.props.updateViaPoints(t)}},a.map((e,t)=>h.default.createElement("div",{className:u.default(I["viapoint-container"]),key:`viapoint-${t}`},h.default.createElement("div",{className:I["light-gray-background"]},h.default.createElement("div",{className:I.row},h.default.createElement("div",{className:I["viapoint-before"],style:a.length>1?{cursor:"move"}:{}},a.length>1&&h.default.createElement(f.default,{img:"ellipsis",rotate:90,color:v})),h.default.createElement("div",{className:`${I["viapoint-input-container"]} ${I[`viapoint-${t+1}`]}`},h.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"via-point",ariaLabel:_("via-point-index",{index:t+1,lng:y}),autoFocus:!0!==i&&!this.props.isMobile,placeholder:"via-point",className:"viapoint",searchContext:n,refPoint:this.props.refPoint,value:e&&e.address||"",onSelect:this.props.onSelect,onClear:this.props.onClear,handleViaPoints:e=>this.handleViaPointLocationSelected(e,t),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,getAutoSuggestIcons:this.props.getAutoSuggestIcons,isMobile:this.props.isMobile,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,colors:this.props.colors,showScroll:this.props.showScroll})),this.props.showSlackControl&&h.default.createElement(L,{className:I["add-via-point-slack"],enabled:this.props.showViapointControl,onClick:()=>this.handleToggleViaPointSlackClick(t),onKeyPress:e=>z(e)&&this.handleToggleViaPointSlackClick(t),"aria-label":_(k(t)?"add-via-duration-button-label-open":"add-via-duration-button-label-close",{index:t+1,lng:y}),wide:!0},h.default.createElement(f.default,{img:"time",color:v}))),!k(t)&&a[t]&&a[t].locationSlack>0&&h.default.createElement("span",{className:I["viapoint-slack-time"]},`${_("viapoint-slack-amount",{lng:y})}: ${this.getSlackDisplay(a[t].locationSlack)}`),h.default.createElement("div",{className:u.default(I["input-viapoint-slack-container"],!k(t)&&"collapsed")},h.default.createElement("div",{className:I["select-wrapper"]},h.default.createElement(V,{id:`viapoint-slack-${t}`,label:_("viapoint-slack-amount",{lng:y}),options:b,value:x(a[t]),viaPointIndex:t,icon:h.default.createElement("span",{className:`${I["combobox-icon"]} ${I["time-input-icon"]}`},h.default.createElement(f.default,{img:"time",color:v})),onSlackTimeSelected:this.handleViaPointSlackTimeSelected})))),h.default.createElement(L,{className:I["remove-via-point"],enabled:this.props.showViapointControl,onClick:()=>this.handleRemoveViaPointClick(t),onKeyPress:e=>z(e)&&this.handleRemoveViaPointClick(t),"aria-label":_("remove-via-button-label",{index:t+1,lng:y})},h.default.createElement(f.default,{img:"trash",color:v}))))),h.default.createElement("div",{className:I["destination-input-container"]},h.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"destination",autoFocus:!0!==i&&(!this.props.isMobile&&!Number.isNaN(e.lat)),storeRef:this.storeReference,placeholder:this.props.destinationPlaceHolder,className:T(this.props.destination),getAutoSuggestIcons:this.props.getAutoSuggestIcons,searchContext:n,onSelect:this.props.onSelect,onClear:this.props.onClear,refPoint:this.props.refPoint,value:K(this.props.destination),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,mobileLabel:l,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,colors:this.props.colors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||d)&&h.default.createElement(L,{className:u.default(I["add-via-point"],I.more,a.length>4&&"collapsed"),enabled:d&&0===a.length,onClick:()=>this.handleAddViaPointClick(),onKeyPress:e=>z(e)&&this.handleAddViaPointClick(),"aria-label":_("add-via-button-label",{lng:y})},h.default.createElement(f.default,{img:"viapoint",width:1.25,height:1.375,color:v}))))}}b(q,"defaultProps",{origin:void 0,destination:void 0,viaPoints:[],originPlaceHolder:"give-origin",destinationPlaceHolder:"give-destination",swapOrder:void 0,updateViaPoints:()=>{},searchPanelText:void 0,sources:[],targets:[],filterResults:void 0,onClear:void 0,getAutoSuggestIcons:void 0,refPoint:void 0,addAnalyticsEvent:void 0,disableAutoFocus:!1,isMobile:!1,handleViaPointLocationSelected:void 0,originMobileLabel:null,destinationMobileLabel:null,modeSet:void 0,colors:l.defaultColors,fontWeights:{medium:500},showScroll:!1,onFocusChange:void 0,isEmbedded:!1,showSwapControl:!1,showViapointControl:!1,showSlackControl:!1}),"production"!==process.env.NODE_ENV&&(q.propTypes={appElement:_.default.string.isRequired,origin:Z,destination:Z,originPlaceHolder:_.default.string,destinationPlaceHolder:_.default.string,viaPoints:_.default.arrayOf(Z),updateViaPoints:_.default.func,handleViaPointLocationSelected:_.default.func,swapOrder:_.default.func,searchPanelText:_.default.string,searchContext:_.default.shape({URL_PELIAS:_.default.string}).isRequired,onSelect:_.default.func.isRequired,onClear:_.default.func,addAnalyticsEvent:_.default.func,lang:_.default.string.isRequired,disableAutoFocus:_.default.bool,sources:_.default.arrayOf(_.default.string),targets:_.default.arrayOf(_.default.string),filterResults:_.default.func,isMobile:_.default.bool,originMobileLabel:_.default.string,destinationMobileLabel:_.default.string,refPoint:Z,modeSet:_.default.string,colors:_.default.objectOf(_.default.string),getAutoSuggestIcons:_.default.objectOf(_.default.func),fontWeights:_.default.shape({medium:_.default.number}),showScroll:_.default.bool,onFocusChange:_.default.func,isEmbedded:_.default.bool,showSwapControl:_.default.bool,showViapointControl:_.default.bool,showSlackControl:_.default.bool,t:_.default.func.isRequired});const Y=a.withTranslation()(q);e.default=e=>h.default.createElement(a.I18nextProvider,{i18n:O},h.default.createElement(Y,e)),e.getEmptyViaPointPlaceHolder=R,Object.defineProperty(e,"__esModule",{value:!0})});
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1pbmplY3QvZGlzdC9zdHlsZS1pbmplY3QuZXMuanMiLCIuLi9zcmMvaGVscGVycy9TZWxlY3QuanMiLCIuLi9zcmMvaGVscGVycy90cmFuc2xhdGlvbnMuanMiLCIuLi9zcmMvaGVscGVycy9pMThuLmpzIiwiLi4vc3JjL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvO1xuICB9IDogZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbztcbiAgfSwgX3R5cGVvZihvKTtcbn1cbmV4cG9ydCB7IF90eXBlb2YgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuaW1wb3J0IHRvUHJpbWl0aXZlIGZyb20gXCIuL3RvUHJpbWl0aXZlLmpzXCI7XG5mdW5jdGlvbiB0b1Byb3BlcnR5S2V5KHQpIHtcbiAgdmFyIGkgPSB0b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTtcbiAgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjtcbn1cbmV4cG9ydCB7IHRvUHJvcGVydHlLZXkgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuZnVuY3Rpb24gdG9QcmltaXRpdmUodCwgcikge1xuICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDtcbiAgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG4gIGlmICh2b2lkIDAgIT09IGUpIHtcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTtcbiAgICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7XG4gIH1cbiAgcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcbn1cbmV4cG9ydCB7IHRvUHJpbWl0aXZlIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgdG9Qcm9wZXJ0eUtleSBmcm9tIFwiLi90b1Byb3BlcnR5S2V5LmpzXCI7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcbiAgICB2YWx1ZTogdCxcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICBjb25maWd1cmFibGU6ICEwLFxuICAgIHdyaXRhYmxlOiAhMFxuICB9KSA6IGVbcl0gPSB0LCBlO1xufVxuZXhwb3J0IHsgX2RlZmluZVByb3BlcnR5IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBzdHlsZUluamVjdChjc3MsIHJlZikge1xuICBpZiAoIHJlZiA9PT0gdm9pZCAwICkgcmVmID0ge307XG4gIHZhciBpbnNlcnRBdCA9IHJlZi5pbnNlcnRBdDtcblxuICBpZiAoIWNzcyB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7IHJldHVybjsgfVxuXG4gIHZhciBoZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBzdHlsZS50eXBlID0gJ3RleHQvY3NzJztcblxuICBpZiAoaW5zZXJ0QXQgPT09ICd0b3AnKSB7XG4gICAgaWYgKGhlYWQuZmlyc3RDaGlsZCkge1xuICAgICAgaGVhZC5pbnNlcnRCZWZvcmUoc3R5bGUsIGhlYWQuZmlyc3RDaGlsZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgfVxuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0eWxlSW5qZWN0O1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VTZWxlY3QgfSBmcm9tICdkb3duc2hpZnQnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3NlbGVjdC5zY3NzJztcblxuY29uc3QgU2VsZWN0ID0gKHtcbiAgdmFsdWUsXG4gIG9wdGlvbnMsXG4gIG9uU2xhY2tUaW1lU2VsZWN0ZWQsXG4gIHZpYVBvaW50SW5kZXgsXG4gIGlkLFxuICBsYWJlbCxcbiAgaWNvbixcbn0pID0+IHtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG4gIGNvbnN0IHNlbGVjdGVkSXRlbSA9IG9wdGlvbnMuZmluZChvcHRpb24gPT4gb3B0aW9uLnZhbHVlID09PSB2YWx1ZSk7XG5cbiAgY29uc3Qge1xuICAgIGlzT3BlbixcbiAgICBnZXRUb2dnbGVCdXR0b25Qcm9wcyxcbiAgICBnZXRNZW51UHJvcHMsXG4gICAgZ2V0SXRlbVByb3BzLFxuICAgIGdldExhYmVsUHJvcHMsXG4gICAgaGlnaGxpZ2h0ZWRJbmRleCxcbiAgfSA9IHVzZVNlbGVjdCh7XG4gICAgc2VsZWN0ZWRJdGVtLFxuICAgIGl0ZW1zOiBvcHRpb25zLFxuICAgIGxhYmVsSWQsXG4gICAgaWQsXG4gICAgaXRlbVRvU3RyaW5nOiBpdGVtID0+IGl0ZW0uZGlzcGxheU5hbWUsXG4gICAgb25TZWxlY3RlZEl0ZW1DaGFuZ2U6ICh7IHNlbGVjdGVkSXRlbTogbmV3SXRlbSB9KSA9PiB7XG4gICAgICBvblNsYWNrVGltZVNlbGVjdGVkKG5ld0l0ZW0udmFsdWUsIHZpYVBvaW50SW5kZXgpO1xuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snY29tYm9ib3gtY29udGFpbmVyJ119PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5jb250YWluZXJ9PlxuICAgICAgICA8ZGl2IHsuLi5nZXRUb2dnbGVCdXR0b25Qcm9wcygpfT5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snbGVmdC1jb2x1bW4nXX0+XG4gICAgICAgICAgICA8bGFiZWwgey4uLmdldExhYmVsUHJvcHMoKX0gY2xhc3NOYW1lPXtzdHlsZXNbJ2NvbWJvYm94LWxhYmVsJ119PlxuICAgICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5pbnB1dH0+XG4gICAgICAgICAgICAgIDxzcGFuPntzZWxlY3RlZEl0ZW0uZGlzcGxheU5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtpY29ufVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHVsXG4gICAgICAgICAgY2xhc3NOYW1lPXtjeChbc3R5bGVzLnN1Z2dlc3Rpb25zQ29udGFpbmVyT3BlbiwgIWlzT3BlbiAmJiAnaGlkZGVuJ10pfVxuICAgICAgICAgIHsuLi5nZXRNZW51UHJvcHMoKX1cbiAgICAgICAgPlxuICAgICAgICAgIHtpc09wZW4gJiZcbiAgICAgICAgICAgIG9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goW1xuICAgICAgICAgICAgICAgICAgc3R5bGVzLnN1Z2dlc3Rpb24sXG4gICAgICAgICAgICAgICAgICBpbmRleCA9PT0gaGlnaGxpZ2h0ZWRJbmRleCAmJiBzdHlsZXMuc3VnZ2VzdGlvbkhpZ2hsaWdodGVkLFxuICAgICAgICAgICAgICAgIF0pfVxuICAgICAgICAgICAgICAgIHsuLi5nZXRJdGVtUHJvcHMoeyBpbmRleCB9KX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPntvcHRpb24uZGlzcGxheU5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblNlbGVjdC5wcm9wVHlwZXMgPSB7XG4gIHZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIG9uU2xhY2tUaW1lU2VsZWN0ZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9wdGlvbnM6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBkaXNwbGF5TmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICB9KS5pc1JlcXVpcmVkLFxuICApLmlzUmVxdWlyZWQsXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGxhYmVsOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBpY29uOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICB2aWFQb2ludEluZGV4OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWxlY3Q7XG4iLCJjb25zdCB0cmFuc2xhdGlvbnMgPSB7XG4gIGRlOiB7XG4gICAgdHJhbnNsYXRpb246IHtcbiAgICAgICdhZGQtdmlhLWJ1dHRvbi1sYWJlbCc6ICdGw7xnZSBad2lzY2hlbnppZWwgaGluenUnLFxuICAgICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsJzpcbiAgICAgICAgJ1NldHplIFVtc3RlaWdlemVpdCBmw7xyIFp3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLWNsb3NlJzpcbiAgICAgICAgJ1NjaGxpZcOfZSBVbXN0ZWlnZXplaXQtQXVzd2FobCBmw7xyIFp3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLW9wZW4nOlxuICAgICAgICAnw5ZmZm5lIFVtc3RlaWdlemVpdC1BdXN3YWhsIGbDvHIgWndpc2NoZW56aWVsIHt7aW5kZXh9fScsXG4gICAgICAnbWludXRlLXNob3J0JzogJ21pbicsXG4gICAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnRW50ZmVybmUgWndpc2NoZW56aWVsIHt7aW5kZXh9fScsXG4gICAgICAnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnOiAnVGF1c2NoZSBTdGFydCBtaXQgWmllbCcsXG4gICAgICAndmlhLXBvaW50JzogJ1p3aXNjaGVuemllbCcsXG4gICAgICAndmlhLXBvaW50LWluZGV4JzogJ1p3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICAgJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCc6ICdVbXN0ZWlnZXplaXQnLFxuICAgIH0sXG4gIH0sXG4gIGVuOiB7XG4gICAgdHJhbnNsYXRpb246IHtcbiAgICAgICdhZGQtdmlhLWJ1dHRvbi1sYWJlbCc6ICdBZGQgdmlhIHBvaW50JyxcbiAgICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbCc6XG4gICAgICAgICdTZXQgc3RvcCBkdXJhdGlvbiBhdCB2aWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1jbG9zZSc6XG4gICAgICAgICdDbG9zZSBzdG9wIGR1cmF0aW9uIHNlbGVjdG9yIGF0IHZpYSBwb2ludCB7e2luZGV4fX0nLFxuICAgICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLW9wZW4nOlxuICAgICAgICAnT3BlbiBzdG9wIGR1cmF0aW9uIHNlbGVjdG9yIGF0IHZpYSBwb2ludCB7e2luZGV4fX0nLFxuICAgICAgJ21pbnV0ZS1zaG9ydCc6ICdtaW4nLFxuICAgICAgJ3JlbW92ZS12aWEtYnV0dG9uLWxhYmVsJzogJ1JlbW92ZSB2aWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAgICdzd2FwLW9yZGVyLWJ1dHRvbi1sYWJlbCc6ICdSZXZlcnNlIG9yaWdpbiBhbmQgZGVzdGluYXRpb24nLFxuICAgICAgJ3ZpYS1wb2ludCc6ICdWaWEgcG9pbnQnLFxuICAgICAgJ3ZpYS1wb2ludC1pbmRleCc6ICdWaWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAgICd2aWFwb2ludC1zbGFjay1hbW91bnQnOiAnU3RvcCBkdXJhdGlvbicsXG4gICAgfSxcbiAgfSxcbiAgZmk6IHtcbiAgICB0cmFuc2xhdGlvbjoge1xuICAgICAgJ2FkZC12aWEtYnV0dG9uLWxhYmVsJzogJ0xpc8Okw6QgdsOkbGlwaXN0ZScsXG4gICAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwnOlxuICAgICAgICAnQXNldGEgdsOkbGlwaXN0ZWVsbGUge3tpbmRleH19IHB5c8OkaGR5a3NlbiBrZXN0bycsXG4gICAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtY2xvc2UnOlxuICAgICAgICAnQXZhYSB2w6RsaXBpc3RlZW4ge3tpbmRleH19IHB5c8OkaGR5a3NlbiBrZXN0byB2YWxpdHNpbicsXG4gICAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtb3Blbic6XG4gICAgICAgICdTdWxqZSB2w6RsaXBpc3RlZW4ge3tpbmRleH19IHB5c8OkaGR5a3NlbiBrZXN0byB2YWxpdHNpbicsXG4gICAgICAnbWludXRlLXNob3J0JzogJ21pbicsXG4gICAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnUG9pc3RhIHbDpGxpcGlzdGUge3tpbmRleH19JyxcbiAgICAgICdzd2FwLW9yZGVyLWJ1dHRvbi1sYWJlbCc6ICdLw6TDpG5uw6QgcmVpdGluIHN1dW50YSB2YXN0YWtrYWlzZWtzaScsXG4gICAgICAndmlhLXBvaW50JzogJ1bDpGxpcGlzdGUnLFxuICAgICAgJ3ZpYS1wb2ludC1pbmRleCc6ICdWw6RsaXBpc3RlIHt7aW5kZXh9fScsXG4gICAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JzogJ1B5c8OkaGR5a3NlbiBrZXN0bycsXG4gICAgfSxcbiAgfSxcbiAgcGw6IHtcbiAgICB0cmFuc2xhdGlvbjoge1xuICAgICAgJ2FkZC12aWEtYnV0dG9uLWxhYmVsJzogJ0RvZGFqIHB1bmt0IHBvxZtyZWRuaScsXG4gICAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwnOlxuICAgICAgICAnV3liaWVyeiBjemFzIHBvc3RvanUgZGxhIHB1bmt0dSB7e2luZGV4fX0nLFxuICAgICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLWNsb3NlJzpcbiAgICAgICAgJ1phbWtuaWogd3lib3JuaWsgY3phc3UgcG9zdG9qdSB3IHB1bmtjaWUge3tpbmRleH19JyxcbiAgICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1vcGVuJzpcbiAgICAgICAgJ090d8Ozcnogd3lib3JuaWsgY3phc3UgcG9zdG9qdSB3IHB1bmtjaWUge3tpbmRleH19JyxcbiAgICAgICdtaW51dGUtc2hvcnQnOiAnbWluLicsXG4gICAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnVXN1xYQgcHVua3QgcG/Fm3JlZG5pIHt7aW5kZXh9fScsXG4gICAgICAnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnOiAnT2R3csOzxIcgcG9jesSFdGVrIGkgY2VsJyxcbiAgICAgICd2aWEtcG9pbnQnOiAnUHVua3QgcG/Fm3JlZG5pJyxcbiAgICAgICd2aWEtcG9pbnQtaW5kZXgnOiAnUHVua3QgcG/Fm3JlZG5pIHt7aW5kZXh9fScsXG4gICAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JzogJ0N6YXMgcG9zdG9qdScsXG4gICAgfSxcbiAgfSxcbiAgc3Y6IHtcbiAgICB0cmFuc2xhdGlvbjoge1xuICAgICAgJ2FkZC12aWEtYnV0dG9uLWxhYmVsJzogJ0zDpGdnIHRpbGwgdmlhcHVua3QnLFxuICAgICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsJzpcbiAgICAgICAgJ1N0w6RsbCBpbiB2YXJha3RpZ2hldCBmw7ZyIHZpYXB1bmt0ZW4ge3tpbmRleH19JyxcbiAgICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1jbG9zZSc6XG4gICAgICAgICdTdMOkbmcgdsOkbGphcmVuIGbDtnIgdmFyYWt0aWdoZXQgdmlkIHZpYS1wdW5rdGVuIHt7aW5kZXh9fScsXG4gICAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtb3Blbic6XG4gICAgICAgICfDlnBwbmEgdsOkbGphcmVuIGbDtnIgdmFyYWt0aWdoZXQgdmlkIHZpYS1wdW5rdGVuIHt7aW5kZXh9fScsXG4gICAgICAnbWludXRlLXNob3J0JzogJ21pbicsXG4gICAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnVGEgYm9ydCB2aWFwdW5rdCB7e2luZGV4fX0nLFxuICAgICAgJ3N3YXAtb3JkZXItYnV0dG9uLWxhYmVsJzogJ1N2w6RuZyBydXR0ZW5zIHJpa3RuaW5nIHRpbGwgZGVuIG1vdHNhdHRhJyxcbiAgICAgICd2aWEtcG9pbnQnOiAnVmlhIHB1bmt0JyxcbiAgICAgICd2aWEtcG9pbnQtaW5kZXgnOiAnVmlhIHB1bmt0IHt7aW5kZXh9fScsXG4gICAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JzogJ1N0b3BwZXRzIHZhcmFrdGlnaGV0JyxcbiAgICB9LFxuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRpb25zO1xuIiwiaW1wb3J0IHsgY3JlYXRlSW5zdGFuY2UgfSBmcm9tICdpMThuZXh0JztcbmltcG9ydCB0cmFuc2xhdGlvbnMgZnJvbSAnLi90cmFuc2xhdGlvbnMnO1xuXG5jb25zdCBpMThuID0gY3JlYXRlSW5zdGFuY2Uoe1xuICBmYWxsYmFja0xuZzogJ2ZpJyxcbiAgLy8gZGVidWc6IHRydWUsXG4gIHJlc291cmNlczogdHJhbnNsYXRpb25zLFxuICBkZWZhdWx0TlM6ICd0cmFuc2xhdGlvbicsXG4gIHJlYWN0OiB7XG4gICAgdXNlU3VzcGVuc2U6IHRydWUsXG4gIH0sXG59KTtcblxuaTE4bi5pbml0KCk7XG5cbmV4cG9ydCBkZWZhdWx0IGkxOG47XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSTE4bmV4dFByb3ZpZGVyLCB3aXRoVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmltcG9ydCB7IFJlYWN0U29ydGFibGUgfSBmcm9tICdyZWFjdC1zb3J0YWJsZWpzJztcbmltcG9ydCBEVEF1dG9TdWdnZXN0IGZyb20gJ0BkaWdpdHJhbnNpdC1jb21wb25lbnQvZGlnaXRyYW5zaXQtY29tcG9uZW50LWF1dG9zdWdnZXN0JztcbmltcG9ydCBJY29uLCB7XG4gIGRlZmF1bHRDb2xvcnMsXG59IGZyb20gJ0BkaWdpdHJhbnNpdC1jb21wb25lbnQvZGlnaXRyYW5zaXQtY29tcG9uZW50LWljb24nO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IFNlbGVjdCBmcm9tICcuL2hlbHBlcnMvU2VsZWN0JztcbmltcG9ydCBpMThuIGZyb20gJy4vaGVscGVycy9pMThuJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9oZWxwZXJzL3N0eWxlcy5zY3NzJztcblxuZXhwb3J0IGNvbnN0IGdldEVtcHR5VmlhUG9pbnRQbGFjZUhvbGRlciA9ICgpID0+ICh7fSk7XG5cbmNvbnN0IGlzVmlhUG9pbnRFbXB0eSA9IHZpYVBvaW50ID0+IHtcbiAgaWYgKHZpYVBvaW50ID09PSB1bmRlZmluZWQgfHwgaXNFbXB0eSh2aWFQb2ludCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModmlhUG9pbnQpO1xuICByZXR1cm4gKFxuICAgIGtleXMubGVuZ3RoID09PSAxIHx8IChrZXlzLmxlbmd0aCA9PT0gMiAmJiBrZXlzLmluY2x1ZGVzKCdsb2NhdGlvblNsYWNrJykpXG4gICk7XG59O1xuXG5jb25zdCBJdGluZXJhcnlTZWFyY2hDb250cm9sID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgZW5hYmxlZCxcbiAgb25DbGljayxcbiAgb25LZXlQcmVzcyxcbiAgd2lkZSxcbiAgLi4ucmVzdFxufSkgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2l0aW5lcmFyeS1zZWFyY2gtY29udHJvbCddfVxuICAgIHN0eWxlPXt7ICctLXdpZHRoJzogd2lkZSA/ICc0N3B4JyA6ICc0MHB4JyB9fVxuICA+XG4gICAge29uQ2xpY2sgJiYgZW5hYmxlZCAmJiAoXG4gICAgICA8ZGl2XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgb25LZXlQcmVzcz17b25LZXlQcmVzc31cbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIHRhYkluZGV4PVwiMFwiXG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuICAgICl9XG4gIDwvZGl2PlxuKTtcblxuY29uc3QgdXBkYXRlVmlhUG9pbnRTbGFjayA9IChcbiAgYWN0aXZlVmlhUG9pbnRTbGFja3MsXG4gIHVwZGF0ZWRWaWFQb2ludEluZGV4LFxuICB2aWFQb2ludFJlbW92ZWQgPSBmYWxzZSxcbikgPT4ge1xuICBjb25zdCBmb3VuZEF0SW5kZXggPSBhY3RpdmVWaWFQb2ludFNsYWNrcy5pbmRleE9mKHVwZGF0ZWRWaWFQb2ludEluZGV4KTtcbiAgaWYgKGZvdW5kQXRJbmRleCA+IC0xKSB7XG4gICAgYWN0aXZlVmlhUG9pbnRTbGFja3Muc3BsaWNlKGZvdW5kQXRJbmRleCwgMSk7XG4gIH1cbiAgcmV0dXJuIHZpYVBvaW50UmVtb3ZlZFxuICAgID8gYWN0aXZlVmlhUG9pbnRTbGFja3MubWFwKHZhbHVlID0+XG4gICAgICAgIHZhbHVlID4gdXBkYXRlZFZpYVBvaW50SW5kZXggPyB2YWx1ZSAtIDEgOiB2YWx1ZSxcbiAgICAgIClcbiAgICA6IGFjdGl2ZVZpYVBvaW50U2xhY2tzO1xufTtcblxuY29uc3QgaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50ID0gZXZlbnQgPT4ge1xuICBjb25zdCBzcGFjZSA9IFsxMywgJyAnLCAnU3BhY2ViYXInXTtcbiAgY29uc3QgZW50ZXIgPSBbMzIsICdFbnRlciddO1xuICBjb25zdCBrZXkgPSAoZXZlbnQgJiYgKGV2ZW50LmtleSB8fCBldmVudC53aGljaCB8fCBldmVudC5rZXlDb2RlKSkgfHwgJyc7XG4gIGlmICgha2V5IHx8ICFzcGFjZS5jb25jYXQoZW50ZXIpLmluY2x1ZGVzKGtleSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5jb25zdCB2YWx1ZSA9IGxvY2F0aW9uID0+XG4gIChsb2NhdGlvbiAmJiBsb2NhdGlvbi5hZGRyZXNzKSB8fFxuICAobG9jYXRpb24gJiYgbG9jYXRpb24uZ3BzICYmIGxvY2F0aW9uLnJlYWR5ICYmICdOeWt5aW5lbiBzaWphaW50aScpIHx8XG4gICcnO1xuXG5jb25zdCBnZXRMb2NhdGlvblR5cGUgPSBsb2NhdGlvbiA9PlxuICBsb2NhdGlvbiAmJiBsb2NhdGlvbi5ncHMgPT09IHRydWUgPyAncG9zaXRpb24nIDogJ2xvY2F0aW9uJztcblxuY29uc3QgZ2V0U2xhY2tUaW1lT3B0aW9ucyA9IHQgPT4ge1xuICBjb25zdCB0aW1lT3B0aW9ucyA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8PSA5OyBpKyspIHtcbiAgICBjb25zdCB2YWx1ZUluTWludXRlcyA9IGkgKiAxMDtcbiAgICB0aW1lT3B0aW9ucy5wdXNoKHtcbiAgICAgIGRpc3BsYXlOYW1lOiBgJHt2YWx1ZUluTWludXRlc30gJHt0KCdtaW51dGUtc2hvcnQnKX1gLFxuICAgICAgdmFsdWU6IHZhbHVlSW5NaW51dGVzICogNjAsXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHRpbWVPcHRpb25zO1xufTtcblxuSXRpbmVyYXJ5U2VhcmNoQ29udHJvbC5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGVuYWJsZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uS2V5UHJlc3M6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHdpZGU6IFByb3BUeXBlcy5ib29sLFxufTtcblxuSXRpbmVyYXJ5U2VhcmNoQ29udHJvbC5kZWZhdWx0UHJvcHMgPSB7XG4gIGNoaWxkcmVuOiB1bmRlZmluZWQsXG4gIHdpZGU6IGZhbHNlLFxufTtcblxuLyoqXG4gKiBQYW5lbCB0aGF0IHJlbmRlcnMgdHdvIERUQXV0b3N1Z2dlc3Qgc2VhcmNoIGZpZWxkcywgaW5jbHVkaW5nIHZpYXBvaW50IGhhbmRsaW5nXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHNlYXJjaENvbnRleHQgPSB7XG4gKiAgIGlzUGVsaWFzTG9jYXRpb25Bd2FyZTogZmFsc2UgLy8gdHJ1ZSAvIGZhbHNlIGRvZXMgTGV0IFBlbGlhcyBzdWdnZXN0IGJhc2VkIG9uIGN1cnJlbnQgdXNlciBsb2NhdGlvblxuICogICBtaW5pbWFsUmVnZXhwOiB1bmRlZmluZWQgLy8gdXNlZCBmb3IgdGVzdGluZyBtaW4uIHJlZ2V4cC4gRm9yIGV4YW1wbGU6IG5ldyBSZWdFeHAoJy57Mix9JyksXG4gKiAgIGxpbmVSZWdleHA6IHVuZGVmaW5lZCAvLyAgaWRlbnRpZnkgc2VhcmNoZXMgZm9yIHJvdXRlIG51bWJlcnMvbGFiZWxzOiBidXMgfCB0cmFpbiB8IG1ldHJvLiBGb3IgZXhhbXBsZTogbmV3IFJlZ0V4cChcbiAqICAgIC8vICAgJyheWzAtOV0rW2Etel0/JHxeW3l1bGVhcGlua3J0ZHpdJHwoXm1bMTJdP2I/JCkpJyxcbiAqICAgIC8vICAnaScsXG4gKiAgICAvLyAgKSxcbiAqICAgVVJMX1BFTElBUzogJycgLy8gdXJsIGZvciBwZWxpYXMgc2VhcmNoZXNcbiAqICAgZmVlZElEczogWydIU0wnLCAnSFNMTGF1dHRhJ10gLy8gRmVlZElkJ3MgbGlrZSAgW0hTTCwgSFNMTGF1dHRhXVxuICogICBnZW9jb2RpbmdTb3VyY2VzOiBbJ29hJywnb3NtJywnbmxzZmknXSAgLy8gc291cmNlcyBmb3IgZ2VvY29kaW5nXG4gKiAgIGdlb2NvZGluZ1NlYXJjaFBhcmFtczsge30gIC8vIFNlYXJjaHBhcm1hcyBmcm8gZ2VvY29kaW5nXG4gKiAgIGdldEZhdm91cml0ZUxvY2F0aW9uczogKCkgPT4gKHt9KSwgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGFycmF5IG9mIGZhdm91cml0ZSBsb2NhdGlvbnMuXG4gKiAgIGdldEZhdm91cml0ZVN0b3BzOiAoKSA9PiAoe30pLCAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGFycmF5IG9mIGZhdm91cml0ZSBzdG9wcy5cbiAqICAgZ2V0TGFuZ3VhZ2U6ICgpID0+ICh7fSksICAgICAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgY3VycmVudCBsYW5ndWFnZS5cbiAqICAgZ2V0RmF2b3VyaXRlUm91dGVzOiAoKSA9PiAoe30pLCAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgYXJyYXkgb2YgZmF2b3VyaXRlIHJvdXRlcy5cbiAqICAgZ2V0UG9zaXRpb25zOiAoKSA9PiAoe30pLCAgICAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgdXNlcidzIGdlb2xvY2F0aW9uLlxuICogICBnZXRSb3V0ZXNRdWVyeTogKCkgPT4gKHt9KSwgICAgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBxdWVyeSBmb3IgZmV0Y2hpbmcgcm91dGVzLlxuICogICBnZXRTdG9wQW5kU3RhdGlvbnNRdWVyeTogKCkgPT4gKHt9KSwgIC8vIEZ1bmN0aW9uIHRoYXQgZmV0Y2hlcyBmYXZvdXJpdGUgc3RvcHMgYW5kIHN0YXRpb25zIGZyb20gZ3JhcGhxbCBBUEkuXG4gKiAgIGdldEZhdm91cml0ZVJvdXRlc1F1ZXJ5OiAoKSA9PiAoe30pLCAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIHF1ZXJ5IGZvciBmZXRjaGluZyBmYXZvdXJpdGUgcm91dGVzLlxuICogICBnZXRGYXZvdXJpdGVWZWhpY2xlUmVudGFsU3RhdGlvbnM6ICgpID0+ICh7fSksICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgZmF2b3VyaXRlIGJpa2UgcmVudGFsIHN0YXRpb24uXG4gKiAgIGdldEZhdm91cml0ZVZlaGljbGVSZW50YWxTdGF0aW9uc1F1ZXJ5OiAoKSA9PiAoe30pLCAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgcXVlcnkgZm9yIGZldGNoaW5nIGZhdm91cml0ZSBiaWtlIHJlbnRhbCBzdGF0aW9ucy5cbiAqICAgc3RhcnRMb2NhdGlvbldhdGNoOiAoKSA9PiAoe30pLCAgICAgICAvLyBGdW5jdGlvbiB0aGF0IGxvY2F0ZXMgdXNlcnMgZ2VvbG9jYXRpb24uXG4gKiAgIHNhdmVTZWFyY2g6ICgpID0+ICh7fSksICAgICAgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCBzYXZlcyBzZWFyY2ggdG8gb2xkIHNlYXJjaGVzIHN0b3JlLlxuICogICBjbGVhck9sZFNlYXJjaGVzOiAoKSA9PiAoe30pLCAgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgY2xlYXJzIG9sZCBzZWFyY2hlcyBzdG9yZS5cbiAqICAgZ2V0RnV0dXJlUm91dGVzOiAoKSA9PiAoe30pLCAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybiBmdXR1cmUgcm91dGVzXG4gKiAgIHNhdmVGdXR1cmVSb3V0ZTogKCkgPT4gKHt9KSwgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCBzYXZlcyBhIGZ1dHVyZSByb3V0ZVxuICogICBjbGVhckZ1dHVyZVJvdXRlczogKCkgPT4gKHt9KSwgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgY2xlYXJzIGZ1dHVyZSByb3V0ZXNcbiAqIH07XG4gKlxuICogY29uc3Qgb3JpZ2luID0ge1xuICogIGxhdDogNjAuMTY5MTk2LFxuICogIGxvbjogMjQuOTU3Njc0LFxuICogIGFkZHJlc3M6ICdBbGVrc2FudGVyaW5rYXR1LCBIZWxzaW5raScsXG4gKiAgc2V0OiB0cnVlLFxuICogIHJlYWR5OiB0cnVlLFxuICogfVxuICpcbiAqIGNvbnN0IGRlc3RpbmF0aW9uID0ge1xuICogICBsYXQ6IDYwLjE5OTA5MyxcbiAqICAgbG9uOiAyNC45NDA1MzYsXG4gKiAgIGFkZHJlc3M6ICdPcGFzdGluc2lsdGEgNiwgSGVsc2lua2knLFxuICogICBzZXQ6IHRydWUsXG4gKiAgIHJlYWR5OiB0cnVlLFxuICogfVxuICogb25TZWxlY3QoaXRlbSwgaWQpIHtcbiAqICByZXR1cm4gbnVsbDsgIC8vIERlZmluZSB3aGF0IHRvIGRvIHdoZW4gYSBzdWdnZXN0aW9uIGlzIGJlaW5nIHNlbGVjdGVkLiBOb25lIGJ5IGRlZmF1bHQuXG4gKiAgfVxuICogb25DbGVhcihpZCkge1xuICogIHJldHVybiBudWxsOyAgLy8gRGVmaW5lIHdoYXQgdG8gZG8gd2hlbiBhIHN1Z2dlc3Rpb24gaXMgYmVpbmcgc2VsZWN0ZWQuIE5vbmUgYnkgZGVmYXVsdC5cbiAqIH1cbiAqIGNvbnN0IGdldEF1dG9TdWdnZXN0SWNvbnM6IHtcbiAqICAgLy8gQ2FsbGVkIGZvciBldmVyeSBjaXR5IGJpa2Ugc3RhdGlvbiByZW5kZXJlZCBhcyBhIHNlYXJjaCBzdWdnZXN0aW9uLiBTaG91bGQgcmV0dXJuIHRoZSBpY29uIGFuZFxuICogICAvLyBjb2xvciB1c2VkIGZvciB0aGF0IHN0YXRpb24uIFR3byBpY29ucyBhcmUgYXZhaWxhYmxlLCAnY2l0eWJpa2Utc3RvcC1kaWdpdHJhbnNpdCcgYW5kaXR5YmlrZS1zdG9wLWRpZ2l0cmFuc2l0LXNlY29uZGFyeScuXG4gKiAgIGNpdHliaWtlczogc3RhdGlvbiA9PiB7XG4gKiAgICAgIHJldHVybiBbJ2NpdHliaWtlLXN0b3AtZGlnaXRyYW5zaXQnLCAnI2YyYjYyZCddO1xuICogICB9XG4gKiB9XG4gKiBjb25zdCB0YXJnZXRzID0gWydMb2NhdGlvbnMnLCAnU3RvcHMnLCAnUm91dGVzJ107IC8vIERlZmluZXMgd2hhdCB5b3UgYXJlIHNlYXJjaGluZy4gYWxsIGF2YWlsYWJsZSBvcHRpb25zIGFyZSBMb2NhdGlvbnMsIFN0b3BzLCBSb3V0ZXMsIFZlaGljbGVSZW50YWxTdGF0aW9ucywgRnV0dXJlUm91dGVzLCBNYXBQb3NpdGlvbiBhbmQgQ3VycmVudFBvc2l0aW9uLiBMZWF2ZSBlbXB0eSB0byBzZWFyY2ggYWxsIHRhcmdldHMuXG4gKiBjb25zdCBzb3VyY2VzID0gWydGYXZvdXJpdGUnLCAnSGlzdG9yeScsICdEYXRhc291cmNlJ10gLy8gRGVmaW5lcyB3aGVyZSB5b3UgYXJlIHNlYXJjaGluZy4gYWxsIGF2YWlsYWJsZSBhcmU6IEZhdm91cml0ZSwgSGlzdG9yeSAocHJldmlvdXNseSBzZWFyY2hlZCBzZWFyY2hlcyksIGFuZCBEYXRhc291cmNlLiBMZWF2ZSBlbXB0eSB0byB1c2UgYWxsIHNvdXJjZXMuXG4gKiA8RFRBdXRvc3VnZ2VzdFBhbmVsXG4gKiAgICBhcHBFbGVtZW50PXthcHBFbGVtZW50fSAvLyBSZXF1aXJlZC4gUm9vdCBlbGVtZW50J3MgaWQuIE5lZWRlZCBmb3IgcmVhY3QtbW9kYWwgY29tcG9uZW50LlxuICogICAgb3JpZ2luPXtvcmlnaW59IC8vIFNlbGVjdGVkIG9yaWdpbiBwb2ludFxuICogICAgZGVzdGluYXRpb249e2Rlc3RpbmF0aW9ufSAvLyBTZWxlY3RlZCBkZXN0aW5hdGlvbiBwb2ludFxuICogICAgb3JpZ2luUGxhY2VIb2xkZXI9eydHaXZlIG9yaWdpbid9IC8vIE9wdGlvbmFsIEdpdmUgc3RyaW5nIHNob3duIGluaXRpYWxseSBpbnNpZGUgb3JpZ2luIHNlYXJjaCBmaWVsZFxuICogICAgZGVzdGluYXRpb25QbGFjZUhvbGRlcj17J0dpdmUgZGVzdGluYXRpb24nfSAvLyBPcHRpb25hbCBHaXZlIHN0cmluZyBzaG93biBpbml0YWxseSBpbnNpZGUgZGVzdGluYXRpb24gc2VhcmNoIGZpZWxkXG4gKiAgICBpbml0aWFsVmlhUG9pbnRzPXtbXX0gLy8gT3B0aW9uYWwuICBJZiBzaG93VmlhcG9pbnRDb250cm9sIGlzIHNldCB0byB0cnVlLCBwYXNzIGluaXRpYWwgdmlhIHBvaW50cyB0byB0aGUgcGFuZWwuIEN1cnJlbnRseSBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGdpdmVuLlxuICogICAgdXBkYXRlVmlhUG9pbnRzPXsoKSA9PiByZXR1cm4gW119IC8vIE9wdGlvbmFsLiBJZiBzaG93VmlhcG9pbnRDb250cm9sIGlzIHNldCB0byB0cnVlLCBkZWZpbmUgaG93IHRvIHVwZGF0ZSB5b3VyIHZpYSBwb2ludCBsaXN0IHdpdGggdGhpcyBmdW5jdGlvbi4gQ3VycmVubHR5IG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgZ2l2ZW4uXG4gKiAgICBzd2FwT3JkZXI9eygpID0+IHJldHVybiBudWxsfSAvLyBPcHRpb25hbC4gSWYgc2hvd1N3YXBDb250cm9sIGlzIHNldCB0byB0cnVlLCBkZWZpbmUgaG93IHRvIHN3YXAgb3JkZXIgb2YgeW91ciBwb2ludHMgKG9yaWdpbiwgZGVzdGluYXRpb24sIHZpYXBvaW50cykuIEN1cnJlbnRseSBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGdpdmVuLlxuICogICAgc2VhcmNoQ29udGV4dD17c2VhcmNoQ29udGV4dH1cbiAqICAgIGdldEF1dG9TdWdnZXN0SWNvbnM9e2dldEF1dG9TdWdnZXN0SWNvbnN9XG4gKiAgICBvblNlbGVjdD17dGhpcy5vblNlbGVjdH1cbiAqICAgIG9uQ2xlYXI9e3RoaXMub25DbGVhcn1cbiAqICAgIGxhbmc9XCJmaVwiIC8vIERlZmluZSBsYW5ndWFnZSBmaSBzdiBvciBlbi5cbiAqICAgIGFkZEFuYWx5dGljc0V2ZW50PXtudWxsfSAvLyBPcHRpb25hbC4geW91IGNhbiByZWNvcmQgYW4gYW5hbHl0aWNzIGV2ZW50IGlmIHlvdSB3aXNoLiBpZiBwYXNzZWQsIGNvbXBvbmVudCB3aWxsIHBhc3MgYW4gY2F0ZWdvcnksIGFjdGlvbiwgbmFtZSBwYXJhbWV0ZXJzIHRvIGFkZEFuYWx5dGljc0V2ZW50XG4gKiAgICBkaXNhYmxlQXV0b0ZvY3VzPXtmYWxzZX0gLy8gT3B0aW9uYWwuIHVzZSB0aGlzIHRvIGRpc2FibGUgYXV0b2ZvY3VzIGNvbXBsZXRlbHkgZnJvbSBEVEF1dG9zdWdnZXN0UGFuZWxcbiAqICAgIHNvdXJjZXM9e3NvdXJjZXN9XG4gKiAgICB0YXJnZXRzPXt0YXJnZXRzfVxuICogICAgaXNNb2JpbGUgIC8vIE9wdGlvbmFsLiBEZWZhdWx0cyB0byBmYWxzZS4gV2hldGhlciB0byB1c2UgbW9iaWxlIHNlYXJjaC5cbiAqICAgIG9yaWdpbk1vYmlsZUxhYmVsPVwiT3JpZ2luIGxhYmVsXCIgLy8gT3B0aW9uYWwuIEN1c3RvbSBsYWJlbCB0ZXh0IGZvciBvcmlnaW4gZmllbGQgb24gbW9iaWxlLlxuICogICAgZGVzdGluYXRpb25Nb2JpbGVMYWJlbD1cIkRlc3RpbmF0aW9uIGxhYmVsXCIgLy8gT3B0aW9uYWwuIEN1c3RvbSBsYWJlbCB0ZXh0IGZvciBkZXN0aW5hdGlvbiBmaWVsZCBvbiBtb2JpbGUuXG4gKiAgICBoYW5kbGVGb2N1c0NoYW5nZT17KCkgPT4ge319IC8vIE9wdGlvbmFsLiBJZiBkZWZpbmVkIG92ZXJyaWRlcyBkZWZhdWx0IG9uRm9jdXNDaGFuZ2UgYmVoYXZpb3VyXG4gKiAgICBzaG93U3dhcENvbnRyb2w9e2ZhbHNlfSAvLyBPcHRpb25hbC5cbiAqICAgIHNob3dWaWFwb2ludENvbnRyb2w9e2ZhbHNlfSAvLyBPcHRpb25hbC5cbiAqL1xuXG5jb25zdCBsb2NhdGlvblNoYXBlID0gUHJvcFR5cGVzLnNoYXBlKHtcbiAgYWRkcmVzczogUHJvcFR5cGVzLnN0cmluZyxcbiAgbGF0OiBQcm9wVHlwZXMubnVtYmVyLFxuICBsb246IFByb3BUeXBlcy5udW1iZXIsXG4gIGxvY2F0aW9uU2xhY2s6IFByb3BUeXBlcy5udW1iZXIsXG59KTtcblxuY2xhc3MgRFRBdXRvc3VnZ2VzdFBhbmVsIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBhcHBFbGVtZW50OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgb3JpZ2luOiBsb2NhdGlvblNoYXBlLFxuICAgIGRlc3RpbmF0aW9uOiBsb2NhdGlvblNoYXBlLFxuICAgIG9yaWdpblBsYWNlSG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRlc3RpbmF0aW9uUGxhY2VIb2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdmlhUG9pbnRzOiBQcm9wVHlwZXMuYXJyYXlPZihsb2NhdGlvblNoYXBlKSxcbiAgICB1cGRhdGVWaWFQb2ludHM6IFByb3BUeXBlcy5mdW5jLFxuICAgIGhhbmRsZVZpYVBvaW50TG9jYXRpb25TZWxlY3RlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgc3dhcE9yZGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBzZWFyY2hQYW5lbFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2VhcmNoQ29udGV4dDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIFVSTF9QRUxJQVM6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgfSkuaXNSZXF1aXJlZCxcbiAgICBvblNlbGVjdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvbkNsZWFyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBhZGRBbmFseXRpY3NFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgbGFuZzogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIGRpc2FibGVBdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAgIHNvdXJjZXM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLFxuICAgIHRhcmdldHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLFxuICAgIGZpbHRlclJlc3VsdHM6IFByb3BUeXBlcy5mdW5jLFxuICAgIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBvcmlnaW5Nb2JpbGVMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkZXN0aW5hdGlvbk1vYmlsZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHJlZlBvaW50OiBsb2NhdGlvblNoYXBlLFxuICAgIG1vZGVTZXQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY29sb3JzOiBQcm9wVHlwZXMub2JqZWN0T2YoUHJvcFR5cGVzLnN0cmluZyksXG4gICAgZ2V0QXV0b1N1Z2dlc3RJY29uczogUHJvcFR5cGVzLm9iamVjdE9mKFByb3BUeXBlcy5mdW5jKSxcbiAgICBmb250V2VpZ2h0czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIG1lZGl1bTogUHJvcFR5cGVzLm51bWJlcixcbiAgICB9KSxcbiAgICBzaG93U2Nyb2xsOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBvbkZvY3VzQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBpc0VtYmVkZGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBzaG93U3dhcENvbnRyb2w6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dWaWFwb2ludENvbnRyb2w6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dTbGFja0NvbnRyb2w6IFByb3BUeXBlcy5ib29sLFxuICAgIHQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBvcmlnaW46IHVuZGVmaW5lZCxcbiAgICBkZXN0aW5hdGlvbjogdW5kZWZpbmVkLFxuICAgIHZpYVBvaW50czogW10sXG4gICAgb3JpZ2luUGxhY2VIb2xkZXI6ICdnaXZlLW9yaWdpbicsXG4gICAgZGVzdGluYXRpb25QbGFjZUhvbGRlcjogJ2dpdmUtZGVzdGluYXRpb24nLFxuICAgIHN3YXBPcmRlcjogdW5kZWZpbmVkLFxuICAgIHVwZGF0ZVZpYVBvaW50czogKCkgPT4ge30sXG4gICAgc2VhcmNoUGFuZWxUZXh0OiB1bmRlZmluZWQsXG4gICAgc291cmNlczogW10sXG4gICAgdGFyZ2V0czogW10sXG4gICAgZmlsdGVyUmVzdWx0czogdW5kZWZpbmVkLFxuICAgIG9uQ2xlYXI6IHVuZGVmaW5lZCxcbiAgICBnZXRBdXRvU3VnZ2VzdEljb25zOiB1bmRlZmluZWQsXG4gICAgcmVmUG9pbnQ6IHVuZGVmaW5lZCxcbiAgICBhZGRBbmFseXRpY3NFdmVudDogdW5kZWZpbmVkLFxuICAgIGRpc2FibGVBdXRvRm9jdXM6IGZhbHNlLFxuICAgIGlzTW9iaWxlOiBmYWxzZSxcbiAgICBoYW5kbGVWaWFQb2ludExvY2F0aW9uU2VsZWN0ZWQ6IHVuZGVmaW5lZCxcbiAgICBvcmlnaW5Nb2JpbGVMYWJlbDogbnVsbCxcbiAgICBkZXN0aW5hdGlvbk1vYmlsZUxhYmVsOiBudWxsLFxuICAgIG1vZGVTZXQ6IHVuZGVmaW5lZCxcbiAgICBjb2xvcnM6IGRlZmF1bHRDb2xvcnMsXG4gICAgZm9udFdlaWdodHM6IHtcbiAgICAgIG1lZGl1bTogNTAwLFxuICAgIH0sXG4gICAgc2hvd1Njcm9sbDogZmFsc2UsXG4gICAgb25Gb2N1c0NoYW5nZTogdW5kZWZpbmVkLFxuICAgIGlzRW1iZWRkZWQ6IGZhbHNlLFxuICAgIHNob3dTd2FwQ29udHJvbDogZmFsc2UsXG4gICAgc2hvd1ZpYXBvaW50Q29udHJvbDogZmFsc2UsXG4gICAgc2hvd1NsYWNrQ29udHJvbDogZmFsc2UsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGFjdGl2ZVNsYWNrSW5wdXRzOiBbXSxcbiAgICAgIHJlZnM6IFtdLFxuICAgIH07XG4gIH1cblxuICBzdG9yZVJlZmVyZW5jZSA9IHJlZiA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZShwcmV2U3RhdGUgPT4gKHsgcmVmczogWy4uLnByZXZTdGF0ZS5yZWZzLCByZWZdIH0pKTtcbiAgfTtcblxuICBoYW5kbGVGb2N1c0NoYW5nZSA9ICgpID0+IHtcbiAgICBjb25zdCB7IGRlc3RpbmF0aW9uIH0gPSB0aGlzLnByb3BzO1xuICAgIGlmICghZGVzdGluYXRpb24gfHwgIWRlc3RpbmF0aW9uLmxhdCkge1xuICAgICAgdGhpcy5zdGF0ZS5yZWZzWzFdLmZvY3VzKCk7XG4gICAgfVxuICB9O1xuXG4gIHVwZGF0ZVZpYVBvaW50cyA9IHZpYVBvaW50cyA9PiB7XG4gICAgaWYgKHZpYVBvaW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMucHJvcHMudXBkYXRlVmlhUG9pbnRzKFtdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wcm9wcy51cGRhdGVWaWFQb2ludHModmlhUG9pbnRzLmZpbHRlcih2cCA9PiAhaXNWaWFQb2ludEVtcHR5KHZwKSkpO1xuICB9O1xuXG4gIGhhbmRsZVRvZ2dsZVZpYVBvaW50U2xhY2tDbGljayA9IHZpYVBvaW50SW5kZXggPT4ge1xuICAgIGNvbnN0IHsgYWN0aXZlU2xhY2tJbnB1dHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBhY3RpdmVTbGFja0lucHV0czogYWN0aXZlU2xhY2tJbnB1dHMuaW5jbHVkZXModmlhUG9pbnRJbmRleClcbiAgICAgICAgPyB1cGRhdGVWaWFQb2ludFNsYWNrKGFjdGl2ZVNsYWNrSW5wdXRzLCB2aWFQb2ludEluZGV4KVxuICAgICAgICA6IGFjdGl2ZVNsYWNrSW5wdXRzLmNvbmNhdChbdmlhUG9pbnRJbmRleF0pLFxuICAgIH0pO1xuICB9O1xuXG4gIGhhbmRsZVZpYVBvaW50U2xhY2tUaW1lU2VsZWN0ZWQgPSAoc2xhY2tUaW1lSW5TZWNvbmRzLCBpKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdFZGl0VmlhUG9pbnRTdG9wRHVyYXRpb24nLFxuICAgICAgICBjYXRlZ29yeTogJ0l0aW5lcmFyeVNldHRpbmdzJyxcbiAgICAgICAgbmFtZTogc2xhY2tUaW1lSW5TZWNvbmRzIC8gNjAsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgeyB2aWFQb2ludHMgfSA9IHRoaXMucHJvcHM7XG4gICAgdmlhUG9pbnRzW2ldLmxvY2F0aW9uU2xhY2sgPSBOdW1iZXIucGFyc2VJbnQoc2xhY2tUaW1lSW5TZWNvbmRzLCAxMCk7XG4gICAgdGhpcy51cGRhdGVWaWFQb2ludHModmlhUG9pbnRzKTtcbiAgfTtcblxuICBoYW5kbGVWaWFQb2ludExvY2F0aW9uU2VsZWN0ZWQgPSAodmlhUG9pbnRMb2NhdGlvbiwgaSkgPT4ge1xuICAgIHRoaXMucHJvcHMuaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkKHZpYVBvaW50TG9jYXRpb24sIGkpO1xuICB9O1xuXG4gIGhhbmRsZVJlbW92ZVZpYVBvaW50Q2xpY2sgPSB2aWFQb2ludEluZGV4ID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCkge1xuICAgICAgdGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCh7XG4gICAgICAgIGFjdGlvbjogJ1JlbW92ZUpvdXJuZXlWaWFQb2ludCcsXG4gICAgICAgIGNhdGVnb3J5OiAnSXRpbmVyYXJ5U2V0dGluZ3MnLFxuICAgICAgICBuYW1lOiBudWxsLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHsgYWN0aXZlU2xhY2tJbnB1dHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgeyB2aWFQb2ludHMgfSA9IHRoaXMucHJvcHM7XG4gICAgdmlhUG9pbnRzLnNwbGljZSh2aWFQb2ludEluZGV4LCAxKTtcbiAgICB0aGlzLnNldFN0YXRlKFxuICAgICAge1xuICAgICAgICBhY3RpdmVTbGFja0lucHV0czogdXBkYXRlVmlhUG9pbnRTbGFjayhcbiAgICAgICAgICBhY3RpdmVTbGFja0lucHV0cyxcbiAgICAgICAgICB2aWFQb2ludEluZGV4LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgKCkgPT4gdGhpcy51cGRhdGVWaWFQb2ludHModmlhUG9pbnRzKSxcbiAgICApO1xuICB9O1xuXG4gIGhhbmRsZUFkZFZpYVBvaW50Q2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdBZGRKb3VybmV5VmlhUG9pbnQnLFxuICAgICAgICBjYXRlZ29yeTogJ0l0aW5lcmFyeVNldHRpbmdzJyxcbiAgICAgICAgbmFtZTogJ1F1aWNrU2V0dGluZ3NCdXR0b24nLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHsgdmlhUG9pbnRzIH0gPSB0aGlzLnByb3BzO1xuICAgIHZpYVBvaW50cy5wdXNoKGdldEVtcHR5VmlhUG9pbnRQbGFjZUhvbGRlcigpKTtcbiAgICAvLyBXZSBuZWVkIHRvIHVwZGF0ZSB0aGUgc3RhdGUgc28gdGhhdCBwbGFjZUhvbGRlciB3aWxsIHNob3cgdXAgaW4gcGFuZWwuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFjY2Vzcy1zdGF0ZS1pbi1zZXRzdGF0ZVxuICAgIHRoaXMuc2V0U3RhdGUodGhpcy5zdGF0ZSk7XG4gIH07XG5cbiAgaGFuZGxlU3dhcE9yZGVyQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdTd2l0Y2hKb3VybmV5U3RhcnRBbmRFbmRQb2ludE9yZGVyJyxcbiAgICAgICAgY2F0ZWdvcnk6ICdJdGluZXJhcnlTZXR0aW5ncycsXG4gICAgICAgIG5hbWU6IG51bGwsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgeyB2aWFQb2ludHMgfSA9IHRoaXMucHJvcHM7XG4gICAgdmlhUG9pbnRzLnJldmVyc2UoKTtcbiAgICB0aGlzLnByb3BzLnN3YXBPcmRlcigpO1xuICB9O1xuXG4gIGdldFNsYWNrRGlzcGxheSA9IHNsYWNrSW5TZWNvbmRzID0+XG4gICAgYCR7c2xhY2tJblNlY29uZHMgLyA2MH0gJHt0aGlzLnByb3BzLnQoJ21pbnV0ZS1zaG9ydCcsIHtcbiAgICAgIGxuZzogdGhpcy5wcm9wcy5sYW5nLFxuICAgIH0pfWA7XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIG9yaWdpbixcbiAgICAgIHNlYXJjaFBhbmVsVGV4dCxcbiAgICAgIHNlYXJjaENvbnRleHQsXG4gICAgICBkaXNhYmxlQXV0b0ZvY3VzLFxuICAgICAgdmlhUG9pbnRzLFxuICAgICAgb3JpZ2luTW9iaWxlTGFiZWwsXG4gICAgICBkZXN0aW5hdGlvbk1vYmlsZUxhYmVsLFxuICAgICAgZm9udFdlaWdodHMsXG4gICAgICBvbkZvY3VzQ2hhbmdlLFxuICAgICAgc2hvd1N3YXBDb250cm9sLFxuICAgICAgc2hvd1ZpYXBvaW50Q29udHJvbCxcbiAgICAgIHQsXG4gICAgICBsYW5nOiBsbmcsXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBwcmltYXJ5IH0gPSB0aGlzLnByb3BzLmNvbG9ycztcbiAgICBjb25zdCB7IGFjdGl2ZVNsYWNrSW5wdXRzIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHNsYWNrVGltZSA9IGdldFNsYWNrVGltZU9wdGlvbnModCk7XG4gICAgY29uc3QgZGVmYXVsdFNsYWNrVGltZVZhbHVlID0gMDtcbiAgICBjb25zdCBnZXRWaWFQb2ludFNsYWNrVGltZU9yRGVmYXVsdCA9IChcbiAgICAgIHZpYVBvaW50LFxuICAgICAgZGVmYXVsdFZhbHVlID0gZGVmYXVsdFNsYWNrVGltZVZhbHVlLFxuICAgICkgPT4gKHZpYVBvaW50ICYmIHZpYVBvaW50LmxvY2F0aW9uU2xhY2spIHx8IGRlZmF1bHRWYWx1ZTtcbiAgICBjb25zdCBpc1ZpYVBvaW50U2xhY2tUaW1lSW5wdXRBY3RpdmUgPSBpbmRleCA9PlxuICAgICAgYWN0aXZlU2xhY2tJbnB1dHMuaW5jbHVkZXMoaW5kZXgpO1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y3goW1xuICAgICAgICAgIHN0eWxlc1snYXV0b3N1Z2dlc3QtcGFuZWwnXSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzbWFsbDogdGhpcy5wcm9wcy5pc01vYmlsZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKX1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAnLS1jb2xvcic6IHByaW1hcnksXG4gICAgICAgICAgJy0tZm9udC13ZWlnaHQtbWVkaXVtJzogZm9udFdlaWdodHMubWVkaXVtLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7JyAnfVxuICAgICAgICB7c2VhcmNoUGFuZWxUZXh0ID8gKFxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aDEgY2xhc3NOYW1lPXtzdHlsZXNbJ2F1dG9zdWdnZXN0LXNlYXJjaHBhbmVsLXRleHQnXX0+XG4gICAgICAgICAgICAgIHsnICd9XG4gICAgICAgICAgICAgIHtzZWFyY2hQYW5lbFRleHR9XG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snb3JpZ2luLWlucHV0LWNvbnRhaW5lciddfT5cbiAgICAgICAgICA8RFRBdXRvU3VnZ2VzdFxuICAgICAgICAgICAgYXBwRWxlbWVudD17dGhpcy5wcm9wcy5hcHBFbGVtZW50fVxuICAgICAgICAgICAgaWNvbj1cIm1hcE1hcmtlclwiXG4gICAgICAgICAgICBpZD1cIm9yaWdpblwiXG4gICAgICAgICAgICBhdXRvRm9jdXM9e1xuICAgICAgICAgICAgICBkaXNhYmxlQXV0b0ZvY3VzID09PSB0cnVlXG4gICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgIDogIXRoaXMucHJvcHMuaXNNb2JpbGUgJiYgIW9yaWdpbi5sYXRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0b3JlUmVmPXt0aGlzLnN0b3JlUmVmZXJlbmNlfVxuICAgICAgICAgICAgcmVmUG9pbnQ9e3RoaXMucHJvcHMucmVmUG9pbnR9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2dldExvY2F0aW9uVHlwZShvcmlnaW4pfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3RoaXMucHJvcHMub3JpZ2luUGxhY2VIb2xkZXJ9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWUob3JpZ2luKX1cbiAgICAgICAgICAgIHNlYXJjaENvbnRleHQ9e3NlYXJjaENvbnRleHR9XG4gICAgICAgICAgICBnZXRBdXRvU3VnZ2VzdEljb25zPXt0aGlzLnByb3BzLmdldEF1dG9TdWdnZXN0SWNvbnN9XG4gICAgICAgICAgICBvblNlbGVjdD17dGhpcy5wcm9wcy5vblNlbGVjdH1cbiAgICAgICAgICAgIG9uQ2xlYXI9e3RoaXMucHJvcHMub25DbGVhcn1cbiAgICAgICAgICAgIGZvY3VzQ2hhbmdlPXtvbkZvY3VzQ2hhbmdlIHx8IHRoaXMuaGFuZGxlRm9jdXNDaGFuZ2V9XG4gICAgICAgICAgICBsYW5nPXt0aGlzLnByb3BzLmxhbmd9XG4gICAgICAgICAgICBzb3VyY2VzPXt0aGlzLnByb3BzLnNvdXJjZXN9XG4gICAgICAgICAgICB0YXJnZXRzPXt0aGlzLnByb3BzLnRhcmdldHN9XG4gICAgICAgICAgICBmaWx0ZXJSZXN1bHRzPXt0aGlzLnByb3BzLmZpbHRlclJlc3VsdHN9XG4gICAgICAgICAgICBpc01vYmlsZT17dGhpcy5wcm9wcy5pc01vYmlsZX1cbiAgICAgICAgICAgIGNvbG9ycz17dGhpcy5wcm9wcy5jb2xvcnN9XG4gICAgICAgICAgICBtb2JpbGVMYWJlbD17b3JpZ2luTW9iaWxlTGFiZWx9XG4gICAgICAgICAgICBmb250V2VpZ2h0cz17dGhpcy5wcm9wcy5mb250V2VpZ2h0c31cbiAgICAgICAgICAgIG1vZGVTZXQ9e3RoaXMucHJvcHMubW9kZVNldH1cbiAgICAgICAgICAgIHNob3dTY3JvbGw9e3RoaXMucHJvcHMuc2hvd1Njcm9sbH1cbiAgICAgICAgICAgIGlzRW1iZWRkZWQ9e3RoaXMucHJvcHMuaXNFbWJlZGRlZH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHsoc2hvd1N3YXBDb250cm9sIHx8IHNob3dWaWFwb2ludENvbnRyb2wpICYmIChcbiAgICAgICAgICAgIDxJdGluZXJhcnlTZWFyY2hDb250cm9sXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9wcG9zaXRlfVxuICAgICAgICAgICAgICBlbmFibGVkPXtzaG93U3dhcENvbnRyb2x9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMuaGFuZGxlU3dhcE9yZGVyQ2xpY2soKX1cbiAgICAgICAgICAgICAgb25LZXlQcmVzcz17ZSA9PlxuICAgICAgICAgICAgICAgIGlzS2V5Ym9hcmRTZWxlY3Rpb25FdmVudChlKSAmJiB0aGlzLmhhbmRsZVN3YXBPcmRlckNsaWNrKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdzd2FwLW9yZGVyLWJ1dHRvbi1sYWJlbCcsIHsgbG5nIH0pfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJvcHBvc2l0ZVwiIGNvbG9yPXtwcmltYXJ5fSAvPlxuICAgICAgICAgICAgPC9JdGluZXJhcnlTZWFyY2hDb250cm9sPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7dmlhUG9pbnRzLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1sncmVjdGFuZ2xlLWNvbnRhaW5lciddfT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMucmVjdGFuZ2xlfSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgICA8UmVhY3RTb3J0YWJsZVxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWyd2aWFwb2ludHMtY29udGFpbmVyJ119XG4gICAgICAgICAgbGlzdD17dmlhUG9pbnRzfVxuICAgICAgICAgIGhhbmRsZT17YC4ke3N0eWxlc1sndmlhcG9pbnQtYmVmb3JlJ119YH1cbiAgICAgICAgICBhbmltYXRpb249ezIwMH1cbiAgICAgICAgICBkaXNhYmxlZD17dmlhUG9pbnRzLmxlbmd0aCA8PSAxfVxuICAgICAgICAgIHNldExpc3Q9e2l0ZW1zID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZpYVBvaW50cyA9IGl0ZW1zLmZpbHRlcih2cCA9PiAhaXNWaWFQb2ludEVtcHR5KHZwKSk7XG4gICAgICAgICAgICBpZiAobmV3VmlhUG9pbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcy51cGRhdGVWaWFQb2ludHMobmV3VmlhUG9pbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge3ZpYVBvaW50cy5tYXAoKG8sIGkpID0+IChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeChzdHlsZXNbJ3ZpYXBvaW50LWNvbnRhaW5lciddKX1cbiAgICAgICAgICAgICAga2V5PXtgdmlhcG9pbnQtJHtpfWB9IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snbGlnaHQtZ3JheS1iYWNrZ3JvdW5kJ119PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMucm93fT5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3ZpYXBvaW50LWJlZm9yZSddfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17dmlhUG9pbnRzLmxlbmd0aCA+IDEgPyB7IGN1cnNvcjogJ21vdmUnIH0gOiB7fX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3ZpYVBvaW50cy5sZW5ndGggPiAxICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJlbGxpcHNpc1wiIHJvdGF0ZT17OTB9IGNvbG9yPXtwcmltYXJ5fSAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgICAgICAgICAgICAgYCR7c3R5bGVzWyd2aWFwb2ludC1pbnB1dC1jb250YWluZXInXX0gJHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlc1tgdmlhcG9pbnQtJHtpICsgMX1gXVxuICAgICAgICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RFRBdXRvU3VnZ2VzdFxuICAgICAgICAgICAgICAgICAgICAgIGFwcEVsZW1lbnQ9e3RoaXMucHJvcHMuYXBwRWxlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVwibWFwTWFya2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cInZpYS1wb2ludFwiXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYUxhYmVsPXt0KCd2aWEtcG9pbnQtaW5kZXgnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSArIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBsbmcsXG4gICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzPXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVBdXRvRm9jdXMgPT09IHRydWUgPyBmYWxzZSA6ICF0aGlzLnByb3BzLmlzTW9iaWxlXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwidmlhLXBvaW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ2aWFwb2ludFwiXG4gICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQ29udGV4dD17c2VhcmNoQ29udGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICByZWZQb2ludD17dGhpcy5wcm9wcy5yZWZQb2ludH1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17KG8gJiYgby5hZGRyZXNzKSB8fCAnJ31cbiAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy5wcm9wcy5vblNlbGVjdH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsZWFyPXt0aGlzLnByb3BzLm9uQ2xlYXJ9XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlVmlhUG9pbnRzPXtpdGVtID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVZpYVBvaW50TG9jYXRpb25TZWxlY3RlZChpdGVtLCBpKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBsYW5nPXt0aGlzLnByb3BzLmxhbmd9XG4gICAgICAgICAgICAgICAgICAgICAgc291cmNlcz17dGhpcy5wcm9wcy5zb3VyY2VzfVxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHM9e3RoaXMucHJvcHMudGFyZ2V0c31cbiAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJSZXN1bHRzPXt0aGlzLnByb3BzLmZpbHRlclJlc3VsdHN9XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0QXV0b1N1Z2dlc3RJY29ucz17dGhpcy5wcm9wcy5nZXRBdXRvU3VnZ2VzdEljb25zfVxuICAgICAgICAgICAgICAgICAgICAgIGlzTW9iaWxlPXt0aGlzLnByb3BzLmlzTW9iaWxlfVxuICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHRzPXt0aGlzLnByb3BzLmZvbnRXZWlnaHRzfVxuICAgICAgICAgICAgICAgICAgICAgIG1vZGVTZXQ9e3RoaXMucHJvcHMubW9kZVNldH1cbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcnM9e3RoaXMucHJvcHMuY29sb3JzfVxuICAgICAgICAgICAgICAgICAgICAgIHNob3dTY3JvbGw9e3RoaXMucHJvcHMuc2hvd1Njcm9sbH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuc2hvd1NsYWNrQ29udHJvbCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxJdGluZXJhcnlTZWFyY2hDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2FkZC12aWEtcG9pbnQtc2xhY2snXX1cbiAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkPXt0aGlzLnByb3BzLnNob3dWaWFwb2ludENvbnRyb2x9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5oYW5kbGVUb2dnbGVWaWFQb2ludFNsYWNrQ2xpY2soaSl9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlQcmVzcz17ZSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50KGUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVRvZ2dsZVZpYVBvaW50U2xhY2tDbGljayhpKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNWaWFQb2ludFNsYWNrVGltZUlucHV0QWN0aXZlKGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLW9wZW4nXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLWNsb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaW5kZXg6IGkgKyAxLCBsbmcgfSxcbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIHdpZGVcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGltZz1cInRpbWVcIiBjb2xvcj17cHJpbWFyeX0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JdGluZXJhcnlTZWFyY2hDb250cm9sPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB7IWlzVmlhUG9pbnRTbGFja1RpbWVJbnB1dEFjdGl2ZShpKSAmJlxuICAgICAgICAgICAgICAgICAgdmlhUG9pbnRzW2ldICYmXG4gICAgICAgICAgICAgICAgICB2aWFQb2ludHNbaV0ubG9jYXRpb25TbGFjayA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1sndmlhcG9pbnQtc2xhY2stdGltZSddfT57YCR7dChcbiAgICAgICAgICAgICAgICAgICAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JyxcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsbmcsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgKX06ICR7dGhpcy5nZXRTbGFja0Rpc3BsYXkoXG4gICAgICAgICAgICAgICAgICAgICAgdmlhUG9pbnRzW2ldLmxvY2F0aW9uU2xhY2ssXG4gICAgICAgICAgICAgICAgICAgICl9YH08L3NwYW4+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goc3R5bGVzWydpbnB1dC12aWFwb2ludC1zbGFjay1jb250YWluZXInXSwge1xuICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6ICFpc1ZpYVBvaW50U2xhY2tUaW1lSW5wdXRBY3RpdmUoaSksXG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydzZWxlY3Qtd3JhcHBlciddfT5cbiAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgIGlkPXtgdmlhcG9pbnQtc2xhY2stJHtpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e3QoJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCcsIHsgbG5nIH0pfVxuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e3NsYWNrVGltZX1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Z2V0VmlhUG9pbnRTbGFja1RpbWVPckRlZmF1bHQodmlhUG9pbnRzW2ldKX1cbiAgICAgICAgICAgICAgICAgICAgICB2aWFQb2ludEluZGV4PXtpfVxuICAgICAgICAgICAgICAgICAgICAgIGljb249e1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ2NvbWJvYm94LWljb24nXX0gJHtzdHlsZXNbJ3RpbWUtaW5wdXQtaWNvbiddfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGltZz1cInRpbWVcIiBjb2xvcj17cHJpbWFyeX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgb25TbGFja1RpbWVTZWxlY3RlZD17dGhpcy5oYW5kbGVWaWFQb2ludFNsYWNrVGltZVNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8SXRpbmVyYXJ5U2VhcmNoQ29udHJvbFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydyZW1vdmUtdmlhLXBvaW50J119XG4gICAgICAgICAgICAgICAgZW5hYmxlZD17dGhpcy5wcm9wcy5zaG93VmlhcG9pbnRDb250cm9sfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMuaGFuZGxlUmVtb3ZlVmlhUG9pbnRDbGljayhpKX1cbiAgICAgICAgICAgICAgICBvbktleVByZXNzPXtlID0+XG4gICAgICAgICAgICAgICAgICBpc0tleWJvYXJkU2VsZWN0aW9uRXZlbnQoZSkgJiZcbiAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUmVtb3ZlVmlhUG9pbnRDbGljayhpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdyZW1vdmUtdmlhLWJ1dHRvbi1sYWJlbCcsIHtcbiAgICAgICAgICAgICAgICAgIGluZGV4OiBpICsgMSxcbiAgICAgICAgICAgICAgICAgIGxuZyxcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxJY29uIGltZz1cInRyYXNoXCIgY29sb3I9e3ByaW1hcnl9IC8+XG4gICAgICAgICAgICAgIDwvSXRpbmVyYXJ5U2VhcmNoQ29udHJvbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1JlYWN0U29ydGFibGU+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2Rlc3RpbmF0aW9uLWlucHV0LWNvbnRhaW5lciddfT5cbiAgICAgICAgICA8RFRBdXRvU3VnZ2VzdFxuICAgICAgICAgICAgYXBwRWxlbWVudD17dGhpcy5wcm9wcy5hcHBFbGVtZW50fVxuICAgICAgICAgICAgaWNvbj1cIm1hcE1hcmtlclwiXG4gICAgICAgICAgICBpZD1cImRlc3RpbmF0aW9uXCJcbiAgICAgICAgICAgIGF1dG9Gb2N1cz17XG4gICAgICAgICAgICAgIGRpc2FibGVBdXRvRm9jdXMgPT09IHRydWVcbiAgICAgICAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgICAgICAgOiAhdGhpcy5wcm9wcy5pc01vYmlsZSAmJiAhTnVtYmVyLmlzTmFOKG9yaWdpbi5sYXQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdG9yZVJlZj17dGhpcy5zdG9yZVJlZmVyZW5jZX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0aGlzLnByb3BzLmRlc3RpbmF0aW9uUGxhY2VIb2xkZXJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2dldExvY2F0aW9uVHlwZSh0aGlzLnByb3BzLmRlc3RpbmF0aW9uKX1cbiAgICAgICAgICAgIGdldEF1dG9TdWdnZXN0SWNvbnM9e3RoaXMucHJvcHMuZ2V0QXV0b1N1Z2dlc3RJY29uc31cbiAgICAgICAgICAgIHNlYXJjaENvbnRleHQ9e3NlYXJjaENvbnRleHR9XG4gICAgICAgICAgICBvblNlbGVjdD17dGhpcy5wcm9wcy5vblNlbGVjdH1cbiAgICAgICAgICAgIG9uQ2xlYXI9e3RoaXMucHJvcHMub25DbGVhcn1cbiAgICAgICAgICAgIHJlZlBvaW50PXt0aGlzLnByb3BzLnJlZlBvaW50fVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlKHRoaXMucHJvcHMuZGVzdGluYXRpb24pfVxuICAgICAgICAgICAgbGFuZz17dGhpcy5wcm9wcy5sYW5nfVxuICAgICAgICAgICAgc291cmNlcz17dGhpcy5wcm9wcy5zb3VyY2VzfVxuICAgICAgICAgICAgdGFyZ2V0cz17dGhpcy5wcm9wcy50YXJnZXRzfVxuICAgICAgICAgICAgZmlsdGVyUmVzdWx0cz17dGhpcy5wcm9wcy5maWx0ZXJSZXN1bHRzfVxuICAgICAgICAgICAgaXNNb2JpbGU9e3RoaXMucHJvcHMuaXNNb2JpbGV9XG4gICAgICAgICAgICBtb2JpbGVMYWJlbD17ZGVzdGluYXRpb25Nb2JpbGVMYWJlbH1cbiAgICAgICAgICAgIGZvbnRXZWlnaHRzPXt0aGlzLnByb3BzLmZvbnRXZWlnaHRzfVxuICAgICAgICAgICAgbW9kZVNldD17dGhpcy5wcm9wcy5tb2RlU2V0fVxuICAgICAgICAgICAgY29sb3JzPXt0aGlzLnByb3BzLmNvbG9yc31cbiAgICAgICAgICAgIHNob3dTY3JvbGw9e3RoaXMucHJvcHMuc2hvd1Njcm9sbH1cbiAgICAgICAgICAgIGlzRW1iZWRkZWQ9e3RoaXMucHJvcHMuaXNFbWJlZGRlZH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHsoc2hvd1N3YXBDb250cm9sIHx8IHNob3dWaWFwb2ludENvbnRyb2wpICYmIChcbiAgICAgICAgICAgIDxJdGluZXJhcnlTZWFyY2hDb250cm9sXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goc3R5bGVzWydhZGQtdmlhLXBvaW50J10sIHN0eWxlcy5tb3JlLCB7XG4gICAgICAgICAgICAgICAgY29sbGFwc2VkOiB2aWFQb2ludHMubGVuZ3RoID4gNCxcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIGVuYWJsZWQ9e3Nob3dWaWFwb2ludENvbnRyb2wgJiYgdmlhUG9pbnRzLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5oYW5kbGVBZGRWaWFQb2ludENsaWNrKCl9XG4gICAgICAgICAgICAgIG9uS2V5UHJlc3M9e2UgPT5cbiAgICAgICAgICAgICAgICBpc0tleWJvYXJkU2VsZWN0aW9uRXZlbnQoZSkgJiYgdGhpcy5oYW5kbGVBZGRWaWFQb2ludENsaWNrKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdhZGQtdmlhLWJ1dHRvbi1sYWJlbCcsIHsgbG5nIH0pfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8SWNvblxuICAgICAgICAgICAgICAgIGltZz1cInZpYXBvaW50XCJcbiAgICAgICAgICAgICAgICB3aWR0aD17MS4yNX1cbiAgICAgICAgICAgICAgICBoZWlnaHQ9ezEuMzc1fVxuICAgICAgICAgICAgICAgIGNvbG9yPXtwcmltYXJ5fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9JdGluZXJhcnlTZWFyY2hDb250cm9sPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBEVEF1dG9zdWdnZXN0UGFuZWxXaXRoVHJhbnNsYXRpb24gPSB3aXRoVHJhbnNsYXRpb24oKShEVEF1dG9zdWdnZXN0UGFuZWwpO1xuXG5leHBvcnQgZGVmYXVsdCBwcm9wcyA9PiB7XG4gIHJldHVybiAoXG4gICAgPEkxOG5leHRQcm92aWRlciBpMThuPXtpMThufT5cbiAgICAgIDxEVEF1dG9zdWdnZXN0UGFuZWxXaXRoVHJhbnNsYXRpb24gey4uLnByb3BzfSAvPlxuICAgIDwvSTE4bmV4dFByb3ZpZGVyPlxuICApO1xufTtcbiIsImltcG9ydCBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCIuL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanNcIjtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhlLCB0KSB7XG4gIGlmIChudWxsID09IGUpIHJldHVybiB7fTtcbiAgdmFyIG8sXG4gICAgcixcbiAgICBpID0gb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShlLCB0KTtcbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgbiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7XG4gICAgZm9yIChyID0gMDsgciA8IG4ubGVuZ3RoOyByKyspIG8gPSBuW3JdLCAtMSA9PT0gdC5pbmRleE9mKG8pICYmIHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSwgbykgJiYgKGlbb10gPSBlW29dKTtcbiAgfVxuICByZXR1cm4gaTtcbn1cbmV4cG9ydCB7IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UociwgZSkge1xuICBpZiAobnVsbCA9PSByKSByZXR1cm4ge307XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIG4gaW4gcikgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwociwgbikpIHtcbiAgICBpZiAoLTEgIT09IGUuaW5kZXhPZihuKSkgY29udGludWU7XG4gICAgdFtuXSA9IHJbbl07XG4gIH1cbiAgcmV0dXJuIHQ7XG59XG5leHBvcnQgeyBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBhcyBkZWZhdWx0IH07Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsInRvUHJvcGVydHlLZXkiLCJ0IiwiaSIsInIiLCJlIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiX2RlZmluZVByb3BlcnR5IiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsInN0eWxlSW5qZWN0IiwiY3NzIiwicmVmIiwiaW5zZXJ0QXQiLCJkb2N1bWVudCIsImhlYWQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInN0eWxlIiwiY3JlYXRlRWxlbWVudCIsInR5cGUiLCJmaXJzdENoaWxkIiwiaW5zZXJ0QmVmb3JlIiwiYXBwZW5kQ2hpbGQiLCJzdHlsZVNoZWV0IiwiY3NzVGV4dCIsImNyZWF0ZVRleHROb2RlIiwiU2VsZWN0Iiwib3B0aW9ucyIsIm9uU2xhY2tUaW1lU2VsZWN0ZWQiLCJ2aWFQb2ludEluZGV4IiwiaWQiLCJsYWJlbCIsImljb24iLCJsYWJlbElkIiwic2VsZWN0ZWRJdGVtIiwiZmluZCIsIm9wdGlvbiIsImlzT3BlbiIsImdldFRvZ2dsZUJ1dHRvblByb3BzIiwiZ2V0TWVudVByb3BzIiwiZ2V0SXRlbVByb3BzIiwiZ2V0TGFiZWxQcm9wcyIsImhpZ2hsaWdodGVkSW5kZXgiLCJ1c2VTZWxlY3QiLCJpdGVtcyIsIml0ZW1Ub1N0cmluZyIsIml0ZW0iLCJkaXNwbGF5TmFtZSIsIm9uU2VsZWN0ZWRJdGVtQ2hhbmdlIiwibmV3SXRlbSIsIlJlYWN0IiwiY2xhc3NOYW1lIiwic3R5bGVzIiwiYXNzaWduIiwiY3giLCJtYXAiLCJpbmRleCIsImtleSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm51bWJlciIsImlzUmVxdWlyZWQiLCJmdW5jIiwiYXJyYXlPZiIsInNoYXBlIiwic3RyaW5nIiwibm9kZSIsImkxOG4iLCJjcmVhdGVJbnN0YW5jZSIsImZhbGxiYWNrTG5nIiwicmVzb3VyY2VzIiwiZGUiLCJ0cmFuc2xhdGlvbiIsImVuIiwiZmkiLCJwbCIsInN2IiwiZGVmYXVsdE5TIiwicmVhY3QiLCJ1c2VTdXNwZW5zZSIsImluaXQiLCJnZXRFbXB0eVZpYVBvaW50UGxhY2VIb2xkZXIiLCJpc1ZpYVBvaW50RW1wdHkiLCJ2aWFQb2ludCIsInVuZGVmaW5lZCIsImlzRW1wdHkiLCJrZXlzIiwibGVuZ3RoIiwiaW5jbHVkZXMiLCJJdGluZXJhcnlTZWFyY2hDb250cm9sIiwiX3JlZiIsImNoaWxkcmVuIiwiZW5hYmxlZCIsIm9uQ2xpY2siLCJvbktleVByZXNzIiwid2lkZSIsInJlc3QiLCJuIiwiaGFzT3duUHJvcGVydHkiLCJpbmRleE9mIiwib2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwicm9sZSIsInRhYkluZGV4IiwidXBkYXRlVmlhUG9pbnRTbGFjayIsImFjdGl2ZVZpYVBvaW50U2xhY2tzIiwidXBkYXRlZFZpYVBvaW50SW5kZXgiLCJ2aWFQb2ludFJlbW92ZWQiLCJmb3VuZEF0SW5kZXgiLCJzcGxpY2UiLCJpc0tleWJvYXJkU2VsZWN0aW9uRXZlbnQiLCJldmVudCIsIndoaWNoIiwia2V5Q29kZSIsImNvbmNhdCIsInByZXZlbnREZWZhdWx0IiwibG9jYXRpb24iLCJhZGRyZXNzIiwiZ3BzIiwicmVhZHkiLCJnZXRMb2NhdGlvblR5cGUiLCJib29sIiwiZGVmYXVsdFByb3BzIiwibG9jYXRpb25TaGFwZSIsImxhdCIsImxvbiIsImxvY2F0aW9uU2xhY2siLCJEVEF1dG9zdWdnZXN0UGFuZWwiLCJDb21wb25lbnQiLCJwcm9wcyIsInN1cGVyIiwidGhpcyIsInNldFN0YXRlIiwicHJldlN0YXRlIiwicmVmcyIsImRlc3RpbmF0aW9uIiwic3RhdGUiLCJmb2N1cyIsInZpYVBvaW50cyIsInVwZGF0ZVZpYVBvaW50cyIsImZpbHRlciIsInZwIiwiYWN0aXZlU2xhY2tJbnB1dHMiLCJzbGFja1RpbWVJblNlY29uZHMiLCJhZGRBbmFseXRpY3NFdmVudCIsImFjdGlvbiIsImNhdGVnb3J5IiwibmFtZSIsInBhcnNlSW50IiwidmlhUG9pbnRMb2NhdGlvbiIsImhhbmRsZVZpYVBvaW50TG9jYXRpb25TZWxlY3RlZCIsInB1c2giLCJyZXZlcnNlIiwic3dhcE9yZGVyIiwic2xhY2tJblNlY29uZHMiLCJsbmciLCJsYW5nIiwicmVuZGVyIiwib3JpZ2luIiwic2VhcmNoUGFuZWxUZXh0Iiwic2VhcmNoQ29udGV4dCIsImRpc2FibGVBdXRvRm9jdXMiLCJvcmlnaW5Nb2JpbGVMYWJlbCIsImRlc3RpbmF0aW9uTW9iaWxlTGFiZWwiLCJmb250V2VpZ2h0cyIsIm9uRm9jdXNDaGFuZ2UiLCJzaG93U3dhcENvbnRyb2wiLCJzaG93VmlhcG9pbnRDb250cm9sIiwicHJpbWFyeSIsImNvbG9ycyIsInNsYWNrVGltZSIsInRpbWVPcHRpb25zIiwidmFsdWVJbk1pbnV0ZXMiLCJnZXRTbGFja1RpbWVPcHRpb25zIiwiZ2V0VmlhUG9pbnRTbGFja1RpbWVPckRlZmF1bHQiLCJkZWZhdWx0VmFsdWUiLCJpc1ZpYVBvaW50U2xhY2tUaW1lSW5wdXRBY3RpdmUiLCJpc01vYmlsZSIsIm1lZGl1bSIsIkRUQXV0b1N1Z2dlc3QiLCJhcHBFbGVtZW50IiwiYXV0b0ZvY3VzIiwic3RvcmVSZWYiLCJzdG9yZVJlZmVyZW5jZSIsInJlZlBvaW50IiwicGxhY2Vob2xkZXIiLCJvcmlnaW5QbGFjZUhvbGRlciIsImdldEF1dG9TdWdnZXN0SWNvbnMiLCJvblNlbGVjdCIsIm9uQ2xlYXIiLCJmb2N1c0NoYW5nZSIsImhhbmRsZUZvY3VzQ2hhbmdlIiwic291cmNlcyIsInRhcmdldHMiLCJmaWx0ZXJSZXN1bHRzIiwibW9iaWxlTGFiZWwiLCJtb2RlU2V0Iiwic2hvd1Njcm9sbCIsImlzRW1iZWRkZWQiLCJvcHBvc2l0ZSIsImhhbmRsZVN3YXBPcmRlckNsaWNrIiwiSWNvbiIsImltZyIsImNvbG9yIiwicmVjdGFuZ2xlIiwiUmVhY3RTb3J0YWJsZSIsImxpc3QiLCJoYW5kbGUiLCJhbmltYXRpb24iLCJkaXNhYmxlZCIsInNldExpc3QiLCJuZXdWaWFQb2ludHMiLCJyb3ciLCJjdXJzb3IiLCJyb3RhdGUiLCJhcmlhTGFiZWwiLCJoYW5kbGVWaWFQb2ludHMiLCJzaG93U2xhY2tDb250cm9sIiwiaGFuZGxlVG9nZ2xlVmlhUG9pbnRTbGFja0NsaWNrIiwiZ2V0U2xhY2tEaXNwbGF5IiwiaGFuZGxlVmlhUG9pbnRTbGFja1RpbWVTZWxlY3RlZCIsImhhbmRsZVJlbW92ZVZpYVBvaW50Q2xpY2siLCJpc05hTiIsImRlc3RpbmF0aW9uUGxhY2VIb2xkZXIiLCJtb3JlIiwiaGFuZGxlQWRkVmlhUG9pbnRDbGljayIsIndpZHRoIiwiaGVpZ2h0IiwiZGVmYXVsdENvbG9ycyIsIlVSTF9QRUxJQVMiLCJvYmplY3RPZiIsIkRUQXV0b3N1Z2dlc3RQYW5lbFdpdGhUcmFuc2xhdGlvbiIsIndpdGhUcmFuc2xhdGlvbiIsIkkxOG5leHRQcm92aWRlciJdLCJtYXBwaW5ncyI6Im1qQ0FBQSxTQUFTQSxFQUFRQyxHQUdmLE9BQU9ELEVBQVUsbUJBQXFCRSxRQUFVLGlCQUFtQkEsT0FBT0MsU0FBVyxTQUFVRixHQUM3RixjQUFjQSxDQUNmLEVBQUcsU0FBVUEsR0FDWixPQUFPQSxHQUFLLG1CQUFxQkMsUUFBVUQsRUFBRUcsY0FBZ0JGLFFBQVVELElBQU1DLE9BQU9HLFVBQVksZ0JBQWtCSixDQUN0SCxFQUFLRCxFQUFRQyxFQUNiLENDTkEsU0FBU0ssRUFBY0MsR0FDckIsSUFBSUMsRUNGTixTQUFxQkQsRUFBR0UsR0FDdEIsR0FBSSxVQUFZVCxFQUFRTyxLQUFPQSxFQUFHLE9BQU9BLEVBQ3pDLElBQUlHLEVBQUlILEVBQUVMLE9BQU9TLGFBQ2pCLFFBQVMsSUFBTUQsRUFBRyxDQUNoQixJQUFJRixFQUFJRSxFQUFFRSxLQUFLTCxFQUFHRSxHQUFLLFdBQ3ZCLEdBQUksVUFBWVQsRUFBUVEsR0FBSSxPQUFPQSxFQUNuQyxNQUFNLElBQUlLLFVBQVUsK0NBQ3JCLENBQ0QsT0FBUSxXQUFhSixFQUFJSyxPQUFTQyxRQUFRUixFQUM1QyxDRFBVSSxDQUFZSixFQUFHLFVBQ3ZCLE1BQU8sVUFBWVAsRUFBUVEsR0FBS0EsRUFBSUEsRUFBSSxFQUMxQyxDRUpBLFNBQVNRLEVBQWdCTixFQUFHRCxFQUFHRixHQUM3QixPQUFRRSxFQUFJSCxFQUFjRyxNQUFPQyxFQUFJTyxPQUFPQyxlQUFlUixFQUFHRCxFQUFHLENBQy9EVSxNQUFPWixFQUNQYSxZQUFZLEVBQ1pDLGNBQWMsRUFDZEMsVUFBVSxJQUNQWixFQUFFRCxHQUFLRixFQUFHRyxDQUNqQixDQ1JBLFNBQVNhLEVBQVlDLEVBQUtDLFFBQ04sSUFBYkEsSUFBaUJBLEVBQU0sQ0FBQSxHQUM1QixJQUFJQyxFQUFXRCxFQUFJQyxTQUVuQixHQUFLRixHQUEyQixvQkFBYkcsU0FBbkIsQ0FFQSxJQUFJQyxFQUFPRCxTQUFTQyxNQUFRRCxTQUFTRSxxQkFBcUIsUUFBUSxHQUM5REMsRUFBUUgsU0FBU0ksY0FBYyxTQUNuQ0QsRUFBTUUsS0FBTyxXQUVJLFFBQWJOLEdBQ0VFLEVBQUtLLFdBQ1BMLEVBQUtNLGFBQWFKLEVBQU9GLEVBQUtLLFlBS2hDTCxFQUFLTyxZQUFZTCxHQUdmQSxFQUFNTSxXQUNSTixFQUFNTSxXQUFXQyxRQUFVYixFQUUzQk0sRUFBTUssWUFBWVIsU0FBU1csZUFBZWQsR0FuQlksQ0FxQjFELDJ1RkNuQkEsTUFBTWUsRUFBU0EsRUFDYnBCLFFBQ0FxQixVQUNBQyxzQkFDQUMsZ0JBQ0FDLEtBQ0FDLFFBQ0FDLFdBRUEsTUFBTUMsRUFBVSxHQUFHSCxVQUNiSSxFQUFlUCxFQUFRUSxLQUFLQyxHQUFVQSxFQUFPOUIsUUFBVUEsSUFFdkQrQixPQUNKQSxFQUFNQyxxQkFDTkEsRUFBb0JDLGFBQ3BCQSxFQUFZQyxhQUNaQSxFQUFZQyxjQUNaQSxFQUFhQyxpQkFDYkEsR0FDRUMsWUFBVSxDQUNaVCxlQUNBVSxNQUFPakIsRUFDUE0sVUFDQUgsS0FDQWUsYUFBY0MsR0FBUUEsRUFBS0MsWUFDM0JDLHFCQUFzQkEsRUFBR2QsYUFBY2UsTUFDckNyQixFQUFvQnFCLEVBQVEzQyxNQUFPdUIsTUFJdkMsT0FDRXFCLEVBQUEsUUFBQWhDLGNBQUEsTUFBQSxDQUFLaUMsVUFBV0MsR0FDZEYsRUFBQSxRQUFBaEMsY0FBQSxNQUFBLENBQUtpQyxVQUFXQyxHQUNkRixFQUFBQSxRQUFBaEMsY0FBU29CLE1BQUFBLElBQ1BZLEVBQUEsUUFBQWhDLGNBQUEsT0FBQSxDQUFNaUMsVUFBV0MsR0FDZkYsRUFBQUEsUUFBQWhDLGNBQUFkLFFBQUFBLE9BQUFpRCxPQUFBLENBQUEsRUFBV1osSUFBZSxDQUFFVSxVQUFXQyxJQUNwQ3JCLEdBRUhtQixVQUFBaEMsY0FBQSxNQUFBLENBQUtpQyxVQUFXQyxHQUNkRixFQUFBQSxRQUFBaEMsY0FBQSxPQUFBLEtBQU9nQixFQUFhYSxlQUd2QmYsR0FFSGtCLEVBQUFBLFFBQUFoQyxjQUFBZCxLQUFBQSxPQUFBaUQsT0FBQSxDQUNFRixVQUFXRyxFQUFFLFFBQUVGLEdBQWtDZixHQUFVLFdBQ3ZERSxLQUVIRixHQUNDVixFQUFRNEIsSUFBSSxDQUFDbkIsRUFBUW9CLElBQ25CTixFQUFBQSxRQUFBaEMsY0FBQSxLQUFBZCxPQUFBaUQsT0FBQSxDQUNFSSxJQUFLckIsRUFBTzlCLE1BQ1o2QyxVQUFXRyxFQUFFLFFBQ1hGLEVBQ0FJLElBQVVkLEdBQW9CVSxJQUU1QlosRUFBYSxDQUFFZ0IsV0FFbkJOLEVBQUFBLFFBQUFoQyxjQUFPa0IsT0FBQUEsS0FBQUEsRUFBT1csa0NBUzlCVyxRQUFBQyxJQUFBQyxXQUFBbEMsRUFBT21DLFVBQVksQ0FDakJ2RCxNQUFPd0QsRUFBQUEsUUFBVUMsT0FBT0MsV0FDeEJwQyxvQkFBcUJrQyxFQUFBQSxRQUFVRyxLQUFLRCxXQUNwQ3JDLFFBQVNtQyxFQUFTLFFBQUNJLFFBQ2pCSixFQUFBQSxRQUFVSyxNQUFNLENBQ2RwQixZQUFhZSxFQUFBQSxRQUFVTSxPQUFPSixXQUM5QjFELE1BQU93RCxFQUFBQSxRQUFVQyxPQUFPQyxhQUN2QkEsWUFDSEEsV0FDRmxDLEdBQUlnQyxFQUFBQSxRQUFVTSxPQUFPSixXQUNyQmpDLE1BQU8rQixFQUFBQSxRQUFVTyxLQUFLTCxXQUN0QmhDLEtBQU04QixFQUFBQSxRQUFVTyxLQUFLTCxXQUNyQm5DLGNBQWVpQyxFQUFBQSxRQUFVQyxPQUFPQyxhQ3JGbEMsTUNHTU0sRUFBT0MsRUFBQUEsZUFBZSxDQUMxQkMsWUFBYSxLQUViQyxVRE5tQixDQUNuQkMsR0FBSSxDQUNGQyxZQUFhLENBQ1gsdUJBQXdCLDBCQUN4QixnQ0FDRSxnREFDRixzQ0FDRSwyREFDRixxQ0FDRSx3REFDRixlQUFnQixNQUNoQiwwQkFBMkIsa0NBQzNCLDBCQUEyQix5QkFDM0IsWUFBYSxlQUNiLGtCQUFtQix5QkFDbkIsd0JBQXlCLGlCQUc3QkMsR0FBSSxDQUNGRCxZQUFhLENBQ1gsdUJBQXdCLGdCQUN4QixnQ0FDRSwyQ0FDRixzQ0FDRSxzREFDRixxQ0FDRSxxREFDRixlQUFnQixNQUNoQiwwQkFBMkIsNkJBQzNCLDBCQUEyQixpQ0FDM0IsWUFBYSxZQUNiLGtCQUFtQixzQkFDbkIsd0JBQXlCLGtCQUc3QkUsR0FBSSxDQUNGRixZQUFhLENBQ1gsdUJBQXdCLGtCQUN4QixnQ0FDRSxrREFDRixzQ0FDRSx3REFDRixxQ0FDRSx5REFDRixlQUFnQixNQUNoQiwwQkFBMkIsNkJBQzNCLDBCQUEyQixzQ0FDM0IsWUFBYSxZQUNiLGtCQUFtQixzQkFDbkIsd0JBQXlCLHNCQUc3QkcsR0FBSSxDQUNGSCxZQUFhLENBQ1gsdUJBQXdCLHVCQUN4QixnQ0FDRSw0Q0FDRixzQ0FDRSxxREFDRixxQ0FDRSxvREFDRixlQUFnQixPQUNoQiwwQkFBMkIsZ0NBQzNCLDBCQUEyQix3QkFDM0IsWUFBYSxpQkFDYixrQkFBbUIsMkJBQ25CLHdCQUF5QixpQkFHN0JJLEdBQUksQ0FDRkosWUFBYSxDQUNYLHVCQUF3QixxQkFDeEIsZ0NBQ0UsZ0RBQ0Ysc0NBQ0UsMkRBQ0YscUNBQ0UsMkRBQ0YsZUFBZ0IsTUFDaEIsMEJBQTJCLDZCQUMzQiwwQkFBMkIsMkNBQzNCLFlBQWEsWUFDYixrQkFBbUIsc0JBQ25CLHdCQUF5QiwwQkM1RTdCSyxVQUFXLGNBQ1hDLE1BQU8sQ0FDTEMsYUFBYSxLQUlqQlosRUFBS2EsNmlRQ0VRQyxFQUE4QkEsS0FBTyxDQUFFLEdBRTlDQyxFQUFrQkMsSUFDdEIsUUFBaUJDLElBQWJELEdBQTBCRSxFQUFPLFFBQUNGLEdBQ3BDLE9BQU8sRUFFVCxNQUFNRyxFQUFPckYsT0FBT3FGLEtBQUtILEdBQ3pCLE9BQ2tCLElBQWhCRyxFQUFLQyxRQUFpQyxJQUFoQkQsRUFBS0MsUUFBZ0JELEVBQUtFLFNBQVMsa0JBSXZEQyxFQUF5QkMsSUFBQSxJQUFDQyxTQUM5QkEsRUFBUTNDLFVBQ1JBLEVBQVM0QyxRQUNUQSxFQUFPQyxRQUNQQSxFQUFPQyxXQUNQQSxFQUFVQyxLQUNWQSxHQUVETCxFQURJTSxFQ2pDTCxTQUFrQ3RHLEVBQUdILEdBQ25DLEdBQUksTUFBUUcsRUFBRyxNQUFPLEdBQ3RCLElBQUlULEVBQ0ZRLEVBQ0FELEVDTEosU0FBdUNDLEVBQUdDLEdBQ3hDLEdBQUksTUFBUUQsRUFBRyxNQUFPLEdBQ3RCLElBQUlGLEVBQUksQ0FBQSxFQUNSLElBQUssSUFBSTBHLEtBQUt4RyxFQUFHLEdBQUksQ0FBQSxFQUFHeUcsZUFBZXRHLEtBQUtILEVBQUd3RyxHQUFJLENBQ2pELElBQUssSUFBTXZHLEVBQUV5RyxRQUFRRixHQUFJLFNBQ3pCMUcsRUFBRTBHLEdBQUt4RyxFQUFFd0csRUFDVixDQUNELE9BQU8xRyxDQUNULENESFE2RyxDQUE2QjFHLEVBQUdILEdBQ3RDLEdBQUlVLE9BQU9vRyxzQkFBdUIsQ0FDaEMsSUFBSUosRUFBSWhHLE9BQU9vRyxzQkFBc0IzRyxHQUNyQyxJQUFLRCxFQUFJLEVBQUdBLEVBQUl3RyxFQUFFVixPQUFROUYsSUFBS1IsRUFBSWdILEVBQUV4RyxJQUFLLElBQU1GLEVBQUU0RyxRQUFRbEgsSUFBTSxDQUFFLEVBQUNxSCxxQkFBcUIxRyxLQUFLRixFQUFHVCxLQUFPTyxFQUFFUCxHQUFLUyxFQUFFVCxHQUNqSCxDQUNELE9BQU9PLENBQ1QsQ0R1QlMrRyxDQUFBYixFQUFBYyxHQUFBLE9BRVB6RCxFQUFBLFFBQUFoQyxjQUFBLE1BQUEsQ0FDRWlDLFVBQVdDLEVBQU8sNEJBQ2xCbkMsTUFBTyxDQUFFLFVBQVdpRixFQUFPLE9BQVMsU0FFbkNGLEdBQVdELEdBQ1Y3QyxFQUFBQSxRQUFBaEMsY0FBQSxNQUFBZCxPQUFBaUQsT0FBQSxDQUFBLEVBQ004QyxFQUFJLENBQ1JoRCxVQUFXQSxFQUNYNkMsUUFBU0EsRUFDVEMsV0FBWUEsRUFDWlcsS0FBSyxTQUNMQyxTQUFTLE1BRVJmLEtBTUhnQixFQUFzQkEsQ0FDMUJDLEVBQ0FDLEVBQ0FDLEdBQWtCLEtBRWxCLE1BQU1DLEVBQWVILEVBQXFCVCxRQUFRVSxHQUlsRCxPQUhJRSxHQUFnQixHQUNsQkgsRUFBcUJJLE9BQU9ELEVBQWMsR0FFckNELEVBQ0hGLEVBQXFCeEQsSUFBSWpELEdBQ3ZCQSxFQUFRMEcsRUFBdUIxRyxFQUFRLEVBQUlBLEdBRTdDeUcsR0FHQUssRUFBMkJDLElBQy9CLE1BRU01RCxFQUFPNEQsSUFBVUEsRUFBTTVELEtBQU80RCxFQUFNQyxPQUFTRCxFQUFNRSxVQUFhLEdBQ3RFLFNBQUs5RCxJQUhTLENBQUMsR0FBSSxJQUFLLFlBR0wrRCxPQUZMLENBQUMsR0FBSSxVQUVjN0IsU0FBU2xDLE1BRzFDNEQsRUFBTUksa0JBQ0MsSUFHSG5ILEVBQVFvSCxHQUNYQSxHQUFZQSxFQUFTQyxTQUNyQkQsR0FBWUEsRUFBU0UsS0FBT0YsRUFBU0csT0FBUyxxQkFDL0MsR0FFSUMsRUFBa0JKLEdBQ3RCQSxJQUE2QixJQUFqQkEsRUFBU0UsSUFBZSxXQUFhLDBCQWNuRGxFLFFBQUFDLElBQUFDLFdBQUFnQyxFQUF1Qi9CLFVBQVksQ0FDakNpQyxTQUFVaEMsRUFBUyxRQUFDTyxLQUNwQmxCLFVBQVdXLEVBQUFBLFFBQVVNLE9BQU9KLFdBQzVCK0IsUUFBU2pDLEVBQUFBLFFBQVVpRSxLQUFLL0QsV0FDeEJnQyxRQUFTbEMsRUFBQUEsUUFBVUcsS0FBS0QsV0FDeEJpQyxXQUFZbkMsRUFBQUEsUUFBVUcsS0FBS0QsV0FDM0JrQyxLQUFNcEMsRUFBUyxRQUFDaUUsT0FHbEJuQyxFQUF1Qm9DLGFBQWUsQ0FDcENsQyxjQUFVUCxFQUNWVyxNQUFNLEdBNEZSLE1BQU0rQixFQUFnQm5FLGVBQUhKLFFBQUFDLElBQUFDLFNBQUdFLEVBQVMsUUFBQ0ssTUFBTSxDQUNwQ3dELFFBQVM3RCxFQUFTLFFBQUNNLE9BQ25COEQsSUFBS3BFLEVBQVMsUUFBQ0MsT0FDZm9FLElBQUtyRSxFQUFTLFFBQUNDLE9BQ2ZxRSxjQUFldEUsRUFBUyxRQUFDQyxTQUN6QixDQUFBLEVBRUYsTUFBTXNFLFVBQTJCbkYsRUFBSyxRQUFDb0YsVUE0RXJDL0ksV0FBQUEsQ0FBWWdKLEdBQ1ZDLE1BQU1ELEdBQU9wSSxFQUFBc0ksS0FBQSxpQkFPRTdILElBQ2Y2SCxLQUFLQyxTQUFTQyxJQUFjLENBQUVDLEtBQU0sSUFBSUQsRUFBVUMsS0FBTWhJLFFBQ3pEVCwyQkFFbUIsS0FDbEIsTUFBTTBJLFlBQUVBLEdBQWdCSixLQUFLRixNQUN4Qk0sR0FBZ0JBLEVBQVlYLEtBQy9CTyxLQUFLSyxNQUFNRixLQUFLLEdBQUdHLFVBRXRCNUksRUFBQXNJLEtBQUEsa0JBRWlCTyxJQUNTLElBQXJCQSxFQUFVdEQsT0FJZCtDLEtBQUtGLE1BQU1VLGdCQUFnQkQsRUFBVUUsT0FBT0MsSUFBTzlELEVBQWdCOEQsS0FIakVWLEtBQUtGLE1BQU1VLGdCQUFnQixNQUk5QjlJLEVBQUFzSSxLQUFBLGlDQUVnQzVHLElBQy9CLE1BQU11SCxrQkFBRUEsR0FBc0JYLEtBQUtLLE1BQ25DTCxLQUFLQyxTQUFTLENBQ1pVLGtCQUFtQkEsRUFBa0J6RCxTQUFTOUQsR0FDMUNpRixFQUFvQnNDLEVBQW1CdkgsR0FDdkN1SCxFQUFrQjVCLE9BQU8sQ0FBQzNGLFFBRWpDMUIsRUFFaUNzSSxLQUFBLGtDQUFBLENBQUNZLEVBQW9CMUosS0FDakQ4SSxLQUFLRixNQUFNZSxtQkFDYmIsS0FBS0YsTUFBTWUsa0JBQWtCLENBQzNCQyxPQUFRLDJCQUNSQyxTQUFVLG9CQUNWQyxLQUFNSixFQUFxQixLQUcvQixNQUFNTCxVQUFFQSxHQUFjUCxLQUFLRixNQUMzQlMsRUFBVXJKLEdBQUd5SSxjQUFnQmxJLE9BQU93SixTQUFTTCxFQUFvQixJQUNqRVosS0FBS1EsZ0JBQWdCRCxLQUN0QjdJLEVBRWdDc0ksS0FBQSxpQ0FBQSxDQUFDa0IsRUFBa0JoSyxLQUNsRDhJLEtBQUtGLE1BQU1xQiwrQkFBK0JELEVBQWtCaEssS0FDN0RRLEVBQUFzSSxLQUFBLDRCQUUyQjVHLElBQ3RCNEcsS0FBS0YsTUFBTWUsbUJBQ2JiLEtBQUtGLE1BQU1lLGtCQUFrQixDQUMzQkMsT0FBUSx3QkFDUkMsU0FBVSxvQkFDVkMsS0FBTSxPQUdWLE1BQU1MLGtCQUFFQSxHQUFzQlgsS0FBS0ssT0FDN0JFLFVBQUVBLEdBQWNQLEtBQUtGLE1BQzNCUyxFQUFVN0IsT0FBT3RGLEVBQWUsR0FDaEM0RyxLQUFLQyxTQUNILENBQ0VVLGtCQUFtQnRDLEVBQ2pCc0MsRUFDQXZILEdBQ0EsSUFHSixJQUFNNEcsS0FBS1EsZ0JBQWdCRCxNQUU5QjdJLGdDQUV3QixLQUNuQnNJLEtBQUtGLE1BQU1lLG1CQUNiYixLQUFLRixNQUFNZSxrQkFBa0IsQ0FDM0JDLE9BQVEscUJBQ1JDLFNBQVUsb0JBQ1ZDLEtBQU0sd0JBR1YsTUFBTVQsVUFBRUEsR0FBY1AsS0FBS0YsTUFDM0JTLEVBQVVhLEtBdFdvQyxDQUFFLEdBeVdoRHBCLEtBQUtDLFNBQVNELEtBQUtLLFNBQ3BCM0ksOEJBRXNCLEtBQ2pCc0ksS0FBS0YsTUFBTWUsbUJBQ2JiLEtBQUtGLE1BQU1lLGtCQUFrQixDQUMzQkMsT0FBUSxxQ0FDUkMsU0FBVSxvQkFDVkMsS0FBTSxPQUdWLE1BQU1ULFVBQUVBLEdBQWNQLEtBQUtGLE1BQzNCUyxFQUFVYyxVQUNWckIsS0FBS0YsTUFBTXdCLGNBQ1o1SixFQUVpQjZKLEtBQUFBLGtCQUFBQSxHQUNoQixHQUFHQSxFQUFpQixNQUFNdkIsS0FBS0YsTUFBTTdJLEVBQUUsZUFBZ0IsQ0FDckR1SyxJQUFLeEIsS0FBS0YsTUFBTTJCLFVBeEdsQnpCLEtBQUtLLE1BQVEsQ0FDWE0sa0JBQW1CLEdBQ25CUixLQUFNLEdBRVYsQ0F1R0F1QixNQUFBQSxHQUNFLE1BQU1DLE9BQ0pBLEVBQU1DLGdCQUNOQSxFQUFlQyxjQUNmQSxFQUFhQyxpQkFDYkEsRUFBZ0J2QixVQUNoQkEsRUFBU3dCLGtCQUNUQSxFQUFpQkMsdUJBQ2pCQSxFQUFzQkMsWUFDdEJBLEVBQVdDLGNBQ1hBLEVBQWFDLGdCQUNiQSxFQUFlQyxvQkFDZkEsRUFBbUJuTCxFQUNuQkEsRUFDQXdLLEtBQU1ELEdBQ0p4QixLQUFLRixPQUNIdUMsUUFBRUEsR0FBWXJDLEtBQUtGLE1BQU13QyxRQUN6QjNCLGtCQUFFQSxHQUFzQlgsS0FBS0ssTUFDN0JrQyxFQXJVa0J0TCxLQUMxQixNQUFNdUwsRUFBYyxHQUNwQixJQUFLLElBQUl0TCxFQUFJLEVBQUdBLEdBQUssRUFBR0EsSUFBSyxDQUMzQixNQUFNdUwsRUFBcUIsR0FBSnZMLEVBQ3ZCc0wsRUFBWXBCLEtBQUssQ0FDZjlHLFlBQWEsR0FBR21JLEtBQWtCeEwsRUFBRSxrQkFDcENZLE1BQXdCLEdBQWpCNEssR0FFWCxDQUNBLE9BQU9ELEdBNFRhRSxDQUFvQnpMLEdBRWhDMEwsRUFBZ0NBLENBQ3BDOUYsRUFDQStGLEVBSDRCLElBSXhCL0YsR0FBWUEsRUFBUzhDLGVBQWtCaUQsRUFDdkNDLEVBQWlDOUgsR0FDckM0RixFQUFrQnpELFNBQVNuQyxHQUM3QixPQUNFTixFQUFBLFFBQUFoQyxjQUFBLE1BQUEsQ0FDRWlDLFVBQVdHLEVBQUFBLFFBQ1RGLEVBQU8scUJBRUVxRixLQUFLRixNQUFNZ0QsbUJBR3RCdEssTUFBTyxDQUNMLFVBQVc2SixFQUNYLHVCQUF3QkosRUFBWWMsU0FHckMsSUFDQW5CLEVBQ0NuSCxFQUFBQSxRQUFBaEMsY0FBQSxNQUFBLEtBQ0VnQyxFQUFBQSxRQUFBaEMsY0FBQSxLQUFBLENBQUlpQyxVQUFXQyxFQUFPLGlDQUNuQixJQUNBaUgsSUFHSCxLQUNKbkgsRUFBQSxRQUFBaEMsY0FBQSxNQUFBLENBQUtpQyxVQUFXQyxFQUFPLDJCQUNyQkYsRUFBQSxRQUFBaEMsY0FBQ3VLLFVBQWEsQ0FDWkMsV0FBWWpELEtBQUtGLE1BQU1tRCxXQUN2QjFKLEtBQUssWUFDTEYsR0FBRyxTQUNINkosV0FDdUIsSUFBckJwQixLQUVLOUIsS0FBS0YsTUFBTWdELFdBQWFuQixFQUFPbEMsS0FFdEMwRCxTQUFVbkQsS0FBS29ELGVBQ2ZDLFNBQVVyRCxLQUFLRixNQUFNdUQsU0FDckIzSSxVQUFXMkUsRUFBZ0JzQyxHQUMzQjJCLFlBQWF0RCxLQUFLRixNQUFNeUQsa0JBQ3hCMUwsTUFBT0EsRUFBTThKLEdBQ2JFLGNBQWVBLEVBQ2YyQixvQkFBcUJ4RCxLQUFLRixNQUFNMEQsb0JBQ2hDQyxTQUFVekQsS0FBS0YsTUFBTTJELFNBQ3JCQyxRQUFTMUQsS0FBS0YsTUFBTTRELFFBQ3BCQyxZQUFhekIsR0FBaUJsQyxLQUFLNEQsa0JBQ25DbkMsS0FBTXpCLEtBQUtGLE1BQU0yQixLQUNqQm9DLFFBQVM3RCxLQUFLRixNQUFNK0QsUUFDcEJDLFFBQVM5RCxLQUFLRixNQUFNZ0UsUUFDcEJDLGNBQWUvRCxLQUFLRixNQUFNaUUsY0FDMUJqQixTQUFVOUMsS0FBS0YsTUFBTWdELFNBQ3JCUixPQUFRdEMsS0FBS0YsTUFBTXdDLE9BQ25CMEIsWUFBYWpDLEVBQ2JFLFlBQWFqQyxLQUFLRixNQUFNbUMsWUFDeEJnQyxRQUFTakUsS0FBS0YsTUFBTW1FLFFBQ3BCQyxXQUFZbEUsS0FBS0YsTUFBTW9FLFdBQ3ZCQyxXQUFZbkUsS0FBS0YsTUFBTXFFLGNBRXZCaEMsR0FBbUJDLElBQ25CM0gsRUFBQUEsUUFBQWhDLGNBQUMwRSxFQUFzQixDQUNyQnpDLFVBQVdDLEVBQU95SixTQUNsQjlHLFFBQVM2RSxFQUNUNUUsUUFBU0EsSUFBTXlDLEtBQUtxRSx1QkFDcEI3RyxXQUFZcEcsR0FDVnVILEVBQXlCdkgsSUFBTTRJLEtBQUtxRSx1QkFFdEMsYUFBWXBOLEVBQUUsMEJBQTJCLENBQUV1SyxTQUUzQy9HLEVBQUEsUUFBQWhDLGNBQUM2TCxVQUFJLENBQUNDLElBQUksV0FBV0MsTUFBT25DLE1BSVosSUFBckI5QixFQUFVdEQsUUFDVHhDLEVBQUEsUUFBQWhDLGNBQUEsTUFBQSxDQUFLaUMsVUFBV0MsRUFBTyx3QkFDckJGLEVBQUEsUUFBQWhDLGNBQUEsTUFBQSxDQUFLaUMsVUFBV0MsRUFBTzhKLGFBRzNCaEssRUFBQUEsUUFBQWhDLGNBQUNpTSxnQkFBYSxDQUNaaEssVUFBV0MsRUFBTyx1QkFDbEJnSyxLQUFNcEUsRUFDTnFFLE9BQVEsSUFBSWpLLEVBQU8scUJBQ25Ca0ssVUFBVyxJQUNYQyxTQUFVdkUsRUFBVXRELFFBQVUsRUFDOUI4SCxRQUFTNUssSUFDUCxNQUFNNkssRUFBZTdLLEVBQU1zRyxPQUFPQyxJQUFPOUQsRUFBZ0I4RCxJQUNyRHNFLEVBQWEvSCxPQUFTLEdBQ3hCK0MsS0FBS0YsTUFBTVUsZ0JBQWdCd0UsS0FJOUJ6RSxFQUFVekYsSUFBSSxDQUFDbkUsRUFBR08sSUFDakJ1RCxFQUFBLFFBQUFoQyxjQUFBLE1BQUEsQ0FDRWlDLFVBQVdHLEVBQUUsUUFBQ0YsRUFBTyx1QkFDckJLLElBQUssWUFBWTlELEtBRWpCdUQsRUFBQSxRQUFBaEMsY0FBQSxNQUFBLENBQUtpQyxVQUFXQyxFQUFPLDBCQUNyQkYsRUFBQSxRQUFBaEMsY0FBQSxNQUFBLENBQUtpQyxVQUFXQyxFQUFPc0ssS0FDckJ4SyxFQUFBLFFBQUFoQyxjQUFBLE1BQUEsQ0FDRWlDLFVBQVdDLEVBQU8sbUJBQ2xCbkMsTUFBTytILEVBQVV0RCxPQUFTLEVBQUksQ0FBRWlJLE9BQVEsUUFBVyxDQUFDLEdBRW5EM0UsRUFBVXRELE9BQVMsR0FDbEJ4QyxFQUFBQSxRQUFBaEMsY0FBQzZMLEVBQUFBLFFBQUksQ0FBQ0MsSUFBSSxXQUFXWSxPQUFRLEdBQUlYLE1BQU9uQyxLQUc1QzVILEVBQUFBLFFBQUFoQyxjQUFBLE1BQUEsQ0FDRWlDLFVBQ0UsR0FBR0MsRUFBTywrQkFDUkEsRUFBTyxZQUFZekQsRUFBSSxRQUkzQnVELEVBQUEsUUFBQWhDLGNBQUN1SyxVQUFhLENBQ1pDLFdBQVlqRCxLQUFLRixNQUFNbUQsV0FDdkIxSixLQUFLLFlBQ0xGLEdBQUcsWUFDSCtMLFVBQVduTyxFQUFFLGtCQUFtQixDQUM5QjhELE1BQU83RCxFQUFJLEVBQ1hzSyxRQUVGMEIsV0FDdUIsSUFBckJwQixJQUFxQzlCLEtBQUtGLE1BQU1nRCxTQUVsRFEsWUFBWSxZQUNaNUksVUFBVSxXQUNWbUgsY0FBZUEsRUFDZndCLFNBQVVyRCxLQUFLRixNQUFNdUQsU0FDckJ4TCxNQUFRbEIsR0FBS0EsRUFBRXVJLFNBQVksR0FDM0J1RSxTQUFVekQsS0FBS0YsTUFBTTJELFNBQ3JCQyxRQUFTMUQsS0FBS0YsTUFBTTRELFFBQ3BCMkIsZ0JBQWlCaEwsR0FDZjJGLEtBQUttQiwrQkFBK0I5RyxFQUFNbkQsR0FFNUN1SyxLQUFNekIsS0FBS0YsTUFBTTJCLEtBQ2pCb0MsUUFBUzdELEtBQUtGLE1BQU0rRCxRQUNwQkMsUUFBUzlELEtBQUtGLE1BQU1nRSxRQUNwQkMsY0FBZS9ELEtBQUtGLE1BQU1pRSxjQUMxQlAsb0JBQXFCeEQsS0FBS0YsTUFBTTBELG9CQUNoQ1YsU0FBVTlDLEtBQUtGLE1BQU1nRCxTQUNyQmIsWUFBYWpDLEtBQUtGLE1BQU1tQyxZQUN4QmdDLFFBQVNqRSxLQUFLRixNQUFNbUUsUUFDcEIzQixPQUFRdEMsS0FBS0YsTUFBTXdDLE9BQ25CNEIsV0FBWWxFLEtBQUtGLE1BQU1vRSxjQUcxQmxFLEtBQUtGLE1BQU13RixrQkFDVjdLLEVBQUEsUUFBQWhDLGNBQUMwRSxFQUFzQixDQUNyQnpDLFVBQVdDLEVBQU8sdUJBQ2xCMkMsUUFBUzBDLEtBQUtGLE1BQU1zQyxvQkFDcEI3RSxRQUFTQSxJQUFNeUMsS0FBS3VGLCtCQUErQnJPLEdBQ25Ec0csV0FBWXBHLEdBQ1Z1SCxFQUF5QnZILElBQ3pCNEksS0FBS3VGLCtCQUErQnJPLEdBRXRDLGFBQVlELEVBQ1Y0TCxFQUErQjNMLEdBQzNCLHFDQUNBLHNDQUNKLENBQUU2RCxNQUFPN0QsRUFBSSxFQUFHc0ssUUFFbEIvRCxNQUFJLEdBRUpoRCxFQUFBLFFBQUFoQyxjQUFDNkwsVUFBSSxDQUFDQyxJQUFJLE9BQU9DLE1BQU9uQyxPQUk1QlEsRUFBK0IzTCxJQUMvQnFKLEVBQVVySixJQUNWcUosRUFBVXJKLEdBQUd5SSxjQUFnQixHQUMzQmxGLEVBQUEsUUFBQWhDLGNBQUEsT0FBQSxDQUFNaUMsVUFBV0MsRUFBTyx3QkFBeUIsR0FBRzFELEVBQ2xELHdCQUNBLENBQ0V1SyxZQUVFeEIsS0FBS3dGLGdCQUNUakYsRUFBVXJKLEdBQUd5SSxrQkFHbkJsRixVQUFBaEMsY0FBQSxNQUFBLENBQ0VpQyxVQUFXRyxFQUFBQSxRQUFHRixFQUFPLG1DQUNQa0ksRUFBK0IzTCxJQUM1QyxjQUVEdUQsRUFBQSxRQUFBaEMsY0FBQSxNQUFBLENBQUtpQyxVQUFXQyxFQUFPLG1CQUNyQkYsRUFBQSxRQUFBaEMsY0FBQ1EsRUFBTSxDQUNMSSxHQUFJLGtCQUFrQm5DLElBQ3RCb0MsTUFBT3JDLEVBQUUsd0JBQXlCLENBQUV1SyxRQUNwQ3RJLFFBQVNxSixFQUNUMUssTUFBTzhLLEVBQThCcEMsRUFBVXJKLElBQy9Da0MsY0FBZWxDLEVBQ2ZxQyxLQUNFa0IsRUFBQUEsUUFBQWhDLGNBQUEsT0FBQSxDQUNFaUMsVUFBVyxHQUFHQyxFQUFPLG9CQUFvQkEsRUFBTyxzQkFFaERGLEVBQUEsUUFBQWhDLGNBQUM2TCxVQUFJLENBQUNDLElBQUksT0FBT0MsTUFBT25DLEtBRzVCbEosb0JBQXFCNkcsS0FBS3lGLHFDQUtsQ2hMLFVBQUFoQyxjQUFDMEUsRUFBc0IsQ0FDckJ6QyxVQUFXQyxFQUFPLG9CQUNsQjJDLFFBQVMwQyxLQUFLRixNQUFNc0Msb0JBQ3BCN0UsUUFBU0EsSUFBTXlDLEtBQUswRiwwQkFBMEJ4TyxHQUM5Q3NHLFdBQVlwRyxHQUNWdUgsRUFBeUJ2SCxJQUN6QjRJLEtBQUswRiwwQkFBMEJ4TyxHQUVqQyxhQUFZRCxFQUFFLDBCQUEyQixDQUN2QzhELE1BQU83RCxFQUFJLEVBQ1hzSyxTQUdGL0csRUFBQSxRQUFBaEMsY0FBQzZMLFVBQUksQ0FBQ0MsSUFBSSxRQUFRQyxNQUFPbkMsUUFLakM1SCxFQUFBQSxRQUFBaEMsY0FBQSxNQUFBLENBQUtpQyxVQUFXQyxFQUFPLGdDQUNyQkYsRUFBQSxRQUFBaEMsY0FBQ3VLLFVBQWEsQ0FDWkMsV0FBWWpELEtBQUtGLE1BQU1tRCxXQUN2QjFKLEtBQUssWUFDTEYsR0FBRyxjQUNINkosV0FDdUIsSUFBckJwQixLQUVLOUIsS0FBS0YsTUFBTWdELFdBQWFyTCxPQUFPa08sTUFBTWhFLEVBQU9sQyxNQUVuRDBELFNBQVVuRCxLQUFLb0QsZUFDZkUsWUFBYXRELEtBQUtGLE1BQU04Rix1QkFDeEJsTCxVQUFXMkUsRUFBZ0JXLEtBQUtGLE1BQU1NLGFBQ3RDb0Qsb0JBQXFCeEQsS0FBS0YsTUFBTTBELG9CQUNoQzNCLGNBQWVBLEVBQ2Y0QixTQUFVekQsS0FBS0YsTUFBTTJELFNBQ3JCQyxRQUFTMUQsS0FBS0YsTUFBTTRELFFBQ3BCTCxTQUFVckQsS0FBS0YsTUFBTXVELFNBQ3JCeEwsTUFBT0EsRUFBTW1JLEtBQUtGLE1BQU1NLGFBQ3hCcUIsS0FBTXpCLEtBQUtGLE1BQU0yQixLQUNqQm9DLFFBQVM3RCxLQUFLRixNQUFNK0QsUUFDcEJDLFFBQVM5RCxLQUFLRixNQUFNZ0UsUUFDcEJDLGNBQWUvRCxLQUFLRixNQUFNaUUsY0FDMUJqQixTQUFVOUMsS0FBS0YsTUFBTWdELFNBQ3JCa0IsWUFBYWhDLEVBQ2JDLFlBQWFqQyxLQUFLRixNQUFNbUMsWUFDeEJnQyxRQUFTakUsS0FBS0YsTUFBTW1FLFFBQ3BCM0IsT0FBUXRDLEtBQUtGLE1BQU13QyxPQUNuQjRCLFdBQVlsRSxLQUFLRixNQUFNb0UsV0FDdkJDLFdBQVluRSxLQUFLRixNQUFNcUUsY0FFdkJoQyxHQUFtQkMsSUFDbkIzSCxFQUFBQSxRQUFBaEMsY0FBQzBFLEVBQXNCLENBQ3JCekMsVUFBV0csRUFBRSxRQUFDRixFQUFPLGlCQUFrQkEsRUFBT2tMLEtBQ2pDdEYsRUFBVXRELE9BQVMsZ0JBRWhDSyxRQUFTOEUsR0FBNEMsSUFBckI3QixFQUFVdEQsT0FDMUNNLFFBQVNBLElBQU15QyxLQUFLOEYseUJBQ3BCdEksV0FBWXBHLEdBQ1Z1SCxFQUF5QnZILElBQU00SSxLQUFLOEYseUJBRXRDLGFBQVk3TyxFQUFFLHVCQUF3QixDQUFFdUssU0FFeEMvRyxFQUFBLFFBQUFoQyxjQUFDNkwsVUFBSSxDQUNIQyxJQUFJLFdBQ0p3QixNQUFPLEtBQ1BDLE9BQVEsTUFDUnhCLE1BQU9uQyxNQU9yQixFQUNEM0ssRUFsZUtrSSxFQTBDa0IsZUFBQSxDQUNwQitCLFlBQVE3RSxFQUNSc0QsaUJBQWF0RCxFQUNieUQsVUFBVyxHQUNYZ0Qsa0JBQW1CLGNBQ25CcUMsdUJBQXdCLG1CQUN4QnRFLGVBQVd4RSxFQUNYMEQsZ0JBQWlCQSxPQUNqQm9CLHFCQUFpQjlFLEVBQ2pCK0csUUFBUyxHQUNUQyxRQUFTLEdBQ1RDLG1CQUFlakgsRUFDZjRHLGFBQVM1RyxFQUNUMEcseUJBQXFCMUcsRUFDckJ1RyxjQUFVdkcsRUFDVitELHVCQUFtQi9ELEVBQ25CZ0Ysa0JBQWtCLEVBQ2xCZ0IsVUFBVSxFQUNWM0Isb0NBQWdDckUsRUFDaENpRixrQkFBbUIsS0FDbkJDLHVCQUF3QixLQUN4QmlDLGFBQVNuSCxFQUNUd0YsT0FBUTJELEVBQWFBLGNBQ3JCaEUsWUFBYSxDQUNYYyxPQUFRLEtBRVZtQixZQUFZLEVBQ1poQyxtQkFBZXBGLEVBQ2ZxSCxZQUFZLEVBQ1poQyxpQkFBaUIsRUFDakJDLHFCQUFxQixFQUNyQmtELGtCQUFrQixtQkFDbkJySyxRQUFBQyxJQUFBQyxXQTFFR3lFLEVBQ0d4RSxVQUFZLENBQ2pCNkgsV0FBWTVILEVBQUFBLFFBQVVNLE9BQU9KLFdBQzdCb0csT0FBUW5DLEVBQ1JZLFlBQWFaLEVBQ2IrRCxrQkFBbUJsSSxFQUFTLFFBQUNNLE9BQzdCaUssdUJBQXdCdkssRUFBUyxRQUFDTSxPQUNsQzRFLFVBQVdsRixFQUFBQSxRQUFVSSxRQUFRK0QsR0FDN0JnQixnQkFBaUJuRixFQUFTLFFBQUNHLEtBQzNCMkYsK0JBQWdDOUYsRUFBUyxRQUFDRyxLQUMxQzhGLFVBQVdqRyxFQUFTLFFBQUNHLEtBQ3JCb0csZ0JBQWlCdkcsRUFBUyxRQUFDTSxPQUMzQmtHLGNBQWV4RyxFQUFTLFFBQUNLLE1BQU0sQ0FDN0J3SyxXQUFZN0ssRUFBUyxRQUFDTSxTQUNyQkosV0FDSGtJLFNBQVVwSSxFQUFBQSxRQUFVRyxLQUFLRCxXQUN6Qm1JLFFBQVNySSxFQUFTLFFBQUNHLEtBQ25CcUYsa0JBQW1CeEYsRUFBUyxRQUFDRyxLQUM3QmlHLEtBQU1wRyxFQUFBQSxRQUFVTSxPQUFPSixXQUN2QnVHLGlCQUFrQnpHLEVBQVMsUUFBQ2lFLEtBQzVCdUUsUUFBU3hJLEVBQVMsUUFBQ0ksUUFBUUosRUFBQUEsUUFBVU0sUUFDckNtSSxRQUFTekksRUFBUyxRQUFDSSxRQUFRSixFQUFBQSxRQUFVTSxRQUNyQ29JLGNBQWUxSSxFQUFTLFFBQUNHLEtBQ3pCc0gsU0FBVXpILEVBQVMsUUFBQ2lFLEtBQ3BCeUMsa0JBQW1CMUcsRUFBUyxRQUFDTSxPQUM3QnFHLHVCQUF3QjNHLEVBQVMsUUFBQ00sT0FDbEMwSCxTQUFVN0QsRUFDVnlFLFFBQVM1SSxFQUFTLFFBQUNNLE9BQ25CMkcsT0FBUWpILEVBQVMsUUFBQzhLLFNBQVM5SyxFQUFBQSxRQUFVTSxRQUNyQzZILG9CQUFxQm5JLEVBQVMsUUFBQzhLLFNBQVM5SyxFQUFBQSxRQUFVRyxNQUNsRHlHLFlBQWE1RyxFQUFTLFFBQUNLLE1BQU0sQ0FDM0JxSCxPQUFRMUgsRUFBUyxRQUFDQyxTQUVwQjRJLFdBQVk3SSxFQUFTLFFBQUNpRSxLQUN0QjRDLGNBQWU3RyxFQUFTLFFBQUNHLEtBQ3pCMkksV0FBWTlJLEVBQVMsUUFBQ2lFLEtBQ3RCNkMsZ0JBQWlCOUcsRUFBUyxRQUFDaUUsS0FDM0I4QyxvQkFBcUIvRyxFQUFTLFFBQUNpRSxLQUMvQmdHLGlCQUFrQmpLLEVBQVMsUUFBQ2lFLEtBQzVCckksRUFBR29FLEVBQUFBLFFBQVVHLEtBQUtELGFBNmJ0QixNQUFNNkssRUFBb0NDLEVBQUFBLGlCQUFBQSxDQUFrQnpHLGFBRTdDRSxHQUVYckYsRUFBQSxRQUFBaEMsY0FBQzZOLGtCQUFlLENBQUN6SyxLQUFNQSxHQUNyQnBCLEVBQUEsUUFBQWhDLGNBQUMyTixFQUFzQ3RHIn0=
|
package/lib/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("classnames"),require("prop-types"),require("react"),require("react-i18next"),require("react-sortablejs"),require("@digitransit-component/digitransit-component-autosuggest"),require("@digitransit-component/digitransit-component-icon"),require("lodash/isEmpty"),require("downshift"),require("i18next")):"function"==typeof define&&define.amd?define(["exports","classnames","prop-types","react","react-i18next","react-sortablejs","@digitransit-component/digitransit-component-autosuggest","@digitransit-component/digitransit-component-icon","lodash/isEmpty","downshift","i18next"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-autosuggest-panel"]={},e.cx,e.PropTypes,e.React,e.reactI18next,e.reactSortablejs,e.DTAutosuggest,e.Icon,e.isEmpty,e.downshift,e.i18next)}(this,function(e,t,n,i,a,o,s,l,r,c,p){"use strict";function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=d(t),_=d(n),h=d(i),g=d(s),f=d(l),y=d(r);function v(e){return v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},v(e)}function m(e){var t=function(e,t){if("object"!=v(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=v(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==v(t)?t:t+""}function b(e,t,n){return(t=m(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function x(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&i.firstChild?i.insertBefore(a,i.firstChild):i.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}var k="select_combobox-container__0lRpm",w="select_left-column__cSrMR",S="select_combobox-label__F9Ayd",E="select_container__yrA-N",P="select_suggestion__b05iD",N="select_suggestionHighlighted__ZFPWo",C="select_suggestionsContainerOpen__9wcJ5",A="select_input__pK5vk";x(".select_combobox-container__0lRpm {\n background-color: #fff;\n border: solid #888 1px;\n display: flex;\n align-items: center;\n border-radius: 5px;\n height: 50px;\n justify-content: space-between;\n flex-grow: 1;\n}\n.select_combobox-container__0lRpm:focus-within {\n border-color: #007ac9;\n}\n.select_combobox-container__0lRpm .select_left-column__cSrMR {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.select_combobox-label__F9Ayd {\n font-size: 12px;\n line-height: 20px;\n color: #666;\n letter-spacing: -0.48px;\n margin-left: 12px;\n margin-top: 4px;\n}\n\n.select_container__yrA-N {\n position: relative;\n width: 100%;\n height: 100%;\n}\n.select_container__yrA-N > div {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: 100%;\n cursor: pointer;\n}\n.select_container__yrA-N .select_suggestion__b05iD {\n font-size: 15px;\n line-height: 49px;\n height: 50px;\n padding: 0 0 0 12px;\n letter-spacing: -0.6px;\n color: #333;\n font-weight: 500;\n}\n.select_container__yrA-N .select_suggestionHighlighted__ZFPWo {\n font-size: 15px;\n font-weight: 500;\n background: #f2f5f7;\n}\n.select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 {\n position: absolute;\n background-color: #fff;\n z-index: 20;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: calc(100% + 4px);\n left: 0;\n width: 100%;\n list-style-type: none;\n padding: 0;\n margin: 0;\n}\n.select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 ul {\n padding: 0;\n margin: 0;\n}\n.select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 li:not(:last-child) {\n border-bottom: 1px solid #ddd;\n}\n.select_container__yrA-N .select_input__pK5vk {\n -webkit-appearance: none;\n appearance: none;\n margin: -4px 0 0 0;\n padding-left: 12px;\n border: none;\n height: 26px;\n}\n.select_container__yrA-N .select_input__pK5vk:focus {\n outline: none;\n border: none;\n box-shadow: none;\n background: #fff;\n}\n.select_container__yrA-N .select_input__pK5vk:read-only {\n cursor: pointer;\n background: #fff;\n}\n.select_container__yrA-N .select_input__pK5vk {\n background: #fff;\n font-weight: 500;\n box-shadow: none;\n font-size: 15px;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.6px;\n color: #333;\n}");const V=({value:e,options:t,onSlackTimeSelected:n,viaPointIndex:i,id:a,label:o,icon:s})=>{const l=`${a}-label`,r=t.find(t=>t.value===e),{isOpen:p,getToggleButtonProps:d,getMenuProps:_,getItemProps:g,getLabelProps:f,highlightedIndex:y}=c.useSelect({selectedItem:r,items:t,labelId:l,id:a,itemToString:e=>e.displayName,onSelectedItemChange:({selectedItem:e})=>{n(e.value,i)}});return h.default.createElement("div",{className:k},h.default.createElement("div",{className:E},h.default.createElement("div",d(),h.default.createElement("span",{className:w},h.default.createElement("label",Object.assign({},f(),{className:S}),o),h.default.createElement("div",{className:A},h.default.createElement("span",null,r.displayName))),s),h.default.createElement("ul",Object.assign({className:u.default(C,!p&&"hidden")},_()),p&&t.map((e,t)=>h.default.createElement("li",Object.assign({key:e.value,className:u.default(P,t===y&&N)},g({index:t})),h.default.createElement("span",null,e.displayName))))))};"production"!==process.env.NODE_ENV&&(V.propTypes={value:_.default.number.isRequired,onSlackTimeSelected:_.default.func.isRequired,options:_.default.arrayOf(_.default.shape({displayName:_.default.string.isRequired,value:_.default.number.isRequired}).isRequired).isRequired,id:_.default.string.isRequired,label:_.default.node.isRequired,icon:_.default.node.isRequired,viaPointIndex:_.default.number.isRequired});const O=p.createInstance({fallbackLng:"fi",resources:{de:{translation:{"add-via-button-label":"Füge Zwischenziel hinzu","add-via-duration-button-label":"Setze Umsteigezeit für Zwischenziel {{index}}","add-via-duration-button-label-close":"Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}","add-via-duration-button-label-open":"Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}","minute-short":"min","remove-via-button-label":"Entferne Zwischenziel {{index}}","swap-order-button-label":"Tausche Start mit Ziel","via-point":"Zwischenziel","via-point-index":"Zwischenziel {{index}}","viapoint-slack-amount":"Umsteigezeit"}},en:{translation:{"add-via-button-label":"Add via point","add-via-duration-button-label":"Set stop duration at via point {{index}}","add-via-duration-button-label-close":"Close stop duration selector at via point {{index}}","add-via-duration-button-label-open":"Open stop duration selector at via point {{index}}","minute-short":"min","remove-via-button-label":"Remove via point {{index}}","swap-order-button-label":"Reverse origin and destination","via-point":"Via point","via-point-index":"Via point {{index}}","viapoint-slack-amount":"Stop duration"}},fi:{translation:{"add-via-button-label":"Lisää välipiste","add-via-duration-button-label":"Aseta välipisteelle {{index}} pysähdyksen kesto","add-via-duration-button-label-close":"Avaa välipisteen {{index}} pysähdyksen kesto valitsin","add-via-duration-button-label-open":"Sulje välipisteen {{index}} pysähdyksen kesto valitsin","minute-short":"min","remove-via-button-label":"Poista välipiste {{index}}","swap-order-button-label":"Käännä reitin suunta vastakkaiseksi","via-point":"Välipiste","via-point-index":"Välipiste {{index}}","viapoint-slack-amount":"Pysähdyksen kesto"}},pl:{translation:{"add-via-button-label":"Dodaj punkt pośredni","add-via-duration-button-label":"Wybierz czas postoju dla punktu {{index}}","add-via-duration-button-label-close":"Zamknij wybornik czasu postoju w punkcie {{index}}","add-via-duration-button-label-open":"Otwórz wybornik czasu postoju w punkcie {{index}}","minute-short":"min.","remove-via-button-label":"Usuń punkt pośredni {{index}}","swap-order-button-label":"Odwróć początek i cel","via-point":"Punkt pośredni","via-point-index":"Punkt pośredni {{index}}","viapoint-slack-amount":"Czas postoju"}},sv:{translation:{"add-via-button-label":"Lägg till viapunkt","add-via-duration-button-label":"Ställ in varaktighet för viapunkten {{index}}","add-via-duration-button-label-close":"Stäng väljaren för varaktighet vid via-punkten {{index}}","add-via-duration-button-label-open":"Öppna väljaren för varaktighet vid via-punkten {{index}}","minute-short":"min","remove-via-button-label":"Ta bort viapunkt {{index}}","swap-order-button-label":"Sväng ruttens riktning till den motsatta","via-point":"Via punkt","via-point-index":"Via punkt {{index}}","viapoint-slack-amount":"Stoppets varaktighet"}}},defaultNS:"translation",react:{useSuspense:!0}});O.init();var I={"autosuggest-panel":"styles_autosuggest-panel__meNwd","autosuggest-searchpanel-text":"styles_autosuggest-searchpanel-text__-VQTg","origin-input-container":"styles_origin-input-container__p4Qik","destination-input-container":"styles_destination-input-container__jBY4I",row:"styles_row__1GhCD","viapoints-container":"styles_viapoints-container__FYp7K","viapoint-container":"styles_viapoint-container__8yh1M","light-gray-background":"styles_light-gray-background__4fyZs","viapoint-before":"styles_viapoint-before__t4saF","viapoint-input-container":"styles_viapoint-input-container__uZx95","viapoint-1":"styles_viapoint-1__8Mna8",viapoint:"styles_viapoint__vUO9L","viapoint-2":"styles_viapoint-2__-OoUa","viapoint-3":"styles_viapoint-3__vvivE","viapoint-4":"styles_viapoint-4__jS9k1","viapoint-5":"styles_viapoint-5__J4V5N","viapoint-slack-time":"styles_viapoint-slack-time__Xpo0G","select-wrapper":"styles_select-wrapper__1usZw","via-point-button-container":"styles_via-point-button-container__cI2JI","input-viapoint-slack-container":"styles_input-viapoint-slack-container__TNgVy","itinerary-search-control":"styles_itinerary-search-control__cEL1X",opposite:"styles_opposite__zQQhd","add-via-point":"styles_add-via-point__E-gGB","add-via-point-slack":"styles_add-via-point-slack__GKjFf","remove-via-point":"styles_remove-via-point__e9DMQ","combobox-icon":"styles_combobox-icon__d3k1e","time-input-icon":"styles_time-input-icon__M8dmw","rectangle-container":"styles_rectangle-container__AdbAA",rectangle:"styles_rectangle__1IO7E","search-panel-whitespace":"styles_search-panel-whitespace__Luhwx"};x(".styles_autosuggest-panel__meNwd {\n width: 100%;\n}\n\n.styles_autosuggest-searchpanel-text__-VQTg {\n font-size: 24px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.8px;\n color: #333;\n line-height: 1;\n margin-bottom: 17px;\n margin-top: unset;\n}\n@media screen and (min-width: 768px) {\n .styles_autosuggest-searchpanel-text__-VQTg {\n letter-spacing: -0.8px;\n line-height: 27px;\n margin-bottom: 21px;\n }\n}\n\n.styles_origin-input-container__p4Qik,\n.styles_destination-input-container__jBY4I {\n display: flex;\n flex: 1 0 100%;\n}\n.styles_origin-input-container__p4Qik input[type=text],\n.styles_destination-input-container__jBY4I input[type=text] {\n margin: 0;\n}\n\n.styles_row__1GhCD {\n display: flex;\n flex-direction: row;\n}\n\n.styles_viapoints-container__FYp7K {\n display: flex;\n flex-direction: column;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M {\n display: flex;\n flex: 1 0 100%;\n min-height: 50px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:first-child {\n margin-top: 6px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:not(:first-child) {\n margin-top: 3px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:last-child {\n margin-bottom: 6px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs {\n display: flex;\n padding: 3px 0;\n flex-direction: column;\n background: #f2f5f7;\n border-radius: 5px;\n width: 100%;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF {\n display: flex;\n min-width: 27px;\n justify-content: center;\n align-items: center;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF svg {\n fill: #888;\n height: 20px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 {\n display: flex;\n align-items: center;\n width: 100%;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 input[type=text] {\n margin: 0;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-1__8Mna8 > div.styles_viapoint__vUO9L {\n z-index: 15;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-2__-OoUa > div.styles_viapoint__vUO9L {\n z-index: 14;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-3__vvivE > div.styles_viapoint__vUO9L {\n z-index: 13;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-4__jS9k1 > div.styles_viapoint__vUO9L {\n z-index: 12;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-5__J4V5N > div.styles_viapoint__vUO9L {\n z-index: 11;\n}\n\n.styles_viapoint-slack-time__Xpo0G {\n font-size: 13px;\n font-weight: normal;\n letter-spacing: -0.36px;\n color: #333;\n padding-left: 27px;\n padding-top: 12px;\n padding-bottom: 10px;\n}\n\n.styles_select-wrapper__1usZw {\n display: flex;\n height: 50px;\n margin-top: 9px;\n padding-left: 27px;\n padding-right: 47px;\n}\n\n.styles_via-point-button-container__cI2JI {\n display: flex;\n}\n.styles_via-point-button-container__cI2JI > div:nth-child(1) {\n order: 1;\n border-left: none;\n}\n.styles_via-point-button-container__cI2JI > div:nth-child(2) {\n order: 2;\n border-left: 1px solid rgba(151, 151, 151, 0.2);\n}\n\n.styles_input-viapoint-slack-container__TNgVy {\n display: flex;\n flex-direction: column;\n}\n\n.styles_itinerary-search-control__cEL1X {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n max-height: 50px;\n min-width: var(--width);\n}\n.styles_itinerary-search-control__cEL1X + .styles_itinerary-search-control__cEL1X {\n border-left: 1px solid rgba(151, 151, 151, 0.2);\n}\n.styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd svg {\n width: 19px;\n height: 17px;\n}\n.styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB svg {\n width: 20px;\n height: 22px;\n}\n.styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 47px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf svg {\n width: 18px;\n height: 19px;\n}\n.styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n max-height: 44px;\n min-width: 40px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ svg {\n width: 14px;\n height: 14px;\n}\n\n.styles_combobox-icon__d3k1e {\n color: var(--color);\n border-left: solid #888 1px;\n height: 35px;\n}\n.styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw {\n padding: 9px 13px 0 13px;\n}\n.styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw svg {\n width: 18px;\n height: 19px;\n}\n\n.styles_rectangle-container__AdbAA {\n display: block;\n position: relative;\n height: 9px;\n z-index: 19;\n}\n.styles_rectangle-container__AdbAA .styles_rectangle__1IO7E {\n position: absolute;\n width: 4px;\n height: 21px;\n border-radius: 2px;\n background-color: #ddd;\n margin-left: 25px;\n margin-top: -5px;\n}\n\n.styles_search-panel-whitespace__Luhwx {\n min-width: 40px;\n}");const M=["children","className","enabled","onClick","onKeyPress","wide"],R=()=>({}),j=e=>{if(void 0===e||y.default(e))return!0;const t=Object.keys(e);return 1===t.length||2===t.length&&t.includes("locationSlack")},L=e=>{let{children:t,className:n,enabled:i,onClick:a,onKeyPress:o,wide:s}=e,l=function(e,t){if(null==e)return{};var n,i,a=function(e,t){if(null==e)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(-1!==t.indexOf(i))continue;n[i]=e[i]}return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],-1===t.indexOf(n)&&{}.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,M);return h.default.createElement("div",{className:I["itinerary-search-control"],style:{"--width":s?"47px":"40px"}},a&&i&&h.default.createElement("div",Object.assign({},l,{className:n,onClick:a,onKeyPress:o,role:"button",tabIndex:"0"}),t))},F=(e,t,n=!1)=>{const i=e.indexOf(t);return i>-1&&e.splice(i,1),n?e.map(e=>e>t?e-1:e):e},z=e=>{const t=e&&(e.key||e.which||e.keyCode)||"";return!(!t||![13," ","Spacebar"].concat([32,"Enter"]).includes(t))&&(e.preventDefault(),!0)},K=e=>e&&e.address||e&&e.gps&&e.ready&&"Nykyinen sijainti"||"",T=e=>e&&!0===e.gps?"position":"location";"production"!==process.env.NODE_ENV&&(L.propTypes={children:_.default.node,className:_.default.string.isRequired,enabled:_.default.bool.isRequired,onClick:_.default.func.isRequired,onKeyPress:_.default.func.isRequired,wide:_.default.bool}),L.defaultProps={children:void 0,wide:!1};const Z="production"!==process.env.NODE_ENV?_.default.shape({address:_.default.string,lat:_.default.number,lon:_.default.number,locationSlack:_.default.number}):{};class q extends h.default.Component{constructor(e){super(e),b(this,"storeReference",e=>{this.setState(t=>({refs:[...t.refs,e]}))}),b(this,"handleFocusChange",()=>{const{destination:e}=this.props;e&&e.lat||this.state.refs[1].focus()}),b(this,"updateViaPoints",e=>{0!==e.length?this.props.updateViaPoints(e.filter(e=>!j(e))):this.props.updateViaPoints([])}),b(this,"handleToggleViaPointSlackClick",e=>{const{activeSlackInputs:t}=this.state;this.setState({activeSlackInputs:t.includes(e)?F(t,e):t.concat([e])})}),b(this,"handleViaPointSlackTimeSelected",(e,t)=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"EditViaPointStopDuration",category:"ItinerarySettings",name:e/60});const{viaPoints:n}=this.props;n[t].locationSlack=Number.parseInt(e,10),this.updateViaPoints(n)}),b(this,"handleViaPointLocationSelected",(e,t)=>{this.props.handleViaPointLocationSelected(e,t)}),b(this,"handleRemoveViaPointClick",e=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"RemoveJourneyViaPoint",category:"ItinerarySettings",name:null});const{activeSlackInputs:t}=this.state,{viaPoints:n}=this.props;n.splice(e,1),this.setState({activeSlackInputs:F(t,e,!0)},()=>this.updateViaPoints(n))}),b(this,"handleAddViaPointClick",()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"AddJourneyViaPoint",category:"ItinerarySettings",name:"QuickSettingsButton"});const{viaPoints:e}=this.props;e.push({}),this.setState(this.state)}),b(this,"handleSwapOrderClick",()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"SwitchJourneyStartAndEndPointOrder",category:"ItinerarySettings",name:null});const{viaPoints:e}=this.props;e.reverse(),this.props.swapOrder()}),b(this,"getSlackDisplay",e=>`${e/60} ${this.props.t("minute-short",{lng:this.props.lang})}`),this.state={activeSlackInputs:[],refs:[]}}render(){const{origin:e,searchPanelText:t,searchContext:n,disableAutoFocus:i,viaPoints:a,originMobileLabel:s,destinationMobileLabel:l,fontWeights:r,onFocusChange:c,showSwapControl:p,showViapointControl:d,t:_,lang:y}=this.props,{primary:v}=this.props.colors,{activeSlackInputs:m}=this.state,b=(e=>{const t=[];for(let n=0;n<=9;n++){const i=10*n;t.push({displayName:`${i} ${e("minute-short")}`,value:60*i})}return t})(_),x=(e,t=0)=>e&&e.locationSlack||t,k=e=>m.includes(e);return h.default.createElement("div",{className:u.default(I["autosuggest-panel"],this.props.isMobile&&"small"),style:{"--color":v,"--font-weight-medium":r.medium}}," ",t?h.default.createElement("div",null,h.default.createElement("h1",{className:I["autosuggest-searchpanel-text"]}," ",t)):null,h.default.createElement("div",{className:I["origin-input-container"]},h.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"origin",autoFocus:!0!==i&&(!this.props.isMobile&&!e.lat),storeRef:this.storeReference,refPoint:this.props.refPoint,className:T(e),placeholder:this.props.originPlaceHolder,value:K(e),searchContext:n,getAutoSuggestIcons:this.props.getAutoSuggestIcons,onSelect:this.props.onSelect,onClear:this.props.onClear,focusChange:c||this.handleFocusChange,lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,colors:this.props.colors,mobileLabel:s,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||d)&&h.default.createElement(L,{className:I.opposite,enabled:p,onClick:()=>this.handleSwapOrderClick(),onKeyPress:e=>z(e)&&this.handleSwapOrderClick(),"aria-label":_("swap-order-button-label",{lng:y})},h.default.createElement(f.default,{img:"opposite",color:v}))),0===a.length&&h.default.createElement("div",{className:I["rectangle-container"]},h.default.createElement("div",{className:I.rectangle})),h.default.createElement(o.ReactSortable,{className:I["viapoints-container"],list:a,handle:`.${I["viapoint-before"]}`,animation:200,disabled:a.length<=1,setList:e=>{const t=e.filter(e=>!j(e));t.length>0&&this.props.updateViaPoints(t)}},a.map((e,t)=>h.default.createElement("div",{className:u.default(I["viapoint-container"]),key:`viapoint-${t}`},h.default.createElement("div",{className:I["light-gray-background"]},h.default.createElement("div",{className:I.row},h.default.createElement("div",{className:I["viapoint-before"],style:a.length>1?{cursor:"move"}:{}},a.length>1&&h.default.createElement(f.default,{img:"ellipsis",rotate:90,color:v})),h.default.createElement("div",{className:`${I["viapoint-input-container"]} ${I[`viapoint-${t+1}`]}`},h.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"via-point",ariaLabel:_("via-point-index",{index:t+1,lng:y}),autoFocus:!0!==i&&!this.props.isMobile,placeholder:"via-point",className:"viapoint",searchContext:n,refPoint:this.props.refPoint,value:e&&e.address||"",onSelect:this.props.onSelect,onClear:this.props.onClear,handleViaPoints:e=>this.handleViaPointLocationSelected(e,t),lang:this.props.lang,sources:this.props.sources,targets:["Stops","Stations"],filterResults:this.props.filterResults,getAutoSuggestIcons:this.props.getAutoSuggestIcons,isMobile:this.props.isMobile,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,colors:this.props.colors,showScroll:this.props.showScroll})),this.props.showSlackControl&&h.default.createElement(L,{className:I["add-via-point-slack"],enabled:this.props.showViapointControl,onClick:()=>this.handleToggleViaPointSlackClick(t),onKeyPress:e=>z(e)&&this.handleToggleViaPointSlackClick(t),"aria-label":_(k(t)?"add-via-duration-button-label-open":"add-via-duration-button-label-close",{index:t+1,lng:y}),wide:!0},h.default.createElement(f.default,{img:"time",color:v}))),!k(t)&&a[t]&&a[t].locationSlack>0&&h.default.createElement("span",{className:I["viapoint-slack-time"]},`${_("viapoint-slack-amount",{lng:y})}: ${this.getSlackDisplay(a[t].locationSlack)}`),h.default.createElement("div",{className:u.default(I["input-viapoint-slack-container"],!k(t)&&"collapsed")},h.default.createElement("div",{className:I["select-wrapper"]},h.default.createElement(V,{id:`viapoint-slack-${t}`,label:_("viapoint-slack-amount",{lng:y}),options:b,value:x(a[t]),viaPointIndex:t,icon:h.default.createElement("span",{className:`${I["combobox-icon"]} ${I["time-input-icon"]}`},h.default.createElement(f.default,{img:"time",color:v})),onSlackTimeSelected:this.handleViaPointSlackTimeSelected})))),h.default.createElement(L,{className:I["remove-via-point"],enabled:this.props.showViapointControl,onClick:()=>this.handleRemoveViaPointClick(t),onKeyPress:e=>z(e)&&this.handleRemoveViaPointClick(t),"aria-label":_("remove-via-button-label",{index:t+1,lng:y})},h.default.createElement(f.default,{img:"trash",color:v}))))),h.default.createElement("div",{className:I["destination-input-container"]},h.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"destination",autoFocus:!0!==i&&(!this.props.isMobile&&!Number.isNaN(e.lat)),storeRef:this.storeReference,placeholder:this.props.destinationPlaceHolder,className:T(this.props.destination),getAutoSuggestIcons:this.props.getAutoSuggestIcons,searchContext:n,onSelect:this.props.onSelect,onClear:this.props.onClear,refPoint:this.props.refPoint,value:K(this.props.destination),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,mobileLabel:l,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,colors:this.props.colors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||d)&&h.default.createElement(L,{className:u.default(I["add-via-point"],I.more,a.length>4&&"collapsed"),enabled:d&&0===a.length,onClick:()=>this.handleAddViaPointClick(),onKeyPress:e=>z(e)&&this.handleAddViaPointClick(),"aria-label":_("add-via-button-label",{lng:y})},h.default.createElement(f.default,{img:"viapoint",width:1.25,height:1.375,color:v}))))}}b(q,"defaultProps",{origin:void 0,destination:void 0,viaPoints:[],originPlaceHolder:"give-origin",destinationPlaceHolder:"give-destination",swapOrder:void 0,updateViaPoints:()=>{},searchPanelText:void 0,sources:[],targets:[],filterResults:void 0,onClear:void 0,getAutoSuggestIcons:void 0,refPoint:void 0,addAnalyticsEvent:void 0,disableAutoFocus:!1,isMobile:!1,handleViaPointLocationSelected:void 0,originMobileLabel:null,destinationMobileLabel:null,modeSet:void 0,colors:l.defaultColors,fontWeights:{medium:500},showScroll:!1,onFocusChange:void 0,isEmbedded:!1,showSwapControl:!1,showViapointControl:!1,showSlackControl:!1}),"production"!==process.env.NODE_ENV&&(q.propTypes={appElement:_.default.string.isRequired,origin:Z,destination:Z,originPlaceHolder:_.default.string,destinationPlaceHolder:_.default.string,viaPoints:_.default.arrayOf(Z),updateViaPoints:_.default.func,handleViaPointLocationSelected:_.default.func,swapOrder:_.default.func,searchPanelText:_.default.string,searchContext:_.default.shape({URL_PELIAS:_.default.string}).isRequired,onSelect:_.default.func.isRequired,onClear:_.default.func,addAnalyticsEvent:_.default.func,lang:_.default.string.isRequired,disableAutoFocus:_.default.bool,sources:_.default.arrayOf(_.default.string),targets:_.default.arrayOf(_.default.string),filterResults:_.default.func,isMobile:_.default.bool,originMobileLabel:_.default.string,destinationMobileLabel:_.default.string,refPoint:Z,modeSet:_.default.string,colors:_.default.objectOf(_.default.string),getAutoSuggestIcons:_.default.objectOf(_.default.func),fontWeights:_.default.shape({medium:_.default.number}),showScroll:_.default.bool,onFocusChange:_.default.func,isEmbedded:_.default.bool,showSwapControl:_.default.bool,showViapointControl:_.default.bool,showSlackControl:_.default.bool,t:_.default.func.isRequired});const Y=a.withTranslation()(q);e.default=e=>h.default.createElement(a.I18nextProvider,{i18n:O},h.default.createElement(Y,e)),e.getEmptyViaPointPlaceHolder=R,Object.defineProperty(e,"__esModule",{value:!0})});
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("classnames"),require("prop-types"),require("react"),require("react-i18next"),require("react-sortablejs"),require("@digitransit-component/digitransit-component-autosuggest"),require("@digitransit-component/digitransit-component-icon"),require("lodash/isEmpty"),require("downshift"),require("i18next")):"function"==typeof define&&define.amd?define(["exports","classnames","prop-types","react","react-i18next","react-sortablejs","@digitransit-component/digitransit-component-autosuggest","@digitransit-component/digitransit-component-icon","lodash/isEmpty","downshift","i18next"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-autosuggest-panel"]={},e.cx,e.PropTypes,e.React,e.reactI18next,e.reactSortablejs,e.DTAutosuggest,e.Icon,e.isEmpty,e.downshift,e.i18next)}(this,function(e,t,n,i,a,o,s,l,r,c,p){"use strict";function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=d(t),_=d(n),h=d(i),g=d(s),f=d(l),y=d(r);function v(e){return v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},v(e)}function m(e){var t=function(e,t){if("object"!=v(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=v(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==v(t)?t:t+""}function b(e,t,n){return(t=m(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function x(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&i.firstChild?i.insertBefore(a,i.firstChild):i.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}var k="select_combobox-container__0lRpm",w="select_left-column__cSrMR",S="select_combobox-label__F9Ayd",E="select_container__yrA-N",P="select_suggestion__b05iD",N="select_suggestionHighlighted__ZFPWo",C="select_suggestionsContainerOpen__9wcJ5",A="select_input__pK5vk";x(".select_combobox-container__0lRpm {\n background-color: #fff;\n border: solid #888 1px;\n display: flex;\n align-items: center;\n border-radius: 5px;\n height: 50px;\n justify-content: space-between;\n flex-grow: 1;\n}\n.select_combobox-container__0lRpm:focus-within {\n border-color: #007ac9;\n}\n.select_combobox-container__0lRpm .select_left-column__cSrMR {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.select_combobox-label__F9Ayd {\n font-size: 12px;\n line-height: 20px;\n color: #666;\n letter-spacing: -0.48px;\n margin-left: 12px;\n margin-top: 4px;\n}\n\n.select_container__yrA-N {\n position: relative;\n width: 100%;\n height: 100%;\n}\n.select_container__yrA-N > div {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: 100%;\n cursor: pointer;\n}\n.select_container__yrA-N .select_suggestion__b05iD {\n font-size: 15px;\n line-height: 49px;\n height: 50px;\n padding: 0 0 0 12px;\n letter-spacing: -0.6px;\n color: #333;\n font-weight: 500;\n}\n.select_container__yrA-N .select_suggestionHighlighted__ZFPWo {\n font-size: 15px;\n font-weight: 500;\n background: #f2f5f7;\n}\n.select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 {\n position: absolute;\n background-color: #fff;\n z-index: 20;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: calc(100% + 4px);\n left: 0;\n width: 100%;\n list-style-type: none;\n padding: 0;\n margin: 0;\n}\n.select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 ul {\n padding: 0;\n margin: 0;\n}\n.select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 li:not(:last-child) {\n border-bottom: 1px solid #ddd;\n}\n.select_container__yrA-N .select_input__pK5vk {\n -webkit-appearance: none;\n appearance: none;\n margin: -4px 0 0 0;\n padding-left: 12px;\n border: none;\n height: 26px;\n}\n.select_container__yrA-N .select_input__pK5vk:focus {\n outline: none;\n border: none;\n box-shadow: none;\n background: #fff;\n}\n.select_container__yrA-N .select_input__pK5vk:read-only {\n cursor: pointer;\n background: #fff;\n}\n.select_container__yrA-N .select_input__pK5vk {\n background: #fff;\n font-weight: 500;\n box-shadow: none;\n font-size: 15px;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.6px;\n color: #333;\n}");const V=({value:e,options:t,onSlackTimeSelected:n,viaPointIndex:i,id:a,label:o,icon:s})=>{const l=`${a}-label`,r=t.find(t=>t.value===e),{isOpen:p,getToggleButtonProps:d,getMenuProps:_,getItemProps:g,getLabelProps:f,highlightedIndex:y}=c.useSelect({selectedItem:r,items:t,labelId:l,id:a,itemToString:e=>e.displayName,onSelectedItemChange:({selectedItem:e})=>{n(e.value,i)}});return h.default.createElement("div",{className:k},h.default.createElement("div",{className:E},h.default.createElement("div",d(),h.default.createElement("span",{className:w},h.default.createElement("label",Object.assign({},f(),{className:S}),o),h.default.createElement("div",{className:A},h.default.createElement("span",null,r.displayName))),s),h.default.createElement("ul",Object.assign({className:u.default(C,!p&&"hidden")},_()),p&&t.map((e,t)=>h.default.createElement("li",Object.assign({key:e.value,className:u.default(P,t===y&&N)},g({index:t})),h.default.createElement("span",null,e.displayName))))))};"production"!==process.env.NODE_ENV&&(V.propTypes={value:_.default.number.isRequired,onSlackTimeSelected:_.default.func.isRequired,options:_.default.arrayOf(_.default.shape({displayName:_.default.string.isRequired,value:_.default.number.isRequired}).isRequired).isRequired,id:_.default.string.isRequired,label:_.default.node.isRequired,icon:_.default.node.isRequired,viaPointIndex:_.default.number.isRequired});const O=p.createInstance({fallbackLng:"fi",resources:{de:{translation:{"add-via-button-label":"Füge Zwischenziel hinzu","add-via-duration-button-label":"Setze Umsteigezeit für Zwischenziel {{index}}","add-via-duration-button-label-close":"Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}","add-via-duration-button-label-open":"Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}","minute-short":"min","remove-via-button-label":"Entferne Zwischenziel {{index}}","swap-order-button-label":"Tausche Start mit Ziel","via-point":"Zwischenziel","via-point-index":"Zwischenziel {{index}}","viapoint-slack-amount":"Umsteigezeit"}},en:{translation:{"add-via-button-label":"Add via point","add-via-duration-button-label":"Set stop duration at via point {{index}}","add-via-duration-button-label-close":"Close stop duration selector at via point {{index}}","add-via-duration-button-label-open":"Open stop duration selector at via point {{index}}","minute-short":"min","remove-via-button-label":"Remove via point {{index}}","swap-order-button-label":"Reverse origin and destination","via-point":"Via point","via-point-index":"Via point {{index}}","viapoint-slack-amount":"Stop duration"}},fi:{translation:{"add-via-button-label":"Lisää välipiste","add-via-duration-button-label":"Aseta välipisteelle {{index}} pysähdyksen kesto","add-via-duration-button-label-close":"Avaa välipisteen {{index}} pysähdyksen kesto valitsin","add-via-duration-button-label-open":"Sulje välipisteen {{index}} pysähdyksen kesto valitsin","minute-short":"min","remove-via-button-label":"Poista välipiste {{index}}","swap-order-button-label":"Käännä reitin suunta vastakkaiseksi","via-point":"Välipiste","via-point-index":"Välipiste {{index}}","viapoint-slack-amount":"Pysähdyksen kesto"}},pl:{translation:{"add-via-button-label":"Dodaj punkt pośredni","add-via-duration-button-label":"Wybierz czas postoju dla punktu {{index}}","add-via-duration-button-label-close":"Zamknij wybornik czasu postoju w punkcie {{index}}","add-via-duration-button-label-open":"Otwórz wybornik czasu postoju w punkcie {{index}}","minute-short":"min.","remove-via-button-label":"Usuń punkt pośredni {{index}}","swap-order-button-label":"Odwróć początek i cel","via-point":"Punkt pośredni","via-point-index":"Punkt pośredni {{index}}","viapoint-slack-amount":"Czas postoju"}},sv:{translation:{"add-via-button-label":"Lägg till viapunkt","add-via-duration-button-label":"Ställ in varaktighet för viapunkten {{index}}","add-via-duration-button-label-close":"Stäng väljaren för varaktighet vid via-punkten {{index}}","add-via-duration-button-label-open":"Öppna väljaren för varaktighet vid via-punkten {{index}}","minute-short":"min","remove-via-button-label":"Ta bort viapunkt {{index}}","swap-order-button-label":"Sväng ruttens riktning till den motsatta","via-point":"Via punkt","via-point-index":"Via punkt {{index}}","viapoint-slack-amount":"Stoppets varaktighet"}}},defaultNS:"translation",react:{useSuspense:!0}});O.init();var I={"autosuggest-panel":"styles_autosuggest-panel__meNwd","autosuggest-searchpanel-text":"styles_autosuggest-searchpanel-text__-VQTg","origin-input-container":"styles_origin-input-container__p4Qik","destination-input-container":"styles_destination-input-container__jBY4I",row:"styles_row__1GhCD","viapoints-container":"styles_viapoints-container__FYp7K","viapoint-container":"styles_viapoint-container__8yh1M","light-gray-background":"styles_light-gray-background__4fyZs","viapoint-before":"styles_viapoint-before__t4saF","viapoint-input-container":"styles_viapoint-input-container__uZx95","viapoint-1":"styles_viapoint-1__8Mna8",viapoint:"styles_viapoint__vUO9L","viapoint-2":"styles_viapoint-2__-OoUa","viapoint-3":"styles_viapoint-3__vvivE","viapoint-4":"styles_viapoint-4__jS9k1","viapoint-5":"styles_viapoint-5__J4V5N","viapoint-slack-time":"styles_viapoint-slack-time__Xpo0G","select-wrapper":"styles_select-wrapper__1usZw","via-point-button-container":"styles_via-point-button-container__cI2JI","input-viapoint-slack-container":"styles_input-viapoint-slack-container__TNgVy","itinerary-search-control":"styles_itinerary-search-control__cEL1X",opposite:"styles_opposite__zQQhd","add-via-point":"styles_add-via-point__E-gGB","add-via-point-slack":"styles_add-via-point-slack__GKjFf","remove-via-point":"styles_remove-via-point__e9DMQ","combobox-icon":"styles_combobox-icon__d3k1e","time-input-icon":"styles_time-input-icon__M8dmw","rectangle-container":"styles_rectangle-container__AdbAA",rectangle:"styles_rectangle__1IO7E","search-panel-whitespace":"styles_search-panel-whitespace__Luhwx"};x(".styles_autosuggest-panel__meNwd {\n width: 100%;\n}\n\n.styles_autosuggest-searchpanel-text__-VQTg {\n font-size: 24px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.8px;\n color: #333;\n line-height: 1;\n margin-bottom: 17px;\n margin-top: unset;\n}\n@media screen and (min-width: 768px) {\n .styles_autosuggest-searchpanel-text__-VQTg {\n letter-spacing: -0.8px;\n line-height: 27px;\n margin-bottom: 21px;\n }\n}\n\n.styles_origin-input-container__p4Qik,\n.styles_destination-input-container__jBY4I {\n display: flex;\n flex: 1 0 100%;\n}\n.styles_origin-input-container__p4Qik input[type=text],\n.styles_destination-input-container__jBY4I input[type=text] {\n margin: 0;\n}\n\n.styles_row__1GhCD {\n display: flex;\n flex-direction: row;\n}\n\n.styles_viapoints-container__FYp7K {\n display: flex;\n flex-direction: column;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M {\n display: flex;\n flex: 1 0 100%;\n min-height: 50px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:first-child {\n margin-top: 6px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:not(:first-child) {\n margin-top: 3px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:last-child {\n margin-bottom: 6px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs {\n display: flex;\n padding: 3px 0;\n flex-direction: column;\n background: #f2f5f7;\n border-radius: 5px;\n width: 100%;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF {\n display: flex;\n min-width: 27px;\n justify-content: center;\n align-items: center;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF svg {\n fill: #888;\n height: 20px;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 {\n display: flex;\n align-items: center;\n width: 100%;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 input[type=text] {\n margin: 0;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-1__8Mna8 > div.styles_viapoint__vUO9L {\n z-index: 15;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-2__-OoUa > div.styles_viapoint__vUO9L {\n z-index: 14;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-3__vvivE > div.styles_viapoint__vUO9L {\n z-index: 13;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-4__jS9k1 > div.styles_viapoint__vUO9L {\n z-index: 12;\n}\n.styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-5__J4V5N > div.styles_viapoint__vUO9L {\n z-index: 11;\n}\n\n.styles_viapoint-slack-time__Xpo0G {\n font-size: 13px;\n font-weight: normal;\n letter-spacing: -0.36px;\n color: #333;\n padding-left: 27px;\n padding-top: 12px;\n padding-bottom: 10px;\n}\n\n.styles_select-wrapper__1usZw {\n display: flex;\n height: 50px;\n margin-top: 9px;\n padding-left: 27px;\n padding-right: 47px;\n}\n\n.styles_via-point-button-container__cI2JI {\n display: flex;\n}\n.styles_via-point-button-container__cI2JI > div:nth-child(1) {\n order: 1;\n border-left: none;\n}\n.styles_via-point-button-container__cI2JI > div:nth-child(2) {\n order: 2;\n border-left: 1px solid rgba(151, 151, 151, 0.2);\n}\n\n.styles_input-viapoint-slack-container__TNgVy {\n display: flex;\n flex-direction: column;\n}\n\n.styles_itinerary-search-control__cEL1X {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n max-height: 50px;\n min-width: var(--width);\n}\n.styles_itinerary-search-control__cEL1X + .styles_itinerary-search-control__cEL1X {\n border-left: 1px solid rgba(151, 151, 151, 0.2);\n}\n.styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd svg {\n width: 19px;\n height: 17px;\n}\n.styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB svg {\n width: 20px;\n height: 22px;\n}\n.styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 47px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf svg {\n width: 18px;\n height: 19px;\n}\n.styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n max-height: 44px;\n min-width: 40px;\n cursor: pointer;\n}\n.styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ svg {\n width: 14px;\n height: 14px;\n}\n\n.styles_combobox-icon__d3k1e {\n color: var(--color);\n border-left: solid #888 1px;\n height: 35px;\n}\n.styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw {\n padding: 9px 13px 0 13px;\n}\n.styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw svg {\n width: 18px;\n height: 19px;\n}\n\n.styles_rectangle-container__AdbAA {\n display: block;\n position: relative;\n height: 9px;\n z-index: 19;\n}\n.styles_rectangle-container__AdbAA .styles_rectangle__1IO7E {\n position: absolute;\n width: 4px;\n height: 21px;\n border-radius: 2px;\n background-color: #ddd;\n margin-left: 25px;\n margin-top: -5px;\n}\n\n.styles_search-panel-whitespace__Luhwx {\n min-width: 40px;\n}");const M=["children","className","enabled","onClick","onKeyPress","wide"],R=()=>({}),j=e=>{if(void 0===e||y.default(e))return!0;const t=Object.keys(e);return 1===t.length||2===t.length&&t.includes("locationSlack")},L=e=>{let{children:t,className:n,enabled:i,onClick:a,onKeyPress:o,wide:s}=e,l=function(e,t){if(null==e)return{};var n,i,a=function(e,t){if(null==e)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(-1!==t.indexOf(i))continue;n[i]=e[i]}return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],-1===t.indexOf(n)&&{}.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,M);return h.default.createElement("div",{className:I["itinerary-search-control"],style:{"--width":s?"47px":"40px"}},a&&i&&h.default.createElement("div",Object.assign({},l,{className:n,onClick:a,onKeyPress:o,role:"button",tabIndex:"0"}),t))},F=(e,t,n=!1)=>{const i=e.indexOf(t);return i>-1&&e.splice(i,1),n?e.map(e=>e>t?e-1:e):e},z=e=>{const t=e&&(e.key||e.which||e.keyCode)||"";return!(!t||![13," ","Spacebar"].concat([32,"Enter"]).includes(t))&&(e.preventDefault(),!0)},K=e=>e&&e.address||e&&e.gps&&e.ready&&"Nykyinen sijainti"||"",T=e=>e&&!0===e.gps?"position":"location";"production"!==process.env.NODE_ENV&&(L.propTypes={children:_.default.node,className:_.default.string.isRequired,enabled:_.default.bool.isRequired,onClick:_.default.func.isRequired,onKeyPress:_.default.func.isRequired,wide:_.default.bool}),L.defaultProps={children:void 0,wide:!1};const Z="production"!==process.env.NODE_ENV?_.default.shape({address:_.default.string,lat:_.default.number,lon:_.default.number,locationSlack:_.default.number}):{};class q extends h.default.Component{constructor(e){super(e),b(this,"storeReference",e=>{this.setState(t=>({refs:[...t.refs,e]}))}),b(this,"handleFocusChange",()=>{const{destination:e}=this.props;e&&e.lat||this.state.refs[1].focus()}),b(this,"updateViaPoints",e=>{0!==e.length?this.props.updateViaPoints(e.filter(e=>!j(e))):this.props.updateViaPoints([])}),b(this,"handleToggleViaPointSlackClick",e=>{const{activeSlackInputs:t}=this.state;this.setState({activeSlackInputs:t.includes(e)?F(t,e):t.concat([e])})}),b(this,"handleViaPointSlackTimeSelected",(e,t)=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"EditViaPointStopDuration",category:"ItinerarySettings",name:e/60});const{viaPoints:n}=this.props;n[t].locationSlack=Number.parseInt(e,10),this.updateViaPoints(n)}),b(this,"handleViaPointLocationSelected",(e,t)=>{this.props.handleViaPointLocationSelected(e,t)}),b(this,"handleRemoveViaPointClick",e=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"RemoveJourneyViaPoint",category:"ItinerarySettings",name:null});const{activeSlackInputs:t}=this.state,{viaPoints:n}=this.props;n.splice(e,1),this.setState({activeSlackInputs:F(t,e,!0)},()=>this.updateViaPoints(n))}),b(this,"handleAddViaPointClick",()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"AddJourneyViaPoint",category:"ItinerarySettings",name:"QuickSettingsButton"});const{viaPoints:e}=this.props;e.push({}),this.setState(this.state)}),b(this,"handleSwapOrderClick",()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"SwitchJourneyStartAndEndPointOrder",category:"ItinerarySettings",name:null});const{viaPoints:e}=this.props;e.reverse(),this.props.swapOrder()}),b(this,"getSlackDisplay",e=>`${e/60} ${this.props.t("minute-short",{lng:this.props.lang})}`),this.state={activeSlackInputs:[],refs:[]}}render(){const{origin:e,searchPanelText:t,searchContext:n,disableAutoFocus:i,viaPoints:a,originMobileLabel:s,destinationMobileLabel:l,fontWeights:r,onFocusChange:c,showSwapControl:p,showViapointControl:d,t:_,lang:y}=this.props,{primary:v}=this.props.colors,{activeSlackInputs:m}=this.state,b=(e=>{const t=[];for(let n=0;n<=9;n++){const i=10*n;t.push({displayName:`${i} ${e("minute-short")}`,value:60*i})}return t})(_),x=(e,t=0)=>e&&e.locationSlack||t,k=e=>m.includes(e);return h.default.createElement("div",{className:u.default(I["autosuggest-panel"],this.props.isMobile&&"small"),style:{"--color":v,"--font-weight-medium":r.medium}}," ",t?h.default.createElement("div",null,h.default.createElement("h1",{className:I["autosuggest-searchpanel-text"]}," ",t)):null,h.default.createElement("div",{className:I["origin-input-container"]},h.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"origin",autoFocus:!0!==i&&(!this.props.isMobile&&!e.lat),storeRef:this.storeReference,refPoint:this.props.refPoint,className:T(e),placeholder:this.props.originPlaceHolder,value:K(e),searchContext:n,getAutoSuggestIcons:this.props.getAutoSuggestIcons,onSelect:this.props.onSelect,onClear:this.props.onClear,focusChange:c||this.handleFocusChange,lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,colors:this.props.colors,mobileLabel:s,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||d)&&h.default.createElement(L,{className:I.opposite,enabled:p,onClick:()=>this.handleSwapOrderClick(),onKeyPress:e=>z(e)&&this.handleSwapOrderClick(),"aria-label":_("swap-order-button-label",{lng:y})},h.default.createElement(f.default,{img:"opposite",color:v}))),0===a.length&&h.default.createElement("div",{className:I["rectangle-container"]},h.default.createElement("div",{className:I.rectangle})),h.default.createElement(o.ReactSortable,{className:I["viapoints-container"],list:a,handle:`.${I["viapoint-before"]}`,animation:200,disabled:a.length<=1,setList:e=>{const t=e.filter(e=>!j(e));t.length>0&&this.props.updateViaPoints(t)}},a.map((e,t)=>h.default.createElement("div",{className:u.default(I["viapoint-container"]),key:`viapoint-${t}`},h.default.createElement("div",{className:I["light-gray-background"]},h.default.createElement("div",{className:I.row},h.default.createElement("div",{className:I["viapoint-before"],style:a.length>1?{cursor:"move"}:{}},a.length>1&&h.default.createElement(f.default,{img:"ellipsis",rotate:90,color:v})),h.default.createElement("div",{className:`${I["viapoint-input-container"]} ${I[`viapoint-${t+1}`]}`},h.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"via-point",ariaLabel:_("via-point-index",{index:t+1,lng:y}),autoFocus:!0!==i&&!this.props.isMobile,placeholder:"via-point",className:"viapoint",searchContext:n,refPoint:this.props.refPoint,value:e&&e.address||"",onSelect:this.props.onSelect,onClear:this.props.onClear,handleViaPoints:e=>this.handleViaPointLocationSelected(e,t),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,getAutoSuggestIcons:this.props.getAutoSuggestIcons,isMobile:this.props.isMobile,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,colors:this.props.colors,showScroll:this.props.showScroll})),this.props.showSlackControl&&h.default.createElement(L,{className:I["add-via-point-slack"],enabled:this.props.showViapointControl,onClick:()=>this.handleToggleViaPointSlackClick(t),onKeyPress:e=>z(e)&&this.handleToggleViaPointSlackClick(t),"aria-label":_(k(t)?"add-via-duration-button-label-open":"add-via-duration-button-label-close",{index:t+1,lng:y}),wide:!0},h.default.createElement(f.default,{img:"time",color:v}))),!k(t)&&a[t]&&a[t].locationSlack>0&&h.default.createElement("span",{className:I["viapoint-slack-time"]},`${_("viapoint-slack-amount",{lng:y})}: ${this.getSlackDisplay(a[t].locationSlack)}`),h.default.createElement("div",{className:u.default(I["input-viapoint-slack-container"],!k(t)&&"collapsed")},h.default.createElement("div",{className:I["select-wrapper"]},h.default.createElement(V,{id:`viapoint-slack-${t}`,label:_("viapoint-slack-amount",{lng:y}),options:b,value:x(a[t]),viaPointIndex:t,icon:h.default.createElement("span",{className:`${I["combobox-icon"]} ${I["time-input-icon"]}`},h.default.createElement(f.default,{img:"time",color:v})),onSlackTimeSelected:this.handleViaPointSlackTimeSelected})))),h.default.createElement(L,{className:I["remove-via-point"],enabled:this.props.showViapointControl,onClick:()=>this.handleRemoveViaPointClick(t),onKeyPress:e=>z(e)&&this.handleRemoveViaPointClick(t),"aria-label":_("remove-via-button-label",{index:t+1,lng:y})},h.default.createElement(f.default,{img:"trash",color:v}))))),h.default.createElement("div",{className:I["destination-input-container"]},h.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"destination",autoFocus:!0!==i&&(!this.props.isMobile&&!Number.isNaN(e.lat)),storeRef:this.storeReference,placeholder:this.props.destinationPlaceHolder,className:T(this.props.destination),getAutoSuggestIcons:this.props.getAutoSuggestIcons,searchContext:n,onSelect:this.props.onSelect,onClear:this.props.onClear,refPoint:this.props.refPoint,value:K(this.props.destination),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,mobileLabel:l,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,colors:this.props.colors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||d)&&h.default.createElement(L,{className:u.default(I["add-via-point"],I.more,a.length>4&&"collapsed"),enabled:d&&0===a.length,onClick:()=>this.handleAddViaPointClick(),onKeyPress:e=>z(e)&&this.handleAddViaPointClick(),"aria-label":_("add-via-button-label",{lng:y})},h.default.createElement(f.default,{img:"viapoint",width:1.25,height:1.375,color:v}))))}}b(q,"defaultProps",{origin:void 0,destination:void 0,viaPoints:[],originPlaceHolder:"give-origin",destinationPlaceHolder:"give-destination",swapOrder:void 0,updateViaPoints:()=>{},searchPanelText:void 0,sources:[],targets:[],filterResults:void 0,onClear:void 0,getAutoSuggestIcons:void 0,refPoint:void 0,addAnalyticsEvent:void 0,disableAutoFocus:!1,isMobile:!1,handleViaPointLocationSelected:void 0,originMobileLabel:null,destinationMobileLabel:null,modeSet:void 0,colors:l.defaultColors,fontWeights:{medium:500},showScroll:!1,onFocusChange:void 0,isEmbedded:!1,showSwapControl:!1,showViapointControl:!1,showSlackControl:!1}),"production"!==process.env.NODE_ENV&&(q.propTypes={appElement:_.default.string.isRequired,origin:Z,destination:Z,originPlaceHolder:_.default.string,destinationPlaceHolder:_.default.string,viaPoints:_.default.arrayOf(Z),updateViaPoints:_.default.func,handleViaPointLocationSelected:_.default.func,swapOrder:_.default.func,searchPanelText:_.default.string,searchContext:_.default.shape({URL_PELIAS:_.default.string}).isRequired,onSelect:_.default.func.isRequired,onClear:_.default.func,addAnalyticsEvent:_.default.func,lang:_.default.string.isRequired,disableAutoFocus:_.default.bool,sources:_.default.arrayOf(_.default.string),targets:_.default.arrayOf(_.default.string),filterResults:_.default.func,isMobile:_.default.bool,originMobileLabel:_.default.string,destinationMobileLabel:_.default.string,refPoint:Z,modeSet:_.default.string,colors:_.default.objectOf(_.default.string),getAutoSuggestIcons:_.default.objectOf(_.default.func),fontWeights:_.default.shape({medium:_.default.number}),showScroll:_.default.bool,onFocusChange:_.default.func,isEmbedded:_.default.bool,showSwapControl:_.default.bool,showViapointControl:_.default.bool,showSlackControl:_.default.bool,t:_.default.func.isRequired});const Y=a.withTranslation()(q);e.default=e=>h.default.createElement(a.I18nextProvider,{i18n:O},h.default.createElement(Y,e)),e.getEmptyViaPointPlaceHolder=R,Object.defineProperty(e,"__esModule",{value:!0})});
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../../node_modules/style-inject/dist/style-inject.es.js","../src/helpers/Select.js","../src/helpers/translations.js","../src/helpers/i18n.js","../src/index.js","../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"],"sourcesContent":["function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport React from 'react';\nimport { useSelect } from 'downshift';\nimport styles from './select.scss';\n\nconst Select = ({\n value,\n options,\n onSlackTimeSelected,\n viaPointIndex,\n id,\n label,\n icon,\n}) => {\n const labelId = `${id}-label`;\n const selectedItem = options.find(option => option.value === value);\n\n const {\n isOpen,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n getLabelProps,\n highlightedIndex,\n } = useSelect({\n selectedItem,\n items: options,\n labelId,\n id,\n itemToString: item => item.displayName,\n onSelectedItemChange: ({ selectedItem: newItem }) => {\n onSlackTimeSelected(newItem.value, viaPointIndex);\n },\n });\n\n return (\n <div className={styles['combobox-container']}>\n <div className={styles.container}>\n <div {...getToggleButtonProps()}>\n <span className={styles['left-column']}>\n <label {...getLabelProps()} className={styles['combobox-label']}>\n {label}\n </label>\n <div className={styles.input}>\n <span>{selectedItem.displayName}</span>\n </div>\n </span>\n {icon}\n </div>\n <ul\n className={cx([styles.suggestionsContainerOpen, !isOpen && 'hidden'])}\n {...getMenuProps()}\n >\n {isOpen &&\n options.map((option, index) => (\n <li\n key={option.value}\n className={cx([\n styles.suggestion,\n index === highlightedIndex && styles.suggestionHighlighted,\n ])}\n {...getItemProps({ index })}\n >\n <span>{option.displayName}</span>\n </li>\n ))}\n </ul>\n </div>\n </div>\n );\n};\n\nSelect.propTypes = {\n value: PropTypes.number.isRequired,\n onSlackTimeSelected: PropTypes.func.isRequired,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n displayName: PropTypes.string.isRequired,\n value: PropTypes.number.isRequired,\n }).isRequired,\n ).isRequired,\n id: PropTypes.string.isRequired,\n label: PropTypes.node.isRequired,\n icon: PropTypes.node.isRequired,\n viaPointIndex: PropTypes.number.isRequired,\n};\n\nexport default Select;\n","const translations = {\n de: {\n translation: {\n 'add-via-button-label': 'Füge Zwischenziel hinzu',\n 'add-via-duration-button-label':\n 'Setze Umsteigezeit für Zwischenziel {{index}}',\n 'add-via-duration-button-label-close':\n 'Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}',\n 'add-via-duration-button-label-open':\n 'Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Entferne Zwischenziel {{index}}',\n 'swap-order-button-label': 'Tausche Start mit Ziel',\n 'via-point': 'Zwischenziel',\n 'via-point-index': 'Zwischenziel {{index}}',\n 'viapoint-slack-amount': 'Umsteigezeit',\n },\n },\n en: {\n translation: {\n 'add-via-button-label': 'Add via point',\n 'add-via-duration-button-label':\n 'Set stop duration at via point {{index}}',\n 'add-via-duration-button-label-close':\n 'Close stop duration selector at via point {{index}}',\n 'add-via-duration-button-label-open':\n 'Open stop duration selector at via point {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Remove via point {{index}}',\n 'swap-order-button-label': 'Reverse origin and destination',\n 'via-point': 'Via point',\n 'via-point-index': 'Via point {{index}}',\n 'viapoint-slack-amount': 'Stop duration',\n },\n },\n fi: {\n translation: {\n 'add-via-button-label': 'Lisää välipiste',\n 'add-via-duration-button-label':\n 'Aseta välipisteelle {{index}} pysähdyksen kesto',\n 'add-via-duration-button-label-close':\n 'Avaa välipisteen {{index}} pysähdyksen kesto valitsin',\n 'add-via-duration-button-label-open':\n 'Sulje välipisteen {{index}} pysähdyksen kesto valitsin',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Poista välipiste {{index}}',\n 'swap-order-button-label': 'Käännä reitin suunta vastakkaiseksi',\n 'via-point': 'Välipiste',\n 'via-point-index': 'Välipiste {{index}}',\n 'viapoint-slack-amount': 'Pysähdyksen kesto',\n },\n },\n pl: {\n translation: {\n 'add-via-button-label': 'Dodaj punkt pośredni',\n 'add-via-duration-button-label':\n 'Wybierz czas postoju dla punktu {{index}}',\n 'add-via-duration-button-label-close':\n 'Zamknij wybornik czasu postoju w punkcie {{index}}',\n 'add-via-duration-button-label-open':\n 'Otwórz wybornik czasu postoju w punkcie {{index}}',\n 'minute-short': 'min.',\n 'remove-via-button-label': 'Usuń punkt pośredni {{index}}',\n 'swap-order-button-label': 'Odwróć początek i cel',\n 'via-point': 'Punkt pośredni',\n 'via-point-index': 'Punkt pośredni {{index}}',\n 'viapoint-slack-amount': 'Czas postoju',\n },\n },\n sv: {\n translation: {\n 'add-via-button-label': 'Lägg till viapunkt',\n 'add-via-duration-button-label':\n 'Ställ in varaktighet för viapunkten {{index}}',\n 'add-via-duration-button-label-close':\n 'Stäng väljaren för varaktighet vid via-punkten {{index}}',\n 'add-via-duration-button-label-open':\n 'Öppna väljaren för varaktighet vid via-punkten {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Ta bort viapunkt {{index}}',\n 'swap-order-button-label': 'Sväng ruttens riktning till den motsatta',\n 'via-point': 'Via punkt',\n 'via-point-index': 'Via punkt {{index}}',\n 'viapoint-slack-amount': 'Stoppets varaktighet',\n },\n },\n};\n\nexport default translations;\n","import { createInstance } from 'i18next';\nimport translations from './translations';\n\nconst i18n = createInstance({\n fallbackLng: 'fi',\n // debug: true,\n resources: translations,\n defaultNS: 'translation',\n react: {\n useSuspense: true,\n },\n});\n\ni18n.init();\n\nexport default i18n;\n","/* eslint-disable import/no-extraneous-dependencies */\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { I18nextProvider, withTranslation } from 'react-i18next';\nimport { ReactSortable } from 'react-sortablejs';\nimport DTAutoSuggest from '@digitransit-component/digitransit-component-autosuggest';\nimport Icon, {\n defaultColors,\n} from '@digitransit-component/digitransit-component-icon';\nimport isEmpty from 'lodash/isEmpty';\nimport Select from './helpers/Select';\nimport i18n from './helpers/i18n';\nimport styles from './helpers/styles.scss';\n\nexport const getEmptyViaPointPlaceHolder = () => ({});\n\nconst isViaPointEmpty = viaPoint => {\n if (viaPoint === undefined || isEmpty(viaPoint)) {\n return true;\n }\n const keys = Object.keys(viaPoint);\n return (\n keys.length === 1 || (keys.length === 2 && keys.includes('locationSlack'))\n );\n};\n\nconst ItinerarySearchControl = ({\n children,\n className,\n enabled,\n onClick,\n onKeyPress,\n wide,\n ...rest\n}) => (\n <div\n className={styles['itinerary-search-control']}\n style={{ '--width': wide ? '47px' : '40px' }}\n >\n {onClick && enabled && (\n <div\n {...rest}\n className={className}\n onClick={onClick}\n onKeyPress={onKeyPress}\n role=\"button\"\n tabIndex=\"0\"\n >\n {children}\n </div>\n )}\n </div>\n);\n\nconst updateViaPointSlack = (\n activeViaPointSlacks,\n updatedViaPointIndex,\n viaPointRemoved = false,\n) => {\n const foundAtIndex = activeViaPointSlacks.indexOf(updatedViaPointIndex);\n if (foundAtIndex > -1) {\n activeViaPointSlacks.splice(foundAtIndex, 1);\n }\n return viaPointRemoved\n ? activeViaPointSlacks.map(value =>\n value > updatedViaPointIndex ? value - 1 : value,\n )\n : activeViaPointSlacks;\n};\n\nconst isKeyboardSelectionEvent = event => {\n const space = [13, ' ', 'Spacebar'];\n const enter = [32, 'Enter'];\n const key = (event && (event.key || event.which || event.keyCode)) || '';\n if (!key || !space.concat(enter).includes(key)) {\n return false;\n }\n event.preventDefault();\n return true;\n};\n\nconst value = location =>\n (location && location.address) ||\n (location && location.gps && location.ready && 'Nykyinen sijainti') ||\n '';\n\nconst getLocationType = location =>\n location && location.gps === true ? 'position' : 'location';\n\nconst getSlackTimeOptions = t => {\n const timeOptions = [];\n for (let i = 0; i <= 9; i++) {\n const valueInMinutes = i * 10;\n timeOptions.push({\n displayName: `${valueInMinutes} ${t('minute-short')}`,\n value: valueInMinutes * 60,\n });\n }\n return timeOptions;\n};\n\nItinerarySearchControl.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string.isRequired,\n enabled: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n onKeyPress: PropTypes.func.isRequired,\n wide: PropTypes.bool,\n};\n\nItinerarySearchControl.defaultProps = {\n children: undefined,\n wide: false,\n};\n\n/**\n * Panel that renders two DTAutosuggest search fields, including viapoint handling\n *\n * @example\n * const searchContext = {\n * isPeliasLocationAware: false // true / false does Let Pelias suggest based on current user location\n * minimalRegexp: undefined // used for testing min. regexp. For example: new RegExp('.{2,}'),\n * lineRegexp: undefined // identify searches for route numbers/labels: bus | train | metro. For example: new RegExp(\n * // '(^[0-9]+[a-z]?$|^[yuleapinkrtdz]$|(^m[12]?b?$))',\n * // 'i',\n * // ),\n * URL_PELIAS: '' // url for pelias searches\n * feedIDs: ['HSL', 'HSLLautta'] // FeedId's like [HSL, HSLLautta]\n * geocodingSources: ['oa','osm','nlsfi'] // sources for geocoding\n * geocodingSearchParams; {} // Searchparmas fro geocoding\n * getFavouriteLocations: () => ({}), // Function that returns array of favourite locations.\n * getFavouriteStops: () => ({}), // Function that returns array of favourite stops.\n * getLanguage: () => ({}), // Function that returns current language.\n * getFavouriteRoutes: () => ({}), // Function that returns array of favourite routes.\n * getPositions: () => ({}), // Function that returns user's geolocation.\n * getRoutesQuery: () => ({}), // Function that returns query for fetching routes.\n * getStopAndStationsQuery: () => ({}), // Function that fetches favourite stops and stations from graphql API.\n * getFavouriteRoutesQuery: () => ({}), // Function that returns query for fetching favourite routes.\n * getFavouriteVehicleRentalStations: () => ({}), // Function that returns favourite bike rental station.\n * getFavouriteVehicleRentalStationsQuery: () => ({}), // Function that returns query for fetching favourite bike rental stations.\n * startLocationWatch: () => ({}), // Function that locates users geolocation.\n * saveSearch: () => ({}), // Function that saves search to old searches store.\n * clearOldSearches: () => ({}), // Function that clears old searches store.\n * getFutureRoutes: () => ({}), // Function that return future routes\n * saveFutureRoute: () => ({}), // Function that saves a future route\n * clearFutureRoutes: () => ({}), // Function that clears future routes\n * };\n *\n * const origin = {\n * lat: 60.169196,\n * lon: 24.957674,\n * address: 'Aleksanterinkatu, Helsinki',\n * set: true,\n * ready: true,\n * }\n *\n * const destination = {\n * lat: 60.199093,\n * lon: 24.940536,\n * address: 'Opastinsilta 6, Helsinki',\n * set: true,\n * ready: true,\n * }\n * onSelect(item, id) {\n * return null; // Define what to do when a suggestion is being selected. None by default.\n * }\n * onClear(id) {\n * return null; // Define what to do when a suggestion is being selected. None by default.\n * }\n * const getAutoSuggestIcons: {\n * // Called for every city bike station rendered as a search suggestion. Should return the icon and\n * // color used for that station. Two icons are available, 'citybike-stop-digitransit' anditybike-stop-digitransit-secondary'.\n * citybikes: station => {\n * return ['citybike-stop-digitransit', '#f2b62d'];\n * }\n * }\n * const targets = ['Locations', 'Stops', 'Routes']; // Defines what you are searching. all available options are Locations, Stops, Routes, VehicleRentalStations, FutureRoutes, MapPosition and CurrentPosition. Leave empty to search all targets.\n * const sources = ['Favourite', 'History', 'Datasource'] // Defines where you are searching. all available are: Favourite, History (previously searched searches), and Datasource. Leave empty to use all sources.\n * <DTAutosuggestPanel\n * appElement={appElement} // Required. Root element's id. Needed for react-modal component.\n * origin={origin} // Selected origin point\n * destination={destination} // Selected destination point\n * originPlaceHolder={'Give origin'} // Optional Give string shown initially inside origin search field\n * destinationPlaceHolder={'Give destination'} // Optional Give string shown initally inside destination search field\n * initialViaPoints={[]} // Optional. If showViapointControl is set to true, pass initial via points to the panel. Currently no default implementation is given.\n * updateViaPoints={() => return []} // Optional. If showViapointControl is set to true, define how to update your via point list with this function. Currenlty no default implementation is given.\n * swapOrder={() => return null} // Optional. If showSwapControl is set to true, define how to swap order of your points (origin, destination, viapoints). Currently no default implementation is given.\n * searchContext={searchContext}\n * getAutoSuggestIcons={getAutoSuggestIcons}\n * onSelect={this.onSelect}\n * onClear={this.onClear}\n * lang=\"fi\" // Define language fi sv or en.\n * addAnalyticsEvent={null} // Optional. you can record an analytics event if you wish. if passed, component will pass an category, action, name parameters to addAnalyticsEvent\n * disableAutoFocus={false} // Optional. use this to disable autofocus completely from DTAutosuggestPanel\n * sources={sources}\n * targets={targets}\n * isMobile // Optional. Defaults to false. Whether to use mobile search.\n * originMobileLabel=\"Origin label\" // Optional. Custom label text for origin field on mobile.\n * destinationMobileLabel=\"Destination label\" // Optional. Custom label text for destination field on mobile.\n * handleFocusChange={() => {}} // Optional. If defined overrides default onFocusChange behaviour\n * showSwapControl={false} // Optional.\n * showViapointControl={false} // Optional.\n */\n\nconst locationShape = PropTypes.shape({\n address: PropTypes.string,\n lat: PropTypes.number,\n lon: PropTypes.number,\n locationSlack: PropTypes.number,\n});\n\nclass DTAutosuggestPanel extends React.Component {\n static propTypes = {\n appElement: PropTypes.string.isRequired,\n origin: locationShape,\n destination: locationShape,\n originPlaceHolder: PropTypes.string,\n destinationPlaceHolder: PropTypes.string,\n viaPoints: PropTypes.arrayOf(locationShape),\n updateViaPoints: PropTypes.func,\n handleViaPointLocationSelected: PropTypes.func,\n swapOrder: PropTypes.func,\n searchPanelText: PropTypes.string,\n searchContext: PropTypes.shape({\n URL_PELIAS: PropTypes.string,\n }).isRequired,\n onSelect: PropTypes.func.isRequired,\n onClear: PropTypes.func,\n addAnalyticsEvent: PropTypes.func,\n lang: PropTypes.string.isRequired,\n disableAutoFocus: PropTypes.bool,\n sources: PropTypes.arrayOf(PropTypes.string),\n targets: PropTypes.arrayOf(PropTypes.string),\n filterResults: PropTypes.func,\n isMobile: PropTypes.bool,\n originMobileLabel: PropTypes.string,\n destinationMobileLabel: PropTypes.string,\n refPoint: locationShape,\n modeSet: PropTypes.string,\n colors: PropTypes.objectOf(PropTypes.string),\n getAutoSuggestIcons: PropTypes.objectOf(PropTypes.func),\n fontWeights: PropTypes.shape({\n medium: PropTypes.number,\n }),\n showScroll: PropTypes.bool,\n onFocusChange: PropTypes.func,\n isEmbedded: PropTypes.bool,\n showSwapControl: PropTypes.bool,\n showViapointControl: PropTypes.bool,\n showSlackControl: PropTypes.bool,\n t: PropTypes.func.isRequired,\n };\n\n static defaultProps = {\n origin: undefined,\n destination: undefined,\n viaPoints: [],\n originPlaceHolder: 'give-origin',\n destinationPlaceHolder: 'give-destination',\n swapOrder: undefined,\n updateViaPoints: () => {},\n searchPanelText: undefined,\n sources: [],\n targets: [],\n filterResults: undefined,\n onClear: undefined,\n getAutoSuggestIcons: undefined,\n refPoint: undefined,\n addAnalyticsEvent: undefined,\n disableAutoFocus: false,\n isMobile: false,\n handleViaPointLocationSelected: undefined,\n originMobileLabel: null,\n destinationMobileLabel: null,\n modeSet: undefined,\n colors: defaultColors,\n fontWeights: {\n medium: 500,\n },\n showScroll: false,\n onFocusChange: undefined,\n isEmbedded: false,\n showSwapControl: false,\n showViapointControl: false,\n showSlackControl: false,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n activeSlackInputs: [],\n refs: [],\n };\n }\n\n storeReference = ref => {\n this.setState(prevState => ({ refs: [...prevState.refs, ref] }));\n };\n\n handleFocusChange = () => {\n const { destination } = this.props;\n if (!destination || !destination.lat) {\n this.state.refs[1].focus();\n }\n };\n\n updateViaPoints = viaPoints => {\n if (viaPoints.length === 0) {\n this.props.updateViaPoints([]);\n return;\n }\n this.props.updateViaPoints(viaPoints.filter(vp => !isViaPointEmpty(vp)));\n };\n\n handleToggleViaPointSlackClick = viaPointIndex => {\n const { activeSlackInputs } = this.state;\n this.setState({\n activeSlackInputs: activeSlackInputs.includes(viaPointIndex)\n ? updateViaPointSlack(activeSlackInputs, viaPointIndex)\n : activeSlackInputs.concat([viaPointIndex]),\n });\n };\n\n handleViaPointSlackTimeSelected = (slackTimeInSeconds, i) => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'EditViaPointStopDuration',\n category: 'ItinerarySettings',\n name: slackTimeInSeconds / 60,\n });\n }\n const { viaPoints } = this.props;\n viaPoints[i].locationSlack = Number.parseInt(slackTimeInSeconds, 10);\n this.updateViaPoints(viaPoints);\n };\n\n handleViaPointLocationSelected = (viaPointLocation, i) => {\n this.props.handleViaPointLocationSelected(viaPointLocation, i);\n };\n\n handleRemoveViaPointClick = viaPointIndex => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'RemoveJourneyViaPoint',\n category: 'ItinerarySettings',\n name: null,\n });\n }\n const { activeSlackInputs } = this.state;\n const { viaPoints } = this.props;\n viaPoints.splice(viaPointIndex, 1);\n this.setState(\n {\n activeSlackInputs: updateViaPointSlack(\n activeSlackInputs,\n viaPointIndex,\n true,\n ),\n },\n () => this.updateViaPoints(viaPoints),\n );\n };\n\n handleAddViaPointClick = () => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'AddJourneyViaPoint',\n category: 'ItinerarySettings',\n name: 'QuickSettingsButton',\n });\n }\n const { viaPoints } = this.props;\n viaPoints.push(getEmptyViaPointPlaceHolder());\n // We need to update the state so that placeHolder will show up in panel.\n // eslint-disable-next-line react/no-access-state-in-setstate\n this.setState(this.state);\n };\n\n handleSwapOrderClick = () => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'SwitchJourneyStartAndEndPointOrder',\n category: 'ItinerarySettings',\n name: null,\n });\n }\n const { viaPoints } = this.props;\n viaPoints.reverse();\n this.props.swapOrder();\n };\n\n getSlackDisplay = slackInSeconds =>\n `${slackInSeconds / 60} ${this.props.t('minute-short', {\n lng: this.props.lang,\n })}`;\n\n render() {\n const {\n origin,\n searchPanelText,\n searchContext,\n disableAutoFocus,\n viaPoints,\n originMobileLabel,\n destinationMobileLabel,\n fontWeights,\n onFocusChange,\n showSwapControl,\n showViapointControl,\n t,\n lang: lng,\n } = this.props;\n const { primary } = this.props.colors;\n const { activeSlackInputs } = this.state;\n const slackTime = getSlackTimeOptions(t);\n const defaultSlackTimeValue = 0;\n const getViaPointSlackTimeOrDefault = (\n viaPoint,\n defaultValue = defaultSlackTimeValue,\n ) => (viaPoint && viaPoint.locationSlack) || defaultValue;\n const isViaPointSlackTimeInputActive = index =>\n activeSlackInputs.includes(index);\n return (\n <div\n className={cx([\n styles['autosuggest-panel'],\n {\n small: this.props.isMobile,\n },\n ])}\n style={{\n '--color': primary,\n '--font-weight-medium': fontWeights.medium,\n }}\n >\n {' '}\n {searchPanelText ? (\n <div>\n <h1 className={styles['autosuggest-searchpanel-text']}>\n {' '}\n {searchPanelText}\n </h1>\n </div>\n ) : null}\n <div className={styles['origin-input-container']}>\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker\"\n id=\"origin\"\n autoFocus={\n disableAutoFocus === true\n ? false\n : !this.props.isMobile && !origin.lat\n }\n storeRef={this.storeReference}\n refPoint={this.props.refPoint}\n className={getLocationType(origin)}\n placeholder={this.props.originPlaceHolder}\n value={value(origin)}\n searchContext={searchContext}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n focusChange={onFocusChange || this.handleFocusChange}\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n isMobile={this.props.isMobile}\n colors={this.props.colors}\n mobileLabel={originMobileLabel}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n showScroll={this.props.showScroll}\n isEmbedded={this.props.isEmbedded}\n />\n {(showSwapControl || showViapointControl) && (\n <ItinerarySearchControl\n className={styles.opposite}\n enabled={showSwapControl}\n onClick={() => this.handleSwapOrderClick()}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) && this.handleSwapOrderClick()\n }\n aria-label={t('swap-order-button-label', { lng })}\n >\n <Icon img=\"opposite\" color={primary} />\n </ItinerarySearchControl>\n )}\n </div>\n {viaPoints.length === 0 && (\n <div className={styles['rectangle-container']}>\n <div className={styles.rectangle} />\n </div>\n )}\n <ReactSortable\n className={styles['viapoints-container']}\n list={viaPoints}\n handle={`.${styles['viapoint-before']}`}\n animation={200}\n disabled={viaPoints.length <= 1}\n setList={items => {\n const newViaPoints = items.filter(vp => !isViaPointEmpty(vp));\n if (newViaPoints.length > 0) {\n this.props.updateViaPoints(newViaPoints);\n }\n }}\n >\n {viaPoints.map((o, i) => (\n <div\n className={cx(styles['viapoint-container'])}\n key={`viapoint-${i}`} // eslint-disable-line\n >\n <div className={styles['light-gray-background']}>\n <div className={styles.row}>\n <div\n className={styles['viapoint-before']}\n style={viaPoints.length > 1 ? { cursor: 'move' } : {}}\n >\n {viaPoints.length > 1 && (\n <Icon img=\"ellipsis\" rotate={90} color={primary} />\n )}\n </div>\n <div\n className={cx(\n `${styles['viapoint-input-container']} ${\n styles[`viapoint-${i + 1}`]\n }`,\n )}\n >\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker\"\n id=\"via-point\"\n ariaLabel={t('via-point-index', {\n index: i + 1,\n lng,\n })}\n autoFocus={\n disableAutoFocus === true ? false : !this.props.isMobile\n }\n placeholder=\"via-point\"\n className=\"viapoint\"\n searchContext={searchContext}\n refPoint={this.props.refPoint}\n value={(o && o.address) || ''}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n handleViaPoints={item =>\n this.handleViaPointLocationSelected(item, i)\n }\n lang={this.props.lang}\n sources={this.props.sources}\n targets={['Stops', 'Stations']}\n filterResults={this.props.filterResults}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n isMobile={this.props.isMobile}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n colors={this.props.colors}\n showScroll={this.props.showScroll}\n />\n </div>\n {this.props.showSlackControl && (\n <ItinerarySearchControl\n className={styles['add-via-point-slack']}\n enabled={this.props.showViapointControl}\n onClick={() => this.handleToggleViaPointSlackClick(i)}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) &&\n this.handleToggleViaPointSlackClick(i)\n }\n aria-label={t(\n isViaPointSlackTimeInputActive(i)\n ? 'add-via-duration-button-label-open'\n : 'add-via-duration-button-label-close',\n { index: i + 1, lng },\n )}\n wide\n >\n <Icon img=\"time\" color={primary} />\n </ItinerarySearchControl>\n )}\n </div>\n {!isViaPointSlackTimeInputActive(i) &&\n viaPoints[i] &&\n viaPoints[i].locationSlack > 0 && (\n <span className={styles['viapoint-slack-time']}>{`${t(\n 'viapoint-slack-amount',\n {\n lng,\n },\n )}: ${this.getSlackDisplay(\n viaPoints[i].locationSlack,\n )}`}</span>\n )}\n <div\n className={cx(styles['input-viapoint-slack-container'], {\n collapsed: !isViaPointSlackTimeInputActive(i),\n })}\n >\n <div className={styles['select-wrapper']}>\n <Select\n id={`viapoint-slack-${i}`}\n label={t('viapoint-slack-amount', { lng })}\n options={slackTime}\n value={getViaPointSlackTimeOrDefault(viaPoints[i])}\n viaPointIndex={i}\n icon={\n <span\n className={`${styles['combobox-icon']} ${styles['time-input-icon']}`}\n >\n <Icon img=\"time\" color={primary} />\n </span>\n }\n onSlackTimeSelected={this.handleViaPointSlackTimeSelected}\n />\n </div>\n </div>\n </div>\n <ItinerarySearchControl\n className={styles['remove-via-point']}\n enabled={this.props.showViapointControl}\n onClick={() => this.handleRemoveViaPointClick(i)}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) &&\n this.handleRemoveViaPointClick(i)\n }\n aria-label={t('remove-via-button-label', {\n index: i + 1,\n lng,\n })}\n >\n <Icon img=\"trash\" color={primary} />\n </ItinerarySearchControl>\n </div>\n ))}\n </ReactSortable>\n <div className={styles['destination-input-container']}>\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker\"\n id=\"destination\"\n autoFocus={\n disableAutoFocus === true\n ? false\n : !this.props.isMobile && !Number.isNaN(origin.lat)\n }\n storeRef={this.storeReference}\n placeholder={this.props.destinationPlaceHolder}\n className={getLocationType(this.props.destination)}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n searchContext={searchContext}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n refPoint={this.props.refPoint}\n value={value(this.props.destination)}\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n isMobile={this.props.isMobile}\n mobileLabel={destinationMobileLabel}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n colors={this.props.colors}\n showScroll={this.props.showScroll}\n isEmbedded={this.props.isEmbedded}\n />\n {(showSwapControl || showViapointControl) && (\n <ItinerarySearchControl\n className={cx(styles['add-via-point'], styles.more, {\n collapsed: viaPoints.length > 4,\n })}\n enabled={showViapointControl && viaPoints.length === 0}\n onClick={() => this.handleAddViaPointClick()}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) && this.handleAddViaPointClick()\n }\n aria-label={t('add-via-button-label', { lng })}\n >\n <Icon\n img=\"viapoint\"\n width={1.25}\n height={1.375}\n color={primary}\n />\n </ItinerarySearchControl>\n )}\n </div>\n </div>\n );\n }\n}\n\nconst DTAutosuggestPanelWithTranslation = withTranslation()(DTAutosuggestPanel);\n\nexport default props => {\n return (\n <I18nextProvider i18n={i18n}>\n <DTAutosuggestPanelWithTranslation {...props} />\n </I18nextProvider>\n );\n};\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };"],"names":["_typeof","o","Symbol","iterator","constructor","prototype","toPropertyKey","t","i","r","e","toPrimitive","call","TypeError","String","Number","_defineProperty","Object","defineProperty","value","enumerable","configurable","writable","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","Select","options","onSlackTimeSelected","viaPointIndex","id","label","icon","labelId","selectedItem","find","option","isOpen","getToggleButtonProps","getMenuProps","getItemProps","getLabelProps","highlightedIndex","useSelect","items","itemToString","item","displayName","onSelectedItemChange","newItem","React","className","styles","assign","cx","map","index","key","process","env","NODE_ENV","propTypes","PropTypes","number","isRequired","func","arrayOf","shape","string","node","i18n","createInstance","fallbackLng","resources","de","translation","en","fi","pl","sv","defaultNS","react","useSuspense","init","getEmptyViaPointPlaceHolder","isViaPointEmpty","viaPoint","undefined","isEmpty","keys","length","includes","ItinerarySearchControl","_ref","children","enabled","onClick","onKeyPress","wide","rest","n","hasOwnProperty","indexOf","objectWithoutPropertiesLoose","getOwnPropertySymbols","propertyIsEnumerable","_objectWithoutProperties","_excluded","role","tabIndex","updateViaPointSlack","activeViaPointSlacks","updatedViaPointIndex","viaPointRemoved","foundAtIndex","splice","isKeyboardSelectionEvent","event","which","keyCode","concat","preventDefault","location","address","gps","ready","getLocationType","bool","defaultProps","locationShape","lat","lon","locationSlack","DTAutosuggestPanel","Component","props","super","this","setState","prevState","refs","destination","state","focus","viaPoints","updateViaPoints","filter","vp","activeSlackInputs","slackTimeInSeconds","addAnalyticsEvent","action","category","name","parseInt","viaPointLocation","handleViaPointLocationSelected","push","reverse","swapOrder","slackInSeconds","lng","lang","render","origin","searchPanelText","searchContext","disableAutoFocus","originMobileLabel","destinationMobileLabel","fontWeights","onFocusChange","showSwapControl","showViapointControl","primary","colors","slackTime","timeOptions","valueInMinutes","getSlackTimeOptions","getViaPointSlackTimeOrDefault","defaultValue","isViaPointSlackTimeInputActive","isMobile","medium","DTAutoSuggest","appElement","autoFocus","storeRef","storeReference","refPoint","placeholder","originPlaceHolder","getAutoSuggestIcons","onSelect","onClear","focusChange","handleFocusChange","sources","targets","filterResults","mobileLabel","modeSet","showScroll","isEmbedded","opposite","handleSwapOrderClick","Icon","img","color","rectangle","ReactSortable","list","handle","animation","disabled","setList","newViaPoints","row","cursor","rotate","ariaLabel","handleViaPoints","showSlackControl","handleToggleViaPointSlackClick","getSlackDisplay","handleViaPointSlackTimeSelected","handleRemoveViaPointClick","isNaN","destinationPlaceHolder","more","handleAddViaPointClick","width","height","defaultColors","URL_PELIAS","objectOf","DTAutosuggestPanelWithTranslation","withTranslation","I18nextProvider"],"mappings":"mjCAAA,SAASA,EAAQC,GAGf,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAC7F,cAAcA,CACf,EAAG,SAAUA,GACZ,OAAOA,GAAK,mBAAqBC,QAAUD,EAAEG,cAAgBF,QAAUD,IAAMC,OAAOG,UAAY,gBAAkBJ,CACtH,EAAKD,EAAQC,EACb,CCNA,SAASK,EAAcC,GACrB,IAAIC,ECFN,SAAqBD,EAAGE,GACtB,GAAI,UAAYT,EAAQO,KAAOA,EAAG,OAAOA,EACzC,IAAIG,EAAIH,EAAEL,OAAOS,aACjB,QAAS,IAAMD,EAAG,CAChB,IAAIF,EAAIE,EAAEE,KAAKL,EAAGE,GAAK,WACvB,GAAI,UAAYT,EAAQQ,GAAI,OAAOA,EACnC,MAAM,IAAIK,UAAU,+CACrB,CACD,OAAQ,WAAaJ,EAAIK,OAASC,QAAQR,EAC5C,CDPUI,CAAYJ,EAAG,UACvB,MAAO,UAAYP,EAAQQ,GAAKA,EAAIA,EAAI,EAC1C,CEJA,SAASQ,EAAgBN,EAAGD,EAAGF,GAC7B,OAAQE,EAAIH,EAAcG,MAAOC,EAAIO,OAAOC,eAAeR,EAAGD,EAAG,CAC/DU,MAAOZ,EACPa,YAAY,EACZC,cAAc,EACdC,UAAU,IACPZ,EAAED,GAAKF,EAAGG,CACjB,CCRA,SAASa,EAAYC,EAAKC,QACN,IAAbA,IAAiBA,EAAM,CAAA,GAC5B,IAAIC,EAAWD,EAAIC,SAEnB,GAAKF,GAA2B,oBAAbG,SAAnB,CAEA,IAAIC,EAAOD,SAASC,MAAQD,SAASE,qBAAqB,QAAQ,GAC9DC,EAAQH,SAASI,cAAc,SACnCD,EAAME,KAAO,WAEI,QAAbN,GACEE,EAAKK,WACPL,EAAKM,aAAaJ,EAAOF,EAAKK,YAKhCL,EAAKO,YAAYL,GAGfA,EAAMM,WACRN,EAAMM,WAAWC,QAAUb,EAE3BM,EAAMK,YAAYR,SAASW,eAAed,GAnBY,CAqB1D,2uFCnBA,MAAMe,EAASA,EACbpB,QACAqB,UACAC,sBACAC,gBACAC,KACAC,QACAC,WAEA,MAAMC,EAAU,GAAGH,UACbI,EAAeP,EAAQQ,KAAKC,GAAUA,EAAO9B,QAAUA,IAEvD+B,OACJA,EAAMC,qBACNA,EAAoBC,aACpBA,EAAYC,aACZA,EAAYC,cACZA,EAAaC,iBACbA,GACEC,YAAU,CACZT,eACAU,MAAOjB,EACPM,UACAH,KACAe,aAAcC,GAAQA,EAAKC,YAC3BC,qBAAsBA,EAAGd,aAAce,MACrCrB,EAAoBqB,EAAQ3C,MAAOuB,MAIvC,OACEqB,EAAA,QAAAhC,cAAA,MAAA,CAAKiC,UAAWC,GACdF,EAAA,QAAAhC,cAAA,MAAA,CAAKiC,UAAWC,GACdF,EAAAA,QAAAhC,cAASoB,MAAAA,IACPY,EAAA,QAAAhC,cAAA,OAAA,CAAMiC,UAAWC,GACfF,EAAAA,QAAAhC,cAAAd,QAAAA,OAAAiD,OAAA,CAAA,EAAWZ,IAAe,CAAEU,UAAWC,IACpCrB,GAEHmB,UAAAhC,cAAA,MAAA,CAAKiC,UAAWC,GACdF,EAAAA,QAAAhC,cAAA,OAAA,KAAOgB,EAAaa,eAGvBf,GAEHkB,EAAAA,QAAAhC,cAAAd,KAAAA,OAAAiD,OAAA,CACEF,UAAWG,EAAE,QAAEF,GAAkCf,GAAU,WACvDE,KAEHF,GACCV,EAAQ4B,IAAI,CAACnB,EAAQoB,IACnBN,EAAAA,QAAAhC,cAAA,KAAAd,OAAAiD,OAAA,CACEI,IAAKrB,EAAO9B,MACZ6C,UAAWG,EAAE,QACXF,EACAI,IAAUd,GAAoBU,IAE5BZ,EAAa,CAAEgB,WAEnBN,EAAAA,QAAAhC,cAAOkB,OAAAA,KAAAA,EAAOW,kCAS9BW,QAAAC,IAAAC,WAAAlC,EAAOmC,UAAY,CACjBvD,MAAOwD,EAAAA,QAAUC,OAAOC,WACxBpC,oBAAqBkC,EAAAA,QAAUG,KAAKD,WACpCrC,QAASmC,EAAS,QAACI,QACjBJ,EAAAA,QAAUK,MAAM,CACdpB,YAAae,EAAAA,QAAUM,OAAOJ,WAC9B1D,MAAOwD,EAAAA,QAAUC,OAAOC,aACvBA,YACHA,WACFlC,GAAIgC,EAAAA,QAAUM,OAAOJ,WACrBjC,MAAO+B,EAAAA,QAAUO,KAAKL,WACtBhC,KAAM8B,EAAAA,QAAUO,KAAKL,WACrBnC,cAAeiC,EAAAA,QAAUC,OAAOC,aCrFlC,MCGMM,EAAOC,EAAAA,eAAe,CAC1BC,YAAa,KAEbC,UDNmB,CACnBC,GAAI,CACFC,YAAa,CACX,uBAAwB,0BACxB,gCACE,gDACF,sCACE,2DACF,qCACE,wDACF,eAAgB,MAChB,0BAA2B,kCAC3B,0BAA2B,yBAC3B,YAAa,eACb,kBAAmB,yBACnB,wBAAyB,iBAG7BC,GAAI,CACFD,YAAa,CACX,uBAAwB,gBACxB,gCACE,2CACF,sCACE,sDACF,qCACE,qDACF,eAAgB,MAChB,0BAA2B,6BAC3B,0BAA2B,iCAC3B,YAAa,YACb,kBAAmB,sBACnB,wBAAyB,kBAG7BE,GAAI,CACFF,YAAa,CACX,uBAAwB,kBACxB,gCACE,kDACF,sCACE,wDACF,qCACE,yDACF,eAAgB,MAChB,0BAA2B,6BAC3B,0BAA2B,sCAC3B,YAAa,YACb,kBAAmB,sBACnB,wBAAyB,sBAG7BG,GAAI,CACFH,YAAa,CACX,uBAAwB,uBACxB,gCACE,4CACF,sCACE,qDACF,qCACE,oDACF,eAAgB,OAChB,0BAA2B,gCAC3B,0BAA2B,wBAC3B,YAAa,iBACb,kBAAmB,2BACnB,wBAAyB,iBAG7BI,GAAI,CACFJ,YAAa,CACX,uBAAwB,qBACxB,gCACE,gDACF,sCACE,2DACF,qCACE,2DACF,eAAgB,MAChB,0BAA2B,6BAC3B,0BAA2B,2CAC3B,YAAa,YACb,kBAAmB,sBACnB,wBAAyB,0BC5E7BK,UAAW,cACXC,MAAO,CACLC,aAAa,KAIjBZ,EAAKa,6iQCEQC,EAA8BA,KAAO,CAAE,GAE9CC,EAAkBC,IACtB,QAAiBC,IAAbD,GAA0BE,EAAO,QAACF,GACpC,OAAO,EAET,MAAMG,EAAOrF,OAAOqF,KAAKH,GACzB,OACkB,IAAhBG,EAAKC,QAAiC,IAAhBD,EAAKC,QAAgBD,EAAKE,SAAS,kBAIvDC,EAAyBC,IAAA,IAACC,SAC9BA,EAAQ3C,UACRA,EAAS4C,QACTA,EAAOC,QACPA,EAAOC,WACPA,EAAUC,KACVA,GAEDL,EADIM,ECjCL,SAAkCtG,EAAGH,GACnC,GAAI,MAAQG,EAAG,MAAO,GACtB,IAAIT,EACFQ,EACAD,ECLJ,SAAuCC,EAAGC,GACxC,GAAI,MAAQD,EAAG,MAAO,GACtB,IAAIF,EAAI,CAAA,EACR,IAAK,IAAI0G,KAAKxG,EAAG,GAAI,CAAA,EAAGyG,eAAetG,KAAKH,EAAGwG,GAAI,CACjD,IAAK,IAAMvG,EAAEyG,QAAQF,GAAI,SACzB1G,EAAE0G,GAAKxG,EAAEwG,EACV,CACD,OAAO1G,CACT,CDHQ6G,CAA6B1G,EAAGH,GACtC,GAAIU,OAAOoG,sBAAuB,CAChC,IAAIJ,EAAIhG,OAAOoG,sBAAsB3G,GACrC,IAAKD,EAAI,EAAGA,EAAIwG,EAAEV,OAAQ9F,IAAKR,EAAIgH,EAAExG,IAAK,IAAMF,EAAE4G,QAAQlH,IAAM,CAAE,EAACqH,qBAAqB1G,KAAKF,EAAGT,KAAOO,EAAEP,GAAKS,EAAET,GACjH,CACD,OAAOO,CACT,CDuBS+G,CAAAb,EAAAc,GAAA,OAEPzD,EAAA,QAAAhC,cAAA,MAAA,CACEiC,UAAWC,EAAO,4BAClBnC,MAAO,CAAE,UAAWiF,EAAO,OAAS,SAEnCF,GAAWD,GACV7C,EAAAA,QAAAhC,cAAA,MAAAd,OAAAiD,OAAA,CAAA,EACM8C,EAAI,CACRhD,UAAWA,EACX6C,QAASA,EACTC,WAAYA,EACZW,KAAK,SACLC,SAAS,MAERf,KAMHgB,EAAsBA,CAC1BC,EACAC,EACAC,GAAkB,KAElB,MAAMC,EAAeH,EAAqBT,QAAQU,GAIlD,OAHIE,GAAgB,GAClBH,EAAqBI,OAAOD,EAAc,GAErCD,EACHF,EAAqBxD,IAAIjD,GACvBA,EAAQ0G,EAAuB1G,EAAQ,EAAIA,GAE7CyG,GAGAK,EAA2BC,IAC/B,MAEM5D,EAAO4D,IAAUA,EAAM5D,KAAO4D,EAAMC,OAASD,EAAME,UAAa,GACtE,SAAK9D,IAHS,CAAC,GAAI,IAAK,YAGL+D,OAFL,CAAC,GAAI,UAEc7B,SAASlC,MAG1C4D,EAAMI,kBACC,IAGHnH,EAAQoH,GACXA,GAAYA,EAASC,SACrBD,GAAYA,EAASE,KAAOF,EAASG,OAAS,qBAC/C,GAEIC,EAAkBJ,GACtBA,IAA6B,IAAjBA,EAASE,IAAe,WAAa,0BAcnDlE,QAAAC,IAAAC,WAAAgC,EAAuB/B,UAAY,CACjCiC,SAAUhC,EAAS,QAACO,KACpBlB,UAAWW,EAAAA,QAAUM,OAAOJ,WAC5B+B,QAASjC,EAAAA,QAAUiE,KAAK/D,WACxBgC,QAASlC,EAAAA,QAAUG,KAAKD,WACxBiC,WAAYnC,EAAAA,QAAUG,KAAKD,WAC3BkC,KAAMpC,EAAS,QAACiE,OAGlBnC,EAAuBoC,aAAe,CACpClC,cAAUP,EACVW,MAAM,GA4FR,MAAM+B,EAAgBnE,eAAHJ,QAAAC,IAAAC,SAAGE,EAAS,QAACK,MAAM,CACpCwD,QAAS7D,EAAS,QAACM,OACnB8D,IAAKpE,EAAS,QAACC,OACfoE,IAAKrE,EAAS,QAACC,OACfqE,cAAetE,EAAS,QAACC,SACzB,CAAA,EAEF,MAAMsE,UAA2BnF,EAAK,QAACoF,UA4ErC/I,WAAAA,CAAYgJ,GACVC,MAAMD,GAAOpI,EAAAsI,KAAA,iBAOE7H,IACf6H,KAAKC,SAASC,IAAc,CAAEC,KAAM,IAAID,EAAUC,KAAMhI,QACzDT,2BAEmB,KAClB,MAAM0I,YAAEA,GAAgBJ,KAAKF,MACxBM,GAAgBA,EAAYX,KAC/BO,KAAKK,MAAMF,KAAK,GAAGG,UAEtB5I,EAAAsI,KAAA,kBAEiBO,IACS,IAArBA,EAAUtD,OAId+C,KAAKF,MAAMU,gBAAgBD,EAAUE,OAAOC,IAAO9D,EAAgB8D,KAHjEV,KAAKF,MAAMU,gBAAgB,MAI9B9I,EAAAsI,KAAA,iCAEgC5G,IAC/B,MAAMuH,kBAAEA,GAAsBX,KAAKK,MACnCL,KAAKC,SAAS,CACZU,kBAAmBA,EAAkBzD,SAAS9D,GAC1CiF,EAAoBsC,EAAmBvH,GACvCuH,EAAkB5B,OAAO,CAAC3F,QAEjC1B,EAEiCsI,KAAA,kCAAA,CAACY,EAAoB1J,KACjD8I,KAAKF,MAAMe,mBACbb,KAAKF,MAAMe,kBAAkB,CAC3BC,OAAQ,2BACRC,SAAU,oBACVC,KAAMJ,EAAqB,KAG/B,MAAML,UAAEA,GAAcP,KAAKF,MAC3BS,EAAUrJ,GAAGyI,cAAgBlI,OAAOwJ,SAASL,EAAoB,IACjEZ,KAAKQ,gBAAgBD,KACtB7I,EAEgCsI,KAAA,iCAAA,CAACkB,EAAkBhK,KAClD8I,KAAKF,MAAMqB,+BAA+BD,EAAkBhK,KAC7DQ,EAAAsI,KAAA,4BAE2B5G,IACtB4G,KAAKF,MAAMe,mBACbb,KAAKF,MAAMe,kBAAkB,CAC3BC,OAAQ,wBACRC,SAAU,oBACVC,KAAM,OAGV,MAAML,kBAAEA,GAAsBX,KAAKK,OAC7BE,UAAEA,GAAcP,KAAKF,MAC3BS,EAAU7B,OAAOtF,EAAe,GAChC4G,KAAKC,SACH,CACEU,kBAAmBtC,EACjBsC,EACAvH,GACA,IAGJ,IAAM4G,KAAKQ,gBAAgBD,MAE9B7I,gCAEwB,KACnBsI,KAAKF,MAAMe,mBACbb,KAAKF,MAAMe,kBAAkB,CAC3BC,OAAQ,qBACRC,SAAU,oBACVC,KAAM,wBAGV,MAAMT,UAAEA,GAAcP,KAAKF,MAC3BS,EAAUa,KAtWoC,CAAE,GAyWhDpB,KAAKC,SAASD,KAAKK,SACpB3I,8BAEsB,KACjBsI,KAAKF,MAAMe,mBACbb,KAAKF,MAAMe,kBAAkB,CAC3BC,OAAQ,qCACRC,SAAU,oBACVC,KAAM,OAGV,MAAMT,UAAEA,GAAcP,KAAKF,MAC3BS,EAAUc,UACVrB,KAAKF,MAAMwB,cACZ5J,EAEiB6J,KAAAA,kBAAAA,GAChB,GAAGA,EAAiB,MAAMvB,KAAKF,MAAM7I,EAAE,eAAgB,CACrDuK,IAAKxB,KAAKF,MAAM2B,UAxGlBzB,KAAKK,MAAQ,CACXM,kBAAmB,GACnBR,KAAM,GAEV,CAuGAuB,MAAAA,GACE,MAAMC,OACJA,EAAMC,gBACNA,EAAeC,cACfA,EAAaC,iBACbA,EAAgBvB,UAChBA,EAASwB,kBACTA,EAAiBC,uBACjBA,EAAsBC,YACtBA,EAAWC,cACXA,EAAaC,gBACbA,EAAeC,oBACfA,EAAmBnL,EACnBA,EACAwK,KAAMD,GACJxB,KAAKF,OACHuC,QAAEA,GAAYrC,KAAKF,MAAMwC,QACzB3B,kBAAEA,GAAsBX,KAAKK,MAC7BkC,EArUkBtL,KAC1B,MAAMuL,EAAc,GACpB,IAAK,IAAItL,EAAI,EAAGA,GAAK,EAAGA,IAAK,CAC3B,MAAMuL,EAAqB,GAAJvL,EACvBsL,EAAYpB,KAAK,CACf9G,YAAa,GAAGmI,KAAkBxL,EAAE,kBACpCY,MAAwB,GAAjB4K,GAEX,CACA,OAAOD,GA4TaE,CAAoBzL,GAEhC0L,EAAgCA,CACpC9F,EACA+F,EAH4B,IAIxB/F,GAAYA,EAAS8C,eAAkBiD,EACvCC,EAAiC9H,GACrC4F,EAAkBzD,SAASnC,GAC7B,OACEN,EAAA,QAAAhC,cAAA,MAAA,CACEiC,UAAWG,EAAAA,QACTF,EAAO,qBAEEqF,KAAKF,MAAMgD,mBAGtBtK,MAAO,CACL,UAAW6J,EACX,uBAAwBJ,EAAYc,SAGrC,IACAnB,EACCnH,EAAAA,QAAAhC,cAAA,MAAA,KACEgC,EAAAA,QAAAhC,cAAA,KAAA,CAAIiC,UAAWC,EAAO,iCACnB,IACAiH,IAGH,KACJnH,EAAA,QAAAhC,cAAA,MAAA,CAAKiC,UAAWC,EAAO,2BACrBF,EAAA,QAAAhC,cAACuK,UAAa,CACZC,WAAYjD,KAAKF,MAAMmD,WACvB1J,KAAK,YACLF,GAAG,SACH6J,WACuB,IAArBpB,KAEK9B,KAAKF,MAAMgD,WAAanB,EAAOlC,KAEtC0D,SAAUnD,KAAKoD,eACfC,SAAUrD,KAAKF,MAAMuD,SACrB3I,UAAW2E,EAAgBsC,GAC3B2B,YAAatD,KAAKF,MAAMyD,kBACxB1L,MAAOA,EAAM8J,GACbE,cAAeA,EACf2B,oBAAqBxD,KAAKF,MAAM0D,oBAChCC,SAAUzD,KAAKF,MAAM2D,SACrBC,QAAS1D,KAAKF,MAAM4D,QACpBC,YAAazB,GAAiBlC,KAAK4D,kBACnCnC,KAAMzB,KAAKF,MAAM2B,KACjBoC,QAAS7D,KAAKF,MAAM+D,QACpBC,QAAS9D,KAAKF,MAAMgE,QACpBC,cAAe/D,KAAKF,MAAMiE,cAC1BjB,SAAU9C,KAAKF,MAAMgD,SACrBR,OAAQtC,KAAKF,MAAMwC,OACnB0B,YAAajC,EACbE,YAAajC,KAAKF,MAAMmC,YACxBgC,QAASjE,KAAKF,MAAMmE,QACpBC,WAAYlE,KAAKF,MAAMoE,WACvBC,WAAYnE,KAAKF,MAAMqE,cAEvBhC,GAAmBC,IACnB3H,EAAAA,QAAAhC,cAAC0E,EAAsB,CACrBzC,UAAWC,EAAOyJ,SAClB9G,QAAS6E,EACT5E,QAASA,IAAMyC,KAAKqE,uBACpB7G,WAAYpG,GACVuH,EAAyBvH,IAAM4I,KAAKqE,uBAEtC,aAAYpN,EAAE,0BAA2B,CAAEuK,SAE3C/G,EAAA,QAAAhC,cAAC6L,UAAI,CAACC,IAAI,WAAWC,MAAOnC,MAIZ,IAArB9B,EAAUtD,QACTxC,EAAA,QAAAhC,cAAA,MAAA,CAAKiC,UAAWC,EAAO,wBACrBF,EAAA,QAAAhC,cAAA,MAAA,CAAKiC,UAAWC,EAAO8J,aAG3BhK,EAAAA,QAAAhC,cAACiM,gBAAa,CACZhK,UAAWC,EAAO,uBAClBgK,KAAMpE,EACNqE,OAAQ,IAAIjK,EAAO,qBACnBkK,UAAW,IACXC,SAAUvE,EAAUtD,QAAU,EAC9B8H,QAAS5K,IACP,MAAM6K,EAAe7K,EAAMsG,OAAOC,IAAO9D,EAAgB8D,IACrDsE,EAAa/H,OAAS,GACxB+C,KAAKF,MAAMU,gBAAgBwE,KAI9BzE,EAAUzF,IAAI,CAACnE,EAAGO,IACjBuD,EAAA,QAAAhC,cAAA,MAAA,CACEiC,UAAWG,EAAE,QAACF,EAAO,uBACrBK,IAAK,YAAY9D,KAEjBuD,EAAA,QAAAhC,cAAA,MAAA,CAAKiC,UAAWC,EAAO,0BACrBF,EAAA,QAAAhC,cAAA,MAAA,CAAKiC,UAAWC,EAAOsK,KACrBxK,EAAA,QAAAhC,cAAA,MAAA,CACEiC,UAAWC,EAAO,mBAClBnC,MAAO+H,EAAUtD,OAAS,EAAI,CAAEiI,OAAQ,QAAW,CAAC,GAEnD3E,EAAUtD,OAAS,GAClBxC,EAAAA,QAAAhC,cAAC6L,EAAAA,QAAI,CAACC,IAAI,WAAWY,OAAQ,GAAIX,MAAOnC,KAG5C5H,EAAAA,QAAAhC,cAAA,MAAA,CACEiC,UACE,GAAGC,EAAO,+BACRA,EAAO,YAAYzD,EAAI,QAI3BuD,EAAA,QAAAhC,cAACuK,UAAa,CACZC,WAAYjD,KAAKF,MAAMmD,WACvB1J,KAAK,YACLF,GAAG,YACH+L,UAAWnO,EAAE,kBAAmB,CAC9B8D,MAAO7D,EAAI,EACXsK,QAEF0B,WACuB,IAArBpB,IAAqC9B,KAAKF,MAAMgD,SAElDQ,YAAY,YACZ5I,UAAU,WACVmH,cAAeA,EACfwB,SAAUrD,KAAKF,MAAMuD,SACrBxL,MAAQlB,GAAKA,EAAEuI,SAAY,GAC3BuE,SAAUzD,KAAKF,MAAM2D,SACrBC,QAAS1D,KAAKF,MAAM4D,QACpB2B,gBAAiBhL,GACf2F,KAAKmB,+BAA+B9G,EAAMnD,GAE5CuK,KAAMzB,KAAKF,MAAM2B,KACjBoC,QAAS7D,KAAKF,MAAM+D,QACpBC,QAAS,CAAC,QAAS,YACnBC,cAAe/D,KAAKF,MAAMiE,cAC1BP,oBAAqBxD,KAAKF,MAAM0D,oBAChCV,SAAU9C,KAAKF,MAAMgD,SACrBb,YAAajC,KAAKF,MAAMmC,YACxBgC,QAASjE,KAAKF,MAAMmE,QACpB3B,OAAQtC,KAAKF,MAAMwC,OACnB4B,WAAYlE,KAAKF,MAAMoE,cAG1BlE,KAAKF,MAAMwF,kBACV7K,EAAA,QAAAhC,cAAC0E,EAAsB,CACrBzC,UAAWC,EAAO,uBAClB2C,QAAS0C,KAAKF,MAAMsC,oBACpB7E,QAASA,IAAMyC,KAAKuF,+BAA+BrO,GACnDsG,WAAYpG,GACVuH,EAAyBvH,IACzB4I,KAAKuF,+BAA+BrO,GAEtC,aAAYD,EACV4L,EAA+B3L,GAC3B,qCACA,sCACJ,CAAE6D,MAAO7D,EAAI,EAAGsK,QAElB/D,MAAI,GAEJhD,EAAA,QAAAhC,cAAC6L,UAAI,CAACC,IAAI,OAAOC,MAAOnC,OAI5BQ,EAA+B3L,IAC/BqJ,EAAUrJ,IACVqJ,EAAUrJ,GAAGyI,cAAgB,GAC3BlF,EAAA,QAAAhC,cAAA,OAAA,CAAMiC,UAAWC,EAAO,wBAAyB,GAAG1D,EAClD,wBACA,CACEuK,YAEExB,KAAKwF,gBACTjF,EAAUrJ,GAAGyI,kBAGnBlF,UAAAhC,cAAA,MAAA,CACEiC,UAAWG,EAAAA,QAAGF,EAAO,mCACPkI,EAA+B3L,IAC5C,cAEDuD,EAAA,QAAAhC,cAAA,MAAA,CAAKiC,UAAWC,EAAO,mBACrBF,EAAA,QAAAhC,cAACQ,EAAM,CACLI,GAAI,kBAAkBnC,IACtBoC,MAAOrC,EAAE,wBAAyB,CAAEuK,QACpCtI,QAASqJ,EACT1K,MAAO8K,EAA8BpC,EAAUrJ,IAC/CkC,cAAelC,EACfqC,KACEkB,EAAAA,QAAAhC,cAAA,OAAA,CACEiC,UAAW,GAAGC,EAAO,oBAAoBA,EAAO,sBAEhDF,EAAA,QAAAhC,cAAC6L,UAAI,CAACC,IAAI,OAAOC,MAAOnC,KAG5BlJ,oBAAqB6G,KAAKyF,qCAKlChL,UAAAhC,cAAC0E,EAAsB,CACrBzC,UAAWC,EAAO,oBAClB2C,QAAS0C,KAAKF,MAAMsC,oBACpB7E,QAASA,IAAMyC,KAAK0F,0BAA0BxO,GAC9CsG,WAAYpG,GACVuH,EAAyBvH,IACzB4I,KAAK0F,0BAA0BxO,GAEjC,aAAYD,EAAE,0BAA2B,CACvC8D,MAAO7D,EAAI,EACXsK,SAGF/G,EAAA,QAAAhC,cAAC6L,UAAI,CAACC,IAAI,QAAQC,MAAOnC,QAKjC5H,EAAAA,QAAAhC,cAAA,MAAA,CAAKiC,UAAWC,EAAO,gCACrBF,EAAA,QAAAhC,cAACuK,UAAa,CACZC,WAAYjD,KAAKF,MAAMmD,WACvB1J,KAAK,YACLF,GAAG,cACH6J,WACuB,IAArBpB,KAEK9B,KAAKF,MAAMgD,WAAarL,OAAOkO,MAAMhE,EAAOlC,MAEnD0D,SAAUnD,KAAKoD,eACfE,YAAatD,KAAKF,MAAM8F,uBACxBlL,UAAW2E,EAAgBW,KAAKF,MAAMM,aACtCoD,oBAAqBxD,KAAKF,MAAM0D,oBAChC3B,cAAeA,EACf4B,SAAUzD,KAAKF,MAAM2D,SACrBC,QAAS1D,KAAKF,MAAM4D,QACpBL,SAAUrD,KAAKF,MAAMuD,SACrBxL,MAAOA,EAAMmI,KAAKF,MAAMM,aACxBqB,KAAMzB,KAAKF,MAAM2B,KACjBoC,QAAS7D,KAAKF,MAAM+D,QACpBC,QAAS9D,KAAKF,MAAMgE,QACpBC,cAAe/D,KAAKF,MAAMiE,cAC1BjB,SAAU9C,KAAKF,MAAMgD,SACrBkB,YAAahC,EACbC,YAAajC,KAAKF,MAAMmC,YACxBgC,QAASjE,KAAKF,MAAMmE,QACpB3B,OAAQtC,KAAKF,MAAMwC,OACnB4B,WAAYlE,KAAKF,MAAMoE,WACvBC,WAAYnE,KAAKF,MAAMqE,cAEvBhC,GAAmBC,IACnB3H,EAAAA,QAAAhC,cAAC0E,EAAsB,CACrBzC,UAAWG,EAAE,QAACF,EAAO,iBAAkBA,EAAOkL,KACjCtF,EAAUtD,OAAS,gBAEhCK,QAAS8E,GAA4C,IAArB7B,EAAUtD,OAC1CM,QAASA,IAAMyC,KAAK8F,yBACpBtI,WAAYpG,GACVuH,EAAyBvH,IAAM4I,KAAK8F,yBAEtC,aAAY7O,EAAE,uBAAwB,CAAEuK,SAExC/G,EAAA,QAAAhC,cAAC6L,UAAI,CACHC,IAAI,WACJwB,MAAO,KACPC,OAAQ,MACRxB,MAAOnC,MAOrB,EACD3K,EAleKkI,EA0CkB,eAAA,CACpB+B,YAAQ7E,EACRsD,iBAAatD,EACbyD,UAAW,GACXgD,kBAAmB,cACnBqC,uBAAwB,mBACxBtE,eAAWxE,EACX0D,gBAAiBA,OACjBoB,qBAAiB9E,EACjB+G,QAAS,GACTC,QAAS,GACTC,mBAAejH,EACf4G,aAAS5G,EACT0G,yBAAqB1G,EACrBuG,cAAUvG,EACV+D,uBAAmB/D,EACnBgF,kBAAkB,EAClBgB,UAAU,EACV3B,oCAAgCrE,EAChCiF,kBAAmB,KACnBC,uBAAwB,KACxBiC,aAASnH,EACTwF,OAAQ2D,EAAaA,cACrBhE,YAAa,CACXc,OAAQ,KAEVmB,YAAY,EACZhC,mBAAepF,EACfqH,YAAY,EACZhC,iBAAiB,EACjBC,qBAAqB,EACrBkD,kBAAkB,mBACnBrK,QAAAC,IAAAC,WA1EGyE,EACGxE,UAAY,CACjB6H,WAAY5H,EAAAA,QAAUM,OAAOJ,WAC7BoG,OAAQnC,EACRY,YAAaZ,EACb+D,kBAAmBlI,EAAS,QAACM,OAC7BiK,uBAAwBvK,EAAS,QAACM,OAClC4E,UAAWlF,EAAAA,QAAUI,QAAQ+D,GAC7BgB,gBAAiBnF,EAAS,QAACG,KAC3B2F,+BAAgC9F,EAAS,QAACG,KAC1C8F,UAAWjG,EAAS,QAACG,KACrBoG,gBAAiBvG,EAAS,QAACM,OAC3BkG,cAAexG,EAAS,QAACK,MAAM,CAC7BwK,WAAY7K,EAAS,QAACM,SACrBJ,WACHkI,SAAUpI,EAAAA,QAAUG,KAAKD,WACzBmI,QAASrI,EAAS,QAACG,KACnBqF,kBAAmBxF,EAAS,QAACG,KAC7BiG,KAAMpG,EAAAA,QAAUM,OAAOJ,WACvBuG,iBAAkBzG,EAAS,QAACiE,KAC5BuE,QAASxI,EAAS,QAACI,QAAQJ,EAAAA,QAAUM,QACrCmI,QAASzI,EAAS,QAACI,QAAQJ,EAAAA,QAAUM,QACrCoI,cAAe1I,EAAS,QAACG,KACzBsH,SAAUzH,EAAS,QAACiE,KACpByC,kBAAmB1G,EAAS,QAACM,OAC7BqG,uBAAwB3G,EAAS,QAACM,OAClC0H,SAAU7D,EACVyE,QAAS5I,EAAS,QAACM,OACnB2G,OAAQjH,EAAS,QAAC8K,SAAS9K,EAAAA,QAAUM,QACrC6H,oBAAqBnI,EAAS,QAAC8K,SAAS9K,EAAAA,QAAUG,MAClDyG,YAAa5G,EAAS,QAACK,MAAM,CAC3BqH,OAAQ1H,EAAS,QAACC,SAEpB4I,WAAY7I,EAAS,QAACiE,KACtB4C,cAAe7G,EAAS,QAACG,KACzB2I,WAAY9I,EAAS,QAACiE,KACtB6C,gBAAiB9G,EAAS,QAACiE,KAC3B8C,oBAAqB/G,EAAS,QAACiE,KAC/BgG,iBAAkBjK,EAAS,QAACiE,KAC5BrI,EAAGoE,EAAAA,QAAUG,KAAKD,aA6btB,MAAM6K,EAAoCC,EAAAA,iBAAAA,CAAkBzG,aAE7CE,GAEXrF,EAAA,QAAAhC,cAAC6N,kBAAe,CAACzK,KAAMA,GACrBpB,EAAA,QAAAhC,cAAC2N,EAAsCtG"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../../node_modules/style-inject/dist/style-inject.es.js","../src/helpers/Select.js","../src/helpers/translations.js","../src/helpers/i18n.js","../src/index.js","../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"],"sourcesContent":["function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport React from 'react';\nimport { useSelect } from 'downshift';\nimport styles from './select.scss';\n\nconst Select = ({\n value,\n options,\n onSlackTimeSelected,\n viaPointIndex,\n id,\n label,\n icon,\n}) => {\n const labelId = `${id}-label`;\n const selectedItem = options.find(option => option.value === value);\n\n const {\n isOpen,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n getLabelProps,\n highlightedIndex,\n } = useSelect({\n selectedItem,\n items: options,\n labelId,\n id,\n itemToString: item => item.displayName,\n onSelectedItemChange: ({ selectedItem: newItem }) => {\n onSlackTimeSelected(newItem.value, viaPointIndex);\n },\n });\n\n return (\n <div className={styles['combobox-container']}>\n <div className={styles.container}>\n <div {...getToggleButtonProps()}>\n <span className={styles['left-column']}>\n <label {...getLabelProps()} className={styles['combobox-label']}>\n {label}\n </label>\n <div className={styles.input}>\n <span>{selectedItem.displayName}</span>\n </div>\n </span>\n {icon}\n </div>\n <ul\n className={cx([styles.suggestionsContainerOpen, !isOpen && 'hidden'])}\n {...getMenuProps()}\n >\n {isOpen &&\n options.map((option, index) => (\n <li\n key={option.value}\n className={cx([\n styles.suggestion,\n index === highlightedIndex && styles.suggestionHighlighted,\n ])}\n {...getItemProps({ index })}\n >\n <span>{option.displayName}</span>\n </li>\n ))}\n </ul>\n </div>\n </div>\n );\n};\n\nSelect.propTypes = {\n value: PropTypes.number.isRequired,\n onSlackTimeSelected: PropTypes.func.isRequired,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n displayName: PropTypes.string.isRequired,\n value: PropTypes.number.isRequired,\n }).isRequired,\n ).isRequired,\n id: PropTypes.string.isRequired,\n label: PropTypes.node.isRequired,\n icon: PropTypes.node.isRequired,\n viaPointIndex: PropTypes.number.isRequired,\n};\n\nexport default Select;\n","const translations = {\n de: {\n translation: {\n 'add-via-button-label': 'Füge Zwischenziel hinzu',\n 'add-via-duration-button-label':\n 'Setze Umsteigezeit für Zwischenziel {{index}}',\n 'add-via-duration-button-label-close':\n 'Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}',\n 'add-via-duration-button-label-open':\n 'Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Entferne Zwischenziel {{index}}',\n 'swap-order-button-label': 'Tausche Start mit Ziel',\n 'via-point': 'Zwischenziel',\n 'via-point-index': 'Zwischenziel {{index}}',\n 'viapoint-slack-amount': 'Umsteigezeit',\n },\n },\n en: {\n translation: {\n 'add-via-button-label': 'Add via point',\n 'add-via-duration-button-label':\n 'Set stop duration at via point {{index}}',\n 'add-via-duration-button-label-close':\n 'Close stop duration selector at via point {{index}}',\n 'add-via-duration-button-label-open':\n 'Open stop duration selector at via point {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Remove via point {{index}}',\n 'swap-order-button-label': 'Reverse origin and destination',\n 'via-point': 'Via point',\n 'via-point-index': 'Via point {{index}}',\n 'viapoint-slack-amount': 'Stop duration',\n },\n },\n fi: {\n translation: {\n 'add-via-button-label': 'Lisää välipiste',\n 'add-via-duration-button-label':\n 'Aseta välipisteelle {{index}} pysähdyksen kesto',\n 'add-via-duration-button-label-close':\n 'Avaa välipisteen {{index}} pysähdyksen kesto valitsin',\n 'add-via-duration-button-label-open':\n 'Sulje välipisteen {{index}} pysähdyksen kesto valitsin',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Poista välipiste {{index}}',\n 'swap-order-button-label': 'Käännä reitin suunta vastakkaiseksi',\n 'via-point': 'Välipiste',\n 'via-point-index': 'Välipiste {{index}}',\n 'viapoint-slack-amount': 'Pysähdyksen kesto',\n },\n },\n pl: {\n translation: {\n 'add-via-button-label': 'Dodaj punkt pośredni',\n 'add-via-duration-button-label':\n 'Wybierz czas postoju dla punktu {{index}}',\n 'add-via-duration-button-label-close':\n 'Zamknij wybornik czasu postoju w punkcie {{index}}',\n 'add-via-duration-button-label-open':\n 'Otwórz wybornik czasu postoju w punkcie {{index}}',\n 'minute-short': 'min.',\n 'remove-via-button-label': 'Usuń punkt pośredni {{index}}',\n 'swap-order-button-label': 'Odwróć początek i cel',\n 'via-point': 'Punkt pośredni',\n 'via-point-index': 'Punkt pośredni {{index}}',\n 'viapoint-slack-amount': 'Czas postoju',\n },\n },\n sv: {\n translation: {\n 'add-via-button-label': 'Lägg till viapunkt',\n 'add-via-duration-button-label':\n 'Ställ in varaktighet för viapunkten {{index}}',\n 'add-via-duration-button-label-close':\n 'Stäng väljaren för varaktighet vid via-punkten {{index}}',\n 'add-via-duration-button-label-open':\n 'Öppna väljaren för varaktighet vid via-punkten {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Ta bort viapunkt {{index}}',\n 'swap-order-button-label': 'Sväng ruttens riktning till den motsatta',\n 'via-point': 'Via punkt',\n 'via-point-index': 'Via punkt {{index}}',\n 'viapoint-slack-amount': 'Stoppets varaktighet',\n },\n },\n};\n\nexport default translations;\n","import { createInstance } from 'i18next';\nimport translations from './translations';\n\nconst i18n = createInstance({\n fallbackLng: 'fi',\n // debug: true,\n resources: translations,\n defaultNS: 'translation',\n react: {\n useSuspense: true,\n },\n});\n\ni18n.init();\n\nexport default i18n;\n","/* eslint-disable import/no-extraneous-dependencies */\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { I18nextProvider, withTranslation } from 'react-i18next';\nimport { ReactSortable } from 'react-sortablejs';\nimport DTAutoSuggest from '@digitransit-component/digitransit-component-autosuggest';\nimport Icon, {\n defaultColors,\n} from '@digitransit-component/digitransit-component-icon';\nimport isEmpty from 'lodash/isEmpty';\nimport Select from './helpers/Select';\nimport i18n from './helpers/i18n';\nimport styles from './helpers/styles.scss';\n\nexport const getEmptyViaPointPlaceHolder = () => ({});\n\nconst isViaPointEmpty = viaPoint => {\n if (viaPoint === undefined || isEmpty(viaPoint)) {\n return true;\n }\n const keys = Object.keys(viaPoint);\n return (\n keys.length === 1 || (keys.length === 2 && keys.includes('locationSlack'))\n );\n};\n\nconst ItinerarySearchControl = ({\n children,\n className,\n enabled,\n onClick,\n onKeyPress,\n wide,\n ...rest\n}) => (\n <div\n className={styles['itinerary-search-control']}\n style={{ '--width': wide ? '47px' : '40px' }}\n >\n {onClick && enabled && (\n <div\n {...rest}\n className={className}\n onClick={onClick}\n onKeyPress={onKeyPress}\n role=\"button\"\n tabIndex=\"0\"\n >\n {children}\n </div>\n )}\n </div>\n);\n\nconst updateViaPointSlack = (\n activeViaPointSlacks,\n updatedViaPointIndex,\n viaPointRemoved = false,\n) => {\n const foundAtIndex = activeViaPointSlacks.indexOf(updatedViaPointIndex);\n if (foundAtIndex > -1) {\n activeViaPointSlacks.splice(foundAtIndex, 1);\n }\n return viaPointRemoved\n ? activeViaPointSlacks.map(value =>\n value > updatedViaPointIndex ? value - 1 : value,\n )\n : activeViaPointSlacks;\n};\n\nconst isKeyboardSelectionEvent = event => {\n const space = [13, ' ', 'Spacebar'];\n const enter = [32, 'Enter'];\n const key = (event && (event.key || event.which || event.keyCode)) || '';\n if (!key || !space.concat(enter).includes(key)) {\n return false;\n }\n event.preventDefault();\n return true;\n};\n\nconst value = location =>\n (location && location.address) ||\n (location && location.gps && location.ready && 'Nykyinen sijainti') ||\n '';\n\nconst getLocationType = location =>\n location && location.gps === true ? 'position' : 'location';\n\nconst getSlackTimeOptions = t => {\n const timeOptions = [];\n for (let i = 0; i <= 9; i++) {\n const valueInMinutes = i * 10;\n timeOptions.push({\n displayName: `${valueInMinutes} ${t('minute-short')}`,\n value: valueInMinutes * 60,\n });\n }\n return timeOptions;\n};\n\nItinerarySearchControl.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string.isRequired,\n enabled: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n onKeyPress: PropTypes.func.isRequired,\n wide: PropTypes.bool,\n};\n\nItinerarySearchControl.defaultProps = {\n children: undefined,\n wide: false,\n};\n\n/**\n * Panel that renders two DTAutosuggest search fields, including viapoint handling\n *\n * @example\n * const searchContext = {\n * isPeliasLocationAware: false // true / false does Let Pelias suggest based on current user location\n * minimalRegexp: undefined // used for testing min. regexp. For example: new RegExp('.{2,}'),\n * lineRegexp: undefined // identify searches for route numbers/labels: bus | train | metro. For example: new RegExp(\n * // '(^[0-9]+[a-z]?$|^[yuleapinkrtdz]$|(^m[12]?b?$))',\n * // 'i',\n * // ),\n * URL_PELIAS: '' // url for pelias searches\n * feedIDs: ['HSL', 'HSLLautta'] // FeedId's like [HSL, HSLLautta]\n * geocodingSources: ['oa','osm','nlsfi'] // sources for geocoding\n * geocodingSearchParams; {} // Searchparmas fro geocoding\n * getFavouriteLocations: () => ({}), // Function that returns array of favourite locations.\n * getFavouriteStops: () => ({}), // Function that returns array of favourite stops.\n * getLanguage: () => ({}), // Function that returns current language.\n * getFavouriteRoutes: () => ({}), // Function that returns array of favourite routes.\n * getPositions: () => ({}), // Function that returns user's geolocation.\n * getRoutesQuery: () => ({}), // Function that returns query for fetching routes.\n * getStopAndStationsQuery: () => ({}), // Function that fetches favourite stops and stations from graphql API.\n * getFavouriteRoutesQuery: () => ({}), // Function that returns query for fetching favourite routes.\n * getFavouriteVehicleRentalStations: () => ({}), // Function that returns favourite bike rental station.\n * getFavouriteVehicleRentalStationsQuery: () => ({}), // Function that returns query for fetching favourite bike rental stations.\n * startLocationWatch: () => ({}), // Function that locates users geolocation.\n * saveSearch: () => ({}), // Function that saves search to old searches store.\n * clearOldSearches: () => ({}), // Function that clears old searches store.\n * getFutureRoutes: () => ({}), // Function that return future routes\n * saveFutureRoute: () => ({}), // Function that saves a future route\n * clearFutureRoutes: () => ({}), // Function that clears future routes\n * };\n *\n * const origin = {\n * lat: 60.169196,\n * lon: 24.957674,\n * address: 'Aleksanterinkatu, Helsinki',\n * set: true,\n * ready: true,\n * }\n *\n * const destination = {\n * lat: 60.199093,\n * lon: 24.940536,\n * address: 'Opastinsilta 6, Helsinki',\n * set: true,\n * ready: true,\n * }\n * onSelect(item, id) {\n * return null; // Define what to do when a suggestion is being selected. None by default.\n * }\n * onClear(id) {\n * return null; // Define what to do when a suggestion is being selected. None by default.\n * }\n * const getAutoSuggestIcons: {\n * // Called for every city bike station rendered as a search suggestion. Should return the icon and\n * // color used for that station. Two icons are available, 'citybike-stop-digitransit' anditybike-stop-digitransit-secondary'.\n * citybikes: station => {\n * return ['citybike-stop-digitransit', '#f2b62d'];\n * }\n * }\n * const targets = ['Locations', 'Stops', 'Routes']; // Defines what you are searching. all available options are Locations, Stops, Routes, VehicleRentalStations, FutureRoutes, MapPosition and CurrentPosition. Leave empty to search all targets.\n * const sources = ['Favourite', 'History', 'Datasource'] // Defines where you are searching. all available are: Favourite, History (previously searched searches), and Datasource. Leave empty to use all sources.\n * <DTAutosuggestPanel\n * appElement={appElement} // Required. Root element's id. Needed for react-modal component.\n * origin={origin} // Selected origin point\n * destination={destination} // Selected destination point\n * originPlaceHolder={'Give origin'} // Optional Give string shown initially inside origin search field\n * destinationPlaceHolder={'Give destination'} // Optional Give string shown initally inside destination search field\n * initialViaPoints={[]} // Optional. If showViapointControl is set to true, pass initial via points to the panel. Currently no default implementation is given.\n * updateViaPoints={() => return []} // Optional. If showViapointControl is set to true, define how to update your via point list with this function. Currenlty no default implementation is given.\n * swapOrder={() => return null} // Optional. If showSwapControl is set to true, define how to swap order of your points (origin, destination, viapoints). Currently no default implementation is given.\n * searchContext={searchContext}\n * getAutoSuggestIcons={getAutoSuggestIcons}\n * onSelect={this.onSelect}\n * onClear={this.onClear}\n * lang=\"fi\" // Define language fi sv or en.\n * addAnalyticsEvent={null} // Optional. you can record an analytics event if you wish. if passed, component will pass an category, action, name parameters to addAnalyticsEvent\n * disableAutoFocus={false} // Optional. use this to disable autofocus completely from DTAutosuggestPanel\n * sources={sources}\n * targets={targets}\n * isMobile // Optional. Defaults to false. Whether to use mobile search.\n * originMobileLabel=\"Origin label\" // Optional. Custom label text for origin field on mobile.\n * destinationMobileLabel=\"Destination label\" // Optional. Custom label text for destination field on mobile.\n * handleFocusChange={() => {}} // Optional. If defined overrides default onFocusChange behaviour\n * showSwapControl={false} // Optional.\n * showViapointControl={false} // Optional.\n */\n\nconst locationShape = PropTypes.shape({\n address: PropTypes.string,\n lat: PropTypes.number,\n lon: PropTypes.number,\n locationSlack: PropTypes.number,\n});\n\nclass DTAutosuggestPanel extends React.Component {\n static propTypes = {\n appElement: PropTypes.string.isRequired,\n origin: locationShape,\n destination: locationShape,\n originPlaceHolder: PropTypes.string,\n destinationPlaceHolder: PropTypes.string,\n viaPoints: PropTypes.arrayOf(locationShape),\n updateViaPoints: PropTypes.func,\n handleViaPointLocationSelected: PropTypes.func,\n swapOrder: PropTypes.func,\n searchPanelText: PropTypes.string,\n searchContext: PropTypes.shape({\n URL_PELIAS: PropTypes.string,\n }).isRequired,\n onSelect: PropTypes.func.isRequired,\n onClear: PropTypes.func,\n addAnalyticsEvent: PropTypes.func,\n lang: PropTypes.string.isRequired,\n disableAutoFocus: PropTypes.bool,\n sources: PropTypes.arrayOf(PropTypes.string),\n targets: PropTypes.arrayOf(PropTypes.string),\n filterResults: PropTypes.func,\n isMobile: PropTypes.bool,\n originMobileLabel: PropTypes.string,\n destinationMobileLabel: PropTypes.string,\n refPoint: locationShape,\n modeSet: PropTypes.string,\n colors: PropTypes.objectOf(PropTypes.string),\n getAutoSuggestIcons: PropTypes.objectOf(PropTypes.func),\n fontWeights: PropTypes.shape({\n medium: PropTypes.number,\n }),\n showScroll: PropTypes.bool,\n onFocusChange: PropTypes.func,\n isEmbedded: PropTypes.bool,\n showSwapControl: PropTypes.bool,\n showViapointControl: PropTypes.bool,\n showSlackControl: PropTypes.bool,\n t: PropTypes.func.isRequired,\n };\n\n static defaultProps = {\n origin: undefined,\n destination: undefined,\n viaPoints: [],\n originPlaceHolder: 'give-origin',\n destinationPlaceHolder: 'give-destination',\n swapOrder: undefined,\n updateViaPoints: () => {},\n searchPanelText: undefined,\n sources: [],\n targets: [],\n filterResults: undefined,\n onClear: undefined,\n getAutoSuggestIcons: undefined,\n refPoint: undefined,\n addAnalyticsEvent: undefined,\n disableAutoFocus: false,\n isMobile: false,\n handleViaPointLocationSelected: undefined,\n originMobileLabel: null,\n destinationMobileLabel: null,\n modeSet: undefined,\n colors: defaultColors,\n fontWeights: {\n medium: 500,\n },\n showScroll: false,\n onFocusChange: undefined,\n isEmbedded: false,\n showSwapControl: false,\n showViapointControl: false,\n showSlackControl: false,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n activeSlackInputs: [],\n refs: [],\n };\n }\n\n storeReference = ref => {\n this.setState(prevState => ({ refs: [...prevState.refs, ref] }));\n };\n\n handleFocusChange = () => {\n const { destination } = this.props;\n if (!destination || !destination.lat) {\n this.state.refs[1].focus();\n }\n };\n\n updateViaPoints = viaPoints => {\n if (viaPoints.length === 0) {\n this.props.updateViaPoints([]);\n return;\n }\n this.props.updateViaPoints(viaPoints.filter(vp => !isViaPointEmpty(vp)));\n };\n\n handleToggleViaPointSlackClick = viaPointIndex => {\n const { activeSlackInputs } = this.state;\n this.setState({\n activeSlackInputs: activeSlackInputs.includes(viaPointIndex)\n ? updateViaPointSlack(activeSlackInputs, viaPointIndex)\n : activeSlackInputs.concat([viaPointIndex]),\n });\n };\n\n handleViaPointSlackTimeSelected = (slackTimeInSeconds, i) => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'EditViaPointStopDuration',\n category: 'ItinerarySettings',\n name: slackTimeInSeconds / 60,\n });\n }\n const { viaPoints } = this.props;\n viaPoints[i].locationSlack = Number.parseInt(slackTimeInSeconds, 10);\n this.updateViaPoints(viaPoints);\n };\n\n handleViaPointLocationSelected = (viaPointLocation, i) => {\n this.props.handleViaPointLocationSelected(viaPointLocation, i);\n };\n\n handleRemoveViaPointClick = viaPointIndex => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'RemoveJourneyViaPoint',\n category: 'ItinerarySettings',\n name: null,\n });\n }\n const { activeSlackInputs } = this.state;\n const { viaPoints } = this.props;\n viaPoints.splice(viaPointIndex, 1);\n this.setState(\n {\n activeSlackInputs: updateViaPointSlack(\n activeSlackInputs,\n viaPointIndex,\n true,\n ),\n },\n () => this.updateViaPoints(viaPoints),\n );\n };\n\n handleAddViaPointClick = () => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'AddJourneyViaPoint',\n category: 'ItinerarySettings',\n name: 'QuickSettingsButton',\n });\n }\n const { viaPoints } = this.props;\n viaPoints.push(getEmptyViaPointPlaceHolder());\n // We need to update the state so that placeHolder will show up in panel.\n // eslint-disable-next-line react/no-access-state-in-setstate\n this.setState(this.state);\n };\n\n handleSwapOrderClick = () => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'SwitchJourneyStartAndEndPointOrder',\n category: 'ItinerarySettings',\n name: null,\n });\n }\n const { viaPoints } = this.props;\n viaPoints.reverse();\n this.props.swapOrder();\n };\n\n getSlackDisplay = slackInSeconds =>\n `${slackInSeconds / 60} ${this.props.t('minute-short', {\n lng: this.props.lang,\n })}`;\n\n render() {\n const {\n origin,\n searchPanelText,\n searchContext,\n disableAutoFocus,\n viaPoints,\n originMobileLabel,\n destinationMobileLabel,\n fontWeights,\n onFocusChange,\n showSwapControl,\n showViapointControl,\n t,\n lang: lng,\n } = this.props;\n const { primary } = this.props.colors;\n const { activeSlackInputs } = this.state;\n const slackTime = getSlackTimeOptions(t);\n const defaultSlackTimeValue = 0;\n const getViaPointSlackTimeOrDefault = (\n viaPoint,\n defaultValue = defaultSlackTimeValue,\n ) => (viaPoint && viaPoint.locationSlack) || defaultValue;\n const isViaPointSlackTimeInputActive = index =>\n activeSlackInputs.includes(index);\n return (\n <div\n className={cx([\n styles['autosuggest-panel'],\n {\n small: this.props.isMobile,\n },\n ])}\n style={{\n '--color': primary,\n '--font-weight-medium': fontWeights.medium,\n }}\n >\n {' '}\n {searchPanelText ? (\n <div>\n <h1 className={styles['autosuggest-searchpanel-text']}>\n {' '}\n {searchPanelText}\n </h1>\n </div>\n ) : null}\n <div className={styles['origin-input-container']}>\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker\"\n id=\"origin\"\n autoFocus={\n disableAutoFocus === true\n ? false\n : !this.props.isMobile && !origin.lat\n }\n storeRef={this.storeReference}\n refPoint={this.props.refPoint}\n className={getLocationType(origin)}\n placeholder={this.props.originPlaceHolder}\n value={value(origin)}\n searchContext={searchContext}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n focusChange={onFocusChange || this.handleFocusChange}\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n isMobile={this.props.isMobile}\n colors={this.props.colors}\n mobileLabel={originMobileLabel}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n showScroll={this.props.showScroll}\n isEmbedded={this.props.isEmbedded}\n />\n {(showSwapControl || showViapointControl) && (\n <ItinerarySearchControl\n className={styles.opposite}\n enabled={showSwapControl}\n onClick={() => this.handleSwapOrderClick()}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) && this.handleSwapOrderClick()\n }\n aria-label={t('swap-order-button-label', { lng })}\n >\n <Icon img=\"opposite\" color={primary} />\n </ItinerarySearchControl>\n )}\n </div>\n {viaPoints.length === 0 && (\n <div className={styles['rectangle-container']}>\n <div className={styles.rectangle} />\n </div>\n )}\n <ReactSortable\n className={styles['viapoints-container']}\n list={viaPoints}\n handle={`.${styles['viapoint-before']}`}\n animation={200}\n disabled={viaPoints.length <= 1}\n setList={items => {\n const newViaPoints = items.filter(vp => !isViaPointEmpty(vp));\n if (newViaPoints.length > 0) {\n this.props.updateViaPoints(newViaPoints);\n }\n }}\n >\n {viaPoints.map((o, i) => (\n <div\n className={cx(styles['viapoint-container'])}\n key={`viapoint-${i}`} // eslint-disable-line\n >\n <div className={styles['light-gray-background']}>\n <div className={styles.row}>\n <div\n className={styles['viapoint-before']}\n style={viaPoints.length > 1 ? { cursor: 'move' } : {}}\n >\n {viaPoints.length > 1 && (\n <Icon img=\"ellipsis\" rotate={90} color={primary} />\n )}\n </div>\n <div\n className={cx(\n `${styles['viapoint-input-container']} ${\n styles[`viapoint-${i + 1}`]\n }`,\n )}\n >\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker\"\n id=\"via-point\"\n ariaLabel={t('via-point-index', {\n index: i + 1,\n lng,\n })}\n autoFocus={\n disableAutoFocus === true ? false : !this.props.isMobile\n }\n placeholder=\"via-point\"\n className=\"viapoint\"\n searchContext={searchContext}\n refPoint={this.props.refPoint}\n value={(o && o.address) || ''}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n handleViaPoints={item =>\n this.handleViaPointLocationSelected(item, i)\n }\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n isMobile={this.props.isMobile}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n colors={this.props.colors}\n showScroll={this.props.showScroll}\n />\n </div>\n {this.props.showSlackControl && (\n <ItinerarySearchControl\n className={styles['add-via-point-slack']}\n enabled={this.props.showViapointControl}\n onClick={() => this.handleToggleViaPointSlackClick(i)}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) &&\n this.handleToggleViaPointSlackClick(i)\n }\n aria-label={t(\n isViaPointSlackTimeInputActive(i)\n ? 'add-via-duration-button-label-open'\n : 'add-via-duration-button-label-close',\n { index: i + 1, lng },\n )}\n wide\n >\n <Icon img=\"time\" color={primary} />\n </ItinerarySearchControl>\n )}\n </div>\n {!isViaPointSlackTimeInputActive(i) &&\n viaPoints[i] &&\n viaPoints[i].locationSlack > 0 && (\n <span className={styles['viapoint-slack-time']}>{`${t(\n 'viapoint-slack-amount',\n {\n lng,\n },\n )}: ${this.getSlackDisplay(\n viaPoints[i].locationSlack,\n )}`}</span>\n )}\n <div\n className={cx(styles['input-viapoint-slack-container'], {\n collapsed: !isViaPointSlackTimeInputActive(i),\n })}\n >\n <div className={styles['select-wrapper']}>\n <Select\n id={`viapoint-slack-${i}`}\n label={t('viapoint-slack-amount', { lng })}\n options={slackTime}\n value={getViaPointSlackTimeOrDefault(viaPoints[i])}\n viaPointIndex={i}\n icon={\n <span\n className={`${styles['combobox-icon']} ${styles['time-input-icon']}`}\n >\n <Icon img=\"time\" color={primary} />\n </span>\n }\n onSlackTimeSelected={this.handleViaPointSlackTimeSelected}\n />\n </div>\n </div>\n </div>\n <ItinerarySearchControl\n className={styles['remove-via-point']}\n enabled={this.props.showViapointControl}\n onClick={() => this.handleRemoveViaPointClick(i)}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) &&\n this.handleRemoveViaPointClick(i)\n }\n aria-label={t('remove-via-button-label', {\n index: i + 1,\n lng,\n })}\n >\n <Icon img=\"trash\" color={primary} />\n </ItinerarySearchControl>\n </div>\n ))}\n </ReactSortable>\n <div className={styles['destination-input-container']}>\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker\"\n id=\"destination\"\n autoFocus={\n disableAutoFocus === true\n ? false\n : !this.props.isMobile && !Number.isNaN(origin.lat)\n }\n storeRef={this.storeReference}\n placeholder={this.props.destinationPlaceHolder}\n className={getLocationType(this.props.destination)}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n searchContext={searchContext}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n refPoint={this.props.refPoint}\n value={value(this.props.destination)}\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n isMobile={this.props.isMobile}\n mobileLabel={destinationMobileLabel}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n colors={this.props.colors}\n showScroll={this.props.showScroll}\n isEmbedded={this.props.isEmbedded}\n />\n {(showSwapControl || showViapointControl) && (\n <ItinerarySearchControl\n className={cx(styles['add-via-point'], styles.more, {\n collapsed: viaPoints.length > 4,\n })}\n enabled={showViapointControl && viaPoints.length === 0}\n onClick={() => this.handleAddViaPointClick()}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) && this.handleAddViaPointClick()\n }\n aria-label={t('add-via-button-label', { lng })}\n >\n <Icon\n img=\"viapoint\"\n width={1.25}\n height={1.375}\n color={primary}\n />\n </ItinerarySearchControl>\n )}\n </div>\n </div>\n );\n }\n}\n\nconst DTAutosuggestPanelWithTranslation = withTranslation()(DTAutosuggestPanel);\n\nexport default props => {\n return (\n <I18nextProvider i18n={i18n}>\n <DTAutosuggestPanelWithTranslation {...props} />\n </I18nextProvider>\n );\n};\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };"],"names":["_typeof","o","Symbol","iterator","constructor","prototype","toPropertyKey","t","i","r","e","toPrimitive","call","TypeError","String","Number","_defineProperty","Object","defineProperty","value","enumerable","configurable","writable","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","Select","options","onSlackTimeSelected","viaPointIndex","id","label","icon","labelId","selectedItem","find","option","isOpen","getToggleButtonProps","getMenuProps","getItemProps","getLabelProps","highlightedIndex","useSelect","items","itemToString","item","displayName","onSelectedItemChange","newItem","React","className","styles","assign","cx","map","index","key","process","env","NODE_ENV","propTypes","PropTypes","number","isRequired","func","arrayOf","shape","string","node","i18n","createInstance","fallbackLng","resources","de","translation","en","fi","pl","sv","defaultNS","react","useSuspense","init","getEmptyViaPointPlaceHolder","isViaPointEmpty","viaPoint","undefined","isEmpty","keys","length","includes","ItinerarySearchControl","_ref","children","enabled","onClick","onKeyPress","wide","rest","n","hasOwnProperty","indexOf","objectWithoutPropertiesLoose","getOwnPropertySymbols","propertyIsEnumerable","_objectWithoutProperties","_excluded","role","tabIndex","updateViaPointSlack","activeViaPointSlacks","updatedViaPointIndex","viaPointRemoved","foundAtIndex","splice","isKeyboardSelectionEvent","event","which","keyCode","concat","preventDefault","location","address","gps","ready","getLocationType","bool","defaultProps","locationShape","lat","lon","locationSlack","DTAutosuggestPanel","Component","props","super","this","setState","prevState","refs","destination","state","focus","viaPoints","updateViaPoints","filter","vp","activeSlackInputs","slackTimeInSeconds","addAnalyticsEvent","action","category","name","parseInt","viaPointLocation","handleViaPointLocationSelected","push","reverse","swapOrder","slackInSeconds","lng","lang","render","origin","searchPanelText","searchContext","disableAutoFocus","originMobileLabel","destinationMobileLabel","fontWeights","onFocusChange","showSwapControl","showViapointControl","primary","colors","slackTime","timeOptions","valueInMinutes","getSlackTimeOptions","getViaPointSlackTimeOrDefault","defaultValue","isViaPointSlackTimeInputActive","isMobile","medium","DTAutoSuggest","appElement","autoFocus","storeRef","storeReference","refPoint","placeholder","originPlaceHolder","getAutoSuggestIcons","onSelect","onClear","focusChange","handleFocusChange","sources","targets","filterResults","mobileLabel","modeSet","showScroll","isEmbedded","opposite","handleSwapOrderClick","Icon","img","color","rectangle","ReactSortable","list","handle","animation","disabled","setList","newViaPoints","row","cursor","rotate","ariaLabel","handleViaPoints","showSlackControl","handleToggleViaPointSlackClick","getSlackDisplay","handleViaPointSlackTimeSelected","handleRemoveViaPointClick","isNaN","destinationPlaceHolder","more","handleAddViaPointClick","width","height","defaultColors","URL_PELIAS","objectOf","DTAutosuggestPanelWithTranslation","withTranslation","I18nextProvider"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@digitransit-component/digitransit-component-autosuggest-panel",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.3.1",
|
|
4
4
|
"description": "digitransit-component autosuggest-panel module",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"files": [
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"author": "Digitransit Authors",
|
|
29
29
|
"license": "(AGPL-3.0 OR EUPL-1.2)",
|
|
30
30
|
"peerDependencies": {
|
|
31
|
-
"@digitransit-component/digitransit-component-autosuggest": "^7.1.
|
|
31
|
+
"@digitransit-component/digitransit-component-autosuggest": "^7.1.6",
|
|
32
32
|
"@digitransit-component/digitransit-component-icon": "^2.0.1",
|
|
33
33
|
"@hsl-fi/sass": "1.0.0",
|
|
34
34
|
"classnames": "2.5.1",
|
|
@@ -41,5 +41,5 @@
|
|
|
41
41
|
"react-i18next": "^12.3.1",
|
|
42
42
|
"react-sortablejs": "2.0.11"
|
|
43
43
|
},
|
|
44
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "6935bd905158bafab07aba8adff9f1d678c8fbe5"
|
|
45
45
|
}
|