tide-design-system 2.1.13 → 2.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/style.css +1 -1
- package/dist/tide-design-system.cjs +2 -2
- package/dist/tide-design-system.esm.d.ts +48 -6
- package/dist/tide-design-system.esm.js +2043 -944
- package/index.ts +2 -0
- package/package.json +1 -1
- package/src/components/TideInputCheckbox.vue +1 -1
- package/src/components/TideInputSelect.vue +7 -1
- package/src/components/TideInputText.vue +1 -1
- package/src/components/TideInputTextarea.vue +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),W={HORIZONTAL:"horizontal",VERTICAL:"vertical"},t={withBreakpoint:(r,n)=>r.map(s=>`${n}-${s}`),ALIGN:{X:{CENTER:"tide-text-center",LEFT:"tide-text-left",RIGHT:"tide-text-right"},Y:{INITIAL:"tide-align-initial",MIDDLE:"tide-align-middle"}},AXIS1:{AROUND:"tide-axis1-around",BETWEEN:"tide-axis1-between",CENTER:"tide-axis1-center",END:"tide-axis1-end",START:"tide-axis1-start"},AXIS2:{AROUND:"tide-axis2-around",CENTER:"tide-axis2-center",END:"tide-axis2-end",START:"tide-axis2-start"},BG:{GLOBAL:{PRIMARY:{ERROR:"tide-bg-primary-error",INFO:"tide-bg-primary-info",SUCCESS:"tide-bg-primary-success",WARNING:"tide-bg-primary-warning"},SURFACE:{ERROR:"tide-bg-surface-error",INFO:"tide-bg-surface-info",SUCCESS:"tide-bg-surface-success",WARNING:"tide-bg-surface-warning"}},INITIAL:"tide-bg-initial",BLUR:"tide-bg-blur",PRIMARY:"tide-bg-primary",SECONDARY:"tide-bg-secondary",SURFACE:{ACCENT:"tide-bg-surface-accent",BRAND:"tide-bg-surface-brand",DEFAULT:"tide-bg-surface",FLOATING:"tide-bg-surface-floating",GRADIENT:"tide-bg-surface-gradient",VARIANT:"tide-bg-surface-variant"},TRANSPARENT:{ONE_HUNDRED:"tide-transparent-100",TWO_HUNDRED:"tide-transparent-200",THREE_HUNDRED:"tide-transparent-300",FOUR_HUNDRED:"tide-transparent-400"}},BORDER:{COLOR:{GLOBAL:{ERROR:"tide-border-error",INFO:"tide-border-info",SUCCESS:"tide-border-success",WARNING:"tide-border-warning"},INITIAL:"tide-border-color-initial",DEFAULT:"tide-border",FLOATING:"tide-border-floating",HIGH:"tide-border-high",LOW:"tide-border-low",PRIMARY:"tide-border-primary"},RADIUS:{ZERO:"tide-radius-0",QUARTER:"tide-radius-1/4",HALF:"tide-radius-1/2",ONE:"tide-radius-1",FULL:"tide-radius-full"},BOTTOM:{ZERO:"tide-border-bottom-0",ONE:"tide-border-bottom-1",TWO:"tide-border-bottom-2"},FULL:{ZERO:"tide-border-0",ONE:"tide-border-1",TWO:"tide-border-2"},LEFT:{ZERO:"tide-border-left-0",ONE:"tide-border-left-1",TWO:"tide-border-left-2"},RIGHT:{ZERO:"tide-border-right-0",ONE:"tide-border-right-1",TWO:"tide-border-right-2"},TOP:{ZERO:"tide-border-top-0",ONE:"tide-border-top-1",TWO:"tide-border-top-2"}},BOX_SIZING:{BORDER_BOX:"tide-box-border",CONTENT_BOX:"tide-box-content"},BREAK_INSIDE:{AVOID_COLUMN:"tide-break-inside-avoid-column"},BREAK_WORD:{OFF:"tide-break-initial",ON:"tide-break-word"},COLUMNS:{INITIAL:"tide-columns-initial",ONE:"tide-columns-1",TWO:"tide-columns-2",THREE:"tide-columns-3",FOUR:"tide-columns-4"},CURSOR:{NOT_ALLOWED:"tide-cursor-not-allowed",POINTER:"tide-cursor-pointer",TEXT:"tide-cursor-text"},DISPLAY:{BLOCK:"tide-display-block",CONTENTS:"tide-display-contents",FLEX:"tide-display-flex",GRID:"tide-display-grid",INITIAL:"tide-display-initial",INLINE:"tide-display-inline",INLINE_BLOCK:"tide-display-inline-block",INLINE_FLEX:"tide-display-inline-flex",NONE:"tide-display-none"},ELLIPSIS:"tide-ellipsis",FLEX:{BASIS:{AUTO:"tide-flex-basis-auto",ZERO:"tide-flex-basis-0"},DIRECTION:{COLUMN:"tide-flex-column",COLUMN_REVERSE:"tide-flex-column-reverse",ROW:"tide-flex-row",ROW_REVERSE:"tide-flex-row-reverse"},GROW:{OFF:"tide-grow-none",ON:"tide-grow"},SHRINK:{OFF:"tide-shrink-none",ON:"tide-shrink"},WRAP:"tide-flex-wrap"},FONT:{COLOR:{GLOBAL:{ERROR:"tide-font-error",INFO:"tide-font-info",SUCCESS:"tide-font-success",WARNING:"tide-font-warning"},PRIMARY:"tide-font-on-primary",SECONDARY:"tide-font-on-secondary",SURFACE:{BRAND:"tide-font-on-surface-brand",DEFAULT:"tide-font-on-surface",INVERSE:"tide-font-on-surface-inverse",VARIANT:"tide-font-on-surface-variant",VARIANT_INVERSE:"tide-font-on-surface-variant-inverse"}},ROLE:{DISPLAY_1:"tide-typography-display-1",HEADLINE_1:"tide-typography-headline-1",HEADLINE_2:"tide-typography-headline-2",HEADLINE_3:"tide-typography-headline-3",TITLE_1:"tide-typography-title-1",TITLE_2:"tide-typography-title-2",BODY_1:"tide-typography-body-1",BODY_2:"tide-typography-body-2",LABEL_1:"tide-typography-label-1",LABEL_1_SEMIBOLD:"tide-typography-label-1-semibold",LABEL_2:"tide-typography-label-2",LABEL_2_SEMIBOLD:"tide-typography-label-2-semibold",LABEL_3:"tide-typography-label-3",LINK_1:"tide-typography-link-1",LINK_2:"tide-typography-link-2",LINK_3:"tide-typography-link-3",BUTTON_1:"tide-typography-button-1",BUTTON_2:"tide-typography-button-2"},SIZE:{TWELVE:"tide-font-12",FOURTEEN:"tide-font-14",SIXTEEN:"tide-font-16",TWENTY:"tide-font-20",TWENTY_FOUR:"tide-font-24",THIRTY_TWO:"tide-font-32"},WEIGHT:{FOUR_HUNDRED:"tide-font-400",FIVE_HUNDRED:"tide-font-500",SIX_HUNDRED:"tide-font-600",SEVEN_HUNDRED:"tide-font-700"}},GAP:{ZERO:"tide-gap-0",QUARTER:"tide-gap-1/4",HALF:"tide-gap-1/2",ONE:"tide-gap-1",TWO:"tide-gap-2",FOUR:"tide-gap-4"},GRID:{END:{ONE:"tide-end-1",TWO:"tide-end-2",THREE:"tide-end-3",FOUR:"tide-end-4",FIVE:"tide-end-5",SIX:"tide-end-6",SEVEN:"tide-end-7",EIGHT:"tide-end-8",NINE:"tide-end-9",TEN:"tide-end-10",ELEVEN:"tide-end-11",TWELVE:"tide-end-12",THIRTEEN:"tide-end-13"},FLUID:"tide-fluid",ITEM:"tide-grid-item",LAYOUT:"tide-grid-layout",START:{ZERO:"tide-start-0",ONE:"tide-start-1",TWO:"tide-start-2",THREE:"tide-start-3",FOUR:"tide-start-4",FIVE:"tide-start-5",SIX:"tide-start-6",SEVEN:"tide-start-7",EIGHT:"tide-start-8",NINE:"tide-start-9",TEN:"tide-start-10",ELEVEN:"tide-start-11",TWELVE:"tide-start-12"},XL:"tide-grid-xl"},HEIGHT:{AUTO:"tide-height-auto",ZERO:"tide-height-0",FULL:"tide-height-full",MAX_FULL:"tide-max-height-full"},ISOLATION:{ISOLATE:"tide-isolate"},LIST_BULLETS:{OFF:"tide-list-none"},MARGIN:{BOTTOM:{AUTO:"tide-margin-bottom-auto",ZERO:"tide-margin-bottom-0",QUARTER:"tide-margin-bottom-1/4",HALF:"tide-margin-bottom-1/2",ONE:"tide-margin-bottom-1",TWO:"tide-margin-bottom-2",FOUR:"tide-margin-bottom-4"},FULL:{ZERO:"tide-margin-0",QUARTER:"tide-margin-1/4",HALF:"tide-margin-1/2",ONE:"tide-margin-1",TWO:"tide-margin-2",FOUR:"tide-margin-4"},LEFT:{AUTO:"tide-margin-left-auto",ZERO:"tide-margin-left-0",QUARTER:"tide-margin-left-1/4",HALF:"tide-margin-left-1/2",ONE:"tide-margin-left-1",TWO:"tide-margin-left-2",FOUR:"tide-margin-left-4"},RIGHT:{AUTO:"tide-margin-right-auto",ZERO:"tide-margin-right-0",QUARTER:"tide-margin-right-1/4",HALF:"tide-margin-right-1/2",ONE:"tide-margin-right-1",TWO:"tide-margin-right-2",FOUR:"tide-margin-right-4"},TOP:{AUTO:"tide-margin-top-auto",ZERO:"tide-margin-top-0",QUARTER:"tide-margin-top-1/4",HALF:"tide-margin-top-1/2",ONE:"tide-margin-top-1",TWO:"tide-margin-top-2",FOUR:"tide-margin-top-4"},X:{AUTO:"tide-margin-x-auto",ZERO:"tide-margin-x-0",QUARTER:"tide-margin-x-1/4",HALF:"tide-margin-x-1/2",ONE:"tide-margin-x-1",TWO:"tide-margin-x-2",FOUR:"tide-margin-x-4"},Y:{ZERO:"tide-margin-y-0",QUARTER:"tide-margin-y-1/4",HALF:"tide-margin-y-1/2",ONE:"tide-margin-y-1",TWO:"tide-margin-y-2",FOUR:"tide-margin-y-4"}},OBJECT:{CENTER:"tide-object-center",CONTAIN:"tide-object-contain",COVER:"tide-object-cover",SCALE_DOWN:"tide-object-scale-down"},OPACITY:{OFF:"tide-opacity-none",ON:"tide-opacity"},OVERFLOW:{X:{AUTO:"tide-x-auto",HIDDEN:"tide-x-hidden",SCROLL:"tide-x-scroll"},XY:{AUTO:"tide-xy-auto",HIDDEN:"tide-xy-hidden"},Y:{AUTO:"tide-y-auto",HIDDEN:"tide-y-hidden"}},PADDING:{BOTTOM:{ZERO:"tide-padding-bottom-0",QUARTER:"tide-padding-bottom-1/4",HALF:"tide-padding-bottom-1/2",ONE:"tide-padding-bottom-1",TWO:"tide-padding-bottom-2",FOUR:"tide-padding-bottom-4"},FULL:{ZERO:"tide-padding-0",QUARTER:"tide-padding-1/4",HALF:"tide-padding-1/2",ONE:"tide-padding-1",TWO:"tide-padding-2",FOUR:"tide-padding-4"},LEFT:{ZERO:"tide-padding-left-0",QUARTER:"tide-padding-left-1/4",HALF:"tide-padding-left-1/2",ONE:"tide-padding-left-1",TWO:"tide-padding-left-2",FOUR:"tide-padding-left-4"},RIGHT:{ZERO:"tide-padding-right-0",QUARTER:"tide-padding-right-1/4",HALF:"tide-padding-right-1/2",ONE:"tide-padding-right-1",TWO:"tide-padding-right-2",FOUR:"tide-padding-right-4"},TOP:{ZERO:"tide-padding-top-0",QUARTER:"tide-padding-top-1/4",HALF:"tide-padding-top-1/2",ONE:"tide-padding-top-1",TWO:"tide-padding-top-2",FOUR:"tide-padding-top-4"},X:{ZERO:"tide-padding-x-0",QUARTER:"tide-padding-x-1/4",HALF:"tide-padding-x-1/2",ONE:"tide-padding-x-1",TWO:"tide-padding-x-2",FOUR:"tide-padding-x-4"},Y:{ZERO:"tide-padding-y-0",QUARTER:"tide-padding-y-1/4",HALF:"tide-padding-y-1/2",ONE:"tide-padding-y-1",TWO:"tide-padding-y-2",FOUR:"tide-padding-y-4"}},POINTER_EVENTS:{OFF:"tide-pointer-events-none",ON:"tide-pointer-events"},POSITION:{ABSOLUTE:"tide-position-absolute",FIXED:"tide-position-fixed",RELATIVE:"tide-position-relative",STATIC:"tide-position-static",STICKY:"tide-position-sticky"},POSITIONING:{BOTTOM:"tide-bottom-0",LEFT:"tide-left-0",RIGHT:"tide-right-0",TOP:"tide-top-0"},RATIO:{ONE_TO_ONE:"tide-ratio-1/1",SIXTEEN_TO_NINE:"tide-ratio-16/9",THREE_TO_TWO:"tide-ratio-3/2"},SCROLLBAR:{OFF:"tide-scrollbar-none"},SHADOW:{INITIAL:"tide-shadow-initial",BOTTOM:"tide-shadow-bottom",TOP:"tide-shadow-top",TEXT:"tide-shadow-text"},SNAP:{ON:"tide-scroll-snap"},SNAP_ALIGN:{START:"tide-scroll-snap-start"},TEXT_TRANSFORM:{LOWER:"tide-text-transform-lower",NONE:"tide-text-transform-none",UPPER:"tide-text-transform-upper"},UNDERLINE:{HOVER:"tide-underline-hover",OFF:"tide-underline-none",ON:"tide-underline"},VISIBILITY:{OFF:"tide-visible-none",ON:"tide-visible"},WHITESPACE_WRAP:{OFF:"tide-whitespace-nowrap"},WIDTH:{AUTO:"tide-width-auto",ZERO:"tide-width-0",FULL:"tide-width-full",MAX_FULL:"tide-max-width-full"},Z_INDEX:{INITIAL:"tide-z-index-initial",ONE:"tide-z-index-1"}};t.DISPLAY.BLOCK,t.DISPLAY.CONTENTS,t.DISPLAY.FLEX,t.DISPLAY.GRID,t.DISPLAY.NONE,t.DISPLAY.INITIAL,t.DISPLAY.INLINE,t.DISPLAY.INLINE_BLOCK,t.DISPLAY.INLINE_FLEX,t.AXIS1.AROUND,t.AXIS1.BETWEEN,t.AXIS1.CENTER,t.AXIS1.END,t.AXIS1.START,t.AXIS2.AROUND,t.AXIS2.CENTER,t.AXIS2.END,t.AXIS2.START,t.FLEX.DIRECTION.COLUMN,t.FLEX.DIRECTION.COLUMN_REVERSE,t.FLEX.DIRECTION.ROW,t.FLEX.DIRECTION.ROW_REVERSE,t.GAP.ONE,t.GAP.HALF,t.GAP.QUARTER,t.GAP.TWO,t.GAP.FOUR,t.FLEX.BASIS.ZERO,t.FLEX.GROW.ON,t.FLEX.GROW.OFF,t.FLEX.SHRINK.ON,t.FLEX.SHRINK.OFF,t.FLEX.WRAP,t.POSITION.ABSOLUTE,t.POSITION.FIXED,t.POSITION.RELATIVE,t.POSITION.STICKY,t.POSITIONING.TOP,t.POSITIONING.RIGHT,t.POSITIONING.BOTTOM,t.POSITIONING.LEFT,t.BOX_SIZING.BORDER_BOX,t.BOX_SIZING.CONTENT_BOX,t.MARGIN.FULL.ZERO,t.MARGIN.FULL.ONE,t.MARGIN.FULL.HALF,t.MARGIN.FULL.QUARTER,t.MARGIN.FULL.TWO,t.MARGIN.FULL.FOUR,t.MARGIN.Y.ZERO,t.MARGIN.Y.ONE,t.MARGIN.Y.HALF,t.MARGIN.Y.QUARTER,t.MARGIN.Y.TWO,t.MARGIN.Y.FOUR,t.MARGIN.TOP.ZERO,t.MARGIN.TOP.ONE,t.MARGIN.TOP.HALF,t.MARGIN.TOP.QUARTER,t.MARGIN.TOP.TWO,t.MARGIN.TOP.FOUR,t.MARGIN.X.ZERO,t.MARGIN.X.ONE,t.MARGIN.X.HALF,t.MARGIN.X.QUARTER,t.MARGIN.X.TWO,t.MARGIN.X.FOUR,t.MARGIN.X.AUTO,t.MARGIN.RIGHT.ZERO,t.MARGIN.RIGHT.ONE,t.MARGIN.RIGHT.HALF,t.MARGIN.RIGHT.QUARTER,t.MARGIN.RIGHT.TWO,t.MARGIN.RIGHT.FOUR,t.MARGIN.RIGHT.AUTO,t.MARGIN.BOTTOM.ZERO,t.MARGIN.BOTTOM.ONE,t.MARGIN.BOTTOM.HALF,t.MARGIN.BOTTOM.QUARTER,t.MARGIN.BOTTOM.TWO,t.MARGIN.BOTTOM.FOUR,t.MARGIN.LEFT.ZERO,t.MARGIN.LEFT.ONE,t.MARGIN.LEFT.HALF,t.MARGIN.LEFT.QUARTER,t.MARGIN.LEFT.TWO,t.MARGIN.LEFT.FOUR,t.MARGIN.LEFT.AUTO,t.BORDER.FULL.ONE,t.BORDER.FULL.TWO,t.BORDER.TOP.ONE,t.BORDER.TOP.TWO,t.BORDER.RIGHT.ONE,t.BORDER.RIGHT.TWO,t.BORDER.BOTTOM.ONE,t.BORDER.BOTTOM.TWO,t.BORDER.LEFT.ONE,t.BORDER.LEFT.TWO,t.BORDER.RADIUS.ONE,t.BORDER.RADIUS.HALF,t.BORDER.RADIUS.QUARTER,t.BORDER.RADIUS.FULL,t.PADDING.FULL.ZERO,t.PADDING.FULL.ONE,t.PADDING.FULL.HALF,t.PADDING.FULL.QUARTER,t.PADDING.FULL.TWO,t.PADDING.FULL.FOUR,t.PADDING.Y.ZERO,t.PADDING.Y.ONE,t.PADDING.Y.HALF,t.PADDING.Y.QUARTER,t.PADDING.Y.TWO,t.PADDING.Y.FOUR,t.PADDING.TOP.ZERO,t.PADDING.TOP.ONE,t.PADDING.TOP.HALF,t.PADDING.TOP.QUARTER,t.PADDING.TOP.TWO,t.PADDING.TOP.FOUR,t.PADDING.X.ZERO,t.PADDING.X.ONE,t.PADDING.X.HALF,t.PADDING.X.QUARTER,t.PADDING.X.TWO,t.PADDING.X.FOUR,t.PADDING.RIGHT.ZERO,t.PADDING.RIGHT.ONE,t.PADDING.RIGHT.HALF,t.PADDING.RIGHT.QUARTER,t.PADDING.RIGHT.TWO,t.PADDING.RIGHT.FOUR,t.PADDING.BOTTOM.ZERO,t.PADDING.BOTTOM.ONE,t.PADDING.BOTTOM.HALF,t.PADDING.BOTTOM.QUARTER,t.PADDING.BOTTOM.TWO,t.PADDING.BOTTOM.FOUR,t.PADDING.LEFT.ZERO,t.PADDING.LEFT.ONE,t.PADDING.LEFT.HALF,t.PADDING.LEFT.QUARTER,t.PADDING.LEFT.TWO,t.PADDING.LEFT.FOUR,t.WIDTH.MAX_FULL,t.WIDTH.ZERO,t.WIDTH.FULL,t.HEIGHT.ZERO,t.HEIGHT.FULL,t.ALIGN.Y.MIDDLE,t.BREAK_WORD,t.CURSOR.NOT_ALLOWED,t.CURSOR.POINTER,t.CURSOR.TEXT,t.FONT.SIZE.TWELVE,t.FONT.SIZE.FOURTEEN,t.FONT.SIZE.SIXTEEN,t.FONT.SIZE.TWENTY,t.FONT.SIZE.TWENTY_FOUR,t.FONT.SIZE.THIRTY_TWO,t.FONT.WEIGHT.FOUR_HUNDRED,t.FONT.WEIGHT.FIVE_HUNDRED,t.FONT.WEIGHT.SIX_HUNDRED,t.FONT.WEIGHT.SEVEN_HUNDRED,t.LIST_BULLETS.OFF,t.OBJECT.CENTER,t.OBJECT.CONTAIN,t.OBJECT.COVER,t.OBJECT.SCALE_DOWN,t.POINTER_EVENTS.ON,t.POINTER_EVENTS.OFF,t.SCROLLBAR.OFF,t.SHADOW.BOTTOM,t.SHADOW.TOP,t.SNAP.ON,t.SNAP_ALIGN.START,t.ALIGN.X.LEFT,t.ALIGN.X.CENTER,t.ALIGN.X.RIGHT,t.TEXT_TRANSFORM.LOWER,t.TEXT_TRANSFORM.NONE,t.TEXT_TRANSFORM.UPPER,t.UNDERLINE.HOVER,t.UNDERLINE.OFF,t.UNDERLINE.ON,t.VISIBILITY.ON,t.VISIBILITY.OFF,t.WHITESPACE_WRAP.OFF,t.OVERFLOW.XY.AUTO,t.OVERFLOW.XY.HIDDEN,t.OVERFLOW.X.AUTO,t.OVERFLOW.X.HIDDEN,t.OVERFLOW.X.SCROLL,t.OVERFLOW.Y.AUTO,t.OVERFLOW.Y.HIDDEN,t.Z_INDEX.ONE;const Y=e.defineComponent({__name:"TideDivider",props:{orientation:{default:W.HORIZONTAL}},setup(r){const n=r;return(s,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(t).BORDER.COLOR.LOW,n.orientation===e.unref(W).HORIZONTAL?[e.unref(t).MARGIN.Y.HALF,e.unref(t).BORDER.BOTTOM.ONE]:[e.unref(t).MARGIN.X.HALF,e.unref(t).BORDER.RIGHT.ONE]])},null,2))}}),K=(r,n)=>{const s=r[n];return s?typeof s=="function"?s():Promise.resolve(s):new Promise((o,i)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(i.bind(null,new Error("Unknown variable dynamic import: "+n)))})},Q={AERO:"aero",ATV:"atv",BOATMART:"boatmart",CYCLE:"cycle",EQUIPMENT:"equipment",PWC:"pwc",RV:"rv",SNOW:"snow",TRUCK:"truck"},L={LARGE:"large",SMALL:"small"},k={LARGE:"large",SMALL:"small"},q=r=>{let n=r&&typeof r=="number"?new Intl.NumberFormat().format(r):String(r||""),s=n;return r&&typeof r=="string"&&(s=s.replace(/\D/g,""),Number(s)?n=new Intl.NumberFormat().format(Number(s)):n="0"),n},ne=r=>r&&typeof r=="string"?r.replace(/([a-z]{1})([A-Z]{1})/g,"$1 $2").replace(/[\s_-]/g," ").toLowerCase().split(" ").map(n=>n.slice(0,1).toUpperCase()+n.slice(1)).join(""):r,se=r=>{let n=String(r&&typeof r=="number"?r:r||""),s=n;switch(s=s.replace(/\D/g,""),s.length){case 7:n=`${s.slice(0,3)}-${s.slice(3)}`;break;case 10:n=`${s.slice(0,3)}-${s.slice(3,6)}-${s.slice(6)}`;break;case 11:n=`${s.slice(0,1)}-${s.slice(1,4)}-${s.slice(4,7)}-${s.slice(7)}`;break;default:n=s;break}return n},re=r=>`$${r?q(r):String(r||"0")}`,E=e.defineComponent({__name:"TideIcon",props:{icon:{},size:{default:L.SMALL}},setup(r){const n=r,s=e.ref();return e.watch(()=>n.icon,async()=>{const o=n.icon,i=ne(o),[c]=o.split("-"),l=Q[c==null?void 0:c.toUpperCase()],a=e.defineAsyncComponent(()=>l?K(Object.assign({"../assets/svg/icons/realm/atv/IconAtvAtv.svg":()=>Promise.resolve().then(()=>require("./IconAtvAtv-c2e11398.cjs")),"../assets/svg/icons/realm/atv/IconAtvDuneBuggy.svg":()=>Promise.resolve().then(()=>require("./IconAtvDuneBuggy-ff1f7a23.cjs")),"../assets/svg/icons/realm/atv/IconAtvGoKart.svg":()=>Promise.resolve().then(()=>require("./IconAtvGoKart-d1ad6a03.cjs")),"../assets/svg/icons/realm/atv/IconAtvGolfCart.svg":()=>Promise.resolve().then(()=>require("./IconAtvGolfCart-9b3569bc.cjs")),"../assets/svg/icons/realm/atv/IconAtvSandRail.svg":()=>Promise.resolve().then(()=>require("./IconAtvSandRail-d71aa55b.cjs")),"../assets/svg/icons/realm/atv/IconAtvSideBySide.svg":()=>Promise.resolve().then(()=>require("./IconAtvSideBySide-f734e90f.cjs")),"../assets/svg/icons/realm/atv/IconAtvTrailer.svg":()=>Promise.resolve().then(()=>require("./IconAtvTrailer-ee1d6ec1.cjs")),"../assets/svg/icons/realm/boatmart/IconBoatmartPwc.svg":()=>Promise.resolve().then(()=>require("./IconBoatmartPwc-9de80564.cjs")),"../assets/svg/icons/realm/boatmart/IconBoatmartTrailer.svg":()=>Promise.resolve().then(()=>require("./IconBoatmartTrailer-ff1f376f.cjs")),"../assets/svg/icons/realm/rv/IconRvClassA.svg":()=>Promise.resolve().then(()=>require("./IconRvClassA-80da0dc5.cjs")),"../assets/svg/icons/realm/rv/IconRvClassB.svg":()=>Promise.resolve().then(()=>require("./IconRvClassB-2032c703.cjs")),"../assets/svg/icons/realm/rv/IconRvClassC.svg":()=>Promise.resolve().then(()=>require("./IconRvClassC-1d11671a.cjs")),"../assets/svg/icons/realm/rv/IconRvFifthWheel.svg":()=>Promise.resolve().then(()=>require("./IconRvFifthWheel-b234c67c.cjs")),"../assets/svg/icons/realm/rv/IconRvFishHouse.svg":()=>Promise.resolve().then(()=>require("./IconRvFishHouse-f6edfbbd.cjs")),"../assets/svg/icons/realm/rv/IconRvParkModel.svg":()=>Promise.resolve().then(()=>require("./IconRvParkModel-3707f77a.cjs")),"../assets/svg/icons/realm/rv/IconRvPopUpCamper.svg":()=>Promise.resolve().then(()=>require("./IconRvPopUpCamper-912c58c2.cjs")),"../assets/svg/icons/realm/rv/IconRvTravelTrailer.svg":()=>Promise.resolve().then(()=>require("./IconRvTravelTrailer-44a5f64d.cjs")),"../assets/svg/icons/realm/rv/IconRvTruckCamper.svg":()=>Promise.resolve().then(()=>require("./IconRvTruckCamper-ce2393f4.cjs"))}),`../assets/svg/icons/realm/${l}/Icon${i}.svg`):K(Object.assign({"../assets/svg/icons/IconAccountBalance.svg":()=>Promise.resolve().then(()=>require("./IconAccountBalance-0a430d19.cjs")),"../assets/svg/icons/IconAcute.svg":()=>Promise.resolve().then(()=>require("./IconAcute-b1e43123.cjs")),"../assets/svg/icons/IconAdd.svg":()=>Promise.resolve().then(()=>require("./IconAdd-91de604b.cjs")),"../assets/svg/icons/IconAiDescription.svg":()=>Promise.resolve().then(()=>require("./IconAiDescription-674cca6d.cjs")),"../assets/svg/icons/IconAlignSpaceEven.svg":()=>Promise.resolve().then(()=>require("./IconAlignSpaceEven-7ee811f8.cjs")),"../assets/svg/icons/IconApplePay.svg":()=>Promise.resolve().then(()=>require("./IconApplePay-92395240.cjs")),"../assets/svg/icons/IconArrowBack.svg":()=>Promise.resolve().then(()=>require("./IconArrowBack-3d47d166.cjs")),"../assets/svg/icons/IconArrowCycle.svg":()=>Promise.resolve().then(()=>require("./IconArrowCycle-7b7c7325.cjs")),"../assets/svg/icons/IconArrowForward.svg":()=>Promise.resolve().then(()=>require("./IconArrowForward-613e128c.cjs")),"../assets/svg/icons/IconArrowRight.svg":()=>Promise.resolve().then(()=>require("./IconArrowRight-9f39cdbb.cjs")),"../assets/svg/icons/IconAssignment.svg":()=>Promise.resolve().then(()=>require("./IconAssignment-915702cc.cjs")),"../assets/svg/icons/IconAttachMoney.svg":()=>Promise.resolve().then(()=>require("./IconAttachMoney-6d3087ab.cjs")),"../assets/svg/icons/IconAutoRenew.svg":()=>Promise.resolve().then(()=>require("./IconAutoRenew-bcd665a4.cjs")),"../assets/svg/icons/IconAwardStar.svg":()=>Promise.resolve().then(()=>require("./IconAwardStar-447cf4fc.cjs")),"../assets/svg/icons/IconBed.svg":()=>Promise.resolve().then(()=>require("./IconBed-8bcac0c0.cjs")),"../assets/svg/icons/IconBolt.svg":()=>Promise.resolve().then(()=>require("./IconBolt-36fc8ef9.cjs")),"../assets/svg/icons/IconBookmark.svg":()=>Promise.resolve().then(()=>require("./IconBookmark-3f6454d9.cjs")),"../assets/svg/icons/IconBunkhouse.svg":()=>Promise.resolve().then(()=>require("./IconBunkhouse-348a1518.cjs")),"../assets/svg/icons/IconCalendarMonth.svg":()=>Promise.resolve().then(()=>require("./IconCalendarMonth-bb5bbb9b.cjs")),"../assets/svg/icons/IconCall.svg":()=>Promise.resolve().then(()=>require("./IconCall-08f3119f.cjs")),"../assets/svg/icons/IconCallQuality.svg":()=>Promise.resolve().then(()=>require("./IconCallQuality-56ee01fb.cjs")),"../assets/svg/icons/IconCarRental.svg":()=>Promise.resolve().then(()=>require("./IconCarRental-b0af42ff.cjs")),"../assets/svg/icons/IconCheck.svg":()=>Promise.resolve().then(()=>require("./IconCheck-910929df.cjs")),"../assets/svg/icons/IconChevronLeft.svg":()=>Promise.resolve().then(()=>require("./IconChevronLeft-6626777e.cjs")),"../assets/svg/icons/IconChevronRight.svg":()=>Promise.resolve().then(()=>require("./IconChevronRight-91bc7ad1.cjs")),"../assets/svg/icons/IconClear.svg":()=>Promise.resolve().then(()=>require("./IconClear-489c5a46.cjs")),"../assets/svg/icons/IconClose.svg":()=>Promise.resolve().then(()=>require("./IconClose-538a540f.cjs")),"../assets/svg/icons/IconContract.svg":()=>Promise.resolve().then(()=>require("./IconContract-0acea45b.cjs")),"../assets/svg/icons/IconCrash.svg":()=>Promise.resolve().then(()=>require("./IconCrash-8d91a8db.cjs")),"../assets/svg/icons/IconDashboardCustomize.svg":()=>Promise.resolve().then(()=>require("./IconDashboardCustomize-5321091b.cjs")),"../assets/svg/icons/IconDelete.svg":()=>Promise.resolve().then(()=>require("./IconDelete-5cc224a1.cjs")),"../assets/svg/icons/IconDiamond.svg":()=>Promise.resolve().then(()=>require("./IconDiamond-4e736f5f.cjs")),"../assets/svg/icons/IconDirectionsBoat.svg":()=>Promise.resolve().then(()=>require("./IconDirectionsBoat-11aaf49c.cjs")),"../assets/svg/icons/IconDomain.svg":()=>Promise.resolve().then(()=>require("./IconDomain-05540c31.cjs")),"../assets/svg/icons/IconDraft.svg":()=>Promise.resolve().then(()=>require("./IconDraft-26850369.cjs")),"../assets/svg/icons/IconEdit.svg":()=>Promise.resolve().then(()=>require("./IconEdit-b4d5f175.cjs")),"../assets/svg/icons/IconEngine.svg":()=>Promise.resolve().then(()=>require("./IconEngine-e51389f9.cjs")),"../assets/svg/icons/IconEngineering.svg":()=>Promise.resolve().then(()=>require("./IconEngineering-a74e5efe.cjs")),"../assets/svg/icons/IconError.svg":()=>Promise.resolve().then(()=>require("./IconError-4ad48be1.cjs")),"../assets/svg/icons/IconExpandContent.svg":()=>Promise.resolve().then(()=>require("./IconExpandContent-03a28bfb.cjs")),"../assets/svg/icons/IconExpandLess.svg":()=>Promise.resolve().then(()=>require("./IconExpandLess-59a80211.cjs")),"../assets/svg/icons/IconExpandMore.svg":()=>Promise.resolve().then(()=>require("./IconExpandMore-edf55cdd.cjs")),"../assets/svg/icons/IconFacebook.svg":()=>Promise.resolve().then(()=>require("./IconFacebook-9c43095a.cjs")),"../assets/svg/icons/IconFavorite.svg":()=>Promise.resolve().then(()=>require("./IconFavorite-43091cef.cjs")),"../assets/svg/icons/IconFavoriteFilled.svg":()=>Promise.resolve().then(()=>require("./IconFavoriteFilled-71277849.cjs")),"../assets/svg/icons/IconFlag.svg":()=>Promise.resolve().then(()=>require("./IconFlag-0243bbb9.cjs")),"../assets/svg/icons/IconFormatBold.svg":()=>Promise.resolve().then(()=>require("./IconFormatBold-4faa5f99.cjs")),"../assets/svg/icons/IconFormatItalic.svg":()=>Promise.resolve().then(()=>require("./IconFormatItalic-fee490fc.cjs")),"../assets/svg/icons/IconFormatListBulleted.svg":()=>Promise.resolve().then(()=>require("./IconFormatListBulleted-d0a77d0e.cjs")),"../assets/svg/icons/IconForum.svg":()=>Promise.resolve().then(()=>require("./IconForum-22217aa0.cjs")),"../assets/svg/icons/IconGas.svg":()=>Promise.resolve().then(()=>require("./IconGas-9d623313.cjs")),"../assets/svg/icons/IconGavel.svg":()=>Promise.resolve().then(()=>require("./IconGavel-aacae653.cjs")),"../assets/svg/icons/IconGears.svg":()=>Promise.resolve().then(()=>require("./IconGears-c3b1ba71.cjs")),"../assets/svg/icons/IconGlobeLocationPin.svg":()=>Promise.resolve().then(()=>require("./IconGlobeLocationPin-b869a4e7.cjs")),"../assets/svg/icons/IconGoogle.svg":()=>Promise.resolve().then(()=>require("./IconGoogle-77ec192e.cjs")),"../assets/svg/icons/IconGooglePay.svg":()=>Promise.resolve().then(()=>require("./IconGooglePay-049e93ec.cjs")),"../assets/svg/icons/IconGrid.svg":()=>Promise.resolve().then(()=>require("./IconGrid-1693599f.cjs")),"../assets/svg/icons/IconHandshake.svg":()=>Promise.resolve().then(()=>require("./IconHandshake-33b452a7.cjs")),"../assets/svg/icons/IconHandyman.svg":()=>Promise.resolve().then(()=>require("./IconHandyman-ffc0fafb.cjs")),"../assets/svg/icons/IconHeight.svg":()=>Promise.resolve().then(()=>require("./IconHeight-d8ee424f.cjs")),"../assets/svg/icons/IconHelp.svg":()=>Promise.resolve().then(()=>require("./IconHelp-43137a66.cjs")),"../assets/svg/icons/IconInfo.svg":()=>Promise.resolve().then(()=>require("./IconInfo-2d14575c.cjs")),"../assets/svg/icons/IconInformation.svg":()=>Promise.resolve().then(()=>require("./IconInformation-be043a15.cjs")),"../assets/svg/icons/IconInsertText.svg":()=>Promise.resolve().then(()=>require("./IconInsertText-14c80b9a.cjs")),"../assets/svg/icons/IconInstagram.svg":()=>Promise.resolve().then(()=>require("./IconInstagram-43bb02ea.cjs")),"../assets/svg/icons/IconIosShare.svg":()=>Promise.resolve().then(()=>require("./IconIosShare-526a016a.cjs")),"../assets/svg/icons/IconLayout.svg":()=>Promise.resolve().then(()=>require("./IconLayout-e663120e.cjs")),"../assets/svg/icons/IconLevellingJack.svg":()=>Promise.resolve().then(()=>require("./IconLevellingJack-40c63f7c.cjs")),"../assets/svg/icons/IconLinkedIn.svg":()=>Promise.resolve().then(()=>require("./IconLinkedIn-088a3792.cjs")),"../assets/svg/icons/IconLocalShipping.svg":()=>Promise.resolve().then(()=>require("./IconLocalShipping-9bca5a95.cjs")),"../assets/svg/icons/IconLock.svg":()=>Promise.resolve().then(()=>require("./IconLock-1c996287.cjs")),"../assets/svg/icons/IconMail.svg":()=>Promise.resolve().then(()=>require("./IconMail-f2b8fee4.cjs")),"../assets/svg/icons/IconMenu.svg":()=>Promise.resolve().then(()=>require("./IconMenu-c7c2b143.cjs")),"../assets/svg/icons/IconMoneyBag.svg":()=>Promise.resolve().then(()=>require("./IconMoneyBag-a3d297f5.cjs")),"../assets/svg/icons/IconMoreHoriz.svg":()=>Promise.resolve().then(()=>require("./IconMoreHoriz-2c82da62.cjs")),"../assets/svg/icons/IconNotifications.svg":()=>Promise.resolve().then(()=>require("./IconNotifications-01f7658b.cjs")),"../assets/svg/icons/IconOdometer.svg":()=>Promise.resolve().then(()=>require("./IconOdometer-a1bc108b.cjs")),"../assets/svg/icons/IconOpenInNew.svg":()=>Promise.resolve().then(()=>require("./IconOpenInNew-9032f1db.cjs")),"../assets/svg/icons/IconPalette.svg":()=>Promise.resolve().then(()=>require("./IconPalette-269c7286.cjs")),"../assets/svg/icons/IconPaypal.svg":()=>Promise.resolve().then(()=>require("./IconPaypal-427e8667.cjs")),"../assets/svg/icons/IconPerson.svg":()=>Promise.resolve().then(()=>require("./IconPerson-ee87961e.cjs")),"../assets/svg/icons/IconPersonSearch.svg":()=>Promise.resolve().then(()=>require("./IconPersonSearch-b0c1a4e5.cjs")),"../assets/svg/icons/IconPhotoCamera.svg":()=>Promise.resolve().then(()=>require("./IconPhotoCamera-56cb060d.cjs")),"../assets/svg/icons/IconPinterest.svg":()=>Promise.resolve().then(()=>require("./IconPinterest-87034fbf.cjs")),"../assets/svg/icons/IconPlayArrow.svg":()=>Promise.resolve().then(()=>require("./IconPlayArrow-80f601bf.cjs")),"../assets/svg/icons/IconPolicy.svg":()=>Promise.resolve().then(()=>require("./IconPolicy-8f5ca682.cjs")),"../assets/svg/icons/IconPower.svg":()=>Promise.resolve().then(()=>require("./IconPower-d41e067d.cjs")),"../assets/svg/icons/IconPowerOff.svg":()=>Promise.resolve().then(()=>require("./IconPowerOff-0e3118bf.cjs")),"../assets/svg/icons/IconPriorityHigh.svg":()=>Promise.resolve().then(()=>require("./IconPriorityHigh-aae28a02.cjs")),"../assets/svg/icons/IconRemove.svg":()=>Promise.resolve().then(()=>require("./IconRemove-73b05132.cjs")),"../assets/svg/icons/IconRequestQuote.svg":()=>Promise.resolve().then(()=>require("./IconRequestQuote-e24db541.cjs")),"../assets/svg/icons/IconResetWrench.svg":()=>Promise.resolve().then(()=>require("./IconResetWrench-5b5c4f74.cjs")),"../assets/svg/icons/IconRoad.svg":()=>Promise.resolve().then(()=>require("./IconRoad-3124bbd8.cjs")),"../assets/svg/icons/IconRoundedCorner.svg":()=>Promise.resolve().then(()=>require("./IconRoundedCorner-53cb2cfc.cjs")),"../assets/svg/icons/IconRuler.svg":()=>Promise.resolve().then(()=>require("./IconRuler-5feb5a83.cjs")),"../assets/svg/icons/IconSailing.svg":()=>Promise.resolve().then(()=>require("./IconSailing-fa136eea.cjs")),"../assets/svg/icons/IconSchool.svg":()=>Promise.resolve().then(()=>require("./IconSchool-0bca17f9.cjs")),"../assets/svg/icons/IconSearch.svg":()=>Promise.resolve().then(()=>require("./IconSearch-45b2c0e5.cjs")),"../assets/svg/icons/IconSeating.svg":()=>Promise.resolve().then(()=>require("./IconSeating-bc19b98f.cjs")),"../assets/svg/icons/IconSell.svg":()=>Promise.resolve().then(()=>require("./IconSell-bcede586.cjs")),"../assets/svg/icons/IconSensors.svg":()=>Promise.resolve().then(()=>require("./IconSensors-f35e7566.cjs")),"../assets/svg/icons/IconSettings.svg":()=>Promise.resolve().then(()=>require("./IconSettings-b8848783.cjs")),"../assets/svg/icons/IconShare.svg":()=>Promise.resolve().then(()=>require("./IconShare-ff50a973.cjs")),"../assets/svg/icons/IconShieldCheck.svg":()=>Promise.resolve().then(()=>require("./IconShieldCheck-b57fd628.cjs")),"../assets/svg/icons/IconShoppingCart.svg":()=>Promise.resolve().then(()=>require("./IconShoppingCart-eee95744.cjs")),"../assets/svg/icons/IconSleeps.svg":()=>Promise.resolve().then(()=>require("./IconSleeps-ffe0dd67.cjs")),"../assets/svg/icons/IconSms.svg":()=>Promise.resolve().then(()=>require("./IconSms-0575f458.cjs")),"../assets/svg/icons/IconSnowflake.svg":()=>Promise.resolve().then(()=>require("./IconSnowflake-2fccf99d.cjs")),"../assets/svg/icons/IconStar.svg":()=>Promise.resolve().then(()=>require("./IconStar-e2a88836.cjs")),"../assets/svg/icons/IconSummarize.svg":()=>Promise.resolve().then(()=>require("./IconSummarize-f73dec0e.cjs")),"../assets/svg/icons/IconSwapHoriz.svg":()=>Promise.resolve().then(()=>require("./IconSwapHoriz-4a33bd68.cjs")),"../assets/svg/icons/IconSwapVert.svg":()=>Promise.resolve().then(()=>require("./IconSwapVert-29258e96.cjs")),"../assets/svg/icons/IconThreeDRotation.svg":()=>Promise.resolve().then(()=>require("./IconThreeDRotation-7be89ff8.cjs")),"../assets/svg/icons/IconThumbUp.svg":()=>Promise.resolve().then(()=>require("./IconThumbUp-722d3c77.cjs")),"../assets/svg/icons/IconTrendingDown.svg":()=>Promise.resolve().then(()=>require("./IconTrendingDown-3da4b7d4.cjs")),"../assets/svg/icons/IconTrophy.svg":()=>Promise.resolve().then(()=>require("./IconTrophy-4d05eb75.cjs")),"../assets/svg/icons/IconTune.svg":()=>Promise.resolve().then(()=>require("./IconTune-1276696d.cjs")),"../assets/svg/icons/IconTwitter.svg":()=>Promise.resolve().then(()=>require("./IconTwitter-55b8ba63.cjs")),"../assets/svg/icons/IconUmbrella.svg":()=>Promise.resolve().then(()=>require("./IconUmbrella-81fdaa63.cjs")),"../assets/svg/icons/IconVerified.svg":()=>Promise.resolve().then(()=>require("./IconVerified-b71255f2.cjs")),"../assets/svg/icons/IconVideocam.svg":()=>Promise.resolve().then(()=>require("./IconVideocam-f5b07935.cjs")),"../assets/svg/icons/IconViewInAr.svg":()=>Promise.resolve().then(()=>require("./IconViewInAr-a583aff8.cjs")),"../assets/svg/icons/IconVisibility.svg":()=>Promise.resolve().then(()=>require("./IconVisibility-4984bcac.cjs")),"../assets/svg/icons/IconVolumeOff.svg":()=>Promise.resolve().then(()=>require("./IconVolumeOff-35d350ee.cjs")),"../assets/svg/icons/IconVolumeOn.svg":()=>Promise.resolve().then(()=>require("./IconVolumeOn-386ad18b.cjs")),"../assets/svg/icons/IconWarehouse.svg":()=>Promise.resolve().then(()=>require("./IconWarehouse-23085045.cjs")),"../assets/svg/icons/IconWarning.svg":()=>Promise.resolve().then(()=>require("./IconWarning-54f3a9ac.cjs")),"../assets/svg/icons/IconWater.svg":()=>Promise.resolve().then(()=>require("./IconWater-0b57b8cc.cjs")),"../assets/svg/icons/IconWeight.svg":()=>Promise.resolve().then(()=>require("./IconWeight-c6ddd367.cjs")),"../assets/svg/icons/IconWidth.svg":()=>Promise.resolve().then(()=>require("./IconWidth-a556befc.cjs")),"../assets/svg/icons/IconWorkspacePremium.svg":()=>Promise.resolve().then(()=>require("./IconWorkspacePremium-bc3aeb0c.cjs")),"../assets/svg/icons/IconWrench.svg":()=>Promise.resolve().then(()=>require("./IconWrench-bd1d2907.cjs")),"../assets/svg/icons/IconYoutube.svg":()=>Promise.resolve().then(()=>require("./IconYoutube-ed951c21.cjs"))}),`../assets/svg/icons/Icon${i}.svg`));s.value=e.markRaw(a)},{immediate:!0}),(o,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-icon",n.size])},[s.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.value),{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.BLOCK]),"data-icon":o.icon,fill:"currentColor"},null,8,["class","data-icon"])):e.createCommentVNode("",!0)],2))}});const u={ACCOUNT_BALANCE:"account-balance",ACUTE:"acute",ADD:"add",AI_DESCRIPTION:"ai-description",ALIGN_SPACE_EVEN:"align-space-even",APPLE_PAY:"apple-pay",ARROW_BACK:"arrow-back",ARROW_CYCLE:"arrow-cycle",ARROW_FORWARD:"arrow-forward",ARROW_RIGHT:"arrow-right",ASSIGNMENT:"assignment",ATTACH_MONEY:"attach-money",AUTO_RENEW:"auto-renew",AWARD_STAR:"award-star",BED:"bed",BOLT:"bolt",BOOKMARK:"bookmark",BUNKHOUSE:"bunkhouse",CALENDAR_MONTH:"calendar-month",CALL:"call",CALL_QUALITY:"call-quality",CAR_RENTAL:"car-rental",CHECK:"check",CHEVRON_LEFT:"chevron-left",CHEVRON_RIGHT:"chevron-right",CLEAR:"clear",CLOSE:"close",CONTRACT:"contract",CRASH:"crash",DASHBOARD_CUSTOMIZE:"dashboard-customize",DELETE:"delete",DIAMOND:"diamond",DIRECTIONS_BOAT:"directions-boat",DOMAIN:"domain",DRAFT:"draft",EDIT:"edit",ENGINE:"engine",ENGINEERING:"engineering",ERROR:"error",EXPAND_CONTENT:"expand-content",EXPAND_LESS:"expand-less",EXPAND_MORE:"expand-more",FACEBOOK:"facebook",FAVORITE:"favorite",FAVORITE_FILLED:"favorite-filled",FLAG:"flag",FORMAT_BOLD:"format-bold",FORMAT_ITALIC:"format-italic",FORMAT_LIST_BULLETED:"format-list-bulleted",FORUM:"forum",GAS:"gas",GAVEL:"gavel",GEARS:"gears",GLOBE_LOCATION_PIN:"globe-location-pin",GOOGLE:"google",GOOGLE_PAY:"google-pay",GRID:"grid",HANDSHAKE:"handshake",HANDYMAN:"handyman",HEIGHT:"height",HELP:"help",INFO:"info",INFORMATION:"information",INSERT_TEXT:"insert-text",INSTAGRAM:"instagram",IOS_SHARE:"ios-share",LAYOUT:"layout",LEVELLING_JACK:"levelling-jack",LINKED_IN:"linked in",LOCAL_SHIPPING:"local-shipping",LOCK:"lock",MAIL:"mail",MENU:"menu",MONEY_BAG:"money-bag",MORE_HORIZ:"more-horiz",NOTIFICATIONS:"notifications",ODOMETER:"odometer",OPEN_IN_NEW:"open-in-new",PALETTE:"palette",PAYPAL:"paypal",PERSON:"person",PERSON_SEARCH:"person-search",PHOTO_CAMERA:"photo-camera",PINTEREST:"pinterest",PLAY_ARROW:"play-arrow",POLICY:"policy",POWER:"power",POWER_OFF:"power-off",PRIORITY_HIGH:"priority-high",REMOVE:"remove",REQUEST_QUOTE:"request-quote",RESET_WRENCH:"reset-wrench",ROAD:"road",ROUNDED_CORNER:"rounded-corner",RULER:"ruler",SAILING:"sailing",SCHOOL:"school",SEARCH:"search",SEATING:"seating",SELL:"sell",SENSORS:"sensors",SETTINGS:"settings",SHARE:"share",SHIELD_CHECK:"shield-check",SHOPPING_CART:"shopping-cart",SLEEPS:"sleeps",SMS:"sms",SNOWFLAKE:"snowflake",STAR:"star",SUMMARIZE:"summarize",SWAP_HORIZ:"swap-horiz",SWAP_VERT:"swap-vert",THREE_D_ROTATION:"three-d-rotation",THUMB_UP:"thumb-up",TRENDING_DOWN:"trending-down",TROPHY:"trophy",TUNE:"tune",TWITTER:"twitter",UMBRELLA:"umbrella",VERIFIED:"verified",VIDEOCAM:"videocam",VIEW_IN_AR:"view-in-ar",VISIBILITY:"visibility",VOLUME_OFF:"volume-off",VOLUME_ON:"volume-on",WAREHOUSE:"warehouse",WARNING:"warning",WATER:"water",WEIGHT:"weight",WIDTH:"width",WORKSPACE_PREMIUM:"workspace-premium",WRENCH:"wrench",YOUTUBE:"youtube"},oe={ATV:{ATV:"atv-atv",DUNE_BUGGY:"atv-dune-buggy",GOLF_CART:"atv-golf-cart",GO_KART:"atv-go-kart",SAND_RAIL:"atv-sand-rail",SIDE_BY_SIDE:"atv-side-by-side",TRAILER:"atv-trailer"},BOATMART:{PWC:"boatmart-pwc",TRAILER:"boatmart-trailer"},RV:{CLASS_A:"rv-class-a",CLASS_B:"rv-class-b",CLASS_C:"rv-class-c",FIFTH_WHEEL:"rv-fifth-wheel",FISH_HOUSE:"rv-fish-house",PARK_MODEL:"rv-park-model",POP_UP_CAMPER:"rv-pop-up-camper",TRAVEL_TRAILER:"rv-travel-trailer",TRUCK_CAMPER:"rv-truck-camper"}},ie={class:"tide-accordion-item"},ae=e.defineComponent({__name:"TideAccordionItem",props:{hasBottomDivider:{type:Boolean,default:!1},hasTopDivider:{type:Boolean,default:!1},isExpanded:{type:Boolean,default:!1},isOptional:{type:Boolean,default:!1},label:{default:""}},emits:["toggle"],setup(r,{emit:n}){const s=r,o=()=>{n("toggle")};return(i,c)=>(e.openBlock(),e.createElementBlock("div",ie,[s.hasTopDivider?(e.openBlock(),e.createBlock(Y,{key:0})):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["tide-accordion-head",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).PADDING.Y.HALF,e.unref(t).CURSOR.POINTER]),onClick:o},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD])},[e.createElementVNode("span",null,e.toDisplayString(s.label),1),s.isOptional?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," (optional) ",2)):e.createCommentVNode("",!0)],2),e.createVNode(E,{icon:i.isExpanded?e.unref(u).EXPAND_LESS:e.unref(u).EXPAND_MORE,size:e.unref(L).LARGE},null,8,["icon","size"])],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-accordion-body",s.isExpanded?"expanded":"collapsed",e.unref(t).DISPLAY.GRID])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).OVERFLOW.Y.HIDDEN,e.unref(t).MARGIN.Y.ONE,e.unref(t).FONT.ROLE.BODY_1,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},[e.renderSlot(i.$slots,"default",{},void 0,!0)],2)],2),s.hasBottomDivider?(e.openBlock(),e.createBlock(Y,{key:1})):e.createCommentVNode("",!0)]))}});const A=(r,n)=>{const s=r.__vccOpts||r;for(const[o,i]of n)s[o]=i;return s},le=A(ae,[["__scopeId","data-v-d5fdff3b"]]),I={BUTTON:"button",LINK:"a"},B={BUTTON:"button",DIV:"div",LINK:"a"},F={PRIMARY:"primary",SECONDARY:"secondary",TERTIARY:"tertiary",QUATERNARY:"quaternary",FLOATING:"floating"},h={BLANK:"_blank",SELF:void 0},P=e.defineComponent({__name:"TideButtonIcon",props:{disabled:{type:Boolean,default:!1},element:{default:I.BUTTON},href:{default:void 0},icon:{default:void 0},isNewTab:{type:Boolean,default:!1},priority:{default:F.PRIMARY}},setup(r){const n=r;return(s,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(I).LINK?"a":"button"),{"aria-label":n.icon,class:e.normalizeClass([n.element===e.unref(I).LINK?"tide-link-as-button-icon":"tide-button-icon",n.priority&&`tide-button-${n.priority}`,[e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.HALF],n.element===e.unref(I).LINK?[e.unref(t).UNDERLINE.OFF]:""]),disabled:n.element===e.unref(I).BUTTON&&n.disabled,href:n.element===e.unref(I).LINK&&n.href?n.href:void 0,target:n.element===e.unref(I).LINK&&n.isNewTab?e.unref(h).BLANK:e.unref(h).SELF},{default:e.withCtx(()=>[n.icon?(e.openBlock(),e.createBlock(E,{key:0,icon:n.icon,size:e.unref(L).LARGE},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["aria-label","class","disabled","href","target"]))}}),g={ERROR:"error",INFO:"info",SUCCESS:"success",WARNING:"warning"},ce=e.defineComponent({__name:"TideAlert",props:{heading:{default:void 0},isToast:{type:Boolean,default:!1},type:{default:g.INFO}},setup(r){const n=r,s=e.computed(()=>{let o=u.INFO;switch(n.type){case g.ERROR:o=u.ERROR;break;default:case g.INFO:o=u.INFO;break;case g.SUCCESS:o=u.CHECK;break;case g.WARNING:o=u.WARNING;break}return o});return(o,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([n.type,"tide-alert",e.unref(t).DISPLAY.GRID,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.FULL.ONE,n.type===e.unref(g).ERROR&&e.unref(t).BG.GLOBAL.SURFACE.ERROR,n.type===e.unref(g).INFO&&e.unref(t).BG.GLOBAL.SURFACE.INFO,n.type===e.unref(g).SUCCESS&&e.unref(t).BG.GLOBAL.SURFACE.SUCCESS,n.type===e.unref(g).WARNING&&e.unref(t).BG.GLOBAL.SURFACE.WARNING,n.isToast?e.unref(t).SHADOW.BOTTOM:""])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-icon",e.unref(t).PADDING.FULL.HALF,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).FONT.COLOR.SURFACE.INVERSE,n.type===e.unref(g).ERROR&&e.unref(t).BG.GLOBAL.PRIMARY.ERROR,n.type===e.unref(g).INFO&&e.unref(t).BG.GLOBAL.PRIMARY.INFO,n.type===e.unref(g).SUCCESS&&e.unref(t).BG.GLOBAL.PRIMARY.SUCCESS,n.type===e.unref(g).WARNING&&e.unref(t).BG.GLOBAL.PRIMARY.WARNING])},[e.createVNode(E,{icon:s.value},null,8,["icon"])],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-heading",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER])},[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},e.toDisplayString(n.heading),3)],2),e.createVNode(P,{class:e.normalizeClass(["tide-alert-close",e.unref(t).AXIS2.CENTER,e.unref(t).FONT.COLOR.SURFACE.DEFAULT]),icon:e.unref(u).CLOSE,priority:e.unref(F).QUATERNARY,"aria-label":"Close alert"},null,8,["class","icon","priority"]),e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-body",e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},[e.renderSlot(o.$slots,"default",{},void 0,!0)],2)],2))}});const de=A(ce,[["__scopeId","data-v-e15788b8"]]),ue=["media","srcset"],Ee=["alt","fetchpriority","loading","src"],X="https://cdn-static-rec.tilabs.io/image-coming-soon-512.png",Z=e.defineComponent({__name:"TideImage",props:{alt:{default:""},height:{default:void 0},isLazy:{type:Boolean,default:!0},sources:{default:()=>[]},src:{default:void 0},width:{default:void 0}},setup(r){const n=r,s=e.ref(),o=e.ref(),i=()=>{var a,d;const c=(a=o.value)==null?void 0:a.currentSrc,l=(d=s.value)==null?void 0:d.querySelector(`source[srcset="${c}"]`);c&&l?l.srcset=X:o.value&&(o.value.src=X)};return(c,l)=>(e.openBlock(),e.createElementBlock("picture",{class:e.normalizeClass(["tide-image",e.unref(t).DISPLAY.BLOCK]),ref_key:"picture",ref:s,style:e.normalizeStyle(c.width||c.height?{width:c.width||void 0,height:c.height||void 0}:void 0)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.sources,a=>(e.openBlock(),e.createElementBlock("source",{key:a.srcset,media:`(min-width:${a.media}px)`,srcset:a.srcset},null,8,ue))),128)),e.createElementVNode("img",{alt:c.alt,class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL,e.unref(t).OBJECT.CENTER,e.unref(t).OBJECT.COVER]),fetchpriority:c.isLazy?void 0:"high",loading:n.isLazy?"lazy":"eager",ref_key:"img",ref:o,src:c.src??X,onError:i},null,42,Ee)],6))}}),Oe=e.defineComponent({__name:"TideBackgroundImage",props:{alt:{default:""},isLazy:{type:Boolean,default:!0},sources:{default:()=>[]},src:{default:void 0}},setup(r){const n=r;return(s,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(t).POSITION.RELATIVE,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).ISOLATION.ISOLATE])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER])},[e.createVNode(Z,{class:e.normalizeClass(["tide-background-image",e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL]),"is-lazy":n.isLazy,sources:n.sources,src:n.src,alt:"props.alt"},null,8,["class","is-lazy","sources","src"])],2),e.renderSlot(s.$slots,"default",{},void 0,!0)],2))}});const Re=A(Oe,[["__scopeId","data-v-44934445"]]),Ie=e.defineComponent({__name:"TideBadge",props:{iconLeading:{default:void 0},isFloating:{type:Boolean,default:!1},label:{}},setup(r){const n=r;return(s,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge",n.isFloating?[e.unref(t).BG.SURFACE.FLOATING,e.unref(t).FONT.ROLE.LABEL_3,e.unref(t).SHADOW.BOTTOM]:[e.unref(t).BG.SURFACE.VARIANT,e.unref(t).FONT.ROLE.LABEL_2],e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).BORDER.RADIUS.QUARTER,e.unref(t).PADDING.Y.QUARTER,e.unref(t).PADDING.X.HALF])},[n.iconLeading?(e.openBlock(),e.createBlock(E,{key:0,icon:n.iconLeading},null,8,["icon"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(n.label),1)],2))}}),j={YEARS_10:"10",YEARS_15:"15",YEARS_5:"5"},fe={class:e.normalizeClass([])},Te=e.defineComponent({__name:"TideBadgeTrustedPartner",props:{years:{default:j.YEARS_5}},setup(r){const n=r;return(s,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge-trusted-partner",e.unref(t).FONT.COLOR.SURFACE.BRAND,e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).PADDING.Y.QUARTER,e.unref(t).PADDING.X.HALF,e.unref(t).FONT.ROLE.LABEL_2])},[e.createVNode(E,{icon:e.unref(u).AWARD_STAR},null,8,["icon"]),e.createElementVNode("div",fe,[e.createElementVNode("span",null,e.toDisplayString(n.years)+" year trusted partner",1)])],2))}}),Ae=["data-track","href"],Le=["data-track"],Ne={key:0},ve=e.defineComponent({__name:"TideBreadCrumbs",props:{breadCrumbs:{default:void 0}},setup(r){const n=r;return(s,o)=>(e.openBlock(),e.createElementBlock("ul",{class:e.normalizeClass(["tide-bread-crumbs",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.breadCrumbs,(i,c)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:i.label},[e.createElementVNode("li",{class:e.normalizeClass([e.unref(t).FONT.ROLE.BODY_2])},[i.url?(e.openBlock(),e.createElementBlock("a",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2,e.unref(t).FONT.COLOR.SURFACE.DEFAULT]),"data-track":i.dataTrack||void 0,href:i.url},e.toDisplayString(i.label),11,Ae)):(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT]),"data-track":i.dataTrack||void 0},e.toDisplayString(i.label),11,Le))],2),n.breadCrumbs&&c<n.breadCrumbs.length-1?(e.openBlock(),e.createElementBlock("li",Ne,[e.createVNode(E,{icon:e.unref(u).ARROW_RIGHT,size:e.unref(L).SMALL},null,8,["icon","size"])])):e.createCommentVNode("",!0)],64))),128))],2))}}),me=e.defineComponent({__name:"TideButton",props:{disabled:{type:Boolean,default:!1},element:{default:I.BUTTON},href:{default:void 0},iconLeading:{default:void 0},iconTrailing:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{default:void 0},priority:{default:F.PRIMARY},size:{default:k.LARGE}},setup(r){const n=r;return(s,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(I).LINK?e.unref(I).LINK:e.unref(I).BUTTON),{class:e.normalizeClass(["tide-button",n.priority&&`tide-button-${n.priority}`,n.element===e.unref(I).LINK?[e.unref(t).DISPLAY.INLINE_FLEX]:[e.unref(t).DISPLAY.FLEX],n.element===e.unref(I).LINK?e.unref(t).UNDERLINE.OFF:"",s.size===e.unref(k).SMALL&&[e.unref(t).FONT.ROLE.BUTTON_2,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF],s.size===e.unref(k).LARGE&&[e.unref(t).FONT.ROLE.BUTTON_1,e.unref(t).PADDING.X.TWO,e.unref(t).PADDING.Y.ONE],e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD]),disabled:n.element===e.unref(I).BUTTON&&n.disabled,href:n.element===e.unref(I).LINK&&n.href?n.href:void 0,target:n.element===e.unref(I).LINK&&n.isNewTab?e.unref(h).BLANK:e.unref(h).SELF},{default:e.withCtx(()=>[n.iconLeading?(e.openBlock(),e.createBlock(E,{key:0,icon:n.iconLeading,size:s.size===e.unref(k).LARGE?e.unref(L).LARGE:e.unref(L).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(n.label)+" ",1),n.iconTrailing?(e.openBlock(),e.createBlock(E,{key:1,icon:n.iconTrailing,size:s.size===e.unref(k).LARGE?e.unref(L).LARGE:e.unref(L).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["class","disabled","href","target"]))}}),pe=e.defineComponent({__name:"TideButtonPagination",props:{disabled:{type:Boolean,default:!1},element:{default:B.BUTTON},href:{default:void 0},label:{default:void 0}},setup(r){const n=r;return(s,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(B).LINK?"a":n.element===e.unref(B).BUTTON?"button":"div"),{class:e.normalizeClass([n.element===e.unref(B).LINK?"tide-link-as-button-icon":"tide-button-icon",[e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.HALF],n.element===e.unref(B).LINK?[e.unref(t).UNDERLINE.OFF]:"",n.element===e.unref(B).DIV?[e.unref(t).CURSOR.POINTER]:"",[e.unref(t).FONT.ROLE.HEADLINE_3]]),disabled:n.element===e.unref(B).BUTTON&&n.disabled,href:n.element===e.unref(B).LINK&&n.href?n.href:void 0},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(["label",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER])},e.toDisplayString(n.label),3)]),_:1},8,["class","disabled","href"]))}});const J=A(pe,[["__scopeId","data-v-f6d8e4e9"]]),ge=["data-track","onClick"],_e=e.defineComponent({__name:"TideButtonSegmented",props:{activeTab:{default:0},tabs:{}},emits:["change"],setup(r,{emit:n}){const s=r,o=i=>{n("change",i)};return(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-button-segmented",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.QUARTER,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.FULL.QUARTER,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).WIDTH.FULL])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.tabs,(l,a)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-button-segmented-tab",a===i.activeTab?[e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).FONT.COLOR.SURFACE.DEFAULT,e.unref(t).SHADOW.BOTTOM]:["inactive",e.unref(t).FONT.COLOR.SURFACE.VARIANT],e.unref(t).FLEX.GROW.ON,e.unref(t).BORDER.RADIUS.QUARTER,e.unref(t).PADDING.Y.QUARTER,e.unref(t).WIDTH.FULL,e.unref(t).FONT.ROLE.BUTTON_1,e.unref(t).WHITESPACE_WRAP.OFF]),"data-track":l.dataTrack||void 0,key:l.label,onClick:d=>o(a)},[e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD])},e.toDisplayString(l.label),3),l.count&&l.count>0?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD])}," ("+e.toDisplayString(l.count)+") ",3)):e.createCommentVNode("",!0)],10,ge))),128))],2))}});const Fe=A(_e,[["__scopeId","data-v-9ab93f31"]]),M={ACTIONABLE:"action",INFORMATIONAL:"informational",SELECTABLE:"select"},Se=e.defineComponent({__name:"TideCard",props:{description:{default:void 0},heading:{},icon:{default:void 0},selected:{type:Boolean,default:void 0},type:{default:M.INFORMATIONAL},href:{default:void 0}},setup(r){return(n,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.href?"a":n.type===e.unref(M).INFORMATIONAL?"div":"button"),{class:e.normalizeClass(["tide-card",e.unref(t).BORDER.COLOR.LOW,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.HALF,e.unref(t).PADDING.FULL.ONE,e.unref(t).WIDTH.FULL,e.unref(t).ALIGN.X.LEFT,e.unref(t).FLEX.DIRECTION.COLUMN,n.type!==e.unref(M).INFORMATIONAL&&"hoverable",n.type===e.unref(M).SELECTABLE&&n.selected&&"selected"]),href:n.href},{default:e.withCtx(()=>[n.icon?(e.openBlock(),e.createBlock(E,{key:0,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF]),icon:n.icon,size:e.unref(L).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).AXIS2.START,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.HALF])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},e.toDisplayString(n.heading),3),n.description?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(n.description),3)):e.createCommentVNode("",!0)],2)]),_:1},8,["class","href"]))}});const De=A(Se,[["__scopeId","data-v-98f24c4f"]]),Ce=e.defineComponent({__name:"TideCarousel",props:{isFloating:{type:Boolean,default:!1},isHideawayButtons:{type:Boolean,default:!0},isTouchscreen:{type:Boolean,default:void 0},subtitle:{default:void 0},title:{default:void 0}},emits:["change"],setup(r,{emit:n}){const s=r,o=e.ref(),i=e.ref(),c=e.ref(),l=e.ref(),a=e.ref(0),d=e.ref(),f=e.ref(),N=e.ref(),_=e.ref(),S=e.ref(),U=()=>{const v=Array.from(o.value.children).map(R=>R.offsetLeft);if(v.length===0)return;const V=v.reduce((R,p)=>Math.abs(p-i.value.scrollLeft)<Math.abs(R-i.value.scrollLeft)?p:R);a.value=v.indexOf(V)},D=()=>{c.value=i.value.scrollLeft+i.value.clientWidth,l.value=o.value.scrollWidth,d.value=i.value.clientWidth,f.value=l.value>d.value,N.value=c.value===l.value,_.value=i.value.scrollWidth-i.value.clientWidth,S.value=f.value&&!s.isTouchscreen,U()},C=()=>{D()},O=v=>{i.value.scrollTo({behavior:"smooth",left:o.value.children[v].offsetLeft})},m=()=>{c.value>l.value?i.value.scrollTo({behavior:"smooth",left:l}):N.value||O(a.value+1)},T=()=>{a.value===0||O(a.value-1)};return e.onMounted(()=>{D(),window.addEventListener("resize",D)}),e.onUnmounted(()=>{window.removeEventListener("resize",D)}),e.onUpdated(()=>{D()}),e.watch(a,()=>{n("change",a.value)}),(v,V)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["tide-carousel",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.TWO,e.unref(t).WIDTH.MAX_FULL]),ref:"carouselRef"},[!s.isFloating&&(S.value||s.title)?(e.openBlock(),e.createElementBlock("section",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,s.title?e.unref(t).AXIS1.BETWEEN:e.unref(t).AXIS1.END,e.unref(t).AXIS2.CENTER,e.unref(t).WIDTH.FULL])},[s.title||s.subtitle?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.ONE])},[s.title?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.DISPLAY_1])},e.toDisplayString(s.title),3)):e.createCommentVNode("",!0),s.subtitle?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(s.subtitle),3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),S.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.ONE])},[e.createVNode(P,{disabled:a.value===0,icon:e.unref(u).CHEVRON_LEFT,priority:e.unref(F).TERTIARY,onClick:T},null,8,["disabled","icon","priority"]),e.createVNode(P,{disabled:N.value,icon:e.unref(u).CHEVRON_RIGHT,priority:e.unref(F).TERTIARY,onClick:m},null,8,["disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),e.renderSlot(v.$slots,"misc",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.RELATIVE])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).SCROLLBAR.OFF,e.unref(t).SNAP.ON,e.unref(t).OVERFLOW.X.SCROLL,e.unref(t).WIDTH.FULL]),ref_key:"frameRef",ref:i,onScroll:C},[e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.ONE,e.unref(t).LIST_BULLETS.OFF]),ref_key:"contentRef",ref:o},[e.renderSlot(v.$slots,"default",{},void 0,!0)],2)],34),v.isFloating&&S.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-carousel-button-overlay",e.unref(t).POSITION.ABSOLUTE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).AXIS2.CENTER,e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL,e.unref(t).POINTER_EVENTS.OFF,s.isHideawayButtons?"hideaway":""])},[e.createVNode(P,{class:e.normalizeClass([e.unref(t).MARGIN.LEFT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:a.value===0,icon:e.unref(u).CHEVRON_LEFT,priority:e.unref(F).QUATERNARY,onClick:T},null,8,["class","disabled","icon","priority"]),e.createVNode(P,{class:e.normalizeClass([e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:N.value,icon:e.unref(u).CHEVRON_RIGHT,priority:e.unref(F).QUATERNARY,onClick:m},null,8,["class","disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)],2))}});const he=A(Ce,[["__scopeId","data-v-fa6ae48f"]]),Pe=["href","target"],Be=e.defineComponent({__name:"TideChipAction",props:{href:{},isNewTab:{type:Boolean,default:!1},label:{}},setup(r){const n=r;return(s,o)=>(e.openBlock(),e.createElementBlock("a",{class:e.normalizeClass(["tide-chip-action",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).FONT.ROLE.LINK_2,e.unref(t).FONT.COLOR.SURFACE.DEFAULT,e.unref(t).UNDERLINE.OFF]),href:n.href,target:n.isNewTab?e.unref(h).BLANK:e.unref(h).SELF},[e.createVNode(E,{icon:e.unref(u).SEARCH},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(n.label),1)],10,Pe))}});const Ue=A(Be,[["__scopeId","data-v-7e30d2ca"]]),ye=e.defineComponent({__name:"TideChipFilter",props:{isActive:{type:Boolean},label:{}},setup(r){const n=r;return(s,o)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-chip-filter",n.isActive?[e.unref(t).BG.SECONDARY,e.unref(t).FONT.COLOR.SECONDARY]:[e.unref(t).BG.SURFACE.VARIANT,e.unref(t).FONT.COLOR.SURFACE.DEFAULT],e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).FONT.ROLE.LABEL_2,n.isActive?"active":""])},[e.renderSlot(s.$slots,"default",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF])},[e.createElementVNode("span",{class:e.normalizeClass([n.isActive?"":"icon-spacing",e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).WHITESPACE_WRAP.OFF])},e.toDisplayString(n.label),3)],2)],2))}});const ke=A(ye,[["__scopeId","data-v-6ddce1c2"]]),Ge=e.defineComponent({__name:"TideChipInput",props:{label:{}},setup(r){const n=r;return(s,o)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-chip-input",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).FONT.COLOR.SURFACE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).FONT.ROLE.LABEL_2])},[e.createElementVNode("span",null,e.toDisplayString(n.label),1),e.createVNode(E,{icon:e.unref(u).CLOSE},null,8,["icon"])],2))}});const be=A(Ge,[["__scopeId","data-v-42611a29"]]),He={class:"tide-columns"},Me={class:"tide-columns-column"},Ve={class:"tide-columns-column"},Xe={class:"tide-columns-column"},We={class:"tide-columns-column"},Ye=e.defineComponent({__name:"TideColumns",props:{heading:{default:""}},setup(r){const n=r;return(s,o)=>(e.openBlock(),e.createElementBlock("section",He,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(n.heading),3),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.WRAP,e.unref(t).GAP.TWO,e.unref(t).LIST_BULLETS.OFF])},[e.createElementVNode("li",Me,[e.renderSlot(s.$slots,"section1",{},void 0,!0)]),e.createElementVNode("li",Ve,[e.renderSlot(s.$slots,"section2",{},void 0,!0)]),e.createElementVNode("li",Xe,[e.renderSlot(s.$slots,"section3",{},void 0,!0)]),e.createElementVNode("li",We,[e.renderSlot(s.$slots,"section4",{},void 0,!0)])],2)]))}});const qe=A(Ye,[["__scopeId","data-v-c92a6639"]]),ze={key:0,class:e.normalizeClass(["tide-indicator-label"])},we=e.defineComponent({__name:"TideIndicator",props:{label:{default:void 0}},setup(r){const n=r;return(s,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-indicator",n.label?"":"dot",e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.X.CENTER,e.unref(t).BG.GLOBAL.PRIMARY.ERROR,e.unref(t).BORDER.RADIUS.FULL,n.label&&n.label.toString().length>1?[e.unref(t).PADDING.X.HALF]:[],n.label?[e.unref(t).POSITION.RELATIVE,e.unref(t).FONT.ROLE.LABEL_3,e.unref(t).FONT.COLOR.SURFACE.INVERSE]:[e.unref(t).BORDER.FULL.ONE]])},[n.label?(e.openBlock(),e.createElementBlock("div",ze,e.toDisplayString(n.label),1)):e.createCommentVNode("",!0)],2))}});const xe=A(we,[["__scopeId","data-v-d402ac82"]]),$e=["checked","disabled","name","id"],Ke=["for"],Qe=e.defineComponent({__name:"TideInputCheckbox",props:{checked:{type:Boolean,default:!1},dataTrack:{default:""},disabled:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{default:void 0},number:{default:void 0}},setup(r){const n=r,s=e.computed(()=>n.checked||n.indeterminate);return(o,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-checkbox",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.BODY_1,o.disabled?["disabled",e.unref(t).POINTER_EVENTS.OFF]:e.unref(t).CURSOR.POINTER])},[e.createElementVNode("input",{checked:s.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),disabled:n.disabled,name:n.name,ref:"input",onClick:i[0]||(i[0]=e.withModifiers(()=>{},["prevent"])),id:n.inputId,type:"checkbox"},null,10,$e),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-checkbox-custom",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).BORDER.FULL.ONE,s.value?[e.unref(t).BORDER.COLOR.HIGH,e.unref(t).BG.SECONDARY]:[e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).BG.SURFACE.DEFAULT],e.unref(t).BORDER.RADIUS.QUARTER,s.value&&"checked",o.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER])},[s.value?(e.openBlock(),e.createBlock(E,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SECONDARY]),icon:n.indeterminate?e.unref(u).REMOVE:e.unref(u).CHECK,size:e.unref(L).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0)],2),o.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.LABEL_1,o.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER]),for:n.inputId,onClick:i[1]||(i[1]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("span",null,e.toDisplayString(o.label),1),n.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref(q)(n.number))+") ",3)):e.createCommentVNode("",!0)],10,Ke)):e.createCommentVNode("",!0)],2))}});const Ze=A(Qe,[["__scopeId","data-v-cd0f3824"]]),je=["checked","id"],Je=["for"],et=e.defineComponent({__name:"TideInputRadio",props:{checked:{type:Boolean,default:!1},dataTrack:{default:""},disabled:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{}},setup(r){const n=r,s=e.ref(n.checked);return e.watch(()=>n.checked,(o,i)=>{(o!==i||o!==s.value)&&(s.value=o)}),(o,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-radio",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POINTER_EVENTS.OFF,n.disabled&&"disabled"])},[e.createElementVNode("input",{checked:s.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),id:n.inputId,name:"",type:"radio",value:""},null,10,je),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-custom",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,s.value?e.unref(t).BORDER.COLOR.HIGH:e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).CURSOR.POINTER,e.unref(t).POINTER_EVENTS.ON,s.value&&"checked"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-check",e.unref(t).BORDER.RADIUS.FULL,n.checked&&e.unref(t).BG.SECONDARY])},null,2)],2),e.createElementVNode("label",{class:e.normalizeClass([e.unref(t).FONT.ROLE.BODY_1,e.unref(t).CURSOR.POINTER,e.unref(t).POINTER_EVENTS.ON]),for:n.inputId},e.toDisplayString(n.label),11,Je)],2))}});const tt=A(et,[["__scopeId","data-v-4fd02dd8"]]),z="Please enter a valid value.",nt={message:"",valid:!0},H=r=>n=>{let s=nt;return n.trim().match(r)||(s={message:z,valid:!1}),s},w=(r,n)=>typeof r=="string"&&r.length>0?r:typeof n=="string"&&n.length>0?n:z,x=(r,n)=>r!==!1||n!==!1,st=({maxlength:r,minlength:n,required:s,value:o})=>{const i=o.length===0&&!s,c=r&&o.length>r;return!(!i&&n&&o.length<n)&&!c},ee=({error:r,errorFromProps:n,maxlength:s,minlength:o,required:i=!1,validators:c,value:l})=>{if(r.value=n||!1,!r.value&&c){const a=ot((l==null?void 0:l.value)||"",c);a.valid||(r.value=a.message)}if(!r.value&&(s||o)){const a=rt({maxlength:s,minlength:o,required:i,value:(l==null?void 0:l.value)||""});a.valid||(r.value=a.message)}},rt=({maxlength:r,minlength:n,required:s=!1,value:o})=>{const i={message:"",valid:!0};return i.valid=st({maxlength:r,minlength:n,required:s,value:o}),i.valid||(i.message=z,r&&n?i.message=`Please enter a value between ${n} and ${r} characters in length.`:r?i.message=`Please enter a value no more than ${r} characters in length.`:n&&(i.message=`Please enter a value no less than ${n} characters in length.`)),i};function ot(r,n){for(const s of n){const o=s(r);if(!o.valid)return o}return{message:"",valid:!0}}const it=["for"],at=["disabled","name","required","id"],lt=["label"],ct=["value"],dt=["selected","value"],ut=["selected","value"],Et=e.defineComponent({__name:"TideInputSelect",props:{inputId:{default:void 0},supportingText:{default:void 0},optgroups:{},options:{},disabled:{type:Boolean,default:!1},error:{type:[String,Boolean],default:!1},label:{default:void 0},name:{},required:{type:Boolean,default:!1},value:{default:void 0}},setup(r,{expose:n}){const s=r,o=e.ref(s.error),i=e.ref(!1),c=e.ref(null),l=e.ref(s.required),a=e.ref(s.value),d=e.computed(()=>w(s.error,o.value)),f=e.computed(()=>s.required?`${s.label} *`:s.label),N=e.computed(()=>s.required&&!a.value||x(o.value,s.error)),_=e.computed(()=>i.value||!S.value),S=e.computed(()=>a.value===void 0),U=()=>{var m;const O=new MouseEvent("mousedown");(m=c==null?void 0:c.value)==null||m.dispatchEvent(O)},D=()=>{i.value=!0},C=()=>{i.value=!1};return e.watch(()=>s.value,(O,m)=>{(O!==m||O!==a.value)&&(a.value=O)}),n({error:o,value:a}),(O,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-select",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,O.disabled&&"disabled",N.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-border",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,s.disabled?e.unref(t).CURSOR.NOT_ALLOWED:"",e.unref(t).OVERFLOW.XY.HIDDEN]),onClick:U},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL])},[O.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([_.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.LEFT,e.unref(t).MARGIN.TOP.HALF,e.unref(t).MARGIN.LEFT.ONE,!N.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF]),for:s.inputId},e.toDisplayString(f.value),11,it)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("select",{class:e.normalizeClass([e.unref(t).PADDING.BOTTOM.HALF,e.unref(t).PADDING.X.ONE,e.unref(t).WIDTH.FULL,O.disabled&&e.unref(t).CURSOR.NOT_ALLOWED]),disabled:O.disabled,name:O.name,ref_key:"input",ref:c,required:l.value,onFocus:D,onFocusout:C,id:s.inputId,"onUpdate:modelValue":m[0]||(m[0]=T=>a.value=T)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.optgroups,T=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[T.options?(e.openBlock(),e.createElementBlock("optgroup",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:T.label,label:T.label},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(T.options,v=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:v.value,value:v.value},e.toDisplayString(v.label),11,ct))),128))],10,lt)):(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:T.value,selected:a.value===T.value?!0:void 0,value:T.value},e.toDisplayString(T.label),11,dt))],64))),256)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(O.options,T=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:T.value,selected:a.value===T.value?!0:void 0,value:T.value},e.toDisplayString(T.label),11,ut))),128))],42,at),[[e.vModelSelect,a.value]])],2),e.createVNode(E,{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.RIGHT,e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.OFF]),icon:e.unref(u).EXPAND_MORE,size:e.unref(L).SMALL},null,8,["class","icon","size"])],2),s.supportingText||N.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[N.value?(e.openBlock(),e.createBlock(E,{key:0,class:e.normalizeClass([]),icon:e.unref(u).ERROR,size:e.unref(L).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(N.value?d.value:s.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}});const Ot=A(Et,[["__scopeId","data-v-66bf9503"]]),G={DATE:"date",DATETIME_LOCAL:"datetime-local",EMAIL:"email",MONTH:"month",NUMBER:"number",PASSWORD:"password",SEARCH:"search",TEL:"tel",TEXT:"text",TIME:"time",URL:"url",WEEK:"week"},Rt=["for"],It=["autocomplete","data-track","disabled","maxlength","minlength","name","required","type","id"],ft=e.defineComponent({__name:"TideInputText",props:{autocomplete:{type:Boolean,default:!1},dataTrack:{default:""},disabled:{type:Boolean,default:!1},error:{type:[String,Boolean],default:!1},hasClear:{type:Boolean,default:!1},iconLeading:{default:void 0},inputId:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{},prefix:{default:void 0},required:{type:Boolean,default:!1},suffix:{default:void 0},supportingText:{default:void 0},transformValue:{type:Function,default:void 0},type:{default:G.TEXT},validators:{default:void 0},value:{default:void 0}},setup(r,{expose:n}){const s=r,o=e.ref(s.error),i=e.ref(!1),c=e.ref(null),l=e.ref(!1),a=e.ref(s.value),d=e.computed(()=>w(s.error,o.value)),f=e.computed(()=>s.required&&s.label?`${s.label} *`:s.label),N=e.computed(()=>s.hasClear&&a.value),_=e.computed(()=>s.required&&a.value!==void 0&&!a.value||x(o.value,s.error)),S=e.computed(()=>i.value||!U.value),U=e.computed(()=>a.value===""||a.value===void 0),D=e.computed(()=>s.type===G.PASSWORD&&l.value===!0?G.TEXT:s.type),C=()=>{var R;a.value="",(R=c.value)==null||R.focus()},O=()=>{i.value=!0},m=()=>{i.value=!1,a.value||(a.value=""),v()},T=()=>{var R,p;if(s.transformValue){const y=((p=(R=a.value)==null?void 0:R.match(/\d/g))==null?void 0:p.join(""))||void 0;a.value=y?s.transformValue(y):""}},v=()=>{ee({error:o,errorFromProps:s.error,maxlength:s.maxlength,minlength:s.minlength,required:s.required,validators:s.validators,value:a})},V=R=>{a.value=R};return e.watch(()=>s.value,(R,p)=>{(R!==p||R!==a.value)&&(a.value=R)}),n({error:o,required:s.required,updateValue:V,value:a}),(R,p)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-text",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,R.disabled&&"disabled",_.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-border",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,N.value?[e.unref(t).PADDING.RIGHT.HALF,e.unref(t).PADDING.LEFT.ONE]:[e.unref(t).PADDING.X.ONE],e.unref(t).PADDING.Y.HALF,s.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.TEXT])},[s.iconLeading?(e.openBlock(),e.createBlock(E,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT]),icon:s.iconLeading,size:e.unref(L).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[s.prefix?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-prefix",e.unref(t).FONT.ROLE.BODY_1,,!_.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,S.value?"":"offset"])},e.toDisplayString(s.prefix),3)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL]),onClick:p[1]||(p[1]=e.withModifiers(y=>{var $;return($=c.value)==null?void 0:$.focus()},["prevent"]))},[R.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([S.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!_.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).CURSOR.TEXT,e.unref(t).POINTER_EVENTS.OFF]),for:s.inputId},e.toDisplayString(f.value),11,Rt)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{autocomplete:R.autocomplete?"on":"off",class:e.normalizeClass([e.unref(t).WIDTH.FULL,R.disabled&&e.unref(t).CURSOR.NOT_ALLOWED]),"data-track":s.dataTrack,disabled:s.disabled,maxlength:s.maxlength,minlength:s.minlength,name:s.name,ref_key:"input",ref:c,required:s.required,type:D.value,onChange:v,onFocus:O,onFocusout:m,onInput:T,id:s.inputId,"onUpdate:modelValue":p[0]||(p[0]=y=>a.value=y)},null,42,It),[[e.vModelDynamic,a.value]])],2),s.suffix?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["tide-input-text-suffix",e.unref(t).FONT.ROLE.BODY_1,!_.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,S.value?"":"offset"])},e.toDisplayString(s.suffix),3)):e.createCommentVNode("",!0)],2),N.value&&s.type!==e.unref(G).PASSWORD?(e.openBlock(),e.createBlock(E,{key:1,class:e.normalizeClass([e.unref(t).PADDING.Y.HALF,e.unref(t).PADDING.FULL.HALF,e.unref(t).CURSOR.POINTER]),icon:e.unref(u).CLOSE,size:e.unref(L).SMALL,onClick:C},null,8,["class","icon","size"])):e.createCommentVNode("",!0),s.type===e.unref(G).PASSWORD?(e.openBlock(),e.createBlock(E,{key:2,class:e.normalizeClass([e.unref(t).PADDING.Y.HALF,e.unref(t).PADDING.FULL.HALF,e.unref(t).CURSOR.POINTER]),icon:e.unref(u).VISIBILITY,size:e.unref(L).SMALL,onClick:p[2]||(p[2]=y=>l.value=!l.value)},null,8,["class","icon","size"])):e.createCommentVNode("",!0)],2),s.supportingText||_.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[_.value?(e.openBlock(),e.createBlock(E,{key:0,class:e.normalizeClass([]),icon:e.unref(u).ERROR,size:e.unref(L).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(_.value?d.value:s.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}});const Tt=A(ft,[["__scopeId","data-v-da408013"]]),At=["for"],Lt=["data-track","maxlength","minlength","name","required","rows","id"],Nt=e.defineComponent({__name:"TideInputTextarea",props:{dataTrack:{default:""},error:{type:[String,Boolean],default:!1},inputId:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{default:void 0},required:{type:Boolean,default:!1},rows:{default:8},supportingText:{default:void 0},value:{default:void 0}},setup(r,{expose:n}){const s=r,o=e.ref(s.error),i=e.ref(!1),c=e.ref(null),l=e.ref(s.value),a=e.computed(()=>w(s.error,o.value)),d=e.computed(()=>s.required?`${s.label} *`:s.label),f=e.computed(()=>s.required&&l.value!==void 0&&!l.value||x(o.value,s.error)),N=e.computed(()=>i.value||!_.value),_=e.computed(()=>l.value===""||l.value===void 0),S=()=>{i.value=!0},U=()=>{i.value=!1,l.value||(l.value="")},D=()=>ee({error:o,errorFromProps:s.error,maxlength:s.maxlength,minlength:s.minlength,required:s.required,value:l});return e.watch(()=>s.value,(C,O)=>{(C!==O||C!==l.value)&&(l.value=C)}),n({error:o,required:s.required,value:l}),(C,O)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-textarea",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,f.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-textarea-field",e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.LEFT.ONE,e.unref(t).PADDING.TOP.HALF,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).BG.SURFACE.DEFAULT])},[C.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([N.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!f.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).CURSOR.TEXT,e.unref(t).POINTER_EVENTS.OFF]),for:s.inputId,ref:"label"},e.toDisplayString(d.value),11,At)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("textarea",{class:e.normalizeClass([e.unref(t).WIDTH.FULL]),"data-track":s.dataTrack,maxlength:s.maxlength,minlength:s.minlength,name:s.name,ref_key:"input",ref:c,required:s.required,rows:s.rows,onChange:D,onFocus:S,onFocusout:U,id:s.inputId,"onUpdate:modelValue":O[0]||(O[0]=m=>l.value=m)},null,42,Lt),[[e.vModelText,l.value]])],2),s.supportingText||f.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[f.value?(e.openBlock(),e.createBlock(E,{key:0,icon:e.unref(u).ERROR,size:e.unref(L).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(f.value?a.value:s.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}});const vt=A(Nt,[["__scopeId","data-v-386f76c1"]]),mt=e.defineComponent({__name:"TideLink",props:{element:{default:I.LINK},href:{default:void 0},iconLeading:{default:void 0},iconTrailing:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{default:void 0}},setup(r){const n=r;return(s,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(I).LINK?e.unref(I).LINK:e.unref(I).BUTTON),{class:e.normalizeClass(["tide-link",e.unref(t).DISPLAY.INLINE,e.unref(t).UNDERLINE.ON,e.unref(t).ALIGN.X.LEFT]),href:n.href,target:n.isNewTab?e.unref(h).BLANK:e.unref(h).SELF},{default:e.withCtx(()=>[n.iconLeading?(e.openBlock(),e.createBlock(E,{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.Y.MIDDLE,e.unref(t).MARGIN.RIGHT.QUARTER]),icon:n.iconLeading},null,8,["class","icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ALIGN.Y.MIDDLE])},e.toDisplayString(n.label),3),n.iconTrailing?(e.openBlock(),e.createBlock(E,{key:1,class:e.normalizeClass([e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.Y.MIDDLE,e.unref(t).MARGIN.LEFT.QUARTER]),icon:n.iconTrailing},null,8,["class","icon"])):e.createCommentVNode("",!0)]),_:1},8,["class","href","target"]))}}),te={SM:"sm",MD:"md",LG:"lg",XL:"xl"},pt={SM:768,MD:992,LG:1232,XL:1920},gt=async r=>{const n="body-scroll-lock",s=document.body;if(r){if(!s.dataset.scrollLockY){const o=window.scrollY;s.dataset.scrollLockY=o.toString(),s.style.setProperty("--saved-scroll-y",`${o}px`),s.classList.add(n)}}else if(await e.nextTick(),!document.querySelector("dialog[open]")){const o=parseInt(s.dataset.scrollLockY||"0");s.classList.remove(n),s.style.removeProperty("--saved-scroll-y"),window.scrollTo({behavior:"auto",top:o}),delete s.dataset.scrollLockY}},_t=["textContent"],Ft=e.defineComponent({__name:"TideModal",props:{isBackButton:{type:Boolean,default:!1},isDismissible:{type:Boolean,default:!0},isOpen:{type:Boolean},title:{default:void 0},width:{default:void 0}},emits:["close","back"],setup(r,{emit:n}){const s=r,o=e.ref(),i=e.ref(),c=()=>{var d;(d=i.value)==null||d.showModal()},l=()=>{var d;(d=i.value)==null||d.close()},a=()=>{e.nextTick(()=>{o.value&&(o.value.scrollTop=0)})};return e.watch(()=>s.isOpen,d=>{i.value&&(d?(c(),a()):l(),gt(d))}),e.onMounted(()=>{s.isOpen&&c()}),(d,f)=>(e.openBlock(),e.createElementBlock("dialog",{class:e.normalizeClass(["tide-modal",e.unref(t).BG.INITIAL,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).OVERFLOW.XY.HIDDEN]),ref_key:"modalDialog",ref:i,style:e.normalizeStyle({"--modal-width":s.width}),onClick:f[1]||(f[1]=e.withModifiers(N=>n("close"),["self"])),onClose:f[2]||(f[2]=N=>n("close"))},[e.createElementVNode("div",{class:e.normalizeClass(["tide-modal-body",e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).BORDER.RADIUS.ONE,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.BOTTOM,e.unref(t).SHADOW.TOP,e.unref(t).WIDTH.FULL,e.unref(t).WIDTH.MAX_FULL,e.unref(t).withBreakpoint([e.unref(t).SHADOW.BOTTOM],e.unref(te).SM)])},[e.createElementVNode("header",{class:e.normalizeClass(["tide-modal-header",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).PADDING.Y.ONE,e.unref(t).BORDER.BOTTOM.ONE,e.unref(t).BORDER.COLOR.LOW])},[d.isBackButton?(e.openBlock(),e.createBlock(P,{key:0,icon:e.unref(u).CHEVRON_LEFT,priority:e.unref(F).QUATERNARY,onClick:f[0]||(f[0]=N=>n("back")),title:"Back"},null,8,["icon","priority"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.HEADLINE_2]),textContent:e.toDisplayString(d.title)},null,10,_t),d.isDismissible?(e.openBlock(),e.createBlock(P,{key:1,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).MARGIN.LEFT.AUTO]),icon:e.unref(u).CLOSE,priority:e.unref(F).QUATERNARY,onClick:l},null,8,["class","icon","priority"])):e.createCommentVNode("",!0)],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-modal-content",e.unref(t).DISPLAY.GRID,e.unref(t).OVERFLOW.Y.AUTO,e.unref(t).OVERFLOW.X.HIDDEN,e.unref(t).WIDTH.FULL,e.unref(t).PADDING.Y.TWO]),ref_key:"modalContent",ref:o},[e.renderSlot(d.$slots,"default",{},void 0,!0)],2),d.$slots.footer?(e.openBlock(),e.createElementBlock("footer",{key:0,class:e.normalizeClass(["tide-modal-footer",e.unref(t).AXIS1.END,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.TWO,e.unref(t).PADDING.Y.ONE,e.unref(t).SHADOW.TOP])},[e.renderSlot(d.$slots,"footer",{},void 0,!0)],2)):e.createCommentVNode("",!0)],2)],38))}});const St=A(Ft,[["__scopeId","data-v-b0e46dd4"]]),Dt=e.defineComponent({__name:"TidePagination",props:{pageCurrent:{default:1},pageTotal:{default:1}},emits:["change"],setup(r,{emit:n}){const s=r,o=e.ref(s.pageCurrent),i=e.computed(()=>new Array(s.pageTotal).fill("").map((l,a)=>a+1)),c=l=>{o.value=l,n("change",event,l)};return(l,a)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["tide-pagination",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[e.createVNode(P,{disabled:o.value===1,icon:e.unref(u).CHEVRON_LEFT,priority:e.unref(F).QUATERNARY,onClick:a[0]||(a[0]=d=>c(o.value-1))},null,8,["disabled","icon","priority"]),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,d=>(e.openBlock(),e.createElementBlock("li",{key:d},[e.createVNode(J,{disabled:o.value===d,label:d,priority:e.unref(F).QUATERNARY,onClick:f=>c(d)},null,8,["disabled","label","priority","onClick"])]))),128))],2),e.createVNode(P,{disabled:o.value===i.value[i.value.length-1],icon:e.unref(u).CHEVRON_RIGHT,priority:e.unref(F).QUATERNARY,onClick:a[1]||(a[1]=d=>c(o.value+1))},null,8,["disabled","icon","priority"])],2))}}),Ct={class:"tide-seo-links"},ht=["href","target"],Pt=e.defineComponent({__name:"TideSeoLinks",props:{heading:{default:""},links:{}},setup(r){const n=r;return(s,o)=>(e.openBlock(),e.createElementBlock("section",Ct,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(n.heading),3),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.WRAP,e.unref(t).GAP.TWO,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.links,i=>(e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass(["tide-seo-link",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,e.unref(t).FONT.ROLE.BODY_2]),key:i.label},[e.createElementVNode("a",{class:e.normalizeClass([e.unref(t).UNDERLINE.OFF]),href:i.url,target:i.isNewTab?e.unref(h).BLANK:e.unref(h).SELF},e.toDisplayString(i.label),11,ht)],2))),128))],2)]))}});const Bt=A(Pt,[["__scopeId","data-v-0348487b"]]),Ut=["disabled"],yt=e.defineComponent({__name:"TideSwitch",props:{disabled:{type:Boolean,default:!1},isActive:{type:Boolean,default:!1}},emits:["change"],setup(r,{emit:n}){const s=r,o=()=>{s.disabled||n("change")};return(i,c)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-switch",s.isActive?"active":"",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,s.isActive?"":e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).OVERFLOW.XY.HIDDEN,s.isActive?e.unref(t).BG.SECONDARY:e.unref(t).BG.SURFACE.DEFAULT]),disabled:s.disabled,onClick:o,"aria-label":"Switch"},[e.createElementVNode("div",{class:e.normalizeClass(["tide-switch-indicator",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.FULL,s.isActive?e.unref(t).BG.SURFACE.DEFAULT:e.unref(t).BG.SECONDARY])},[e.createVNode(E,{icon:e.unref(u).CHECK,size:e.unref(L).LARGE},null,8,["icon","size"])],2)],10,Ut))}});const kt=A(yt,[["__scopeId","data-v-9bdb658a"]]),Gt={NUMBER:q,PHONE:se,PRICE:re},b={alpha:/^[a-zA-Z]+$/g,alphaNumberOrEmpty:/^$|^[a-z0-9]+$/i,alphaSpace:/^[a-zA-Z ]+$/g,email:/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,numberFormatted:/^$|(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/,phone:/^(?:\d{3}-\d{3}-\d{4}|\d{1}-\d{3}-\d{3}-\d{4})?$/,price:/(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/},bt={IMAGE:{FLOORPLAN:"floorplan",IMAGE:"image"},VIDEO:"video",VR:"vr"},Ht={ALPHA_NUMBER_EMPTY:H(b.alphaNumberOrEmpty),ALPHA_SPACE:H(b.alphaSpace),EMAIL:H(b.email),NUMBER:H(b.numberFormatted),PHONE:H(b.phone)};exports.ALERT=g;exports.BADGE_TRUSTED=j;exports.BREAKPOINT=te;exports.CSS=t;exports.ELEMENT=I;exports.ELEMENT_TEXT_AS_ICON=B;exports.FORMAT=Gt;exports.FORMAT_REGEX=b;exports.ICON=u;exports.ICON_REALM=oe;exports.MEDIA=pt;exports.MEDIA_SLIDE_TYPES=bt;exports.ORIENTATION=W;exports.PRIORITY=F;exports.REALM=Q;exports.SIZE=L;exports.SIZE_BUTTON=k;exports.TARGET=h;exports.TEXT_INPUT_TYPE=G;exports.TYPE_CARD=M;exports.TideAccordionItem=le;exports.TideAlert=de;exports.TideBackgroundImage=Re;exports.TideBadge=Ie;exports.TideBadgeTrustedPartner=Te;exports.TideBreadCrumbs=ve;exports.TideButton=me;exports.TideButtonIcon=P;exports.TideButtonPagination=J;exports.TideButtonSegmented=Fe;exports.TideCard=De;exports.TideCarousel=he;exports.TideChipAction=Ue;exports.TideChipFilter=ke;exports.TideChipInput=be;exports.TideColumns=qe;exports.TideDivider=Y;exports.TideIcon=E;exports.TideImage=Z;exports.TideIndicator=xe;exports.TideInputCheckbox=Ze;exports.TideInputRadio=tt;exports.TideInputSelect=Ot;exports.TideInputText=Tt;exports.TideInputTextarea=vt;exports.TideLink=mt;exports.TideModal=St;exports.TidePagination=Dt;exports.TideSeoLinks=Bt;exports.TideSwitch=kt;exports.VALIDATOR=Ht;
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmNqcyIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzL09yaWVudGF0aW9uLnRzIiwiLi4vc3JjL3R5cGVzL1N0eWxlcy50cyIsIi4uL3NyYy90eXBlcy9SZWFsbS50cyIsIi4uL3NyYy90eXBlcy9TaXplLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3JtYXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSWNvbi52dWUiLCIuLi9zcmMvdHlwZXMvSWNvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBY2NvcmRpb25JdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9FbGVtZW50LnRzIiwiLi4vc3JjL3R5cGVzL1ByaW9yaXR5LnRzIiwiLi4vc3JjL3R5cGVzL1RhcmdldC50cyIsIi4uL3NyYy90eXBlcy9BbGVydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBbGVydC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW1hZ2UudnVlIiwiLi4vc3JjL3R5cGVzL0JhZGdlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJ1dHRvblNlZ21lbnRlZC52dWUiLCIuLi9zcmMvdHlwZXMvQ2FyZC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDYXJvdXNlbC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRDaGVja2JveC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpby52dWUiLCIuLi9zcmMvdXRpbGl0aWVzL3ZhbGlkYXRpb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRTZWxlY3QudnVlIiwiLi4vc3JjL3R5cGVzL1RleHRJbnB1dC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWEudnVlIiwiLi4vc3JjL3R5cGVzL0JyZWFrcG9pbnQudHMiLCIuLi9zcmMvdXRpbGl0aWVzL3ZpZXdwb3J0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZU1vZGFsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVQYWdpbmF0aW9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTd2l0Y2gudnVlIiwiLi4vc3JjL3R5cGVzL0Zvcm1hdHRlZC50cyIsIi4uL3NyYy90eXBlcy9MaXN0aW5nTWVkaWEudHMiLCIuLi9zcmMvdHlwZXMvVmFsaWRhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgT1JJRU5UQVRJT04gPSB7XG4gIEhPUklaT05UQUw6ICdob3Jpem9udGFsJyxcbiAgVkVSVElDQUw6ICd2ZXJ0aWNhbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBPcmllbnRhdGlvbiA9ICh0eXBlb2YgT1JJRU5UQVRJT04pW2tleW9mIHR5cGVvZiBPUklFTlRBVElPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmltcG9ydCB0eXBlIHsgQnJlYWtwb2ludCB9IGZyb20gJ0AvdHlwZXMvQnJlYWtwb2ludCc7XG5cbmV4cG9ydCBjb25zdCBDU1MgPSB7XG4gIHdpdGhCcmVha3BvaW50OiAodXRpbGl0aWVzOiBzdHJpbmdbXSwgYnJlYWtwb2ludDogQnJlYWtwb2ludCk6IHN0cmluZ1tdID0+IHtcbiAgICByZXR1cm4gdXRpbGl0aWVzLm1hcCgodXRpbGl0eSkgPT4gYCR7YnJlYWtwb2ludH0tJHt1dGlsaXR5fWApO1xuICB9LFxuICBBTElHTjoge1xuICAgIFg6IHtcbiAgICAgIENFTlRFUjogJ3RpZGUtdGV4dC1jZW50ZXInLFxuICAgICAgTEVGVDogJ3RpZGUtdGV4dC1sZWZ0JyxcbiAgICAgIFJJR0hUOiAndGlkZS10ZXh0LXJpZ2h0JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIElOSVRJQUw6ICd0aWRlLWFsaWduLWluaXRpYWwnLFxuICAgICAgTUlERExFOiAndGlkZS1hbGlnbi1taWRkbGUnLFxuICAgIH0sXG4gIH0sXG4gIEFYSVMxOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMS1hcm91bmQnLFxuICAgIEJFVFdFRU46ICd0aWRlLWF4aXMxLWJldHdlZW4nLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczEtY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMxLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMxLXN0YXJ0JyxcbiAgfSxcbiAgQVhJUzI6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMyLWFyb3VuZCcsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMi1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczItZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczItc3RhcnQnLFxuICB9LFxuICBCRzoge1xuICAgIEdMT0JBTDoge1xuICAgICAgUFJJTUFSWToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctcHJpbWFyeS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXByaW1hcnktaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXByaW1hcnktc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXByaW1hcnktd2FybmluZycsXG4gICAgICB9LFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctc3VyZmFjZS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXN1cmZhY2UtaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1cmZhY2Utc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXN1cmZhY2Utd2FybmluZycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgSU5JVElBTDogJ3RpZGUtYmctaW5pdGlhbCcsXG4gICAgQkxVUjogJ3RpZGUtYmctYmx1cicsXG4gICAgUFJJTUFSWTogJ3RpZGUtYmctcHJpbWFyeScsXG4gICAgU0VDT05EQVJZOiAndGlkZS1iZy1zZWNvbmRhcnknLFxuICAgIFNVUkZBQ0U6IHtcbiAgICAgIEFDQ0VOVDogJ3RpZGUtYmctc3VyZmFjZS1hY2NlbnQnLFxuICAgICAgQlJBTkQ6ICd0aWRlLWJnLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYmctc3VyZmFjZScsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYmctc3VyZmFjZS1mbG9hdGluZycsXG4gICAgICBHUkFESUVOVDogJ3RpZGUtYmctc3VyZmFjZS1ncmFkaWVudCcsXG4gICAgICBWQVJJQU5UOiAndGlkZS1iZy1zdXJmYWNlLXZhcmlhbnQnLFxuICAgIH0sXG4gICAgVFJBTlNQQVJFTlQ6IHtcbiAgICAgIE9ORV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0xMDAnLFxuICAgICAgVFdPX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTIwMCcsXG4gICAgICBUSFJFRV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0zMDAnLFxuICAgICAgRk9VUl9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC00MDAnLFxuICAgIH0sXG4gIH0sXG4gIEJPUkRFUjoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJvcmRlci1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJvcmRlci1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtYm9yZGVyLXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1ib3JkZXItd2FybmluZycsXG4gICAgICB9LFxuICAgICAgSU5JVElBTDogJ3RpZGUtYm9yZGVyLWNvbG9yLWluaXRpYWwnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYm9yZGVyJyxcbiAgICAgIEZMT0FUSU5HOiAndGlkZS1ib3JkZXItZmxvYXRpbmcnLFxuICAgICAgSElHSDogJ3RpZGUtYm9yZGVyLWhpZ2gnLFxuICAgICAgTE9XOiAndGlkZS1ib3JkZXItbG93JyxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWJvcmRlci1wcmltYXJ5JyxcbiAgICB9LFxuICAgIFJBRElVUzoge1xuICAgICAgWkVSTzogJ3RpZGUtcmFkaXVzLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcmFkaXVzLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1yYWRpdXMtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcmFkaXVzLTEnLFxuICAgICAgRlVMTDogJ3RpZGUtcmFkaXVzLWZ1bGwnLFxuICAgIH0sXG4gICAgQk9UVE9NOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItYm90dG9tLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItYm90dG9tLTInLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci0yJyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1sZWZ0LTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWxlZnQtMicsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLXJpZ2h0LTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1yaWdodC0yJyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLXRvcC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLXRvcC0yJyxcbiAgICB9LFxuICB9LFxuICBCT1hfU0laSU5HOiB7XG4gICAgQk9SREVSX0JPWDogJ3RpZGUtYm94LWJvcmRlcicsXG4gICAgQ09OVEVOVF9CT1g6ICd0aWRlLWJveC1jb250ZW50JyxcbiAgfSxcbiAgQlJFQUtfSU5TSURFOiB7XG4gICAgQVZPSURfQ09MVU1OOiAndGlkZS1icmVhay1pbnNpZGUtYXZvaWQtY29sdW1uJyxcbiAgfSxcbiAgQlJFQUtfV09SRDoge1xuICAgIE9GRjogJ3RpZGUtYnJlYWstaW5pdGlhbCcsXG4gICAgT046ICd0aWRlLWJyZWFrLXdvcmQnLFxuICB9LFxuICBDT0xVTU5TOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtY29sdW1ucy1pbml0aWFsJyxcbiAgICBPTkU6ICd0aWRlLWNvbHVtbnMtMScsXG4gICAgVFdPOiAndGlkZS1jb2x1bW5zLTInLFxuICAgIFRIUkVFOiAndGlkZS1jb2x1bW5zLTMnLFxuICAgIEZPVVI6ICd0aWRlLWNvbHVtbnMtNCcsXG4gIH0sXG4gIENVUlNPUjoge1xuICAgIE5PVF9BTExPV0VEOiAndGlkZS1jdXJzb3Itbm90LWFsbG93ZWQnLFxuICAgIFBPSU5URVI6ICd0aWRlLWN1cnNvci1wb2ludGVyJyxcbiAgICBURVhUOiAndGlkZS1jdXJzb3ItdGV4dCcsXG4gIH0sXG4gIERJU1BMQVk6IHtcbiAgICBCTE9DSzogJ3RpZGUtZGlzcGxheS1ibG9jaycsXG4gICAgQ09OVEVOVFM6ICd0aWRlLWRpc3BsYXktY29udGVudHMnLFxuICAgIEZMRVg6ICd0aWRlLWRpc3BsYXktZmxleCcsXG4gICAgR1JJRDogJ3RpZGUtZGlzcGxheS1ncmlkJyxcbiAgICBJTklUSUFMOiAndGlkZS1kaXNwbGF5LWluaXRpYWwnLFxuICAgIElOTElORTogJ3RpZGUtZGlzcGxheS1pbmxpbmUnLFxuICAgIElOTElORV9CTE9DSzogJ3RpZGUtZGlzcGxheS1pbmxpbmUtYmxvY2snLFxuICAgIElOTElORV9GTEVYOiAndGlkZS1kaXNwbGF5LWlubGluZS1mbGV4JyxcbiAgICBOT05FOiAndGlkZS1kaXNwbGF5LW5vbmUnLFxuICB9LFxuICBFTExJUFNJUzogJ3RpZGUtZWxsaXBzaXMnLFxuICBGTEVYOiB7XG4gICAgQkFTSVM6IHtcbiAgICAgIEFVVE86ICd0aWRlLWZsZXgtYmFzaXMtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1mbGV4LWJhc2lzLTAnLFxuICAgIH0sXG4gICAgRElSRUNUSU9OOiB7XG4gICAgICBDT0xVTU46ICd0aWRlLWZsZXgtY29sdW1uJyxcbiAgICAgIENPTFVNTl9SRVZFUlNFOiAndGlkZS1mbGV4LWNvbHVtbi1yZXZlcnNlJyxcbiAgICAgIFJPVzogJ3RpZGUtZmxleC1yb3cnLFxuICAgICAgUk9XX1JFVkVSU0U6ICd0aWRlLWZsZXgtcm93LXJldmVyc2UnLFxuICAgIH0sXG4gICAgR1JPVzoge1xuICAgICAgT0ZGOiAndGlkZS1ncm93LW5vbmUnLFxuICAgICAgT046ICd0aWRlLWdyb3cnLFxuICAgIH0sXG4gICAgU0hSSU5LOiB7XG4gICAgICBPRkY6ICd0aWRlLXNocmluay1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1zaHJpbmsnLFxuICAgIH0sXG4gICAgV1JBUDogJ3RpZGUtZmxleC13cmFwJyxcbiAgfSxcbiAgRk9OVDoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWZvbnQtZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1mb250LWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1mb250LXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1mb250LXdhcm5pbmcnLFxuICAgICAgfSxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWZvbnQtb24tcHJpbWFyeScsXG4gICAgICBTRUNPTkRBUlk6ICd0aWRlLWZvbnQtb24tc2Vjb25kYXJ5JyxcbiAgICAgIFNVUkZBQ0U6IHtcbiAgICAgICAgQlJBTkQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1icmFuZCcsXG4gICAgICAgIERFRkFVTFQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZScsXG4gICAgICAgIElOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1pbnZlcnNlJyxcbiAgICAgICAgVkFSSUFOVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQnLFxuICAgICAgICBWQVJJQU5UX0lOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS12YXJpYW50LWludmVyc2UnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIFJPTEU6IHtcbiAgICAgIERJU1BMQVlfMTogJ3RpZGUtdHlwb2dyYXBoeS1kaXNwbGF5LTEnLFxuICAgICAgSEVBRExJTkVfMTogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0xJyxcbiAgICAgIEhFQURMSU5FXzI6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMicsXG4gICAgICBIRUFETElORV8zOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTMnLFxuICAgICAgVElUTEVfMTogJ3RpZGUtdHlwb2dyYXBoeS10aXRsZS0xJyxcbiAgICAgIFRJVExFXzI6ICd0aWRlLXR5cG9ncmFwaHktdGl0bGUtMicsXG4gICAgICBCT0RZXzE6ICd0aWRlLXR5cG9ncmFwaHktYm9keS0xJyxcbiAgICAgIEJPRFlfMjogJ3RpZGUtdHlwb2dyYXBoeS1ib2R5LTInLFxuICAgICAgTEFCRUxfMTogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0xJyxcbiAgICAgIExBQkVMXzFfU0VNSUJPTEQ6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMS1zZW1pYm9sZCcsXG4gICAgICBMQUJFTF8yOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTInLFxuICAgICAgTEFCRUxfMl9TRU1JQk9MRDogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0yLXNlbWlib2xkJyxcbiAgICAgIExBQkVMXzM6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMycsXG4gICAgICBMSU5LXzE6ICd0aWRlLXR5cG9ncmFwaHktbGluay0xJyxcbiAgICAgIExJTktfMjogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTInLFxuICAgICAgTElOS18zOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMycsXG4gICAgICBCVVRUT05fMTogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMScsXG4gICAgICBCVVRUT05fMjogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMicsXG4gICAgfSxcbiAgICBTSVpFOiB7XG4gICAgICBUV0VMVkU6ICd0aWRlLWZvbnQtMTInLFxuICAgICAgRk9VUlRFRU46ICd0aWRlLWZvbnQtMTQnLFxuICAgICAgU0lYVEVFTjogJ3RpZGUtZm9udC0xNicsXG4gICAgICBUV0VOVFk6ICd0aWRlLWZvbnQtMjAnLFxuICAgICAgVFdFTlRZX0ZPVVI6ICd0aWRlLWZvbnQtMjQnLFxuICAgICAgVEhJUlRZX1RXTzogJ3RpZGUtZm9udC0zMicsXG4gICAgfSxcbiAgICBXRUlHSFQ6IHtcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtZm9udC00MDAnLFxuICAgICAgRklWRV9IVU5EUkVEOiAndGlkZS1mb250LTUwMCcsXG4gICAgICBTSVhfSFVORFJFRDogJ3RpZGUtZm9udC02MDAnLFxuICAgICAgU0VWRU5fSFVORFJFRDogJ3RpZGUtZm9udC03MDAnLFxuICAgIH0sXG4gIH0sXG4gIEdBUDoge1xuICAgIFpFUk86ICd0aWRlLWdhcC0wJyxcbiAgICBRVUFSVEVSOiAndGlkZS1nYXAtMS80JyxcbiAgICBIQUxGOiAndGlkZS1nYXAtMS8yJyxcbiAgICBPTkU6ICd0aWRlLWdhcC0xJyxcbiAgICBUV086ICd0aWRlLWdhcC0yJyxcbiAgICBGT1VSOiAndGlkZS1nYXAtNCcsXG4gIH0sXG4gIEdSSUQ6IHtcbiAgICBFTkQ6IHtcbiAgICAgIE9ORTogJ3RpZGUtZW5kLTEnLFxuICAgICAgVFdPOiAndGlkZS1lbmQtMicsXG4gICAgICBUSFJFRTogJ3RpZGUtZW5kLTMnLFxuICAgICAgRk9VUjogJ3RpZGUtZW5kLTQnLFxuICAgICAgRklWRTogJ3RpZGUtZW5kLTUnLFxuICAgICAgU0lYOiAndGlkZS1lbmQtNicsXG4gICAgICBTRVZFTjogJ3RpZGUtZW5kLTcnLFxuICAgICAgRUlHSFQ6ICd0aWRlLWVuZC04JyxcbiAgICAgIE5JTkU6ICd0aWRlLWVuZC05JyxcbiAgICAgIFRFTjogJ3RpZGUtZW5kLTEwJyxcbiAgICAgIEVMRVZFTjogJ3RpZGUtZW5kLTExJyxcbiAgICAgIFRXRUxWRTogJ3RpZGUtZW5kLTEyJyxcbiAgICAgIFRISVJURUVOOiAndGlkZS1lbmQtMTMnLFxuICAgIH0sXG4gICAgRkxVSUQ6ICd0aWRlLWZsdWlkJyxcbiAgICBJVEVNOiAndGlkZS1ncmlkLWl0ZW0nLFxuICAgIExBWU9VVDogJ3RpZGUtZ3JpZC1sYXlvdXQnLFxuICAgIFNUQVJUOiB7XG4gICAgICBaRVJPOiAndGlkZS1zdGFydC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtc3RhcnQtMScsXG4gICAgICBUV086ICd0aWRlLXN0YXJ0LTInLFxuICAgICAgVEhSRUU6ICd0aWRlLXN0YXJ0LTMnLFxuICAgICAgRk9VUjogJ3RpZGUtc3RhcnQtNCcsXG4gICAgICBGSVZFOiAndGlkZS1zdGFydC01JyxcbiAgICAgIFNJWDogJ3RpZGUtc3RhcnQtNicsXG4gICAgICBTRVZFTjogJ3RpZGUtc3RhcnQtNycsXG4gICAgICBFSUdIVDogJ3RpZGUtc3RhcnQtOCcsXG4gICAgICBOSU5FOiAndGlkZS1zdGFydC05JyxcbiAgICAgIFRFTjogJ3RpZGUtc3RhcnQtMTAnLFxuICAgICAgRUxFVkVOOiAndGlkZS1zdGFydC0xMScsXG4gICAgICBUV0VMVkU6ICd0aWRlLXN0YXJ0LTEyJyxcbiAgICB9LFxuICAgIFhMOiAndGlkZS1ncmlkLXhsJyxcbiAgfSxcbiAgSEVJR0hUOiB7XG4gICAgQVVUTzogJ3RpZGUtaGVpZ2h0LWF1dG8nLFxuICAgIFpFUk86ICd0aWRlLWhlaWdodC0wJyxcbiAgICBGVUxMOiAndGlkZS1oZWlnaHQtZnVsbCcsXG4gICAgTUFYX0ZVTEw6ICd0aWRlLW1heC1oZWlnaHQtZnVsbCcsXG4gIH0sXG4gIElTT0xBVElPTjoge1xuICAgIElTT0xBVEU6ICd0aWRlLWlzb2xhdGUnLFxuICB9LFxuICBMSVNUX0JVTExFVFM6IHtcbiAgICBPRkY6ICd0aWRlLWxpc3Qtbm9uZScsXG4gIH0sXG4gIE1BUkdJTjoge1xuICAgIEJPVFRPTToge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1ib3R0b20tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1ib3R0b20tMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tYm90dG9tLTQnLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tNCcsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tbGVmdC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1sZWZ0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLWxlZnQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1sZWZ0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tbGVmdC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTQnLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1yaWdodC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1yaWdodC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTQnLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tdG9wLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXRvcC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi10b3AtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi10b3AtNCcsXG4gICAgfSxcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4teC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi14LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXgtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi14LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi14LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4teC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi14LTQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXktMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXktMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXktMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi15LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXktNCcsXG4gICAgfSxcbiAgfSxcbiAgT0JKRUNUOiB7XG4gICAgQ0VOVEVSOiAndGlkZS1vYmplY3QtY2VudGVyJyxcbiAgICBDT05UQUlOOiAndGlkZS1vYmplY3QtY29udGFpbicsXG4gICAgQ09WRVI6ICd0aWRlLW9iamVjdC1jb3ZlcicsXG4gICAgU0NBTEVfRE9XTjogJ3RpZGUtb2JqZWN0LXNjYWxlLWRvd24nLFxuICB9LFxuICBPUEFDSVRZOiB7XG4gICAgT0ZGOiAndGlkZS1vcGFjaXR5LW5vbmUnLFxuICAgIE9OOiAndGlkZS1vcGFjaXR5JyxcbiAgfSxcbiAgT1ZFUkZMT1c6IHtcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS14LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14LWhpZGRlbicsXG4gICAgICBTQ1JPTEw6ICd0aWRlLXgtc2Nyb2xsJyxcbiAgICB9LFxuICAgIFhZOiB7XG4gICAgICBBVVRPOiAndGlkZS14eS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteHktaGlkZGVuJyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXktYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXktaGlkZGVuJyxcbiAgICB9LFxuICB9LFxuICBQQURESU5HOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1ib3R0b20tMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWJvdHRvbS00JyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLTQnLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1sZWZ0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWxlZnQtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1yaWdodC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1yaWdodC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctdG9wLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctdG9wLTQnLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy14LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy14LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy14LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXgtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXktMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXktMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXktMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteS00JyxcbiAgICB9LFxuICB9LFxuICBQT0lOVEVSX0VWRU5UUzoge1xuICAgIE9GRjogJ3RpZGUtcG9pbnRlci1ldmVudHMtbm9uZScsXG4gICAgT046ICd0aWRlLXBvaW50ZXItZXZlbnRzJyxcbiAgfSxcbiAgUE9TSVRJT046IHtcbiAgICBBQlNPTFVURTogJ3RpZGUtcG9zaXRpb24tYWJzb2x1dGUnLFxuICAgIEZJWEVEOiAndGlkZS1wb3NpdGlvbi1maXhlZCcsXG4gICAgUkVMQVRJVkU6ICd0aWRlLXBvc2l0aW9uLXJlbGF0aXZlJyxcbiAgICBTVEFUSUM6ICd0aWRlLXBvc2l0aW9uLXN0YXRpYycsXG4gICAgU1RJQ0tZOiAndGlkZS1wb3NpdGlvbi1zdGlja3knLFxuICB9LFxuICBQT1NJVElPTklORzoge1xuICAgIEJPVFRPTTogJ3RpZGUtYm90dG9tLTAnLFxuICAgIExFRlQ6ICd0aWRlLWxlZnQtMCcsXG4gICAgUklHSFQ6ICd0aWRlLXJpZ2h0LTAnLFxuICAgIFRPUDogJ3RpZGUtdG9wLTAnLFxuICB9LFxuICBSQVRJTzoge1xuICAgIE9ORV9UT19PTkU6ICd0aWRlLXJhdGlvLTEvMScsXG4gICAgU0lYVEVFTl9UT19OSU5FOiAndGlkZS1yYXRpby0xNi85JyxcbiAgICBUSFJFRV9UT19UV086ICd0aWRlLXJhdGlvLTMvMicsXG4gIH0sXG4gIFNDUk9MTEJBUjoge1xuICAgIE9GRjogJ3RpZGUtc2Nyb2xsYmFyLW5vbmUnLFxuICB9LFxuICBTSEFET1c6IHtcbiAgICBJTklUSUFMOiAndGlkZS1zaGFkb3ctaW5pdGlhbCcsXG4gICAgQk9UVE9NOiAndGlkZS1zaGFkb3ctYm90dG9tJyxcbiAgICBUT1A6ICd0aWRlLXNoYWRvdy10b3AnLFxuICAgIFRFWFQ6ICd0aWRlLXNoYWRvdy10ZXh0JyxcbiAgfSxcbiAgU05BUDoge1xuICAgIE9OOiAndGlkZS1zY3JvbGwtc25hcCcsXG4gIH0sXG4gIFNOQVBfQUxJR046IHtcbiAgICBTVEFSVDogJ3RpZGUtc2Nyb2xsLXNuYXAtc3RhcnQnLFxuICB9LFxuICBURVhUX1RSQU5TRk9STToge1xuICAgIExPV0VSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1sb3dlcicsXG4gICAgTk9ORTogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbm9uZScsXG4gICAgVVBQRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLXVwcGVyJyxcbiAgfSxcbiAgVU5ERVJMSU5FOiB7XG4gICAgSE9WRVI6ICd0aWRlLXVuZGVybGluZS1ob3ZlcicsXG4gICAgT0ZGOiAndGlkZS11bmRlcmxpbmUtbm9uZScsXG4gICAgT046ICd0aWRlLXVuZGVybGluZScsXG4gIH0sXG4gIFZJU0lCSUxJVFk6IHtcbiAgICBPRkY6ICd0aWRlLXZpc2libGUtbm9uZScsXG4gICAgT046ICd0aWRlLXZpc2libGUnLFxuICB9LFxuICBXSElURVNQQUNFX1dSQVA6IHtcbiAgICBPRkY6ICd0aWRlLXdoaXRlc3BhY2Utbm93cmFwJyxcbiAgfSxcbiAgV0lEVEg6IHtcbiAgICBBVVRPOiAndGlkZS13aWR0aC1hdXRvJyxcbiAgICBaRVJPOiAndGlkZS13aWR0aC0wJyxcbiAgICBGVUxMOiAndGlkZS13aWR0aC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LXdpZHRoLWZ1bGwnLFxuICB9LFxuICBaX0lOREVYOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtei1pbmRleC1pbml0aWFsJyxcbiAgICBPTkU6ICd0aWRlLXotaW5kZXgtMScsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBDc3NVdGlsaXR5ID0gKHR5cGVvZiBDU1MpW2tleW9mIHR5cGVvZiBDU1NdO1xuXG5leHBvcnQgY29uc3QgY3NzU29ydE9yZGVyID0gW1xuICBDU1MuRElTUExBWS5CTE9DSyxcbiAgQ1NTLkRJU1BMQVkuQ09OVEVOVFMsXG4gIENTUy5ESVNQTEFZLkZMRVgsXG4gIENTUy5ESVNQTEFZLkdSSUQsXG4gIENTUy5ESVNQTEFZLk5PTkUsXG4gIENTUy5ESVNQTEFZLklOSVRJQUwsXG4gIENTUy5ESVNQTEFZLklOTElORSxcbiAgQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLFxuICBDU1MuRElTUExBWS5JTkxJTkVfRkxFWCxcbiAgQ1NTLkFYSVMxLkFST1VORCxcbiAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gIENTUy5BWElTMS5DRU5URVIsXG4gIENTUy5BWElTMS5FTkQsXG4gIENTUy5BWElTMS5TVEFSVCxcbiAgQ1NTLkFYSVMyLkFST1VORCxcbiAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgQ1NTLkFYSVMyLkVORCxcbiAgQ1NTLkFYSVMyLlNUQVJULFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OX1JFVkVSU0UsXG4gIENTUy5GTEVYLkRJUkVDVElPTi5ST1csXG4gIENTUy5GTEVYLkRJUkVDVElPTi5ST1dfUkVWRVJTRSxcbiAgQ1NTLkdBUC5PTkUsXG4gIENTUy5HQVAuSEFMRixcbiAgQ1NTLkdBUC5RVUFSVEVSLFxuICBDU1MuR0FQLlRXTyxcbiAgQ1NTLkdBUC5GT1VSLFxuICBDU1MuRkxFWC5CQVNJUy5aRVJPLFxuICBDU1MuRkxFWC5HUk9XLk9OLFxuICBDU1MuRkxFWC5HUk9XLk9GRixcbiAgQ1NTLkZMRVguU0hSSU5LLk9OLFxuICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICBDU1MuRkxFWC5XUkFQLFxuICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gIENTUy5QT1NJVElPTi5GSVhFRCxcbiAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICBDU1MuUE9TSVRJT04uU1RJQ0tZLFxuICBDU1MuUE9TSVRJT05JTkcuVE9QLFxuICBDU1MuUE9TSVRJT05JTkcuUklHSFQsXG4gIENTUy5QT1NJVElPTklORy5CT1RUT00sXG4gIENTUy5QT1NJVElPTklORy5MRUZULFxuICBDU1MuQk9YX1NJWklORy5CT1JERVJfQk9YLFxuICBDU1MuQk9YX1NJWklORy5DT05URU5UX0JPWCxcbiAgQ1NTLk1BUkdJTi5GVUxMLlpFUk8sXG4gIENTUy5NQVJHSU4uRlVMTC5PTkUsXG4gIENTUy5NQVJHSU4uRlVMTC5IQUxGLFxuICBDU1MuTUFSR0lOLkZVTEwuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5GVUxMLlRXTyxcbiAgQ1NTLk1BUkdJTi5GVUxMLkZPVVIsXG4gIENTUy5NQVJHSU4uWS5aRVJPLFxuICBDU1MuTUFSR0lOLlkuT05FLFxuICBDU1MuTUFSR0lOLlkuSEFMRixcbiAgQ1NTLk1BUkdJTi5ZLlFVQVJURVIsXG4gIENTUy5NQVJHSU4uWS5UV08sXG4gIENTUy5NQVJHSU4uWS5GT1VSLFxuICBDU1MuTUFSR0lOLlRPUC5aRVJPLFxuICBDU1MuTUFSR0lOLlRPUC5PTkUsXG4gIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gIENTUy5NQVJHSU4uVE9QLlFVQVJURVIsXG4gIENTUy5NQVJHSU4uVE9QLlRXTyxcbiAgQ1NTLk1BUkdJTi5UT1AuRk9VUixcbiAgQ1NTLk1BUkdJTi5YLlpFUk8sXG4gIENTUy5NQVJHSU4uWC5PTkUsXG4gIENTUy5NQVJHSU4uWC5IQUxGLFxuICBDU1MuTUFSR0lOLlguUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5YLlRXTyxcbiAgQ1NTLk1BUkdJTi5YLkZPVVIsXG4gIENTUy5NQVJHSU4uWC5BVVRPLFxuICBDU1MuTUFSR0lOLlJJR0hULlpFUk8sXG4gIENTUy5NQVJHSU4uUklHSFQuT05FLFxuICBDU1MuTUFSR0lOLlJJR0hULkhBTEYsXG4gIENTUy5NQVJHSU4uUklHSFQuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5SSUdIVC5UV08sXG4gIENTUy5NQVJHSU4uUklHSFQuRk9VUixcbiAgQ1NTLk1BUkdJTi5SSUdIVC5BVVRPLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5aRVJPLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5PTkUsXG4gIENTUy5NQVJHSU4uQk9UVE9NLkhBTEYsXG4gIENTUy5NQVJHSU4uQk9UVE9NLlFVQVJURVIsXG4gIENTUy5NQVJHSU4uQk9UVE9NLlRXTyxcbiAgQ1NTLk1BUkdJTi5CT1RUT00uRk9VUixcbiAgQ1NTLk1BUkdJTi5MRUZULlpFUk8sXG4gIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gIENTUy5NQVJHSU4uTEVGVC5IQUxGLFxuICBDU1MuTUFSR0lOLkxFRlQuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5MRUZULlRXTyxcbiAgQ1NTLk1BUkdJTi5MRUZULkZPVVIsXG4gIENTUy5NQVJHSU4uTEVGVC5BVVRPLFxuICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICBDU1MuQk9SREVSLkZVTEwuVFdPLFxuICBDU1MuQk9SREVSLlRPUC5PTkUsXG4gIENTUy5CT1JERVIuVE9QLlRXTyxcbiAgQ1NTLkJPUkRFUi5SSUdIVC5PTkUsXG4gIENTUy5CT1JERVIuUklHSFQuVFdPLFxuICBDU1MuQk9SREVSLkJPVFRPTS5PTkUsXG4gIENTUy5CT1JERVIuQk9UVE9NLlRXTyxcbiAgQ1NTLkJPUkRFUi5MRUZULk9ORSxcbiAgQ1NTLkJPUkRFUi5MRUZULlRXTyxcbiAgQ1NTLkJPUkRFUi5SQURJVVMuT05FLFxuICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICBDU1MuUEFERElORy5GVUxMLlpFUk8sXG4gIENTUy5QQURESU5HLkZVTEwuT05FLFxuICBDU1MuUEFERElORy5GVUxMLkhBTEYsXG4gIENTUy5QQURESU5HLkZVTEwuUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuRlVMTC5UV08sXG4gIENTUy5QQURESU5HLkZVTEwuRk9VUixcbiAgQ1NTLlBBRERJTkcuWS5aRVJPLFxuICBDU1MuUEFERElORy5ZLk9ORSxcbiAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gIENTUy5QQURESU5HLlkuVFdPLFxuICBDU1MuUEFERElORy5ZLkZPVVIsXG4gIENTUy5QQURESU5HLlRPUC5aRVJPLFxuICBDU1MuUEFERElORy5UT1AuT05FLFxuICBDU1MuUEFERElORy5UT1AuSEFMRixcbiAgQ1NTLlBBRERJTkcuVE9QLlFVQVJURVIsXG4gIENTUy5QQURESU5HLlRPUC5UV08sXG4gIENTUy5QQURESU5HLlRPUC5GT1VSLFxuICBDU1MuUEFERElORy5YLlpFUk8sXG4gIENTUy5QQURESU5HLlguT05FLFxuICBDU1MuUEFERElORy5YLkhBTEYsXG4gIENTUy5QQURESU5HLlguUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuWC5UV08sXG4gIENTUy5QQURESU5HLlguRk9VUixcbiAgQ1NTLlBBRERJTkcuUklHSFQuWkVSTyxcbiAgQ1NTLlBBRERJTkcuUklHSFQuT05FLFxuICBDU1MuUEFERElORy5SSUdIVC5IQUxGLFxuICBDU1MuUEFERElORy5SSUdIVC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5SSUdIVC5UV08sXG4gIENTUy5QQURESU5HLlJJR0hULkZPVVIsXG4gIENTUy5QQURESU5HLkJPVFRPTS5aRVJPLFxuICBDU1MuUEFERElORy5CT1RUT00uT05FLFxuICBDU1MuUEFERElORy5CT1RUT00uSEFMRixcbiAgQ1NTLlBBRERJTkcuQk9UVE9NLlFVQVJURVIsXG4gIENTUy5QQURESU5HLkJPVFRPTS5UV08sXG4gIENTUy5QQURESU5HLkJPVFRPTS5GT1VSLFxuICBDU1MuUEFERElORy5MRUZULlpFUk8sXG4gIENTUy5QQURESU5HLkxFRlQuT05FLFxuICBDU1MuUEFERElORy5MRUZULkhBTEYsXG4gIENTUy5QQURESU5HLkxFRlQuUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuTEVGVC5UV08sXG4gIENTUy5QQURESU5HLkxFRlQuRk9VUixcbiAgQ1NTLldJRFRILk1BWF9GVUxMLFxuICBDU1MuV0lEVEguWkVSTyxcbiAgQ1NTLldJRFRILkZVTEwsXG4gIENTUy5IRUlHSFQuWkVSTyxcbiAgQ1NTLkhFSUdIVC5GVUxMLFxuICBDU1MuQUxJR04uWS5NSURETEUsXG4gIENTUy5CUkVBS19XT1JELFxuICBDU1MuQ1VSU09SLk5PVF9BTExPV0VELFxuICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gIENTUy5DVVJTT1IuVEVYVCxcbiAgQ1NTLkZPTlQuU0laRS5UV0VMVkUsXG4gIENTUy5GT05ULlNJWkUuRk9VUlRFRU4sXG4gIENTUy5GT05ULlNJWkUuU0lYVEVFTixcbiAgQ1NTLkZPTlQuU0laRS5UV0VOVFksXG4gIENTUy5GT05ULlNJWkUuVFdFTlRZX0ZPVVIsXG4gIENTUy5GT05ULlNJWkUuVEhJUlRZX1RXTyxcbiAgQ1NTLkZPTlQuV0VJR0hULkZPVVJfSFVORFJFRCxcbiAgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRCxcbiAgQ1NTLkZPTlQuV0VJR0hULlNJWF9IVU5EUkVELFxuICBDU1MuRk9OVC5XRUlHSFQuU0VWRU5fSFVORFJFRCxcbiAgQ1NTLkxJU1RfQlVMTEVUUy5PRkYsXG4gIENTUy5PQkpFQ1QuQ0VOVEVSLFxuICBDU1MuT0JKRUNULkNPTlRBSU4sXG4gIENTUy5PQkpFQ1QuQ09WRVIsXG4gIENTUy5PQkpFQ1QuU0NBTEVfRE9XTixcbiAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICBDU1MuU0NST0xMQkFSLk9GRixcbiAgQ1NTLlNIQURPVy5CT1RUT00sXG4gIENTUy5TSEFET1cuVE9QLFxuICBDU1MuU05BUC5PTixcbiAgQ1NTLlNOQVBfQUxJR04uU1RBUlQsXG4gIENTUy5BTElHTi5YLkxFRlQsXG4gIENTUy5BTElHTi5YLkNFTlRFUixcbiAgQ1NTLkFMSUdOLlguUklHSFQsXG4gIENTUy5URVhUX1RSQU5TRk9STS5MT1dFUixcbiAgQ1NTLlRFWFRfVFJBTlNGT1JNLk5PTkUsXG4gIENTUy5URVhUX1RSQU5TRk9STS5VUFBFUixcbiAgQ1NTLlVOREVSTElORS5IT1ZFUixcbiAgQ1NTLlVOREVSTElORS5PRkYsXG4gIENTUy5VTkRFUkxJTkUuT04sXG4gIENTUy5WSVNJQklMSVRZLk9OLFxuICBDU1MuVklTSUJJTElUWS5PRkYsXG4gIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICBDU1MuT1ZFUkZMT1cuWFkuQVVUTyxcbiAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgQ1NTLk9WRVJGTE9XLlguQVVUTyxcbiAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICBDU1MuT1ZFUkZMT1cuWC5TQ1JPTEwsXG4gIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gIENTUy5PVkVSRkxPVy5ZLkhJRERFTixcbiAgQ1NTLlpfSU5ERVguT05FLFxuXSBhcyBjb25zdDtcbiIsImV4cG9ydCBjb25zdCBSRUFMTSA9IHtcbiAgQUVSTzogJ2Flcm8nLFxuICBBVFY6ICdhdHYnLFxuICBCT0FUTUFSVDogJ2JvYXRtYXJ0JyxcbiAgQ1lDTEU6ICdjeWNsZScsXG4gIEVRVUlQTUVOVDogJ2VxdWlwbWVudCcsXG4gIFBXQzogJ3B3YycsXG4gIFJWOiAncnYnLFxuICBTTk9XOiAnc25vdycsXG4gIFRSVUNLOiAndHJ1Y2snLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUmVhbG1LZXkgPSBrZXlvZiB0eXBlb2YgUkVBTE07XG5leHBvcnQgdHlwZSBSZWFsbSA9ICh0eXBlb2YgUkVBTE0pW1JlYWxtS2V5XTtcbiIsImV4cG9ydCBjb25zdCBTSVpFID0ge1xuICBMQVJHRTogJ2xhcmdlJyxcbiAgU01BTEw6ICdzbWFsbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTaXplID0gKHR5cGVvZiBTSVpFKVtrZXlvZiB0eXBlb2YgU0laRV07XG5cbmV4cG9ydCBjb25zdCBTSVpFX0JVVFRPTiA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZUJ1dHRvbiA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuIiwiY29uc3QgY2FwaXRhbGl6ZUZpcnN0ID0gKHN0cmluZzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XG59O1xuXG5jb25zdCBmb3JtYXRDYW1lbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvXltcXHNfLV0vLCAnJylcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IHdvcmQgOiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdEtlYmFiQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnLScpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdExhYmVsID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbGFiZWxNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgZmFsc2U6ICdObycsXG4gICAgdHJ1ZTogJ1llcycsXG4gIH07XG4gIHJldHVybiBPYmplY3QuaGFzT3duKGxhYmVsTWFwLCB2YWx1ZSkgPyBsYWJlbE1hcFt2YWx1ZV0gOiB2YWx1ZTtcbn07XG5cbmNvbnN0IGZvcm1hdE51bWJlciA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIGlmIChOdW1iZXIoZGlnaXRzKSkge1xuICAgICAgb3V0cHV0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KE51bWJlcihkaWdpdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0ID0gJzAnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQYXNjYWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBob25lID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IFN0cmluZyhpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcblxuICBzd2l0Y2ggKGRpZ2l0cy5sZW5ndGgpIHtcbiAgICBjYXNlIDc6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzLCA2KX0tJHtkaWdpdHMuc2xpY2UoNil9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMSl9LSR7ZGlnaXRzLnNsaWNlKDEsIDQpfS0ke2RpZ2l0cy5zbGljZSg0LCA3KX0tJHtkaWdpdHMuc2xpY2UoNyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBvdXRwdXQgPSBkaWdpdHM7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQcmljZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJCR7b3V0cHV0fWA7XG59O1xuXG5jb25zdCBmb3JtYXRRdW90ZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnXCInKSAmJiB2YWx1ZS5lbmRzV2l0aCgnXCInKSkge1xuICAgIHJldHVybiB2YWx1ZS5zbGljZSgxLCAtMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5jb25zdCBmb3JtYXRTZW50ZW5jZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBzZW50ZW5jZUNhc2UgPSBpbnB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGxvd2VyQ2FzZSA9IGlucHV0XG4gICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpO1xuXG4gICAgc2VudGVuY2VDYXNlID0gbG93ZXJDYXNlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBsb3dlckNhc2Uuc2xpY2UoMSk7XG4gIH1cblxuICByZXR1cm4gc2VudGVuY2VDYXNlO1xufTtcblxuY29uc3QgZm9ybWF0U25ha2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICdfJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VGl0bGVDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRVcmxGcm9tUm9vdCA9ICh1cmw6IHN0cmluZykgPT4ge1xuICBjb25zdCB1cmxGb3JtYXR0ZWQgPSB1cmwuc3BsaXQoJy5jb20vJyk7XG5cbiAgcmV0dXJuIHVybEZvcm1hdHRlZC5sZW5ndGggPiAxID8gYC8ke3VybEZvcm1hdHRlZFsxXX1gIDogdXJsO1xufTtcblxuY29uc3QgZm9ybWF0V2VpZ2h0ID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAke291dHB1dH0gbGJzYDtcbn07XG5cbmNvbnN0IGdldEFydGljbGUgPSAobm91bjogc3RyaW5nLCBpc1BsdXJhbCA9IGZhbHNlLCBpc0RlZmluaXRlID0gZmFsc2UpID0+IHtcbiAgY29uc3Qgdm93ZWxzID0gWydhJywgJ2UnLCAnaScsICdvJywgJ3UnXTtcbiAgY29uc3QgaXNWb3dlbExlYWRpbmcgPSB2b3dlbHMuaW5jbHVkZXMobm91bi5jaGFyQXQoMCkpO1xuXG4gIHJldHVybiBpc0RlZmluaXRlID8gJ3RoZScgOiBpc1BsdXJhbCA/ICdzb21lJyA6IGlzVm93ZWxMZWFkaW5nID8gJ2FuJyA6ICdhJztcbn07XG5cbmNvbnN0IHByaWNlVG9OdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCckJywgJycpO1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG59O1xuXG5jb25zdCB1bmZvcm1hdFByaWNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dC5yZXBsYWNlKC9cXCQvZywgJycpLnJlcGxhY2UoLywvZywgJycpO1xuICByZXR1cm4gYCR7b3V0cHV0fWA7XG59O1xuXG5leHBvcnQge1xuICBjYXBpdGFsaXplRmlyc3QsXG4gIGZvcm1hdENhbWVsQ2FzZSxcbiAgZm9ybWF0S2ViYWJDYXNlLFxuICBmb3JtYXRMYWJlbCxcbiAgZm9ybWF0TnVtYmVyLFxuICBmb3JtYXRQYXNjYWxDYXNlLFxuICBmb3JtYXRQaG9uZSxcbiAgZm9ybWF0UHJpY2UsXG4gIGZvcm1hdFF1b3RlcyxcbiAgZm9ybWF0U2VudGVuY2VDYXNlLFxuICBmb3JtYXRTbmFrZUNhc2UsXG4gIGZvcm1hdFRpdGxlQ2FzZSxcbiAgZm9ybWF0VXJsRnJvbVJvb3QsXG4gIGZvcm1hdFdlaWdodCxcbiAgZ2V0QXJ0aWNsZSxcbiAgcHJpY2VUb051bWJlcixcbiAgdW5mb3JtYXRQcmljZSxcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgUkVBTE0gfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0UGFzY2FsQ2FzZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaWNvbjogSWNvbjtcbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBwcm9wcy5pY29uO1xuICAgICAgY29uc3QgbmFtZSA9IGZvcm1hdFBhc2NhbENhc2UoaWQpO1xuICAgICAgY29uc3QgW3ByZWZpeF0gPSBpZC5zcGxpdCgnLScpO1xuICAgICAgY29uc3QgcmVhbG1Gb2xkZXIgPSBSRUFMTVtwcmVmaXg/LnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIFJFQUxNXTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IHtcbiAgICAgICAgaWYgKHJlYWxtRm9sZGVyKSB7XG4gICAgICAgICAgcmV0dXJuIGltcG9ydChgLi4vYXNzZXRzL3N2Zy9pY29ucy9yZWFsbS8ke3JlYWxtRm9sZGVyfS9JY29uJHtuYW1lfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL0ljb24ke25hbWV9LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpbm5lclNWRy52YWx1ZSA9IG1hcmtSYXcoY29tcG9uZW50KTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWljb24nLCBwcm9wcy5zaXplXVwiPlxuICAgIDxDb21wb25lbnRcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DS11cIlxuICAgICAgOmRhdGEtaWNvbj1cImljb25cIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICB2LWlmPVwiaW5uZXJTVkdcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlPlxuICAudGlkZS1pY29uIHtcbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbi5zbWFsbCB7XG4gICAgd2lkdGg6IDEuMjVyZW07XG4gICAgaGVpZ2h0OiAxLjI1cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbiBzdmcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB0eXBlIHsgUmVhbG1LZXkgfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcblxuZXhwb3J0IGNvbnN0IElDT04gPSB7XG4gIEFDQ09VTlRfQkFMQU5DRTogJ2FjY291bnQtYmFsYW5jZScsXG4gIEFDVVRFOiAnYWN1dGUnLFxuICBBREQ6ICdhZGQnLFxuICBBSV9ERVNDUklQVElPTjogJ2FpLWRlc2NyaXB0aW9uJyxcbiAgQUxJR05fU1BBQ0VfRVZFTjogJ2FsaWduLXNwYWNlLWV2ZW4nLFxuICBBUFBMRV9QQVk6ICdhcHBsZS1wYXknLFxuICBBUlJPV19CQUNLOiAnYXJyb3ctYmFjaycsXG4gIEFSUk9XX0NZQ0xFOiAnYXJyb3ctY3ljbGUnLFxuICBBUlJPV19GT1JXQVJEOiAnYXJyb3ctZm9yd2FyZCcsXG4gIEFSUk9XX1JJR0hUOiAnYXJyb3ctcmlnaHQnLFxuICBBU1NJR05NRU5UOiAnYXNzaWdubWVudCcsXG4gIEFUVEFDSF9NT05FWTogJ2F0dGFjaC1tb25leScsXG4gIEFVVE9fUkVORVc6ICdhdXRvLXJlbmV3JyxcbiAgQVdBUkRfU1RBUjogJ2F3YXJkLXN0YXInLFxuICBCRUQ6ICdiZWQnLFxuICBCT0xUOiAnYm9sdCcsXG4gIEJPT0tNQVJLOiAnYm9va21hcmsnLFxuICBCVU5LSE9VU0U6ICdidW5raG91c2UnLFxuICBDQUxFTkRBUl9NT05USDogJ2NhbGVuZGFyLW1vbnRoJyxcbiAgQ0FMTDogJ2NhbGwnLFxuICBDQUxMX1FVQUxJVFk6ICdjYWxsLXF1YWxpdHknLFxuICBDQVJfUkVOVEFMOiAnY2FyLXJlbnRhbCcsXG4gIENIRUNLOiAnY2hlY2snLFxuICBDSEVWUk9OX0xFRlQ6ICdjaGV2cm9uLWxlZnQnLFxuICBDSEVWUk9OX1JJR0hUOiAnY2hldnJvbi1yaWdodCcsXG4gIENMRUFSOiAnY2xlYXInLFxuICBDTE9TRTogJ2Nsb3NlJyxcbiAgQ09OVFJBQ1Q6ICdjb250cmFjdCcsXG4gIENSQVNIOiAnY3Jhc2gnLFxuICBEQVNIQk9BUkRfQ1VTVE9NSVpFOiAnZGFzaGJvYXJkLWN1c3RvbWl6ZScsXG4gIERFTEVURTogJ2RlbGV0ZScsXG4gIERJQU1PTkQ6ICdkaWFtb25kJyxcbiAgRElSRUNUSU9OU19CT0FUOiAnZGlyZWN0aW9ucy1ib2F0JyxcbiAgRE9NQUlOOiAnZG9tYWluJyxcbiAgRFJBRlQ6ICdkcmFmdCcsXG4gIEVESVQ6ICdlZGl0JyxcbiAgRU5HSU5FOiAnZW5naW5lJyxcbiAgRU5HSU5FRVJJTkc6ICdlbmdpbmVlcmluZycsXG4gIEVSUk9SOiAnZXJyb3InLFxuICBFWFBBTkRfQ09OVEVOVDogJ2V4cGFuZC1jb250ZW50JyxcbiAgRVhQQU5EX0xFU1M6ICdleHBhbmQtbGVzcycsXG4gIEVYUEFORF9NT1JFOiAnZXhwYW5kLW1vcmUnLFxuICBGQUNFQk9PSzogJ2ZhY2Vib29rJyxcbiAgRkFWT1JJVEU6ICdmYXZvcml0ZScsXG4gIEZBVk9SSVRFX0ZJTExFRDogJ2Zhdm9yaXRlLWZpbGxlZCcsXG4gIEZMQUc6ICdmbGFnJyxcbiAgRk9STUFUX0JPTEQ6ICdmb3JtYXQtYm9sZCcsXG4gIEZPUk1BVF9JVEFMSUM6ICdmb3JtYXQtaXRhbGljJyxcbiAgRk9STUFUX0xJU1RfQlVMTEVURUQ6ICdmb3JtYXQtbGlzdC1idWxsZXRlZCcsXG4gIEZPUlVNOiAnZm9ydW0nLFxuICBHQVM6ICdnYXMnLFxuICBHQVZFTDogJ2dhdmVsJyxcbiAgR0VBUlM6ICdnZWFycycsXG4gIEdMT0JFX0xPQ0FUSU9OX1BJTjogJ2dsb2JlLWxvY2F0aW9uLXBpbicsXG4gIEdPT0dMRTogJ2dvb2dsZScsXG4gIEdPT0dMRV9QQVk6ICdnb29nbGUtcGF5JyxcbiAgR1JJRDogJ2dyaWQnLFxuICBIQU5EU0hBS0U6ICdoYW5kc2hha2UnLFxuICBIQU5EWU1BTjogJ2hhbmR5bWFuJyxcbiAgSEVJR0hUOiAnaGVpZ2h0JyxcbiAgSEVMUDogJ2hlbHAnLFxuICBJTkZPOiAnaW5mbycsXG4gIElORk9STUFUSU9OOiAnaW5mb3JtYXRpb24nLFxuICBJTlNFUlRfVEVYVDogJ2luc2VydC10ZXh0JyxcbiAgSU5TVEFHUkFNOiAnaW5zdGFncmFtJyxcbiAgSU9TX1NIQVJFOiAnaW9zLXNoYXJlJyxcbiAgTEFZT1VUOiAnbGF5b3V0JyxcbiAgTEVWRUxMSU5HX0pBQ0s6ICdsZXZlbGxpbmctamFjaycsXG4gIExJTktFRF9JTjogJ2xpbmtlZCBpbicsXG4gIExPQ0FMX1NISVBQSU5HOiAnbG9jYWwtc2hpcHBpbmcnLFxuICBMT0NLOiAnbG9jaycsXG4gIE1BSUw6ICdtYWlsJyxcbiAgTUVOVTogJ21lbnUnLFxuICBNT05FWV9CQUc6ICdtb25leS1iYWcnLFxuICBNT1JFX0hPUklaOiAnbW9yZS1ob3JpeicsXG4gIE5PVElGSUNBVElPTlM6ICdub3RpZmljYXRpb25zJyxcbiAgT0RPTUVURVI6ICdvZG9tZXRlcicsXG4gIE9QRU5fSU5fTkVXOiAnb3Blbi1pbi1uZXcnLFxuICBQQUxFVFRFOiAncGFsZXR0ZScsXG4gIFBBWVBBTDogJ3BheXBhbCcsXG4gIFBFUlNPTjogJ3BlcnNvbicsXG4gIFBFUlNPTl9TRUFSQ0g6ICdwZXJzb24tc2VhcmNoJyxcbiAgUEhPVE9fQ0FNRVJBOiAncGhvdG8tY2FtZXJhJyxcbiAgUElOVEVSRVNUOiAncGludGVyZXN0JyxcbiAgUExBWV9BUlJPVzogJ3BsYXktYXJyb3cnLFxuICBQT0xJQ1k6ICdwb2xpY3knLFxuICBQT1dFUjogJ3Bvd2VyJyxcbiAgUE9XRVJfT0ZGOiAncG93ZXItb2ZmJyxcbiAgUFJJT1JJVFlfSElHSDogJ3ByaW9yaXR5LWhpZ2gnLFxuICBSRU1PVkU6ICdyZW1vdmUnLFxuICBSRVFVRVNUX1FVT1RFOiAncmVxdWVzdC1xdW90ZScsXG4gIFJFU0VUX1dSRU5DSDogJ3Jlc2V0LXdyZW5jaCcsXG4gIFJPQUQ6ICdyb2FkJyxcbiAgUk9VTkRFRF9DT1JORVI6ICdyb3VuZGVkLWNvcm5lcicsXG4gIFJVTEVSOiAncnVsZXInLFxuICBTQUlMSU5HOiAnc2FpbGluZycsXG4gIFNDSE9PTDogJ3NjaG9vbCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFNFQVRJTkc6ICdzZWF0aW5nJyxcbiAgU0VMTDogJ3NlbGwnLFxuICBTRU5TT1JTOiAnc2Vuc29ycycsXG4gIFNFVFRJTkdTOiAnc2V0dGluZ3MnLFxuICBTSEFSRTogJ3NoYXJlJyxcbiAgU0hJRUxEX0NIRUNLOiAnc2hpZWxkLWNoZWNrJyxcbiAgU0hPUFBJTkdfQ0FSVDogJ3Nob3BwaW5nLWNhcnQnLFxuICBTTEVFUFM6ICdzbGVlcHMnLFxuICBTTVM6ICdzbXMnLFxuICBTTk9XRkxBS0U6ICdzbm93Zmxha2UnLFxuICBTVEFSOiAnc3RhcicsXG4gIFNVTU1BUklaRTogJ3N1bW1hcml6ZScsXG4gIFNXQVBfSE9SSVo6ICdzd2FwLWhvcml6JyxcbiAgU1dBUF9WRVJUOiAnc3dhcC12ZXJ0JyxcbiAgVEhSRUVfRF9ST1RBVElPTjogJ3RocmVlLWQtcm90YXRpb24nLFxuICBUSFVNQl9VUDogJ3RodW1iLXVwJyxcbiAgVFJFTkRJTkdfRE9XTjogJ3RyZW5kaW5nLWRvd24nLFxuICBUUk9QSFk6ICd0cm9waHknLFxuICBUVU5FOiAndHVuZScsXG4gIFRXSVRURVI6ICd0d2l0dGVyJyxcbiAgVU1CUkVMTEE6ICd1bWJyZWxsYScsXG4gIFZFUklGSUVEOiAndmVyaWZpZWQnLFxuICBWSURFT0NBTTogJ3ZpZGVvY2FtJyxcbiAgVklFV19JTl9BUjogJ3ZpZXctaW4tYXInLFxuICBWSVNJQklMSVRZOiAndmlzaWJpbGl0eScsXG4gIFZPTFVNRV9PRkY6ICd2b2x1bWUtb2ZmJyxcbiAgVk9MVU1FX09OOiAndm9sdW1lLW9uJyxcbiAgV0FSRUhPVVNFOiAnd2FyZWhvdXNlJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxuICBXQVRFUjogJ3dhdGVyJyxcbiAgV0VJR0hUOiAnd2VpZ2h0JyxcbiAgV0lEVEg6ICd3aWR0aCcsXG4gIFdPUktTUEFDRV9QUkVNSVVNOiAnd29ya3NwYWNlLXByZW1pdW0nLFxuICBXUkVOQ0g6ICd3cmVuY2gnLFxuICBZT1VUVUJFOiAneW91dHViZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgSUNPTl9SRUFMTSA9IHtcbiAgQVRWOiB7XG4gICAgQVRWOiAnYXR2LWF0dicsXG4gICAgRFVORV9CVUdHWTogJ2F0di1kdW5lLWJ1Z2d5JyxcbiAgICBHT0xGX0NBUlQ6ICdhdHYtZ29sZi1jYXJ0JyxcbiAgICBHT19LQVJUOiAnYXR2LWdvLWthcnQnLFxuICAgIFNBTkRfUkFJTDogJ2F0di1zYW5kLXJhaWwnLFxuICAgIFNJREVfQllfU0lERTogJ2F0di1zaWRlLWJ5LXNpZGUnLFxuICAgIFRSQUlMRVI6ICdhdHYtdHJhaWxlcicsXG4gIH0sXG4gIEJPQVRNQVJUOiB7XG4gICAgUFdDOiAnYm9hdG1hcnQtcHdjJyxcbiAgICBUUkFJTEVSOiAnYm9hdG1hcnQtdHJhaWxlcicsXG4gIH0sXG4gIFJWOiB7XG4gICAgQ0xBU1NfQTogJ3J2LWNsYXNzLWEnLFxuICAgIENMQVNTX0I6ICdydi1jbGFzcy1iJyxcbiAgICBDTEFTU19DOiAncnYtY2xhc3MtYycsXG4gICAgRklGVEhfV0hFRUw6ICdydi1maWZ0aC13aGVlbCcsXG4gICAgRklTSF9IT1VTRTogJ3J2LWZpc2gtaG91c2UnLFxuICAgIFBBUktfTU9ERUw6ICdydi1wYXJrLW1vZGVsJyxcbiAgICBQT1BfVVBfQ0FNUEVSOiAncnYtcG9wLXVwLWNhbXBlcicsXG4gICAgVFJBVkVMX1RSQUlMRVI6ICdydi10cmF2ZWwtdHJhaWxlcicsXG4gICAgVFJVQ0tfQ0FNUEVSOiAncnYtdHJ1Y2stY2FtcGVyJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbnR5cGUgUmVhbG1LZXlzV2l0aEljb25zID0gRXh0cmFjdDxSZWFsbUtleSwga2V5b2YgdHlwZW9mIElDT05fUkVBTE0+O1xudHlwZSBSZWFsbUljb24gPSB7XG4gIFtSZWFsbUtleSBpbiBSZWFsbUtleXNXaXRoSWNvbnNdOiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XVtrZXlvZiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XV07XG59W1JlYWxtS2V5c1dpdGhJY29uc107XG5cbmV4cG9ydCB0eXBlIEdsb2JhbEljb24gPSAodHlwZW9mIElDT04pW2tleW9mIHR5cGVvZiBJQ09OXTtcbmV4cG9ydCB0eXBlIEljb24gPSBHbG9iYWxJY29uIHwgUmVhbG1JY29uO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ3RvZ2dsZSddKTtcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGhhc0JvdHRvbURpdmlkZXI/OiBib29sZWFuO1xuICAgIGhhc1RvcERpdmlkZXI/OiBib29sZWFuO1xuICAgIGlzRXhwYW5kZWQ/OiBib29sZWFuO1xuICAgIGlzT3B0aW9uYWw/OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoYXNCb3R0b21EaXZpZGVyOiBmYWxzZSxcbiAgICBoYXNUb3BEaXZpZGVyOiBmYWxzZSxcbiAgICBpc0V4cGFuZGVkOiBmYWxzZSxcbiAgICBpc09wdGlvbmFsOiBmYWxzZSxcbiAgICBsYWJlbDogJycsXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUNsaWNrID0gKCkgPT4ge1xuICAgIGVtaXQoJ3RvZ2dsZScpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInRpZGUtYWNjb3JkaW9uLWl0ZW1cIj5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc1RvcERpdmlkZXJcIiAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1oZWFkJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5QQURESU5HLlkuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVUb2dnbGVDbGlja1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzFfU0VNSUJPTERdXCI+XG4gICAgICAgIDxzcGFuPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5pc09wdGlvbmFsXCJcbiAgICAgICAgPlxuICAgICAgICAgIChvcHRpb25hbClcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cImlzRXhwYW5kZWQgPyBJQ09OLkVYUEFORF9MRVNTIDogSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWJvZHknLCBwcm9wcy5pc0V4cGFuZGVkID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnLCBDU1MuRElTUExBWS5HUklEXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLk9WRVJGTE9XLlkuSElEREVOLCBDU1MuTUFSR0lOLlkuT05FLCBDU1MuRk9OVC5ST0xFLkJPRFlfMSwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc0JvdHRvbURpdmlkZXJcIiAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFjY29yZGlvbi1ib2R5IHtcbiAgICB0cmFuc2l0aW9uOiBncmlkLXRlbXBsYXRlLXJvd3MgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmV4cGFuZGVkIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmNvbGxhcHNlZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAwZnI7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgRUxFTUVOVCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEVMRU1FTlRfVEVYVF9BU19JQ09OID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBESVY6ICdkaXYnLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFbGVtZW50ID0gKHR5cGVvZiBFTEVNRU5UKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF07XG5leHBvcnQgdHlwZSBFbGVtZW50VGV4dEFzSWNvbiA9ICh0eXBlb2YgRUxFTUVOVF9URVhUX0FTX0lDT04pW2tleW9mIHR5cGVvZiBFTEVNRU5UX1RFWFRfQVNfSUNPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBQUklPUklUWSA9IHtcbiAgUFJJTUFSWTogJ3ByaW1hcnknLFxuICBTRUNPTkRBUlk6ICdzZWNvbmRhcnknLFxuICBURVJUSUFSWTogJ3RlcnRpYXJ5JyxcbiAgUVVBVEVSTkFSWTogJ3F1YXRlcm5hcnknLFxuICBGTE9BVElORzogJ2Zsb2F0aW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFByaW9yaXR5ID0gKHR5cGVvZiBQUklPUklUWSlba2V5b2YgdHlwZW9mIFBSSU9SSVRZXTtcbiIsImV4cG9ydCBjb25zdCBUQVJHRVQgPSB7XG4gIEJMQU5LOiAnX2JsYW5rJyxcbiAgU0VMRjogdW5kZWZpbmVkLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0ID0gKHR5cGVvZiBUQVJHRVQpW2tleW9mIHR5cGVvZiBUQVJHRVRdO1xuIiwiZXhwb3J0IGNvbnN0IEFMRVJUID0ge1xuICBFUlJPUjogJ2Vycm9yJyxcbiAgSU5GTzogJ2luZm8nLFxuICBTVUNDRVNTOiAnc3VjY2VzcycsXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEFsZXJ0ID0gKHR5cGVvZiBBTEVSVClba2V5b2YgdHlwZW9mIEFMRVJUXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQUxFUlQgfSBmcm9tICdAL3R5cGVzL0FsZXJ0JztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEFsZXJ0IH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuICAgIGlzVG9hc3Q/OiBib29sZWFuO1xuICAgIHR5cGU/OiBBbGVydDtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc1RvYXN0OiBmYWxzZSxcbiAgICB0eXBlOiBBTEVSVC5JTkZPLFxuICB9KTtcblxuICBjb25zdCBpY29uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBpY29uOiBJY29uID0gSUNPTi5JTkZPO1xuXG4gICAgc3dpdGNoIChwcm9wcy50eXBlKSB7XG4gICAgICBjYXNlIEFMRVJULkVSUk9SOlxuICAgICAgICBpY29uID0gSUNPTi5FUlJPUjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSBBTEVSVC5JTkZPOlxuICAgICAgICBpY29uID0gSUNPTi5JTkZPO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQUxFUlQuU1VDQ0VTUzpcbiAgICAgICAgaWNvbiA9IElDT04uQ0hFQ0s7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBTEVSVC5XQVJOSU5HOlxuICAgICAgICBpY29uID0gSUNPTi5XQVJOSU5HO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gaWNvbjtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgcHJvcHMudHlwZSxcbiAgICAgICd0aWRlLWFsZXJ0JyxcbiAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgJiYgQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLkVSUk9SLFxuICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyAmJiBDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuSU5GTyxcbiAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1MgJiYgQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLlNVQ0NFU1MsXG4gICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HICYmIENTUy5CRy5HTE9CQUwuU1VSRkFDRS5XQVJOSU5HLFxuICAgICAgcHJvcHMuaXNUb2FzdCA/IENTUy5TSEFET1cuQk9UVE9NIDogJycsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFsZXJ0LWljb24nLFxuICAgICAgICBDU1MuUEFERElORy5GVUxMLkhBTEYsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuSU5WRVJTRSxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgJiYgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5JTkZPICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5JTkZPLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5TVUNDRVNTLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5XQVJOSU5HLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uIDppY29uPVwiaWNvblwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hbGVydC1oZWFkaW5nJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUl1cIj5cbiAgICAgIDxoMiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xELCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICAgIDwvaDI+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hbGVydC1jbG9zZScsIENTUy5BWElTMi5DRU5URVIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIGFsZXJ0XCJcbiAgICAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtYm9keScsIENTUy5GT05ULlJPTEUuTEFCRUxfMSwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiPlxuICAgICAgPHNsb3QgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hbGVydCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICAgICdpY29uIGhlYWRpbmcgY2xvc2UnXG4gICAgICAnLiBib2R5IC4nO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnIgYXV0bztcbiAgICBncmlkLWNvbHVtbi1nYXA6IDAuNXJlbTtcbiAgICBtYXgtd2lkdGg6IDQwcmVtO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaWNvbiB7XG4gICAgZ3JpZC1hcmVhOiBpY29uO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaGVhZGluZyB7XG4gICAgZ3JpZC1hcmVhOiBoZWFkaW5nO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtY2xvc2Uge1xuICAgIGdyaWQtYXJlYTogY2xvc2U7XG4gIH1cblxuICAudGlkZS1hbGVydC1ib2R5IHtcbiAgICBncmlkLWFyZWE6IGJvZHk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFNvdXJjZSB9IGZyb20gJ0AvdHlwZXMvU291cmNlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGFsdDogc3RyaW5nO1xuICAgIGhlaWdodD86IHN0cmluZztcbiAgICBpc0xhenk/OiBib29sZWFuO1xuICAgIHNvdXJjZXM/OiBTb3VyY2VbXTtcbiAgICBzcmM/OiBzdHJpbmc7XG4gICAgd2lkdGg/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhbHQ6ICcnLFxuICAgIGhlaWdodDogdW5kZWZpbmVkLFxuICAgIGlzTGF6eTogdHJ1ZSxcbiAgICBzb3VyY2VzOiAoKSA9PiBbXSxcbiAgICBzcmM6IHVuZGVmaW5lZCxcbiAgICB3aWR0aDogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBwaWN0dXJlID0gcmVmKCk7XG4gIGNvbnN0IGltZyA9IHJlZigpO1xuXG4gIGNvbnN0IGltYWdlRGVmYXVsdCA9ICdodHRwczovL2Nkbi1zdGF0aWMtcmVjLnRpbGFicy5pby9pbWFnZS1jb21pbmctc29vbi01MTIucG5nJztcblxuICBjb25zdCBzZXRJbWFnZUZyb21EZWZhdWx0ID0gKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRTcmMgPSBpbWcudmFsdWU/LmN1cnJlbnRTcmM7XG4gICAgY29uc3QgcGljdHVyZVNvdXJjZSA9IHBpY3R1cmUudmFsdWU/LnF1ZXJ5U2VsZWN0b3IoYHNvdXJjZVtzcmNzZXQ9XCIke2N1cnJlbnRTcmN9XCJdYCk7XG5cbiAgICBpZiAoY3VycmVudFNyYyAmJiBwaWN0dXJlU291cmNlKSB7XG4gICAgICBwaWN0dXJlU291cmNlLnNyY3NldCA9IGltYWdlRGVmYXVsdDtcbiAgICB9IGVsc2UgaWYgKGltZy52YWx1ZSkge1xuICAgICAgaW1nLnZhbHVlLnNyYyA9IGltYWdlRGVmYXVsdDtcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8cGljdHVyZVxuICAgIDpjbGFzcz1cIlsndGlkZS1pbWFnZScsIENTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgcmVmPVwicGljdHVyZVwiXG4gICAgOnN0eWxlPVwiXG4gICAgICB3aWR0aCB8fCBoZWlnaHRcbiAgICAgICAgPyB7XG4gICAgICAgICAgICB3aWR0aDogd2lkdGggfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICBcIlxuICA+XG4gICAgPHNvdXJjZVxuICAgICAgOmtleT1cInNvdXJjZS5zcmNzZXRcIlxuICAgICAgOm1lZGlhPVwiYChtaW4td2lkdGg6JHtzb3VyY2UubWVkaWF9cHgpYFwiXG4gICAgICA6c3Jjc2V0PVwic291cmNlLnNyY3NldFwiXG4gICAgICB2LWZvcj1cInNvdXJjZSBpbiBwcm9wcy5zb3VyY2VzXCJcbiAgICAvPlxuXG4gICAgPGltZ1xuICAgICAgOmFsdD1cImFsdFwiXG4gICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5IRUlHSFQuRlVMTCwgQ1NTLk9CSkVDVC5DRU5URVIsIENTUy5PQkpFQ1QuQ09WRVJdXCJcbiAgICAgIDpmZXRjaHByaW9yaXR5PVwiaXNMYXp5ID8gdW5kZWZpbmVkIDogJ2hpZ2gnXCJcbiAgICAgIDpsb2FkaW5nPVwicHJvcHMuaXNMYXp5ID8gJ2xhenknIDogJ2VhZ2VyJ1wiXG4gICAgICByZWY9XCJpbWdcIlxuICAgICAgOnNyYz1cInNyYyA/PyBpbWFnZURlZmF1bHRcIlxuICAgICAgQGVycm9yPVwic2V0SW1hZ2VGcm9tRGVmYXVsdFwiXG4gICAgLz5cbiAgPC9waWN0dXJlPlxuPC90ZW1wbGF0ZT5cbiIsImV4cG9ydCBjb25zdCBCQURHRV9UUlVTVEVEID0ge1xuICBZRUFSU18xMDogJzEwJyxcbiAgWUVBUlNfMTU6ICcxNScsXG4gIFlFQVJTXzU6ICc1Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEJhZGdlVHJ1c3RlZFllYXJzID0gKHR5cGVvZiBCQURHRV9UUlVTVEVEKVtrZXlvZiB0eXBlb2YgQkFER0VfVFJVU1RFRF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBUYWIgfSBmcm9tICdAL3R5cGVzL1RhYic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhY3RpdmVUYWI6IG51bWJlcjtcbiAgICB0YWJzOiBUYWJbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFjdGl2ZVRhYjogMCxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBlbWl0KCdjaGFuZ2UnLCBpbmRleCk7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uLXNlZ21lbnRlZCcsXG4gICAgICBDU1MuQkcuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgXVwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWJ1dHRvbi1zZWdtZW50ZWQtdGFiJyxcbiAgICAgICAgaW5kZXggPT09IGFjdGl2ZVRhYlxuICAgICAgICAgID8gW0NTUy5CRy5TVVJGQUNFLkRFRkFVTFQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLlNIQURPVy5CT1RUT01dXG4gICAgICAgICAgOiBbJ2luYWN0aXZlJywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXSxcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5RVUFSVEVSLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CVVRUT05fMSxcbiAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICBdXCJcbiAgICAgIDpkYXRhLXRyYWNrPVwidGFiLmRhdGFUcmFjayB8fCB1bmRlZmluZWRcIlxuICAgICAgOmtleT1cInRhYi5sYWJlbFwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhpbmRleClcIlxuICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gcHJvcHMudGFic1wiXG4gICAgPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRF1cIj5cbiAgICAgICAge3sgdGFiLmxhYmVsIH19XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzFfU0VNSUJPTERdXCJcbiAgICAgICAgdi1pZj1cInRhYi5jb3VudCAmJiB0YWIuY291bnQgPiAwXCJcbiAgICAgID5cbiAgICAgICAgKHt7IHRhYi5jb3VudCB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1idXR0b24tc2VnbWVudGVkIHtcbiAgICBtYXgtd2lkdGg6IDIzLjNyZW07XG4gIH1cblxuICAudGlkZS1idXR0b24tc2VnbWVudGVkLXRhYiB7XG4gICAgZmxleDogMTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAuaW5hY3RpdmU6bm90KDpob3Zlcikge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuXG4gIC5pbmFjdGl2ZTpob3ZlciB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRZUEVfQ0FSRCA9IHtcbiAgQUNUSU9OQUJMRTogJ2FjdGlvbicsXG4gIElORk9STUFUSU9OQUw6ICdpbmZvcm1hdGlvbmFsJyxcbiAgU0VMRUNUQUJMRTogJ3NlbGVjdCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBDYXJkVHlwZSA9ICh0eXBlb2YgVFlQRV9DQVJEKVtrZXlvZiB0eXBlb2YgVFlQRV9DQVJEXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIG9uVXBkYXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaXNGbG9hdGluZz86IGJvb2xlYW47XG4gICAgaXNIaWRlYXdheUJ1dHRvbnM/OiBib29sZWFuO1xuICAgIGlzVG91Y2hzY3JlZW4/OiBib29sZWFuO1xuICAgIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaXNGbG9hdGluZzogZmFsc2UsXG4gICAgaXNIaWRlYXdheUJ1dHRvbnM6IHRydWUsXG4gICAgaXNUb3VjaHNjcmVlbjogdW5kZWZpbmVkLFxuICAgIHN1YnRpdGxlOiB1bmRlZmluZWQsXG4gICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IGNvbnRlbnRSZWYgPSByZWYoKTtcbiAgY29uc3QgZnJhbWVSZWYgPSByZWYoKTtcblxuICBjb25zdCBjb250ZW50UmlnaHRFZGdlID0gcmVmKCk7XG4gIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHJlZigpO1xuICBjb25zdCBjdXJyZW50U2xpZGUgPSByZWYoMCk7XG4gIGNvbnN0IGZyYW1lV2lkdGggPSByZWYoKTtcbiAgY29uc3QgaGFzT3ZlcmZsb3cgPSByZWYoKTtcbiAgY29uc3QgaXNMYXN0U2xpZGUgPSByZWYoKTtcbiAgY29uc3QgbGFzdFBvc2l0aW9uID0gcmVmKCk7XG4gIGNvbnN0IHNob3dCdXR0b25zID0gcmVmKCk7XG5cbiAgLyoqXG4gICAqIE1lYXN1cmUgdGhlIGN1cnJlbnQgc2xpZGUgYmFzZWQgb24gdGhlIHNjcm9sbFxuICAgKiBwb3NpdGlvbiBvZiB0aGUgZnJhbWUuIFRoZSBjdXJyZW50IHNsaWRlIGlzXG4gICAqIHRoZSBzbGlkZSB0aGF0IGlzIGNsb3Nlc3QgdG8gdGhlIGxlZnQgZWRnZSBvZlxuICAgKiB0aGUgZnJhbWUuXG4gICAqL1xuICBjb25zdCBtZWFzdXJlQ3VycmVudFNsaWRlID0gKCkgPT4ge1xuICAgIC8vIEdldCBsZWZ0IG9mZnNldCBvZiBlYWNoIHNsaWRlLlxuICAgIGNvbnN0IHNsaWRlT2Zmc2V0cyA9IEFycmF5LmZyb20oY29udGVudFJlZi52YWx1ZS5jaGlsZHJlbikubWFwKChzbGlkZTogYW55KSA9PiBzbGlkZS5vZmZzZXRMZWZ0KTtcblxuICAgIGlmIChzbGlkZU9mZnNldHMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICAvLyBHZXQgY2xvc2VzdCBvZmZzZXQgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24uXG4gICAgY29uc3QgY2xvc2VzdFNsaWRlT2Zmc2V0ID0gc2xpZGVPZmZzZXRzLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgICAgcmV0dXJuIE1hdGguYWJzKGN1cnIgLSBmcmFtZVJlZi52YWx1ZS5zY3JvbGxMZWZ0KSA8IE1hdGguYWJzKHByZXYgLSBmcmFtZVJlZi52YWx1ZS5zY3JvbGxMZWZ0KSA/IGN1cnIgOiBwcmV2O1xuICAgIH0pO1xuXG4gICAgY3VycmVudFNsaWRlLnZhbHVlID0gc2xpZGVPZmZzZXRzLmluZGV4T2YoY2xvc2VzdFNsaWRlT2Zmc2V0KTtcbiAgfTtcblxuICBjb25zdCBtZWFzdXJlRG9tID0gKCkgPT4ge1xuICAgIGNvbnRlbnRSaWdodEVkZ2UudmFsdWUgPSBmcmFtZVJlZi52YWx1ZS5zY3JvbGxMZWZ0ICsgZnJhbWVSZWYudmFsdWUuY2xpZW50V2lkdGg7XG4gICAgY29udGVudFdpZHRoLnZhbHVlID0gY29udGVudFJlZi52YWx1ZS5zY3JvbGxXaWR0aDtcbiAgICBmcmFtZVdpZHRoLnZhbHVlID0gZnJhbWVSZWYudmFsdWUuY2xpZW50V2lkdGg7XG4gICAgaGFzT3ZlcmZsb3cudmFsdWUgPSBjb250ZW50V2lkdGgudmFsdWUgPiBmcmFtZVdpZHRoLnZhbHVlO1xuICAgIGlzTGFzdFNsaWRlLnZhbHVlID0gY29udGVudFJpZ2h0RWRnZS52YWx1ZSA9PT0gY29udGVudFdpZHRoLnZhbHVlO1xuICAgIGxhc3RQb3NpdGlvbi52YWx1ZSA9IGZyYW1lUmVmLnZhbHVlLnNjcm9sbFdpZHRoIC0gZnJhbWVSZWYudmFsdWUuY2xpZW50V2lkdGg7XG4gICAgc2hvd0J1dHRvbnMudmFsdWUgPSBoYXNPdmVyZmxvdy52YWx1ZSAmJiAhcHJvcHMuaXNUb3VjaHNjcmVlbjtcblxuICAgIG1lYXN1cmVDdXJyZW50U2xpZGUoKTtcbiAgfTtcblxuICAvLyBUT0RPOiBkZWJvdW5jZSB0aGlzXG4gIGNvbnN0IGhhbmRsZVNjcm9sbCA9ICgpID0+IHtcbiAgICBtZWFzdXJlRG9tKCk7XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsVG9TbGlkZSA9IChzbGlkZUluZGV4OiBudW1iZXIpID0+IHtcbiAgICBmcmFtZVJlZi52YWx1ZS5zY3JvbGxUbyh7XG4gICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICBsZWZ0OiBjb250ZW50UmVmLnZhbHVlLmNoaWxkcmVuW3NsaWRlSW5kZXhdLm9mZnNldExlZnQsXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd05leHRTbGlkZSA9ICgpID0+IHtcbiAgICBpZiAoY29udGVudFJpZ2h0RWRnZS52YWx1ZSA+IGNvbnRlbnRXaWR0aC52YWx1ZSkge1xuICAgICAgZnJhbWVSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgIGxlZnQ6IGNvbnRlbnRXaWR0aCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoIWlzTGFzdFNsaWRlLnZhbHVlKSB7XG4gICAgICBzY3JvbGxUb1NsaWRlKGN1cnJlbnRTbGlkZS52YWx1ZSArIDEpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzaG93UHJldmlvdXNTbGlkZSA9ICgpID0+IHtcbiAgICBjb25zdCBpc0ZpcnN0U2xpZGUgPSBjdXJyZW50U2xpZGUudmFsdWUgPT09IDA7XG5cbiAgICBpZiAoIWlzRmlyc3RTbGlkZSkge1xuICAgICAgc2Nyb2xsVG9TbGlkZShjdXJyZW50U2xpZGUudmFsdWUgLSAxKTtcbiAgICB9XG4gIH07XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBtZWFzdXJlRG9tKCk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG1lYXN1cmVEb20pO1xuICB9KTtcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG1lYXN1cmVEb20pO1xuICB9KTtcblxuICBvblVwZGF0ZWQoKCkgPT4ge1xuICAgIG1lYXN1cmVEb20oKTtcbiAgfSk7XG5cbiAgd2F0Y2goY3VycmVudFNsaWRlLCAoKSA9PiB7XG4gICAgZW1pdCgnY2hhbmdlJywgY3VycmVudFNsaWRlLnZhbHVlKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIlsndGlkZS1jYXJvdXNlbCcsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuVFdPLCBDU1MuV0lEVEguTUFYX0ZVTExdXCJcbiAgICByZWY9XCJjYXJvdXNlbFJlZlwiXG4gID5cbiAgICA8c2VjdGlvblxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIHByb3BzLnRpdGxlID8gQ1NTLkFYSVMxLkJFVFdFRU4gOiBDU1MuQVhJUzEuRU5ELCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuV0lEVEguRlVMTF1cIlxuICAgICAgdi1pZj1cIiFwcm9wcy5pc0Zsb2F0aW5nICYmIChzaG93QnV0dG9ucyB8fCBwcm9wcy50aXRsZSlcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuT05FXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy50aXRsZSB8fCBwcm9wcy5zdWJ0aXRsZVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5ESVNQTEFZXzFdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMudGl0bGVcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMudGl0bGUgfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5zdWJ0aXRsZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy5zdWJ0aXRsZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwic2hvd0J1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJjdXJyZW50U2xpZGUgPT09IDBcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlRFUlRJQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJzaG93UHJldmlvdXNTbGlkZVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNMYXN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5URVJUSUFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwic2hvd05leHRTbGlkZVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG5cbiAgICA8c2xvdCBuYW1lPVwibWlzY1wiIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuUE9TSVRJT04uUkVMQVRJVkVdXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuU0NST0xMQkFSLk9GRiwgQ1NTLlNOQVAuT04sIENTUy5PVkVSRkxPVy5YLlNDUk9MTCwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgICAgcmVmPVwiZnJhbWVSZWZcIlxuICAgICAgICBAc2Nyb2xsPVwiaGFuZGxlU2Nyb2xsXCJcbiAgICAgID5cbiAgICAgICAgPHVsXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5HQVAuT05FLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIlxuICAgICAgICAgIHJlZj1cImNvbnRlbnRSZWZcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheScsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBwcm9wcy5pc0hpZGVhd2F5QnV0dG9ucyA/ICdoaWRlYXdheScgOiAnJyxcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCJpc0Zsb2F0aW5nICYmIHNob3dCdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uTEVGVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImN1cnJlbnRTbGlkZSA9PT0gMFwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwic2hvd1ByZXZpb3VzU2xpZGVcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9OXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNMYXN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJzaG93TmV4dFNsaWRlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheS5oaWRlYXdheSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsOmhvdmVyIC50aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5LmhpZGVhd2F5IHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGF0YVRyYWNrOiAnJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5kZXRlcm1pbmF0ZTogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBpc0NoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5jaGVja2VkIHx8IHByb3BzLmluZGV0ZXJtaW5hdGUpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LWNoZWNrYm94JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICBkaXNhYmxlZCA/IFsnZGlzYWJsZWQnLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXSA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICBdXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgOmNoZWNrZWQ9XCJpc0NoZWNrZWRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLk5PTkVdXCJcbiAgICAgIDpkaXNhYmxlZD1cInByb3BzLmRpc2FibGVkXCJcbiAgICAgIDpuYW1lPVwicHJvcHMubmFtZVwiXG4gICAgICByZWY9XCJpbnB1dFwiXG4gICAgICBAY2xpY2sucHJldmVudFxuICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWNoZWNrYm94LWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgaXNDaGVja2VkID8gW0NTUy5CT1JERVIuQ09MT1IuSElHSCwgQ1NTLkJHLlNFQ09OREFSWV0gOiBbQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgICAgaXNDaGVja2VkICYmICdjaGVja2VkJyxcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlldXCJcbiAgICAgICAgOmljb249XCJwcm9wcy5pbmRldGVybWluYXRlID8gSUNPTi5SRU1PVkUgOiBJQ09OLkNIRUNLXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImlzQ2hlY2tlZFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIEBjbGljay5wcmV2ZW50XG4gICAgICB2LWlmPVwibGFiZWxcIlxuICAgID5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3guZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tIHtcbiAgICB3aWR0aDogdmFyKC0tdGlkZS1mb250LTI4KTtcbiAgICBoZWlnaHQ6IHZhcigtLXRpZGUtZm9udC0yOCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjaGVja2VkOiBmYWxzZSxcbiAgICBkYXRhVHJhY2s6ICcnLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgY2hlY2tlZCA9IHJlZihwcm9wcy5jaGVja2VkKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5jaGVja2VkLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IGNoZWNrZWQudmFsdWUpIHtcbiAgICAgICAgY2hlY2tlZC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1yYWRpbycsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICBwcm9wcy5kaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgIF1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICA6Y2hlY2tlZD1cImNoZWNrZWRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLk5PTkVdXCJcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgbmFtZT1cIlwiXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXJhZGlvLWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgY2hlY2tlZCA/IENTUy5CT1JERVIuQ09MT1IuSElHSCA6IENTUy5CT1JERVIuQ09MT1IuREVGQVVMVCxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gICAgICAgIGNoZWNrZWQgJiYgJ2NoZWNrZWQnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtcmFkaW8tY2hlY2snLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBwcm9wcy5jaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuQk9EWV8xLCBDU1MuQ1VSU09SLlBPSU5URVIsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgID5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1yYWRpby5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jdXN0b20ge1xuICAgIHdpZHRoOiB2YXIoLS10aWRlLWZvbnQtMjgpO1xuICAgIGhlaWdodDogdmFyKC0tdGlkZS1mb250LTI4KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWNoZWNrIHtcbiAgICB3aWR0aDogMXJlbTtcbiAgICBoZWlnaHQ6IDFyZW07XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBwcmljZVRvTnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuaW1wb3J0IHR5cGUgeyBSYW5nZURhdGEgfSBmcm9tICdAL3R5cGVzL0ZhY2V0UmFuZ2UnO1xuaW1wb3J0IHR5cGUgeyBTdHJpbmdJbnB1dCB9IGZyb20gJ0AvdHlwZXMvRm9ybSc7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0aW9uTGVuZ3RoLCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG5leHBvcnQgY29uc3QgZXJyb3JNZXNzYWdlRGVmYXVsdCA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCB2YWx1ZS4nO1xuXG5leHBvcnQgY29uc3Qgbm9FcnJvciA9IHtcbiAgbWVzc2FnZTogJycsXG4gIHZhbGlkOiB0cnVlLFxufSBhcyBSZWFkb25seTxWYWxpZGF0aW9uUmVzdWx0PjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrRm9ybWF0ID0gKGZvcm1hdDogUmVnRXhwKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCByZXN1bHQgPSBub0Vycm9yO1xuXG4gICAgaWYgKCF2YWx1ZS50cmltKCkubWF0Y2goZm9ybWF0KSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2VEZWZhdWx0LFxuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXJyb3JNZXNzYWdlID0gKGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3IsIGVycm9yRnJvbVJlZjogVmFsaWRhdGlvbkVycm9yKSA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG4gIGlmICh0eXBlb2YgZXJyb3JGcm9tUHJvcHMgPT09ICdzdHJpbmcnICYmIGVycm9yRnJvbVByb3BzLmxlbmd0aCA+IDApIHJldHVybiBlcnJvckZyb21Qcm9wcztcblxuICByZXR1cm4gdHlwZW9mIGVycm9yRnJvbVJlZiA9PT0gJ3N0cmluZycgJiYgZXJyb3JGcm9tUmVmLmxlbmd0aCA+IDAgPyBlcnJvckZyb21SZWYgOiBlcnJvck1lc3NhZ2VEZWZhdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkSGFzRXJyb3IgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+XG4gIGVycm9yRnJvbVByb3BzICE9PSBmYWxzZSB8fCBlcnJvckZyb21SZWYgIT09IGZhbHNlO1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRMZW5ndGhJc1ZhbGlkID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHJlcXVpcmVkLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKSA9PiB7XG4gIGNvbnN0IGlzRW1wdHlBbmRVbnJlcXVpcmVkID0gdmFsdWUubGVuZ3RoID09PSAwICYmICFyZXF1aXJlZDtcbiAgY29uc3QgaXNUb29Mb25nID0gbWF4bGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heGxlbmd0aDtcbiAgY29uc3QgaXNUb29TaG9ydCA9ICFpc0VtcHR5QW5kVW5yZXF1aXJlZCAmJiBtaW5sZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWlubGVuZ3RoO1xuXG4gIHJldHVybiAhaXNUb29TaG9ydCAmJiAhaXNUb29Mb25nO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1heFJhbmdlSXNWYWxpZCA9ICh7IG1pbiB9OiBQaWNrPFJhbmdlRGF0YSwgJ21pbic+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWF4OiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNYXggPSAhaXNOYU4obmV3TWF4KSA/IG5ld01heCA6IG51bGw7XG4gICAgaWYgKG1pbiAmJiBuZXdNYXgpIHtcbiAgICAgIGlmIChuZXdNYXggPj0gbWluKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGdyZWF0ZXIgdGhhbiBtaW5gLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1pblJhbmdlSXNWYWxpZCA9ICh7IG1heCB9OiBQaWNrPFJhbmdlRGF0YSwgJ21heCc+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWluOiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNaW4gPSAhaXNOYU4obmV3TWluKSA/IG5ld01pbiA6IG51bGw7XG4gICAgaWYgKG1heCAmJiBuZXdNaW4pIHtcbiAgICAgIGlmIChuZXdNaW4gPD0gbWF4KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGxlc3MgdGhhbiBtYXhgLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbGVjdE9wdGlvbnNGcm9tU3RyaW5ncyA9IChzdHJpbmdzOiBzdHJpbmdbXSkgPT5cbiAgc3RyaW5ncy5tYXAoXG4gICAgKG9wdGlvbikgPT5cbiAgICAgICh7XG4gICAgICAgIGxhYmVsOiBvcHRpb24sXG4gICAgICAgIHZhbHVlOiBvcHRpb24sXG4gICAgICB9IGFzIFNlbGVjdE9wdGlvbilcbiAgKTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUZpZWxkVmFsaWRhdGlvbiA9ICh7XG4gIGVycm9yLFxuICBlcnJvckZyb21Qcm9wcyxcbiAgbWF4bGVuZ3RoLFxuICBtaW5sZW5ndGgsXG4gIHJlcXVpcmVkID0gZmFsc2UsXG4gIHZhbGlkYXRvcnMsXG4gIHZhbHVlLFxufToge1xuICBlcnJvcjogUmVmPFZhbGlkYXRpb25FcnJvcj47XG4gIGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3I7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgdmFsdWU/OiBSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbn0pID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcblxuICBlcnJvci52YWx1ZSA9IGVycm9yRnJvbVByb3BzID8gZXJyb3JGcm9tUHJvcHMgOiBmYWxzZTtcblxuICBpZiAoIWVycm9yLnZhbHVlICYmIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZT8udmFsdWUgfHwgJycsIHZhbGlkYXRvcnMpO1xuXG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IHZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWVycm9yLnZhbHVlICYmIChtYXhsZW5ndGggfHwgbWlubGVuZ3RoKSkge1xuICAgIGNvbnN0IGxlbmd0aFZhbGlkYXRpb24gPSB2YWxpZGF0ZUxlbmd0aCh7XG4gICAgICBtYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGgsXG4gICAgICByZXF1aXJlZCxcbiAgICAgIHZhbHVlOiB2YWx1ZT8udmFsdWUgfHwgJycsXG4gICAgfSk7XG5cbiAgICBpZiAoIWxlbmd0aFZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gbGVuZ3RoVmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRmllbGRzRnJvbVJlZnMoZmllbGRzOiB7IFtrZXk6IHN0cmluZ106IFJlZjxTdHJpbmdJbnB1dCB8IG51bGw+IH0pIHtcbiAgbGV0IHZhbGlkID0gdHJ1ZTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZHMpIHtcbiAgICBpZiAoZmllbGRzW2tleV0udmFsdWU/LnJlcXVpcmVkKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpZWxkc1trZXldLnZhbHVlPy52YWx1ZTtcbiAgICAgIHZhbGlkID0gdmFsaWQgJiYgISF2YWx1ZSAmJiB2YWx1ZS50cmltKCkgIT09ICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yID0gZmllbGRzW2tleV0udmFsdWU/LmVycm9yO1xuICAgIHZhbGlkID0gdmFsaWQgJiYgIWVycm9yO1xuICB9XG5cbiAgcmV0dXJuIHZhbGlkO1xufVxuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVMZW5ndGggPSAoe1xuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgdmFsdWUsXG59OiBWYWxpZGF0aW9uTGVuZ3RoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xuXG4gIHJlc3BvbnNlLnZhbGlkID0gZ2V0RmllbGRMZW5ndGhJc1ZhbGlkKHtcbiAgICBtYXhsZW5ndGgsXG4gICAgbWlubGVuZ3RoLFxuICAgIHJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcblxuICBpZiAocmVzcG9uc2UudmFsaWQpIHJldHVybiByZXNwb25zZTtcblxuICByZXNwb25zZS5tZXNzYWdlID0gZXJyb3JNZXNzYWdlRGVmYXVsdDtcblxuICBpZiAobWF4bGVuZ3RoICYmIG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgYmV0d2VlbiAke21pbmxlbmd0aH0gYW5kICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1heGxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbW9yZSB0aGFuICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbGVzcyB0aGFuICR7bWlubGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydHkodmFsdWU6IHN0cmluZywgdmFsaWRhdG9yczogKCh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0KVtdKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdG9yKHZhbHVlKTtcbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG59XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RGaWVsZCB9IGZyb20gJ0AvdHlwZXMvRmllbGQnO1xuICBpbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiwgU2VsZWN0T3B0aW9uR3JvdXAgfSBmcm9tICdAL3R5cGVzL1NlbGVjdCc7XG5cbiAgaW50ZXJmYWNlIFByb3BzIGV4dGVuZHMgU2VsZWN0RmllbGQge1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gIH1cblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHJlcXVpcmVkID0gcmVmKHByb3BzLnJlcXVpcmVkKTtcbiAgY29uc3QgdmFsdWUgPSByZWY8c3RyaW5nIHwgdW5kZWZpbmVkPihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgZXhwYW5kT3B0aW9ucyA9ICgpID0+IHtcbiAgICBjb25zdCBldmVudCA9IG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nKTtcbiAgICBpbnB1dD8udmFsdWU/LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7IGVycm9yLCB2YWx1ZSB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1zZWxlY3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgaGFzRXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtYm9yZGVyJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIHByb3BzLmRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6ICcnLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgXVwiXG4gICAgICBAY2xpY2s9XCJleHBhbmRPcHRpb25zXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlQsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLlRPUC5IQUxGLFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5MRUZULk9ORSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5QQURESU5HLkJPVFRPTS5IQUxGLCBDU1MuUEFERElORy5YLk9ORSwgQ1NTLldJRFRILkZVTEwsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIm9wdGdyb3VwIGluIHByb3BzLm9wdGdyb3Vwc1wiPlxuICAgICAgICAgICAgPG9wdGdyb3VwXG4gICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICA6a2V5PVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgIDpsYWJlbD1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWxcIlxuICAgICAgICAgICAgICB2LWlmPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvb3B0Z3JvdXA+XG5cbiAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZVwiXG4gICAgICAgICAgICAgIDpzZWxlY3RlZD1cInZhbHVlID09PSAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICA6dmFsdWU9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZVwiXG4gICAgICAgICAgICAgIHYtZWxzZVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS5sYWJlbCB9fVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICA6c2VsZWN0ZWQ9XCJ2YWx1ZSA9PT0gb3B0aW9uLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gb3B0aW9uc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLkFCU09MVVRFLCBDU1MuUE9TSVRJT05JTkcuUklHSFQsIENTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUl1cIlxuICAgICAgdi1pZj1cInByb3BzLnN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW11cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHByb3BzLnN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBzZWxlY3Qge1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cblxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3IgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3Q6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciBvcHRpb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgc2VsZWN0IHtcbiAgICBwYWRkaW5nLXRvcDogMjdweDtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBURVhUX0lOUFVUX1RZUEUgPSB7XG4gIERBVEU6ICdkYXRlJyxcbiAgREFURVRJTUVfTE9DQUw6ICdkYXRldGltZS1sb2NhbCcsXG4gIEVNQUlMOiAnZW1haWwnLFxuICBNT05USDogJ21vbnRoJyxcbiAgTlVNQkVSOiAnbnVtYmVyJyxcbiAgUEFTU1dPUkQ6ICdwYXNzd29yZCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFRFTDogJ3RlbCcsXG4gIFRFWFQ6ICd0ZXh0JyxcbiAgVElNRTogJ3RpbWUnLFxuICBVUkw6ICd1cmwnLFxuICBXRUVLOiAnd2VlaycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBUZXh0SW5wdXRUeXBlID0gKHR5cGVvZiBURVhUX0lOUFVUX1RZUEUpW2tleW9mIHR5cGVvZiBURVhUX0lOUFVUX1RZUEVdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IEZvcm1WYWx1ZVRyYW5zZm9ybWVyIH0gZnJvbSAnQC90eXBlcy9Gb3JtJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBUZXh0SW5wdXRUeXBlIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgZGF0YVRyYWNrPzogc3RyaW5nO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlcnJvcj86IFZhbGlkYXRpb25FcnJvcjtcbiAgICBoYXNDbGVhcj86IGJvb2xlYW47XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB0cmFuc2Zvcm1WYWx1ZT86IEZvcm1WYWx1ZVRyYW5zZm9ybWVyO1xuICAgIHR5cGU/OiBUZXh0SW5wdXRUeXBlO1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGF1dG9jb21wbGV0ZTogZmFsc2UsXG4gICAgZGF0YVRyYWNrOiAnJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGhhc0NsZWFyOiBmYWxzZSxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIHByZWZpeDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdWZmaXg6IHVuZGVmaW5lZCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHRyYW5zZm9ybVZhbHVlOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVEVYVF9JTlBVVF9UWVBFLlRFWFQsXG4gICAgdmFsaWRhdG9yczogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHNob3dQYXNzd29yZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHByb3BzLmxhYmVsID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzQ2xlYXIgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5oYXNDbGVhciAmJiB2YWx1ZS52YWx1ZSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcilcbiAgKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnIHx8IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuICBjb25zdCB0eXBlID0gY29tcHV0ZWQoKCkgPT5cbiAgICBwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkQgJiYgc2hvd1Bhc3N3b3JkLnZhbHVlID09PSB0cnVlID8gVEVYVF9JTlBVVF9UWVBFLlRFWFQgOiBwcm9wcy50eXBlXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICBpbnB1dC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICghdmFsdWUudmFsdWUpIHtcbiAgICAgIHZhbHVlLnZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgaGFuZGxlVmFsaWRhdGlvbigpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0ID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy50cmFuc2Zvcm1WYWx1ZSkge1xuICAgICAgY29uc3QgZGlnaXRzID0gdmFsdWUudmFsdWU/Lm1hdGNoKC9cXGQvZyk/LmpvaW4oJycpIHx8IHVuZGVmaW5lZDtcblxuICAgICAgdmFsdWUudmFsdWUgPSBkaWdpdHMgPyBwcm9wcy50cmFuc2Zvcm1WYWx1ZShkaWdpdHMpIDogJyc7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbGlkYXRpb24gPSAoKSA9PiB7XG4gICAgaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbGlkYXRvcnM6IHByb3BzLnZhbGlkYXRvcnMsXG4gICAgICB2YWx1ZSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVWYWx1ZSA9IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy52YWx1ZSxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2Uoe1xuICAgIGVycm9yLFxuICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICB1cGRhdGVWYWx1ZSxcbiAgICB2YWx1ZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtdGV4dCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBoYXNFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1ib3JkZXInLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgaGFzQ2xlYXIgPyBbQ1NTLlBBRERJTkcuUklHSFQuSEFMRiwgQ1NTLlBBRERJTkcuTEVGVC5PTkVdIDogW0NTUy5QQURESU5HLlguT05FXSxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgICBwcm9wcy5kaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICA6aWNvbj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LXByZWZpeCcsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5wcmVmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMucHJlZml4IH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgICAgICBAY2xpY2sucHJldmVudD1cImlucHV0Py5mb2N1cygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIDphdXRvY29tcGxldGU9XCJhdXRvY29tcGxldGUgPyAnb24nIDogJ29mZidcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXVwiXG4gICAgICAgICAgICA6ZGF0YS10cmFjaz1cInByb3BzLmRhdGFUcmFja1wiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgICAgICAgICA6bWF4bGVuZ3RoPVwicHJvcHMubWF4bGVuZ3RoXCJcbiAgICAgICAgICAgIDptaW5sZW5ndGg9XCJwcm9wcy5taW5sZW5ndGhcIlxuICAgICAgICAgICAgOm5hbWU9XCJwcm9wcy5uYW1lXCJcbiAgICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInByb3BzLnJlcXVpcmVkXCJcbiAgICAgICAgICAgIDp0eXBlPVwidHlwZVwiXG4gICAgICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgICBAaW5wdXQ9XCJoYW5kbGVJbnB1dFwiXG4gICAgICAgICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtc3VmZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnN1ZmZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy5zdWZmaXggfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUEFERElORy5ZLkhBTEYsIENTUy5QQURESU5HLkZVTEwuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIEBjbGljaz1cImhhbmRsZUNsZWFyXCJcbiAgICAgICAgdi1pZj1cImhhc0NsZWFyICYmIHByb3BzLnR5cGUgIT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICAvPlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QQURESU5HLlkuSEFMRiwgQ1NTLlBBRERJTkcuRlVMTC5IQUxGLCBDU1MuQ1VSU09SLlBPSU5URVJdXCJcbiAgICAgICAgOmljb249XCJJQ09OLlZJU0lCSUxJVFlcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICBAY2xpY2s9XCJzaG93UGFzc3dvcmQgPSAhc2hvd1Bhc3N3b3JkXCJcbiAgICAgICAgdi1pZj1cInByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUl1cIlxuICAgICAgdi1pZj1cInByb3BzLnN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW11cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHByb3BzLnN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpLFxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeDpub3QoLm9mZnNldCksXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4Om5vdCgub2Zmc2V0KSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeCxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXgge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3IgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQgaW5wdXQge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZXJyb3I/OiBWYWxpZGF0aW9uRXJyb3I7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHJvd3M/OiBudW1iZXI7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkYXRhVHJhY2s6ICcnLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHJvd3M6IDgsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcilcbiAgKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnIHx8IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICByZXR1cm4gaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7XG4gICAgZXJyb3IsXG4gICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dGFyZWEnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIGhhc0Vycm9yICYmICdlcnJvciddXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQnLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gICAgICAgIENTUy5QQURESU5HLlRPUC5IQUxGLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGxhYmVsXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgXVwiXG4gICAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgcmVmPVwibGFiZWxcIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9sYWJlbD5cblxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTF1cIlxuICAgICAgICA6ZGF0YS10cmFjaz1cInByb3BzLmRhdGFUcmFja1wiXG4gICAgICAgIDptYXhsZW5ndGg9XCJwcm9wcy5tYXhsZW5ndGhcIlxuICAgICAgICA6bWlubGVuZ3RoPVwicHJvcHMubWlubGVuZ3RoXCJcbiAgICAgICAgOm5hbWU9XCJwcm9wcy5uYW1lXCJcbiAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICA6cmVxdWlyZWQ9XCJwcm9wcy5yZXF1aXJlZFwiXG4gICAgICAgIDpyb3dzPVwicHJvcHMucm93c1wiXG4gICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVWYWxpZGF0aW9uXCJcbiAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5zdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogcHJvcHMuc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG48L3N0eWxlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3IgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYTpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEgdGV4dGFyZWEge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1mb3JlZ3JvdW5kKTtcbiAgfVxuPC9zdHlsZT5cbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuZXhwb3J0IGNvbnN0IEJSRUFLUE9JTlQgPSB7XG4gIFNNOiAnc20nLFxuICBNRDogJ21kJyxcbiAgTEc6ICdsZycsXG4gIFhMOiAneGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IE1FRElBID0ge1xuICBTTTogNzY4LFxuICBNRDogOTkyLFxuICBMRzogMTIzMixcbiAgWEw6IDE5MjAsXG59O1xuXG5leHBvcnQgdHlwZSBCcmVha3BvaW50ID0gKHR5cGVvZiBCUkVBS1BPSU5UKVtrZXlvZiB0eXBlb2YgQlJFQUtQT0lOVF07XG5leHBvcnQgdHlwZSBNZWRpYSA9ICh0eXBlb2YgTUVESUEpW2tleW9mIHR5cGVvZiBNRURJQV07XG4iLCJpbXBvcnQgeyBuZXh0VGljayB9IGZyb20gJ3Z1ZSc7XG5cbi8qKlxuICogRGlyZWN0bHkgbW9kaWZpZXMgdGhlIGA8Ym9keT5gIGVsZW1lbnQgdG8gYXBwbHkgb3IgcmVtb3ZlIHNjcm9sbCBsb2NrLlxuICogV2hlbiBgZmFsc2VgIGlzIHByb3ZpZGVkLCBpdCBvbmx5IHVubG9ja3Mgc2Nyb2xsIGlmIHRoZXJlIGFyZSBubyBvcGVuXG4gKiBIVE1MIGRpYWxvZyBlbGVtZW50cy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldFNjcm9sbExvY2sgPSBhc3luYyAoaXNMb2NrZWQ6IGJvb2xlYW4pID0+IHtcbiAgY29uc3QgQk9EWV9MT0NLX0NMQVNTID0gJ2JvZHktc2Nyb2xsLWxvY2snO1xuICBjb25zdCBib2R5ID0gZG9jdW1lbnQuYm9keTtcblxuICBpZiAoaXNMb2NrZWQpIHtcbiAgICBpZiAoIWJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSkge1xuICAgICAgY29uc3Qgc2Nyb2xsWSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZID0gc2Nyb2xsWS50b1N0cmluZygpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYXZlZC1zY3JvbGwteScsIGAke3Njcm9sbFl9cHhgKTtcbiAgICAgIGJvZHkuY2xhc3NMaXN0LmFkZChCT0RZX0xPQ0tfQ0xBU1MpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBuZXh0VGljaygpO1xuICAgIGlmICghZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGlhbG9nW29wZW5dJykpIHtcbiAgICAgIGNvbnN0IHNhdmVkU2Nyb2xsWSA9IHBhcnNlSW50KGJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSB8fCAnMCcpO1xuICAgICAgYm9keS5jbGFzc0xpc3QucmVtb3ZlKEJPRFlfTE9DS19DTEFTUyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNhdmVkLXNjcm9sbC15Jyk7XG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oe1xuICAgICAgICBiZWhhdmlvcjogJ2F1dG8nLFxuICAgICAgICB0b3A6IHNhdmVkU2Nyb2xsWSxcbiAgICAgIH0pO1xuICAgICAgZGVsZXRlIGJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBUT1BfTEFZRVJfSUQgPSAndGlkZVRvcExheWVyJztcblxuZXhwb3J0IGNvbnN0IGluaXRGYXV4VG9wTGF5ZXIgPSAoKSA9PiB7XG4gIGxldCB0b3BMYXllciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFRPUF9MQVlFUl9JRCk7XG4gIGlmICghdG9wTGF5ZXIpIHtcbiAgICB0b3BMYXllciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRvcExheWVyLmlkID0gVE9QX0xBWUVSX0lEO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodG9wTGF5ZXIpO1xuICB9XG4gIHRvcExheWVyLnN0eWxlLmlzb2xhdGlvbiA9ICdpc29sYXRlJztcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBuZXh0VGljaywgb25Nb3VudGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEJSRUFLUE9JTlQgfSBmcm9tICdAL3R5cGVzL0JyZWFrcG9pbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBzZXRTY3JvbGxMb2NrIH0gZnJvbSAnQC91dGlsaXRpZXMvdmlld3BvcnQnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gICAgaXNEaXNtaXNzaWJsZT86IGJvb2xlYW47XG4gICAgaXNPcGVuOiBib29sZWFuO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaXNCYWNrQnV0dG9uOiBmYWxzZSxcbiAgICBpc0Rpc21pc3NpYmxlOiB0cnVlLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2Nsb3NlJyk6IHZvaWQ7XG4gICAgKGU6ICdiYWNrJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGFsQ29udGVudDogUmVmPEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkPiA9IHJlZigpO1xuICBjb25zdCBtb2RhbERpYWxvZzogUmVmPEhUTUxEaWFsb2dFbGVtZW50IHwgdW5kZWZpbmVkPiA9IHJlZigpO1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuID0gKCkgPT4ge1xuICAgIG1vZGFsRGlhbG9nLnZhbHVlPy5zaG93TW9kYWwoKTtcbiAgfTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UgPSAoKSA9PiB7XG4gICAgbW9kYWxEaWFsb2cudmFsdWU/LmNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsQ29udGVudFRvVG9wID0gKCkgPT4ge1xuICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgIGlmICghbW9kYWxDb250ZW50LnZhbHVlKSByZXR1cm47XG4gICAgICBtb2RhbENvbnRlbnQudmFsdWUuc2Nyb2xsVG9wID0gMDtcbiAgICB9KTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pc09wZW4sXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAoIW1vZGFsRGlhbG9nLnZhbHVlKSByZXR1cm47XG4gICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICAgICAgc2Nyb2xsQ29udGVudFRvVG9wKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIHNldFNjcm9sbExvY2sobmV3VmFsdWUpO1xuICAgIH1cbiAgKTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmIChwcm9wcy5pc09wZW4pIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgfVxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaWFsb2dcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtbW9kYWwnLCBDU1MuQkcuSU5JVElBTCwgQ1NTLkhFSUdIVC5GVUxMLCBDU1MuV0lEVEguRlVMTCwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTl1cIlxuICAgIHJlZj1cIm1vZGFsRGlhbG9nXCJcbiAgICA6c3R5bGU9XCJ7ICctLW1vZGFsLXdpZHRoJzogcHJvcHMud2lkdGggfVwiXG4gICAgQGNsaWNrLnNlbGY9XCJlbWl0KCdjbG9zZScpXCJcbiAgICBAY2xvc2U9XCJlbWl0KCdjbG9zZScpXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtbW9kYWwtYm9keScsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLk9ORSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICBDU1MuUE9TSVRJT05JTkcuQk9UVE9NLFxuICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIENTUy5XSURUSC5NQVhfRlVMTCxcbiAgICAgICAgQ1NTLndpdGhCcmVha3BvaW50KFtDU1MuU0hBRE9XLkJPVFRPTV0sIEJSRUFLUE9JTlQuU00pLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGhlYWRlclxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtbW9kYWwtaGVhZGVyJyxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICAgIENTUy5QQURESU5HLlkuT05FLFxuICAgICAgICAgIENTUy5CT1JERVIuQk9UVE9NLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2JhY2snKVwiXG4gICAgICAgICAgdGl0bGU9XCJCYWNrXCJcbiAgICAgICAgICB2LWlmPVwiaXNCYWNrQnV0dG9uXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuSEVBRExJTkVfMl1cIlxuICAgICAgICAgIHYtdGV4dD1cInRpdGxlXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkYsIENTUy5NQVJHSU4uTEVGVC5BVVRPXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJ0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2VcIlxuICAgICAgICAgIHYtaWY9XCJpc0Rpc21pc3NpYmxlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvaGVhZGVyPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1tb2RhbC1jb250ZW50JyxcbiAgICAgICAgICBDU1MuRElTUExBWS5HUklELFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgIENTUy5QQURESU5HLlkuVFdPLFxuICAgICAgICBdXCJcbiAgICAgICAgcmVmPVwibW9kYWxDb250ZW50XCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Zm9vdGVyXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1tb2RhbC1mb290ZXInLCBDU1MuQVhJUzEuRU5ELCBDU1MuRElTUExBWS5GTEVYLCBDU1MuR0FQLlRXTywgQ1NTLlBBRERJTkcuWS5PTkUsIENTUy5TSEFET1cuVE9QXVwiXG4gICAgICAgIHYtaWY9XCIkc2xvdHMuZm9vdGVyXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgbmFtZT1cImZvb3RlclwiIC8+XG4gICAgICA8L2Zvb3Rlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaWFsb2c+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1tb2RhbCB7XG4gICAgLS1tb2RhbC1wYWRkaW5nLXg6IDIwcHg7XG4gICAgbWF4LXdpZHRoOiB1bnNldDtcbiAgICBtYXgtaGVpZ2h0OiB1bnNldDtcbiAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICB9XG4gIC50aWRlLW1vZGFsW29wZW5dIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gIH1cbiAgLnRpZGUtbW9kYWw6OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuICAudGlkZS1tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTtcbiAgfVxuICBAc3RhcnRpbmctc3R5bGUge1xuICAgIC50aWRlLW1vZGFsW29wZW5dIHtcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgfVxuICAgIC50aWRlLW1vZGFsW29wZW5dOjpiYWNrZHJvcCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig0cHgpO1xuICAgIH1cbiAgfVxuICAudGlkZS1tb2RhbC1ib2R5IHtcbiAgICB3aWR0aDogdmFyKC0tbW9kYWwtd2lkdGgsIDU3NnB4KTtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSB2YXIoLS10aWRlLXNwYWNpbmctMikpO1xuICB9XG5cbiAgLnRpZGUtbW9kYWwtaGVhZGVyLFxuICAudGlkZS1tb2RhbC1mb290ZXIge1xuICAgIHBhZGRpbmctaW5saW5lOiB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpO1xuICB9XG4gIC50aWRlLW1vZGFsLWNvbnRlbnQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tbW9kYWwtcGFkZGluZy14KSAxZnIgdmFyKC0tbW9kYWwtcGFkZGluZy14KTtcbiAgfVxuICA6d2hlcmUoLnRpZGUtbW9kYWwtY29udGVudCk6ZGVlcCg+IDp3aGVyZSgqKSkge1xuICAgIGdyaWQtY29sdW1uOiAyO1xuICB9XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgfVxuICB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC50aWRlLW1vZGFsIHtcbiAgICAgIC0tbW9kYWwtcGFkZGluZy14OiB2YXIoLS10aWRlLXNwYWNpbmctMik7XG4gICAgfVxuICAgIC50aWRlLW1vZGFsLWJvZHkge1xuICAgICAgbWF4LWhlaWdodDogODUlO1xuICAgICAgYm90dG9tOiBpbml0aWFsO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVCdXR0b25QYWdpbmF0aW9uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uUGFnaW5hdGlvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgcGFnZUN1cnJlbnQ/OiBudW1iZXI7XG4gICAgcGFnZVRvdGFsPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgcGFnZUN1cnJlbnQ6IDEsXG4gICAgcGFnZVRvdGFsOiAxLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2UnXSk7XG5cbiAgY29uc3QgcGFnZUN1cnJlbnQgPSByZWYocHJvcHMucGFnZUN1cnJlbnQpO1xuXG4gIGNvbnN0IHBhZ2luYXRpb25CdXR0b25zID0gY29tcHV0ZWQoKCkgPT4gbmV3IEFycmF5KHByb3BzLnBhZ2VUb3RhbCkuZmlsbCgnJykubWFwKChlbXB0eSwgaW5kZXgpID0+IGluZGV4ICsgMSkpO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBwYWdlQ3VycmVudC52YWx1ZSA9IGluZGV4O1xuXG4gICAgZW1pdCgnY2hhbmdlJywgZXZlbnQsIGluZGV4KTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uXG4gICAgOmNsYXNzPVwiWyd0aWRlLXBhZ2luYXRpb24nLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5XSURUSC5GVUxMXVwiXG4gID5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpkaXNhYmxlZD1cInBhZ2VDdXJyZW50ID09PSAxXCJcbiAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhwYWdlQ3VycmVudCAtIDEpXCJcbiAgICAvPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgICAgPGxpXG4gICAgICAgIDprZXk9XCJwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgdi1mb3I9XCJwYWdpbmF0aW9uQnV0dG9uIGluIHBhZ2luYXRpb25CdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25QYWdpbmF0aW9uXG4gICAgICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IHBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICAgIDpsYWJlbD1cInBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKHBhZ2luYXRpb25CdXR0b24pXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cblxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IHBhZ2luYXRpb25CdXR0b25zW3BhZ2luYXRpb25CdXR0b25zLmxlbmd0aCAtIDFdXCJcbiAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2socGFnZUN1cnJlbnQgKyAxKVwiXG4gICAgLz5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpc0FjdGl2ZT86IGJvb2xlYW47XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaXNBY3RpdmU6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2UnXSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKCFwcm9wcy5kaXNhYmxlZCkge1xuICAgICAgZW1pdCgnY2hhbmdlJyk7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLXN3aXRjaCcsXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/ICdhY3RpdmUnIDogJycsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgcHJvcHMuaXNBY3RpdmUgPyAnJyA6IENTUy5CT1JERVIuQ09MT1IuREVGQVVMVCxcbiAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/IENTUy5CRy5TRUNPTkRBUlkgOiBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgIF1cIlxuICAgIDpkaXNhYmxlZD1cInByb3BzLmRpc2FibGVkXCJcbiAgICBAY2xpY2s9XCJoYW5kbGVDbGlja1wiXG4gICAgYXJpYS1sYWJlbD1cIlN3aXRjaFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLXN3aXRjaC1pbmRpY2F0b3InLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIHByb3BzLmlzQWN0aXZlID8gQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCA6IENTUy5CRy5TRUNPTkRBUlksXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJJQ09OLkNIRUNLXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtc3dpdGNoIHtcbiAgICB3aWR0aDogNjRweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjMyO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLmFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXNlY29uZGFyeSk7XG4gIH1cblxuICAudGlkZS1zd2l0Y2guYWN0aXZlIC50aWRlLXN3aXRjaC1pbmRpY2F0b3Ige1xuICAgIGxlZnQ6IDM2cHg7XG4gIH1cblxuICAudGlkZS1zd2l0Y2gtaW5kaWNhdG9yIHtcbiAgICBsZWZ0OiA0cHg7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBsZWZ0LCBib3JkZXItY29sb3IsIGJhY2tncm91bmQtY29sb3I7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBmb3JtYXROdW1iZXIsIGZvcm1hdFBob25lLCBmb3JtYXRQcmljZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmV4cG9ydCB0eXBlIEZvcm1hdHRlZCA9IHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfCBudW1iZXI7XG59O1xuXG5leHBvcnQgY29uc3QgRk9STUFUID0ge1xuICBOVU1CRVI6IGZvcm1hdE51bWJlcixcbiAgUEhPTkU6IGZvcm1hdFBob25lLFxuICBQUklDRTogZm9ybWF0UHJpY2UsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRk9STUFUX1JFR0VYID0ge1xuICBhbHBoYTogL15bYS16QS1aXSskL2csXG4gIGFscGhhTnVtYmVyT3JFbXB0eTogL14kfF5bYS16MC05XSskL2ksXG4gIGFscGhhU3BhY2U6IC9eW2EtekEtWiBdKyQvZyxcbiAgZW1haWw6XG4gICAgL14oKFtePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXF0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvLFxuICBudW1iZXJGb3JtYXR0ZWQ6IC9eJHwoPz0uKV5cXCQ/KChbMS05XVswLTldezAsMn0oLFswLTldezN9KSopfDApPyhcXC5bMC05XXsxLDJ9KT8kLyxcbiAgcGhvbmU6IC9eKD86XFxkezN9LVxcZHszfS1cXGR7NH18XFxkezF9LVxcZHszfS1cXGR7M30tXFxkezR9KT8kLyxcbiAgcHJpY2U6IC8oPz0uKV5cXCQ/KChbMS05XVswLTldezAsMn0oLFswLTldezN9KSopfDApPyhcXC5bMC05XXsxLDJ9KT8kLyxcbn07XG4iLCIvKipcbiAqIFRoZXNlIHNsaWRlcyBhcmUgdXNlZCBpbiBib3RoIHRoZSBpbmxpbmUgZGV0YWlsIHBhZ2UgcGhvdG8gc2xpZGVyXG4gKiBhbmQgdGhlIGZ1bGxzY3JlZW4gbWVkaWEgZ2FsbGVyeS5cbiAqL1xuXG5leHBvcnQgY29uc3QgTUVESUFfU0xJREVfVFlQRVMgPSB7XG4gIElNQUdFOiB7XG4gICAgRkxPT1JQTEFOOiAnZmxvb3JwbGFuJyxcbiAgICBJTUFHRTogJ2ltYWdlJyxcbiAgfSxcbiAgVklERU86ICd2aWRlbycsXG4gIFZSOiAndnInLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgTWVkaWFTbGlkZVR5cGUgPVxuICB8ICh0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuSU1BR0UpW2tleW9mIHR5cGVvZiBNRURJQV9TTElERV9UWVBFUy5JTUFHRV1cbiAgfCB0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuVklERU9cbiAgfCB0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuVlI7XG5cbmV4cG9ydCB0eXBlIEltYWdlU2xpZGVUeXBlID0gKHR5cGVvZiBNRURJQV9TTElERV9UWVBFUy5JTUFHRSlba2V5b2YgdHlwZW9mIE1FRElBX1NMSURFX1RZUEVTLklNQUdFXTtcblxudHlwZSBJbWFnZVNsaWRlID0ge1xuICBpbWFnZVVybDogc3RyaW5nO1xuICB0eXBlOiBJbWFnZVNsaWRlVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIFZpZGVvU2xpZGVUeXBlID0gdHlwZW9mIE1FRElBX1NMSURFX1RZUEVTLlZJREVPO1xuXG50eXBlIFZpZGVvU2xpZGUgPSB7XG4gIGltYWdlVXJsOiBzdHJpbmc7XG4gIHR5cGU6IFZpZGVvU2xpZGVUeXBlO1xuICB2aWRlb1VybDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVnJTbGlkZVR5cGUgPSB0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuVlI7XG5cbnR5cGUgVnJTbGlkZSA9IHtcbiAgaW1hZ2VVcmw6IHN0cmluZztcbiAgdHlwZTogVnJTbGlkZVR5cGU7XG4gIHZyVXJsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBMaXN0aW5nTWVkaWEgPSBJbWFnZVNsaWRlIHwgVmlkZW9TbGlkZSB8IFZyU2xpZGU7XG4iLCJpbXBvcnQgeyBGT1JNQVRfUkVHRVggfSBmcm9tICdAL3R5cGVzL0Zvcm1hdHRlZCc7XG5pbXBvcnQgeyBjaGVja0Zvcm1hdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG5leHBvcnQgY29uc3QgVkFMSURBVE9SID0ge1xuICBBTFBIQV9OVU1CRVJfRU1QVFk6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5hbHBoYU51bWJlck9yRW1wdHkpLFxuICBBTFBIQV9TUEFDRTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmFscGhhU3BhY2UpLFxuICBFTUFJTDogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmVtYWlsKSxcbiAgTlVNQkVSOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVgubnVtYmVyRm9ybWF0dGVkKSxcbiAgUEhPTkU6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5waG9uZSksXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uRXJyb3IgPSBzdHJpbmcgfCBib29sZWFuO1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblJlc3VsdCA9IHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB2YWxpZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25MZW5ndGggPSB7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHZhbHVlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0b3IgPSAodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdDtcbiJdLCJuYW1lcyI6WyJPUklFTlRBVElPTiIsIkNTUyIsInV0aWxpdGllcyIsImJyZWFrcG9pbnQiLCJ1dGlsaXR5IiwiUkVBTE0iLCJTSVpFIiwiU0laRV9CVVRUT04iLCJmb3JtYXROdW1iZXIiLCJpbnB1dCIsIm91dHB1dCIsImRpZ2l0cyIsImZvcm1hdFBhc2NhbENhc2UiLCJ3b3JkIiwiZm9ybWF0UGhvbmUiLCJmb3JtYXRQcmljZSIsImlubmVyU1ZHIiwicmVmIiwid2F0Y2giLCJwcm9wcyIsImlkIiwibmFtZSIsInByZWZpeCIsInJlYWxtRm9sZGVyIiwiY29tcG9uZW50IiwiZGVmaW5lQXN5bmNDb21wb25lbnQiLCJfX3ZhcmlhYmxlRHluYW1pY0ltcG9ydFJ1bnRpbWVIZWxwZXIiLCJtYXJrUmF3IiwiSUNPTiIsIklDT05fUkVBTE0iLCJoYW5kbGVUb2dnbGVDbGljayIsImVtaXQiLCJFTEVNRU5UIiwiRUxFTUVOVF9URVhUX0FTX0lDT04iLCJQUklPUklUWSIsIlRBUkdFVCIsIkFMRVJUIiwiaWNvbiIsImNvbXB1dGVkIiwiaW1hZ2VEZWZhdWx0IiwicGljdHVyZSIsImltZyIsInNldEltYWdlRnJvbURlZmF1bHQiLCJjdXJyZW50U3JjIiwiX2EiLCJwaWN0dXJlU291cmNlIiwiX2IiLCJCQURHRV9UUlVTVEVEIiwiaGFuZGxlQ2xpY2siLCJpbmRleCIsIlRZUEVfQ0FSRCIsImNvbnRlbnRSZWYiLCJmcmFtZVJlZiIsImNvbnRlbnRSaWdodEVkZ2UiLCJjb250ZW50V2lkdGgiLCJjdXJyZW50U2xpZGUiLCJmcmFtZVdpZHRoIiwiaGFzT3ZlcmZsb3ciLCJpc0xhc3RTbGlkZSIsImxhc3RQb3NpdGlvbiIsInNob3dCdXR0b25zIiwibWVhc3VyZUN1cnJlbnRTbGlkZSIsInNsaWRlT2Zmc2V0cyIsInNsaWRlIiwiY2xvc2VzdFNsaWRlT2Zmc2V0IiwicHJldiIsImN1cnIiLCJtZWFzdXJlRG9tIiwiaGFuZGxlU2Nyb2xsIiwic2Nyb2xsVG9TbGlkZSIsInNsaWRlSW5kZXgiLCJzaG93TmV4dFNsaWRlIiwic2hvd1ByZXZpb3VzU2xpZGUiLCJvbk1vdW50ZWQiLCJvblVubW91bnRlZCIsIm9uVXBkYXRlZCIsImlzQ2hlY2tlZCIsImNoZWNrZWQiLCJuZXdWYWx1ZSIsIm9sZFZhbHVlIiwiZXJyb3JNZXNzYWdlRGVmYXVsdCIsIm5vRXJyb3IiLCJjaGVja0Zvcm1hdCIsImZvcm1hdCIsInZhbHVlIiwicmVzdWx0IiwiZ2V0RXJyb3JNZXNzYWdlIiwiZXJyb3JGcm9tUHJvcHMiLCJlcnJvckZyb21SZWYiLCJnZXRGaWVsZEhhc0Vycm9yIiwiZ2V0RmllbGRMZW5ndGhJc1ZhbGlkIiwibWF4bGVuZ3RoIiwibWlubGVuZ3RoIiwicmVxdWlyZWQiLCJpc0VtcHR5QW5kVW5yZXF1aXJlZCIsImlzVG9vTG9uZyIsImhhbmRsZUZpZWxkVmFsaWRhdGlvbiIsImVycm9yIiwidmFsaWRhdG9ycyIsInZhbGlkYXRpb24iLCJ2YWxpZGF0ZVByb3BlcnR5IiwibGVuZ3RoVmFsaWRhdGlvbiIsInZhbGlkYXRlTGVuZ3RoIiwicmVzcG9uc2UiLCJ2YWxpZGF0b3IiLCJoYXNGb2N1cyIsImVycm9yTWVzc2FnZSIsImZvcm1hdHRlZExhYmVsIiwiaGFzRXJyb3IiLCJoYXNNaW5pbGFiZWwiLCJpc0VtcHR5IiwiZXhwYW5kT3B0aW9ucyIsImV2ZW50IiwiaGFuZGxlRm9jdXMiLCJoYW5kbGVGb2N1c091dCIsIl9fZXhwb3NlIiwiVEVYVF9JTlBVVF9UWVBFIiwic2hvd1Bhc3N3b3JkIiwiaGFzQ2xlYXIiLCJ0eXBlIiwiaGFuZGxlQ2xlYXIiLCJoYW5kbGVWYWxpZGF0aW9uIiwiaGFuZGxlSW5wdXQiLCJ1cGRhdGVWYWx1ZSIsIkJSRUFLUE9JTlQiLCJNRURJQSIsInNldFNjcm9sbExvY2siLCJpc0xvY2tlZCIsIkJPRFlfTE9DS19DTEFTUyIsImJvZHkiLCJzY3JvbGxZIiwibmV4dFRpY2siLCJzYXZlZFNjcm9sbFkiLCJtb2RhbENvbnRlbnQiLCJtb2RhbERpYWxvZyIsInRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuIiwidHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlIiwic2Nyb2xsQ29udGVudFRvVG9wIiwicGFnZUN1cnJlbnQiLCJwYWdpbmF0aW9uQnV0dG9ucyIsImVtcHR5IiwiRk9STUFUIiwiRk9STUFUX1JFR0VYIiwiTUVESUFfU0xJREVfVFlQRVMiLCJWQUxJREFUT1IiXSwibWFwcGluZ3MiOiJ1R0FBYUEsRUFBYyxDQUN6QixXQUFZLGFBQ1osU0FBVSxVQUNaLEVDQ2FDLEVBQU0sQ0FDakIsZUFBZ0IsQ0FBQ0MsRUFBcUJDLElBQzdCRCxFQUFVLElBQUtFLEdBQVksR0FBR0QsQ0FBVSxJQUFJQyxDQUFPLEVBQUUsRUFFOUQsTUFBTyxDQUNMLEVBQUcsQ0FDRCxPQUFRLG1CQUNSLEtBQU0saUJBQ04sTUFBTyxpQkFDVCxFQUNBLEVBQUcsQ0FDRCxRQUFTLHFCQUNULE9BQVEsbUJBQ1YsQ0FDRixFQUNBLE1BQU8sQ0FDTCxPQUFRLG9CQUNSLFFBQVMscUJBQ1QsT0FBUSxvQkFDUixJQUFLLGlCQUNMLE1BQU8sa0JBQ1QsRUFDQSxNQUFPLENBQ0wsT0FBUSxvQkFDUixPQUFRLG9CQUNSLElBQUssaUJBQ0wsTUFBTyxrQkFDVCxFQUNBLEdBQUksQ0FDRixPQUFRLENBQ04s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QUNiQSxFQUFJLE9BQU8sRUFBRSxJQUNiQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sSUFBSSxLQUNmQSxFQUFJLE9BQU8sSUFBSSxJQUNmQSxFQUFJLE9BQU8sSUFBSSxLQUNmQSxFQUFJLE9BQU8sSUFBSSxRQUNmQSxFQUFJLE9BQU8sSUFBSSxJQUNmQSxFQUFJLE9BQU8sSUFBSSxLQUNmQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sRUFBRSxJQUNiQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sRUFBRSxRQUNiQSxFQUFJLE9BQU8sRUFBRSxJQUNiQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sTUFBTSxLQUNqQkEsRUFBSSxPQUFPLE1BQU0sSUFDakJBLEVBQUksT0FBTyxNQUFNLEtBQ2pCQSxFQUFJLE9BQU8sTUFBTSxRQUNqQkEsRUFBSSxPQUFPLE1BQU0sSUFDakJBLEVBQUksT0FBTyxNQUFNLEtBQ2pCQSxFQUFJLE9BQU8sTUFBTSxLQUNqQkEsRUFBSSxPQUFPLE9BQU8sS0FDbEJBLEVBQUksT0FBTyxPQUFPLElBQ2xCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sUUFDbEJBLEVBQUksT0FBTyxPQUFPLElBQ2xCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLEtBQUssS0FDaEJBLEVBQUksT0FBTyxLQUFLLElBQ2hCQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLEtBQUssUUFDaEJBLEVBQUksT0FBTyxLQUFLLElBQ2hCQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLEtBQUssS0FDaEJBLEVBQUksT0FBTyxLQUFLLElBQ2hCQSxFQUFJLE9BQU8sS0FBSyxJQUNoQkEsRUFBSSxPQUFPLElBQUksSUFDZkEsRUFBSSxPQUFPLElBQUksSUFDZkEsRUFBSSxPQUFPLE1BQU0sSUFDakJBLEVBQUksT0FBTyxNQUFNLElBQ2pCQSxFQUFJLE9BQU8sT0FBTyxJQUNsQkEsRUFBSSxPQUFPLE9BQU8sSUFDbEJBLEVBQUksT0FBTyxLQUFLLElBQ2hCQSxFQUFJLE9BQU8sS0FBSyxJQUNoQkEsRUFBSSxPQUFPLE9BQU8sSUFDbEJBLEVBQUksT0FBTyxPQUFPLEtBQ2xCQSxFQUFJLE9BQU8sT0FBTyxRQUNsQkEsRUFBSSxPQUFPLE9BQU8sS0FDbEJBLEVBQUksUUFBUSxLQUFLLEtBQ2pCQSxFQUFJLFFBQVEsS0FBSyxJQUNqQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVBQUksUUFBUSxLQUFLLFFBQ2pCQSxFQUFJLFFBQVEsS0FBSyxJQUNqQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVBQUksUUFBUSxFQUFFLEtBQ2RBLEVBQUksUUFBUSxFQUFFLElBQ2RBLEVBQUksUUFBUSxFQUFFLEtBQ2RBLEVBQUksUUFBUSxFQUFFLFFBQ2RBLEVBQUksUUFBUSxFQUFFLElBQ2RBLEVBQUksUUFBUSxFQUFFLEtBQ2RBLEVBQUksUUFBUSxJQUFJLEtBQ2hCQSxFQUFJLFFBQVEsSUFBSSxJQUNoQkEsRUFBSSxRQUFRLElBQUksS0FDaEJBLEVBQUksUUFBUSxJQUFJLFFBQ2hCQSxFQUFJLFFBQVEsSUFBSSxJQUNoQkEsRUFBSSxRQUFRLElBQUksS0FDaEJBLEVBQUksUUFBUSxFQUFFLEtBQ2RBLEVBQUksUUFBUSxFQUFFLElBQ2RBLEVBQUksUUFBUSxFQUFFLEtBQ2RBLEVBQUksUUFBUSxFQUFFLFFBQ2RBLEVBQUksUUFBUSxFQUFFLElBQ2RBLEVBQUksUUFBUSxFQUFFLEtBQ2RBLEVBQUksUUFBUSxNQUFNLEtBQ2xCQSxFQUFJLFFBQVEsTUFBTSxJQUNsQkEsRUFBSSxRQUFRLE1BQU0sS0FDbEJBLEVBQUksUUFBUSxNQUFNLFFBQ2xCQSxFQUFJLFFBQVEsTUFBTSxJQUNsQkEsRUFBSSxRQUFRLE1BQU0sS0FDbEJBLEVBQUksUUFBUSxPQUFPLEtBQ25CQSxFQUFJLFFBQVEsT0FBTyxJQUNuQkEsRUFBSSxRQUFRLE9BQU8sS0FDbkJBLEVBQUksUUFBUSxPQUFPLFFBQ25C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LENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSxrQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHdCQUFBLEdBQUEsNENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxrQ0FBQSxDQUFBLEVBQUEsNkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxtQ0FBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEseUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwrQkFBQSxDQUFBLEVBQUEsMkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxpQ0FBQSxDQUFBLEVBQUEseUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwrQkFBQSxDQUFBLEVBQUEseUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwrQkFBQSxDQUFBLEVBQUEsMENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxnQ0FBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxtQ0FBQSw4QkFBQSxDQUFBLEVBQUEsa0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx3QkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsNENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxrQ0FBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxHQUFBLDBDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsZ0NBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLDBDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsZ0NBQUEsQ0FBQSxFQUFBLDJDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsaUNBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLGlEQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsdUNBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsbUNBQUEsMkJBQUEsQ0FBQSxFQUFBLHNDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNEJBQUEsQ0FBQSxFQUFBLDZDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsbUNBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsR0FBQSwwQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGdDQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSw0Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGtDQUFBLENBQUEsRUFBQSx5Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLCtCQUFBLENBQUEsRUFBQSx5Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLCtCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSw2Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLG1DQUFBLENBQUEsRUFBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLENBQUEsRUFBQSx5Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLCtCQUFBLENBQUEsRUFBQSwyQ0FBQSxJQUFBLG1DQUFBLGlDQUFBLENBQUEsRUFBQSxpREFBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHVDQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSxrQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHdCQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSwrQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHFDQUFBLEdBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsMENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxnQ0FBQSxDQUFBLEVBQUEseUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwrQkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxtQ0FBQSw4QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsNENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxrQ0FBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsNENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxrQ0FBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxHQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsQ0FBQSxFQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLDRDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsa0NBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLHNDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNEJBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsQ0FBQSxFQUFBLDJDQUFBLElBQUEsbUNBQUEsaUNBQUEsQ0FBQSxFQUFBLDBDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsZ0NBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsR0FBQSwyQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGlDQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSwyQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGlDQUFBLENBQUEsRUFBQSwwQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGdDQUFBLENBQUEsRUFBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLENBQUEsRUFBQSw0Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGtDQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSxzQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDRCQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSxzQ0FBQSxJQUFBLG1DQUFBLDRCQUFBLENBQUEsRUFBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLENBQUEsRUFBQSxzQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDRCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSwwQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGdDQUFBLENBQUEsRUFBQSwyQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGlDQUFBLEdBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsa0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx3QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsNkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxtQ0FBQSxDQUFBLEVBQUEsc0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw0QkFBQSxDQUFBLEVBQUEsMkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxpQ0FBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxtQ0FBQSwyQkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsc0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw0QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxHQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLHlDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsK0JBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLHNDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNEJBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLCtDQUFBLElBQUEsbUNBQUEscUNBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEs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
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),Ie={HORIZONTAL:"horizontal",VERTICAL:"vertical"},t={withBreakpoint:(o,n)=>o.map(r=>`${n}-${r}`),ALIGN:{X:{CENTER:"tide-text-center",LEFT:"tide-text-left",RIGHT:"tide-text-right"},Y:{INITIAL:"tide-align-initial",MIDDLE:"tide-align-middle"}},AXIS1:{AROUND:"tide-axis1-around",BETWEEN:"tide-axis1-between",CENTER:"tide-axis1-center",END:"tide-axis1-end",START:"tide-axis1-start"},AXIS2:{AROUND:"tide-axis2-around",CENTER:"tide-axis2-center",END:"tide-axis2-end",START:"tide-axis2-start"},BG:{GLOBAL:{PRIMARY:{ERROR:"tide-bg-primary-error",INFO:"tide-bg-primary-info",SUCCESS:"tide-bg-primary-success",WARNING:"tide-bg-primary-warning"},SURFACE:{ERROR:"tide-bg-surface-error",INFO:"tide-bg-surface-info",SUCCESS:"tide-bg-surface-success",WARNING:"tide-bg-surface-warning"}},INITIAL:"tide-bg-initial",BLUR:"tide-bg-blur",PRIMARY:"tide-bg-primary",SECONDARY:"tide-bg-secondary",SURFACE:{ACCENT:"tide-bg-surface-accent",BRAND:"tide-bg-surface-brand",DEFAULT:"tide-bg-surface",FLOATING:"tide-bg-surface-floating",GRADIENT:"tide-bg-surface-gradient",VARIANT:"tide-bg-surface-variant"},TRANSPARENT:{ONE_HUNDRED:"tide-transparent-100",TWO_HUNDRED:"tide-transparent-200",THREE_HUNDRED:"tide-transparent-300",FOUR_HUNDRED:"tide-transparent-400"}},BORDER:{COLOR:{GLOBAL:{ERROR:"tide-border-error",INFO:"tide-border-info",SUCCESS:"tide-border-success",WARNING:"tide-border-warning"},INITIAL:"tide-border-color-initial",DEFAULT:"tide-border",FLOATING:"tide-border-floating",HIGH:"tide-border-high",LOW:"tide-border-low",PRIMARY:"tide-border-primary"},RADIUS:{ZERO:"tide-radius-0",QUARTER:"tide-radius-1/4",HALF:"tide-radius-1/2",ONE:"tide-radius-1",FULL:"tide-radius-full"},BOTTOM:{ZERO:"tide-border-bottom-0",ONE:"tide-border-bottom-1",TWO:"tide-border-bottom-2"},FULL:{ZERO:"tide-border-0",ONE:"tide-border-1",TWO:"tide-border-2"},LEFT:{ZERO:"tide-border-left-0",ONE:"tide-border-left-1",TWO:"tide-border-left-2"},RIGHT:{ZERO:"tide-border-right-0",ONE:"tide-border-right-1",TWO:"tide-border-right-2"},TOP:{ZERO:"tide-border-top-0",ONE:"tide-border-top-1",TWO:"tide-border-top-2"}},BOX_SIZING:{BORDER_BOX:"tide-box-border",CONTENT_BOX:"tide-box-content"},BREAK_INSIDE:{AVOID_COLUMN:"tide-break-inside-avoid-column"},BREAK_WORD:{OFF:"tide-break-initial",ON:"tide-break-word"},COLUMNS:{INITIAL:"tide-columns-initial",ONE:"tide-columns-1",TWO:"tide-columns-2",THREE:"tide-columns-3",FOUR:"tide-columns-4"},CURSOR:{NOT_ALLOWED:"tide-cursor-not-allowed",POINTER:"tide-cursor-pointer",TEXT:"tide-cursor-text"},DISPLAY:{BLOCK:"tide-display-block",CONTENTS:"tide-display-contents",FLEX:"tide-display-flex",GRID:"tide-display-grid",INITIAL:"tide-display-initial",INLINE:"tide-display-inline",INLINE_BLOCK:"tide-display-inline-block",INLINE_FLEX:"tide-display-inline-flex",NONE:"tide-display-none"},ELLIPSIS:"tide-ellipsis",FLEX:{BASIS:{AUTO:"tide-flex-basis-auto",ZERO:"tide-flex-basis-0"},DIRECTION:{COLUMN:"tide-flex-column",COLUMN_REVERSE:"tide-flex-column-reverse",ROW:"tide-flex-row",ROW_REVERSE:"tide-flex-row-reverse"},GROW:{OFF:"tide-grow-none",ON:"tide-grow"},SHRINK:{OFF:"tide-shrink-none",ON:"tide-shrink"},WRAP:"tide-flex-wrap"},FONT:{COLOR:{GLOBAL:{ERROR:"tide-font-error",INFO:"tide-font-info",SUCCESS:"tide-font-success",WARNING:"tide-font-warning"},PRIMARY:"tide-font-on-primary",SECONDARY:"tide-font-on-secondary",SURFACE:{BRAND:"tide-font-on-surface-brand",DEFAULT:"tide-font-on-surface",INVERSE:"tide-font-on-surface-inverse",VARIANT:"tide-font-on-surface-variant",VARIANT_INVERSE:"tide-font-on-surface-variant-inverse"}},ROLE:{DISPLAY_1:"tide-typography-display-1",HEADLINE_1:"tide-typography-headline-1",HEADLINE_2:"tide-typography-headline-2",HEADLINE_3:"tide-typography-headline-3",TITLE_1:"tide-typography-title-1",TITLE_2:"tide-typography-title-2",BODY_1:"tide-typography-body-1",BODY_2:"tide-typography-body-2",LABEL_1:"tide-typography-label-1",LABEL_1_SEMIBOLD:"tide-typography-label-1-semibold",LABEL_2:"tide-typography-label-2",LABEL_2_SEMIBOLD:"tide-typography-label-2-semibold",LABEL_3:"tide-typography-label-3",LINK_1:"tide-typography-link-1",LINK_2:"tide-typography-link-2",LINK_3:"tide-typography-link-3",BUTTON_1:"tide-typography-button-1",BUTTON_2:"tide-typography-button-2"},SIZE:{TWELVE:"tide-font-12",FOURTEEN:"tide-font-14",SIXTEEN:"tide-font-16",TWENTY:"tide-font-20",TWENTY_FOUR:"tide-font-24",THIRTY_TWO:"tide-font-32"},WEIGHT:{FOUR_HUNDRED:"tide-font-400",FIVE_HUNDRED:"tide-font-500",SIX_HUNDRED:"tide-font-600",SEVEN_HUNDRED:"tide-font-700"}},GAP:{ZERO:"tide-gap-0",QUARTER:"tide-gap-1/4",HALF:"tide-gap-1/2",ONE:"tide-gap-1",TWO:"tide-gap-2",FOUR:"tide-gap-4"},GRID:{END:{ONE:"tide-end-1",TWO:"tide-end-2",THREE:"tide-end-3",FOUR:"tide-end-4",FIVE:"tide-end-5",SIX:"tide-end-6",SEVEN:"tide-end-7",EIGHT:"tide-end-8",NINE:"tide-end-9",TEN:"tide-end-10",ELEVEN:"tide-end-11",TWELVE:"tide-end-12",THIRTEEN:"tide-end-13"},FLUID:"tide-fluid",ITEM:"tide-grid-item",LAYOUT:"tide-grid-layout",START:{ZERO:"tide-start-0",ONE:"tide-start-1",TWO:"tide-start-2",THREE:"tide-start-3",FOUR:"tide-start-4",FIVE:"tide-start-5",SIX:"tide-start-6",SEVEN:"tide-start-7",EIGHT:"tide-start-8",NINE:"tide-start-9",TEN:"tide-start-10",ELEVEN:"tide-start-11",TWELVE:"tide-start-12"},XL:"tide-grid-xl"},HEIGHT:{AUTO:"tide-height-auto",ZERO:"tide-height-0",FULL:"tide-height-full",MAX_FULL:"tide-max-height-full"},ISOLATION:{ISOLATE:"tide-isolate"},LIST_BULLETS:{OFF:"tide-list-none"},MARGIN:{BOTTOM:{AUTO:"tide-margin-bottom-auto",ZERO:"tide-margin-bottom-0",QUARTER:"tide-margin-bottom-1/4",HALF:"tide-margin-bottom-1/2",ONE:"tide-margin-bottom-1",TWO:"tide-margin-bottom-2",FOUR:"tide-margin-bottom-4"},FULL:{ZERO:"tide-margin-0",QUARTER:"tide-margin-1/4",HALF:"tide-margin-1/2",ONE:"tide-margin-1",TWO:"tide-margin-2",FOUR:"tide-margin-4"},LEFT:{AUTO:"tide-margin-left-auto",ZERO:"tide-margin-left-0",QUARTER:"tide-margin-left-1/4",HALF:"tide-margin-left-1/2",ONE:"tide-margin-left-1",TWO:"tide-margin-left-2",FOUR:"tide-margin-left-4"},RIGHT:{AUTO:"tide-margin-right-auto",ZERO:"tide-margin-right-0",QUARTER:"tide-margin-right-1/4",HALF:"tide-margin-right-1/2",ONE:"tide-margin-right-1",TWO:"tide-margin-right-2",FOUR:"tide-margin-right-4"},TOP:{AUTO:"tide-margin-top-auto",ZERO:"tide-margin-top-0",QUARTER:"tide-margin-top-1/4",HALF:"tide-margin-top-1/2",ONE:"tide-margin-top-1",TWO:"tide-margin-top-2",FOUR:"tide-margin-top-4"},X:{AUTO:"tide-margin-x-auto",ZERO:"tide-margin-x-0",QUARTER:"tide-margin-x-1/4",HALF:"tide-margin-x-1/2",ONE:"tide-margin-x-1",TWO:"tide-margin-x-2",FOUR:"tide-margin-x-4"},Y:{ZERO:"tide-margin-y-0",QUARTER:"tide-margin-y-1/4",HALF:"tide-margin-y-1/2",ONE:"tide-margin-y-1",TWO:"tide-margin-y-2",FOUR:"tide-margin-y-4"}},OBJECT:{CENTER:"tide-object-center",CONTAIN:"tide-object-contain",COVER:"tide-object-cover",SCALE_DOWN:"tide-object-scale-down"},OPACITY:{OFF:"tide-opacity-none",ON:"tide-opacity"},OVERFLOW:{X:{AUTO:"tide-x-auto",HIDDEN:"tide-x-hidden",SCROLL:"tide-x-scroll"},XY:{AUTO:"tide-xy-auto",HIDDEN:"tide-xy-hidden"},Y:{AUTO:"tide-y-auto",HIDDEN:"tide-y-hidden"}},PADDING:{BOTTOM:{ZERO:"tide-padding-bottom-0",QUARTER:"tide-padding-bottom-1/4",HALF:"tide-padding-bottom-1/2",ONE:"tide-padding-bottom-1",TWO:"tide-padding-bottom-2",FOUR:"tide-padding-bottom-4"},FULL:{ZERO:"tide-padding-0",QUARTER:"tide-padding-1/4",HALF:"tide-padding-1/2",ONE:"tide-padding-1",TWO:"tide-padding-2",FOUR:"tide-padding-4"},LEFT:{ZERO:"tide-padding-left-0",QUARTER:"tide-padding-left-1/4",HALF:"tide-padding-left-1/2",ONE:"tide-padding-left-1",TWO:"tide-padding-left-2",FOUR:"tide-padding-left-4"},RIGHT:{ZERO:"tide-padding-right-0",QUARTER:"tide-padding-right-1/4",HALF:"tide-padding-right-1/2",ONE:"tide-padding-right-1",TWO:"tide-padding-right-2",FOUR:"tide-padding-right-4"},TOP:{ZERO:"tide-padding-top-0",QUARTER:"tide-padding-top-1/4",HALF:"tide-padding-top-1/2",ONE:"tide-padding-top-1",TWO:"tide-padding-top-2",FOUR:"tide-padding-top-4"},X:{ZERO:"tide-padding-x-0",QUARTER:"tide-padding-x-1/4",HALF:"tide-padding-x-1/2",ONE:"tide-padding-x-1",TWO:"tide-padding-x-2",FOUR:"tide-padding-x-4"},Y:{ZERO:"tide-padding-y-0",QUARTER:"tide-padding-y-1/4",HALF:"tide-padding-y-1/2",ONE:"tide-padding-y-1",TWO:"tide-padding-y-2",FOUR:"tide-padding-y-4"}},POINTER_EVENTS:{OFF:"tide-pointer-events-none",ON:"tide-pointer-events"},POSITION:{ABSOLUTE:"tide-position-absolute",FIXED:"tide-position-fixed",RELATIVE:"tide-position-relative",STATIC:"tide-position-static",STICKY:"tide-position-sticky"},POSITIONING:{BOTTOM:"tide-bottom-0",LEFT:"tide-left-0",RIGHT:"tide-right-0",TOP:"tide-top-0"},RATIO:{ONE_TO_ONE:"tide-ratio-1/1",SIXTEEN_TO_NINE:"tide-ratio-16/9",THREE_TO_TWO:"tide-ratio-3/2"},SCROLLBAR:{OFF:"tide-scrollbar-none"},SHADOW:{INITIAL:"tide-shadow-initial",BOTTOM:"tide-shadow-bottom",TOP:"tide-shadow-top",TEXT:"tide-shadow-text"},SNAP:{ON:"tide-scroll-snap"},SNAP_ALIGN:{START:"tide-scroll-snap-start"},TEXT_TRANSFORM:{LOWER:"tide-text-transform-lower",NONE:"tide-text-transform-none",UPPER:"tide-text-transform-upper"},UNDERLINE:{HOVER:"tide-underline-hover",OFF:"tide-underline-none",ON:"tide-underline"},VISIBILITY:{OFF:"tide-visible-none",ON:"tide-visible"},WHITESPACE_WRAP:{OFF:"tide-whitespace-nowrap"},WIDTH:{AUTO:"tide-width-auto",ZERO:"tide-width-0",FULL:"tide-width-full",MAX_FULL:"tide-max-width-full"},Z_INDEX:{INITIAL:"tide-z-index-initial",ONE:"tide-z-index-1"}};t.DISPLAY.BLOCK,t.DISPLAY.CONTENTS,t.DISPLAY.FLEX,t.DISPLAY.GRID,t.DISPLAY.NONE,t.DISPLAY.INITIAL,t.DISPLAY.INLINE,t.DISPLAY.INLINE_BLOCK,t.DISPLAY.INLINE_FLEX,t.AXIS1.AROUND,t.AXIS1.BETWEEN,t.AXIS1.CENTER,t.AXIS1.END,t.AXIS1.START,t.AXIS2.AROUND,t.AXIS2.CENTER,t.AXIS2.END,t.AXIS2.START,t.FLEX.DIRECTION.COLUMN,t.FLEX.DIRECTION.COLUMN_REVERSE,t.FLEX.DIRECTION.ROW,t.FLEX.DIRECTION.ROW_REVERSE,t.GAP.ONE,t.GAP.HALF,t.GAP.QUARTER,t.GAP.TWO,t.GAP.FOUR,t.FLEX.BASIS.ZERO,t.FLEX.GROW.ON,t.FLEX.GROW.OFF,t.FLEX.SHRINK.ON,t.FLEX.SHRINK.OFF,t.FLEX.WRAP,t.POSITION.ABSOLUTE,t.POSITION.FIXED,t.POSITION.RELATIVE,t.POSITION.STICKY,t.POSITIONING.TOP,t.POSITIONING.RIGHT,t.POSITIONING.BOTTOM,t.POSITIONING.LEFT,t.BOX_SIZING.BORDER_BOX,t.BOX_SIZING.CONTENT_BOX,t.MARGIN.FULL.ZERO,t.MARGIN.FULL.ONE,t.MARGIN.FULL.HALF,t.MARGIN.FULL.QUARTER,t.MARGIN.FULL.TWO,t.MARGIN.FULL.FOUR,t.MARGIN.Y.ZERO,t.MARGIN.Y.ONE,t.MARGIN.Y.HALF,t.MARGIN.Y.QUARTER,t.MARGIN.Y.TWO,t.MARGIN.Y.FOUR,t.MARGIN.TOP.ZERO,t.MARGIN.TOP.ONE,t.MARGIN.TOP.HALF,t.MARGIN.TOP.QUARTER,t.MARGIN.TOP.TWO,t.MARGIN.TOP.FOUR,t.MARGIN.X.ZERO,t.MARGIN.X.ONE,t.MARGIN.X.HALF,t.MARGIN.X.QUARTER,t.MARGIN.X.TWO,t.MARGIN.X.FOUR,t.MARGIN.X.AUTO,t.MARGIN.RIGHT.ZERO,t.MARGIN.RIGHT.ONE,t.MARGIN.RIGHT.HALF,t.MARGIN.RIGHT.QUARTER,t.MARGIN.RIGHT.TWO,t.MARGIN.RIGHT.FOUR,t.MARGIN.RIGHT.AUTO,t.MARGIN.BOTTOM.ZERO,t.MARGIN.BOTTOM.ONE,t.MARGIN.BOTTOM.HALF,t.MARGIN.BOTTOM.QUARTER,t.MARGIN.BOTTOM.TWO,t.MARGIN.BOTTOM.FOUR,t.MARGIN.LEFT.ZERO,t.MARGIN.LEFT.ONE,t.MARGIN.LEFT.HALF,t.MARGIN.LEFT.QUARTER,t.MARGIN.LEFT.TWO,t.MARGIN.LEFT.FOUR,t.MARGIN.LEFT.AUTO,t.BORDER.FULL.ONE,t.BORDER.FULL.TWO,t.BORDER.TOP.ONE,t.BORDER.TOP.TWO,t.BORDER.RIGHT.ONE,t.BORDER.RIGHT.TWO,t.BORDER.BOTTOM.ONE,t.BORDER.BOTTOM.TWO,t.BORDER.LEFT.ONE,t.BORDER.LEFT.TWO,t.BORDER.RADIUS.ONE,t.BORDER.RADIUS.HALF,t.BORDER.RADIUS.QUARTER,t.BORDER.RADIUS.FULL,t.PADDING.FULL.ZERO,t.PADDING.FULL.ONE,t.PADDING.FULL.HALF,t.PADDING.FULL.QUARTER,t.PADDING.FULL.TWO,t.PADDING.FULL.FOUR,t.PADDING.Y.ZERO,t.PADDING.Y.ONE,t.PADDING.Y.HALF,t.PADDING.Y.QUARTER,t.PADDING.Y.TWO,t.PADDING.Y.FOUR,t.PADDING.TOP.ZERO,t.PADDING.TOP.ONE,t.PADDING.TOP.HALF,t.PADDING.TOP.QUARTER,t.PADDING.TOP.TWO,t.PADDING.TOP.FOUR,t.PADDING.X.ZERO,t.PADDING.X.ONE,t.PADDING.X.HALF,t.PADDING.X.QUARTER,t.PADDING.X.TWO,t.PADDING.X.FOUR,t.PADDING.RIGHT.ZERO,t.PADDING.RIGHT.ONE,t.PADDING.RIGHT.HALF,t.PADDING.RIGHT.QUARTER,t.PADDING.RIGHT.TWO,t.PADDING.RIGHT.FOUR,t.PADDING.BOTTOM.ZERO,t.PADDING.BOTTOM.ONE,t.PADDING.BOTTOM.HALF,t.PADDING.BOTTOM.QUARTER,t.PADDING.BOTTOM.TWO,t.PADDING.BOTTOM.FOUR,t.PADDING.LEFT.ZERO,t.PADDING.LEFT.ONE,t.PADDING.LEFT.HALF,t.PADDING.LEFT.QUARTER,t.PADDING.LEFT.TWO,t.PADDING.LEFT.FOUR,t.WIDTH.MAX_FULL,t.WIDTH.ZERO,t.WIDTH.FULL,t.HEIGHT.ZERO,t.HEIGHT.FULL,t.ALIGN.Y.MIDDLE,t.BREAK_WORD,t.CURSOR.NOT_ALLOWED,t.CURSOR.POINTER,t.CURSOR.TEXT,t.FONT.SIZE.TWELVE,t.FONT.SIZE.FOURTEEN,t.FONT.SIZE.SIXTEEN,t.FONT.SIZE.TWENTY,t.FONT.SIZE.TWENTY_FOUR,t.FONT.SIZE.THIRTY_TWO,t.FONT.WEIGHT.FOUR_HUNDRED,t.FONT.WEIGHT.FIVE_HUNDRED,t.FONT.WEIGHT.SIX_HUNDRED,t.FONT.WEIGHT.SEVEN_HUNDRED,t.LIST_BULLETS.OFF,t.OBJECT.CENTER,t.OBJECT.CONTAIN,t.OBJECT.COVER,t.OBJECT.SCALE_DOWN,t.POINTER_EVENTS.ON,t.POINTER_EVENTS.OFF,t.SCROLLBAR.OFF,t.SHADOW.BOTTOM,t.SHADOW.TOP,t.SNAP.ON,t.SNAP_ALIGN.START,t.ALIGN.X.LEFT,t.ALIGN.X.CENTER,t.ALIGN.X.RIGHT,t.TEXT_TRANSFORM.LOWER,t.TEXT_TRANSFORM.NONE,t.TEXT_TRANSFORM.UPPER,t.UNDERLINE.HOVER,t.UNDERLINE.OFF,t.UNDERLINE.ON,t.VISIBILITY.ON,t.VISIBILITY.OFF,t.WHITESPACE_WRAP.OFF,t.OVERFLOW.XY.AUTO,t.OVERFLOW.XY.HIDDEN,t.OVERFLOW.X.AUTO,t.OVERFLOW.X.HIDDEN,t.OVERFLOW.X.SCROLL,t.OVERFLOW.Y.AUTO,t.OVERFLOW.Y.HIDDEN,t.Z_INDEX.ONE;const Ae=e.defineComponent({__name:"TideDivider",props:{orientation:{default:Ie.HORIZONTAL}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(t).BORDER.COLOR.LOW,n.orientation===e.unref(Ie).HORIZONTAL?[e.unref(t).MARGIN.Y.HALF,e.unref(t).BORDER.BOTTOM.ONE]:[e.unref(t).MARGIN.X.HALF,e.unref(t).BORDER.RIGHT.ONE]])},null,2))}}),Be=(o,n)=>{const r=o[n];return r?typeof r=="function"?r():Promise.resolve(r):new Promise((s,i)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(i.bind(null,new Error("Unknown variable dynamic import: "+n)))})},ze={AERO:"aero",ATV:"atv",BOATMART:"boatmart",CYCLE:"cycle",EQUIPMENT:"equipment",PWC:"pwc",RV:"rv",SNOW:"snow",TRUCK:"truck"},C={LARGE:"large",SMALL:"small"},K={LARGE:"large",SMALL:"small"},Ne=o=>{let n=o&&typeof o=="number"?new Intl.NumberFormat().format(o):String(o||""),r=n;return o&&typeof o=="string"&&(r=r.replace(/\D/g,""),Number(r)?n=new Intl.NumberFormat().format(Number(r)):n="0"),n},ft=o=>o&&typeof o=="string"?o.replace(/([a-z]{1})([A-Z]{1})/g,"$1 $2").replace(/[\s_-]/g," ").toLowerCase().split(" ").map(n=>n.slice(0,1).toUpperCase()+n.slice(1)).join(""):o,Et=o=>{let n=String(o&&typeof o=="number"?o:o||""),r=n;switch(r=r.replace(/\D/g,""),r.length){case 7:n=`${r.slice(0,3)}-${r.slice(3)}`;break;case 10:n=`${r.slice(0,3)}-${r.slice(3,6)}-${r.slice(6)}`;break;case 11:n=`${r.slice(0,1)}-${r.slice(1,4)}-${r.slice(4,7)}-${r.slice(7)}`;break;default:n=r;break}return n},mt=o=>`$${o?Ne(o):String(o||"0")}`,_=e.defineComponent({__name:"TideIcon",props:{icon:{},size:{default:C.SMALL}},setup(o){const n=o,r=e.ref();return e.watch(()=>n.icon,async()=>{const s=n.icon,i=ft(s),[c]=s.split("-"),a=ze[c==null?void 0:c.toUpperCase()],l=e.defineAsyncComponent(()=>a?Be(Object.assign({"../assets/svg/icons/realm/atv/IconAtvAtv.svg":()=>Promise.resolve().then(()=>require("./IconAtvAtv-c2e11398.cjs")),"../assets/svg/icons/realm/atv/IconAtvDuneBuggy.svg":()=>Promise.resolve().then(()=>require("./IconAtvDuneBuggy-ff1f7a23.cjs")),"../assets/svg/icons/realm/atv/IconAtvGoKart.svg":()=>Promise.resolve().then(()=>require("./IconAtvGoKart-d1ad6a03.cjs")),"../assets/svg/icons/realm/atv/IconAtvGolfCart.svg":()=>Promise.resolve().then(()=>require("./IconAtvGolfCart-9b3569bc.cjs")),"../assets/svg/icons/realm/atv/IconAtvSandRail.svg":()=>Promise.resolve().then(()=>require("./IconAtvSandRail-d71aa55b.cjs")),"../assets/svg/icons/realm/atv/IconAtvSideBySide.svg":()=>Promise.resolve().then(()=>require("./IconAtvSideBySide-f734e90f.cjs")),"../assets/svg/icons/realm/atv/IconAtvTrailer.svg":()=>Promise.resolve().then(()=>require("./IconAtvTrailer-ee1d6ec1.cjs")),"../assets/svg/icons/realm/boatmart/IconBoatmartPwc.svg":()=>Promise.resolve().then(()=>require("./IconBoatmartPwc-9de80564.cjs")),"../assets/svg/icons/realm/boatmart/IconBoatmartTrailer.svg":()=>Promise.resolve().then(()=>require("./IconBoatmartTrailer-ff1f376f.cjs")),"../assets/svg/icons/realm/rv/IconRvClassA.svg":()=>Promise.resolve().then(()=>require("./IconRvClassA-80da0dc5.cjs")),"../assets/svg/icons/realm/rv/IconRvClassB.svg":()=>Promise.resolve().then(()=>require("./IconRvClassB-2032c703.cjs")),"../assets/svg/icons/realm/rv/IconRvClassC.svg":()=>Promise.resolve().then(()=>require("./IconRvClassC-1d11671a.cjs")),"../assets/svg/icons/realm/rv/IconRvFifthWheel.svg":()=>Promise.resolve().then(()=>require("./IconRvFifthWheel-b234c67c.cjs")),"../assets/svg/icons/realm/rv/IconRvFishHouse.svg":()=>Promise.resolve().then(()=>require("./IconRvFishHouse-f6edfbbd.cjs")),"../assets/svg/icons/realm/rv/IconRvParkModel.svg":()=>Promise.resolve().then(()=>require("./IconRvParkModel-3707f77a.cjs")),"../assets/svg/icons/realm/rv/IconRvPopUpCamper.svg":()=>Promise.resolve().then(()=>require("./IconRvPopUpCamper-912c58c2.cjs")),"../assets/svg/icons/realm/rv/IconRvTravelTrailer.svg":()=>Promise.resolve().then(()=>require("./IconRvTravelTrailer-44a5f64d.cjs")),"../assets/svg/icons/realm/rv/IconRvTruckCamper.svg":()=>Promise.resolve().then(()=>require("./IconRvTruckCamper-ce2393f4.cjs"))}),`../assets/svg/icons/realm/${a}/Icon${i}.svg`):Be(Object.assign({"../assets/svg/icons/IconAccountBalance.svg":()=>Promise.resolve().then(()=>require("./IconAccountBalance-0a430d19.cjs")),"../assets/svg/icons/IconAcute.svg":()=>Promise.resolve().then(()=>require("./IconAcute-b1e43123.cjs")),"../assets/svg/icons/IconAdd.svg":()=>Promise.resolve().then(()=>require("./IconAdd-91de604b.cjs")),"../assets/svg/icons/IconAiDescription.svg":()=>Promise.resolve().then(()=>require("./IconAiDescription-674cca6d.cjs")),"../assets/svg/icons/IconAlignSpaceEven.svg":()=>Promise.resolve().then(()=>require("./IconAlignSpaceEven-7ee811f8.cjs")),"../assets/svg/icons/IconApplePay.svg":()=>Promise.resolve().then(()=>require("./IconApplePay-92395240.cjs")),"../assets/svg/icons/IconArrowBack.svg":()=>Promise.resolve().then(()=>require("./IconArrowBack-3d47d166.cjs")),"../assets/svg/icons/IconArrowCycle.svg":()=>Promise.resolve().then(()=>require("./IconArrowCycle-7b7c7325.cjs")),"../assets/svg/icons/IconArrowForward.svg":()=>Promise.resolve().then(()=>require("./IconArrowForward-613e128c.cjs")),"../assets/svg/icons/IconArrowRight.svg":()=>Promise.resolve().then(()=>require("./IconArrowRight-9f39cdbb.cjs")),"../assets/svg/icons/IconAssignment.svg":()=>Promise.resolve().then(()=>require("./IconAssignment-915702cc.cjs")),"../assets/svg/icons/IconAttachMoney.svg":()=>Promise.resolve().then(()=>require("./IconAttachMoney-6d3087ab.cjs")),"../assets/svg/icons/IconAutoRenew.svg":()=>Promise.resolve().then(()=>require("./IconAutoRenew-bcd665a4.cjs")),"../assets/svg/icons/IconAwardStar.svg":()=>Promise.resolve().then(()=>require("./IconAwardStar-447cf4fc.cjs")),"../assets/svg/icons/IconBed.svg":()=>Promise.resolve().then(()=>require("./IconBed-8bcac0c0.cjs")),"../assets/svg/icons/IconBolt.svg":()=>Promise.resolve().then(()=>require("./IconBolt-36fc8ef9.cjs")),"../assets/svg/icons/IconBookmark.svg":()=>Promise.resolve().then(()=>require("./IconBookmark-3f6454d9.cjs")),"../assets/svg/icons/IconBunkhouse.svg":()=>Promise.resolve().then(()=>require("./IconBunkhouse-348a1518.cjs")),"../assets/svg/icons/IconCalendarMonth.svg":()=>Promise.resolve().then(()=>require("./IconCalendarMonth-bb5bbb9b.cjs")),"../assets/svg/icons/IconCall.svg":()=>Promise.resolve().then(()=>require("./IconCall-08f3119f.cjs")),"../assets/svg/icons/IconCallQuality.svg":()=>Promise.resolve().then(()=>require("./IconCallQuality-56ee01fb.cjs")),"../assets/svg/icons/IconCarRental.svg":()=>Promise.resolve().then(()=>require("./IconCarRental-b0af42ff.cjs")),"../assets/svg/icons/IconCheck.svg":()=>Promise.resolve().then(()=>require("./IconCheck-910929df.cjs")),"../assets/svg/icons/IconChevronLeft.svg":()=>Promise.resolve().then(()=>require("./IconChevronLeft-6626777e.cjs")),"../assets/svg/icons/IconChevronRight.svg":()=>Promise.resolve().then(()=>require("./IconChevronRight-91bc7ad1.cjs")),"../assets/svg/icons/IconClear.svg":()=>Promise.resolve().then(()=>require("./IconClear-489c5a46.cjs")),"../assets/svg/icons/IconClose.svg":()=>Promise.resolve().then(()=>require("./IconClose-538a540f.cjs")),"../assets/svg/icons/IconContract.svg":()=>Promise.resolve().then(()=>require("./IconContract-0acea45b.cjs")),"../assets/svg/icons/IconCrash.svg":()=>Promise.resolve().then(()=>require("./IconCrash-8d91a8db.cjs")),"../assets/svg/icons/IconDashboardCustomize.svg":()=>Promise.resolve().then(()=>require("./IconDashboardCustomize-5321091b.cjs")),"../assets/svg/icons/IconDelete.svg":()=>Promise.resolve().then(()=>require("./IconDelete-5cc224a1.cjs")),"../assets/svg/icons/IconDiamond.svg":()=>Promise.resolve().then(()=>require("./IconDiamond-4e736f5f.cjs")),"../assets/svg/icons/IconDirectionsBoat.svg":()=>Promise.resolve().then(()=>require("./IconDirectionsBoat-11aaf49c.cjs")),"../assets/svg/icons/IconDomain.svg":()=>Promise.resolve().then(()=>require("./IconDomain-05540c31.cjs")),"../assets/svg/icons/IconDraft.svg":()=>Promise.resolve().then(()=>require("./IconDraft-26850369.cjs")),"../assets/svg/icons/IconEdit.svg":()=>Promise.resolve().then(()=>require("./IconEdit-b4d5f175.cjs")),"../assets/svg/icons/IconEngine.svg":()=>Promise.resolve().then(()=>require("./IconEngine-e51389f9.cjs")),"../assets/svg/icons/IconEngineering.svg":()=>Promise.resolve().then(()=>require("./IconEngineering-a74e5efe.cjs")),"../assets/svg/icons/IconError.svg":()=>Promise.resolve().then(()=>require("./IconError-4ad48be1.cjs")),"../assets/svg/icons/IconExpandContent.svg":()=>Promise.resolve().then(()=>require("./IconExpandContent-03a28bfb.cjs")),"../assets/svg/icons/IconExpandLess.svg":()=>Promise.resolve().then(()=>require("./IconExpandLess-59a80211.cjs")),"../assets/svg/icons/IconExpandMore.svg":()=>Promise.resolve().then(()=>require("./IconExpandMore-edf55cdd.cjs")),"../assets/svg/icons/IconFacebook.svg":()=>Promise.resolve().then(()=>require("./IconFacebook-9c43095a.cjs")),"../assets/svg/icons/IconFavorite.svg":()=>Promise.resolve().then(()=>require("./IconFavorite-43091cef.cjs")),"../assets/svg/icons/IconFavoriteFilled.svg":()=>Promise.resolve().then(()=>require("./IconFavoriteFilled-71277849.cjs")),"../assets/svg/icons/IconFlag.svg":()=>Promise.resolve().then(()=>require("./IconFlag-0243bbb9.cjs")),"../assets/svg/icons/IconFormatBold.svg":()=>Promise.resolve().then(()=>require("./IconFormatBold-4faa5f99.cjs")),"../assets/svg/icons/IconFormatItalic.svg":()=>Promise.resolve().then(()=>require("./IconFormatItalic-fee490fc.cjs")),"../assets/svg/icons/IconFormatListBulleted.svg":()=>Promise.resolve().then(()=>require("./IconFormatListBulleted-d0a77d0e.cjs")),"../assets/svg/icons/IconForum.svg":()=>Promise.resolve().then(()=>require("./IconForum-22217aa0.cjs")),"../assets/svg/icons/IconGas.svg":()=>Promise.resolve().then(()=>require("./IconGas-9d623313.cjs")),"../assets/svg/icons/IconGavel.svg":()=>Promise.resolve().then(()=>require("./IconGavel-aacae653.cjs")),"../assets/svg/icons/IconGears.svg":()=>Promise.resolve().then(()=>require("./IconGears-c3b1ba71.cjs")),"../assets/svg/icons/IconGlobeLocationPin.svg":()=>Promise.resolve().then(()=>require("./IconGlobeLocationPin-b869a4e7.cjs")),"../assets/svg/icons/IconGoogle.svg":()=>Promise.resolve().then(()=>require("./IconGoogle-77ec192e.cjs")),"../assets/svg/icons/IconGooglePay.svg":()=>Promise.resolve().then(()=>require("./IconGooglePay-049e93ec.cjs")),"../assets/svg/icons/IconGrid.svg":()=>Promise.resolve().then(()=>require("./IconGrid-1693599f.cjs")),"../assets/svg/icons/IconHandshake.svg":()=>Promise.resolve().then(()=>require("./IconHandshake-33b452a7.cjs")),"../assets/svg/icons/IconHandyman.svg":()=>Promise.resolve().then(()=>require("./IconHandyman-ffc0fafb.cjs")),"../assets/svg/icons/IconHeight.svg":()=>Promise.resolve().then(()=>require("./IconHeight-d8ee424f.cjs")),"../assets/svg/icons/IconHelp.svg":()=>Promise.resolve().then(()=>require("./IconHelp-43137a66.cjs")),"../assets/svg/icons/IconInfo.svg":()=>Promise.resolve().then(()=>require("./IconInfo-2d14575c.cjs")),"../assets/svg/icons/IconInformation.svg":()=>Promise.resolve().then(()=>require("./IconInformation-be043a15.cjs")),"../assets/svg/icons/IconInsertText.svg":()=>Promise.resolve().then(()=>require("./IconInsertText-14c80b9a.cjs")),"../assets/svg/icons/IconInstagram.svg":()=>Promise.resolve().then(()=>require("./IconInstagram-43bb02ea.cjs")),"../assets/svg/icons/IconIosShare.svg":()=>Promise.resolve().then(()=>require("./IconIosShare-526a016a.cjs")),"../assets/svg/icons/IconLayout.svg":()=>Promise.resolve().then(()=>require("./IconLayout-e663120e.cjs")),"../assets/svg/icons/IconLevellingJack.svg":()=>Promise.resolve().then(()=>require("./IconLevellingJack-40c63f7c.cjs")),"../assets/svg/icons/IconLinkedIn.svg":()=>Promise.resolve().then(()=>require("./IconLinkedIn-088a3792.cjs")),"../assets/svg/icons/IconLocalShipping.svg":()=>Promise.resolve().then(()=>require("./IconLocalShipping-9bca5a95.cjs")),"../assets/svg/icons/IconLock.svg":()=>Promise.resolve().then(()=>require("./IconLock-1c996287.cjs")),"../assets/svg/icons/IconMail.svg":()=>Promise.resolve().then(()=>require("./IconMail-f2b8fee4.cjs")),"../assets/svg/icons/IconMenu.svg":()=>Promise.resolve().then(()=>require("./IconMenu-c7c2b143.cjs")),"../assets/svg/icons/IconMoneyBag.svg":()=>Promise.resolve().then(()=>require("./IconMoneyBag-a3d297f5.cjs")),"../assets/svg/icons/IconMoreHoriz.svg":()=>Promise.resolve().then(()=>require("./IconMoreHoriz-2c82da62.cjs")),"../assets/svg/icons/IconNotifications.svg":()=>Promise.resolve().then(()=>require("./IconNotifications-01f7658b.cjs")),"../assets/svg/icons/IconOdometer.svg":()=>Promise.resolve().then(()=>require("./IconOdometer-a1bc108b.cjs")),"../assets/svg/icons/IconOpenInNew.svg":()=>Promise.resolve().then(()=>require("./IconOpenInNew-9032f1db.cjs")),"../assets/svg/icons/IconPalette.svg":()=>Promise.resolve().then(()=>require("./IconPalette-269c7286.cjs")),"../assets/svg/icons/IconPaypal.svg":()=>Promise.resolve().then(()=>require("./IconPaypal-427e8667.cjs")),"../assets/svg/icons/IconPerson.svg":()=>Promise.resolve().then(()=>require("./IconPerson-ee87961e.cjs")),"../assets/svg/icons/IconPersonSearch.svg":()=>Promise.resolve().then(()=>require("./IconPersonSearch-b0c1a4e5.cjs")),"../assets/svg/icons/IconPhotoCamera.svg":()=>Promise.resolve().then(()=>require("./IconPhotoCamera-56cb060d.cjs")),"../assets/svg/icons/IconPinterest.svg":()=>Promise.resolve().then(()=>require("./IconPinterest-87034fbf.cjs")),"../assets/svg/icons/IconPlayArrow.svg":()=>Promise.resolve().then(()=>require("./IconPlayArrow-80f601bf.cjs")),"../assets/svg/icons/IconPolicy.svg":()=>Promise.resolve().then(()=>require("./IconPolicy-8f5ca682.cjs")),"../assets/svg/icons/IconPower.svg":()=>Promise.resolve().then(()=>require("./IconPower-d41e067d.cjs")),"../assets/svg/icons/IconPowerOff.svg":()=>Promise.resolve().then(()=>require("./IconPowerOff-0e3118bf.cjs")),"../assets/svg/icons/IconPriorityHigh.svg":()=>Promise.resolve().then(()=>require("./IconPriorityHigh-aae28a02.cjs")),"../assets/svg/icons/IconRemove.svg":()=>Promise.resolve().then(()=>require("./IconRemove-73b05132.cjs")),"../assets/svg/icons/IconRequestQuote.svg":()=>Promise.resolve().then(()=>require("./IconRequestQuote-e24db541.cjs")),"../assets/svg/icons/IconResetWrench.svg":()=>Promise.resolve().then(()=>require("./IconResetWrench-5b5c4f74.cjs")),"../assets/svg/icons/IconRoad.svg":()=>Promise.resolve().then(()=>require("./IconRoad-3124bbd8.cjs")),"../assets/svg/icons/IconRoundedCorner.svg":()=>Promise.resolve().then(()=>require("./IconRoundedCorner-53cb2cfc.cjs")),"../assets/svg/icons/IconRuler.svg":()=>Promise.resolve().then(()=>require("./IconRuler-5feb5a83.cjs")),"../assets/svg/icons/IconSailing.svg":()=>Promise.resolve().then(()=>require("./IconSailing-fa136eea.cjs")),"../assets/svg/icons/IconSchool.svg":()=>Promise.resolve().then(()=>require("./IconSchool-0bca17f9.cjs")),"../assets/svg/icons/IconSearch.svg":()=>Promise.resolve().then(()=>require("./IconSearch-45b2c0e5.cjs")),"../assets/svg/icons/IconSeating.svg":()=>Promise.resolve().then(()=>require("./IconSeating-bc19b98f.cjs")),"../assets/svg/icons/IconSell.svg":()=>Promise.resolve().then(()=>require("./IconSell-bcede586.cjs")),"../assets/svg/icons/IconSensors.svg":()=>Promise.resolve().then(()=>require("./IconSensors-f35e7566.cjs")),"../assets/svg/icons/IconSettings.svg":()=>Promise.resolve().then(()=>require("./IconSettings-b8848783.cjs")),"../assets/svg/icons/IconShare.svg":()=>Promise.resolve().then(()=>require("./IconShare-ff50a973.cjs")),"../assets/svg/icons/IconShieldCheck.svg":()=>Promise.resolve().then(()=>require("./IconShieldCheck-b57fd628.cjs")),"../assets/svg/icons/IconShoppingCart.svg":()=>Promise.resolve().then(()=>require("./IconShoppingCart-eee95744.cjs")),"../assets/svg/icons/IconSleeps.svg":()=>Promise.resolve().then(()=>require("./IconSleeps-ffe0dd67.cjs")),"../assets/svg/icons/IconSms.svg":()=>Promise.resolve().then(()=>require("./IconSms-0575f458.cjs")),"../assets/svg/icons/IconSnowflake.svg":()=>Promise.resolve().then(()=>require("./IconSnowflake-2fccf99d.cjs")),"../assets/svg/icons/IconStar.svg":()=>Promise.resolve().then(()=>require("./IconStar-e2a88836.cjs")),"../assets/svg/icons/IconSummarize.svg":()=>Promise.resolve().then(()=>require("./IconSummarize-f73dec0e.cjs")),"../assets/svg/icons/IconSwapHoriz.svg":()=>Promise.resolve().then(()=>require("./IconSwapHoriz-4a33bd68.cjs")),"../assets/svg/icons/IconSwapVert.svg":()=>Promise.resolve().then(()=>require("./IconSwapVert-29258e96.cjs")),"../assets/svg/icons/IconThreeDRotation.svg":()=>Promise.resolve().then(()=>require("./IconThreeDRotation-7be89ff8.cjs")),"../assets/svg/icons/IconThumbUp.svg":()=>Promise.resolve().then(()=>require("./IconThumbUp-722d3c77.cjs")),"../assets/svg/icons/IconTrendingDown.svg":()=>Promise.resolve().then(()=>require("./IconTrendingDown-3da4b7d4.cjs")),"../assets/svg/icons/IconTrophy.svg":()=>Promise.resolve().then(()=>require("./IconTrophy-4d05eb75.cjs")),"../assets/svg/icons/IconTune.svg":()=>Promise.resolve().then(()=>require("./IconTune-1276696d.cjs")),"../assets/svg/icons/IconTwitter.svg":()=>Promise.resolve().then(()=>require("./IconTwitter-55b8ba63.cjs")),"../assets/svg/icons/IconUmbrella.svg":()=>Promise.resolve().then(()=>require("./IconUmbrella-81fdaa63.cjs")),"../assets/svg/icons/IconVerified.svg":()=>Promise.resolve().then(()=>require("./IconVerified-b71255f2.cjs")),"../assets/svg/icons/IconVideocam.svg":()=>Promise.resolve().then(()=>require("./IconVideocam-f5b07935.cjs")),"../assets/svg/icons/IconViewInAr.svg":()=>Promise.resolve().then(()=>require("./IconViewInAr-a583aff8.cjs")),"../assets/svg/icons/IconVisibility.svg":()=>Promise.resolve().then(()=>require("./IconVisibility-4984bcac.cjs")),"../assets/svg/icons/IconVolumeOff.svg":()=>Promise.resolve().then(()=>require("./IconVolumeOff-35d350ee.cjs")),"../assets/svg/icons/IconVolumeOn.svg":()=>Promise.resolve().then(()=>require("./IconVolumeOn-386ad18b.cjs")),"../assets/svg/icons/IconWarehouse.svg":()=>Promise.resolve().then(()=>require("./IconWarehouse-23085045.cjs")),"../assets/svg/icons/IconWarning.svg":()=>Promise.resolve().then(()=>require("./IconWarning-54f3a9ac.cjs")),"../assets/svg/icons/IconWater.svg":()=>Promise.resolve().then(()=>require("./IconWater-0b57b8cc.cjs")),"../assets/svg/icons/IconWeight.svg":()=>Promise.resolve().then(()=>require("./IconWeight-c6ddd367.cjs")),"../assets/svg/icons/IconWidth.svg":()=>Promise.resolve().then(()=>require("./IconWidth-a556befc.cjs")),"../assets/svg/icons/IconWorkspacePremium.svg":()=>Promise.resolve().then(()=>require("./IconWorkspacePremium-bc3aeb0c.cjs")),"../assets/svg/icons/IconWrench.svg":()=>Promise.resolve().then(()=>require("./IconWrench-bd1d2907.cjs")),"../assets/svg/icons/IconYoutube.svg":()=>Promise.resolve().then(()=>require("./IconYoutube-ed951c21.cjs"))}),`../assets/svg/icons/Icon${i}.svg`));r.value=e.markRaw(l)},{immediate:!0}),(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-icon",n.size])},[r.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value),{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.BLOCK]),"data-icon":s.icon,fill:"currentColor"},null,8,["class","data-icon"])):e.createCommentVNode("",!0)],2))}});const h={ACCOUNT_BALANCE:"account-balance",ACUTE:"acute",ADD:"add",AI_DESCRIPTION:"ai-description",ALIGN_SPACE_EVEN:"align-space-even",APPLE_PAY:"apple-pay",ARROW_BACK:"arrow-back",ARROW_CYCLE:"arrow-cycle",ARROW_FORWARD:"arrow-forward",ARROW_RIGHT:"arrow-right",ASSIGNMENT:"assignment",ATTACH_MONEY:"attach-money",AUTO_RENEW:"auto-renew",AWARD_STAR:"award-star",BED:"bed",BOLT:"bolt",BOOKMARK:"bookmark",BUNKHOUSE:"bunkhouse",CALENDAR_MONTH:"calendar-month",CALL:"call",CALL_QUALITY:"call-quality",CAR_RENTAL:"car-rental",CHECK:"check",CHEVRON_LEFT:"chevron-left",CHEVRON_RIGHT:"chevron-right",CLEAR:"clear",CLOSE:"close",CONTRACT:"contract",CRASH:"crash",DASHBOARD_CUSTOMIZE:"dashboard-customize",DELETE:"delete",DIAMOND:"diamond",DIRECTIONS_BOAT:"directions-boat",DOMAIN:"domain",DRAFT:"draft",EDIT:"edit",ENGINE:"engine",ENGINEERING:"engineering",ERROR:"error",EXPAND_CONTENT:"expand-content",EXPAND_LESS:"expand-less",EXPAND_MORE:"expand-more",FACEBOOK:"facebook",FAVORITE:"favorite",FAVORITE_FILLED:"favorite-filled",FLAG:"flag",FORMAT_BOLD:"format-bold",FORMAT_ITALIC:"format-italic",FORMAT_LIST_BULLETED:"format-list-bulleted",FORUM:"forum",GAS:"gas",GAVEL:"gavel",GEARS:"gears",GLOBE_LOCATION_PIN:"globe-location-pin",GOOGLE:"google",GOOGLE_PAY:"google-pay",GRID:"grid",HANDSHAKE:"handshake",HANDYMAN:"handyman",HEIGHT:"height",HELP:"help",INFO:"info",INFORMATION:"information",INSERT_TEXT:"insert-text",INSTAGRAM:"instagram",IOS_SHARE:"ios-share",LAYOUT:"layout",LEVELLING_JACK:"levelling-jack",LINKED_IN:"linked in",LOCAL_SHIPPING:"local-shipping",LOCK:"lock",MAIL:"mail",MENU:"menu",MONEY_BAG:"money-bag",MORE_HORIZ:"more-horiz",NOTIFICATIONS:"notifications",ODOMETER:"odometer",OPEN_IN_NEW:"open-in-new",PALETTE:"palette",PAYPAL:"paypal",PERSON:"person",PERSON_SEARCH:"person-search",PHOTO_CAMERA:"photo-camera",PINTEREST:"pinterest",PLAY_ARROW:"play-arrow",POLICY:"policy",POWER:"power",POWER_OFF:"power-off",PRIORITY_HIGH:"priority-high",REMOVE:"remove",REQUEST_QUOTE:"request-quote",RESET_WRENCH:"reset-wrench",ROAD:"road",ROUNDED_CORNER:"rounded-corner",RULER:"ruler",SAILING:"sailing",SCHOOL:"school",SEARCH:"search",SEATING:"seating",SELL:"sell",SENSORS:"sensors",SETTINGS:"settings",SHARE:"share",SHIELD_CHECK:"shield-check",SHOPPING_CART:"shopping-cart",SLEEPS:"sleeps",SMS:"sms",SNOWFLAKE:"snowflake",STAR:"star",SUMMARIZE:"summarize",SWAP_HORIZ:"swap-horiz",SWAP_VERT:"swap-vert",THREE_D_ROTATION:"three-d-rotation",THUMB_UP:"thumb-up",TRENDING_DOWN:"trending-down",TROPHY:"trophy",TUNE:"tune",TWITTER:"twitter",UMBRELLA:"umbrella",VERIFIED:"verified",VIDEOCAM:"videocam",VIEW_IN_AR:"view-in-ar",VISIBILITY:"visibility",VOLUME_OFF:"volume-off",VOLUME_ON:"volume-on",WAREHOUSE:"warehouse",WARNING:"warning",WATER:"water",WEIGHT:"weight",WIDTH:"width",WORKSPACE_PREMIUM:"workspace-premium",WRENCH:"wrench",YOUTUBE:"youtube"},Ot={ATV:{ATV:"atv-atv",DUNE_BUGGY:"atv-dune-buggy",GOLF_CART:"atv-golf-cart",GO_KART:"atv-go-kart",SAND_RAIL:"atv-sand-rail",SIDE_BY_SIDE:"atv-side-by-side",TRAILER:"atv-trailer"},BOATMART:{PWC:"boatmart-pwc",TRAILER:"boatmart-trailer"},RV:{CLASS_A:"rv-class-a",CLASS_B:"rv-class-b",CLASS_C:"rv-class-c",FIFTH_WHEEL:"rv-fifth-wheel",FISH_HOUSE:"rv-fish-house",PARK_MODEL:"rv-park-model",POP_UP_CAMPER:"rv-pop-up-camper",TRAVEL_TRAILER:"rv-travel-trailer",TRUCK_CAMPER:"rv-truck-camper"}},Rt={class:"tide-accordion-item"},vt=e.defineComponent({__name:"TideAccordionItem",props:{hasBottomDivider:{type:Boolean,default:!1},hasTopDivider:{type:Boolean,default:!1},isExpanded:{type:Boolean,default:!1},isOptional:{type:Boolean,default:!1},label:{default:""}},emits:["toggle"],setup(o,{emit:n}){const r=o,s=()=>{n("toggle")};return(i,c)=>(e.openBlock(),e.createElementBlock("div",Rt,[r.hasTopDivider?(e.openBlock(),e.createBlock(Ae,{key:0})):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["tide-accordion-head",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).PADDING.Y.HALF,e.unref(t).CURSOR.POINTER]),onClick:s},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD])},[e.createElementVNode("span",null,e.toDisplayString(r.label),1),r.isOptional?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," (optional) ",2)):e.createCommentVNode("",!0)],2),e.createVNode(_,{icon:i.isExpanded?e.unref(h).EXPAND_LESS:e.unref(h).EXPAND_MORE,size:e.unref(C).LARGE},null,8,["icon","size"])],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-accordion-body",r.isExpanded?"expanded":"collapsed",e.unref(t).DISPLAY.GRID])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).OVERFLOW.Y.HIDDEN,e.unref(t).MARGIN.Y.ONE,e.unref(t).FONT.ROLE.BODY_1,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},[e.renderSlot(i.$slots,"default",{},void 0,!0)],2)],2),r.hasBottomDivider?(e.openBlock(),e.createBlock(Ae,{key:1})):e.createCommentVNode("",!0)]))}});const F=(o,n)=>{const r=o.__vccOpts||o;for(const[s,i]of n)r[s]=i;return r},Tt=F(vt,[["__scopeId","data-v-d5fdff3b"]]),D={BUTTON:"button",LINK:"a"},W={BUTTON:"button",DIV:"div",LINK:"a"},B={PRIMARY:"primary",SECONDARY:"secondary",TERTIARY:"tertiary",QUATERNARY:"quaternary",FLOATING:"floating"},b={BLANK:"_blank",SELF:void 0},H=e.defineComponent({__name:"TideButtonIcon",props:{disabled:{type:Boolean,default:!1},element:{default:D.BUTTON},href:{default:void 0},icon:{default:void 0},isNewTab:{type:Boolean,default:!1},priority:{default:B.PRIMARY}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(D).LINK?"a":"button"),{"aria-label":n.icon,class:e.normalizeClass([n.element===e.unref(D).LINK?"tide-link-as-button-icon":"tide-button-icon",n.priority&&`tide-button-${n.priority}`,[e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.HALF],n.element===e.unref(D).LINK?[e.unref(t).UNDERLINE.OFF]:""]),disabled:n.element===e.unref(D).BUTTON&&n.disabled,href:n.element===e.unref(D).LINK&&n.href?n.href:void 0,target:n.element===e.unref(D).LINK&&n.isNewTab?e.unref(b).BLANK:e.unref(b).SELF},{default:e.withCtx(()=>[n.icon?(e.openBlock(),e.createBlock(_,{key:0,icon:n.icon,size:e.unref(C).LARGE},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["aria-label","class","disabled","href","target"]))}}),P={ERROR:"error",INFO:"info",SUCCESS:"success",WARNING:"warning"},It=e.defineComponent({__name:"TideAlert",props:{heading:{default:void 0},isToast:{type:Boolean,default:!1},type:{default:P.INFO}},setup(o){const n=o,r=e.computed(()=>{let s=h.INFO;switch(n.type){case P.ERROR:s=h.ERROR;break;default:case P.INFO:s=h.INFO;break;case P.SUCCESS:s=h.CHECK;break;case P.WARNING:s=h.WARNING;break}return s});return(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([n.type,"tide-alert",e.unref(t).DISPLAY.GRID,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.FULL.ONE,n.type===e.unref(P).ERROR&&e.unref(t).BG.GLOBAL.SURFACE.ERROR,n.type===e.unref(P).INFO&&e.unref(t).BG.GLOBAL.SURFACE.INFO,n.type===e.unref(P).SUCCESS&&e.unref(t).BG.GLOBAL.SURFACE.SUCCESS,n.type===e.unref(P).WARNING&&e.unref(t).BG.GLOBAL.SURFACE.WARNING,n.isToast?e.unref(t).SHADOW.BOTTOM:""])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-icon",e.unref(t).PADDING.FULL.HALF,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).FONT.COLOR.SURFACE.INVERSE,n.type===e.unref(P).ERROR&&e.unref(t).BG.GLOBAL.PRIMARY.ERROR,n.type===e.unref(P).INFO&&e.unref(t).BG.GLOBAL.PRIMARY.INFO,n.type===e.unref(P).SUCCESS&&e.unref(t).BG.GLOBAL.PRIMARY.SUCCESS,n.type===e.unref(P).WARNING&&e.unref(t).BG.GLOBAL.PRIMARY.WARNING])},[e.createVNode(_,{icon:r.value},null,8,["icon"])],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-heading",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER])},[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},e.toDisplayString(n.heading),3)],2),e.createVNode(H,{class:e.normalizeClass(["tide-alert-close",e.unref(t).AXIS2.CENTER,e.unref(t).FONT.COLOR.SURFACE.DEFAULT]),icon:e.unref(h).CLOSE,priority:e.unref(B).QUATERNARY,"aria-label":"Close alert"},null,8,["class","icon","priority"]),e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-body",e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},[e.renderSlot(s.$slots,"default",{},void 0,!0)],2)],2))}});const At=F(It,[["__scopeId","data-v-e15788b8"]]),Lt=["media","srcset"],pt=["alt","fetchpriority","loading","src"],ve="https://cdn-static-rec.tilabs.io/image-coming-soon-512.png",qe=e.defineComponent({__name:"TideImage",props:{alt:{default:""},height:{default:void 0},isLazy:{type:Boolean,default:!0},sources:{default:()=>[]},src:{default:void 0},width:{default:void 0}},setup(o){const n=o,r=e.ref(),s=e.ref(),i=()=>{var l,u;const c=(l=s.value)==null?void 0:l.currentSrc,a=(u=r.value)==null?void 0:u.querySelector(`source[srcset="${c}"]`);c&&a?a.srcset=ve:s.value&&(s.value.src=ve)};return(c,a)=>(e.openBlock(),e.createElementBlock("picture",{class:e.normalizeClass(["tide-image",e.unref(t).DISPLAY.BLOCK]),ref_key:"picture",ref:r,style:e.normalizeStyle(c.width||c.height?{width:c.width||void 0,height:c.height||void 0}:void 0)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.sources,l=>(e.openBlock(),e.createElementBlock("source",{key:l.srcset,media:`(min-width:${l.media}px)`,srcset:l.srcset},null,8,Lt))),128)),e.createElementVNode("img",{alt:c.alt,class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL,e.unref(t).OBJECT.CENTER,e.unref(t).OBJECT.COVER]),fetchpriority:c.isLazy?void 0:"high",loading:n.isLazy?"lazy":"eager",ref_key:"img",ref:s,src:c.src??ve,onError:i},null,42,pt)],6))}}),Nt=e.defineComponent({__name:"TideBackgroundImage",props:{alt:{default:""},isLazy:{type:Boolean,default:!0},sources:{default:()=>[]},src:{default:void 0}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(t).POSITION.RELATIVE,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).ISOLATION.ISOLATE])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER])},[e.createVNode(qe,{class:e.normalizeClass(["tide-background-image",e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL]),"is-lazy":n.isLazy,sources:n.sources,src:n.src,alt:"props.alt"},null,8,["class","is-lazy","sources","src"])],2),e.renderSlot(r.$slots,"default",{},void 0,!0)],2))}});const gt=F(Nt,[["__scopeId","data-v-44934445"]]),ht=e.defineComponent({__name:"TideBadge",props:{iconLeading:{default:void 0},isFloating:{type:Boolean,default:!1},label:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge",n.isFloating?[e.unref(t).BG.SURFACE.FLOATING,e.unref(t).FONT.ROLE.LABEL_3,e.unref(t).SHADOW.BOTTOM]:[e.unref(t).BG.SURFACE.VARIANT,e.unref(t).FONT.ROLE.LABEL_2],e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).BORDER.RADIUS.QUARTER,e.unref(t).PADDING.Y.QUARTER,e.unref(t).PADDING.X.HALF])},[n.iconLeading?(e.openBlock(),e.createBlock(_,{key:0,icon:n.iconLeading},null,8,["icon"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(n.label),1)],2))}}),$e={YEARS_10:"10",YEARS_15:"15",YEARS_5:"5"},_t={class:e.normalizeClass([])},St=e.defineComponent({__name:"TideBadgeTrustedPartner",props:{years:{default:$e.YEARS_5}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge-trusted-partner",e.unref(t).FONT.COLOR.SURFACE.BRAND,e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).PADDING.Y.QUARTER,e.unref(t).PADDING.X.HALF,e.unref(t).FONT.ROLE.LABEL_2])},[e.createVNode(_,{icon:e.unref(h).AWARD_STAR},null,8,["icon"]),e.createElementVNode("div",_t,[e.createElementVNode("span",null,e.toDisplayString(n.years)+" year trusted partner",1)])],2))}}),Dt=["data-track","href"],Ft=["data-track"],Ct={key:0},Pt=e.defineComponent({__name:"TideBreadCrumbs",props:{breadCrumbs:{default:void 0}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("ul",{class:e.normalizeClass(["tide-bread-crumbs",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.breadCrumbs,(i,c)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:i.label},[e.createElementVNode("li",{class:e.normalizeClass([e.unref(t).FONT.ROLE.BODY_2])},[i.url?(e.openBlock(),e.createElementBlock("a",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2,e.unref(t).FONT.COLOR.SURFACE.DEFAULT]),"data-track":i.dataTrack||void 0,href:i.url},e.toDisplayString(i.label),11,Dt)):(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT]),"data-track":i.dataTrack||void 0},e.toDisplayString(i.label),11,Ft))],2),n.breadCrumbs&&c<n.breadCrumbs.length-1?(e.openBlock(),e.createElementBlock("li",Ct,[e.createVNode(_,{icon:e.unref(h).ARROW_RIGHT,size:e.unref(C).SMALL},null,8,["icon","size"])])):e.createCommentVNode("",!0)],64))),128))],2))}}),Bt=e.defineComponent({__name:"TideButton",props:{disabled:{type:Boolean,default:!1},element:{default:D.BUTTON},href:{default:void 0},iconLeading:{default:void 0},iconTrailing:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{default:void 0},priority:{default:B.PRIMARY},size:{default:K.LARGE}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(D).LINK?e.unref(D).LINK:e.unref(D).BUTTON),{class:e.normalizeClass(["tide-button",n.priority&&`tide-button-${n.priority}`,n.element===e.unref(D).LINK?[e.unref(t).DISPLAY.INLINE_FLEX]:[e.unref(t).DISPLAY.FLEX],n.element===e.unref(D).LINK?e.unref(t).UNDERLINE.OFF:"",r.size===e.unref(K).SMALL&&[e.unref(t).FONT.ROLE.BUTTON_2,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF],r.size===e.unref(K).LARGE&&[e.unref(t).FONT.ROLE.BUTTON_1,e.unref(t).PADDING.X.TWO,e.unref(t).PADDING.Y.ONE],e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD]),disabled:n.element===e.unref(D).BUTTON&&n.disabled,href:n.element===e.unref(D).LINK&&n.href?n.href:void 0,target:n.element===e.unref(D).LINK&&n.isNewTab?e.unref(b).BLANK:e.unref(b).SELF},{default:e.withCtx(()=>[n.iconLeading?(e.openBlock(),e.createBlock(_,{key:0,icon:n.iconLeading,size:r.size===e.unref(K).LARGE?e.unref(C).LARGE:e.unref(C).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(n.label)+" ",1),n.iconTrailing?(e.openBlock(),e.createBlock(_,{key:1,icon:n.iconTrailing,size:r.size===e.unref(K).LARGE?e.unref(C).LARGE:e.unref(C).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["class","disabled","href","target"]))}}),yt=e.defineComponent({__name:"TideButtonPagination",props:{disabled:{type:Boolean,default:!1},element:{default:W.BUTTON},href:{default:void 0},label:{default:void 0}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(W).LINK?"a":n.element===e.unref(W).BUTTON?"button":"div"),{class:e.normalizeClass([n.element===e.unref(W).LINK?"tide-link-as-button-icon":"tide-button-icon",[e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.HALF],n.element===e.unref(W).LINK?[e.unref(t).UNDERLINE.OFF]:"",n.element===e.unref(W).DIV?[e.unref(t).CURSOR.POINTER]:"",[e.unref(t).FONT.ROLE.HEADLINE_3]]),disabled:n.element===e.unref(W).BUTTON&&n.disabled,href:n.element===e.unref(W).LINK&&n.href?n.href:void 0},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(["label",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER])},e.toDisplayString(n.label),3)]),_:1},8,["class","disabled","href"]))}});const Ke=F(yt,[["__scopeId","data-v-f6d8e4e9"]]),Ut=["data-track","onClick"],bt=e.defineComponent({__name:"TideButtonSegmented",props:{activeTab:{default:0},tabs:{}},emits:["change"],setup(o,{emit:n}){const r=o,s=i=>{n("change",i)};return(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-button-segmented",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.QUARTER,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.FULL.QUARTER,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).WIDTH.FULL])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.tabs,(a,l)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-button-segmented-tab",l===i.activeTab?[e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).FONT.COLOR.SURFACE.DEFAULT,e.unref(t).SHADOW.BOTTOM]:["inactive",e.unref(t).FONT.COLOR.SURFACE.VARIANT],e.unref(t).FLEX.GROW.ON,e.unref(t).BORDER.RADIUS.QUARTER,e.unref(t).PADDING.Y.QUARTER,e.unref(t).WIDTH.FULL,e.unref(t).FONT.ROLE.BUTTON_1,e.unref(t).WHITESPACE_WRAP.OFF]),"data-track":a.dataTrack||void 0,key:a.label,onClick:u=>s(l)},[e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD])},e.toDisplayString(a.label),3),a.count&&a.count>0?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD])}," ("+e.toDisplayString(a.count)+") ",3)):e.createCommentVNode("",!0)],10,Ut))),128))],2))}});const kt=F(bt,[["__scopeId","data-v-9ab93f31"]]),se={ACTIONABLE:"action",INFORMATIONAL:"informational",SELECTABLE:"select"},Gt=e.defineComponent({__name:"TideCard",props:{description:{default:void 0},heading:{},icon:{default:void 0},selected:{type:Boolean,default:void 0},type:{default:se.INFORMATIONAL},href:{default:void 0}},setup(o){return(n,r)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.href?"a":n.type===e.unref(se).INFORMATIONAL?"div":"button"),{class:e.normalizeClass(["tide-card",e.unref(t).BORDER.COLOR.LOW,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.HALF,e.unref(t).PADDING.FULL.ONE,e.unref(t).WIDTH.FULL,e.unref(t).ALIGN.X.LEFT,e.unref(t).FLEX.DIRECTION.COLUMN,n.type!==e.unref(se).INFORMATIONAL&&"hoverable",n.type===e.unref(se).SELECTABLE&&n.selected&&"selected"]),href:n.href},{default:e.withCtx(()=>[n.icon?(e.openBlock(),e.createBlock(_,{key:0,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF]),icon:n.icon,size:e.unref(C).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).AXIS2.START,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.HALF])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},e.toDisplayString(n.heading),3),n.description?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(n.description),3)):e.createCommentVNode("",!0)],2)]),_:1},8,["class","href"]))}});const wt=F(Gt,[["__scopeId","data-v-98f24c4f"]]),Ht=e.defineComponent({__name:"TideCarousel",props:{isFloating:{type:Boolean,default:!1},isHideawayButtons:{type:Boolean,default:!0},isTouchscreen:{type:Boolean,default:void 0},subtitle:{default:void 0},title:{default:void 0}},emits:["change"],setup(o,{emit:n}){const r=o,s=e.ref(),i=e.ref(),c=e.ref(),a=e.ref(),l=e.ref(0),u=e.ref(),d=e.ref(),f=e.ref(),E=e.ref(),R=e.ref(),m=()=>{const A=Array.from(s.value.children).map(p=>p.offsetLeft);if(A.length===0)return;const g=A.reduce((p,S)=>Math.abs(S-i.value.scrollLeft)<Math.abs(p-i.value.scrollLeft)?S:p);l.value=A.indexOf(g)},I=()=>{c.value=i.value.scrollLeft+i.value.clientWidth,a.value=s.value.scrollWidth,u.value=i.value.clientWidth,d.value=a.value>u.value,f.value=c.value===a.value,E.value=i.value.scrollWidth-i.value.clientWidth,R.value=d.value&&!r.isTouchscreen,m()},L=()=>{I()},O=A=>{i.value.scrollTo({behavior:"smooth",left:s.value.children[A].offsetLeft})},T=()=>{c.value>a.value?i.value.scrollTo({behavior:"smooth",left:a}):f.value||O(l.value+1)},v=()=>{l.value===0||O(l.value-1)};return e.onMounted(()=>{I(),window.addEventListener("resize",I)}),e.onUnmounted(()=>{window.removeEventListener("resize",I)}),e.onUpdated(()=>{I()}),e.watch(l,()=>{n("change",l.value)}),(A,g)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["tide-carousel",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.TWO,e.unref(t).WIDTH.MAX_FULL]),ref:"carouselRef"},[!r.isFloating&&(R.value||r.title)?(e.openBlock(),e.createElementBlock("section",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,r.title?e.unref(t).AXIS1.BETWEEN:e.unref(t).AXIS1.END,e.unref(t).AXIS2.CENTER,e.unref(t).WIDTH.FULL])},[r.title||r.subtitle?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.ONE])},[r.title?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.DISPLAY_1])},e.toDisplayString(r.title),3)):e.createCommentVNode("",!0),r.subtitle?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(r.subtitle),3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),R.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.ONE])},[e.createVNode(H,{disabled:l.value===0,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(B).TERTIARY,onClick:v},null,8,["disabled","icon","priority"]),e.createVNode(H,{disabled:f.value,icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(B).TERTIARY,onClick:T},null,8,["disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),e.renderSlot(A.$slots,"misc",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.RELATIVE])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).SCROLLBAR.OFF,e.unref(t).SNAP.ON,e.unref(t).OVERFLOW.X.SCROLL,e.unref(t).WIDTH.FULL]),ref_key:"frameRef",ref:i,onScroll:L},[e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.ONE,e.unref(t).LIST_BULLETS.OFF]),ref_key:"contentRef",ref:s},[e.renderSlot(A.$slots,"default",{},void 0,!0)],2)],34),A.isFloating&&R.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-carousel-button-overlay",e.unref(t).POSITION.ABSOLUTE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).AXIS2.CENTER,e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL,e.unref(t).POINTER_EVENTS.OFF,r.isHideawayButtons?"hideaway":""])},[e.createVNode(H,{class:e.normalizeClass([e.unref(t).MARGIN.LEFT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:l.value===0,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(B).QUATERNARY,onClick:v},null,8,["class","disabled","icon","priority"]),e.createVNode(H,{class:e.normalizeClass([e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:f.value,icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(B).QUATERNARY,onClick:T},null,8,["class","disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)],2))}});const Mt=F(Ht,[["__scopeId","data-v-fa6ae48f"]]),Vt=["href","target"],xt=e.defineComponent({__name:"TideChipAction",props:{href:{},isNewTab:{type:Boolean,default:!1},label:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("a",{class:e.normalizeClass(["tide-chip-action",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).FONT.ROLE.LINK_2,e.unref(t).FONT.COLOR.SURFACE.DEFAULT,e.unref(t).UNDERLINE.OFF]),href:n.href,target:n.isNewTab?e.unref(b).BLANK:e.unref(b).SELF},[e.createVNode(_,{icon:e.unref(h).SEARCH},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(n.label),1)],10,Vt))}});const Wt=F(xt,[["__scopeId","data-v-7e30d2ca"]]),Xt=e.defineComponent({__name:"TideChipFilter",props:{isActive:{type:Boolean},label:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-chip-filter",n.isActive?[e.unref(t).BG.SECONDARY,e.unref(t).FONT.COLOR.SECONDARY]:[e.unref(t).BG.SURFACE.VARIANT,e.unref(t).FONT.COLOR.SURFACE.DEFAULT],e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).FONT.ROLE.LABEL_2,n.isActive?"active":""])},[e.renderSlot(r.$slots,"default",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF])},[e.createElementVNode("span",{class:e.normalizeClass([n.isActive?"":"icon-spacing",e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).WHITESPACE_WRAP.OFF])},e.toDisplayString(n.label),3)],2)],2))}});const Yt=F(Xt,[["__scopeId","data-v-6ddce1c2"]]),zt=e.defineComponent({__name:"TideChipInput",props:{label:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-chip-input",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).FONT.COLOR.SURFACE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).FONT.ROLE.LABEL_2])},[e.createElementVNode("span",null,e.toDisplayString(n.label),1),e.createVNode(_,{icon:e.unref(h).CLOSE},null,8,["icon"])],2))}});const qt=F(zt,[["__scopeId","data-v-42611a29"]]),$t={class:"tide-columns"},Kt={class:"tide-columns-column"},Qt={class:"tide-columns-column"},Zt={class:"tide-columns-column"},jt={class:"tide-columns-column"},Jt=e.defineComponent({__name:"TideColumns",props:{heading:{default:""}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("section",$t,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(n.heading),3),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.WRAP,e.unref(t).GAP.TWO,e.unref(t).LIST_BULLETS.OFF])},[e.createElementVNode("li",Kt,[e.renderSlot(r.$slots,"section1",{},void 0,!0)]),e.createElementVNode("li",Qt,[e.renderSlot(r.$slots,"section2",{},void 0,!0)]),e.createElementVNode("li",Zt,[e.renderSlot(r.$slots,"section3",{},void 0,!0)]),e.createElementVNode("li",jt,[e.renderSlot(r.$slots,"section4",{},void 0,!0)])],2)]))}});const en=F(Jt,[["__scopeId","data-v-c92a6639"]]),tn={key:0,class:e.normalizeClass(["tide-indicator-label"])},nn=e.defineComponent({__name:"TideIndicator",props:{label:{default:void 0}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-indicator",n.label?"":"dot",e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.X.CENTER,e.unref(t).BG.GLOBAL.PRIMARY.ERROR,e.unref(t).BORDER.RADIUS.FULL,n.label&&n.label.toString().length>1?[e.unref(t).PADDING.X.HALF]:[],n.label?[e.unref(t).POSITION.RELATIVE,e.unref(t).FONT.ROLE.LABEL_3,e.unref(t).FONT.COLOR.SURFACE.INVERSE]:[e.unref(t).BORDER.FULL.ONE]])},[n.label?(e.openBlock(),e.createElementBlock("div",tn,e.toDisplayString(n.label),1)):e.createCommentVNode("",!0)],2))}});const on=F(nn,[["__scopeId","data-v-d402ac82"]]),rn=["checked","disabled","name","id"],sn=["for"],an=e.defineComponent({__name:"TideInputCheckbox",props:{checked:{type:Boolean,default:!1},dataTrack:{default:""},disabled:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{default:void 0},number:{default:void 0}},setup(o){const n=o,r=e.computed(()=>n.checked||n.indeterminate);return(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-checkbox",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.BODY_1,s.disabled?["disabled",e.unref(t).POINTER_EVENTS.OFF]:e.unref(t).CURSOR.POINTER])},[e.createElementVNode("input",{checked:r.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),disabled:n.disabled,name:n.name,ref:"input",onClick:i[0]||(i[0]=e.withModifiers(()=>{},["prevent"])),id:n.inputId,type:"checkbox"},null,10,rn),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-checkbox-custom",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).BORDER.FULL.ONE,r.value?[e.unref(t).BORDER.COLOR.HIGH,e.unref(t).BG.SECONDARY]:[e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).BG.SURFACE.DEFAULT],e.unref(t).BORDER.RADIUS.QUARTER,r.value&&"checked",s.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER])},[r.value?(e.openBlock(),e.createBlock(_,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SECONDARY]),icon:n.indeterminate?e.unref(h).REMOVE:e.unref(h).CHECK,size:e.unref(C).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0)],2),s.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.BODY_1,s.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER]),for:n.inputId,onClick:i[1]||(i[1]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("span",null,e.toDisplayString(s.label),1),n.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref(Ne)(n.number))+") ",3)):e.createCommentVNode("",!0)],10,sn)):e.createCommentVNode("",!0)],2))}});const ln=F(an,[["__scopeId","data-v-4e880909"]]),cn=["checked","id"],un=["for"],dn=e.defineComponent({__name:"TideInputRadio",props:{checked:{type:Boolean,default:!1},dataTrack:{default:""},disabled:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{}},setup(o){const n=o,r=e.ref(n.checked);return e.watch(()=>n.checked,(s,i)=>{(s!==i||s!==r.value)&&(r.value=s)}),(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-radio",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POINTER_EVENTS.OFF,n.disabled&&"disabled"])},[e.createElementVNode("input",{checked:r.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),id:n.inputId,name:"",type:"radio",value:""},null,10,cn),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-custom",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,r.value?e.unref(t).BORDER.COLOR.HIGH:e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).CURSOR.POINTER,e.unref(t).POINTER_EVENTS.ON,r.value&&"checked"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-check",e.unref(t).BORDER.RADIUS.FULL,n.checked&&e.unref(t).BG.SECONDARY])},null,2)],2),e.createElementVNode("label",{class:e.normalizeClass([e.unref(t).FONT.ROLE.BODY_1,e.unref(t).CURSOR.POINTER,e.unref(t).POINTER_EVENTS.ON]),for:n.inputId},e.toDisplayString(n.label),11,un)],2))}});const fn=F(dn,[["__scopeId","data-v-4fd02dd8"]]),ge="Please enter a valid value.",En={message:"",valid:!0},oe=o=>n=>{let r=En;return n.trim().match(o)||(r={message:ge,valid:!1}),r},he=(o,n)=>typeof o=="string"&&o.length>0?o:typeof n=="string"&&n.length>0?n:ge,_e=(o,n)=>o!==!1||n!==!1,mn=({maxlength:o,minlength:n,required:r,value:s})=>{const i=s.length===0&&!r,c=o&&s.length>o;return!(!i&&n&&s.length<n)&&!c},Qe=({error:o,errorFromProps:n,maxlength:r,minlength:s,required:i=!1,validators:c,value:a})=>{if(o.value=n||!1,!o.value&&c){const l=Rn((a==null?void 0:a.value)||"",c);l.valid||(o.value=l.message)}if(!o.value&&(r||s)){const l=On({maxlength:r,minlength:s,required:i,value:(a==null?void 0:a.value)||""});l.valid||(o.value=l.message)}},On=({maxlength:o,minlength:n,required:r=!1,value:s})=>{const i={message:"",valid:!0};return i.valid=mn({maxlength:o,minlength:n,required:r,value:s}),i.valid||(i.message=ge,o&&n?i.message=`Please enter a value between ${n} and ${o} characters in length.`:o?i.message=`Please enter a value no more than ${o} characters in length.`:n&&(i.message=`Please enter a value no less than ${n} characters in length.`)),i};function Rn(o,n){for(const r of n){const s=r(o);if(!s.valid)return s}return{message:"",valid:!0}}const vn=["for"],Tn=["disabled","name","required","id"],In=["label"],An=["value"],Ln=["selected","value"],pn=["selected","value"],Nn=e.defineComponent({__name:"TideInputSelect",props:{inputId:{default:void 0},supportingText:{default:void 0},optgroups:{},options:{},disabled:{type:Boolean,default:!1},error:{type:[String,Boolean],default:!1},label:{default:void 0},name:{},required:{type:Boolean,default:!1},value:{default:void 0}},setup(o,{expose:n}){const r=o,s=e.ref(r.error),i=e.ref(!1),c=e.ref(null),a=e.ref(r.required),l=e.ref(r.value),u=e.computed(()=>he(r.error,s.value)),d=e.computed(()=>r.required?`${r.label} *`:r.label),f=e.computed(()=>r.required&&!l.value||_e(s.value,r.error)),E=e.computed(()=>i.value||!R.value),R=e.computed(()=>l.value===void 0),m=()=>{var T;const O=new MouseEvent("mousedown");(T=c==null?void 0:c.value)==null||T.dispatchEvent(O)},I=()=>{i.value=!0},L=()=>{i.value=!1};return e.watch(()=>r.value,(O,T)=>{(O!==T||O!==l.value)&&(l.value=O)}),n({error:s,value:l}),(O,T)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-select",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,O.disabled&&"disabled",f.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-border",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,r.disabled?e.unref(t).CURSOR.NOT_ALLOWED:"",e.unref(t).OVERFLOW.XY.HIDDEN]),onClick:m},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL])},[O.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([E.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.LEFT,e.unref(t).MARGIN.TOP.HALF,e.unref(t).MARGIN.LEFT.ONE,!f.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF]),for:r.inputId},e.toDisplayString(d.value),11,vn)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("select",{class:e.normalizeClass([e.unref(t).PADDING.BOTTOM.HALF,e.unref(t).PADDING.X.ONE,e.unref(t).WIDTH.FULL,O.disabled&&e.unref(t).CURSOR.NOT_ALLOWED,e.unref(t).FONT.ROLE.BODY_1]),disabled:O.disabled,name:O.name,ref_key:"input",ref:c,required:a.value,onFocus:I,onFocusout:L,id:r.inputId,"onUpdate:modelValue":T[0]||(T[0]=v=>l.value=v)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.optgroups,v=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[v.options?(e.openBlock(),e.createElementBlock("optgroup",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:v.label,label:v.label},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.options,A=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:A.value,value:A.value},e.toDisplayString(A.label),11,An))),128))],10,In)):(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:v.value,selected:l.value===v.value?!0:void 0,value:v.value},e.toDisplayString(v.label),11,Ln))],64))),256)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(O.options,v=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:v.value,selected:l.value===v.value?!0:void 0,value:v.value},e.toDisplayString(v.label),11,pn))),128))],42,Tn),[[e.vModelSelect,l.value]])],2),e.createVNode(_,{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.RIGHT,e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.OFF]),icon:e.unref(h).EXPAND_MORE,size:e.unref(C).SMALL},null,8,["class","icon","size"])],2),r.supportingText||f.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[f.value?(e.openBlock(),e.createBlock(_,{key:0,class:e.normalizeClass([]),icon:e.unref(h).ERROR,size:e.unref(C).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(f.value?u.value:r.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}});const gn=F(Nn,[["__scopeId","data-v-2da267e1"]]),Q={DATE:"date",DATETIME_LOCAL:"datetime-local",EMAIL:"email",MONTH:"month",NUMBER:"number",PASSWORD:"password",SEARCH:"search",TEL:"tel",TEXT:"text",TIME:"time",URL:"url",WEEK:"week"},hn=["for"],_n=["autocomplete","data-track","disabled","maxlength","minlength","name","required","type","id"],Sn=e.defineComponent({__name:"TideInputText",props:{autocomplete:{type:Boolean,default:!1},dataTrack:{default:""},disabled:{type:Boolean,default:!1},error:{type:[String,Boolean],default:!1},hasClear:{type:Boolean,default:!1},iconLeading:{default:void 0},inputId:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{},prefix:{default:void 0},required:{type:Boolean,default:!1},suffix:{default:void 0},supportingText:{default:void 0},transformValue:{type:Function,default:void 0},type:{default:Q.TEXT},validators:{default:void 0},value:{default:void 0}},setup(o,{expose:n}){const r=o,s=e.ref(r.error),i=e.ref(!1),c=e.ref(null),a=e.ref(!1),l=e.ref(r.value),u=e.computed(()=>he(r.error,s.value)),d=e.computed(()=>r.required&&r.label?`${r.label} *`:r.label),f=e.computed(()=>r.hasClear&&l.value),E=e.computed(()=>r.required&&l.value!==void 0&&!l.value||_e(s.value,r.error)),R=e.computed(()=>i.value||!m.value),m=e.computed(()=>l.value===""||l.value===void 0),I=e.computed(()=>r.type===Q.PASSWORD&&a.value===!0?Q.TEXT:r.type),L=()=>{var p;l.value="",(p=c.value)==null||p.focus()},O=()=>{i.value=!0},T=()=>{i.value=!1,l.value||(l.value=""),A()},v=()=>{var p,S;if(r.transformValue){const N=((S=(p=l.value)==null?void 0:p.match(/\d/g))==null?void 0:S.join(""))||void 0;l.value=N?r.transformValue(N):""}},A=()=>{Qe({error:s,errorFromProps:r.error,maxlength:r.maxlength,minlength:r.minlength,required:r.required,validators:r.validators,value:l})},g=p=>{l.value=p};return e.watch(()=>r.value,(p,S)=>{(p!==S||p!==l.value)&&(l.value=p)}),n({error:s,required:r.required,updateValue:g,value:l}),(p,S)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-text",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,p.disabled&&"disabled",E.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-border",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,f.value?[e.unref(t).PADDING.RIGHT.HALF,e.unref(t).PADDING.LEFT.ONE]:[e.unref(t).PADDING.X.ONE],e.unref(t).PADDING.Y.HALF,r.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.TEXT])},[r.iconLeading?(e.openBlock(),e.createBlock(_,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT]),icon:r.iconLeading,size:e.unref(C).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[r.prefix?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-prefix",e.unref(t).FONT.ROLE.BODY_1,,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,R.value?"":"offset"])},e.toDisplayString(r.prefix),3)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL]),onClick:S[1]||(S[1]=e.withModifiers(N=>{var U;return(U=c.value)==null?void 0:U.focus()},["prevent"]))},[p.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([R.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).CURSOR.TEXT,e.unref(t).POINTER_EVENTS.OFF]),for:r.inputId},e.toDisplayString(d.value),11,hn)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{autocomplete:p.autocomplete?"on":"off",class:e.normalizeClass([e.unref(t).WIDTH.FULL,p.disabled&&e.unref(t).CURSOR.NOT_ALLOWED,e.unref(t).FONT.ROLE.BODY_1]),"data-track":r.dataTrack,disabled:r.disabled,maxlength:r.maxlength,minlength:r.minlength,name:r.name,ref_key:"input",ref:c,required:r.required,type:I.value,onChange:A,onFocus:O,onFocusout:T,onInput:v,id:r.inputId,"onUpdate:modelValue":S[0]||(S[0]=N=>l.value=N)},null,42,_n),[[e.vModelDynamic,l.value]])],2),r.suffix?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["tide-input-text-suffix",e.unref(t).FONT.ROLE.BODY_1,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,R.value?"":"offset"])},e.toDisplayString(r.suffix),3)):e.createCommentVNode("",!0)],2),f.value&&r.type!==e.unref(Q).PASSWORD?(e.openBlock(),e.createBlock(_,{key:1,class:e.normalizeClass([e.unref(t).PADDING.Y.HALF,e.unref(t).PADDING.FULL.HALF,e.unref(t).CURSOR.POINTER]),icon:e.unref(h).CLOSE,size:e.unref(C).SMALL,onClick:L},null,8,["class","icon","size"])):e.createCommentVNode("",!0),r.type===e.unref(Q).PASSWORD?(e.openBlock(),e.createBlock(_,{key:2,class:e.normalizeClass([e.unref(t).PADDING.Y.HALF,e.unref(t).PADDING.FULL.HALF,e.unref(t).CURSOR.POINTER]),icon:e.unref(h).VISIBILITY,size:e.unref(C).SMALL,onClick:S[2]||(S[2]=N=>a.value=!a.value)},null,8,["class","icon","size"])):e.createCommentVNode("",!0)],2),r.supportingText||E.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[E.value?(e.openBlock(),e.createBlock(_,{key:0,class:e.normalizeClass([]),icon:e.unref(h).ERROR,size:e.unref(C).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(E.value?u.value:r.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}});const Dn=F(Sn,[["__scopeId","data-v-d369bda5"]]),Fn=["for"],Cn=["data-track","maxlength","minlength","name","required","rows","id"],Pn=e.defineComponent({__name:"TideInputTextarea",props:{dataTrack:{default:""},error:{type:[String,Boolean],default:!1},inputId:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{default:void 0},required:{type:Boolean,default:!1},rows:{default:8},supportingText:{default:void 0},value:{default:void 0}},setup(o,{expose:n}){const r=o,s=e.ref(r.error),i=e.ref(!1),c=e.ref(null),a=e.ref(r.value),l=e.computed(()=>he(r.error,s.value)),u=e.computed(()=>r.required?`${r.label} *`:r.label),d=e.computed(()=>r.required&&a.value!==void 0&&!a.value||_e(s.value,r.error)),f=e.computed(()=>i.value||!E.value),E=e.computed(()=>a.value===""||a.value===void 0),R=()=>{i.value=!0},m=()=>{i.value=!1,a.value||(a.value="")},I=()=>Qe({error:s,errorFromProps:r.error,maxlength:r.maxlength,minlength:r.minlength,required:r.required,value:a});return e.watch(()=>r.value,(L,O)=>{(L!==O||L!==a.value)&&(a.value=L)}),n({error:s,required:r.required,value:a}),(L,O)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-textarea",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,d.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-textarea-field",e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.LEFT.ONE,e.unref(t).PADDING.TOP.HALF,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).BG.SURFACE.DEFAULT])},[L.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([f.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!d.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).CURSOR.TEXT,e.unref(t).POINTER_EVENTS.OFF]),for:r.inputId,ref:"label"},e.toDisplayString(u.value),11,Fn)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("textarea",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).FONT.ROLE.BODY_1]),"data-track":r.dataTrack,maxlength:r.maxlength,minlength:r.minlength,name:r.name,ref_key:"input",ref:c,required:r.required,rows:r.rows,onChange:I,onFocus:R,onFocusout:m,id:r.inputId,"onUpdate:modelValue":O[0]||(O[0]=T=>a.value=T)},null,42,Cn),[[e.vModelText,a.value]])],2),r.supportingText||d.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[d.value?(e.openBlock(),e.createBlock(_,{key:0,icon:e.unref(h).ERROR,size:e.unref(C).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(d.value?l.value:r.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}});const Bn=F(Pn,[["__scopeId","data-v-2105ab99"]]),yn=e.defineComponent({__name:"TideLink",props:{element:{default:D.LINK},href:{default:void 0},iconLeading:{default:void 0},iconTrailing:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{default:void 0}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(D).LINK?e.unref(D).LINK:e.unref(D).BUTTON),{class:e.normalizeClass(["tide-link",e.unref(t).DISPLAY.INLINE,e.unref(t).UNDERLINE.ON,e.unref(t).ALIGN.X.LEFT]),href:n.href,target:n.isNewTab?e.unref(b).BLANK:e.unref(b).SELF},{default:e.withCtx(()=>[n.iconLeading?(e.openBlock(),e.createBlock(_,{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.Y.MIDDLE,e.unref(t).MARGIN.RIGHT.QUARTER]),icon:n.iconLeading},null,8,["class","icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ALIGN.Y.MIDDLE])},e.toDisplayString(n.label),3),n.iconTrailing?(e.openBlock(),e.createBlock(_,{key:1,class:e.normalizeClass([e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.Y.MIDDLE,e.unref(t).MARGIN.LEFT.QUARTER]),icon:n.iconTrailing},null,8,["class","icon"])):e.createCommentVNode("",!0)]),_:1},8,["class","href","target"]))}}),Ze={SM:"sm",MD:"md",LG:"lg",XL:"xl"},Un={SM:768,MD:992,LG:1232,XL:1920},bn=async o=>{const n="body-scroll-lock",r=document.body;if(o){if(!r.dataset.scrollLockY){const s=window.scrollY;r.dataset.scrollLockY=s.toString(),r.style.setProperty("--saved-scroll-y",`${s}px`),r.classList.add(n)}}else if(await e.nextTick(),!document.querySelector("dialog[open]")){const s=parseInt(r.dataset.scrollLockY||"0");r.classList.remove(n),r.style.removeProperty("--saved-scroll-y"),window.scrollTo({behavior:"auto",top:s}),delete r.dataset.scrollLockY}},Le="tideTopLayer",kn=()=>{let o=document.getElementById(Le);o||(o=document.createElement("div"),o.id=Le,document.body.appendChild(o)),o.style.isolation="isolate"},Gn=["textContent"],wn=e.defineComponent({__name:"TideModal",props:{isBackButton:{type:Boolean,default:!1},isDismissible:{type:Boolean,default:!0},isOpen:{type:Boolean},title:{default:void 0},width:{default:void 0}},emits:["close","back"],setup(o,{emit:n}){const r=o,s=e.ref(),i=e.ref(),c=()=>{var u;(u=i.value)==null||u.showModal()},a=()=>{var u;(u=i.value)==null||u.close()},l=()=>{e.nextTick(()=>{s.value&&(s.value.scrollTop=0)})};return e.watch(()=>r.isOpen,u=>{i.value&&(u?(c(),l()):a(),bn(u))}),e.onMounted(()=>{r.isOpen&&c()}),(u,d)=>(e.openBlock(),e.createElementBlock("dialog",{class:e.normalizeClass(["tide-modal",e.unref(t).BG.INITIAL,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).OVERFLOW.XY.HIDDEN]),ref_key:"modalDialog",ref:i,style:e.normalizeStyle({"--modal-width":r.width}),onClick:d[1]||(d[1]=e.withModifiers(f=>n("close"),["self"])),onClose:d[2]||(d[2]=f=>n("close"))},[e.createElementVNode("div",{class:e.normalizeClass(["tide-modal-body",e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).BORDER.RADIUS.ONE,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.BOTTOM,e.unref(t).SHADOW.TOP,e.unref(t).WIDTH.FULL,e.unref(t).WIDTH.MAX_FULL,e.unref(t).withBreakpoint([e.unref(t).SHADOW.BOTTOM],e.unref(Ze).SM)])},[e.createElementVNode("header",{class:e.normalizeClass(["tide-modal-header",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).PADDING.Y.ONE,e.unref(t).BORDER.BOTTOM.ONE,e.unref(t).BORDER.COLOR.LOW])},[u.isBackButton?(e.openBlock(),e.createBlock(H,{key:0,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(B).QUATERNARY,onClick:d[0]||(d[0]=f=>n("back")),title:"Back"},null,8,["icon","priority"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.HEADLINE_2]),textContent:e.toDisplayString(u.title)},null,10,Gn),u.isDismissible?(e.openBlock(),e.createBlock(H,{key:1,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).MARGIN.LEFT.AUTO]),icon:e.unref(h).CLOSE,priority:e.unref(B).QUATERNARY,onClick:a},null,8,["class","icon","priority"])):e.createCommentVNode("",!0)],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-modal-content",e.unref(t).DISPLAY.GRID,e.unref(t).OVERFLOW.Y.AUTO,e.unref(t).OVERFLOW.X.HIDDEN,e.unref(t).WIDTH.FULL,e.unref(t).PADDING.Y.TWO]),ref_key:"modalContent",ref:s},[e.renderSlot(u.$slots,"default",{},void 0,!0)],2),u.$slots.footer?(e.openBlock(),e.createElementBlock("footer",{key:0,class:e.normalizeClass(["tide-modal-footer",e.unref(t).AXIS1.END,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.TWO,e.unref(t).PADDING.Y.ONE,e.unref(t).SHADOW.TOP])},[e.renderSlot(u.$slots,"footer",{},void 0,!0)],2)):e.createCommentVNode("",!0)],2)],38))}});const Hn=F(wn,[["__scopeId","data-v-b0e46dd4"]]),Mn=e.defineComponent({__name:"TidePagination",props:{pageCurrent:{default:1},pageTotal:{default:1}},emits:["change"],setup(o,{emit:n}){const r=o,s=e.ref(r.pageCurrent),i=e.computed(()=>new Array(r.pageTotal).fill("").map((a,l)=>l+1)),c=a=>{s.value=a,n("change",event,a)};return(a,l)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["tide-pagination",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[e.createVNode(H,{disabled:s.value===1,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(B).QUATERNARY,onClick:l[0]||(l[0]=u=>c(s.value-1))},null,8,["disabled","icon","priority"]),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,u=>(e.openBlock(),e.createElementBlock("li",{key:u},[e.createVNode(Ke,{disabled:s.value===u,label:u,priority:e.unref(B).QUATERNARY,onClick:d=>c(u)},null,8,["disabled","label","priority","onClick"])]))),128))],2),e.createVNode(H,{disabled:s.value===i.value[i.value.length-1],icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(B).QUATERNARY,onClick:l[1]||(l[1]=u=>c(s.value+1))},null,8,["disabled","icon","priority"])],2))}}),Vn=["top","right","bottom","left"],ye=["start","end"],Ue=Vn.reduce((o,n)=>o.concat(n,n+"-"+ye[0],n+"-"+ye[1]),[]),ce=Math.min,z=Math.max,ue=Math.round,le=Math.floor,M=o=>({x:o,y:o}),xn={left:"right",right:"left",bottom:"top",top:"bottom"},Wn={start:"end",end:"start"};function be(o,n,r){return z(o,ce(n,r))}function fe(o,n){return typeof o=="function"?o(n):o}function ee(o){return o.split("-")[0]}function X(o){return o.split("-")[1]}function je(o){return o==="x"?"y":"x"}function Je(o){return o==="y"?"height":"width"}function Ee(o){return["top","bottom"].includes(ee(o))?"y":"x"}function et(o){return je(Ee(o))}function Xn(o,n,r){r===void 0&&(r=!1);const s=X(o),i=et(o),c=Je(i);let a=i==="x"?s===(r?"end":"start")?"right":"left":s==="start"?"bottom":"top";return n.reference[c]>n.floating[c]&&(a=ke(a)),[a,ke(a)]}function Yn(o){return o.replace(/start|end/g,n=>Wn[n])}function ke(o){return o.replace(/left|right|bottom|top/g,n=>xn[n])}function zn(o){return{top:0,right:0,bottom:0,left:0,...o}}function qn(o){return typeof o!="number"?zn(o):{top:o,right:o,bottom:o,left:o}}function de(o){const{x:n,y:r,width:s,height:i}=o;return{width:s,height:i,top:r,left:n,right:n+s,bottom:r+i,x:n,y:r}}function Ge(o,n,r){let{reference:s,floating:i}=o;const c=Ee(n),a=et(n),l=Je(a),u=ee(n),d=c==="y",f=s.x+s.width/2-i.width/2,E=s.y+s.height/2-i.height/2,R=s[l]/2-i[l]/2;let m;switch(u){case"top":m={x:f,y:s.y-i.height};break;case"bottom":m={x:f,y:s.y+s.height};break;case"right":m={x:s.x+s.width,y:E};break;case"left":m={x:s.x-i.width,y:E};break;default:m={x:s.x,y:s.y}}switch(X(n)){case"start":m[a]-=R*(r&&d?-1:1);break;case"end":m[a]+=R*(r&&d?-1:1);break}return m}const $n=async(o,n,r)=>{const{placement:s="bottom",strategy:i="absolute",middleware:c=[],platform:a}=r,l=c.filter(Boolean),u=await(a.isRTL==null?void 0:a.isRTL(n));let d=await a.getElementRects({reference:o,floating:n,strategy:i}),{x:f,y:E}=Ge(d,s,u),R=s,m={},I=0;for(let L=0;L<l.length;L++){const{name:O,fn:T}=l[L],{x:v,y:A,data:g,reset:p}=await T({x:f,y:E,initialPlacement:s,placement:R,strategy:i,middlewareData:m,rects:d,platform:a,elements:{reference:o,floating:n}});f=v??f,E=A??E,m={...m,[O]:{...m[O],...g}},p&&I<=50&&(I++,typeof p=="object"&&(p.placement&&(R=p.placement),p.rects&&(d=p.rects===!0?await a.getElementRects({reference:o,floating:n,strategy:i}):p.rects),{x:f,y:E}=Ge(d,R,u)),L=-1)}return{x:f,y:E,placement:R,strategy:i,middlewareData:m}};async function tt(o,n){var r;n===void 0&&(n={});const{x:s,y:i,platform:c,rects:a,elements:l,strategy:u}=o,{boundary:d="clippingAncestors",rootBoundary:f="viewport",elementContext:E="floating",altBoundary:R=!1,padding:m=0}=fe(n,o),I=qn(m),O=l[R?E==="floating"?"reference":"floating":E],T=de(await c.getClippingRect({element:(r=await(c.isElement==null?void 0:c.isElement(O)))==null||r?O:O.contextElement||await(c.getDocumentElement==null?void 0:c.getDocumentElement(l.floating)),boundary:d,rootBoundary:f,strategy:u})),v=E==="floating"?{x:s,y:i,width:a.floating.width,height:a.floating.height}:a.reference,A=await(c.getOffsetParent==null?void 0:c.getOffsetParent(l.floating)),g=await(c.isElement==null?void 0:c.isElement(A))?await(c.getScale==null?void 0:c.getScale(A))||{x:1,y:1}:{x:1,y:1},p=de(c.convertOffsetParentRelativeRectToViewportRelativeRect?await c.convertOffsetParentRelativeRectToViewportRelativeRect({elements:l,rect:v,offsetParent:A,strategy:u}):v);return{top:(T.top-p.top+I.top)/g.y,bottom:(p.bottom-T.bottom+I.bottom)/g.y,left:(T.left-p.left+I.left)/g.x,right:(p.right-T.right+I.right)/g.x}}function Kn(o,n,r){return(o?[...r.filter(i=>X(i)===o),...r.filter(i=>X(i)!==o)]:r.filter(i=>ee(i)===i)).filter(i=>o?X(i)===o||(n?Yn(i)!==i:!1):!0)}const Qn=function(o){return o===void 0&&(o={}),{name:"autoPlacement",options:o,async fn(n){var r,s,i;const{rects:c,middlewareData:a,placement:l,platform:u,elements:d}=n,{crossAxis:f=!1,alignment:E,allowedPlacements:R=Ue,autoAlignment:m=!0,...I}=fe(o,n),L=E!==void 0||R===Ue?Kn(E||null,m,R):R,O=await tt(n,I),T=((r=a.autoPlacement)==null?void 0:r.index)||0,v=L[T];if(v==null)return{};const A=Xn(v,c,await(u.isRTL==null?void 0:u.isRTL(d.floating)));if(l!==v)return{reset:{placement:L[0]}};const g=[O[ee(v)],O[A[0]],O[A[1]]],p=[...((s=a.autoPlacement)==null?void 0:s.overflows)||[],{placement:v,overflows:g}],S=L[T+1];if(S)return{data:{index:T+1,overflows:p},reset:{placement:S}};const N=p.map(w=>{const ne=X(w.placement);return[w.placement,ne&&f?w.overflows.slice(0,2).reduce((ut,dt)=>ut+dt,0):w.overflows[0],w.overflows]}).sort((w,ne)=>w[1]-ne[1]),te=((i=N.filter(w=>w[2].slice(0,X(w[0])?2:3).every(ne=>ne<=0))[0])==null?void 0:i[0])||N[0][0];return te!==l?{data:{index:T+1,overflows:p},reset:{placement:te}}:{}}}};async function Zn(o,n){const{placement:r,platform:s,elements:i}=o,c=await(s.isRTL==null?void 0:s.isRTL(i.floating)),a=ee(r),l=X(r),u=Ee(r)==="y",d=["left","top"].includes(a)?-1:1,f=c&&u?-1:1,E=fe(n,o);let{mainAxis:R,crossAxis:m,alignmentAxis:I}=typeof E=="number"?{mainAxis:E,crossAxis:0,alignmentAxis:null}:{mainAxis:E.mainAxis||0,crossAxis:E.crossAxis||0,alignmentAxis:E.alignmentAxis};return l&&typeof I=="number"&&(m=l==="end"?I*-1:I),u?{x:m*f,y:R*d}:{x:R*d,y:m*f}}const jn=function(o){return o===void 0&&(o=0),{name:"offset",options:o,async fn(n){var r,s;const{x:i,y:c,placement:a,middlewareData:l}=n,u=await Zn(n,o);return a===((r=l.offset)==null?void 0:r.placement)&&(s=l.arrow)!=null&&s.alignmentOffset?{}:{x:i+u.x,y:c+u.y,data:{...u,placement:a}}}}},Jn=function(o){return o===void 0&&(o={}),{name:"shift",options:o,async fn(n){const{x:r,y:s,placement:i}=n,{mainAxis:c=!0,crossAxis:a=!1,limiter:l={fn:O=>{let{x:T,y:v}=O;return{x:T,y:v}}},...u}=fe(o,n),d={x:r,y:s},f=await tt(n,u),E=Ee(ee(i)),R=je(E);let m=d[R],I=d[E];if(c){const O=R==="y"?"top":"left",T=R==="y"?"bottom":"right",v=m+f[O],A=m-f[T];m=be(v,m,A)}if(a){const O=E==="y"?"top":"left",T=E==="y"?"bottom":"right",v=I+f[O],A=I-f[T];I=be(v,I,A)}const L=l.fn({...n,[R]:m,[E]:I});return{...L,data:{x:L.x-r,y:L.y-s,enabled:{[R]:c,[E]:a}}}}}};function me(){return typeof window<"u"}function $(o){return Se(o)?(o.nodeName||"").toLowerCase():"#document"}function y(o){var n;return(o==null||(n=o.ownerDocument)==null?void 0:n.defaultView)||window}function x(o){var n;return(n=(Se(o)?o.ownerDocument:o.document)||window.document)==null?void 0:n.documentElement}function Se(o){return me()?o instanceof Node||o instanceof y(o).Node:!1}function k(o){return me()?o instanceof Element||o instanceof y(o).Element:!1}function V(o){return me()?o instanceof HTMLElement||o instanceof y(o).HTMLElement:!1}function we(o){return!me()||typeof ShadowRoot>"u"?!1:o instanceof ShadowRoot||o instanceof y(o).ShadowRoot}function ae(o){const{overflow:n,overflowX:r,overflowY:s,display:i}=G(o);return/auto|scroll|overlay|hidden|clip/.test(n+s+r)&&!["inline","contents"].includes(i)}function eo(o){return["table","td","th"].includes($(o))}function Oe(o){return[":popover-open",":modal"].some(n=>{try{return o.matches(n)}catch{return!1}})}function De(o){const n=Fe(),r=k(o)?G(o):o;return["transform","translate","scale","rotate","perspective"].some(s=>r[s]?r[s]!=="none":!1)||(r.containerType?r.containerType!=="normal":!1)||!n&&(r.backdropFilter?r.backdropFilter!=="none":!1)||!n&&(r.filter?r.filter!=="none":!1)||["transform","translate","scale","rotate","perspective","filter"].some(s=>(r.willChange||"").includes(s))||["paint","layout","strict","content"].some(s=>(r.contain||"").includes(s))}function to(o){let n=Y(o);for(;V(n)&&!J(n);){if(De(n))return n;if(Oe(n))return null;n=Y(n)}return null}function Fe(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function J(o){return["html","body","#document"].includes($(o))}function G(o){return y(o).getComputedStyle(o)}function Re(o){return k(o)?{scrollLeft:o.scrollLeft,scrollTop:o.scrollTop}:{scrollLeft:o.scrollX,scrollTop:o.scrollY}}function Y(o){if($(o)==="html")return o;const n=o.assignedSlot||o.parentNode||we(o)&&o.host||x(o);return we(n)?n.host:n}function nt(o){const n=Y(o);return J(n)?o.ownerDocument?o.ownerDocument.body:o.body:V(n)&&ae(n)?n:nt(n)}function ie(o,n,r){var s;n===void 0&&(n=[]),r===void 0&&(r=!0);const i=nt(o),c=i===((s=o.ownerDocument)==null?void 0:s.body),a=y(i);if(c){const l=pe(a);return n.concat(a,a.visualViewport||[],ae(i)?i:[],l&&r?ie(l):[])}return n.concat(i,ie(i,[],r))}function pe(o){return o.parent&&Object.getPrototypeOf(o.parent)?o.frameElement:null}function ot(o){const n=G(o);let r=parseFloat(n.width)||0,s=parseFloat(n.height)||0;const i=V(o),c=i?o.offsetWidth:r,a=i?o.offsetHeight:s,l=ue(r)!==c||ue(s)!==a;return l&&(r=c,s=a),{width:r,height:s,$:l}}function Ce(o){return k(o)?o:o.contextElement}function j(o){const n=Ce(o);if(!V(n))return M(1);const r=n.getBoundingClientRect(),{width:s,height:i,$:c}=ot(n);let a=(c?ue(r.width):r.width)/s,l=(c?ue(r.height):r.height)/i;return(!a||!Number.isFinite(a))&&(a=1),(!l||!Number.isFinite(l))&&(l=1),{x:a,y:l}}const no=M(0);function rt(o){const n=y(o);return!Fe()||!n.visualViewport?no:{x:n.visualViewport.offsetLeft,y:n.visualViewport.offsetTop}}function oo(o,n,r){return n===void 0&&(n=!1),!r||n&&r!==y(o)?!1:n}function q(o,n,r,s){n===void 0&&(n=!1),r===void 0&&(r=!1);const i=o.getBoundingClientRect(),c=Ce(o);let a=M(1);n&&(s?k(s)&&(a=j(s)):a=j(o));const l=oo(c,r,s)?rt(c):M(0);let u=(i.left+l.x)/a.x,d=(i.top+l.y)/a.y,f=i.width/a.x,E=i.height/a.y;if(c){const R=y(c),m=s&&k(s)?y(s):s;let I=R,L=pe(I);for(;L&&s&&m!==I;){const O=j(L),T=L.getBoundingClientRect(),v=G(L),A=T.left+(L.clientLeft+parseFloat(v.paddingLeft))*O.x,g=T.top+(L.clientTop+parseFloat(v.paddingTop))*O.y;u*=O.x,d*=O.y,f*=O.x,E*=O.y,u+=A,d+=g,I=y(L),L=pe(I)}}return de({width:f,height:E,x:u,y:d})}function Pe(o,n){const r=Re(o).scrollLeft;return n?n.left+r:q(x(o)).left+r}function st(o,n,r){r===void 0&&(r=!1);const s=o.getBoundingClientRect(),i=s.left+n.scrollLeft-(r?0:Pe(o,s)),c=s.top+n.scrollTop;return{x:i,y:c}}function ro(o){let{elements:n,rect:r,offsetParent:s,strategy:i}=o;const c=i==="fixed",a=x(s),l=n?Oe(n.floating):!1;if(s===a||l&&c)return r;let u={scrollLeft:0,scrollTop:0},d=M(1);const f=M(0),E=V(s);if((E||!E&&!c)&&(($(s)!=="body"||ae(a))&&(u=Re(s)),V(s))){const m=q(s);d=j(s),f.x=m.x+s.clientLeft,f.y=m.y+s.clientTop}const R=a&&!E&&!c?st(a,u,!0):M(0);return{width:r.width*d.x,height:r.height*d.y,x:r.x*d.x-u.scrollLeft*d.x+f.x+R.x,y:r.y*d.y-u.scrollTop*d.y+f.y+R.y}}function so(o){return Array.from(o.getClientRects())}function io(o){const n=x(o),r=Re(o),s=o.ownerDocument.body,i=z(n.scrollWidth,n.clientWidth,s.scrollWidth,s.clientWidth),c=z(n.scrollHeight,n.clientHeight,s.scrollHeight,s.clientHeight);let a=-r.scrollLeft+Pe(o);const l=-r.scrollTop;return G(s).direction==="rtl"&&(a+=z(n.clientWidth,s.clientWidth)-i),{width:i,height:c,x:a,y:l}}function ao(o,n){const r=y(o),s=x(o),i=r.visualViewport;let c=s.clientWidth,a=s.clientHeight,l=0,u=0;if(i){c=i.width,a=i.height;const d=Fe();(!d||d&&n==="fixed")&&(l=i.offsetLeft,u=i.offsetTop)}return{width:c,height:a,x:l,y:u}}function lo(o,n){const r=q(o,!0,n==="fixed"),s=r.top+o.clientTop,i=r.left+o.clientLeft,c=V(o)?j(o):M(1),a=o.clientWidth*c.x,l=o.clientHeight*c.y,u=i*c.x,d=s*c.y;return{width:a,height:l,x:u,y:d}}function He(o,n,r){let s;if(n==="viewport")s=ao(o,r);else if(n==="document")s=io(x(o));else if(k(n))s=lo(n,r);else{const i=rt(o);s={x:n.x-i.x,y:n.y-i.y,width:n.width,height:n.height}}return de(s)}function it(o,n){const r=Y(o);return r===n||!k(r)||J(r)?!1:G(r).position==="fixed"||it(r,n)}function co(o,n){const r=n.get(o);if(r)return r;let s=ie(o,[],!1).filter(l=>k(l)&&$(l)!=="body"),i=null;const c=G(o).position==="fixed";let a=c?Y(o):o;for(;k(a)&&!J(a);){const l=G(a),u=De(a);!u&&l.position==="fixed"&&(i=null),(c?!u&&!i:!u&&l.position==="static"&&!!i&&["absolute","fixed"].includes(i.position)||ae(a)&&!u&&it(o,a))?s=s.filter(f=>f!==a):i=l,a=Y(a)}return n.set(o,s),s}function uo(o){let{element:n,boundary:r,rootBoundary:s,strategy:i}=o;const a=[...r==="clippingAncestors"?Oe(n)?[]:co(n,this._c):[].concat(r),s],l=a[0],u=a.reduce((d,f)=>{const E=He(n,f,i);return d.top=z(E.top,d.top),d.right=ce(E.right,d.right),d.bottom=ce(E.bottom,d.bottom),d.left=z(E.left,d.left),d},He(n,l,i));return{width:u.right-u.left,height:u.bottom-u.top,x:u.left,y:u.top}}function fo(o){const{width:n,height:r}=ot(o);return{width:n,height:r}}function Eo(o,n,r){const s=V(n),i=x(n),c=r==="fixed",a=q(o,!0,c,n);let l={scrollLeft:0,scrollTop:0};const u=M(0);if(s||!s&&!c)if(($(n)!=="body"||ae(i))&&(l=Re(n)),s){const R=q(n,!0,c,n);u.x=R.x+n.clientLeft,u.y=R.y+n.clientTop}else i&&(u.x=Pe(i));const d=i&&!s&&!c?st(i,l):M(0),f=a.left+l.scrollLeft-u.x-d.x,E=a.top+l.scrollTop-u.y-d.y;return{x:f,y:E,width:a.width,height:a.height}}function Te(o){return G(o).position==="static"}function Me(o,n){if(!V(o)||G(o).position==="fixed")return null;if(n)return n(o);let r=o.offsetParent;return x(o)===r&&(r=r.ownerDocument.body),r}function at(o,n){const r=y(o);if(Oe(o))return r;if(!V(o)){let i=Y(o);for(;i&&!J(i);){if(k(i)&&!Te(i))return i;i=Y(i)}return r}let s=Me(o,n);for(;s&&eo(s)&&Te(s);)s=Me(s,n);return s&&J(s)&&Te(s)&&!De(s)?r:s||to(o)||r}const mo=async function(o){const n=this.getOffsetParent||at,r=this.getDimensions,s=await r(o.floating);return{reference:Eo(o.reference,await n(o.floating),o.strategy),floating:{x:0,y:0,width:s.width,height:s.height}}};function Oo(o){return G(o).direction==="rtl"}const Ro={convertOffsetParentRelativeRectToViewportRelativeRect:ro,getDocumentElement:x,getClippingRect:uo,getOffsetParent:at,getElementRects:mo,getClientRects:so,getDimensions:fo,getScale:j,isElement:k,isRTL:Oo};function lt(o,n){return o.x===n.x&&o.y===n.y&&o.width===n.width&&o.height===n.height}function vo(o,n){let r=null,s;const i=x(o);function c(){var l;clearTimeout(s),(l=r)==null||l.disconnect(),r=null}function a(l,u){l===void 0&&(l=!1),u===void 0&&(u=1),c();const d=o.getBoundingClientRect(),{left:f,top:E,width:R,height:m}=d;if(l||n(),!R||!m)return;const I=le(E),L=le(i.clientWidth-(f+R)),O=le(i.clientHeight-(E+m)),T=le(f),A={rootMargin:-I+"px "+-L+"px "+-O+"px "+-T+"px",threshold:z(0,ce(1,u))||1};let g=!0;function p(S){const N=S[0].intersectionRatio;if(N!==u){if(!g)return a();N?a(!1,N):s=setTimeout(()=>{a(!1,1e-7)},1e3)}N===1&&!lt(d,o.getBoundingClientRect())&&a(),g=!1}try{r=new IntersectionObserver(p,{...A,root:i.ownerDocument})}catch{r=new IntersectionObserver(p,A)}r.observe(o)}return a(!0),c}function To(o,n,r,s){s===void 0&&(s={});const{ancestorScroll:i=!0,ancestorResize:c=!0,elementResize:a=typeof ResizeObserver=="function",layoutShift:l=typeof IntersectionObserver=="function",animationFrame:u=!1}=s,d=Ce(o),f=i||c?[...d?ie(d):[],...ie(n)]:[];f.forEach(T=>{i&&T.addEventListener("scroll",r,{passive:!0}),c&&T.addEventListener("resize",r)});const E=d&&l?vo(d,r):null;let R=-1,m=null;a&&(m=new ResizeObserver(T=>{let[v]=T;v&&v.target===d&&m&&(m.unobserve(n),cancelAnimationFrame(R),R=requestAnimationFrame(()=>{var A;(A=m)==null||A.observe(n)})),r()}),d&&!u&&m.observe(d),m.observe(n));let I,L=u?q(o):null;u&&O();function O(){const T=q(o);L&&!lt(L,T)&&r(),L=T,I=requestAnimationFrame(O)}return r(),()=>{var T;f.forEach(v=>{i&&v.removeEventListener("scroll",r),c&&v.removeEventListener("resize",r)}),E==null||E(),(T=m)==null||T.disconnect(),m=null,u&&cancelAnimationFrame(I)}}const Ve=jn,xe=Qn,We=Jn,Io=(o,n,r)=>{const s=new Map,i={platform:Ro,...r},c={...i.platform,_c:s};return $n(o,n,{...i,platform:c})};function Ao(o){return o!=null&&typeof o=="object"&&"$el"in o}function Xe(o){if(Ao(o)){const n=o.$el;return Se(n)&&$(n)==="#comment"?null:n}return o}function re(o){return typeof o=="function"?o():e.unref(o)}function ct(o){return typeof window>"u"?1:(o.ownerDocument.defaultView||window).devicePixelRatio||1}function Ye(o,n){const r=ct(o);return Math.round(n*r)/r}function Lo(o,n,r){r===void 0&&(r={});const s=r.whileElementsMounted,i=e.computed(()=>{var N;return(N=re(r.open))!=null?N:!0}),c=e.computed(()=>re(r.middleware)),a=e.computed(()=>{var N;return(N=re(r.placement))!=null?N:"bottom"}),l=e.computed(()=>{var N;return(N=re(r.strategy))!=null?N:"absolute"}),u=e.computed(()=>{var N;return(N=re(r.transform))!=null?N:!0}),d=e.computed(()=>Xe(o.value)),f=e.computed(()=>Xe(n.value)),E=e.ref(0),R=e.ref(0),m=e.ref(l.value),I=e.ref(a.value),L=e.shallowRef({}),O=e.ref(!1),T=e.computed(()=>{const N={position:m.value,left:"0",top:"0"};if(!f.value)return N;const U=Ye(f.value,E.value),te=Ye(f.value,R.value);return u.value?{...N,transform:"translate("+U+"px, "+te+"px)",...ct(f.value)>=1.5&&{willChange:"transform"}}:{position:m.value,left:U+"px",top:te+"px"}});let v;function A(){if(d.value==null||f.value==null)return;const N=i.value;Io(d.value,f.value,{middleware:c.value,placement:a.value,strategy:l.value}).then(U=>{E.value=U.x,R.value=U.y,m.value=U.strategy,I.value=U.placement,L.value=U.middlewareData,O.value=N!==!1})}function g(){typeof v=="function"&&(v(),v=void 0)}function p(){if(g(),s===void 0){A();return}if(d.value!=null&&f.value!=null){v=s(d.value,f.value,A);return}}function S(){i.value||(O.value=!1)}return e.watch([c,a,l,i],A,{flush:"sync"}),e.watch([d,f],p,{flush:"sync"}),e.watch(i,S,{flush:"sync"}),e.getCurrentScope()&&e.onScopeDispose(g),{x:e.shallowReadonly(E),y:e.shallowReadonly(R),strategy:e.shallowReadonly(m),placement:e.shallowReadonly(I),middlewareData:e.shallowReadonly(L),isPositioned:e.shallowReadonly(O),floatingStyles:T,update:A}}const po=(o,n)=>!(Array.isArray(n)?n:[n]).some(s=>s.contains(o.target)),No=e.defineComponent({__name:"TidePopover",props:{anchorId:{},offset:{default:16}},setup(o){const n=o,r=e.ref(null),s=e.ref(null),i=e.ref(null),c=e.ref(!1),a=e.ref(!1),l=e.ref([xe(),Ve({mainAxis:n.offset}),We({padding:16})]),u=e.computed(()=>c.value||a.value),{floatingStyles:d}=Lo(r,s,{middleware:l,strategy:"fixed",whileElementsMounted:To}),f=g=>{!r.value||!s.value||po(g,[r.value,s.value])&&(g.stopImmediatePropagation(),a.value=!1)},E=()=>{c.value=!0},R=()=>{c.value=!1},m=()=>{a.value=!0},I=()=>{if(!r.value)return null;r.value.addEventListener("mouseover",E),r.value.addEventListener("mouseleave",R),r.value.addEventListener("click",m)},L=()=>{if(!r.value)return null;r.value.removeEventListener("mouseover",E),r.value.removeEventListener("mouseleave",R),r.value.removeEventListener("click",m)},O=g=>{g.key==="Escape"&&(a.value=!1)},T=()=>{i.value&&(i.value.addEventListener("click",f,!0),i.value.addEventListener("keydown",O))},v=()=>{i.value&&(i.value.removeEventListener("click",f,!0),i.value.removeEventListener("keydown",O))},A=()=>{r.value=document.getElementById(n.anchorId)};return e.watch(()=>a.value,g=>{g?T():v()}),e.watch(()=>n.anchorId,()=>{L(),A(),I()}),e.watchEffect(()=>{l.value=[xe(),Ve({mainAxis:n.offset}),We({padding:16})]}),e.onBeforeMount(()=>{kn()}),e.onMounted(()=>{A(),i.value=document.documentElement,I()}),e.onUnmounted(()=>{L()}),(g,p)=>(e.openBlock(),e.createBlock(e.Teleport,{to:`#${e.unref(Le)}`},[e.createVNode(e.Transition,null,{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(["tide-popover",e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).BORDER.COLOR.LOW,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).FONT.ROLE.BODY_2,e.unref(t).PADDING.FULL.ONE,e.unref(t).SHADOW.BOTTOM]),ref_key:"floating",ref:s,style:e.normalizeStyle({...e.unref(d),maxWidth:`calc(100% - ${n.offset*2}px)`})},[e.renderSlot(g.$slots,"default",{},void 0,!0)],6),[[e.vShow,u.value]])]),_:3})],8,["to"]))}});const go=F(No,[["__scopeId","data-v-a4dd063e"]]),ho={class:"tide-seo-links"},_o=["href","target"],So=e.defineComponent({__name:"TideSeoLinks",props:{heading:{default:""},links:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("section",ho,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(n.heading),3),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.WRAP,e.unref(t).GAP.TWO,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.links,i=>(e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass(["tide-seo-link",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,e.unref(t).FONT.ROLE.BODY_2]),key:i.label},[e.createElementVNode("a",{class:e.normalizeClass([e.unref(t).UNDERLINE.OFF]),href:i.url,target:i.isNewTab?e.unref(b).BLANK:e.unref(b).SELF},e.toDisplayString(i.label),11,_o)],2))),128))],2)]))}});const Do=F(So,[["__scopeId","data-v-0348487b"]]),Fo=["disabled"],Co=e.defineComponent({__name:"TideSwitch",props:{disabled:{type:Boolean,default:!1},isActive:{type:Boolean,default:!1}},emits:["change"],setup(o,{emit:n}){const r=o,s=()=>{r.disabled||n("change")};return(i,c)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-switch",r.isActive?"active":"",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,r.isActive?"":e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).OVERFLOW.XY.HIDDEN,r.isActive?e.unref(t).BG.SECONDARY:e.unref(t).BG.SURFACE.DEFAULT]),disabled:r.disabled,onClick:s,"aria-label":"Switch"},[e.createElementVNode("div",{class:e.normalizeClass(["tide-switch-indicator",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.FULL,r.isActive?e.unref(t).BG.SURFACE.DEFAULT:e.unref(t).BG.SECONDARY])},[e.createVNode(_,{icon:e.unref(h).CHECK,size:e.unref(C).LARGE},null,8,["icon","size"])],2)],10,Fo))}});const Po=F(Co,[["__scopeId","data-v-9bdb658a"]]),Bo={NUMBER:Ne,PHONE:Et,PRICE:mt},Z={alpha:/^[a-zA-Z]+$/g,alphaNumberOrEmpty:/^$|^[a-z0-9]+$/i,alphaSpace:/^[a-zA-Z ]+$/g,email:/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,numberFormatted:/^$|(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/,phone:/^(?:\d{3}-\d{3}-\d{4}|\d{1}-\d{3}-\d{3}-\d{4})?$/,price:/(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/},yo={IMAGE:{FLOORPLAN:"floorplan",IMAGE:"image"},VIDEO:"video",VR:"vr"},Uo={ALPHA_NUMBER_EMPTY:oe(Z.alphaNumberOrEmpty),ALPHA_SPACE:oe(Z.alphaSpace),EMAIL:oe(Z.email),NUMBER:oe(Z.numberFormatted),PHONE:oe(Z.phone)};exports.ALERT=P;exports.BADGE_TRUSTED=$e;exports.BREAKPOINT=Ze;exports.CSS=t;exports.ELEMENT=D;exports.ELEMENT_TEXT_AS_ICON=W;exports.FORMAT=Bo;exports.FORMAT_REGEX=Z;exports.ICON=h;exports.ICON_REALM=Ot;exports.MEDIA=Un;exports.MEDIA_SLIDE_TYPES=yo;exports.ORIENTATION=Ie;exports.PRIORITY=B;exports.REALM=ze;exports.SIZE=C;exports.SIZE_BUTTON=K;exports.TARGET=b;exports.TEXT_INPUT_TYPE=Q;exports.TYPE_CARD=se;exports.TideAccordionItem=Tt;exports.TideAlert=At;exports.TideBackgroundImage=gt;exports.TideBadge=ht;exports.TideBadgeTrustedPartner=St;exports.TideBreadCrumbs=Pt;exports.TideButton=Bt;exports.TideButtonIcon=H;exports.TideButtonPagination=Ke;exports.TideButtonSegmented=kt;exports.TideCard=wt;exports.TideCarousel=Mt;exports.TideChipAction=Wt;exports.TideChipFilter=Yt;exports.TideChipInput=qt;exports.TideColumns=en;exports.TideDivider=Ae;exports.TideIcon=_;exports.TideImage=qe;exports.TideIndicator=on;exports.TideInputCheckbox=ln;exports.TideInputRadio=fn;exports.TideInputSelect=gn;exports.TideInputText=Dn;exports.TideInputTextarea=Bn;exports.TideLink=yn;exports.TideModal=Hn;exports.TidePagination=Mn;exports.TidePopover=go;exports.TideSeoLinks=Do;exports.TideSwitch=Po;exports.VALIDATOR=Uo;
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmNqcyIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzL09yaWVudGF0aW9uLnRzIiwiLi4vc3JjL3R5cGVzL1N0eWxlcy50cyIsIi4uL3NyYy90eXBlcy9SZWFsbS50cyIsIi4uL3NyYy90eXBlcy9TaXplLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3JtYXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSWNvbi52dWUiLCIuLi9zcmMvdHlwZXMvSWNvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBY2NvcmRpb25JdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9FbGVtZW50LnRzIiwiLi4vc3JjL3R5cGVzL1ByaW9yaXR5LnRzIiwiLi4vc3JjL3R5cGVzL1RhcmdldC50cyIsIi4uL3NyYy90eXBlcy9BbGVydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBbGVydC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW1hZ2UudnVlIiwiLi4vc3JjL3R5cGVzL0JhZGdlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJ1dHRvblNlZ21lbnRlZC52dWUiLCIuLi9zcmMvdHlwZXMvQ2FyZC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDYXJvdXNlbC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRDaGVja2JveC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpby52dWUiLCIuLi9zcmMvdXRpbGl0aWVzL3ZhbGlkYXRpb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRTZWxlY3QudnVlIiwiLi4vc3JjL3R5cGVzL1RleHRJbnB1dC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWEudnVlIiwiLi4vc3JjL3R5cGVzL0JyZWFrcG9pbnQudHMiLCIuLi9zcmMvdXRpbGl0aWVzL3ZpZXdwb3J0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZU1vZGFsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVQYWdpbmF0aW9uLnZ1ZSIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdXRpbHMvZGlzdC9mbG9hdGluZy11aS51dGlscy5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2NvcmUvZGlzdC9mbG9hdGluZy11aS5jb3JlLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdXRpbHMvZGlzdC9mbG9hdGluZy11aS51dGlscy5kb20ubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9kb20vZGlzdC9mbG9hdGluZy11aS5kb20ubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS92dWUvZGlzdC9mbG9hdGluZy11aS52dWUubWpzIiwiLi4vc3JjL3V0aWxpdGllcy9ldmVudC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVQb3BvdmVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTd2l0Y2gudnVlIiwiLi4vc3JjL3R5cGVzL0Zvcm1hdHRlZC50cyIsIi4uL3NyYy90eXBlcy9MaXN0aW5nTWVkaWEudHMiLCIuLi9zcmMvdHlwZXMvVmFsaWRhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgT1JJRU5UQVRJT04gPSB7XG4gIEhPUklaT05UQUw6ICdob3Jpem9udGFsJyxcbiAgVkVSVElDQUw6ICd2ZXJ0aWNhbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBPcmllbnRhdGlvbiA9ICh0eXBlb2YgT1JJRU5UQVRJT04pW2tleW9mIHR5cGVvZiBPUklFTlRBVElPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmltcG9ydCB0eXBlIHsgQnJlYWtwb2ludCB9IGZyb20gJ0AvdHlwZXMvQnJlYWtwb2ludCc7XG5cbmV4cG9ydCBjb25zdCBDU1MgPSB7XG4gIHdpdGhCcmVha3BvaW50OiAodXRpbGl0aWVzOiBzdHJpbmdbXSwgYnJlYWtwb2ludDogQnJlYWtwb2ludCk6IHN0cmluZ1tdID0+IHtcbiAgICByZXR1cm4gdXRpbGl0aWVzLm1hcCgodXRpbGl0eSkgPT4gYCR7YnJlYWtwb2ludH0tJHt1dGlsaXR5fWApO1xuICB9LFxuICBBTElHTjoge1xuICAgIFg6IHtcbiAgICAgIENFTlRFUjogJ3RpZGUtdGV4dC1jZW50ZXInLFxuICAgICAgTEVGVDogJ3RpZGUtdGV4dC1sZWZ0JyxcbiAgICAgIFJJR0hUOiAndGlkZS10ZXh0LXJpZ2h0JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIElOSVRJQUw6ICd0aWRlLWFsaWduLWluaXRpYWwnLFxuICAgICAgTUlERExFOiAndGlkZS1hbGlnbi1taWRkbGUnLFxuICAgIH0sXG4gIH0sXG4gIEFYSVMxOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMS1hcm91bmQnLFxuICAgIEJFVFdFRU46ICd0aWRlLWF4aXMxLWJldHdlZW4nLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczEtY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMxLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMxLXN0YXJ0JyxcbiAgfSxcbiAgQVhJUzI6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMyLWFyb3VuZCcsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMi1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczItZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczItc3RhcnQnLFxuICB9LFxuICBCRzoge1xuICAgIEdMT0JBTDoge1xuICAgICAgUFJJTUFSWToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctcHJpbWFyeS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXByaW1hcnktaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXByaW1hcnktc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXByaW1hcnktd2FybmluZycsXG4gICAgICB9LFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctc3VyZmFjZS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXN1cmZhY2UtaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1cmZhY2Utc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXN1cmZhY2Utd2FybmluZycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgSU5JVElBTDogJ3RpZGUtYmctaW5pdGlhbCcsXG4gICAgQkxVUjogJ3RpZGUtYmctYmx1cicsXG4gICAgUFJJTUFSWTogJ3RpZGUtYmctcHJpbWFyeScsXG4gICAgU0VDT05EQVJZOiAndGlkZS1iZy1zZWNvbmRhcnknLFxuICAgIFNVUkZBQ0U6IHtcbiAgICAgIEFDQ0VOVDogJ3RpZGUtYmctc3VyZmFjZS1hY2NlbnQnLFxuICAgICAgQlJBTkQ6ICd0aWRlLWJnLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYmctc3VyZmFjZScsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYmctc3VyZmFjZS1mbG9hdGluZycsXG4gICAgICBHUkFESUVOVDogJ3RpZGUtYmctc3VyZmFjZS1ncmFkaWVudCcsXG4gICAgICBWQVJJQU5UOiAndGlkZS1iZy1zdXJmYWNlLXZhcmlhbnQnLFxuICAgIH0sXG4gICAgVFJBTlNQQVJFTlQ6IHtcbiAgICAgIE9ORV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0xMDAnLFxuICAgICAgVFdPX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTIwMCcsXG4gICAgICBUSFJFRV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0zMDAnLFxuICAgICAgRk9VUl9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC00MDAnLFxuICAgIH0sXG4gIH0sXG4gIEJPUkRFUjoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJvcmRlci1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJvcmRlci1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtYm9yZGVyLXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1ib3JkZXItd2FybmluZycsXG4gICAgICB9LFxuICAgICAgSU5JVElBTDogJ3RpZGUtYm9yZGVyLWNvbG9yLWluaXRpYWwnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYm9yZGVyJyxcbiAgICAgIEZMT0FUSU5HOiAndGlkZS1ib3JkZXItZmxvYXRpbmcnLFxuICAgICAgSElHSDogJ3RpZGUtYm9yZGVyLWhpZ2gnLFxuICAgICAgTE9XOiAndGlkZS1ib3JkZXItbG93JyxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWJvcmRlci1wcmltYXJ5JyxcbiAgICB9LFxuICAgIFJBRElVUzoge1xuICAgICAgWkVSTzogJ3RpZGUtcmFkaXVzLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcmFkaXVzLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1yYWRpdXMtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcmFkaXVzLTEnLFxuICAgICAgRlVMTDogJ3RpZGUtcmFkaXVzLWZ1bGwnLFxuICAgIH0sXG4gICAgQk9UVE9NOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItYm90dG9tLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItYm90dG9tLTInLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci0yJyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1sZWZ0LTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWxlZnQtMicsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLXJpZ2h0LTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1yaWdodC0yJyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLXRvcC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLXRvcC0yJyxcbiAgICB9LFxuICB9LFxuICBCT1hfU0laSU5HOiB7XG4gICAgQk9SREVSX0JPWDogJ3RpZGUtYm94LWJvcmRlcicsXG4gICAgQ09OVEVOVF9CT1g6ICd0aWRlLWJveC1jb250ZW50JyxcbiAgfSxcbiAgQlJFQUtfSU5TSURFOiB7XG4gICAgQVZPSURfQ09MVU1OOiAndGlkZS1icmVhay1pbnNpZGUtYXZvaWQtY29sdW1uJyxcbiAgfSxcbiAgQlJFQUtfV09SRDoge1xuICAgIE9GRjogJ3RpZGUtYnJlYWstaW5pdGlhbCcsXG4gICAgT046ICd0aWRlLWJyZWFrLXdvcmQnLFxuICB9LFxuICBDT0xVTU5TOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtY29sdW1ucy1pbml0aWFsJyxcbiAgICBPTkU6ICd0aWRlLWNvbHVtbnMtMScsXG4gICAgVFdPOiAndGlkZS1jb2x1bW5zLTInLFxuICAgIFRIUkVFOiAndGlkZS1jb2x1bW5zLTMnLFxuICAgIEZPVVI6ICd0aWRlLWNvbHVtbnMtNCcsXG4gIH0sXG4gIENVUlNPUjoge1xuICAgIE5PVF9BTExPV0VEOiAndGlkZS1jdXJzb3Itbm90LWFsbG93ZWQnLFxuICAgIFBPSU5URVI6ICd0aWRlLWN1cnNvci1wb2ludGVyJyxcbiAgICBURVhUOiAndGlkZS1jdXJzb3ItdGV4dCcsXG4gIH0sXG4gIERJU1BMQVk6IHtcbiAgICBCTE9DSzogJ3RpZGUtZGlzcGxheS1ibG9jaycsXG4gICAgQ09OVEVOVFM6ICd0aWRlLWRpc3BsYXktY29udGVudHMnLFxuICAgIEZMRVg6ICd0aWRlLWRpc3BsYXktZmxleCcsXG4gICAgR1JJRDogJ3RpZGUtZGlzcGxheS1ncmlkJyxcbiAgICBJTklUSUFMOiAndGlkZS1kaXNwbGF5LWluaXRpYWwnLFxuICAgIElOTElORTogJ3RpZGUtZGlzcGxheS1pbmxpbmUnLFxuICAgIElOTElORV9CTE9DSzogJ3RpZGUtZGlzcGxheS1pbmxpbmUtYmxvY2snLFxuICAgIElOTElORV9GTEVYOiAndGlkZS1kaXNwbGF5LWlubGluZS1mbGV4JyxcbiAgICBOT05FOiAndGlkZS1kaXNwbGF5LW5vbmUnLFxuICB9LFxuICBFTExJUFNJUzogJ3RpZGUtZWxsaXBzaXMnLFxuICBGTEVYOiB7XG4gICAgQkFTSVM6IHtcbiAgICAgIEFVVE86ICd0aWRlLWZsZXgtYmFzaXMtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1mbGV4LWJhc2lzLTAnLFxuICAgIH0sXG4gICAgRElSRUNUSU9OOiB7XG4gICAgICBDT0xVTU46ICd0aWRlLWZsZXgtY29sdW1uJyxcbiAgICAgIENPTFVNTl9SRVZFUlNFOiAndGlkZS1mbGV4LWNvbHVtbi1yZXZlcnNlJyxcbiAgICAgIFJPVzogJ3RpZGUtZmxleC1yb3cnLFxuICAgICAgUk9XX1JFVkVSU0U6ICd0aWRlLWZsZXgtcm93LXJldmVyc2UnLFxuICAgIH0sXG4gICAgR1JPVzoge1xuICAgICAgT0ZGOiAndGlkZS1ncm93LW5vbmUnLFxuICAgICAgT046ICd0aWRlLWdyb3cnLFxuICAgIH0sXG4gICAgU0hSSU5LOiB7XG4gICAgICBPRkY6ICd0aWRlLXNocmluay1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1zaHJpbmsnLFxuICAgIH0sXG4gICAgV1JBUDogJ3RpZGUtZmxleC13cmFwJyxcbiAgfSxcbiAgRk9OVDoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWZvbnQtZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1mb250LWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1mb250LXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1mb250LXdhcm5pbmcnLFxuICAgICAgfSxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWZvbnQtb24tcHJpbWFyeScsXG4gICAgICBTRUNPTkRBUlk6ICd0aWRlLWZvbnQtb24tc2Vjb25kYXJ5JyxcbiAgICAgIFNVUkZBQ0U6IHtcbiAgICAgICAgQlJBTkQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1icmFuZCcsXG4gICAgICAgIERFRkFVTFQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZScsXG4gICAgICAgIElOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1pbnZlcnNlJyxcbiAgICAgICAgVkFSSUFOVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQnLFxuICAgICAgICBWQVJJQU5UX0lOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS12YXJpYW50LWludmVyc2UnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIFJPTEU6IHtcbiAgICAgIERJU1BMQVlfMTogJ3RpZGUtdHlwb2dyYXBoeS1kaXNwbGF5LTEnLFxuICAgICAgSEVBRExJTkVfMTogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0xJyxcbiAgICAgIEhFQURMSU5FXzI6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMicsXG4gICAgICBIRUFETElORV8zOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTMnLFxuICAgICAgVElUTEVfMTogJ3RpZGUtdHlwb2dyYXBoeS10aXRsZS0xJyxcbiAgICAgIFRJVExFXzI6ICd0aWRlLXR5cG9ncmFwaHktdGl0bGUtMicsXG4gICAgICBCT0RZXzE6ICd0aWRlLXR5cG9ncmFwaHktYm9keS0xJyxcbiAgICAgIEJPRFlfMjogJ3RpZGUtdHlwb2dyYXBoeS1ib2R5LTInLFxuICAgICAgTEFCRUxfMTogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0xJyxcbiAgICAgIExBQkVMXzFfU0VNSUJPTEQ6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMS1zZW1pYm9sZCcsXG4gICAgICBMQUJFTF8yOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTInLFxuICAgICAgTEFCRUxfMl9TRU1JQk9MRDogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0yLXNlbWlib2xkJyxcbiAgICAgIExBQkVMXzM6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMycsXG4gICAgICBMSU5LXzE6ICd0aWRlLXR5cG9ncmFwaHktbGluay0xJyxcbiAgICAgIExJTktfMjogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTInLFxuICAgICAgTElOS18zOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMycsXG4gICAgICBCVVRUT05fMTogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMScsXG4gICAgICBCVVRUT05fMjogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMicsXG4gICAgfSxcbiAgICBTSVpFOiB7XG4gICAgICBUV0VMVkU6ICd0aWRlLWZvbnQtMTInLFxuICAgICAgRk9VUlRFRU46ICd0aWRlLWZvbnQtMTQnLFxuICAgICAgU0lYVEVFTjogJ3RpZGUtZm9udC0xNicsXG4gICAgICBUV0VOVFk6ICd0aWRlLWZvbnQtMjAnLFxuICAgICAgVFdFTlRZX0ZPVVI6ICd0aWRlLWZvbnQtMjQnLFxuICAgICAgVEhJUlRZX1RXTzogJ3RpZGUtZm9udC0zMicsXG4gICAgfSxcbiAgICBXRUlHSFQ6IHtcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtZm9udC00MDAnLFxuICAgICAgRklWRV9IVU5EUkVEOiAndGlkZS1mb250LTUwMCcsXG4gICAgICBTSVhfSFVORFJFRDogJ3RpZGUtZm9udC02MDAnLFxuICAgICAgU0VWRU5fSFVORFJFRDogJ3RpZGUtZm9udC03MDAnLFxuICAgIH0sXG4gIH0sXG4gIEdBUDoge1xuICAgIFpFUk86ICd0aWRlLWdhcC0wJyxcbiAgICBRVUFSVEVSOiAndGlkZS1nYXAtMS80JyxcbiAgICBIQUxGOiAndGlkZS1nYXAtMS8yJyxcbiAgICBPTkU6ICd0aWRlLWdhcC0xJyxcbiAgICBUV086ICd0aWRlLWdhcC0yJyxcbiAgICBGT1VSOiAndGlkZS1nYXAtNCcsXG4gIH0sXG4gIEdSSUQ6IHtcbiAgICBFTkQ6IHtcbiAgICAgIE9ORTogJ3RpZGUtZW5kLTEnLFxuICAgICAgVFdPOiAndGlkZS1lbmQtMicsXG4gICAgICBUSFJFRTogJ3RpZGUtZW5kLTMnLFxuICAgICAgRk9VUjogJ3RpZGUtZW5kLTQnLFxuICAgICAgRklWRTogJ3RpZGUtZW5kLTUnLFxuICAgICAgU0lYOiAndGlkZS1lbmQtNicsXG4gICAgICBTRVZFTjogJ3RpZGUtZW5kLTcnLFxuICAgICAgRUlHSFQ6ICd0aWRlLWVuZC04JyxcbiAgICAgIE5JTkU6ICd0aWRlLWVuZC05JyxcbiAgICAgIFRFTjogJ3RpZGUtZW5kLTEwJyxcbiAgICAgIEVMRVZFTjogJ3RpZGUtZW5kLTExJyxcbiAgICAgIFRXRUxWRTogJ3RpZGUtZW5kLTEyJyxcbiAgICAgIFRISVJURUVOOiAndGlkZS1lbmQtMTMnLFxuICAgIH0sXG4gICAgRkxVSUQ6ICd0aWRlLWZsdWlkJyxcbiAgICBJVEVNOiAndGlkZS1ncmlkLWl0ZW0nLFxuICAgIExBWU9VVDogJ3RpZGUtZ3JpZC1sYXlvdXQnLFxuICAgIFNUQVJUOiB7XG4gICAgICBaRVJPOiAndGlkZS1zdGFydC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtc3RhcnQtMScsXG4gICAgICBUV086ICd0aWRlLXN0YXJ0LTInLFxuICAgICAgVEhSRUU6ICd0aWRlLXN0YXJ0LTMnLFxuICAgICAgRk9VUjogJ3RpZGUtc3RhcnQtNCcsXG4gICAgICBGSVZFOiAndGlkZS1zdGFydC01JyxcbiAgICAgIFNJWDogJ3RpZGUtc3RhcnQtNicsXG4gICAgICBTRVZFTjogJ3RpZGUtc3RhcnQtNycsXG4gICAgICBFSUdIVDogJ3RpZGUtc3RhcnQtOCcsXG4gICAgICBOSU5FOiAndGlkZS1zdGFydC05JyxcbiAgICAgIFRFTjogJ3RpZGUtc3RhcnQtMTAnLFxuICAgICAgRUxFVkVOOiAndGlkZS1zdGFydC0xMScsXG4gICAgICBUV0VMVkU6ICd0aWRlLXN0YXJ0LTEyJyxcbiAgICB9LFxuICAgIFhMOiAndGlkZS1ncmlkLXhsJyxcbiAgfSxcbiAgSEVJR0hUOiB7XG4gICAgQVVUTzogJ3RpZGUtaGVpZ2h0LWF1dG8nLFxuICAgIFpFUk86ICd0aWRlLWhlaWdodC0wJyxcbiAgICBGVUxMOiAndGlkZS1oZWlnaHQtZnVsbCcsXG4gICAgTUFYX0ZVTEw6ICd0aWRlLW1heC1oZWlnaHQtZnVsbCcsXG4gIH0sXG4gIElTT0xBVElPTjoge1xuICAgIElTT0xBVEU6ICd0aWRlLWlzb2xhdGUnLFxuICB9LFxuICBMSVNUX0JVTExFVFM6IHtcbiAgICBPRkY6ICd0aWRlLWxpc3Qtbm9uZScsXG4gIH0sXG4gIE1BUkdJTjoge1xuICAgIEJPVFRPTToge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1ib3R0b20tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1ib3R0b20tMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tYm90dG9tLTQnLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tNCcsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tbGVmdC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1sZWZ0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLWxlZnQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1sZWZ0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tbGVmdC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTQnLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1yaWdodC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1yaWdodC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTQnLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tdG9wLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXRvcC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi10b3AtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi10b3AtNCcsXG4gICAgfSxcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4teC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi14LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXgtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi14LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi14LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4teC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi14LTQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXktMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXktMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXktMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi15LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXktNCcsXG4gICAgfSxcbiAgfSxcbiAgT0JKRUNUOiB7XG4gICAgQ0VOVEVSOiAndGlkZS1vYmplY3QtY2VudGVyJyxcbiAgICBDT05UQUlOOiAndGlkZS1vYmplY3QtY29udGFpbicsXG4gICAgQ09WRVI6ICd0aWRlLW9iamVjdC1jb3ZlcicsXG4gICAgU0NBTEVfRE9XTjogJ3RpZGUtb2JqZWN0LXNjYWxlLWRvd24nLFxuICB9LFxuICBPUEFDSVRZOiB7XG4gICAgT0ZGOiAndGlkZS1vcGFjaXR5LW5vbmUnLFxuICAgIE9OOiAndGlkZS1vcGFjaXR5JyxcbiAgfSxcbiAgT1ZFUkZMT1c6IHtcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS14LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14LWhpZGRlbicsXG4gICAgICBTQ1JPTEw6ICd0aWRlLXgtc2Nyb2xsJyxcbiAgICB9LFxuICAgIFhZOiB7XG4gICAgICBBVVRPOiAndGlkZS14eS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteHktaGlkZGVuJyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXktYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXktaGlkZGVuJyxcbiAgICB9LFxuICB9LFxuICBQQURESU5HOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1ib3R0b20tMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWJvdHRvbS00JyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLTQnLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1sZWZ0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWxlZnQtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1yaWdodC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1yaWdodC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctdG9wLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctdG9wLTQnLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy14LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy14LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy14LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXgtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXktMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXktMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXktMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteS00JyxcbiAgICB9LFxuICB9LFxuICBQT0lOVEVSX0VWRU5UUzoge1xuICAgIE9GRjogJ3RpZGUtcG9pbnRlci1ldmVudHMtbm9uZScsXG4gICAgT046ICd0aWRlLXBvaW50ZXItZXZlbnRzJyxcbiAgfSxcbiAgUE9TSVRJT046IHtcbiAgICBBQlNPTFVURTogJ3RpZGUtcG9zaXRpb24tYWJzb2x1dGUnLFxuICAgIEZJWEVEOiAndGlkZS1wb3NpdGlvbi1maXhlZCcsXG4gICAgUkVMQVRJVkU6ICd0aWRlLXBvc2l0aW9uLXJlbGF0aXZlJyxcbiAgICBTVEFUSUM6ICd0aWRlLXBvc2l0aW9uLXN0YXRpYycsXG4gICAgU1RJQ0tZOiAndGlkZS1wb3NpdGlvbi1zdGlja3knLFxuICB9LFxuICBQT1NJVElPTklORzoge1xuICAgIEJPVFRPTTogJ3RpZGUtYm90dG9tLTAnLFxuICAgIExFRlQ6ICd0aWRlLWxlZnQtMCcsXG4gICAgUklHSFQ6ICd0aWRlLXJpZ2h0LTAnLFxuICAgIFRPUDogJ3RpZGUtdG9wLTAnLFxuICB9LFxuICBSQVRJTzoge1xuICAgIE9ORV9UT19PTkU6ICd0aWRlLXJhdGlvLTEvMScsXG4gICAgU0lYVEVFTl9UT19OSU5FOiAndGlkZS1yYXRpby0xNi85JyxcbiAgICBUSFJFRV9UT19UV086ICd0aWRlLXJhdGlvLTMvMicsXG4gIH0sXG4gIFNDUk9MTEJBUjoge1xuICAgIE9GRjogJ3RpZGUtc2Nyb2xsYmFyLW5vbmUnLFxuICB9LFxuICBTSEFET1c6IHtcbiAgICBJTklUSUFMOiAndGlkZS1zaGFkb3ctaW5pdGlhbCcsXG4gICAgQk9UVE9NOiAndGlkZS1zaGFkb3ctYm90dG9tJyxcbiAgICBUT1A6ICd0aWRlLXNoYWRvdy10b3AnLFxuICAgIFRFWFQ6ICd0aWRlLXNoYWRvdy10ZXh0JyxcbiAgfSxcbiAgU05BUDoge1xuICAgIE9OOiAndGlkZS1zY3JvbGwtc25hcCcsXG4gIH0sXG4gIFNOQVBfQUxJR046IHtcbiAgICBTVEFSVDogJ3RpZGUtc2Nyb2xsLXNuYXAtc3RhcnQnLFxuICB9LFxuICBURVhUX1RSQU5TRk9STToge1xuICAgIExPV0VSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1sb3dlcicsXG4gICAgTk9ORTogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbm9uZScsXG4gICAgVVBQRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLXVwcGVyJyxcbiAgfSxcbiAgVU5ERVJMSU5FOiB7XG4gICAgSE9WRVI6ICd0aWRlLXVuZGVybGluZS1ob3ZlcicsXG4gICAgT0ZGOiAndGlkZS11bmRlcmxpbmUtbm9uZScsXG4gICAgT046ICd0aWRlLXVuZGVybGluZScsXG4gIH0sXG4gIFZJU0lCSUxJVFk6IHtcbiAgICBPRkY6ICd0aWRlLXZpc2libGUtbm9uZScsXG4gICAgT046ICd0aWRlLXZpc2libGUnLFxuICB9LFxuICBXSElURVNQQUNFX1dSQVA6IHtcbiAgICBPRkY6ICd0aWRlLXdoaXRlc3BhY2Utbm93cmFwJyxcbiAgfSxcbiAgV0lEVEg6IHtcbiAgICBBVVRPOiAndGlkZS13aWR0aC1hdXRvJyxcbiAgICBaRVJPOiAndGlkZS13aWR0aC0wJyxcbiAgICBGVUxMOiAndGlkZS13aWR0aC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LXdpZHRoLWZ1bGwnLFxuICB9LFxuICBaX0lOREVYOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtei1pbmRleC1pbml0aWFsJyxcbiAgICBPTkU6ICd0aWRlLXotaW5kZXgtMScsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBDc3NVdGlsaXR5ID0gKHR5cGVvZiBDU1MpW2tleW9mIHR5cGVvZiBDU1NdO1xuXG5leHBvcnQgY29uc3QgY3NzU29ydE9yZGVyID0gW1xuICBDU1MuRElTUExBWS5CTE9DSyxcbiAgQ1NTLkRJU1BMQVkuQ09OVEVOVFMsXG4gIENTUy5ESVNQTEFZLkZMRVgsXG4gIENTUy5ESVNQTEFZLkdSSUQsXG4gIENTUy5ESVNQTEFZLk5PTkUsXG4gIENTUy5ESVNQTEFZLklOSVRJQUwsXG4gIENTUy5ESVNQTEFZLklOTElORSxcbiAgQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLFxuICBDU1MuRElTUExBWS5JTkxJTkVfRkxFWCxcbiAgQ1NTLkFYSVMxLkFST1VORCxcbiAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gIENTUy5BWElTMS5DRU5URVIsXG4gIENTUy5BWElTMS5FTkQsXG4gIENTUy5BWElTMS5TVEFSVCxcbiAgQ1NTLkFYSVMyLkFST1VORCxcbiAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgQ1NTLkFYSVMyLkVORCxcbiAgQ1NTLkFYSVMyLlNUQVJULFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OX1JFVkVSU0UsXG4gIENTUy5GTEVYLkRJUkVDVElPTi5ST1csXG4gIENTUy5GTEVYLkRJUkVDVElPTi5ST1dfUkVWRVJTRSxcbiAgQ1NTLkdBUC5PTkUsXG4gIENTUy5HQVAuSEFMRixcbiAgQ1NTLkdBUC5RVUFSVEVSLFxuICBDU1MuR0FQLlRXTyxcbiAgQ1NTLkdBUC5GT1VSLFxuICBDU1MuRkxFWC5CQVNJUy5aRVJPLFxuICBDU1MuRkxFWC5HUk9XLk9OLFxuICBDU1MuRkxFWC5HUk9XLk9GRixcbiAgQ1NTLkZMRVguU0hSSU5LLk9OLFxuICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICBDU1MuRkxFWC5XUkFQLFxuICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gIENTUy5QT1NJVElPTi5GSVhFRCxcbiAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICBDU1MuUE9TSVRJT04uU1RJQ0tZLFxuICBDU1MuUE9TSVRJT05JTkcuVE9QLFxuICBDU1MuUE9TSVRJT05JTkcuUklHSFQsXG4gIENTUy5QT1NJVElPTklORy5CT1RUT00sXG4gIENTUy5QT1NJVElPTklORy5MRUZULFxuICBDU1MuQk9YX1NJWklORy5CT1JERVJfQk9YLFxuICBDU1MuQk9YX1NJWklORy5DT05URU5UX0JPWCxcbiAgQ1NTLk1BUkdJTi5GVUxMLlpFUk8sXG4gIENTUy5NQVJHSU4uRlVMTC5PTkUsXG4gIENTUy5NQVJHSU4uRlVMTC5IQUxGLFxuICBDU1MuTUFSR0lOLkZVTEwuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5GVUxMLlRXTyxcbiAgQ1NTLk1BUkdJTi5GVUxMLkZPVVIsXG4gIENTUy5NQVJHSU4uWS5aRVJPLFxuICBDU1MuTUFSR0lOLlkuT05FLFxuICBDU1MuTUFSR0lOLlkuSEFMRixcbiAgQ1NTLk1BUkdJTi5ZLlFVQVJURVIsXG4gIENTUy5NQVJHSU4uWS5UV08sXG4gIENTUy5NQVJHSU4uWS5GT1VSLFxuICBDU1MuTUFSR0lOLlRPUC5aRVJPLFxuICBDU1MuTUFSR0lOLlRPUC5PTkUsXG4gIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gIENTUy5NQVJHSU4uVE9QLlFVQVJURVIsXG4gIENTUy5NQVJHSU4uVE9QLlRXTyxcbiAgQ1NTLk1BUkdJTi5UT1AuRk9VUixcbiAgQ1NTLk1BUkdJTi5YLlpFUk8sXG4gIENTUy5NQVJHSU4uWC5PTkUsXG4gIENTUy5NQVJHSU4uWC5IQUxGLFxuICBDU1MuTUFSR0lOLlguUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5YLlRXTyxcbiAgQ1NTLk1BUkdJTi5YLkZPVVIsXG4gIENTUy5NQVJHSU4uWC5BVVRPLFxuICBDU1MuTUFSR0lOLlJJR0hULlpFUk8sXG4gIENTUy5NQVJHSU4uUklHSFQuT05FLFxuICBDU1MuTUFSR0lOLlJJR0hULkhBTEYsXG4gIENTUy5NQVJHSU4uUklHSFQuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5SSUdIVC5UV08sXG4gIENTUy5NQVJHSU4uUklHSFQuRk9VUixcbiAgQ1NTLk1BUkdJTi5SSUdIVC5BVVRPLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5aRVJPLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5PTkUsXG4gIENTUy5NQVJHSU4uQk9UVE9NLkhBTEYsXG4gIENTUy5NQVJHSU4uQk9UVE9NLlFVQVJURVIsXG4gIENTUy5NQVJHSU4uQk9UVE9NLlRXTyxcbiAgQ1NTLk1BUkdJTi5CT1RUT00uRk9VUixcbiAgQ1NTLk1BUkdJTi5MRUZULlpFUk8sXG4gIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gIENTUy5NQVJHSU4uTEVGVC5IQUxGLFxuICBDU1MuTUFSR0lOLkxFRlQuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5MRUZULlRXTyxcbiAgQ1NTLk1BUkdJTi5MRUZULkZPVVIsXG4gIENTUy5NQVJHSU4uTEVGVC5BVVRPLFxuICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICBDU1MuQk9SREVSLkZVTEwuVFdPLFxuICBDU1MuQk9SREVSLlRPUC5PTkUsXG4gIENTUy5CT1JERVIuVE9QLlRXTyxcbiAgQ1NTLkJPUkRFUi5SSUdIVC5PTkUsXG4gIENTUy5CT1JERVIuUklHSFQuVFdPLFxuICBDU1MuQk9SREVSLkJPVFRPTS5PTkUsXG4gIENTUy5CT1JERVIuQk9UVE9NLlRXTyxcbiAgQ1NTLkJPUkRFUi5MRUZULk9ORSxcbiAgQ1NTLkJPUkRFUi5MRUZULlRXTyxcbiAgQ1NTLkJPUkRFUi5SQURJVVMuT05FLFxuICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICBDU1MuUEFERElORy5GVUxMLlpFUk8sXG4gIENTUy5QQURESU5HLkZVTEwuT05FLFxuICBDU1MuUEFERElORy5GVUxMLkhBTEYsXG4gIENTUy5QQURESU5HLkZVTEwuUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuRlVMTC5UV08sXG4gIENTUy5QQURESU5HLkZVTEwuRk9VUixcbiAgQ1NTLlBBRERJTkcuWS5aRVJPLFxuICBDU1MuUEFERElORy5ZLk9ORSxcbiAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gIENTUy5QQURESU5HLlkuVFdPLFxuICBDU1MuUEFERElORy5ZLkZPVVIsXG4gIENTUy5QQURESU5HLlRPUC5aRVJPLFxuICBDU1MuUEFERElORy5UT1AuT05FLFxuICBDU1MuUEFERElORy5UT1AuSEFMRixcbiAgQ1NTLlBBRERJTkcuVE9QLlFVQVJURVIsXG4gIENTUy5QQURESU5HLlRPUC5UV08sXG4gIENTUy5QQURESU5HLlRPUC5GT1VSLFxuICBDU1MuUEFERElORy5YLlpFUk8sXG4gIENTUy5QQURESU5HLlguT05FLFxuICBDU1MuUEFERElORy5YLkhBTEYsXG4gIENTUy5QQURESU5HLlguUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuWC5UV08sXG4gIENTUy5QQURESU5HLlguRk9VUixcbiAgQ1NTLlBBRERJTkcuUklHSFQuWkVSTyxcbiAgQ1NTLlBBRERJTkcuUklHSFQuT05FLFxuICBDU1MuUEFERElORy5SSUdIVC5IQUxGLFxuICBDU1MuUEFERElORy5SSUdIVC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5SSUdIVC5UV08sXG4gIENTUy5QQURESU5HLlJJR0hULkZPVVIsXG4gIENTUy5QQURESU5HLkJPVFRPTS5aRVJPLFxuICBDU1MuUEFERElORy5CT1RUT00uT05FLFxuICBDU1MuUEFERElORy5CT1RUT00uSEFMRixcbiAgQ1NTLlBBRERJTkcuQk9UVE9NLlFVQVJURVIsXG4gIENTUy5QQURESU5HLkJPVFRPTS5UV08sXG4gIENTUy5QQURESU5HLkJPVFRPTS5GT1VSLFxuICBDU1MuUEFERElORy5MRUZULlpFUk8sXG4gIENTUy5QQURESU5HLkxFRlQuT05FLFxuICBDU1MuUEFERElORy5MRUZULkhBTEYsXG4gIENTUy5QQURESU5HLkxFRlQuUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuTEVGVC5UV08sXG4gIENTUy5QQURESU5HLkxFRlQuRk9VUixcbiAgQ1NTLldJRFRILk1BWF9GVUxMLFxuICBDU1MuV0lEVEguWkVSTyxcbiAgQ1NTLldJRFRILkZVTEwsXG4gIENTUy5IRUlHSFQuWkVSTyxcbiAgQ1NTLkhFSUdIVC5GVUxMLFxuICBDU1MuQUxJR04uWS5NSURETEUsXG4gIENTUy5CUkVBS19XT1JELFxuICBDU1MuQ1VSU09SLk5PVF9BTExPV0VELFxuICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gIENTUy5DVVJTT1IuVEVYVCxcbiAgQ1NTLkZPTlQuU0laRS5UV0VMVkUsXG4gIENTUy5GT05ULlNJWkUuRk9VUlRFRU4sXG4gIENTUy5GT05ULlNJWkUuU0lYVEVFTixcbiAgQ1NTLkZPTlQuU0laRS5UV0VOVFksXG4gIENTUy5GT05ULlNJWkUuVFdFTlRZX0ZPVVIsXG4gIENTUy5GT05ULlNJWkUuVEhJUlRZX1RXTyxcbiAgQ1NTLkZPTlQuV0VJR0hULkZPVVJfSFVORFJFRCxcbiAgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRCxcbiAgQ1NTLkZPTlQuV0VJR0hULlNJWF9IVU5EUkVELFxuICBDU1MuRk9OVC5XRUlHSFQuU0VWRU5fSFVORFJFRCxcbiAgQ1NTLkxJU1RfQlVMTEVUUy5PRkYsXG4gIENTUy5PQkpFQ1QuQ0VOVEVSLFxuICBDU1MuT0JKRUNULkNPTlRBSU4sXG4gIENTUy5PQkpFQ1QuQ09WRVIsXG4gIENTUy5PQkpFQ1QuU0NBTEVfRE9XTixcbiAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICBDU1MuU0NST0xMQkFSLk9GRixcbiAgQ1NTLlNIQURPVy5CT1RUT00sXG4gIENTUy5TSEFET1cuVE9QLFxuICBDU1MuU05BUC5PTixcbiAgQ1NTLlNOQVBfQUxJR04uU1RBUlQsXG4gIENTUy5BTElHTi5YLkxFRlQsXG4gIENTUy5BTElHTi5YLkNFTlRFUixcbiAgQ1NTLkFMSUdOLlguUklHSFQsXG4gIENTUy5URVhUX1RSQU5TRk9STS5MT1dFUixcbiAgQ1NTLlRFWFRfVFJBTlNGT1JNLk5PTkUsXG4gIENTUy5URVhUX1RSQU5TRk9STS5VUFBFUixcbiAgQ1NTLlVOREVSTElORS5IT1ZFUixcbiAgQ1NTLlVOREVSTElORS5PRkYsXG4gIENTUy5VTkRFUkxJTkUuT04sXG4gIENTUy5WSVNJQklMSVRZLk9OLFxuICBDU1MuVklTSUJJTElUWS5PRkYsXG4gIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICBDU1MuT1ZFUkZMT1cuWFkuQVVUTyxcbiAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgQ1NTLk9WRVJGTE9XLlguQVVUTyxcbiAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICBDU1MuT1ZFUkZMT1cuWC5TQ1JPTEwsXG4gIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gIENTUy5PVkVSRkxPVy5ZLkhJRERFTixcbiAgQ1NTLlpfSU5ERVguT05FLFxuXSBhcyBjb25zdDtcbiIsImV4cG9ydCBjb25zdCBSRUFMTSA9IHtcbiAgQUVSTzogJ2Flcm8nLFxuICBBVFY6ICdhdHYnLFxuICBCT0FUTUFSVDogJ2JvYXRtYXJ0JyxcbiAgQ1lDTEU6ICdjeWNsZScsXG4gIEVRVUlQTUVOVDogJ2VxdWlwbWVudCcsXG4gIFBXQzogJ3B3YycsXG4gIFJWOiAncnYnLFxuICBTTk9XOiAnc25vdycsXG4gIFRSVUNLOiAndHJ1Y2snLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUmVhbG1LZXkgPSBrZXlvZiB0eXBlb2YgUkVBTE07XG5leHBvcnQgdHlwZSBSZWFsbSA9ICh0eXBlb2YgUkVBTE0pW1JlYWxtS2V5XTtcbiIsImV4cG9ydCBjb25zdCBTSVpFID0ge1xuICBMQVJHRTogJ2xhcmdlJyxcbiAgU01BTEw6ICdzbWFsbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTaXplID0gKHR5cGVvZiBTSVpFKVtrZXlvZiB0eXBlb2YgU0laRV07XG5cbmV4cG9ydCBjb25zdCBTSVpFX0JVVFRPTiA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZUJ1dHRvbiA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuIiwiY29uc3QgY2FwaXRhbGl6ZUZpcnN0ID0gKHN0cmluZzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XG59O1xuXG5jb25zdCBmb3JtYXRDYW1lbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvXltcXHNfLV0vLCAnJylcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IHdvcmQgOiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdEtlYmFiQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnLScpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdExhYmVsID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbGFiZWxNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgZmFsc2U6ICdObycsXG4gICAgdHJ1ZTogJ1llcycsXG4gIH07XG4gIHJldHVybiBPYmplY3QuaGFzT3duKGxhYmVsTWFwLCB2YWx1ZSkgPyBsYWJlbE1hcFt2YWx1ZV0gOiB2YWx1ZTtcbn07XG5cbmNvbnN0IGZvcm1hdE51bWJlciA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIGlmIChOdW1iZXIoZGlnaXRzKSkge1xuICAgICAgb3V0cHV0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KE51bWJlcihkaWdpdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0ID0gJzAnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQYXNjYWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBob25lID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IFN0cmluZyhpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcblxuICBzd2l0Y2ggKGRpZ2l0cy5sZW5ndGgpIHtcbiAgICBjYXNlIDc6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzLCA2KX0tJHtkaWdpdHMuc2xpY2UoNil9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMSl9LSR7ZGlnaXRzLnNsaWNlKDEsIDQpfS0ke2RpZ2l0cy5zbGljZSg0LCA3KX0tJHtkaWdpdHMuc2xpY2UoNyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBvdXRwdXQgPSBkaWdpdHM7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQcmljZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJCR7b3V0cHV0fWA7XG59O1xuXG5jb25zdCBmb3JtYXRRdW90ZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnXCInKSAmJiB2YWx1ZS5lbmRzV2l0aCgnXCInKSkge1xuICAgIHJldHVybiB2YWx1ZS5zbGljZSgxLCAtMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5jb25zdCBmb3JtYXRTZW50ZW5jZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBzZW50ZW5jZUNhc2UgPSBpbnB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGxvd2VyQ2FzZSA9IGlucHV0XG4gICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpO1xuXG4gICAgc2VudGVuY2VDYXNlID0gbG93ZXJDYXNlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBsb3dlckNhc2Uuc2xpY2UoMSk7XG4gIH1cblxuICByZXR1cm4gc2VudGVuY2VDYXNlO1xufTtcblxuY29uc3QgZm9ybWF0U25ha2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICdfJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VGl0bGVDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRVcmxGcm9tUm9vdCA9ICh1cmw6IHN0cmluZykgPT4ge1xuICBjb25zdCB1cmxGb3JtYXR0ZWQgPSB1cmwuc3BsaXQoJy5jb20vJyk7XG5cbiAgcmV0dXJuIHVybEZvcm1hdHRlZC5sZW5ndGggPiAxID8gYC8ke3VybEZvcm1hdHRlZFsxXX1gIDogdXJsO1xufTtcblxuY29uc3QgZm9ybWF0V2VpZ2h0ID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAke291dHB1dH0gbGJzYDtcbn07XG5cbmNvbnN0IGdldEFydGljbGUgPSAobm91bjogc3RyaW5nLCBpc1BsdXJhbCA9IGZhbHNlLCBpc0RlZmluaXRlID0gZmFsc2UpID0+IHtcbiAgY29uc3Qgdm93ZWxzID0gWydhJywgJ2UnLCAnaScsICdvJywgJ3UnXTtcbiAgY29uc3QgaXNWb3dlbExlYWRpbmcgPSB2b3dlbHMuaW5jbHVkZXMobm91bi5jaGFyQXQoMCkpO1xuXG4gIHJldHVybiBpc0RlZmluaXRlID8gJ3RoZScgOiBpc1BsdXJhbCA/ICdzb21lJyA6IGlzVm93ZWxMZWFkaW5nID8gJ2FuJyA6ICdhJztcbn07XG5cbmNvbnN0IHByaWNlVG9OdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCckJywgJycpO1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG59O1xuXG5jb25zdCB1bmZvcm1hdFByaWNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dC5yZXBsYWNlKC9cXCQvZywgJycpLnJlcGxhY2UoLywvZywgJycpO1xuICByZXR1cm4gYCR7b3V0cHV0fWA7XG59O1xuXG5leHBvcnQge1xuICBjYXBpdGFsaXplRmlyc3QsXG4gIGZvcm1hdENhbWVsQ2FzZSxcbiAgZm9ybWF0S2ViYWJDYXNlLFxuICBmb3JtYXRMYWJlbCxcbiAgZm9ybWF0TnVtYmVyLFxuICBmb3JtYXRQYXNjYWxDYXNlLFxuICBmb3JtYXRQaG9uZSxcbiAgZm9ybWF0UHJpY2UsXG4gIGZvcm1hdFF1b3RlcyxcbiAgZm9ybWF0U2VudGVuY2VDYXNlLFxuICBmb3JtYXRTbmFrZUNhc2UsXG4gIGZvcm1hdFRpdGxlQ2FzZSxcbiAgZm9ybWF0VXJsRnJvbVJvb3QsXG4gIGZvcm1hdFdlaWdodCxcbiAgZ2V0QXJ0aWNsZSxcbiAgcHJpY2VUb051bWJlcixcbiAgdW5mb3JtYXRQcmljZSxcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgUkVBTE0gfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0UGFzY2FsQ2FzZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaWNvbjogSWNvbjtcbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBwcm9wcy5pY29uO1xuICAgICAgY29uc3QgbmFtZSA9IGZvcm1hdFBhc2NhbENhc2UoaWQpO1xuICAgICAgY29uc3QgW3ByZWZpeF0gPSBpZC5zcGxpdCgnLScpO1xuICAgICAgY29uc3QgcmVhbG1Gb2xkZXIgPSBSRUFMTVtwcmVmaXg/LnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIFJFQUxNXTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IHtcbiAgICAgICAgaWYgKHJlYWxtRm9sZGVyKSB7XG4gICAgICAgICAgcmV0dXJuIGltcG9ydChgLi4vYXNzZXRzL3N2Zy9pY29ucy9yZWFsbS8ke3JlYWxtRm9sZGVyfS9JY29uJHtuYW1lfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL0ljb24ke25hbWV9LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpbm5lclNWRy52YWx1ZSA9IG1hcmtSYXcoY29tcG9uZW50KTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWljb24nLCBwcm9wcy5zaXplXVwiPlxuICAgIDxDb21wb25lbnRcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DS11cIlxuICAgICAgOmRhdGEtaWNvbj1cImljb25cIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICB2LWlmPVwiaW5uZXJTVkdcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlPlxuICAudGlkZS1pY29uIHtcbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbi5zbWFsbCB7XG4gICAgd2lkdGg6IDEuMjVyZW07XG4gICAgaGVpZ2h0OiAxLjI1cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbiBzdmcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB0eXBlIHsgUmVhbG1LZXkgfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcblxuZXhwb3J0IGNvbnN0IElDT04gPSB7XG4gIEFDQ09VTlRfQkFMQU5DRTogJ2FjY291bnQtYmFsYW5jZScsXG4gIEFDVVRFOiAnYWN1dGUnLFxuICBBREQ6ICdhZGQnLFxuICBBSV9ERVNDUklQVElPTjogJ2FpLWRlc2NyaXB0aW9uJyxcbiAgQUxJR05fU1BBQ0VfRVZFTjogJ2FsaWduLXNwYWNlLWV2ZW4nLFxuICBBUFBMRV9QQVk6ICdhcHBsZS1wYXknLFxuICBBUlJPV19CQUNLOiAnYXJyb3ctYmFjaycsXG4gIEFSUk9XX0NZQ0xFOiAnYXJyb3ctY3ljbGUnLFxuICBBUlJPV19GT1JXQVJEOiAnYXJyb3ctZm9yd2FyZCcsXG4gIEFSUk9XX1JJR0hUOiAnYXJyb3ctcmlnaHQnLFxuICBBU1NJR05NRU5UOiAnYXNzaWdubWVudCcsXG4gIEFUVEFDSF9NT05FWTogJ2F0dGFjaC1tb25leScsXG4gIEFVVE9fUkVORVc6ICdhdXRvLXJlbmV3JyxcbiAgQVdBUkRfU1RBUjogJ2F3YXJkLXN0YXInLFxuICBCRUQ6ICdiZWQnLFxuICBCT0xUOiAnYm9sdCcsXG4gIEJPT0tNQVJLOiAnYm9va21hcmsnLFxuICBCVU5LSE9VU0U6ICdidW5raG91c2UnLFxuICBDQUxFTkRBUl9NT05USDogJ2NhbGVuZGFyLW1vbnRoJyxcbiAgQ0FMTDogJ2NhbGwnLFxuICBDQUxMX1FVQUxJVFk6ICdjYWxsLXF1YWxpdHknLFxuICBDQVJfUkVOVEFMOiAnY2FyLXJlbnRhbCcsXG4gIENIRUNLOiAnY2hlY2snLFxuICBDSEVWUk9OX0xFRlQ6ICdjaGV2cm9uLWxlZnQnLFxuICBDSEVWUk9OX1JJR0hUOiAnY2hldnJvbi1yaWdodCcsXG4gIENMRUFSOiAnY2xlYXInLFxuICBDTE9TRTogJ2Nsb3NlJyxcbiAgQ09OVFJBQ1Q6ICdjb250cmFjdCcsXG4gIENSQVNIOiAnY3Jhc2gnLFxuICBEQVNIQk9BUkRfQ1VTVE9NSVpFOiAnZGFzaGJvYXJkLWN1c3RvbWl6ZScsXG4gIERFTEVURTogJ2RlbGV0ZScsXG4gIERJQU1PTkQ6ICdkaWFtb25kJyxcbiAgRElSRUNUSU9OU19CT0FUOiAnZGlyZWN0aW9ucy1ib2F0JyxcbiAgRE9NQUlOOiAnZG9tYWluJyxcbiAgRFJBRlQ6ICdkcmFmdCcsXG4gIEVESVQ6ICdlZGl0JyxcbiAgRU5HSU5FOiAnZW5naW5lJyxcbiAgRU5HSU5FRVJJTkc6ICdlbmdpbmVlcmluZycsXG4gIEVSUk9SOiAnZXJyb3InLFxuICBFWFBBTkRfQ09OVEVOVDogJ2V4cGFuZC1jb250ZW50JyxcbiAgRVhQQU5EX0xFU1M6ICdleHBhbmQtbGVzcycsXG4gIEVYUEFORF9NT1JFOiAnZXhwYW5kLW1vcmUnLFxuICBGQUNFQk9PSzogJ2ZhY2Vib29rJyxcbiAgRkFWT1JJVEU6ICdmYXZvcml0ZScsXG4gIEZBVk9SSVRFX0ZJTExFRDogJ2Zhdm9yaXRlLWZpbGxlZCcsXG4gIEZMQUc6ICdmbGFnJyxcbiAgRk9STUFUX0JPTEQ6ICdmb3JtYXQtYm9sZCcsXG4gIEZPUk1BVF9JVEFMSUM6ICdmb3JtYXQtaXRhbGljJyxcbiAgRk9STUFUX0xJU1RfQlVMTEVURUQ6ICdmb3JtYXQtbGlzdC1idWxsZXRlZCcsXG4gIEZPUlVNOiAnZm9ydW0nLFxuICBHQVM6ICdnYXMnLFxuICBHQVZFTDogJ2dhdmVsJyxcbiAgR0VBUlM6ICdnZWFycycsXG4gIEdMT0JFX0xPQ0FUSU9OX1BJTjogJ2dsb2JlLWxvY2F0aW9uLXBpbicsXG4gIEdPT0dMRTogJ2dvb2dsZScsXG4gIEdPT0dMRV9QQVk6ICdnb29nbGUtcGF5JyxcbiAgR1JJRDogJ2dyaWQnLFxuICBIQU5EU0hBS0U6ICdoYW5kc2hha2UnLFxuICBIQU5EWU1BTjogJ2hhbmR5bWFuJyxcbiAgSEVJR0hUOiAnaGVpZ2h0JyxcbiAgSEVMUDogJ2hlbHAnLFxuICBJTkZPOiAnaW5mbycsXG4gIElORk9STUFUSU9OOiAnaW5mb3JtYXRpb24nLFxuICBJTlNFUlRfVEVYVDogJ2luc2VydC10ZXh0JyxcbiAgSU5TVEFHUkFNOiAnaW5zdGFncmFtJyxcbiAgSU9TX1NIQVJFOiAnaW9zLXNoYXJlJyxcbiAgTEFZT1VUOiAnbGF5b3V0JyxcbiAgTEVWRUxMSU5HX0pBQ0s6ICdsZXZlbGxpbmctamFjaycsXG4gIExJTktFRF9JTjogJ2xpbmtlZCBpbicsXG4gIExPQ0FMX1NISVBQSU5HOiAnbG9jYWwtc2hpcHBpbmcnLFxuICBMT0NLOiAnbG9jaycsXG4gIE1BSUw6ICdtYWlsJyxcbiAgTUVOVTogJ21lbnUnLFxuICBNT05FWV9CQUc6ICdtb25leS1iYWcnLFxuICBNT1JFX0hPUklaOiAnbW9yZS1ob3JpeicsXG4gIE5PVElGSUNBVElPTlM6ICdub3RpZmljYXRpb25zJyxcbiAgT0RPTUVURVI6ICdvZG9tZXRlcicsXG4gIE9QRU5fSU5fTkVXOiAnb3Blbi1pbi1uZXcnLFxuICBQQUxFVFRFOiAncGFsZXR0ZScsXG4gIFBBWVBBTDogJ3BheXBhbCcsXG4gIFBFUlNPTjogJ3BlcnNvbicsXG4gIFBFUlNPTl9TRUFSQ0g6ICdwZXJzb24tc2VhcmNoJyxcbiAgUEhPVE9fQ0FNRVJBOiAncGhvdG8tY2FtZXJhJyxcbiAgUElOVEVSRVNUOiAncGludGVyZXN0JyxcbiAgUExBWV9BUlJPVzogJ3BsYXktYXJyb3cnLFxuICBQT0xJQ1k6ICdwb2xpY3knLFxuICBQT1dFUjogJ3Bvd2VyJyxcbiAgUE9XRVJfT0ZGOiAncG93ZXItb2ZmJyxcbiAgUFJJT1JJVFlfSElHSDogJ3ByaW9yaXR5LWhpZ2gnLFxuICBSRU1PVkU6ICdyZW1vdmUnLFxuICBSRVFVRVNUX1FVT1RFOiAncmVxdWVzdC1xdW90ZScsXG4gIFJFU0VUX1dSRU5DSDogJ3Jlc2V0LXdyZW5jaCcsXG4gIFJPQUQ6ICdyb2FkJyxcbiAgUk9VTkRFRF9DT1JORVI6ICdyb3VuZGVkLWNvcm5lcicsXG4gIFJVTEVSOiAncnVsZXInLFxuICBTQUlMSU5HOiAnc2FpbGluZycsXG4gIFNDSE9PTDogJ3NjaG9vbCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFNFQVRJTkc6ICdzZWF0aW5nJyxcbiAgU0VMTDogJ3NlbGwnLFxuICBTRU5TT1JTOiAnc2Vuc29ycycsXG4gIFNFVFRJTkdTOiAnc2V0dGluZ3MnLFxuICBTSEFSRTogJ3NoYXJlJyxcbiAgU0hJRUxEX0NIRUNLOiAnc2hpZWxkLWNoZWNrJyxcbiAgU0hPUFBJTkdfQ0FSVDogJ3Nob3BwaW5nLWNhcnQnLFxuICBTTEVFUFM6ICdzbGVlcHMnLFxuICBTTVM6ICdzbXMnLFxuICBTTk9XRkxBS0U6ICdzbm93Zmxha2UnLFxuICBTVEFSOiAnc3RhcicsXG4gIFNVTU1BUklaRTogJ3N1bW1hcml6ZScsXG4gIFNXQVBfSE9SSVo6ICdzd2FwLWhvcml6JyxcbiAgU1dBUF9WRVJUOiAnc3dhcC12ZXJ0JyxcbiAgVEhSRUVfRF9ST1RBVElPTjogJ3RocmVlLWQtcm90YXRpb24nLFxuICBUSFVNQl9VUDogJ3RodW1iLXVwJyxcbiAgVFJFTkRJTkdfRE9XTjogJ3RyZW5kaW5nLWRvd24nLFxuICBUUk9QSFk6ICd0cm9waHknLFxuICBUVU5FOiAndHVuZScsXG4gIFRXSVRURVI6ICd0d2l0dGVyJyxcbiAgVU1CUkVMTEE6ICd1bWJyZWxsYScsXG4gIFZFUklGSUVEOiAndmVyaWZpZWQnLFxuICBWSURFT0NBTTogJ3ZpZGVvY2FtJyxcbiAgVklFV19JTl9BUjogJ3ZpZXctaW4tYXInLFxuICBWSVNJQklMSVRZOiAndmlzaWJpbGl0eScsXG4gIFZPTFVNRV9PRkY6ICd2b2x1bWUtb2ZmJyxcbiAgVk9MVU1FX09OOiAndm9sdW1lLW9uJyxcbiAgV0FSRUhPVVNFOiAnd2FyZWhvdXNlJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxuICBXQVRFUjogJ3dhdGVyJyxcbiAgV0VJR0hUOiAnd2VpZ2h0JyxcbiAgV0lEVEg6ICd3aWR0aCcsXG4gIFdPUktTUEFDRV9QUkVNSVVNOiAnd29ya3NwYWNlLXByZW1pdW0nLFxuICBXUkVOQ0g6ICd3cmVuY2gnLFxuICBZT1VUVUJFOiAneW91dHViZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgSUNPTl9SRUFMTSA9IHtcbiAgQVRWOiB7XG4gICAgQVRWOiAnYXR2LWF0dicsXG4gICAgRFVORV9CVUdHWTogJ2F0di1kdW5lLWJ1Z2d5JyxcbiAgICBHT0xGX0NBUlQ6ICdhdHYtZ29sZi1jYXJ0JyxcbiAgICBHT19LQVJUOiAnYXR2LWdvLWthcnQnLFxuICAgIFNBTkRfUkFJTDogJ2F0di1zYW5kLXJhaWwnLFxuICAgIFNJREVfQllfU0lERTogJ2F0di1zaWRlLWJ5LXNpZGUnLFxuICAgIFRSQUlMRVI6ICdhdHYtdHJhaWxlcicsXG4gIH0sXG4gIEJPQVRNQVJUOiB7XG4gICAgUFdDOiAnYm9hdG1hcnQtcHdjJyxcbiAgICBUUkFJTEVSOiAnYm9hdG1hcnQtdHJhaWxlcicsXG4gIH0sXG4gIFJWOiB7XG4gICAgQ0xBU1NfQTogJ3J2LWNsYXNzLWEnLFxuICAgIENMQVNTX0I6ICdydi1jbGFzcy1iJyxcbiAgICBDTEFTU19DOiAncnYtY2xhc3MtYycsXG4gICAgRklGVEhfV0hFRUw6ICdydi1maWZ0aC13aGVlbCcsXG4gICAgRklTSF9IT1VTRTogJ3J2LWZpc2gtaG91c2UnLFxuICAgIFBBUktfTU9ERUw6ICdydi1wYXJrLW1vZGVsJyxcbiAgICBQT1BfVVBfQ0FNUEVSOiAncnYtcG9wLXVwLWNhbXBlcicsXG4gICAgVFJBVkVMX1RSQUlMRVI6ICdydi10cmF2ZWwtdHJhaWxlcicsXG4gICAgVFJVQ0tfQ0FNUEVSOiAncnYtdHJ1Y2stY2FtcGVyJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbnR5cGUgUmVhbG1LZXlzV2l0aEljb25zID0gRXh0cmFjdDxSZWFsbUtleSwga2V5b2YgdHlwZW9mIElDT05fUkVBTE0+O1xudHlwZSBSZWFsbUljb24gPSB7XG4gIFtSZWFsbUtleSBpbiBSZWFsbUtleXNXaXRoSWNvbnNdOiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XVtrZXlvZiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XV07XG59W1JlYWxtS2V5c1dpdGhJY29uc107XG5cbmV4cG9ydCB0eXBlIEdsb2JhbEljb24gPSAodHlwZW9mIElDT04pW2tleW9mIHR5cGVvZiBJQ09OXTtcbmV4cG9ydCB0eXBlIEljb24gPSBHbG9iYWxJY29uIHwgUmVhbG1JY29uO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ3RvZ2dsZSddKTtcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGhhc0JvdHRvbURpdmlkZXI/OiBib29sZWFuO1xuICAgIGhhc1RvcERpdmlkZXI/OiBib29sZWFuO1xuICAgIGlzRXhwYW5kZWQ/OiBib29sZWFuO1xuICAgIGlzT3B0aW9uYWw/OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoYXNCb3R0b21EaXZpZGVyOiBmYWxzZSxcbiAgICBoYXNUb3BEaXZpZGVyOiBmYWxzZSxcbiAgICBpc0V4cGFuZGVkOiBmYWxzZSxcbiAgICBpc09wdGlvbmFsOiBmYWxzZSxcbiAgICBsYWJlbDogJycsXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUNsaWNrID0gKCkgPT4ge1xuICAgIGVtaXQoJ3RvZ2dsZScpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInRpZGUtYWNjb3JkaW9uLWl0ZW1cIj5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc1RvcERpdmlkZXJcIiAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1oZWFkJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5QQURESU5HLlkuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVUb2dnbGVDbGlja1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzFfU0VNSUJPTERdXCI+XG4gICAgICAgIDxzcGFuPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5pc09wdGlvbmFsXCJcbiAgICAgICAgPlxuICAgICAgICAgIChvcHRpb25hbClcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cImlzRXhwYW5kZWQgPyBJQ09OLkVYUEFORF9MRVNTIDogSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWJvZHknLCBwcm9wcy5pc0V4cGFuZGVkID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnLCBDU1MuRElTUExBWS5HUklEXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLk9WRVJGTE9XLlkuSElEREVOLCBDU1MuTUFSR0lOLlkuT05FLCBDU1MuRk9OVC5ST0xFLkJPRFlfMSwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc0JvdHRvbURpdmlkZXJcIiAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFjY29yZGlvbi1ib2R5IHtcbiAgICB0cmFuc2l0aW9uOiBncmlkLXRlbXBsYXRlLXJvd3MgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmV4cGFuZGVkIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmNvbGxhcHNlZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAwZnI7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgRUxFTUVOVCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEVMRU1FTlRfVEVYVF9BU19JQ09OID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBESVY6ICdkaXYnLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFbGVtZW50ID0gKHR5cGVvZiBFTEVNRU5UKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF07XG5leHBvcnQgdHlwZSBFbGVtZW50VGV4dEFzSWNvbiA9ICh0eXBlb2YgRUxFTUVOVF9URVhUX0FTX0lDT04pW2tleW9mIHR5cGVvZiBFTEVNRU5UX1RFWFRfQVNfSUNPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBQUklPUklUWSA9IHtcbiAgUFJJTUFSWTogJ3ByaW1hcnknLFxuICBTRUNPTkRBUlk6ICdzZWNvbmRhcnknLFxuICBURVJUSUFSWTogJ3RlcnRpYXJ5JyxcbiAgUVVBVEVSTkFSWTogJ3F1YXRlcm5hcnknLFxuICBGTE9BVElORzogJ2Zsb2F0aW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFByaW9yaXR5ID0gKHR5cGVvZiBQUklPUklUWSlba2V5b2YgdHlwZW9mIFBSSU9SSVRZXTtcbiIsImV4cG9ydCBjb25zdCBUQVJHRVQgPSB7XG4gIEJMQU5LOiAnX2JsYW5rJyxcbiAgU0VMRjogdW5kZWZpbmVkLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0ID0gKHR5cGVvZiBUQVJHRVQpW2tleW9mIHR5cGVvZiBUQVJHRVRdO1xuIiwiZXhwb3J0IGNvbnN0IEFMRVJUID0ge1xuICBFUlJPUjogJ2Vycm9yJyxcbiAgSU5GTzogJ2luZm8nLFxuICBTVUNDRVNTOiAnc3VjY2VzcycsXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEFsZXJ0ID0gKHR5cGVvZiBBTEVSVClba2V5b2YgdHlwZW9mIEFMRVJUXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQUxFUlQgfSBmcm9tICdAL3R5cGVzL0FsZXJ0JztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEFsZXJ0IH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuICAgIGlzVG9hc3Q/OiBib29sZWFuO1xuICAgIHR5cGU/OiBBbGVydDtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc1RvYXN0OiBmYWxzZSxcbiAgICB0eXBlOiBBTEVSVC5JTkZPLFxuICB9KTtcblxuICBjb25zdCBpY29uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBpY29uOiBJY29uID0gSUNPTi5JTkZPO1xuXG4gICAgc3dpdGNoIChwcm9wcy50eXBlKSB7XG4gICAgICBjYXNlIEFMRVJULkVSUk9SOlxuICAgICAgICBpY29uID0gSUNPTi5FUlJPUjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSBBTEVSVC5JTkZPOlxuICAgICAgICBpY29uID0gSUNPTi5JTkZPO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQUxFUlQuU1VDQ0VTUzpcbiAgICAgICAgaWNvbiA9IElDT04uQ0hFQ0s7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBTEVSVC5XQVJOSU5HOlxuICAgICAgICBpY29uID0gSUNPTi5XQVJOSU5HO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gaWNvbjtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgcHJvcHMudHlwZSxcbiAgICAgICd0aWRlLWFsZXJ0JyxcbiAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgJiYgQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLkVSUk9SLFxuICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyAmJiBDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuSU5GTyxcbiAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1MgJiYgQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLlNVQ0NFU1MsXG4gICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HICYmIENTUy5CRy5HTE9CQUwuU1VSRkFDRS5XQVJOSU5HLFxuICAgICAgcHJvcHMuaXNUb2FzdCA/IENTUy5TSEFET1cuQk9UVE9NIDogJycsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFsZXJ0LWljb24nLFxuICAgICAgICBDU1MuUEFERElORy5GVUxMLkhBTEYsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuSU5WRVJTRSxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgJiYgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5JTkZPICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5JTkZPLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5TVUNDRVNTLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5XQVJOSU5HLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uIDppY29uPVwiaWNvblwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hbGVydC1oZWFkaW5nJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUl1cIj5cbiAgICAgIDxoMiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xELCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICAgIDwvaDI+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hbGVydC1jbG9zZScsIENTUy5BWElTMi5DRU5URVIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIGFsZXJ0XCJcbiAgICAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtYm9keScsIENTUy5GT05ULlJPTEUuTEFCRUxfMSwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiPlxuICAgICAgPHNsb3QgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hbGVydCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICAgICdpY29uIGhlYWRpbmcgY2xvc2UnXG4gICAgICAnLiBib2R5IC4nO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnIgYXV0bztcbiAgICBncmlkLWNvbHVtbi1nYXA6IDAuNXJlbTtcbiAgICBtYXgtd2lkdGg6IDQwcmVtO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaWNvbiB7XG4gICAgZ3JpZC1hcmVhOiBpY29uO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaGVhZGluZyB7XG4gICAgZ3JpZC1hcmVhOiBoZWFkaW5nO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtY2xvc2Uge1xuICAgIGdyaWQtYXJlYTogY2xvc2U7XG4gIH1cblxuICAudGlkZS1hbGVydC1ib2R5IHtcbiAgICBncmlkLWFyZWE6IGJvZHk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFNvdXJjZSB9IGZyb20gJ0AvdHlwZXMvU291cmNlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGFsdDogc3RyaW5nO1xuICAgIGhlaWdodD86IHN0cmluZztcbiAgICBpc0xhenk/OiBib29sZWFuO1xuICAgIHNvdXJjZXM/OiBTb3VyY2VbXTtcbiAgICBzcmM/OiBzdHJpbmc7XG4gICAgd2lkdGg/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhbHQ6ICcnLFxuICAgIGhlaWdodDogdW5kZWZpbmVkLFxuICAgIGlzTGF6eTogdHJ1ZSxcbiAgICBzb3VyY2VzOiAoKSA9PiBbXSxcbiAgICBzcmM6IHVuZGVmaW5lZCxcbiAgICB3aWR0aDogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBwaWN0dXJlID0gcmVmKCk7XG4gIGNvbnN0IGltZyA9IHJlZigpO1xuXG4gIGNvbnN0IGltYWdlRGVmYXVsdCA9ICdodHRwczovL2Nkbi1zdGF0aWMtcmVjLnRpbGFicy5pby9pbWFnZS1jb21pbmctc29vbi01MTIucG5nJztcblxuICBjb25zdCBzZXRJbWFnZUZyb21EZWZhdWx0ID0gKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRTcmMgPSBpbWcudmFsdWU/LmN1cnJlbnRTcmM7XG4gICAgY29uc3QgcGljdHVyZVNvdXJjZSA9IHBpY3R1cmUudmFsdWU/LnF1ZXJ5U2VsZWN0b3IoYHNvdXJjZVtzcmNzZXQ9XCIke2N1cnJlbnRTcmN9XCJdYCk7XG5cbiAgICBpZiAoY3VycmVudFNyYyAmJiBwaWN0dXJlU291cmNlKSB7XG4gICAgICBwaWN0dXJlU291cmNlLnNyY3NldCA9IGltYWdlRGVmYXVsdDtcbiAgICB9IGVsc2UgaWYgKGltZy52YWx1ZSkge1xuICAgICAgaW1nLnZhbHVlLnNyYyA9IGltYWdlRGVmYXVsdDtcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8cGljdHVyZVxuICAgIDpjbGFzcz1cIlsndGlkZS1pbWFnZScsIENTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgcmVmPVwicGljdHVyZVwiXG4gICAgOnN0eWxlPVwiXG4gICAgICB3aWR0aCB8fCBoZWlnaHRcbiAgICAgICAgPyB7XG4gICAgICAgICAgICB3aWR0aDogd2lkdGggfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICBcIlxuICA+XG4gICAgPHNvdXJjZVxuICAgICAgOmtleT1cInNvdXJjZS5zcmNzZXRcIlxuICAgICAgOm1lZGlhPVwiYChtaW4td2lkdGg6JHtzb3VyY2UubWVkaWF9cHgpYFwiXG4gICAgICA6c3Jjc2V0PVwic291cmNlLnNyY3NldFwiXG4gICAgICB2LWZvcj1cInNvdXJjZSBpbiBwcm9wcy5zb3VyY2VzXCJcbiAgICAvPlxuXG4gICAgPGltZ1xuICAgICAgOmFsdD1cImFsdFwiXG4gICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5IRUlHSFQuRlVMTCwgQ1NTLk9CSkVDVC5DRU5URVIsIENTUy5PQkpFQ1QuQ09WRVJdXCJcbiAgICAgIDpmZXRjaHByaW9yaXR5PVwiaXNMYXp5ID8gdW5kZWZpbmVkIDogJ2hpZ2gnXCJcbiAgICAgIDpsb2FkaW5nPVwicHJvcHMuaXNMYXp5ID8gJ2xhenknIDogJ2VhZ2VyJ1wiXG4gICAgICByZWY9XCJpbWdcIlxuICAgICAgOnNyYz1cInNyYyA/PyBpbWFnZURlZmF1bHRcIlxuICAgICAgQGVycm9yPVwic2V0SW1hZ2VGcm9tRGVmYXVsdFwiXG4gICAgLz5cbiAgPC9waWN0dXJlPlxuPC90ZW1wbGF0ZT5cbiIsImV4cG9ydCBjb25zdCBCQURHRV9UUlVTVEVEID0ge1xuICBZRUFSU18xMDogJzEwJyxcbiAgWUVBUlNfMTU6ICcxNScsXG4gIFlFQVJTXzU6ICc1Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEJhZGdlVHJ1c3RlZFllYXJzID0gKHR5cGVvZiBCQURHRV9UUlVTVEVEKVtrZXlvZiB0eXBlb2YgQkFER0VfVFJVU1RFRF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBUYWIgfSBmcm9tICdAL3R5cGVzL1RhYic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhY3RpdmVUYWI6IG51bWJlcjtcbiAgICB0YWJzOiBUYWJbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFjdGl2ZVRhYjogMCxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBlbWl0KCdjaGFuZ2UnLCBpbmRleCk7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uLXNlZ21lbnRlZCcsXG4gICAgICBDU1MuQkcuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgXVwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWJ1dHRvbi1zZWdtZW50ZWQtdGFiJyxcbiAgICAgICAgaW5kZXggPT09IGFjdGl2ZVRhYlxuICAgICAgICAgID8gW0NTUy5CRy5TVVJGQUNFLkRFRkFVTFQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLlNIQURPVy5CT1RUT01dXG4gICAgICAgICAgOiBbJ2luYWN0aXZlJywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXSxcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5RVUFSVEVSLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CVVRUT05fMSxcbiAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICBdXCJcbiAgICAgIDpkYXRhLXRyYWNrPVwidGFiLmRhdGFUcmFjayB8fCB1bmRlZmluZWRcIlxuICAgICAgOmtleT1cInRhYi5sYWJlbFwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhpbmRleClcIlxuICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gcHJvcHMudGFic1wiXG4gICAgPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRF1cIj5cbiAgICAgICAge3sgdGFiLmxhYmVsIH19XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzFfU0VNSUJPTERdXCJcbiAgICAgICAgdi1pZj1cInRhYi5jb3VudCAmJiB0YWIuY291bnQgPiAwXCJcbiAgICAgID5cbiAgICAgICAgKHt7IHRhYi5jb3VudCB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1idXR0b24tc2VnbWVudGVkIHtcbiAgICBtYXgtd2lkdGg6IDIzLjNyZW07XG4gIH1cblxuICAudGlkZS1idXR0b24tc2VnbWVudGVkLXRhYiB7XG4gICAgZmxleDogMTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAuaW5hY3RpdmU6bm90KDpob3Zlcikge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuXG4gIC5pbmFjdGl2ZTpob3ZlciB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRZUEVfQ0FSRCA9IHtcbiAgQUNUSU9OQUJMRTogJ2FjdGlvbicsXG4gIElORk9STUFUSU9OQUw6ICdpbmZvcm1hdGlvbmFsJyxcbiAgU0VMRUNUQUJMRTogJ3NlbGVjdCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBDYXJkVHlwZSA9ICh0eXBlb2YgVFlQRV9DQVJEKVtrZXlvZiB0eXBlb2YgVFlQRV9DQVJEXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIG9uVXBkYXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaXNGbG9hdGluZz86IGJvb2xlYW47XG4gICAgaXNIaWRlYXdheUJ1dHRvbnM/OiBib29sZWFuO1xuICAgIGlzVG91Y2hzY3JlZW4/OiBib29sZWFuO1xuICAgIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaXNGbG9hdGluZzogZmFsc2UsXG4gICAgaXNIaWRlYXdheUJ1dHRvbnM6IHRydWUsXG4gICAgaXNUb3VjaHNjcmVlbjogdW5kZWZpbmVkLFxuICAgIHN1YnRpdGxlOiB1bmRlZmluZWQsXG4gICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IGNvbnRlbnRSZWYgPSByZWYoKTtcbiAgY29uc3QgZnJhbWVSZWYgPSByZWYoKTtcblxuICBjb25zdCBjb250ZW50UmlnaHRFZGdlID0gcmVmKCk7XG4gIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHJlZigpO1xuICBjb25zdCBjdXJyZW50U2xpZGUgPSByZWYoMCk7XG4gIGNvbnN0IGZyYW1lV2lkdGggPSByZWYoKTtcbiAgY29uc3QgaGFzT3ZlcmZsb3cgPSByZWYoKTtcbiAgY29uc3QgaXNMYXN0U2xpZGUgPSByZWYoKTtcbiAgY29uc3QgbGFzdFBvc2l0aW9uID0gcmVmKCk7XG4gIGNvbnN0IHNob3dCdXR0b25zID0gcmVmKCk7XG5cbiAgLyoqXG4gICAqIE1lYXN1cmUgdGhlIGN1cnJlbnQgc2xpZGUgYmFzZWQgb24gdGhlIHNjcm9sbFxuICAgKiBwb3NpdGlvbiBvZiB0aGUgZnJhbWUuIFRoZSBjdXJyZW50IHNsaWRlIGlzXG4gICAqIHRoZSBzbGlkZSB0aGF0IGlzIGNsb3Nlc3QgdG8gdGhlIGxlZnQgZWRnZSBvZlxuICAgKiB0aGUgZnJhbWUuXG4gICAqL1xuICBjb25zdCBtZWFzdXJlQ3VycmVudFNsaWRlID0gKCkgPT4ge1xuICAgIC8vIEdldCBsZWZ0IG9mZnNldCBvZiBlYWNoIHNsaWRlLlxuICAgIGNvbnN0IHNsaWRlT2Zmc2V0cyA9IEFycmF5LmZyb20oY29udGVudFJlZi52YWx1ZS5jaGlsZHJlbikubWFwKChzbGlkZTogYW55KSA9PiBzbGlkZS5vZmZzZXRMZWZ0KTtcblxuICAgIGlmIChzbGlkZU9mZnNldHMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICAvLyBHZXQgY2xvc2VzdCBvZmZzZXQgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24uXG4gICAgY29uc3QgY2xvc2VzdFNsaWRlT2Zmc2V0ID0gc2xpZGVPZmZzZXRzLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgICAgcmV0dXJuIE1hdGguYWJzKGN1cnIgLSBmcmFtZVJlZi52YWx1ZS5zY3JvbGxMZWZ0KSA8IE1hdGguYWJzKHByZXYgLSBmcmFtZVJlZi52YWx1ZS5zY3JvbGxMZWZ0KSA/IGN1cnIgOiBwcmV2O1xuICAgIH0pO1xuXG4gICAgY3VycmVudFNsaWRlLnZhbHVlID0gc2xpZGVPZmZzZXRzLmluZGV4T2YoY2xvc2VzdFNsaWRlT2Zmc2V0KTtcbiAgfTtcblxuICBjb25zdCBtZWFzdXJlRG9tID0gKCkgPT4ge1xuICAgIGNvbnRlbnRSaWdodEVkZ2UudmFsdWUgPSBmcmFtZVJlZi52YWx1ZS5zY3JvbGxMZWZ0ICsgZnJhbWVSZWYudmFsdWUuY2xpZW50V2lkdGg7XG4gICAgY29udGVudFdpZHRoLnZhbHVlID0gY29udGVudFJlZi52YWx1ZS5zY3JvbGxXaWR0aDtcbiAgICBmcmFtZVdpZHRoLnZhbHVlID0gZnJhbWVSZWYudmFsdWUuY2xpZW50V2lkdGg7XG4gICAgaGFzT3ZlcmZsb3cudmFsdWUgPSBjb250ZW50V2lkdGgudmFsdWUgPiBmcmFtZVdpZHRoLnZhbHVlO1xuICAgIGlzTGFzdFNsaWRlLnZhbHVlID0gY29udGVudFJpZ2h0RWRnZS52YWx1ZSA9PT0gY29udGVudFdpZHRoLnZhbHVlO1xuICAgIGxhc3RQb3NpdGlvbi52YWx1ZSA9IGZyYW1lUmVmLnZhbHVlLnNjcm9sbFdpZHRoIC0gZnJhbWVSZWYudmFsdWUuY2xpZW50V2lkdGg7XG4gICAgc2hvd0J1dHRvbnMudmFsdWUgPSBoYXNPdmVyZmxvdy52YWx1ZSAmJiAhcHJvcHMuaXNUb3VjaHNjcmVlbjtcblxuICAgIG1lYXN1cmVDdXJyZW50U2xpZGUoKTtcbiAgfTtcblxuICAvLyBUT0RPOiBkZWJvdW5jZSB0aGlzXG4gIGNvbnN0IGhhbmRsZVNjcm9sbCA9ICgpID0+IHtcbiAgICBtZWFzdXJlRG9tKCk7XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsVG9TbGlkZSA9IChzbGlkZUluZGV4OiBudW1iZXIpID0+IHtcbiAgICBmcmFtZVJlZi52YWx1ZS5zY3JvbGxUbyh7XG4gICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICBsZWZ0OiBjb250ZW50UmVmLnZhbHVlLmNoaWxkcmVuW3NsaWRlSW5kZXhdLm9mZnNldExlZnQsXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd05leHRTbGlkZSA9ICgpID0+IHtcbiAgICBpZiAoY29udGVudFJpZ2h0RWRnZS52YWx1ZSA+IGNvbnRlbnRXaWR0aC52YWx1ZSkge1xuICAgICAgZnJhbWVSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgIGxlZnQ6IGNvbnRlbnRXaWR0aCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoIWlzTGFzdFNsaWRlLnZhbHVlKSB7XG4gICAgICBzY3JvbGxUb1NsaWRlKGN1cnJlbnRTbGlkZS52YWx1ZSArIDEpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzaG93UHJldmlvdXNTbGlkZSA9ICgpID0+IHtcbiAgICBjb25zdCBpc0ZpcnN0U2xpZGUgPSBjdXJyZW50U2xpZGUudmFsdWUgPT09IDA7XG5cbiAgICBpZiAoIWlzRmlyc3RTbGlkZSkge1xuICAgICAgc2Nyb2xsVG9TbGlkZShjdXJyZW50U2xpZGUudmFsdWUgLSAxKTtcbiAgICB9XG4gIH07XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBtZWFzdXJlRG9tKCk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG1lYXN1cmVEb20pO1xuICB9KTtcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG1lYXN1cmVEb20pO1xuICB9KTtcblxuICBvblVwZGF0ZWQoKCkgPT4ge1xuICAgIG1lYXN1cmVEb20oKTtcbiAgfSk7XG5cbiAgd2F0Y2goY3VycmVudFNsaWRlLCAoKSA9PiB7XG4gICAgZW1pdCgnY2hhbmdlJywgY3VycmVudFNsaWRlLnZhbHVlKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIlsndGlkZS1jYXJvdXNlbCcsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuVFdPLCBDU1MuV0lEVEguTUFYX0ZVTExdXCJcbiAgICByZWY9XCJjYXJvdXNlbFJlZlwiXG4gID5cbiAgICA8c2VjdGlvblxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIHByb3BzLnRpdGxlID8gQ1NTLkFYSVMxLkJFVFdFRU4gOiBDU1MuQVhJUzEuRU5ELCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuV0lEVEguRlVMTF1cIlxuICAgICAgdi1pZj1cIiFwcm9wcy5pc0Zsb2F0aW5nICYmIChzaG93QnV0dG9ucyB8fCBwcm9wcy50aXRsZSlcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuT05FXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy50aXRsZSB8fCBwcm9wcy5zdWJ0aXRsZVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5ESVNQTEFZXzFdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMudGl0bGVcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMudGl0bGUgfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5zdWJ0aXRsZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy5zdWJ0aXRsZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwic2hvd0J1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJjdXJyZW50U2xpZGUgPT09IDBcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlRFUlRJQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJzaG93UHJldmlvdXNTbGlkZVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNMYXN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5URVJUSUFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwic2hvd05leHRTbGlkZVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG5cbiAgICA8c2xvdCBuYW1lPVwibWlzY1wiIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuUE9TSVRJT04uUkVMQVRJVkVdXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuU0NST0xMQkFSLk9GRiwgQ1NTLlNOQVAuT04sIENTUy5PVkVSRkxPVy5YLlNDUk9MTCwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgICAgcmVmPVwiZnJhbWVSZWZcIlxuICAgICAgICBAc2Nyb2xsPVwiaGFuZGxlU2Nyb2xsXCJcbiAgICAgID5cbiAgICAgICAgPHVsXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5HQVAuT05FLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIlxuICAgICAgICAgIHJlZj1cImNvbnRlbnRSZWZcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheScsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBwcm9wcy5pc0hpZGVhd2F5QnV0dG9ucyA/ICdoaWRlYXdheScgOiAnJyxcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCJpc0Zsb2F0aW5nICYmIHNob3dCdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uTEVGVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImN1cnJlbnRTbGlkZSA9PT0gMFwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwic2hvd1ByZXZpb3VzU2xpZGVcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9OXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNMYXN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJzaG93TmV4dFNsaWRlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheS5oaWRlYXdheSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsOmhvdmVyIC50aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5LmhpZGVhd2F5IHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGF0YVRyYWNrOiAnJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5kZXRlcm1pbmF0ZTogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBpc0NoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5jaGVja2VkIHx8IHByb3BzLmluZGV0ZXJtaW5hdGUpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LWNoZWNrYm94JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICBkaXNhYmxlZCA/IFsnZGlzYWJsZWQnLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXSA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICBdXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgOmNoZWNrZWQ9XCJpc0NoZWNrZWRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLk5PTkVdXCJcbiAgICAgIDpkaXNhYmxlZD1cInByb3BzLmRpc2FibGVkXCJcbiAgICAgIDpuYW1lPVwicHJvcHMubmFtZVwiXG4gICAgICByZWY9XCJpbnB1dFwiXG4gICAgICBAY2xpY2sucHJldmVudFxuICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWNoZWNrYm94LWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgaXNDaGVja2VkID8gW0NTUy5CT1JERVIuQ09MT1IuSElHSCwgQ1NTLkJHLlNFQ09OREFSWV0gOiBbQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgICAgaXNDaGVja2VkICYmICdjaGVja2VkJyxcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlldXCJcbiAgICAgICAgOmljb249XCJwcm9wcy5pbmRldGVybWluYXRlID8gSUNPTi5SRU1PVkUgOiBJQ09OLkNIRUNLXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImlzQ2hlY2tlZFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgICAgQGNsaWNrLnByZXZlbnRcbiAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgPlxuICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5udW1iZXJcIlxuICAgICAgPlxuICAgICAgICAoe3sgZm9ybWF0TnVtYmVyKHByb3BzLm51bWJlcikgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1jaGVja2JveC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20ge1xuICAgIHdpZHRoOiB2YXIoLS10aWRlLWZvbnQtMjgpO1xuICAgIGhlaWdodDogdmFyKC0tdGlkZS1mb250LTI4KTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGNoZWNrZWQ/OiBib29sZWFuO1xuICAgIGRhdGFUcmFjaz86IHN0cmluZztcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIGRhdGFUcmFjazogJycsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBjaGVja2VkID0gcmVmKHByb3BzLmNoZWNrZWQpO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmNoZWNrZWQsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gY2hlY2tlZC52YWx1ZSkge1xuICAgICAgICBjaGVja2VkLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXJhZGlvJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgIHByb3BzLmRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgXVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIDpjaGVja2VkPVwiY2hlY2tlZFwiXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuTk9ORV1cIlxuICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICBuYW1lPVwiXCJcbiAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICB2YWx1ZT1cIlwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8tY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBjaGVja2VkID8gQ1NTLkJPUkRFUi5DT0xPUi5ISUdIIDogQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PTixcbiAgICAgICAgY2hlY2tlZCAmJiAnY2hlY2tlZCcsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbnB1dC1yYWRpby1jaGVjaycsIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIHByb3BzLmNoZWNrZWQgJiYgQ1NTLkJHLlNFQ09OREFSWV1cIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5CT0RZXzEsIENTUy5DVVJTT1IuUE9JTlRFUiwgQ1NTLlBPSU5URVJfRVZFTlRTLk9OXVwiXG4gICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgPlxuICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXJhZGlvLmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWN1c3RvbSB7XG4gICAgd2lkdGg6IHZhcigtLXRpZGUtZm9udC0yOCk7XG4gICAgaGVpZ2h0OiB2YXIoLS10aWRlLWZvbnQtMjgpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY2hlY2sge1xuICAgIHdpZHRoOiAxcmVtO1xuICAgIGhlaWdodDogMXJlbTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IHByaWNlVG9OdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG5pbXBvcnQgdHlwZSB7IFJhbmdlRGF0YSB9IGZyb20gJ0AvdHlwZXMvRmFjZXRSYW5nZSc7XG5pbXBvcnQgdHlwZSB7IFN0cmluZ0lucHV0IH0gZnJvbSAnQC90eXBlcy9Gb3JtJztcbmltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRpb25MZW5ndGgsIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5pbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbmV4cG9ydCBjb25zdCBlcnJvck1lc3NhZ2VEZWZhdWx0ID0gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIHZhbHVlLic7XG5cbmV4cG9ydCBjb25zdCBub0Vycm9yID0ge1xuICBtZXNzYWdlOiAnJyxcbiAgdmFsaWQ6IHRydWUsXG59IGFzIFJlYWRvbmx5PFZhbGlkYXRpb25SZXN1bHQ+O1xuXG5leHBvcnQgY29uc3QgY2hlY2tGb3JtYXQgPSAoZm9ybWF0OiBSZWdFeHApID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IG5vRXJyb3I7XG5cbiAgICBpZiAoIXZhbHVlLnRyaW0oKS5tYXRjaChmb3JtYXQpKSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZURlZmF1bHQsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFcnJvck1lc3NhZ2UgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcbiAgaWYgKHR5cGVvZiBlcnJvckZyb21Qcm9wcyA9PT0gJ3N0cmluZycgJiYgZXJyb3JGcm9tUHJvcHMubGVuZ3RoID4gMCkgcmV0dXJuIGVycm9yRnJvbVByb3BzO1xuXG4gIHJldHVybiB0eXBlb2YgZXJyb3JGcm9tUmVmID09PSAnc3RyaW5nJyAmJiBlcnJvckZyb21SZWYubGVuZ3RoID4gMCA/IGVycm9yRnJvbVJlZiA6IGVycm9yTWVzc2FnZURlZmF1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRIYXNFcnJvciA9IChlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yLCBlcnJvckZyb21SZWY6IFZhbGlkYXRpb25FcnJvcikgPT5cbiAgZXJyb3JGcm9tUHJvcHMgIT09IGZhbHNlIHx8IGVycm9yRnJvbVJlZiAhPT0gZmFsc2U7XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZExlbmd0aElzVmFsaWQgPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgcmVxdWlyZWQsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpID0+IHtcbiAgY29uc3QgaXNFbXB0eUFuZFVucmVxdWlyZWQgPSB2YWx1ZS5sZW5ndGggPT09IDAgJiYgIXJlcXVpcmVkO1xuICBjb25zdCBpc1Rvb0xvbmcgPSBtYXhsZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4bGVuZ3RoO1xuICBjb25zdCBpc1Rvb1Nob3J0ID0gIWlzRW1wdHlBbmRVbnJlcXVpcmVkICYmIG1pbmxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5sZW5ndGg7XG5cbiAgcmV0dXJuICFpc1Rvb1Nob3J0ICYmICFpc1Rvb0xvbmc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWF4UmFuZ2VJc1ZhbGlkID0gKHsgbWluIH06IFBpY2s8UmFuZ2VEYXRhLCAnbWluJz4sIHR5cGU/OiAncHJpY2UnKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCBuZXdNYXg6IG51bWJlciB8IG51bGwgPSB0eXBlID09PSAncHJpY2UnID8gcHJpY2VUb051bWJlcih2YWx1ZSkgOiBOdW1iZXIodmFsdWUpO1xuICAgIG5ld01heCA9ICFpc05hTihuZXdNYXgpID8gbmV3TWF4IDogbnVsbDtcbiAgICBpZiAobWluICYmIG5ld01heCkge1xuICAgICAgaWYgKG5ld01heCA+PSBtaW4pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogYE11c3QgYmUgZ3JlYXRlciB0aGFuIG1pbmAsXG4gICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9FcnJvcjtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWluUmFuZ2VJc1ZhbGlkID0gKHsgbWF4IH06IFBpY2s8UmFuZ2VEYXRhLCAnbWF4Jz4sIHR5cGU/OiAncHJpY2UnKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCBuZXdNaW46IG51bWJlciB8IG51bGwgPSB0eXBlID09PSAncHJpY2UnID8gcHJpY2VUb051bWJlcih2YWx1ZSkgOiBOdW1iZXIodmFsdWUpO1xuICAgIG5ld01pbiA9ICFpc05hTihuZXdNaW4pID8gbmV3TWluIDogbnVsbDtcbiAgICBpZiAobWF4ICYmIG5ld01pbikge1xuICAgICAgaWYgKG5ld01pbiA8PSBtYXgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogYE11c3QgYmUgbGVzcyB0aGFuIG1heGAsXG4gICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9FcnJvcjtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0T3B0aW9uc0Zyb21TdHJpbmdzID0gKHN0cmluZ3M6IHN0cmluZ1tdKSA9PlxuICBzdHJpbmdzLm1hcChcbiAgICAob3B0aW9uKSA9PlxuICAgICAgKHtcbiAgICAgICAgbGFiZWw6IG9wdGlvbixcbiAgICAgICAgdmFsdWU6IG9wdGlvbixcbiAgICAgIH0gYXMgU2VsZWN0T3B0aW9uKVxuICApO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlRmllbGRWYWxpZGF0aW9uID0gKHtcbiAgZXJyb3IsXG4gIGVycm9yRnJvbVByb3BzLFxuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgdmFsaWRhdG9ycyxcbiAgdmFsdWUsXG59OiB7XG4gIGVycm9yOiBSZWY8VmFsaWRhdGlvbkVycm9yPjtcbiAgZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvcjtcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB2YWx1ZT86IFJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+O1xufSkgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuXG4gIGVycm9yLnZhbHVlID0gZXJyb3JGcm9tUHJvcHMgPyBlcnJvckZyb21Qcm9wcyA6IGZhbHNlO1xuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlPy52YWx1ZSB8fCAnJywgdmFsaWRhdG9ycyk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gdmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgKG1heGxlbmd0aCB8fCBtaW5sZW5ndGgpKSB7XG4gICAgY29uc3QgbGVuZ3RoVmFsaWRhdGlvbiA9IHZhbGlkYXRlTGVuZ3RoKHtcbiAgICAgIG1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgdmFsdWU6IHZhbHVlPy52YWx1ZSB8fCAnJyxcbiAgICB9KTtcblxuICAgIGlmICghbGVuZ3RoVmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgZXJyb3IudmFsdWUgPSBsZW5ndGhWYWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGaWVsZHNGcm9tUmVmcyhmaWVsZHM6IHsgW2tleTogc3RyaW5nXTogUmVmPFN0cmluZ0lucHV0IHwgbnVsbD4gfSkge1xuICBsZXQgdmFsaWQgPSB0cnVlO1xuXG4gIGZvciAoY29uc3Qga2V5IGluIGZpZWxkcykge1xuICAgIGlmIChmaWVsZHNba2V5XS52YWx1ZT8ucmVxdWlyZWQpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZmllbGRzW2tleV0udmFsdWU/LnZhbHVlO1xuICAgICAgdmFsaWQgPSB2YWxpZCAmJiAhIXZhbHVlICYmIHZhbHVlLnRyaW0oKSAhPT0gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3IgPSBmaWVsZHNba2V5XS52YWx1ZT8uZXJyb3I7XG4gICAgdmFsaWQgPSB2YWxpZCAmJiAhZXJyb3I7XG4gIH1cblxuICByZXR1cm4gdmFsaWQ7XG59XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUxlbmd0aCA9ICh7XG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCA9IGZhbHNlLFxuICB2YWx1ZSxcbn06IFZhbGlkYXRpb25MZW5ndGgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG5cbiAgcmVzcG9uc2UudmFsaWQgPSBnZXRGaWVsZExlbmd0aElzVmFsaWQoe1xuICAgIG1heGxlbmd0aCxcbiAgICBtaW5sZW5ndGgsXG4gICAgcmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuXG4gIGlmIChyZXNwb25zZS52YWxpZCkgcmV0dXJuIHJlc3BvbnNlO1xuXG4gIHJlc3BvbnNlLm1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VEZWZhdWx0O1xuXG4gIGlmIChtYXhsZW5ndGggJiYgbWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBiZXR3ZWVuICR7bWlubGVuZ3RofSBhbmQgJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWF4bGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBtb3JlIHRoYW4gJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBsZXNzIHRoYW4gJHttaW5sZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nLCB2YWxpZGF0b3JzOiAoKHZhbHVlOiBzdHJpbmcpID0+IFZhbGlkYXRpb25SZXN1bHQpW10pOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0b3IodmFsdWUpO1xuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IFNlbGVjdEZpZWxkIH0gZnJvbSAnQC90eXBlcy9GaWVsZCc7XG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uLCBTZWxlY3RPcHRpb25Hcm91cCB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcblxuICBpbnRlcmZhY2UgUHJvcHMgZXh0ZW5kcyBTZWxlY3RGaWVsZCB7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgfVxuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgcmVxdWlyZWQgPSByZWYocHJvcHMucmVxdWlyZWQpO1xuICBjb25zdCB2YWx1ZSA9IHJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcikpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKTtcblxuICBjb25zdCBleHBhbmRPcHRpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ21vdXNlZG93bicpO1xuICAgIGlucHV0Py52YWx1ZT8uZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHsgZXJyb3IsIHZhbHVlIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXNlbGVjdCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBoYXNFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1ib3JkZXInLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgcHJvcHMuZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogJycsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBdXCJcbiAgICAgIEBjbGljaz1cImV4cGFuZE9wdGlvbnNcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLkxFRlQuT05FLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uSEFMRixcbiAgICAgICAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgICBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VELFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCJvcHRncm91cCBpbiBwcm9wcy5vcHRncm91cHNcIj5cbiAgICAgICAgICAgIDxvcHRncm91cFxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWxcIlxuICAgICAgICAgICAgICA6bGFiZWw9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgdi1pZj1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIChvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L29wdGdyb3VwPlxuXG4gICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICA6a2V5PVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICA6c2VsZWN0ZWQ9XCJ2YWx1ZSA9PT0gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgOnZhbHVlPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikubGFiZWwgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgOnNlbGVjdGVkPVwidmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIG9wdGlvbnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULCBDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5zdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfM11cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBwcm9wcy5zdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VsZWN0IHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Igb3B0aW9uIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuXG4gIHNlbGVjdCB7XG4gICAgcGFkZGluZy10b3A6IDI3cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgVEVYVF9JTlBVVF9UWVBFID0ge1xuICBEQVRFOiAnZGF0ZScsXG4gIERBVEVUSU1FX0xPQ0FMOiAnZGF0ZXRpbWUtbG9jYWwnLFxuICBFTUFJTDogJ2VtYWlsJyxcbiAgTU9OVEg6ICdtb250aCcsXG4gIE5VTUJFUjogJ251bWJlcicsXG4gIFBBU1NXT1JEOiAncGFzc3dvcmQnLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBURUw6ICd0ZWwnLFxuICBURVhUOiAndGV4dCcsXG4gIFRJTUU6ICd0aW1lJyxcbiAgVVJMOiAndXJsJyxcbiAgV0VFSzogJ3dlZWsnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGV4dElucHV0VHlwZSA9ICh0eXBlb2YgVEVYVF9JTlBVVF9UWVBFKVtrZXlvZiB0eXBlb2YgVEVYVF9JTlBVVF9UWVBFXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBURVhUX0lOUFVUX1RZUEUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciwgaGFuZGxlRmllbGRWYWxpZGF0aW9uIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBGb3JtVmFsdWVUcmFuc2Zvcm1lciB9IGZyb20gJ0AvdHlwZXMvRm9ybSc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgVGV4dElucHV0VHlwZSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgIGRhdGFUcmFjaz86IHN0cmluZztcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZXJyb3I/OiBWYWxpZGF0aW9uRXJyb3I7XG4gICAgaGFzQ2xlYXI/OiBib29sZWFuO1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICBzdWZmaXg/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdHJhbnNmb3JtVmFsdWU/OiBGb3JtVmFsdWVUcmFuc2Zvcm1lcjtcbiAgICB0eXBlPzogVGV4dElucHV0VHlwZTtcbiAgICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhdXRvY29tcGxldGU6IGZhbHNlLFxuICAgIGRhdGFUcmFjazogJycsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBoYXNDbGVhcjogZmFsc2UsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBwcmVmaXg6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VmZml4OiB1bmRlZmluZWQsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB0cmFuc2Zvcm1WYWx1ZTogdW5kZWZpbmVkLFxuICAgIHR5cGU6IFRFWFRfSU5QVVRfVFlQRS5URVhULFxuICAgIHZhbGlkYXRvcnM6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBzaG93UGFzc3dvcmQgPSByZWYoZmFsc2UpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiBwcm9wcy5sYWJlbCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0NsZWFyID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuaGFzQ2xlYXIgJiYgdmFsdWUudmFsdWUpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKFxuICAgICgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiB2YWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpXG4gICk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSAnJyB8fCB2YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKTtcbiAgY29uc3QgdHlwZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgcHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEICYmIHNob3dQYXNzd29yZC52YWx1ZSA9PT0gdHJ1ZSA/IFRFWFRfSU5QVVRfVFlQRS5URVhUIDogcHJvcHMudHlwZVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUNsZWFyID0gKCkgPT4ge1xuICAgIHZhbHVlLnZhbHVlID0gJyc7XG4gICAgaW5wdXQudmFsdWU/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAoIXZhbHVlLnZhbHVlKSB7XG4gICAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIGhhbmRsZVZhbGlkYXRpb24oKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVJbnB1dCA9ICgpID0+IHtcbiAgICBpZiAocHJvcHMudHJhbnNmb3JtVmFsdWUpIHtcbiAgICAgIGNvbnN0IGRpZ2l0cyA9IHZhbHVlLnZhbHVlPy5tYXRjaCgvXFxkL2cpPy5qb2luKCcnKSB8fCB1bmRlZmluZWQ7XG5cbiAgICAgIHZhbHVlLnZhbHVlID0gZGlnaXRzID8gcHJvcHMudHJhbnNmb3JtVmFsdWUoZGlnaXRzKSA6ICcnO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWxpZGF0aW9uID0gKCkgPT4ge1xuICAgIGhhbmRsZUZpZWxkVmFsaWRhdGlvbih7XG4gICAgICBlcnJvcixcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWxpZGF0b3JzOiBwcm9wcy52YWxpZGF0b3JzLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlVmFsdWUgPSAobmV3VmFsdWU6IHN0cmluZykgPT4ge1xuICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHtcbiAgICBlcnJvcixcbiAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgdXBkYXRlVmFsdWUsXG4gICAgdmFsdWUsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXRleHQnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgaGFzRXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtYm9yZGVyJyxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIGhhc0NsZWFyID8gW0NTUy5QQURESU5HLlJJR0hULkhBTEYsIENTUy5QQURESU5HLkxFRlQuT05FXSA6IFtDU1MuUEFERElORy5YLk9ORV0sXG4gICAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgICAgcHJvcHMuZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1wcmVmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAsXG4gICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0JyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMucHJlZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnByZWZpeCB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiXG4gICAgICAgICAgQGNsaWNrLnByZXZlbnQ9XCJpbnB1dD8uZm9jdXMoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICA6YXV0b2NvbXBsZXRlPVwiYXV0b2NvbXBsZXRlID8gJ29uJyA6ICdvZmYnXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCwgQ1NTLkZPTlQuUk9MRS5CT0RZXzFdXCJcbiAgICAgICAgICAgIDpkYXRhLXRyYWNrPVwicHJvcHMuZGF0YVRyYWNrXCJcbiAgICAgICAgICAgIDpkaXNhYmxlZD1cInByb3BzLmRpc2FibGVkXCJcbiAgICAgICAgICAgIDptYXhsZW5ndGg9XCJwcm9wcy5tYXhsZW5ndGhcIlxuICAgICAgICAgICAgOm1pbmxlbmd0aD1cInByb3BzLm1pbmxlbmd0aFwiXG4gICAgICAgICAgICA6bmFtZT1cInByb3BzLm5hbWVcIlxuICAgICAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICAgICAgOnJlcXVpcmVkPVwicHJvcHMucmVxdWlyZWRcIlxuICAgICAgICAgICAgOnR5cGU9XCJ0eXBlXCJcbiAgICAgICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVWYWxpZGF0aW9uXCJcbiAgICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICAgIEBpbnB1dD1cImhhbmRsZUlucHV0XCJcbiAgICAgICAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1zdWZmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0JyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuc3VmZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnN1ZmZpeCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QQURESU5HLlkuSEFMRiwgQ1NTLlBBRERJTkcuRlVMTC5IQUxGLCBDU1MuQ1VSU09SLlBPSU5URVJdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xlYXJcIlxuICAgICAgICB2LWlmPVwiaGFzQ2xlYXIgJiYgcHJvcHMudHlwZSAhPT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEXCJcbiAgICAgIC8+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBBRERJTkcuWS5IQUxGLCBDU1MuUEFERElORy5GVUxMLkhBTEYsIENTUy5DVVJTT1IuUE9JTlRFUl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uVklTSUJJTElUWVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIEBjbGljaz1cInNob3dQYXNzd29yZCA9ICFzaG93UGFzc3dvcmRcIlxuICAgICAgICB2LWlmPVwicHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogcHJvcHMuc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICBsYWJlbDpub3QoLm1pbmlsYWJlbCksXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4Om5vdCgub2Zmc2V0KSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXg6bm90KC5vZmZzZXQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4LFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dCBpbnB1dCB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1mb3JlZ3JvdW5kKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRhdGFUcmFjaz86IHN0cmluZztcbiAgICBlcnJvcj86IFZhbGlkYXRpb25FcnJvcjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgcm93cz86IG51bWJlcjtcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRhdGFUcmFjazogJycsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgcm93czogOCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZChcbiAgICAoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKVxuICApO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycgfHwgdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAoIXZhbHVlLnZhbHVlKSB7XG4gICAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWxpZGF0aW9uID0gKCkgPT4ge1xuICAgIHJldHVybiBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHtcbiAgICBlcnJvcixcbiAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1pbnB1dC10ZXh0YXJlYScsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUiwgaGFzRXJyb3IgJiYgJ2Vycm9yJ11cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCcsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuUEFERElORy5MRUZULk9ORSxcbiAgICAgICAgQ1NTLlBBRERJTkcuVE9QLkhBTEYsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8bGFiZWxcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICBdXCJcbiAgICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICByZWY9XCJsYWJlbFwiXG4gICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICA+XG4gICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICA8L2xhYmVsPlxuXG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICA6ZGF0YS10cmFjaz1cInByb3BzLmRhdGFUcmFja1wiXG4gICAgICAgIDptYXhsZW5ndGg9XCJwcm9wcy5tYXhsZW5ndGhcIlxuICAgICAgICA6bWlubGVuZ3RoPVwicHJvcHMubWlubGVuZ3RoXCJcbiAgICAgICAgOm5hbWU9XCJwcm9wcy5uYW1lXCJcbiAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICA6cmVxdWlyZWQ9XCJwcm9wcy5yZXF1aXJlZFwiXG4gICAgICAgIDpyb3dzPVwicHJvcHMucm93c1wiXG4gICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVWYWxpZGF0aW9uXCJcbiAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5zdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogcHJvcHMuc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG48L3N0eWxlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3IgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYTpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEgdGV4dGFyZWEge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1mb3JlZ3JvdW5kKTtcbiAgfVxuPC9zdHlsZT5cbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuZXhwb3J0IGNvbnN0IEJSRUFLUE9JTlQgPSB7XG4gIFNNOiAnc20nLFxuICBNRDogJ21kJyxcbiAgTEc6ICdsZycsXG4gIFhMOiAneGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IE1FRElBID0ge1xuICBTTTogNzY4LFxuICBNRDogOTkyLFxuICBMRzogMTIzMixcbiAgWEw6IDE5MjAsXG59O1xuXG5leHBvcnQgdHlwZSBCcmVha3BvaW50ID0gKHR5cGVvZiBCUkVBS1BPSU5UKVtrZXlvZiB0eXBlb2YgQlJFQUtQT0lOVF07XG5leHBvcnQgdHlwZSBNZWRpYSA9ICh0eXBlb2YgTUVESUEpW2tleW9mIHR5cGVvZiBNRURJQV07XG4iLCJpbXBvcnQgeyBuZXh0VGljayB9IGZyb20gJ3Z1ZSc7XG5cbi8qKlxuICogRGlyZWN0bHkgbW9kaWZpZXMgdGhlIGA8Ym9keT5gIGVsZW1lbnQgdG8gYXBwbHkgb3IgcmVtb3ZlIHNjcm9sbCBsb2NrLlxuICogV2hlbiBgZmFsc2VgIGlzIHByb3ZpZGVkLCBpdCBvbmx5IHVubG9ja3Mgc2Nyb2xsIGlmIHRoZXJlIGFyZSBubyBvcGVuXG4gKiBIVE1MIGRpYWxvZyBlbGVtZW50cy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldFNjcm9sbExvY2sgPSBhc3luYyAoaXNMb2NrZWQ6IGJvb2xlYW4pID0+IHtcbiAgY29uc3QgQk9EWV9MT0NLX0NMQVNTID0gJ2JvZHktc2Nyb2xsLWxvY2snO1xuICBjb25zdCBib2R5ID0gZG9jdW1lbnQuYm9keTtcblxuICBpZiAoaXNMb2NrZWQpIHtcbiAgICBpZiAoIWJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSkge1xuICAgICAgY29uc3Qgc2Nyb2xsWSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZID0gc2Nyb2xsWS50b1N0cmluZygpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYXZlZC1zY3JvbGwteScsIGAke3Njcm9sbFl9cHhgKTtcbiAgICAgIGJvZHkuY2xhc3NMaXN0LmFkZChCT0RZX0xPQ0tfQ0xBU1MpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBuZXh0VGljaygpO1xuICAgIGlmICghZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGlhbG9nW29wZW5dJykpIHtcbiAgICAgIGNvbnN0IHNhdmVkU2Nyb2xsWSA9IHBhcnNlSW50KGJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSB8fCAnMCcpO1xuICAgICAgYm9keS5jbGFzc0xpc3QucmVtb3ZlKEJPRFlfTE9DS19DTEFTUyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNhdmVkLXNjcm9sbC15Jyk7XG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oe1xuICAgICAgICBiZWhhdmlvcjogJ2F1dG8nLFxuICAgICAgICB0b3A6IHNhdmVkU2Nyb2xsWSxcbiAgICAgIH0pO1xuICAgICAgZGVsZXRlIGJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBUT1BfTEFZRVJfSUQgPSAndGlkZVRvcExheWVyJztcblxuZXhwb3J0IGNvbnN0IGluaXRGYXV4VG9wTGF5ZXIgPSAoKSA9PiB7XG4gIGxldCB0b3BMYXllciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFRPUF9MQVlFUl9JRCk7XG4gIGlmICghdG9wTGF5ZXIpIHtcbiAgICB0b3BMYXllciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRvcExheWVyLmlkID0gVE9QX0xBWUVSX0lEO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodG9wTGF5ZXIpO1xuICB9XG4gIHRvcExheWVyLnN0eWxlLmlzb2xhdGlvbiA9ICdpc29sYXRlJztcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBuZXh0VGljaywgb25Nb3VudGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEJSRUFLUE9JTlQgfSBmcm9tICdAL3R5cGVzL0JyZWFrcG9pbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBzZXRTY3JvbGxMb2NrIH0gZnJvbSAnQC91dGlsaXRpZXMvdmlld3BvcnQnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gICAgaXNEaXNtaXNzaWJsZT86IGJvb2xlYW47XG4gICAgaXNPcGVuOiBib29sZWFuO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaXNCYWNrQnV0dG9uOiBmYWxzZSxcbiAgICBpc0Rpc21pc3NpYmxlOiB0cnVlLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2Nsb3NlJyk6IHZvaWQ7XG4gICAgKGU6ICdiYWNrJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGFsQ29udGVudDogUmVmPEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkPiA9IHJlZigpO1xuICBjb25zdCBtb2RhbERpYWxvZzogUmVmPEhUTUxEaWFsb2dFbGVtZW50IHwgdW5kZWZpbmVkPiA9IHJlZigpO1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuID0gKCkgPT4ge1xuICAgIG1vZGFsRGlhbG9nLnZhbHVlPy5zaG93TW9kYWwoKTtcbiAgfTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UgPSAoKSA9PiB7XG4gICAgbW9kYWxEaWFsb2cudmFsdWU/LmNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsQ29udGVudFRvVG9wID0gKCkgPT4ge1xuICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgIGlmICghbW9kYWxDb250ZW50LnZhbHVlKSByZXR1cm47XG4gICAgICBtb2RhbENvbnRlbnQudmFsdWUuc2Nyb2xsVG9wID0gMDtcbiAgICB9KTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pc09wZW4sXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAoIW1vZGFsRGlhbG9nLnZhbHVlKSByZXR1cm47XG4gICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICAgICAgc2Nyb2xsQ29udGVudFRvVG9wKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIHNldFNjcm9sbExvY2sobmV3VmFsdWUpO1xuICAgIH1cbiAgKTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmIChwcm9wcy5pc09wZW4pIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgfVxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaWFsb2dcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtbW9kYWwnLCBDU1MuQkcuSU5JVElBTCwgQ1NTLkhFSUdIVC5GVUxMLCBDU1MuV0lEVEguRlVMTCwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTl1cIlxuICAgIHJlZj1cIm1vZGFsRGlhbG9nXCJcbiAgICA6c3R5bGU9XCJ7ICctLW1vZGFsLXdpZHRoJzogcHJvcHMud2lkdGggfVwiXG4gICAgQGNsaWNrLnNlbGY9XCJlbWl0KCdjbG9zZScpXCJcbiAgICBAY2xvc2U9XCJlbWl0KCdjbG9zZScpXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtbW9kYWwtYm9keScsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLk9ORSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICBDU1MuUE9TSVRJT05JTkcuQk9UVE9NLFxuICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIENTUy5XSURUSC5NQVhfRlVMTCxcbiAgICAgICAgQ1NTLndpdGhCcmVha3BvaW50KFtDU1MuU0hBRE9XLkJPVFRPTV0sIEJSRUFLUE9JTlQuU00pLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGhlYWRlclxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtbW9kYWwtaGVhZGVyJyxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICAgIENTUy5QQURESU5HLlkuT05FLFxuICAgICAgICAgIENTUy5CT1JERVIuQk9UVE9NLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2JhY2snKVwiXG4gICAgICAgICAgdGl0bGU9XCJCYWNrXCJcbiAgICAgICAgICB2LWlmPVwiaXNCYWNrQnV0dG9uXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuSEVBRExJTkVfMl1cIlxuICAgICAgICAgIHYtdGV4dD1cInRpdGxlXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkYsIENTUy5NQVJHSU4uTEVGVC5BVVRPXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJ0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2VcIlxuICAgICAgICAgIHYtaWY9XCJpc0Rpc21pc3NpYmxlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvaGVhZGVyPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1tb2RhbC1jb250ZW50JyxcbiAgICAgICAgICBDU1MuRElTUExBWS5HUklELFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgIENTUy5QQURESU5HLlkuVFdPLFxuICAgICAgICBdXCJcbiAgICAgICAgcmVmPVwibW9kYWxDb250ZW50XCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Zm9vdGVyXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1tb2RhbC1mb290ZXInLCBDU1MuQVhJUzEuRU5ELCBDU1MuRElTUExBWS5GTEVYLCBDU1MuR0FQLlRXTywgQ1NTLlBBRERJTkcuWS5PTkUsIENTUy5TSEFET1cuVE9QXVwiXG4gICAgICAgIHYtaWY9XCIkc2xvdHMuZm9vdGVyXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgbmFtZT1cImZvb3RlclwiIC8+XG4gICAgICA8L2Zvb3Rlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaWFsb2c+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1tb2RhbCB7XG4gICAgLS1tb2RhbC1wYWRkaW5nLXg6IDIwcHg7XG4gICAgbWF4LXdpZHRoOiB1bnNldDtcbiAgICBtYXgtaGVpZ2h0OiB1bnNldDtcbiAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICB9XG4gIC50aWRlLW1vZGFsW29wZW5dIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gIH1cbiAgLnRpZGUtbW9kYWw6OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuICAudGlkZS1tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTtcbiAgfVxuICBAc3RhcnRpbmctc3R5bGUge1xuICAgIC50aWRlLW1vZGFsW29wZW5dIHtcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgfVxuICAgIC50aWRlLW1vZGFsW29wZW5dOjpiYWNrZHJvcCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig0cHgpO1xuICAgIH1cbiAgfVxuICAudGlkZS1tb2RhbC1ib2R5IHtcbiAgICB3aWR0aDogdmFyKC0tbW9kYWwtd2lkdGgsIDU3NnB4KTtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSB2YXIoLS10aWRlLXNwYWNpbmctMikpO1xuICB9XG5cbiAgLnRpZGUtbW9kYWwtaGVhZGVyLFxuICAudGlkZS1tb2RhbC1mb290ZXIge1xuICAgIHBhZGRpbmctaW5saW5lOiB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpO1xuICB9XG4gIC50aWRlLW1vZGFsLWNvbnRlbnQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tbW9kYWwtcGFkZGluZy14KSAxZnIgdmFyKC0tbW9kYWwtcGFkZGluZy14KTtcbiAgfVxuICA6d2hlcmUoLnRpZGUtbW9kYWwtY29udGVudCk6ZGVlcCg+IDp3aGVyZSgqKSkge1xuICAgIGdyaWQtY29sdW1uOiAyO1xuICB9XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgfVxuICB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC50aWRlLW1vZGFsIHtcbiAgICAgIC0tbW9kYWwtcGFkZGluZy14OiB2YXIoLS10aWRlLXNwYWNpbmctMik7XG4gICAgfVxuICAgIC50aWRlLW1vZGFsLWJvZHkge1xuICAgICAgbWF4LWhlaWdodDogODUlO1xuICAgICAgYm90dG9tOiBpbml0aWFsO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVCdXR0b25QYWdpbmF0aW9uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uUGFnaW5hdGlvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgcGFnZUN1cnJlbnQ/OiBudW1iZXI7XG4gICAgcGFnZVRvdGFsPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgcGFnZUN1cnJlbnQ6IDEsXG4gICAgcGFnZVRvdGFsOiAxLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2UnXSk7XG5cbiAgY29uc3QgcGFnZUN1cnJlbnQgPSByZWYocHJvcHMucGFnZUN1cnJlbnQpO1xuXG4gIGNvbnN0IHBhZ2luYXRpb25CdXR0b25zID0gY29tcHV0ZWQoKCkgPT4gbmV3IEFycmF5KHByb3BzLnBhZ2VUb3RhbCkuZmlsbCgnJykubWFwKChlbXB0eSwgaW5kZXgpID0+IGluZGV4ICsgMSkpO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBwYWdlQ3VycmVudC52YWx1ZSA9IGluZGV4O1xuXG4gICAgZW1pdCgnY2hhbmdlJywgZXZlbnQsIGluZGV4KTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uXG4gICAgOmNsYXNzPVwiWyd0aWRlLXBhZ2luYXRpb24nLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5XSURUSC5GVUxMXVwiXG4gID5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpkaXNhYmxlZD1cInBhZ2VDdXJyZW50ID09PSAxXCJcbiAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhwYWdlQ3VycmVudCAtIDEpXCJcbiAgICAvPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgICAgPGxpXG4gICAgICAgIDprZXk9XCJwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgdi1mb3I9XCJwYWdpbmF0aW9uQnV0dG9uIGluIHBhZ2luYXRpb25CdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25QYWdpbmF0aW9uXG4gICAgICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IHBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICAgIDpsYWJlbD1cInBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKHBhZ2luYXRpb25CdXR0b24pXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cblxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IHBhZ2luYXRpb25CdXR0b25zW3BhZ2luYXRpb25CdXR0b25zLmxlbmd0aCAtIDFdXCJcbiAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2socGFnZUN1cnJlbnQgKyAxKVwiXG4gICAgLz5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD48L3N0eWxlPlxuIiwiLyoqXG4gKiBDdXN0b20gcG9zaXRpb25pbmcgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdmlydHVhbC1lbGVtZW50c1xuICovXG5cbmNvbnN0IHNpZGVzID0gWyd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXTtcbmNvbnN0IGFsaWdubWVudHMgPSBbJ3N0YXJ0JywgJ2VuZCddO1xuY29uc3QgcGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9zaWRlcy5yZWR1Y2UoKGFjYywgc2lkZSkgPT4gYWNjLmNvbmNhdChzaWRlLCBzaWRlICsgXCItXCIgKyBhbGlnbm1lbnRzWzBdLCBzaWRlICsgXCItXCIgKyBhbGlnbm1lbnRzWzFdKSwgW10pO1xuY29uc3QgbWluID0gTWF0aC5taW47XG5jb25zdCBtYXggPSBNYXRoLm1heDtcbmNvbnN0IHJvdW5kID0gTWF0aC5yb3VuZDtcbmNvbnN0IGZsb29yID0gTWF0aC5mbG9vcjtcbmNvbnN0IGNyZWF0ZUNvb3JkcyA9IHYgPT4gKHtcbiAgeDogdixcbiAgeTogdlxufSk7XG5jb25zdCBvcHBvc2l0ZVNpZGVNYXAgPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5jb25zdCBvcHBvc2l0ZUFsaWdubWVudE1hcCA9IHtcbiAgc3RhcnQ6ICdlbmQnLFxuICBlbmQ6ICdzdGFydCdcbn07XG5mdW5jdGlvbiBjbGFtcChzdGFydCwgdmFsdWUsIGVuZCkge1xuICByZXR1cm4gbWF4KHN0YXJ0LCBtaW4odmFsdWUsIGVuZCkpO1xufVxuZnVuY3Rpb24gZXZhbHVhdGUodmFsdWUsIHBhcmFtKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgPyB2YWx1ZShwYXJhbSkgOiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGdldFNpZGUocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbn1cbmZ1bmN0aW9uIGdldEFsaWdubWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzFdO1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd4JyA/ICd5JyA6ICd4Jztcbn1cbmZ1bmN0aW9uIGdldEF4aXNMZW5ndGgoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xufVxuZnVuY3Rpb24gZ2V0U2lkZUF4aXMocGxhY2VtZW50KSB7XG4gIHJldHVybiBbJ3RvcCcsICdib3R0b20nXS5pbmNsdWRlcyhnZXRTaWRlKHBsYWNlbWVudCkpID8gJ3knIDogJ3gnO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGdldE9wcG9zaXRlQXhpcyhnZXRTaWRlQXhpcyhwbGFjZW1lbnQpKTtcbn1cbmZ1bmN0aW9uIGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCkge1xuICBpZiAocnRsID09PSB2b2lkIDApIHtcbiAgICBydGwgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50QXhpcyA9IGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgbGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChhbGlnbm1lbnRBeGlzKTtcbiAgbGV0IG1haW5BbGlnbm1lbnRTaWRlID0gYWxpZ25tZW50QXhpcyA9PT0gJ3gnID8gYWxpZ25tZW50ID09PSAocnRsID8gJ2VuZCcgOiAnc3RhcnQnKSA/ICdyaWdodCcgOiAnbGVmdCcgOiBhbGlnbm1lbnQgPT09ICdzdGFydCcgPyAnYm90dG9tJyA6ICd0b3AnO1xuICBpZiAocmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gPiByZWN0cy5mbG9hdGluZ1tsZW5ndGhdKSB7XG4gICAgbWFpbkFsaWdubWVudFNpZGUgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluQWxpZ25tZW50U2lkZSk7XG4gIH1cbiAgcmV0dXJuIFttYWluQWxpZ25tZW50U2lkZSwgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpbkFsaWdubWVudFNpZGUpXTtcbn1cbmZ1bmN0aW9uIGdldEV4cGFuZGVkUGxhY2VtZW50cyhwbGFjZW1lbnQpIHtcbiAgY29uc3Qgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIGFsaWdubWVudCA9PiBvcHBvc2l0ZUFsaWdubWVudE1hcFthbGlnbm1lbnRdKTtcbn1cbmZ1bmN0aW9uIGdldFNpZGVMaXN0KHNpZGUsIGlzU3RhcnQsIHJ0bCkge1xuICBjb25zdCBsciA9IFsnbGVmdCcsICdyaWdodCddO1xuICBjb25zdCBybCA9IFsncmlnaHQnLCAnbGVmdCddO1xuICBjb25zdCB0YiA9IFsndG9wJywgJ2JvdHRvbSddO1xuICBjb25zdCBidCA9IFsnYm90dG9tJywgJ3RvcCddO1xuICBzd2l0Y2ggKHNpZGUpIHtcbiAgICBjYXNlICd0b3AnOlxuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICBpZiAocnRsKSByZXR1cm4gaXNTdGFydCA/IHJsIDogbHI7XG4gICAgICByZXR1cm4gaXNTdGFydCA/IGxyIDogcmw7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgcmV0dXJuIGlzU3RhcnQgPyB0YiA6IGJ0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gW107XG4gIH1cbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMocGxhY2VtZW50LCBmbGlwQWxpZ25tZW50LCBkaXJlY3Rpb24sIHJ0bCkge1xuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgbGV0IGxpc3QgPSBnZXRTaWRlTGlzdChnZXRTaWRlKHBsYWNlbWVudCksIGRpcmVjdGlvbiA9PT0gJ3N0YXJ0JywgcnRsKTtcbiAgaWYgKGFsaWdubWVudCkge1xuICAgIGxpc3QgPSBsaXN0Lm1hcChzaWRlID0+IHNpZGUgKyBcIi1cIiArIGFsaWdubWVudCk7XG4gICAgaWYgKGZsaXBBbGlnbm1lbnQpIHtcbiAgICAgIGxpc3QgPSBsaXN0LmNvbmNhdChsaXN0Lm1hcChnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbGlzdDtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLCBzaWRlID0+IG9wcG9zaXRlU2lkZU1hcFtzaWRlXSk7XG59XG5mdW5jdGlvbiBleHBhbmRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgLi4ucGFkZGluZ1xuICB9O1xufVxuZnVuY3Rpb24gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKSB7XG4gIHJldHVybiB0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBleHBhbmRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIDoge1xuICAgIHRvcDogcGFkZGluZyxcbiAgICByaWdodDogcGFkZGluZyxcbiAgICBib3R0b206IHBhZGRpbmcsXG4gICAgbGVmdDogcGFkZGluZ1xuICB9O1xufVxuZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIGNvbnN0IHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0gPSByZWN0O1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB0b3A6IHksXG4gICAgbGVmdDogeCxcbiAgICByaWdodDogeCArIHdpZHRoLFxuICAgIGJvdHRvbTogeSArIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZXhwb3J0IHsgYWxpZ25tZW50cywgY2xhbXAsIGNyZWF0ZUNvb3JkcywgZXZhbHVhdGUsIGV4cGFuZFBhZGRpbmdPYmplY3QsIGZsb29yLCBnZXRBbGlnbm1lbnQsIGdldEFsaWdubWVudEF4aXMsIGdldEFsaWdubWVudFNpZGVzLCBnZXRBeGlzTGVuZ3RoLCBnZXRFeHBhbmRlZFBsYWNlbWVudHMsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50LCBnZXRPcHBvc2l0ZUF4aXMsIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMsIGdldE9wcG9zaXRlUGxhY2VtZW50LCBnZXRQYWRkaW5nT2JqZWN0LCBnZXRTaWRlLCBnZXRTaWRlQXhpcywgbWF4LCBtaW4sIHBsYWNlbWVudHMsIHJlY3RUb0NsaWVudFJlY3QsIHJvdW5kLCBzaWRlcyB9O1xuIiwiaW1wb3J0IHsgZ2V0U2lkZUF4aXMsIGdldEFsaWdubWVudEF4aXMsIGdldEF4aXNMZW5ndGgsIGdldFNpZGUsIGdldEFsaWdubWVudCwgZXZhbHVhdGUsIGdldFBhZGRpbmdPYmplY3QsIHJlY3RUb0NsaWVudFJlY3QsIG1pbiwgY2xhbXAsIHBsYWNlbWVudHMsIGdldEFsaWdubWVudFNpZGVzLCBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQsIGdldEV4cGFuZGVkUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cywgc2lkZXMsIG1heCwgZ2V0T3Bwb3NpdGVBeGlzIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzJztcbmV4cG9ydCB7IHJlY3RUb0NsaWVudFJlY3QgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuXG5mdW5jdGlvbiBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChfcmVmLCBwbGFjZW1lbnQsIHJ0bCkge1xuICBsZXQge1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZ1xuICB9ID0gX3JlZjtcbiAgY29uc3Qgc2lkZUF4aXMgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnRBeGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbkxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYWxpZ25tZW50QXhpcyk7XG4gIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBzaWRlQXhpcyA9PT0gJ3knO1xuICBjb25zdCBjb21tb25YID0gcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGggLyAyIC0gZmxvYXRpbmcud2lkdGggLyAyO1xuICBjb25zdCBjb21tb25ZID0gcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0IC8gMiAtIGZsb2F0aW5nLmhlaWdodCAvIDI7XG4gIGNvbnN0IGNvbW1vbkFsaWduID0gcmVmZXJlbmNlW2FsaWduTGVuZ3RoXSAvIDIgLSBmbG9hdGluZ1thbGlnbkxlbmd0aF0gLyAyO1xuICBsZXQgY29vcmRzO1xuICBzd2l0Y2ggKHNpZGUpIHtcbiAgICBjYXNlICd0b3AnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSAtIGZsb2F0aW5nLmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdsZWZ0JzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggLSBmbG9hdGluZy53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54LFxuICAgICAgICB5OiByZWZlcmVuY2UueVxuICAgICAgfTtcbiAgfVxuICBzd2l0Y2ggKGdldEFsaWdubWVudChwbGFjZW1lbnQpKSB7XG4gICAgY2FzZSAnc3RhcnQnOlxuICAgICAgY29vcmRzW2FsaWdubWVudEF4aXNdIC09IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2VuZCc6XG4gICAgICBjb29yZHNbYWxpZ25tZW50QXhpc10gKz0gY29tbW9uQWxpZ24gKiAocnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDEpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGNvb3Jkcztcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gKiBuZXh0IHRvIGEgZ2l2ZW4gcmVmZXJlbmNlIGVsZW1lbnQuXG4gKlxuICogVGhpcyBleHBvcnQgZG9lcyBub3QgaGF2ZSBhbnkgYHBsYXRmb3JtYCBpbnRlcmZhY2UgbG9naWMuIFlvdSB3aWxsIG5lZWQgdG9cbiAqIHdyaXRlIG9uZSBmb3IgdGhlIHBsYXRmb3JtIHlvdSBhcmUgdXNpbmcgRmxvYXRpbmcgVUkgd2l0aC5cbiAqL1xuY29uc3QgY29tcHV0ZVBvc2l0aW9uID0gYXN5bmMgKHJlZmVyZW5jZSwgZmxvYXRpbmcsIGNvbmZpZykgPT4ge1xuICBjb25zdCB7XG4gICAgcGxhY2VtZW50ID0gJ2JvdHRvbScsXG4gICAgc3RyYXRlZ3kgPSAnYWJzb2x1dGUnLFxuICAgIG1pZGRsZXdhcmUgPSBbXSxcbiAgICBwbGF0Zm9ybVxuICB9ID0gY29uZmlnO1xuICBjb25zdCB2YWxpZE1pZGRsZXdhcmUgPSBtaWRkbGV3YXJlLmZpbHRlcihCb29sZWFuKTtcbiAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChmbG9hdGluZykpO1xuICBsZXQgcmVjdHMgPSBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZyxcbiAgICBzdHJhdGVneVxuICB9KTtcbiAgbGV0IHtcbiAgICB4LFxuICAgIHlcbiAgfSA9IGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KHJlY3RzLCBwbGFjZW1lbnQsIHJ0bCk7XG4gIGxldCBzdGF0ZWZ1bFBsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgbGV0IG1pZGRsZXdhcmVEYXRhID0ge307XG4gIGxldCByZXNldENvdW50ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWxpZE1pZGRsZXdhcmUubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB7XG4gICAgICBuYW1lLFxuICAgICAgZm5cbiAgICB9ID0gdmFsaWRNaWRkbGV3YXJlW2ldO1xuICAgIGNvbnN0IHtcbiAgICAgIHg6IG5leHRYLFxuICAgICAgeTogbmV4dFksXG4gICAgICBkYXRhLFxuICAgICAgcmVzZXRcbiAgICB9ID0gYXdhaXQgZm4oe1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICBpbml0aWFsUGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQ6IHN0YXRlZnVsUGxhY2VtZW50LFxuICAgICAgc3RyYXRlZ3ksXG4gICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgIHJlY3RzLFxuICAgICAgcGxhdGZvcm0sXG4gICAgICBlbGVtZW50czoge1xuICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgIGZsb2F0aW5nXG4gICAgICB9XG4gICAgfSk7XG4gICAgeCA9IG5leHRYICE9IG51bGwgPyBuZXh0WCA6IHg7XG4gICAgeSA9IG5leHRZICE9IG51bGwgPyBuZXh0WSA6IHk7XG4gICAgbWlkZGxld2FyZURhdGEgPSB7XG4gICAgICAuLi5taWRkbGV3YXJlRGF0YSxcbiAgICAgIFtuYW1lXToge1xuICAgICAgICAuLi5taWRkbGV3YXJlRGF0YVtuYW1lXSxcbiAgICAgICAgLi4uZGF0YVxuICAgICAgfVxuICAgIH07XG4gICAgaWYgKHJlc2V0ICYmIHJlc2V0Q291bnQgPD0gNTApIHtcbiAgICAgIHJlc2V0Q291bnQrKztcbiAgICAgIGlmICh0eXBlb2YgcmVzZXQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChyZXNldC5wbGFjZW1lbnQpIHtcbiAgICAgICAgICBzdGF0ZWZ1bFBsYWNlbWVudCA9IHJlc2V0LnBsYWNlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzZXQucmVjdHMpIHtcbiAgICAgICAgICByZWN0cyA9IHJlc2V0LnJlY3RzID09PSB0cnVlID8gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgICAgIGZsb2F0aW5nLFxuICAgICAgICAgICAgc3RyYXRlZ3lcbiAgICAgICAgICB9KSA6IHJlc2V0LnJlY3RzO1xuICAgICAgICB9XG4gICAgICAgICh7XG4gICAgICAgICAgeCxcbiAgICAgICAgICB5XG4gICAgICAgIH0gPSBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChyZWN0cywgc3RhdGVmdWxQbGFjZW1lbnQsIHJ0bCkpO1xuICAgICAgfVxuICAgICAgaSA9IC0xO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICBwbGFjZW1lbnQ6IHN0YXRlZnVsUGxhY2VtZW50LFxuICAgIHN0cmF0ZWd5LFxuICAgIG1pZGRsZXdhcmVEYXRhXG4gIH07XG59O1xuXG4vKipcbiAqIFJlc29sdmVzIHdpdGggYW4gb2JqZWN0IG9mIG92ZXJmbG93IHNpZGUgb2Zmc2V0cyB0aGF0IGRldGVybWluZSBob3cgbXVjaCB0aGVcbiAqIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmcgYSBnaXZlbiBjbGlwcGluZyBib3VuZGFyeSBvbiBlYWNoIHNpZGUuXG4gKiAtIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGJvdW5kYXJ5IGJ5IHRoYXQgbnVtYmVyIG9mIHBpeGVsc1xuICogLSBuZWdhdGl2ZSA9IGhvdyBtYW55IHBpeGVscyBsZWZ0IGJlZm9yZSBpdCB3aWxsIG92ZXJmbG93XG4gKiAtIDAgPSBsaWVzIGZsdXNoIHdpdGggdGhlIGJvdW5kYXJ5XG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZGV0ZWN0T3ZlcmZsb3dcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9hd2FpdCRwbGF0Zm9ybSRpc0VsZTtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYXRmb3JtLFxuICAgIHJlY3RzLFxuICAgIGVsZW1lbnRzLFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBzdGF0ZTtcbiAgY29uc3Qge1xuICAgIGJvdW5kYXJ5ID0gJ2NsaXBwaW5nQW5jZXN0b3JzJyxcbiAgICByb290Qm91bmRhcnkgPSAndmlld3BvcnQnLFxuICAgIGVsZW1lbnRDb250ZXh0ID0gJ2Zsb2F0aW5nJyxcbiAgICBhbHRCb3VuZGFyeSA9IGZhbHNlLFxuICAgIHBhZGRpbmcgPSAwXG4gIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpO1xuICBjb25zdCBhbHRDb250ZXh0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyAncmVmZXJlbmNlJyA6ICdmbG9hdGluZyc7XG4gIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50c1thbHRCb3VuZGFyeSA/IGFsdENvbnRleHQgOiBlbGVtZW50Q29udGV4dF07XG4gIGNvbnN0IGNsaXBwaW5nQ2xpZW50UmVjdCA9IHJlY3RUb0NsaWVudFJlY3QoYXdhaXQgcGxhdGZvcm0uZ2V0Q2xpcHBpbmdSZWN0KHtcbiAgICBlbGVtZW50OiAoKF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA9IGF3YWl0IChwbGF0Zm9ybS5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzRWxlbWVudChlbGVtZW50KSkpICE9IG51bGwgPyBfYXdhaXQkcGxhdGZvcm0kaXNFbGUgOiB0cnVlKSA/IGVsZW1lbnQgOiBlbGVtZW50LmNvbnRleHRFbGVtZW50IHx8IChhd2FpdCAocGxhdGZvcm0uZ2V0RG9jdW1lbnRFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudHMuZmxvYXRpbmcpKSksXG4gICAgYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5LFxuICAgIHN0cmF0ZWd5XG4gIH0pKTtcbiAgY29uc3QgcmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSAnZmxvYXRpbmcnID8ge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aDogcmVjdHMuZmxvYXRpbmcud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0cy5mbG9hdGluZy5oZWlnaHRcbiAgfSA6IHJlY3RzLnJlZmVyZW5jZTtcbiAgY29uc3Qgb2Zmc2V0UGFyZW50ID0gYXdhaXQgKHBsYXRmb3JtLmdldE9mZnNldFBhcmVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gIGNvbnN0IG9mZnNldFNjYWxlID0gKGF3YWl0IChwbGF0Zm9ybS5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzRWxlbWVudChvZmZzZXRQYXJlbnQpKSkgPyAoYXdhaXQgKHBsYXRmb3JtLmdldFNjYWxlID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRTY2FsZShvZmZzZXRQYXJlbnQpKSkgfHwge1xuICAgIHg6IDEsXG4gICAgeTogMVxuICB9IDoge1xuICAgIHg6IDEsXG4gICAgeTogMVxuICB9O1xuICBjb25zdCBlbGVtZW50Q2xpZW50UmVjdCA9IHJlY3RUb0NsaWVudFJlY3QocGxhdGZvcm0uY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QgPyBhd2FpdCBwbGF0Zm9ybS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCh7XG4gICAgZWxlbWVudHMsXG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSkgOiByZWN0KTtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IChjbGlwcGluZ0NsaWVudFJlY3QudG9wIC0gZWxlbWVudENsaWVudFJlY3QudG9wICsgcGFkZGluZ09iamVjdC50b3ApIC8gb2Zmc2V0U2NhbGUueSxcbiAgICBib3R0b206IChlbGVtZW50Q2xpZW50UmVjdC5ib3R0b20gLSBjbGlwcGluZ0NsaWVudFJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20pIC8gb2Zmc2V0U2NhbGUueSxcbiAgICBsZWZ0OiAoY2xpcHBpbmdDbGllbnRSZWN0LmxlZnQgLSBlbGVtZW50Q2xpZW50UmVjdC5sZWZ0ICsgcGFkZGluZ09iamVjdC5sZWZ0KSAvIG9mZnNldFNjYWxlLngsXG4gICAgcmlnaHQ6IChlbGVtZW50Q2xpZW50UmVjdC5yaWdodCAtIGNsaXBwaW5nQ2xpZW50UmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHQpIC8gb2Zmc2V0U2NhbGUueFxuICB9O1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IG9wdGlvbnMgPT4gKHtcbiAgbmFtZTogJ2Fycm93JyxcbiAgb3B0aW9ucyxcbiAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICBjb25zdCB7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIHJlY3RzLFxuICAgICAgcGxhdGZvcm0sXG4gICAgICBlbGVtZW50cyxcbiAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgfSA9IHN0YXRlO1xuICAgIC8vIFNpbmNlIGBlbGVtZW50YCBpcyByZXF1aXJlZCwgd2UgZG9uJ3QgUGFydGlhbDw+IHRoZSB0eXBlLlxuICAgIGNvbnN0IHtcbiAgICAgIGVsZW1lbnQsXG4gICAgICBwYWRkaW5nID0gMFxuICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSkgfHwge307XG4gICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICB4LFxuICAgICAgeVxuICAgIH07XG4gICAgY29uc3QgYXhpcyA9IGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KTtcbiAgICBjb25zdCBsZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGF4aXMpO1xuICAgIGNvbnN0IGFycm93RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtLmdldERpbWVuc2lvbnMoZWxlbWVudCk7XG4gICAgY29uc3QgaXNZQXhpcyA9IGF4aXMgPT09ICd5JztcbiAgICBjb25zdCBtaW5Qcm9wID0gaXNZQXhpcyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgIGNvbnN0IG1heFByb3AgPSBpc1lBeGlzID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgIGNvbnN0IGNsaWVudFByb3AgPSBpc1lBeGlzID8gJ2NsaWVudEhlaWdodCcgOiAnY2xpZW50V2lkdGgnO1xuICAgIGNvbnN0IGVuZERpZmYgPSByZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSArIHJlY3RzLnJlZmVyZW5jZVtheGlzXSAtIGNvb3Jkc1theGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbmd0aF07XG4gICAgY29uc3Qgc3RhcnREaWZmID0gY29vcmRzW2F4aXNdIC0gcmVjdHMucmVmZXJlbmNlW2F4aXNdO1xuICAgIGNvbnN0IGFycm93T2Zmc2V0UGFyZW50ID0gYXdhaXQgKHBsYXRmb3JtLmdldE9mZnNldFBhcmVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpKTtcbiAgICBsZXQgY2xpZW50U2l6ZSA9IGFycm93T2Zmc2V0UGFyZW50ID8gYXJyb3dPZmZzZXRQYXJlbnRbY2xpZW50UHJvcF0gOiAwO1xuXG4gICAgLy8gRE9NIHBsYXRmb3JtIGNhbiByZXR1cm4gYHdpbmRvd2AgYXMgdGhlIGBvZmZzZXRQYXJlbnRgLlxuICAgIGlmICghY2xpZW50U2l6ZSB8fCAhKGF3YWl0IChwbGF0Zm9ybS5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzRWxlbWVudChhcnJvd09mZnNldFBhcmVudCkpKSkge1xuICAgICAgY2xpZW50U2l6ZSA9IGVsZW1lbnRzLmZsb2F0aW5nW2NsaWVudFByb3BdIHx8IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF07XG4gICAgfVxuICAgIGNvbnN0IGNlbnRlclRvUmVmZXJlbmNlID0gZW5kRGlmZiAvIDIgLSBzdGFydERpZmYgLyAyO1xuXG4gICAgLy8gSWYgdGhlIHBhZGRpbmcgaXMgbGFyZ2UgZW5vdWdoIHRoYXQgaXQgY2F1c2VzIHRoZSBhcnJvdyB0byBubyBsb25nZXIgYmVcbiAgICAvLyBjZW50ZXJlZCwgbW9kaWZ5IHRoZSBwYWRkaW5nIHNvIHRoYXQgaXQgaXMgY2VudGVyZWQuXG4gICAgY29uc3QgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIC0gMTtcbiAgICBjb25zdCBtaW5QYWRkaW5nID0gbWluKHBhZGRpbmdPYmplY3RbbWluUHJvcF0sIGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcpO1xuICAgIGNvbnN0IG1heFBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttYXhQcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG5cbiAgICAvLyBNYWtlIHN1cmUgdGhlIGFycm93IGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaWYgdGhlIGNlbnRlclxuICAgIC8vIHBvaW50IGlzIG91dHNpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQncyBib3VuZHMuXG4gICAgY29uc3QgbWluJDEgPSBtaW5QYWRkaW5nO1xuICAgIGNvbnN0IG1heCA9IGNsaWVudFNpemUgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAtIG1heFBhZGRpbmc7XG4gICAgY29uc3QgY2VudGVyID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgKyBjZW50ZXJUb1JlZmVyZW5jZTtcbiAgICBjb25zdCBvZmZzZXQgPSBjbGFtcChtaW4kMSwgY2VudGVyLCBtYXgpO1xuXG4gICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBpcyBzbWFsbCBlbm91Z2ggdGhhdCB0aGUgYXJyb3cncyBwYWRkaW5nIGNhdXNlcyBpdCB0b1xuICAgIC8vIHRvIHBvaW50IHRvIG5vdGhpbmcgZm9yIGFuIGFsaWduZWQgcGxhY2VtZW50LCBhZGp1c3QgdGhlIG9mZnNldCBvZiB0aGVcbiAgICAvLyBmbG9hdGluZyBlbGVtZW50IGl0c2VsZi4gVG8gZW5zdXJlIGBzaGlmdCgpYCBjb250aW51ZXMgdG8gdGFrZSBhY3Rpb24sXG4gICAgLy8gYSBzaW5nbGUgcmVzZXQgaXMgcGVyZm9ybWVkIHdoZW4gdGhpcyBpcyB0cnVlLlxuICAgIGNvbnN0IHNob3VsZEFkZE9mZnNldCA9ICFtaWRkbGV3YXJlRGF0YS5hcnJvdyAmJiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSAhPSBudWxsICYmIGNlbnRlciAhPT0gb2Zmc2V0ICYmIHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdIC8gMiAtIChjZW50ZXIgPCBtaW4kMSA/IG1pblBhZGRpbmcgOiBtYXhQYWRkaW5nKSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiA8IDA7XG4gICAgY29uc3QgYWxpZ25tZW50T2Zmc2V0ID0gc2hvdWxkQWRkT2Zmc2V0ID8gY2VudGVyIDwgbWluJDEgPyBjZW50ZXIgLSBtaW4kMSA6IGNlbnRlciAtIG1heCA6IDA7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtheGlzXTogY29vcmRzW2F4aXNdICsgYWxpZ25tZW50T2Zmc2V0LFxuICAgICAgZGF0YToge1xuICAgICAgICBbYXhpc106IG9mZnNldCxcbiAgICAgICAgY2VudGVyT2Zmc2V0OiBjZW50ZXIgLSBvZmZzZXQgLSBhbGlnbm1lbnRPZmZzZXQsXG4gICAgICAgIC4uLihzaG91bGRBZGRPZmZzZXQgJiYge1xuICAgICAgICAgIGFsaWdubWVudE9mZnNldFxuICAgICAgICB9KVxuICAgICAgfSxcbiAgICAgIHJlc2V0OiBzaG91bGRBZGRPZmZzZXRcbiAgICB9O1xuICB9XG59KTtcblxuZnVuY3Rpb24gZ2V0UGxhY2VtZW50TGlzdChhbGlnbm1lbnQsIGF1dG9BbGlnbm1lbnQsIGFsbG93ZWRQbGFjZW1lbnRzKSB7XG4gIGNvbnN0IGFsbG93ZWRQbGFjZW1lbnRzU29ydGVkQnlBbGlnbm1lbnQgPSBhbGlnbm1lbnQgPyBbLi4uYWxsb3dlZFBsYWNlbWVudHMuZmlsdGVyKHBsYWNlbWVudCA9PiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSA9PT0gYWxpZ25tZW50KSwgLi4uYWxsb3dlZFBsYWNlbWVudHMuZmlsdGVyKHBsYWNlbWVudCA9PiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSAhPT0gYWxpZ25tZW50KV0gOiBhbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldFNpZGUocGxhY2VtZW50KSA9PT0gcGxhY2VtZW50KTtcbiAgcmV0dXJuIGFsbG93ZWRQbGFjZW1lbnRzU29ydGVkQnlBbGlnbm1lbnQuZmlsdGVyKHBsYWNlbWVudCA9PiB7XG4gICAgaWYgKGFsaWdubWVudCkge1xuICAgICAgcmV0dXJuIGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQgfHwgKGF1dG9BbGlnbm1lbnQgPyBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpICE9PSBwbGFjZW1lbnQgOiBmYWxzZSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbn1cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGNob29zaW5nIHRoZSBwbGFjZW1lbnRcbiAqIHRoYXQgaGFzIHRoZSBtb3N0IHNwYWNlIGF2YWlsYWJsZSBhdXRvbWF0aWNhbGx5LCB3aXRob3V0IG5lZWRpbmcgdG8gc3BlY2lmeSBhXG4gKiBwcmVmZXJyZWQgcGxhY2VtZW50LiBBbHRlcm5hdGl2ZSB0byBgZmxpcGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1BsYWNlbWVudFxuICovXG5jb25zdCBhdXRvUGxhY2VtZW50ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdhdXRvUGxhY2VtZW50JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGF1dG9QLCBfbWlkZGxld2FyZURhdGEkYXV0b1AyLCBfcGxhY2VtZW50c1RoYXRGaXRPbkU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzLFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY3Jvc3NBeGlzID0gZmFsc2UsXG4gICAgICAgIGFsaWdubWVudCxcbiAgICAgICAgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzLFxuICAgICAgICBhdXRvQWxpZ25tZW50ID0gdHJ1ZSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgcGxhY2VtZW50cyQxID0gYWxpZ25tZW50ICE9PSB1bmRlZmluZWQgfHwgYWxsb3dlZFBsYWNlbWVudHMgPT09IHBsYWNlbWVudHMgPyBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCB8fCBudWxsLCBhdXRvQWxpZ25tZW50LCBhbGxvd2VkUGxhY2VtZW50cykgOiBhbGxvd2VkUGxhY2VtZW50cztcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSAoKF9taWRkbGV3YXJlRGF0YSRhdXRvUCA9IG1pZGRsZXdhcmVEYXRhLmF1dG9QbGFjZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXV0b1AuaW5kZXgpIHx8IDA7XG4gICAgICBjb25zdCBjdXJyZW50UGxhY2VtZW50ID0gcGxhY2VtZW50cyQxW2N1cnJlbnRJbmRleF07XG4gICAgICBpZiAoY3VycmVudFBsYWNlbWVudCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFsaWdubWVudFNpZGVzID0gZ2V0QWxpZ25tZW50U2lkZXMoY3VycmVudFBsYWNlbWVudCwgcmVjdHMsIGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKSk7XG5cbiAgICAgIC8vIE1ha2UgYGNvbXB1dGVDb29yZHNgIHN0YXJ0IGZyb20gdGhlIHJpZ2h0IHBsYWNlLlxuICAgICAgaWYgKHBsYWNlbWVudCAhPT0gY3VycmVudFBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudHMkMVswXVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRPdmVyZmxvd3MgPSBbb3ZlcmZsb3dbZ2V0U2lkZShjdXJyZW50UGxhY2VtZW50KV0sIG92ZXJmbG93W2FsaWdubWVudFNpZGVzWzBdXSwgb3ZlcmZsb3dbYWxpZ25tZW50U2lkZXNbMV1dXTtcbiAgICAgIGNvbnN0IGFsbE92ZXJmbG93cyA9IFsuLi4oKChfbWlkZGxld2FyZURhdGEkYXV0b1AyID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUDIub3ZlcmZsb3dzKSB8fCBbXSksIHtcbiAgICAgICAgcGxhY2VtZW50OiBjdXJyZW50UGxhY2VtZW50LFxuICAgICAgICBvdmVyZmxvd3M6IGN1cnJlbnRPdmVyZmxvd3NcbiAgICAgIH1dO1xuICAgICAgY29uc3QgbmV4dFBsYWNlbWVudCA9IHBsYWNlbWVudHMkMVtjdXJyZW50SW5kZXggKyAxXTtcblxuICAgICAgLy8gVGhlcmUgYXJlIG1vcmUgcGxhY2VtZW50cyB0byBjaGVjay5cbiAgICAgIGlmIChuZXh0UGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgaW5kZXg6IGN1cnJlbnRJbmRleCArIDEsXG4gICAgICAgICAgICBvdmVyZmxvd3M6IGFsbE92ZXJmbG93c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogbmV4dFBsYWNlbWVudFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZSA9IGFsbE92ZXJmbG93cy5tYXAoZCA9PiB7XG4gICAgICAgIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChkLnBsYWNlbWVudCk7XG4gICAgICAgIHJldHVybiBbZC5wbGFjZW1lbnQsIGFsaWdubWVudCAmJiBjcm9zc0F4aXMgP1xuICAgICAgICAvLyBDaGVjayBhbG9uZyB0aGUgbWFpbkF4aXMgYW5kIG1haW4gY3Jvc3NBeGlzIHNpZGUuXG4gICAgICAgIGQub3ZlcmZsb3dzLnNsaWNlKDAsIDIpLnJlZHVjZSgoYWNjLCB2KSA9PiBhY2MgKyB2LCAwKSA6XG4gICAgICAgIC8vIENoZWNrIG9ubHkgdGhlIG1haW5BeGlzLlxuICAgICAgICBkLm92ZXJmbG93c1swXSwgZC5vdmVyZmxvd3NdO1xuICAgICAgfSkuc29ydCgoYSwgYikgPT4gYVsxXSAtIGJbMV0pO1xuICAgICAgY29uc3QgcGxhY2VtZW50c1RoYXRGaXRPbkVhY2hTaWRlID0gcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlLmZpbHRlcihkID0+IGRbMl0uc2xpY2UoMCxcbiAgICAgIC8vIEFsaWduZWQgcGxhY2VtZW50cyBzaG91bGQgbm90IGNoZWNrIHRoZWlyIG9wcG9zaXRlIGNyb3NzQXhpc1xuICAgICAgLy8gc2lkZS5cbiAgICAgIGdldEFsaWdubWVudChkWzBdKSA/IDIgOiAzKS5ldmVyeSh2ID0+IHYgPD0gMCkpO1xuICAgICAgY29uc3QgcmVzZXRQbGFjZW1lbnQgPSAoKF9wbGFjZW1lbnRzVGhhdEZpdE9uRSA9IHBsYWNlbWVudHNUaGF0Rml0T25FYWNoU2lkZVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wbGFjZW1lbnRzVGhhdEZpdE9uRVswXSkgfHwgcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlWzBdWzBdO1xuICAgICAgaWYgKHJlc2V0UGxhY2VtZW50ICE9PSBwbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpbmRleDogY3VycmVudEluZGV4ICsgMSxcbiAgICAgICAgICAgIG92ZXJmbG93czogYWxsT3ZlcmZsb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBmbGlwcGluZyB0aGUgYHBsYWNlbWVudGBcbiAqIGluIG9yZGVyIHRvIGtlZXAgaXQgaW4gdmlldyB3aGVuIHRoZSBwcmVmZXJyZWQgcGxhY2VtZW50KHMpIHdpbGwgb3ZlcmZsb3cgdGhlXG4gKiBjbGlwcGluZyBib3VuZGFyeS4gQWx0ZXJuYXRpdmUgdG8gYGF1dG9QbGFjZW1lbnRgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2ZsaXBcbiAqL1xuY29uc3QgZmxpcCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZmxpcCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRhcnJvdywgX21pZGRsZXdhcmVEYXRhJGZsaXA7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBpbml0aWFsUGxhY2VtZW50LFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gdHJ1ZSxcbiAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzOiBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICAgIGZhbGxiYWNrU3RyYXRlZ3kgPSAnYmVzdEZpdCcsXG4gICAgICAgIGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gPSAnbm9uZScsXG4gICAgICAgIGZsaXBBbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG5cbiAgICAgIC8vIElmIGEgcmVzZXQgYnkgdGhlIGFycm93IHdhcyBjYXVzZWQgZHVlIHRvIGFuIGFsaWdubWVudCBvZmZzZXQgYmVpbmdcbiAgICAgIC8vIGFkZGVkLCB3ZSBzaG91bGQgc2tpcCBhbnkgbG9naWMgbm93IHNpbmNlIGBmbGlwKClgIGhhcyBhbHJlYWR5IGRvbmUgaXRzXG4gICAgICAvLyB3b3JrLlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8yNTQ5I2lzc3VlY29tbWVudC0xNzE5NjAxNjQzXG4gICAgICBpZiAoKF9taWRkbGV3YXJlRGF0YSRhcnJvdyA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSAhPSBudWxsICYmIF9taWRkbGV3YXJlRGF0YSRhcnJvdy5hbGlnbm1lbnRPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGluaXRpYWxTaWRlQXhpcyA9IGdldFNpZGVBeGlzKGluaXRpYWxQbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaXNCYXNlUGxhY2VtZW50ID0gZ2V0U2lkZShpbml0aWFsUGxhY2VtZW50KSA9PT0gaW5pdGlhbFBsYWNlbWVudDtcbiAgICAgIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgICAgIGNvbnN0IGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwQWxpZ25tZW50ID8gW2dldE9wcG9zaXRlUGxhY2VtZW50KGluaXRpYWxQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkUGxhY2VtZW50cyhpbml0aWFsUGxhY2VtZW50KSk7XG4gICAgICBjb25zdCBoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uID0gZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiAhPT0gJ25vbmUnO1xuICAgICAgaWYgKCFzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgJiYgaGFzRmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbikge1xuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHMucHVzaCguLi5nZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24sIHJ0bCkpO1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50cyA9IFtpbml0aWFsUGxhY2VtZW50LCAuLi5mYWxsYmFja1BsYWNlbWVudHNdO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IG92ZXJmbG93cyA9IFtdO1xuICAgICAgbGV0IG92ZXJmbG93c0RhdGEgPSAoKF9taWRkbGV3YXJlRGF0YSRmbGlwID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwLm92ZXJmbG93cykgfHwgW107XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBvdmVyZmxvd3MucHVzaChvdmVyZmxvd1tzaWRlXSk7XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgY29uc3Qgc2lkZXMgPSBnZXRBbGlnbm1lbnRTaWRlcyhwbGFjZW1lbnQsIHJlY3RzLCBydGwpO1xuICAgICAgICBvdmVyZmxvd3MucHVzaChvdmVyZmxvd1tzaWRlc1swXV0sIG92ZXJmbG93W3NpZGVzWzFdXSk7XG4gICAgICB9XG4gICAgICBvdmVyZmxvd3NEYXRhID0gWy4uLm92ZXJmbG93c0RhdGEsIHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBvdmVyZmxvd3NcbiAgICAgIH1dO1xuXG4gICAgICAvLyBPbmUgb3IgbW9yZSBzaWRlcyBpcyBvdmVyZmxvd2luZy5cbiAgICAgIGlmICghb3ZlcmZsb3dzLmV2ZXJ5KHNpZGUgPT4gc2lkZSA8PSAwKSkge1xuICAgICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGZsaXAyLCBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXI7XG4gICAgICAgIGNvbnN0IG5leHRJbmRleCA9ICgoKF9taWRkbGV3YXJlRGF0YSRmbGlwMiA9IG1pZGRsZXdhcmVEYXRhLmZsaXApID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkZmxpcDIuaW5kZXgpIHx8IDApICsgMTtcbiAgICAgICAgY29uc3QgbmV4dFBsYWNlbWVudCA9IHBsYWNlbWVudHNbbmV4dEluZGV4XTtcbiAgICAgICAgaWYgKG5leHRQbGFjZW1lbnQpIHtcbiAgICAgICAgICAvLyBUcnkgbmV4dCBwbGFjZW1lbnQgYW5kIHJlLXJ1biB0aGUgbGlmZWN5Y2xlLlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIGluZGV4OiBuZXh0SW5kZXgsXG4gICAgICAgICAgICAgIG92ZXJmbG93czogb3ZlcmZsb3dzRGF0YVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICAgIHBsYWNlbWVudDogbmV4dFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaXJzdCwgZmluZCB0aGUgY2FuZGlkYXRlcyB0aGF0IGZpdCBvbiB0aGUgbWFpbkF4aXMgc2lkZSBvZiBvdmVyZmxvdyxcbiAgICAgICAgLy8gdGhlbiBmaW5kIHRoZSBwbGFjZW1lbnQgdGhhdCBmaXRzIHRoZSBiZXN0IG9uIHRoZSBtYWluIGNyb3NzQXhpcyBzaWRlLlxuICAgICAgICBsZXQgcmVzZXRQbGFjZW1lbnQgPSAoX292ZXJmbG93c0RhdGEkZmlsdGVyID0gb3ZlcmZsb3dzRGF0YS5maWx0ZXIoZCA9PiBkLm92ZXJmbG93c1swXSA8PSAwKS5zb3J0KChhLCBiKSA9PiBhLm92ZXJmbG93c1sxXSAtIGIub3ZlcmZsb3dzWzFdKVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vdmVyZmxvd3NEYXRhJGZpbHRlci5wbGFjZW1lbnQ7XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIGZhbGxiYWNrLlxuICAgICAgICBpZiAoIXJlc2V0UGxhY2VtZW50KSB7XG4gICAgICAgICAgc3dpdGNoIChmYWxsYmFja1N0cmF0ZWd5KSB7XG4gICAgICAgICAgICBjYXNlICdiZXN0Rml0JzpcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhciBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIyO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIyID0gb3ZlcmZsb3dzRGF0YS5maWx0ZXIoZCA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoaGFzRmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U2lkZUF4aXMgPSBnZXRTaWRlQXhpcyhkLnBsYWNlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50U2lkZUF4aXMgPT09IGluaXRpYWxTaWRlQXhpcyB8fFxuICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBiaWFzIHRvIHRoZSBgeWAgc2lkZSBheGlzIGR1ZSB0byBob3Jpem9udGFsXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlYWRpbmcgZGlyZWN0aW9ucyBmYXZvcmluZyBncmVhdGVyIHdpZHRoLlxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2lkZUF4aXMgPT09ICd5JztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH0pLm1hcChkID0+IFtkLnBsYWNlbWVudCwgZC5vdmVyZmxvd3MuZmlsdGVyKG92ZXJmbG93ID0+IG92ZXJmbG93ID4gMCkucmVkdWNlKChhY2MsIG92ZXJmbG93KSA9PiBhY2MgKyBvdmVyZmxvdywgMCldKS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIyWzBdO1xuICAgICAgICAgICAgICAgIGlmIChwbGFjZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgIHJlc2V0UGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnaW5pdGlhbFBsYWNlbWVudCc6XG4gICAgICAgICAgICAgIHJlc2V0UGxhY2VtZW50ID0gaW5pdGlhbFBsYWNlbWVudDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwbGFjZW1lbnQgIT09IHJlc2V0UGxhY2VtZW50KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICAgIHBsYWNlbWVudDogcmVzZXRQbGFjZW1lbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3QpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IG92ZXJmbG93LnRvcCAtIHJlY3QuaGVpZ2h0LFxuICAgIHJpZ2h0OiBvdmVyZmxvdy5yaWdodCAtIHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiBvdmVyZmxvdy5ib3R0b20gLSByZWN0LmhlaWdodCxcbiAgICBsZWZ0OiBvdmVyZmxvdy5sZWZ0IC0gcmVjdC53aWR0aFxuICB9O1xufVxuZnVuY3Rpb24gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG92ZXJmbG93KSB7XG4gIHJldHVybiBzaWRlcy5zb21lKHNpZGUgPT4gb3ZlcmZsb3dbc2lkZV0gPj0gMCk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gaGlkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBpbiBhcHBsaWNhYmxlIHNpdHVhdGlvbnMsIHN1Y2ggYXNcbiAqIHdoZW4gaXQgaXMgbm90IGluIHRoZSBzYW1lIGNsaXBwaW5nIGNvbnRleHQgYXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2hpZGVcbiAqL1xuY29uc3QgaGlkZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnaGlkZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICByZWN0c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBzdHJhdGVneSA9ICdyZWZlcmVuY2VIaWRkZW4nLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBzd2l0Y2ggKHN0cmF0ZWd5KSB7XG4gICAgICAgIGNhc2UgJ3JlZmVyZW5jZUhpZGRlbic6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnMsXG4gICAgICAgICAgICAgIGVsZW1lbnRDb250ZXh0OiAncmVmZXJlbmNlJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3RzLnJlZmVyZW5jZSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlSGlkZGVuT2Zmc2V0czogb2Zmc2V0cyxcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW46IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvZmZzZXRzKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnZXNjYXBlZCc6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnMsXG4gICAgICAgICAgICAgIGFsdEJvdW5kYXJ5OiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMuZmxvYXRpbmcpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGVzY2FwZWRPZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIGVzY2FwZWQ6IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvZmZzZXRzKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGdldEJvdW5kaW5nUmVjdChyZWN0cykge1xuICBjb25zdCBtaW5YID0gbWluKC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICBjb25zdCBtaW5ZID0gbWluKC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QudG9wKSk7XG4gIGNvbnN0IG1heFggPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5yaWdodCkpO1xuICBjb25zdCBtYXhZID0gbWF4KC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QuYm90dG9tKSk7XG4gIHJldHVybiB7XG4gICAgeDogbWluWCxcbiAgICB5OiBtaW5ZLFxuICAgIHdpZHRoOiBtYXhYIC0gbWluWCxcbiAgICBoZWlnaHQ6IG1heFkgLSBtaW5ZXG4gIH07XG59XG5mdW5jdGlvbiBnZXRSZWN0c0J5TGluZShyZWN0cykge1xuICBjb25zdCBzb3J0ZWRSZWN0cyA9IHJlY3RzLnNsaWNlKCkuc29ydCgoYSwgYikgPT4gYS55IC0gYi55KTtcbiAgY29uc3QgZ3JvdXBzID0gW107XG4gIGxldCBwcmV2UmVjdCA9IG51bGw7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkUmVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCByZWN0ID0gc29ydGVkUmVjdHNbaV07XG4gICAgaWYgKCFwcmV2UmVjdCB8fCByZWN0LnkgLSBwcmV2UmVjdC55ID4gcHJldlJlY3QuaGVpZ2h0IC8gMikge1xuICAgICAgZ3JvdXBzLnB1c2goW3JlY3RdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXBzW2dyb3Vwcy5sZW5ndGggLSAxXS5wdXNoKHJlY3QpO1xuICAgIH1cbiAgICBwcmV2UmVjdCA9IHJlY3Q7XG4gIH1cbiAgcmV0dXJuIGdyb3Vwcy5tYXAocmVjdCA9PiByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChyZWN0KSkpO1xufVxuLyoqXG4gKiBQcm92aWRlcyBpbXByb3ZlZCBwb3NpdGlvbmluZyBmb3IgaW5saW5lIHJlZmVyZW5jZSBlbGVtZW50cyB0aGF0IGNhbiBzcGFuXG4gKiBvdmVyIG11bHRpcGxlIGxpbmVzLCBzdWNoIGFzIGh5cGVybGlua3Mgb3IgcmFuZ2Ugc2VsZWN0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9pbmxpbmVcbiAqL1xuY29uc3QgaW5saW5lID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdpbmxpbmUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBlbGVtZW50cyxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBzdHJhdGVneVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgLy8gQSBNb3VzZUV2ZW50J3MgY2xpZW50e1gsWX0gY29vcmRzIGNhbiBiZSB1cCB0byAyIHBpeGVscyBvZmYgYVxuICAgICAgLy8gQ2xpZW50UmVjdCdzIGJvdW5kcywgZGVzcGl0ZSB0aGUgZXZlbnQgbGlzdGVuZXIgYmVpbmcgdHJpZ2dlcmVkLiBBXG4gICAgICAvLyBwYWRkaW5nIG9mIDIgc2VlbXMgdG8gaGFuZGxlIHRoaXMgaXNzdWUuXG4gICAgICBjb25zdCB7XG4gICAgICAgIHBhZGRpbmcgPSAyLFxuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgbmF0aXZlQ2xpZW50UmVjdHMgPSBBcnJheS5mcm9tKChhd2FpdCAocGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldENsaWVudFJlY3RzKGVsZW1lbnRzLnJlZmVyZW5jZSkpKSB8fCBbXSk7XG4gICAgICBjb25zdCBjbGllbnRSZWN0cyA9IGdldFJlY3RzQnlMaW5lKG5hdGl2ZUNsaWVudFJlY3RzKTtcbiAgICAgIGNvbnN0IGZhbGxiYWNrID0gcmVjdFRvQ2xpZW50UmVjdChnZXRCb3VuZGluZ1JlY3QobmF0aXZlQ2xpZW50UmVjdHMpKTtcbiAgICAgIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpO1xuICAgICAgZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkge1xuICAgICAgICAvLyBUaGVyZSBhcmUgdHdvIHJlY3RzIGFuZCB0aGV5IGFyZSBkaXNqb2luZWQuXG4gICAgICAgIGlmIChjbGllbnRSZWN0cy5sZW5ndGggPT09IDIgJiYgY2xpZW50UmVjdHNbMF0ubGVmdCA+IGNsaWVudFJlY3RzWzFdLnJpZ2h0ICYmIHggIT0gbnVsbCAmJiB5ICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCByZWN0IGluIHdoaWNoIHRoZSBwb2ludCBpcyBmdWxseSBpbnNpZGUuXG4gICAgICAgICAgcmV0dXJuIGNsaWVudFJlY3RzLmZpbmQocmVjdCA9PiB4ID4gcmVjdC5sZWZ0IC0gcGFkZGluZ09iamVjdC5sZWZ0ICYmIHggPCByZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodCAmJiB5ID4gcmVjdC50b3AgLSBwYWRkaW5nT2JqZWN0LnRvcCAmJiB5IDwgcmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSkgfHwgZmFsbGJhY2s7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGVyZSBhcmUgMiBvciBtb3JlIGNvbm5lY3RlZCByZWN0cy5cbiAgICAgICAgaWYgKGNsaWVudFJlY3RzLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgaWYgKGdldFNpZGVBeGlzKHBsYWNlbWVudCkgPT09ICd5Jykge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RSZWN0ID0gY2xpZW50UmVjdHNbMF07XG4gICAgICAgICAgICBjb25zdCBsYXN0UmVjdCA9IGNsaWVudFJlY3RzW2NsaWVudFJlY3RzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgY29uc3QgaXNUb3AgPSBnZXRTaWRlKHBsYWNlbWVudCkgPT09ICd0b3AnO1xuICAgICAgICAgICAgY29uc3QgdG9wID0gZmlyc3RSZWN0LnRvcDtcbiAgICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IGxhc3RSZWN0LmJvdHRvbTtcbiAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBpc1RvcCA/IGZpcnN0UmVjdC5sZWZ0IDogbGFzdFJlY3QubGVmdDtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gaXNUb3AgPyBmaXJzdFJlY3QucmlnaHQgOiBsYXN0UmVjdC5yaWdodDtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgICBib3R0b20sXG4gICAgICAgICAgICAgIGxlZnQsXG4gICAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgICB5OiB0b3BcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGlzTGVmdFNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCkgPT09ICdsZWZ0JztcbiAgICAgICAgICBjb25zdCBtYXhSaWdodCA9IG1heCguLi5jbGllbnRSZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gICAgICAgICAgY29uc3QgbWluTGVmdCA9IG1pbiguLi5jbGllbnRSZWN0cy5tYXAocmVjdCA9PiByZWN0LmxlZnQpKTtcbiAgICAgICAgICBjb25zdCBtZWFzdXJlUmVjdHMgPSBjbGllbnRSZWN0cy5maWx0ZXIocmVjdCA9PiBpc0xlZnRTaWRlID8gcmVjdC5sZWZ0ID09PSBtaW5MZWZ0IDogcmVjdC5yaWdodCA9PT0gbWF4UmlnaHQpO1xuICAgICAgICAgIGNvbnN0IHRvcCA9IG1lYXN1cmVSZWN0c1swXS50b3A7XG4gICAgICAgICAgY29uc3QgYm90dG9tID0gbWVhc3VyZVJlY3RzW21lYXN1cmVSZWN0cy5sZW5ndGggLSAxXS5ib3R0b207XG4gICAgICAgICAgY29uc3QgbGVmdCA9IG1pbkxlZnQ7XG4gICAgICAgICAgY29uc3QgcmlnaHQgPSBtYXhSaWdodDtcbiAgICAgICAgICBjb25zdCB3aWR0aCA9IHJpZ2h0IC0gbGVmdDtcbiAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgIGxlZnQsXG4gICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbGxiYWNrO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzZXRSZWN0cyA9IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgICAgIHJlZmVyZW5jZToge1xuICAgICAgICAgIGdldEJvdW5kaW5nQ2xpZW50UmVjdFxuICAgICAgICB9LFxuICAgICAgICBmbG9hdGluZzogZWxlbWVudHMuZmxvYXRpbmcsXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9KTtcbiAgICAgIGlmIChyZWN0cy5yZWZlcmVuY2UueCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UueCB8fCByZWN0cy5yZWZlcmVuY2UueSAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UueSB8fCByZWN0cy5yZWZlcmVuY2Uud2lkdGggIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLndpZHRoIHx8IHJlY3RzLnJlZmVyZW5jZS5oZWlnaHQgIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLmhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICByZWN0czogcmVzZXRSZWN0c1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBGb3IgdHlwZSBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSwgdGhlIGBPZmZzZXRPcHRpb25zYCB0eXBlIHdhcyBhbHNvXG4vLyBEZXJpdmFibGUuXG5cbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZVRvQ29vcmRzKHN0YXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQsXG4gICAgcGxhdGZvcm0sXG4gICAgZWxlbWVudHNcbiAgfSA9IHN0YXRlO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBpc1ZlcnRpY2FsID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knO1xuICBjb25zdCBtYWluQXhpc011bHRpID0gWydsZWZ0JywgJ3RvcCddLmluY2x1ZGVzKHNpZGUpID8gLTEgOiAxO1xuICBjb25zdCBjcm9zc0F4aXNNdWx0aSA9IHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxO1xuICBjb25zdCByYXdWYWx1ZSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gIGxldCB7XG4gICAgbWFpbkF4aXMsXG4gICAgY3Jvc3NBeGlzLFxuICAgIGFsaWdubWVudEF4aXNcbiAgfSA9IHR5cGVvZiByYXdWYWx1ZSA9PT0gJ251bWJlcicgPyB7XG4gICAgbWFpbkF4aXM6IHJhd1ZhbHVlLFxuICAgIGNyb3NzQXhpczogMCxcbiAgICBhbGlnbm1lbnRBeGlzOiBudWxsXG4gIH0gOiB7XG4gICAgbWFpbkF4aXM6IHJhd1ZhbHVlLm1haW5BeGlzIHx8IDAsXG4gICAgY3Jvc3NBeGlzOiByYXdWYWx1ZS5jcm9zc0F4aXMgfHwgMCxcbiAgICBhbGlnbm1lbnRBeGlzOiByYXdWYWx1ZS5hbGlnbm1lbnRBeGlzXG4gIH07XG4gIGlmIChhbGlnbm1lbnQgJiYgdHlwZW9mIGFsaWdubWVudEF4aXMgPT09ICdudW1iZXInKSB7XG4gICAgY3Jvc3NBeGlzID0gYWxpZ25tZW50ID09PSAnZW5kJyA/IGFsaWdubWVudEF4aXMgKiAtMSA6IGFsaWdubWVudEF4aXM7XG4gIH1cbiAgcmV0dXJuIGlzVmVydGljYWwgPyB7XG4gICAgeDogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGksXG4gICAgeTogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpXG4gIH0gOiB7XG4gICAgeDogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpLFxuICAgIHk6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpXG4gIH07XG59XG5cbi8qKlxuICogTW9kaWZpZXMgdGhlIHBsYWNlbWVudCBieSB0cmFuc2xhdGluZyB0aGUgZmxvYXRpbmcgZWxlbWVudCBhbG9uZyB0aGVcbiAqIHNwZWNpZmllZCBheGVzLlxuICogQSBudW1iZXIgKHNob3J0aGFuZCBmb3IgYG1haW5BeGlzYCBvciBkaXN0YW5jZSksIG9yIGFuIGF4ZXMgY29uZmlndXJhdGlvblxuICogb2JqZWN0IG1heSBiZSBwYXNzZWQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0XG4gKi9cbmNvbnN0IG9mZnNldCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0gMDtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdvZmZzZXQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkb2Zmc2UsIF9taWRkbGV3YXJlRGF0YSRhcnJvdztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgZGlmZkNvb3JkcyA9IGF3YWl0IGNvbnZlcnRWYWx1ZVRvQ29vcmRzKHN0YXRlLCBvcHRpb25zKTtcblxuICAgICAgLy8gSWYgdGhlIHBsYWNlbWVudCBpcyB0aGUgc2FtZSBhbmQgdGhlIGFycm93IGNhdXNlZCBhbiBhbGlnbm1lbnQgb2Zmc2V0XG4gICAgICAvLyB0aGVuIHdlIGRvbid0IG5lZWQgdG8gY2hhbmdlIHRoZSBwb3NpdGlvbmluZyBjb29yZGluYXRlcy5cbiAgICAgIGlmIChwbGFjZW1lbnQgPT09ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlLnBsYWNlbWVudCkgJiYgKF9taWRkbGV3YXJlRGF0YSRhcnJvdyA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSAhPSBudWxsICYmIF9taWRkbGV3YXJlRGF0YSRhcnJvdy5hbGlnbm1lbnRPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCArIGRpZmZDb29yZHMueCxcbiAgICAgICAgeTogeSArIGRpZmZDb29yZHMueSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC4uLmRpZmZDb29yZHMsXG4gICAgICAgICAgcGxhY2VtZW50XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgc2hpZnRpbmcgaXQgaW4gb3JkZXIgdG9cbiAqIGtlZXAgaXQgaW4gdmlldyB3aGVuIGl0IHdpbGwgb3ZlcmZsb3cgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NoaWZ0XG4gKi9cbmNvbnN0IHNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaGlmdCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnRcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gZmFsc2UsXG4gICAgICAgIGxpbWl0ZXIgPSB7XG4gICAgICAgICAgZm46IF9yZWYgPT4ge1xuICAgICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgfSA9IF9yZWY7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICB5XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IGNyb3NzQXhpcyA9IGdldFNpZGVBeGlzKGdldFNpZGUocGxhY2VtZW50KSk7XG4gICAgICBjb25zdCBtYWluQXhpcyA9IGdldE9wcG9zaXRlQXhpcyhjcm9zc0F4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBjb25zdCBtaW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICAgICAgY29uc3QgbWluID0gbWFpbkF4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXggPSBtYWluQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIG1haW5BeGlzQ29vcmQgPSBjbGFtcChtaW4sIG1haW5BeGlzQ29vcmQsIG1heCk7XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgY29uc3QgbWluU2lkZSA9IGNyb3NzQXhpcyA9PT0gJ3knID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgICAgIGNvbnN0IG1heFNpZGUgPSBjcm9zc0F4aXMgPT09ICd5JyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICAgICAgY29uc3QgbWluID0gY3Jvc3NBeGlzQ29vcmQgKyBvdmVyZmxvd1ttaW5TaWRlXTtcbiAgICAgICAgY29uc3QgbWF4ID0gY3Jvc3NBeGlzQ29vcmQgLSBvdmVyZmxvd1ttYXhTaWRlXTtcbiAgICAgICAgY3Jvc3NBeGlzQ29vcmQgPSBjbGFtcChtaW4sIGNyb3NzQXhpc0Nvb3JkLCBtYXgpO1xuICAgICAgfVxuICAgICAgY29uc3QgbGltaXRlZENvb3JkcyA9IGxpbWl0ZXIuZm4oe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgW21haW5BeGlzXTogbWFpbkF4aXNDb29yZCxcbiAgICAgICAgW2Nyb3NzQXhpc106IGNyb3NzQXhpc0Nvb3JkXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmxpbWl0ZWRDb29yZHMsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICB4OiBsaW1pdGVkQ29vcmRzLnggLSB4LFxuICAgICAgICAgIHk6IGxpbWl0ZWRDb29yZHMueSAtIHksXG4gICAgICAgICAgZW5hYmxlZDoge1xuICAgICAgICAgICAgW21haW5BeGlzXTogY2hlY2tNYWluQXhpcyxcbiAgICAgICAgICAgIFtjcm9zc0F4aXNdOiBjaGVja0Nyb3NzQXhpc1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuLyoqXG4gKiBCdWlsdC1pbiBgbGltaXRlcmAgdGhhdCB3aWxsIHN0b3AgYHNoaWZ0KClgIGF0IGEgY2VydGFpbiBwb2ludC5cbiAqL1xuY29uc3QgbGltaXRTaGlmdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBvcHRpb25zLFxuICAgIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG9mZnNldCA9IDAsXG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IHRydWVcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH07XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgbWFpbkF4aXMgPSBnZXRPcHBvc2l0ZUF4aXMoY3Jvc3NBeGlzKTtcbiAgICAgIGxldCBtYWluQXhpc0Nvb3JkID0gY29vcmRzW21haW5BeGlzXTtcbiAgICAgIGxldCBjcm9zc0F4aXNDb29yZCA9IGNvb3Jkc1tjcm9zc0F4aXNdO1xuICAgICAgY29uc3QgcmF3T2Zmc2V0ID0gZXZhbHVhdGUob2Zmc2V0LCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb21wdXRlZE9mZnNldCA9IHR5cGVvZiByYXdPZmZzZXQgPT09ICdudW1iZXInID8ge1xuICAgICAgICBtYWluQXhpczogcmF3T2Zmc2V0LFxuICAgICAgICBjcm9zc0F4aXM6IDBcbiAgICAgIH0gOiB7XG4gICAgICAgIG1haW5BeGlzOiAwLFxuICAgICAgICBjcm9zc0F4aXM6IDAsXG4gICAgICAgIC4uLnJhd09mZnNldFxuICAgICAgfTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIGNvbnN0IGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgICAgIGNvbnN0IGxpbWl0TWluID0gcmVjdHMucmVmZXJlbmNlW21haW5BeGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbl0gKyBjb21wdXRlZE9mZnNldC5tYWluQXhpcztcbiAgICAgICAgY29uc3QgbGltaXRNYXggPSByZWN0cy5yZWZlcmVuY2VbbWFpbkF4aXNdICsgcmVjdHMucmVmZXJlbmNlW2xlbl0gLSBjb21wdXRlZE9mZnNldC5tYWluQXhpcztcbiAgICAgICAgaWYgKG1haW5BeGlzQ29vcmQgPCBsaW1pdE1pbikge1xuICAgICAgICAgIG1haW5BeGlzQ29vcmQgPSBsaW1pdE1pbjtcbiAgICAgICAgfSBlbHNlIGlmIChtYWluQXhpc0Nvb3JkID4gbGltaXRNYXgpIHtcbiAgICAgICAgICBtYWluQXhpc0Nvb3JkID0gbGltaXRNYXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJG9mZnNlLCBfbWlkZGxld2FyZURhdGEkb2Zmc2UyO1xuICAgICAgICBjb25zdCBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgICAgICBjb25zdCBpc09yaWdpblNpZGUgPSBbJ3RvcCcsICdsZWZ0J10uaW5jbHVkZXMoZ2V0U2lkZShwbGFjZW1lbnQpKTtcbiAgICAgICAgY29uc3QgbGltaXRNaW4gPSByZWN0cy5yZWZlcmVuY2VbY3Jvc3NBeGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbl0gKyAoaXNPcmlnaW5TaWRlID8gKChfbWlkZGxld2FyZURhdGEkb2Zmc2UgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2VbY3Jvc3NBeGlzXSkgfHwgMCA6IDApICsgKGlzT3JpZ2luU2lkZSA/IDAgOiBjb21wdXRlZE9mZnNldC5jcm9zc0F4aXMpO1xuICAgICAgICBjb25zdCBsaW1pdE1heCA9IHJlY3RzLnJlZmVyZW5jZVtjcm9zc0F4aXNdICsgcmVjdHMucmVmZXJlbmNlW2xlbl0gKyAoaXNPcmlnaW5TaWRlID8gMCA6ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlMiA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZTJbY3Jvc3NBeGlzXSkgfHwgMCkgLSAoaXNPcmlnaW5TaWRlID8gY29tcHV0ZWRPZmZzZXQuY3Jvc3NBeGlzIDogMCk7XG4gICAgICAgIGlmIChjcm9zc0F4aXNDb29yZCA8IGxpbWl0TWluKSB7XG4gICAgICAgICAgY3Jvc3NBeGlzQ29vcmQgPSBsaW1pdE1pbjtcbiAgICAgICAgfSBlbHNlIGlmIChjcm9zc0F4aXNDb29yZCA+IGxpbWl0TWF4KSB7XG4gICAgICAgICAgY3Jvc3NBeGlzQ29vcmQgPSBsaW1pdE1heDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW21haW5BeGlzXTogbWFpbkF4aXNDb29yZCxcbiAgICAgICAgW2Nyb3NzQXhpc106IGNyb3NzQXhpc0Nvb3JkXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0aGF0IGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IOKAlFxuICogZm9yIGluc3RhbmNlLCBwcmV2ZW50IGl0IGZyb20gb3ZlcmZsb3dpbmcgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5IG9yIG1hdGNoIHRoZVxuICogd2lkdGggb2YgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NpemVcbiAqL1xuY29uc3Qgc2l6ZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc2l6ZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9zdGF0ZSRtaWRkbGV3YXJlRGF0YSwgX3N0YXRlJG1pZGRsZXdhcmVEYXRhMjtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGFwcGx5ID0gKCkgPT4ge30sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc1lBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knO1xuICAgICAgY29uc3Qge1xuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0XG4gICAgICB9ID0gcmVjdHMuZmxvYXRpbmc7XG4gICAgICBsZXQgaGVpZ2h0U2lkZTtcbiAgICAgIGxldCB3aWR0aFNpZGU7XG4gICAgICBpZiAoc2lkZSA9PT0gJ3RvcCcgfHwgc2lkZSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgaGVpZ2h0U2lkZSA9IHNpZGU7XG4gICAgICAgIHdpZHRoU2lkZSA9IGFsaWdubWVudCA9PT0gKChhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSkpID8gJ3N0YXJ0JyA6ICdlbmQnKSA/ICdsZWZ0JyA6ICdyaWdodCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aWR0aFNpZGUgPSBzaWRlO1xuICAgICAgICBoZWlnaHRTaWRlID0gYWxpZ25tZW50ID09PSAnZW5kJyA/ICd0b3AnIDogJ2JvdHRvbSc7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQgPSBoZWlnaHQgLSBvdmVyZmxvdy50b3AgLSBvdmVyZmxvdy5ib3R0b207XG4gICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCA9IHdpZHRoIC0gb3ZlcmZsb3cubGVmdCAtIG92ZXJmbG93LnJpZ2h0O1xuICAgICAgY29uc3Qgb3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQgPSBtaW4oaGVpZ2h0IC0gb3ZlcmZsb3dbaGVpZ2h0U2lkZV0sIG1heGltdW1DbGlwcGluZ0hlaWdodCk7XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZVdpZHRoID0gbWluKHdpZHRoIC0gb3ZlcmZsb3dbd2lkdGhTaWRlXSwgbWF4aW11bUNsaXBwaW5nV2lkdGgpO1xuICAgICAgY29uc3Qgbm9TaGlmdCA9ICFzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdDtcbiAgICAgIGxldCBhdmFpbGFibGVIZWlnaHQgPSBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodDtcbiAgICAgIGxldCBhdmFpbGFibGVXaWR0aCA9IG92ZXJmbG93QXZhaWxhYmxlV2lkdGg7XG4gICAgICBpZiAoKF9zdGF0ZSRtaWRkbGV3YXJlRGF0YSA9IHN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0KSAhPSBudWxsICYmIF9zdGF0ZSRtaWRkbGV3YXJlRGF0YS5lbmFibGVkLngpIHtcbiAgICAgICAgYXZhaWxhYmxlV2lkdGggPSBtYXhpbXVtQ2xpcHBpbmdXaWR0aDtcbiAgICAgIH1cbiAgICAgIGlmICgoX3N0YXRlJG1pZGRsZXdhcmVEYXRhMiA9IHN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0KSAhPSBudWxsICYmIF9zdGF0ZSRtaWRkbGV3YXJlRGF0YTIuZW5hYmxlZC55KSB7XG4gICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IG1heGltdW1DbGlwcGluZ0hlaWdodDtcbiAgICAgIH1cbiAgICAgIGlmIChub1NoaWZ0ICYmICFhbGlnbm1lbnQpIHtcbiAgICAgICAgY29uc3QgeE1pbiA9IG1heChvdmVyZmxvdy5sZWZ0LCAwKTtcbiAgICAgICAgY29uc3QgeE1heCA9IG1heChvdmVyZmxvdy5yaWdodCwgMCk7XG4gICAgICAgIGNvbnN0IHlNaW4gPSBtYXgob3ZlcmZsb3cudG9wLCAwKTtcbiAgICAgICAgY29uc3QgeU1heCA9IG1heChvdmVyZmxvdy5ib3R0b20sIDApO1xuICAgICAgICBpZiAoaXNZQXhpcykge1xuICAgICAgICAgIGF2YWlsYWJsZVdpZHRoID0gd2lkdGggLSAyICogKHhNaW4gIT09IDAgfHwgeE1heCAhPT0gMCA/IHhNaW4gKyB4TWF4IDogbWF4KG92ZXJmbG93LmxlZnQsIG92ZXJmbG93LnJpZ2h0KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gaGVpZ2h0IC0gMiAqICh5TWluICE9PSAwIHx8IHlNYXggIT09IDAgPyB5TWluICsgeU1heCA6IG1heChvdmVyZmxvdy50b3AsIG92ZXJmbG93LmJvdHRvbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhd2FpdCBhcHBseSh7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBhdmFpbGFibGVXaWR0aCxcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IG5leHREaW1lbnNpb25zID0gYXdhaXQgcGxhdGZvcm0uZ2V0RGltZW5zaW9ucyhlbGVtZW50cy5mbG9hdGluZyk7XG4gICAgICBpZiAod2lkdGggIT09IG5leHREaW1lbnNpb25zLndpZHRoIHx8IGhlaWdodCAhPT0gbmV4dERpbWVuc2lvbnMuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCB7IGFycm93LCBhdXRvUGxhY2VtZW50LCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgc2hpZnQsIHNpemUgfTtcbiIsImZ1bmN0aW9uIGhhc1dpbmRvdygpIHtcbiAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xufVxuZnVuY3Rpb24gZ2V0Tm9kZU5hbWUobm9kZSkge1xuICBpZiAoaXNOb2RlKG5vZGUpKSB7XG4gICAgcmV0dXJuIChub2RlLm5vZGVOYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIC8vIE1vY2tlZCBub2RlcyBpbiB0ZXN0aW5nIGVudmlyb25tZW50cyBtYXkgbm90IGJlIGluc3RhbmNlcyBvZiBOb2RlLiBCeVxuICAvLyByZXR1cm5pbmcgYCNkb2N1bWVudGAgYW4gaW5maW5pdGUgbG9vcCB3b24ndCBvY2N1ci5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8yMzE3XG4gIHJldHVybiAnI2RvY3VtZW50Jztcbn1cbmZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIHZhciBfbm9kZSRvd25lckRvY3VtZW50O1xuICByZXR1cm4gKG5vZGUgPT0gbnVsbCB8fCAoX25vZGUkb3duZXJEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpIHx8IHdpbmRvdztcbn1cbmZ1bmN0aW9uIGdldERvY3VtZW50RWxlbWVudChub2RlKSB7XG4gIHZhciBfcmVmO1xuICByZXR1cm4gKF9yZWYgPSAoaXNOb2RlKG5vZGUpID8gbm9kZS5vd25lckRvY3VtZW50IDogbm9kZS5kb2N1bWVudCkgfHwgd2luZG93LmRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX3JlZi5kb2N1bWVudEVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc05vZGUodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBOb2RlIHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5Ob2RlO1xufVxuZnVuY3Rpb24gaXNFbGVtZW50KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRWxlbWVudCB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuRWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuSFRNTEVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc1NoYWRvd1Jvb3QodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSB8fCB0eXBlb2YgU2hhZG93Um9vdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgU2hhZG93Um9vdCB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuU2hhZG93Um9vdDtcbn1cbmZ1bmN0aW9uIGlzT3ZlcmZsb3dFbGVtZW50KGVsZW1lbnQpIHtcbiAgY29uc3Qge1xuICAgIG92ZXJmbG93LFxuICAgIG92ZXJmbG93WCxcbiAgICBvdmVyZmxvd1ksXG4gICAgZGlzcGxheVxuICB9ID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbnxjbGlwLy50ZXN0KG92ZXJmbG93ICsgb3ZlcmZsb3dZICsgb3ZlcmZsb3dYKSAmJiAhWydpbmxpbmUnLCAnY29udGVudHMnXS5pbmNsdWRlcyhkaXNwbGF5KTtcbn1cbmZ1bmN0aW9uIGlzVGFibGVFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIFsndGFibGUnLCAndGQnLCAndGgnXS5pbmNsdWRlcyhnZXROb2RlTmFtZShlbGVtZW50KSk7XG59XG5mdW5jdGlvbiBpc1RvcExheWVyKGVsZW1lbnQpIHtcbiAgcmV0dXJuIFsnOnBvcG92ZXItb3BlbicsICc6bW9kYWwnXS5zb21lKHNlbGVjdG9yID0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQubWF0Y2hlcyhzZWxlY3Rvcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBpc0NvbnRhaW5pbmdCbG9jayhlbGVtZW50T3JDc3MpIHtcbiAgY29uc3Qgd2Via2l0ID0gaXNXZWJLaXQoKTtcbiAgY29uc3QgY3NzID0gaXNFbGVtZW50KGVsZW1lbnRPckNzcykgPyBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnRPckNzcykgOiBlbGVtZW50T3JDc3M7XG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcbiAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10cmFuc2Zvcm1zLTIvI2luZGl2aWR1YWwtdHJhbnNmb3Jtc1xuICByZXR1cm4gWyd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlJywgJ3NjYWxlJywgJ3JvdGF0ZScsICdwZXJzcGVjdGl2ZSddLnNvbWUodmFsdWUgPT4gY3NzW3ZhbHVlXSA/IGNzc1t2YWx1ZV0gIT09ICdub25lJyA6IGZhbHNlKSB8fCAoY3NzLmNvbnRhaW5lclR5cGUgPyBjc3MuY29udGFpbmVyVHlwZSAhPT0gJ25vcm1hbCcgOiBmYWxzZSkgfHwgIXdlYmtpdCAmJiAoY3NzLmJhY2tkcm9wRmlsdGVyID8gY3NzLmJhY2tkcm9wRmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgIXdlYmtpdCAmJiAoY3NzLmZpbHRlciA/IGNzcy5maWx0ZXIgIT09ICdub25lJyA6IGZhbHNlKSB8fCBbJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUnLCAnc2NhbGUnLCAncm90YXRlJywgJ3BlcnNwZWN0aXZlJywgJ2ZpbHRlciddLnNvbWUodmFsdWUgPT4gKGNzcy53aWxsQ2hhbmdlIHx8ICcnKS5pbmNsdWRlcyh2YWx1ZSkpIHx8IFsncGFpbnQnLCAnbGF5b3V0JywgJ3N0cmljdCcsICdjb250ZW50J10uc29tZSh2YWx1ZSA9PiAoY3NzLmNvbnRhaW4gfHwgJycpLmluY2x1ZGVzKHZhbHVlKSk7XG59XG5mdW5jdGlvbiBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkge1xuICBsZXQgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICB3aGlsZSAoaXNIVE1MRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShjdXJyZW50Tm9kZSkpIHtcbiAgICBpZiAoaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpKSB7XG4gICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgfSBlbHNlIGlmIChpc1RvcExheWVyKGN1cnJlbnROb2RlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiBpc1dlYktpdCgpIHtcbiAgaWYgKHR5cGVvZiBDU1MgPT09ICd1bmRlZmluZWQnIHx8ICFDU1Muc3VwcG9ydHMpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIENTUy5zdXBwb3J0cygnLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXInLCAnbm9uZScpO1xufVxuZnVuY3Rpb24gaXNMYXN0VHJhdmVyc2FibGVOb2RlKG5vZGUpIHtcbiAgcmV0dXJuIFsnaHRtbCcsICdib2R5JywgJyNkb2N1bWVudCddLmluY2x1ZGVzKGdldE5vZGVOYW1lKG5vZGUpKTtcbn1cbmZ1bmN0aW9uIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0V2luZG93KGVsZW1lbnQpLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG59XG5mdW5jdGlvbiBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpIHtcbiAgaWYgKGlzRWxlbWVudChlbGVtZW50KSkge1xuICAgIHJldHVybiB7XG4gICAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbExlZnQsXG4gICAgICBzY3JvbGxUb3A6IGVsZW1lbnQuc2Nyb2xsVG9wXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsWCxcbiAgICBzY3JvbGxUb3A6IGVsZW1lbnQuc2Nyb2xsWVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0UGFyZW50Tm9kZShub2RlKSB7XG4gIGlmIChnZXROb2RlTmFtZShub2RlKSA9PT0gJ2h0bWwnKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID1cbiAgLy8gU3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGUuXG4gIG5vZGUuYXNzaWduZWRTbG90IHx8XG4gIC8vIERPTSBFbGVtZW50IGRldGVjdGVkLlxuICBub2RlLnBhcmVudE5vZGUgfHxcbiAgLy8gU2hhZG93Um9vdCBkZXRlY3RlZC5cbiAgaXNTaGFkb3dSb290KG5vZGUpICYmIG5vZGUuaG9zdCB8fFxuICAvLyBGYWxsYmFjay5cbiAgZ2V0RG9jdW1lbnRFbGVtZW50KG5vZGUpO1xuICByZXR1cm4gaXNTaGFkb3dSb290KHJlc3VsdCkgPyByZXN1bHQuaG9zdCA6IHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKG5vZGUpIHtcbiAgY29uc3QgcGFyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUobm9kZSk7XG4gIGlmIChpc0xhc3RUcmF2ZXJzYWJsZU5vZGUocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50ID8gbm9kZS5vd25lckRvY3VtZW50LmJvZHkgOiBub2RlLmJvZHk7XG4gIH1cbiAgaWYgKGlzSFRNTEVsZW1lbnQocGFyZW50Tm9kZSkgJiYgaXNPdmVyZmxvd0VsZW1lbnQocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gcGFyZW50Tm9kZTtcbiAgfVxuICByZXR1cm4gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IocGFyZW50Tm9kZSk7XG59XG5mdW5jdGlvbiBnZXRPdmVyZmxvd0FuY2VzdG9ycyhub2RlLCBsaXN0LCB0cmF2ZXJzZUlmcmFtZXMpIHtcbiAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQyO1xuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG4gIGlmICh0cmF2ZXJzZUlmcmFtZXMgPT09IHZvaWQgMCkge1xuICAgIHRyYXZlcnNlSWZyYW1lcyA9IHRydWU7XG4gIH1cbiAgY29uc3Qgc2Nyb2xsYWJsZUFuY2VzdG9yID0gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSk7XG4gIGNvbnN0IGlzQm9keSA9IHNjcm9sbGFibGVBbmNlc3RvciA9PT0gKChfbm9kZSRvd25lckRvY3VtZW50MiA9IG5vZGUub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJG93bmVyRG9jdW1lbnQyLmJvZHkpO1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsYWJsZUFuY2VzdG9yKTtcbiAgaWYgKGlzQm9keSkge1xuICAgIGNvbnN0IGZyYW1lRWxlbWVudCA9IGdldEZyYW1lRWxlbWVudCh3aW4pO1xuICAgIHJldHVybiBsaXN0LmNvbmNhdCh3aW4sIHdpbi52aXN1YWxWaWV3cG9ydCB8fCBbXSwgaXNPdmVyZmxvd0VsZW1lbnQoc2Nyb2xsYWJsZUFuY2VzdG9yKSA/IHNjcm9sbGFibGVBbmNlc3RvciA6IFtdLCBmcmFtZUVsZW1lbnQgJiYgdHJhdmVyc2VJZnJhbWVzID8gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZnJhbWVFbGVtZW50KSA6IFtdKTtcbiAgfVxuICByZXR1cm4gbGlzdC5jb25jYXQoc2Nyb2xsYWJsZUFuY2VzdG9yLCBnZXRPdmVyZmxvd0FuY2VzdG9ycyhzY3JvbGxhYmxlQW5jZXN0b3IsIFtdLCB0cmF2ZXJzZUlmcmFtZXMpKTtcbn1cbmZ1bmN0aW9uIGdldEZyYW1lRWxlbWVudCh3aW4pIHtcbiAgcmV0dXJuIHdpbi5wYXJlbnQgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKHdpbi5wYXJlbnQpID8gd2luLmZyYW1lRWxlbWVudCA6IG51bGw7XG59XG5cbmV4cG9ydCB7IGdldENvbXB1dGVkU3R5bGUsIGdldENvbnRhaW5pbmdCbG9jaywgZ2V0RG9jdW1lbnRFbGVtZW50LCBnZXRGcmFtZUVsZW1lbnQsIGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yLCBnZXROb2RlTmFtZSwgZ2V0Tm9kZVNjcm9sbCwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIGdldFBhcmVudE5vZGUsIGdldFdpbmRvdywgaXNDb250YWluaW5nQmxvY2ssIGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCwgaXNMYXN0VHJhdmVyc2FibGVOb2RlLCBpc05vZGUsIGlzT3ZlcmZsb3dFbGVtZW50LCBpc1NoYWRvd1Jvb3QsIGlzVGFibGVFbGVtZW50LCBpc1RvcExheWVyLCBpc1dlYktpdCB9O1xuIiwiaW1wb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCwgZGV0ZWN0T3ZlcmZsb3cgYXMgZGV0ZWN0T3ZlcmZsb3ckMSwgb2Zmc2V0IGFzIG9mZnNldCQxLCBhdXRvUGxhY2VtZW50IGFzIGF1dG9QbGFjZW1lbnQkMSwgc2hpZnQgYXMgc2hpZnQkMSwgZmxpcCBhcyBmbGlwJDEsIHNpemUgYXMgc2l6ZSQxLCBoaWRlIGFzIGhpZGUkMSwgYXJyb3cgYXMgYXJyb3ckMSwgaW5saW5lIGFzIGlubGluZSQxLCBsaW1pdFNoaWZ0IGFzIGxpbWl0U2hpZnQkMSwgY29tcHV0ZVBvc2l0aW9uIGFzIGNvbXB1dGVQb3NpdGlvbiQxIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2NvcmUnO1xuaW1wb3J0IHsgcm91bmQsIGNyZWF0ZUNvb3JkcywgbWF4LCBtaW4sIGZsb29yIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzJztcbmltcG9ydCB7IGdldENvbXB1dGVkU3R5bGUsIGlzSFRNTEVsZW1lbnQsIGlzRWxlbWVudCwgZ2V0V2luZG93LCBpc1dlYktpdCwgZ2V0RnJhbWVFbGVtZW50LCBnZXROb2RlU2Nyb2xsLCBnZXREb2N1bWVudEVsZW1lbnQsIGlzVG9wTGF5ZXIsIGdldE5vZGVOYW1lLCBpc092ZXJmbG93RWxlbWVudCwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIGdldFBhcmVudE5vZGUsIGlzTGFzdFRyYXZlcnNhYmxlTm9kZSwgaXNDb250YWluaW5nQmxvY2ssIGlzVGFibGVFbGVtZW50LCBnZXRDb250YWluaW5nQmxvY2sgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcbmV4cG9ydCB7IGdldE92ZXJmbG93QW5jZXN0b3JzIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5cbmZ1bmN0aW9uIGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICAvLyBJbiB0ZXN0aW5nIGVudmlyb25tZW50cywgdGhlIGB3aWR0aGAgYW5kIGBoZWlnaHRgIHByb3BlcnRpZXMgYXJlIGVtcHR5XG4gIC8vIHN0cmluZ3MgZm9yIFNWRyBlbGVtZW50cywgcmV0dXJuaW5nIE5hTi4gRmFsbGJhY2sgdG8gYDBgIGluIHRoaXMgY2FzZS5cbiAgbGV0IHdpZHRoID0gcGFyc2VGbG9hdChjc3Mud2lkdGgpIHx8IDA7XG4gIGxldCBoZWlnaHQgPSBwYXJzZUZsb2F0KGNzcy5oZWlnaHQpIHx8IDA7XG4gIGNvbnN0IGhhc09mZnNldCA9IGlzSFRNTEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IG9mZnNldFdpZHRoID0gaGFzT2Zmc2V0ID8gZWxlbWVudC5vZmZzZXRXaWR0aCA6IHdpZHRoO1xuICBjb25zdCBvZmZzZXRIZWlnaHQgPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldEhlaWdodCA6IGhlaWdodDtcbiAgY29uc3Qgc2hvdWxkRmFsbGJhY2sgPSByb3VuZCh3aWR0aCkgIT09IG9mZnNldFdpZHRoIHx8IHJvdW5kKGhlaWdodCkgIT09IG9mZnNldEhlaWdodDtcbiAgaWYgKHNob3VsZEZhbGxiYWNrKSB7XG4gICAgd2lkdGggPSBvZmZzZXRXaWR0aDtcbiAgICBoZWlnaHQgPSBvZmZzZXRIZWlnaHQ7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgJDogc2hvdWxkRmFsbGJhY2tcbiAgfTtcbn1cblxuZnVuY3Rpb24gdW53cmFwRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiAhaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudC5jb250ZXh0RWxlbWVudCA6IGVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGdldFNjYWxlKGVsZW1lbnQpIHtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGlmICghaXNIVE1MRWxlbWVudChkb21FbGVtZW50KSkge1xuICAgIHJldHVybiBjcmVhdGVDb29yZHMoMSk7XG4gIH1cbiAgY29uc3QgcmVjdCA9IGRvbUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgJFxuICB9ID0gZ2V0Q3NzRGltZW5zaW9ucyhkb21FbGVtZW50KTtcbiAgbGV0IHggPSAoJCA/IHJvdW5kKHJlY3Qud2lkdGgpIDogcmVjdC53aWR0aCkgLyB3aWR0aDtcbiAgbGV0IHkgPSAoJCA/IHJvdW5kKHJlY3QuaGVpZ2h0KSA6IHJlY3QuaGVpZ2h0KSAvIGhlaWdodDtcblxuICAvLyAwLCBOYU4sIG9yIEluZmluaXR5IHNob3VsZCBhbHdheXMgZmFsbGJhY2sgdG8gMS5cblxuICBpZiAoIXggfHwgIU51bWJlci5pc0Zpbml0ZSh4KSkge1xuICAgIHggPSAxO1xuICB9XG4gIGlmICgheSB8fCAhTnVtYmVyLmlzRmluaXRlKHkpKSB7XG4gICAgeSA9IDE7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuY29uc3Qgbm9PZmZzZXRzID0gLyojX19QVVJFX18qL2NyZWF0ZUNvb3JkcygwKTtcbmZ1bmN0aW9uIGdldFZpc3VhbE9mZnNldHMoZWxlbWVudCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmICghaXNXZWJLaXQoKSB8fCAhd2luLnZpc3VhbFZpZXdwb3J0KSB7XG4gICAgcmV0dXJuIG5vT2Zmc2V0cztcbiAgfVxuICByZXR1cm4ge1xuICAgIHg6IHdpbi52aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0LFxuICAgIHk6IHdpbi52aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3BcbiAgfTtcbn1cbmZ1bmN0aW9uIHNob3VsZEFkZFZpc3VhbE9mZnNldHMoZWxlbWVudCwgaXNGaXhlZCwgZmxvYXRpbmdPZmZzZXRQYXJlbnQpIHtcbiAgaWYgKGlzRml4ZWQgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWQgPSBmYWxzZTtcbiAgfVxuICBpZiAoIWZsb2F0aW5nT2Zmc2V0UGFyZW50IHx8IGlzRml4ZWQgJiYgZmxvYXRpbmdPZmZzZXRQYXJlbnQgIT09IGdldFdpbmRvdyhlbGVtZW50KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gaXNGaXhlZDtcbn1cblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIGluY2x1ZGVTY2FsZSwgaXNGaXhlZFN0cmF0ZWd5LCBvZmZzZXRQYXJlbnQpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cbiAgaWYgKGlzRml4ZWRTdHJhdGVneSA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZFN0cmF0ZWd5ID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgY2xpZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IGRvbUVsZW1lbnQgPSB1bndyYXBFbGVtZW50KGVsZW1lbnQpO1xuICBsZXQgc2NhbGUgPSBjcmVhdGVDb29yZHMoMSk7XG4gIGlmIChpbmNsdWRlU2NhbGUpIHtcbiAgICBpZiAob2Zmc2V0UGFyZW50KSB7XG4gICAgICBpZiAoaXNFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgICAgc2NhbGUgPSBnZXRTY2FsZShvZmZzZXRQYXJlbnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCB2aXN1YWxPZmZzZXRzID0gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhkb21FbGVtZW50LCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkgPyBnZXRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDApO1xuICBsZXQgeCA9IChjbGllbnRSZWN0LmxlZnQgKyB2aXN1YWxPZmZzZXRzLngpIC8gc2NhbGUueDtcbiAgbGV0IHkgPSAoY2xpZW50UmVjdC50b3AgKyB2aXN1YWxPZmZzZXRzLnkpIC8gc2NhbGUueTtcbiAgbGV0IHdpZHRoID0gY2xpZW50UmVjdC53aWR0aCAvIHNjYWxlLng7XG4gIGxldCBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodCAvIHNjYWxlLnk7XG4gIGlmIChkb21FbGVtZW50KSB7XG4gICAgY29uc3Qgd2luID0gZ2V0V2luZG93KGRvbUVsZW1lbnQpO1xuICAgIGNvbnN0IG9mZnNldFdpbiA9IG9mZnNldFBhcmVudCAmJiBpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSA/IGdldFdpbmRvdyhvZmZzZXRQYXJlbnQpIDogb2Zmc2V0UGFyZW50O1xuICAgIGxldCBjdXJyZW50V2luID0gd2luO1xuICAgIGxldCBjdXJyZW50SUZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGN1cnJlbnRXaW4pO1xuICAgIHdoaWxlIChjdXJyZW50SUZyYW1lICYmIG9mZnNldFBhcmVudCAmJiBvZmZzZXRXaW4gIT09IGN1cnJlbnRXaW4pIHtcbiAgICAgIGNvbnN0IGlmcmFtZVNjYWxlID0gZ2V0U2NhbGUoY3VycmVudElGcmFtZSk7XG4gICAgICBjb25zdCBpZnJhbWVSZWN0ID0gY3VycmVudElGcmFtZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudElGcmFtZSk7XG4gICAgICBjb25zdCBsZWZ0ID0gaWZyYW1lUmVjdC5sZWZ0ICsgKGN1cnJlbnRJRnJhbWUuY2xpZW50TGVmdCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdMZWZ0KSkgKiBpZnJhbWVTY2FsZS54O1xuICAgICAgY29uc3QgdG9wID0gaWZyYW1lUmVjdC50b3AgKyAoY3VycmVudElGcmFtZS5jbGllbnRUb3AgKyBwYXJzZUZsb2F0KGNzcy5wYWRkaW5nVG9wKSkgKiBpZnJhbWVTY2FsZS55O1xuICAgICAgeCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgeSAqPSBpZnJhbWVTY2FsZS55O1xuICAgICAgd2lkdGggKj0gaWZyYW1lU2NhbGUueDtcbiAgICAgIGhlaWdodCAqPSBpZnJhbWVTY2FsZS55O1xuICAgICAgeCArPSBsZWZ0O1xuICAgICAgeSArPSB0b3A7XG4gICAgICBjdXJyZW50V2luID0gZ2V0V2luZG93KGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY3VycmVudElGcmFtZSA9IGdldEZyYW1lRWxlbWVudChjdXJyZW50V2luKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlY3RUb0NsaWVudFJlY3Qoe1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfSk7XG59XG5cbi8vIElmIDxodG1sPiBoYXMgYSBDU1Mgd2lkdGggZ3JlYXRlciB0aGFuIHRoZSB2aWV3cG9ydCwgdGhlbiB0aGlzIHdpbGwgYmVcbi8vIGluY29ycmVjdCBmb3IgUlRMLlxuZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50LCByZWN0KSB7XG4gIGNvbnN0IGxlZnRTY3JvbGwgPSBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpLnNjcm9sbExlZnQ7XG4gIGlmICghcmVjdCkge1xuICAgIHJldHVybiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKS5sZWZ0ICsgbGVmdFNjcm9sbDtcbiAgfVxuICByZXR1cm4gcmVjdC5sZWZ0ICsgbGVmdFNjcm9sbDtcbn1cblxuZnVuY3Rpb24gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCwgaWdub3JlU2Nyb2xsYmFyWCkge1xuICBpZiAoaWdub3JlU2Nyb2xsYmFyWCA9PT0gdm9pZCAwKSB7XG4gICAgaWdub3JlU2Nyb2xsYmFyWCA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGh0bWxSZWN0ID0gZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB4ID0gaHRtbFJlY3QubGVmdCArIHNjcm9sbC5zY3JvbGxMZWZ0IC0gKGlnbm9yZVNjcm9sbGJhclggPyAwIDpcbiAgLy8gUlRMIDxib2R5PiBzY3JvbGxiYXIuXG4gIGdldFdpbmRvd1Njcm9sbEJhclgoZG9jdW1lbnRFbGVtZW50LCBodG1sUmVjdCkpO1xuICBjb25zdCB5ID0gaHRtbFJlY3QudG9wICsgc2Nyb2xsLnNjcm9sbFRvcDtcbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QoX3JlZikge1xuICBsZXQge1xuICAgIGVsZW1lbnRzLFxuICAgIHJlY3QsXG4gICAgb2Zmc2V0UGFyZW50LFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBfcmVmO1xuICBjb25zdCBpc0ZpeGVkID0gc3RyYXRlZ3kgPT09ICdmaXhlZCc7XG4gIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCB0b3BMYXllciA9IGVsZW1lbnRzID8gaXNUb3BMYXllcihlbGVtZW50cy5mbG9hdGluZykgOiBmYWxzZTtcbiAgaWYgKG9mZnNldFBhcmVudCA9PT0gZG9jdW1lbnRFbGVtZW50IHx8IHRvcExheWVyICYmIGlzRml4ZWQpIHtcbiAgICByZXR1cm4gcmVjdDtcbiAgfVxuICBsZXQgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGNyZWF0ZUNvb3JkcygwKTtcbiAgY29uc3QgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgaWYgKGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQpO1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH1cbiAgfVxuICBjb25zdCBodG1sT2Zmc2V0ID0gZG9jdW1lbnRFbGVtZW50ICYmICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCA/IGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwsIHRydWUpIDogY3JlYXRlQ29vcmRzKDApO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiByZWN0LndpZHRoICogc2NhbGUueCxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0ICogc2NhbGUueSxcbiAgICB4OiByZWN0LnggKiBzY2FsZS54IC0gc2Nyb2xsLnNjcm9sbExlZnQgKiBzY2FsZS54ICsgb2Zmc2V0cy54ICsgaHRtbE9mZnNldC54LFxuICAgIHk6IHJlY3QueSAqIHNjYWxlLnkgLSBzY3JvbGwuc2Nyb2xsVG9wICogc2NhbGUueSArIG9mZnNldHMueSArIGh0bWxPZmZzZXQueVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRDbGllbnRSZWN0cyhlbGVtZW50KSB7XG4gIHJldHVybiBBcnJheS5mcm9tKGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKSk7XG59XG5cbi8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGUuXG5mdW5jdGlvbiBnZXREb2N1bWVudFJlY3QoZWxlbWVudCkge1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpO1xuICBjb25zdCBib2R5ID0gZWxlbWVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIGNvbnN0IHdpZHRoID0gbWF4KGh0bWwuc2Nyb2xsV2lkdGgsIGh0bWwuY2xpZW50V2lkdGgsIGJvZHkuc2Nyb2xsV2lkdGgsIGJvZHkuY2xpZW50V2lkdGgpO1xuICBjb25zdCBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5LnNjcm9sbEhlaWdodCwgYm9keS5jbGllbnRIZWlnaHQpO1xuICBsZXQgeCA9IC1zY3JvbGwuc2Nyb2xsTGVmdCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCk7XG4gIGNvbnN0IHkgPSAtc2Nyb2xsLnNjcm9sbFRvcDtcbiAgaWYgKGdldENvbXB1dGVkU3R5bGUoYm9keSkuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgIHggKz0gbWF4KGh0bWwuY2xpZW50V2lkdGgsIGJvZHkuY2xpZW50V2lkdGgpIC0gd2lkdGg7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHZpc3VhbFZpZXdwb3J0ID0gd2luLnZpc3VhbFZpZXdwb3J0O1xuICBsZXQgd2lkdGggPSBodG1sLmNsaWVudFdpZHRoO1xuICBsZXQgaGVpZ2h0ID0gaHRtbC5jbGllbnRIZWlnaHQ7XG4gIGxldCB4ID0gMDtcbiAgbGV0IHkgPSAwO1xuICBpZiAodmlzdWFsVmlld3BvcnQpIHtcbiAgICB3aWR0aCA9IHZpc3VhbFZpZXdwb3J0LndpZHRoO1xuICAgIGhlaWdodCA9IHZpc3VhbFZpZXdwb3J0LmhlaWdodDtcbiAgICBjb25zdCB2aXN1YWxWaWV3cG9ydEJhc2VkID0gaXNXZWJLaXQoKTtcbiAgICBpZiAoIXZpc3VhbFZpZXdwb3J0QmFzZWQgfHwgdmlzdWFsVmlld3BvcnRCYXNlZCAmJiBzdHJhdGVneSA9PT0gJ2ZpeGVkJykge1xuICAgICAgeCA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQ7XG4gICAgICB5ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuLy8gUmV0dXJucyB0aGUgaW5uZXIgY2xpZW50IHJlY3QsIHN1YnRyYWN0aW5nIHNjcm9sbGJhcnMgaWYgcHJlc2VudC5cbmZ1bmN0aW9uIGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgdHJ1ZSwgc3RyYXRlZ3kgPT09ICdmaXhlZCcpO1xuICBjb25zdCB0b3AgPSBjbGllbnRSZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICBjb25zdCBsZWZ0ID0gY2xpZW50UmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRMZWZ0O1xuICBjb25zdCBzY2FsZSA9IGlzSFRNTEVsZW1lbnQoZWxlbWVudCkgPyBnZXRTY2FsZShlbGVtZW50KSA6IGNyZWF0ZUNvb3JkcygxKTtcbiAgY29uc3Qgd2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoICogc2NhbGUueDtcbiAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQgKiBzY2FsZS55O1xuICBjb25zdCB4ID0gbGVmdCAqIHNjYWxlLng7XG4gIGNvbnN0IHkgPSB0b3AgKiBzY2FsZS55O1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkge1xuICBsZXQgcmVjdDtcbiAgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICd2aWV3cG9ydCcpIHtcbiAgICByZWN0ID0gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIGlmIChjbGlwcGluZ0FuY2VzdG9yID09PSAnZG9jdW1lbnQnKSB7XG4gICAgcmVjdCA9IGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpO1xuICB9IGVsc2UgaWYgKGlzRWxlbWVudChjbGlwcGluZ0FuY2VzdG9yKSkge1xuICAgIHJlY3QgPSBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdmlzdWFsT2Zmc2V0cyA9IGdldFZpc3VhbE9mZnNldHMoZWxlbWVudCk7XG4gICAgcmVjdCA9IHtcbiAgICAgIHg6IGNsaXBwaW5nQW5jZXN0b3IueCAtIHZpc3VhbE9mZnNldHMueCxcbiAgICAgIHk6IGNsaXBwaW5nQW5jZXN0b3IueSAtIHZpc3VhbE9mZnNldHMueSxcbiAgICAgIHdpZHRoOiBjbGlwcGluZ0FuY2VzdG9yLndpZHRoLFxuICAgICAgaGVpZ2h0OiBjbGlwcGluZ0FuY2VzdG9yLmhlaWdodFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHJlY3RUb0NsaWVudFJlY3QocmVjdCk7XG59XG5mdW5jdGlvbiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgc3RvcE5vZGUpIHtcbiAgY29uc3QgcGFyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIGlmIChwYXJlbnROb2RlID09PSBzdG9wTm9kZSB8fCAhaXNFbGVtZW50KHBhcmVudE5vZGUpIHx8IGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnROb2RlKS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJyB8fCBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IocGFyZW50Tm9kZSwgc3RvcE5vZGUpO1xufVxuXG4vLyBBIFwiY2xpcHBpbmcgYW5jZXN0b3JcIiBpcyBhbiBgb3ZlcmZsb3dgIGVsZW1lbnQgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIGNoaWxkIGVsZW1lbnRzLiBUaGlzIHJldHVybnMgYWxsIGNsaXBwaW5nIGFuY2VzdG9yc1xuLy8gb2YgdGhlIGdpdmVuIGVsZW1lbnQgdXAgdGhlIHRyZWUuXG5mdW5jdGlvbiBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMoZWxlbWVudCwgY2FjaGUpIHtcbiAgY29uc3QgY2FjaGVkUmVzdWx0ID0gY2FjaGUuZ2V0KGVsZW1lbnQpO1xuICBpZiAoY2FjaGVkUmVzdWx0KSB7XG4gICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgfVxuICBsZXQgcmVzdWx0ID0gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZWxlbWVudCwgW10sIGZhbHNlKS5maWx0ZXIoZWwgPT4gaXNFbGVtZW50KGVsKSAmJiBnZXROb2RlTmFtZShlbCkgIT09ICdib2R5Jyk7XG4gIGxldCBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gIGNvbnN0IGVsZW1lbnRJc0ZpeGVkID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJztcbiAgbGV0IGN1cnJlbnROb2RlID0gZWxlbWVudElzRml4ZWQgPyBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIDogZWxlbWVudDtcblxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuICB3aGlsZSAoaXNFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnROb2RlKTtcbiAgICBjb25zdCBjdXJyZW50Tm9kZUlzQ29udGFpbmluZyA9IGlzQ29udGFpbmluZ0Jsb2NrKGN1cnJlbnROb2RlKTtcbiAgICBpZiAoIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmIGNvbXB1dGVkU3R5bGUucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgICB9XG4gICAgY29uc3Qgc2hvdWxkRHJvcEN1cnJlbnROb2RlID0gZWxlbWVudElzRml4ZWQgPyAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgIWN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIDogIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmIGNvbXB1dGVkU3R5bGUucG9zaXRpb24gPT09ICdzdGF0aWMnICYmICEhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgJiYgWydhYnNvbHV0ZScsICdmaXhlZCddLmluY2x1ZGVzKGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlLnBvc2l0aW9uKSB8fCBpc092ZXJmbG93RWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBjdXJyZW50Tm9kZSk7XG4gICAgaWYgKHNob3VsZERyb3BDdXJyZW50Tm9kZSkge1xuICAgICAgLy8gRHJvcCBub24tY29udGFpbmluZyBibG9ja3MuXG4gICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKGFuY2VzdG9yID0+IGFuY2VzdG9yICE9PSBjdXJyZW50Tm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlY29yZCBsYXN0IGNvbnRhaW5pbmcgYmxvY2sgZm9yIG5leHQgaXRlcmF0aW9uLlxuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBjb21wdXRlZFN0eWxlO1xuICAgIH1cbiAgICBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoY3VycmVudE5vZGUpO1xuICB9XG4gIGNhY2hlLnNldChlbGVtZW50LCByZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBhbmNlc3RvcnMuXG5mdW5jdGlvbiBnZXRDbGlwcGluZ1JlY3QoX3JlZikge1xuICBsZXQge1xuICAgIGVsZW1lbnQsXG4gICAgYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5LFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBfcmVmO1xuICBjb25zdCBlbGVtZW50Q2xpcHBpbmdBbmNlc3RvcnMgPSBib3VuZGFyeSA9PT0gJ2NsaXBwaW5nQW5jZXN0b3JzJyA/IGlzVG9wTGF5ZXIoZWxlbWVudCkgPyBbXSA6IGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCB0aGlzLl9jKSA6IFtdLmNvbmNhdChib3VuZGFyeSk7XG4gIGNvbnN0IGNsaXBwaW5nQW5jZXN0b3JzID0gWy4uLmVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycywgcm9vdEJvdW5kYXJ5XTtcbiAgY29uc3QgZmlyc3RDbGlwcGluZ0FuY2VzdG9yID0gY2xpcHBpbmdBbmNlc3RvcnNbMF07XG4gIGNvbnN0IGNsaXBwaW5nUmVjdCA9IGNsaXBwaW5nQW5jZXN0b3JzLnJlZHVjZSgoYWNjUmVjdCwgY2xpcHBpbmdBbmNlc3RvcikgPT4ge1xuICAgIGNvbnN0IHJlY3QgPSBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpO1xuICAgIGFjY1JlY3QudG9wID0gbWF4KHJlY3QudG9wLCBhY2NSZWN0LnRvcCk7XG4gICAgYWNjUmVjdC5yaWdodCA9IG1pbihyZWN0LnJpZ2h0LCBhY2NSZWN0LnJpZ2h0KTtcbiAgICBhY2NSZWN0LmJvdHRvbSA9IG1pbihyZWN0LmJvdHRvbSwgYWNjUmVjdC5ib3R0b20pO1xuICAgIGFjY1JlY3QubGVmdCA9IG1heChyZWN0LmxlZnQsIGFjY1JlY3QubGVmdCk7XG4gICAgcmV0dXJuIGFjY1JlY3Q7XG4gIH0sIGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBmaXJzdENsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IGNsaXBwaW5nUmVjdC5yaWdodCAtIGNsaXBwaW5nUmVjdC5sZWZ0LFxuICAgIGhlaWdodDogY2xpcHBpbmdSZWN0LmJvdHRvbSAtIGNsaXBwaW5nUmVjdC50b3AsXG4gICAgeDogY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgeTogY2xpcHBpbmdSZWN0LnRvcFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXREaW1lbnNpb25zKGVsZW1lbnQpIHtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9ID0gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZWxlbWVudCwgb2Zmc2V0UGFyZW50LCBzdHJhdGVneSkge1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICBsZXQgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIGNvbnN0IG9mZnNldHMgPSBjcmVhdGVDb29yZHMoMCk7XG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50KSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSwgaXNGaXhlZCwgb2Zmc2V0UGFyZW50KTtcbiAgICAgIG9mZnNldHMueCA9IG9mZnNldFJlY3QueCArIG9mZnNldFBhcmVudC5jbGllbnRMZWZ0O1xuICAgICAgb2Zmc2V0cy55ID0gb2Zmc2V0UmVjdC55ICsgb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgLy8gSWYgdGhlIDxib2R5PiBzY3JvbGxiYXIgYXBwZWFycyBvbiB0aGUgbGVmdCAoZS5nLiBSVEwgc3lzdGVtcykuIFVzZVxuICAgICAgLy8gRmlyZWZveCB3aXRoIGxheW91dC5zY3JvbGxiYXIuc2lkZSA9IDMgaW4gYWJvdXQ6Y29uZmlnIHRvIHRlc3QgdGhpcy5cbiAgICAgIG9mZnNldHMueCA9IGdldFdpbmRvd1Njcm9sbEJhclgoZG9jdW1lbnRFbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgaHRtbE9mZnNldCA9IGRvY3VtZW50RWxlbWVudCAmJiAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQgPyBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsKSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgY29uc3QgeCA9IHJlY3QubGVmdCArIHNjcm9sbC5zY3JvbGxMZWZ0IC0gb2Zmc2V0cy54IC0gaHRtbE9mZnNldC54O1xuICBjb25zdCB5ID0gcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55IC0gaHRtbE9mZnNldC55O1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzU3RhdGljUG9zaXRpb25lZChlbGVtZW50KSB7XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJztcbn1cblxuZnVuY3Rpb24gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChwb2x5ZmlsbCkge1xuICAgIHJldHVybiBwb2x5ZmlsbChlbGVtZW50KTtcbiAgfVxuICBsZXQgcmF3T2Zmc2V0UGFyZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7XG5cbiAgLy8gRmlyZWZveCByZXR1cm5zIHRoZSA8aHRtbD4gZWxlbWVudCBhcyB0aGUgb2Zmc2V0UGFyZW50IGlmIGl0J3Mgbm9uLXN0YXRpYyxcbiAgLy8gd2hpbGUgQ2hyb21lIGFuZCBTYWZhcmkgcmV0dXJuIHRoZSA8Ym9keT4gZWxlbWVudC4gVGhlIDxib2R5PiBlbGVtZW50IG11c3RcbiAgLy8gYmUgdXNlZCB0byBwZXJmb3JtIHRoZSBjb3JyZWN0IGNhbGN1bGF0aW9ucyBldmVuIGlmIHRoZSA8aHRtbD4gZWxlbWVudCBpc1xuICAvLyBub24tc3RhdGljLlxuICBpZiAoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpID09PSByYXdPZmZzZXRQYXJlbnQpIHtcbiAgICByYXdPZmZzZXRQYXJlbnQgPSByYXdPZmZzZXRQYXJlbnQub3duZXJEb2N1bWVudC5ib2R5O1xuICB9XG4gIHJldHVybiByYXdPZmZzZXRQYXJlbnQ7XG59XG5cbi8vIEdldHMgdGhlIGNsb3Nlc3QgYW5jZXN0b3IgcG9zaXRpb25lZCBlbGVtZW50LiBIYW5kbGVzIHNvbWUgZWRnZSBjYXNlcyxcbi8vIHN1Y2ggYXMgdGFibGUgYW5jZXN0b3JzIGFuZCBjcm9zcyBicm93c2VyIGJ1Z3MuXG5mdW5jdGlvbiBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBpZiAoaXNUb3BMYXllcihlbGVtZW50KSkge1xuICAgIHJldHVybiB3aW47XG4gIH1cbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgbGV0IHN2Z09mZnNldFBhcmVudCA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gICAgd2hpbGUgKHN2Z09mZnNldFBhcmVudCAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKHN2Z09mZnNldFBhcmVudCkpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQoc3ZnT2Zmc2V0UGFyZW50KSAmJiAhaXNTdGF0aWNQb3NpdGlvbmVkKHN2Z09mZnNldFBhcmVudCkpIHtcbiAgICAgICAgcmV0dXJuIHN2Z09mZnNldFBhcmVudDtcbiAgICAgIH1cbiAgICAgIHN2Z09mZnNldFBhcmVudCA9IGdldFBhcmVudE5vZGUoc3ZnT2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBsZXQgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCk7XG4gIHdoaWxlIChvZmZzZXRQYXJlbnQgJiYgaXNUYWJsZUVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc1N0YXRpY1Bvc2l0aW9uZWQob2Zmc2V0UGFyZW50KSkge1xuICAgIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQob2Zmc2V0UGFyZW50LCBwb2x5ZmlsbCk7XG4gIH1cbiAgaWYgKG9mZnNldFBhcmVudCAmJiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUob2Zmc2V0UGFyZW50KSAmJiBpc1N0YXRpY1Bvc2l0aW9uZWQob2Zmc2V0UGFyZW50KSAmJiAhaXNDb250YWluaW5nQmxvY2sob2Zmc2V0UGFyZW50KSkge1xuICAgIHJldHVybiB3aW47XG4gIH1cbiAgcmV0dXJuIG9mZnNldFBhcmVudCB8fCBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkgfHwgd2luO1xufVxuXG5jb25zdCBnZXRFbGVtZW50UmVjdHMgPSBhc3luYyBmdW5jdGlvbiAoZGF0YSkge1xuICBjb25zdCBnZXRPZmZzZXRQYXJlbnRGbiA9IHRoaXMuZ2V0T2Zmc2V0UGFyZW50IHx8IGdldE9mZnNldFBhcmVudDtcbiAgY29uc3QgZ2V0RGltZW5zaW9uc0ZuID0gdGhpcy5nZXREaW1lbnNpb25zO1xuICBjb25zdCBmbG9hdGluZ0RpbWVuc2lvbnMgPSBhd2FpdCBnZXREaW1lbnNpb25zRm4oZGF0YS5mbG9hdGluZyk7XG4gIHJldHVybiB7XG4gICAgcmVmZXJlbmNlOiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChkYXRhLnJlZmVyZW5jZSwgYXdhaXQgZ2V0T2Zmc2V0UGFyZW50Rm4oZGF0YS5mbG9hdGluZyksIGRhdGEuc3RyYXRlZ3kpLFxuICAgIGZsb2F0aW5nOiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHdpZHRoOiBmbG9hdGluZ0RpbWVuc2lvbnMud2lkdGgsXG4gICAgICBoZWlnaHQ6IGZsb2F0aW5nRGltZW5zaW9ucy5oZWlnaHRcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBpc1JUTChlbGVtZW50KSB7XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmRpcmVjdGlvbiA9PT0gJ3J0bCc7XG59XG5cbmNvbnN0IHBsYXRmb3JtID0ge1xuICBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCxcbiAgZ2V0RG9jdW1lbnRFbGVtZW50LFxuICBnZXRDbGlwcGluZ1JlY3QsXG4gIGdldE9mZnNldFBhcmVudCxcbiAgZ2V0RWxlbWVudFJlY3RzLFxuICBnZXRDbGllbnRSZWN0cyxcbiAgZ2V0RGltZW5zaW9ucyxcbiAgZ2V0U2NhbGUsXG4gIGlzRWxlbWVudCxcbiAgaXNSVExcbn07XG5cbmZ1bmN0aW9uIHJlY3RzQXJlRXF1YWwoYSwgYikge1xuICByZXR1cm4gYS54ID09PSBiLnggJiYgYS55ID09PSBiLnkgJiYgYS53aWR0aCA9PT0gYi53aWR0aCAmJiBhLmhlaWdodCA9PT0gYi5oZWlnaHQ7XG59XG5cbi8vIGh0dHBzOi8vc2FtdGhvci5hdS8yMDIxL29ic2VydmluZy1kb20vXG5mdW5jdGlvbiBvYnNlcnZlTW92ZShlbGVtZW50LCBvbk1vdmUpIHtcbiAgbGV0IGlvID0gbnVsbDtcbiAgbGV0IHRpbWVvdXRJZDtcbiAgY29uc3Qgcm9vdCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICB2YXIgX2lvO1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgIChfaW8gPSBpbykgPT0gbnVsbCB8fCBfaW8uZGlzY29ubmVjdCgpO1xuICAgIGlvID0gbnVsbDtcbiAgfVxuICBmdW5jdGlvbiByZWZyZXNoKHNraXAsIHRocmVzaG9sZCkge1xuICAgIGlmIChza2lwID09PSB2b2lkIDApIHtcbiAgICAgIHNraXAgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRocmVzaG9sZCA9PT0gdm9pZCAwKSB7XG4gICAgICB0aHJlc2hvbGQgPSAxO1xuICAgIH1cbiAgICBjbGVhbnVwKCk7XG4gICAgY29uc3QgZWxlbWVudFJlY3RGb3JSb290TWFyZ2luID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB7XG4gICAgICBsZWZ0LFxuICAgICAgdG9wLFxuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHRcbiAgICB9ID0gZWxlbWVudFJlY3RGb3JSb290TWFyZ2luO1xuICAgIGlmICghc2tpcCkge1xuICAgICAgb25Nb3ZlKCk7XG4gICAgfVxuICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpbnNldFRvcCA9IGZsb29yKHRvcCk7XG4gICAgY29uc3QgaW5zZXRSaWdodCA9IGZsb29yKHJvb3QuY2xpZW50V2lkdGggLSAobGVmdCArIHdpZHRoKSk7XG4gICAgY29uc3QgaW5zZXRCb3R0b20gPSBmbG9vcihyb290LmNsaWVudEhlaWdodCAtICh0b3AgKyBoZWlnaHQpKTtcbiAgICBjb25zdCBpbnNldExlZnQgPSBmbG9vcihsZWZ0KTtcbiAgICBjb25zdCByb290TWFyZ2luID0gLWluc2V0VG9wICsgXCJweCBcIiArIC1pbnNldFJpZ2h0ICsgXCJweCBcIiArIC1pbnNldEJvdHRvbSArIFwicHggXCIgKyAtaW5zZXRMZWZ0ICsgXCJweFwiO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByb290TWFyZ2luLFxuICAgICAgdGhyZXNob2xkOiBtYXgoMCwgbWluKDEsIHRocmVzaG9sZCkpIHx8IDFcbiAgICB9O1xuICAgIGxldCBpc0ZpcnN0VXBkYXRlID0gdHJ1ZTtcbiAgICBmdW5jdGlvbiBoYW5kbGVPYnNlcnZlKGVudHJpZXMpIHtcbiAgICAgIGNvbnN0IHJhdGlvID0gZW50cmllc1swXS5pbnRlcnNlY3Rpb25SYXRpbztcbiAgICAgIGlmIChyYXRpbyAhPT0gdGhyZXNob2xkKSB7XG4gICAgICAgIGlmICghaXNGaXJzdFVwZGF0ZSkge1xuICAgICAgICAgIHJldHVybiByZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyYXRpbykge1xuICAgICAgICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgY2xpcHBlZCwgdGhlIHJhdGlvIGlzIDAuIFRocm90dGxlIHRoZSByZWZyZXNoXG4gICAgICAgICAgLy8gdG8gcHJldmVudCBhbiBpbmZpbml0ZSBsb29wIG9mIHVwZGF0ZXMuXG4gICAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICByZWZyZXNoKGZhbHNlLCAxZS03KTtcbiAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWZyZXNoKGZhbHNlLCByYXRpbyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChyYXRpbyA9PT0gMSAmJiAhcmVjdHNBcmVFcXVhbChlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4sIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpKSB7XG4gICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBldmVuIHRob3VnaCB0aGUgcmF0aW8gaXMgcmVwb3J0ZWQgYXMgMSwgdGhlXG4gICAgICAgIC8vIGVsZW1lbnQgaXMgbm90IGFjdHVhbGx5IGZ1bGx5IHdpdGhpbiB0aGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIncyByb290XG4gICAgICAgIC8vIGFyZWEgYW55bW9yZS4gVGhpcyBjYW4gaGFwcGVuIHVuZGVyIHBlcmZvcm1hbmNlIGNvbnN0cmFpbnRzLiBUaGlzIG1heVxuICAgICAgICAvLyBiZSBhIGJ1ZyBpbiB0aGUgYnJvd3NlcidzIEludGVyc2VjdGlvbk9ic2VydmVyIGltcGxlbWVudGF0aW9uLiBUb1xuICAgICAgICAvLyB3b3JrIGFyb3VuZCB0aGlzLCB3ZSBjb21wYXJlIHRoZSBlbGVtZW50J3MgYm91bmRpbmcgcmVjdCBub3cgd2l0aFxuICAgICAgICAvLyB3aGF0IGl0IHdhcyBhdCB0aGUgdGltZSB3ZSBjcmVhdGVkIHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlci4gSWYgdGhleVxuICAgICAgICAvLyBhcmUgbm90IGVxdWFsIHRoZW4gdGhlIGVsZW1lbnQgbW92ZWQsIHNvIHdlIHJlZnJlc2guXG4gICAgICAgIHJlZnJlc2goKTtcbiAgICAgIH1cbiAgICAgIGlzRmlyc3RVcGRhdGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBPbGRlciBicm93c2VycyBkb24ndCBzdXBwb3J0IGEgYGRvY3VtZW50YCBhcyB0aGUgcm9vdCBhbmQgd2lsbCB0aHJvdyBhblxuICAgIC8vIGVycm9yLlxuICAgIHRyeSB7XG4gICAgICBpbyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVPYnNlcnZlLCB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIC8vIEhhbmRsZSA8aWZyYW1lPnNcbiAgICAgICAgcm9vdDogcm9vdC5vd25lckRvY3VtZW50XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpbyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVPYnNlcnZlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgaW8ub2JzZXJ2ZShlbGVtZW50KTtcbiAgfVxuICByZWZyZXNoKHRydWUpO1xuICByZXR1cm4gY2xlYW51cDtcbn1cblxuLyoqXG4gKiBBdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHdoZW4gbmVjZXNzYXJ5LlxuICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXMgbW91bnRlZCBvbiB0aGUgRE9NIG9yXG4gKiB2aXNpYmxlIG9uIHRoZSBzY3JlZW4uXG4gKiBAcmV0dXJucyBjbGVhbnVwIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlIGludm9rZWQgd2hlbiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpc1xuICogcmVtb3ZlZCBmcm9tIHRoZSBET00gb3IgaGlkZGVuIGZyb20gdGhlIHNjcmVlbi5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvVXBkYXRlXG4gKi9cbmZ1bmN0aW9uIGF1dG9VcGRhdGUocmVmZXJlbmNlLCBmbG9hdGluZywgdXBkYXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIGFuY2VzdG9yU2Nyb2xsID0gdHJ1ZSxcbiAgICBhbmNlc3RvclJlc2l6ZSA9IHRydWUsXG4gICAgZWxlbWVudFJlc2l6ZSA9IHR5cGVvZiBSZXNpemVPYnNlcnZlciA9PT0gJ2Z1bmN0aW9uJyxcbiAgICBsYXlvdXRTaGlmdCA9IHR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlciA9PT0gJ2Z1bmN0aW9uJyxcbiAgICBhbmltYXRpb25GcmFtZSA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCByZWZlcmVuY2VFbCA9IHVud3JhcEVsZW1lbnQocmVmZXJlbmNlKTtcbiAgY29uc3QgYW5jZXN0b3JzID0gYW5jZXN0b3JTY3JvbGwgfHwgYW5jZXN0b3JSZXNpemUgPyBbLi4uKHJlZmVyZW5jZUVsID8gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMocmVmZXJlbmNlRWwpIDogW10pLCAuLi5nZXRPdmVyZmxvd0FuY2VzdG9ycyhmbG9hdGluZyldIDogW107XG4gIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICBhbmNlc3RvclNjcm9sbCAmJiBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUsIHtcbiAgICAgIHBhc3NpdmU6IHRydWVcbiAgICB9KTtcbiAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICB9KTtcbiAgY29uc3QgY2xlYW51cElvID0gcmVmZXJlbmNlRWwgJiYgbGF5b3V0U2hpZnQgPyBvYnNlcnZlTW92ZShyZWZlcmVuY2VFbCwgdXBkYXRlKSA6IG51bGw7XG4gIGxldCByZW9ic2VydmVGcmFtZSA9IC0xO1xuICBsZXQgcmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICBpZiAoZWxlbWVudFJlc2l6ZSkge1xuICAgIHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKF9yZWYgPT4ge1xuICAgICAgbGV0IFtmaXJzdEVudHJ5XSA9IF9yZWY7XG4gICAgICBpZiAoZmlyc3RFbnRyeSAmJiBmaXJzdEVudHJ5LnRhcmdldCA9PT0gcmVmZXJlbmNlRWwgJiYgcmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgLy8gUHJldmVudCB1cGRhdGUgbG9vcHMgd2hlbiB1c2luZyB0aGUgYHNpemVgIG1pZGRsZXdhcmUuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMTc0MFxuICAgICAgICByZXNpemVPYnNlcnZlci51bm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyZW9ic2VydmVGcmFtZSk7XG4gICAgICAgIHJlb2JzZXJ2ZUZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICB2YXIgX3Jlc2l6ZU9ic2VydmVyO1xuICAgICAgICAgIChfcmVzaXplT2JzZXJ2ZXIgPSByZXNpemVPYnNlcnZlcikgPT0gbnVsbCB8fCBfcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdXBkYXRlKCk7XG4gICAgfSk7XG4gICAgaWYgKHJlZmVyZW5jZUVsICYmICFhbmltYXRpb25GcmFtZSkge1xuICAgICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShyZWZlcmVuY2VFbCk7XG4gICAgfVxuICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICB9XG4gIGxldCBmcmFtZUlkO1xuICBsZXQgcHJldlJlZlJlY3QgPSBhbmltYXRpb25GcmFtZSA/IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpIDogbnVsbDtcbiAgaWYgKGFuaW1hdGlvbkZyYW1lKSB7XG4gICAgZnJhbWVMb29wKCk7XG4gIH1cbiAgZnVuY3Rpb24gZnJhbWVMb29wKCkge1xuICAgIGNvbnN0IG5leHRSZWZSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHJlZmVyZW5jZSk7XG4gICAgaWYgKHByZXZSZWZSZWN0ICYmICFyZWN0c0FyZUVxdWFsKHByZXZSZWZSZWN0LCBuZXh0UmVmUmVjdCkpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgICBwcmV2UmVmUmVjdCA9IG5leHRSZWZSZWN0O1xuICAgIGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnJhbWVMb29wKTtcbiAgfVxuICB1cGRhdGUoKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICB2YXIgX3Jlc2l6ZU9ic2VydmVyMjtcbiAgICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgICBhbmNlc3RvclNjcm9sbCAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpO1xuICAgICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgICB9KTtcbiAgICBjbGVhbnVwSW8gPT0gbnVsbCB8fCBjbGVhbnVwSW8oKTtcbiAgICAoX3Jlc2l6ZU9ic2VydmVyMiA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlcjIuZGlzY29ubmVjdCgpO1xuICAgIHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lSWQpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBvZiBvdmVyZmxvdyBzaWRlIG9mZnNldHMgdGhhdCBkZXRlcm1pbmUgaG93IG11Y2ggdGhlXG4gKiBlbGVtZW50IGlzIG92ZXJmbG93aW5nIGEgZ2l2ZW4gY2xpcHBpbmcgYm91bmRhcnkgb24gZWFjaCBzaWRlLlxuICogLSBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBib3VuZGFyeSBieSB0aGF0IG51bWJlciBvZiBwaXhlbHNcbiAqIC0gbmVnYXRpdmUgPSBob3cgbWFueSBwaXhlbHMgbGVmdCBiZWZvcmUgaXQgd2lsbCBvdmVyZmxvd1xuICogLSAwID0gbGllcyBmbHVzaCB3aXRoIHRoZSBib3VuZGFyeVxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2RldGVjdE92ZXJmbG93XG4gKi9cbmNvbnN0IGRldGVjdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3ckMTtcblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gb2Zmc2V0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGNob29zaW5nIHRoZSBwbGFjZW1lbnRcbiAqIHRoYXQgaGFzIHRoZSBtb3N0IHNwYWNlIGF2YWlsYWJsZSBhdXRvbWF0aWNhbGx5LCB3aXRob3V0IG5lZWRpbmcgdG8gc3BlY2lmeSBhXG4gKiBwcmVmZXJyZWQgcGxhY2VtZW50LiBBbHRlcm5hdGl2ZSB0byBgZmxpcGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1BsYWNlbWVudFxuICovXG5jb25zdCBhdXRvUGxhY2VtZW50ID0gYXV0b1BsYWNlbWVudCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBzaGlmdCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBmbGlwcGluZyB0aGUgYHBsYWNlbWVudGBcbiAqIGluIG9yZGVyIHRvIGtlZXAgaXQgaW4gdmlldyB3aGVuIHRoZSBwcmVmZXJyZWQgcGxhY2VtZW50KHMpIHdpbGwgb3ZlcmZsb3cgdGhlXG4gKiBjbGlwcGluZyBib3VuZGFyeS4gQWx0ZXJuYXRpdmUgdG8gYGF1dG9QbGFjZW1lbnRgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2ZsaXBcbiAqL1xuY29uc3QgZmxpcCA9IGZsaXAkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gc2l6ZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gaGlkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBpbiBhcHBsaWNhYmxlIHNpdHVhdGlvbnMsIHN1Y2ggYXNcbiAqIHdoZW4gaXQgaXMgbm90IGluIHRoZSBzYW1lIGNsaXBwaW5nIGNvbnRleHQgYXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2hpZGVcbiAqL1xuY29uc3QgaGlkZSA9IGhpZGUkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBhcnJvdyQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBpbmxpbmUkMTtcblxuLyoqXG4gKiBCdWlsdC1pbiBgbGltaXRlcmAgdGhhdCB3aWxsIHN0b3AgYHNoaWZ0KClgIGF0IGEgY2VydGFpbiBwb2ludC5cbiAqL1xuY29uc3QgbGltaXRTaGlmdCA9IGxpbWl0U2hpZnQkMTtcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gKiBuZXh0IHRvIGEgZ2l2ZW4gcmVmZXJlbmNlIGVsZW1lbnQuXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IChyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSA9PiB7XG4gIC8vIFRoaXMgY2FjaGVzIHRoZSBleHBlbnNpdmUgYGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9yc2AgZnVuY3Rpb24gc28gdGhhdFxuICAvLyBtdWx0aXBsZSBsaWZlY3ljbGUgcmVzZXRzIHJlLXVzZSB0aGUgc2FtZSByZXN1bHQuIEl0IG9ubHkgbGl2ZXMgZm9yIGFcbiAgLy8gc2luZ2xlIGNhbGwuIElmIG90aGVyIGZ1bmN0aW9ucyBiZWNvbWUgZXhwZW5zaXZlLCB3ZSBjYW4gYWRkIHRoZW0gYXMgd2VsbC5cbiAgY29uc3QgY2FjaGUgPSBuZXcgTWFwKCk7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7XG4gICAgcGxhdGZvcm0sXG4gICAgLi4ub3B0aW9uc1xuICB9O1xuICBjb25zdCBwbGF0Zm9ybVdpdGhDYWNoZSA9IHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLnBsYXRmb3JtLFxuICAgIF9jOiBjYWNoZVxuICB9O1xuICByZXR1cm4gY29tcHV0ZVBvc2l0aW9uJDEocmVmZXJlbmNlLCBmbG9hdGluZywge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMsXG4gICAgcGxhdGZvcm06IHBsYXRmb3JtV2l0aENhY2hlXG4gIH0pO1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBwbGF0Zm9ybSwgc2hpZnQsIHNpemUgfTtcbiIsImltcG9ydCB7IGFycm93IGFzIGFycm93JDEsIGNvbXB1dGVQb3NpdGlvbiB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuZXhwb3J0IHsgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBwbGF0Zm9ybSwgc2hpZnQsIHNpemUgfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmltcG9ydCB7IGlzTm9kZSwgZ2V0Tm9kZU5hbWUgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcbmltcG9ydCB7IHVucmVmLCBjb21wdXRlZCwgcmVmLCBzaGFsbG93UmVmLCB3YXRjaCwgZ2V0Q3VycmVudFNjb3BlLCBvblNjb3BlRGlzcG9zZSwgc2hhbGxvd1JlYWRvbmx5IH0gZnJvbSAndnVlLWRlbWknO1xuXG5mdW5jdGlvbiBpc0NvbXBvbmVudFB1YmxpY0luc3RhbmNlKHRhcmdldCkge1xuICByZXR1cm4gdGFyZ2V0ICE9IG51bGwgJiYgdHlwZW9mIHRhcmdldCA9PT0gJ29iamVjdCcgJiYgJyRlbCcgaW4gdGFyZ2V0O1xufVxuZnVuY3Rpb24gdW53cmFwRWxlbWVudCh0YXJnZXQpIHtcbiAgaWYgKGlzQ29tcG9uZW50UHVibGljSW5zdGFuY2UodGFyZ2V0KSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0YXJnZXQuJGVsO1xuICAgIHJldHVybiBpc05vZGUoZWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoZWxlbWVudCkgPT09ICcjY29tbWVudCcgPyBudWxsIDogZWxlbWVudDtcbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiB0b1ZhbHVlKHNvdXJjZSkge1xuICByZXR1cm4gdHlwZW9mIHNvdXJjZSA9PT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZSgpIDogdW5yZWYoc291cmNlKTtcbn1cblxuLyoqXG4gKiBQb3NpdGlvbnMgYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzdWNoIHRoYXQgaXQgaXMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIGFycm93IG9wdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuZnVuY3Rpb24gYXJyb3cob3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdhcnJvdycsXG4gICAgb3B0aW9ucyxcbiAgICBmbihhcmdzKSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gdW53cmFwRWxlbWVudCh0b1ZhbHVlKG9wdGlvbnMuZWxlbWVudCkpO1xuICAgICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyb3ckMSh7XG4gICAgICAgIGVsZW1lbnQsXG4gICAgICAgIHBhZGRpbmc6IG9wdGlvbnMucGFkZGluZ1xuICAgICAgfSkuZm4oYXJncyk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXREUFIoZWxlbWVudCkge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBjb25zdCB3aW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICByZXR1cm4gd2luLmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbn1cblxuZnVuY3Rpb24gcm91bmRCeURQUihlbGVtZW50LCB2YWx1ZSkge1xuICBjb25zdCBkcHIgPSBnZXREUFIoZWxlbWVudCk7XG4gIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogZHByKSAvIGRwcjtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50IG5leHQgdG8gYSByZWZlcmVuY2UgZWxlbWVudCB3aGVuIGl0IGlzIGdpdmVuIGEgY2VydGFpbiBDU1MgcG9zaXRpb25pbmcgc3RyYXRlZ3kuXG4gKiBAcGFyYW0gcmVmZXJlbmNlIFRoZSByZWZlcmVuY2UgdGVtcGxhdGUgcmVmLlxuICogQHBhcmFtIGZsb2F0aW5nIFRoZSBmbG9hdGluZyB0ZW1wbGF0ZSByZWYuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgZmxvYXRpbmcgb3B0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy92dWVcbiAqL1xuZnVuY3Rpb24gdXNlRmxvYXRpbmcocmVmZXJlbmNlLCBmbG9hdGluZywgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHdoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uID0gb3B0aW9ucy53aGlsZUVsZW1lbnRzTW91bnRlZDtcbiAgY29uc3Qgb3Blbk9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWU7XG4gICAgcmV0dXJuIChfdG9WYWx1ZSA9IHRvVmFsdWUob3B0aW9ucy5vcGVuKSkgIT0gbnVsbCA/IF90b1ZhbHVlIDogdHJ1ZTtcbiAgfSk7XG4gIGNvbnN0IG1pZGRsZXdhcmVPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB0b1ZhbHVlKG9wdGlvbnMubWlkZGxld2FyZSkpO1xuICBjb25zdCBwbGFjZW1lbnRPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlMjtcbiAgICByZXR1cm4gKF90b1ZhbHVlMiA9IHRvVmFsdWUob3B0aW9ucy5wbGFjZW1lbnQpKSAhPSBudWxsID8gX3RvVmFsdWUyIDogJ2JvdHRvbSc7XG4gIH0pO1xuICBjb25zdCBzdHJhdGVneU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWUzO1xuICAgIHJldHVybiAoX3RvVmFsdWUzID0gdG9WYWx1ZShvcHRpb25zLnN0cmF0ZWd5KSkgIT0gbnVsbCA/IF90b1ZhbHVlMyA6ICdhYnNvbHV0ZSc7XG4gIH0pO1xuICBjb25zdCB0cmFuc2Zvcm1PcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlNDtcbiAgICByZXR1cm4gKF90b1ZhbHVlNCA9IHRvVmFsdWUob3B0aW9ucy50cmFuc2Zvcm0pKSAhPSBudWxsID8gX3RvVmFsdWU0IDogdHJ1ZTtcbiAgfSk7XG4gIGNvbnN0IHJlZmVyZW5jZUVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiB1bndyYXBFbGVtZW50KHJlZmVyZW5jZS52YWx1ZSkpO1xuICBjb25zdCBmbG9hdGluZ0VsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiB1bndyYXBFbGVtZW50KGZsb2F0aW5nLnZhbHVlKSk7XG4gIGNvbnN0IHggPSByZWYoMCk7XG4gIGNvbnN0IHkgPSByZWYoMCk7XG4gIGNvbnN0IHN0cmF0ZWd5ID0gcmVmKHN0cmF0ZWd5T3B0aW9uLnZhbHVlKTtcbiAgY29uc3QgcGxhY2VtZW50ID0gcmVmKHBsYWNlbWVudE9wdGlvbi52YWx1ZSk7XG4gIGNvbnN0IG1pZGRsZXdhcmVEYXRhID0gc2hhbGxvd1JlZih7fSk7XG4gIGNvbnN0IGlzUG9zaXRpb25lZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGZsb2F0aW5nU3R5bGVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxTdHlsZXMgPSB7XG4gICAgICBwb3NpdGlvbjogc3RyYXRlZ3kudmFsdWUsXG4gICAgICBsZWZ0OiAnMCcsXG4gICAgICB0b3A6ICcwJ1xuICAgIH07XG4gICAgaWYgKCFmbG9hdGluZ0VsZW1lbnQudmFsdWUpIHtcbiAgICAgIHJldHVybiBpbml0aWFsU3R5bGVzO1xuICAgIH1cbiAgICBjb25zdCB4VmFsID0gcm91bmRCeURQUihmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHgudmFsdWUpO1xuICAgIGNvbnN0IHlWYWwgPSByb3VuZEJ5RFBSKGZsb2F0aW5nRWxlbWVudC52YWx1ZSwgeS52YWx1ZSk7XG4gICAgaWYgKHRyYW5zZm9ybU9wdGlvbi52YWx1ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaW5pdGlhbFN0eWxlcyxcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZShcIiArIHhWYWwgKyBcInB4LCBcIiArIHlWYWwgKyBcInB4KVwiLFxuICAgICAgICAuLi4oZ2V0RFBSKGZsb2F0aW5nRWxlbWVudC52YWx1ZSkgPj0gMS41ICYmIHtcbiAgICAgICAgICB3aWxsQ2hhbmdlOiAndHJhbnNmb3JtJ1xuICAgICAgICB9KVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneS52YWx1ZSxcbiAgICAgIGxlZnQ6IHhWYWwgKyBcInB4XCIsXG4gICAgICB0b3A6IHlWYWwgKyBcInB4XCJcbiAgICB9O1xuICB9KTtcbiAgbGV0IHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cDtcbiAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIGlmIChyZWZlcmVuY2VFbGVtZW50LnZhbHVlID09IG51bGwgfHwgZmxvYXRpbmdFbGVtZW50LnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgb3BlbiA9IG9wZW5PcHRpb24udmFsdWU7XG4gICAgY29tcHV0ZVBvc2l0aW9uKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUsIGZsb2F0aW5nRWxlbWVudC52YWx1ZSwge1xuICAgICAgbWlkZGxld2FyZTogbWlkZGxld2FyZU9wdGlvbi52YWx1ZSxcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50T3B0aW9uLnZhbHVlLFxuICAgICAgc3RyYXRlZ3k6IHN0cmF0ZWd5T3B0aW9uLnZhbHVlXG4gICAgfSkudGhlbihwb3NpdGlvbiA9PiB7XG4gICAgICB4LnZhbHVlID0gcG9zaXRpb24ueDtcbiAgICAgIHkudmFsdWUgPSBwb3NpdGlvbi55O1xuICAgICAgc3RyYXRlZ3kudmFsdWUgPSBwb3NpdGlvbi5zdHJhdGVneTtcbiAgICAgIHBsYWNlbWVudC52YWx1ZSA9IHBvc2l0aW9uLnBsYWNlbWVudDtcbiAgICAgIG1pZGRsZXdhcmVEYXRhLnZhbHVlID0gcG9zaXRpb24ubWlkZGxld2FyZURhdGE7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBmbG9hdGluZyBlbGVtZW50J3MgcG9zaXRpb24gbWF5IGJlIHJlY29tcHV0ZWQgd2hpbGUgaXQncyBjbG9zZWRcbiAgICAgICAqIGJ1dCBzdGlsbCBtb3VudGVkIChzdWNoIGFzIHdoZW4gdHJhbnNpdGlvbmluZyBvdXQpLiBUbyBlbnN1cmVcbiAgICAgICAqIGBpc1Bvc2l0aW9uZWRgIHdpbGwgYmUgYGZhbHNlYCBpbml0aWFsbHkgb24gdGhlIG5leHQgb3BlbiwgYXZvaWRcbiAgICAgICAqIHNldHRpbmcgaXQgdG8gYHRydWVgIHdoZW4gYG9wZW4gPT09IGZhbHNlYCAobXVzdCBiZSBzcGVjaWZpZWQpLlxuICAgICAgICovXG4gICAgICBpc1Bvc2l0aW9uZWQudmFsdWUgPSBvcGVuICE9PSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIGlmICh0eXBlb2Ygd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAoKTtcbiAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gYXR0YWNoKCkge1xuICAgIGNsZWFudXAoKTtcbiAgICBpZiAod2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdXBkYXRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChyZWZlcmVuY2VFbGVtZW50LnZhbHVlICE9IG51bGwgJiYgZmxvYXRpbmdFbGVtZW50LnZhbHVlICE9IG51bGwpIHtcbiAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCA9IHdoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUsIGZsb2F0aW5nRWxlbWVudC52YWx1ZSwgdXBkYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgaWYgKCFvcGVuT3B0aW9uLnZhbHVlKSB7XG4gICAgICBpc1Bvc2l0aW9uZWQudmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgd2F0Y2goW21pZGRsZXdhcmVPcHRpb24sIHBsYWNlbWVudE9wdGlvbiwgc3RyYXRlZ3lPcHRpb24sIG9wZW5PcHRpb25dLCB1cGRhdGUsIHtcbiAgICBmbHVzaDogJ3N5bmMnXG4gIH0pO1xuICB3YXRjaChbcmVmZXJlbmNlRWxlbWVudCwgZmxvYXRpbmdFbGVtZW50XSwgYXR0YWNoLCB7XG4gICAgZmx1c2g6ICdzeW5jJ1xuICB9KTtcbiAgd2F0Y2gob3Blbk9wdGlvbiwgcmVzZXQsIHtcbiAgICBmbHVzaDogJ3N5bmMnXG4gIH0pO1xuICBpZiAoZ2V0Q3VycmVudFNjb3BlKCkpIHtcbiAgICBvblNjb3BlRGlzcG9zZShjbGVhbnVwKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHg6IHNoYWxsb3dSZWFkb25seSh4KSxcbiAgICB5OiBzaGFsbG93UmVhZG9ubHkoeSksXG4gICAgc3RyYXRlZ3k6IHNoYWxsb3dSZWFkb25seShzdHJhdGVneSksXG4gICAgcGxhY2VtZW50OiBzaGFsbG93UmVhZG9ubHkocGxhY2VtZW50KSxcbiAgICBtaWRkbGV3YXJlRGF0YTogc2hhbGxvd1JlYWRvbmx5KG1pZGRsZXdhcmVEYXRhKSxcbiAgICBpc1Bvc2l0aW9uZWQ6IHNoYWxsb3dSZWFkb25seShpc1Bvc2l0aW9uZWQpLFxuICAgIGZsb2F0aW5nU3R5bGVzLFxuICAgIHVwZGF0ZVxuICB9O1xufVxuXG5leHBvcnQgeyBhcnJvdywgdXNlRmxvYXRpbmcgfTtcbiIsImV4cG9ydCBjb25zdCBpc0NsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCwgZWxlbWVudHM6IEhUTUxFbGVtZW50IHwgSFRNTEVsZW1lbnRbXSk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCB0YXJnZXRzID0gQXJyYXkuaXNBcnJheShlbGVtZW50cykgPyBlbGVtZW50cyA6IFtlbGVtZW50c107XG4gIHJldHVybiAhdGFyZ2V0cy5zb21lKChlbCkgPT4gZWwuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKTtcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBvZmZzZXQgYXMgb2Zmc2V0TWlkZGxld2FyZSwgc2hpZnQsIHVzZUZsb2F0aW5nIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3Z1ZSc7XG4gIGltcG9ydCB7IGNvbXB1dGVkLCBvbkJlZm9yZU1vdW50LCBvbk1vdW50ZWQsIG9uVW5tb3VudGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBpc0NsaWNrT3V0c2lkZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2V2ZW50JztcbiAgaW1wb3J0IHsgVE9QX0xBWUVSX0lELCBpbml0RmF1eFRvcExheWVyIH0gZnJvbSAnQC91dGlsaXRpZXMvdmlld3BvcnQnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGFuY2hvcklkOiBzdHJpbmc7XG4gICAgb2Zmc2V0PzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgb2Zmc2V0OiAxNixcbiAgfSk7XG5cbiAgY29uc3QgYW5jaG9yOiBSZWY8SFRNTEVsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbiAgY29uc3QgZmxvYXRpbmc6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCByb290OiBSZWY8SFRNTEVsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbiAgY29uc3QgaXNIb3ZlcmVkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaXNUb2dnbGVkT3BlbiA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IG1pZGRsZXdhcmUgPSByZWYoW2F1dG9QbGFjZW1lbnQoKSwgb2Zmc2V0TWlkZGxld2FyZSh7IG1haW5BeGlzOiBwcm9wcy5vZmZzZXQgfSksIHNoaWZ0KHsgcGFkZGluZzogMTYgfSldKTtcblxuICBjb25zdCBpc1Nob3dQb3BvdmVyID0gY29tcHV0ZWQoKCkgPT4gaXNIb3ZlcmVkLnZhbHVlIHx8IGlzVG9nZ2xlZE9wZW4udmFsdWUpO1xuXG4gIGNvbnN0IHsgZmxvYXRpbmdTdHlsZXMgfSA9IHVzZUZsb2F0aW5nKGFuY2hvciwgZmxvYXRpbmcsIHtcbiAgICBtaWRkbGV3YXJlLFxuICAgIHN0cmF0ZWd5OiAnZml4ZWQnLFxuICAgIHdoaWxlRWxlbWVudHNNb3VudGVkOiBhdXRvVXBkYXRlLFxuICB9KTtcblxuICBjb25zdCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoIWFuY2hvci52YWx1ZSB8fCAhZmxvYXRpbmcudmFsdWUpIHJldHVybjtcbiAgICBpZiAoaXNDbGlja091dHNpZGUoZSwgW2FuY2hvci52YWx1ZSwgZmxvYXRpbmcudmFsdWVdKSkge1xuICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3ZlciA9ICgpID0+IHtcbiAgICBpc0hvdmVyZWQudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlID0gKCkgPT4ge1xuICAgIGlzSG92ZXJlZC52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFuY2hvckVsZW1lbnRDbGljayA9ICgpID0+IHtcbiAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBhZGRMaXN0ZW5lcnNUb0FuY2hvckVsZW1lbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUpIHJldHVybiBudWxsO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyKTtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlKTtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVBbmNob3JFbGVtZW50Q2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IHJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3Zlcik7XG4gICAgYW5jaG9yLnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSk7XG4gICAgYW5jaG9yLnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24gPSAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWRkT3Blbkxpc3RlbmVyc1RvUm9vdCA9ICgpID0+IHtcbiAgICBpZiAoIXJvb3QudmFsdWUpIHJldHVybjtcbiAgICByb290LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljaywgdHJ1ZSk7XG4gICAgcm9vdC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duKTtcbiAgfTtcblxuICBjb25zdCByZW1vdmVPcGVuTGlzdGVuZXJzRnJvbVJvb3QgPSAoKSA9PiB7XG4gICAgaWYgKCFyb290LnZhbHVlKSByZXR1cm47XG4gICAgcm9vdC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2ssIHRydWUpO1xuICAgIHJvb3QudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93bik7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlQW5jaG9yRWxlbWVudCA9ICgpID0+IHtcbiAgICBhbmNob3IudmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwcm9wcy5hbmNob3JJZCk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gaXNUb2dnbGVkT3Blbi52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICBhZGRPcGVuTGlzdGVuZXJzVG9Sb290KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZW1vdmVPcGVuTGlzdGVuZXJzRnJvbVJvb3QoKTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuYW5jaG9ySWQsXG4gICAgKCkgPT4ge1xuICAgICAgcmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQoKTtcbiAgICAgIHVwZGF0ZUFuY2hvckVsZW1lbnQoKTtcbiAgICAgIGFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCgpO1xuICAgIH1cbiAgKTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgbWlkZGxld2FyZS52YWx1ZSA9IFthdXRvUGxhY2VtZW50KCksIG9mZnNldE1pZGRsZXdhcmUoeyBtYWluQXhpczogcHJvcHMub2Zmc2V0IH0pLCBzaGlmdCh7IHBhZGRpbmc6IDE2IH0pXTtcbiAgfSk7XG5cbiAgb25CZWZvcmVNb3VudCgoKSA9PiB7XG4gICAgaW5pdEZhdXhUb3BMYXllcigpO1xuICB9KTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIHVwZGF0ZUFuY2hvckVsZW1lbnQoKTtcbiAgICByb290LnZhbHVlID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIGFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCgpO1xuICB9KTtcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgcmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQoKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8VGVsZXBvcnQgOnRvPVwiYCMke1RPUF9MQVlFUl9JRH1gXCI+XG4gICAgPFRyYW5zaXRpb24+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1wb3BvdmVyJyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMixcbiAgICAgICAgICBDU1MuUEFERElORy5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuU0hBRE9XLkJPVFRPTSxcbiAgICAgICAgXVwiXG4gICAgICAgIHJlZj1cImZsb2F0aW5nXCJcbiAgICAgICAgOnN0eWxlPVwieyAuLi5mbG9hdGluZ1N0eWxlcywgbWF4V2lkdGg6IGBjYWxjKDEwMCUgLSAke3Byb3BzLm9mZnNldCAqIDJ9cHgpYCB9XCJcbiAgICAgICAgdi1zaG93PVwiaXNTaG93UG9wb3ZlclwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L1RyYW5zaXRpb24+XG4gIDwvVGVsZXBvcnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudi1lbnRlci1mcm9tLFxuICAudi1sZWF2ZS10byB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICAudi1lbnRlci1hY3RpdmUsXG4gIC52LWxlYXZlLWFjdGl2ZSB7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG4gIC52LWVudGVyLXRvLFxuICAudi1sZWF2ZS1mcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpc0FjdGl2ZT86IGJvb2xlYW47XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaXNBY3RpdmU6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2UnXSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKCFwcm9wcy5kaXNhYmxlZCkge1xuICAgICAgZW1pdCgnY2hhbmdlJyk7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLXN3aXRjaCcsXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/ICdhY3RpdmUnIDogJycsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgcHJvcHMuaXNBY3RpdmUgPyAnJyA6IENTUy5CT1JERVIuQ09MT1IuREVGQVVMVCxcbiAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/IENTUy5CRy5TRUNPTkRBUlkgOiBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgIF1cIlxuICAgIDpkaXNhYmxlZD1cInByb3BzLmRpc2FibGVkXCJcbiAgICBAY2xpY2s9XCJoYW5kbGVDbGlja1wiXG4gICAgYXJpYS1sYWJlbD1cIlN3aXRjaFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLXN3aXRjaC1pbmRpY2F0b3InLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIHByb3BzLmlzQWN0aXZlID8gQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCA6IENTUy5CRy5TRUNPTkRBUlksXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJJQ09OLkNIRUNLXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtc3dpdGNoIHtcbiAgICB3aWR0aDogNjRweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjMyO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLmFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXNlY29uZGFyeSk7XG4gIH1cblxuICAudGlkZS1zd2l0Y2guYWN0aXZlIC50aWRlLXN3aXRjaC1pbmRpY2F0b3Ige1xuICAgIGxlZnQ6IDM2cHg7XG4gIH1cblxuICAudGlkZS1zd2l0Y2gtaW5kaWNhdG9yIHtcbiAgICBsZWZ0OiA0cHg7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBsZWZ0LCBib3JkZXItY29sb3IsIGJhY2tncm91bmQtY29sb3I7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBmb3JtYXROdW1iZXIsIGZvcm1hdFBob25lLCBmb3JtYXRQcmljZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmV4cG9ydCB0eXBlIEZvcm1hdHRlZCA9IHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfCBudW1iZXI7XG59O1xuXG5leHBvcnQgY29uc3QgRk9STUFUID0ge1xuICBOVU1CRVI6IGZvcm1hdE51bWJlcixcbiAgUEhPTkU6IGZvcm1hdFBob25lLFxuICBQUklDRTogZm9ybWF0UHJpY2UsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRk9STUFUX1JFR0VYID0ge1xuICBhbHBoYTogL15bYS16QS1aXSskL2csXG4gIGFscGhhTnVtYmVyT3JFbXB0eTogL14kfF5bYS16MC05XSskL2ksXG4gIGFscGhhU3BhY2U6IC9eW2EtekEtWiBdKyQvZyxcbiAgZW1haWw6XG4gICAgL14oKFtePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXF0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvLFxuICBudW1iZXJGb3JtYXR0ZWQ6IC9eJHwoPz0uKV5cXCQ/KChbMS05XVswLTldezAsMn0oLFswLTldezN9KSopfDApPyhcXC5bMC05XXsxLDJ9KT8kLyxcbiAgcGhvbmU6IC9eKD86XFxkezN9LVxcZHszfS1cXGR7NH18XFxkezF9LVxcZHszfS1cXGR7M30tXFxkezR9KT8kLyxcbiAgcHJpY2U6IC8oPz0uKV5cXCQ/KChbMS05XVswLTldezAsMn0oLFswLTldezN9KSopfDApPyhcXC5bMC05XXsxLDJ9KT8kLyxcbn07XG4iLCIvKipcbiAqIFRoZXNlIHNsaWRlcyBhcmUgdXNlZCBpbiBib3RoIHRoZSBpbmxpbmUgZGV0YWlsIHBhZ2UgcGhvdG8gc2xpZGVyXG4gKiBhbmQgdGhlIGZ1bGxzY3JlZW4gbWVkaWEgZ2FsbGVyeS5cbiAqL1xuXG5leHBvcnQgY29uc3QgTUVESUFfU0xJREVfVFlQRVMgPSB7XG4gIElNQUdFOiB7XG4gICAgRkxPT1JQTEFOOiAnZmxvb3JwbGFuJyxcbiAgICBJTUFHRTogJ2ltYWdlJyxcbiAgfSxcbiAgVklERU86ICd2aWRlbycsXG4gIFZSOiAndnInLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgTWVkaWFTbGlkZVR5cGUgPVxuICB8ICh0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuSU1BR0UpW2tleW9mIHR5cGVvZiBNRURJQV9TTElERV9UWVBFUy5JTUFHRV1cbiAgfCB0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuVklERU9cbiAgfCB0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuVlI7XG5cbmV4cG9ydCB0eXBlIEltYWdlU2xpZGVUeXBlID0gKHR5cGVvZiBNRURJQV9TTElERV9UWVBFUy5JTUFHRSlba2V5b2YgdHlwZW9mIE1FRElBX1NMSURFX1RZUEVTLklNQUdFXTtcblxudHlwZSBJbWFnZVNsaWRlID0ge1xuICBpbWFnZVVybDogc3RyaW5nO1xuICB0eXBlOiBJbWFnZVNsaWRlVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIFZpZGVvU2xpZGVUeXBlID0gdHlwZW9mIE1FRElBX1NMSURFX1RZUEVTLlZJREVPO1xuXG50eXBlIFZpZGVvU2xpZGUgPSB7XG4gIGltYWdlVXJsOiBzdHJpbmc7XG4gIHR5cGU6IFZpZGVvU2xpZGVUeXBlO1xuICB2aWRlb1VybDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVnJTbGlkZVR5cGUgPSB0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuVlI7XG5cbnR5cGUgVnJTbGlkZSA9IHtcbiAgaW1hZ2VVcmw6IHN0cmluZztcbiAgdHlwZTogVnJTbGlkZVR5cGU7XG4gIHZyVXJsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBMaXN0aW5nTWVkaWEgPSBJbWFnZVNsaWRlIHwgVmlkZW9TbGlkZSB8IFZyU2xpZGU7XG4iLCJpbXBvcnQgeyBGT1JNQVRfUkVHRVggfSBmcm9tICdAL3R5cGVzL0Zvcm1hdHRlZCc7XG5pbXBvcnQgeyBjaGVja0Zvcm1hdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG5leHBvcnQgY29uc3QgVkFMSURBVE9SID0ge1xuICBBTFBIQV9OVU1CRVJfRU1QVFk6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5hbHBoYU51bWJlck9yRW1wdHkpLFxuICBBTFBIQV9TUEFDRTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmFscGhhU3BhY2UpLFxuICBFTUFJTDogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmVtYWlsKSxcbiAgTlVNQkVSOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVgubnVtYmVyRm9ybWF0dGVkKSxcbiAgUEhPTkU6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5waG9uZSksXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uRXJyb3IgPSBzdHJpbmcgfCBib29sZWFuO1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblJlc3VsdCA9IHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB2YWxpZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25MZW5ndGggPSB7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHZhbHVlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0b3IgPSAodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdDtcbiJdLCJuYW1lcyI6WyJPUklFTlRBVElPTiIsIkNTUyIsInV0aWxpdGllcyIsImJyZWFrcG9pbnQiLCJ1dGlsaXR5IiwiUkVBTE0iLCJTSVpFIiwiU0laRV9CVVRUT04iLCJmb3JtYXROdW1iZXIiLCJpbnB1dCIsIm91dHB1dCIsImRpZ2l0cyIsImZvcm1hdFBhc2NhbENhc2UiLCJ3b3JkIiwiZm9ybWF0UGhvbmUiLCJmb3JtYXRQcmljZSIsImlubmVyU1ZHIiwicmVmIiwid2F0Y2giLCJwcm9wcyIsImlkIiwibmFtZSIsInByZWZpeCIsInJlYWxtRm9sZGVyIiwiY29tcG9uZW50IiwiZGVmaW5lQXN5bmNDb21wb25lbnQiLCJfX3ZhcmlhYmxlRHluYW1pY0ltcG9ydFJ1bnRpbWVIZWxwZXIiLCJtYXJrUmF3IiwiSUNPTiIsIklDT05fUkVBTE0iLCJoYW5kbGVUb2dnbGVDbGljayIsImVtaXQiLCJFTEVNRU5UIiwiRUxFTUVOVF9URVhUX0FTX0lDT04iLCJQUklPUklUWSIsIlRBUkdFVCIsIkFMRVJUIiwiaWNvbiIsImNvbXB1dGVkIiwiaW1hZ2VEZWZhdWx0IiwicGljdHVyZSIsImltZyIsInNldEltYWdlRnJvbURlZmF1bHQiLCJjdXJyZW50U3JjIiwiX2EiLCJwaWN0dXJlU291cmNlIiwiX2IiLCJCQURHRV9UUlVTVEVEIiwiaGFuZGxlQ2xpY2siLCJpbmRleCIsIlRZUEVfQ0FSRCIsImNvbnRlbnRSZWYiLCJmcmFtZVJlZiIsImNvbnRlbnRSaWdodEVkZ2UiLCJjb250ZW50V2lkdGgiLCJjdXJyZW50U2xpZGUiLCJmcmFtZVdpZHRoIiwiaGFzT3ZlcmZsb3ciLCJpc0xhc3RTbGlkZSIsImxhc3RQb3NpdGlvbiIsInNob3dCdXR0b25zIiwibWVhc3VyZUN1cnJlbnRTbGlkZSIsInNsaWRlT2Zmc2V0cyIsInNsaWRlIiwiY2xvc2VzdFNsaWRlT2Zmc2V0IiwicHJldiIsImN1cnIiLCJtZWFzdXJlRG9tIiwiaGFuZGxlU2Nyb2xsIiwic2Nyb2xsVG9TbGlkZSIsInNsaWRlSW5kZXgiLCJzaG93TmV4dFNsaWRlIiwic2hvd1ByZXZpb3VzU2xpZGUiLCJvbk1vdW50ZWQiLCJvblVubW91bnRlZCIsIm9uVXBkYXRlZCIsImlzQ2hlY2tlZCIsImNoZWNrZWQiLCJuZXdWYWx1ZSIsIm9sZFZhbHVlIiwiZXJyb3JNZXNzYWdlRGVmYXVsdCIsIm5vRXJyb3IiLCJjaGVja0Zvcm1hdCIsImZvcm1hdCIsInZhbHVlIiwicmVzdWx0IiwiZ2V0RXJyb3JNZXNzYWdlIiwiZXJyb3JGcm9tUHJvcHMiLCJlcnJvckZyb21SZWYiLCJnZXRGaWVsZEhhc0Vycm9yIiwiZ2V0RmllbGRMZW5ndGhJc1ZhbGlkIiwibWF4bGVuZ3RoIiwibWlubGVuZ3RoIiwicmVxdWlyZWQiLCJpc0VtcHR5QW5kVW5yZXF1aXJlZCIsImlzVG9vTG9uZyIsImhhbmRsZUZpZWxkVmFsaWRhdGlvbiIsImVycm9yIiwidmFsaWRhdG9ycyIsInZhbGlkYXRpb24iLCJ2YWxpZGF0ZVByb3BlcnR5IiwibGVuZ3RoVmFsaWRhdGlvbiIsInZhbGlkYXRlTGVuZ3RoIiwicmVzcG9uc2UiLCJ2YWxpZGF0b3IiLCJoYXNGb2N1cyIsImVycm9yTWVzc2FnZSIsImZvcm1hdHRlZExhYmVsIiwiaGFzRXJyb3IiLCJoYXNNaW5pbGFiZWwiLCJpc0VtcHR5IiwiZXhwYW5kT3B0aW9ucyIsImV2ZW50IiwiaGFuZGxlRm9jdXMiLCJoYW5kbGVGb2N1c091dCIsIl9fZXhwb3NlIiwiVEVYVF9JTlBVVF9UWVBFIiwic2hvd1Bhc3N3b3JkIiwiaGFzQ2xlYXIiLCJ0eXBlIiwiaGFuZGxlQ2xlYXIiLCJoYW5kbGVWYWxpZGF0aW9uIiwiaGFuZGxlSW5wdXQiLCJ1cGRhdGVWYWx1ZSIsIkJSRUFLUE9JTlQiLCJNRURJQSIsInNldFNjcm9sbExvY2siLCJpc0xvY2tlZCIsIkJPRFlfTE9DS19DTEFTUyIsImJvZHkiLCJzY3JvbGxZIiwibmV4dFRpY2siLCJzYXZlZFNjcm9sbFkiLCJUT1BfTEFZRVJfSUQiLCJpbml0RmF1eFRvcExheWVyIiwidG9wTGF5ZXIiLCJtb2RhbENvbnRlbnQiLCJtb2RhbERpYWxvZyIsInRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuIiwidHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlIiwic2Nyb2xsQ29udGVudFRvVG9wIiwicGFnZUN1cnJlbnQiLCJwYWdpbmF0aW9uQnV0dG9ucyIsImVtcHR5Iiwic2lkZXMiLCJhbGlnbm1lbnRzIiwicGxhY2VtZW50cyIsImFjYyIsInNpZGUiLCJtaW4iLCJtYXgiLCJyb3VuZCIsImZsb29yIiwiY3JlYXRlQ29vcmRzIiwidiIsIm9wcG9zaXRlU2lkZU1hcCIsIm9wcG9zaXRlQWxpZ25tZW50TWFwIiwiY2xhbXAiLCJzdGFydCIsImVuZCIsImV2YWx1YXRlIiwicGFyYW0iLCJnZXRTaWRlIiwicGxhY2VtZW50IiwiZ2V0QWxpZ25tZW50IiwiZ2V0T3Bwb3NpdGVBeGlzIiwiYXhpcyIsImdldEF4aXNMZW5ndGgiLCJnZXRTaWRlQXhpcyIsImdldEFsaWdubWVudEF4aXMiLCJnZXRBbGlnbm1lbnRTaWRlcyIsInJlY3RzIiwicnRsIiwiYWxpZ25tZW50IiwiYWxpZ25tZW50QXhpcyIsImxlbmd0aCIsIm1haW5BbGlnbm1lbnRTaWRlIiwiZ2V0T3Bwb3NpdGVQbGFjZW1lbnQiLCJnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCIsImV4cGFuZFBhZGRpbmdPYmplY3QiLCJwYWRkaW5nIiwiZ2V0UGFkZGluZ09iamVjdCIsInJlY3RUb0NsaWVudFJlY3QiLCJyZWN0IiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsImNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50IiwiX3JlZiIsInJlZmVyZW5jZSIsImZsb2F0aW5nIiwic2lkZUF4aXMiLCJhbGlnbkxlbmd0aCIsImlzVmVydGljYWwiLCJjb21tb25YIiwiY29tbW9uWSIsImNvbW1vbkFsaWduIiwiY29vcmRzIiwiY29tcHV0ZVBvc2l0aW9uIiwiY29uZmlnIiwic3RyYXRlZ3kiLCJtaWRkbGV3YXJlIiwicGxhdGZvcm0iLCJ2YWxpZE1pZGRsZXdhcmUiLCJzdGF0ZWZ1bFBsYWNlbWVudCIsIm1pZGRsZXdhcmVEYXRhIiwicmVzZXRDb3VudCIsImkiLCJmbiIsIm5leHRYIiwibmV4dFkiLCJkYXRhIiwicmVzZXQiLCJkZXRlY3RPdmVyZmxvdyIsInN0YXRlIiwib3B0aW9ucyIsIl9hd2FpdCRwbGF0Zm9ybSRpc0VsZSIsImVsZW1lbnRzIiwiYm91bmRhcnkiLCJyb290Qm91bmRhcnkiLCJlbGVtZW50Q29udGV4dCIsImFsdEJvdW5kYXJ5IiwicGFkZGluZ09iamVjdCIsImVsZW1lbnQiLCJjbGlwcGluZ0NsaWVudFJlY3QiLCJvZmZzZXRQYXJlbnQiLCJvZmZzZXRTY2FsZSIsImVsZW1lbnRDbGllbnRSZWN0IiwiZ2V0UGxhY2VtZW50TGlzdCIsImF1dG9BbGlnbm1lbnQiLCJhbGxvd2VkUGxhY2VtZW50cyIsImF1dG9QbGFjZW1lbnQiLCJfbWlkZGxld2FyZURhdGEkYXV0b1AiLCJfbWlkZGxld2FyZURhdGEkYXV0b1AyIiwiX3BsYWNlbWVudHNUaGF0Rml0T25FIiwiY3Jvc3NBeGlzIiwiZGV0ZWN0T3ZlcmZsb3dPcHRpb25zIiwicGxhY2VtZW50cyQxIiwib3ZlcmZsb3ciLCJjdXJyZW50SW5kZXgiLCJjdXJyZW50UGxhY2VtZW50IiwiYWxpZ25tZW50U2lkZXMiLCJjdXJyZW50T3ZlcmZsb3dzIiwiYWxsT3ZlcmZsb3dzIiwibmV4dFBsYWNlbWVudCIsInBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZSIsImQiLCJhIiwiYiIsInJlc2V0UGxhY2VtZW50IiwiY29udmVydFZhbHVlVG9Db29yZHMiLCJtYWluQXhpc011bHRpIiwiY3Jvc3NBeGlzTXVsdGkiLCJyYXdWYWx1ZSIsIm1haW5BeGlzIiwib2Zmc2V0IiwiX21pZGRsZXdhcmVEYXRhJG9mZnNlIiwiX21pZGRsZXdhcmVEYXRhJGFycm93IiwiZGlmZkNvb3JkcyIsInNoaWZ0IiwiY2hlY2tNYWluQXhpcyIsImNoZWNrQ3Jvc3NBeGlzIiwibGltaXRlciIsIm1haW5BeGlzQ29vcmQiLCJjcm9zc0F4aXNDb29yZCIsIm1pblNpZGUiLCJtYXhTaWRlIiwibGltaXRlZENvb3JkcyIsImhhc1dpbmRvdyIsImdldE5vZGVOYW1lIiwibm9kZSIsImlzTm9kZSIsImdldFdpbmRvdyIsIl9ub2RlJG93bmVyRG9jdW1lbnQiLCJnZXREb2N1bWVudEVsZW1lbnQiLCJpc0VsZW1lbnQiLCJpc0hUTUxFbGVtZW50IiwiaXNTaGFkb3dSb290IiwiaXNPdmVyZmxvd0VsZW1lbnQiLCJvdmVyZmxvd1giLCJvdmVyZmxvd1kiLCJkaXNwbGF5IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImlzVGFibGVFbGVtZW50IiwiaXNUb3BMYXllciIsInNlbGVjdG9yIiwiaXNDb250YWluaW5nQmxvY2siLCJlbGVtZW50T3JDc3MiLCJ3ZWJraXQiLCJpc1dlYktpdCIsImNzcyIsImdldENvbnRhaW5pbmdCbG9jayIsImN1cnJlbnROb2RlIiwiZ2V0UGFyZW50Tm9kZSIsImlzTGFzdFRyYXZlcnNhYmxlTm9kZSIsImdldE5vZGVTY3JvbGwiLCJnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvciIsInBhcmVudE5vZGUiLCJnZXRPdmVyZmxvd0FuY2VzdG9ycyIsImxpc3QiLCJ0cmF2ZXJzZUlmcmFtZXMiLCJfbm9kZSRvd25lckRvY3VtZW50MiIsInNjcm9sbGFibGVBbmNlc3RvciIsImlzQm9keSIsIndpbiIsImZyYW1lRWxlbWVudCIsImdldEZyYW1lRWxlbWVudCIsImdldENzc0RpbWVuc2lvbnMiLCJoYXNPZmZzZXQiLCJvZmZzZXRXaWR0aCIsIm9mZnNldEhlaWdodCIsInNob3VsZEZhbGxiYWNrIiwidW53cmFwRWxlbWVudCIsImdldFNjYWxlIiwiZG9tRWxlbWVudCIsIiQiLCJub09mZnNldHMiLCJnZXRWaXN1YWxPZmZzZXRzIiwic2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyIsImlzRml4ZWQiLCJmbG9hdGluZ09mZnNldFBhcmVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImluY2x1ZGVTY2FsZSIsImlzRml4ZWRTdHJhdGVneSIsImNsaWVudFJlY3QiLCJzY2FsZSIsInZpc3VhbE9mZnNldHMiLCJvZmZzZXRXaW4iLCJjdXJyZW50V2luIiwiY3VycmVudElGcmFtZSIsImlmcmFtZVNjYWxlIiwiaWZyYW1lUmVjdCIsImxlZnQiLCJ0b3AiLCJnZXRXaW5kb3dTY3JvbGxCYXJYIiwibGVmdFNjcm9sbCIsImdldEhUTUxPZmZzZXQiLCJkb2N1bWVudEVsZW1lbnQiLCJzY3JvbGwiLCJpZ25vcmVTY3JvbGxiYXJYIiwiaHRtbFJlY3QiLCJjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCIsIm9mZnNldHMiLCJpc09mZnNldFBhcmVudEFuRWxlbWVudCIsIm9mZnNldFJlY3QiLCJodG1sT2Zmc2V0IiwiZ2V0Q2xpZW50UmVjdHMiLCJnZXREb2N1bWVudFJlY3QiLCJodG1sIiwiZ2V0Vmlld3BvcnRSZWN0IiwidmlzdWFsVmlld3BvcnQiLCJ2aXN1YWxWaWV3cG9ydEJhc2VkIiwiZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QiLCJnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IiLCJjbGlwcGluZ0FuY2VzdG9yIiwiaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yIiwic3RvcE5vZGUiLCJnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMiLCJjYWNoZSIsImNhY2hlZFJlc3VsdCIsImVsIiwiY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUiLCJlbGVtZW50SXNGaXhlZCIsImNvbXB1dGVkU3R5bGUiLCJjdXJyZW50Tm9kZUlzQ29udGFpbmluZyIsImFuY2VzdG9yIiwiZ2V0Q2xpcHBpbmdSZWN0IiwiY2xpcHBpbmdBbmNlc3RvcnMiLCJmaXJzdENsaXBwaW5nQW5jZXN0b3IiLCJjbGlwcGluZ1JlY3QiLCJhY2NSZWN0IiwiZ2V0RGltZW5zaW9ucyIsImdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50IiwiaXNTdGF0aWNQb3NpdGlvbmVkIiwiZ2V0VHJ1ZU9mZnNldFBhcmVudCIsInBvbHlmaWxsIiwicmF3T2Zmc2V0UGFyZW50IiwiZ2V0T2Zmc2V0UGFyZW50Iiwic3ZnT2Zmc2V0UGFyZW50IiwiZ2V0RWxlbWVudFJlY3RzIiwiZ2V0T2Zmc2V0UGFyZW50Rm4iLCJnZXREaW1lbnNpb25zRm4iLCJmbG9hdGluZ0RpbWVuc2lvbnMiLCJpc1JUTCIsInJlY3RzQXJlRXF1YWwiLCJvYnNlcnZlTW92ZSIsIm9uTW92ZSIsImlvIiwidGltZW91dElkIiwicm9vdCIsImNsZWFudXAiLCJfaW8iLCJyZWZyZXNoIiwic2tpcCIsInRocmVzaG9sZCIsImVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbiIsImluc2V0VG9wIiwiaW5zZXRSaWdodCIsImluc2V0Qm90dG9tIiwiaW5zZXRMZWZ0IiwiaXNGaXJzdFVwZGF0ZSIsImhhbmRsZU9ic2VydmUiLCJlbnRyaWVzIiwicmF0aW8iLCJhdXRvVXBkYXRlIiwidXBkYXRlIiwiYW5jZXN0b3JTY3JvbGwiLCJhbmNlc3RvclJlc2l6ZSIsImVsZW1lbnRSZXNpemUiLCJsYXlvdXRTaGlmdCIsImFuaW1hdGlvbkZyYW1lIiwicmVmZXJlbmNlRWwiLCJhbmNlc3RvcnMiLCJjbGVhbnVwSW8iLCJyZW9ic2VydmVGcmFtZSIsInJlc2l6ZU9ic2VydmVyIiwiZmlyc3RFbnRyeSIsIl9yZXNpemVPYnNlcnZlciIsImZyYW1lSWQiLCJwcmV2UmVmUmVjdCIsImZyYW1lTG9vcCIsIm5leHRSZWZSZWN0IiwiX3Jlc2l6ZU9ic2VydmVyMiIsIm9mZnNldCQxIiwiYXV0b1BsYWNlbWVudCQxIiwic2hpZnQkMSIsIm1lcmdlZE9wdGlvbnMiLCJwbGF0Zm9ybVdpdGhDYWNoZSIsImNvbXB1dGVQb3NpdGlvbiQxIiwiaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSIsInRhcmdldCIsInRvVmFsdWUiLCJzb3VyY2UiLCJ1bnJlZiIsImdldERQUiIsInJvdW5kQnlEUFIiLCJkcHIiLCJ1c2VGbG9hdGluZyIsIndoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uIiwib3Blbk9wdGlvbiIsIl90b1ZhbHVlIiwibWlkZGxld2FyZU9wdGlvbiIsInBsYWNlbWVudE9wdGlvbiIsIl90b1ZhbHVlMiIsInN0cmF0ZWd5T3B0aW9uIiwiX3RvVmFsdWUzIiwidHJhbnNmb3JtT3B0aW9uIiwiX3RvVmFsdWU0IiwicmVmZXJlbmNlRWxlbWVudCIsImZsb2F0aW5nRWxlbWVudCIsInNoYWxsb3dSZWYiLCJpc1Bvc2l0aW9uZWQiLCJmbG9hdGluZ1N0eWxlcyIsImluaXRpYWxTdHlsZXMiLCJ4VmFsIiwieVZhbCIsIndoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCIsIm9wZW4iLCJwb3NpdGlvbiIsImF0dGFjaCIsImdldEN1cnJlbnRTY29wZSIsIm9uU2NvcGVEaXNwb3NlIiwic2hhbGxvd1JlYWRvbmx5IiwiaXNDbGlja091dHNpZGUiLCJhbmNob3IiLCJpc0hvdmVyZWQiLCJpc1RvZ2dsZWRPcGVuIiwib2Zmc2V0TWlkZGxld2FyZSIsImlzU2hvd1BvcG92ZXIiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrIiwiZSIsImhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIiLCJoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSIsImhhbmRsZUFuY2hvckVsZW1lbnRDbGljayIsImFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCIsInJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50IiwiaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duIiwiYWRkT3Blbkxpc3RlbmVyc1RvUm9vdCIsInJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCIsInVwZGF0ZUFuY2hvckVsZW1lbnQiLCJ3YXRjaEVmZmVjdCIsIm9uQmVmb3JlTW91bnQiLCJGT1JNQVQiLCJGT1JNQVRfUkVHRVgiLCJNRURJQV9TTElERV9UWVBFUyIsIlZBTElEQVRPUiJdLCJtYXBwaW5ncyI6InVHQUFhQSxHQUFjLENBQ3pCLFdBQVksYUFDWixTQUFVLFVBQ1osRUNDYUMsRUFBTSxDQUNqQixlQUFnQixDQUFDQyxFQUFxQkMsSUFDN0JELEVBQVUsSUFBS0UsR0FBWSxHQUFHRCxDQUFVLElBQUlDLENBQU8sRUFBRSxFQUU5RCxNQUFPLENBQ0wsRUFBRyxDQUNELE9BQVEsbUJBQ1IsS0FBTSxpQkFDTixNQUFPLGlCQUNULEVBQ0EsRUFBRyxDQUNELFFBQVMscUJBQ1QsT0FBUSxtQkFDVixDQUNGLEVBQ0EsTUFBTyxDQUNMLE9BQVEsb0JBQ1IsUUFBUyxxQkFDVCxPQUFRLG9CQUNSLElBQUssaUJBQ0wsTUFBTyxrQkFDVCxFQUNBLE1BQU8sQ0FDTCxPQUFRLG9CQUNSLE9BQVEsb0JBQ1IsSUFBSyxpQkFDTCxNQUFPLGtCQUNULEVBQ0EsR0FBSSxD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QUksT0FBTyxFQUFFLFFBQ2JBLEVBQUksT0FBTyxFQUFFLElBQ2JBLEVBQUksT0FBTyxFQUFFLEtBQ2JBLEVBQUksT0FBTyxJQUFJLEtBQ2ZBLEVBQUksT0FBTyxJQUFJLElBQ2ZBLEVBQUksT0FBTyxJQUFJLEtBQ2ZBLEVBQUksT0FBTyxJQUFJLFFBQ2ZBLEVBQUksT0FBTyxJQUFJLElBQ2ZBLEVBQUksT0FBTyxJQUFJLEtBQ2ZBLEVBQUksT0FBTyxFQUFFLEtBQ2JBLEVBQUksT0FBTyxFQUFFLElBQ2JBLEVBQUksT0FBTyxFQUFFLEtBQ2JBLEVBQUksT0FBTyxFQUFFLFFBQ2JBLEVBQUksT0FBTyxFQUFFLElBQ2JBLEVBQUksT0FBTyxFQUFFLEtBQ2JBLEVBQUksT0FBTyxFQUFFLEtBQ2JBLEVBQUksT0FBTyxNQUFNLEtBQ2pCQSxFQUFJLE9BQU8sTUFBTSxJQUNqQkEsRUFBSSxPQUFPLE1BQU0sS0FDakJBLEVBQUksT0FBTyxNQUFNLFFBQ2pCQSxFQUFJLE9BQU8sTUFBTSxJQUNqQkEsRUFBSSxPQUFPLE1BQU0sS0FDakJBLEVBQUksT0FBTyxNQUFNLEtBQ2pCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sSUFDbEJBLEVBQUksT0FBTyxPQUFPLEtBQ2xCQSxFQUFJLE9BQU8sT0FBTyxRQUNsQkEsRUFBSSxPQUFPLE9BQU8sSUFDbEJBLEVBQUksT0FBTyxPQUFPLEtBQ2xCQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLEtBQUssSUFDaEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxRQUNoQkEsRUFBSSxPQUFPLEtBQUssSUFDaEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLEtBQUssSUFDaEJBLEVBQUksT0FBTyxLQUFLLElBQ2hCQSxFQUFJLE9BQU8sSUFBSSxJQUNmQSxFQUFJLE9BQU8sSUFBSSxJQUNmQSxFQUFJLE9BQU8sTUFBTSxJQUNqQkEsRUFBSSxPQUFPLE1BQU0sSUFDakJBLEVBQUksT0FBTyxPQUFPLElBQ2xCQSxFQUFJLE9BQU8sT0FBTyxJQUNsQkEsRUFBSSxPQUFPLEtBQUssSUFDaEJBLEVBQUksT0FBTyxLQUFLLElBQ2hCQSxFQUFJLE9BQU8sT0FBTyxJQUNsQkEsRUFBSSxPQUFPLE9BQU8sS0FDbEJBLEVBQUksT0FBTyxPQUFPLFFBQ2xCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVBQUksUUFBUSxLQUFLLElBQ2pCQSxFQUFJLFFBQVEsS0FBSyxLQUNqQkEsRUFBSSxRQUFRLEtBQUssUUFDakJBLEVBQUksUUFBUSxLQUFLLElBQ2pCQSxFQUFJLFFBQVEsS0FBSyxLQUNqQkEsRUFBSSxRQUFRLEVBQUUsS0FDZEEsRUFBSSxRQUFRLEVBQUUsSUFDZEEsRUFBSSxRQUFRLEVBQUUsS0FDZEEsRUFBSSxRQUFRLEVBQUUsUUFDZEEsRUFBSSxRQUFRLEVBQUUsSUFDZEEsRUFBSSxRQUFRLEVBQUUsS0FDZEEsRUFBSSxRQUFRLElBQUksS0FDaEJBLEVBQUksUUFBUSxJQUFJLElBQ2hCQSxFQUFJLFFBQVEsSUFBSSxLQUNoQkEsRUFBSSxRQUFRLElBQUksUUFDaEJBLEVBQUksUUFBUSxJQUFJLElBQ2hCQSxFQUFJLFFBQVEsSUFBSSxLQUNoQkEsRUFBSSxRQUFRLEVBQUUsS0FDZEEsRUFBSSxRQUFRLEVBQUUsSUFDZEEsRUFBSSxRQUFRLEVBQUUsS0FDZEEsRUFBSSxRQUFRLEVBQUUsUUFDZEEsRUFBSSxRQUFRLEVBQUUsSUFDZEEsRUFBSSxRQUFRLEVBQUUsS0FDZEEsRUFBSSxRQUFRLE1BQU0sS0FDbEJBLEVBQUksUUFBUSxNQUFNLElBQ2xCQSxFQUFJLFFBQVEsTUFBTSxLQUNsQkEsRUFBSSxRQUFRLE1BQU0sUUFDbEJBLEVBQUksUUFBUSxNQUFNLElBQ2xCQSxFQUFJLFFBQVEsTUFBTSxLQUNsQkEsRUFBSSxRQUFRLE9BQU8sS0FDbkJBLEVBQUksUUFBUSxPQUFPLElBQ25CQSxFQUFJLFFBQVEsT0FBTyxLQUNuQkEsRUFBSSxR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QUFBLFFBQUEsbUNBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLGtDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsd0JBQUEsR0FBQSw0Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGtDQUFBLENBQUEsRUFBQSw2Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLG1DQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSx3Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDhCQUFBLENBQUEsRUFBQSx5Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLCtCQUFBLENBQUEsRUFBQSwyQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGlDQUFBLENBQUEsRUFBQSx5Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLCtCQUFBLENBQUEsRUFBQSx5Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLCtCQUFBLENBQUEsRUFBQSwwQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGdDQUFBLENBQUEsRUFBQSx3Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDhCQUFBLENBQUEsRUFBQSx3Q0FBQSxJQUFBLG1DQUFBLDhCQUFBLENBQUEsRUFBQSxrQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHdCQUFBLENBQUEsRUFBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSx3Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDhCQUFBLENBQUEsRUFBQSw0Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGtDQUFBLENBQUEsRUFBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLEdBQUEsMENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxnQ0FBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsMENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxnQ0FBQSxDQUFBLEVBQUEsMkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxpQ0FBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsaURBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx1Q0FBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxtQ0FBQSwyQkFBQSxDQUFBLEVBQUEsc0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw0QkFBQSxDQUFBLEVBQUEsNkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxtQ0FBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxHQUFBLDBDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsZ0NBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLDRDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsa0NBQUEsQ0FBQSxFQUFBLHlDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsK0JBQUEsQ0FBQSxFQUFBLHlDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsK0JBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLDZDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsbUNBQUEsQ0FBQSxFQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsQ0FBQSxFQUFBLHlDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsK0JBQUEsQ0FBQSxFQUFBLDJDQUFBLElBQUEsbUNBQUEsaUNBQUEsQ0FBQSxFQUFBLGlEQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsdUNBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLGtDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsd0JBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLCtDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEscUNBQUEsR0FBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSx3Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDhCQUFBLENBQUEsRUFBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLENBQUEsRUFBQSx3Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDhCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLENBQUEsRUFBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLENBQUEsRUFBQSwwQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGdDQUFBLENBQUEsRUFBQSx5Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLCtCQUFBLENBQUEsRUFBQSx3Q0FBQSxJQUFBLG1DQUFBLDhCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSw0Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGtDQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSw0Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGtDQUFBLENBQUEsRUFBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLEdBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsNENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxrQ0FBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsc0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw0QkFBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsMkNBQUEsSUFBQSxtQ0FBQSxpQ0FBQSxDQUFBLEVBQUEsMENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxnQ0FBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxHQUFBLDJDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsaUNBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsQ0FBQSxFQUFBLDJDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsaUNBQUEsQ0FBQSxFQUFBLDBDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsZ0NBQUEsQ0FBQSxFQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsQ0FBQSxFQUFBLDRDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsa0NBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLHNDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNEJBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsQ0FBQSxFQUFBLHNDQUFBLElBQUEsbUNBQUEsNEJBQUEsQ0FBQSxFQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsQ0FBQSxFQUFBLHNDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNEJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLDBDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsZ0NBQUEsQ0FBQSxFQUFBLDJDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsaUNBQUEsR0FBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSxrQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHdCQUFBLENBQUEsRUFBQSx3Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDhCQUFBLENBQUEsRUFBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLENBQUEsRUFBQSx3Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDhCQUFBLENBQUEsRUFBQSx3Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDhCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSw2Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLG1DQUFBLENBQUEsRUFBQSxzQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDRCQUFBLENBQUEsRUFBQSwyQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGlDQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLG1DQUFBLDJCQUFBLENBQUEsRUFBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLENBQUEsRUFBQSxzQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDRCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLEdBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEseUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwrQkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsc0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw0QkFBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsK0NBQUEsSUFBQSxtQ0FBQSxxQ0FBQSxDQUFBLEVB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
|