@touchtech/baselayer-ui 2.6.3-alpha.1 → 2.6.3-alpha3.0

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.
@@ -1,4 +1,4 @@
1
- import { ReactNode } from "react";
1
+ import { ReactNode, RefObject } from "react";
2
2
  declare type Placement = {
3
3
  horizontal: "right" | "rightEdge" | "rightOnEdge" | "left" | "leftEdge" | "leftOnEdge" | "leftOnEdge" | "center";
4
4
  vertical: "top" | "topEdge" | "bottom" | "bottomEdge" | "bottomOnEdge" | "center";
@@ -6,8 +6,9 @@ declare type Placement = {
6
6
  };
7
7
  declare type FloatingPanelProps = {
8
8
  children: ReactNode;
9
+ containerRef?: RefObject<HTMLDivElement>;
9
10
  layout?: "column" | "row";
10
11
  placement?: Placement;
11
12
  };
12
- declare function FloatingPanel({ children, layout, placement }: FloatingPanelProps): JSX.Element;
13
+ declare function FloatingPanel({ children, containerRef, layout, placement, }: FloatingPanelProps): JSX.Element;
13
14
  export default FloatingPanel;
@@ -1,13 +1,14 @@
1
- import React from "react";
1
+ import React, { RefObject } from "react";
2
2
  export declare const emptyImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=";
3
3
  declare type ImageProps = {
4
- src: string;
4
+ animation?: "fadeIn" | "scaleUp";
5
5
  alt?: string;
6
- srcWidth?: number;
7
- srcHeight?: number;
8
6
  children?: React.ReactNode;
9
- animation?: "fadeIn" | "scaleUp";
7
+ containerRef?: RefObject<HTMLDivElement>;
10
8
  layout?: "cover" | "contain" | "stretchHorizontally" | "stretchVertically";
9
+ src: string;
10
+ srcWidth?: number;
11
+ srcHeight?: number;
11
12
  };
12
- declare function ImageComponent({ src, alt, srcWidth, srcHeight, children, animation, layout, }: ImageProps): JSX.Element;
13
+ declare function ImageComponent({ src, alt, srcWidth, srcHeight, children, animation, containerRef, layout, }: ImageProps): JSX.Element;
13
14
  export default ImageComponent;
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- !function(e,t){for(var n in t)e[n]=t[n]}(exports,function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=10)}([function(e,t){e.exports=require("react")},function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return a}));var r=Array.isArray;function a(e){var t="";if("string"==typeof e||"number"==typeof e)return e||"";if(r(e))for(var n,o=0;o<e.length;o++)""!==(n=a(e[o]))&&(t+=(t&&" ")+n);else for(var o in e)e.hasOwnProperty(o)&&e[o]&&(t+=(t&&" ")+o);return t}},function(e,t,n){e.exports=n(44)()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(28);Object.defineProperty(t,"Icon",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(13);Object.defineProperty(t,"ButtonLink",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){e.exports={listViewItem:"_2LgjqABwjHtpbGzkQQkqiQ"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(11);Object.defineProperty(t,"Button",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(17);Object.defineProperty(t,"ColorSwatch",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(22);Object.defineProperty(t,"Modal",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(58);Object.defineProperty(t,"Label",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||t.hasOwnProperty(n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),a(n(6),t),a(n(4),t),a(n(15),t),a(n(7),t),a(n(20),t),a(n(25),t),a(n(3),t),a(n(30),t),a(n(33),t),a(n(36),t),a(n(39),t),a(n(46),t),a(n(8),t),a(n(55),t),a(n(9),t),a(n(60),t),a(n(63),t),a(n(68),t),a(n(71),t)},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(12));t.default=function(e){var t,n=e.children,r=e.className,u=e.onClick,l=e.disabled,d=void 0!==l&&l,c=e.inverted,f=void 0!==c&&c,s=e.rounded,p=void 0!==s&&s,v=e.noShadow,m=void 0!==v&&v,_=e.noPadding,y=void 0!==_&&_,h=e.noBorder,b=void 0!==h&&h,O=e.transparent,g=void 0!==O&&O,P=e.stretchHorizontally,j=void 0!==P&&P,E=e.stretchVertically,w=void 0!==E&&E,k=e.offsetSides,C=void 0===k?[]:k,M=e.align,x=void 0===M?"center":M,S=e.size,N=void 0===S?"medium":S,A=e.type;return a.default.createElement("button",{className:o.default([i.default.container,i.default[N],i.default[x],(t={},t[i.default.inverted]=f,t[i.default.rounded]=p,t[i.default.noShadow]=m,t[i.default.noPadding]=y,t[i.default.noBorder]=b,t[i.default.transparent]=g,t[i.default.stretchHorizontally]=j,t[i.default.stretchVertically]=w,t[i.default.leftOffset]=p&&C.includes("left"),t[i.default.rightOffset]=p&&C.includes("right"),t),r]),disabled:d,onClick:u,type:A,role:"button"},"string"!=typeof n&&Array.isArray(n)&&n.length?a.default.createElement("div",{className:i.default.content},n):n)}},function(e,t,n){e.exports={container:"M9_egEC8msu135oPGVdIf",left:"RSRbTg8Yc4-s8k6qU_vCg",small:"_1bNQhbZwLA8ErLmwdQitJe",large:"_2DwLFD-4gDz9HEAAiwWJPq",inverted:"_31CfmTUYpEh1hZvctQ9lK4",rounded:"_2bq31qKD7B6r6CTCOL3drW",rightOffset:"_2eUCWQMETOgiXuib7XfThZ",leftOffset:"G8o_OMDUFsEQ1ytU7oUYG",noShadow:"_2vknhUFAIGmjXs7tgkAC7I",noBorder:"_2p0GpdmPKIFCUes584YHeV",transparent:"_8vMlSRH_9HoRGJh8Swka",stretchHorizontally:"nZ9rOZwzGXVI3ayRgA3QC",stretchVertically:"_1y8ifb95spTLWGAmsbw1R2",noPadding:"_3cO49JELNKtGyaFxRlshyO",content:"o8d7YoT83umePPSFzK31Y"}},function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)},a=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=o(n(0)),u=o(n(1)),l=o(n(14));t.default=function(e){var t,n=e.as,o=e.children,d=e.className,c=e.size,f=e.inverted,s=void 0!==f&&f,p=e.rounded,v=void 0!==p&&p,m=e.transparent,_=void 0!==m&&m,y=e.noShadow,h=void 0!==y&&y,b=e.noPadding,O=void 0!==b&&b,g=e.noBorder,P=void 0!==g&&g,j=e.stretchHorizontally,E=void 0!==j&&j,w=e.stretchVertically,k=void 0!==w&&w,C=e.offsetSides,M=void 0===C?[]:C,x=e.align,S=void 0===x?"center":x,N=a(e,["as","children","className","size","inverted","rounded","transparent","noShadow","noPadding","noBorder","stretchHorizontally","stretchVertically","offsetSides","align"]);return void 0===n&&(n="a"),i.default.createElement(n,r({"data-testid":"button-link",className:u.default([l.default.container,l.default[c],l.default[S],(t={},t[l.default.inverted]=s,t[l.default.rounded]=v,t[l.default.noShadow]=h,t[l.default.noPadding]=O,t[l.default.noBorder]=P,t[l.default.transparent]=_,t[l.default.stretchHorizontally]=E,t[l.default.stretchVertically]=k,t[l.default.leftOffset]=v&&M.includes("left"),t[l.default.rightOffset]=v&&M.includes("right"),t),d])},N),"string"!=typeof o&&Array.isArray(o)&&o.length?i.default.createElement("div",{className:l.default.content},o):o)}},function(e,t,n){e.exports={container:"_3eVBgmkG6hjVokm5Xy4UMQ",left:"_3F6hMEQkJgywUkt1fwmTsy",small:"_8I9fhnzbMvCrl5KPj9f0",medium:"csj4PKQgdPBeF7Rd5Z-WQ",large:"_3_SwqmDWOGv877iHACnJpC",inverted:"_1xOa3CBRHzPCRWNsiJ65aC",rounded:"_3UGlOItzKokVg0wGH0eIlX",rightOffset:"_13tPsp6dfA1Twb1MMHRiGT",leftOffset:"NI5n6bEVRCQPy6AOAsQ1q",noShadow:"gIY9iuvC2VWxcvwwCmaJJ",transparent:"_3Xflh3Q1AZnTOD0ctquI6w",stretchHorizontally:"_2FbRDEGS_7eMUcJ0ViOBU0",stretchVertically:"_1rPm-t5ZWwrS-L9l7z66jb",noPadding:"_3J8DeaLq5iw3Ap7qKJkP9B",noBorder:"_3cEQs-K_mShFNDgDP32Wd6",content:"_1VTyfTwVloAcZwYCZyslsJ"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(16);Object.defineProperty(t,"ColorPicker",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=n(7),u=r(n(19));t.default=function(e){var t=e.colors,n=e.onSelect,r=e.selectedColor,l=e.direction,d=void 0===l?"vertical":l;return a.default.createElement("div",{className:o.default([u.default.colorPicker,u.default[d]])},t.map((function(e){return a.default.createElement(i.ColorSwatch,{key:e.key,color:e,isSelected:e===r,onClick:function(){return n(e)}})})))}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(18));t.default=function(e){var t,n=e.color,r=e.onClick,u=e.isSelected,l=void 0!==u&&u;return a.default.createElement("button",{className:o.default([i.default.colorSwatch,(t={},t[i.default.selected]=l,t)]),"data-testid":"color-swatch",disabled:l,onClick:r,style:{backgroundColor:n.hexCode}},a.default.createElement("span",{className:i.default.srOnly},"Select "+n.label+" color"))}},function(e,t,n){e.exports={colorSwatch:"_13ss1xsMNizvEgP_hxEV8B",selected:"L6fAt6RZYz_z3wPbjZExH",srOnly:"_3vJ5mxpzaYsKaxf-8tB31x"}},function(e,t,n){e.exports={colorPicker:"_31FwH_nWr72k3pugApJub9",horizontal:"Qa-BpuTT2kxpmV_AQgCjH",vertical:"_2x4SAnbopyZmkycWLC0EXk"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(21);Object.defineProperty(t,"ConfirmationModal",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=n(8),u=r(n(24));function l(e){var t,n=e.children,r=e.header,l=e.isOpen,d=e.buttonsLeft,c=void 0===d?[]:d,f=e.buttonsRight,s=void 0===f?[]:f,p=e.onClose,v=void 0===p?function(){}:p,m=e.noPadding,_=void 0!==m&&m;return a.default.createElement(i.Modal,{isOpen:l,onClose:v},a.default.createElement("div",{className:u.default.container},a.default.createElement("h1",{className:u.default.modalHeader},r),a.default.createElement("div",{className:o.default([u.default.modalContent,(t={},t[u.default.noPadding]=_,t)])},n),a.default.createElement("div",{className:u.default.modalButtonsContainer},a.default.createElement("div",{className:u.default.modalButtons},c),a.default.createElement("div",{className:u.default.modalButtons},s))))}l.displayName="ConfirmationModal",t.default=l},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return a(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var u=o(n(0)),l=n(74),d=i(n(23));t.default=function(e){var t=e.children,n=e.isOpen,r=e.button,a=e.onClose,o=void 0===a?function(){}:a;l.useHotkeys("Escape",o);var i=u.useCallback((function(){o()}),[o]);return n&&u.default.createElement(u.default.Fragment,null,u.default.createElement("div",{className:d.default.overlay,"data-testid":"modal-overlay",onClick:i}),u.default.createElement("div",{className:d.default.modal,"data-testid":"modal"},t),r&&u.default.createElement("div",{className:d.default.modalButton},r))}},function(e,t,n){e.exports={overlay:"_1yxCbQJqStUvytvKEeNC3n",modal:"D8SjBx3ikz636YubnHYAY",modalButton:"o8VRVxMrs1xXavADyxjLG"}},function(e,t,n){e.exports={container:"kkgHoBQhFPsKj_x1ZFdRH",modalHeader:"_1WuvHD-GdXLrtqwa04W1qy",modalContent:"_27eUySQqvq5qloNClIjIST",noPadding:"_2gtBXL9PFSpHsW0A9xd55S",modalButtonsContainer:"_5gIpyF3X5thPQAnsAC4z9",modalButtons:"swsoCii1w4xNl7ioDVkO5"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(26);Object.defineProperty(t,"FloatingPanel",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(27));t.default=function(e){var t,n=e.children,r=e.layout,u=void 0===r?"column":r,l=e.placement,d=void 0===l?{horizontal:"center",vertical:"bottom",parent:"viewport"}:l,c="center"===d.horizontal?"horizontalCenter":d.horizontal,f="center"===d.vertical?"verticalCenter":d.vertical;return a.default.createElement("div",{"data-testid":"floating-panel",className:o.default([i.default.container,i.default[c],i.default[f],i.default[u],(t={},t[i.default.fixed]="container"!==d.parent,t)])},n)}},function(e,t,n){e.exports={container:"a6NHO2CVVCfiniye2XLN-",row:"_3RSgB76rEBniPc2Ycr8Zbv",column:"_1JkX15igclnbm5sRScWVDY",fixed:"MMQ1yjEafWkYFVDHMpTbI",plain:"_3m2M_Narc5xwLay8HJljkc",transparent:"_1rfa49zhZxNifz64Oqb_6P",top:"_kUalnDeEfvzqAji0AMDo",topEdge:"W8JAIwLjO8JQGbviZpPQw",topOnEdge:"_3opJ7Eb6tj394uV8a57ixz",right:"_3-vbwjp0aPcLEV1Sx0ICgP",rightEdge:"_3XNFy5ZoMCoYBIabeGN4BQ",rightOnEdge:"_12c3CzUMQE8AG3AL8Hiki2",bottom:"_3geBENH5oErqGdt-QyHnPh",bottomEdge:"_3_saM4Gs32nRbIHHxIEbF6",bottomOnEdge:"_2PLE4dmGhncgk-lEnoU4kv",left:"_1iSBnyZgPeFUWoM4i6dSpU",leftEdge:"_1fX19qIOShn2o5uusRzTgs",leftOnEdge:"KBHDockuHTEOKMGOzadXi",horizontalCenter:"_31t6tHRJ5s-5DcDLFTKh1m",verticalCenter:"_2hq7fkDXHxrxz2t7LLg4_9"}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(29));t.default=function(e){var t,n=e.src,r=e.alt,u=e.size,l=void 0===u?"medium":u,d=e.inverted,c=void 0!==d&&d;return a.default.createElement("img",{className:o.default([i.default.icon,i.default[l],(t={},t[i.default.inverted]=c,t)]),crossOrigin:"anonymous","data-testid":"icon",alt:r,src:n})}},function(e,t,n){e.exports={icon:"uh8zkmQp5ybk5WJSla69D",small:"_9DICtqmQSnLPjm1XI7YVs",medium:"sJpxfYgiTz7ik6JOGu1wi",large:"_2rgucAH8Bnli-cmjz9i2C2",inverted:"I-eI5q8rd2bSp9B-FhUza"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(31);Object.defineProperty(t,"IconButton",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=n(3),u=r(n(32));t.default=function(e){var t,n=e.className,r=e.src,l=e.alt,d=e.offsetSides,c=void 0===d?[]:d,f=e.onClick,s=void 0===f?function(){}:f,p=e.disabled,v=void 0!==p&&p,m=e.inverted,_=void 0!==m&&m,y=e.noShadow,h=void 0!==y&&y,b=e.noBorder,O=void 0!==b&&b,g=e.transparent,P=void 0!==g&&g,j=e.rounded,E=void 0!==j&&j,w=e.size,k=void 0===w?"medium":w,C=e.type,M=void 0===C?"button":C;return a.default.createElement("button",{className:o.default([u.default.container,u.default[k],(t={},t[u.default.inverted]=_,t[u.default.rounded]=E,t[u.default.noShadow]=h,t[u.default.noBorder]=O,t[u.default.transparent]=P,t[u.default.topOffset]=E&&c.includes("top"),t[u.default.rightOffset]=E&&c.includes("right"),t[u.default.bottomOffset]=E&&c.includes("bottom"),t[u.default.leftOffset]=E&&c.includes("left"),t),n]),disabled:v,onClick:s,type:M,role:"button"},a.default.createElement(i.Icon,{src:r,alt:l,size:k,inverted:_}))}},function(e,t,n){e.exports={container:"_2MPuJ3ApvrAvrewjSWGAA2",small:"lOkoan7dbp-goDtJVuK7B",medium:"_3a9cWts_Y7x3pajk8umN3z",large:"_2aG6zXqTEKVcvBaaniCNBy",rounded:"_2JX034qUTCoTdWC2ppA487",topOffset:"_1wpC-WXgL06QKxtPzOwNRK",rightOffset:"LIzrQC7poQT9jURBqMDKh",bottomOffset:"_2i_w5ULkUK7LVw5hEO97Ew",leftOffset:"_38eKlTQTV1YlnEe1GmNtQk",inverted:"_2NkZ50rkA3eZCysY9FAp-e",noShadow:"_3Uy5HZdvkWf7bilT0wxwVe",noBorder:"_2F4Hy9lq5OCrEpPZPh5xAJ",transparent:"_2u7qTMeE9D5rtcsEcSoAY3"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(34);Object.defineProperty(t,"IconButtonLink",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)},a=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=o(n(0)),u=o(n(1)),l=n(3),d=o(n(35));t.default=function(e){var t,n=e.as,o=e.className,c=e.src,f=e.alt,s=e.inverted,p=void 0!==s&&s,v=e.noShadow,m=void 0!==v&&v,_=e.noBorder,y=void 0!==_&&_,h=e.transparent,b=void 0!==h&&h,O=e.rounded,g=void 0!==O&&O,P=e.offsetSides,j=void 0===P?[]:P,E=e.size,w=void 0===E?"medium":E,k=a(e,["as","className","src","alt","inverted","noShadow","noBorder","transparent","rounded","offsetSides","size"]);return void 0===n&&(n="a"),i.default.createElement(n,r({"data-testid":"icon-button-link",className:u.default([d.default.container,d.default[w],(t={},t[d.default.inverted]=p,t[d.default.rounded]=g,t[d.default.noShadow]=m,t[d.default.noBorder]=y,t[d.default.transparent]=b,t[d.default.topOffset]=g&&j.includes("top"),t[d.default.rightOffset]=g&&j.includes("right"),t[d.default.bottomOffset]=g&&j.includes("bottom"),t[d.default.leftOffset]=g&&j.includes("left"),t),o])},k),i.default.createElement(l.Icon,{src:c,alt:f,size:w,inverted:p}))}},function(e,t,n){e.exports={container:"_1uifmKNPDzdu5YDnhgwPQK",small:"pfHcYaew-HrHtTNuR4v7h",large:"_26Z9FH-CNPqf55ZRP1vnab",rounded:"_2q7WvROhNm3gsRIRaQQeaU",topOffset:"wZy_vulZkMbWSX0akcZHA",rightOffset:"_2jhhpm60_yPEfxQ-wazj-5",bottomOffset:"DnnrG7ZXmTIhmWUcs99m1",leftOffset:"_1YdCg7T6XjhmxwcjLNSEb-",inverted:"HV0R-lqwmyeqsS1Z8poZS",noShadow:"_1LPpt70Jjim6SfZe35G2kb",noBorder:"RkzSrGixM28JMat6IB5Lr",transparent:"_1KdXfY3Pk6tENYH81tWrps"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(37);Object.defineProperty(t,"Image",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return a(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.emptyImage=void 0;var u=o(n(0)),l=i(n(1)),d=i(n(38));t.emptyImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=",t.default=function(e){var n,r,a=e.src,o=e.alt,i=e.srcWidth,c=e.srcHeight,f=e.children,s=e.animation,p=e.layout,v=void 0===p?"contain":p,m=u.useState(!1),_=m[0],y=m[1],h=u.useRef(null);return u.useEffect((function(){var e=new Image;return e.crossOrigin="anonymous",e.src=a,e.onload=function(){var e;null===(e=h.current)||void 0===e||e.setAttribute("src",a),y(!0)},function(){e.src="",delete e.onload,delete e.src,delete e.crossOrigin,e=null}}),[a]),f?u.default.createElement("div",{className:l.default([d.default.container,d.default.hasOverlay])},u.default.createElement("img",{ref:h,className:l.default([d.default.image,d.default[v],(n={},n[d.default.fadeIn]="fadeIn"===s&&_,n[d.default.scaleUp]="scaleUp"===s&&_,n)]),crossOrigin:"anonymous","data-testid":"image",alt:o,src:t.emptyImage,width:i,height:c}),f&&u.default.createElement("div",{className:d.default.overlay},f)):u.default.createElement("img",{ref:h,className:l.default([d.default.image,d.default[v],(r={},r[d.default.fadeIn]="fadeIn"===s&&_,r[d.default.scaleUp]="scaleUp"===s&&_,r)]),crossOrigin:"anonymous","data-testid":"image",alt:o,src:t.emptyImage,width:i,height:c})}},function(e,t,n){e.exports={container:"_3zwln8xpkZwpTY5i6J7bOD",hasOverlay:"_2el8xWqqf3w4S3x0s2D9xl",overlay:"Eg3imfbXdI6U6rfRE0-qO",image:"t1897dfts_pqHzSnwmWBW",cover:"_1-R_HDjO6qNnywcNiS8byD",contain:"_3mDpCjHJ2g66e0w4R2EZkG",stretchHorizontally:"_3yEtH7cqpUlVFaGiWG129w",stretchVertically:"lyiBs6OBxvREnwIR0ls2C",fadeIn:"_2OKJw8Udt916IXmTlT986Y",fadeInAnimation:"NoOVrW466Htk6EpZ1wYiI",scaleUp:"_309VTqjVHpVJHuyAQa_aZi",scaleUpAnimation:"_3icbJre0PJ7MFnXQiCY_q6"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(40);Object.defineProperty(t,"ListView",{enumerable:!0,get:function(){return r.default}});var a=n(42);Object.defineProperty(t,"ListViewItem",{enumerable:!0,get:function(){return a.default}});var o=n(43);Object.defineProperty(t,"ListViewLinkItem",{enumerable:!0,get:function(){return o.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(41));t.default=function(e){var t=e.children,n=e.className,r=e.header;return a.default.createElement("div",{className:o.default([i.default.container,n])},r&&a.default.createElement("h3",{className:i.default.header},r),a.default.createElement("ul",{className:i.default.list},t))}},function(e,t,n){e.exports={container:"CPHNd8osKjLvQDEQUErux",header:"_1e7hHSVo59e8yQnhc9B6Id",list:"_1w1W8E6_Hzfes3WZTYZaJK"}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=n(6),u=r(n(5));t.default=function(e){var t=e.children,n=e.active,r=void 0!==n&&n,l=e.disabled,d=void 0!==l&&l,c=e.transparent,f=void 0!==c&&c,s=e.noPadding,p=void 0!==s&&s,v=e.size,m=void 0===v?"medium":v,_=e.align,y=void 0===_?"center":_,h=e.onClick,b=void 0===h?function(){}:h;return a.default.createElement("li",{className:o.default([u.default.listViewItem])},a.default.createElement(i.Button,{onClick:b,disabled:d,inverted:r,transparent:f,noPadding:p,align:y,size:m,stretchHorizontally:!0,noShadow:!0,noBorder:!0},t))}},function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),o=n(2),i=n.n(o),u=n(1),l=n(4),d=n(5),c=n.n(d);function f(){return(f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function s({children:e,active:t,transparent:n,noPadding:r,size:o,align:i,as:d,...s}){return a.a.createElement("li",{className:Object(u.default)([c.a.listViewItem])},a.a.createElement(l.ButtonLink,f({as:d,inverted:t,transparent:n,noPadding:r,align:i,size:o,stretchHorizontally:!0,noShadow:!0,noBorder:!0},s),e))}s.defaultProps={active:!1,transparent:!1,noPadding:!1,size:"medium",align:"center",as:"a"},s.propTypes={children:i.a.node.isRequired,as:i.a.elementType,active:i.a.bool,transparent:i.a.bool,noPadding:i.a.bool,align:i.a.oneOf(["left","center"]),size:i.a.string,onClick:i.a.func},t.default=s},function(e,t,n){"use strict";var r=n(45);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(47);Object.defineProperty(t,"Menu",{enumerable:!0,get:function(){return r.default}});var a=n(49);Object.defineProperty(t,"MenuContainer",{enumerable:!0,get:function(){return a.default}});var o=n(51);Object.defineProperty(t,"MenuItem",{enumerable:!0,get:function(){return o.default}});var i=n(53);Object.defineProperty(t,"MenuLinkItem",{enumerable:!0,get:function(){return i.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(48));t.default=function(e){var t,n=e.children,r=e.className,u=e.isOpen,l=void 0===u||u,d=e.placement,c=void 0===d?{horizontal:"left",vertical:"bottom"}:d,f=e.header;return a.default.createElement("div",{className:o.default([i.default.menu,i.default[c.horizontal],i.default[c.vertical],(t={},t[i.default.open]=l,t),r])},f&&l&&a.default.createElement("h3",{className:i.default.menuHeader},f),a.default.createElement("ul",null,l&&n))}},function(e,t,n){e.exports={menu:"_2ahi8JcnxGHrnZmD0xT9RL",top:"_3gpFTd1Fdx4EAfq170TGs7",right:"_1L5ATpM9GXy-SORFr0G6S4",left:"CYEJl39TkEfnKal3vtvz9",bottom:"_3zyp-NdTBeBDKvk26psZup",open:"_1iaaziZrVI_-E8D99WdNji",entrance:"_2fiKe4-X8PqcG4_9qeB3ZO",menuHeader:"_19nk1IMNS-u_YIQLlmYRtU"}},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return a(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var u=o(n(0)),l=i(n(1)),d=i(n(50));t.default=u.forwardRef((function(e,t){var n=e.children,r=e.className;return u.default.createElement("div",{ref:t,className:l.default([d.default.menuContainer,r])},n)}))},function(e,t,n){e.exports={menuContainer:"_2-SFwsppEuobBJkAwwQrFC"}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(52));t.default=function(e){var t,n=e.children,r=e.className,u=e.onClick,l=e.isActive,d=void 0!==l&&l;return a.default.createElement("li",{className:o.default([i.default.menuItem,(t={},t[i.default.active]=d,t),r]),onClick:u},n)}},function(e,t,n){e.exports={menuItem:"_3gGczRJwrNenXTBLQnC29M",active:"_2j1ilUNkbFGSgulXSoHAdP"}},function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)},a=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=o(n(0)),u=o(n(1)),l=o(n(54));t.default=function(e){var t=e.as,n=e.children,o=e.className,d=a(e,["as","children","className"]);return void 0===t&&(t="a"),i.default.createElement(t,r({"data-testid":"menu-link-item",className:u.default([l.default.menuLinkItem,o])},d),n)}},function(e,t,n){e.exports={menuLinkItem:"_2Dy1LTfScGZtSb_5Lud-lU",active:"_2Uws7bj3yejmn1k7XiyKfQ",menuItem:"_2lI7S2t5zWhQsvg_XnQ7--"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(56);Object.defineProperty(t,"Overlay",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(57));t.default=function(e){var t,n=e.children,r=e.transparent,u=void 0!==r&&r,l=e.isFixed,d=void 0!==l&&l,c=e.onClick,f=void 0===c?function(){}:c;return a.default.createElement("div",{"data-testid":"overlay",className:o.default([i.default.overlay,(t={},t[i.default.transparent]=u,t[i.default.fixed]=d,t)]),onClick:f},n)}},function(e,t,n){e.exports={overlay:"_2QgpyrDcUQyKYESC5DXXJr",transparent:"_28fVmoxp69OPr88Ew0zVeN",fixed:"_2sU3515EbFFgeP1yK2Zubz"}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(59));t.default=function(e){var t=e.value;return a.default.createElement("label",{className:o.default.container},t)}},function(e,t,n){e.exports={container:"_2ql27bllsQX39R3E2uRqg-"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(61);Object.defineProperty(t,"TextInput",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return a(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var u=o(n(0)),l=i(n(1)),d=n(9),c=i(n(62));t.default=function(e){var t=e.label,n=e.onChange,r=e.placeholder,a=e.value,o=e.name,i=e.inputRef,f=e.size,s=void 0===f?"medium":f,p=e.autoFocus,v=void 0!==p&&p,m=e.type,_=void 0===m?"text":m,y=u.useCallback((function(e){return n(e.target.value)}),[n]);return u.default.createElement(u.default.Fragment,null,u.default.createElement(d.Label,{value:t}),u.default.createElement("input",{"data-testid":"input",ref:i,className:l.default([c.default.textInput,c.default[s]]),onChange:i?void 0:y,placeholder:r,name:o,type:_,value:a,autoFocus:v}))}},function(e,t,n){e.exports={textInput:"_2wfqOzWBoAn_K7goqvjXJe",small:"_1a4QOVJB0zW3Urf_5hqNjj",medium:"_3UJoe8nlpzhVTmC09TVso-",large:"_3DQ52Qd_1K4_VxxVv728SX"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(64);Object.defineProperty(t,"Toast",{enumerable:!0,get:function(){return r.default}});var a=n(66);Object.defineProperty(t,"ToastContainer",{enumerable:!0,get:function(){return a.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(65));t.default=function(e){var t=e.children,n=e.image,r=e.buttons,u=e.onClick,l=void 0===u?function(){}:u;return a.default.createElement("div",{className:o.default([i.default.toast]),onClick:l,"data-testid":"toast"},n&&a.default.createElement("img",{"data-testid":"toast-image",className:i.default.toastImage,src:n.src,alt:n.alt}),a.default.createElement("div",{className:i.default.toastContent},t),a.default.createElement("div",{className:i.default.toastButtons},r))}},function(e,t,n){e.exports={toast:"_3sBs_ERXV3k0SQMGUy2Wj4",entrance:"_1_xjtLeUMoEXNA-qOEZhcx",toastContent:"_10lBETCU3UNFR8py1q1q-h",toastImage:"_3Ci0wpObk6oqf7dwkHsFWo",toastButtons:"FEWDnDsP-9A9JHG20qBS5"}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(67));t.default=function(e){var t=e.children;return a.default.createElement("div",{className:o.default([i.default.toastContainer]),"data-testid":"toast-container"},t)}},function(e,t,n){e.exports={toastContainer:"_3F8cJU1wmKmbrjidg-O3zp"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(69);Object.defineProperty(t,"Video",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(70));t.default=function(e){var t=e.src,n=e.type,r=e.children,u=e.muted,l=void 0===u||u,d=e.loop,c=void 0===d||d,f=e.autoPlay,s=void 0===f||f,p=e.layout,v=void 0===p?"contain":p;return r?a.default.createElement("div",{className:o.default([i.default.container,i.default.hasOverlay])},a.default.createElement("video",{"data-testid":"video",crossOrigin:"anonymous",className:o.default([i.default.video,i.default[v]]),muted:l,loop:c,autoPlay:s,playsInline:!0},a.default.createElement("source",{"data-testid":"source",src:t,type:n})),r&&a.default.createElement("div",{className:i.default.overlay},r)):a.default.createElement("video",{"data-testid":"video",crossOrigin:"anonymous",className:o.default([i.default.video,i.default[v]]),muted:l,loop:c,autoPlay:s,playsInline:!0},a.default.createElement("source",{"data-testid":"source",src:t,type:n}))}},function(e,t,n){e.exports={container:"_2EQBfr5w8h1x1bq-2fp6wT",hasOverlay:"_3GRMpmGk_PqITcUv0Nfmt3",video:"_2tZfXkEhCkwAzfaG_BVn0B",cover:"_3OYHfbzaL3QHanWZBj8RxO",contain:"_3I_c7shcSrtG_FxvvU2IeE",stretchHorizontally:"_1Z7dL9uEd0Ksx3CkrZhsB8",stretchVertically:"_1zbrDYO0fYFJVc7xvsTYi6",overlay:"_2osXd7SkwF0Lh-2yiquYQM"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(72);Object.defineProperty(t,"useToggle",{enumerable:!0,get:function(){return r.default}});var a=n(73);Object.defineProperty(t,"useOutsideClick",{enumerable:!0,get:function(){return a.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.default=function(e){void 0===e&&(e=!1);var t=r.useState(e),n=t[0],a=t[1];return[n,r.useCallback((function(e){a("boolean"==typeof e?e:function(e){return!e})}),[n])]}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.default=function(e){var t=r.useRef();return r.useEffect((function(){var n=function(n){t.current&&!t.current.contains(n.target)&&e(n)};return document.addEventListener("click",n),document.addEventListener("touchstart",n),function(){document.removeEventListener("click",n),document.removeEventListener("touchstart",n)}}),[e]),t}},function(e,t,n){"use strict";n.r(t),n.d(t,"useHotkeys",(function(){return x})),n.d(t,"useIsHotkeyPressed",(function(){return M}));
1
+ !function(e,t){for(var n in t)e[n]=t[n]}(exports,function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=10)}([function(e,t){e.exports=require("react")},function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return a}));var r=Array.isArray;function a(e){var t="";if("string"==typeof e||"number"==typeof e)return e||"";if(r(e))for(var n,o=0;o<e.length;o++)""!==(n=a(e[o]))&&(t+=(t&&" ")+n);else for(var o in e)e.hasOwnProperty(o)&&e[o]&&(t+=(t&&" ")+o);return t}},function(e,t,n){e.exports=n(44)()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(28);Object.defineProperty(t,"Icon",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(13);Object.defineProperty(t,"ButtonLink",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){e.exports={listViewItem:"_2LgjqABwjHtpbGzkQQkqiQ"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(11);Object.defineProperty(t,"Button",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(17);Object.defineProperty(t,"ColorSwatch",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(22);Object.defineProperty(t,"Modal",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(58);Object.defineProperty(t,"Label",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||t.hasOwnProperty(n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),a(n(6),t),a(n(4),t),a(n(15),t),a(n(7),t),a(n(20),t),a(n(25),t),a(n(3),t),a(n(30),t),a(n(33),t),a(n(36),t),a(n(39),t),a(n(46),t),a(n(8),t),a(n(55),t),a(n(9),t),a(n(60),t),a(n(63),t),a(n(68),t),a(n(71),t)},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(12));t.default=function(e){var t,n=e.children,r=e.className,u=e.onClick,l=e.disabled,d=void 0!==l&&l,c=e.inverted,f=void 0!==c&&c,s=e.rounded,p=void 0!==s&&s,v=e.noShadow,m=void 0!==v&&v,_=e.noPadding,y=void 0!==_&&_,h=e.noBorder,b=void 0!==h&&h,O=e.transparent,g=void 0!==O&&O,P=e.stretchHorizontally,j=void 0!==P&&P,E=e.stretchVertically,w=void 0!==E&&E,k=e.offsetSides,C=void 0===k?[]:k,M=e.align,x=void 0===M?"center":M,S=e.size,N=void 0===S?"medium":S,A=e.type;return a.default.createElement("button",{className:o.default([i.default.container,i.default[N],i.default[x],(t={},t[i.default.inverted]=f,t[i.default.rounded]=p,t[i.default.noShadow]=m,t[i.default.noPadding]=y,t[i.default.noBorder]=b,t[i.default.transparent]=g,t[i.default.stretchHorizontally]=j,t[i.default.stretchVertically]=w,t[i.default.leftOffset]=p&&C.includes("left"),t[i.default.rightOffset]=p&&C.includes("right"),t),r]),disabled:d,onClick:u,type:A,role:"button"},"string"!=typeof n&&Array.isArray(n)&&n.length?a.default.createElement("div",{className:i.default.content},n):n)}},function(e,t,n){e.exports={container:"M9_egEC8msu135oPGVdIf",left:"RSRbTg8Yc4-s8k6qU_vCg",small:"_1bNQhbZwLA8ErLmwdQitJe",large:"_2DwLFD-4gDz9HEAAiwWJPq",inverted:"_31CfmTUYpEh1hZvctQ9lK4",rounded:"_2bq31qKD7B6r6CTCOL3drW",rightOffset:"_2eUCWQMETOgiXuib7XfThZ",leftOffset:"G8o_OMDUFsEQ1ytU7oUYG",noShadow:"_2vknhUFAIGmjXs7tgkAC7I",noBorder:"_2p0GpdmPKIFCUes584YHeV",transparent:"_8vMlSRH_9HoRGJh8Swka",stretchHorizontally:"nZ9rOZwzGXVI3ayRgA3QC",stretchVertically:"_1y8ifb95spTLWGAmsbw1R2",noPadding:"_3cO49JELNKtGyaFxRlshyO",content:"o8d7YoT83umePPSFzK31Y"}},function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)},a=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=o(n(0)),u=o(n(1)),l=o(n(14));t.default=function(e){var t,n=e.as,o=e.children,d=e.className,c=e.size,f=e.inverted,s=void 0!==f&&f,p=e.rounded,v=void 0!==p&&p,m=e.transparent,_=void 0!==m&&m,y=e.noShadow,h=void 0!==y&&y,b=e.noPadding,O=void 0!==b&&b,g=e.noBorder,P=void 0!==g&&g,j=e.stretchHorizontally,E=void 0!==j&&j,w=e.stretchVertically,k=void 0!==w&&w,C=e.offsetSides,M=void 0===C?[]:C,x=e.align,S=void 0===x?"center":x,N=a(e,["as","children","className","size","inverted","rounded","transparent","noShadow","noPadding","noBorder","stretchHorizontally","stretchVertically","offsetSides","align"]);return void 0===n&&(n="a"),i.default.createElement(n,r({"data-testid":"button-link",className:u.default([l.default.container,l.default[c],l.default[S],(t={},t[l.default.inverted]=s,t[l.default.rounded]=v,t[l.default.noShadow]=h,t[l.default.noPadding]=O,t[l.default.noBorder]=P,t[l.default.transparent]=_,t[l.default.stretchHorizontally]=E,t[l.default.stretchVertically]=k,t[l.default.leftOffset]=v&&M.includes("left"),t[l.default.rightOffset]=v&&M.includes("right"),t),d])},N),"string"!=typeof o&&Array.isArray(o)&&o.length?i.default.createElement("div",{className:l.default.content},o):o)}},function(e,t,n){e.exports={container:"_3eVBgmkG6hjVokm5Xy4UMQ",left:"_3F6hMEQkJgywUkt1fwmTsy",small:"_8I9fhnzbMvCrl5KPj9f0",medium:"csj4PKQgdPBeF7Rd5Z-WQ",large:"_3_SwqmDWOGv877iHACnJpC",inverted:"_1xOa3CBRHzPCRWNsiJ65aC",rounded:"_3UGlOItzKokVg0wGH0eIlX",rightOffset:"_13tPsp6dfA1Twb1MMHRiGT",leftOffset:"NI5n6bEVRCQPy6AOAsQ1q",noShadow:"gIY9iuvC2VWxcvwwCmaJJ",transparent:"_3Xflh3Q1AZnTOD0ctquI6w",stretchHorizontally:"_2FbRDEGS_7eMUcJ0ViOBU0",stretchVertically:"_1rPm-t5ZWwrS-L9l7z66jb",noPadding:"_3J8DeaLq5iw3Ap7qKJkP9B",noBorder:"_3cEQs-K_mShFNDgDP32Wd6",content:"_1VTyfTwVloAcZwYCZyslsJ"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(16);Object.defineProperty(t,"ColorPicker",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=n(7),u=r(n(19));t.default=function(e){var t=e.colors,n=e.onSelect,r=e.selectedColor,l=e.direction,d=void 0===l?"vertical":l;return a.default.createElement("div",{className:o.default([u.default.colorPicker,u.default[d]])},t.map((function(e){return a.default.createElement(i.ColorSwatch,{key:e.key,color:e,isSelected:e===r,onClick:function(){return n(e)}})})))}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(18));t.default=function(e){var t,n=e.color,r=e.onClick,u=e.isSelected,l=void 0!==u&&u;return a.default.createElement("button",{className:o.default([i.default.colorSwatch,(t={},t[i.default.selected]=l,t)]),"data-testid":"color-swatch",disabled:l,onClick:r,style:{backgroundColor:n.hexCode}},a.default.createElement("span",{className:i.default.srOnly},"Select "+n.label+" color"))}},function(e,t,n){e.exports={colorSwatch:"_13ss1xsMNizvEgP_hxEV8B",selected:"L6fAt6RZYz_z3wPbjZExH",srOnly:"_3vJ5mxpzaYsKaxf-8tB31x"}},function(e,t,n){e.exports={colorPicker:"_31FwH_nWr72k3pugApJub9",horizontal:"Qa-BpuTT2kxpmV_AQgCjH",vertical:"_2x4SAnbopyZmkycWLC0EXk"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(21);Object.defineProperty(t,"ConfirmationModal",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=n(8),u=r(n(24));function l(e){var t,n=e.children,r=e.header,l=e.isOpen,d=e.buttonsLeft,c=void 0===d?[]:d,f=e.buttonsRight,s=void 0===f?[]:f,p=e.onClose,v=void 0===p?function(){}:p,m=e.noPadding,_=void 0!==m&&m;return a.default.createElement(i.Modal,{isOpen:l,onClose:v},a.default.createElement("div",{className:u.default.container},a.default.createElement("h1",{className:u.default.modalHeader},r),a.default.createElement("div",{className:o.default([u.default.modalContent,(t={},t[u.default.noPadding]=_,t)])},n),a.default.createElement("div",{className:u.default.modalButtonsContainer},a.default.createElement("div",{className:u.default.modalButtons},c),a.default.createElement("div",{className:u.default.modalButtons},s))))}l.displayName="ConfirmationModal",t.default=l},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return a(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var u=o(n(0)),l=n(74),d=i(n(23));t.default=function(e){var t=e.children,n=e.isOpen,r=e.button,a=e.onClose,o=void 0===a?function(){}:a;l.useHotkeys("Escape",o);var i=u.useCallback((function(){o()}),[o]);return n&&u.default.createElement(u.default.Fragment,null,u.default.createElement("div",{className:d.default.overlay,"data-testid":"modal-overlay",onClick:i}),u.default.createElement("div",{className:d.default.modal,"data-testid":"modal"},t),r&&u.default.createElement("div",{className:d.default.modalButton},r))}},function(e,t,n){e.exports={overlay:"_1yxCbQJqStUvytvKEeNC3n",modal:"D8SjBx3ikz636YubnHYAY",modalButton:"o8VRVxMrs1xXavADyxjLG"}},function(e,t,n){e.exports={container:"kkgHoBQhFPsKj_x1ZFdRH",modalHeader:"_1WuvHD-GdXLrtqwa04W1qy",modalContent:"_27eUySQqvq5qloNClIjIST",noPadding:"_2gtBXL9PFSpHsW0A9xd55S",modalButtonsContainer:"_5gIpyF3X5thPQAnsAC4z9",modalButtons:"swsoCii1w4xNl7ioDVkO5"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(26);Object.defineProperty(t,"FloatingPanel",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(27));t.default=function(e){var t,n=e.children,r=e.containerRef,u=e.layout,l=void 0===u?"column":u,d=e.placement,c=void 0===d?{horizontal:"center",vertical:"bottom",parent:"viewport"}:d,f="center"===c.horizontal?"horizontalCenter":c.horizontal,s="center"===c.vertical?"verticalCenter":c.vertical;return a.default.createElement("div",{ref:r,"data-testid":"floating-panel",className:o.default([i.default.container,i.default[f],i.default[s],i.default[l],(t={},t[i.default.fixed]="container"!==c.parent,t)])},n)}},function(e,t,n){e.exports={container:"a6NHO2CVVCfiniye2XLN-",row:"_3RSgB76rEBniPc2Ycr8Zbv",column:"_1JkX15igclnbm5sRScWVDY",fixed:"MMQ1yjEafWkYFVDHMpTbI",plain:"_3m2M_Narc5xwLay8HJljkc",transparent:"_1rfa49zhZxNifz64Oqb_6P",top:"_kUalnDeEfvzqAji0AMDo",topEdge:"W8JAIwLjO8JQGbviZpPQw",topOnEdge:"_3opJ7Eb6tj394uV8a57ixz",right:"_3-vbwjp0aPcLEV1Sx0ICgP",rightEdge:"_3XNFy5ZoMCoYBIabeGN4BQ",rightOnEdge:"_12c3CzUMQE8AG3AL8Hiki2",bottom:"_3geBENH5oErqGdt-QyHnPh",bottomEdge:"_3_saM4Gs32nRbIHHxIEbF6",bottomOnEdge:"_2PLE4dmGhncgk-lEnoU4kv",left:"_1iSBnyZgPeFUWoM4i6dSpU",leftEdge:"_1fX19qIOShn2o5uusRzTgs",leftOnEdge:"KBHDockuHTEOKMGOzadXi",horizontalCenter:"_31t6tHRJ5s-5DcDLFTKh1m",verticalCenter:"_2hq7fkDXHxrxz2t7LLg4_9"}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(29));t.default=function(e){var t,n=e.src,r=e.alt,u=e.size,l=void 0===u?"medium":u,d=e.inverted,c=void 0!==d&&d;return a.default.createElement("img",{className:o.default([i.default.icon,i.default[l],(t={},t[i.default.inverted]=c,t)]),crossOrigin:"anonymous","data-testid":"icon",alt:r,src:n})}},function(e,t,n){e.exports={icon:"uh8zkmQp5ybk5WJSla69D",small:"_9DICtqmQSnLPjm1XI7YVs",medium:"sJpxfYgiTz7ik6JOGu1wi",large:"_2rgucAH8Bnli-cmjz9i2C2",inverted:"I-eI5q8rd2bSp9B-FhUza"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(31);Object.defineProperty(t,"IconButton",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=n(3),u=r(n(32));t.default=function(e){var t,n=e.className,r=e.src,l=e.alt,d=e.offsetSides,c=void 0===d?[]:d,f=e.onClick,s=void 0===f?function(){}:f,p=e.disabled,v=void 0!==p&&p,m=e.inverted,_=void 0!==m&&m,y=e.noShadow,h=void 0!==y&&y,b=e.noBorder,O=void 0!==b&&b,g=e.transparent,P=void 0!==g&&g,j=e.rounded,E=void 0!==j&&j,w=e.size,k=void 0===w?"medium":w,C=e.type,M=void 0===C?"button":C;return a.default.createElement("button",{className:o.default([u.default.container,u.default[k],(t={},t[u.default.inverted]=_,t[u.default.rounded]=E,t[u.default.noShadow]=h,t[u.default.noBorder]=O,t[u.default.transparent]=P,t[u.default.topOffset]=E&&c.includes("top"),t[u.default.rightOffset]=E&&c.includes("right"),t[u.default.bottomOffset]=E&&c.includes("bottom"),t[u.default.leftOffset]=E&&c.includes("left"),t),n]),disabled:v,onClick:s,type:M,role:"button"},a.default.createElement(i.Icon,{src:r,alt:l,size:k,inverted:_}))}},function(e,t,n){e.exports={container:"_2MPuJ3ApvrAvrewjSWGAA2",small:"lOkoan7dbp-goDtJVuK7B",medium:"_3a9cWts_Y7x3pajk8umN3z",large:"_2aG6zXqTEKVcvBaaniCNBy",rounded:"_2JX034qUTCoTdWC2ppA487",topOffset:"_1wpC-WXgL06QKxtPzOwNRK",rightOffset:"LIzrQC7poQT9jURBqMDKh",bottomOffset:"_2i_w5ULkUK7LVw5hEO97Ew",leftOffset:"_38eKlTQTV1YlnEe1GmNtQk",inverted:"_2NkZ50rkA3eZCysY9FAp-e",noShadow:"_3Uy5HZdvkWf7bilT0wxwVe",noBorder:"_2F4Hy9lq5OCrEpPZPh5xAJ",transparent:"_2u7qTMeE9D5rtcsEcSoAY3"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(34);Object.defineProperty(t,"IconButtonLink",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)},a=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=o(n(0)),u=o(n(1)),l=n(3),d=o(n(35));t.default=function(e){var t,n=e.as,o=e.className,c=e.src,f=e.alt,s=e.inverted,p=void 0!==s&&s,v=e.noShadow,m=void 0!==v&&v,_=e.noBorder,y=void 0!==_&&_,h=e.transparent,b=void 0!==h&&h,O=e.rounded,g=void 0!==O&&O,P=e.offsetSides,j=void 0===P?[]:P,E=e.size,w=void 0===E?"medium":E,k=a(e,["as","className","src","alt","inverted","noShadow","noBorder","transparent","rounded","offsetSides","size"]);return void 0===n&&(n="a"),i.default.createElement(n,r({"data-testid":"icon-button-link",className:u.default([d.default.container,d.default[w],(t={},t[d.default.inverted]=p,t[d.default.rounded]=g,t[d.default.noShadow]=m,t[d.default.noBorder]=y,t[d.default.transparent]=b,t[d.default.topOffset]=g&&j.includes("top"),t[d.default.rightOffset]=g&&j.includes("right"),t[d.default.bottomOffset]=g&&j.includes("bottom"),t[d.default.leftOffset]=g&&j.includes("left"),t),o])},k),i.default.createElement(l.Icon,{src:c,alt:f,size:w,inverted:p}))}},function(e,t,n){e.exports={container:"_1uifmKNPDzdu5YDnhgwPQK",small:"pfHcYaew-HrHtTNuR4v7h",large:"_26Z9FH-CNPqf55ZRP1vnab",rounded:"_2q7WvROhNm3gsRIRaQQeaU",topOffset:"wZy_vulZkMbWSX0akcZHA",rightOffset:"_2jhhpm60_yPEfxQ-wazj-5",bottomOffset:"DnnrG7ZXmTIhmWUcs99m1",leftOffset:"_1YdCg7T6XjhmxwcjLNSEb-",inverted:"HV0R-lqwmyeqsS1Z8poZS",noShadow:"_1LPpt70Jjim6SfZe35G2kb",noBorder:"RkzSrGixM28JMat6IB5Lr",transparent:"_1KdXfY3Pk6tENYH81tWrps"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(37);Object.defineProperty(t,"Image",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return a(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.emptyImage=void 0;var u=o(n(0)),l=i(n(1)),d=i(n(38));t.emptyImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=",t.default=function(e){var n,r,a=e.src,o=e.alt,i=e.srcWidth,c=e.srcHeight,f=e.children,s=e.animation,p=e.containerRef,v=e.layout,m=void 0===v?"contain":v,_=u.useState(!1),y=_[0],h=_[1],b=u.useRef(null);return u.useEffect((function(){var e=new Image;return e.crossOrigin="anonymous",e.src=a,e.onload=function(){var e;null===(e=b.current)||void 0===e||e.setAttribute("src",a),h(!0)},function(){e.src="",delete e.onload,delete e.src,delete e.crossOrigin,e=null}}),[a]),f?u.default.createElement("div",{ref:p,className:l.default([d.default.container,d.default.hasOverlay])},u.default.createElement("img",{ref:b,className:l.default([d.default.image,d.default[m],(n={},n[d.default.fadeIn]="fadeIn"===s&&y,n[d.default.scaleUp]="scaleUp"===s&&y,n)]),crossOrigin:"anonymous","data-testid":"image",alt:o,src:t.emptyImage,width:i,height:c}),f&&u.default.createElement("div",{className:d.default.overlay},f)):u.default.createElement("img",{ref:b,className:l.default([d.default.image,d.default[m],(r={},r[d.default.fadeIn]="fadeIn"===s&&y,r[d.default.scaleUp]="scaleUp"===s&&y,r)]),crossOrigin:"anonymous","data-testid":"image",alt:o,src:t.emptyImage,width:i,height:c})}},function(e,t,n){e.exports={container:"_3zwln8xpkZwpTY5i6J7bOD",hasOverlay:"_2el8xWqqf3w4S3x0s2D9xl",overlay:"Eg3imfbXdI6U6rfRE0-qO",image:"t1897dfts_pqHzSnwmWBW",cover:"_1-R_HDjO6qNnywcNiS8byD",contain:"_3mDpCjHJ2g66e0w4R2EZkG",stretchHorizontally:"_3yEtH7cqpUlVFaGiWG129w",stretchVertically:"lyiBs6OBxvREnwIR0ls2C",fadeIn:"_2OKJw8Udt916IXmTlT986Y",fadeInAnimation:"NoOVrW466Htk6EpZ1wYiI",scaleUp:"_309VTqjVHpVJHuyAQa_aZi",scaleUpAnimation:"_3icbJre0PJ7MFnXQiCY_q6"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(40);Object.defineProperty(t,"ListView",{enumerable:!0,get:function(){return r.default}});var a=n(42);Object.defineProperty(t,"ListViewItem",{enumerable:!0,get:function(){return a.default}});var o=n(43);Object.defineProperty(t,"ListViewLinkItem",{enumerable:!0,get:function(){return o.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(41));t.default=function(e){var t=e.children,n=e.className,r=e.header;return a.default.createElement("div",{className:o.default([i.default.container,n])},r&&a.default.createElement("h3",{className:i.default.header},r),a.default.createElement("ul",{className:i.default.list},t))}},function(e,t,n){e.exports={container:"CPHNd8osKjLvQDEQUErux",header:"_1e7hHSVo59e8yQnhc9B6Id",list:"_1w1W8E6_Hzfes3WZTYZaJK"}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=n(6),u=r(n(5));t.default=function(e){var t=e.children,n=e.active,r=void 0!==n&&n,l=e.disabled,d=void 0!==l&&l,c=e.transparent,f=void 0!==c&&c,s=e.noPadding,p=void 0!==s&&s,v=e.size,m=void 0===v?"medium":v,_=e.align,y=void 0===_?"center":_,h=e.onClick,b=void 0===h?function(){}:h;return a.default.createElement("li",{className:o.default([u.default.listViewItem])},a.default.createElement(i.Button,{onClick:b,disabled:d,inverted:r,transparent:f,noPadding:p,align:y,size:m,stretchHorizontally:!0,noShadow:!0,noBorder:!0},t))}},function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),o=n(2),i=n.n(o),u=n(1),l=n(4),d=n(5),c=n.n(d);function f(){return(f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function s({children:e,active:t,transparent:n,noPadding:r,size:o,align:i,as:d,...s}){return a.a.createElement("li",{className:Object(u.default)([c.a.listViewItem])},a.a.createElement(l.ButtonLink,f({as:d,inverted:t,transparent:n,noPadding:r,align:i,size:o,stretchHorizontally:!0,noShadow:!0,noBorder:!0},s),e))}s.defaultProps={active:!1,transparent:!1,noPadding:!1,size:"medium",align:"center",as:"a"},s.propTypes={children:i.a.node.isRequired,as:i.a.elementType,active:i.a.bool,transparent:i.a.bool,noPadding:i.a.bool,align:i.a.oneOf(["left","center"]),size:i.a.string,onClick:i.a.func},t.default=s},function(e,t,n){"use strict";var r=n(45);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(47);Object.defineProperty(t,"Menu",{enumerable:!0,get:function(){return r.default}});var a=n(49);Object.defineProperty(t,"MenuContainer",{enumerable:!0,get:function(){return a.default}});var o=n(51);Object.defineProperty(t,"MenuItem",{enumerable:!0,get:function(){return o.default}});var i=n(53);Object.defineProperty(t,"MenuLinkItem",{enumerable:!0,get:function(){return i.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(48));t.default=function(e){var t,n=e.children,r=e.className,u=e.isOpen,l=void 0===u||u,d=e.placement,c=void 0===d?{horizontal:"left",vertical:"bottom"}:d,f=e.header;return a.default.createElement("div",{className:o.default([i.default.menu,i.default[c.horizontal],i.default[c.vertical],(t={},t[i.default.open]=l,t),r])},f&&l&&a.default.createElement("h3",{className:i.default.menuHeader},f),a.default.createElement("ul",null,l&&n))}},function(e,t,n){e.exports={menu:"_2ahi8JcnxGHrnZmD0xT9RL",top:"_3gpFTd1Fdx4EAfq170TGs7",right:"_1L5ATpM9GXy-SORFr0G6S4",left:"CYEJl39TkEfnKal3vtvz9",bottom:"_3zyp-NdTBeBDKvk26psZup",open:"_1iaaziZrVI_-E8D99WdNji",entrance:"_2fiKe4-X8PqcG4_9qeB3ZO",menuHeader:"_19nk1IMNS-u_YIQLlmYRtU"}},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return a(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var u=o(n(0)),l=i(n(1)),d=i(n(50));t.default=u.forwardRef((function(e,t){var n=e.children,r=e.className;return u.default.createElement("div",{ref:t,className:l.default([d.default.menuContainer,r])},n)}))},function(e,t,n){e.exports={menuContainer:"_2-SFwsppEuobBJkAwwQrFC"}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(52));t.default=function(e){var t,n=e.children,r=e.className,u=e.onClick,l=e.isActive,d=void 0!==l&&l;return a.default.createElement("li",{className:o.default([i.default.menuItem,(t={},t[i.default.active]=d,t),r]),onClick:u},n)}},function(e,t,n){e.exports={menuItem:"_3gGczRJwrNenXTBLQnC29M",active:"_2j1ilUNkbFGSgulXSoHAdP"}},function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)},a=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=o(n(0)),u=o(n(1)),l=o(n(54));t.default=function(e){var t=e.as,n=e.children,o=e.className,d=a(e,["as","children","className"]);return void 0===t&&(t="a"),i.default.createElement(t,r({"data-testid":"menu-link-item",className:u.default([l.default.menuLinkItem,o])},d),n)}},function(e,t,n){e.exports={menuLinkItem:"_2Dy1LTfScGZtSb_5Lud-lU",active:"_2Uws7bj3yejmn1k7XiyKfQ",menuItem:"_2lI7S2t5zWhQsvg_XnQ7--"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(56);Object.defineProperty(t,"Overlay",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(57));t.default=function(e){var t,n=e.children,r=e.transparent,u=void 0!==r&&r,l=e.isFixed,d=void 0!==l&&l,c=e.onClick,f=void 0===c?function(){}:c;return a.default.createElement("div",{"data-testid":"overlay",className:o.default([i.default.overlay,(t={},t[i.default.transparent]=u,t[i.default.fixed]=d,t)]),onClick:f},n)}},function(e,t,n){e.exports={overlay:"_2QgpyrDcUQyKYESC5DXXJr",transparent:"_28fVmoxp69OPr88Ew0zVeN",fixed:"_2sU3515EbFFgeP1yK2Zubz"}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(59));t.default=function(e){var t=e.value;return a.default.createElement("label",{className:o.default.container},t)}},function(e,t,n){e.exports={container:"_2ql27bllsQX39R3E2uRqg-"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(61);Object.defineProperty(t,"TextInput",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return a(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var u=o(n(0)),l=i(n(1)),d=n(9),c=i(n(62));t.default=function(e){var t=e.label,n=e.onChange,r=e.placeholder,a=e.value,o=e.name,i=e.inputRef,f=e.size,s=void 0===f?"medium":f,p=e.autoFocus,v=void 0!==p&&p,m=e.type,_=void 0===m?"text":m,y=u.useCallback((function(e){return n(e.target.value)}),[n]);return u.default.createElement(u.default.Fragment,null,u.default.createElement(d.Label,{value:t}),u.default.createElement("input",{"data-testid":"input",ref:i,className:l.default([c.default.textInput,c.default[s]]),onChange:i?void 0:y,placeholder:r,name:o,type:_,value:a,autoFocus:v}))}},function(e,t,n){e.exports={textInput:"_2wfqOzWBoAn_K7goqvjXJe",small:"_1a4QOVJB0zW3Urf_5hqNjj",medium:"_3UJoe8nlpzhVTmC09TVso-",large:"_3DQ52Qd_1K4_VxxVv728SX"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(64);Object.defineProperty(t,"Toast",{enumerable:!0,get:function(){return r.default}});var a=n(66);Object.defineProperty(t,"ToastContainer",{enumerable:!0,get:function(){return a.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(65));t.default=function(e){var t=e.children,n=e.image,r=e.buttons,u=e.onClick,l=void 0===u?function(){}:u;return a.default.createElement("div",{className:o.default([i.default.toast]),onClick:l,"data-testid":"toast"},n&&a.default.createElement("img",{"data-testid":"toast-image",className:i.default.toastImage,src:n.src,alt:n.alt}),a.default.createElement("div",{className:i.default.toastContent},t),a.default.createElement("div",{className:i.default.toastButtons},r))}},function(e,t,n){e.exports={toast:"_3sBs_ERXV3k0SQMGUy2Wj4",entrance:"_1_xjtLeUMoEXNA-qOEZhcx",toastContent:"_10lBETCU3UNFR8py1q1q-h",toastImage:"_3Ci0wpObk6oqf7dwkHsFWo",toastButtons:"FEWDnDsP-9A9JHG20qBS5"}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(67));t.default=function(e){var t=e.children;return a.default.createElement("div",{className:o.default([i.default.toastContainer]),"data-testid":"toast-container"},t)}},function(e,t,n){e.exports={toastContainer:"_3F8cJU1wmKmbrjidg-O3zp"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(69);Object.defineProperty(t,"Video",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(70));t.default=function(e){var t=e.src,n=e.type,r=e.children,u=e.muted,l=void 0===u||u,d=e.loop,c=void 0===d||d,f=e.autoPlay,s=void 0===f||f,p=e.layout,v=void 0===p?"contain":p;return r?a.default.createElement("div",{className:o.default([i.default.container,i.default.hasOverlay])},a.default.createElement("video",{"data-testid":"video",crossOrigin:"anonymous",className:o.default([i.default.video,i.default[v]]),muted:l,loop:c,autoPlay:s,playsInline:!0},a.default.createElement("source",{"data-testid":"source",src:t,type:n})),r&&a.default.createElement("div",{className:i.default.overlay},r)):a.default.createElement("video",{"data-testid":"video",crossOrigin:"anonymous",className:o.default([i.default.video,i.default[v]]),muted:l,loop:c,autoPlay:s,playsInline:!0},a.default.createElement("source",{"data-testid":"source",src:t,type:n}))}},function(e,t,n){e.exports={container:"_2EQBfr5w8h1x1bq-2fp6wT",hasOverlay:"_3GRMpmGk_PqITcUv0Nfmt3",video:"_2tZfXkEhCkwAzfaG_BVn0B",cover:"_3OYHfbzaL3QHanWZBj8RxO",contain:"_3I_c7shcSrtG_FxvvU2IeE",stretchHorizontally:"_1Z7dL9uEd0Ksx3CkrZhsB8",stretchVertically:"_1zbrDYO0fYFJVc7xvsTYi6",overlay:"_2osXd7SkwF0Lh-2yiquYQM"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(72);Object.defineProperty(t,"useToggle",{enumerable:!0,get:function(){return r.default}});var a=n(73);Object.defineProperty(t,"useOutsideClick",{enumerable:!0,get:function(){return a.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.default=function(e){void 0===e&&(e=!1);var t=r.useState(e),n=t[0],a=t[1];return[n,r.useCallback((function(e){a("boolean"==typeof e?e:function(e){return!e})}),[n])]}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.default=function(e){var t=r.useRef();return r.useEffect((function(){var n=function(n){t.current&&!t.current.contains(n.target)&&e(n)};return document.addEventListener("click",n),document.addEventListener("touchstart",n),function(){document.removeEventListener("click",n),document.removeEventListener("touchstart",n)}}),[e]),t}},function(e,t,n){"use strict";n.r(t),n.d(t,"useHotkeys",(function(){return x})),n.d(t,"useIsHotkeyPressed",(function(){return M}));
2
2
  /*!
3
3
  * hotkeys-js v3.8.1
4
4
  * A simple micro-library for defining and dispatching keyboard shortcuts. It has no dependencies.
@@ -9,4 +9,4 @@
9
9
  * Licensed under the MIT license.
10
10
  */
11
11
  var r="undefined"!=typeof navigator&&navigator.userAgent.toLowerCase().indexOf("firefox")>0;function a(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent&&e.attachEvent("on".concat(t),(function(){n(window.event)}))}function o(e,t){for(var n=t.slice(0,t.length-1),r=0;r<n.length;r++)n[r]=e[n[r].toLowerCase()];return n}function i(e){"string"!=typeof e&&(e="");for(var t=(e=e.replace(/\s/g,"")).split(","),n=t.lastIndexOf("");n>=0;)t[n-1]+=",",t.splice(n,1),n=t.lastIndexOf("");return t}for(var u={backspace:8,tab:9,clear:12,enter:13,return:13,esc:27,escape:27,space:32,left:37,up:38,right:39,down:40,del:46,delete:46,ins:45,insert:45,home:36,end:35,pageup:33,pagedown:34,capslock:20,"⇪":20,",":188,".":190,"/":191,"`":192,"-":r?173:189,"=":r?61:187,";":r?59:186,"'":222,"[":219,"]":221,"\\":220},l={"⇧":16,shift:16,"⌥":18,alt:18,option:18,"⌃":17,ctrl:17,control:17,"⌘":91,cmd:91,command:91},d={16:"shiftKey",18:"altKey",17:"ctrlKey",91:"metaKey",shiftKey:16,ctrlKey:17,altKey:18,metaKey:91},c={16:!1,18:!1,17:!1,91:!1},f={},s=1;s<20;s++)u["f".concat(s)]=111+s;var p=[],v="all",m=[],_=function(e){return u[e.toLowerCase()]||l[e.toLowerCase()]||e.toUpperCase().charCodeAt(0)};function y(e){v=e||"all"}function h(){return v||"all"}var b=function(e){var t=e.key,n=e.scope,r=e.method,a=e.splitKey,u=void 0===a?"+":a;i(t).forEach((function(e){var t=e.split(u),a=t.length,i=t[a-1],d="*"===i?"*":_(i);if(f[d]){n||(n=h());var c=a>1?o(l,t):[];f[d]=f[d].map((function(e){return(!r||e.method===r)&&e.scope===n&&function(e,t){for(var n=e.length>=t.length?e:t,r=e.length>=t.length?t:e,a=!0,o=0;o<n.length;o++)-1===r.indexOf(n[o])&&(a=!1);return a}(e.mods,c)?{}:e}))}}))};function O(e,t,n){var r;if(t.scope===n||"all"===t.scope){for(var a in r=t.mods.length>0,c)Object.prototype.hasOwnProperty.call(c,a)&&(!c[a]&&t.mods.indexOf(+a)>-1||c[a]&&-1===t.mods.indexOf(+a))&&(r=!1);(0!==t.mods.length||c[16]||c[18]||c[17]||c[91])&&!r&&"*"!==t.shortcut||!1===t.method(e,t)&&(e.preventDefault?e.preventDefault():e.returnValue=!1,e.stopPropagation&&e.stopPropagation(),e.cancelBubble&&(e.cancelBubble=!0))}}function g(e){var t=f["*"],n=e.keyCode||e.which||e.charCode;if(P.filter.call(this,e)){if(93!==n&&224!==n||(n=91),-1===p.indexOf(n)&&229!==n&&p.push(n),["ctrlKey","altKey","shiftKey","metaKey"].forEach((function(t){var n=d[t];e[t]&&-1===p.indexOf(n)?p.push(n):!e[t]&&p.indexOf(n)>-1?p.splice(p.indexOf(n),1):"metaKey"===t&&e[t]&&3===p.length&&(e.ctrlKey||e.shiftKey||e.altKey||(p=p.slice(p.indexOf(n))))})),n in c){for(var r in c[n]=!0,l)l[r]===n&&(P[r]=!0);if(!t)return}for(var a in c)Object.prototype.hasOwnProperty.call(c,a)&&(c[a]=e[d[a]]);e.getModifierState&&(!e.altKey||e.ctrlKey)&&e.getModifierState("AltGraph")&&(-1===p.indexOf(17)&&p.push(17),-1===p.indexOf(18)&&p.push(18),c[17]=!0,c[18]=!0);var o=h();if(t)for(var i=0;i<t.length;i++)t[i].scope===o&&("keydown"===e.type&&t[i].keydown||"keyup"===e.type&&t[i].keyup)&&O(e,t[i],o);if(n in f)for(var u=0;u<f[n].length;u++)if(("keydown"===e.type&&f[n][u].keydown||"keyup"===e.type&&f[n][u].keyup)&&f[n][u].key){for(var s=f[n][u],v=s.splitKey,m=s.key.split(v),y=[],b=0;b<m.length;b++)y.push(_(m[b]));y.sort().join("")===p.sort().join("")&&O(e,s,o)}}}function P(e,t,n){p=[];var r=i(e),u=[],d="all",s=document,v=0,y=!1,h=!0,b="+";for(void 0===n&&"function"==typeof t&&(n=t),"[object Object]"===Object.prototype.toString.call(t)&&(t.scope&&(d=t.scope),t.element&&(s=t.element),t.keyup&&(y=t.keyup),void 0!==t.keydown&&(h=t.keydown),"string"==typeof t.splitKey&&(b=t.splitKey)),"string"==typeof t&&(d=t);v<r.length;v++)u=[],(e=r[v].split(b)).length>1&&(u=o(l,e)),(e="*"===(e=e[e.length-1])?"*":_(e))in f||(f[e]=[]),f[e].push({keyup:y,keydown:h,scope:d,mods:u,shortcut:r[v],method:n,key:r[v],splitKey:b});void 0!==s&&!function(e){return m.indexOf(e)>-1}(s)&&window&&(m.push(s),a(s,"keydown",(function(e){g(e)})),a(window,"focus",(function(){p=[]})),a(s,"keyup",(function(e){g(e),function(e){var t=e.keyCode||e.which||e.charCode,n=p.indexOf(t);if(n>=0&&p.splice(n,1),e.key&&"meta"===e.key.toLowerCase()&&p.splice(0,p.length),93!==t&&224!==t||(t=91),t in c)for(var r in c[t]=!1,l)l[r]===t&&(P[r]=!1)}(e)})))}var j={setScope:y,getScope:h,deleteScope:function(e,t){var n,r;for(var a in e||(e=h()),f)if(Object.prototype.hasOwnProperty.call(f,a))for(n=f[a],r=0;r<n.length;)n[r].scope===e?n.splice(r,1):r++;h()===e&&y(t||"all")},getPressedKeyCodes:function(){return p.slice(0)},isPressed:function(e){return"string"==typeof e&&(e=_(e)),-1!==p.indexOf(e)},filter:function(e){var t=e.target||e.srcElement,n=t.tagName,r=!0;return!t.isContentEditable&&("INPUT"!==n&&"TEXTAREA"!==n&&"SELECT"!==n||t.readOnly)||(r=!1),r},unbind:function(e){if(e){if(Array.isArray(e))e.forEach((function(e){e.key&&b(e)}));else if("object"==typeof e)e.key&&b(e);else if("string"==typeof e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var a=n[0],o=n[1];"function"==typeof a&&(o=a,a=""),b({key:e,scope:a,method:o,splitKey:"+"})}}else Object.keys(f).forEach((function(e){return delete f[e]}))}};for(var E in j)Object.prototype.hasOwnProperty.call(j,E)&&(P[E]=j[E]);if("undefined"!=typeof window){var w=window.hotkeys;P.noConflict=function(e){return e&&window.hotkeys===P&&(window.hotkeys=w),P},window.hotkeys=P}var k=P,C=n(0);function M(){return k.isPressed}function x(e,t,n,r){n instanceof Array&&(r=n,n=void 0);const{enableOnTags:a,filter:o}=n||{},i=Object(C.useRef)(null),u=Object(C.useCallback)((e,n)=>(null===i.current||document.activeElement===i.current)&&(t(e,n),!0),r?[i,...r]:[i]);return Object(C.useEffect)(()=>(n&&n.enableOnTags&&(k.filter=({target:e,srcElement:t})=>{const n=e&&e.tagName||t&&t.tagName;return Boolean(n&&a&&a.includes(n))}),o&&(k.filter=o),k(e,n||{},u),()=>k.unbind(e,u)),[u,n,a,o,e]),i}}]));
12
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicmVhY3RcIiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY2xhc3NjYXQvc3JjL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb24vaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uTGluay9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MaXN0Vmlldy9MaXN0Vmlld0l0ZW0ubW9kdWxlLmNzcz85YTRlIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0J1dHRvbi9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db2xvclN3YXRjaC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Nb2RhbC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MYWJlbC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uL0J1dHRvbi50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uL0J1dHRvbi5tb2R1bGUuY3NzP2NkNDYiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uTGluay9CdXR0b25MaW5rLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9CdXR0b25MaW5rL0J1dHRvbkxpbmsubW9kdWxlLmNzcz8wODQxIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NvbG9yUGlja2VyL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NvbG9yUGlja2VyL0NvbG9yUGlja2VyLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db2xvclN3YXRjaC9Db2xvclN3YXRjaC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQ29sb3JTd2F0Y2gvQ29sb3JTd2F0Y2gubW9kdWxlLmNzcz8yM2ViIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NvbG9yUGlja2VyL0NvbG9yUGlja2VyLm1vZHVsZS5jc3M/ZTE4OCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db25maXJtYXRpb25Nb2RhbC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db25maXJtYXRpb25Nb2RhbC9Db25maXJtYXRpb25Nb2RhbC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTW9kYWwvTW9kYWwudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01vZGFsL01vZGFsLm1vZHVsZS5jc3M/MGVkZiIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db25maXJtYXRpb25Nb2RhbC9Db25maXJtYXRpb25Nb2RhbC5tb2R1bGUuY3NzPzI3YjMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvRmxvYXRpbmdQYW5lbC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9GbG9hdGluZ1BhbmVsL0Zsb2F0aW5nUGFuZWwudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0Zsb2F0aW5nUGFuZWwvRmxvYXRpbmdQYW5lbC5tb2R1bGUuY3NzPzdhYmYiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSWNvbi9JY29uLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9JY29uL0ljb24ubW9kdWxlLmNzcz85YjkzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb25CdXR0b24vaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSWNvbkJ1dHRvbi9JY29uQnV0dG9uLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9JY29uQnV0dG9uL0ljb25CdXR0b24ubW9kdWxlLmNzcz9kMjhkIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb25CdXR0b25MaW5rL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb25CdXR0b25MaW5rL0ljb25CdXR0b25MaW5rLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9JY29uQnV0dG9uTGluay9JY29uQnV0dG9uTGluay5tb2R1bGUuY3NzP2NjMzciLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSW1hZ2UvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSW1hZ2UvSW1hZ2UudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ltYWdlL0ltYWdlLm1vZHVsZS5jc3M/OTVhNyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MaXN0Vmlldy9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MaXN0Vmlldy9MaXN0Vmlldy50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTGlzdFZpZXcvTGlzdFZpZXcubW9kdWxlLmNzcz80NjRlIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0xpc3RWaWV3L0xpc3RWaWV3SXRlbS50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTGlzdFZpZXcvTGlzdFZpZXdMaW5rSXRlbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01lbnUvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTWVudS9NZW51LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L01lbnUubW9kdWxlLmNzcz8zNzA5Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01lbnUvTWVudUNvbnRhaW5lci50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTWVudS9NZW51Q29udGFpbmVyLm1vZHVsZS5jc3M/OTZkMiIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L01lbnVJdGVtLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L01lbnVJdGVtLm1vZHVsZS5jc3M/NTA0OSIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L01lbnVMaW5rSXRlbS50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTWVudS9NZW51TGlua0l0ZW0ubW9kdWxlLmNzcz8wNDI3Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL092ZXJsYXkvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvT3ZlcmxheS9PdmVybGF5LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9PdmVybGF5L092ZXJsYXkubW9kdWxlLmNzcz8yMWM1Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0xhYmVsL0xhYmVsLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MYWJlbC9MYWJlbC5tb2R1bGUuY3NzPzFmMTEiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVGV4dElucHV0L2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1RleHRJbnB1dC9UZXh0SW5wdXQudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1RleHRJbnB1dC9UZXh0SW5wdXQubW9kdWxlLmNzcz9jZDM2Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1RvYXN0L2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1RvYXN0L1RvYXN0LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Ub2FzdC9Ub2FzdC5tb2R1bGUuY3NzP2NmNjEiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVG9hc3QvVG9hc3RDb250YWluZXIudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1RvYXN0L1RvYXN0Q29udGFpbmVyLm1vZHVsZS5jc3M/OWEzNiIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9WaWRlby9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9WaWRlby9WaWRlby50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVmlkZW8vVmlkZW8ubW9kdWxlLmNzcz9lMjIzIiwid2VicGFjazovLy8uL3NyYy9ob29rcy9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvaG9va3MvdXNlVG9nZ2xlLnRzIiwid2VicGFjazovLy8uL3NyYy9ob29rcy91c2VPdXRzaWRlQ2xpY2sudHMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2hvdGtleXMtanMvZGlzdC9ob3RrZXlzLmVzbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtaG90a2V5cy1ob29rL2Rpc3Qtd2ViL2luZGV4LmpzIl0sIm5hbWVzIjpbImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJleHBvcnRzIiwibW9kdWxlIiwiaSIsImwiLCJtb2R1bGVzIiwiY2FsbCIsIm0iLCJjIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiciIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJ0IiwibW9kZSIsIl9fZXNNb2R1bGUiLCJucyIsImNyZWF0ZSIsImtleSIsImJpbmQiLCJuIiwib2JqZWN0IiwicHJvcGVydHkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwicmVxdWlyZSIsImlzQXJyYXkiLCJBcnJheSIsImNjIiwib2JqIiwib3V0IiwidG1wIiwiayIsImxlbmd0aCIsImRlZmF1bHQiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJkaXNhYmxlZCIsImludmVydGVkIiwicm91bmRlZCIsIm5vU2hhZG93Iiwibm9QYWRkaW5nIiwibm9Cb3JkZXIiLCJ0cmFuc3BhcmVudCIsInN0cmV0Y2hIb3Jpem9udGFsbHkiLCJzdHJldGNoVmVydGljYWxseSIsIm9mZnNldFNpZGVzIiwiYWxpZ24iLCJzaXplIiwidHlwZSIsImNvbnRhaW5lciIsImxlZnRPZmZzZXQiLCJpbmNsdWRlcyIsInJpZ2h0T2Zmc2V0Iiwicm9sZSIsImNvbnRlbnQiLCJDb21wb25lbnQiLCJwcm9wcyIsImNvbG9ycyIsIm9uU2VsZWN0Iiwic2VsZWN0ZWRDb2xvciIsImRpcmVjdGlvbiIsImNvbG9yUGlja2VyIiwibWFwIiwiY29sb3IiLCJDb2xvclN3YXRjaCIsImlzU2VsZWN0ZWQiLCJjb2xvclN3YXRjaCIsInNlbGVjdGVkIiwic3R5bGUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJoZXhDb2RlIiwic3JPbmx5IiwibGFiZWwiLCJDb25maXJtYXRpb25Nb2RhbCIsImhlYWRlciIsImlzT3BlbiIsImJ1dHRvbnNMZWZ0IiwiYnV0dG9uc1JpZ2h0Iiwib25DbG9zZSIsIk1vZGFsIiwibW9kYWxIZWFkZXIiLCJtb2RhbENvbnRlbnQiLCJtb2RhbEJ1dHRvbnNDb250YWluZXIiLCJtb2RhbEJ1dHRvbnMiLCJkaXNwbGF5TmFtZSIsImJ1dHRvbiIsInVzZUhvdGtleXMiLCJoYW5kbGVPdmVybGF5Q2xpY2siLCJ1c2VDYWxsYmFjayIsIm92ZXJsYXkiLCJtb2RhbCIsIm1vZGFsQnV0dG9uIiwibGF5b3V0IiwicGxhY2VtZW50IiwiaG9yaXpvbnRhbCIsInZlcnRpY2FsIiwicGFyZW50IiwiaG9yaXpvbnRhbFBsYWNlbWVudCIsInZlcnRpY2FsUGxhY2VtZW50IiwiZml4ZWQiLCJzcmMiLCJhbHQiLCJpY29uIiwiY3Jvc3NPcmlnaW4iLCJ0b3BPZmZzZXQiLCJib3R0b21PZmZzZXQiLCJJY29uIiwiZW1wdHlJbWFnZSIsInNyY1dpZHRoIiwic3JjSGVpZ2h0IiwiYW5pbWF0aW9uIiwidXNlU3RhdGUiLCJpc0xvYWRlZCIsInNldElzTG9hZGVkIiwiaW1hZ2VSZWYiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJpbWFnZSIsIkltYWdlIiwib25sb2FkIiwiY3VycmVudCIsInNldEF0dHJpYnV0ZSIsImhhc092ZXJsYXkiLCJyZWYiLCJmYWRlSW4iLCJzY2FsZVVwIiwid2lkdGgiLCJoZWlnaHQiLCJsaXN0IiwiYWN0aXZlIiwibGlzdFZpZXdJdGVtIiwiQnV0dG9uIiwiTGlzdFZpZXdMaW5rSXRlbSIsImFzIiwiY2xhc3NjYXQiLCJzdHlsZXMiLCJkZWZhdWx0UHJvcHMiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJub2RlIiwiaXNSZXF1aXJlZCIsImVsZW1lbnRUeXBlIiwiYm9vbCIsIm9uZU9mIiwic3RyaW5nIiwiZnVuYyIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwiZW1wdHlGdW5jdGlvbiIsImVtcHR5RnVuY3Rpb25XaXRoUmVzZXQiLCJyZXNldFdhcm5pbmdDYWNoZSIsInNoaW0iLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJsb2NhdGlvbiIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImVyciIsIkVycm9yIiwiZ2V0U2hpbSIsIlJlYWN0UHJvcFR5cGVzIiwiYXJyYXkiLCJudW1iZXIiLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudCIsImluc3RhbmNlT2YiLCJvYmplY3RPZiIsIm9uZU9mVHlwZSIsInNoYXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsIm1lbnUiLCJvcGVuIiwibWVudUhlYWRlciIsImZvcndhcmRSZWYiLCJtZW51Q29udGFpbmVyIiwiaXNBY3RpdmUiLCJtZW51SXRlbSIsIm1lbnVMaW5rSXRlbSIsImlzRml4ZWQiLCJvbkNoYW5nZSIsInBsYWNlaG9sZGVyIiwiaW5wdXRSZWYiLCJhdXRvRm9jdXMiLCJoYW5kbGVDaGFuZ2UiLCJlIiwidGFyZ2V0IiwiTGFiZWwiLCJ0ZXh0SW5wdXQiLCJ1bmRlZmluZWQiLCJidXR0b25zIiwidG9hc3QiLCJ0b2FzdEltYWdlIiwidG9hc3RDb250ZW50IiwidG9hc3RCdXR0b25zIiwidG9hc3RDb250YWluZXIiLCJtdXRlZCIsImxvb3AiLCJhdXRvUGxheSIsInZpZGVvIiwicGxheXNJbmxpbmUiLCJpbml0aWFsVmFsdWUiLCJzZXRWYWx1ZSIsIm5ld1ZhbHVlIiwicHJldlZhbHVlIiwiY2FsbGJhY2siLCJoYW5kbGVDbGljayIsImV2ZW50IiwiY29udGFpbnMiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaXNmZiIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsInRvTG93ZXJDYXNlIiwiaW5kZXhPZiIsImFkZEV2ZW50IiwibWV0aG9kIiwiYXR0YWNoRXZlbnQiLCJjb25jYXQiLCJ3aW5kb3ciLCJnZXRNb2RzIiwibW9kaWZpZXIiLCJtb2RzIiwic2xpY2UiLCJnZXRLZXlzIiwia2V5cyIsInJlcGxhY2UiLCJzcGxpdCIsImluZGV4IiwibGFzdEluZGV4T2YiLCJzcGxpY2UiLCJfa2V5TWFwIiwiYmFja3NwYWNlIiwidGFiIiwiY2xlYXIiLCJlbnRlciIsInJldHVybiIsImVzYyIsImVzY2FwZSIsInNwYWNlIiwibGVmdCIsInVwIiwicmlnaHQiLCJkb3duIiwiZGVsIiwiZGVsZXRlIiwiaW5zIiwiaW5zZXJ0IiwiaG9tZSIsImVuZCIsInBhZ2V1cCIsInBhZ2Vkb3duIiwiY2Fwc2xvY2siLCInIiwiX21vZGlmaWVyIiwic2hpZnQiLCJvcHRpb24iLCJjdHJsIiwiY29udHJvbCIsImNtZCIsImNvbW1hbmQiLCJtb2RpZmllck1hcCIsIjE2IiwiMTgiLCIxNyIsIjkxIiwic2hpZnRLZXkiLCJjdHJsS2V5IiwiYWx0S2V5IiwibWV0YUtleSIsIl9tb2RzIiwiX2hhbmRsZXJzIiwiX2Rvd25LZXlzIiwiX3Njb3BlIiwiZWxlbWVudEhhc0JpbmRFdmVudCIsImNvZGUiLCJ4IiwidG9VcHBlckNhc2UiLCJjaGFyQ29kZUF0Iiwic2V0U2NvcGUiLCJzY29wZSIsImdldFNjb3BlIiwiZWFjaFVuYmluZCIsIl9yZWYiLCJfcmVmJHNwbGl0S2V5Iiwic3BsaXRLZXkiLCJmb3JFYWNoIiwib3JpZ2luS2V5IiwidW5iaW5kS2V5cyIsImxlbiIsImxhc3RLZXkiLCJrZXlDb2RlIiwicmVjb3JkIiwiYTEiLCJhMiIsImFycjEiLCJhcnIyIiwiaXNJbmRleCIsImNvbXBhcmVBcnJheSIsImV2ZW50SGFuZGxlciIsImhhbmRsZXIiLCJtb2RpZmllcnNNYXRjaCIsInkiLCJzaG9ydGN1dCIsInByZXZlbnREZWZhdWx0IiwicmV0dXJuVmFsdWUiLCJzdG9wUHJvcGFnYXRpb24iLCJjYW5jZWxCdWJibGUiLCJkaXNwYXRjaCIsImFzdGVyaXNrIiwid2hpY2giLCJjaGFyQ29kZSIsImhvdGtleXMiLCJmaWx0ZXIiLCJ0aGlzIiwicHVzaCIsImtleU5hbWUiLCJrZXlOdW0iLCJnZXRNb2RpZmllclN0YXRlIiwia2V5ZG93biIsImtleXVwIiwiX2kiLCJrZXlTaG9ydGN1dCIsIl9kb3duS2V5c0N1cnJlbnQiLCJhIiwic29ydCIsImpvaW4iLCJ0b1N0cmluZyIsImlzRWxlbWVudEJpbmQiLCJjbGVhck1vZGlmaWVyIiwiX2FwaSIsImRlbGV0ZVNjb3BlIiwibmV3U2NvcGUiLCJoYW5kbGVycyIsImdldFByZXNzZWRLZXlDb2RlcyIsImlzUHJlc3NlZCIsInNyY0VsZW1lbnQiLCJ0YWdOYW1lIiwiZmxhZyIsImlzQ29udGVudEVkaXRhYmxlIiwicmVhZE9ubHkiLCJ1bmJpbmQiLCJrZXlzSW5mbyIsImluZm8iLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIl9rZXkiLCJfaG90a2V5cyIsIm5vQ29uZmxpY3QiLCJkZWVwIiwidXNlSXNIb3RrZXlQcmVzc2VkIiwib3B0aW9ucyIsImRlcHMiLCJlbmFibGVPblRhZ3MiLCJtZW1vaXNlZENhbGxiYWNrIiwia2V5Ym9hcmRFdmVudCIsImhvdGtleXNFdmVudCIsImFjdGl2ZUVsZW1lbnQiLCJ0YXJnZXRUYWdOYW1lIiwiQm9vbGVhbiJdLCJtYXBwaW5ncyI6IjZEQUNFLElBQUlBLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FBT0YsRUFBaUJFLEdBQVVDLFFBR25DLElBQUlDLEVBQVNKLEVBQWlCRSxHQUFZLENBQ3pDRyxFQUFHSCxFQUNISSxHQUFHLEVBQ0hILFFBQVMsSUFVVixPQU5BSSxFQUFRTCxHQUFVTSxLQUFLSixFQUFPRCxRQUFTQyxFQUFRQSxFQUFPRCxRQUFTRixHQUcvREcsRUFBT0UsR0FBSSxFQUdKRixFQUFPRCxRQTBEZixPQXJEQUYsRUFBb0JRLEVBQUlGLEVBR3hCTixFQUFvQlMsRUFBSVYsRUFHeEJDLEVBQW9CVSxFQUFJLFNBQVNSLEVBQVNTLEVBQU1DLEdBQzNDWixFQUFvQmEsRUFBRVgsRUFBU1MsSUFDbENHLE9BQU9DLGVBQWViLEVBQVNTLEVBQU0sQ0FBRUssWUFBWSxFQUFNQyxJQUFLTCxLQUtoRVosRUFBb0JrQixFQUFJLFNBQVNoQixHQUNYLG9CQUFYaUIsUUFBMEJBLE9BQU9DLGFBQzFDTixPQUFPQyxlQUFlYixFQUFTaUIsT0FBT0MsWUFBYSxDQUFFQyxNQUFPLFdBRTdEUCxPQUFPQyxlQUFlYixFQUFTLGFBQWMsQ0FBRW1CLE9BQU8sS0FRdkRyQixFQUFvQnNCLEVBQUksU0FBU0QsRUFBT0UsR0FFdkMsR0FEVSxFQUFQQSxJQUFVRixFQUFRckIsRUFBb0JxQixJQUMvQixFQUFQRSxFQUFVLE9BQU9GLEVBQ3BCLEdBQVcsRUFBUEUsR0FBOEIsaUJBQVZGLEdBQXNCQSxHQUFTQSxFQUFNRyxXQUFZLE9BQU9ILEVBQ2hGLElBQUlJLEVBQUtYLE9BQU9ZLE9BQU8sTUFHdkIsR0FGQTFC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TyxFQUFRaEIsVUFHbkIsU0FBUzVQLEVBQVc4SSxFQUFNdEIsRUFBVXFKLEVBQVNDLEdBQ3JDRCxhQUFtQjFVLFFBQ25CMlUsRUFBT0QsRUFDUEEsT0FBVXJLLEdBRWQsTUFBTSxhQUFFdUssRUFBWSxPQUFFekMsR0FBV3VDLEdBQVcsR0FDdEN4TyxFQUFNLGlCQUFPLE1BQ2IyTyxFQUFtQixzQkFBWSxDQUFDQyxFQUFlQyxLQUM3QixPQUFoQjdPLEVBQUlILFNBQW9CMEYsU0FBU3VKLGdCQUFrQjlPLEVBQUlILFdBQ3ZEc0YsRUFBU3lKLEVBQWVDLElBQ2pCLEdBR1pKLEVBQU8sQ0FBQ3pPLEtBQVF5TyxHQUFRLENBQUN6TyxJQWM1QixPQWJBLG9CQUFVLEtBQ0Z3TyxHQUFXQSxFQUFRRSxlQUNuQixFQUFRekMsT0FBUyxFQUFHakksU0FBUXdKLGlCQUV4QixNQUFNdUIsRUFBaUIvSyxHQUFVQSxFQUFPeUosU0FBYUQsR0FBY0EsRUFBV0MsUUFDOUUsT0FBT3VCLFFBQVFELEdBQWlCTCxHQUFnQkEsRUFBYWxULFNBQVN1VCxNQUcxRTlDLElBQ0EsRUFBUUEsT0FBU0EsR0FDckIsRUFBUXhGLEVBQU0rSCxHQUFXLEdBQUlHLEdBQ3RCLElBQU0sRUFBUWQsT0FBT3BILEVBQU1rSSxJQUNuQyxDQUFDQSxFQUFrQkgsRUFBU0UsRUFBY3pDLEVBQVF4RixJQUM5Q3pHIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDEwKTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsInZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjYyhvYmopIHtcbiAgdmFyIG91dCA9IFwiXCJcblxuICBpZiAodHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2Ygb2JqID09PSBcIm51bWJlclwiKSByZXR1cm4gb2JqIHx8IFwiXCJcblxuICBpZiAoaXNBcnJheShvYmopKVxuICAgIGZvciAodmFyIGsgPSAwLCB0bXA7IGsgPCBvYmoubGVuZ3RoOyBrKyspIHtcbiAgICAgIGlmICgodG1wID0gY2Mob2JqW2tdKSkgIT09IFwiXCIpIHtcbiAgICAgICAgb3V0ICs9IChvdXQgJiYgXCIgXCIpICsgdG1wXG4gICAgICB9XG4gICAgfVxuICBlbHNlXG4gICAgZm9yICh2YXIgayBpbiBvYmopIHtcbiAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoaykgJiYgb2JqW2tdKSBvdXQgKz0gKG91dCAmJiBcIiBcIikgKyBrXG4gICAgfVxuXG4gIHJldHVybiBvdXRcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoUmVhY3RJcy5pc0VsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cbiIsImV4cG9ydCB7IGRlZmF1bHQgYXMgSWNvbiB9IGZyb20gXCIuL0ljb25cIjtcbiIsImV4cG9ydCB7IGRlZmF1bHQgYXMgQnV0dG9uTGluayB9IGZyb20gXCIuL0J1dHRvbkxpbmtcIjtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJsaXN0Vmlld0l0ZW1cIjpcIl8yTGdqcUFCd2pIdHBiR3prUVFrcWlRXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgQnV0dG9uIH0gZnJvbSBcIi4vQnV0dG9uXCI7XG4iLCJleHBvcnQgeyBkZWZhdWx0IGFzIENvbG9yU3dhdGNoIH0gZnJvbSBcIi4vQ29sb3JTd2F0Y2hcIjtcbiIsImV4cG9ydCB7IGRlZmF1bHQgYXMgTW9kYWwgfSBmcm9tIFwiLi9Nb2RhbFwiO1xuIiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBMYWJlbCB9IGZyb20gXCIuL0xhYmVsXCI7XG4iLCJleHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL0J1dHRvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9CdXR0b25MaW5rXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL0NvbG9yUGlja2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL0NvbG9yU3dhdGNoXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL0NvbmZpcm1hdGlvbk1vZGFsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL0Zsb2F0aW5nUGFuZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvSWNvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9JY29uQnV0dG9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL0ljb25CdXR0b25MaW5rXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL0ltYWdlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL0xpc3RWaWV3XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL01lbnVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvTW9kYWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvT3ZlcmxheVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9MYWJlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9UZXh0SW5wdXRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvVG9hc3RcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvVmlkZW9cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2hvb2tzXCI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vQnV0dG9uLm1vZHVsZS5jc3NcIjtcbmltcG9ydCB7IFNpemUgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxudHlwZSBCdXR0b25Qcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGludmVydGVkPzogYm9vbGVhbjtcbiAgcm91bmRlZD86IGJvb2xlYW47XG4gIG5vU2hhZG93PzogYm9vbGVhbjtcbiAgbm9QYWRkaW5nPzogYm9vbGVhbjtcbiAgbm9Cb3JkZXI/OiBib29sZWFuO1xuICB0cmFuc3BhcmVudD86IGJvb2xlYW47XG4gIHN0cmV0Y2hIb3Jpem9udGFsbHk/OiBib29sZWFuO1xuICBzdHJldGNoVmVydGljYWxseT86IGJvb2xlYW47XG4gIG9uQ2xpY2s/OiAoZXZlbnQ6IFJlYWN0LlN5bnRoZXRpY0V2ZW50KSA9PiB2b2lkO1xuICBzaXplPzogU2l6ZSxcbiAgdHlwZT86IFwic3VibWl0XCIgfCBcInJlc2V0XCIgfCBcImJ1dHRvblwiLFxuICBhbGlnbj86IFwibGVmdFwiIHwgXCJjZW50ZXJcIixcbiAgb2Zmc2V0U2lkZXM/OiBBcnJheTxcImxlZnRcIiB8IFwicmlnaHRcIj4sXG59XG5cbmZ1bmN0aW9uIEJ1dHRvbih7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIG9uQ2xpY2ssXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIGludmVydGVkID0gZmFsc2UsXG4gIHJvdW5kZWQgPSBmYWxzZSxcbiAgbm9TaGFkb3cgPSBmYWxzZSxcbiAgbm9QYWRkaW5nID0gZmFsc2UsXG4gIG5vQm9yZGVyID0gZmFsc2UsXG4gIHRyYW5zcGFyZW50ID0gZmFsc2UsXG4gIHN0cmV0Y2hIb3Jpem9udGFsbHkgPSBmYWxzZSxcbiAgc3RyZXRjaFZlcnRpY2FsbHkgPSBmYWxzZSxcbiAgb2Zmc2V0U2lkZXMgPSBbXSxcbiAgYWxpZ24gPSBcImNlbnRlclwiLFxuICBzaXplID0gXCJtZWRpdW1cIixcbiAgdHlwZSxcbn06IEJ1dHRvblByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5jb250YWluZXIsXG4gICAgICAgIHN0eWxlc1tzaXplXSxcbiAgICAgICAgc3R5bGVzW2FsaWduXSxcbiAgICAgICAge1xuICAgICAgICAgIFtzdHlsZXMuaW52ZXJ0ZWRdOiBpbnZlcnRlZCxcbiAgICAgICAgICBbc3R5bGVzLnJvdW5kZWRdOiByb3VuZGVkLFxuICAgICAgICAgIFtzdHlsZXMubm9TaGFkb3ddOiBub1NoYWRvdyxcbiAgICAgICAgICBbc3R5bGVzLm5vUGFkZGluZ106IG5vUGFkZGluZyxcbiAgICAgICAgICBbc3R5bGVzLm5vQm9yZGVyXTogbm9Cb3JkZXIsXG4gICAgICAgICAgW3N0eWxlcy50cmFuc3BhcmVudF06IHRyYW5zcGFyZW50LFxuICAgICAgICAgIFtzdHlsZXMuc3RyZXRjaEhvcml6b250YWxseV06IHN0cmV0Y2hIb3Jpem9udGFsbHksXG4gICAgICAgICAgW3N0eWxlcy5zdHJldGNoVmVydGljYWxseV06IHN0cmV0Y2hWZXJ0aWNhbGx5LFxuICAgICAgICAgIFtzdHlsZXMubGVmdE9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJsZWZ0XCIpLFxuICAgICAgICAgIFtzdHlsZXMucmlnaHRPZmZzZXRdOiByb3VuZGVkICYmIG9mZnNldFNpZGVzLmluY2x1ZGVzKFwicmlnaHRcIiksXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgIF0pfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgIHR5cGU9e3R5cGV9XG4gICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICA+XG4gICAgICB7dHlwZW9mIGNoaWxkcmVuICE9PSBcInN0cmluZ1wiICYmIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmIGNoaWxkcmVuLmxlbmd0aCAgPyAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuY29udGVudH0+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgKSA6IGNoaWxkcmVufVxuICAgIDwvYnV0dG9uPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBCdXR0b247XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29udGFpbmVyXCI6XCJNOV9lZ0VDOG1zdTEzNW9QR1ZkSWZcIixcImxlZnRcIjpcIlJTUmJUZzhZYzQtczhrNnFVX3ZDZ1wiLFwic21hbGxcIjpcIl8xYk5RaGJad0xBOEVyTG13ZFFpdEplXCIsXCJsYXJnZVwiOlwiXzJEd0xGRC00Z0R6OUhFQUFpd1dKUHFcIixcImludmVydGVkXCI6XCJfMzFDZm1UVVlwRWgxaFp2Y3RROWxLNFwiLFwicm91bmRlZFwiOlwiXzJicTMxcUtEN0I2cjZDVENPTDNkcldcIixcInJpZ2h0T2Zmc2V0XCI6XCJfMmVVQ1dRTUVUT2dpWHVpYjdYZlRoWlwiLFwibGVmdE9mZnNldFwiOlwiRzhvX09NRFVGc0VRMXl0VTdvVVlHXCIsXCJub1NoYWRvd1wiOlwiXzJ2a25oVUZBSUdtalhzN3Rna0FDN0lcIixcIm5vQm9yZGVyXCI6XCJfMnAwR3BkbVBLSUZDVWVzNTg0WUhlVlwiLFwidHJhbnNwYXJlbnRcIjpcIl84dk1sU1JIXzlIb1JHSmg4U3drYVwiLFwic3RyZXRjaEhvcml6b250YWxseVwiOlwiblo5ck9ad3pHWFZJM2F5UmdBM1FDXCIsXCJzdHJldGNoVmVydGljYWxseVwiOlwiXzF5OGlmYjk1c3BUTFdHQW1zYncxUjJcIixcIm5vUGFkZGluZ1wiOlwiXzNjTzQ5SkVMTkt0R3lhRnhSbHNoeU9cIixcImNvbnRlbnRcIjpcIm84ZDdZb1Q4M3VtZVBQU0Z6SzMxWVwifTsiLCJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlLCBSZWFjdFR5cGUsIEFuY2hvckhUTUxBdHRyaWJ1dGVzIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vQnV0dG9uTGluay5tb2R1bGUuY3NzXCI7XG5pbXBvcnQgeyBTaXplIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbnR5cGUgT2Zmc2V0U2lkZSA9IFwibGVmdFwiIHwgXCJyaWdodFwiO1xuXG50eXBlIEJ1dHRvbkxpbmtQcm9wcyA9IHtcbiAgYXM/OiBSZWFjdFR5cGU7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaW52ZXJ0ZWQ/OiBib29sZWFuO1xuICByb3VuZGVkPzogYm9vbGVhbjtcbiAgdHJhbnNwYXJlbnQ/OiBib29sZWFuO1xuICBub1NoYWRvdz86IGJvb2xlYW47XG4gIG5vUGFkZGluZz86IGJvb2xlYW47XG4gIG5vQm9yZGVyPzogYm9vbGVhbjtcbiAgc3RyZXRjaEhvcml6b250YWxseT86IGJvb2xlYW47XG4gIHN0cmV0Y2hWZXJ0aWNhbGx5PzogYm9vbGVhbjtcbiAgc2l6ZT86IFNpemU7XG4gIG9mZnNldFNpZGVzPzogQXJyYXk8T2Zmc2V0U2lkZT47XG4gIGFsaWduPzogXCJsZWZ0XCIgfCBcImNlbnRlclwiO1xufSB8IGFueTtcblxuZnVuY3Rpb24gQnV0dG9uTGluayh7XG4gIGFzOiBDb21wb25lbnQsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHNpemUsXG4gIGludmVydGVkID0gZmFsc2UsXG4gIHJvdW5kZWQgPSBmYWxzZSxcbiAgdHJhbnNwYXJlbnQgPSBmYWxzZSxcbiAgbm9TaGFkb3cgPSBmYWxzZSxcbiAgbm9QYWRkaW5nID0gZmFsc2UsXG4gIG5vQm9yZGVyID0gZmFsc2UsXG4gIHN0cmV0Y2hIb3Jpem9udGFsbHkgPSBmYWxzZSxcbiAgc3RyZXRjaFZlcnRpY2FsbHkgPSBmYWxzZSxcbiAgb2Zmc2V0U2lkZXMgPSBbXSxcbiAgYWxpZ24gPSBcImNlbnRlclwiLFxuICAuLi5wcm9wc1xufTogQnV0dG9uTGlua1Byb3BzKSB7XG4gIGlmICh0eXBlb2YgQ29tcG9uZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgQ29tcG9uZW50ID0gXCJhXCI7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxDb21wb25lbnRcbiAgICAgIGRhdGEtdGVzdGlkPVwiYnV0dG9uLWxpbmtcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5jb250YWluZXIsXG4gICAgICAgIHN0eWxlc1tzaXplXSxcbiAgICAgICAgc3R5bGVzW2FsaWduXSxcbiAgICAgICAge1xuICAgICAgICAgIFtzdHlsZXMuaW52ZXJ0ZWRdOiBpbnZlcnRlZCxcbiAgICAgICAgICBbc3R5bGVzLnJvdW5kZWRdOiByb3VuZGVkLFxuICAgICAgICAgIFtzdHlsZXMubm9TaGFkb3ddOiBub1NoYWRvdyxcbiAgICAgICAgICBbc3R5bGVzLm5vUGFkZGluZ106IG5vUGFkZGluZyxcbiAgICAgICAgICBbc3R5bGVzLm5vQm9yZGVyXTogbm9Cb3JkZXIsXG4gICAgICAgICAgW3N0eWxlcy50cmFuc3BhcmVudF06IHRyYW5zcGFyZW50LFxuICAgICAgICAgIFtzdHlsZXMuc3RyZXRjaEhvcml6b250YWxseV06IHN0cmV0Y2hIb3Jpem9udGFsbHksXG4gICAgICAgICAgW3N0eWxlcy5zdHJldGNoVmVydGljYWxseV06IHN0cmV0Y2hWZXJ0aWNhbGx5LFxuICAgICAgICAgIFtzdHlsZXMubGVmdE9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJsZWZ0XCIpLFxuICAgICAgICAgIFtzdHlsZXMucmlnaHRPZmZzZXRdOiByb3VuZGVkICYmIG9mZnNldFNpZGVzLmluY2x1ZGVzKFwicmlnaHRcIiksXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgIF0pfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIHt0eXBlb2YgY2hpbGRyZW4gIT09IFwic3RyaW5nXCIgJiYgQXJyYXkuaXNBcnJheShjaGlsZHJlbikgJiYgY2hpbGRyZW4ubGVuZ3RoICA/IChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5jb250ZW50fT57Y2hpbGRyZW59PC9kaXY+XG4gICAgICApIDogKFxuICAgICAgICBjaGlsZHJlblxuICAgICAgKX1cbiAgICA8L0NvbXBvbmVudD5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQnV0dG9uTGluaztcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcIl8zZVZCZ21rRzZoalZva201WHk0VU1RXCIsXCJsZWZ0XCI6XCJfM0Y2aE1FUWtKZ3l3VWt0MWZ3bVRzeVwiLFwic21hbGxcIjpcIl84STlmaG56Yk12Q3JsNUtQajlmMFwiLFwibWVkaXVtXCI6XCJjc2o0UEtRZ2RQQmVGN1JkNVotV1FcIixcImxhcmdlXCI6XCJfM19Td3FtRFdPR3Y4NzdpSEFDbkpwQ1wiLFwiaW52ZXJ0ZWRcIjpcIl8xeE9hM0NCUkh6UENSV05zaUo2NWFDXCIsXCJyb3VuZGVkXCI6XCJfM1VHbE9JdHpLb2tWZzB3R0gwZUlsWFwiLFwicmlnaHRPZmZzZXRcIjpcIl8xM3RQc3A2ZGZBMVR3YjFNTUhSaUdUXCIsXCJsZWZ0T2Zmc2V0XCI6XCJOSTVuNmJFVlJDUVB5NkFPQXNRMXFcIixcIm5vU2hhZG93XCI6XCJnSVk5aXV2QzJWV3hjdnd3Q21hSkpcIixcInRyYW5zcGFyZW50XCI6XCJfM1hmbGgzUTFBWm5UT0QwY3RxdUk2d1wiLFwic3RyZXRjaEhvcml6b250YWxseVwiOlwiXzJGYlJERUdTXzdlTVVjSjBWaU9CVTBcIixcInN0cmV0Y2hWZXJ0aWNhbGx5XCI6XCJfMXJQbS10NVpXd3JTLUw5bDd6NjZqYlwiLFwibm9QYWRkaW5nXCI6XCJfM0o4RGVhTHE1aXczQXA3cUtKa1A5QlwiLFwibm9Cb3JkZXJcIjpcIl8zY0VRcy1LX21TaEZORGdEUDMyV2Q2XCIsXCJjb250ZW50XCI6XCJfMVZUeWZUd1Zsb0FjWndZQ1p5c2xzSlwifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIENvbG9yUGlja2VyIH0gZnJvbSBcIi4vQ29sb3JQaWNrZXJcIjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHsgQ29sb3JTd2F0Y2ggfSBmcm9tIFwiLi4vQ29sb3JTd2F0Y2hcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vQ29sb3JQaWNrZXIubW9kdWxlLmNzc1wiO1xuaW1wb3J0IHsgQ29sb3IgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxudHlwZSBDb2xvclBpY2tlclByb3BzID0ge1xuICBkaXJlY3Rpb24/OiBcImhvcml6b250YWxcIiB8IFwidmVydGljYWxcIjtcbiAgY29sb3JzOiBDb2xvcltdO1xuICBvblNlbGVjdDogKGNvbG9yOiBDb2xvcikgPT4gdm9pZDtcbiAgc2VsZWN0ZWRDb2xvcj86IENvbG9yO1xufVxuXG5mdW5jdGlvbiBDb2xvclBpY2tlcih7IGNvbG9ycywgb25TZWxlY3QsIHNlbGVjdGVkQ29sb3IsIGRpcmVjdGlvbiA9IFwidmVydGljYWxcIn06IENvbG9yUGlja2VyUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5jb2xvclBpY2tlciwgc3R5bGVzW2RpcmVjdGlvbl1dKX0+XG4gICAgICB7Y29sb3JzLm1hcCgoY29sb3I6IENvbG9yKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPENvbG9yU3dhdGNoXG4gICAgICAgICAgICBrZXk9e2NvbG9yLmtleX1cbiAgICAgICAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e2NvbG9yID09PSBzZWxlY3RlZENvbG9yfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25TZWxlY3QoY29sb3IpfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9KX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29sb3JQaWNrZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vQ29sb3JTd2F0Y2gubW9kdWxlLmNzc1wiO1xuaW1wb3J0IHsgQ29sb3IgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxudHlwZSBDb2xvclN3YXRjaFByb3BzID0ge1xuICBjb2xvcjogQ29sb3I7XG4gIGlzU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBvbkNsaWNrOiAoKSA9PiB2b2lkO1xufVxuXG5mdW5jdGlvbiBDb2xvclN3YXRjaCh7IGNvbG9yLCBvbkNsaWNrLCBpc1NlbGVjdGVkID0gZmFsc2UgfTogQ29sb3JTd2F0Y2hQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMuY29sb3JTd2F0Y2gsXG4gICAgICAgIHtcbiAgICAgICAgICBbc3R5bGVzLnNlbGVjdGVkXTogaXNTZWxlY3RlZCxcbiAgICAgICAgfSxcbiAgICAgIF0pfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJjb2xvci1zd2F0Y2hcIlxuICAgICAgZGlzYWJsZWQ9e2lzU2VsZWN0ZWR9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiBjb2xvci5oZXhDb2RlIH19XG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3JPbmx5fT57YFNlbGVjdCAke2NvbG9yLmxhYmVsfSBjb2xvcmB9PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBDb2xvclN3YXRjaDtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb2xvclN3YXRjaFwiOlwiXzEzc3MxeHNNTml6dkVnUF9oeEVWOEJcIixcInNlbGVjdGVkXCI6XCJMNmZBdDZSWll6X3ozd1BialpFeEhcIixcInNyT25seVwiOlwiXzN2SjVteHB6YVlzS2F4Zi04dEIzMXhcIn07IiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbG9yUGlja2VyXCI6XCJfMzFGd0hfbldyNzJrM3B1Z0FwSnViOVwiLFwiaG9yaXpvbnRhbFwiOlwiUWEtQnB1VFQya3hwbVZfQVFnQ2pIXCIsXCJ2ZXJ0aWNhbFwiOlwiXzJ4NFNBbmJvcHlabWt5Y1dMQzBFWGtcIn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBDb25maXJtYXRpb25Nb2RhbCB9IGZyb20gXCIuL0NvbmZpcm1hdGlvbk1vZGFsXCI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHsgTW9kYWwgfSBmcm9tIFwiLi4vTW9kYWxcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vQ29uZmlybWF0aW9uTW9kYWwubW9kdWxlLmNzc1wiO1xuXG50eXBlIENvbmZpcm1hdGlvbk1vZGFsUHJvcHMgPSB7XG4gIGJ1dHRvbnNMZWZ0PzogUmVhY3RFbGVtZW50W107XG4gIGJ1dHRvbnNSaWdodD86IFJlYWN0RWxlbWVudFtdO1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgaGVhZGVyOiBzdHJpbmc7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgbm9QYWRkaW5nPzogYm9vbGVhbjtcbiAgb25DbG9zZT86ICgpID0+IHZvaWQ7XG59O1xuXG5mdW5jdGlvbiBDb25maXJtYXRpb25Nb2RhbCh7XG4gIGNoaWxkcmVuLFxuICBoZWFkZXIsXG4gIGlzT3BlbixcbiAgYnV0dG9uc0xlZnQgPSBbXSxcbiAgYnV0dG9uc1JpZ2h0ID0gW10sXG4gIG9uQ2xvc2UgPSAoKSA9PiB7fSxcbiAgbm9QYWRkaW5nID0gZmFsc2UsXG59OiBDb25maXJtYXRpb25Nb2RhbFByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPE1vZGFsIGlzT3Blbj17aXNPcGVufSBvbkNsb3NlPXtvbkNsb3NlfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuY29udGFpbmVyfT5cbiAgICAgICAgPGgxIGNsYXNzTmFtZT17c3R5bGVzLm1vZGFsSGVhZGVyfT57aGVhZGVyfTwvaDE+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgICAgIHN0eWxlcy5tb2RhbENvbnRlbnQsXG4gICAgICAgICAgICB7IFtzdHlsZXMubm9QYWRkaW5nXTogbm9QYWRkaW5nIH0sXG4gICAgICAgICAgXSl9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm1vZGFsQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5tb2RhbEJ1dHRvbnN9PntidXR0b25zTGVmdH08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm1vZGFsQnV0dG9uc30+e2J1dHRvbnNSaWdodH08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L01vZGFsPlxuICApO1xufVxuXG5Db25maXJtYXRpb25Nb2RhbC5kaXNwbGF5TmFtZSA9IFwiQ29uZmlybWF0aW9uTW9kYWxcIjtcblxuZXhwb3J0IGRlZmF1bHQgQ29uZmlybWF0aW9uTW9kYWw7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlSG90a2V5cyB9IGZyb20gXCJyZWFjdC1ob3RrZXlzLWhvb2tcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9Nb2RhbC5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgTW9kYWxQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZSxcbiAgaXNPcGVuOiBib29sZWFuLFxuICBvbkNsb3NlPzogKCkgPT4gdm9pZCxcbiAgYnV0dG9uPzogUmVhY3ROb2RlLFxufVxuXG5mdW5jdGlvbiBNb2RhbCh7XG4gIGNoaWxkcmVuLFxuICBpc09wZW4sXG4gIGJ1dHRvbixcbiAgb25DbG9zZSA9ICgpID0+IHt9XG4gfTogTW9kYWxQcm9wcykge1xuICB1c2VIb3RrZXlzKFwiRXNjYXBlXCIsIG9uQ2xvc2UpO1xuXG4gIGNvbnN0IGhhbmRsZU92ZXJsYXlDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBvbkNsb3NlKCk7XG4gIH0sIFtvbkNsb3NlXSk7XG5cbiAgcmV0dXJuIChcbiAgICBpc09wZW4gJiYgKFxuICAgICAgPD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm92ZXJsYXl9XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJtb2RhbC1vdmVybGF5XCJcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVPdmVybGF5Q2xpY2t9XG4gICAgICAgIC8+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMubW9kYWx9IGRhdGEtdGVzdGlkPVwibW9kYWxcIj5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7YnV0dG9uICYmIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMubW9kYWxCdXR0b259PntidXR0b259PC9kaXY+fVxuICAgICAgPC8+XG4gICAgKVxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNb2RhbDtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJvdmVybGF5XCI6XCJfMXl4Q2JRSnFTdFV2eXR2S0VlTkMzblwiLFwibW9kYWxcIjpcIkQ4U2pCeDNpa3o2MzZZdWJuSFlBWVwiLFwibW9kYWxCdXR0b25cIjpcIm84VlJWeE1yczF4WGF2QUR5eGpMR1wifTsiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29udGFpbmVyXCI6XCJra2dIb0JRaEZQc0tqX3gxWkZkUkhcIixcIm1vZGFsSGVhZGVyXCI6XCJfMVd1dkhELUdkWExydHF3YTA0VzFxeVwiLFwibW9kYWxDb250ZW50XCI6XCJfMjdlVXlTUXF2cTVxbG9OQ2xJaklTVFwiLFwibm9QYWRkaW5nXCI6XCJfMmd0QlhMOVBGU3BIc1cwQTl4ZDU1U1wiLFwibW9kYWxCdXR0b25zQ29udGFpbmVyXCI6XCJfNWdJcHlGM1g1dGhQUUFuc0FDNHo5XCIsXCJtb2RhbEJ1dHRvbnNcIjpcInN3c29DaWkxdzR4Tmw3aW9EVmtPNVwifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIEZsb2F0aW5nUGFuZWwgfSBmcm9tIFwiLi9GbG9hdGluZ1BhbmVsXCI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vRmxvYXRpbmdQYW5lbC5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgUGxhY2VtZW50ID0ge1xuICBob3Jpem9udGFsOiBcInJpZ2h0XCIgfCBcInJpZ2h0RWRnZVwiIHwgXCJyaWdodE9uRWRnZVwiIHwgXCJsZWZ0XCIgfCBcImxlZnRFZGdlXCIgfCBcImxlZnRPbkVkZ2VcIiB8IFwibGVmdE9uRWRnZVwiIHwgXCJjZW50ZXJcIjtcbiAgdmVydGljYWw6IFwidG9wXCIgfCBcInRvcEVkZ2VcIiB8IFwiYm90dG9tXCIgfCBcImJvdHRvbUVkZ2VcIiB8IFwiYm90dG9tT25FZGdlXCIgfCBcImNlbnRlclwiO1xuICBwYXJlbnQ6IFwidmlld3BvcnRcIiB8IFwiY29udGFpbmVyXCI7XG59O1xuXG50eXBlIEZsb2F0aW5nUGFuZWxQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgbGF5b3V0PzogXCJjb2x1bW5cIiB8IFwicm93XCI7XG4gIHBsYWNlbWVudD86IFBsYWNlbWVudDtcbn07XG5cbmZ1bmN0aW9uIEZsb2F0aW5nUGFuZWwoe1xuICBjaGlsZHJlbixcbiAgbGF5b3V0ID0gXCJjb2x1bW5cIixcbiAgcGxhY2VtZW50ID0geyBob3Jpem9udGFsOiBcImNlbnRlclwiLCB2ZXJ0aWNhbDogXCJib3R0b21cIiwgcGFyZW50OiBcInZpZXdwb3J0XCIgfVxufTogRmxvYXRpbmdQYW5lbFByb3BzKSB7XG4gIGNvbnN0IGhvcml6b250YWxQbGFjZW1lbnQgPVxuICAgIHBsYWNlbWVudC5ob3Jpem9udGFsID09PSBcImNlbnRlclwiXG4gICAgICA/IFwiaG9yaXpvbnRhbENlbnRlclwiXG4gICAgICA6IHBsYWNlbWVudC5ob3Jpem9udGFsO1xuXG4gIGNvbnN0IHZlcnRpY2FsUGxhY2VtZW50ID1cbiAgICBwbGFjZW1lbnQudmVydGljYWwgPT09IFwiY2VudGVyXCIgPyBcInZlcnRpY2FsQ2VudGVyXCIgOiBwbGFjZW1lbnQudmVydGljYWw7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBkYXRhLXRlc3RpZD1cImZsb2F0aW5nLXBhbmVsXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMuY29udGFpbmVyLFxuICAgICAgICBzdHlsZXNbaG9yaXpvbnRhbFBsYWNlbWVudF0sXG4gICAgICAgIHN0eWxlc1t2ZXJ0aWNhbFBsYWNlbWVudF0sXG4gICAgICAgIHN0eWxlc1tsYXlvdXRdLFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlcy5maXhlZF06IHBsYWNlbWVudC5wYXJlbnQgIT09IFwiY29udGFpbmVyXCIsXG4gICAgICAgIH0sXG4gICAgICBdKX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZsb2F0aW5nUGFuZWw7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29udGFpbmVyXCI6XCJhNk5ITzJDVlZDZmluaXllMlhMTi1cIixcInJvd1wiOlwiXzNSU2dCNzZyRUJuaVBjMlljcjhaYnZcIixcImNvbHVtblwiOlwiXzFKa1gxNWlnY2xuYm01c1JTY1dWRFlcIixcImZpeGVkXCI6XCJNTVExeWpFYWZXa1lGVkRITXBUYklcIixcInBsYWluXCI6XCJfM20yTV9OYXJjNXh3TGF5OEhKbGprY1wiLFwidHJhbnNwYXJlbnRcIjpcIl8xcmZhNDl6aFp4TmlmejY0T3FiXzZQXCIsXCJ0b3BcIjpcIl9rVWFsbkRlRWZ2enFBamkwQU1Eb1wiLFwidG9wRWRnZVwiOlwiVzhKQUl3TGpPOEpRR2J2aVpwUFF3XCIsXCJ0b3BPbkVkZ2VcIjpcIl8zb3BKN0ViNnRqMzk0dVY4YTU3aXh6XCIsXCJyaWdodFwiOlwiXzMtdmJ3anAwYVBjTEVWMVN4MElDZ1BcIixcInJpZ2h0RWRnZVwiOlwiXzNYTkZ5NVpvTUNvWUJJYWJlR040QlFcIixcInJpZ2h0T25FZGdlXCI6XCJfMTJjM0N6VU1RRThBRzNBTDhIaWtpMlwiLFwiYm90dG9tXCI6XCJfM2dlQkVOSDVvRXJxR2R0LVF5SG5QaFwiLFwiYm90dG9tRWRnZVwiOlwiXzNfc2FNNEdzMzJuUmJJSEh4SUViRjZcIixcImJvdHRvbU9uRWRnZVwiOlwiXzJQTEU0ZG1HaG5jZ2stbEVub1U0a3ZcIixcImxlZnRcIjpcIl8xaVNCbnlaZ1BlRlVXb000aTZkU3BVXCIsXCJsZWZ0RWRnZVwiOlwiXzFmWDE5cUlPU2huMm81dXVzUnpUZ3NcIixcImxlZnRPbkVkZ2VcIjpcIktCSERvY2t1SFRFT0tNR096YWRYaVwiLFwiaG9yaXpvbnRhbENlbnRlclwiOlwiXzMxdDZ0SFJKNXMtNURjRExGVEtoMW1cIixcInZlcnRpY2FsQ2VudGVyXCI6XCJfMmhxN2ZrRFhIeHJ4ejJ0N0xMZzRfOVwifTsiLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0ljb24ubW9kdWxlLmNzc1wiO1xuXG50eXBlIEljb25Qcm9wcyA9IHtcbiAgc3JjOiBzdHJpbmc7XG4gIGFsdD86IHN0cmluZztcbiAgc2l6ZT86IFwic21hbGxcIiB8IFwibWVkaXVtXCIgfCBcImxhcmdlXCI7XG4gIGludmVydGVkPzogYm9vbGVhbjtcbn1cbmZ1bmN0aW9uIEljb24oeyBzcmMsIGFsdCwgc2l6ZSA9IFwibWVkaXVtXCIsIGludmVydGVkID0gZmFsc2UgfTogSWNvblByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGltZ1xuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5pY29uLFxuICAgICAgICBzdHlsZXNbc2l6ZV0sXG4gICAgICAgIHsgW3N0eWxlcy5pbnZlcnRlZF06IGludmVydGVkIH0sXG4gICAgICBdKX1cbiAgICAgIGNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCJcbiAgICAgIGRhdGEtdGVzdGlkPVwiaWNvblwiXG4gICAgICBhbHQ9e2FsdH1cbiAgICAgIHNyYz17c3JjfVxuICAgIC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEljb247XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiaWNvblwiOlwidWg4emttUXA1eWJrNVdKU2xhNjlEXCIsXCJzbWFsbFwiOlwiXzlESUN0cW1RU25MUGptMVhJN1lWc1wiLFwibWVkaXVtXCI6XCJzSnB4ZllnaVR6N2lrNkpPR3Uxd2lcIixcImxhcmdlXCI6XCJfMnJndWNBSDhCbmxpLWNtano5aTJDMlwiLFwiaW52ZXJ0ZWRcIjpcIkktZUk1cThyZDJiU3A5Qi1GaFV6YVwifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIEljb25CdXR0b24gfSBmcm9tIFwiLi9JY29uQnV0dG9uXCI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCB7IEljb24gfSBmcm9tIFwiLi4vSWNvblwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9JY29uQnV0dG9uLm1vZHVsZS5jc3NcIjtcblxudHlwZSBJY29uQnV0dG9uUHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgc3JjOiBzdHJpbmc7XG4gIGFsdDogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGludmVydGVkPzogYm9vbGVhbjtcbiAgbm9TaGFkb3c/OiBib29sZWFuO1xuICBub0JvcmRlcj86IGJvb2xlYW47XG4gIHRyYW5zcGFyZW50PzogYm9vbGVhbjtcbiAgcm91bmRlZD86IGJvb2xlYW47XG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkLFxuICBzaXplPzogXCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIjtcbiAgdHlwZT86IFwic3VibWl0XCIgfCBcInJlc2V0XCIgfCBcImJ1dHRvblwiO1xuICBvZmZzZXRTaWRlcz86IEFycmF5PFwidG9wXCIgfCBcInJpZ2h0XCIgfCBcImJvdHRvbVwiIHwgXCJsZWZ0XCI+O1xufVxuXG5mdW5jdGlvbiBJY29uQnV0dG9uKHtcbiAgY2xhc3NOYW1lLFxuICBzcmMsXG4gIGFsdCxcbiAgb2Zmc2V0U2lkZXMgPSBbXSxcbiAgb25DbGljayA9ICgpID0+IHt9LFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICBpbnZlcnRlZCA9IGZhbHNlLFxuICBub1NoYWRvdyA9IGZhbHNlLFxuICBub0JvcmRlciA9IGZhbHNlLFxuICB0cmFuc3BhcmVudCA9IGZhbHNlLFxuICByb3VuZGVkID0gZmFsc2UsXG4gIHNpemUgPSBcIm1lZGl1bVwiLFxuICB0eXBlID0gXCJidXR0b25cIixcbn06IEljb25CdXR0b25Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMuY29udGFpbmVyLFxuICAgICAgICBzdHlsZXNbc2l6ZV0sXG4gICAgICAgIHtcbiAgICAgICAgICBbc3R5bGVzLmludmVydGVkXTogaW52ZXJ0ZWQsXG4gICAgICAgICAgW3N0eWxlcy5yb3VuZGVkXTogcm91bmRlZCxcbiAgICAgICAgICBbc3R5bGVzLm5vU2hhZG93XTogbm9TaGFkb3csXG4gICAgICAgICAgW3N0eWxlcy5ub0JvcmRlcl06IG5vQm9yZGVyLFxuICAgICAgICAgIFtzdHlsZXMudHJhbnNwYXJlbnRdOiB0cmFuc3BhcmVudCxcbiAgICAgICAgICBbc3R5bGVzLnRvcE9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJ0b3BcIiksXG4gICAgICAgICAgW3N0eWxlcy5yaWdodE9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJyaWdodFwiKSxcbiAgICAgICAgICBbc3R5bGVzLmJvdHRvbU9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJib3R0b21cIiksXG4gICAgICAgICAgW3N0eWxlcy5sZWZ0T2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcImxlZnRcIiksXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgIF0pfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgIHR5cGU9e3R5cGV9XG4gICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICA+XG4gICAgICA8SWNvbiBzcmM9e3NyY30gYWx0PXthbHR9IHNpemU9e3NpemV9IGludmVydGVkPXtpbnZlcnRlZH0gIC8+XG4gICAgPC9idXR0b24+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEljb25CdXR0b247XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29udGFpbmVyXCI6XCJfMk1QdUozQXB2ckF2cmV3alNXR0FBMlwiLFwic21hbGxcIjpcImxPa29hbjdkYnAtZ29EdEpWdUs3QlwiLFwibWVkaXVtXCI6XCJfM2E5Y1d0c19ZN3gzcGFqazh1bU4zelwiLFwibGFyZ2VcIjpcIl8yYUc2elhxVEVLVmN2QmFhbmlDTkJ5XCIsXCJyb3VuZGVkXCI6XCJfMkpYMDM0cVVUQ29UZFdDMnBwQTQ4N1wiLFwidG9wT2Zmc2V0XCI6XCJfMXdwQy1XWGdMMDZRS3h0UHpPd05SS1wiLFwicmlnaHRPZmZzZXRcIjpcIkxJenJRQzdwb1FUOWpVUkJxTURLaFwiLFwiYm90dG9tT2Zmc2V0XCI6XCJfMmlfdzVVTGtVSzdMVnc1aEVPOTdFd1wiLFwibGVmdE9mZnNldFwiOlwiXzM4ZUtsVFFUVjFZbG5FZTFHbU50UWtcIixcImludmVydGVkXCI6XCJfMk5rWjUwcmtBM2VaQ3lzWTlGQXAtZVwiLFwibm9TaGFkb3dcIjpcIl8zVXk1SFpkdmtXZjdiaWxUMHd4d1ZlXCIsXCJub0JvcmRlclwiOlwiXzJGNEh5OWxxNU9DckVwUFpQaDV4QUpcIixcInRyYW5zcGFyZW50XCI6XCJfMnU3cVRNZUU5RDVydGNzRWNTb0FZM1wifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIEljb25CdXR0b25MaW5rIH0gZnJvbSBcIi4vSWNvbkJ1dHRvbkxpbmtcIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdFR5cGUsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSBcIi4uL0ljb25cIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vSWNvbkJ1dHRvbkxpbmsubW9kdWxlLmNzc1wiO1xuaW1wb3J0IHsgU2l6ZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuXG50eXBlIE9mZnNldFNpZGUgPSBcInRvcFwiIHwgXCJyaWdodFwiIHwgXCJib3R0b21cIiB8IFwibGVmdFwiO1xuXG50eXBlIEljb25CdXR0b25MaW5rUHJvcHMgPSB7XG4gIGFzPzogUmVhY3RUeXBlO1xuICBzcmM6IHN0cmluZztcbiAgYWx0OiBzdHJpbmc7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaW52ZXJ0ZWQ/OiBib29sZWFuO1xuICByb3VuZGVkPzogYm9vbGVhbjtcbiAgdHJhbnNwYXJlbnQ/OiBib29sZWFuO1xuICBub1NoYWRvdz86IGJvb2xlYW47XG4gIG5vQm9yZGVyPzogYm9vbGVhbjtcbiAgc2l6ZT86IFNpemU7XG4gIG9mZnNldFNpZGVzPzogQXJyYXk8T2Zmc2V0U2lkZT47XG59IHwgYW55O1xuXG5mdW5jdGlvbiBJY29uQnV0dG9uTGluayh7XG4gIGFzOiBDb21wb25lbnQsXG4gIGNsYXNzTmFtZSxcbiAgc3JjLFxuICBhbHQsXG4gIGludmVydGVkID0gZmFsc2UsXG4gIG5vU2hhZG93ID0gZmFsc2UsXG4gIG5vQm9yZGVyID0gZmFsc2UsXG4gIHRyYW5zcGFyZW50ID0gZmFsc2UsXG4gIHJvdW5kZWQgPSBmYWxzZSxcbiAgb2Zmc2V0U2lkZXMgPSBbXSxcbiAgc2l6ZSA9IFwibWVkaXVtXCIsXG4gIC4uLnByb3BzXG59OiBJY29uQnV0dG9uTGlua1Byb3BzKSB7XG4gIGlmICh0eXBlb2YgQ29tcG9uZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgQ29tcG9uZW50ID0gXCJhXCI7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxDb21wb25lbnRcbiAgICAgIGRhdGEtdGVzdGlkPVwiaWNvbi1idXR0b24tbGlua1wiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgc3R5bGVzLmNvbnRhaW5lcixcbiAgICAgICAgc3R5bGVzW3NpemVdLFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlcy5pbnZlcnRlZF06IGludmVydGVkLFxuICAgICAgICAgIFtzdHlsZXMucm91bmRlZF06IHJvdW5kZWQsXG4gICAgICAgICAgW3N0eWxlcy5ub1NoYWRvd106IG5vU2hhZG93LFxuICAgICAgICAgIFtzdHlsZXMubm9Cb3JkZXJdOiBub0JvcmRlcixcbiAgICAgICAgICBbc3R5bGVzLnRyYW5zcGFyZW50XTogdHJhbnNwYXJlbnQsXG4gICAgICAgICAgW3N0eWxlcy50b3BPZmZzZXRdOiByb3VuZGVkICYmIG9mZnNldFNpZGVzLmluY2x1ZGVzKFwidG9wXCIpLFxuICAgICAgICAgIFtzdHlsZXMucmlnaHRPZmZzZXRdOiByb3VuZGVkICYmIG9mZnNldFNpZGVzLmluY2x1ZGVzKFwicmlnaHRcIiksXG4gICAgICAgICAgW3N0eWxlcy5ib3R0b21PZmZzZXRdOiByb3VuZGVkICYmIG9mZnNldFNpZGVzLmluY2x1ZGVzKFwiYm90dG9tXCIpLFxuICAgICAgICAgIFtzdHlsZXMubGVmdE9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJsZWZ0XCIpLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICBdKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8SWNvbiBzcmM9e3NyY30gYWx0PXthbHR9IHNpemU9e3NpemV9IGludmVydGVkPXtpbnZlcnRlZH0gLz5cbiAgICA8L0NvbXBvbmVudD5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgSWNvbkJ1dHRvbkxpbms7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29udGFpbmVyXCI6XCJfMXVpZm1LTlBEemR1NVlEbmhnd1BRS1wiLFwic21hbGxcIjpcInBmSGNZYWV3LUhySHRUTnVSNHY3aFwiLFwibGFyZ2VcIjpcIl8yNlo5RkgtQ05QcWY1NVpSUDF2bmFiXCIsXCJyb3VuZGVkXCI6XCJfMnE3V3ZST2hObTNnc1JJUmFRUWVhVVwiLFwidG9wT2Zmc2V0XCI6XCJ3WnlfdnVsWmtNYldTWDBha2NaSEFcIixcInJpZ2h0T2Zmc2V0XCI6XCJfMmpoaHBtNjBfeVBFZnhRLXdhemotNVwiLFwiYm90dG9tT2Zmc2V0XCI6XCJEbm5yRzdaWG1USWhtV1Vjczk5bTFcIixcImxlZnRPZmZzZXRcIjpcIl8xWWRDZzdUNlhqaG14d2NqTE5TRWItXCIsXCJpbnZlcnRlZFwiOlwiSFYwUi1scXdteWVxc1MxWjhwb1pTXCIsXCJub1NoYWRvd1wiOlwiXzFMUHB0NzBKamltNlNmWmUzNUcya2JcIixcIm5vQm9yZGVyXCI6XCJSa3pTckdpeE0yOEpNYXQ2SUI1THJcIixcInRyYW5zcGFyZW50XCI6XCJfMUtkWGZZM1BrNnRFTllIODF0V3Jwc1wifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIEltYWdlIH0gZnJvbSBcIi4vSW1hZ2VcIjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9JbWFnZS5tb2R1bGUuY3NzXCI7XG5cbmV4cG9ydCBjb25zdCBlbXB0eUltYWdlID1cbiAgXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFFQUFBQUJDQVFBQUFDMUhBd0NBQUFBQzBsRVFWUjQybU5rWUFBQUFBWUFBakNCMEM4QUFBQUFTVVZPUks1Q1lJST1cIjsgLy8gMXgxcG5nXG5cbnR5cGUgSW1hZ2VQcm9wcyA9IHtcbiAgc3JjOiBzdHJpbmc7XG4gIGFsdD86IHN0cmluZztcbiAgc3JjV2lkdGg/OiBudW1iZXI7XG4gIHNyY0hlaWdodD86IG51bWJlcjtcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIGFuaW1hdGlvbj86IFwiZmFkZUluXCIgfCBcInNjYWxlVXBcIjtcbiAgbGF5b3V0PzogXCJjb3ZlclwiIHwgXCJjb250YWluXCIgfCBcInN0cmV0Y2hIb3Jpem9udGFsbHlcIiB8IFwic3RyZXRjaFZlcnRpY2FsbHlcIjtcbn07XG5cbmZ1bmN0aW9uIEltYWdlQ29tcG9uZW50KHtcbiAgc3JjLFxuICBhbHQsXG4gIHNyY1dpZHRoLFxuICBzcmNIZWlnaHQsXG4gIGNoaWxkcmVuLFxuICBhbmltYXRpb24sXG4gIGxheW91dCA9IFwiY29udGFpblwiLFxufTogSW1hZ2VQcm9wcykge1xuICBjb25zdCBbaXNMb2FkZWQsIHNldElzTG9hZGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgaW1hZ2VSZWYgPSB1c2VSZWYobnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgICBpbWFnZS5jcm9zc09yaWdpbiA9IFwiYW5vbnltb3VzXCI7XG4gICAgaW1hZ2Uuc3JjID0gc3JjO1xuICAgIGltYWdlLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIGltYWdlUmVmLmN1cnJlbnQ/LnNldEF0dHJpYnV0ZShcInNyY1wiLCBzcmMpO1xuICAgICAgc2V0SXNMb2FkZWQodHJ1ZSk7XG4gICAgfTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpbWFnZS5zcmMgPSBcIlwiO1xuICAgICAgZGVsZXRlIGltYWdlLm9ubG9hZDtcbiAgICAgIGRlbGV0ZSBpbWFnZS5zcmM7XG4gICAgICBkZWxldGUgaW1hZ2UuY3Jvc3NPcmlnaW47XG4gICAgICBpbWFnZSA9IG51bGw7XG4gICAgfTtcbiAgfSwgW3NyY10pO1xuXG4gIHJldHVybiBjaGlsZHJlbiA/IChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5jb250YWluZXIsIHN0eWxlcy5oYXNPdmVybGF5XSl9PlxuICAgICAgPGltZ1xuICAgICAgICByZWY9e2ltYWdlUmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgICBzdHlsZXMuaW1hZ2UsXG4gICAgICAgICAgc3R5bGVzW2xheW91dF0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgW3N0eWxlcy5mYWRlSW5dOiBhbmltYXRpb24gPT09IFwiZmFkZUluXCIgJiYgaXNMb2FkZWQsXG4gICAgICAgICAgICBbc3R5bGVzLnNjYWxlVXBdOiBhbmltYXRpb24gPT09IFwic2NhbGVVcFwiICYmIGlzTG9hZGVkLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pfVxuICAgICAgICBjcm9zc09yaWdpbj1cImFub255bW91c1wiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiaW1hZ2VcIlxuICAgICAgICBhbHQ9e2FsdH1cbiAgICAgICAgc3JjPXtlbXB0eUltYWdlfVxuICAgICAgICB3aWR0aD17c3JjV2lkdGh9XG4gICAgICAgIGhlaWdodD17c3JjSGVpZ2h0fVxuICAgICAgLz5cbiAgICAgIHtjaGlsZHJlbiAmJiA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm92ZXJsYXl9PntjaGlsZHJlbn08L2Rpdj59XG4gICAgPC9kaXY+XG4gICkgOiAoXG4gICAgPGltZ1xuICAgICAgcmVmPXtpbWFnZVJlZn1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMuaW1hZ2UsXG4gICAgICAgIHN0eWxlc1tsYXlvdXRdLFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlcy5mYWRlSW5dOiBhbmltYXRpb24gPT09IFwiZmFkZUluXCIgJiYgaXNMb2FkZWQsXG4gICAgICAgICAgW3N0eWxlcy5zY2FsZVVwXTogYW5pbWF0aW9uID09PSBcInNjYWxlVXBcIiAmJiBpc0xvYWRlZCxcbiAgICAgICAgfSxcbiAgICAgIF0pfVxuICAgICAgY3Jvc3NPcmlnaW49XCJhbm9ueW1vdXNcIlxuICAgICAgZGF0YS10ZXN0aWQ9XCJpbWFnZVwiXG4gICAgICBhbHQ9e2FsdH1cbiAgICAgIHNyYz17ZW1wdHlJbWFnZX1cbiAgICAgIHdpZHRoPXtzcmNXaWR0aH1cbiAgICAgIGhlaWdodD17c3JjSGVpZ2h0fVxuICAgIC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEltYWdlQ29tcG9uZW50O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbnRhaW5lclwiOlwiXzN6d2xuOHhwa1p3cFRZNWk2SjdiT0RcIixcImhhc092ZXJsYXlcIjpcIl8yZWw4eFdxcWYzdzRTM3gwczJEOXhsXCIsXCJvdmVybGF5XCI6XCJFZzNpbWZiWGRJNlU2cmZSRTAtcU9cIixcImltYWdlXCI6XCJ0MTg5N2RmdHNfcHFIelNud21XQldcIixcImNvdmVyXCI6XCJfMS1SX0hEak82cU5ueXdjTmlTOGJ5RFwiLFwiY29udGFpblwiOlwiXzNtRHBDakhKMmc2NmUwdzRSMkVaa0dcIixcInN0cmV0Y2hIb3Jpem9udGFsbHlcIjpcIl8zeUV0SDdjcXBVbFZGYUdpV0cxMjl3XCIsXCJzdHJldGNoVmVydGljYWxseVwiOlwibHlpQnM2T0J4dlJFbndJUjBsczJDXCIsXCJmYWRlSW5cIjpcIl8yT0tKdzhVZHQ5MTZJWG1UbFQ5ODZZXCIsXCJmYWRlSW5BbmltYXRpb25cIjpcIk5vT1ZyVzQ2Nkh0azZFcFoxd1lpSVwiLFwic2NhbGVVcFwiOlwiXzMwOVZUcWpWSHBWSkh1eUFRYV9hWmlcIixcInNjYWxlVXBBbmltYXRpb25cIjpcIl8zaWNiSnJlMFBKN01GblhRaUNZX3E2XCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgTGlzdFZpZXcgfSBmcm9tIFwiLi9MaXN0Vmlld1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBMaXN0Vmlld0l0ZW0gfSBmcm9tIFwiLi9MaXN0Vmlld0l0ZW1cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTGlzdFZpZXdMaW5rSXRlbSB9IGZyb20gXCIuL0xpc3RWaWV3TGlua0l0ZW1cIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9MaXN0Vmlldy5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgTGlzdFZpZXdQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBoZWFkZXI/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIExpc3RWaWV3KHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgaGVhZGVyIH06IExpc3RWaWV3UHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5jb250YWluZXIsIGNsYXNzTmFtZV0pfT5cbiAgICAgIHtoZWFkZXIgJiYgPGgzIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+e2hlYWRlcn08L2gzPn1cbiAgICAgIDx1bCBjbGFzc05hbWU9e3N0eWxlcy5saXN0fT57Y2hpbGRyZW59PC91bD5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTGlzdFZpZXc7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29udGFpbmVyXCI6XCJDUEhOZDhvc0tqTHZRREVRVUVydXhcIixcImhlYWRlclwiOlwiXzFlN2hIU1ZvNTllOHlRbmhjOUI2SWRcIixcImxpc3RcIjpcIl8xdzFXOEU2X0h6ZmVzM1daVFlaYUpLXCJ9OyIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uL0J1dHRvblwiO1xuaW1wb3J0IHsgU2l6ZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9MaXN0Vmlld0l0ZW0ubW9kdWxlLmNzc1wiO1xuXG50eXBlIExpc3RWaWV3SXRlbVByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBhY3RpdmU/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHRyYW5zcGFyZW50PzogYm9vbGVhbjtcbiAgbm9QYWRkaW5nPzogYm9vbGVhbjtcbiAgc2l6ZT86IFNpemU7XG4gIGFsaWduPzogXCJsZWZ0XCIgfCBcImNlbnRlclwiO1xuICBvbkNsaWNrPzogKCkgPT4gdm9pZCxcbn1cblxuZnVuY3Rpb24gTGlzdFZpZXdJdGVtKHtcbiAgY2hpbGRyZW4sXG4gIGFjdGl2ZSA9IGZhbHNlLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICB0cmFuc3BhcmVudCA9IGZhbHNlLFxuICBub1BhZGRpbmcgPSBmYWxzZSxcbiAgc2l6ZSA9IFwibWVkaXVtXCIsXG4gIGFsaWduID0gXCJjZW50ZXJcIixcbiAgb25DbGljayA9ICgpID0+IHt9LFxufTogTGlzdFZpZXdJdGVtUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8bGkgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLmxpc3RWaWV3SXRlbV0pfT5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBpbnZlcnRlZD17YWN0aXZlfVxuICAgICAgICB0cmFuc3BhcmVudD17dHJhbnNwYXJlbnR9XG4gICAgICAgIG5vUGFkZGluZz17bm9QYWRkaW5nfVxuICAgICAgICBhbGlnbj17YWxpZ259XG4gICAgICAgIHNpemU9e3NpemV9XG4gICAgICAgIHN0cmV0Y2hIb3Jpem9udGFsbHlcbiAgICAgICAgbm9TaGFkb3dcbiAgICAgICAgbm9Cb3JkZXJcbiAgICAgID5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9CdXR0b24+XG4gICAgPC9saT5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTGlzdFZpZXdJdGVtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IHsgQnV0dG9uTGluayB9IGZyb20gXCIuLi9CdXR0b25MaW5rXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0xpc3RWaWV3SXRlbS5tb2R1bGUuY3NzXCI7XG5cbmZ1bmN0aW9uIExpc3RWaWV3TGlua0l0ZW0oe1xuICBjaGlsZHJlbixcbiAgYWN0aXZlLFxuICB0cmFuc3BhcmVudCxcbiAgbm9QYWRkaW5nLFxuICBzaXplLFxuICBhbGlnbixcbiAgYXMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiAoXG4gICAgPGxpIGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5saXN0Vmlld0l0ZW1dKX0+XG4gICAgICA8QnV0dG9uTGlua1xuICAgICAgICBhcz17YXN9XG4gICAgICAgIGludmVydGVkPXthY3RpdmV9XG4gICAgICAgIHRyYW5zcGFyZW50PXt0cmFuc3BhcmVudH1cbiAgICAgICAgbm9QYWRkaW5nPXtub1BhZGRpbmd9XG4gICAgICAgIGFsaWduPXthbGlnbn1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgc3RyZXRjaEhvcml6b250YWxseVxuICAgICAgICBub1NoYWRvd1xuICAgICAgICBub0JvcmRlclxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvQnV0dG9uTGluaz5cbiAgICA8L2xpPlxuICApO1xufVxuXG5MaXN0Vmlld0xpbmtJdGVtLmRlZmF1bHRQcm9wcyA9IHtcbiAgYWN0aXZlOiBmYWxzZSxcbiAgdHJhbnNwYXJlbnQ6IGZhbHNlLFxuICBub1BhZGRpbmc6IGZhbHNlLFxuICBzaXplOiBcIm1lZGl1bVwiLFxuICBhbGlnbjogXCJjZW50ZXJcIixcbiAgYXM6IFwiYVwiLFxufTtcblxuTGlzdFZpZXdMaW5rSXRlbS5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBhczogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICBhY3RpdmU6IFByb3BUeXBlcy5ib29sLFxuICB0cmFuc3BhcmVudDogUHJvcFR5cGVzLmJvb2wsXG4gIG5vUGFkZGluZzogUHJvcFR5cGVzLmJvb2wsXG4gIGFsaWduOiBQcm9wVHlwZXMub25lT2YoW1wibGVmdFwiLCBcImNlbnRlclwiXSksXG4gIHNpemU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTGlzdFZpZXdMaW5rSXRlbTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCJleHBvcnQgeyBkZWZhdWx0IGFzIE1lbnUgfSBmcm9tIFwiLi9NZW51XCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE1lbnVDb250YWluZXIgfSBmcm9tIFwiLi9NZW51Q29udGFpbmVyXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE1lbnVJdGVtIH0gZnJvbSBcIi4vTWVudUl0ZW1cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWVudUxpbmtJdGVtIH0gZnJvbSBcIi4vTWVudUxpbmtJdGVtXCI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL01lbnUubW9kdWxlLmNzc1wiO1xuXG50eXBlIFBsYWNlbWVudCA9IHtcbiAgaG9yaXpvbnRhbDogXCJyaWdodFwiIHwgXCJsZWZ0XCIsXG4gIHZlcnRpY2FsOiBcInRvcFwiIHwgXCJib3R0b21cIixcbn1cblxudHlwZSBNZW51UHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaXNPcGVuPzogYm9vbGVhbjtcbiAgaGVhZGVyPzogc3RyaW5nO1xuICBwbGFjZW1lbnQ/OiBQbGFjZW1lbnRcbn07XG5cblxuZnVuY3Rpb24gTWVudSh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGlzT3BlbiA9IHRydWUsXG4gIHBsYWNlbWVudCA9IHsgaG9yaXpvbnRhbDogXCJsZWZ0XCIsIHZlcnRpY2FsOiBcImJvdHRvbVwiIH0sXG4gIGhlYWRlclxufTogTWVudVByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5tZW51LFxuICAgICAgICBzdHlsZXNbcGxhY2VtZW50Lmhvcml6b250YWxdLFxuICAgICAgICBzdHlsZXNbcGxhY2VtZW50LnZlcnRpY2FsXSxcbiAgICAgICAgeyBbc3R5bGVzLm9wZW5dOiBpc09wZW4gfSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgXSl9XG4gICAgPlxuICAgICAge2hlYWRlciAmJiBpc09wZW4gJiYgPGgzIGNsYXNzTmFtZT17c3R5bGVzLm1lbnVIZWFkZXJ9PntoZWFkZXJ9PC9oMz59XG4gICAgICA8dWw+e2lzT3BlbiAmJiBjaGlsZHJlbn08L3VsPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNZW51O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcIm1lbnVcIjpcIl8yYWhpOEpjbnhHSHJuWm1EMHhUOVJMXCIsXCJ0b3BcIjpcIl8zZ3BGVGQxRmR4NEVBZnExNzBUR3M3XCIsXCJyaWdodFwiOlwiXzFMNUFUcE05R1h5LVNPUkZyMEc2UzRcIixcImxlZnRcIjpcIkNZRUpsMzlUa0VmbkthbDN2dHZ6OVwiLFwiYm90dG9tXCI6XCJfM3p5cC1OZFRCZUJES3ZrMjZwc1p1cFwiLFwib3BlblwiOlwiXzFpYWF6aVpyVklfLUU4RDk5V2ROamlcIixcImVudHJhbmNlXCI6XCJfMmZpS2U0LVg4UHFjRzRfOXFlQjNaT1wiLFwibWVudUhlYWRlclwiOlwiXzE5bmsxSU1OUy11X1lJUUxsbVlSdFVcIn07IiwiaW1wb3J0IFJlYWN0LCB7IGZvcndhcmRSZWYsIFJlYWN0Tm9kZSwgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vTWVudUNvbnRhaW5lci5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgTWVudUNvbnRhaW5lclByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJlZj86ICgpID0+IHZvaWQgfCB7IGN1cnJlbnQ6IGFueSB9O1xufVxuXG5mdW5jdGlvbiBNZW51Q29udGFpbmVyKHsgY2hpbGRyZW4sIGNsYXNzTmFtZX06IE1lbnVDb250YWluZXJQcm9wcywgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLm1lbnVDb250YWluZXIsIGNsYXNzTmFtZV0pfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZm9yd2FyZFJlZihNZW51Q29udGFpbmVyKTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJtZW51Q29udGFpbmVyXCI6XCJfMi1TRndzcHBFdW9iQkprQXd3UXJGQ1wifTsiLCJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vTWVudUl0ZW0ubW9kdWxlLmNzc1wiO1xuXG50eXBlIE1lbnVJdGVtUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaXNBY3RpdmU/OiBib29sZWFuLFxuICBvbkNsaWNrPzogKCkgPT4gdm9pZCxcbn07XG5cbmZ1bmN0aW9uIE1lbnVJdGVtKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgb25DbGljayxcbiAgaXNBY3RpdmUgPSBmYWxzZVxufTogTWVudUl0ZW1Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxsaVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5tZW51SXRlbSxcbiAgICAgICAgeyBbc3R5bGVzLmFjdGl2ZV06IGlzQWN0aXZlIH0sXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgIF0pfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9saT5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWVudUl0ZW07XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wibWVudUl0ZW1cIjpcIl8zZ0djelJKd3JOZW5YVEJMUW5DMjlNXCIsXCJhY3RpdmVcIjpcIl8yajFpbFVOa2JGR1NndWxYU29IQWRQXCJ9OyIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIFJlYWN0VHlwZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL01lbnVMaW5rSXRlbS5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgTWVudUxpbmtJdGVtUHJvcHMgPSB7XG4gIGFzOiBSZWFjdFR5cGU7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xufSB8IGFueTtcblxuZnVuY3Rpb24gTWVudUxpbmtJdGVtKHtcbiAgYXM6IENvbXBvbmVudCxcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IE1lbnVMaW5rSXRlbVByb3BzKSB7XG4gIGlmICh0eXBlb2YgQ29tcG9uZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgQ29tcG9uZW50ID0gXCJhXCI7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxDb21wb25lbnRcbiAgICAgIGRhdGEtdGVzdGlkPVwibWVudS1saW5rLWl0ZW1cIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLm1lbnVMaW5rSXRlbSwgY2xhc3NOYW1lXSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvQ29tcG9uZW50PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNZW51TGlua0l0ZW07XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wibWVudUxpbmtJdGVtXCI6XCJfMkR5MUxUZlNjR1p0U2JfNUx1ZC1sVVwiLFwiYWN0aXZlXCI6XCJfMlV3czdiajN5ZWptbjFrN1hpeUtmUVwiLFwibWVudUl0ZW1cIjpcIl8ybEk3UzJ0NXpXaFFzdmdfWG5RNy0tXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgT3ZlcmxheSB9IGZyb20gXCIuL092ZXJsYXlcIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vT3ZlcmxheS5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgT3ZlcmxheVByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICB0cmFuc3BhcmVudD86IGJvb2xlYW47XG4gIGlzRml4ZWQ/OiBib29sZWFuO1xuICBvbkNsaWNrPzogKCkgPT4gdm9pZDtcbn07XG5cblxuZnVuY3Rpb24gT3ZlcmxheSh7XG4gIGNoaWxkcmVuLFxuICB0cmFuc3BhcmVudCA9IGZhbHNlLFxuICBpc0ZpeGVkID0gZmFsc2UsXG4gIG9uQ2xpY2sgPSAoKSA9PiB7fVxufTogT3ZlcmxheVByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgZGF0YS10ZXN0aWQ9XCJvdmVybGF5XCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMub3ZlcmxheSxcbiAgICAgICAge1xuICAgICAgICAgIFtzdHlsZXMudHJhbnNwYXJlbnRdOiB0cmFuc3BhcmVudCxcbiAgICAgICAgICBbc3R5bGVzLmZpeGVkXTogaXNGaXhlZCxcbiAgICAgICAgfSxcbiAgICAgIF0pfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IE92ZXJsYXk7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wib3ZlcmxheVwiOlwiXzJRZ3B5ckRjVVF5S1lFU0M1RFhYSnJcIixcInRyYW5zcGFyZW50XCI6XCJfMjhmVm1veHA2OU9Qcjg4RXcwelZlTlwiLFwiZml4ZWRcIjpcIl8yc1UzNTE1RWJGRmdlUDF5SzJadWJ6XCJ9OyIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9MYWJlbC5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgVGV4dElucHV0UHJvcHMgPSB7XG4gIHZhbHVlOiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBUZXh0SW5wdXQoeyB2YWx1ZSB9OiBUZXh0SW5wdXRQcm9wcykge1xuICByZXR1cm4gPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRhaW5lcn0+e3ZhbHVlfTwvbGFiZWw+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBUZXh0SW5wdXQ7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29udGFpbmVyXCI6XCJfMnFsMjdibGxzUVgzOVIzRTJ1UnFnLVwifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIFRleHRJbnB1dCB9IGZyb20gXCIuL1RleHRJbnB1dFwiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCB7IExhYmVsIH0gZnJvbSBcIi4uL0xhYmVsXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL1RleHRJbnB1dC5tb2R1bGUuY3NzXCI7XG5pbXBvcnQgeyBTaXplLCBUZXh0SW5wdXRUeXBlIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbnR5cGUgVGV4dElucHV0UHJvcHMgPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIG9uQ2hhbmdlPzogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICB2YWx1ZT86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgdHlwZT86IFRleHRJbnB1dFR5cGU7XG4gIHNpemU/OiBTaXplO1xuICBhdXRvRm9jdXM/OiBib29sZWFuO1xuICBpbnB1dFJlZj86IFJlYWN0LlJlZk9iamVjdDxIVE1MSW5wdXRFbGVtZW50Pjtcbn07XG5cbmZ1bmN0aW9uIFRleHRJbnB1dCh7XG4gIGxhYmVsLFxuICBvbkNoYW5nZSxcbiAgcGxhY2Vob2xkZXIsXG4gIHZhbHVlLFxuICBuYW1lLFxuICBpbnB1dFJlZixcbiAgc2l6ZSA9IFwibWVkaXVtXCIsXG4gIGF1dG9Gb2N1cyA9IGZhbHNlLFxuICB0eXBlID0gXCJ0ZXh0XCIsXG59OiBUZXh0SW5wdXRQcm9wcykge1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoZTogUmVhY3QuRm9ybUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PlxuICAgICAgb25DaGFuZ2UoKGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlKSxcbiAgICBbb25DaGFuZ2VdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPExhYmVsIHZhbHVlPXtsYWJlbH0gLz5cbiAgICAgIDxpbnB1dFxuICAgICAgICBkYXRhLXRlc3RpZD1cImlucHV0XCJcbiAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLnRleHRJbnB1dCwgc3R5bGVzW3NpemVdXSl9XG4gICAgICAgIG9uQ2hhbmdlPXshaW5wdXRSZWYgPyBoYW5kbGVDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgdHlwZT17dHlwZX1cbiAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICBhdXRvRm9jdXM9e2F1dG9Gb2N1c31cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRJbnB1dDtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJ0ZXh0SW5wdXRcIjpcIl8yd2ZxT3pXQm9Bbl9LN2dvcXZqWEplXCIsXCJzbWFsbFwiOlwiXzFhNFFPVkpCMHpXM1VyZl81aHFOampcIixcIm1lZGl1bVwiOlwiXzNVSm9lOG5scHpoVlRtQzA5VFZzby1cIixcImxhcmdlXCI6XCJfM0RRNTJRZF8xSzRfVnh4VnY3MjhTWFwifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIFRvYXN0IH0gZnJvbSBcIi4vVG9hc3RcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgVG9hc3RDb250YWluZXIgfSBmcm9tIFwiLi9Ub2FzdENvbnRhaW5lclwiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSwgUmVhY3ROb2RlQXJyYXkgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9Ub2FzdC5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgSW1hZ2VUeXBlID0ge1xuICBzcmM6IHN0cmluZztcbiAgYWx0OiBzdHJpbmc7XG59XG5cbnR5cGUgVG9hc3RQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZSxcbiAgYnV0dG9uczogUmVhY3ROb2RlQXJyYXksXG4gIGltYWdlPzogSW1hZ2VUeXBlLFxuICBvbkNsaWNrPzogKCkgPT4gdm9pZCxcbn07XG5cbmZ1bmN0aW9uIFRvYXN0KHsgY2hpbGRyZW4sIGltYWdlLCBidXR0b25zLCBvbkNsaWNrID0gKCkgPT4ge319OiBUb2FzdFByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLnRvYXN0XSl9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJ0b2FzdFwiXG4gICAgPlxuICAgICAge2ltYWdlICYmIChcbiAgICAgICAgPGltZ1xuICAgICAgICAgIGRhdGEtdGVzdGlkPVwidG9hc3QtaW1hZ2VcIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRvYXN0SW1hZ2V9XG4gICAgICAgICAgc3JjPXtpbWFnZS5zcmN9XG4gICAgICAgICAgYWx0PXtpbWFnZS5hbHR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50b2FzdENvbnRlbnR9PntjaGlsZHJlbn08L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudG9hc3RCdXR0b25zfT57YnV0dG9uc308L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVG9hc3Q7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1widG9hc3RcIjpcIl8zc0JzX0VSWFYzazBTUU1HVXkyV2o0XCIsXCJlbnRyYW5jZVwiOlwiXzFfeGp0TGVVTW9FWE5BLXFPRVpoY3hcIixcInRvYXN0Q29udGVudFwiOlwiXzEwbEJFVENVM1VORlI4cHkxcTFxLWhcIixcInRvYXN0SW1hZ2VcIjpcIl8zQ2kwd3BPYms2b3FmN2R3a0hzRldvXCIsXCJ0b2FzdEJ1dHRvbnNcIjpcIkZFV0RuRHNQLTlBOUpIRzIwcUJTNVwifTsiLCJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vVG9hc3RDb250YWluZXIubW9kdWxlLmNzc1wiO1xuXG50eXBlIFRvYXN0Q29udGFpbmVyUHJvcHMgPSB7XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xufVxuZnVuY3Rpb24gVG9hc3RDb250YWluZXIoeyBjaGlsZHJlbiB9OiBUb2FzdENvbnRhaW5lclByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLnRvYXN0Q29udGFpbmVyXSl9XG4gICAgICBkYXRhLXRlc3RpZD1cInRvYXN0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBUb2FzdENvbnRhaW5lcjtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJ0b2FzdENvbnRhaW5lclwiOlwiXzNGOGNKVTF3bUttYnJqaWRnLU8zenBcIn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBWaWRlbyB9IGZyb20gXCIuL1ZpZGVvXCI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vVmlkZW8ubW9kdWxlLmNzc1wiO1xuXG4vKipcbiAqIFRoZXJlIGlzIGEga25vd24gaXNzdWUgaW4gUmVhY3QgaW4gcmVnYXJkcyB0byB0aGUgJ211dGVkJyBwcm9wZXJ0eSB3aGljaCBjYXVzZXMgdGhlIHdhcm5pbmc6XG4gKiBcIldhcm5pbmc6IHVuc3RhYmxlX2ZsdXNoRGlzY3JldGVVcGRhdGVzOiBDYW5ub3QgZmx1c2ggdXBkYXRlcyB3aGVuIFJlYWN0IGlzIGFscmVhZHkgcmVuZGVyaW5nLlwiXG4gKlxuICogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xMDM4OVxuICogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy82NTQ0XG4gKiBodHRwczovL2dpdGh1Yi5jb20vdGVzdGluZy1saWJyYXJ5L3JlYWN0LXRlc3RpbmctbGlicmFyeS9pc3N1ZXMvNDcwXG4gKi9cblxudHlwZSBMYXlvdXQgPSBcImNvdmVyXCIgfCBcImNvbnRhaW5cIiB8IFwic3RyZXRjaEhvcml6b250YWxseVwiIHwgXCJzdHJldGNoVmVydGljYWxseVwiO1xuXG50eXBlIFZpZGVvUHJvcHMgPSB7XG4gIHNyYzogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIGxheW91dD86IExheW91dCxcbiAgYXV0b1BsYXk/OiBib29sZWFuO1xuICBsb29wPzogYm9vbGVhbjtcbiAgbXV0ZWQ/OiBib29sZWFuO1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn07XG5cbmZ1bmN0aW9uIFZpZGVvKHtcbiAgc3JjLFxuICB0eXBlLFxuICBjaGlsZHJlbixcbiAgbXV0ZWQgPSB0cnVlLFxuICBsb29wID0gdHJ1ZSxcbiAgYXV0b1BsYXkgPSB0cnVlLFxuICBsYXlvdXQgPSBcImNvbnRhaW5cIlxufTogVmlkZW9Qcm9wcykge1xuICByZXR1cm4gY2hpbGRyZW4gPyAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMuY29udGFpbmVyLCBzdHlsZXMuaGFzT3ZlcmxheV0pfT5cbiAgICAgIDx2aWRlb1xuICAgICAgICBkYXRhLXRlc3RpZD1cInZpZGVvXCJcbiAgICAgICAgY3Jvc3NPcmlnaW49XCJhbm9ueW1vdXNcIlxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMudmlkZW8sIHN0eWxlc1tsYXlvdXRdXSl9XG4gICAgICAgIG11dGVkPXttdXRlZH1cbiAgICAgICAgbG9vcD17bG9vcH1cbiAgICAgICAgYXV0b1BsYXk9e2F1dG9QbGF5fVxuICAgICAgICBwbGF5c0lubGluZT17dHJ1ZX1cbiAgICAgID5cbiAgICAgICAgPHNvdXJjZSBkYXRhLXRlc3RpZD1cInNvdXJjZVwiIHNyYz17c3JjfSB0eXBlPXt0eXBlfSAvPlxuICAgICAgPC92aWRlbz5cbiAgICAgIHtjaGlsZHJlbiAmJiA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm92ZXJsYXl9PntjaGlsZHJlbn08L2Rpdj59XG4gICAgPC9kaXY+XG4gICkgOiAoXG4gICAgPHZpZGVvXG4gICAgICBkYXRhLXRlc3RpZD1cInZpZGVvXCJcbiAgICAgIGNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy52aWRlbywgc3R5bGVzW2xheW91dF1dKX1cbiAgICAgIG11dGVkPXttdXRlZH1cbiAgICAgIGxvb3A9e2xvb3B9XG4gICAgICBhdXRvUGxheT17YXV0b1BsYXl9XG4gICAgICBwbGF5c0lubGluZT17dHJ1ZX1cbiAgICA+XG4gICAgICA8c291cmNlIGRhdGEtdGVzdGlkPVwic291cmNlXCIgc3JjPXtzcmN9IHR5cGU9e3R5cGV9IC8+XG4gICAgPC92aWRlbz5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVmlkZW87XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29udGFpbmVyXCI6XCJfMkVRQmZyNXc4aDF4MWJxLTJmcDZ3VFwiLFwiaGFzT3ZlcmxheVwiOlwiXzNHUk1wbUdrX1BxSVRjVXYwTmZtdDNcIixcInZpZGVvXCI6XCJfMnRaZlhrRWhDa3dBemZhR19CVm4wQlwiLFwiY292ZXJcIjpcIl8zT1lIZmJ6YUwzUUhhbldaQmo4UnhPXCIsXCJjb250YWluXCI6XCJfM0lfYzdzaGNTcnRHX0Z4dnZVMkllRVwiLFwic3RyZXRjaEhvcml6b250YWxseVwiOlwiXzFaN2RMOXVFZDBLc3gzQ2tyWmhzQjhcIixcInN0cmV0Y2hWZXJ0aWNhbGx5XCI6XCJfMXpickRZTzBmWUZKVmM3eHZzVFlpNlwiLFwib3ZlcmxheVwiOlwiXzJvc1hkN1Nrd0YwTGgtMnlpcXVZUU1cIn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VUb2dnbGUgfSBmcm9tIFwiLi91c2VUb2dnbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlT3V0c2lkZUNsaWNrIH0gZnJvbSBcIi4vdXNlT3V0c2lkZUNsaWNrXCI7XG4iLCJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlVG9nZ2xlKFxuICBpbml0aWFsVmFsdWUgPSBmYWxzZVxuKTogW2Jvb2xlYW4sIChuZXdWYWx1ZT86IGJvb2xlYW4pID0+IHZvaWRdIHtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZTxib29sZWFuPihpbml0aWFsVmFsdWUpO1xuXG4gIGNvbnN0IHRvZ2dsZSA9IChuZXdWYWx1ZT86IGJvb2xlYW4pID0+IHtcbiAgICBpZiAodHlwZW9mIG5ld1ZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRWYWx1ZSgocHJldlZhbHVlKSA9PiB7XG4gICAgICAgIHJldHVybiAhcHJldlZhbHVlO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBbdmFsdWUsIHVzZUNhbGxiYWNrKHRvZ2dsZSwgW3ZhbHVlXSldO1xufVxuXG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG50eXBlIENhbGxiYWNrID0gKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlT3V0c2lkZUNsaWNrKGNhbGxiYWNrOiBDYWxsYmFjaykge1xuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGljayA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGlmICghcmVmLmN1cnJlbnQgfHwgcmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2FsbGJhY2soZXZlbnQpO1xuICAgIH07XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlQ2xpY2spO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsIGhhbmRsZUNsaWNrKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlQ2xpY2spO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIiwgaGFuZGxlQ2xpY2spO1xuICAgIH07XG4gIH0sIFtjYWxsYmFja10pO1xuXG4gIHJldHVybiByZWY7XG59XG4iLCIvKiFcbiAqIGhvdGtleXMtanMgdjMuOC4xXG4gKiBBIHNpbXBsZSBtaWNyby1saWJyYXJ5IGZvciBkZWZpbmluZyBhbmQgZGlzcGF0Y2hpbmcga2V5Ym9hcmQgc2hvcnRjdXRzLiBJdCBoYXMgbm8gZGVwZW5kZW5jaWVzLlxuICogXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAga2Vubnkgd29uZyA8d293b2hvb0BxcS5jb20+XG4gKiBodHRwOi8vamF5d2NqbG92ZS5naXRodWIuaW8vaG90a2V5c1xuICogXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKi9cblxudmFyIGlzZmYgPSB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyA/IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdmaXJlZm94JykgPiAwIDogZmFsc2U7IC8vIOe7keWumuS6i+S7tlxuXG5mdW5jdGlvbiBhZGRFdmVudChvYmplY3QsIGV2ZW50LCBtZXRob2QpIHtcbiAgaWYgKG9iamVjdC5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIG1ldGhvZCwgZmFsc2UpO1xuICB9IGVsc2UgaWYgKG9iamVjdC5hdHRhY2hFdmVudCkge1xuICAgIG9iamVjdC5hdHRhY2hFdmVudChcIm9uXCIuY29uY2F0KGV2ZW50KSwgZnVuY3Rpb24gKCkge1xuICAgICAgbWV0aG9kKHdpbmRvdy5ldmVudCk7XG4gICAgfSk7XG4gIH1cbn0gLy8g5L+u6aWw6ZSu6L2s5o2i5oiQ5a+55bqU55qE6ZSu56CBXG5cblxuZnVuY3Rpb24gZ2V0TW9kcyhtb2RpZmllciwga2V5KSB7XG4gIHZhciBtb2RzID0ga2V5LnNsaWNlKDAsIGtleS5sZW5ndGggLSAxKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG1vZHMubGVuZ3RoOyBpKyspIHtcbiAgICBtb2RzW2ldID0gbW9kaWZpZXJbbW9kc1tpXS50b0xvd2VyQ2FzZSgpXTtcbiAgfVxuXG4gIHJldHVybiBtb2RzO1xufSAvLyDlpITnkIbkvKDnmoRrZXnlrZfnrKbkuLLovazmjaLmiJDmlbDnu4RcblxuXG5mdW5jdGlvbiBnZXRLZXlzKGtleSkge1xuICBpZiAodHlwZW9mIGtleSAhPT0gJ3N0cmluZycpIGtleSA9ICcnO1xuICBrZXkgPSBrZXkucmVwbGFjZSgvXFxzL2csICcnKTsgLy8g5Yy56YWN5Lu75L2V56m655m95a2X56ymLOWMheaLrOepuuagvOOAgeWItuihqOespuOAgeaNoumhteespuetieetiVxuXG4gIHZhciBrZXlzID0ga2V5LnNwbGl0KCcsJyk7IC8vIOWQjOaXtuiuvue9ruWkmuS4quW/q+aNt+mUru+8jOS7pScsJ+WIhuWJslxuXG4gIHZhciBpbmRleCA9IGtleXMubGFzdEluZGV4T2YoJycpOyAvLyDlv6vmjbfplK7lj6/og73ljIXlkKsnLCfvvIzpnIDnibnmrorlpITnkIZcblxuICBmb3IgKDsgaW5kZXggPj0gMDspIHtcbiAgICBrZXlzW2luZGV4IC0gMV0gKz0gJywnO1xuICAgIGtleXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBpbmRleCA9IGtleXMubGFzdEluZGV4T2YoJycpO1xuICB9XG5cbiAgcmV0dXJuIGtleXM7XG59IC8vIOavlOi+g+S/rumlsOmUrueahOaVsOe7hFxuXG5cbmZ1bmN0aW9uIGNvbXBhcmVBcnJheShhMSwgYTIpIHtcbiAgdmFyIGFycjEgPSBhMS5sZW5ndGggPj0gYTIubGVuZ3RoID8gYTEgOiBhMjtcbiAgdmFyIGFycjIgPSBhMS5sZW5ndGggPj0gYTIubGVuZ3RoID8gYTIgOiBhMTtcbiAgdmFyIGlzSW5kZXggPSB0cnVlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyMS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChhcnIyLmluZGV4T2YoYXJyMVtpXSkgPT09IC0xKSBpc0luZGV4ID0gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gaXNJbmRleDtcbn1cblxudmFyIF9rZXlNYXAgPSB7XG4gIGJhY2tzcGFjZTogOCxcbiAgdGFiOiA5LFxuICBjbGVhcjogMTIsXG4gIGVudGVyOiAxMyxcbiAgcmV0dXJuOiAxMyxcbiAgZXNjOiAyNyxcbiAgZXNjYXBlOiAyNyxcbiAgc3BhY2U6IDMyLFxuICBsZWZ0OiAzNyxcbiAgdXA6IDM4LFxuICByaWdodDogMzksXG4gIGRvd246IDQwLFxuICBkZWw6IDQ2LFxuICBkZWxldGU6IDQ2LFxuICBpbnM6IDQ1LFxuICBpbnNlcnQ6IDQ1LFxuICBob21lOiAzNixcbiAgZW5kOiAzNSxcbiAgcGFnZXVwOiAzMyxcbiAgcGFnZWRvd246IDM0LFxuICBjYXBzbG9jazogMjAsXG4gICfih6onOiAyMCxcbiAgJywnOiAxODgsXG4gICcuJzogMTkwLFxuICAnLyc6IDE5MSxcbiAgJ2AnOiAxOTIsXG4gICctJzogaXNmZiA/IDE3MyA6IDE4OSxcbiAgJz0nOiBpc2ZmID8gNjEgOiAxODcsXG4gICc7JzogaXNmZiA/IDU5IDogMTg2LFxuICAnXFwnJzogMjIyLFxuICAnWyc6IDIxOSxcbiAgJ10nOiAyMjEsXG4gICdcXFxcJzogMjIwXG59OyAvLyBNb2RpZmllciBLZXlzXG5cbnZhciBfbW9kaWZpZXIgPSB7XG4gIC8vIHNoaWZ0S2V5XG4gICfih6cnOiAxNixcbiAgc2hpZnQ6IDE2LFxuICAvLyBhbHRLZXlcbiAgJ+KMpSc6IDE4LFxuICBhbHQ6IDE4LFxuICBvcHRpb246IDE4LFxuICAvLyBjdHJsS2V5XG4gICfijIMnOiAxNyxcbiAgY3RybDogMTcsXG4gIGNvbnRyb2w6IDE3LFxuICAvLyBtZXRhS2V5XG4gICfijJgnOiA5MSxcbiAgY21kOiA5MSxcbiAgY29tbWFuZDogOTFcbn07XG52YXIgbW9kaWZpZXJNYXAgPSB7XG4gIDE2OiAnc2hpZnRLZXknLFxuICAxODogJ2FsdEtleScsXG4gIDE3OiAnY3RybEtleScsXG4gIDkxOiAnbWV0YUtleScsXG4gIHNoaWZ0S2V5OiAxNixcbiAgY3RybEtleTogMTcsXG4gIGFsdEtleTogMTgsXG4gIG1ldGFLZXk6IDkxXG59O1xudmFyIF9tb2RzID0ge1xuICAxNjogZmFsc2UsXG4gIDE4OiBmYWxzZSxcbiAgMTc6IGZhbHNlLFxuICA5MTogZmFsc2Vcbn07XG52YXIgX2hhbmRsZXJzID0ge307IC8vIEYxfkYxMiBzcGVjaWFsIGtleVxuXG5mb3IgKHZhciBrID0gMTsgayA8IDIwOyBrKyspIHtcbiAgX2tleU1hcFtcImZcIi5jb25jYXQoayldID0gMTExICsgaztcbn1cblxudmFyIF9kb3duS2V5cyA9IFtdOyAvLyDorrDlvZXmkYHkuIvnmoTnu5HlrprplK5cblxudmFyIF9zY29wZSA9ICdhbGwnOyAvLyDpu5jorqTng63plK7ojIPlm7RcblxudmFyIGVsZW1lbnRIYXNCaW5kRXZlbnQgPSBbXTsgLy8g5bey57uR5a6a5LqL5Lu255qE6IqC54K56K6w5b2VXG4vLyDov5Tlm57plK7noIFcblxudmFyIGNvZGUgPSBmdW5jdGlvbiBjb2RlKHgpIHtcbiAgcmV0dXJuIF9rZXlNYXBbeC50b0xvd2VyQ2FzZSgpXSB8fCBfbW9kaWZpZXJbeC50b0xvd2VyQ2FzZSgpXSB8fCB4LnRvVXBwZXJDYXNlKCkuY2hhckNvZGVBdCgwKTtcbn07IC8vIOiuvue9ruiOt+WPluW9k+WJjeiMg+WbtO+8iOm7mOiupOS4uifmiYDmnIkn77yJXG5cblxuZnVuY3Rpb24gc2V0U2NvcGUoc2NvcGUpIHtcbiAgX3Njb3BlID0gc2NvcGUgfHwgJ2FsbCc7XG59IC8vIOiOt+WPluW9k+WJjeiMg+WbtFxuXG5cbmZ1bmN0aW9uIGdldFNjb3BlKCkge1xuICByZXR1cm4gX3Njb3BlIHx8ICdhbGwnO1xufSAvLyDojrflj5bmkYHkuIvnu5HlrprplK7nmoTplK7lgLxcblxuXG5mdW5jdGlvbiBnZXRQcmVzc2VkS2V5Q29kZXMoKSB7XG4gIHJldHVybiBfZG93bktleXMuc2xpY2UoMCk7XG59IC8vIOihqOWNleaOp+S7tuaOp+S7tuWIpOaWrSDov5Tlm54gQm9vbGVhblxuLy8gaG90a2V5IGlzIGVmZmVjdGl2ZSBvbmx5IHdoZW4gZmlsdGVyIHJldHVybiB0cnVlXG5cblxuZnVuY3Rpb24gZmlsdGVyKGV2ZW50KSB7XG4gIHZhciB0YXJnZXQgPSBldmVudC50YXJnZXQgfHwgZXZlbnQuc3JjRWxlbWVudDtcbiAgdmFyIHRhZ05hbWUgPSB0YXJnZXQudGFnTmFtZTtcbiAgdmFyIGZsYWcgPSB0cnVlOyAvLyBpZ25vcmU6IGlzQ29udGVudEVkaXRhYmxlID09PSAndHJ1ZScsIDxpbnB1dD4gYW5kIDx0ZXh0YXJlYT4gd2hlbiByZWFkT25seSBzdGF0ZSBpcyBmYWxzZSwgPHNlbGVjdD5cblxuICBpZiAodGFyZ2V0LmlzQ29udGVudEVkaXRhYmxlIHx8ICh0YWdOYW1lID09PSAnSU5QVVQnIHx8IHRhZ05hbWUgPT09ICdURVhUQVJFQScgfHwgdGFnTmFtZSA9PT0gJ1NFTEVDVCcpICYmICF0YXJnZXQucmVhZE9ubHkpIHtcbiAgICBmbGFnID0gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZmxhZztcbn0gLy8g5Yik5pat5pGB5LiL55qE6ZSu5piv5ZCm5Li65p+Q5Liq6ZSu77yM6L+U5ZuedHJ1ZeaIluiAhWZhbHNlXG5cblxuZnVuY3Rpb24gaXNQcmVzc2VkKGtleUNvZGUpIHtcbiAgaWYgKHR5cGVvZiBrZXlDb2RlID09PSAnc3RyaW5nJykge1xuICAgIGtleUNvZGUgPSBjb2RlKGtleUNvZGUpOyAvLyDovazmjaLmiJDplK7noIFcbiAgfVxuXG4gIHJldHVybiBfZG93bktleXMuaW5kZXhPZihrZXlDb2RlKSAhPT0gLTE7XG59IC8vIOW+queOr+WIoOmZpGhhbmRsZXJz5Lit55qE5omA5pyJIHNjb3BlKOiMg+WbtClcblxuXG5mdW5jdGlvbiBkZWxldGVTY29wZShzY29wZSwgbmV3U2NvcGUpIHtcbiAgdmFyIGhhbmRsZXJzO1xuICB2YXIgaTsgLy8g5rKh5pyJ5oyH5a6ac2NvcGXvvIzojrflj5ZzY29wZVxuXG4gIGlmICghc2NvcGUpIHNjb3BlID0gZ2V0U2NvcGUoKTtcblxuICBmb3IgKHZhciBrZXkgaW4gX2hhbmRsZXJzKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChfaGFuZGxlcnMsIGtleSkpIHtcbiAgICAgIGhhbmRsZXJzID0gX2hhbmRsZXJzW2tleV07XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBoYW5kbGVycy5sZW5ndGg7KSB7XG4gICAgICAgIGlmIChoYW5kbGVyc1tpXS5zY29wZSA9PT0gc2NvcGUpIGhhbmRsZXJzLnNwbGljZShpLCAxKTtlbHNlIGkrKztcbiAgICAgIH1cbiAgICB9XG4gIH0gLy8g5aaC5p6cc2NvcGXooqvliKDpmaTvvIzlsIZzY29wZemHjee9ruS4umFsbFxuXG5cbiAgaWYgKGdldFNjb3BlKCkgPT09IHNjb3BlKSBzZXRTY29wZShuZXdTY29wZSB8fCAnYWxsJyk7XG59IC8vIOa4hemZpOS/rumlsOmUrlxuXG5cbmZ1bmN0aW9uIGNsZWFyTW9kaWZpZXIoZXZlbnQpIHtcbiAgdmFyIGtleSA9IGV2ZW50LmtleUNvZGUgfHwgZXZlbnQud2hpY2ggfHwgZXZlbnQuY2hhckNvZGU7XG5cbiAgdmFyIGkgPSBfZG93bktleXMuaW5kZXhPZihrZXkpOyAvLyDku47liJfooajkuK3muIXpmaTmjInljovov4fnmoTplK5cblxuXG4gIGlmIChpID49IDApIHtcbiAgICBfZG93bktleXMuc3BsaWNlKGksIDEpO1xuICB9IC8vIOeJueauiuWkhOeQhiBjbW1hbmQg6ZSu77yM5ZyoIGNtbWFuZCDnu4TlkIjlv6vmjbfplK4ga2V5dXAg5Y+q5omn6KGM5LiA5qyh55qE6Zeu6aKYXG5cblxuICBpZiAoZXZlbnQua2V5ICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnbWV0YScpIHtcbiAgICBfZG93bktleXMuc3BsaWNlKDAsIF9kb3duS2V5cy5sZW5ndGgpO1xuICB9IC8vIOS/rumlsOmUriBzaGlmdEtleSBhbHRLZXkgY3RybEtleSAoY29tbWFuZHx8bWV0YUtleSkg5riF6ZmkXG5cblxuICBpZiAoa2V5ID09PSA5MyB8fCBrZXkgPT09IDIyNCkga2V5ID0gOTE7XG5cbiAgaWYgKGtleSBpbiBfbW9kcykge1xuICAgIF9tb2RzW2tleV0gPSBmYWxzZTsgLy8g5bCG5L+u6aWw6ZSu6YeN572u5Li6ZmFsc2VcblxuICAgIGZvciAodmFyIGsgaW4gX21vZGlmaWVyKSB7XG4gICAgICBpZiAoX21vZGlmaWVyW2tdID09PSBrZXkpIGhvdGtleXNba10gPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdW5iaW5kKGtleXNJbmZvKSB7XG4gIC8vIHVuYmluZCgpLCB1bmJpbmQgYWxsIGtleXNcbiAgaWYgKCFrZXlzSW5mbykge1xuICAgIE9iamVjdC5rZXlzKF9oYW5kbGVycykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICByZXR1cm4gZGVsZXRlIF9oYW5kbGVyc1trZXldO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoa2V5c0luZm8pKSB7XG4gICAgLy8gc3VwcG9ydCBsaWtlIDogdW5iaW5kKFt7a2V5OiAnY3RybCthJywgc2NvcGU6ICdzMSd9LCB7a2V5OiAnY3RybC1hJywgc2NvcGU6ICdzMicsIHNwbGl0S2V5OiAnLSd9XSlcbiAgICBrZXlzSW5mby5mb3JFYWNoKGZ1bmN0aW9uIChpbmZvKSB7XG4gICAgICBpZiAoaW5mby5rZXkpIGVhY2hVbmJpbmQoaW5mbyk7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGtleXNJbmZvID09PSAnb2JqZWN0Jykge1xuICAgIC8vIHN1cHBvcnQgbGlrZSB1bmJpbmQoe2tleTogJ2N0cmwrYSwgY3RybCtiJywgc2NvcGU6J2FiYyd9KVxuICAgIGlmIChrZXlzSW5mby5rZXkpIGVhY2hVbmJpbmQoa2V5c0luZm8pO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBrZXlzSW5mbyA9PT0gJ3N0cmluZycpIHtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICAvLyBzdXBwb3J0IG9sZCBtZXRob2RcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgdmFyIHNjb3BlID0gYXJnc1swXSxcbiAgICAgICAgbWV0aG9kID0gYXJnc1sxXTtcblxuICAgIGlmICh0eXBlb2Ygc2NvcGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG1ldGhvZCA9IHNjb3BlO1xuICAgICAgc2NvcGUgPSAnJztcbiAgICB9XG5cbiAgICBlYWNoVW5iaW5kKHtcbiAgICAgIGtleToga2V5c0luZm8sXG4gICAgICBzY29wZTogc2NvcGUsXG4gICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgIHNwbGl0S2V5OiAnKydcbiAgICB9KTtcbiAgfVxufSAvLyDop6PpmaTnu5Hlrprmn5DkuKrojIPlm7TnmoTlv6vmjbfplK5cblxuXG52YXIgZWFjaFVuYmluZCA9IGZ1bmN0aW9uIGVhY2hVbmJpbmQoX3JlZikge1xuICB2YXIga2V5ID0gX3JlZi5rZXksXG4gICAgICBzY29wZSA9IF9yZWYuc2NvcGUsXG4gICAgICBtZXRob2QgPSBfcmVmLm1ldGhvZCxcbiAgICAgIF9yZWYkc3BsaXRLZXkgPSBfcmVmLnNwbGl0S2V5LFxuICAgICAgc3BsaXRLZXkgPSBfcmVmJHNwbGl0S2V5ID09PSB2b2lkIDAgPyAnKycgOiBfcmVmJHNwbGl0S2V5O1xuICB2YXIgbXVsdGlwbGVLZXlzID0gZ2V0S2V5cyhrZXkpO1xuICBtdWx0aXBsZUtleXMuZm9yRWFjaChmdW5jdGlvbiAob3JpZ2luS2V5KSB7XG4gICAgdmFyIHVuYmluZEtleXMgPSBvcmlnaW5LZXkuc3BsaXQoc3BsaXRLZXkpO1xuICAgIHZhciBsZW4gPSB1bmJpbmRLZXlzLmxlbmd0aDtcbiAgICB2YXIgbGFzdEtleSA9IHVuYmluZEtleXNbbGVuIC0gMV07XG4gICAgdmFyIGtleUNvZGUgPSBsYXN0S2V5ID09PSAnKicgPyAnKicgOiBjb2RlKGxhc3RLZXkpO1xuICAgIGlmICghX2hhbmRsZXJzW2tleUNvZGVdKSByZXR1cm47IC8vIOWIpOaWreaYr+WQpuS8oOWFpeiMg+WbtO+8jOayoeacieWwseiOt+WPluiMg+WbtFxuXG4gICAgaWYgKCFzY29wZSkgc2NvcGUgPSBnZXRTY29wZSgpO1xuICAgIHZhciBtb2RzID0gbGVuID4gMSA/IGdldE1vZHMoX21vZGlmaWVyLCB1bmJpbmRLZXlzKSA6IFtdO1xuICAgIF9oYW5kbGVyc1trZXlDb2RlXSA9IF9oYW5kbGVyc1trZXlDb2RlXS5tYXAoZnVuY3Rpb24gKHJlY29yZCkge1xuICAgICAgLy8g6YCa6L+H5Ye95pWw5Yik5pat77yM5piv5ZCm6Kej6Zmk57uR5a6a77yM5Ye95pWw55u4562J55u05o6l6L+U5ZueXG4gICAgICB2YXIgaXNNYXRjaGluZ01ldGhvZCA9IG1ldGhvZCA/IHJlY29yZC5tZXRob2QgPT09IG1ldGhvZCA6IHRydWU7XG5cbiAgICAgIGlmIChpc01hdGNoaW5nTWV0aG9kICYmIHJlY29yZC5zY29wZSA9PT0gc2NvcGUgJiYgY29tcGFyZUFycmF5KHJlY29yZC5tb2RzLCBtb2RzKSkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWNvcmQ7XG4gICAgfSk7XG4gIH0pO1xufTsgLy8g5a+555uR5ZCs5a+55bqU5b+r5o236ZSu55qE5Zue6LCD5Ye95pWw6L+b6KGM5aSE55CGXG5cblxuZnVuY3Rpb24gZXZlbnRIYW5kbGVyKGV2ZW50LCBoYW5kbGVyLCBzY29wZSkge1xuICB2YXIgbW9kaWZpZXJzTWF0Y2g7IC8vIOeci+Wug+aYr+WQpuWcqOW9k+WJjeiMg+WbtFxuXG4gIGlmIChoYW5kbGVyLnNjb3BlID09PSBzY29wZSB8fCBoYW5kbGVyLnNjb3BlID09PSAnYWxsJykge1xuICAgIC8vIOajgOafpeaYr+WQpuWMuemFjeS/rumlsOespu+8iOWmguaenOaciei/lOWbnnRydWXvvIlcbiAgICBtb2RpZmllcnNNYXRjaCA9IGhhbmRsZXIubW9kcy5sZW5ndGggPiAwO1xuXG4gICAgZm9yICh2YXIgeSBpbiBfbW9kcykge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChfbW9kcywgeSkpIHtcbiAgICAgICAgaWYgKCFfbW9kc1t5XSAmJiBoYW5kbGVyLm1vZHMuaW5kZXhPZigreSkgPiAtMSB8fCBfbW9kc1t5XSAmJiBoYW5kbGVyLm1vZHMuaW5kZXhPZigreSkgPT09IC0xKSB7XG4gICAgICAgICAgbW9kaWZpZXJzTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8g6LCD55So5aSE55CG56iL5bqP77yM5aaC5p6c5piv5L+u6aWw6ZSu5LiN5YGa5aSE55CGXG5cblxuICAgIGlmIChoYW5kbGVyLm1vZHMubGVuZ3RoID09PSAwICYmICFfbW9kc1sxNl0gJiYgIV9tb2RzWzE4XSAmJiAhX21vZHNbMTddICYmICFfbW9kc1s5MV0gfHwgbW9kaWZpZXJzTWF0Y2ggfHwgaGFuZGxlci5zaG9ydGN1dCA9PT0gJyonKSB7XG4gICAgICBpZiAoaGFuZGxlci5tZXRob2QoZXZlbnQsIGhhbmRsZXIpID09PSBmYWxzZSkge1xuICAgICAgICBpZiAoZXZlbnQucHJldmVudERlZmF1bHQpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ZWxzZSBldmVudC5yZXR1cm5WYWx1ZSA9IGZhbHNlO1xuICAgICAgICBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKGV2ZW50LmNhbmNlbEJ1YmJsZSkgZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0gLy8g5aSE55CGa2V5ZG93buS6i+S7tlxuXG5cbmZ1bmN0aW9uIGRpc3BhdGNoKGV2ZW50KSB7XG4gIHZhciBhc3RlcmlzayA9IF9oYW5kbGVyc1snKiddO1xuICB2YXIga2V5ID0gZXZlbnQua2V5Q29kZSB8fCBldmVudC53aGljaCB8fCBldmVudC5jaGFyQ29kZTsgLy8g6KGo5Y2V5o6n5Lu26L+H5rukIOm7mOiupOihqOWNleaOp+S7tuS4jeinpuWPkeW/q+aNt+mUrlxuXG4gIGlmICghaG90a2V5cy5maWx0ZXIuY2FsbCh0aGlzLCBldmVudCkpIHJldHVybjsgLy8gR2Vja28oRmlyZWZveCnnmoRjb21tYW5k6ZSu5YC8MjI077yM5ZyoV2Via2l0KENocm9tZSnkuK3kv53mjIHkuIDoh7RcbiAgLy8gV2Via2l05bem5Y+zIGNvbW1hbmQg6ZSu5YC85LiN5LiA5qC3XG5cbiAgaWYgKGtleSA9PT0gOTMgfHwga2V5ID09PSAyMjQpIGtleSA9IDkxO1xuICAvKipcbiAgICogQ29sbGVjdCBib3VuZCBrZXlzXG4gICAqIElmIGFuIElucHV0IE1ldGhvZCBFZGl0b3IgaXMgcHJvY2Vzc2luZyBrZXkgaW5wdXQgYW5kIHRoZSBldmVudCBpcyBrZXlkb3duLCByZXR1cm4gMjI5LlxuICAgKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNTA0MzkzNC9pcy1pdC1vay10by1pZ25vcmUta2V5ZG93bi1ldmVudHMtd2l0aC1rZXljb2RlLTIyOVxuICAgKiBodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctZG9tLzIwMTBKdWxTZXAvYXR0LTAxODIva2V5Q29kZS1zcGVjLmh0bWxcbiAgICovXG5cbiAgaWYgKF9kb3duS2V5cy5pbmRleE9mKGtleSkgPT09IC0xICYmIGtleSAhPT0gMjI5KSBfZG93bktleXMucHVzaChrZXkpO1xuICAvKipcbiAgICogSmVzdCB0ZXN0IGNhc2VzIGFyZSByZXF1aXJlZC5cbiAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgKi9cblxuICBbJ2N0cmxLZXknLCAnYWx0S2V5JywgJ3NoaWZ0S2V5JywgJ21ldGFLZXknXS5mb3JFYWNoKGZ1bmN0aW9uIChrZXlOYW1lKSB7XG4gICAgdmFyIGtleU51bSA9IG1vZGlmaWVyTWFwW2tleU5hbWVdO1xuXG4gICAgaWYgKGV2ZW50W2tleU5hbWVdICYmIF9kb3duS2V5cy5pbmRleE9mKGtleU51bSkgPT09IC0xKSB7XG4gICAgICBfZG93bktleXMucHVzaChrZXlOdW0pO1xuICAgIH0gZWxzZSBpZiAoIWV2ZW50W2tleU5hbWVdICYmIF9kb3duS2V5cy5pbmRleE9mKGtleU51bSkgPiAtMSkge1xuICAgICAgX2Rvd25LZXlzLnNwbGljZShfZG93bktleXMuaW5kZXhPZihrZXlOdW0pLCAxKTtcbiAgICB9IGVsc2UgaWYgKGtleU5hbWUgPT09ICdtZXRhS2V5JyAmJiBldmVudFtrZXlOYW1lXSAmJiBfZG93bktleXMubGVuZ3RoID09PSAzKSB7XG4gICAgICAvKipcbiAgICAgICAqIEZpeCBpZiBDb21tYW5kIGlzIHByZXNzZWQ6XG4gICAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgKi9cbiAgICAgIGlmICghKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQuYWx0S2V5KSkge1xuICAgICAgICBfZG93bktleXMgPSBfZG93bktleXMuc2xpY2UoX2Rvd25LZXlzLmluZGV4T2Yoa2V5TnVtKSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgLyoqXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICovXG5cbiAgaWYgKGtleSBpbiBfbW9kcykge1xuICAgIF9tb2RzW2tleV0gPSB0cnVlOyAvLyDlsIbnibnmrorlrZfnrKbnmoRrZXnms6jlhozliLAgaG90a2V5cyDkuIpcblxuICAgIGZvciAodmFyIGsgaW4gX21vZGlmaWVyKSB7XG4gICAgICBpZiAoX21vZGlmaWVyW2tdID09PSBrZXkpIGhvdGtleXNba10gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghYXN0ZXJpc2spIHJldHVybjtcbiAgfSAvLyDlsIYgbW9kaWZpZXJNYXAg6YeM6Z2i55qE5L+u6aWw6ZSu57uR5a6a5YiwIGV2ZW50IOS4rVxuXG5cbiAgZm9yICh2YXIgZSBpbiBfbW9kcykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoX21vZHMsIGUpKSB7XG4gICAgICBfbW9kc1tlXSA9IGV2ZW50W21vZGlmaWVyTWFwW2VdXTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9qYXl3Y2psb3ZlL2hvdGtleXMvcHVsbC8xMjlcbiAgICogVGhpcyBzb2x2ZXMgdGhlIGlzc3VlIGluIEZpcmVmb3ggb24gV2luZG93cyB3aGVyZSBob3RrZXlzIGNvcnJlc3BvbmRpbmcgdG8gc3BlY2lhbCBjaGFyYWN0ZXJzIHdvdWxkIG5vdCB0cmlnZ2VyLlxuICAgKiBBbiBleGFtcGxlIG9mIHRoaXMgaXMgY3RybCthbHQrbSBvbiBhIFN3ZWRpc2gga2V5Ym9hcmQgd2hpY2ggaXMgdXNlZCB0byB0eXBlIM68LlxuICAgKiBCcm93c2VyIHN1cHBvcnQ6IGh0dHBzOi8vY2FuaXVzZS5jb20vI2ZlYXQ9a2V5Ym9hcmRldmVudC1nZXRtb2RpZmllcnN0YXRlXG4gICAqL1xuXG5cbiAgaWYgKGV2ZW50LmdldE1vZGlmaWVyU3RhdGUgJiYgIShldmVudC5hbHRLZXkgJiYgIWV2ZW50LmN0cmxLZXkpICYmIGV2ZW50LmdldE1vZGlmaWVyU3RhdGUoJ0FsdEdyYXBoJykpIHtcbiAgICBpZiAoX2Rvd25LZXlzLmluZGV4T2YoMTcpID09PSAtMSkge1xuICAgICAgX2Rvd25LZXlzLnB1c2goMTcpO1xuICAgIH1cblxuICAgIGlmIChfZG93bktleXMuaW5kZXhPZigxOCkgPT09IC0xKSB7XG4gICAgICBfZG93bktleXMucHVzaCgxOCk7XG4gICAgfVxuXG4gICAgX21vZHNbMTddID0gdHJ1ZTtcbiAgICBfbW9kc1sxOF0gPSB0cnVlO1xuICB9IC8vIOiOt+WPluiMg+WbtCDpu5jorqTkuLogYGFsbGBcblxuXG4gIHZhciBzY29wZSA9IGdldFNjb3BlKCk7IC8vIOWvueS7u+S9leW/q+aNt+mUrumDvemcgOimgeWBmueahOWkhOeQhlxuXG4gIGlmIChhc3Rlcmlzaykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXN0ZXJpc2subGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhc3Rlcmlza1tpXS5zY29wZSA9PT0gc2NvcGUgJiYgKGV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyAmJiBhc3Rlcmlza1tpXS5rZXlkb3duIHx8IGV2ZW50LnR5cGUgPT09ICdrZXl1cCcgJiYgYXN0ZXJpc2tbaV0ua2V5dXApKSB7XG4gICAgICAgIGV2ZW50SGFuZGxlcihldmVudCwgYXN0ZXJpc2tbaV0sIHNjb3BlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gLy8ga2V5IOS4jeWcqCBfaGFuZGxlcnMg5Lit6L+U5ZueXG5cblxuICBpZiAoIShrZXkgaW4gX2hhbmRsZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAodmFyIF9pID0gMDsgX2kgPCBfaGFuZGxlcnNba2V5XS5sZW5ndGg7IF9pKyspIHtcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2tleWRvd24nICYmIF9oYW5kbGVyc1trZXldW19pXS5rZXlkb3duIHx8IGV2ZW50LnR5cGUgPT09ICdrZXl1cCcgJiYgX2hhbmRsZXJzW2tleV1bX2ldLmtleXVwKSB7XG4gICAgICBpZiAoX2hhbmRsZXJzW2tleV1bX2ldLmtleSkge1xuICAgICAgICB2YXIgcmVjb3JkID0gX2hhbmRsZXJzW2tleV1bX2ldO1xuICAgICAgICB2YXIgc3BsaXRLZXkgPSByZWNvcmQuc3BsaXRLZXk7XG4gICAgICAgIHZhciBrZXlTaG9ydGN1dCA9IHJlY29yZC5rZXkuc3BsaXQoc3BsaXRLZXkpO1xuICAgICAgICB2YXIgX2Rvd25LZXlzQ3VycmVudCA9IFtdOyAvLyDorrDlvZXlvZPliY3mjInplK7plK7lgLxcblxuICAgICAgICBmb3IgKHZhciBhID0gMDsgYSA8IGtleVNob3J0Y3V0Lmxlbmd0aDsgYSsrKSB7XG4gICAgICAgICAgX2Rvd25LZXlzQ3VycmVudC5wdXNoKGNvZGUoa2V5U2hvcnRjdXRbYV0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfZG93bktleXNDdXJyZW50LnNvcnQoKS5qb2luKCcnKSA9PT0gX2Rvd25LZXlzLnNvcnQoKS5qb2luKCcnKSkge1xuICAgICAgICAgIC8vIOaJvuWIsOWkhOeQhuWGheWuuVxuICAgICAgICAgIGV2ZW50SGFuZGxlcihldmVudCwgcmVjb3JkLCBzY29wZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn0gLy8g5Yik5patIGVsZW1lbnQg5piv5ZCm5bey57uP57uR5a6a5LqL5Lu2XG5cblxuZnVuY3Rpb24gaXNFbGVtZW50QmluZChlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50SGFzQmluZEV2ZW50LmluZGV4T2YoZWxlbWVudCkgPiAtMTtcbn1cblxuZnVuY3Rpb24gaG90a2V5cyhrZXksIG9wdGlvbiwgbWV0aG9kKSB7XG4gIF9kb3duS2V5cyA9IFtdO1xuICB2YXIga2V5cyA9IGdldEtleXMoa2V5KTsgLy8g6ZyA6KaB5aSE55CG55qE5b+r5o236ZSu5YiX6KGoXG5cbiAgdmFyIG1vZHMgPSBbXTtcbiAgdmFyIHNjb3BlID0gJ2FsbCc7IC8vIHNjb3Bl6buY6K6k5Li6YWxs77yM5omA5pyJ6IyD5Zu06YO95pyJ5pWIXG5cbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudDsgLy8g5b+r5o236ZSu5LqL5Lu257uR5a6a6IqC54K5XG5cbiAgdmFyIGkgPSAwO1xuICB2YXIga2V5dXAgPSBmYWxzZTtcbiAgdmFyIGtleWRvd24gPSB0cnVlO1xuICB2YXIgc3BsaXRLZXkgPSAnKyc7IC8vIOWvueS4uuiuvuWumuiMg+WbtOeahOWIpOaWrVxuXG4gIGlmIChtZXRob2QgPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgbWV0aG9kID0gb3B0aW9uO1xuICB9XG5cbiAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvcHRpb24pID09PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgIGlmIChvcHRpb24uc2NvcGUpIHNjb3BlID0gb3B0aW9uLnNjb3BlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICBpZiAob3B0aW9uLmVsZW1lbnQpIGVsZW1lbnQgPSBvcHRpb24uZWxlbWVudDsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gICAgaWYgKG9wdGlvbi5rZXl1cCkga2V5dXAgPSBvcHRpb24ua2V5dXA7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICAgIGlmIChvcHRpb24ua2V5ZG93biAhPT0gdW5kZWZpbmVkKSBrZXlkb3duID0gb3B0aW9uLmtleWRvd247IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9uLnNwbGl0S2V5ID09PSAnc3RyaW5nJykgc3BsaXRLZXkgPSBvcHRpb24uc3BsaXRLZXk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJykgc2NvcGUgPSBvcHRpb247IC8vIOWvueS6juavj+S4quW/q+aNt+mUrui/m+ihjOWkhOeQhlxuXG4gIGZvciAoOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGtleSA9IGtleXNbaV0uc3BsaXQoc3BsaXRLZXkpOyAvLyDmjInplK7liJfooahcblxuICAgIG1vZHMgPSBbXTsgLy8g5aaC5p6c5piv57uE5ZCI5b+r5o236ZSu5Y+W5b6X57uE5ZCI5b+r5o236ZSuXG5cbiAgICBpZiAoa2V5Lmxlbmd0aCA+IDEpIG1vZHMgPSBnZXRNb2RzKF9tb2RpZmllciwga2V5KTsgLy8g5bCG6Z2e5L+u6aWw6ZSu6L2s5YyW5Li66ZSu56CBXG5cbiAgICBrZXkgPSBrZXlba2V5Lmxlbmd0aCAtIDFdO1xuICAgIGtleSA9IGtleSA9PT0gJyonID8gJyonIDogY29kZShrZXkpOyAvLyAq6KGo56S65Yy56YWN5omA5pyJ5b+r5o236ZSuXG4gICAgLy8g5Yik5pata2V55piv5ZCm5ZyoX2hhbmRsZXJz5Lit77yM5LiN5Zyo5bCx6LWL5LiA5Liq56m65pWw57uEXG5cbiAgICBpZiAoIShrZXkgaW4gX2hhbmRsZXJzKSkgX2hhbmRsZXJzW2tleV0gPSBbXTtcblxuICAgIF9oYW5kbGVyc1trZXldLnB1c2goe1xuICAgICAga2V5dXA6IGtleXVwLFxuICAgICAga2V5ZG93bjoga2V5ZG93bixcbiAgICAgIHNjb3BlOiBzY29wZSxcbiAgICAgIG1vZHM6IG1vZHMsXG4gICAgICBzaG9ydGN1dDoga2V5c1tpXSxcbiAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAga2V5OiBrZXlzW2ldLFxuICAgICAgc3BsaXRLZXk6IHNwbGl0S2V5XG4gICAgfSk7XG4gIH0gLy8g5Zyo5YWo5bGAZG9jdW1lbnTkuIrorr7nva7lv6vmjbfplK5cblxuXG4gIGlmICh0eXBlb2YgZWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgIWlzRWxlbWVudEJpbmQoZWxlbWVudCkgJiYgd2luZG93KSB7XG4gICAgZWxlbWVudEhhc0JpbmRFdmVudC5wdXNoKGVsZW1lbnQpO1xuICAgIGFkZEV2ZW50KGVsZW1lbnQsICdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGRpc3BhdGNoKGUpO1xuICAgIH0pO1xuICAgIGFkZEV2ZW50KHdpbmRvdywgJ2ZvY3VzJywgZnVuY3Rpb24gKCkge1xuICAgICAgX2Rvd25LZXlzID0gW107XG4gICAgfSk7XG4gICAgYWRkRXZlbnQoZWxlbWVudCwgJ2tleXVwJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGRpc3BhdGNoKGUpO1xuICAgICAgY2xlYXJNb2RpZmllcihlKTtcbiAgICB9KTtcbiAgfVxufVxuXG52YXIgX2FwaSA9IHtcbiAgc2V0U2NvcGU6IHNldFNjb3BlLFxuICBnZXRTY29wZTogZ2V0U2NvcGUsXG4gIGRlbGV0ZVNjb3BlOiBkZWxldGVTY29wZSxcbiAgZ2V0UHJlc3NlZEtleUNvZGVzOiBnZXRQcmVzc2VkS2V5Q29kZXMsXG4gIGlzUHJlc3NlZDogaXNQcmVzc2VkLFxuICBmaWx0ZXI6IGZpbHRlcixcbiAgdW5iaW5kOiB1bmJpbmRcbn07XG5cbmZvciAodmFyIGEgaW4gX2FwaSkge1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKF9hcGksIGEpKSB7XG4gICAgaG90a2V5c1thXSA9IF9hcGlbYV07XG4gIH1cbn1cblxuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gIHZhciBfaG90a2V5cyA9IHdpbmRvdy5ob3RrZXlzO1xuXG4gIGhvdGtleXMubm9Db25mbGljdCA9IGZ1bmN0aW9uIChkZWVwKSB7XG4gICAgaWYgKGRlZXAgJiYgd2luZG93LmhvdGtleXMgPT09IGhvdGtleXMpIHtcbiAgICAgIHdpbmRvdy5ob3RrZXlzID0gX2hvdGtleXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhvdGtleXM7XG4gIH07XG5cbiAgd2luZG93LmhvdGtleXMgPSBob3RrZXlzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBob3RrZXlzO1xuIiwiaW1wb3J0IGhvdGtleXMgZnJvbSAnaG90a2V5cy1qcyc7XG5pbXBvcnQgeyB1c2VSZWYsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5cbmZ1bmN0aW9uIHVzZUlzSG90a2V5UHJlc3NlZCgpIHtcbiAgICByZXR1cm4gaG90a2V5cy5pc1ByZXNzZWQ7XG59XG5cbmZ1bmN0aW9uIHVzZUhvdGtleXMoa2V5cywgY2FsbGJhY2ssIG9wdGlvbnMsIGRlcHMpIHtcbiAgICBpZiAob3B0aW9ucyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGRlcHMgPSBvcHRpb25zO1xuICAgICAgICBvcHRpb25zID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCB7IGVuYWJsZU9uVGFncywgZmlsdGVyIH0gPSBvcHRpb25zIHx8IHt9O1xuICAgIGNvbnN0IHJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBtZW1vaXNlZENhbGxiYWNrID0gdXNlQ2FsbGJhY2soKGtleWJvYXJkRXZlbnQsIGhvdGtleXNFdmVudCkgPT4ge1xuICAgICAgICBpZiAocmVmLmN1cnJlbnQgPT09IG51bGwgfHwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gcmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKGtleWJvYXJkRXZlbnQsIGhvdGtleXNFdmVudCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSwgZGVwcyA/IFtyZWYsIC4uLmRlcHNdIDogW3JlZl0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZW5hYmxlT25UYWdzKSB7XG4gICAgICAgICAgICBob3RrZXlzLmZpbHRlciA9ICh7IHRhcmdldCwgc3JjRWxlbWVudCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFRhZ05hbWUgPSAodGFyZ2V0ICYmIHRhcmdldC50YWdOYW1lKSB8fCAoc3JjRWxlbWVudCAmJiBzcmNFbGVtZW50LnRhZ05hbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuKHRhcmdldFRhZ05hbWUgJiYgZW5hYmxlT25UYWdzICYmIGVuYWJsZU9uVGFncy5pbmNsdWRlcyh0YXJnZXRUYWdOYW1lKSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXIpXG4gICAgICAgICAgICBob3RrZXlzLmZpbHRlciA9IGZpbHRlcjtcbiAgICAgICAgaG90a2V5cyhrZXlzLCBvcHRpb25zIHx8IHt9LCBtZW1vaXNlZENhbGxiYWNrKTtcbiAgICAgICAgcmV0dXJuICgpID0+IGhvdGtleXMudW5iaW5kKGtleXMsIG1lbW9pc2VkQ2FsbGJhY2spO1xuICAgIH0sIFttZW1vaXNlZENhbGxiYWNrLCBvcHRpb25zLCBlbmFibGVPblRhZ3MsIGZpbHRlciwga2V5c10pO1xuICAgIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCB7IHVzZUhvdGtleXMsIHVzZUlzSG90a2V5UHJlc3NlZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwXG4iXSwic291cmNlUm9vdCI6IiJ9
12
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicmVhY3RcIiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY2xhc3NjYXQvc3JjL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb24vaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uTGluay9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MaXN0Vmlldy9MaXN0Vmlld0l0ZW0ubW9kdWxlLmNzcz85YTRlIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0J1dHRvbi9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db2xvclN3YXRjaC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Nb2RhbC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MYWJlbC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uL0J1dHRvbi50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uL0J1dHRvbi5tb2R1bGUuY3NzP2NkNDYiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uTGluay9CdXR0b25MaW5rLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9CdXR0b25MaW5rL0J1dHRvbkxpbmsubW9kdWxlLmNzcz8wODQxIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NvbG9yUGlja2VyL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NvbG9yUGlja2VyL0NvbG9yUGlja2VyLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db2xvclN3YXRjaC9Db2xvclN3YXRjaC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQ29sb3JTd2F0Y2gvQ29sb3JTd2F0Y2gubW9kdWxlLmNzcz8yM2ViIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NvbG9yUGlja2VyL0NvbG9yUGlja2VyLm1vZHVsZS5jc3M/ZTE4OCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db25maXJtYXRpb25Nb2RhbC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db25maXJtYXRpb25Nb2RhbC9Db25maXJtYXRpb25Nb2RhbC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTW9kYWwvTW9kYWwudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01vZGFsL01vZGFsLm1vZHVsZS5jc3M/MGVkZiIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db25maXJtYXRpb25Nb2RhbC9Db25maXJtYXRpb25Nb2RhbC5tb2R1bGUuY3NzPzI3YjMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvRmxvYXRpbmdQYW5lbC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9GbG9hdGluZ1BhbmVsL0Zsb2F0aW5nUGFuZWwudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0Zsb2F0aW5nUGFuZWwvRmxvYXRpbmdQYW5lbC5tb2R1bGUuY3NzPzdhYmYiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSWNvbi9JY29uLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9JY29uL0ljb24ubW9kdWxlLmNzcz85YjkzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb25CdXR0b24vaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSWNvbkJ1dHRvbi9JY29uQnV0dG9uLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9JY29uQnV0dG9uL0ljb25CdXR0b24ubW9kdWxlLmNzcz9kMjhkIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb25CdXR0b25MaW5rL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb25CdXR0b25MaW5rL0ljb25CdXR0b25MaW5rLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9JY29uQnV0dG9uTGluay9JY29uQnV0dG9uTGluay5tb2R1bGUuY3NzP2NjMzciLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSW1hZ2UvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSW1hZ2UvSW1hZ2UudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ltYWdlL0ltYWdlLm1vZHVsZS5jc3M/OTVhNyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MaXN0Vmlldy9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MaXN0Vmlldy9MaXN0Vmlldy50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTGlzdFZpZXcvTGlzdFZpZXcubW9kdWxlLmNzcz80NjRlIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0xpc3RWaWV3L0xpc3RWaWV3SXRlbS50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTGlzdFZpZXcvTGlzdFZpZXdMaW5rSXRlbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01lbnUvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTWVudS9NZW51LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L01lbnUubW9kdWxlLmNzcz8zNzA5Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01lbnUvTWVudUNvbnRhaW5lci50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTWVudS9NZW51Q29udGFpbmVyLm1vZHVsZS5jc3M/OTZkMiIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L01lbnVJdGVtLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L01lbnVJdGVtLm1vZHVsZS5jc3M/NTA0OSIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L01lbnVMaW5rSXRlbS50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTWVudS9NZW51TGlua0l0ZW0ubW9kdWxlLmNzcz8wNDI3Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL092ZXJsYXkvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvT3ZlcmxheS9PdmVybGF5LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9PdmVybGF5L092ZXJsYXkubW9kdWxlLmNzcz8yMWM1Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0xhYmVsL0xhYmVsLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MYWJlbC9MYWJlbC5tb2R1bGUuY3NzPzFmMTEiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVGV4dElucHV0L2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1RleHRJbnB1dC9UZXh0SW5wdXQudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1RleHRJbnB1dC9UZXh0SW5wdXQubW9kdWxlLmNzcz9jZDM2Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1RvYXN0L2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1RvYXN0L1RvYXN0LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Ub2FzdC9Ub2FzdC5tb2R1bGUuY3NzP2NmNjEiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVG9hc3QvVG9hc3RDb250YWluZXIudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1RvYXN0L1RvYXN0Q29udGFpbmVyLm1vZHVsZS5jc3M/OWEzNiIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9WaWRlby9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9WaWRlby9WaWRlby50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVmlkZW8vVmlkZW8ubW9kdWxlLmNzcz9lMjIzIiwid2VicGFjazovLy8uL3NyYy9ob29rcy9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvaG9va3MvdXNlVG9nZ2xlLnRzIiwid2VicGFjazovLy8uL3NyYy9ob29rcy91c2VPdXRzaWRlQ2xpY2sudHMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2hvdGtleXMtanMvZGlzdC9ob3RrZXlzLmVzbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtaG90a2V5cy1ob29rL2Rpc3Qtd2ViL2luZGV4LmpzIl0sIm5hbWVzIjpbImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJleHBvcnRzIiwibW9kdWxlIiwiaSIsImwiLCJtb2R1bGVzIiwiY2FsbCIsIm0iLCJjIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiciIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJ0IiwibW9kZSIsIl9fZXNNb2R1bGUiLCJucyIsImNyZWF0ZSIsImtleSIsImJpbmQiLCJuIiwib2JqZWN0IiwicHJvcGVydHkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwicmVxdWlyZSIsImlzQXJyYXkiLCJBcnJheSIsImNjIiwib2JqIiwib3V0IiwidG1wIiwiayIsImxlbmd0aCIsImRlZmF1bHQiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJkaXNhYmxlZCIsImludmVydGVkIiwicm91bmRlZCIsIm5vU2hhZG93Iiwibm9QYWRkaW5nIiwibm9Cb3JkZXIiLCJ0cmFuc3BhcmVudCIsInN0cmV0Y2hIb3Jpem9udGFsbHkiLCJzdHJldGNoVmVydGljYWxseSIsIm9mZnNldFNpZGVzIiwiYWxpZ24iLCJzaXplIiwidHlwZSIsImNvbnRhaW5lciIsImxlZnRPZmZzZXQiLCJpbmNsdWRlcyIsInJpZ2h0T2Zmc2V0Iiwicm9sZSIsImNvbnRlbnQiLCJDb21wb25lbnQiLCJwcm9wcyIsImNvbG9ycyIsIm9uU2VsZWN0Iiwic2VsZWN0ZWRDb2xvciIsImRpcmVjdGlvbiIsImNvbG9yUGlja2VyIiwibWFwIiwiY29sb3IiLCJDb2xvclN3YXRjaCIsImlzU2VsZWN0ZWQiLCJjb2xvclN3YXRjaCIsInNlbGVjdGVkIiwic3R5bGUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJoZXhDb2RlIiwic3JPbmx5IiwibGFiZWwiLCJDb25maXJtYXRpb25Nb2RhbCIsImhlYWRlciIsImlzT3BlbiIsImJ1dHRvbnNMZWZ0IiwiYnV0dG9uc1JpZ2h0Iiwib25DbG9zZSIsIk1vZGFsIiwibW9kYWxIZWFkZXIiLCJtb2RhbENvbnRlbnQiLCJtb2RhbEJ1dHRvbnNDb250YWluZXIiLCJtb2RhbEJ1dHRvbnMiLCJkaXNwbGF5TmFtZSIsImJ1dHRvbiIsInVzZUhvdGtleXMiLCJoYW5kbGVPdmVybGF5Q2xpY2siLCJ1c2VDYWxsYmFjayIsIm92ZXJsYXkiLCJtb2RhbCIsIm1vZGFsQnV0dG9uIiwiY29udGFpbmVyUmVmIiwibGF5b3V0IiwicGxhY2VtZW50IiwiaG9yaXpvbnRhbCIsInZlcnRpY2FsIiwicGFyZW50IiwiaG9yaXpvbnRhbFBsYWNlbWVudCIsInZlcnRpY2FsUGxhY2VtZW50IiwicmVmIiwiZml4ZWQiLCJzcmMiLCJhbHQiLCJpY29uIiwiY3Jvc3NPcmlnaW4iLCJ0b3BPZmZzZXQiLCJib3R0b21PZmZzZXQiLCJJY29uIiwiZW1wdHlJbWFnZSIsInNyY1dpZHRoIiwic3JjSGVpZ2h0IiwiYW5pbWF0aW9uIiwidXNlU3RhdGUiLCJpc0xvYWRlZCIsInNldElzTG9hZGVkIiwiaW1hZ2VSZWYiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJpbWFnZSIsIkltYWdlIiwib25sb2FkIiwiY3VycmVudCIsInNldEF0dHJpYnV0ZSIsImhhc092ZXJsYXkiLCJmYWRlSW4iLCJzY2FsZVVwIiwid2lkdGgiLCJoZWlnaHQiLCJsaXN0IiwiYWN0aXZlIiwibGlzdFZpZXdJdGVtIiwiQnV0dG9uIiwiTGlzdFZpZXdMaW5rSXRlbSIsImFzIiwiY2xhc3NjYXQiLCJzdHlsZXMiLCJkZWZhdWx0UHJvcHMiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJub2RlIiwiaXNSZXF1aXJlZCIsImVsZW1lbnRUeXBlIiwiYm9vbCIsIm9uZU9mIiwic3RyaW5nIiwiZnVuYyIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwiZW1wdHlGdW5jdGlvbiIsImVtcHR5RnVuY3Rpb25XaXRoUmVzZXQiLCJyZXNldFdhcm5pbmdDYWNoZSIsInNoaW0iLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJsb2NhdGlvbiIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImVyciIsIkVycm9yIiwiZ2V0U2hpbSIsIlJlYWN0UHJvcFR5cGVzIiwiYXJyYXkiLCJudW1iZXIiLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudCIsImluc3RhbmNlT2YiLCJvYmplY3RPZiIsIm9uZU9mVHlwZSIsInNoYXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsIm1lbnUiLCJvcGVuIiwibWVudUhlYWRlciIsImZvcndhcmRSZWYiLCJtZW51Q29udGFpbmVyIiwiaXNBY3RpdmUiLCJtZW51SXRlbSIsIm1lbnVMaW5rSXRlbSIsImlzRml4ZWQiLCJvbkNoYW5nZSIsInBsYWNlaG9sZGVyIiwiaW5wdXRSZWYiLCJhdXRvRm9jdXMiLCJoYW5kbGVDaGFuZ2UiLCJlIiwidGFyZ2V0IiwiTGFiZWwiLCJ0ZXh0SW5wdXQiLCJ1bmRlZmluZWQiLCJidXR0b25zIiwidG9hc3QiLCJ0b2FzdEltYWdlIiwidG9hc3RDb250ZW50IiwidG9hc3RCdXR0b25zIiwidG9hc3RDb250YWluZXIiLCJtdXRlZCIsImxvb3AiLCJhdXRvUGxheSIsInZpZGVvIiwicGxheXNJbmxpbmUiLCJpbml0aWFsVmFsdWUiLCJzZXRWYWx1ZSIsIm5ld1ZhbHVlIiwicHJldlZhbHVlIiwiY2FsbGJhY2siLCJoYW5kbGVDbGljayIsImV2ZW50IiwiY29udGFpbnMiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaXNmZiIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsInRvTG93ZXJDYXNlIiwiaW5kZXhPZiIsImFkZEV2ZW50IiwibWV0aG9kIiwiYXR0YWNoRXZlbnQiLCJjb25jYXQiLCJ3aW5kb3ciLCJnZXRNb2RzIiwibW9kaWZpZXIiLCJtb2RzIiwic2xpY2UiLCJnZXRLZXlzIiwia2V5cyIsInJlcGxhY2UiLCJzcGxpdCIsImluZGV4IiwibGFzdEluZGV4T2YiLCJzcGxpY2UiLCJfa2V5TWFwIiwiYmFja3NwYWNlIiwidGFiIiwiY2xlYXIiLCJlbnRlciIsInJldHVybiIsImVzYyIsImVzY2FwZSIsInNwYWNlIiwibGVmdCIsInVwIiwicmlnaHQiLCJkb3duIiwiZGVsIiwiZGVsZXRlIiwiaW5zIiwiaW5zZXJ0IiwiaG9tZSIsImVuZCIsInBhZ2V1cCIsInBhZ2Vkb3duIiwiY2Fwc2xvY2siLCInIiwiX21vZGlmaWVyIiwic2hpZnQiLCJvcHRpb24iLCJjdHJsIiwiY29udHJvbCIsImNtZCIsImNvbW1hbmQiLCJtb2RpZmllck1hcCIsIjE2IiwiMTgiLCIxNyIsIjkxIiwic2hpZnRLZXkiLCJjdHJsS2V5IiwiYWx0S2V5IiwibWV0YUtleSIsIl9tb2RzIiwiX2hhbmRsZXJzIiwiX2Rvd25LZXlzIiwiX3Njb3BlIiwiZWxlbWVudEhhc0JpbmRFdmVudCIsImNvZGUiLCJ4IiwidG9VcHBlckNhc2UiLCJjaGFyQ29kZUF0Iiwic2V0U2NvcGUiLCJzY29wZSIsImdldFNjb3BlIiwiZWFjaFVuYmluZCIsIl9yZWYiLCJfcmVmJHNwbGl0S2V5Iiwic3BsaXRLZXkiLCJmb3JFYWNoIiwib3JpZ2luS2V5IiwidW5iaW5kS2V5cyIsImxlbiIsImxhc3RLZXkiLCJrZXlDb2RlIiwicmVjb3JkIiwiYTEiLCJhMiIsImFycjEiLCJhcnIyIiwiaXNJbmRleCIsImNvbXBhcmVBcnJheSIsImV2ZW50SGFuZGxlciIsImhhbmRsZXIiLCJtb2RpZmllcnNNYXRjaCIsInkiLCJzaG9ydGN1dCIsInByZXZlbnREZWZhdWx0IiwicmV0dXJuVmFsdWUiLCJzdG9wUHJvcGFnYXRpb24iLCJjYW5jZWxCdWJibGUiLCJkaXNwYXRjaCIsImFzdGVyaXNrIiwid2hpY2giLCJjaGFyQ29kZSIsImhvdGtleXMiLCJmaWx0ZXIiLCJ0aGlzIiwicHVzaCIsImtleU5hbWUiLCJrZXlOdW0iLCJnZXRNb2RpZmllclN0YXRlIiwia2V5ZG93biIsImtleXVwIiwiX2kiLCJrZXlTaG9ydGN1dCIsIl9kb3duS2V5c0N1cnJlbnQiLCJhIiwic29ydCIsImpvaW4iLCJ0b1N0cmluZyIsImlzRWxlbWVudEJpbmQiLCJjbGVhck1vZGlmaWVyIiwiX2FwaSIsImRlbGV0ZVNjb3BlIiwibmV3U2NvcGUiLCJoYW5kbGVycyIsImdldFByZXNzZWRLZXlDb2RlcyIsImlzUHJlc3NlZCIsInNyY0VsZW1lbnQiLCJ0YWdOYW1lIiwiZmxhZyIsImlzQ29udGVudEVkaXRhYmxlIiwicmVhZE9ubHkiLCJ1bmJpbmQiLCJrZXlzSW5mbyIsImluZm8iLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIl9rZXkiLCJfaG90a2V5cyIsIm5vQ29uZmxpY3QiLCJkZWVwIiwidXNlSXNIb3RrZXlQcmVzc2VkIiwib3B0aW9ucyIsImRlcHMiLCJlbmFibGVPblRhZ3MiLCJtZW1vaXNlZENhbGxiYWNrIiwia2V5Ym9hcmRFdmVudCIsImhvdGtleXNFdmVudCIsImFjdGl2ZUVsZW1lbnQiLCJ0YXJnZXRUYWdOYW1lIiwiQm9vbGVhbiJdLCJtYXBwaW5ncyI6IjZEQUNFLElBQUlBLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FBT0YsRUFBaUJFLEdBQVVDLFFBR25DLElBQUlDLEVBQVNKLEVBQWlCRSxHQUFZLENBQ3pDRyxFQUFHSCxFQUNISSxHQUFHLEVBQ0hILFFBQVMsSUFVVixPQU5BSSxFQUFRTCxHQUFVTSxLQUFLSixFQUFPRCxRQUFTQyxFQUFRQSxFQUFPRCxRQUFTRixHQUcvREcsRUFBT0UsR0FBSSxFQUdKRixFQUFPRCxRQTBEZixPQXJEQUYsRUFBb0JRLEVBQUlGLEVBR3hCTixFQUFvQlMsRUFBSVYsRUFHeEJDLEVBQW9CVSxFQUFJLFNBQVNSLEVBQVNTLEVBQU1DLEdBQzNDWixFQUFvQmEsRUFBRVgsRUFBU1MsSUFDbENHLE9BQU9DLGVBQWViLEVBQVNTLEVBQU0sQ0FBRUssWUFBWSxFQUFNQyxJQUFLTCxLQUtoRVosRUFBb0JrQixFQUFJLFNBQVNoQixHQUNYLG9CQUFYaUIsUUFBMEJBLE9BQU9DLGFBQzFDTixPQUFPQyxlQUFlYixFQUFTaUIsT0FBT0MsWUFBYSxDQUFFQyxNQUFPLFdBRTdEUCxPQUFPQyxlQUFlYixFQUFTLGFBQWMsQ0FBRW1CLE9BQU8sS0FRdkRyQixFQUFvQnNCLEVBQUksU0FBU0QsRUFBT0UsR0FFdkMsR0FEVSxFQUFQQSxJQUFVRixFQUFRckIsRUFBb0JxQixJQUMvQixFQUFQRSxFQUFVLE9BQU9GLEVBQ3BCLEdBQVcsRUFBUEUsR0FBOEIsaUJBQVZGLEdBQXNCQSxHQUFTQSxFQUFNRyxXQUFZLE9BQU9ILEVBQ2hGLElBQUlJLEVBQUtYLE9BQU9ZLE9B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N0I3RixPQUFPNkYsUUFBVW9DLEdBR1pwQyxHQUdUN0YsT0FBTzZGLFFBQVVBLEVBR0osUSxPQ3hpQmYsU0FBU3VDLElBQ0wsT0FBTyxFQUFRaEIsVUFHbkIsU0FBUzdQLEVBQVcrSSxFQUFNdEIsRUFBVXFKLEVBQVNDLEdBQ3JDRCxhQUFtQjNVLFFBQ25CNFUsRUFBT0QsRUFDUEEsT0FBVXJLLEdBRWQsTUFBTSxhQUFFdUssRUFBWSxPQUFFekMsR0FBV3VDLEdBQVcsR0FDdENoUSxFQUFNLGlCQUFPLE1BQ2JtUSxFQUFtQixzQkFBWSxDQUFDQyxFQUFlQyxLQUM3QixPQUFoQnJRLEVBQUlzQixTQUFvQnlGLFNBQVN1SixnQkFBa0J0USxFQUFJc0IsV0FDdkRxRixFQUFTeUosRUFBZUMsSUFDakIsR0FHWkosRUFBTyxDQUFDalEsS0FBUWlRLEdBQVEsQ0FBQ2pRLElBYzVCLE9BYkEsb0JBQVUsS0FDRmdRLEdBQVdBLEVBQVFFLGVBQ25CLEVBQVF6QyxPQUFTLEVBQUdqSSxTQUFRd0osaUJBRXhCLE1BQU11QixFQUFpQi9LLEdBQVVBLEVBQU95SixTQUFhRCxHQUFjQSxFQUFXQyxRQUM5RSxPQUFPdUIsUUFBUUQsR0FBaUJMLEdBQWdCQSxFQUFhblQsU0FBU3dULE1BRzFFOUMsSUFDQSxFQUFRQSxPQUFTQSxHQUNyQixFQUFReEYsRUFBTStILEdBQVcsR0FBSUcsR0FDdEIsSUFBTSxFQUFRZCxPQUFPcEgsRUFBTWtJLElBQ25DLENBQUNBLEVBQWtCSCxFQUFTRSxFQUFjekMsRUFBUXhGLElBQzlDakkiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMTApO1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwidmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNjKG9iaikge1xuICB2YXIgb3V0ID0gXCJcIlxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiBvYmogPT09IFwibnVtYmVyXCIpIHJldHVybiBvYmogfHwgXCJcIlxuXG4gIGlmIChpc0FycmF5KG9iaikpXG4gICAgZm9yICh2YXIgayA9IDAsIHRtcDsgayA8IG9iai5sZW5ndGg7IGsrKykge1xuICAgICAgaWYgKCh0bXAgPSBjYyhvYmpba10pKSAhPT0gXCJcIikge1xuICAgICAgICBvdXQgKz0gKG91dCAmJiBcIiBcIikgKyB0bXBcbiAgICAgIH1cbiAgICB9XG4gIGVsc2VcbiAgICBmb3IgKHZhciBrIGluIG9iaikge1xuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrKSAmJiBvYmpba10pIG91dCArPSAob3V0ICYmIFwiIFwiKSArIGtcbiAgICB9XG5cbiAgcmV0dXJuIG91dFxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBJY29uIH0gZnJvbSBcIi4vSWNvblwiO1xuIiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBCdXR0b25MaW5rIH0gZnJvbSBcIi4vQnV0dG9uTGlua1wiO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImxpc3RWaWV3SXRlbVwiOlwiXzJMZ2pxQUJ3akh0cGJHemtRUWtxaVFcIn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBCdXR0b24gfSBmcm9tIFwiLi9CdXR0b25cIjtcbiIsImV4cG9ydCB7IGRlZmF1bHQgYXMgQ29sb3JTd2F0Y2ggfSBmcm9tIFwiLi9Db2xvclN3YXRjaFwiO1xuIiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBNb2RhbCB9IGZyb20gXCIuL01vZGFsXCI7XG4iLCJleHBvcnQgeyBkZWZhdWx0IGFzIExhYmVsIH0gZnJvbSBcIi4vTGFiZWxcIjtcbiIsImV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvQnV0dG9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL0J1dHRvbkxpbmtcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvQ29sb3JQaWNrZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvQ29sb3JTd2F0Y2hcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvQ29uZmlybWF0aW9uTW9kYWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvRmxvYXRpbmdQYW5lbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9JY29uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL0ljb25CdXR0b25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvSWNvbkJ1dHRvbkxpbmtcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvSW1hZ2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvTGlzdFZpZXdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvTWVudVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9Nb2RhbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9PdmVybGF5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL0xhYmVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL1RleHRJbnB1dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9Ub2FzdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9WaWRlb1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vaG9va3NcIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9CdXR0b24ubW9kdWxlLmNzc1wiO1xuaW1wb3J0IHsgU2l6ZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuXG50eXBlIEJ1dHRvblByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgaW52ZXJ0ZWQ/OiBib29sZWFuO1xuICByb3VuZGVkPzogYm9vbGVhbjtcbiAgbm9TaGFkb3c/OiBib29sZWFuO1xuICBub1BhZGRpbmc/OiBib29sZWFuO1xuICBub0JvcmRlcj86IGJvb2xlYW47XG4gIHRyYW5zcGFyZW50PzogYm9vbGVhbjtcbiAgc3RyZXRjaEhvcml6b250YWxseT86IGJvb2xlYW47XG4gIHN0cmV0Y2hWZXJ0aWNhbGx5PzogYm9vbGVhbjtcbiAgb25DbGljaz86IChldmVudDogUmVhY3QuU3ludGhldGljRXZlbnQpID0+IHZvaWQ7XG4gIHNpemU/OiBTaXplLFxuICB0eXBlPzogXCJzdWJtaXRcIiB8IFwicmVzZXRcIiB8IFwiYnV0dG9uXCIsXG4gIGFsaWduPzogXCJsZWZ0XCIgfCBcImNlbnRlclwiLFxuICBvZmZzZXRTaWRlcz86IEFycmF5PFwibGVmdFwiIHwgXCJyaWdodFwiPixcbn1cblxuZnVuY3Rpb24gQnV0dG9uKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgb25DbGljayxcbiAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgaW52ZXJ0ZWQgPSBmYWxzZSxcbiAgcm91bmRlZCA9IGZhbHNlLFxuICBub1NoYWRvdyA9IGZhbHNlLFxuICBub1BhZGRpbmcgPSBmYWxzZSxcbiAgbm9Cb3JkZXIgPSBmYWxzZSxcbiAgdHJhbnNwYXJlbnQgPSBmYWxzZSxcbiAgc3RyZXRjaEhvcml6b250YWxseSA9IGZhbHNlLFxuICBzdHJldGNoVmVydGljYWxseSA9IGZhbHNlLFxuICBvZmZzZXRTaWRlcyA9IFtdLFxuICBhbGlnbiA9IFwiY2VudGVyXCIsXG4gIHNpemUgPSBcIm1lZGl1bVwiLFxuICB0eXBlLFxufTogQnV0dG9uUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgc3R5bGVzLmNvbnRhaW5lcixcbiAgICAgICAgc3R5bGVzW3NpemVdLFxuICAgICAgICBzdHlsZXNbYWxpZ25dLFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlcy5pbnZlcnRlZF06IGludmVydGVkLFxuICAgICAgICAgIFtzdHlsZXMucm91bmRlZF06IHJvdW5kZWQsXG4gICAgICAgICAgW3N0eWxlcy5ub1NoYWRvd106IG5vU2hhZG93LFxuICAgICAgICAgIFtzdHlsZXMubm9QYWRkaW5nXTogbm9QYWRkaW5nLFxuICAgICAgICAgIFtzdHlsZXMubm9Cb3JkZXJdOiBub0JvcmRlcixcbiAgICAgICAgICBbc3R5bGVzLnRyYW5zcGFyZW50XTogdHJhbnNwYXJlbnQsXG4gICAgICAgICAgW3N0eWxlcy5zdHJldGNoSG9yaXpvbnRhbGx5XTogc3RyZXRjaEhvcml6b250YWxseSxcbiAgICAgICAgICBbc3R5bGVzLnN0cmV0Y2hWZXJ0aWNhbGx5XTogc3RyZXRjaFZlcnRpY2FsbHksXG4gICAgICAgICAgW3N0eWxlcy5sZWZ0T2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcImxlZnRcIiksXG4gICAgICAgICAgW3N0eWxlcy5yaWdodE9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJyaWdodFwiKSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgXSl9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgdHlwZT17dHlwZX1cbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgID5cbiAgICAgIHt0eXBlb2YgY2hpbGRyZW4gIT09IFwic3RyaW5nXCIgJiYgQXJyYXkuaXNBcnJheShjaGlsZHJlbikgJiYgY2hpbGRyZW4ubGVuZ3RoICA/IChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5jb250ZW50fT57Y2hpbGRyZW59PC9kaXY+XG4gICAgICApIDogY2hpbGRyZW59XG4gICAgPC9idXR0b24+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbjtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcIk05X2VnRUM4bXN1MTM1b1BHVmRJZlwiLFwibGVmdFwiOlwiUlNSYlRnOFljNC1zOGs2cVVfdkNnXCIsXCJzbWFsbFwiOlwiXzFiTlFoYlp3TEE4RXJMbXdkUWl0SmVcIixcImxhcmdlXCI6XCJfMkR3TEZELTRnRHo5SEVBQWl3V0pQcVwiLFwiaW52ZXJ0ZWRcIjpcIl8zMUNmbVRVWXBFaDFoWnZjdFE5bEs0XCIsXCJyb3VuZGVkXCI6XCJfMmJxMzFxS0Q3QjZyNkNUQ09MM2RyV1wiLFwicmlnaHRPZmZzZXRcIjpcIl8yZVVDV1FNRVRPZ2lYdWliN1hmVGhaXCIsXCJsZWZ0T2Zmc2V0XCI6XCJHOG9fT01EVUZzRVExeXRVN29VWUdcIixcIm5vU2hhZG93XCI6XCJfMnZrbmhVRkFJR21qWHM3dGdrQUM3SVwiLFwibm9Cb3JkZXJcIjpcIl8ycDBHcGRtUEtJRkNVZXM1ODRZSGVWXCIsXCJ0cmFuc3BhcmVudFwiOlwiXzh2TWxTUkhfOUhvUkdKaDhTd2thXCIsXCJzdHJldGNoSG9yaXpvbnRhbGx5XCI6XCJuWjlyT1p3ekdYVkkzYXlSZ0EzUUNcIixcInN0cmV0Y2hWZXJ0aWNhbGx5XCI6XCJfMXk4aWZiOTVzcFRMV0dBbXNidzFSMlwiLFwibm9QYWRkaW5nXCI6XCJfM2NPNDlKRUxOS3RHeWFGeFJsc2h5T1wiLFwiY29udGVudFwiOlwibzhkN1lvVDgzdW1lUFBTRnpLMzFZXCJ9OyIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIFJlYWN0VHlwZSwgQW5jaG9ySFRNTEF0dHJpYnV0ZXMgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9CdXR0b25MaW5rLm1vZHVsZS5jc3NcIjtcbmltcG9ydCB7IFNpemUgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxudHlwZSBPZmZzZXRTaWRlID0gXCJsZWZ0XCIgfCBcInJpZ2h0XCI7XG5cbnR5cGUgQnV0dG9uTGlua1Byb3BzID0ge1xuICBhcz86IFJlYWN0VHlwZTtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBpbnZlcnRlZD86IGJvb2xlYW47XG4gIHJvdW5kZWQ/OiBib29sZWFuO1xuICB0cmFuc3BhcmVudD86IGJvb2xlYW47XG4gIG5vU2hhZG93PzogYm9vbGVhbjtcbiAgbm9QYWRkaW5nPzogYm9vbGVhbjtcbiAgbm9Cb3JkZXI/OiBib29sZWFuO1xuICBzdHJldGNoSG9yaXpvbnRhbGx5PzogYm9vbGVhbjtcbiAgc3RyZXRjaFZlcnRpY2FsbHk/OiBib29sZWFuO1xuICBzaXplPzogU2l6ZTtcbiAgb2Zmc2V0U2lkZXM/OiBBcnJheTxPZmZzZXRTaWRlPjtcbiAgYWxpZ24/OiBcImxlZnRcIiB8IFwiY2VudGVyXCI7XG59IHwgYW55O1xuXG5mdW5jdGlvbiBCdXR0b25MaW5rKHtcbiAgYXM6IENvbXBvbmVudCxcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgc2l6ZSxcbiAgaW52ZXJ0ZWQgPSBmYWxzZSxcbiAgcm91bmRlZCA9IGZhbHNlLFxuICB0cmFuc3BhcmVudCA9IGZhbHNlLFxuICBub1NoYWRvdyA9IGZhbHNlLFxuICBub1BhZGRpbmcgPSBmYWxzZSxcbiAgbm9Cb3JkZXIgPSBmYWxzZSxcbiAgc3RyZXRjaEhvcml6b250YWxseSA9IGZhbHNlLFxuICBzdHJldGNoVmVydGljYWxseSA9IGZhbHNlLFxuICBvZmZzZXRTaWRlcyA9IFtdLFxuICBhbGlnbiA9IFwiY2VudGVyXCIsXG4gIC4uLnByb3BzXG59OiBCdXR0b25MaW5rUHJvcHMpIHtcbiAgaWYgKHR5cGVvZiBDb21wb25lbnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBDb21wb25lbnQgPSBcImFcIjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvbXBvbmVudFxuICAgICAgZGF0YS10ZXN0aWQ9XCJidXR0b24tbGlua1wiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgc3R5bGVzLmNvbnRhaW5lcixcbiAgICAgICAgc3R5bGVzW3NpemVdLFxuICAgICAgICBzdHlsZXNbYWxpZ25dLFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlcy5pbnZlcnRlZF06IGludmVydGVkLFxuICAgICAgICAgIFtzdHlsZXMucm91bmRlZF06IHJvdW5kZWQsXG4gICAgICAgICAgW3N0eWxlcy5ub1NoYWRvd106IG5vU2hhZG93LFxuICAgICAgICAgIFtzdHlsZXMubm9QYWRkaW5nXTogbm9QYWRkaW5nLFxuICAgICAgICAgIFtzdHlsZXMubm9Cb3JkZXJdOiBub0JvcmRlcixcbiAgICAgICAgICBbc3R5bGVzLnRyYW5zcGFyZW50XTogdHJhbnNwYXJlbnQsXG4gICAgICAgICAgW3N0eWxlcy5zdHJldGNoSG9yaXpvbnRhbGx5XTogc3RyZXRjaEhvcml6b250YWxseSxcbiAgICAgICAgICBbc3R5bGVzLnN0cmV0Y2hWZXJ0aWNhbGx5XTogc3RyZXRjaFZlcnRpY2FsbHksXG4gICAgICAgICAgW3N0eWxlcy5sZWZ0T2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcImxlZnRcIiksXG4gICAgICAgICAgW3N0eWxlcy5yaWdodE9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJyaWdodFwiKSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgXSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge3R5cGVvZiBjaGlsZHJlbiAhPT0gXCJzdHJpbmdcIiAmJiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSAmJiBjaGlsZHJlbi5sZW5ndGggID8gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmNvbnRlbnR9PntjaGlsZHJlbn08L2Rpdj5cbiAgICAgICkgOiAoXG4gICAgICAgIGNoaWxkcmVuXG4gICAgICApfVxuICAgIDwvQ29tcG9uZW50PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBCdXR0b25MaW5rO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbnRhaW5lclwiOlwiXzNlVkJnbWtHNmhqVm9rbTVYeTRVTVFcIixcImxlZnRcIjpcIl8zRjZoTUVRa0pneXdVa3QxZndtVHN5XCIsXCJzbWFsbFwiOlwiXzhJOWZobnpiTXZDcmw1S1BqOWYwXCIsXCJtZWRpdW1cIjpcImNzajRQS1FnZFBCZUY3UmQ1Wi1XUVwiLFwibGFyZ2VcIjpcIl8zX1N3cW1EV09Hdjg3N2lIQUNuSnBDXCIsXCJpbnZlcnRlZFwiOlwiXzF4T2EzQ0JSSHpQQ1JXTnNpSjY1YUNcIixcInJvdW5kZWRcIjpcIl8zVUdsT0l0ektva1ZnMHdHSDBlSWxYXCIsXCJyaWdodE9mZnNldFwiOlwiXzEzdFBzcDZkZkExVHdiMU1NSFJpR1RcIixcImxlZnRPZmZzZXRcIjpcIk5JNW42YkVWUkNRUHk2QU9Bc1ExcVwiLFwibm9TaGFkb3dcIjpcImdJWTlpdXZDMlZXeGN2d3dDbWFKSlwiLFwidHJhbnNwYXJlbnRcIjpcIl8zWGZsaDNRMUFablRPRDBjdHF1STZ3XCIsXCJzdHJldGNoSG9yaXpvbnRhbGx5XCI6XCJfMkZiUkRFR1NfN2VNVWNKMFZpT0JVMFwiLFwic3RyZXRjaFZlcnRpY2FsbHlcIjpcIl8xclBtLXQ1Wld3clMtTDlsN3o2NmpiXCIsXCJub1BhZGRpbmdcIjpcIl8zSjhEZWFMcTVpdzNBcDdxS0prUDlCXCIsXCJub0JvcmRlclwiOlwiXzNjRVFzLUtfbVNoRk5EZ0RQMzJXZDZcIixcImNvbnRlbnRcIjpcIl8xVlR5ZlR3VmxvQWNad1lDWnlzbHNKXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgQ29sb3JQaWNrZXIgfSBmcm9tIFwiLi9Db2xvclBpY2tlclwiO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgeyBDb2xvclN3YXRjaCB9IGZyb20gXCIuLi9Db2xvclN3YXRjaFwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9Db2xvclBpY2tlci5tb2R1bGUuY3NzXCI7XG5pbXBvcnQgeyBDb2xvciB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuXG50eXBlIENvbG9yUGlja2VyUHJvcHMgPSB7XG4gIGRpcmVjdGlvbj86IFwiaG9yaXpvbnRhbFwiIHwgXCJ2ZXJ0aWNhbFwiO1xuICBjb2xvcnM6IENvbG9yW107XG4gIG9uU2VsZWN0OiAoY29sb3I6IENvbG9yKSA9PiB2b2lkO1xuICBzZWxlY3RlZENvbG9yPzogQ29sb3I7XG59XG5cbmZ1bmN0aW9uIENvbG9yUGlja2VyKHsgY29sb3JzLCBvblNlbGVjdCwgc2VsZWN0ZWRDb2xvciwgZGlyZWN0aW9uID0gXCJ2ZXJ0aWNhbFwifTogQ29sb3JQaWNrZXJQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLmNvbG9yUGlja2VyLCBzdHlsZXNbZGlyZWN0aW9uXV0pfT5cbiAgICAgIHtjb2xvcnMubWFwKChjb2xvcjogQ29sb3IpID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8Q29sb3JTd2F0Y2hcbiAgICAgICAgICAgIGtleT17Y29sb3Iua2V5fVxuICAgICAgICAgICAgY29sb3I9e2NvbG9yfVxuICAgICAgICAgICAgaXNTZWxlY3RlZD17Y29sb3IgPT09IHNlbGVjdGVkQ29sb3J9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNlbGVjdChjb2xvcil9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH0pfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBDb2xvclBpY2tlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9Db2xvclN3YXRjaC5tb2R1bGUuY3NzXCI7XG5pbXBvcnQgeyBDb2xvciB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuXG50eXBlIENvbG9yU3dhdGNoUHJvcHMgPSB7XG4gIGNvbG9yOiBDb2xvcjtcbiAgaXNTZWxlY3RlZD86IGJvb2xlYW47XG4gIG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG59XG5cbmZ1bmN0aW9uIENvbG9yU3dhdGNoKHsgY29sb3IsIG9uQ2xpY2ssIGlzU2VsZWN0ZWQgPSBmYWxzZSB9OiBDb2xvclN3YXRjaFByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5jb2xvclN3YXRjaCxcbiAgICAgICAge1xuICAgICAgICAgIFtzdHlsZXMuc2VsZWN0ZWRdOiBpc1NlbGVjdGVkLFxuICAgICAgICB9LFxuICAgICAgXSl9XG4gICAgICBkYXRhLXRlc3RpZD1cImNvbG9yLXN3YXRjaFwiXG4gICAgICBkaXNhYmxlZD17aXNTZWxlY3RlZH1cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmhleENvZGUgfX1cbiAgICA+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zck9ubHl9PntgU2VsZWN0ICR7Y29sb3IubGFiZWx9IGNvbG9yYH08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbG9yU3dhdGNoO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbG9yU3dhdGNoXCI6XCJfMTNzczF4c01OaXp2RWdQX2h4RVY4QlwiLFwic2VsZWN0ZWRcIjpcIkw2ZkF0NlJaWXpfejN3UGJqWkV4SFwiLFwic3JPbmx5XCI6XCJfM3ZKNW14cHphWXNLYXhmLTh0QjMxeFwifTsiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29sb3JQaWNrZXJcIjpcIl8zMUZ3SF9uV3I3MmszcHVnQXBKdWI5XCIsXCJob3Jpem9udGFsXCI6XCJRYS1CcHVUVDJreHBtVl9BUWdDakhcIixcInZlcnRpY2FsXCI6XCJfMng0U0FuYm9weVpta3ljV0xDMEVYa1wifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIENvbmZpcm1hdGlvbk1vZGFsIH0gZnJvbSBcIi4vQ29uZmlybWF0aW9uTW9kYWxcIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gXCIuLi9Nb2RhbFwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9Db25maXJtYXRpb25Nb2RhbC5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgQ29uZmlybWF0aW9uTW9kYWxQcm9wcyA9IHtcbiAgYnV0dG9uc0xlZnQ/OiBSZWFjdEVsZW1lbnRbXTtcbiAgYnV0dG9uc1JpZ2h0PzogUmVhY3RFbGVtZW50W107XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICBoZWFkZXI6IHN0cmluZztcbiAgaXNPcGVuOiBib29sZWFuO1xuICBub1BhZGRpbmc/OiBib29sZWFuO1xuICBvbkNsb3NlPzogKCkgPT4gdm9pZDtcbn07XG5cbmZ1bmN0aW9uIENvbmZpcm1hdGlvbk1vZGFsKHtcbiAgY2hpbGRyZW4sXG4gIGhlYWRlcixcbiAgaXNPcGVuLFxuICBidXR0b25zTGVmdCA9IFtdLFxuICBidXR0b25zUmlnaHQgPSBbXSxcbiAgb25DbG9zZSA9ICgpID0+IHt9LFxuICBub1BhZGRpbmcgPSBmYWxzZSxcbn06IENvbmZpcm1hdGlvbk1vZGFsUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8TW9kYWwgaXNPcGVuPXtpc09wZW59IG9uQ2xvc2U9e29uQ2xvc2V9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5jb250YWluZXJ9PlxuICAgICAgICA8aDEgY2xhc3NOYW1lPXtzdHlsZXMubW9kYWxIZWFkZXJ9PntoZWFkZXJ9PC9oMT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICAgICAgc3R5bGVzLm1vZGFsQ29udGVudCxcbiAgICAgICAgICAgIHsgW3N0eWxlcy5ub1BhZGRpbmddOiBub1BhZGRpbmcgfSxcbiAgICAgICAgICBdKX1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMubW9kYWxCdXR0b25zQ29udGFpbmVyfT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm1vZGFsQnV0dG9uc30+e2J1dHRvbnNMZWZ0fTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMubW9kYWxCdXR0b25zfT57YnV0dG9uc1JpZ2h0fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvTW9kYWw+XG4gICk7XG59XG5cbkNvbmZpcm1hdGlvbk1vZGFsLmRpc3BsYXlOYW1lID0gXCJDb25maXJtYXRpb25Nb2RhbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBDb25maXJtYXRpb25Nb2RhbDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VIb3RrZXlzIH0gZnJvbSBcInJlYWN0LWhvdGtleXMtaG9va1wiO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL01vZGFsLm1vZHVsZS5jc3NcIjtcblxudHlwZSBNb2RhbFByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlLFxuICBpc09wZW46IGJvb2xlYW4sXG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkLFxuICBidXR0b24/OiBSZWFjdE5vZGUsXG59XG5cbmZ1bmN0aW9uIE1vZGFsKHtcbiAgY2hpbGRyZW4sXG4gIGlzT3BlbixcbiAgYnV0dG9uLFxuICBvbkNsb3NlID0gKCkgPT4ge31cbiB9OiBNb2RhbFByb3BzKSB7XG4gIHVzZUhvdGtleXMoXCJFc2NhcGVcIiwgb25DbG9zZSk7XG5cbiAgY29uc3QgaGFuZGxlT3ZlcmxheUNsaWNrID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIG9uQ2xvc2UoKTtcbiAgfSwgW29uQ2xvc2VdKTtcblxuICByZXR1cm4gKFxuICAgIGlzT3BlbiAmJiAoXG4gICAgICA8PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3ZlcmxheX1cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cIm1vZGFsLW92ZXJsYXlcIlxuICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZU92ZXJsYXlDbGlja31cbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5tb2RhbH0gZGF0YS10ZXN0aWQ9XCJtb2RhbFwiPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHtidXR0b24gJiYgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5tb2RhbEJ1dHRvbn0+e2J1dHRvbn08L2Rpdj59XG4gICAgICA8Lz5cbiAgICApXG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1vZGFsO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcIm92ZXJsYXlcIjpcIl8xeXhDYlFKcVN0VXZ5dHZLRWVOQzNuXCIsXCJtb2RhbFwiOlwiRDhTakJ4M2lrejYzNll1Ym5IWUFZXCIsXCJtb2RhbEJ1dHRvblwiOlwibzhWUlZ4TXJzMXhYYXZBRHl4akxHXCJ9OyIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcImtrZ0hvQlFoRlBzS2pfeDFaRmRSSFwiLFwibW9kYWxIZWFkZXJcIjpcIl8xV3V2SEQtR2RYTHJ0cXdhMDRXMXF5XCIsXCJtb2RhbENvbnRlbnRcIjpcIl8yN2VVeVNRcXZxNXFsb05DbElqSVNUXCIsXCJub1BhZGRpbmdcIjpcIl8yZ3RCWEw5UEZTcEhzVzBBOXhkNTVTXCIsXCJtb2RhbEJ1dHRvbnNDb250YWluZXJcIjpcIl81Z0lweUYzWDV0aFBRQW5zQUM0ejlcIixcIm1vZGFsQnV0dG9uc1wiOlwic3dzb0NpaTF3NHhObDdpb0RWa081XCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgRmxvYXRpbmdQYW5lbCB9IGZyb20gXCIuL0Zsb2F0aW5nUGFuZWxcIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIFJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0Zsb2F0aW5nUGFuZWwubW9kdWxlLmNzc1wiO1xuXG50eXBlIFBsYWNlbWVudCA9IHtcbiAgaG9yaXpvbnRhbDpcbiAgICB8IFwicmlnaHRcIlxuICAgIHwgXCJyaWdodEVkZ2VcIlxuICAgIHwgXCJyaWdodE9uRWRnZVwiXG4gICAgfCBcImxlZnRcIlxuICAgIHwgXCJsZWZ0RWRnZVwiXG4gICAgfCBcImxlZnRPbkVkZ2VcIlxuICAgIHwgXCJsZWZ0T25FZGdlXCJcbiAgICB8IFwiY2VudGVyXCI7XG4gIHZlcnRpY2FsOlxuICAgIHwgXCJ0b3BcIlxuICAgIHwgXCJ0b3BFZGdlXCJcbiAgICB8IFwiYm90dG9tXCJcbiAgICB8IFwiYm90dG9tRWRnZVwiXG4gICAgfCBcImJvdHRvbU9uRWRnZVwiXG4gICAgfCBcImNlbnRlclwiO1xuICBwYXJlbnQ6IFwidmlld3BvcnRcIiB8IFwiY29udGFpbmVyXCI7XG59O1xuXG50eXBlIEZsb2F0aW5nUGFuZWxQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgY29udGFpbmVyUmVmPzogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgbGF5b3V0PzogXCJjb2x1bW5cIiB8IFwicm93XCI7XG4gIHBsYWNlbWVudD86IFBsYWNlbWVudDtcbn07XG5cbmZ1bmN0aW9uIEZsb2F0aW5nUGFuZWwoe1xuICBjaGlsZHJlbixcbiAgY29udGFpbmVyUmVmLFxuICBsYXlvdXQgPSBcImNvbHVtblwiLFxuICBwbGFjZW1lbnQgPSB7IGhvcml6b250YWw6IFwiY2VudGVyXCIsIHZlcnRpY2FsOiBcImJvdHRvbVwiLCBwYXJlbnQ6IFwidmlld3BvcnRcIiB9LFxufTogRmxvYXRpbmdQYW5lbFByb3BzKSB7XG4gIGNvbnN0IGhvcml6b250YWxQbGFjZW1lbnQgPVxuICAgIHBsYWNlbWVudC5ob3Jpem9udGFsID09PSBcImNlbnRlclwiXG4gICAgICA/IFwiaG9yaXpvbnRhbENlbnRlclwiXG4gICAgICA6IHBsYWNlbWVudC5ob3Jpem9udGFsO1xuXG4gIGNvbnN0IHZlcnRpY2FsUGxhY2VtZW50ID1cbiAgICBwbGFjZW1lbnQudmVydGljYWwgPT09IFwiY2VudGVyXCIgPyBcInZlcnRpY2FsQ2VudGVyXCIgOiBwbGFjZW1lbnQudmVydGljYWw7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgIGRhdGEtdGVzdGlkPVwiZmxvYXRpbmctcGFuZWxcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5jb250YWluZXIsXG4gICAgICAgIHN0eWxlc1tob3Jpem9udGFsUGxhY2VtZW50XSxcbiAgICAgICAgc3R5bGVzW3ZlcnRpY2FsUGxhY2VtZW50XSxcbiAgICAgICAgc3R5bGVzW2xheW91dF0sXG4gICAgICAgIHtcbiAgICAgICAgICBbc3R5bGVzLmZpeGVkXTogcGxhY2VtZW50LnBhcmVudCAhPT0gXCJjb250YWluZXJcIixcbiAgICAgICAgfSxcbiAgICAgIF0pfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRmxvYXRpbmdQYW5lbDtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcImE2TkhPMkNWVkNmaW5peWUyWExOLVwiLFwicm93XCI6XCJfM1JTZ0I3NnJFQm5pUGMyWWNyOFpidlwiLFwiY29sdW1uXCI6XCJfMUprWDE1aWdjbG5ibTVzUlNjV1ZEWVwiLFwiZml4ZWRcIjpcIk1NUTF5akVhZldrWUZWREhNcFRiSVwiLFwicGxhaW5cIjpcIl8zbTJNX05hcmM1eHdMYXk4SEpsamtjXCIsXCJ0cmFuc3BhcmVudFwiOlwiXzFyZmE0OXpoWnhOaWZ6NjRPcWJfNlBcIixcInRvcFwiOlwiX2tVYWxuRGVFZnZ6cUFqaTBBTURvXCIsXCJ0b3BFZGdlXCI6XCJXOEpBSXdMak84SlFHYnZpWnBQUXdcIixcInRvcE9uRWRnZVwiOlwiXzNvcEo3RWI2dGozOTR1VjhhNTdpeHpcIixcInJpZ2h0XCI6XCJfMy12YndqcDBhUGNMRVYxU3gwSUNnUFwiLFwicmlnaHRFZGdlXCI6XCJfM1hORnk1Wm9NQ29ZQklhYmVHTjRCUVwiLFwicmlnaHRPbkVkZ2VcIjpcIl8xMmMzQ3pVTVFFOEFHM0FMOEhpa2kyXCIsXCJib3R0b21cIjpcIl8zZ2VCRU5INW9FcnFHZHQtUXlIblBoXCIsXCJib3R0b21FZGdlXCI6XCJfM19zYU00R3MzMm5SYklISHhJRWJGNlwiLFwiYm90dG9tT25FZGdlXCI6XCJfMlBMRTRkbUdobmNnay1sRW5vVTRrdlwiLFwibGVmdFwiOlwiXzFpU0JueVpnUGVGVVdvTTRpNmRTcFVcIixcImxlZnRFZGdlXCI6XCJfMWZYMTlxSU9TaG4ybzV1dXNSelRnc1wiLFwibGVmdE9uRWRnZVwiOlwiS0JIRG9ja3VIVEVPS01HT3phZFhpXCIsXCJob3Jpem9udGFsQ2VudGVyXCI6XCJfMzF0NnRIUko1cy01RGNETEZUS2gxbVwiLFwidmVydGljYWxDZW50ZXJcIjpcIl8yaHE3ZmtEWEh4cnh6MnQ3TExnNF85XCJ9OyIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vSWNvbi5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgSWNvblByb3BzID0ge1xuICBzcmM6IHN0cmluZztcbiAgYWx0Pzogc3RyaW5nO1xuICBzaXplPzogXCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIjtcbiAgaW52ZXJ0ZWQ/OiBib29sZWFuO1xufVxuZnVuY3Rpb24gSWNvbih7IHNyYywgYWx0LCBzaXplID0gXCJtZWRpdW1cIiwgaW52ZXJ0ZWQgPSBmYWxzZSB9OiBJY29uUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8aW1nXG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgc3R5bGVzLmljb24sXG4gICAgICAgIHN0eWxlc1tzaXplXSxcbiAgICAgICAgeyBbc3R5bGVzLmludmVydGVkXTogaW52ZXJ0ZWQgfSxcbiAgICAgIF0pfVxuICAgICAgY3Jvc3NPcmlnaW49XCJhbm9ueW1vdXNcIlxuICAgICAgZGF0YS10ZXN0aWQ9XCJpY29uXCJcbiAgICAgIGFsdD17YWx0fVxuICAgICAgc3JjPXtzcmN9XG4gICAgLz5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgSWNvbjtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJpY29uXCI6XCJ1aDh6a21RcDV5Yms1V0pTbGE2OURcIixcInNtYWxsXCI6XCJfOURJQ3RxbVFTbkxQam0xWEk3WVZzXCIsXCJtZWRpdW1cIjpcInNKcHhmWWdpVHo3aWs2Sk9HdTF3aVwiLFwibGFyZ2VcIjpcIl8ycmd1Y0FIOEJubGktY21qejlpMkMyXCIsXCJpbnZlcnRlZFwiOlwiSS1lSTVxOHJkMmJTcDlCLUZoVXphXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgSWNvbkJ1dHRvbiB9IGZyb20gXCIuL0ljb25CdXR0b25cIjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCIuLi9JY29uXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0ljb25CdXR0b24ubW9kdWxlLmNzc1wiO1xuXG50eXBlIEljb25CdXR0b25Qcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzcmM6IHN0cmluZztcbiAgYWx0OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgaW52ZXJ0ZWQ/OiBib29sZWFuO1xuICBub1NoYWRvdz86IGJvb2xlYW47XG4gIG5vQm9yZGVyPzogYm9vbGVhbjtcbiAgdHJhbnNwYXJlbnQ/OiBib29sZWFuO1xuICByb3VuZGVkPzogYm9vbGVhbjtcbiAgb25DbGljaz86ICgpID0+IHZvaWQsXG4gIHNpemU/OiBcInNtYWxsXCIgfCBcIm1lZGl1bVwiIHwgXCJsYXJnZVwiO1xuICB0eXBlPzogXCJzdWJtaXRcIiB8IFwicmVzZXRcIiB8IFwiYnV0dG9uXCI7XG4gIG9mZnNldFNpZGVzPzogQXJyYXk8XCJ0b3BcIiB8IFwicmlnaHRcIiB8IFwiYm90dG9tXCIgfCBcImxlZnRcIj47XG59XG5cbmZ1bmN0aW9uIEljb25CdXR0b24oe1xuICBjbGFzc05hbWUsXG4gIHNyYyxcbiAgYWx0LFxuICBvZmZzZXRTaWRlcyA9IFtdLFxuICBvbkNsaWNrID0gKCkgPT4ge30sXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIGludmVydGVkID0gZmFsc2UsXG4gIG5vU2hhZG93ID0gZmFsc2UsXG4gIG5vQm9yZGVyID0gZmFsc2UsXG4gIHRyYW5zcGFyZW50ID0gZmFsc2UsXG4gIHJvdW5kZWQgPSBmYWxzZSxcbiAgc2l6ZSA9IFwibWVkaXVtXCIsXG4gIHR5cGUgPSBcImJ1dHRvblwiLFxufTogSWNvbkJ1dHRvblByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5jb250YWluZXIsXG4gICAgICAgIHN0eWxlc1tzaXplXSxcbiAgICAgICAge1xuICAgICAgICAgIFtzdHlsZXMuaW52ZXJ0ZWRdOiBpbnZlcnRlZCxcbiAgICAgICAgICBbc3R5bGVzLnJvdW5kZWRdOiByb3VuZGVkLFxuICAgICAgICAgIFtzdHlsZXMubm9TaGFkb3ddOiBub1NoYWRvdyxcbiAgICAgICAgICBbc3R5bGVzLm5vQm9yZGVyXTogbm9Cb3JkZXIsXG4gICAgICAgICAgW3N0eWxlcy50cmFuc3BhcmVudF06IHRyYW5zcGFyZW50LFxuICAgICAgICAgIFtzdHlsZXMudG9wT2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcInRvcFwiKSxcbiAgICAgICAgICBbc3R5bGVzLnJpZ2h0T2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcInJpZ2h0XCIpLFxuICAgICAgICAgIFtzdHlsZXMuYm90dG9tT2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcImJvdHRvbVwiKSxcbiAgICAgICAgICBbc3R5bGVzLmxlZnRPZmZzZXRdOiByb3VuZGVkICYmIG9mZnNldFNpZGVzLmluY2x1ZGVzKFwibGVmdFwiKSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgXSl9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgdHlwZT17dHlwZX1cbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgID5cbiAgICAgIDxJY29uIHNyYz17c3JjfSBhbHQ9e2FsdH0gc2l6ZT17c2l6ZX0gaW52ZXJ0ZWQ9e2ludmVydGVkfSAgLz5cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgSWNvbkJ1dHRvbjtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcIl8yTVB1SjNBcHZyQXZyZXdqU1dHQUEyXCIsXCJzbWFsbFwiOlwibE9rb2FuN2RicC1nb0R0SlZ1SzdCXCIsXCJtZWRpdW1cIjpcIl8zYTljV3RzX1k3eDNwYWprOHVtTjN6XCIsXCJsYXJnZVwiOlwiXzJhRzZ6WHFURUtWY3ZCYWFuaUNOQnlcIixcInJvdW5kZWRcIjpcIl8ySlgwMzRxVVRDb1RkV0MycHBBNDg3XCIsXCJ0b3BPZmZzZXRcIjpcIl8xd3BDLVdYZ0wwNlFLeHRQek93TlJLXCIsXCJyaWdodE9mZnNldFwiOlwiTEl6clFDN3BvUVQ5alVSQnFNREtoXCIsXCJib3R0b21PZmZzZXRcIjpcIl8yaV93NVVMa1VLN0xWdzVoRU85N0V3XCIsXCJsZWZ0T2Zmc2V0XCI6XCJfMzhlS2xUUVRWMVlsbkVlMUdtTnRRa1wiLFwiaW52ZXJ0ZWRcIjpcIl8yTmtaNTBya0EzZVpDeXNZOUZBcC1lXCIsXCJub1NoYWRvd1wiOlwiXzNVeTVIWmR2a1dmN2JpbFQwd3h3VmVcIixcIm5vQm9yZGVyXCI6XCJfMkY0SHk5bHE1T0NyRXBQWlBoNXhBSlwiLFwidHJhbnNwYXJlbnRcIjpcIl8ydTdxVE1lRTlENXJ0Y3NFY1NvQVkzXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgSWNvbkJ1dHRvbkxpbmsgfSBmcm9tIFwiLi9JY29uQnV0dG9uTGlua1wiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IFJlYWN0VHlwZSwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcbmltcG9ydCB7IEljb24gfSBmcm9tIFwiLi4vSWNvblwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9JY29uQnV0dG9uTGluay5tb2R1bGUuY3NzXCI7XG5pbXBvcnQgeyBTaXplIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbnR5cGUgT2Zmc2V0U2lkZSA9IFwidG9wXCIgfCBcInJpZ2h0XCIgfCBcImJvdHRvbVwiIHwgXCJsZWZ0XCI7XG5cbnR5cGUgSWNvbkJ1dHRvbkxpbmtQcm9wcyA9IHtcbiAgYXM/OiBSZWFjdFR5cGU7XG4gIHNyYzogc3RyaW5nO1xuICBhbHQ6IHN0cmluZztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBpbnZlcnRlZD86IGJvb2xlYW47XG4gIHJvdW5kZWQ/OiBib29sZWFuO1xuICB0cmFuc3BhcmVudD86IGJvb2xlYW47XG4gIG5vU2hhZG93PzogYm9vbGVhbjtcbiAgbm9Cb3JkZXI/OiBib29sZWFuO1xuICBzaXplPzogU2l6ZTtcbiAgb2Zmc2V0U2lkZXM/OiBBcnJheTxPZmZzZXRTaWRlPjtcbn0gfCBhbnk7XG5cbmZ1bmN0aW9uIEljb25CdXR0b25MaW5rKHtcbiAgYXM6IENvbXBvbmVudCxcbiAgY2xhc3NOYW1lLFxuICBzcmMsXG4gIGFsdCxcbiAgaW52ZXJ0ZWQgPSBmYWxzZSxcbiAgbm9TaGFkb3cgPSBmYWxzZSxcbiAgbm9Cb3JkZXIgPSBmYWxzZSxcbiAgdHJhbnNwYXJlbnQgPSBmYWxzZSxcbiAgcm91bmRlZCA9IGZhbHNlLFxuICBvZmZzZXRTaWRlcyA9IFtdLFxuICBzaXplID0gXCJtZWRpdW1cIixcbiAgLi4ucHJvcHNcbn06IEljb25CdXR0b25MaW5rUHJvcHMpIHtcbiAgaWYgKHR5cGVvZiBDb21wb25lbnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBDb21wb25lbnQgPSBcImFcIjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvbXBvbmVudFxuICAgICAgZGF0YS10ZXN0aWQ9XCJpY29uLWJ1dHRvbi1saW5rXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMuY29udGFpbmVyLFxuICAgICAgICBzdHlsZXNbc2l6ZV0sXG4gICAgICAgIHtcbiAgICAgICAgICBbc3R5bGVzLmludmVydGVkXTogaW52ZXJ0ZWQsXG4gICAgICAgICAgW3N0eWxlcy5yb3VuZGVkXTogcm91bmRlZCxcbiAgICAgICAgICBbc3R5bGVzLm5vU2hhZG93XTogbm9TaGFkb3csXG4gICAgICAgICAgW3N0eWxlcy5ub0JvcmRlcl06IG5vQm9yZGVyLFxuICAgICAgICAgIFtzdHlsZXMudHJhbnNwYXJlbnRdOiB0cmFuc3BhcmVudCxcbiAgICAgICAgICBbc3R5bGVzLnRvcE9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJ0b3BcIiksXG4gICAgICAgICAgW3N0eWxlcy5yaWdodE9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJyaWdodFwiKSxcbiAgICAgICAgICBbc3R5bGVzLmJvdHRvbU9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJib3R0b21cIiksXG4gICAgICAgICAgW3N0eWxlcy5sZWZ0T2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcImxlZnRcIiksXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgIF0pfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIDxJY29uIHNyYz17c3JjfSBhbHQ9e2FsdH0gc2l6ZT17c2l6ZX0gaW52ZXJ0ZWQ9e2ludmVydGVkfSAvPlxuICAgIDwvQ29tcG9uZW50PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBJY29uQnV0dG9uTGluaztcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcIl8xdWlmbUtOUER6ZHU1WURuaGd3UFFLXCIsXCJzbWFsbFwiOlwicGZIY1lhZXctSHJIdFROdVI0djdoXCIsXCJsYXJnZVwiOlwiXzI2WjlGSC1DTlBxZjU1WlJQMXZuYWJcIixcInJvdW5kZWRcIjpcIl8ycTdXdlJPaE5tM2dzUklSYVFRZWFVXCIsXCJ0b3BPZmZzZXRcIjpcIndaeV92dWxaa01iV1NYMGFrY1pIQVwiLFwicmlnaHRPZmZzZXRcIjpcIl8yamhocG02MF95UEVmeFEtd2F6ai01XCIsXCJib3R0b21PZmZzZXRcIjpcIkRubnJHN1pYbVRJaG1XVWNzOTltMVwiLFwibGVmdE9mZnNldFwiOlwiXzFZZENnN1Q2WGpobXh3Y2pMTlNFYi1cIixcImludmVydGVkXCI6XCJIVjBSLWxxd215ZXFzUzFaOHBvWlNcIixcIm5vU2hhZG93XCI6XCJfMUxQcHQ3MEpqaW02U2ZaZTM1RzJrYlwiLFwibm9Cb3JkZXJcIjpcIlJrelNyR2l4TTI4Sk1hdDZJQjVMclwiLFwidHJhbnNwYXJlbnRcIjpcIl8xS2RYZlkzUGs2dEVOWUg4MXRXcnBzXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgSW1hZ2UgfSBmcm9tIFwiLi9JbWFnZVwiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiwgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vSW1hZ2UubW9kdWxlLmNzc1wiO1xuXG5leHBvcnQgY29uc3QgZW1wdHlJbWFnZSA9XG4gIFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBRUFBQUFCQ0FRQUFBQzFIQXdDQUFBQUMwbEVRVlI0Mm1Oa1lBQUFBQVlBQWpDQjBDOEFBQUFBU1VWT1JLNUNZSUk9XCI7IC8vIDF4MXBuZ1xuXG50eXBlIEltYWdlUHJvcHMgPSB7XG4gIGFuaW1hdGlvbj86IFwiZmFkZUluXCIgfCBcInNjYWxlVXBcIjtcbiAgYWx0Pzogc3RyaW5nO1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgY29udGFpbmVyUmVmPzogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgbGF5b3V0PzogXCJjb3ZlclwiIHwgXCJjb250YWluXCIgfCBcInN0cmV0Y2hIb3Jpem9udGFsbHlcIiB8IFwic3RyZXRjaFZlcnRpY2FsbHlcIjtcbiAgc3JjOiBzdHJpbmc7XG4gIHNyY1dpZHRoPzogbnVtYmVyO1xuICBzcmNIZWlnaHQ/OiBudW1iZXI7XG59O1xuXG5mdW5jdGlvbiBJbWFnZUNvbXBvbmVudCh7XG4gIHNyYyxcbiAgYWx0LFxuICBzcmNXaWR0aCxcbiAgc3JjSGVpZ2h0LFxuICBjaGlsZHJlbixcbiAgYW5pbWF0aW9uLFxuICBjb250YWluZXJSZWYsXG4gIGxheW91dCA9IFwiY29udGFpblwiLFxufTogSW1hZ2VQcm9wcykge1xuICBjb25zdCBbaXNMb2FkZWQsIHNldElzTG9hZGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgaW1hZ2VSZWYgPSB1c2VSZWYobnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgICBpbWFnZS5jcm9zc09yaWdpbiA9IFwiYW5vbnltb3VzXCI7XG4gICAgaW1hZ2Uuc3JjID0gc3JjO1xuICAgIGltYWdlLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIGltYWdlUmVmLmN1cnJlbnQ/LnNldEF0dHJpYnV0ZShcInNyY1wiLCBzcmMpO1xuICAgICAgc2V0SXNMb2FkZWQodHJ1ZSk7XG4gICAgfTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpbWFnZS5zcmMgPSBcIlwiO1xuICAgICAgZGVsZXRlIGltYWdlLm9ubG9hZDtcbiAgICAgIGRlbGV0ZSBpbWFnZS5zcmM7XG4gICAgICBkZWxldGUgaW1hZ2UuY3Jvc3NPcmlnaW47XG4gICAgICBpbWFnZSA9IG51bGw7XG4gICAgfTtcbiAgfSwgW3NyY10pO1xuXG4gIHJldHVybiBjaGlsZHJlbiA/IChcbiAgICA8ZGl2XG4gICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5jb250YWluZXIsIHN0eWxlcy5oYXNPdmVybGF5XSl9XG4gICAgPlxuICAgICAgPGltZ1xuICAgICAgICByZWY9e2ltYWdlUmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgICBzdHlsZXMuaW1hZ2UsXG4gICAgICAgICAgc3R5bGVzW2xheW91dF0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgW3N0eWxlcy5mYWRlSW5dOiBhbmltYXRpb24gPT09IFwiZmFkZUluXCIgJiYgaXNMb2FkZWQsXG4gICAgICAgICAgICBbc3R5bGVzLnNjYWxlVXBdOiBhbmltYXRpb24gPT09IFwic2NhbGVVcFwiICYmIGlzTG9hZGVkLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pfVxuICAgICAgICBjcm9zc09yaWdpbj1cImFub255bW91c1wiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiaW1hZ2VcIlxuICAgICAgICBhbHQ9e2FsdH1cbiAgICAgICAgc3JjPXtlbXB0eUltYWdlfVxuICAgICAgICB3aWR0aD17c3JjV2lkdGh9XG4gICAgICAgIGhlaWdodD17c3JjSGVpZ2h0fVxuICAgICAgLz5cbiAgICAgIHtjaGlsZHJlbiAmJiA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm92ZXJsYXl9PntjaGlsZHJlbn08L2Rpdj59XG4gICAgPC9kaXY+XG4gICkgOiAoXG4gICAgPGltZ1xuICAgICAgcmVmPXtpbWFnZVJlZn1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMuaW1hZ2UsXG4gICAgICAgIHN0eWxlc1tsYXlvdXRdLFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlcy5mYWRlSW5dOiBhbmltYXRpb24gPT09IFwiZmFkZUluXCIgJiYgaXNMb2FkZWQsXG4gICAgICAgICAgW3N0eWxlcy5zY2FsZVVwXTogYW5pbWF0aW9uID09PSBcInNjYWxlVXBcIiAmJiBpc0xvYWRlZCxcbiAgICAgICAgfSxcbiAgICAgIF0pfVxuICAgICAgY3Jvc3NPcmlnaW49XCJhbm9ueW1vdXNcIlxuICAgICAgZGF0YS10ZXN0aWQ9XCJpbWFnZVwiXG4gICAgICBhbHQ9e2FsdH1cbiAgICAgIHNyYz17ZW1wdHlJbWFnZX1cbiAgICAgIHdpZHRoPXtzcmNXaWR0aH1cbiAgICAgIGhlaWdodD17c3JjSGVpZ2h0fVxuICAgIC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEltYWdlQ29tcG9uZW50O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbnRhaW5lclwiOlwiXzN6d2xuOHhwa1p3cFRZNWk2SjdiT0RcIixcImhhc092ZXJsYXlcIjpcIl8yZWw4eFdxcWYzdzRTM3gwczJEOXhsXCIsXCJvdmVybGF5XCI6XCJFZzNpbWZiWGRJNlU2cmZSRTAtcU9cIixcImltYWdlXCI6XCJ0MTg5N2RmdHNfcHFIelNud21XQldcIixcImNvdmVyXCI6XCJfMS1SX0hEak82cU5ueXdjTmlTOGJ5RFwiLFwiY29udGFpblwiOlwiXzNtRHBDakhKMmc2NmUwdzRSMkVaa0dcIixcInN0cmV0Y2hIb3Jpem9udGFsbHlcIjpcIl8zeUV0SDdjcXBVbFZGYUdpV0cxMjl3XCIsXCJzdHJldGNoVmVydGljYWxseVwiOlwibHlpQnM2T0J4dlJFbndJUjBsczJDXCIsXCJmYWRlSW5cIjpcIl8yT0tKdzhVZHQ5MTZJWG1UbFQ5ODZZXCIsXCJmYWRlSW5BbmltYXRpb25cIjpcIk5vT1ZyVzQ2Nkh0azZFcFoxd1lpSVwiLFwic2NhbGVVcFwiOlwiXzMwOVZUcWpWSHBWSkh1eUFRYV9hWmlcIixcInNjYWxlVXBBbmltYXRpb25cIjpcIl8zaWNiSnJlMFBKN01GblhRaUNZX3E2XCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgTGlzdFZpZXcgfSBmcm9tIFwiLi9MaXN0Vmlld1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBMaXN0Vmlld0l0ZW0gfSBmcm9tIFwiLi9MaXN0Vmlld0l0ZW1cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTGlzdFZpZXdMaW5rSXRlbSB9IGZyb20gXCIuL0xpc3RWaWV3TGlua0l0ZW1cIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9MaXN0Vmlldy5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgTGlzdFZpZXdQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBoZWFkZXI/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIExpc3RWaWV3KHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgaGVhZGVyIH06IExpc3RWaWV3UHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5jb250YWluZXIsIGNsYXNzTmFtZV0pfT5cbiAgICAgIHtoZWFkZXIgJiYgPGgzIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+e2hlYWRlcn08L2gzPn1cbiAgICAgIDx1bCBjbGFzc05hbWU9e3N0eWxlcy5saXN0fT57Y2hpbGRyZW59PC91bD5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTGlzdFZpZXc7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29udGFpbmVyXCI6XCJDUEhOZDhvc0tqTHZRREVRVUVydXhcIixcImhlYWRlclwiOlwiXzFlN2hIU1ZvNTllOHlRbmhjOUI2SWRcIixcImxpc3RcIjpcIl8xdzFXOEU2X0h6ZmVzM1daVFlaYUpLXCJ9OyIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uL0J1dHRvblwiO1xuaW1wb3J0IHsgU2l6ZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9MaXN0Vmlld0l0ZW0ubW9kdWxlLmNzc1wiO1xuXG50eXBlIExpc3RWaWV3SXRlbVByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBhY3RpdmU/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHRyYW5zcGFyZW50PzogYm9vbGVhbjtcbiAgbm9QYWRkaW5nPzogYm9vbGVhbjtcbiAgc2l6ZT86IFNpemU7XG4gIGFsaWduPzogXCJsZWZ0XCIgfCBcImNlbnRlclwiO1xuICBvbkNsaWNrPzogKCkgPT4gdm9pZCxcbn1cblxuZnVuY3Rpb24gTGlzdFZpZXdJdGVtKHtcbiAgY2hpbGRyZW4sXG4gIGFjdGl2ZSA9IGZhbHNlLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICB0cmFuc3BhcmVudCA9IGZhbHNlLFxuICBub1BhZGRpbmcgPSBmYWxzZSxcbiAgc2l6ZSA9IFwibWVkaXVtXCIsXG4gIGFsaWduID0gXCJjZW50ZXJcIixcbiAgb25DbGljayA9ICgpID0+IHt9LFxufTogTGlzdFZpZXdJdGVtUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8bGkgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLmxpc3RWaWV3SXRlbV0pfT5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBpbnZlcnRlZD17YWN0aXZlfVxuICAgICAgICB0cmFuc3BhcmVudD17dHJhbnNwYXJlbnR9XG4gICAgICAgIG5vUGFkZGluZz17bm9QYWRkaW5nfVxuICAgICAgICBhbGlnbj17YWxpZ259XG4gICAgICAgIHNpemU9e3NpemV9XG4gICAgICAgIHN0cmV0Y2hIb3Jpem9udGFsbHlcbiAgICAgICAgbm9TaGFkb3dcbiAgICAgICAgbm9Cb3JkZXJcbiAgICAgID5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9CdXR0b24+XG4gICAgPC9saT5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTGlzdFZpZXdJdGVtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IHsgQnV0dG9uTGluayB9IGZyb20gXCIuLi9CdXR0b25MaW5rXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0xpc3RWaWV3SXRlbS5tb2R1bGUuY3NzXCI7XG5cbmZ1bmN0aW9uIExpc3RWaWV3TGlua0l0ZW0oe1xuICBjaGlsZHJlbixcbiAgYWN0aXZlLFxuICB0cmFuc3BhcmVudCxcbiAgbm9QYWRkaW5nLFxuICBzaXplLFxuICBhbGlnbixcbiAgYXMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiAoXG4gICAgPGxpIGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5saXN0Vmlld0l0ZW1dKX0+XG4gICAgICA8QnV0dG9uTGlua1xuICAgICAgICBhcz17YXN9XG4gICAgICAgIGludmVydGVkPXthY3RpdmV9XG4gICAgICAgIHRyYW5zcGFyZW50PXt0cmFuc3BhcmVudH1cbiAgICAgICAgbm9QYWRkaW5nPXtub1BhZGRpbmd9XG4gICAgICAgIGFsaWduPXthbGlnbn1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgc3RyZXRjaEhvcml6b250YWxseVxuICAgICAgICBub1NoYWRvd1xuICAgICAgICBub0JvcmRlclxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvQnV0dG9uTGluaz5cbiAgICA8L2xpPlxuICApO1xufVxuXG5MaXN0Vmlld0xpbmtJdGVtLmRlZmF1bHRQcm9wcyA9IHtcbiAgYWN0aXZlOiBmYWxzZSxcbiAgdHJhbnNwYXJlbnQ6IGZhbHNlLFxuICBub1BhZGRpbmc6IGZhbHNlLFxuICBzaXplOiBcIm1lZGl1bVwiLFxuICBhbGlnbjogXCJjZW50ZXJcIixcbiAgYXM6IFwiYVwiLFxufTtcblxuTGlzdFZpZXdMaW5rSXRlbS5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBhczogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICBhY3RpdmU6IFByb3BUeXBlcy5ib29sLFxuICB0cmFuc3BhcmVudDogUHJvcFR5cGVzLmJvb2wsXG4gIG5vUGFkZGluZzogUHJvcFR5cGVzLmJvb2wsXG4gIGFsaWduOiBQcm9wVHlwZXMub25lT2YoW1wibGVmdFwiLCBcImNlbnRlclwiXSksXG4gIHNpemU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTGlzdFZpZXdMaW5rSXRlbTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCJleHBvcnQgeyBkZWZhdWx0IGFzIE1lbnUgfSBmcm9tIFwiLi9NZW51XCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE1lbnVDb250YWluZXIgfSBmcm9tIFwiLi9NZW51Q29udGFpbmVyXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE1lbnVJdGVtIH0gZnJvbSBcIi4vTWVudUl0ZW1cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWVudUxpbmtJdGVtIH0gZnJvbSBcIi4vTWVudUxpbmtJdGVtXCI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL01lbnUubW9kdWxlLmNzc1wiO1xuXG50eXBlIFBsYWNlbWVudCA9IHtcbiAgaG9yaXpvbnRhbDogXCJyaWdodFwiIHwgXCJsZWZ0XCIsXG4gIHZlcnRpY2FsOiBcInRvcFwiIHwgXCJib3R0b21cIixcbn1cblxudHlwZSBNZW51UHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaXNPcGVuPzogYm9vbGVhbjtcbiAgaGVhZGVyPzogc3RyaW5nO1xuICBwbGFjZW1lbnQ/OiBQbGFjZW1lbnRcbn07XG5cblxuZnVuY3Rpb24gTWVudSh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGlzT3BlbiA9IHRydWUsXG4gIHBsYWNlbWVudCA9IHsgaG9yaXpvbnRhbDogXCJsZWZ0XCIsIHZlcnRpY2FsOiBcImJvdHRvbVwiIH0sXG4gIGhlYWRlclxufTogTWVudVByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5tZW51LFxuICAgICAgICBzdHlsZXNbcGxhY2VtZW50Lmhvcml6b250YWxdLFxuICAgICAgICBzdHlsZXNbcGxhY2VtZW50LnZlcnRpY2FsXSxcbiAgICAgICAgeyBbc3R5bGVzLm9wZW5dOiBpc09wZW4gfSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgXSl9XG4gICAgPlxuICAgICAge2hlYWRlciAmJiBpc09wZW4gJiYgPGgzIGNsYXNzTmFtZT17c3R5bGVzLm1lbnVIZWFkZXJ9PntoZWFkZXJ9PC9oMz59XG4gICAgICA8dWw+e2lzT3BlbiAmJiBjaGlsZHJlbn08L3VsPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNZW51O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcIm1lbnVcIjpcIl8yYWhpOEpjbnhHSHJuWm1EMHhUOVJMXCIsXCJ0b3BcIjpcIl8zZ3BGVGQxRmR4NEVBZnExNzBUR3M3XCIsXCJyaWdodFwiOlwiXzFMNUFUcE05R1h5LVNPUkZyMEc2UzRcIixcImxlZnRcIjpcIkNZRUpsMzlUa0VmbkthbDN2dHZ6OVwiLFwiYm90dG9tXCI6XCJfM3p5cC1OZFRCZUJES3ZrMjZwc1p1cFwiLFwib3BlblwiOlwiXzFpYWF6aVpyVklfLUU4RDk5V2ROamlcIixcImVudHJhbmNlXCI6XCJfMmZpS2U0LVg4UHFjRzRfOXFlQjNaT1wiLFwibWVudUhlYWRlclwiOlwiXzE5bmsxSU1OUy11X1lJUUxsbVlSdFVcIn07IiwiaW1wb3J0IFJlYWN0LCB7IGZvcndhcmRSZWYsIFJlYWN0Tm9kZSwgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vTWVudUNvbnRhaW5lci5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgTWVudUNvbnRhaW5lclByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJlZj86ICgpID0+IHZvaWQgfCB7IGN1cnJlbnQ6IGFueSB9O1xufVxuXG5mdW5jdGlvbiBNZW51Q29udGFpbmVyKHsgY2hpbGRyZW4sIGNsYXNzTmFtZX06IE1lbnVDb250YWluZXJQcm9wcywgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLm1lbnVDb250YWluZXIsIGNsYXNzTmFtZV0pfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZm9yd2FyZFJlZihNZW51Q29udGFpbmVyKTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJtZW51Q29udGFpbmVyXCI6XCJfMi1TRndzcHBFdW9iQkprQXd3UXJGQ1wifTsiLCJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vTWVudUl0ZW0ubW9kdWxlLmNzc1wiO1xuXG50eXBlIE1lbnVJdGVtUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaXNBY3RpdmU/OiBib29sZWFuLFxuICBvbkNsaWNrPzogKCkgPT4gdm9pZCxcbn07XG5cbmZ1bmN0aW9uIE1lbnVJdGVtKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgb25DbGljayxcbiAgaXNBY3RpdmUgPSBmYWxzZVxufTogTWVudUl0ZW1Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxsaVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5tZW51SXRlbSxcbiAgICAgICAgeyBbc3R5bGVzLmFjdGl2ZV06IGlzQWN0aXZlIH0sXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgIF0pfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9saT5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWVudUl0ZW07XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wibWVudUl0ZW1cIjpcIl8zZ0djelJKd3JOZW5YVEJMUW5DMjlNXCIsXCJhY3RpdmVcIjpcIl8yajFpbFVOa2JGR1NndWxYU29IQWRQXCJ9OyIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIFJlYWN0VHlwZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL01lbnVMaW5rSXRlbS5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgTWVudUxpbmtJdGVtUHJvcHMgPSB7XG4gIGFzOiBSZWFjdFR5cGU7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xufSB8IGFueTtcblxuZnVuY3Rpb24gTWVudUxpbmtJdGVtKHtcbiAgYXM6IENvbXBvbmVudCxcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IE1lbnVMaW5rSXRlbVByb3BzKSB7XG4gIGlmICh0eXBlb2YgQ29tcG9uZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgQ29tcG9uZW50ID0gXCJhXCI7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxDb21wb25lbnRcbiAgICAgIGRhdGEtdGVzdGlkPVwibWVudS1saW5rLWl0ZW1cIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLm1lbnVMaW5rSXRlbSwgY2xhc3NOYW1lXSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvQ29tcG9uZW50PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNZW51TGlua0l0ZW07XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wibWVudUxpbmtJdGVtXCI6XCJfMkR5MUxUZlNjR1p0U2JfNUx1ZC1sVVwiLFwiYWN0aXZlXCI6XCJfMlV3czdiajN5ZWptbjFrN1hpeUtmUVwiLFwibWVudUl0ZW1cIjpcIl8ybEk3UzJ0NXpXaFFzdmdfWG5RNy0tXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgT3ZlcmxheSB9IGZyb20gXCIuL092ZXJsYXlcIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vT3ZlcmxheS5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgT3ZlcmxheVByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICB0cmFuc3BhcmVudD86IGJvb2xlYW47XG4gIGlzRml4ZWQ/OiBib29sZWFuO1xuICBvbkNsaWNrPzogKCkgPT4gdm9pZDtcbn07XG5cblxuZnVuY3Rpb24gT3ZlcmxheSh7XG4gIGNoaWxkcmVuLFxuICB0cmFuc3BhcmVudCA9IGZhbHNlLFxuICBpc0ZpeGVkID0gZmFsc2UsXG4gIG9uQ2xpY2sgPSAoKSA9PiB7fVxufTogT3ZlcmxheVByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgZGF0YS10ZXN0aWQ9XCJvdmVybGF5XCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMub3ZlcmxheSxcbiAgICAgICAge1xuICAgICAgICAgIFtzdHlsZXMudHJhbnNwYXJlbnRdOiB0cmFuc3BhcmVudCxcbiAgICAgICAgICBbc3R5bGVzLmZpeGVkXTogaXNGaXhlZCxcbiAgICAgICAgfSxcbiAgICAgIF0pfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IE92ZXJsYXk7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wib3ZlcmxheVwiOlwiXzJRZ3B5ckRjVVF5S1lFU0M1RFhYSnJcIixcInRyYW5zcGFyZW50XCI6XCJfMjhmVm1veHA2OU9Qcjg4RXcwelZlTlwiLFwiZml4ZWRcIjpcIl8yc1UzNTE1RWJGRmdlUDF5SzJadWJ6XCJ9OyIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9MYWJlbC5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgVGV4dElucHV0UHJvcHMgPSB7XG4gIHZhbHVlOiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBUZXh0SW5wdXQoeyB2YWx1ZSB9OiBUZXh0SW5wdXRQcm9wcykge1xuICByZXR1cm4gPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRhaW5lcn0+e3ZhbHVlfTwvbGFiZWw+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBUZXh0SW5wdXQ7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29udGFpbmVyXCI6XCJfMnFsMjdibGxzUVgzOVIzRTJ1UnFnLVwifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIFRleHRJbnB1dCB9IGZyb20gXCIuL1RleHRJbnB1dFwiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCB7IExhYmVsIH0gZnJvbSBcIi4uL0xhYmVsXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL1RleHRJbnB1dC5tb2R1bGUuY3NzXCI7XG5pbXBvcnQgeyBTaXplLCBUZXh0SW5wdXRUeXBlIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbnR5cGUgVGV4dElucHV0UHJvcHMgPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIG9uQ2hhbmdlPzogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICB2YWx1ZT86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgdHlwZT86IFRleHRJbnB1dFR5cGU7XG4gIHNpemU/OiBTaXplO1xuICBhdXRvRm9jdXM/OiBib29sZWFuO1xuICBpbnB1dFJlZj86IFJlYWN0LlJlZk9iamVjdDxIVE1MSW5wdXRFbGVtZW50Pjtcbn07XG5cbmZ1bmN0aW9uIFRleHRJbnB1dCh7XG4gIGxhYmVsLFxuICBvbkNoYW5nZSxcbiAgcGxhY2Vob2xkZXIsXG4gIHZhbHVlLFxuICBuYW1lLFxuICBpbnB1dFJlZixcbiAgc2l6ZSA9IFwibWVkaXVtXCIsXG4gIGF1dG9Gb2N1cyA9IGZhbHNlLFxuICB0eXBlID0gXCJ0ZXh0XCIsXG59OiBUZXh0SW5wdXRQcm9wcykge1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoZTogUmVhY3QuRm9ybUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PlxuICAgICAgb25DaGFuZ2UoKGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlKSxcbiAgICBbb25DaGFuZ2VdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPExhYmVsIHZhbHVlPXtsYWJlbH0gLz5cbiAgICAgIDxpbnB1dFxuICAgICAgICBkYXRhLXRlc3RpZD1cImlucHV0XCJcbiAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLnRleHRJbnB1dCwgc3R5bGVzW3NpemVdXSl9XG4gICAgICAgIG9uQ2hhbmdlPXshaW5wdXRSZWYgPyBoYW5kbGVDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgdHlwZT17dHlwZX1cbiAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICBhdXRvRm9jdXM9e2F1dG9Gb2N1c31cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRJbnB1dDtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJ0ZXh0SW5wdXRcIjpcIl8yd2ZxT3pXQm9Bbl9LN2dvcXZqWEplXCIsXCJzbWFsbFwiOlwiXzFhNFFPVkpCMHpXM1VyZl81aHFOampcIixcIm1lZGl1bVwiOlwiXzNVSm9lOG5scHpoVlRtQzA5VFZzby1cIixcImxhcmdlXCI6XCJfM0RRNTJRZF8xSzRfVnh4VnY3MjhTWFwifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIFRvYXN0IH0gZnJvbSBcIi4vVG9hc3RcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgVG9hc3RDb250YWluZXIgfSBmcm9tIFwiLi9Ub2FzdENvbnRhaW5lclwiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSwgUmVhY3ROb2RlQXJyYXkgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9Ub2FzdC5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgSW1hZ2VUeXBlID0ge1xuICBzcmM6IHN0cmluZztcbiAgYWx0OiBzdHJpbmc7XG59XG5cbnR5cGUgVG9hc3RQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZSxcbiAgYnV0dG9uczogUmVhY3ROb2RlQXJyYXksXG4gIGltYWdlPzogSW1hZ2VUeXBlLFxuICBvbkNsaWNrPzogKCkgPT4gdm9pZCxcbn07XG5cbmZ1bmN0aW9uIFRvYXN0KHsgY2hpbGRyZW4sIGltYWdlLCBidXR0b25zLCBvbkNsaWNrID0gKCkgPT4ge319OiBUb2FzdFByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLnRvYXN0XSl9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJ0b2FzdFwiXG4gICAgPlxuICAgICAge2ltYWdlICYmIChcbiAgICAgICAgPGltZ1xuICAgICAgICAgIGRhdGEtdGVzdGlkPVwidG9hc3QtaW1hZ2VcIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRvYXN0SW1hZ2V9XG4gICAgICAgICAgc3JjPXtpbWFnZS5zcmN9XG4gICAgICAgICAgYWx0PXtpbWFnZS5hbHR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50b2FzdENvbnRlbnR9PntjaGlsZHJlbn08L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudG9hc3RCdXR0b25zfT57YnV0dG9uc308L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVG9hc3Q7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1widG9hc3RcIjpcIl8zc0JzX0VSWFYzazBTUU1HVXkyV2o0XCIsXCJlbnRyYW5jZVwiOlwiXzFfeGp0TGVVTW9FWE5BLXFPRVpoY3hcIixcInRvYXN0Q29udGVudFwiOlwiXzEwbEJFVENVM1VORlI4cHkxcTFxLWhcIixcInRvYXN0SW1hZ2VcIjpcIl8zQ2kwd3BPYms2b3FmN2R3a0hzRldvXCIsXCJ0b2FzdEJ1dHRvbnNcIjpcIkZFV0RuRHNQLTlBOUpIRzIwcUJTNVwifTsiLCJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vVG9hc3RDb250YWluZXIubW9kdWxlLmNzc1wiO1xuXG50eXBlIFRvYXN0Q29udGFpbmVyUHJvcHMgPSB7XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xufVxuZnVuY3Rpb24gVG9hc3RDb250YWluZXIoeyBjaGlsZHJlbiB9OiBUb2FzdENvbnRhaW5lclByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLnRvYXN0Q29udGFpbmVyXSl9XG4gICAgICBkYXRhLXRlc3RpZD1cInRvYXN0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBUb2FzdENvbnRhaW5lcjtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJ0b2FzdENvbnRhaW5lclwiOlwiXzNGOGNKVTF3bUttYnJqaWRnLU8zenBcIn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBWaWRlbyB9IGZyb20gXCIuL1ZpZGVvXCI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vVmlkZW8ubW9kdWxlLmNzc1wiO1xuXG4vKipcbiAqIFRoZXJlIGlzIGEga25vd24gaXNzdWUgaW4gUmVhY3QgaW4gcmVnYXJkcyB0byB0aGUgJ211dGVkJyBwcm9wZXJ0eSB3aGljaCBjYXVzZXMgdGhlIHdhcm5pbmc6XG4gKiBcIldhcm5pbmc6IHVuc3RhYmxlX2ZsdXNoRGlzY3JldGVVcGRhdGVzOiBDYW5ub3QgZmx1c2ggdXBkYXRlcyB3aGVuIFJlYWN0IGlzIGFscmVhZHkgcmVuZGVyaW5nLlwiXG4gKlxuICogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xMDM4OVxuICogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy82NTQ0XG4gKiBodHRwczovL2dpdGh1Yi5jb20vdGVzdGluZy1saWJyYXJ5L3JlYWN0LXRlc3RpbmctbGlicmFyeS9pc3N1ZXMvNDcwXG4gKi9cblxudHlwZSBMYXlvdXQgPSBcImNvdmVyXCIgfCBcImNvbnRhaW5cIiB8IFwic3RyZXRjaEhvcml6b250YWxseVwiIHwgXCJzdHJldGNoVmVydGljYWxseVwiO1xuXG50eXBlIFZpZGVvUHJvcHMgPSB7XG4gIHNyYzogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIGxheW91dD86IExheW91dCxcbiAgYXV0b1BsYXk/OiBib29sZWFuO1xuICBsb29wPzogYm9vbGVhbjtcbiAgbXV0ZWQ/OiBib29sZWFuO1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn07XG5cbmZ1bmN0aW9uIFZpZGVvKHtcbiAgc3JjLFxuICB0eXBlLFxuICBjaGlsZHJlbixcbiAgbXV0ZWQgPSB0cnVlLFxuICBsb29wID0gdHJ1ZSxcbiAgYXV0b1BsYXkgPSB0cnVlLFxuICBsYXlvdXQgPSBcImNvbnRhaW5cIlxufTogVmlkZW9Qcm9wcykge1xuICByZXR1cm4gY2hpbGRyZW4gPyAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMuY29udGFpbmVyLCBzdHlsZXMuaGFzT3ZlcmxheV0pfT5cbiAgICAgIDx2aWRlb1xuICAgICAgICBkYXRhLXRlc3RpZD1cInZpZGVvXCJcbiAgICAgICAgY3Jvc3NPcmlnaW49XCJhbm9ueW1vdXNcIlxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMudmlkZW8sIHN0eWxlc1tsYXlvdXRdXSl9XG4gICAgICAgIG11dGVkPXttdXRlZH1cbiAgICAgICAgbG9vcD17bG9vcH1cbiAgICAgICAgYXV0b1BsYXk9e2F1dG9QbGF5fVxuICAgICAgICBwbGF5c0lubGluZT17dHJ1ZX1cbiAgICAgID5cbiAgICAgICAgPHNvdXJjZSBkYXRhLXRlc3RpZD1cInNvdXJjZVwiIHNyYz17c3JjfSB0eXBlPXt0eXBlfSAvPlxuICAgICAgPC92aWRlbz5cbiAgICAgIHtjaGlsZHJlbiAmJiA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm92ZXJsYXl9PntjaGlsZHJlbn08L2Rpdj59XG4gICAgPC9kaXY+XG4gICkgOiAoXG4gICAgPHZpZGVvXG4gICAgICBkYXRhLXRlc3RpZD1cInZpZGVvXCJcbiAgICAgIGNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy52aWRlbywgc3R5bGVzW2xheW91dF1dKX1cbiAgICAgIG11dGVkPXttdXRlZH1cbiAgICAgIGxvb3A9e2xvb3B9XG4gICAgICBhdXRvUGxheT17YXV0b1BsYXl9XG4gICAgICBwbGF5c0lubGluZT17dHJ1ZX1cbiAgICA+XG4gICAgICA8c291cmNlIGRhdGEtdGVzdGlkPVwic291cmNlXCIgc3JjPXtzcmN9IHR5cGU9e3R5cGV9IC8+XG4gICAgPC92aWRlbz5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVmlkZW87XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29udGFpbmVyXCI6XCJfMkVRQmZyNXc4aDF4MWJxLTJmcDZ3VFwiLFwiaGFzT3ZlcmxheVwiOlwiXzNHUk1wbUdrX1BxSVRjVXYwTmZtdDNcIixcInZpZGVvXCI6XCJfMnRaZlhrRWhDa3dBemZhR19CVm4wQlwiLFwiY292ZXJcIjpcIl8zT1lIZmJ6YUwzUUhhbldaQmo4UnhPXCIsXCJjb250YWluXCI6XCJfM0lfYzdzaGNTcnRHX0Z4dnZVMkllRVwiLFwic3RyZXRjaEhvcml6b250YWxseVwiOlwiXzFaN2RMOXVFZDBLc3gzQ2tyWmhzQjhcIixcInN0cmV0Y2hWZXJ0aWNhbGx5XCI6XCJfMXpickRZTzBmWUZKVmM3eHZzVFlpNlwiLFwib3ZlcmxheVwiOlwiXzJvc1hkN1Nrd0YwTGgtMnlpcXVZUU1cIn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VUb2dnbGUgfSBmcm9tIFwiLi91c2VUb2dnbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlT3V0c2lkZUNsaWNrIH0gZnJvbSBcIi4vdXNlT3V0c2lkZUNsaWNrXCI7XG4iLCJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlVG9nZ2xlKFxuICBpbml0aWFsVmFsdWUgPSBmYWxzZVxuKTogW2Jvb2xlYW4sIChuZXdWYWx1ZT86IGJvb2xlYW4pID0+IHZvaWRdIHtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZTxib29sZWFuPihpbml0aWFsVmFsdWUpO1xuXG4gIGNvbnN0IHRvZ2dsZSA9IChuZXdWYWx1ZT86IGJvb2xlYW4pID0+IHtcbiAgICBpZiAodHlwZW9mIG5ld1ZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRWYWx1ZSgocHJldlZhbHVlKSA9PiB7XG4gICAgICAgIHJldHVybiAhcHJldlZhbHVlO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBbdmFsdWUsIHVzZUNhbGxiYWNrKHRvZ2dsZSwgW3ZhbHVlXSldO1xufVxuXG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG50eXBlIENhbGxiYWNrID0gKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlT3V0c2lkZUNsaWNrKGNhbGxiYWNrOiBDYWxsYmFjaykge1xuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGljayA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGlmICghcmVmLmN1cnJlbnQgfHwgcmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2FsbGJhY2soZXZlbnQpO1xuICAgIH07XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlQ2xpY2spO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsIGhhbmRsZUNsaWNrKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlQ2xpY2spO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIiwgaGFuZGxlQ2xpY2spO1xuICAgIH07XG4gIH0sIFtjYWxsYmFja10pO1xuXG4gIHJldHVybiByZWY7XG59XG4iLCIvKiFcbiAqIGhvdGtleXMtanMgdjMuOC4xXG4gKiBBIHNpbXBsZSBtaWNyby1saWJyYXJ5IGZvciBkZWZpbmluZyBhbmQgZGlzcGF0Y2hpbmcga2V5Ym9hcmQgc2hvcnRjdXRzLiBJdCBoYXMgbm8gZGVwZW5kZW5jaWVzLlxuICogXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAga2Vubnkgd29uZyA8d293b2hvb0BxcS5jb20+XG4gKiBodHRwOi8vamF5d2NqbG92ZS5naXRodWIuaW8vaG90a2V5c1xuICogXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKi9cblxudmFyIGlzZmYgPSB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyA/IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdmaXJlZm94JykgPiAwIDogZmFsc2U7IC8vIOe7keWumuS6i+S7tlxuXG5mdW5jdGlvbiBhZGRFdmVudChvYmplY3QsIGV2ZW50LCBtZXRob2QpIHtcbiAgaWYgKG9iamVjdC5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIG1ldGhvZCwgZmFsc2UpO1xuICB9IGVsc2UgaWYgKG9iamVjdC5hdHRhY2hFdmVudCkge1xuICAgIG9iamVjdC5hdHRhY2hFdmVudChcIm9uXCIuY29uY2F0KGV2ZW50KSwgZnVuY3Rpb24gKCkge1xuICAgICAgbWV0aG9kKHdpbmRvdy5ldmVudCk7XG4gICAgfSk7XG4gIH1cbn0gLy8g5L+u6aWw6ZSu6L2s5o2i5oiQ5a+55bqU55qE6ZSu56CBXG5cblxuZnVuY3Rpb24gZ2V0TW9kcyhtb2RpZmllciwga2V5KSB7XG4gIHZhciBtb2RzID0ga2V5LnNsaWNlKDAsIGtleS5sZW5ndGggLSAxKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG1vZHMubGVuZ3RoOyBpKyspIHtcbiAgICBtb2RzW2ldID0gbW9kaWZpZXJbbW9kc1tpXS50b0xvd2VyQ2FzZSgpXTtcbiAgfVxuXG4gIHJldHVybiBtb2RzO1xufSAvLyDlpITnkIbkvKDnmoRrZXnlrZfnrKbkuLLovazmjaLmiJDmlbDnu4RcblxuXG5mdW5jdGlvbiBnZXRLZXlzKGtleSkge1xuICBpZiAodHlwZW9mIGtleSAhPT0gJ3N0cmluZycpIGtleSA9ICcnO1xuICBrZXkgPSBrZXkucmVwbGFjZSgvXFxzL2csICcnKTsgLy8g5Yy56YWN5Lu75L2V56m655m95a2X56ymLOWMheaLrOepuuagvOOAgeWItuihqOespuOAgeaNoumhteespuetieetiVxuXG4gIHZhciBrZXlzID0ga2V5LnNwbGl0KCcsJyk7IC8vIOWQjOaXtuiuvue9ruWkmuS4quW/q+aNt+mUru+8jOS7pScsJ+WIhuWJslxuXG4gIHZhciBpbmRleCA9IGtleXMubGFzdEluZGV4T2YoJycpOyAvLyDlv6vmjbfplK7lj6/og73ljIXlkKsnLCfvvIzpnIDnibnmrorlpITnkIZcblxuICBmb3IgKDsgaW5kZXggPj0gMDspIHtcbiAgICBrZXlzW2luZGV4IC0gMV0gKz0gJywnO1xuICAgIGtleXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBpbmRleCA9IGtleXMubGFzdEluZGV4T2YoJycpO1xuICB9XG5cbiAgcmV0dXJuIGtleXM7XG59IC8vIOavlOi+g+S/rumlsOmUrueahOaVsOe7hFxuXG5cbmZ1bmN0aW9uIGNvbXBhcmVBcnJheShhMSwgYTIpIHtcbiAgdmFyIGFycjEgPSBhMS5sZW5ndGggPj0gYTIubGVuZ3RoID8gYTEgOiBhMjtcbiAgdmFyIGFycjIgPSBhMS5sZW5ndGggPj0gYTIubGVuZ3RoID8gYTIgOiBhMTtcbiAgdmFyIGlzSW5kZXggPSB0cnVlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyMS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChhcnIyLmluZGV4T2YoYXJyMVtpXSkgPT09IC0xKSBpc0luZGV4ID0gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gaXNJbmRleDtcbn1cblxudmFyIF9rZXlNYXAgPSB7XG4gIGJhY2tzcGFjZTogOCxcbiAgdGFiOiA5LFxuICBjbGVhcjogMTIsXG4gIGVudGVyOiAxMyxcbiAgcmV0dXJuOiAxMyxcbiAgZXNjOiAyNyxcbiAgZXNjYXBlOiAyNyxcbiAgc3BhY2U6IDMyLFxuICBsZWZ0OiAzNyxcbiAgdXA6IDM4LFxuICByaWdodDogMzksXG4gIGRvd246IDQwLFxuICBkZWw6IDQ2LFxuICBkZWxldGU6IDQ2LFxuICBpbnM6IDQ1LFxuICBpbnNlcnQ6IDQ1LFxuICBob21lOiAzNixcbiAgZW5kOiAzNSxcbiAgcGFnZXVwOiAzMyxcbiAgcGFnZWRvd246IDM0LFxuICBjYXBzbG9jazogMjAsXG4gICfih6onOiAyMCxcbiAgJywnOiAxODgsXG4gICcuJzogMTkwLFxuICAnLyc6IDE5MSxcbiAgJ2AnOiAxOTIsXG4gICctJzogaXNmZiA/IDE3MyA6IDE4OSxcbiAgJz0nOiBpc2ZmID8gNjEgOiAxODcsXG4gICc7JzogaXNmZiA/IDU5IDogMTg2LFxuICAnXFwnJzogMjIyLFxuICAnWyc6IDIxOSxcbiAgJ10nOiAyMjEsXG4gICdcXFxcJzogMjIwXG59OyAvLyBNb2RpZmllciBLZXlzXG5cbnZhciBfbW9kaWZpZXIgPSB7XG4gIC8vIHNoaWZ0S2V5XG4gICfih6cnOiAxNixcbiAgc2hpZnQ6IDE2LFxuICAvLyBhbHRLZXlcbiAgJ+KMpSc6IDE4LFxuICBhbHQ6IDE4LFxuICBvcHRpb246IDE4LFxuICAvLyBjdHJsS2V5XG4gICfijIMnOiAxNyxcbiAgY3RybDogMTcsXG4gIGNvbnRyb2w6IDE3LFxuICAvLyBtZXRhS2V5XG4gICfijJgnOiA5MSxcbiAgY21kOiA5MSxcbiAgY29tbWFuZDogOTFcbn07XG52YXIgbW9kaWZpZXJNYXAgPSB7XG4gIDE2OiAnc2hpZnRLZXknLFxuICAxODogJ2FsdEtleScsXG4gIDE3OiAnY3RybEtleScsXG4gIDkxOiAnbWV0YUtleScsXG4gIHNoaWZ0S2V5OiAxNixcbiAgY3RybEtleTogMTcsXG4gIGFsdEtleTogMTgsXG4gIG1ldGFLZXk6IDkxXG59O1xudmFyIF9tb2RzID0ge1xuICAxNjogZmFsc2UsXG4gIDE4OiBmYWxzZSxcbiAgMTc6IGZhbHNlLFxuICA5MTogZmFsc2Vcbn07XG52YXIgX2hhbmRsZXJzID0ge307IC8vIEYxfkYxMiBzcGVjaWFsIGtleVxuXG5mb3IgKHZhciBrID0gMTsgayA8IDIwOyBrKyspIHtcbiAgX2tleU1hcFtcImZcIi5jb25jYXQoayldID0gMTExICsgaztcbn1cblxudmFyIF9kb3duS2V5cyA9IFtdOyAvLyDorrDlvZXmkYHkuIvnmoTnu5HlrprplK5cblxudmFyIF9zY29wZSA9ICdhbGwnOyAvLyDpu5jorqTng63plK7ojIPlm7RcblxudmFyIGVsZW1lbnRIYXNCaW5kRXZlbnQgPSBbXTsgLy8g5bey57uR5a6a5LqL5Lu255qE6IqC54K56K6w5b2VXG4vLyDov5Tlm57plK7noIFcblxudmFyIGNvZGUgPSBmdW5jdGlvbiBjb2RlKHgpIHtcbiAgcmV0dXJuIF9rZXlNYXBbeC50b0xvd2VyQ2FzZSgpXSB8fCBfbW9kaWZpZXJbeC50b0xvd2VyQ2FzZSgpXSB8fCB4LnRvVXBwZXJDYXNlKCkuY2hhckNvZGVBdCgwKTtcbn07IC8vIOiuvue9ruiOt+WPluW9k+WJjeiMg+WbtO+8iOm7mOiupOS4uifmiYDmnIkn77yJXG5cblxuZnVuY3Rpb24gc2V0U2NvcGUoc2NvcGUpIHtcbiAgX3Njb3BlID0gc2NvcGUgfHwgJ2FsbCc7XG59IC8vIOiOt+WPluW9k+WJjeiMg+WbtFxuXG5cbmZ1bmN0aW9uIGdldFNjb3BlKCkge1xuICByZXR1cm4gX3Njb3BlIHx8ICdhbGwnO1xufSAvLyDojrflj5bmkYHkuIvnu5HlrprplK7nmoTplK7lgLxcblxuXG5mdW5jdGlvbiBnZXRQcmVzc2VkS2V5Q29kZXMoKSB7XG4gIHJldHVybiBfZG93bktleXMuc2xpY2UoMCk7XG59IC8vIOihqOWNleaOp+S7tuaOp+S7tuWIpOaWrSDov5Tlm54gQm9vbGVhblxuLy8gaG90a2V5IGlzIGVmZmVjdGl2ZSBvbmx5IHdoZW4gZmlsdGVyIHJldHVybiB0cnVlXG5cblxuZnVuY3Rpb24gZmlsdGVyKGV2ZW50KSB7XG4gIHZhciB0YXJnZXQgPSBldmVudC50YXJnZXQgfHwgZXZlbnQuc3JjRWxlbWVudDtcbiAgdmFyIHRhZ05hbWUgPSB0YXJnZXQudGFnTmFtZTtcbiAgdmFyIGZsYWcgPSB0cnVlOyAvLyBpZ25vcmU6IGlzQ29udGVudEVkaXRhYmxlID09PSAndHJ1ZScsIDxpbnB1dD4gYW5kIDx0ZXh0YXJlYT4gd2hlbiByZWFkT25seSBzdGF0ZSBpcyBmYWxzZSwgPHNlbGVjdD5cblxuICBpZiAodGFyZ2V0LmlzQ29udGVudEVkaXRhYmxlIHx8ICh0YWdOYW1lID09PSAnSU5QVVQnIHx8IHRhZ05hbWUgPT09ICdURVhUQVJFQScgfHwgdGFnTmFtZSA9PT0gJ1NFTEVDVCcpICYmICF0YXJnZXQucmVhZE9ubHkpIHtcbiAgICBmbGFnID0gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZmxhZztcbn0gLy8g5Yik5pat5pGB5LiL55qE6ZSu5piv5ZCm5Li65p+Q5Liq6ZSu77yM6L+U5ZuedHJ1ZeaIluiAhWZhbHNlXG5cblxuZnVuY3Rpb24gaXNQcmVzc2VkKGtleUNvZGUpIHtcbiAgaWYgKHR5cGVvZiBrZXlDb2RlID09PSAnc3RyaW5nJykge1xuICAgIGtleUNvZGUgPSBjb2RlKGtleUNvZGUpOyAvLyDovazmjaLmiJDplK7noIFcbiAgfVxuXG4gIHJldHVybiBfZG93bktleXMuaW5kZXhPZihrZXlDb2RlKSAhPT0gLTE7XG59IC8vIOW+queOr+WIoOmZpGhhbmRsZXJz5Lit55qE5omA5pyJIHNjb3BlKOiMg+WbtClcblxuXG5mdW5jdGlvbiBkZWxldGVTY29wZShzY29wZSwgbmV3U2NvcGUpIHtcbiAgdmFyIGhhbmRsZXJzO1xuICB2YXIgaTsgLy8g5rKh5pyJ5oyH5a6ac2NvcGXvvIzojrflj5ZzY29wZVxuXG4gIGlmICghc2NvcGUpIHNjb3BlID0gZ2V0U2NvcGUoKTtcblxuICBmb3IgKHZhciBrZXkgaW4gX2hhbmRsZXJzKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChfaGFuZGxlcnMsIGtleSkpIHtcbiAgICAgIGhhbmRsZXJzID0gX2hhbmRsZXJzW2tleV07XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBoYW5kbGVycy5sZW5ndGg7KSB7XG4gICAgICAgIGlmIChoYW5kbGVyc1tpXS5zY29wZSA9PT0gc2NvcGUpIGhhbmRsZXJzLnNwbGljZShpLCAxKTtlbHNlIGkrKztcbiAgICAgIH1cbiAgICB9XG4gIH0gLy8g5aaC5p6cc2NvcGXooqvliKDpmaTvvIzlsIZzY29wZemHjee9ruS4umFsbFxuXG5cbiAgaWYgKGdldFNjb3BlKCkgPT09IHNjb3BlKSBzZXRTY29wZShuZXdTY29wZSB8fCAnYWxsJyk7XG59IC8vIOa4hemZpOS/rumlsOmUrlxuXG5cbmZ1bmN0aW9uIGNsZWFyTW9kaWZpZXIoZXZlbnQpIHtcbiAgdmFyIGtleSA9IGV2ZW50LmtleUNvZGUgfHwgZXZlbnQud2hpY2ggfHwgZXZlbnQuY2hhckNvZGU7XG5cbiAgdmFyIGkgPSBfZG93bktleXMuaW5kZXhPZihrZXkpOyAvLyDku47liJfooajkuK3muIXpmaTmjInljovov4fnmoTplK5cblxuXG4gIGlmIChpID49IDApIHtcbiAgICBfZG93bktleXMuc3BsaWNlKGksIDEpO1xuICB9IC8vIOeJueauiuWkhOeQhiBjbW1hbmQg6ZSu77yM5ZyoIGNtbWFuZCDnu4TlkIjlv6vmjbfplK4ga2V5dXAg5Y+q5omn6KGM5LiA5qyh55qE6Zeu6aKYXG5cblxuICBpZiAoZXZlbnQua2V5ICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnbWV0YScpIHtcbiAgICBfZG93bktleXMuc3BsaWNlKDAsIF9kb3duS2V5cy5sZW5ndGgpO1xuICB9IC8vIOS/rumlsOmUriBzaGlmdEtleSBhbHRLZXkgY3RybEtleSAoY29tbWFuZHx8bWV0YUtleSkg5riF6ZmkXG5cblxuICBpZiAoa2V5ID09PSA5MyB8fCBrZXkgPT09IDIyNCkga2V5ID0gOTE7XG5cbiAgaWYgKGtleSBpbiBfbW9kcykge1xuICAgIF9tb2RzW2tleV0gPSBmYWxzZTsgLy8g5bCG5L+u6aWw6ZSu6YeN572u5Li6ZmFsc2VcblxuICAgIGZvciAodmFyIGsgaW4gX21vZGlmaWVyKSB7XG4gICAgICBpZiAoX21vZGlmaWVyW2tdID09PSBrZXkpIGhvdGtleXNba10gPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdW5iaW5kKGtleXNJbmZvKSB7XG4gIC8vIHVuYmluZCgpLCB1bmJpbmQgYWxsIGtleXNcbiAgaWYgKCFrZXlzSW5mbykge1xuICAgIE9iamVjdC5rZXlzKF9oYW5kbGVycykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICByZXR1cm4gZGVsZXRlIF9oYW5kbGVyc1trZXldO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoa2V5c0luZm8pKSB7XG4gICAgLy8gc3VwcG9ydCBsaWtlIDogdW5iaW5kKFt7a2V5OiAnY3RybCthJywgc2NvcGU6ICdzMSd9LCB7a2V5OiAnY3RybC1hJywgc2NvcGU6ICdzMicsIHNwbGl0S2V5OiAnLSd9XSlcbiAgICBrZXlzSW5mby5mb3JFYWNoKGZ1bmN0aW9uIChpbmZvKSB7XG4gICAgICBpZiAoaW5mby5rZXkpIGVhY2hVbmJpbmQoaW5mbyk7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGtleXNJbmZvID09PSAnb2JqZWN0Jykge1xuICAgIC8vIHN1cHBvcnQgbGlrZSB1bmJpbmQoe2tleTogJ2N0cmwrYSwgY3RybCtiJywgc2NvcGU6J2FiYyd9KVxuICAgIGlmIChrZXlzSW5mby5rZXkpIGVhY2hVbmJpbmQoa2V5c0luZm8pO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBrZXlzSW5mbyA9PT0gJ3N0cmluZycpIHtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICAvLyBzdXBwb3J0IG9sZCBtZXRob2RcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgdmFyIHNjb3BlID0gYXJnc1swXSxcbiAgICAgICAgbWV0aG9kID0gYXJnc1sxXTtcblxuICAgIGlmICh0eXBlb2Ygc2NvcGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG1ldGhvZCA9IHNjb3BlO1xuICAgICAgc2NvcGUgPSAnJztcbiAgICB9XG5cbiAgICBlYWNoVW5iaW5kKHtcbiAgICAgIGtleToga2V5c0luZm8sXG4gICAgICBzY29wZTogc2NvcGUsXG4gICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgIHNwbGl0S2V5OiAnKydcbiAgICB9KTtcbiAgfVxufSAvLyDop6PpmaTnu5Hlrprmn5DkuKrojIPlm7TnmoTlv6vmjbfplK5cblxuXG52YXIgZWFjaFVuYmluZCA9IGZ1bmN0aW9uIGVhY2hVbmJpbmQoX3JlZikge1xuICB2YXIga2V5ID0gX3JlZi5rZXksXG4gICAgICBzY29wZSA9IF9yZWYuc2NvcGUsXG4gICAgICBtZXRob2QgPSBfcmVmLm1ldGhvZCxcbiAgICAgIF9yZWYkc3BsaXRLZXkgPSBfcmVmLnNwbGl0S2V5LFxuICAgICAgc3BsaXRLZXkgPSBfcmVmJHNwbGl0S2V5ID09PSB2b2lkIDAgPyAnKycgOiBfcmVmJHNwbGl0S2V5O1xuICB2YXIgbXVsdGlwbGVLZXlzID0gZ2V0S2V5cyhrZXkpO1xuICBtdWx0aXBsZUtleXMuZm9yRWFjaChmdW5jdGlvbiAob3JpZ2luS2V5KSB7XG4gICAgdmFyIHVuYmluZEtleXMgPSBvcmlnaW5LZXkuc3BsaXQoc3BsaXRLZXkpO1xuICAgIHZhciBsZW4gPSB1bmJpbmRLZXlzLmxlbmd0aDtcbiAgICB2YXIgbGFzdEtleSA9IHVuYmluZEtleXNbbGVuIC0gMV07XG4gICAgdmFyIGtleUNvZGUgPSBsYXN0S2V5ID09PSAnKicgPyAnKicgOiBjb2RlKGxhc3RLZXkpO1xuICAgIGlmICghX2hhbmRsZXJzW2tleUNvZGVdKSByZXR1cm47IC8vIOWIpOaWreaYr+WQpuS8oOWFpeiMg+WbtO+8jOayoeacieWwseiOt+WPluiMg+WbtFxuXG4gICAgaWYgKCFzY29wZSkgc2NvcGUgPSBnZXRTY29wZSgpO1xuICAgIHZhciBtb2RzID0gbGVuID4gMSA/IGdldE1vZHMoX21vZGlmaWVyLCB1bmJpbmRLZXlzKSA6IFtdO1xuICAgIF9oYW5kbGVyc1trZXlDb2RlXSA9IF9oYW5kbGVyc1trZXlDb2RlXS5tYXAoZnVuY3Rpb24gKHJlY29yZCkge1xuICAgICAgLy8g6YCa6L+H5Ye95pWw5Yik5pat77yM5piv5ZCm6Kej6Zmk57uR5a6a77yM5Ye95pWw55u4562J55u05o6l6L+U5ZueXG4gICAgICB2YXIgaXNNYXRjaGluZ01ldGhvZCA9IG1ldGhvZCA/IHJlY29yZC5tZXRob2QgPT09IG1ldGhvZCA6IHRydWU7XG5cbiAgICAgIGlmIChpc01hdGNoaW5nTWV0aG9kICYmIHJlY29yZC5zY29wZSA9PT0gc2NvcGUgJiYgY29tcGFyZUFycmF5KHJlY29yZC5tb2RzLCBtb2RzKSkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWNvcmQ7XG4gICAgfSk7XG4gIH0pO1xufTsgLy8g5a+555uR5ZCs5a+55bqU5b+r5o236ZSu55qE5Zue6LCD5Ye95pWw6L+b6KGM5aSE55CGXG5cblxuZnVuY3Rpb24gZXZlbnRIYW5kbGVyKGV2ZW50LCBoYW5kbGVyLCBzY29wZSkge1xuICB2YXIgbW9kaWZpZXJzTWF0Y2g7IC8vIOeci+Wug+aYr+WQpuWcqOW9k+WJjeiMg+WbtFxuXG4gIGlmIChoYW5kbGVyLnNjb3BlID09PSBzY29wZSB8fCBoYW5kbGVyLnNjb3BlID09PSAnYWxsJykge1xuICAgIC8vIOajgOafpeaYr+WQpuWMuemFjeS/rumlsOespu+8iOWmguaenOaciei/lOWbnnRydWXvvIlcbiAgICBtb2RpZmllcnNNYXRjaCA9IGhhbmRsZXIubW9kcy5sZW5ndGggPiAwO1xuXG4gICAgZm9yICh2YXIgeSBpbiBfbW9kcykge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChfbW9kcywgeSkpIHtcbiAgICAgICAgaWYgKCFfbW9kc1t5XSAmJiBoYW5kbGVyLm1vZHMuaW5kZXhPZigreSkgPiAtMSB8fCBfbW9kc1t5XSAmJiBoYW5kbGVyLm1vZHMuaW5kZXhPZigreSkgPT09IC0xKSB7XG4gICAgICAgICAgbW9kaWZpZXJzTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8g6LCD55So5aSE55CG56iL5bqP77yM5aaC5p6c5piv5L+u6aWw6ZSu5LiN5YGa5aSE55CGXG5cblxuICAgIGlmIChoYW5kbGVyLm1vZHMubGVuZ3RoID09PSAwICYmICFfbW9kc1sxNl0gJiYgIV9tb2RzWzE4XSAmJiAhX21vZHNbMTddICYmICFfbW9kc1s5MV0gfHwgbW9kaWZpZXJzTWF0Y2ggfHwgaGFuZGxlci5zaG9ydGN1dCA9PT0gJyonKSB7XG4gICAgICBpZiAoaGFuZGxlci5tZXRob2QoZXZlbnQsIGhhbmRsZXIpID09PSBmYWxzZSkge1xuICAgICAgICBpZiAoZXZlbnQucHJldmVudERlZmF1bHQpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ZWxzZSBldmVudC5yZXR1cm5WYWx1ZSA9IGZhbHNlO1xuICAgICAgICBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKGV2ZW50LmNhbmNlbEJ1YmJsZSkgZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0gLy8g5aSE55CGa2V5ZG93buS6i+S7tlxuXG5cbmZ1bmN0aW9uIGRpc3BhdGNoKGV2ZW50KSB7XG4gIHZhciBhc3RlcmlzayA9IF9oYW5kbGVyc1snKiddO1xuICB2YXIga2V5ID0gZXZlbnQua2V5Q29kZSB8fCBldmVudC53aGljaCB8fCBldmVudC5jaGFyQ29kZTsgLy8g6KGo5Y2V5o6n5Lu26L+H5rukIOm7mOiupOihqOWNleaOp+S7tuS4jeinpuWPkeW/q+aNt+mUrlxuXG4gIGlmICghaG90a2V5cy5maWx0ZXIuY2FsbCh0aGlzLCBldmVudCkpIHJldHVybjsgLy8gR2Vja28oRmlyZWZveCnnmoRjb21tYW5k6ZSu5YC8MjI077yM5ZyoV2Via2l0KENocm9tZSnkuK3kv53mjIHkuIDoh7RcbiAgLy8gV2Via2l05bem5Y+zIGNvbW1hbmQg6ZSu5YC85LiN5LiA5qC3XG5cbiAgaWYgKGtleSA9PT0gOTMgfHwga2V5ID09PSAyMjQpIGtleSA9IDkxO1xuICAvKipcbiAgICogQ29sbGVjdCBib3VuZCBrZXlzXG4gICAqIElmIGFuIElucHV0IE1ldGhvZCBFZGl0b3IgaXMgcHJvY2Vzc2luZyBrZXkgaW5wdXQgYW5kIHRoZSBldmVudCBpcyBrZXlkb3duLCByZXR1cm4gMjI5LlxuICAgKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNTA0MzkzNC9pcy1pdC1vay10by1pZ25vcmUta2V5ZG93bi1ldmVudHMtd2l0aC1rZXljb2RlLTIyOVxuICAgKiBodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctZG9tLzIwMTBKdWxTZXAvYXR0LTAxODIva2V5Q29kZS1zcGVjLmh0bWxcbiAgICovXG5cbiAgaWYgKF9kb3duS2V5cy5pbmRleE9mKGtleSkgPT09IC0xICYmIGtleSAhPT0gMjI5KSBfZG93bktleXMucHVzaChrZXkpO1xuICAvKipcbiAgICogSmVzdCB0ZXN0IGNhc2VzIGFyZSByZXF1aXJlZC5cbiAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgKi9cblxuICBbJ2N0cmxLZXknLCAnYWx0S2V5JywgJ3NoaWZ0S2V5JywgJ21ldGFLZXknXS5mb3JFYWNoKGZ1bmN0aW9uIChrZXlOYW1lKSB7XG4gICAgdmFyIGtleU51bSA9IG1vZGlmaWVyTWFwW2tleU5hbWVdO1xuXG4gICAgaWYgKGV2ZW50W2tleU5hbWVdICYmIF9kb3duS2V5cy5pbmRleE9mKGtleU51bSkgPT09IC0xKSB7XG4gICAgICBfZG93bktleXMucHVzaChrZXlOdW0pO1xuICAgIH0gZWxzZSBpZiAoIWV2ZW50W2tleU5hbWVdICYmIF9kb3duS2V5cy5pbmRleE9mKGtleU51bSkgPiAtMSkge1xuICAgICAgX2Rvd25LZXlzLnNwbGljZShfZG93bktleXMuaW5kZXhPZihrZXlOdW0pLCAxKTtcbiAgICB9IGVsc2UgaWYgKGtleU5hbWUgPT09ICdtZXRhS2V5JyAmJiBldmVudFtrZXlOYW1lXSAmJiBfZG93bktleXMubGVuZ3RoID09PSAzKSB7XG4gICAgICAvKipcbiAgICAgICAqIEZpeCBpZiBDb21tYW5kIGlzIHByZXNzZWQ6XG4gICAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgKi9cbiAgICAgIGlmICghKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQuYWx0S2V5KSkge1xuICAgICAgICBfZG93bktleXMgPSBfZG93bktleXMuc2xpY2UoX2Rvd25LZXlzLmluZGV4T2Yoa2V5TnVtKSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgLyoqXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICovXG5cbiAgaWYgKGtleSBpbiBfbW9kcykge1xuICAgIF9tb2RzW2tleV0gPSB0cnVlOyAvLyDlsIbnibnmrorlrZfnrKbnmoRrZXnms6jlhozliLAgaG90a2V5cyDkuIpcblxuICAgIGZvciAodmFyIGsgaW4gX21vZGlmaWVyKSB7XG4gICAgICBpZiAoX21vZGlmaWVyW2tdID09PSBrZXkpIGhvdGtleXNba10gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghYXN0ZXJpc2spIHJldHVybjtcbiAgfSAvLyDlsIYgbW9kaWZpZXJNYXAg6YeM6Z2i55qE5L+u6aWw6ZSu57uR5a6a5YiwIGV2ZW50IOS4rVxuXG5cbiAgZm9yICh2YXIgZSBpbiBfbW9kcykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoX21vZHMsIGUpKSB7XG4gICAgICBfbW9kc1tlXSA9IGV2ZW50W21vZGlmaWVyTWFwW2VdXTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9qYXl3Y2psb3ZlL2hvdGtleXMvcHVsbC8xMjlcbiAgICogVGhpcyBzb2x2ZXMgdGhlIGlzc3VlIGluIEZpcmVmb3ggb24gV2luZG93cyB3aGVyZSBob3RrZXlzIGNvcnJlc3BvbmRpbmcgdG8gc3BlY2lhbCBjaGFyYWN0ZXJzIHdvdWxkIG5vdCB0cmlnZ2VyLlxuICAgKiBBbiBleGFtcGxlIG9mIHRoaXMgaXMgY3RybCthbHQrbSBvbiBhIFN3ZWRpc2gga2V5Ym9hcmQgd2hpY2ggaXMgdXNlZCB0byB0eXBlIM68LlxuICAgKiBCcm93c2VyIHN1cHBvcnQ6IGh0dHBzOi8vY2FuaXVzZS5jb20vI2ZlYXQ9a2V5Ym9hcmRldmVudC1nZXRtb2RpZmllcnN0YXRlXG4gICAqL1xuXG5cbiAgaWYgKGV2ZW50LmdldE1vZGlmaWVyU3RhdGUgJiYgIShldmVudC5hbHRLZXkgJiYgIWV2ZW50LmN0cmxLZXkpICYmIGV2ZW50LmdldE1vZGlmaWVyU3RhdGUoJ0FsdEdyYXBoJykpIHtcbiAgICBpZiAoX2Rvd25LZXlzLmluZGV4T2YoMTcpID09PSAtMSkge1xuICAgICAgX2Rvd25LZXlzLnB1c2goMTcpO1xuICAgIH1cblxuICAgIGlmIChfZG93bktleXMuaW5kZXhPZigxOCkgPT09IC0xKSB7XG4gICAgICBfZG93bktleXMucHVzaCgxOCk7XG4gICAgfVxuXG4gICAgX21vZHNbMTddID0gdHJ1ZTtcbiAgICBfbW9kc1sxOF0gPSB0cnVlO1xuICB9IC8vIOiOt+WPluiMg+WbtCDpu5jorqTkuLogYGFsbGBcblxuXG4gIHZhciBzY29wZSA9IGdldFNjb3BlKCk7IC8vIOWvueS7u+S9leW/q+aNt+mUrumDvemcgOimgeWBmueahOWkhOeQhlxuXG4gIGlmIChhc3Rlcmlzaykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXN0ZXJpc2subGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhc3Rlcmlza1tpXS5zY29wZSA9PT0gc2NvcGUgJiYgKGV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyAmJiBhc3Rlcmlza1tpXS5rZXlkb3duIHx8IGV2ZW50LnR5cGUgPT09ICdrZXl1cCcgJiYgYXN0ZXJpc2tbaV0ua2V5dXApKSB7XG4gICAgICAgIGV2ZW50SGFuZGxlcihldmVudCwgYXN0ZXJpc2tbaV0sIHNjb3BlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gLy8ga2V5IOS4jeWcqCBfaGFuZGxlcnMg5Lit6L+U5ZueXG5cblxuICBpZiAoIShrZXkgaW4gX2hhbmRsZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAodmFyIF9pID0gMDsgX2kgPCBfaGFuZGxlcnNba2V5XS5sZW5ndGg7IF9pKyspIHtcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2tleWRvd24nICYmIF9oYW5kbGVyc1trZXldW19pXS5rZXlkb3duIHx8IGV2ZW50LnR5cGUgPT09ICdrZXl1cCcgJiYgX2hhbmRsZXJzW2tleV1bX2ldLmtleXVwKSB7XG4gICAgICBpZiAoX2hhbmRsZXJzW2tleV1bX2ldLmtleSkge1xuICAgICAgICB2YXIgcmVjb3JkID0gX2hhbmRsZXJzW2tleV1bX2ldO1xuICAgICAgICB2YXIgc3BsaXRLZXkgPSByZWNvcmQuc3BsaXRLZXk7XG4gICAgICAgIHZhciBrZXlTaG9ydGN1dCA9IHJlY29yZC5rZXkuc3BsaXQoc3BsaXRLZXkpO1xuICAgICAgICB2YXIgX2Rvd25LZXlzQ3VycmVudCA9IFtdOyAvLyDorrDlvZXlvZPliY3mjInplK7plK7lgLxcblxuICAgICAgICBmb3IgKHZhciBhID0gMDsgYSA8IGtleVNob3J0Y3V0Lmxlbmd0aDsgYSsrKSB7XG4gICAgICAgICAgX2Rvd25LZXlzQ3VycmVudC5wdXNoKGNvZGUoa2V5U2hvcnRjdXRbYV0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfZG93bktleXNDdXJyZW50LnNvcnQoKS5qb2luKCcnKSA9PT0gX2Rvd25LZXlzLnNvcnQoKS5qb2luKCcnKSkge1xuICAgICAgICAgIC8vIOaJvuWIsOWkhOeQhuWGheWuuVxuICAgICAgICAgIGV2ZW50SGFuZGxlcihldmVudCwgcmVjb3JkLCBzY29wZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn0gLy8g5Yik5patIGVsZW1lbnQg5piv5ZCm5bey57uP57uR5a6a5LqL5Lu2XG5cblxuZnVuY3Rpb24gaXNFbGVtZW50QmluZChlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50SGFzQmluZEV2ZW50LmluZGV4T2YoZWxlbWVudCkgPiAtMTtcbn1cblxuZnVuY3Rpb24gaG90a2V5cyhrZXksIG9wdGlvbiwgbWV0aG9kKSB7XG4gIF9kb3duS2V5cyA9IFtdO1xuICB2YXIga2V5cyA9IGdldEtleXMoa2V5KTsgLy8g6ZyA6KaB5aSE55CG55qE5b+r5o236ZSu5YiX6KGoXG5cbiAgdmFyIG1vZHMgPSBbXTtcbiAgdmFyIHNjb3BlID0gJ2FsbCc7IC8vIHNjb3Bl6buY6K6k5Li6YWxs77yM5omA5pyJ6IyD5Zu06YO95pyJ5pWIXG5cbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudDsgLy8g5b+r5o236ZSu5LqL5Lu257uR5a6a6IqC54K5XG5cbiAgdmFyIGkgPSAwO1xuICB2YXIga2V5dXAgPSBmYWxzZTtcbiAgdmFyIGtleWRvd24gPSB0cnVlO1xuICB2YXIgc3BsaXRLZXkgPSAnKyc7IC8vIOWvueS4uuiuvuWumuiMg+WbtOeahOWIpOaWrVxuXG4gIGlmIChtZXRob2QgPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgbWV0aG9kID0gb3B0aW9uO1xuICB9XG5cbiAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvcHRpb24pID09PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgIGlmIChvcHRpb24uc2NvcGUpIHNjb3BlID0gb3B0aW9uLnNjb3BlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICBpZiAob3B0aW9uLmVsZW1lbnQpIGVsZW1lbnQgPSBvcHRpb24uZWxlbWVudDsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gICAgaWYgKG9wdGlvbi5rZXl1cCkga2V5dXAgPSBvcHRpb24ua2V5dXA7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICAgIGlmIChvcHRpb24ua2V5ZG93biAhPT0gdW5kZWZpbmVkKSBrZXlkb3duID0gb3B0aW9uLmtleWRvd247IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9uLnNwbGl0S2V5ID09PSAnc3RyaW5nJykgc3BsaXRLZXkgPSBvcHRpb24uc3BsaXRLZXk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJykgc2NvcGUgPSBvcHRpb247IC8vIOWvueS6juavj+S4quW/q+aNt+mUrui/m+ihjOWkhOeQhlxuXG4gIGZvciAoOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGtleSA9IGtleXNbaV0uc3BsaXQoc3BsaXRLZXkpOyAvLyDmjInplK7liJfooahcblxuICAgIG1vZHMgPSBbXTsgLy8g5aaC5p6c5piv57uE5ZCI5b+r5o236ZSu5Y+W5b6X57uE5ZCI5b+r5o236ZSuXG5cbiAgICBpZiAoa2V5Lmxlbmd0aCA+IDEpIG1vZHMgPSBnZXRNb2RzKF9tb2RpZmllciwga2V5KTsgLy8g5bCG6Z2e5L+u6aWw6ZSu6L2s5YyW5Li66ZSu56CBXG5cbiAgICBrZXkgPSBrZXlba2V5Lmxlbmd0aCAtIDFdO1xuICAgIGtleSA9IGtleSA9PT0gJyonID8gJyonIDogY29kZShrZXkpOyAvLyAq6KGo56S65Yy56YWN5omA5pyJ5b+r5o236ZSuXG4gICAgLy8g5Yik5pata2V55piv5ZCm5ZyoX2hhbmRsZXJz5Lit77yM5LiN5Zyo5bCx6LWL5LiA5Liq56m65pWw57uEXG5cbiAgICBpZiAoIShrZXkgaW4gX2hhbmRsZXJzKSkgX2hhbmRsZXJzW2tleV0gPSBbXTtcblxuICAgIF9oYW5kbGVyc1trZXldLnB1c2goe1xuICAgICAga2V5dXA6IGtleXVwLFxuICAgICAga2V5ZG93bjoga2V5ZG93bixcbiAgICAgIHNjb3BlOiBzY29wZSxcbiAgICAgIG1vZHM6IG1vZHMsXG4gICAgICBzaG9ydGN1dDoga2V5c1tpXSxcbiAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAga2V5OiBrZXlzW2ldLFxuICAgICAgc3BsaXRLZXk6IHNwbGl0S2V5XG4gICAgfSk7XG4gIH0gLy8g5Zyo5YWo5bGAZG9jdW1lbnTkuIrorr7nva7lv6vmjbfplK5cblxuXG4gIGlmICh0eXBlb2YgZWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgIWlzRWxlbWVudEJpbmQoZWxlbWVudCkgJiYgd2luZG93KSB7XG4gICAgZWxlbWVudEhhc0JpbmRFdmVudC5wdXNoKGVsZW1lbnQpO1xuICAgIGFkZEV2ZW50KGVsZW1lbnQsICdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGRpc3BhdGNoKGUpO1xuICAgIH0pO1xuICAgIGFkZEV2ZW50KHdpbmRvdywgJ2ZvY3VzJywgZnVuY3Rpb24gKCkge1xuICAgICAgX2Rvd25LZXlzID0gW107XG4gICAgfSk7XG4gICAgYWRkRXZlbnQoZWxlbWVudCwgJ2tleXVwJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGRpc3BhdGNoKGUpO1xuICAgICAgY2xlYXJNb2RpZmllcihlKTtcbiAgICB9KTtcbiAgfVxufVxuXG52YXIgX2FwaSA9IHtcbiAgc2V0U2NvcGU6IHNldFNjb3BlLFxuICBnZXRTY29wZTogZ2V0U2NvcGUsXG4gIGRlbGV0ZVNjb3BlOiBkZWxldGVTY29wZSxcbiAgZ2V0UHJlc3NlZEtleUNvZGVzOiBnZXRQcmVzc2VkS2V5Q29kZXMsXG4gIGlzUHJlc3NlZDogaXNQcmVzc2VkLFxuICBmaWx0ZXI6IGZpbHRlcixcbiAgdW5iaW5kOiB1bmJpbmRcbn07XG5cbmZvciAodmFyIGEgaW4gX2FwaSkge1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKF9hcGksIGEpKSB7XG4gICAgaG90a2V5c1thXSA9IF9hcGlbYV07XG4gIH1cbn1cblxuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gIHZhciBfaG90a2V5cyA9IHdpbmRvdy5ob3RrZXlzO1xuXG4gIGhvdGtleXMubm9Db25mbGljdCA9IGZ1bmN0aW9uIChkZWVwKSB7XG4gICAgaWYgKGRlZXAgJiYgd2luZG93LmhvdGtleXMgPT09IGhvdGtleXMpIHtcbiAgICAgIHdpbmRvdy5ob3RrZXlzID0gX2hvdGtleXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhvdGtleXM7XG4gIH07XG5cbiAgd2luZG93LmhvdGtleXMgPSBob3RrZXlzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBob3RrZXlzO1xuIiwiaW1wb3J0IGhvdGtleXMgZnJvbSAnaG90a2V5cy1qcyc7XG5pbXBvcnQgeyB1c2VSZWYsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5cbmZ1bmN0aW9uIHVzZUlzSG90a2V5UHJlc3NlZCgpIHtcbiAgICByZXR1cm4gaG90a2V5cy5pc1ByZXNzZWQ7XG59XG5cbmZ1bmN0aW9uIHVzZUhvdGtleXMoa2V5cywgY2FsbGJhY2ssIG9wdGlvbnMsIGRlcHMpIHtcbiAgICBpZiAob3B0aW9ucyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGRlcHMgPSBvcHRpb25zO1xuICAgICAgICBvcHRpb25zID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCB7IGVuYWJsZU9uVGFncywgZmlsdGVyIH0gPSBvcHRpb25zIHx8IHt9O1xuICAgIGNvbnN0IHJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBtZW1vaXNlZENhbGxiYWNrID0gdXNlQ2FsbGJhY2soKGtleWJvYXJkRXZlbnQsIGhvdGtleXNFdmVudCkgPT4ge1xuICAgICAgICBpZiAocmVmLmN1cnJlbnQgPT09IG51bGwgfHwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gcmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKGtleWJvYXJkRXZlbnQsIGhvdGtleXNFdmVudCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSwgZGVwcyA/IFtyZWYsIC4uLmRlcHNdIDogW3JlZl0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZW5hYmxlT25UYWdzKSB7XG4gICAgICAgICAgICBob3RrZXlzLmZpbHRlciA9ICh7IHRhcmdldCwgc3JjRWxlbWVudCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFRhZ05hbWUgPSAodGFyZ2V0ICYmIHRhcmdldC50YWdOYW1lKSB8fCAoc3JjRWxlbWVudCAmJiBzcmNFbGVtZW50LnRhZ05hbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuKHRhcmdldFRhZ05hbWUgJiYgZW5hYmxlT25UYWdzICYmIGVuYWJsZU9uVGFncy5pbmNsdWRlcyh0YXJnZXRUYWdOYW1lKSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXIpXG4gICAgICAgICAgICBob3RrZXlzLmZpbHRlciA9IGZpbHRlcjtcbiAgICAgICAgaG90a2V5cyhrZXlzLCBvcHRpb25zIHx8IHt9LCBtZW1vaXNlZENhbGxiYWNrKTtcbiAgICAgICAgcmV0dXJuICgpID0+IGhvdGtleXMudW5iaW5kKGtleXMsIG1lbW9pc2VkQ2FsbGJhY2spO1xuICAgIH0sIFttZW1vaXNlZENhbGxiYWNrLCBvcHRpb25zLCBlbmFibGVPblRhZ3MsIGZpbHRlciwga2V5c10pO1xuICAgIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCB7IHVzZUhvdGtleXMsIHVzZUlzSG90a2V5UHJlc3NlZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwXG4iXSwic291cmNlUm9vdCI6IiJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@touchtech/baselayer-ui",
3
- "version": "2.6.3-alpha.1",
3
+ "version": "2.6.3-alpha3.0",
4
4
  "description": "React UI component library",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",