raise-common-lib 0.0.225 → 0.0.227
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/bundles/raise-common-lib.umd.js +17 -17
- package/bundles/raise-common-lib.umd.js.map +1 -1
- package/bundles/raise-common-lib.umd.min.js +1 -1
- package/bundles/raise-common-lib.umd.min.js.map +1 -1
- package/esm2015/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +2 -2
- package/esm2015/lib/dashboard/dashboardPorlets.service.js +2 -2
- package/esm2015/lib/dashboard/dialog-group/download/index.component.js +2 -2
- package/esm2015/lib/dashboard/pane-group-new.component.js +3 -3
- package/esm2015/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +1 -1
- package/esm2015/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +3 -3
- package/esm2015/lib/layout/drawer/index.component.js +1 -1
- package/esm5/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +2 -2
- package/esm5/lib/dashboard/dashboardPorlets.service.js +2 -2
- package/esm5/lib/dashboard/dialog-group/download/index.component.js +2 -2
- package/esm5/lib/dashboard/pane-group-new.component.js +3 -3
- package/esm5/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +1 -1
- package/esm5/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +3 -3
- package/esm5/lib/layout/drawer/index.component.js +1 -1
- package/fesm2015/raise-common-lib.js +13 -14
- package/fesm2015/raise-common-lib.js.map +1 -1
- package/fesm5/raise-common-lib.js +13 -14
- package/fesm5/raise-common-lib.js.map +1 -1
- package/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.d.ts +1 -1
- package/lib/dashboard/dashboardPorlets.service.d.ts +1 -1
- package/lib/dashboard/dialog-group/download/index.component.d.ts +1 -1
- package/lib/dashboard/pane-group-new.component.d.ts +2 -1
- package/lib/dashboard/sidebar-iconlist/field-format/field-format.component.d.ts +1 -1
- package/package.json +1 -1
- package/raise-common-lib.metadata.json +1 -1
- package/src/assets/style/style.scss +5 -0
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import * as tslib_1 from "tslib";
|
|
7
7
|
import { Component, ViewChild, ChangeDetectorRef, Output, EventEmitter, ElementRef, ViewChildren, QueryList, HostListener, Input, Optional, Inject, } from "@angular/core";
|
|
8
|
-
import { MatDialog } from "@angular/material";
|
|
8
|
+
import { MatDialog } from "@angular/material/dialog";
|
|
9
9
|
import { ActivatedRoute, NavigationEnd, Router } from "@angular/router";
|
|
10
10
|
import { DashboardService } from "./dashboard.service";
|
|
11
11
|
import { ApiList } from "./api";
|
|
@@ -2682,7 +2682,7 @@ PaneGroupNewComponent.decorators = [
|
|
|
2682
2682
|
template: "<div id=\"kt-dashboard-container\" class=\"content-portlets\">\r\n <div\r\n *ngIf=\"\r\n dashboard &&\r\n (dashboard.title || dashboard.description) &&\r\n !haveFullScreen.length\r\n \"\r\n class=\"portlets-description\"\r\n >\r\n <h4 *ngIf=\"dashboard && dashboard.title && !haveFullScreen.length\">\r\n {{ dashboard ? dashboard.title : \"\" }}\r\n </h4>\r\n <p *ngIf=\"dashboard && dashboard.description && !haveFullScreen.length\">\r\n {{ dashboard ? dashboard.description : \"\" }}\r\n </p>\r\n </div>\r\n <div class=\"panes-list\" id=\"kt-dashboard-layout\" #panesList>\r\n <div style=\"width: 100%\">\r\n <ejs-dashboardlayout\r\n id=\"defaultLayout\"\r\n #defaultLayout\r\n [columns]=\"4\"\r\n [cellSpacing]=\"cellSpacing\"\r\n [cellAspectRatio]=\"cellAspectRatio\"\r\n [allowDragging]=\"customized\"\r\n [allowResizing]=\"customized\"\r\n [resizableHandles]=\"resizableHandles\"\r\n [draggableHandle]=\"draggableHandle\"\r\n [mediaQuery]=\"mediaQuery\"\r\n (resizeStop)=\"resizeStop($event)\"\r\n (dragStop)=\"dragStop($event)\"\r\n >\r\n <e-panels\r\n *ngIf=\"ActiveDashboardPortlets && ActiveDashboardPortlets.length\"\r\n >\r\n <e-panel\r\n *ngFor=\"let item of ActiveDashboardPortlets; let i = index\"\r\n [sizeX]=\"item.sizeX\"\r\n [id]=\"item.newId\"\r\n [sizeY]=\"item.sizeY\"\r\n [row]=\"item.row\"\r\n [col]=\"item.col\"\r\n >\r\n <ng-template #header>\r\n <div class=\"gadget-title\">\r\n {{ GetgadgetTitle(item.config) }}\r\n </div>\r\n <div class=\"gadgetBar pane-group-gadget\">\r\n <ul class=\"pane-gadget-container\">\r\n <li\r\n *ngIf=\"customized\"\r\n [matTooltip]=\"\r\n translation.DUPLICATE\r\n ? translation.DUPLICATE\r\n : '.DUPLICATE'\r\n \"\r\n (click)=\"copyPortlet(item)\"\r\n >\r\n <img\r\n src=\"../../assets/img/dashboard_icon/menu-duplicate.svg\"\r\n />\r\n </li>\r\n <li\r\n *ngIf=\"customized && rs.hasPermission('DELETE')\"\r\n [matTooltip]=\"\r\n translation.DELETE ? translation.DELETE : '.DELETE'\r\n \"\r\n (click)=\"delete(item)\"\r\n >\r\n <img\r\n src=\"../../assets/img/dashboard_icon/gadget-delete.svg\"\r\n />\r\n </li>\r\n <li\r\n *ngIf=\"getPortletType(item) !== 'transpose'\"\r\n [matTooltip]=\"\r\n translation.DOWNLOAD ? translation.DOWNLOAD : '.DOWNLOAD'\r\n \"\r\n >\r\n <img\r\n src=\"../../assets/img/dashboard_icon/menu-download.svg\"\r\n (click)=\"download(item)\"\r\n />\r\n </li>\r\n <li\r\n *ngIf=\"\r\n customized &&\r\n !['newcolumn', 'newline', 'newcolumnline'].includes(\r\n getPortletType(item)\r\n )\r\n \"\r\n [matTooltip]=\"\r\n translation.FILTER ? translation.FILTER : '.FILTER'\r\n \"\r\n >\r\n <img\r\n src=\"../../assets/img/dashboard_icon/gadget-filters.svg\"\r\n (click)=\"openFilter(item)\"\r\n />\r\n </li>\r\n\r\n <li\r\n #unclick\r\n *ngIf=\"customized && getPortletType(item) === 'pivot'\"\r\n style=\"margin-right: 18px\"\r\n >\r\n <img\r\n src=\"../../assets/img/dashboard_icon/gadget-basic-sub-total.svg\"\r\n (click)=\"openSubtotal(item)\"\r\n />\r\n <img\r\n src=\"../../assets/img/dashboard_icon/gadget-basic-arrow-down.svg\"\r\n (click)=\"openSubtotal(item)\"\r\n />\r\n </li>\r\n <div\r\n #unclick\r\n class=\"pivotTable-sub-grand-group\"\r\n *ngIf=\"\r\n showSubTotalGroup &&\r\n getPortletType(item) === 'pivot' &&\r\n Current_PortletId === item.newId\r\n \"\r\n >\r\n <ul>\r\n <li\r\n class=\"sub-grand-group\"\r\n [ngStyle]=\"{\r\n 'background-color': subtotal.selected\r\n ? '#f8fafb'\r\n : '#fff'\r\n }\"\r\n *ngFor=\"\r\n let subtotal of pivotTableSubTotalList;\r\n let idx = index\r\n \"\r\n (click)=\"selectTotalGroup(idx, 'sub', item)\"\r\n >\r\n <div style=\"display: flex\">\r\n <div\r\n style=\"\r\n height: 33px;\r\n width: 34px;\r\n text-align: center;\r\n \"\r\n >\r\n <img\r\n *ngIf=\"subtotal.selected\"\r\n src=\"../../assets/img/dashboard_icon/forms-checkbox-square-tick.svg\"\r\n />\r\n </div>\r\n <span>{{ subtotal.value }}</span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n <li\r\n #unclickGrand\r\n *ngIf=\"\r\n customized &&\r\n (getPortletType(item) === 'pivot' ||\r\n getPortletType(item) === 'table')\r\n \"\r\n style=\"margin-right: 18px\"\r\n >\r\n <img\r\n src=\"../../assets/img/dashboard_icon/gadget-basic-total.svg\"\r\n (click)=\"openGrandtotal(item)\"\r\n />\r\n <img\r\n src=\"../../assets/img/dashboard_icon/gadget-basic-arrow-down.svg\"\r\n (click)=\"openGrandtotal(item)\"\r\n />\r\n </li>\r\n <div\r\n #unclickGrand\r\n class=\"pivotTable-sub-grand-group\"\r\n style=\"left: 230px\"\r\n *ngIf=\"\r\n showgrandTotalGroup &&\r\n getPortletType(item) === 'pivot' &&\r\n Current_PortletId === item.newId\r\n \"\r\n >\r\n <ul>\r\n <li\r\n class=\"sub-grand-group\"\r\n [ngStyle]=\"{\r\n 'background-color': grandtotal.selected\r\n ? '#f8fafb'\r\n : '#fff'\r\n }\"\r\n *ngFor=\"\r\n let grandtotal of pivotTableGrandTotalList;\r\n let idx = index\r\n \"\r\n (click)=\"selectTotalGroup(idx, 'grand', item)\"\r\n >\r\n <div style=\"display: flex\">\r\n <div\r\n style=\"\r\n height: 33px;\r\n width: 34px;\r\n text-align: center;\r\n \"\r\n >\r\n <img\r\n *ngIf=\"grandtotal.selected\"\r\n src=\"../../assets/img/dashboard_icon/forms-checkbox-square-tick.svg\"\r\n />\r\n </div>\r\n <span>{{ grandtotal.value }}</span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n <div\r\n #unclickGrand\r\n class=\"pivotTable-sub-grand-group\"\r\n style=\"left: 210px; height: 76px\"\r\n *ngIf=\"\r\n showTableGrandTotalGroup &&\r\n getPortletType(item) === 'table' &&\r\n Current_PortletId === item.newId\r\n \"\r\n >\r\n <ul>\r\n <li\r\n class=\"sub-grand-group\"\r\n [ngStyle]=\"{\r\n 'background-color': grandtotal.selected\r\n ? '#f8fafb'\r\n : '#fff'\r\n }\"\r\n *ngFor=\"\r\n let grandtotal of tableGrandTotalList;\r\n let idx = index\r\n \"\r\n (click)=\"selectTotalGroup(idx, 'tableGrand', item)\"\r\n >\r\n <div style=\"display: flex\">\r\n <div\r\n style=\"\r\n height: 33px;\r\n width: 34px;\r\n text-align: center;\r\n \"\r\n >\r\n <img\r\n *ngIf=\"grandtotal.selected\"\r\n src=\"../../assets/img/dashboard_icon/forms-checkbox-square-tick.svg\"\r\n />\r\n </div>\r\n <span>{{ grandtotal.value }}</span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n <li\r\n *ngIf=\"\r\n customized &&\r\n !['newcolumn', 'newline', 'newcolumnline'].includes(\r\n getPortletType(item)\r\n )\r\n \"\r\n [matTooltip]=\"\r\n translation.FORMAT ? translation.FORMAT : '.FORMAT'\r\n \"\r\n >\r\n <img\r\n src=\"../../assets/img/dashboard_icon/gadget-basic-format.svg\"\r\n (click)=\"fieldFormat(item)\"\r\n />\r\n </li>\r\n <li\r\n *ngIf=\"\r\n (customized || url_type === 'sharedbeta') &&\r\n !['newcolumn', 'newline', 'newcolumnline'].includes(\r\n getPortletType(item)\r\n )\r\n \"\r\n [matTooltip]=\"\r\n translation.CONFIGURATIONS || '.CONFIGURATIONS'\r\n \"\r\n (click)=\"configurations(item, $event)\"\r\n >\r\n <img\r\n src=\"../../assets/img/dashboard_icon/gadget-settings.svg\"\r\n />\r\n </li>\r\n <li\r\n *ngIf=\"customized\"\r\n [matTooltip]=\"translation.EDIT ? translation.EDIT : '.EDIT'\"\r\n (click)=\"edit(item)\"\r\n >\r\n <img\r\n src=\"../../assets/img/dashboard_icon/gadget-edit.svg\"\r\n />\r\n </li>\r\n </ul>\r\n </div>\r\n </ng-template>\r\n <ng-template #content>\r\n <rs-gadget-table\r\n #table\r\n *ngIf=\"getPortletType(item) == 'table'\"\r\n [portlets]=\"portlets\"\r\n [dashboard]=\"dashboard\"\r\n [portlet]=\"item\"\r\n >\r\n </rs-gadget-table>\r\n <rs-gadget-pivot\r\n #pivot\r\n *ngIf=\"getPortletType(item) == 'pivot'\"\r\n [portlet]=\"item\"\r\n [dashboard]=\"dashboard\"\r\n [portlets]=\"portlets\"\r\n [themeColor]=\"item.themeColor\"\r\n >\r\n </rs-gadget-pivot>\r\n <rs-gadget-pivot-chart\r\n #pivot\r\n *ngIf=\"getPortletType(item) == 'newchart'\"\r\n [portlet]=\"item\"\r\n [dashboard]=\"dashboard\"\r\n (updatePorletConfig)=\"updatePorletConfig($event)\"\r\n [portlets]=\"portlets\"\r\n [themeColor]=\"item.themeColor\"\r\n >\r\n </rs-gadget-pivot-chart>\r\n <rs-gadget-transpose\r\n #transpose\r\n *ngIf=\"getPortletType(item) == 'transpose'\"\r\n [portlets]=\"portlets\"\r\n [dashboard]=\"dashboard\"\r\n [portlet]=\"item\"\r\n >\r\n </rs-gadget-transpose>\r\n <rs-bar-charts\r\n *ngIf=\"\r\n ['newcolumn', 'newline', 'newcolumnline'].includes(\r\n getPortletType(item)\r\n )\r\n \"\r\n #newChart\r\n [dashboard]=\"dashboard\"\r\n [dataColumn]=\"item.dataColumn\"\r\n [dataLine]=\"item.dataLine\"\r\n [columnType]=\"item.columnType\"\r\n [lineType]=\"item.lineType\"\r\n [themeColor]=\"item.themeColor\"\r\n [portlet]=\"item\"\r\n ></rs-bar-charts>\r\n </ng-template>\r\n </e-panel>\r\n </e-panels>\r\n </ejs-dashboardlayout>\r\n </div>\r\n </div>\r\n <rs-empty-icon-prompt\r\n [displayCode]=\"'customize'\"\r\n [dashboard]=\"dashboard\"\r\n hidden\r\n >\r\n </rs-empty-icon-prompt>\r\n <div\r\n id=\"kt-dashboard-tabs\"\r\n class=\"dashboard-tab-list\"\r\n cdkDropList\r\n cdkDropListOrientation=\"horizontal\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n >\r\n <div\r\n class=\"tab-item\"\r\n *ngFor=\"let item of tabList; let i = index\"\r\n [ngClass]=\"{\r\n active: item.id === activeTab,\r\n prev: prevId === item.id && i !== tabList.length - 1\r\n }\"\r\n (click)=\"onActiveTab(item, i)\"\r\n (dblclick)=\"onStartEdit(item.id)\"\r\n cdkDrag\r\n >\r\n <div\r\n *ngIf=\"!startEdit || item.id !== activeTab\"\r\n [matTooltip]=\"\r\n item.label === item.displayLabel ? null : item.displayLabel\r\n \"\r\n >\r\n {{ item.displayLabel }}\r\n <img\r\n *ngIf=\"tabList.length > 1\"\r\n src=\"../../assets/img/dashboard_icon/dashboard-tab-delete.svg\"\r\n alt=\"\"\r\n (click)=\"onDeleteTab(item)\"\r\n />\r\n </div>\r\n <input\r\n *ngIf=\"startEdit && item.id === activeTab\"\r\n type=\"text\"\r\n [(ngModel)]=\"item.label\"\r\n (input)=\"setTabInput($event)\"\r\n (blur)=\"saveTabInput(item)\"\r\n />\r\n </div>\r\n <img\r\n class=\"add-tab-icon\"\r\n src=\"../../assets/img/dashboard_icon/add-tab.svg\"\r\n (click)=\"onAddTab()\"\r\n />\r\n </div>\r\n</div>\r\n\r\n<div class=\"sidebar\" [ngClass]=\"{ gone: !push_btn }\" *ngIf=\"dashboard_sidebar\">\r\n <span class=\"push-btn\" (click)=\"pushSlider()\" [class.left-place]=\"!push_btn\">\r\n <span\r\n class=\"sidebar-btn\"\r\n *ngIf=\"push_btn\"\r\n [inlineSVG]=\"'../../assets/img/dashboard_icon/Angle-double-right.svg'\"\r\n ></span>\r\n <span\r\n class=\"sidebar-btn\"\r\n *ngIf=\"!push_btn\"\r\n [inlineSVG]=\"'../../assets/img/dashboard_icon/Angle-double-left.svg'\"\r\n ></span>\r\n </span>\r\n <rs-sidebar-iconlist-new\r\n #sidebar\r\n *ngIf=\"push_btn\"\r\n [dashboard_sidebar]=\"dashboard_sidebar\"\r\n [dashboard]=\"dashboard\"\r\n [dashboardId]=\"url_id\"\r\n [portlet]=\"portlet\"\r\n [portlets]=\"portlets\"\r\n [activeTabId]=\"activeTabId\"\r\n [activeTabLabel]=\"activeTabLabel\"\r\n [figureCode]=\"figureCode\"\r\n [tabactive]=\"tabactive\"\r\n [_selectedY]=\"selectedY\"\r\n [_selectedSecondY]=\"selectedSecondY\"\r\n [_selectedX]=\"selectedX\"\r\n [_selectedMultiples]=\"selectedMultiples\"\r\n [_selectTheme]=\"selectTheme\"\r\n [appCode]=\"appCode\"\r\n (updatePorlet)=\"updatePorlet($event)\"\r\n (chartUpdate)=\"chartUpdate($event)\"\r\n (closeSidebar)=\"closeSidebar($event)\"\r\n (updatePushBtn)=\"updatePushBtn($event)\"\r\n (updateTheme)=\"updateTheme($event)\"\r\n (updatePorletConfig)=\"updatePorletConfig($event)\"\r\n (onToggleTabactive)=\"onToggleTabactive($event)\"\r\n >\r\n </rs-sidebar-iconlist-new>\r\n</div>\r\n<button\r\n class=\"addPorlet\"\r\n *ngIf=\"customized && !push_btn\"\r\n mat-mini-fab\r\n color=\"primary\"\r\n (click)=\"addPorlet()\"\r\n>\r\n +\r\n</button>\r\n",
|
|
2683
2683
|
// changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2684
2684
|
providers: [DatePipe, { provide: MAT_DATE_FORMATS, useValue: ɵ0 }],
|
|
2685
|
-
styles: ["@charset \"UTF-8\";.kt-portlet.kt-portlet--mobile.kt-portlet--sortable{position:relative;overflow-x:auto;overflow-y:hidden;height:100%!important}.kt-portlet
|
|
2685
|
+
styles: ["@charset \"UTF-8\";.kt-portlet.kt-portlet--mobile.kt-portlet--sortable{position:relative;overflow-x:auto;overflow-y:hidden;height:100%!important}.kt-portlet .kt-portlet__body{height:100%;overflow:hidden;padding:0 0 30px!important}.pane{margin-bottom:30px}i.la.la-compress{font-size:20px!important}.dropdown-menu.dropdown-menu-right.dropdown-menu-md.dropdown-menu-fit{z-index:102}h3.kt-portlet__head-title{font-size:18px!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::ng-deep .date-portlet .mat-form-field-wrapper{width:100px;margin-left:15px}.table-none-padding{padding:0}.kt-portlet__head-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-bordered{height:30px;width:40px;border-radius:5px;border:1px solid #6c757d;color:#44566c;padding:0}.btn-bordered.date{padding-top:4px;padding-left:8px;width:160px;font-size:15px}.btn-bordered .mat-datepicker-toggle{color:rgba(0,0,0,.5)}.btn-bordered svg.mat-datepicker-toggle-default-icon.ng-star-inserted{width:20px!important}:host::ng-deep button.mat-icon-button.mat-button-base{transform:translateY(-10px)!important}gridster.scrollVertical{width:auto!important;background:#f2f2f8!important;padding-left:2px!important}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{padding-right:15px!important;padding-left:15px!important}.kt-portlet__head-group.show{position:relative!important}.dropdown-menu.dropdown-menu-right.dropdown-menu-md.dropdown-menu-fit.show{top:48px!important;left:-230px!important;transform:none!important}span.top-date{font-family:Arial;font-size:15px;color:#6c757d}svg.bi.bi-arrows-angle-contract{color:#a2a5b9;margin-right:10px}li.full-svg:hover svg.bi.bi-arrows-angle-contract{color:#0081ff}.pdf-size{width:666px;height:999px}.portlets-description{padding:12px 8px 12px 20px;display:flex;flex-flow:column;gap:12px}.portlets-description h4,.portlets-description p{margin:0;color:#44566c;font-family:Arial;font-size:11px!important;font-style:normal;font-weight:400;line-height:14px}.edit-portlet{border:2px solid #0181ff;border-radius:10px}.kt-form__path{margin-bottom:23px;font-size:13px}.kt-form__path .fa-angle-right,.kt-form__path .lastspan{color:#8697a8}::ng-deep rs-dashboard{height:100%;display:flex;flex-direction:column;position:relative}::ng-deep rs-dashboard .panes-list{width:100%!important;margin-bottom:70px!important}::ng-deep rs-dashboard .panes-list .kt-portlet{border-radius:5px;border-top:10px solid #fff}::ng-deep rs-dashboard button.addPorlet{font-size:32px;position:fixed;bottom:100px;right:20px;z-index:1003;background-color:#0081ff!important}::ng-deep rs-dashboard .sidebar{right:0;top:0;bottom:0;position:absolute;z-index:1000;width:400px;background:#fff!important;transition:width .3s}::ng-deep rs-dashboard .sidebar .push-btn{position:absolute;left:0;top:0;z-index:1}::ng-deep rs-dashboard .sidebar.gone{width:0}::ng-deep rs-dashboard .sidebar .sidebar-btn svg g polygon{fill-opacity:0}::ng-deep rs-dashboard .sidebar .sidebar-btn:hover svg g path{fill:#0081ff;transition:fill .3s}.panes-list{height:100%;width:100%;margin:0!important;overflow:auto;padding-bottom:50px;background:#f2f2f8}.panes-list ::ng-deep .e-panel{border-radius:10px;overflow:auto}.panes-list ::ng-deep .e-panel .e-panel-container{min-width:340px;min-height:340px}.panes-list-dashboard{top:-20px!important}.panes-list-desktop{left:-25px!important;top:-36px!important}:host ::ng-deep .e-panel-header{padding:0!important;height:auto!important;border:0!important}.gadgetBar{height:24px;background-color:#fff!important}.gadgetBar .pane-gadget-container{padding:0 12px}.gadgetBar .pivotTable-sub-grand-group ul{width:100%;display:block}.gadgetBar .pivotTable-sub-grand-group ul li{width:24px;height:24px;display:flex;align-items:center;cursor:pointer;padding:4px}.gadgetBar ul{margin:0;padding:0;list-style:none;display:flex;width:100%;gap:12px}.gadgetBar ul li{width:24px;height:24px;display:flex;align-items:center;cursor:pointer;padding:4px}.gadget-title{height:36px;padding:10px 12px 8px;color:#43566c;font-family:Arial;font-size:15px;font-weight:700;line-height:18px}.pivotTable-sub-grand-group{width:241px;height:142px;z-index:999;position:absolute;left:180px;top:80px;border-radius:10px;border:1px solid #eaedf0;background-color:#fff}.sub-grand-group{width:100%!important;display:block!important;height:33px!important;margin:0!important;line-height:33px!important;text-align:left!important}.sub-grand-group span{font-family:Arial;font-size:14px;color:#44566c;font-weight:400}.sub-grand-group:hover{background-color:#f8fafb!important}::ng-deep .e-pivotfieldlist-container .e-field-list-container .e-field-table .e-field-list-tree-outer-div{height:278px!important}.content-portlets{height:100%;position:relative;overflow:hidden}.content-portlets .dashboard-tab-list{position:absolute;bottom:0;left:0;z-index:1000;width:100%;border-top:1px solid #dbe1e7;border-bottom:1px solid #dbe1e7;background:#f8fafb;box-shadow:0 -1px 4px 0 rgba(0,0,0,.05);display:flex;align-items:center;height:28px}.content-portlets .dashboard-tab-list img{margin-left:10px;cursor:pointer}.content-portlets .dashboard-tab-list .tab-item{cursor:pointer;padding-bottom:4px;border-left:0;color:#43566c}.content-portlets .dashboard-tab-list .tab-item:hover img{display:block!important}.content-portlets .dashboard-tab-list .tab-item div{border-right:1px solid #d0d6dd;border-left:1px solid transparent;border-bottom:1px solid transparent;font-size:11px;line-height:16px;min-height:16px;padding:5px 12px 2px;display:flex;width:114px;align-items:center;justify-content:space-between;gap:6px}.content-portlets .dashboard-tab-list .tab-item div img{display:none;cursor:pointer;margin-left:0}.content-portlets .dashboard-tab-list .tab-item:first-child div{border-left:1px solid #d0d6dd}.content-portlets .dashboard-tab-list .tab-item:first-child.active div{border-right:1px solid #d6dce2}.content-portlets .dashboard-tab-list .tab-item.active div{background-color:#fff;border-bottom-color:#d6dce2;font-weight:700;border-radius:0 0 6px 6px;border-left-color:#d6dce2}.content-portlets .dashboard-tab-list .tab-item.prev div{border-right-color:transparent}.content-portlets .dashboard-tab-list .tab-item input{border:none;text-shadow:none;border-bottom:1px solid #43566c;outline:0;height:16px;width:150px;font-size:11px!important}::ng-deep .mat-menu-content .options{padding:4px 0}::ng-deep .mat-menu-content .options .option-item{padding:4px 8px;font-size:13px;cursor:pointer}::ng-deep .mat-menu-content .options .option-item:hover{background:rgba(0,0,0,.05)}::ng-deep .mat-menu-content .options .option-checkbox{padding:8px}::ng-deep .mat-menu-content .options .option-checkbox.first{border-top:1px solid rgba(0,0,0,.1)}::ng-deep .mat-menu-content .options .option-checkbox .e-icons{height:18px;width:18px}::ng-deep .mat-menu-content .options .option-checkbox .e-icons:before{font-size:12px}::ng-deep #vegetables_popup{width:400px!important}#kt-dashboard-container{display:flex;flex-flow:column nowrap}#kt-dashboard-tabs{flex:none;position:static;height:30px;padding:0 20px;display:flex;flex-flow:row nowrap;align-items:flex-start}#kt-dashboard-tabs .tab-item.active>div{padding-bottom:4px}#kt-dashboard-tabs .tab-item>div{color:#1f3f5c;font-family:Arial;font-size:11px;font-style:normal;font-weight:400;line-height:14px}#kt-dashboard-tabs .add-tab-icon{width:16px;height:16px;margin:5px 12px auto}#kt-dashboard-layout{flex:auto;height:0;padding:20px;background-color:rgba(68,86,108,.1)}.left-place{left:-24px!important}"]
|
|
2686
2686
|
}] }
|
|
2687
2687
|
];
|
|
2688
2688
|
/** @nocollapse */
|
|
@@ -2927,4 +2927,4 @@ if (false) {
|
|
|
2927
2927
|
PaneGroupNewComponent.prototype.rs;
|
|
2928
2928
|
}
|
|
2929
2929
|
export { ɵ0 };
|
|
2930
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZS1ncm91cC1uZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9kYXNoYm9hcmQvcGFuZS1ncm91cC1uZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ04sWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUEyQixNQUFNLG1CQUFtQixDQUFDO0FBRXZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDaEMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsa0JBQWtCLEdBQ25CLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFckUsT0FBTyxZQUFZLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBVzlGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxP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QUN6QyxvQ0FBb0I7Ozs7O0lBQ3BCLCtDQUFzQzs7SUFDdEMsd0RBQXVEOzs7OztJQUN2RCxvQ0FBOEI7Ozs7O0lBQzlCLHVDQUFzQjs7Ozs7SUFDdEIsMkNBQThCOzs7OztJQUM5Qix5Q0FBMEI7Ozs7O0lBQzFCLG9DQUErQzs7Ozs7SUFDL0MscUNBQXdEOztJQUN4RCxtQ0FBc0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgRWxlbWVudFJlZixcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgUXVlcnlMaXN0LFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPcHRpb25hbCxcclxuICBJbmplY3QsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREYXRlcGlja2VySW5wdXRFdmVudCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbFwiO1xyXG5cclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgRGFzaGJvYXJkU2VydmljZSB9IGZyb20gXCIuL2Rhc2hib2FyZC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFwaUxpc3QgfSBmcm9tIFwiLi9hcGlcIjtcclxuaW1wb3J0IHtcclxuICBBUElfU0VSVklDRV9UT0tFTixcclxuICBQQkZfVE9LRU4sXHJcbiAgUk9MRV9TRVJWSUNFX1RPS0VOLFxyXG59IGZyb20gXCIuLi9zZXJ2aWNlL0luamVjdGlvblRva2VuXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFBvcmxldHNTZXJ2aWNlIH0gZnJvbSBcIi4vZGFzaGJvYXJkUG9ybGV0cy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCBDaXJjdWxhckpTT04gZnJvbSBcImNpcmN1bGFyLWpzb25cIjtcclxuXHJcbmltcG9ydCB7IE1BVF9EQVRFX0ZPUk1BVFMgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAsIGZpbmQgfSBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZExheW91dENvbXBvbmVudCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1sYXlvdXRzXCI7XHJcbmltcG9ydCB7IEZpZWxkRm9ybWF0Q29tcG9uZW50IH0gZnJvbSBcIi4vc2lkZWJhci1pY29ubGlzdC9maWVsZC1mb3JtYXQvZmllbGQtZm9ybWF0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBHYWRnZXRUYWJsZUNvbXBvbmVudCB9IGZyb20gXCIuL2dhZGdldC1ncm91cC9nYWRnZXQtdGFibGUvZ2FkZ2V0LXRhYmxlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBHYWRnZXRQaXZvdENvbXBvbmVudCB9IGZyb20gXCIuL2dhZGdldC1ncm91cC9nYWRnZXQtcGl2b3QvZ2FkZ2V0LXBpdm90LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBHYWRnZXRQaXZvdENoYXJ0Q29tcG9uZW50IH0gZnJvbSBcIi4vZ2FkZ2V0LWdyb3VwL2dhZGdldC1waXZvdC1jaGFydC9nYWRnZXQtcGl2b3QuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEdhZGdldFRyYW5zcG9zZUNvbXBvbmVudCB9IGZyb20gXCIuL2dhZGdldC1ncm91cC9nYWRnZXQtdHJhbnNwb3NlL2dhZGdldC10cmFuc3Bvc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgLy8gUGRmRXhwb3J0UHJvcGVydGllcyxcclxuICBFeGNlbEV4cG9ydFByb3BlcnRpZXMsXHJcbiAgQ29sdW1uTW9kZWwsXHJcbn0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWdyaWRzXCI7XHJcbmltcG9ydCB7IElBeGlzU2V0IH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLXBpdm90dmlld1wiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IERhdGFNYXJ0TmV3Q29tcG9uZW50IH0gZnJvbSBcIi4vZGFzaGJvYXJkLXByb3BlcnRpZXMvZGF0YS1tYXJ0LW5ldy9kYXRhLW1hcnQtbmV3LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBCYXJDaGFydHNDb21wb25lbnQgfSBmcm9tIFwiLi9iYXItY2hhcnRzL2Jhci1jaGFydHMuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IGRlYm91bmNlIH0gZnJvbSBcIi4vYmFyLWNoYXJ0cy91dGlsc1wiO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgUGFuZURvd25sb2FkQ29tcG9uZW50IH0gZnJvbSBcIi4vZGlhbG9nLWdyb3VwL2Rvd25sb2FkL2luZGV4LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlL2RpYWxvZy5zZXJ2aWNlXCI7XHJcblxyXG5sZXQgZGF0ZUZvcm1hdCA9IFwiREQtTU0tWVlZWVwiO1xyXG5pZiAobG9jYWxTdG9yYWdlW1wic2V0dGluZ1wiXSkge1xyXG4gIGNvbnN0IGRhdGVBcnJheSA9IGZpbmQoXHJcbiAgICBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic2V0dGluZ1wiKSB8fCBcInt9XCIpLFxyXG4gICAgKGl0ZW0pID0+IGl0ZW0gJiYgaXRlbVtcInBhcmFtZXRlclwiXSA9PT0gXCJEQVRFX0ZPUk1BVFwiXHJcbiAgKTtcclxuICBpZiAoZGF0ZUFycmF5KSB7XHJcbiAgICBkYXRlRm9ybWF0ID0gZGF0ZUFycmF5LnZhbHVlO1xyXG4gIH1cclxufVxyXG5cclxuY29uc3QgTVlfRk9STUFUUyA9IHtcclxuICBwYXJzZToge1xyXG4gICAgZGF0ZUlucHV0OiBcIkRELU1NLVlZWVlcIixcclxuICB9LFxyXG4gIGRpc3BsYXk6IHtcclxuICAgIGRhdGVJbnB1dDogZGF0ZUZvcm1hdCxcclxuICAgIG1vbnRoWWVhckxhYmVsOiBcIllZWVlcIixcclxuICAgIGRhdGVBMTF5TGFiZWw6IFwiTExcIixcclxuICAgIG1vbnRoWWVhckExMXlMYWJlbDogXCJZWVlZXCIsXHJcbiAgfSxcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInJzLWRhc2hib2FyZFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vcGFuZS1ncm91cC1uZXcuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vcGFuZS1ncm91cC1uZXcuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgLy8gY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbRGF0ZVBpcGUsIHsgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IE1ZX0ZPUk1BVFMgfV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYW5lR3JvdXBOZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBPdXRwdXQoKSBkYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8YW55Pj47XHJcbiAgQElucHV0KCkgYXBwQ29kZSA9IFwiUE1TXCI7XHJcbiAgQFZpZXdDaGlsZChcInNpZGViYXJcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIHNpZGViYXI6IGFueTtcclxuICBAVmlld0NoaWxkcmVuKFwidW5jbGlja1wiKSB1bmNsaWNrOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcbiAgQFZpZXdDaGlsZHJlbihcInVuY2xpY2tHcmFuZFwiKSB1bmNsaWNrR3JhbmQ6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuICBAVmlld0NoaWxkcmVuKFwibmV3Q2hhcnRcIikgbmV3Q2hhcnQ6IFF1ZXJ5TGlzdDxCYXJDaGFydHNDb21wb25lbnQ+O1xyXG4gIHBvcnRsZXQ7XHJcbiAgdGFiYWN0aXZlOiBib29sZWFuO1xyXG4gIGRhc2hib2FyZDtcclxuICBzZWxlY3RlZFkgPSBbXTtcclxuICBzZWxlY3RlZFNlY29uZFkgPSBbXTtcclxuICBzZWxlY3RlZFggPSBbXTtcclxuICBzZWxlY3RlZE11bHRpcGxlczogYW55O1xyXG4gIHNlbGVjdFRoZW1lOiBhbnk7XHJcbiAgaGFzSW5pdCA9IHRydWU7XHJcbiAgYWN0aXZlVGFiSWQ6IGFueTtcclxuICBoYXNDaGFuZ2VEYXRhVGFibGUgPSBmYWxzZTtcclxuICBhY3RpdmVUYWJMYWJlbCA9IFwiXCI7XHJcbiAgc3RheUFjdGl2ZVRhYjogYm9vbGVhbjtcclxuICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6Y2xpY2tcIiwgW1wiJGV2ZW50XCJdKSBib2R5Q2xpY2soZSkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnVuY2xpY2sgJiZcclxuICAgICAgdGhpcy51bmNsaWNrLmZpcnN0ICYmXHJcbiAgICAgIGUudGFyZ2V0LnRhZ05hbWUgIT09IFwiSU1HXCIgJiZcclxuICAgICAgIXRoaXMudW5jbGljay5maXJzdC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGUudGFyZ2V0KVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc2hvd1N1YlRvdGFsR3JvdXAgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMudW5jbGlja0dyYW5kLmZpcnN0ICYmXHJcbiAgICAgIGUudGFyZ2V0LnRhZ05hbWUgIT09IFwiSU1HXCIgJiZcclxuICAgICAgIXRoaXMudW5jbGlja0dyYW5kLmZpcnN0Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZS50YXJnZXQpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zaG93Z3JhbmRUb3RhbEdyb3VwID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd1RhYmxlR3JhbmRUb3RhbEdyb3VwID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHB1YmxpYyB0cmFuc2xhdGlvbiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ0cmFuc2xhdGlvblwiKSB8fCBcInt9XCIpO1xyXG4gIHByaXZhdGUgbGFuZztcclxuICBwdXNoX2J0biA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoXCJkZWZhdWx0TGF5b3V0XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGRhc2hib2FyZExheW91dDogRGFzaGJvYXJkTGF5b3V0Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoXCJjYW52YXNcIiwgeyBzdGF0aWM6IHRydWUgfSkgY2FudmFzOiBFbGVtZW50UmVmO1xyXG4gIHByaXZhdGUgY29uZmlnO1xyXG4gIHB1YmxpYyBkcmFnZ2FibGVIYW5kbGU6IHN0cmluZyA9IFwiLmdhZGdldC10aXRsZVwiO1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwdWJsaWMgdXJsO1xyXG4gIHB1YmxpYyB1cmxfaWQ7XHJcbiAgcHVibGljIHVybF90eXBlO1xyXG4gIC8vIHByaXZhdGUgaW1nO1xyXG4gIHB1YmxpYyBkYXRlUGlwZUZvcm1hdDtcclxuICBwdWJsaWMgaGF2ZUZ1bGxTY3JlZW4gPSBbXTtcclxuICAvLyBwcml2YXRlIGNsaWVudEhlaWdodF87XHJcbiAgcHVibGljIGNlbGxTcGFjaW5nOiBudW1iZXJbXSA9IFsyMCwgMjBdO1xyXG4gIHB1YmxpYyBjZWxsQXNwZWN0UmF0aW87XHJcbiAgcHVibGljIHJlc2l6YWJsZUhhbmRsZXM7XHJcbiAgbmV3UG9zaXRpb24gPSBbXTtcclxuXHJcbiAgcHVibGljIG1lZGlhUXVlcnk7XHJcbiAgZmlndXJlQ29kZTtcclxuICBjdXN0b21pemVkID0gZmFsc2U7XHJcbiAgcHVibGljIGNoYXJ0VHlwZUxpc3QgPSBbXCJDb2x1bW5cIiwgXCJCYXJcIiwgXCJMaW5lXCIsIFwiQXJlYVwiLCBcIlNjYXR0ZXJcIiwgXCJQb2xhclwiXTtcclxuICBAVmlld0NoaWxkcmVuKFwidGFibGVcIilcclxuICBwdWJsaWMgdGFibGU6IFF1ZXJ5TGlzdDxHYWRnZXRUYWJsZUNvbXBvbmVudD47XHJcbiAgQFZpZXdDaGlsZHJlbihcInBpdm90XCIpXHJcbiAgcHVibGljIHBpdm90OiBRdWVyeUxpc3Q8R2FkZ2V0UGl2b3RDb21wb25lbnQgfCBHYWRnZXRQaXZvdENoYXJ0Q29tcG9uZW50PjtcclxuICBAVmlld0NoaWxkcmVuKFwidHJhbnNwb3NlXCIpXHJcbiAgcHVibGljIHRyYW5zcG9zZTogUXVlcnlMaXN0PEdhZGdldFRyYW5zcG9zZUNvbXBvbmVudD47XHJcbiAgcHVibGljIHBpdm90VGFibGVTdWJUb3RhbExpc3Q6IEFycmF5PGFueT4gPSBbXHJcbiAgICB7XHJcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcclxuICAgICAgdmFsdWU6IHRoaXMudHJhbnNsYXRpb24uU0hPV19TVUJfVE9UQUxTIHx8IFwiU2hvdyBzdWIgdG90YWxzXCIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBzZWxlY3RlZDogZmFsc2UsXHJcbiAgICAgIHZhbHVlOiB0aGlzLnRyYW5zbGF0aW9uLkhJREVfU1VCX1RPVEFMUyB8fCBcIkhpZGUgc3ViIHRvdGFsc1wiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICB2YWx1ZTpcclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uLlNIT1dfU1VCX1RPVEFMU19ST1dTX09OTFkgfHxcclxuICAgICAgICBcIlNob3cgc3ViIHRvdGFscyByb3dzIG9ubHlcIixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcclxuICAgICAgdmFsdWU6XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbi5TSE9XX1NVQl9UT1RBTFNfQ09MVU1OU19PTkxZIHx8XHJcbiAgICAgICAgXCJTaG93IHN1YiB0b3RhbHMgY29sdW1ucyBvbmx5XCIsXHJcbiAgICB9LFxyXG4gIF07XHJcbiAgcHVibGljIHBpdm90VGFibGVHcmFuZFRvdGFsTGlzdDogQXJyYXk8YW55PiA9IFtcclxuICAgIHtcclxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICB2YWx1ZTogdGhpcy50cmFuc2xhdGlvbi5TSE9XX0dSQU5EX1RPVEFMUyB8fCBcIlNob3cgZ3JhbmQgdG90YWxzXCIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBzZWxlY3RlZDogZmFsc2UsXHJcbiAgICAgIHZhbHVlOiB0aGlzLnRyYW5zbGF0aW9uLkhJREVfR1JBTkRfVE9UQUxTIHx8IFwiSGlkZSBncmFuZCB0b3RhbHNcIixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcclxuICAgICAgdmFsdWU6XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbi5TSE9XX0dSQU5EX1RPVEFMU19ST1dTX09OTFkgfHxcclxuICAgICAgICBcIlNob3cgZ3JhbmQgdG90YWxzIHJvd3Mgb25seVwiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICB2YWx1ZTpcclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uLlNIT1dfR1JBTkRfVE9UQUxTX0NPTFVNTlNfT05MWSB8fFxyXG4gICAgICAgIFwiU2hvdyBncmFuZCB0b3RhbHMgY29sdW1ucyBvbmx5XCIsXHJcbiAgICB9LFxyXG4gIF07XHJcbiAgcHVibGljIHRhYmxlR3JhbmRUb3RhbExpc3Q6IEFycmF5PGFueT4gPSBbXHJcbiAgICB7XHJcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcclxuICAgICAgdmFsdWU6IHRoaXMudHJhbnNsYXRpb24uU0hPV19HUkFORF9UT1RBTFMgfHwgXCJTaG93IGdyYW5kIHRvdGFsc1wiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICB2YWx1ZTogdGhpcy50cmFuc2xhdGlvbi5ISURFX0dSQU5EX1RPVEFMUyB8fCBcIkhpZGUgZ3JhbmQgdG90YWxzXCIsXHJcbiAgICB9LFxyXG4gIF07XHJcblxyXG4gIHRoZW1lRGF0YTogYW55ID0gW1xyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTEzXCIsXHJcbiAgICAgIHZhbHVlOiBbXCIjMUMzNDg0XCIsIFwiIzM1QjlGQ1wiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMTRcIixcclxuICAgICAgdmFsdWU6IFtcIiMwNDU3OEZcIiwgXCIjM0VCQkNFXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxNVwiLFxyXG4gICAgICB2YWx1ZTogW1wiIzFDMzQ4NFwiLCBcIiMxMzZCQkJcIiwgXCIjMzVCOUZDXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxNlwiLFxyXG4gICAgICB2YWx1ZTogW1wiIzA0NTc4RlwiLCBcIiMwMDgyQUZcIiwgXCIjM0VCQkNFXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxN1wiLFxyXG4gICAgICB2YWx1ZTogW1wiIzFDMzQ4NFwiLCBcIiMxNjU5QTlcIiwgXCIjMUQ5N0UxXCIsIFwiIzM1QjlGQ1wiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMThcIixcclxuICAgICAgdmFsdWU6IFtcIiMwNDU3OEZcIiwgXCIjMDA3MEEzXCIsIFwiIzE2QTJDMlwiLCBcIiMzRUJCQ0VcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTE5XCIsXHJcbiAgICAgIHZhbHVlOiBbXCIjMUMzNDg0XCIsIFwiIzE2NTlBOVwiLCBcIiMxMzc1QzRcIiwgXCIjMUQ5N0UxXCIsIFwiIzM1QjlGQ1wiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMjBcIixcclxuICAgICAgdmFsdWU6IFtcIiMwNDU3OEZcIiwgXCIjMDA3MEEzXCIsIFwiIzAwODlCNFwiLCBcIiMxNkEyQzJcIiwgXCIjM0VCQkNFXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUyMVwiLFxyXG4gICAgICB2YWx1ZTogW1wiIzFDMzQ4NFwiLCBcIiMxNjU5QTlcIiwgXCIjMTM2OEI4XCIsIFwiIzEzNzVDNFwiLCBcIiMxRDk3RTFcIiwgXCIjMzVCOUZDXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUyMlwiLFxyXG4gICAgICB2YWx1ZTogW1wiIzA0NTc4RlwiLCBcIiMwMDcwQTNcIiwgXCIjMDA3RkFEXCIsIFwiIzAwODlCNFwiLCBcIiMxNkEyQzJcIiwgXCIjM0VCQkNFXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUyM1wiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzFDMzQ4NFwiLFxyXG4gICAgICAgIFwiIzE2NTlBOVwiLFxyXG4gICAgICAgIFwiIzE0NUZBRlwiLFxyXG4gICAgICAgIFwiIzEzNjhCOFwiLFxyXG4gICAgICAgIFwiIzEzNzVDNFwiLFxyXG4gICAgICAgIFwiIzFEOTdFMVwiLFxyXG4gICAgICAgIFwiIzM1QjlGQ1wiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUyNFwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzA0NTc4RlwiLFxyXG4gICAgICAgIFwiIzAwNzBBM1wiLFxyXG4gICAgICAgIFwiIzAwNzhBOVwiLFxyXG4gICAgICAgIFwiIzAwN0ZBRFwiLFxyXG4gICAgICAgIFwiIzAwODlCNFwiLFxyXG4gICAgICAgIFwiIzE2QTJDMlwiLFxyXG4gICAgICAgIFwiIzNFQkJDRVwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxMVwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzFDMzQ4NFwiLFxyXG4gICAgICAgIFwiIzE5NDY5N1wiLFxyXG4gICAgICAgIFwiIzE2NTlBOVwiLFxyXG4gICAgICAgIFwiIzEzNkJCQlwiLFxyXG4gICAgICAgIFwiIzE0N0VDQ1wiLFxyXG4gICAgICAgIFwiIzFCOTJERFwiLFxyXG4gICAgICAgIFwiIzI2QTVFRFwiLFxyXG4gICAgICAgIFwiIzM1QjlGQ1wiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxMlwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzA0NTc4RlwiLFxyXG4gICAgICAgIFwiIzAwNjU5QlwiLFxyXG4gICAgICAgIFwiIzAwNzNBNlwiLFxyXG4gICAgICAgIFwiIzAwODJBRlwiLFxyXG4gICAgICAgIFwiIzAwOTBCOFwiLFxyXG4gICAgICAgIFwiIzBGOUVDMFwiLFxyXG4gICAgICAgIFwiIzI5QURDN1wiLFxyXG4gICAgICAgIFwiIzNFQkJDRVwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxXCIsXHJcbiAgICAgIHZhbHVlOiBbXHJcbiAgICAgICAgXCIjNTk0YmI5XCIsXHJcbiAgICAgICAgXCIjZjFhZjMyXCIsXHJcbiAgICAgICAgXCIjNDY4OGVkXCIsXHJcbiAgICAgICAgXCIjZTA1NjNlXCIsXHJcbiAgICAgICAgXCIjODAzYTYzXCIsXHJcbiAgICAgICAgXCIjNmRkOGI1XCIsXHJcbiAgICAgICAgXCIjZTg3MjI1XCIsXHJcbiAgICAgICAgXCIjYzVkZjQyXCIsXHJcbiAgICAgICAgXCIjYzY0MzdkXCIsXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTJcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiM0Njg4ZWRcIixcclxuICAgICAgICBcIiNmMWFmMzJcIixcclxuICAgICAgICBcIiNlMDU2M2VcIixcclxuICAgICAgICBcIiM4MDNhNjNcIixcclxuICAgICAgICBcIiM2ZGQ4YjVcIixcclxuICAgICAgICBcIiNlODcyMjVcIixcclxuICAgICAgICBcIiNjNWRmNDJcIixcclxuICAgICAgICBcIiNjNjQzN2RcIixcclxuICAgICAgICBcIiM1OTRiYjlcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lM1wiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiI2M2NDM3ZFwiLFxyXG4gICAgICAgIFwiI2M1ZGY0MlwiLFxyXG4gICAgICAgIFwiI2U4NzIyNVwiLFxyXG4gICAgICAgIFwiIzZkZDhiNVwiLFxyXG4gICAgICAgIFwiI2UwNTYzZVwiLFxyXG4gICAgICAgIFwiIzgwM2E2M1wiLFxyXG4gICAgICAgIFwiI2YxYWYzMlwiLFxyXG4gICAgICAgIFwiIzU5NGJiOVwiLFxyXG4gICAgICAgIFwiIzQ2ODhlZFwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWU0XCIsXHJcbiAgICAgIHZhbHVlOiBbXHJcbiAgICAgICAgXCIjMmY0OTlmXCIsXHJcbiAgICAgICAgXCIjOGQxZDJlXCIsXHJcbiAgICAgICAgXCIjZTliZjM1XCIsXHJcbiAgICAgICAgXCIjNTE3NzJmXCIsXHJcbiAgICAgICAgXCIjNDY5YmQ4XCIsXHJcbiAgICAgICAgXCIjNWM0NDhmXCIsXHJcbiAgICAgICAgXCIjZGE3MzJmXCIsXHJcbiAgICAgICAgXCIjMjQ1MzUzXCIsXHJcbiAgICAgICAgXCIjNDNhMjQ1XCIsXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTVcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiMzODM4MzlcIixcclxuICAgICAgICBcIiM0NDZlYzZcIixcclxuICAgICAgICBcIiNjZjYzODRcIixcclxuICAgICAgICBcIiNlYmIzN2VcIixcclxuICAgICAgICBcIiM3MWEyNDlcIixcclxuICAgICAgICBcIiM0YmIxYTVcIixcclxuICAgICAgICBcIiNlODcyMjVcIixcclxuICAgICAgICBcIiNjNWRmNDJcIixcclxuICAgICAgICBcIiNjNjQzN2RcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lNlwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzUxN2FlMVwiLFxyXG4gICAgICAgIFwiIzYzODZlNVwiLFxyXG4gICAgICAgIFwiIzc0OTFlOVwiLFxyXG4gICAgICAgIFwiIzg0OWRlY1wiLFxyXG4gICAgICAgIFwiIzk0YTllZlwiLFxyXG4gICAgICAgIFwiI2E0YjZmMlwiLFxyXG4gICAgICAgIFwiI2I0YzNmNlwiLFxyXG4gICAgICAgIFwiI2M0Y2ZmOVwiLFxyXG4gICAgICAgIFwiI2Q0ZGRmZFwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWU3XCIsXHJcbiAgICAgIHZhbHVlOiBbXHJcbiAgICAgICAgXCIjMzk4MjhlXCIsXHJcbiAgICAgICAgXCIjNDg4ZTk5XCIsXHJcbiAgICAgICAgXCIjNTc5YWE1XCIsXHJcbiAgICAgICAgXCIjNjZhNmIwXCIsXHJcbiAgICAgICAgXCIjNzViM2JkXCIsXHJcbiAgICAgICAgXCIjODViZmM5XCIsXHJcbiAgICAgICAgXCIjOTVjZGQ2XCIsXHJcbiAgICAgICAgXCIjYTRkYWUyXCIsXHJcbiAgICAgICAgXCIjYjVlOGYwXCIsXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZThcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiNlNzk2M2RcIixcclxuICAgICAgICBcIiNlYTllNGJcIixcclxuICAgICAgICBcIiNlZWE2NTlcIixcclxuICAgICAgICBcIiNmMGFlNjhcIixcclxuICAgICAgICBcIiNmMmI2NzhcIixcclxuICAgICAgICBcIiNmM2JmODdcIixcclxuICAgICAgICBcIiNmNWM3OThcIixcclxuICAgICAgICBcIiNmNmQwYWFcIixcclxuICAgICAgICBcIiNmN2Q5YmJcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lOVwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzY0YThiNFwiLFxyXG4gICAgICAgIFwiIzdlYmVjMFwiLFxyXG4gICAgICAgIFwiIzljYzljYVwiLFxyXG4gICAgICAgIFwiI2I4ZDRkNFwiLFxyXG4gICAgICAgIFwiI2Q5ZDZjZFwiLFxyXG4gICAgICAgIFwiI2Q4YjdhN1wiLFxyXG4gICAgICAgIFwiI2NlOGY5M1wiLFxyXG4gICAgICAgIFwiI2MxNjI3ZlwiLFxyXG4gICAgICAgIFwiI2FkMjQ1OFwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxMFwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzQxNzZiYVwiLFxyXG4gICAgICAgIFwiIzU1OWFlOFwiLFxyXG4gICAgICAgIFwiIzcwYjNlOFwiLFxyXG4gICAgICAgIFwiI2E3Y2NlN1wiLFxyXG4gICAgICAgIFwiI2RmZGZkZlwiLFxyXG4gICAgICAgIFwiI2QyYTA4YlwiLFxyXG4gICAgICAgIFwiI2M3NmE1MFwiLFxyXG4gICAgICAgIFwiI2NhNGUzNFwiLFxyXG4gICAgICAgIFwiI2FhM2MyOVwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICBdO1xyXG4gIHN0YXJ0RWRpdCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93U3ViVG90YWxHcm91cDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93Z3JhbmRUb3RhbEdyb3VwOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dUYWJsZUdyYW5kVG90YWxHcm91cDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBDdXJyZW50X1BvcnRsZXRJZDtcclxuICBwdWJsaWMgcmVzdG9yZU1vZGVsOiBhbnkgPSBbXTtcclxuICBwdWJsaWMgdGhlbWVPYmogPSB7fTtcclxuICBlbmFibGVNdWx0aXBsZUF4aXMgPSBmYWxzZTtcclxuICBzaG93TGVnZW5kID0gZmFsc2U7XHJcbiAgdGltZXI7XHJcbiAgdGFiTGlzdDtcclxuICBhY3RpdmVUYWIgPSAxO1xyXG4gIHByZXZJZCA9IG51bGw7XHJcbiAgZGFzaGJvYXJkX3NpZGViYXIgPSBmYWxzZTtcclxuICBBY3RpdmVEYXNoYm9hcmRQb3J0bGV0cyA9IFtdO1xyXG4gIHBvcnRsZXRzID0gW107XHJcbiAgaGFzUmVzaXplID0gZmFsc2U7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJwYW5lc0xpc3RcIiwgeyBzdGF0aWM6IHRydWUgfSkgcGFuZXNMaXN0OiBFbGVtZW50UmVmO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRhc2hib2FyZFNlcnZpY2U6IERhc2hib2FyZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwaTogQXBpTGlzdCxcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHVibGljIERhc2hib2FyZFBvcmxldHNTZXJ2aWNlOiBEYXNoYm9hcmRQb3JsZXRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUEJGX1RPS0VOKSBwcml2YXRlIHBiZjogYW55LFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBUElfU0VSVklDRV9UT0tFTikgcHJpdmF0ZSBodHRwOiBhbnksXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFJPTEVfU0VSVklDRV9UT0tFTikgcHVibGljIHJzOiBhbnlcclxuICApIHtcclxuICAgIHRoaXMucm91dGVyLmV2ZW50c1xyXG4gICAgICAucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChlOiBOYXZpZ2F0aW9uRW5kKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5oYXNSZXNpemUgJiZcclxuICAgICAgICAgIGUudXJsID09PSB0aGlzLmFjdGl2YXRlZFJvdXRlW1wiX3JvdXRlclN0YXRlXCJdLnNuYXBzaG90LnVybFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkTGF5b3V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuQWN0aXZlRGFzaGJvYXJkUG9ydGxldHMgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5oYXNSZXNpemUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZ18ubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRMYXlvdXQucmVtb3ZlQWxsKCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnNldEFjdGl2ZURhc2hib2FyZFBvcnRsZXRzKCk7XHJcbiAgICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wYmYucGFnZUxvYWRpbmdfLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICBpZiAodGhpcy50aGVtZURhdGEgJiYgdGhpcy50aGVtZURhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnRoZW1lRGF0YS5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy50aGVtZU9ialtlLmlkXSA9IGVbXCJ2YWx1ZVwiXTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEluZm8oKTtcclxuICAgIHRoaXMuZ2V0RGFzaGJvYXJkKCk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMucGJmLnB1YiQuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICByZXMucmVmcmVzaFVybCAmJlxyXG4gICAgICAgICAgcmVzLnJlZnJlc2hVcmwgPT09IHRoaXMuYWN0aXZhdGVkUm91dGVbXCJfcm91dGVyU3RhdGVcIl0uc25hcHNob3QudXJsXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZ18ubmV4dCh0cnVlKTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdldERhc2hib2FyZCgpO1xyXG4gICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0RGFzaGJvYXJkUmVuYW1lKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmQgJiYgdGhpcy5kYXNoYm9hcmQuaWQgPT09IHJlcy5pZCkge1xyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmQuZGFzaGJvYXJkR3JvdXBOYW1lID0gcmVzLmRhc2hib2FyZEdyb3VwTmFtZTtcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkLmRhc2hib2FyZEdyb3VwSWQgPSByZXMuZGFzaGJvYXJkR3JvdXBJZDtcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkLmRlc2NyaXB0aW9uID0gcmVzLmRlc2NyaXB0aW9uO1xyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmQubmFtZSA9IHJlcy5uYW1lO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVEYXNoYm9hcmRMYXN0VXBkYXRlRGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5nZXRDdXN0b21pemVTdGF0dXMoKS5zdWJzY3JpYmUoKGlkKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkICYmIHRoaXMuZGFzaGJvYXJkLmlkID09PSBpZCkge1xyXG4gICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5wYmYuZ2V0SGFzUmVzaXplKCkuc3Vic2NyaWJlKCh1cmwpID0+IHtcclxuICAgICAgICBpZiAodXJsKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5hY3RpdmF0ZWRSb3V0ZVtcIl9yb3V0ZXJTdGF0ZVwiXS5zbmFwc2hvdC51cmwgPT09IHVybCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmRMYXlvdXQpIHtcclxuICAgICAgICAgICAgICB0aGlzLkFjdGl2ZURhc2hib2FyZFBvcnRsZXRzID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRMYXlvdXQucmVtb3ZlQWxsKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVEYXNoYm9hcmRQb3J0bGV0cygpO1xyXG4gICAgICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFzUmVzaXplID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBbGxGaWVsZHMoaXRlbSwgbm9EZXRlY3QgPSBmYWxzZSk6IFByb21pc2U8YW55W10+IHtcclxuICAgIGlmICghbm9EZXRlY3QpIHtcclxuICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgY29uc3QgZGF0YU1hcnRDb2RlID0gaXRlbS5maWd1cmVDb2RlO1xyXG4gICAgICBjb25zdCBkYXRhT2JqID0ge1xyXG4gICAgICAgIGxhbmd1YWdlOiB0aGlzLmxhbmcsXHJcbiAgICAgICAgZGF0YU1hcnRDb2RlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLkRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnNldFNjaGVtYVBhcmFtcyhcclxuICAgICAgICBkYXRhT2JqLFxyXG4gICAgICAgIGRhdGFNYXJ0Q29kZSxcclxuICAgICAgICB0aGlzLmRhc2hib2FyZFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmh0dHAucG9zdCh0aGlzLmFwaS51cmxMaXN0LkdldFNjaGVtYSwgZGF0YU9iaiwgKHJlcykgPT4ge1xyXG4gICAgICAgIGlmICghbm9EZXRlY3QpIHtcclxuICAgICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZ18ubmV4dCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzb2x2ZShyZXMpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZVJpZ2h0KGUpIHtcclxuICAgIHRoaXMucHVzaF9idG4gPSBmYWxzZTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldEFjdGl2ZURhc2hib2FyZFBvcnRsZXRzKG5vRGV0ZWN0ID0gZmFsc2UpIHtcclxuICAgIGlmICh0aGlzLmhhc0NoYW5nZURhdGFUYWJsZSkge1xyXG4gICAgICB0aGlzLkFjdGl2ZURhc2hib2FyZFBvcnRsZXRzID0gW107XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcG9ydGxldHMgPVxyXG4gICAgICB0aGlzLnBvcnRsZXRzLmZpbHRlcigocG9ydGxldCkgPT4ge1xyXG4gICAgICAgIGlmICghcG9ydGxldCB8fCAhcG9ydGxldC5jb25maWcpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY29uZmlnID0gSlNPTi5wYXJzZShwb3J0bGV0LmNvbmZpZyk7XHJcbiAgICAgICAgY29uc3QgdGFiSWQgPSBjb25maWcudGFiSWQgfHwgMTtcclxuICAgICAgICBpZiAodGFiSWQgPT09IHRoaXMuYWN0aXZlVGFiKSB7XHJcbiAgICAgICAgICByZXR1cm4gcG9ydGxldDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pIHx8IFtdO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuQWN0aXZlRGFzaGJvYXJkUG9ydGxldHMgPSBbLi4ucG9ydGxldHNdO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIXRoaXMuQWN0aXZlRGFzaGJvYXJkUG9ydGxldHMubGVuZ3RoICYmXHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRMYXlvdXQgJiZcclxuICAgICAgICB0aGlzLmRhc2hib2FyZExheW91dC5wYW5lbHMgJiZcclxuICAgICAgICB0aGlzLmRhc2hib2FyZExheW91dC5wYW5lbHMubGVuZ3RoXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkTGF5b3V0LnJlbW92ZUFsbCgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaGFzQ2hhbmdlRGF0YVRhYmxlID0gZmFsc2U7XHJcbiAgICAgIGlmICghbm9EZXRlY3QpIHtcclxuICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25BY3RpdmVUYWIodGFiLCBpbmRleCkge1xyXG4gICAgdGhpcy5kYXNoYm9hcmRfc2lkZWJhciA9IGZhbHNlO1xyXG4gICAgdGhpcy5wdXNoX2J0biA9IGZhbHNlO1xyXG4gICAgY29uc3QgeyBpZCwgbGFiZWwgfSA9IHRhYjtcclxuICAgIGlmICh0YWIuaWQgPT09IHRoaXMuYWN0aXZlVGFiKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlVGFiSWQgPSBpZDtcclxuICAgIHRoaXMuYWN0aXZlVGFiTGFiZWwgPSBsYWJlbDtcclxuICAgIGlmIChpbmRleCAhPT0gMCkge1xyXG4gICAgICB0aGlzLnByZXZJZCA9IHRoaXMudGFiTGlzdFtpbmRleCAtIDFdLmlkO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdGFydEVkaXQgPSBmYWxzZTtcclxuICAgIHRoaXMuYWN0aXZlVGFiID0gaWQ7XHJcbiAgICB0aGlzLnNldEFjdGl2ZURhc2hib2FyZFBvcnRsZXRzKCk7XHJcbiAgfVxyXG5cclxuICBvbkRlbGV0ZVRhYihpdGVtKSB7XHJcbiAgICBsZXQgX3RpdGxlID1cclxuICAgICAgdGhpcy50cmFuc2xhdGlvbi5BUkVfWU9VX1NVUkVfVE9fREVMRVRFX0RBU0hCT0FSRF9UQUJfV0FSTklOR19NRVNTQUdFIHx8XHJcbiAgICAgIFwiLkFSRV9ZT1VfU1VSRV9UT19ERUxFVEVfREFTSEJPQVJEX1RBQl9XQVJOSU5HX01FU1NBR0VcIjtcclxuICAgIF90aXRsZSA9IF90aXRsZS5yZXBsYWNlKFwie1RhYiBOYW1lfVwiLCBpdGVtLmxhYmVsKTtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5zaG93Q29tbW9uRGlsYW9nKHtcclxuICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRpb24uREVMRVRFX1JFQ09SRCB8fCBcIi5ERUxFVEVfUkVDT1JEXCIsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBfdGl0bGUsXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMgPT09IFwic2F2ZVwiKSB7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmUgPSB0aGlzLmFjdGl2ZVRhYiA9PT0gaXRlbS5pZDtcclxuICAgICAgICBsZXQgaW5kZXggPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnBvcnRsZXRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICBjb25zdCBjb25maWcgPSBKU09OLnBhcnNlKHRoaXMucG9ydGxldHNbaV0uY29uZmlnKTtcclxuICAgICAgICAgIGlmIChjb25maWcudGFiSWQgPT09IHRoaXMuYWN0aXZlVGFiKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9ydGxldHMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRhYkxpc3QuZm9yRWFjaCgodGFiLCBpKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGFiLmlkID09PSBpdGVtLmlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFiTGlzdC5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgIGluZGV4ID0gaTtcclxuICAgICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoaXNBY3RpdmUpIHtcclxuICAgICAgICAgIGlmICghdGhpcy50YWJMaXN0W2luZGV4XSkge1xyXG4gICAgICAgICAgICBpbmRleCAtPSAxO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSB0aGlzLnRhYkxpc3RbaW5kZXhdLmlkO1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWJJZCA9IHRoaXMuYWN0aXZlVGFiO1xyXG4gICAgICAgICAgdGhpcy5wb3J0bGV0cy5mb3JFYWNoKChwb3J0bGV0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IEpTT04ucGFyc2UocG9ydGxldC5jb25maWcpO1xyXG4gICAgICAgICAgICBjb25maWcuYWN0aXZlVGFiID0gdGhpcy5hY3RpdmVUYWI7XHJcbiAgICAgICAgICAgIHBvcnRsZXQuY29uZmlnID0gQ2lyY3VsYXJKU09OLnN0cmluZ2lmeShjb25maWcpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLm9uQWN0aXZlVGFiKHRoaXMudGFiTGlzdFtpbmRleF0sIGluZGV4KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zYXZlZGFzaGJvYXJkKFwidHJ1ZVwiKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkFkZFRhYigpIHtcclxuICAgIGNvbnN0IGxhYmVsID0gYFRhYiAke3RoaXMudGFiTGlzdC5sZW5ndGggKyAxfWA7XHJcbiAgICB0aGlzLnByZXZJZCA9IHRoaXMudGFiTGlzdFt0aGlzLnRhYkxpc3QubGVuZ3RoIC0gMV0uaWQ7XHJcbiAgICBsZXQgbmV3SWQgPSAxO1xyXG4gICAgdGhpcy50YWJMaXN0LmZvckVhY2goKHRhYikgPT4ge1xyXG4gICAgICBuZXdJZCA9IE1hdGgubWF4KG5ld0lkLCB0YWIuaWQpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IG5ld0lkICsgMTtcclxuICAgIHRoaXMudGFiTGlzdC5wdXNoKHtcclxuICAgICAgaWQ6IHRoaXMuYWN0aXZlVGFiLFxyXG4gICAgICBsYWJlbCxcclxuICAgICAgZGlzcGxheUxhYmVsOiBgJHt0aGlzLnRyYW5zbGF0aW9uLlRBQiB8fCBcIlRhYlwifSAke1xyXG4gICAgICAgIHRoaXMudGFiTGlzdC5sZW5ndGggKyAxXHJcbiAgICAgIH1gLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmFjdGl2ZVRhYklkID0gdGhpcy5hY3RpdmVUYWI7XHJcbiAgICB0aGlzLmFjdGl2ZVRhYkxhYmVsID0gbGFiZWw7XHJcbiAgICAvLyDpmpDol4/lj7Pkvqfoj5zljZXvvIzmuIXpmaTlvZPliY3pgInkuK3nmoRwb3J0bGV0XHJcbiAgICB0aGlzLnBvcnRsZXQgPSBudWxsO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRfc2lkZWJhciA9IGZhbHNlO1xyXG4gICAgdGhpcy5oYXNDaGFuZ2VEYXRhVGFibGUgPSB0cnVlO1xyXG4gICAgdGhpcy5wdXNoX2J0biA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZXRBY3RpdmVEYXNoYm9hcmRQb3J0bGV0cygpO1xyXG4gIH1cclxuXHJcbiAgc2V0VGFiSW5wdXQoZSkge1xyXG4gICAgdGhpcy5wb3J0bGV0cy5mb3JFYWNoKChwb3J0bGV0KSA9PiB7XHJcbiAgICAgIGNvbnN0IF9jb25maWcgPSBKU09OLnBhcnNlKHBvcnRsZXQuY29uZmlnKTtcclxuICAgICAgY29uc3QgX3RhYklkID0gX2NvbmZpZy50YWJJZCB8fCAxO1xyXG4gICAgICBpZiAoX3RhYklkID09PSB0aGlzLmFjdGl2ZVRhYikge1xyXG4gICAgICAgIF9jb25maWcudGFiTGFiZWwgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgICBwb3J0bGV0LmNvbmZpZyA9IENpcmN1bGFySlNPTi5zdHJpbmdpZnkoX2NvbmZpZyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzYXZlVGFiSW5wdXQoaXRlbSkge1xyXG4gICAgdGhpcy5zdGFydEVkaXQgPSBmYWxzZTtcclxuICAgIGl0ZW0uZGlzcGxheUxhYmVsID0gdGhpcy50cnVuY2F0ZVRleHQoaXRlbS5sYWJlbCk7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uU3RhcnRFZGl0KGlkKSB7XHJcbiAgICBpZiAoIXRoaXMuY3VzdG9taXplZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hY3RpdmVUYWIgIT09IGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc3RhcnRFZGl0ID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFRhYkxpc3Qobm9EZXRlY3QgPSBmYWxzZSkge1xyXG4gICAgdGhpcy50YWJMaXN0ID0gW107XHJcbiAgICBpZiAoIXRoaXMuYWN0aXZlVGFiIHx8ICF0aGlzLnN0YXlBY3RpdmVUYWIpIHtcclxuICAgICAgdGhpcy5hY3RpdmVUYWIgPSAxO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcmV2SWQgPSBudWxsO1xyXG4gICAgY29uc3QgdGFiTWFwID0ge307XHJcbiAgICB0aGlzLnBvcnRsZXRzLmZvckVhY2goKHBvcnRsZXQsIGlkeCkgPT4ge1xyXG4gICAgICBpZiAocG9ydGxldC5jb25maWcpIHtcclxuICAgICAgICBjb25zdCBjb25maWcgPSBKU09OLnBhcnNlKHBvcnRsZXQuY29uZmlnKTtcclxuICAgICAgICBjb25zdCB0eHQgPSB0aGlzLnRyYW5zbGF0aW9uW1wiVEFCXCJdIHx8IFwiVGFiXCI7XHJcbiAgICAgICAgaWYgKGNvbmZpZy5hY3RpdmVUYWIgJiYgIXRoaXMuc3RheUFjdGl2ZVRhYikge1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSBjb25maWcuYWN0aXZlVGFiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB0YWJJZCA9IGNvbmZpZy50YWJJZCB8fCAxO1xyXG4gICAgICAgIGNvbnN0IHRhYkxhYmVsID0gY29uZmlnLnRhYkxhYmVsIHx8IFwiVGFiIDFcIjtcclxuICAgICAgICBsZXQgZGlzcGxheUxhYmVsID0gY29uZmlnLnRhYkxhYmVsIHx8IGAke3R4dH0gMWA7XHJcbiAgICAgICAgaWYgKGNvbmZpZy50YWJMYWJlbCAmJiBjb25maWcudGFiTGFiZWwuc3RhcnRzV2l0aChcIlRhYlwiKSkge1xyXG4gICAgICAgICAgZGlzcGxheUxhYmVsID0gdHh0ICsgY29uZmlnLnRhYkxhYmVsLnNsaWNlKDMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRhYk1hcFt0YWJJZF0pIHtcclxuICAgICAgICAgIHRoaXMudGFiTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgaWQ6IHRhYklkLFxyXG4gICAgICAgICAgICBsYWJlbDogdGFiTGFiZWwsXHJcbiAgICAgICAgICAgIGRpc3BsYXlMYWJlbDogdGFiTGFiZWxcclxuICAgICAgICAgICAgICA/IHRoaXMudHJ1bmNhdGVUZXh0KGRpc3BsYXlMYWJlbClcclxuICAgICAgICAgICAgICA6IGAke3RoaXMudHJhbnNsYXRpb24uVEFCIHx8IFwiVGFiXCJ9IDFgLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0YWJNYXBbdGFiSWRdID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGlmICghdGhpcy5hY3RpdmVUYWJJZCkge1xyXG4gICAgICAgIC8vIFx0dGhpcy5hY3RpdmVUYWIgPSB0YWJJZDtcclxuICAgICAgICAvLyBcdHRoaXMuYWN0aXZlVGFiSWQgPSB0YWJJZDtcclxuICAgICAgICAvLyBcdHRoaXMuYWN0aXZlVGFiTGFiZWwgPSB0YWJMYWJlbDtcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghdGhpcy50YWJMaXN0Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnRhYkxpc3QgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWQ6IDEsXHJcbiAgICAgICAgICBsYWJlbDogXCJUYWIgMVwiLFxyXG4gICAgICAgICAgZGlzcGxheUxhYmVsOiBgJHt0aGlzLnRyYW5zbGF0aW9uLlRBQiB8fCBcIlRhYlwifSAxYCxcclxuICAgICAgICB9LFxyXG4gICAgICBdO1xyXG4gICAgICB0aGlzLmFjdGl2ZVRhYklkID0gMTtcclxuICAgICAgdGhpcy5hY3RpdmVUYWJMYWJlbCA9IFwiVGFiIDFcIjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRhYkxpc3QgPSB0aGlzLnRhYkxpc3Quc29ydCgoYSwgYikgPT4gYS5pZCAtIGIuaWQpO1xyXG4gICAgY29uc3QgYWN0aXZlVGFiID1cclxuICAgICAgdGhpcy50YWJMaXN0LmZpbmQoKGkpID0+IGkuaWQgPT09IHRoaXMuYWN0aXZlVGFiKSB8fCB0aGlzLnRhYkxpc3RbMF07XHJcbiAgICBpZiAoYWN0aXZlVGFiLmlkKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlVGFiSWQgPSBhY3RpdmVUYWIuaWQ7XHJcbiAgICAgIHRoaXMuYWN0aXZlVGFiTGFiZWwgPSBhY3RpdmVUYWIubGFiZWw7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXlBY3RpdmVUYWIgPSBmYWxzZTtcclxuICAgIHRoaXMuc2V0UHJldklkKCk7XHJcbiAgICBpZiAoIW5vRGV0ZWN0KSB7XHJcbiAgICAgIHRoaXMuc2V0QWN0aXZlRGFzaGJvYXJkUG9ydGxldHMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGluaXRsYXlvdXQoc2hvdWxkR2V0RmllbGRzID0gZmFsc2UsIG5vRGV0ZWN0ID0gZmFsc2UpIHtcclxuICAgIGlmICghc2hvdWxkR2V0RmllbGRzKSB7XHJcbiAgICAgIHRoaXMuaW5pdFRhYkxpc3Qobm9EZXRlY3QpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucG9ydGxldHMgJiYgdGhpcy5wb3J0bGV0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAobGV0IHBvcnRsZXQgb2YgdGhpcy5wb3J0bGV0cykge1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZzogYW55ID0gSlNPTi5wYXJzZShwb3J0bGV0LmNvbmZpZyk7XHJcbiAgICAgICAgaWYgKHNob3VsZEdldEZpZWxkcykge1xyXG4gICAgICAgICAgLy8gR2V0U2NoZW1h6YWN572u55qE5YiX5pWw5o2u5rqQXHJcbiAgICAgICAgICBjb25zdCBmaWVsZHM6IGFueVtdID0gYXdhaXQgdGhpcy5nZXRBbGxGaWVsZHMocG9ydGxldCk7XHJcbiAgICAgICAgICAvLyDmr4/kuKpwb3J0bGV06Ieq5a6a5LmJ55qE5pWw5o2uXHJcbiAgICAgICAgICBjb25maWcuZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChmaWVsZC5mb3JtYXQpIHtcclxuICAgICAgICAgICAgICBmaWVsZHMuZm9yRWFjaCgoX2YpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChfZi5jb2xOYW1lID09PSBmaWVsZC5jb2xOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgIF9mLmZvcm1hdCA9IGZpZWxkLmZvcm1hdDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBpdGVtID0gZmllbGRzLmZpbmQoKF9mKSA9PiBfZi5jb2xOYW1lID09PSBmaWVsZC5jb2xOYW1lKTtcclxuICAgICAgICAgICAgaWYgKCFpdGVtKSB7XHJcbiAgICAgICAgICAgICAgZmllbGRzLnB1c2goZmllbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmIChjb25maWcucG9ydGxldFR5cGUgPT09IFwicGl2b3RcIikge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIGNvbmZpZy5maWVsZHMgPSBmaWVsZHM7XHJcbiAgICAgICAgICAgIHBvcnRsZXQuY29uZmlnID0gQ2lyY3VsYXJKU09OLnN0cmluZ2lmeShjb25maWcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBwb3J0bGV0Lm5ld0lkID0gXCJwb3J0bGV0X1wiICsgdGhpcy5wYmYuR3VpZCgpO1xyXG4gICAgICAgIHBvcnRsZXQuY29sID0gcG9ydGxldC5wb3NYO1xyXG4gICAgICAgIHBvcnRsZXQucm93ID0gcG9ydGxldC5wb3NZO1xyXG4gICAgICAgIHBvcnRsZXQuc2l6ZVggPSBwb3J0bGV0LndpZHRoO1xyXG4gICAgICAgIHBvcnRsZXQuc2l6ZVkgPSBwb3J0bGV0LmhlaWdodDtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pbml0Q2hhckRhdGEobm9EZXRlY3QpO1xyXG4gICAgICB0aGlzLnNldEFjdGl2ZURhc2hib2FyZFBvcnRsZXRzKG5vRGV0ZWN0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuQWN0aXZlRGFzaGJvYXJkUG9ydGxldHMgPSBbXTtcclxuICAgICAgdGhpcy5kYXNoYm9hcmRMYXlvdXQucmVtb3ZlQWxsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5wYmYuZ2V0VHJpZ2dlckRhc2hib2FyZEZpbHRlckNoYW5nZSgpLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRhc2hib2FySWQgPSBlW1wiaWRcIl07XHJcbiAgICAgICAgY29uc3QgbmV3SWQgPSBlW1wibmV3SWRcIl07XHJcbiAgICAgICAgaWYgKGRhc2hib2FySWQgIT09IHRoaXMuZGFzaGJvYXJkLmlkKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmlsdGVyRGF0YShuZXdJZCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2VcclxuICAgICAgICAuZ2V0Y2hhbmdlbGF5b3V0KClcclxuICAgICAgICAuc3Vic2NyaWJlKCh7IHN0YXR1cywgaWQgPSBcIlwiIH0pID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmRhc2hib2FyZCAmJiB0aGlzLmRhc2hib2FyZC5pZCA9PT0gaWQpIHtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gc3RhdHVzID09PSBcInRydWVcIiA/IGZhbHNlIDogdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5pbml0bGF5b3V0KHBhcmFtcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5lZGl0UHJvcGVydGllcygpLnN1YnNjcmliZSgoeyBzdGF0dXMsIGlkIH0pID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuZGFzaGJvYXJkIHx8IHRoaXMuZGFzaGJvYXJkLmlkICE9PSBpZCB8fCB0aGlzLnRpbWVyKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMudGltZXIgPSBudWxsO1xyXG4gICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2cuY2xvc2VBbGwoKTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1xyXG4gICAgICAgICAgLm9wZW4oRGF0YU1hcnROZXdDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgIGVkaXQ6IHN0YXR1cyxcclxuICAgICAgICAgICAgICBkYXNoYm9hcmRJZDogdGhpcy51cmxfaWQsXHJcbiAgICAgICAgICAgICAgZGFzaGJvYXJkOiB0aGlzLmRhc2hib2FyZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgaGVpZ2h0OiBcIjg1JVwiLFxyXG4gICAgICAgICAgICB3aWR0aDogXCI1NSVcIixcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBcInJlcG9ydC1kaWFsb2dcIixcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWUpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgeyBwdXNoX2J0biwgcG9ydGxldCwgZGFzaGJvYXJkIH0gPSBlO1xyXG4gICAgICAgICAgICB0aGlzLmRhc2hib2FyZCA9IGNsb25lRGVlcChkYXNoYm9hcmQpO1xyXG4gICAgICAgICAgICB0aGlzLnBvcnRsZXQgPSBjbG9uZURlZXAocG9ydGxldCk7XHJcbiAgICAgICAgICAgIHRoaXMucHVzaF9idG4gPSBwdXNoX2J0bjtcclxuICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZURhdGFtYXJ0RW50aXR5Lm5leHQodGhpcy5kYXNoYm9hcmQpO1xyXG4gICAgICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0RG93bmxvYWREYXNoYm9yZCgpLnN1YnNjcmliZSgoaWQpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmQgJiYgdGhpcy5kYXNoYm9hcmQuaWQgPT09IGlkKSB7XHJcbiAgICAgICAgICAvLyB0aGlzLmRvd25sb2FkQWxsKCk7XHJcbiAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuQWN0aXZlRGFzaGJvYXJkUG9ydGxldHMpIHtcclxuICAgICAgICAgICAgdGhpcy5kb3dubG9hZChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5nZXRhZGRwb3J0bGV0KCkuc3Vic2NyaWJlKChpZCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmRhc2hib2FyZCAmJiB0aGlzLmRhc2hib2FyZC5pZCA9PT0gaWQpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnBvcnRsZXQpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3J0bGV0cy5wdXNoKHRoaXMucG9ydGxldCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgbGV0IGNvbmZpZzogYW55ID1cclxuICAgICAgICAgICAgdGhpcy5wb3J0bGV0LmNvbmZpZyBpbnN0YW5jZW9mIFN0cmluZ1xyXG4gICAgICAgICAgICAgID8gSlNPTi5wYXJzZSh0aGlzLnBvcnRsZXQuY29uZmlnKVxyXG4gICAgICAgICAgICAgIDogdGhpcy5wb3J0bGV0LmNvbmZpZztcclxuICAgICAgICAgIGlmICh0eXBlb2YgY29uZmlnID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIGNvbmZpZyA9IEpTT04ucGFyc2UoY29uZmlnKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBwb3J0bGV0VHlwZSA9XHJcbiAgICAgICAgICAgIGNvbmZpZy5wb3J0bGV0VHlwZSA9PT0gXCJoaXN0b3JpY2FsSVJSXCJcclxuICAgICAgICAgICAgICA/IGNvbmZpZy5zZWxlY3RlZFZpc3VhbFR5cGVcclxuICAgICAgICAgICAgICA6IGNvbmZpZy5wb3J0bGV0VHlwZTtcclxuXHJcbiAgICAgICAgICAvLyDlj6rmnInmlrDlop7nmoRQb3JsZXTmmK/lm77ooajnsbvmiY3pnIDopoHliJ3lp4vljJZcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5wb3J0bGV0ICYmXHJcbiAgICAgICAgICAgIHRoaXMucG9ydGxldC5jb25maWcgJiZcclxuICAgICAgICAgICAgW1wibmV3Y29sdW1uXCIsIFwibmV3bGluZVwiLCBcIm5ld2NvbHVtbmxpbmVcIl0uaW5jbHVkZXMocG9ydGxldFR5cGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5pbml0Q2hhckRhdGEoKTsgLy8g5ou85o6lQ2hhcnTpnIDopoHnlKjnmoTmlbDmja7mupBcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZ2V0TmV3UG9zaXRpb24oKTtcclxuICAgICAgICAgIHRoaXMuc2V0QWN0aXZlRGFzaGJvYXJkUG9ydGxldHMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5nZXRMZWZ0TWVudUJhcigpLnN1YnNjcmliZSgob3BlbikgPT4ge1xyXG4gICAgICAgIGxldCB3aWR0aCA9IHRoaXMucGFuZXNMaXN0Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgIHRoaXMucGFuZXNMaXN0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0aCAtIDE5NSArIFwicHhcIjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5wYW5lc0xpc3QubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IHdpZHRoICsgMTk1ICsgXCJweFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBAZGVib3VuY2UoMTAwKVxyXG4gIHByaXZhdGUgZmlsdGVyRGF0YShpZCkge1xyXG4gICAgdGhpcy5jaGFydFVwZGF0ZShpZCk7XHJcbiAgfVxyXG5cclxuICBjaGFydFVwZGF0ZShpZD86IHN0cmluZykge1xyXG4gICAgdGhpcy5oYXNDaGFuZ2VEYXRhVGFibGUgPSB0cnVlO1xyXG4gICAgaWYgKGlkKSB7XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5jaGFydFVwZGF0ZS5uZXh0KGlkKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5pdENoYXJEYXRhKCk7IC8vIOaLvOaOpUNoYXJ06ZyA6KaB55So55qE5pWw5o2u5rqQXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWIpID0+IHtcclxuICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBnZXRJbmZvKCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvbiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ0cmFuc2xhdGlvblwiKSk7XHJcbiAgICB0aGlzLmxhbmcgPSB0aGlzLnBiZi5nZXRMYW5ndWFnZVBhcmFtcygpO1xyXG4gICAgdGhpcy5kYXRlUGlwZUZvcm1hdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZGF0ZVBpcGVcIik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UG9ybGV0Q29uZmlnKHBvcnRsZXQpIHtcclxuICAgIGlmICghcG9ydGxldC5jb25maWcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29uZmlnID0gSlNPTi5wYXJzZShwb3J0bGV0LmNvbmZpZyk7XHJcbiAgICBpZiAoIWNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2hvd0xlZ2VuZCA9XHJcbiAgICAgICEhY29uZmlnLnB2dGFibGVDaGFydFNldHRpbmcuY2hhcnRTZXR0aW5ncy5sZWdlbmRTZXR0aW5ncy52aXNpYmxlO1xyXG4gICAgdGhpcy5lbmFibGVNdWx0aXBsZUF4aXMgPVxyXG4gICAgICBjb25maWcucHZ0YWJsZUNoYXJ0U2V0dGluZy5jaGFydFNldHRpbmdzLmVuYWJsZU11bHRpcGxlQXhpcztcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVGhlbWUoZSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzZWxlY3RlZFgsXHJcbiAgICAgIHNlbGVjdGVkWSxcclxuICAgICAgc2VsZWN0ZWRTZWNvbmRZLFxyXG4gICAgICBzZWxlY3RlZE11bHRpcGxlcyxcclxuICAgICAgc2VsZWN0VGhlbWUsXHJcbiAgICB9ID0gZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRYID0gc2VsZWN0ZWRYO1xyXG4gICAgdGhpcy5zZWxlY3RlZFkgPSBzZWxlY3RlZFk7XHJcbiAgICB0aGlzLnNlbGVjdGVkU2Vjb25kWSA9IHNlbGVjdGVkU2Vjb25kWTtcclxuICAgIHRoaXMuc2VsZWN0ZWRNdWx0aXBsZXMgPSBzZWxlY3RlZE11bHRpcGxlcztcclxuICAgIHRoaXMuc2VsZWN0VGhlbWUgPSBzZWxlY3RUaGVtZTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZURhc2hib2FyZChlKSB7XHJcbiAgICBjb25zdCB7IHBvcnRsZXRzLCBkYXNoYm9hcmQsIG5vRGV0ZWN0LCBzdGF5QWN0aXZlVGFiIH0gPSBlO1xyXG4gICAgdGhpcy5zdGF5QWN0aXZlVGFiID0gc3RheUFjdGl2ZVRhYjtcclxuICAgIHRoaXMuZGFzaGJvYXJkID0gY2xvbmVEZWVwKGRhc2hib2FyZCk7XHJcbiAgICB0aGlzLnBvcnRsZXRzID0gWy4uLnBvcnRsZXRzXTtcclxuICAgIGlmICghbm9EZXRlY3QpIHtcclxuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZURhdGFtYXJ0RW50aXR5Lm5leHQoZGFzaGJvYXJkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUG9ybGV0Q29uZmlnKGUpIHtcclxuICAgIGNvbnN0IHsgbmV3SWQsIGNvbmZpZyB9ID0gZTtcclxuICAgIGNvbnN0IF9jb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBjb25maWcpO1xyXG4gICAgdGhpcy5wb3J0bGV0LmNvbmZpZyA9IENpcmN1bGFySlNPTi5zdHJpbmdpZnkoX2NvbmZpZyk7XHJcbiAgICB0aGlzLnBvcnRsZXRzLmZvckVhY2goKHBvcnRsZXQsIGkpID0+IHtcclxuICAgICAgaWYgKHBvcnRsZXQubmV3SWQgPT09IG5ld0lkKSB7XHJcbiAgICAgICAgdGhpcy5wb3J0bGV0c1tpXS5jb25maWcgPSBDaXJjdWxhckpTT04uc3RyaW5naWZ5KF9jb25maWcpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMucG9ydGxldHMgPSBbLi4udGhpcy5wb3J0bGV0c107XHJcbiAgICB0aGlzLnNldEFjdGl2ZURhc2hib2FyZFBvcnRsZXRzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZWRpdChpdGVtKSB7XHJcbiAgICBjb25zdCBjb25maWcgPSBKU09OLnBhcnNlKGl0ZW0uY29uZmlnKTtcclxuICAgIGNvbnN0IHBvcnRsZXRUeXBlID1cclxuICAgICAgY29uZmlnLnBvcnRsZXRUeXBlID09PSBcImhpc3RvcmljYWxJUlJcIlxyXG4gICAgICAgID8gY29uZmlnLnNlbGVjdGVkVmlzdWFsVHlwZVxyXG4gICAgICAgIDogY29uZmlnLnBvcnRsZXRUeXBlO1xyXG4gICAgaWYgKFtcIm5ld2NvbHVtblwiLCBcIm5ld2xpbmVcIiwgXCJuZXdjb2x1bW5saW5lXCJdLmluY2x1ZGVzKHBvcnRsZXRUeXBlKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkWSA9IGNvbmZpZ1tcInNlbGVjdGVkWVwiXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFNlY29uZFkgPSBjb25maWcuc2VsZWN0ZWRTZWNvbmRZO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkWCA9IGNvbmZpZ1tcInNlbGVjdGVkWFwiXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE11bHRpcGxlcyA9IGNvbmZpZ1tcInNlbGVjdGVkTXVsdGlwbGVzXCJdO1xyXG4gICAgICB0aGlzLnNlbGVjdFRoZW1lID0gY29uZmlnW1wic2VsZWN0VGhlbWVcIl07XHJcbiAgICB9XHJcbiAgICB0aGlzLnBvcnRsZXQgPSBjbG9uZURlZXAoaXRlbSk7XHJcbiAgICBpZiAodGhpcy5wdXNoX2J0bikge1xyXG4gICAgICB0aGlzLnNpZGViYXIucG9ydGxldCA9IHRoaXMucG9ydGxldDtcclxuICAgIH1cclxuICAgIHRoaXMuZGFzaGJvYXJkX3NpZGViYXIgPSB0cnVlO1xyXG4gICAgdGhpcy5wdXNoX2J0biA9IHRydWU7XHJcbiAgICB0aGlzLmZpZ3VyZUNvZGUgPSBpdGVtLmZpZ3VyZUNvZGU7XHJcbiAgICB0aGlzLnRhYmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLnBvcnRsZXRFZGl0Lm5leHQodGhpcy51cmxfaWQpO1xyXG4gIH1cclxuXHJcbiAgQGRlYm91bmNlKDMwMClcclxuICBHZXRnYWRnZXRUaXRsZShjb25maWcpIHtcclxuICAgIGlmIChjb25maWcgJiYgY29uZmlnICE9PSBcIm51bGxcIikge1xyXG4gICAgICBsZXQgY29uZmlnXyA9IEpTT04ucGFyc2UoY29uZmlnKTtcclxuICAgICAgcmV0dXJuIGNvbmZpZ18uZ2FkZ2V0VGl0bGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRQb3J0bGV0VHlwZShpdGVtKSB7XHJcbiAgICBjb25zdCBjb25maWcgPSBpdGVtICYmIGl0ZW0uY29uZmlnID8gSlNPTi5wYXJzZShpdGVtLmNvbmZpZykgOiB7fTtcclxuICAgIGlmIChjb25maWcucG9ydGxldFR5cGUpIHtcclxuICAgICAgaWYgKGNvbmZpZy5wb3J0bGV0VHlwZSA9PT0gXCJoaXN0b3JpY2FsSVJSXCIpIHtcclxuICAgICAgICByZXR1cm4gY29uZmlnLnNlbGVjdGVkVmlzdWFsVHlwZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY29uZmlnLnBvcnRsZXRUeXBlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGV0ZShpdGVtKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucG9ydGxldHMuZmluZEluZGV4KCh4KSA9PiB4Lm5ld0lkID09PSBpdGVtLm5ld0lkKTtcclxuICAgIHRoaXMuZGFzaGJvYXJkTGF5b3V0LnJlbW92ZVBhbmVsKGl0ZW0ubmV3SWQpO1xyXG4gICAgdGhpcy5wb3J0bGV0cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgdGhpcy5zZXRBY3RpdmVEYXNoYm9hcmRQb3J0bGV0cygpO1xyXG4gICAgdGhpcy5nZXROZXdQb3NpdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvcHlQb3J0bGV0KGl0ZW0pIHtcclxuICAgIGNvbnN0IHBvcnRsZXQgPSB7IC4uLml0ZW0gfTtcclxuICAgIHBvcnRsZXQuaWQgPSBcIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiO1xyXG4gICAgcG9ydGxldC5uZXdJZCA9IFwicG9ydGxldF9cIiArIHRoaXMucGJmLkd1aWQoKTtcclxuICAgIC8vIOWkhOeQhiAxLuWkjeWItuWIq+eahOWkjeWItuS9kyAgMi7mlrDlu7rnmoTkuKrkvZMgMy7lt7LlrZjlnKjnmoTkuKrkvZNcclxuICAgIHBvcnRsZXQuY29weUlkID0gcG9ydGxldC5jb3B5SWRcclxuICAgICAgPyBwb3J0bGV0LmNvcHlJZFxyXG4gICAgICA6IGl0ZW0uaWQgPT09IFwiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCJcclxuICAgICAgPyBpdGVtLm5ld0lkXHJcbiAgICAgIDogaXRlbS5pZDtcclxuICAgIHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UucG9ydGxldERhdGFfTmV3W3RoaXMuZGFzaGJvYXJkLmlkXVtcclxuICAgICAgcG9ydGxldC5uZXdJZFxyXG4gICAgXSA9IGNsb25lRGVlcChcclxuICAgICAgdGhpcy5EYXNoYm9hcmRQb3JsZXRzU2VydmljZS5wb3J0bGV0RGF0YV9OZXdbdGhpcy5kYXNoYm9hcmQuaWRdW1xyXG4gICAgICAgIHBvcnRsZXQuY29weUlkXHJcbiAgICAgIF1cclxuICAgICk7XHJcbiAgICB0aGlzLnBvcnRsZXRzLnB1c2gocG9ydGxldCk7XHJcbiAgICB0aGlzLnNldEFjdGl2ZURhc2hib2FyZFBvcnRsZXRzKCk7XHJcbiAgICB0aGlzLmdldE5ld1Bvc2l0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0QXNvZmRhdGUoaXRlbSkge1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoaXRlbS5jb25maWcpLmFzT2ZEYXRlO1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0Q3VycmVuY3koY29uZmlnKSB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShjb25maWcpLmN1cnJlbmN5Q29kZTtcclxuICB9XHJcbiAgcHVibGljIGdldEZpZ3VyZWNvZGUoZmlndXJlQ29kZSkge1xyXG4gICAgc3dpdGNoIChmaWd1cmVDb2RlKSB7XHJcbiAgICAgIGNhc2UgXCJUYXNrc1wiOlxyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgICBjYXNlIFwiRnVuZExpc3RcIjpcclxuICAgICAgICByZXR1cm4gMjtcclxuICAgICAgY2FzZSBcIklSUlwiOlxyXG4gICAgICAgIHJldHVybiAzO1xyXG4gICAgICBjYXNlIFwiTm90ZXNcIjpcclxuICAgICAgICByZXR1cm4gNDtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIGdldFRhYmxlTmFtZShpdGVtKSB7XHJcbiAgICBsZXQgY29uZmlnID0gaXRlbS5jb25maWcgPyBKU09OLnBhcnNlKGl0ZW0uY29uZmlnKSA6IHt9O1xyXG4gICAgaWYgKGNvbmZpZy5wb3J0bGV0VHlwZSkge1xyXG4gICAgICBsZXQgdHlwZUxpc3QgPSBbXCJ0YWJsZVwiLCBcImZpbmFuY2lhbFRhYmxlXCIsIFwidHJhbnNwb3NlXCIsIFwicGl2b3RcIl07XHJcbiAgICAgIGxldCBpZHggPSB0eXBlTGlzdC5pbmRleE9mKGNvbmZpZy5wb3J0bGV0VHlwZSk7XHJcbiAgICAgIHJldHVybiBpZHggPiAtMSA/IHRydWUgOiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBwdXNoU2xpZGVyKCkge1xyXG4gICAgdGhpcy5wdXNoX2J0biA9ICF0aGlzLnB1c2hfYnRuO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWd1cmVDb2RlKGZpZ3VyZUNvZGUpIHtcclxuICAgIGxldCBjb2RlQXJyID0gW1wiVGFza3NcIiwgXCJGdW5kTGlzdFwiLCBcIklSUlwiLCBcIk5vdGVzXCJdO1xyXG4gICAgbGV0IGkgPSBjb2RlQXJyLmluZGV4T2YoZmlndXJlQ29kZSk7XHJcbiAgICByZXR1cm4gaSA+IC0xID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuICB4O1xyXG4gIHk7XHJcblxyXG4gIHB1YmxpYyBnZXREYXNoYm9hcmQoKSB7XHJcbiAgICB0aGlzLnVybCA9IFwiZGFzaGJvYXJkRGV0YWlsXCI7XHJcbiAgICBsZXQgdXJsX2FyciA9IHRoaXMucGJmLmdldFJvdXRlclVybCgpLnNwbGl0KFwiP1wiKTtcclxuICAgIHRoaXMudXJsX2lkID0gdGhpcy5wYmYuZ2V0VXJsSWQodXJsX2FyclswXSk7XHJcbiAgICB0aGlzLnVybF90eXBlID1cclxuICAgICAgdXJsX2FyclsxXSA9PSBcImRhc2hib2FyZFR5cGU9Y3VzdG9taXplZEJldGFcIlxyXG4gICAgICAgID8gXCJjdXN0b21pemVkQmV0YVwiXHJcbiAgICAgICAgOiB1cmxfYXJyWzFdID09IFwiZGFzaGJvYXJkVHlwZT1zaGFyZWRCZXRhXCJcclxuICAgICAgICA/IFwic2hhcmVkQmV0YVwiXHJcbiAgICAgICAgOiBcIlwiO1xyXG4gICAgdGhpcy5EYXNoYm9hcmRQb3JsZXRzU2VydmljZS5HZXREYXNoYm9hcmRWMShcclxuICAgICAgdGhpcy51cmxfaWQsXHJcbiAgICAgIHRydWUsXHJcbiAgICAgIChyZXMsIHBvcnRsZXRzID0gW10pID0+IHtcclxuICAgICAgICB0aGlzLmhhc0luaXQgPSB0cnVlO1xyXG4gICAgICAgIGlmICghcmVzKSB7XHJcbiAgICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmdfLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9ydGxldHMgPSBbLi4ucG9ydGxldHNdO1xyXG4gICAgICAgIHRoaXMuaW5pdGxheW91dChmYWxzZSwgdHJ1ZSk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UudXBkYXRlRGF0YW1hcnRFbnRpdHkubmV4dCh0aGlzLmRhc2hib2FyZCk7XHJcbiAgICAgICAgICAvLyB0aGlzLmNoYXJ0VXBkYXRlKCk7XHJcbiAgICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmdfLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgfSwgNTAwKTtcclxuICAgICAgfSxcclxuICAgICAgZmFsc2UsXHJcbiAgICAgIChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmRhc2hib2FyZCA9IE9iamVjdC5hc3NpZ24oe30sIHJlcyk7XHJcbiAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkTGF5b3V0KSB7XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZExheW91dC5yZWZyZXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgcHVibGljIHJvdXRlclBhZ2UoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiL3BhZ2VzL2Rhc2hib2FyZC9kYXNoYm9hcmRsaXN0XCIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRpc3BsYXlJY29uUHJvbXB0KGl0ZW0pIHtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKGl0ZW0uY29uZmlnKS5wb3J0bGV0VHlwZSB8fFxyXG4gICAgICB0aGlzLmdldEZpZ3VyZUNvZGUoaXRlbS5maWd1cmVDb2RlKVxyXG4gICAgICA/IGZhbHNlXHJcbiAgICAgIDogdHJ1ZTtcclxuICB9XHJcbiAgcHVibGljIGFzeW5jIGNvbmZpZ3VyYXRpb25zKGl0ZW0sIGV2ZW50KSB7XHJcbiAgICBjb25zdCBwb3J0bGV0VHlwZSA9IHRoaXMuZ2V0UG9ydGxldFR5cGUoaXRlbSk7XHJcbiAgICBzd2l0Y2ggKHBvcnRsZXRUeXBlKSB7XHJcbiAgICAgIGNhc2UgXCJ0YWJsZVwiOlxyXG4gICAgICAgIGNvbnN0IHRhYmxlID0gZmluZChcclxuICAgICAgICAgICh0aGlzLnRhYmxlIGFzIGFueSkuX3Jlc3VsdHMsXHJcbiAgICAgICAgICAoZWwpID0+IGVsLnBvcnRsZXQubmV3SWQgPT09IGl0ZW0ubmV3SWRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRhYmxlLmdyaWQgJiZcclxuICAgICAgICAgIHRhYmxlLmdyaWQuZ2V0Q3VycmVudFZpZXdSZWNvcmRzKCkgJiZcclxuICAgICAgICAgIHRhYmxlLmdyaWQuZ2V0Q3VycmVudFZpZXdSZWNvcmRzKCkubGVuZ3RoXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAvLyBsZXQgbWFzazogYW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNwaXZvdC10YWJsZS1tYXNrXCIpO1xyXG4gICAgICAgICAgLy8gaWYgKG1hc2spIG1hc2suc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcclxuICAgICAgICAgIGxldCBfeSA9IDA7XHJcbiAgICAgICAgICBpZiAoZXZlbnQgJiYgZXZlbnQudGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgeSB9ID0gZXZlbnQudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgICBpZiAoZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQgLSB5IDwgNDAwKSB7XHJcbiAgICAgICAgICAgICAgX3kgPSAtNDE1O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0YWJsZS5ncmlkICYmXHJcbiAgICAgICAgICAgIHRhYmxlLmdyaWQuY29sdW1uQ2hvb3Nlck1vZHVsZSAmJlxyXG4gICAgICAgICAgICB0YWJsZS5ncmlkLmNvbHVtbkNob29zZXJNb2R1bGUub3BlbkNvbHVtbkNob29zZXIoMjAwLCBfeSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwibmV3Y2hhcnRcIjpcclxuICAgICAgY2FzZSBcInBpdm90XCI6XHJcbiAgICAgICAgY29uc3QgcGl2b3QgPSBmaW5kKFxyXG4gICAgICAgICAgKHRoaXMucGl2b3QgYXMgYW55KS5fcmVzdWx0cyxcclxuICAgICAgICAgIChlbCkgPT4gZWwucG9ydGxldC5uZXdJZCA9PT0gaXRlbS5uZXdJZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgcGl2b3QuZmllbGRsaXN0T2JqLmRpYWxvZ1JlbmRlcmVyICYmXHJcbiAgICAgICAgICBwaXZvdC5maWVsZGxpc3RPYmouZGlhbG9nUmVuZGVyZXIuZmllbGRMaXN0RGlhbG9nXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBwaXZvdC5maWVsZGxpc3RPYmouZGlhbG9nUmVuZGVyZXIuZmllbGRMaXN0RGlhbG9nLnNob3coKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJ0cmFuc3Bvc2VcIjpcclxuICAgICAgICBjb25zdCB0cmFuc3Bvc2UgPSBmaW5kKFxyXG4gICAgICAgICAgKHRoaXMudHJhbnNwb3NlIGFzIGFueSkuX3Jlc3VsdHMsXHJcbiAgICAgICAgICAoZWwpID0+IGVsLnBvcnRsZXQubmV3SWQgPT09IGl0ZW0ubmV3SWRcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIOW8gOWQr+mAgumFjSDmiYvliqjnvKnlsI9cclxuICAgICAgICB0cmFuc3Bvc2UuZ3JpZC5jb2x1bW5DaG9vc2VyTW9kdWxlLnNob3dDdXN0b21Db2x1bW5DaG9vc2VyKCk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZGxnOiBhbnkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgICAgICBcIi5lLXJlc2NvbHVtbmNob29zZXJkaXYuZS1yZXNwb25zaXZlLWRpYWxvZ1wiXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKGRsZykge1xyXG4gICAgICAgICAgICBkbGcuc3R5bGUub3BhY2l0eSA9IDE7XHJcbiAgICAgICAgICAgIGRsZy5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIFwiMzAwcHhcIiwgXCJpbXBvcnRhbnRcIik7XHJcbiAgICAgICAgICAgIGRsZy5zdHlsZS5zZXRQcm9wZXJ0eShcImhlaWdodFwiLCBcIjM1MHB4XCIsIFwiaW1wb3J0YW50XCIpO1xyXG4gICAgICAgICAgICBkbGcuc3R5bGUuc2V0UHJvcGVydHkoXCJwb3NpdGlvblwiLCBcImFic29sdXRlXCIsIFwiaW1wb3J0YW50XCIpO1xyXG4gICAgICAgICAgICBkbGcuc3R5bGUuc2V0UHJvcGVydHkoXHJcbiAgICAgICAgICAgICAgXCJsZWZ0XCIsXHJcbiAgICAgICAgICAgICAgZXZlbnQuY2xpZW50WCAtIDEzNSArIFwicHhcIixcclxuICAgICAgICAgICAgICBcImltcG9ydGFudFwiXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGRsZy5zdHlsZS5zZXRQcm9wZXJ0eShcclxuICAgICAgICAgICAgICBcInRvcFwiLFxyXG4gICAgICAgICAgICAgIGV2ZW50LmNsaWVudFkgKyAzMCArIFwicHhcIixcclxuICAgICAgICAgICAgICBcImltcG9ydGFudFwiXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFByZXZJZCgpIHtcclxuICAgIHRoaXMudGFiTGlzdC5mb3JFYWNoKCh0YWIsIGkpID0+IHtcclxuICAgICAgaWYgKHRhYi5pZCA9PT0gdGhpcy5hY3RpdmVUYWIpIHtcclxuICAgICAgICBpZiAodGhpcy50YWJMaXN0W2kgLSAxXSkge1xyXG4gICAgICAgICAgdGhpcy5wcmV2SWQgPSB0aGlzLnRhYkxpc3RbaSAtIDFdLmlkO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkcm9wKGUpIHtcclxuICAgIGNvbnN0IHsgcHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4IH0gPSBlO1xyXG4gICAgY29uc3QgcHJldklkID0gdGhpcy50YWJMaXN0W3ByZXZpb3VzSW5kZXhdLmlkO1xyXG4gICAgY29uc3QgY3VycklkID0gdGhpcy50YWJMaXN0W2N1cnJlbnRJbmRleF0uaWQ7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IHRoaXMudGFiTGlzdC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICBjb25zdCB0YWJJZCA9IHRoaXMudGFiTGlzdFtpXS5pZDtcclxuICAgICAgaWYgKHRhYklkID09PSBwcmV2SWQpIHtcclxuICAgICAgICB0aGlzLnRhYkxpc3RbaV0uaWQgPSBjdXJySWQ7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRhYklkID09PSBjdXJySWQpIHtcclxuICAgICAgICB0aGlzLnRhYkxpc3RbaV0uaWQgPSBwcmV2SWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSB0aGlzLnBvcnRsZXRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgIGNvbnN0IGNvbmZpZyA9IEpTT04ucGFyc2UodGhpcy5wb3J0bGV0c1tpXS5jb25maWcpO1xyXG4gICAgICBjb25zdCB0YWJJZCA9IGNvbmZpZy50YWJJZDtcclxuICAgICAgaWYgKHRhYklkID09PSBwcmV2SWQpIHtcclxuICAgICAgICBjb25maWcudGFiSWQgPSBjdXJySWQ7XHJcbiAgICAgICAgdGhpcy5wb3J0bGV0c1tpXS5jb25maWcgPSBKU09OLnN0cmluZ2lmeShjb25maWcpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0YWJJZCA9PT0gY3VycklkKSB7XHJcbiAgICAgICAgY29uZmlnLnRhYklkID0gcHJldklkO1xyXG4gICAgICAgIHRoaXMucG9ydGxldHNbaV0uY29uZmlnID0gSlNPTi5zdHJpbmdpZnkoY29uZmlnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYWN0aXZlVGFiID09PSBjdXJySWQpIHtcclxuICAgICAgdGhpcy5hY3RpdmVUYWIgPSBwcmV2SWQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVGFiID09PSBwcmV2SWQpIHtcclxuICAgICAgdGhpcy5hY3RpdmVUYWIgPSBjdXJySWQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFByZXZJZCgpO1xyXG4gICAgW3RoaXMudGFiTGlzdFtwcmV2aW91c0luZGV4XSwgdGhpcy50YWJMaXN0W2N1cnJlbnRJbmRleF1dID0gW1xyXG4gICAgICB0aGlzLnRhYkxpc3RbY3VycmVudEluZGV4XSxcclxuICAgICAgdGhpcy50YWJMaXN0W3ByZXZpb3VzSW5kZXhdLFxyXG4gICAgXTtcclxuICAgIHRoaXMudGFiTGlzdCA9IFsuLi50aGlzLnRhYkxpc3RdO1xyXG5cclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuICBjbG9zZUFsbCgpIHtcclxuICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICBsZXQgaGFzQ29uZmlnID0gZmFsc2U7XHJcbiAgICB0aGlzLkFjdGl2ZURhc2hib2FyZFBvcnRsZXRzLmZvckVhY2goKHBvcnRsZXQpID0+IHtcclxuICAgICAgY29uc3QgcG9ydGxldFR5cGUgPSB0aGlzLmdldFBvcnRsZXRUeXBlKHBvcnRsZXQpO1xyXG4gICAgICBzd2l0Y2ggKHBvcnRsZXRUeXBlKSB7XHJcbiAgICAgICAgY2FzZSBcInBpdm90XCI6XHJcbiAgICAgICAgY2FzZSBcIm5ld2NoYXJ0XCI6XHJcbiAgICAgICAgICBjb25zdCBkb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcclxuICAgICAgICAgICAgYCR7cG9ydGxldC5uZXdJZH1fRGVmZXJVcGRhdGVCdXR0b24yYFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChkb20pIHtcclxuICAgICAgICAgICAgaGFzQ29uZmlnID0gdHJ1ZTtcclxuICAgICAgICAgICAgZG9tLmNsaWNrKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFwidGFibGVcIjpcclxuICAgICAgICAgIGNvbnN0IGNhbmNlbEJ0biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZS1jYy1jbmJ0blwiKTtcclxuICAgICAgICAgIGlmIChjYW5jZWxCdG4pIHtcclxuICAgICAgICAgICAgaGFzQ29uZmlnID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICBjYW5jZWxCdG4uY2xpY2soKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChoYXNDb25maWcpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZ18ubmV4dCh0cnVlKTtcclxuICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSwgNDAwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGhhc0NvbmZpZztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb3dubG9hZEFsbCgpIHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUGFuZURvd25sb2FkQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBwb3J0bGV0czogdGhpcy5wb3J0bGV0cyxcclxuICAgICAgICBkYXNoYm9hcmQ6IHRoaXMuZGFzaGJvYXJkLFxyXG4gICAgICB9LFxyXG4gICAgICBoZWlnaHQ6IFwiODUwcHhcIixcclxuICAgICAgd2lkdGg6IFwiNTYycHhcIixcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXMpID0+IHt9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb3dubG9hZChpdGVtKSB7XHJcbiAgICBjb25zdCBwb3J0bGV0VHlwZSA9IHRoaXMuZ2V0UG9ydGxldFR5cGUoaXRlbSk7XHJcbiAgICBjb25zdCB0aXRsZSA9IHRoaXMuR2V0Z2FkZ2V0VGl0bGUoaXRlbS5jb25maWcpO1xyXG4gICAgc3dpdGNoIChwb3J0bGV0VHlwZSkge1xyXG4gICAgICBjYXNlIFwidGFibGVcIjpcclxuICAgICAgICB0aGlzLmRvd25sb2FkVGFibGUoaXRlbSwgdGl0bGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwibmV3Y2hhcnRcIjpcclxuICAgICAgY2FzZSBcInBpdm90XCI6XHJcbiAgICAgICAgY29uc3QgcGl2b3QgPSBmaW5kKFxyXG4gICAgICAgICAgKHRoaXMucGl2b3QgYXMgYW55KS5fcmVzdWx0cyxcclxuICAgICAgICAgIChlbCkgPT4gZWwucG9ydGxldC5uZXdJZCA9PT0gaXRlbS5uZXdJZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcGl2b3QuaGVhZFJvd1NwYW4gPSAwOyAvL+mHjee9ruWvvOWHumhlYWRlcuWkhOeQhlxyXG4gICAgICAgIHBpdm90LmhlYWRSb3dDb3VudCA9IDA7IC8v6YeN572u5a+85Ye6aGVhZGVy5aSE55CGXHJcbiAgICAgICAgY29uc3QgZXhjZWxFeHBvcnRQcm9wZXJ0aWVzX3Bpdm90OiBFeGNlbEV4cG9ydFByb3BlcnRpZXMgPSB7XHJcbiAgICAgICAgICBmaWxlTmFtZTogdGl0bGVcclxuICAgICAgICAgICAgPyB0aXRsZSArIFwiLnhsc3hcIlxyXG4gICAgICAgICAgICA6IFwiUGl2b3QtXCIgKyBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkgKyBcIi54bHN4XCIsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAocGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmZvcm1hdFNldHRpbmdzKSB7XHJcbiAgICAgICAgICBwaXZvdC5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuZm9ybWF0U2V0dGluZ3MuZm9yRWFjaChcclxuICAgICAgICAgICAgKHNldHRpbmcpID0+IHtcclxuICAgICAgICAgICAgICAvLyBzeW5jZnVzaW9uIGZvcm1hdCB0cmFuc2Zvcm0gdG8gZXhjZWwgZm9ybWF0XHJcbiAgICAgICAgICAgICAgY29uc3QgbWFwID0ge1xyXG4gICAgICAgICAgICAgICAgXCIjLCMjIywsLjA7KCMsIyMjLCwuMClcIjogJzAuMCwsXCJcIjsoMC4wLCwpJyxcclxuICAgICAgICAgICAgICAgICcwLjAsLFwiXCI7KDAuMCwsKSc6IFwiIywjIyMsLC4wOygjLCMjIywsLjApXCIsXHJcbiAgICAgICAgICAgICAgICBcIiMsIyMjLCw7KCMsIyMjLCwpXCI6ICcwLCxcIlwiOygwLCwpJyxcclxuICAgICAgICAgICAgICAgICcwLCxcIlwiOygwLCwpJzogXCIjLCMjIywsOygjLCMjIywsKVwiLFxyXG4gICAgICAgICAgICAgICAgXCIjLCMjIywsLjAwOygjLCMjIywsLjAwKVwiOiAnMC4wMCwsXCJcIjsoMC4wMCwsKScsXHJcbiAgICAgICAgICAgICAgICAnMC4wMCwsXCJcIjsoMC4wMCwsKSc6IFwiIywjIyMsLC4wMDsoIywjIyMsLC4wMClcIixcclxuICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICBpZiAobWFwW3NldHRpbmcuZm9ybWF0XSkge1xyXG4gICAgICAgICAgICAgICAgc2V0dGluZy5mb3JtYXQgPSBtYXBbc2V0dGluZy5mb3JtYXRdO1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHNldHRpbmcuZm9ybWF0ID0gbWFwW3NldHRpbmcuZm9ybWF0XTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtYXQoXHJcbiAgICAgICAgICBwaXZvdC5waXZvdE9iai5ncmlkLmNvbHVtbnMgYXMgQ29sdW1uTW9kZWxbXSxcclxuICAgICAgICAgIHBpdm90LnBpdm90T2JqXHJcbiAgICAgICAgKTtcclxuICAgICAgICBwaXZvdC5waXZvdE9iai5leGNlbEV4cG9ydChleGNlbEV4cG9ydFByb3BlcnRpZXNfcGl2b3QpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAvLyBjYXNlIFwidHJhbnNwb3NlXCI6XHJcbiAgICAgIC8vIFx0Ly8gY29uc3QgdHJhbnNwb3NlID0gZmluZChcclxuICAgICAgLy8gXHQvLyBcdCh0aGlzLnRyYW5zcG9zZSBhcyBhbnkpLl9yZXN1bHRzLFxyXG4gICAgICAvLyBcdC8vIFx0KGVsKSA9PiBlbC5wb3J0bGV0Lm5ld0lkID09PSBpdGVtLm5ld0lkXHJcbiAgICAgIC8vIFx0Ly8gKTtcclxuICAgICAgLy8gXHRicmVhaztcclxuICAgICAgY2FzZSBcIm5ld2NvbHVtblwiOlxyXG4gICAgICBjYXNlIFwibmV3bGluZVwiOlxyXG4gICAgICBjYXNlIFwibmV3Y29sdW1ubGluZVwiOlxyXG4gICAgICAgIGNvbnN0IGNoYXJ0SWR4ID0gdGhpcy5nZXRDaGFydEluZGV4SW5BbGwoaXRlbSk7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDb21wb25lbnQgPSB0aGlzLm5ld0NoYXJ0LnRvQXJyYXkoKVtjaGFydElkeF07XHJcbiAgICAgICAgc2VsZWN0ZWRDb21wb25lbnQuZXhwb3J0Q2hhcnQoKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOagueaNrmlkeOiOt+WPlueCueWHu+WbvuihqOWcqOWbvuihqOWIl+ihqOmHjOeahOecn+ato+mhuuW6j1xyXG4gIGdldENoYXJ0SW5kZXhJbkFsbChpdGVtKSB7XHJcbiAgICBjb25zdCBjaGFyQXJyID0gdGhpcy5BY3RpdmVEYXNoYm9hcmRQb3J0bGV0cy5maWx0ZXIoKGUpID0+IHtcclxuICAgICAgcmV0dXJuIFtcIm5ld2NvbHVtblwiLCBcIm5ld2xpbmVcIiwgXCJuZXdjb2x1bW5saW5lXCJdLmluY2x1ZGVzKFxyXG4gICAgICAgIEpTT04ucGFyc2UoZS5jb25maWcpLnBvcnRsZXRUeXBlXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICAgIGxldCByZXN1bHRJZHggPSAwO1xyXG4gICAgaWYgKGNoYXJBcnIubGVuZ3RoID4gMCkge1xyXG4gICAgICBjaGFyQXJyLmZvckVhY2goKGUsIGlkeCkgPT4ge1xyXG4gICAgICAgIGlmIChlLm5ld0lkID09IGl0ZW0ubmV3SWQpIHtcclxuICAgICAgICAgIHJlc3VsdElkeCA9IGlkeDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdElkeDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb3dubG9hZFRhYmxlKGl0ZW0sIHRpdGxlKSB7XHJcbiAgICAvLyBUYWJsZSDkuIvovb3lhajpg6jmlbDmja5cclxuICAgIGxldCBjb25maWcgPSBKU09OLnBhcnNlKGl0ZW0uY29uZmlnKTtcclxuICAgIGxldCBwYWdlU2V0dGluZyA9IE9iamVjdC5hc3NpZ24oXHJcbiAgICAgIHtcclxuICAgICAgICBjdXJyZW50UGFnZTogMSxcclxuICAgICAgICBwYWdlU2l6ZTogOTk5OTk5OSxcclxuICAgICAgfSxcclxuICAgICAgY29uZmlnICYmIGNvbmZpZy50YWJsZVNvcnRTZXR0aW5nXHJcbiAgICApO1xyXG4gICAgbGV0IHBhcmFtcyA9IHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZ2V0UGFyYW1zQnlQb3J0bGV0KFxyXG4gICAgICBpdGVtLFxyXG4gICAgICBwYWdlU2V0dGluZyxcclxuICAgICAgbnVsbCxcclxuICAgICAgdGhpcy5kYXNoYm9hcmRcclxuICAgICk7XHJcbiAgICAvLyBqc29uIGJ1ZmZlclxyXG4gICAgdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgIC5wb3N0KHRoaXMuYXBpLmJhc2V1cmwgKyB0aGlzLmFwaS51cmxMaXN0LkdldFBvcnRsZXREYXRhVjIsIHBhcmFtcylcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlID0gZmluZChcclxuICAgICAgICAgICAgICAodGhpcy50YWJsZSBhcyBhbnkpLl9yZXN1bHRzLFxyXG4gICAgICAgICAgICAgIChlbCkgPT4gZWwucG9ydGxldC5uZXdJZCA9PT0gaXRlbS5uZXdJZFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBleGNlbEV4cG9ydFByb3BlcnRpZXM6IEV4Y2VsRXhwb3J0UHJvcGVydGllcyA9IHtcclxuICAgICAgICAgICAgICBmaWxlTmFtZTogdGl0bGVcclxuICAgICAgICAgICAgICAgID8gdGl0bGUgKyBcIi54bHN4XCJcclxuICAgICAgICAgICAgICAgIDogXCJUYWJsZS1cIiArIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSArIFwiLnhsc3hcIixcclxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgZGF0YVNvdXJjZTogcmVzdWx0LmRhdGEsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmICh0YWJsZSkge1xyXG4gICAgICAgICAgICAgIHRhYmxlLmdyaWQuZXhjZWxFeHBvcnQoZXhjZWxFeHBvcnRQcm9wZXJ0aWVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKHJlc3BvbnNlKSA9PiB7fSxcclxuICAgICAgICAoKSA9PiB7fVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVGb3JtYXQoY29sdW1uczogQ29sdW1uTW9kZWxbXSwgcGl2b3RPYmopIHtcclxuICAgIHZhciBmTGlzdCA9IHBpdm90T2JqLnJlbmRlck1vZHVsZS5nZXRGb3JtYXRMaXN0KCk7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIChjb2x1bW5zW2ldIGFzIENvbHVtbk1vZGVsKS5jb2x1bW5zICYmXHJcbiAgICAgICAgKGNvbHVtbnNbaV0gYXMgQ29sdW1uTW9kZWwpLmNvbHVtbnMubGVuZ3RoID4gMFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1hdChcclxuICAgICAgICAgIChjb2x1bW5zW2ldIGFzIENvbHVtbk1vZGVsKS5jb2x1bW5zIGFzIENvbHVtbk1vZGVsW10sXHJcbiAgICAgICAgICBwaXZvdE9ialxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY29sdW1uc1tpXS5jdXN0b21BdHRyaWJ1dGVzICYmXHJcbiAgICAgICAgICBmTGlzdFsoY29sdW1uc1tpXS5jdXN0b21BdHRyaWJ1dGVzLmNlbGwgYXMgSUF4aXNTZXQpLmFjdHVhbFRleHRdID09PVxyXG4gICAgICAgICAgICBcIk5cIlxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgKGNvbHVtbnNbaV0gYXMgQ29sdW1uTW9kZWwpLmZvcm1hdCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBmaWVsZEZvcm1hdChpdGVtKSB7XHJcbiAgICB0aGlzLnBvcnRsZXQgPSBjbG9uZURlZXAoaXRlbSk7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEZpZWxkRm9ybWF0Q29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBwb3J0bGV0RGF0YTogaXRlbSxcclxuICAgICAgICBwb3J0bGV0czogdGhpcy5wb3J0bGV0cyxcclxuICAgICAgfSxcclxuICAgICAgaGVpZ2h0OiBcIjg1MHB4XCIsXHJcbiAgICAgIG1pbldpZHRoOiBcIjU2MnB4XCIsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgcGFuZWxDbGFzczogXCJkaWFsb2ctcG9zaXRpb25cIixcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXMpID0+IHt9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuRmlsdGVyKGl0ZW0pIHtcclxuICAgIHRoaXMucG9ydGxldCA9IGNsb25lRGVlcChpdGVtKTtcclxuICAgIHRoaXMuZGFzaGJvYXJkX3NpZGViYXIgPSB0cnVlO1xyXG4gICAgdGhpcy5wdXNoX2J0biA9IHRydWU7XHJcbiAgICB0aGlzLmZpZ3VyZUNvZGUgPSBpdGVtLmZpZ3VyZUNvZGU7XHJcbiAgICB0aGlzLnRhYmFjdGl2ZSA9IHRydWU7XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UucG9ydGxldEVkaXQubmV4dCh0aGlzLnVybF9pZCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQdXNoQnRuKGU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMucHVzaF9idG4gPSBlO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVDdXN0b21pemUoY3VzdG9taXplZCkge1xyXG4gICAgdGhpcy5jdXN0b21pemVkID0gY3VzdG9taXplZDtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2lkZWJhcihib29sKSB7XHJcbiAgICB0aGlzLmRhc2hib2FyZF9zaWRlYmFyID0gYm9vbDtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgb25Ub2dnbGVUYWJhY3RpdmUoYm9vbCkge1xyXG4gICAgdGhpcy50YWJhY3RpdmUgPSBib29sO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQb3JsZXQocG9ydGxldCkge1xyXG4gICAgaWYgKCFwb3J0bGV0KSB7XHJcbiAgICAgIHRoaXMucG9ydGxldCA9IG51bGw7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucG9ydGxldCA9IGNsb25lRGVlcChwb3J0bGV0KTtcclxuICAgIHRoaXMucG9ydGxldHMuZm9yRWFjaCgoX3BvcnRsZXQsIGkpID0+IHtcclxuICAgICAgaWYgKF9wb3J0bGV0Lm5ld0lkID09PSBwb3J0bGV0Lm5ld0lkKSB7XHJcbiAgICAgICAgdGhpcy5wb3J0bGV0c1tpXSA9IE9iamVjdC5hc3NpZ24oe30sIHBvcnRsZXQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMucG9ydGxldHMgPSBbLi4udGhpcy5wb3J0bGV0c107XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkUG9ybGV0KCkge1xyXG4gICAgdGhpcy5wdXNoX2J0biA9IHRydWU7XHJcbiAgICB0aGlzLmRhc2hib2FyZF9zaWRlYmFyID0gdHJ1ZTtcclxuICAgIHRoaXMucG9ydGxldCA9IG51bGw7XHJcbiAgICB0aGlzLnRhYmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmNyZWF0ZV9idG4ubmV4dCh0aGlzLnVybF9pZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2VTaWRlYmFyKGUpIHtcclxuICAgIHRoaXMuZGFzaGJvYXJkX3NpZGViYXIgPSBmYWxzZTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcmVzaXplU3RvcChhcmdzKSB7XHJcbiAgICB0aGlzLmdldE5ld1Bvc2l0aW9uKCk7XHJcbiAgICBpZiAoYXJncy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZS1ncmlkXCIpKSB7XHJcbiAgICAgIGNvbnN0IHRhYmxlID0gZmluZChcclxuICAgICAgICAodGhpcy50YWJsZSBhcyBhbnkpLl9yZXN1bHRzLFxyXG4gICAgICAgIChlbCkgPT4gZWwucG9ydGxldC5uZXdJZCA9PT0gYXJncy5lbGVtZW50LmlkXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0YWJsZSkge1xyXG4gICAgICAgIHRhYmxlLmdyaWQuaGVpZ2h0ID0gcGFyc2VJbnQoYXJncy5lbGVtZW50LnN0eWxlLmhlaWdodCkgLSA4MDtcclxuICAgICAgICB0YWJsZS5ncmlkLnJlZnJlc2hDb2x1bW5zKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoYXJncy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZS1waXZvdHZpZXdcIikpIHtcclxuICAgICAgY29uc3QgcGl2b3QgPSBmaW5kKFxyXG4gICAgICAgICh0aGlzLnBpdm90IGFzIGFueSkuX3Jlc3VsdHMsXHJcbiAgICAgICAgKGVsKSA9PiBlbC5wb3J0bGV0Lm5ld0lkID09PSBhcmdzLmVsZW1lbnQuaWRcclxuICAgICAgKTtcclxuICAgICAgaWYgKHBpdm90KSB7XHJcbiAgICAgICAgcGl2b3QucGl2b3RPYmoubGF5b3V0UmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkcmFnU3RvcChlKSB7XHJcbiAgICB0aGlzLmdldE5ld1Bvc2l0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBnZXROZXdQb3NpdGlvbigpIHtcclxuICAgIGNvbnN0IHBkYXRhID0gdGhpcy5kYXNoYm9hcmRMYXlvdXQuc2VyaWFsaXplKCk7XHJcbiAgICB0aGlzLm5ld1Bvc2l0aW9uID0gWy4uLnBkYXRhXTtcclxuICAgIHRoaXMucG9ydGxldHMuZm9yRWFjaCgocG9ydGxldCkgPT4ge1xyXG4gICAgICBwZGF0YS5mb3JFYWNoKChwKSA9PiB7XHJcbiAgICAgICAgaWYgKHBvcnRsZXQubmV3SWQgPT09IHAuaWQpIHtcclxuICAgICAgICAgIHBvcnRsZXQgPSB7XHJcbiAgICAgICAgICAgIC4uLnBvcnRsZXQsXHJcbiAgICAgICAgICAgIHBvc1g6IHAuY29sLFxyXG4gICAgICAgICAgICBwb3NZOiBwLnJvdyxcclxuICAgICAgICAgICAgY29sOiBwLmNvbCxcclxuICAgICAgICAgICAgcm93OiBwLnJvdyxcclxuICAgICAgICAgICAgd2lkdGg6IHAuc2l6ZVgsXHJcbiAgICAgICAgICAgIGhlaWdodDogcC5zaXplWSxcclxuICAgICAgICAgICAgc2l6ZVg6IHAuc2l6ZVgsXHJcbiAgICAgICAgICAgIHNpemVZOiBwLnNpemVZLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9wZW5TdWJ0b3RhbChpdGVtKSB7XHJcbiAgICB0aGlzLkN1cnJlbnRfUG9ydGxldElkID0gaXRlbS5uZXdJZDtcclxuICAgIHRoaXMuY29uZmlnID0gaXRlbS5jb25maWcgPyBKU09OLnBhcnNlKGl0ZW0uY29uZmlnKSA6IHt9O1xyXG4gICAgdGhpcy5waXZvdFRhYmxlU3ViVG90YWxMaXN0Lm1hcCgoZWwpID0+IHtcclxuICAgICAgZWwuc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5nZXRTZWxlY3RUb3RhbEdyb3VwU3RhdHVzKFwic3ViXCIpO1xyXG4gICAgdGhpcy5zaG93U3ViVG90YWxHcm91cCA9ICF0aGlzLnNob3dTdWJUb3RhbEdyb3VwO1xyXG4gICAgdGhpcy5zaG93Z3JhbmRUb3RhbEdyb3VwID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvcGVuR3JhbmR0b3RhbChpdGVtKSB7XHJcbiAgICB0aGlzLkN1cnJlbnRfUG9ydGxldElkID0gaXRlbS5uZXdJZDtcclxuICAgIHRoaXMuY29uZmlnID0gaXRlbS5jb25maWcgPyBKU09OLnBhcnNlKGl0ZW0uY29uZmlnKSA6IHt9O1xyXG4gICAgdGhpcy5waXZvdFRhYmxlR3JhbmRUb3RhbExpc3QubWFwKChlbCkgPT4ge1xyXG4gICAgICBlbC5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5nZXRQb3J0bGV0VHlwZShpdGVtKSA9PT0gXCJ0YWJsZVwiKSB7XHJcbiAgICAgIHRoaXMuZ2V0U2VsZWN0VG90YWxHcm91cFN0YXR1cyhcInRhYmxlR3JhbmRcIik7XHJcbiAgICAgIHRoaXMuc2hvd1RhYmxlR3JhbmRUb3RhbEdyb3VwID0gIXRoaXMuc2hvd1RhYmxlR3JhbmRUb3RhbEdyb3VwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5nZXRTZWxlY3RUb3RhbEdyb3VwU3RhdHVzKCk7XHJcbiAgICAgIHRoaXMuc2hvd2dyYW5kVG90YWxHcm91cCA9ICF0aGlzLnNob3dncmFuZFRvdGFsR3JvdXA7XHJcbiAgICAgIHRoaXMuc2hvd1N1YlRvdGFsR3JvdXAgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdFRvdGFsR3JvdXAoaW5kZXgsIHR5cGUsIGl0ZW0pIHtcclxuICAgIGlmICh0aGlzLmdldFBvcnRsZXRUeXBlKGl0ZW0pID09PSBcInBpdm90XCIpIHtcclxuICAgICAgY29uc3QgcGl2b3QgPSBmaW5kKFxyXG4gICAgICAgICh0aGlzLnBpdm90IGFzIGFueSkuX3Jlc3VsdHMsXHJcbiAgICAgICAgKGVsKSA9PiBlbC5wb3J0bGV0Lm5ld0lkID09PSBpdGVtLm5ld0lkXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0eXBlID09PSBcInN1YlwiKSB7XHJcbiAgICAgICAgdGhpcy5zaG93U3ViVG90YWxHcm91cCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucGl2b3RUYWJsZVN1YlRvdGFsTGlzdC5mb3JFYWNoKChzdWJ0b3RhbCkgPT4ge1xyXG4gICAgICAgICAgc3VidG90YWwuc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnBpdm90VGFibGVTdWJUb3RhbExpc3RbaW5kZXhdLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICBpZiAocGl2b3QucGl2b3RPYmopIHtcclxuICAgICAgICAgIHN3aXRjaCAoaW5kZXgpIHtcclxuICAgICAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLmZpZWxkcy5tYXAoKGVsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbC5zaG93U3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBwaXZvdC5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Muc2hvd1N1YlRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dSb3dTdWJUb3RhbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHBpdm90LnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5zaG93Q29sdW1uU3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93U3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93Um93U3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93Q29sdW1uU3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLmZpZWxkcy5tYXAoKGVsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbC5zaG93U3ViVG90YWxzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dTdWJUb3RhbHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBwaXZvdC5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Muc2hvd1Jvd1N1YlRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dDb2x1bW5TdWJUb3RhbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLnNob3dTdWJUb3RhbHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93Um93U3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93Q29sdW1uU3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLmZpZWxkcy5tYXAoKGVsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbC5zaG93U3ViVG90YWxzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgZ2l0ZW0gb2YgdGhpcy5jb25maWcueGF4aXMuZ3JvdXBzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuY29uZmlnLmZpZWxkcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgIChmbCkgPT4gZmwuY29sTmFtZSA9PT0gZ2l0ZW0ubmFtZVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGlmIChmaWVsZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIGZpZWxkWzBdLnNob3dTdWJUb3RhbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBwaXZvdC5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Muc2hvd1N1YlRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dSb3dTdWJUb3RhbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHBpdm90LnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5zaG93Q29sdW1uU3ViVG90YWxzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2hvd1N1YlRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2hvd1Jvd1N1YlRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2hvd0NvbHVtblN1YlRvdGFscyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuZmllbGRzLm1hcCgoZWwpID0+IHtcclxuICAgICAgICAgICAgICAgIGVsLnNob3dTdWJUb3RhbHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuY29uZmlnLmNvbHVtbkdyb3VwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuY29uZmlnLmZpZWxkcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgIChmbCkgPT4gZmwuY29sTmFtZSA9PT0gaXRlbS5uYW1lXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgZmllbGRbMF0uc2hvd1N1YlRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHBpdm90LnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5zaG93U3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBwaXZvdC5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Muc2hvd1Jvd1N1YlRvdGFscyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHBpdm90LnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5zaG93Q29sdW1uU3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93U3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93Um93U3ViVG90YWxzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2hvd0NvbHVtblN1YlRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd2dyYW5kVG90YWxHcm91cCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucGl2b3RUYWJsZUdyYW5kVG90YWxMaXN0LmZvckVhY2goKGdyYW5kdG90YWwpID0+IHtcclxuICAgICAgICAgIGdyYW5kdG90YWwuc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnBpdm90VGFibGVHcmFuZFRvdGFsTGlzdFtpbmRleF0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIGlmIChwaXZvdC5waXZvdE9iaikge1xyXG4gICAgICAgICAgc3dpdGNoIChpbmRleCkge1xyXG4gICAgICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dHcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dSb3dHcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dDb2x1bW5HcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2hvd0dyYW5kVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93Um93R3JhbmRUb3RhbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLnNob3dDb2x1bW5HcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICBwaXZvdC5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Muc2hvd0dyYW5kVG90YWxzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dSb3dHcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dDb2x1bW5HcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2hvd0dyYW5kVG90YWxzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2hvd1Jvd0dyYW5kVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93Q29sdW1uR3JhbmRUb3RhbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dHcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dSb3dHcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dDb2x1bW5HcmFuZFRvdGFscyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLnNob3dHcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2hvd1Jvd0dyYW5kVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93Q29sdW1uR3JhbmRUb3RhbHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICAgIHBpdm90LnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5zaG93R3JhbmRUb3RhbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHBpdm90LnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5zaG93Um93R3JhbmRUb3RhbHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBwaXZvdC5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Muc2hvd0NvbHVtbkdyYW5kVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93R3JhbmRUb3RhbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLnNob3dSb3dHcmFuZFRvdGFscyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLnNob3dDb2x1bW5HcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChwaXZvdC5waXZvdE9iaikge1xyXG4gICAgICAgIHBpdm90LnBpdm90T2JqLnJlbmRlcigpO1xyXG4gICAgICAgIGl0ZW0uY29uZmlnID0gQ2lyY3VsYXJKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZyk7XHJcbiAgICAgICAgY29uc3QgcG9ydGxldEluZGV4ID0gdGhpcy5wb3J0bGV0cy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAoeCkgPT4geC5uZXdJZCA9PT0gaXRlbS5uZXdJZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5wb3J0bGV0c1twb3J0bGV0SW5kZXhdID0gaXRlbTtcclxuICAgICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuY2hhbmdlUGl2b3QubmV4dChpdGVtLm5ld0lkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgdGFibGUgPSBmaW5kKFxyXG4gICAgICAgICh0aGlzLnRhYmxlIGFzIGFueSkuX3Jlc3VsdHMsXHJcbiAgICAgICAgKGVsKSA9PiBlbC5wb3J0bGV0Lm5ld0lkID09PSBpdGVtLm5ld0lkXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuc2hvd1RhYmxlR3JhbmRUb3RhbEdyb3VwID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudGFibGVHcmFuZFRvdGFsTGlzdC5mb3JFYWNoKChncmFuZHRvdGFsKSA9PiB7XHJcbiAgICAgICAgZ3JhbmR0b3RhbC5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy50YWJsZUdyYW5kVG90YWxMaXN0W2luZGV4XS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIGlmICh0YWJsZSkge1xyXG4gICAgICAgIHN3aXRjaCAoaW5kZXgpIHtcclxuICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgdGhpcy5jb25maWcuc2hvd0dyYW5kVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGFibGUuZ3JpZC5lbGVtZW50XHJcbiAgICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoXCIuZS1ncmlkZm9vdGVyXCIpXHJcbiAgICAgICAgICAgICAgLmNsYXNzTGlzdC5yZW1vdmUoXCJoaWRlc3VtbWFyeVwiKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnNob3dHcmFuZFRvdGFscyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0YWJsZS5ncmlkLmVsZW1lbnRcclxuICAgICAgICAgICAgICAucXVlcnlTZWxlY3RvcihcIi5lLWdyaWRmb290ZXJcIilcclxuICAgICAgICAgICAgICAuY2xhc3NMaXN0LmFkZChcImhpZGVzdW1tYXJ5XCIpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgaXRlbS5jb25maWcgPSBDaXJjdWxhckpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuICAgICAgICBjb25zdCBwb3J0bGV0SW5kZXggPSB0aGlzLnBvcnRsZXRzLmZpbmRJbmRleChcclxuICAgICAgICAgICh4KSA9PiB4Lm5ld0lkID09PSBpdGVtLm5ld0lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnBvcnRsZXRzW3BvcnRsZXRJbmRleF0gPSBpdGVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RUb3RhbEdyb3VwU3RhdHVzKHR5cGU/KSB7XHJcbiAgICBpZiAodHlwZSA9PT0gXCJzdWJcIikge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd1N1YlRvdGFscyAmJlxyXG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dSb3dTdWJUb3RhbHMgJiZcclxuICAgICAgICB0aGlzLmNvbmZpZy5zaG93Q29sdW1uU3ViVG90YWxzXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMucGl2b3RUYWJsZVN1YlRvdGFsTGlzdFswXS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgICF0aGlzLmNvbmZpZy5zaG93U3ViVG90YWxzICYmXHJcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd1Jvd1N1YlRvdGFscyAmJlxyXG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dDb2x1bW5TdWJUb3RhbHNcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5waXZvdFRhYmxlU3ViVG90YWxMaXN0WzFdLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd1N1YlRvdGFscyAmJlxyXG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dSb3dTdWJUb3RhbHMgJiZcclxuICAgICAgICAhdGhpcy5jb25maWcuc2hvd0NvbHVtblN1YlRvdGFsc1xyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnBpdm90VGFibGVTdWJUb3RhbExpc3RbMl0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmNvbmZpZy5zaG93U3ViVG90YWxzICYmXHJcbiAgICAgICAgIXRoaXMuY29uZmlnLnNob3dSb3dTdWJUb3RhbHMgJiZcclxuICAgICAgICB0aGlzLmNvbmZpZy5zaG93Q29sdW1uU3ViVG90YWxzXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMucGl2b3RUYWJsZVN1YlRvdGFsTGlzdFszXS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJ0YWJsZUdyYW5kXCIpIHtcclxuICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLnNob3dHcmFuZFRvdGFscykge1xyXG4gICAgICAgIHRoaXMudGFibGVHcmFuZFRvdGFsTGlzdFswXS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmNvbmZpZy5zaG93R3JhbmRUb3RhbHMpIHtcclxuICAgICAgICB0aGlzLnRhYmxlR3JhbmRUb3RhbExpc3RbMV0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd0dyYW5kVG90YWxzICYmXHJcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd1Jvd0dyYW5kVG90YWxzICYmXHJcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd0NvbHVtbkdyYW5kVG90YWxzXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMucGl2b3RUYWJsZUdyYW5kVG90YWxMaXN0WzBdLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIXRoaXMuY29uZmlnLnNob3dHcmFuZFRvdGFscyAmJlxyXG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dSb3dHcmFuZFRvdGFscyAmJlxyXG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dDb2x1bW5HcmFuZFRvdGFsc1xyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnBpdm90VGFibGVHcmFuZFRvdGFsTGlzdFsxXS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dHcmFuZFRvdGFscyAmJlxyXG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dSb3dHcmFuZFRvdGFscyAmJlxyXG4gICAgICAgICF0aGlzLmNvbmZpZy5zaG93Q29sdW1uR3JhbmRUb3RhbHNcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5waXZvdFRhYmxlR3JhbmRUb3RhbExpc3RbMl0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmNvbmZpZy5zaG93R3JhbmRUb3RhbHMgJiZcclxuICAgICAgICAhdGhpcy5jb25maWcuc2hvd1Jvd0dyYW5kVG90YWxzICYmXHJcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd0NvbHVtbkdyYW5kVG90YWxzXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMucGl2b3RUYWJsZUdyYW5kVG90YWxMaXN0WzNdLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdENoYXJEYXRhKG5vRGV0ZWN0ID0gZmFsc2UpIHtcclxuICAgIGlmICghdGhpcy5kYXNoYm9hcmQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGZpbGVzT2JqID0ge307IC8vIOeUqOadpee/u+ivkVxyXG4gICAgZm9yICh2YXIgaSBpbiB0aGlzLkRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmZpZWxkc0Fyclt0aGlzLmRhc2hib2FyZC5pZF0pIHtcclxuICAgICAgaWYgKHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZmllbGRzQXJyW3RoaXMuZGFzaGJvYXJkLmlkXVtpXSkge1xyXG4gICAgICAgIHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZmllbGRzQXJyW3RoaXMuZGFzaGJvYXJkLmlkXVtpXS5mb3JFYWNoKFxyXG4gICAgICAgICAgKHQpID0+IHtcclxuICAgICAgICAgICAgZmlsZXNPYmpbdC5jb2xOYW1lXSA9IHRbXCJsYW5nQ29kZVwiXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnBvcnRsZXRzLmZvckVhY2goKGUpID0+IHtcclxuICAgICAgaWYgKCFlLmNvbmZpZykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBjb25maWcgPSBKU09OLnBhcnNlKGUuY29uZmlnKTtcclxuICAgICAgLy8g5aaC5p6c5pivIGhpc3RvcmljYWxJUlLvvIzmoLnmja4gdmlzdWFsVHlwZSDov5vooYzmuLLmn5NcclxuICAgICAgY29uc3QgcG9ydGxldFR5cGUgPVxyXG4gICAgICAgIGNvbmZpZy5wb3J0bGV0VHlwZSA9PT0gXCJoaXN0b3JpY2FsSVJSXCJcclxuICAgICAgICAgID8gY29uZmlnLnNlbGVjdGVkVmlzdWFsVHlwZVxyXG4gICAgICAgICAgOiBjb25maWcucG9ydGxldFR5cGU7XHJcbiAgICAgIGxldCBpc05ld0NoYXJ0ID0gW1wibmV3Y29sdW1uXCIsIFwibmV3bGluZVwiLCBcIm5ld2NvbHVtbmxpbmVcIl0uaW5jbHVkZXMoXHJcbiAgICAgICAgcG9ydGxldFR5cGVcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmIChpc05ld0NoYXJ0KSB7XHJcbiAgICAgICAgbGV0IGRhdGFDb2x1bW4gPSBbXTtcclxuICAgICAgICBsZXQgZGF0YUxpbmUgPSBbXTtcclxuICAgICAgICBsZXQgeVhpYXMgPSBbXTtcclxuICAgICAgICBsZXQgc2Vjb25kWVhpYXMgPSBbXTtcclxuICAgICAgICAvLyBjb25zdCBjb25maWcgPSBKU09OLnBhcnNlKGUuY29uZmlnKTtcclxuICAgICAgICBpZiAoY29uZmlnLnNlbGVjdGVkWSAmJiBjb25maWcuc2VsZWN0ZWRZLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHlYaWFzID0gY29uZmlnLnNlbGVjdGVkWTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjb25maWcuc2VsZWN0ZWRTZWNvbmRZICYmIGNvbmZpZy5zZWxlY3RlZFNlY29uZFkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgc2Vjb25kWVhpYXMgPSBjb25maWcuc2VsZWN0ZWRTZWNvbmRZO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGRhdGFJdGVtO1xyXG4gICAgICAgIGlmIChlLmlkICYmIGUuaWQgIT0gXCIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIikge1xyXG4gICAgICAgICAgZGF0YUl0ZW0gPVxyXG4gICAgICAgICAgICB0aGlzLkRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBvcnRsZXREYXRhX05ld1t0aGlzLmRhc2hib2FyZC5pZF1bXHJcbiAgICAgICAgICAgICAgZS5pZFxyXG4gICAgICAgICAgICBdIHx8IFtdO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZS5uZXdJZCkge1xyXG4gICAgICAgICAgZGF0YUl0ZW0gPVxyXG4gICAgICAgICAgICB0aGlzLkRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBvcnRsZXREYXRhX05ld1t0aGlzLmRhc2hib2FyZC5pZF1bXHJcbiAgICAgICAgICAgICAgZS5uZXdJZFxyXG4gICAgICAgICAgICBdIHx8IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGF0YUl0ZW0gJiYgZGF0YUl0ZW0uZGF0YSAmJiBkYXRhSXRlbS5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IHhBeGlzRmllbGQgPSBjb25maWcuZmllbGRzLmZpbmQoXHJcbiAgICAgICAgICAgIChmaWVsZCkgPT4gZmllbGQuY29sTmFtZSA9PT0gY29uZmlnLnNlbGVjdGVkWFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGRhdGFJdGVtLmRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwZXJpb2QgPVxyXG4gICAgICAgICAgICAgIHhBeGlzRmllbGQgJiYgeEF4aXNGaWVsZC5kYXRhVHlwZSA9PT0gXCJkYXRlXCJcclxuICAgICAgICAgICAgICAgID8gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oaXRlbVtjb25maWcuc2VsZWN0ZWRYXSwgXCJ5eXl5LU1NLWRkXCIpXHJcbiAgICAgICAgICAgICAgICA6IGl0ZW1bY29uZmlnLnNlbGVjdGVkWF07XHJcbiAgICAgICAgICAgIGlmIChwb3J0bGV0VHlwZSA9PSBcIm5ld2xpbmVcIikge1xyXG4gICAgICAgICAgICAgIGlmICh5WGlhcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb2JqID0geyBwZXJpb2QgfTtcclxuICAgICAgICAgICAgICAgIHlYaWFzLmZvckVhY2goKHkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgb2JqW3RoaXMudHJhbnNsYXRpb25bZmlsZXNPYmpbeV1dIHx8IHldID0gaXRlbVt5XTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgZGF0YUxpbmUucHVzaChvYmopO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoeVhpYXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG9iaiA9IHsgcGVyaW9kIH07XHJcbiAgICAgICAgICAgICAgICB5WGlhcy5mb3JFYWNoKCh5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIG9ialt0aGlzLnRyYW5zbGF0aW9uW2ZpbGVzT2JqW3ldXSB8fCB5XSA9IGl0ZW1beV07XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGRhdGFDb2x1bW4ucHVzaChvYmopO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKHNlY29uZFlYaWFzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGxldCBvYmogPSB7IHBlcmlvZCB9O1xyXG4gICAgICAgICAgICAgICAgc2Vjb25kWVhpYXMuZm9yRWFjaCgoeSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBvYmpbdGhpcy50cmFuc2xhdGlvbltmaWxlc09ialt5XV0gfHwgeV0gPSBpdGVtW3ldO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBkYXRhTGluZS5wdXNoKG9iaik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIOaXtumXtOaOkuW6j1xyXG4gICAgICAgIGlmIChjb25maWcuc2VsZWN0ZWRYID09IFwiRGF0ZVwiKSB7XHJcbiAgICAgICAgICBkYXRhQ29sdW1uICYmIGRhdGFDb2x1bW4uc29ydCh0aGlzLmNvbXBhcmVEYXRlcyk7XHJcbiAgICAgICAgICBkYXRhTGluZSAmJiBkYXRhTGluZS5zb3J0KHRoaXMuY29tcGFyZURhdGVzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIOi1i+WAvGRhdGFDb2x1bW7lkoxkYXRhTGluZeWvueW6lOeahFR5cGVcclxuICAgICAgICBjb25maWcuZmllbGRzLmZvckVhY2goKHQpID0+IHtcclxuICAgICAgICAgIGlmIChjb25maWcuc2VsZWN0ZWRZICYmIGNvbmZpZy5zZWxlY3RlZFkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBpZiAodFtcImNvbE5hbWVcIl0gPT0gY29uZmlnLnNlbGVjdGVkWVswXSkge1xyXG4gICAgICAgICAgICAgIGVbXCJjb2x1bW5UeXBlXCJdID0gdFtcImRhdGFUeXBlXCJdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGNvbmZpZy5zZWxlY3RlZFNlY29uZFkgJiYgY29uZmlnLnNlbGVjdGVkU2Vjb25kWS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGlmICh0W1wiY29sTmFtZVwiXSA9PSBjb25maWcuc2VsZWN0ZWRTZWNvbmRZWzBdKSB7XHJcbiAgICAgICAgICAgICAgZVtcImxpbmVUeXBlXCJdID0gdFtcImRhdGFUeXBlXCJdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGVbXCJkYXRhQ29sdW1uXCJdID0gZGF0YUNvbHVtbjtcclxuICAgICAgICBlW1wiZGF0YUxpbmVcIl0gPSBkYXRhTGluZTtcclxuICAgICAgICBpZiAoY29uZmlnW1wic2VsZWN0VGhlbWVcIl0pIHtcclxuICAgICAgICAgIGVbXCJ0aGVtZUNvbG9yXCJdID0gdGhpcy50aGVtZU9ialtjb25maWdbXCJzZWxlY3RUaGVtZVwiXV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmICghbm9EZXRlY3QpIHtcclxuICAgICAgdGhpcy5zZXRBY3RpdmVEYXNoYm9hcmRQb3J0bGV0cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tcGFyZURhdGVzKGEsIGIpIHtcclxuICAgIGNvbnN0IGRhdGVBID0gbmV3IERhdGUoYS5wZXJpb2QpO1xyXG4gICAgY29uc3QgZGF0ZUIgPSBuZXcgRGF0ZShiLnBlcmlvZCk7XHJcblxyXG4gICAgaWYgKGRhdGVBIDwgZGF0ZUIpIHtcclxuICAgICAgcmV0dXJuIC0xO1xyXG4gICAgfSBlbHNlIGlmIChkYXRlQSA+IGRhdGVCKSB7XHJcbiAgICAgIHJldHVybiAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cnVuY2F0ZVRleHQodGV4dCwgbWF4V2lkdGggPSA3MCwgZm9udFNpemUgPSAxMSkge1xyXG4gICAgLy8g5Yib5bu65LiA5Liq6ZqQ5b2i55qEIHNwYW4g5p2l5rWL6YeP5paH5pys5a695bqmXHJcbiAgICBjb25zdCBtZWFzdXJlU3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICBtZWFzdXJlU3Bhbi5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcclxuICAgIG1lYXN1cmVTcGFuLnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xyXG4gICAgbWVhc3VyZVNwYW4uc3R5bGUuZm9udFNpemUgPSBmb250U2l6ZSArIFwicHhcIjtcclxuICAgIG1lYXN1cmVTcGFuLnN0eWxlLndoaXRlU3BhY2UgPSBcIm5vd3JhcFwiO1xyXG4gICAgbWVhc3VyZVNwYW4uaW5uZXJUZXh0ID0gdGV4dDtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobWVhc3VyZVNwYW4pO1xyXG5cclxuICAgIC8vIOS6jOWIhuafpeaJvuadpeaJvuWIsOacgOS9s+aIquaWreeCuVxyXG4gICAgbGV0IGxlZnQgPSAxO1xyXG4gICAgbGV0IHJpZ2h0ID0gdGV4dC5sZW5ndGggLSAxO1xyXG4gICAgbGV0IGxlZnRPclJpZ2h0ID0gXCJsZWZ0XCI7XHJcbiAgICBsZXQgaXNCaWdnZXIgPSBmYWxzZTtcclxuICAgIGlmIChtZWFzdXJlU3Bhbi5vZmZzZXRXaWR0aCA+IG1heFdpZHRoKSB7XHJcbiAgICAgIHdoaWxlICghaXNCaWdnZXIpIHtcclxuICAgICAgICBtZWFzdXJlU3Bhbi5pbm5lclRleHQgPSBgJHt0ZXh0LnNsaWNlKDAsIGxlZnQpfS4uLiR7dGV4dC5zbGljZShyaWdodCl9YDtcclxuICAgICAgICBpZiAobWVhc3VyZVNwYW4ub2Zmc2V0V2lkdGggPiBtYXhXaWR0aCkge1xyXG4gICAgICAgICAgaXNCaWdnZXIgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAobGVmdE9yUmlnaHQgPT09IFwibGVmdFwiKSB7XHJcbiAgICAgICAgICAgIGxlZnRPclJpZ2h0ID0gXCJyaWdodFwiO1xyXG4gICAgICAgICAgICBsZWZ0ID0gbGVmdCArIDE7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZWZ0T3JSaWdodCA9IFwibGVmdFwiO1xyXG4gICAgICAgICAgICByaWdodCA9IHJpZ2h0IC0gMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobWVhc3VyZVNwYW4pO1xyXG4gICAgICByZXR1cm4gdGV4dDtcclxuICAgIH1cclxuICAgIC8vIOa4heeQhuW5tui/lOWbnue7k+aenFxyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChtZWFzdXJlU3Bhbik7XHJcbiAgICByZXR1cm4gYCR7dGV4dC5zbGljZSgwLCBsZWZ0IC0gMSl9JHtsZWZ0ICE9PSAxID8gXCIuLi5cIiA6IFwiXCJ9JHt0ZXh0LnNsaWNlKFxyXG4gICAgICByaWdodCArIDFcclxuICAgICl9YDtcclxuICB9XHJcblxyXG4gIGdldFBhZGRpbmdCb3R0b20oKSB7XHJcbiAgICBsZXQgcGFkZGluZ0JvdHRvID0gNTA7XHJcbiAgICAvLyDlrZjlnKhUaXRsZSDmiJbogIUgRGVzY3JpcHRpb27ljaDkvY3nva7ml7ZcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5kYXNoYm9hcmQgJiZcclxuICAgICAgKHRoaXMuZGFzaGJvYXJkLnRpdGxlIHx8IHRoaXMuZGFzaGJvYXJkLmRlc2NyaXB0aW9uKVxyXG4gICAgKSB7XHJcbiAgICAgIGxldCBnYXAgPSAwO1xyXG4gICAgICBpZiAodGhpcy5kYXNoYm9hcmQudGl0bGUpIHtcclxuICAgICAgICBnYXAgKz0gNTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5kYXNoYm9hcmQuZGVzY3JpcHRpb24pIHtcclxuICAgICAgICBnYXAgKz0gMjA7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZWxlbWVudDogYW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5wb3J0bGV0cy1kZXNjcmlwdGlvblwiKTtcclxuICAgICAgcGFkZGluZ0JvdHRvID0gZWxlbWVudCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgZ2FwICsgNTAgOiA1MDtcclxuICAgIH1cclxuICAgIHJldHVybiBwYWRkaW5nQm90dG8gKyBcInB4XCI7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVEYXNoYm9hcmRMYXN0VXBkYXRlRGF0ZSgpIHtcclxuICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgY29uc3QgX2RhdGFPYmogPSB7IGRhc2hib2FyZElkOiB0aGlzLnVybF9pZCwgbGFuZ3VhZ2U6IHRoaXMubGFuZyB9O1xyXG4gICAgdGhpcy5odHRwLnBvc3QodGhpcy5hcGkudXJsTGlzdC5HZXREYXNoYm9hcmRWMiwgX2RhdGFPYmosIChyZXMpID0+IHtcclxuICAgICAgcmVzID0gdGhpcy5wYmYuY29udmVydEtleXNUb0xvd2VyQ2FzZShyZXMpO1xyXG4gICAgICB0aGlzLmRhc2hib2FyZC5VcGRhdGVkRGF0ZSA9IHJlcy5VcGRhdGVkRGF0ZTtcclxuICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmdfLm5leHQodHJ1ZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNhdmVkYXNoYm9hcmQoc2hvdWxkVXBkYXRlID0gXCJmYWxzZVwiKSB7XHJcbiAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnBiZi5wYWdlTG9hZGluZ18ubmV4dCh0cnVlKTtcclxuICAgIGNvbnN0IHBkYXRhID0gdGhpcy5kYXNoYm9hcmRMYXlvdXQuc2VyaWFsaXplKCk7XHJcbiAgICB0aGlzLm5ld1Bvc2l0aW9uID0gWy4uLnBkYXRhXTtcclxuICAgIGNvbnN0IHBvcnRsZXRzID0gWy4uLnRoaXMucG9ydGxldHNdO1xyXG5cclxuICAgIGlmIChwb3J0bGV0cyAmJiBwb3J0bGV0cy5sZW5ndGgpIHtcclxuICAgICAgbGV0IGFjdGl2ZVRhYkhhc1BvcnRsZXQgPSBmYWxzZTtcclxuICAgICAgY29uc3QgdGFiSWRzID0gW107XHJcbiAgICAgIHBvcnRsZXRzLm1hcCgoZWwpID0+IHtcclxuICAgICAgICBjb25zdCBkYXRhID0gZmluZCh0aGlzLm5ld1Bvc2l0aW9uLCAoaXRlbSkgPT4gaXRlbS5pZCA9PT0gZWwubmV3SWQpO1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICBlbC5jb2wgPSBkYXRhLmNvbDtcclxuICAgICAgICAgIGVsLnBvc1ggPSBkYXRhLmNvbDtcclxuICAgICAgICAgIGVsLnJvdyA9IGRhdGEucm93O1xyXG4gICAgICAgICAgZWwucG9zWSA9IGRhdGEucm93O1xyXG4gICAgICAgICAgZWwuc2l6ZVggPSBkYXRhLnNpemVYO1xyXG4gICAgICAgICAgZWwud2lkdGggPSBkYXRhLnNpemVYO1xyXG4gICAgICAgICAgZWwuc2l6ZVkgPSBkYXRhLnNpemVZO1xyXG4gICAgICAgICAgZWwuaGVpZ2h0ID0gZGF0YS5zaXplWTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGNvbmZpZyA9IGVsLmNvbmZpZyA/IEpTT04ucGFyc2UoZWwuY29uZmlnKSA6IG51bGw7XHJcbiAgICAgICAgaWYgKGNvbmZpZykge1xyXG4gICAgICAgICAgY29uZmlnID0ge1xyXG4gICAgICAgICAgICAuLi5jb25maWcsXHJcbiAgICAgICAgICAgIHByZXZEYXNoYm9hcklkOiBlbC5pZCxcclxuICAgICAgICAgICAgYWN0aXZlVGFiOiB0aGlzLmFjdGl2ZVRhYixcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0YWJJZHMucHVzaChjb25maWcudGFiSWQpO1xyXG4gICAgICAgICAgaWYgKGNvbmZpZy50YWJJZCA9PT0gdGhpcy5hY3RpdmVUYWIpIHtcclxuICAgICAgICAgICAgYWN0aXZlVGFiSGFzUG9ydGxldCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbC5jb25maWcgPSBDaXJjdWxhckpTT04uc3RyaW5naWZ5KGNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKCFhY3RpdmVUYWJIYXNQb3J0bGV0KSB7XHJcbiAgICAgICAgcG9ydGxldHMuZm9yRWFjaCgoZWwpID0+IHtcclxuICAgICAgICAgIGxldCBjb25maWcgPSBlbC5jb25maWcgPyBKU09OLnBhcnNlKGVsLmNvbmZpZykgOiBudWxsO1xyXG4gICAgICAgICAgaWYgKGNvbmZpZykge1xyXG4gICAgICAgICAgICBjb25maWcgPSB7XHJcbiAgICAgICAgICAgICAgLi4uY29uZmlnLFxyXG4gICAgICAgICAgICAgIHByZXZEYXNoYm9hcklkOiBlbC5pZCxcclxuICAgICAgICAgICAgICBhY3RpdmVUYWI6IHRhYklkc1swXSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsLmNvbmZpZyA9IENpcmN1bGFySlNPTi5zdHJpbmdpZnkoY29uZmlnKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGRhdGFPYmogPSB7XHJcbiAgICAgIHBvcnRsZXRzLFxyXG4gICAgICBkYXNoYm9hcmRJZDogdGhpcy51cmxfaWQsXHJcbiAgICAgIGxhc3RVcGRhdGVEYXRlOiB0aGlzLmRhc2hib2FyZC5VcGRhdGVkRGF0ZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmh0dHAucG9zdCh0aGlzLmFwaS51cmxMaXN0LlNhdmVEYXNoYm9hcmRQb3J0bGV0cywgZGF0YU9iaiwgKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgIHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuR2V0RGFzaGJvYXJkVjEoXHJcbiAgICAgICAgICB0aGlzLnVybF9pZCxcclxuICAgICAgICAgIGZhbHNlLFxyXG4gICAgICAgICAgKF9yZXMsIF9wb3J0bGV0cyA9IFtdKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICBpZiAoIV9yZXMpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgX3NhdmVNZXNzYWdlID1cclxuICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uLkRBU0hCT0FSRF9TQVZFX01FU1NBR0UgfHxcclxuICAgICAgICAgICAgICBcIkRhc2hib2FyZCBoYXMgYmVlbiB1cGRhdGVkXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93U3VjTXNnKF9zYXZlTWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGlmIChzaG91bGRVcGRhdGUgIT09IFwidHJ1ZVwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50b2dnbGVDdXN0b21pemUoZmFsc2UpO1xyXG4gICAgICAgICAgICAgIHRoaXMudG9nZ2xlU2lkZWJhcihmYWxzZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVQdXNoQnRuKGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURhc2hib2FyZCh7XHJcbiAgICAgICAgICAgICAgZGFzaGJvYXJkOiBfcmVzLFxyXG4gICAgICAgICAgICAgIHBvcnRsZXRzOiBfcG9ydGxldHMsXHJcbiAgICAgICAgICAgICAgbm9EZXRlY3Q6IHRydWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmluaXRsYXlvdXQodHJ1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgZXJyb3JNZXNzYWdlID0gXCJEYXNoYm9hcmQgc2F2ZSBmYWlsZWRcIjtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXMubWVzc2FnZXMpKSB7XHJcbiAgICAgICAgICBlcnJvck1lc3NhZ2UgPSByZXMubWVzc2FnZXNbMF0ubWVzc2FnZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dOb3RpZmljYXRpb24oZXJyb3JNZXNzYWdlLCB7XHJcbiAgICAgICAgICBzdGF0dXM6IFwiRXJyb3JcIixcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|
|
2930
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZS1ncm91cC1uZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9kYXNoYm9hcmQvcGFuZS1ncm91cC1uZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ04sWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNoQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxrQkFBa0IsR0FDbkIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVyRSxPQUFPLFlBQVksTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDekMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFXOUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9B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Q3pDLG9DQUFvQjs7Ozs7SUFDcEIsK0NBQXNDOztJQUN0Qyx3REFBdUQ7Ozs7O0lBQ3ZELG9DQUE4Qjs7Ozs7SUFDOUIsdUNBQXNCOzs7OztJQUN0QiwyQ0FBOEI7Ozs7O0lBQzlCLHlDQUEwQjs7Ozs7SUFDMUIsb0NBQStDOzs7OztJQUMvQyxxQ0FBd0Q7O0lBQ3hELG1DQUFzRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBFbGVtZW50UmVmLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBRdWVyeUxpc3QsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIEluamVjdCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXJcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgRGFzaGJvYXJkU2VydmljZSB9IGZyb20gXCIuL2Rhc2hib2FyZC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFwaUxpc3QgfSBmcm9tIFwiLi9hcGlcIjtcclxuaW1wb3J0IHtcclxuICBBUElfU0VSVklDRV9UT0tFTixcclxuICBQQkZfVE9LRU4sXHJcbiAgUk9MRV9TRVJWSUNFX1RPS0VOLFxyXG59IGZyb20gXCIuLi9zZXJ2aWNlL0luamVjdGlvblRva2VuXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFBvcmxldHNTZXJ2aWNlIH0gZnJvbSBcIi4vZGFzaGJvYXJkUG9ybGV0cy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCBDaXJjdWxhckpTT04gZnJvbSBcImNpcmN1bGFyLWpzb25cIjtcclxuXHJcbmltcG9ydCB7IE1BVF9EQVRFX0ZPUk1BVFMgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAsIGZpbmQgfSBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZExheW91dENvbXBvbmVudCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1sYXlvdXRzXCI7XHJcbmltcG9ydCB7IEZpZWxkRm9ybWF0Q29tcG9uZW50IH0gZnJvbSBcIi4vc2lkZWJhci1pY29ubGlzdC9maWVsZC1mb3JtYXQvZmllbGQtZm9ybWF0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBHYWRnZXRUYWJsZUNvbXBvbmVudCB9IGZyb20gXCIuL2dhZGdldC1ncm91cC9nYWRnZXQtdGFibGUvZ2FkZ2V0LXRhYmxlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBHYWRnZXRQaXZvdENvbXBvbmVudCB9IGZyb20gXCIuL2dhZGdldC1ncm91cC9nYWRnZXQtcGl2b3QvZ2FkZ2V0LXBpdm90LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBHYWRnZXRQaXZvdENoYXJ0Q29tcG9uZW50IH0gZnJvbSBcIi4vZ2FkZ2V0LWdyb3VwL2dhZGdldC1waXZvdC1jaGFydC9nYWRnZXQtcGl2b3QuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEdhZGdldFRyYW5zcG9zZUNvbXBvbmVudCB9IGZyb20gXCIuL2dhZGdldC1ncm91cC9nYWRnZXQtdHJhbnNwb3NlL2dhZGdldC10cmFuc3Bvc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgLy8gUGRmRXhwb3J0UHJvcGVydGllcyxcclxuICBFeGNlbEV4cG9ydFByb3BlcnRpZXMsXHJcbiAgQ29sdW1uTW9kZWwsXHJcbn0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWdyaWRzXCI7XHJcbmltcG9ydCB7IElBeGlzU2V0IH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLXBpdm90dmlld1wiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IERhdGFNYXJ0TmV3Q29tcG9uZW50IH0gZnJvbSBcIi4vZGFzaGJvYXJkLXByb3BlcnRpZXMvZGF0YS1tYXJ0LW5ldy9kYXRhLW1hcnQtbmV3LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBCYXJDaGFydHNDb21wb25lbnQgfSBmcm9tIFwiLi9iYXItY2hhcnRzL2Jhci1jaGFydHMuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IGRlYm91bmNlIH0gZnJvbSBcIi4vYmFyLWNoYXJ0cy91dGlsc1wiO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgUGFuZURvd25sb2FkQ29tcG9uZW50IH0gZnJvbSBcIi4vZGlhbG9nLWdyb3VwL2Rvd25sb2FkL2luZGV4LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlL2RpYWxvZy5zZXJ2aWNlXCI7XHJcblxyXG5sZXQgZGF0ZUZvcm1hdCA9IFwiREQtTU0tWVlZWVwiO1xyXG5pZiAobG9jYWxTdG9yYWdlW1wic2V0dGluZ1wiXSkge1xyXG4gIGNvbnN0IGRhdGVBcnJheSA9IGZpbmQoXHJcbiAgICBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic2V0dGluZ1wiKSB8fCBcInt9XCIpLFxyXG4gICAgKGl0ZW0pID0+IGl0ZW0gJiYgaXRlbVtcInBhcmFtZXRlclwiXSA9PT0gXCJEQVRFX0ZPUk1BVFwiXHJcbiAgKTtcclxuICBpZiAoZGF0ZUFycmF5KSB7XHJcbiAgICBkYXRlRm9ybWF0ID0gZGF0ZUFycmF5LnZhbHVlO1xyXG4gIH1cclxufVxyXG5cclxuY29uc3QgTVlfRk9STUFUUyA9IHtcclxuICBwYXJzZToge1xyXG4gICAgZGF0ZUlucHV0OiBcIkRELU1NLVlZWVlcIixcclxuICB9LFxyXG4gIGRpc3BsYXk6IHtcclxuICAgIGRhdGVJbnB1dDogZGF0ZUZvcm1hdCxcclxuICAgIG1vbnRoWWVhckxhYmVsOiBcIllZWVlcIixcclxuICAgIGRhdGVBMTF5TGFiZWw6IFwiTExcIixcclxuICAgIG1vbnRoWWVhckExMXlMYWJlbDogXCJZWVlZXCIsXHJcbiAgfSxcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInJzLWRhc2hib2FyZFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vcGFuZS1ncm91cC1uZXcuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vcGFuZS1ncm91cC1uZXcuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgLy8gY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbRGF0ZVBpcGUsIHsgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IE1ZX0ZPUk1BVFMgfV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYW5lR3JvdXBOZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBPdXRwdXQoKSBkYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8YW55Pj47XHJcbiAgQElucHV0KCkgYXBwQ29kZSA9IFwiUE1TXCI7XHJcbiAgQFZpZXdDaGlsZChcInNpZGViYXJcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIHNpZGViYXI6IGFueTtcclxuICBAVmlld0NoaWxkcmVuKFwidW5jbGlja1wiKSB1bmNsaWNrOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcbiAgQFZpZXdDaGlsZHJlbihcInVuY2xpY2tHcmFuZFwiKSB1bmNsaWNrR3JhbmQ6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuICBAVmlld0NoaWxkcmVuKFwibmV3Q2hhcnRcIikgbmV3Q2hhcnQ6IFF1ZXJ5TGlzdDxCYXJDaGFydHNDb21wb25lbnQ+O1xyXG4gIHBvcnRsZXQ7XHJcbiAgdGFiYWN0aXZlOiBib29sZWFuO1xyXG4gIGRhc2hib2FyZDtcclxuICBzZWxlY3RlZFkgPSBbXTtcclxuICBzZWxlY3RlZFNlY29uZFkgPSBbXTtcclxuICBzZWxlY3RlZFggPSBbXTtcclxuICBzZWxlY3RlZE11bHRpcGxlczogYW55O1xyXG4gIHNlbGVjdFRoZW1lOiBhbnk7XHJcbiAgaGFzSW5pdCA9IHRydWU7XHJcbiAgYWN0aXZlVGFiSWQ6IGFueTtcclxuICBoYXNDaGFuZ2VEYXRhVGFibGUgPSBmYWxzZTtcclxuICBhY3RpdmVUYWJMYWJlbCA9IFwiXCI7XHJcbiAgc3RheUFjdGl2ZVRhYjogYm9vbGVhbjtcclxuICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6Y2xpY2tcIiwgW1wiJGV2ZW50XCJdKSBib2R5Q2xpY2soZSkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnVuY2xpY2sgJiZcclxuICAgICAgdGhpcy51bmNsaWNrLmZpcnN0ICYmXHJcbiAgICAgIGUudGFyZ2V0LnRhZ05hbWUgIT09IFwiSU1HXCIgJiZcclxuICAgICAgIXRoaXMudW5jbGljay5maXJzdC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGUudGFyZ2V0KVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc2hvd1N1YlRvdGFsR3JvdXAgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMudW5jbGlja0dyYW5kLmZpcnN0ICYmXHJcbiAgICAgIGUudGFyZ2V0LnRhZ05hbWUgIT09IFwiSU1HXCIgJiZcclxuICAgICAgIXRoaXMudW5jbGlja0dyYW5kLmZpcnN0Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZS50YXJnZXQpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zaG93Z3JhbmRUb3RhbEdyb3VwID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd1RhYmxlR3JhbmRUb3RhbEdyb3VwID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHB1YmxpYyB0cmFuc2xhdGlvbiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ0cmFuc2xhdGlvblwiKSB8fCBcInt9XCIpO1xyXG4gIHByaXZhdGUgbGFuZztcclxuICBwdXNoX2J0biA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoXCJkZWZhdWx0TGF5b3V0XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGRhc2hib2FyZExheW91dDogRGFzaGJvYXJkTGF5b3V0Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoXCJjYW52YXNcIiwgeyBzdGF0aWM6IHRydWUgfSkgY2FudmFzOiBFbGVtZW50UmVmO1xyXG4gIHByaXZhdGUgY29uZmlnO1xyXG4gIHB1YmxpYyBkcmFnZ2FibGVIYW5kbGU6IHN0cmluZyA9IFwiLmdhZGdldC10aXRsZVwiO1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwdWJsaWMgdXJsO1xyXG4gIHB1YmxpYyB1cmxfaWQ7XHJcbiAgcHVibGljIHVybF90eXBlO1xyXG4gIC8vIHByaXZhdGUgaW1nO1xyXG4gIHB1YmxpYyBkYXRlUGlwZUZvcm1hdDtcclxuICBwdWJsaWMgaGF2ZUZ1bGxTY3JlZW4gPSBbXTtcclxuICAvLyBwcml2YXRlIGNsaWVudEhlaWdodF87XHJcbiAgcHVibGljIGNlbGxTcGFjaW5nOiBudW1iZXJbXSA9IFsyMCwgMjBdO1xyXG4gIHB1YmxpYyBjZWxsQXNwZWN0UmF0aW87XHJcbiAgcHVibGljIHJlc2l6YWJsZUhhbmRsZXM7XHJcbiAgbmV3UG9zaXRpb24gPSBbXTtcclxuXHJcbiAgcHVibGljIG1lZGlhUXVlcnk7XHJcbiAgZmlndXJlQ29kZTtcclxuICBjdXN0b21pemVkID0gZmFsc2U7XHJcbiAgcHVibGljIGNoYXJ0VHlwZUxpc3QgPSBbXCJDb2x1bW5cIiwgXCJCYXJcIiwgXCJMaW5lXCIsIFwiQXJlYVwiLCBcIlNjYXR0ZXJcIiwgXCJQb2xhclwiXTtcclxuICBAVmlld0NoaWxkcmVuKFwidGFibGVcIilcclxuICBwdWJsaWMgdGFibGU6IFF1ZXJ5TGlzdDxHYWRnZXRUYWJsZUNvbXBvbmVudD47XHJcbiAgQFZpZXdDaGlsZHJlbihcInBpdm90XCIpXHJcbiAgcHVibGljIHBpdm90OiBRdWVyeUxpc3Q8R2FkZ2V0UGl2b3RDb21wb25lbnQgfCBHYWRnZXRQaXZvdENoYXJ0Q29tcG9uZW50PjtcclxuICBAVmlld0NoaWxkcmVuKFwidHJhbnNwb3NlXCIpXHJcbiAgcHVibGljIHRyYW5zcG9zZTogUXVlcnlMaXN0PEdhZGdldFRyYW5zcG9zZUNvbXBvbmVudD47XHJcbiAgcHVibGljIHBpdm90VGFibGVTdWJUb3RhbExpc3Q6IEFycmF5PGFueT4gPSBbXHJcbiAgICB7XHJcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcclxuICAgICAgdmFsdWU6IHRoaXMudHJhbnNsYXRpb24uU0hPV19TVUJfVE9UQUxTIHx8IFwiU2hvdyBzdWIgdG90YWxzXCIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBzZWxlY3RlZDogZmFsc2UsXHJcbiAgICAgIHZhbHVlOiB0aGlzLnRyYW5zbGF0aW9uLkhJREVfU1VCX1RPVEFMUyB8fCBcIkhpZGUgc3ViIHRvdGFsc1wiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICB2YWx1ZTpcclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uLlNIT1dfU1VCX1RPVEFMU19ST1dTX09OTFkgfHxcclxuICAgICAgICBcIlNob3cgc3ViIHRvdGFscyByb3dzIG9ubHlcIixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcclxuICAgICAgdmFsdWU6XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbi5TSE9XX1NVQl9UT1RBTFNfQ09MVU1OU19PTkxZIHx8XHJcbiAgICAgICAgXCJTaG93IHN1YiB0b3RhbHMgY29sdW1ucyBvbmx5XCIsXHJcbiAgICB9LFxyXG4gIF07XHJcbiAgcHVibGljIHBpdm90VGFibGVHcmFuZFRvdGFsTGlzdDogQXJyYXk8YW55PiA9IFtcclxuICAgIHtcclxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICB2YWx1ZTogdGhpcy50cmFuc2xhdGlvbi5TSE9XX0dSQU5EX1RPVEFMUyB8fCBcIlNob3cgZ3JhbmQgdG90YWxzXCIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBzZWxlY3RlZDogZmFsc2UsXHJcbiAgICAgIHZhbHVlOiB0aGlzLnRyYW5zbGF0aW9uLkhJREVfR1JBTkRfVE9UQUxTIHx8IFwiSGlkZSBncmFuZCB0b3RhbHNcIixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcclxuICAgICAgdmFsdWU6XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbi5TSE9XX0dSQU5EX1RPVEFMU19ST1dTX09OTFkgfHxcclxuICAgICAgICBcIlNob3cgZ3JhbmQgdG90YWxzIHJvd3Mgb25seVwiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICB2YWx1ZTpcclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uLlNIT1dfR1JBTkRfVE9UQUxTX0NPTFVNTlNfT05MWSB8fFxyXG4gICAgICAgIFwiU2hvdyBncmFuZCB0b3RhbHMgY29sdW1ucyBvbmx5XCIsXHJcbiAgICB9LFxyXG4gIF07XHJcbiAgcHVibGljIHRhYmxlR3JhbmRUb3RhbExpc3Q6IEFycmF5PGFueT4gPSBbXHJcbiAgICB7XHJcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcclxuICAgICAgdmFsdWU6IHRoaXMudHJhbnNsYXRpb24uU0hPV19HUkFORF9UT1RBTFMgfHwgXCJTaG93IGdyYW5kIHRvdGFsc1wiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICB2YWx1ZTogdGhpcy50cmFuc2xhdGlvbi5ISURFX0dSQU5EX1RPVEFMUyB8fCBcIkhpZGUgZ3JhbmQgdG90YWxzXCIsXHJcbiAgICB9LFxyXG4gIF07XHJcblxyXG4gIHRoZW1lRGF0YTogYW55ID0gW1xyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTEzXCIsXHJcbiAgICAgIHZhbHVlOiBbXCIjMUMzNDg0XCIsIFwiIzM1QjlGQ1wiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMTRcIixcclxuICAgICAgdmFsdWU6IFtcIiMwNDU3OEZcIiwgXCIjM0VCQkNFXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxNVwiLFxyXG4gICAgICB2YWx1ZTogW1wiIzFDMzQ4NFwiLCBcIiMxMzZCQkJcIiwgXCIjMzVCOUZDXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxNlwiLFxyXG4gICAgICB2YWx1ZTogW1wiIzA0NTc4RlwiLCBcIiMwMDgyQUZcIiwgXCIjM0VCQkNFXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxN1wiLFxyXG4gICAgICB2YWx1ZTogW1wiIzFDMzQ4NFwiLCBcIiMxNjU5QTlcIiwgXCIjMUQ5N0UxXCIsIFwiIzM1QjlGQ1wiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMThcIixcclxuICAgICAgdmFsdWU6IFtcIiMwNDU3OEZcIiwgXCIjMDA3MEEzXCIsIFwiIzE2QTJDMlwiLCBcIiMzRUJCQ0VcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTE5XCIsXHJcbiAgICAgIHZhbHVlOiBbXCIjMUMzNDg0XCIsIFwiIzE2NTlBOVwiLCBcIiMxMzc1QzRcIiwgXCIjMUQ5N0UxXCIsIFwiIzM1QjlGQ1wiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMjBcIixcclxuICAgICAgdmFsdWU6IFtcIiMwNDU3OEZcIiwgXCIjMDA3MEEzXCIsIFwiIzAwODlCNFwiLCBcIiMxNkEyQzJcIiwgXCIjM0VCQkNFXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUyMVwiLFxyXG4gICAgICB2YWx1ZTogW1wiIzFDMzQ4NFwiLCBcIiMxNjU5QTlcIiwgXCIjMTM2OEI4XCIsIFwiIzEzNzVDNFwiLCBcIiMxRDk3RTFcIiwgXCIjMzVCOUZDXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUyMlwiLFxyXG4gICAgICB2YWx1ZTogW1wiIzA0NTc4RlwiLCBcIiMwMDcwQTNcIiwgXCIjMDA3RkFEXCIsIFwiIzAwODlCNFwiLCBcIiMxNkEyQzJcIiwgXCIjM0VCQkNFXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUyM1wiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzFDMzQ4NFwiLFxyXG4gICAgICAgIFwiIzE2NTlBOVwiLFxyXG4gICAgICAgIFwiIzE0NUZBRlwiLFxyXG4gICAgICAgIFwiIzEzNjhCOFwiLFxyXG4gICAgICAgIFwiIzEzNzVDNFwiLFxyXG4gICAgICAgIFwiIzFEOTdFMVwiLFxyXG4gICAgICAgIFwiIzM1QjlGQ1wiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUyNFwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzA0NTc4RlwiLFxyXG4gICAgICAgIFwiIzAwNzBBM1wiLFxyXG4gICAgICAgIFwiIzAwNzhBOVwiLFxyXG4gICAgICAgIFwiIzAwN0ZBRFwiLFxyXG4gICAgICAgIFwiIzAwODlCNFwiLFxyXG4gICAgICAgIFwiIzE2QTJDMlwiLFxyXG4gICAgICAgIFwiIzNFQkJDRVwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxMVwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzFDMzQ4NFwiLFxyXG4gICAgICAgIFwiIzE5NDY5N1wiLFxyXG4gICAgICAgIFwiIzE2NTlBOVwiLFxyXG4gICAgICAgIFwiIzEzNkJCQlwiLFxyXG4gICAgICAgIFwiIzE0N0VDQ1wiLFxyXG4gICAgICAgIFwiIzFCOTJERFwiLFxyXG4gICAgICAgIFwiIzI2QTVFRFwiLFxyXG4gICAgICAgIFwiIzM1QjlGQ1wiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxMlwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzA0NTc4RlwiLFxyXG4gICAgICAgIFwiIzAwNjU5QlwiLFxyXG4gICAgICAgIFwiIzAwNzNBNlwiLFxyXG4gICAgICAgIFwiIzAwODJBRlwiLFxyXG4gICAgICAgIFwiIzAwOTBCOFwiLFxyXG4gICAgICAgIFwiIzBGOUVDMFwiLFxyXG4gICAgICAgIFwiIzI5QURDN1wiLFxyXG4gICAgICAgIFwiIzNFQkJDRVwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxXCIsXHJcbiAgICAgIHZhbHVlOiBbXHJcbiAgICAgICAgXCIjNTk0YmI5XCIsXHJcbiAgICAgICAgXCIjZjFhZjMyXCIsXHJcbiAgICAgICAgXCIjNDY4OGVkXCIsXHJcbiAgICAgICAgXCIjZTA1NjNlXCIsXHJcbiAgICAgICAgXCIjODAzYTYzXCIsXHJcbiAgICAgICAgXCIjNmRkOGI1XCIsXHJcbiAgICAgICAgXCIjZTg3MjI1XCIsXHJcbiAgICAgICAgXCIjYzVkZjQyXCIsXHJcbiAgICAgICAgXCIjYzY0MzdkXCIsXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTJcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiM0Njg4ZWRcIixcclxuICAgICAgICBcIiNmMWFmMzJcIixcclxuICAgICAgICBcIiNlMDU2M2VcIixcclxuICAgICAgICBcIiM4MDNhNjNcIixcclxuICAgICAgICBcIiM2ZGQ4YjVcIixcclxuICAgICAgICBcIiNlODcyMjVcIixcclxuICAgICAgICBcIiNjNWRmNDJcIixcclxuICAgICAgICBcIiNjNjQzN2RcIixcclxuICAgICAgICBcIiM1OTRiYjlcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lM1wiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiI2M2NDM3ZFwiLFxyXG4gICAgICAgIFwiI2M1ZGY0MlwiLFxyXG4gICAgICAgIFwiI2U4NzIyNVwiLFxyXG4gICAgICAgIFwiIzZkZDhiNVwiLFxyXG4gICAgICAgIFwiI2UwNTYzZVwiLFxyXG4gICAgICAgIFwiIzgwM2E2M1wiLFxyXG4gICAgICAgIFwiI2YxYWYzMlwiLFxyXG4gICAgICAgIFwiIzU5NGJiOVwiLFxyXG4gICAgICAgIFwiIzQ2ODhlZFwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWU0XCIsXHJcbiAgICAgIHZhbHVlOiBbXHJcbiAgICAgICAgXCIjMmY0OTlmXCIsXHJcbiAgICAgICAgXCIjOGQxZDJlXCIsXHJcbiAgICAgICAgXCIjZTliZjM1XCIsXHJcbiAgICAgICAgXCIjNTE3NzJmXCIsXHJcbiAgICAgICAgXCIjNDY5YmQ4XCIsXHJcbiAgICAgICAgXCIjNWM0NDhmXCIsXHJcbiAgICAgICAgXCIjZGE3MzJmXCIsXHJcbiAgICAgICAgXCIjMjQ1MzUzXCIsXHJcbiAgICAgICAgXCIjNDNhMjQ1XCIsXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTVcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiMzODM4MzlcIixcclxuICAgICAgICBcIiM0NDZlYzZcIixcclxuICAgICAgICBcIiNjZjYzODRcIixcclxuICAgICAgICBcIiNlYmIzN2VcIixcclxuICAgICAgICBcIiM3MWEyNDlcIixcclxuICAgICAgICBcIiM0YmIxYTVcIixcclxuICAgICAgICBcIiNlODcyMjVcIixcclxuICAgICAgICBcIiNjNWRmNDJcIixcclxuICAgICAgICBcIiNjNjQzN2RcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lNlwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzUxN2FlMVwiLFxyXG4gICAgICAgIFwiIzYzODZlNVwiLFxyXG4gICAgICAgIFwiIzc0OTFlOVwiLFxyXG4gICAgICAgIFwiIzg0OWRlY1wiLFxyXG4gICAgICAgIFwiIzk0YTllZlwiLFxyXG4gICAgICAgIFwiI2E0YjZmMlwiLFxyXG4gICAgICAgIFwiI2I0YzNmNlwiLFxyXG4gICAgICAgIFwiI2M0Y2ZmOVwiLFxyXG4gICAgICAgIFwiI2Q0ZGRmZFwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWU3XCIsXHJcbiAgICAgIHZhbHVlOiBbXHJcbiAgICAgICAgXCIjMzk4MjhlXCIsXHJcbiAgICAgICAgXCIjNDg4ZTk5XCIsXHJcbiAgICAgICAgXCIjNTc5YWE1XCIsXHJcbiAgICAgICAgXCIjNjZhNmIwXCIsXHJcbiAgICAgICAgXCIjNzViM2JkXCIsXHJcbiAgICAgICAgXCIjODViZmM5XCIsXHJcbiAgICAgICAgXCIjOTVjZGQ2XCIsXHJcbiAgICAgICAgXCIjYTRkYWUyXCIsXHJcbiAgICAgICAgXCIjYjVlOGYwXCIsXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZThcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiNlNzk2M2RcIixcclxuICAgICAgICBcIiNlYTllNGJcIixcclxuICAgICAgICBcIiNlZWE2NTlcIixcclxuICAgICAgICBcIiNmMGFlNjhcIixcclxuICAgICAgICBcIiNmMmI2NzhcIixcclxuICAgICAgICBcIiNmM2JmODdcIixcclxuICAgICAgICBcIiNmNWM3OThcIixcclxuICAgICAgICBcIiNmNmQwYWFcIixcclxuICAgICAgICBcIiNmN2Q5YmJcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lOVwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzY0YThiNFwiLFxyXG4gICAgICAgIFwiIzdlYmVjMFwiLFxyXG4gICAgICAgIFwiIzljYzljYVwiLFxyXG4gICAgICAgIFwiI2I4ZDRkNFwiLFxyXG4gICAgICAgIFwiI2Q5ZDZjZFwiLFxyXG4gICAgICAgIFwiI2Q4YjdhN1wiLFxyXG4gICAgICAgIFwiI2NlOGY5M1wiLFxyXG4gICAgICAgIFwiI2MxNjI3ZlwiLFxyXG4gICAgICAgIFwiI2FkMjQ1OFwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxMFwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzQxNzZiYVwiLFxyXG4gICAgICAgIFwiIzU1OWFlOFwiLFxyXG4gICAgICAgIFwiIzcwYjNlOFwiLFxyXG4gICAgICAgIFwiI2E3Y2NlN1wiLFxyXG4gICAgICAgIFwiI2RmZGZkZlwiLFxyXG4gICAgICAgIFwiI2QyYTA4YlwiLFxyXG4gICAgICAgIFwiI2M3NmE1MFwiLFxyXG4gICAgICAgIFwiI2NhNGUzNFwiLFxyXG4gICAgICAgIFwiI2FhM2MyOVwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICBdO1xyXG4gIHN0YXJ0RWRpdCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93U3ViVG90YWxHcm91cDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93Z3JhbmRUb3RhbEdyb3VwOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dUYWJsZUdyYW5kVG90YWxHcm91cDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBDdXJyZW50X1BvcnRsZXRJZDtcclxuICBwdWJsaWMgcmVzdG9yZU1vZGVsOiBhbnkgPSBbXTtcclxuICBwdWJsaWMgdGhlbWVPYmogPSB7fTtcclxuICBlbmFibGVNdWx0aXBsZUF4aXMgPSBmYWxzZTtcclxuICBzaG93TGVnZW5kID0gZmFsc2U7XHJcbiAgdGltZXI7XHJcbiAgdGFiTGlzdDtcclxuICBhY3RpdmVUYWIgPSAxO1xyXG4gIHByZXZJZCA9IG51bGw7XHJcbiAgZGFzaGJvYXJkX3NpZGViYXIgPSBmYWxzZTtcclxuICBBY3RpdmVEYXNoYm9hcmRQb3J0bGV0cyA9IFtdO1xyXG4gIHBvcnRsZXRzID0gW107XHJcbiAgaGFzUmVzaXplID0gZmFsc2U7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJwYW5lc0xpc3RcIiwgeyBzdGF0aWM6IHRydWUgfSkgcGFuZXNMaXN0OiBFbGVtZW50UmVmO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRhc2hib2FyZFNlcnZpY2U6IERhc2hib2FyZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwaTogQXBpTGlzdCxcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHVibGljIERhc2hib2FyZFBvcmxldHNTZXJ2aWNlOiBEYXNoYm9hcmRQb3JsZXRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUEJGX1RPS0VOKSBwcml2YXRlIHBiZjogYW55LFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBUElfU0VSVklDRV9UT0tFTikgcHJpdmF0ZSBodHRwOiBhbnksXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFJPTEVfU0VSVklDRV9UT0tFTikgcHVibGljIHJzOiBhbnlcclxuICApIHtcclxuICAgIHRoaXMucm91dGVyLmV2ZW50c1xyXG4gICAgICAucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChlOiBOYXZpZ2F0aW9uRW5kKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5oYXNSZXNpemUgJiZcclxuICAgICAgICAgIGUudXJsID09PSB0aGlzLmFjdGl2YXRlZFJvdXRlW1wiX3JvdXRlclN0YXRlXCJdLnNuYXBzaG90LnVybFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkTGF5b3V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuQWN0aXZlRGFzaGJvYXJkUG9ydGxldHMgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5oYXNSZXNpemUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZ18ubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRMYXlvdXQucmVtb3ZlQWxsKCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnNldEFjdGl2ZURhc2hib2FyZFBvcnRsZXRzKCk7XHJcbiAgICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wYmYucGFnZUxvYWRpbmdfLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICBpZiAodGhpcy50aGVtZURhdGEgJiYgdGhpcy50aGVtZURhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnRoZW1lRGF0YS5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy50aGVtZU9ialtlLmlkXSA9IGVbXCJ2YWx1ZVwiXTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEluZm8oKTtcclxuICAgIHRoaXMuZ2V0RGFzaGJvYXJkKCk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMucGJmLnB1YiQuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICByZXMucmVmcmVzaFVybCAmJlxyXG4gICAgICAgICAgcmVzLnJlZnJlc2hVcmwgPT09IHRoaXMuYWN0aXZhdGVkUm91dGVbXCJfcm91dGVyU3RhdGVcIl0uc25hcHNob3QudXJsXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZ18ubmV4dCh0cnVlKTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdldERhc2hib2FyZCgpO1xyXG4gICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0RGFzaGJvYXJkUmVuYW1lKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmQgJiYgdGhpcy5kYXNoYm9hcmQuaWQgPT09IHJlcy5pZCkge1xyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmQuZGFzaGJvYXJkR3JvdXBOYW1lID0gcmVzLmRhc2hib2FyZEdyb3VwTmFtZTtcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkLmRhc2hib2FyZEdyb3VwSWQgPSByZXMuZGFzaGJvYXJkR3JvdXBJZDtcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkLmRlc2NyaXB0aW9uID0gcmVzLmRlc2NyaXB0aW9uO1xyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmQubmFtZSA9IHJlcy5uYW1lO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVEYXNoYm9hcmRMYXN0VXBkYXRlRGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5nZXRDdXN0b21pemVTdGF0dXMoKS5zdWJzY3JpYmUoKGlkKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkICYmIHRoaXMuZGFzaGJvYXJkLmlkID09PSBpZCkge1xyXG4gICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5wYmYuZ2V0SGFzUmVzaXplKCkuc3Vic2NyaWJlKCh1cmwpID0+IHtcclxuICAgICAgICBpZiAodXJsKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5hY3RpdmF0ZWRSb3V0ZVtcIl9yb3V0ZXJTdGF0ZVwiXS5zbmFwc2hvdC51cmwgPT09IHVybCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmRMYXlvdXQpIHtcclxuICAgICAgICAgICAgICB0aGlzLkFjdGl2ZURhc2hib2FyZFBvcnRsZXRzID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRMYXlvdXQucmVtb3ZlQWxsKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVEYXNoYm9hcmRQb3J0bGV0cygpO1xyXG4gICAgICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFzUmVzaXplID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBbGxGaWVsZHMoaXRlbSwgbm9EZXRlY3QgPSBmYWxzZSk6IFByb21pc2U8YW55W10+IHtcclxuICAgIGlmICghbm9EZXRlY3QpIHtcclxuICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgY29uc3QgZGF0YU1hcnRDb2RlID0gaXRlbS5maWd1cmVDb2RlO1xyXG4gICAgICBjb25zdCBkYXRhT2JqID0ge1xyXG4gICAgICAgIGxhbmd1YWdlOiB0aGlzLmxhbmcsXHJcbiAgICAgICAgZGF0YU1hcnRDb2RlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLkRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnNldFNjaGVtYVBhcmFtcyhcclxuICAgICAgICBkYXRhT2JqLFxyXG4gICAgICAgIGRhdGFNYXJ0Q29kZSxcclxuICAgICAgICB0aGlzLmRhc2hib2FyZFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmh0dHAucG9zdCh0aGlzLmFwaS51cmxMaXN0LkdldFNjaGVtYSwgZGF0YU9iaiwgKHJlcykgPT4ge1xyXG4gICAgICAgIGlmICghbm9EZXRlY3QpIHtcclxuICAgICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZ18ubmV4dCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzb2x2ZShyZXMpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZVJpZ2h0KGUpIHtcclxuICAgIHRoaXMucHVzaF9idG4gPSBmYWxzZTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldEFjdGl2ZURhc2hib2FyZFBvcnRsZXRzKG5vRGV0ZWN0ID0gZmFsc2UpIHtcclxuICAgIGlmICh0aGlzLmhhc0NoYW5nZURhdGFUYWJsZSkge1xyXG4gICAgICB0aGlzLkFjdGl2ZURhc2hib2FyZFBvcnRsZXRzID0gW107XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcG9ydGxldHMgPVxyXG4gICAgICB0aGlzLnBvcnRsZXRzLmZpbHRlcigocG9ydGxldCkgPT4ge1xyXG4gICAgICAgIGlmICghcG9ydGxldCB8fCAhcG9ydGxldC5jb25maWcpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY29uZmlnID0gSlNPTi5wYXJzZShwb3J0bGV0LmNvbmZpZyk7XHJcbiAgICAgICAgY29uc3QgdGFiSWQgPSBjb25maWcudGFiSWQgfHwgMTtcclxuICAgICAgICBpZiAodGFiSWQgPT09IHRoaXMuYWN0aXZlVGFiKSB7XHJcbiAgICAgICAgICByZXR1cm4gcG9ydGxldDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pIHx8IFtdO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuQWN0aXZlRGFzaGJvYXJkUG9ydGxldHMgPSBbLi4ucG9ydGxldHNdO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIXRoaXMuQWN0aXZlRGFzaGJvYXJkUG9ydGxldHMubGVuZ3RoICYmXHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRMYXlvdXQgJiZcclxuICAgICAgICB0aGlzLmRhc2hib2FyZExheW91dC5wYW5lbHMgJiZcclxuICAgICAgICB0aGlzLmRhc2hib2FyZExheW91dC5wYW5lbHMubGVuZ3RoXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkTGF5b3V0LnJlbW92ZUFsbCgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaGFzQ2hhbmdlRGF0YVRhYmxlID0gZmFsc2U7XHJcbiAgICAgIGlmICghbm9EZXRlY3QpIHtcclxuICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25BY3RpdmVUYWIodGFiLCBpbmRleCkge1xyXG4gICAgdGhpcy5kYXNoYm9hcmRfc2lkZWJhciA9IGZhbHNlO1xyXG4gICAgdGhpcy5wdXNoX2J0biA9IGZhbHNlO1xyXG4gICAgY29uc3QgeyBpZCwgbGFiZWwgfSA9IHRhYjtcclxuICAgIGlmICh0YWIuaWQgPT09IHRoaXMuYWN0aXZlVGFiKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlVGFiSWQgPSBpZDtcclxuICAgIHRoaXMuYWN0aXZlVGFiTGFiZWwgPSBsYWJlbDtcclxuICAgIGlmIChpbmRleCAhPT0gMCkge1xyXG4gICAgICB0aGlzLnByZXZJZCA9IHRoaXMudGFiTGlzdFtpbmRleCAtIDFdLmlkO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdGFydEVkaXQgPSBmYWxzZTtcclxuICAgIHRoaXMuYWN0aXZlVGFiID0gaWQ7XHJcbiAgICB0aGlzLnNldEFjdGl2ZURhc2hib2FyZFBvcnRsZXRzKCk7XHJcbiAgfVxyXG5cclxuICBvbkRlbGV0ZVRhYihpdGVtKSB7XHJcbiAgICBsZXQgX3RpdGxlID1cclxuICAgICAgdGhpcy50cmFuc2xhdGlvbi5BUkVfWU9VX1NVUkVfVE9fREVMRVRFX0RBU0hCT0FSRF9UQUJfV0FSTklOR19NRVNTQUdFIHx8XHJcbiAgICAgIFwiLkFSRV9ZT1VfU1VSRV9UT19ERUxFVEVfREFTSEJPQVJEX1RBQl9XQVJOSU5HX01FU1NBR0VcIjtcclxuICAgIF90aXRsZSA9IF90aXRsZS5yZXBsYWNlKFwie1RhYiBOYW1lfVwiLCBpdGVtLmxhYmVsKTtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5zaG93Q29tbW9uRGlsYW9nKHtcclxuICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRpb24uREVMRVRFX1JFQ09SRCB8fCBcIi5ERUxFVEVfUkVDT1JEXCIsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBfdGl0bGUsXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMgPT09IFwic2F2ZVwiKSB7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmUgPSB0aGlzLmFjdGl2ZVRhYiA9PT0gaXRlbS5pZDtcclxuICAgICAgICBsZXQgaW5kZXggPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnBvcnRsZXRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICBjb25zdCBjb25maWcgPSBKU09OLnBhcnNlKHRoaXMucG9ydGxldHNbaV0uY29uZmlnKTtcclxuICAgICAgICAgIGlmIChjb25maWcudGFiSWQgPT09IHRoaXMuYWN0aXZlVGFiKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9ydGxldHMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRhYkxpc3QuZm9yRWFjaCgodGFiLCBpKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGFiLmlkID09PSBpdGVtLmlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFiTGlzdC5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgIGluZGV4ID0gaTtcclxuICAgICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoaXNBY3RpdmUpIHtcclxuICAgICAgICAgIGlmICghdGhpcy50YWJMaXN0W2luZGV4XSkge1xyXG4gICAgICAgICAgICBpbmRleCAtPSAxO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSB0aGlzLnRhYkxpc3RbaW5kZXhdLmlkO1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWJJZCA9IHRoaXMuYWN0aXZlVGFiO1xyXG4gICAgICAgICAgdGhpcy5wb3J0bGV0cy5mb3JFYWNoKChwb3J0bGV0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IEpTT04ucGFyc2UocG9ydGxldC5jb25maWcpO1xyXG4gICAgICAgICAgICBjb25maWcuYWN0aXZlVGFiID0gdGhpcy5hY3RpdmVUYWI7XHJcbiAgICAgICAgICAgIHBvcnRsZXQuY29uZmlnID0gQ2lyY3VsYXJKU09OLnN0cmluZ2lmeShjb25maWcpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLm9uQWN0aXZlVGFiKHRoaXMudGFiTGlzdFtpbmRleF0sIGluZGV4KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zYXZlZGFzaGJvYXJkKFwidHJ1ZVwiKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkFkZFRhYigpIHtcclxuICAgIGNvbnN0IGxhYmVsID0gYFRhYiAke3RoaXMudGFiTGlzdC5sZW5ndGggKyAxfWA7XHJcbiAgICB0aGlzLnByZXZJZCA9IHRoaXMudGFiTGlzdFt0aGlzLnRhYkxpc3QubGVuZ3RoIC0gMV0uaWQ7XHJcbiAgICBsZXQgbmV3SWQgPSAxO1xyXG4gICAgdGhpcy50YWJMaXN0LmZvckVhY2goKHRhYikgPT4ge1xyXG4gICAgICBuZXdJZCA9IE1hdGgubWF4KG5ld0lkLCB0YWIuaWQpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IG5ld0lkICsgMTtcclxuICAgIHRoaXMudGFiTGlzdC5wdXNoKHtcclxuICAgICAgaWQ6IHRoaXMuYWN0aXZlVGFiLFxyXG4gICAgICBsYWJlbCxcclxuICAgICAgZGlzcGxheUxhYmVsOiBgJHt0aGlzLnRyYW5zbGF0aW9uLlRBQiB8fCBcIlRhYlwifSAke1xyXG4gICAgICAgIHRoaXMudGFiTGlzdC5sZW5ndGggKyAxXHJcbiAgICAgIH1gLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmFjdGl2ZVRhYklkID0gdGhpcy5hY3RpdmVUYWI7XHJcbiAgICB0aGlzLmFjdGl2ZVRhYkxhYmVsID0gbGFiZWw7XHJcbiAgICAvLyDpmpDol4/lj7Pkvqfoj5zljZXvvIzmuIXpmaTlvZPliY3pgInkuK3nmoRwb3J0bGV0XHJcbiAgICB0aGlzLnBvcnRsZXQgPSBudWxsO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRfc2lkZWJhciA9IGZhbHNlO1xyXG4gICAgdGhpcy5oYXNDaGFuZ2VEYXRhVGFibGUgPSB0cnVlO1xyXG4gICAgdGhpcy5wdXNoX2J0biA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZXRBY3RpdmVEYXNoYm9hcmRQb3J0bGV0cygpO1xyXG4gIH1cclxuXHJcbiAgc2V0VGFiSW5wdXQoZSkge1xyXG4gICAgdGhpcy5wb3J0bGV0cy5mb3JFYWNoKChwb3J0bGV0KSA9PiB7XHJcbiAgICAgIGNvbnN0IF9jb25maWcgPSBKU09OLnBhcnNlKHBvcnRsZXQuY29uZmlnKTtcclxuICAgICAgY29uc3QgX3RhYklkID0gX2NvbmZpZy50YWJJZCB8fCAxO1xyXG4gICAgICBpZiAoX3RhYklkID09PSB0aGlzLmFjdGl2ZVRhYikge1xyXG4gICAgICAgIF9jb25maWcudGFiTGFiZWwgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgICBwb3J0bGV0LmNvbmZpZyA9IENpcmN1bGFySlNPTi5zdHJpbmdpZnkoX2NvbmZpZyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzYXZlVGFiSW5wdXQoaXRlbSkge1xyXG4gICAgdGhpcy5zdGFydEVkaXQgPSBmYWxzZTtcclxuICAgIGl0ZW0uZGlzcGxheUxhYmVsID0gdGhpcy50cnVuY2F0ZVRleHQoaXRlbS5sYWJlbCk7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uU3RhcnRFZGl0KGlkKSB7XHJcbiAgICBpZiAoIXRoaXMuY3VzdG9taXplZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hY3RpdmVUYWIgIT09IGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc3RhcnRFZGl0ID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFRhYkxpc3Qobm9EZXRlY3QgPSBmYWxzZSkge1xyXG4gICAgdGhpcy50YWJMaXN0ID0gW107XHJcbiAgICBpZiAoIXRoaXMuYWN0aXZlVGFiIHx8ICF0aGlzLnN0YXlBY3RpdmVUYWIpIHtcclxuICAgICAgdGhpcy5hY3RpdmVUYWIgPSAxO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcmV2SWQgPSBudWxsO1xyXG4gICAgY29uc3QgdGFiTWFwID0ge307XHJcbiAgICB0aGlzLnBvcnRsZXRzLmZvckVhY2goKHBvcnRsZXQsIGlkeCkgPT4ge1xyXG4gICAgICBpZiAocG9ydGxldC5jb25maWcpIHtcclxuICAgICAgICBjb25zdCBjb25maWcgPSBKU09OLnBhcnNlKHBvcnRsZXQuY29uZmlnKTtcclxuICAgICAgICBjb25zdCB0eHQgPSB0aGlzLnRyYW5zbGF0aW9uW1wiVEFCXCJdIHx8IFwiVGFiXCI7XHJcbiAgICAgICAgaWYgKGNvbmZpZy5hY3RpdmVUYWIgJiYgIXRoaXMuc3RheUFjdGl2ZVRhYikge1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSBjb25maWcuYWN0aXZlVGFiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB0YWJJZCA9IGNvbmZpZy50YWJJZCB8fCAxO1xyXG4gICAgICAgIGNvbnN0IHRhYkxhYmVsID0gY29uZmlnLnRhYkxhYmVsIHx8IFwiVGFiIDFcIjtcclxuICAgICAgICBsZXQgZGlzcGxheUxhYmVsID0gY29uZmlnLnRhYkxhYmVsIHx8IGAke3R4dH0gMWA7XHJcbiAgICAgICAgaWYgKGNvbmZpZy50YWJMYWJlbCAmJiBjb25maWcudGFiTGFiZWwuc3RhcnRzV2l0aChcIlRhYlwiKSkge1xyXG4gICAgICAgICAgZGlzcGxheUxhYmVsID0gdHh0ICsgY29uZmlnLnRhYkxhYmVsLnNsaWNlKDMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRhYk1hcFt0YWJJZF0pIHtcclxuICAgICAgICAgIHRoaXMudGFiTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgaWQ6IHRhYklkLFxyXG4gICAgICAgICAgICBsYWJlbDogdGFiTGFiZWwsXHJcbiAgICAgICAgICAgIGRpc3BsYXlMYWJlbDogdGFiTGFiZWxcclxuICAgICAgICAgICAgICA/IHRoaXMudHJ1bmNhdGVUZXh0KGRpc3BsYXlMYWJlbClcclxuICAgICAgICAgICAgICA6IGAke3RoaXMudHJhbnNsYXRpb24uVEFCIHx8IFwiVGFiXCJ9IDFgLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0YWJNYXBbdGFiSWRdID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGlmICghdGhpcy5hY3RpdmVUYWJJZCkge1xyXG4gICAgICAgIC8vIFx0dGhpcy5hY3RpdmVUYWIgPSB0YWJJZDtcclxuICAgICAgICAvLyBcdHRoaXMuYWN0aXZlVGFiSWQgPSB0YWJJZDtcclxuICAgICAgICAvLyBcdHRoaXMuYWN0aXZlVGFiTGFiZWwgPSB0YWJMYWJlbDtcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghdGhpcy50YWJMaXN0Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnRhYkxpc3QgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWQ6IDEsXHJcbiAgICAgICAgICBsYWJlbDogXCJUYWIgMVwiLFxyXG4gICAgICAgICAgZGlzcGxheUxhYmVsOiBgJHt0aGlzLnRyYW5zbGF0aW9uLlRBQiB8fCBcIlRhYlwifSAxYCxcclxuICAgICAgICB9LFxyXG4gICAgICBdO1xyXG4gICAgICB0aGlzLmFjdGl2ZVRhYklkID0gMTtcclxuICAgICAgdGhpcy5hY3RpdmVUYWJMYWJlbCA9IFwiVGFiIDFcIjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRhYkxpc3QgPSB0aGlzLnRhYkxpc3Quc29ydCgoYSwgYikgPT4gYS5pZCAtIGIuaWQpO1xyXG4gICAgY29uc3QgYWN0aXZlVGFiID1cclxuICAgICAgdGhpcy50YWJMaXN0LmZpbmQoKGkpID0+IGkuaWQgPT09IHRoaXMuYWN0aXZlVGFiKSB8fCB0aGlzLnRhYkxpc3RbMF07XHJcbiAgICBpZiAoYWN0aXZlVGFiLmlkKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlVGFiSWQgPSBhY3RpdmVUYWIuaWQ7XHJcbiAgICAgIHRoaXMuYWN0aXZlVGFiTGFiZWwgPSBhY3RpdmVUYWIubGFiZWw7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXlBY3RpdmVUYWIgPSBmYWxzZTtcclxuICAgIHRoaXMuc2V0UHJldklkKCk7XHJcbiAgICBpZiAoIW5vRGV0ZWN0KSB7XHJcbiAgICAgIHRoaXMuc2V0QWN0aXZlRGFzaGJvYXJkUG9ydGxldHMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGluaXRsYXlvdXQoc2hvdWxkR2V0RmllbGRzID0gZmFsc2UsIG5vRGV0ZWN0ID0gZmFsc2UpIHtcclxuICAgIGlmICghc2hvdWxkR2V0RmllbGRzKSB7XHJcbiAgICAgIHRoaXMuaW5pdFRhYkxpc3Qobm9EZXRlY3QpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucG9ydGxldHMgJiYgdGhpcy5wb3J0bGV0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAobGV0IHBvcnRsZXQgb2YgdGhpcy5wb3J0bGV0cykge1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZzogYW55ID0gSlNPTi5wYXJzZShwb3J0bGV0LmNvbmZpZyk7XHJcbiAgICAgICAgaWYgKHNob3VsZEdldEZpZWxkcykge1xyXG4gICAgICAgICAgLy8gR2V0U2NoZW1h6YWN572u55qE5YiX5pWw5o2u5rqQXHJcbiAgICAgICAgICBjb25zdCBmaWVsZHM6IGFueVtdID0gYXdhaXQgdGhpcy5nZXRBbGxGaWVsZHMocG9ydGxldCk7XHJcbiAgICAgICAgICAvLyDmr4/kuKpwb3J0bGV06Ieq5a6a5LmJ55qE5pWw5o2uXHJcbiAgICAgICAgICBjb25maWcuZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChmaWVsZC5mb3JtYXQpIHtcclxuICAgICAgICAgICAgICBmaWVsZHMuZm9yRWFjaCgoX2YpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChfZi5jb2xOYW1lID09PSBmaWVsZC5jb2xOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgIF9mLmZvcm1hdCA9IGZpZWxkLmZvcm1hdDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBpdGVtID0gZmllbGRzLmZpbmQoKF9mKSA9PiBfZi5jb2xOYW1lID09PSBmaWVsZC5jb2xOYW1lKTtcclxuICAgICAgICAgICAgaWYgKCFpdGVtKSB7XHJcbiAgICAgICAgICAgICAgZmllbGRzLnB1c2goZmllbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmIChjb25maWcucG9ydGxldFR5cGUgPT09IFwicGl2b3RcIikge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIGNvbmZpZy5maWVsZHMgPSBmaWVsZHM7XHJcbiAgICAgICAgICAgIHBvcnRsZXQuY29uZmlnID0gQ2lyY3VsYXJKU09OLnN0cmluZ2lmeShjb25maWcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBwb3J0bGV0Lm5ld0lkID0gXCJwb3J0bGV0X1wiICsgdGhpcy5wYmYuR3VpZCgpO1xyXG4gICAgICAgIHBvcnRsZXQuY29sID0gcG9ydGxldC5wb3NYO1xyXG4gICAgICAgIHBvcnRsZXQucm93ID0gcG9ydGxldC5wb3NZO1xyXG4gICAgICAgIHBvcnRsZXQuc2l6ZVggPSBwb3J0bGV0LndpZHRoO1xyXG4gICAgICAgIHBvcnRsZXQuc2l6ZVkgPSBwb3J0bGV0LmhlaWdodDtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pbml0Q2hhckRhdGEobm9EZXRlY3QpO1xyXG4gICAgICB0aGlzLnNldEFjdGl2ZURhc2hib2FyZFBvcnRsZXRzKG5vRGV0ZWN0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuQWN0aXZlRGFzaGJvYXJkUG9ydGxldHMgPSBbXTtcclxuICAgICAgdGhpcy5kYXNoYm9hcmRMYXlvdXQucmVtb3ZlQWxsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5wYmYuZ2V0VHJpZ2dlckRhc2hib2FyZEZpbHRlckNoYW5nZSgpLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRhc2hib2FySWQgPSBlW1wiaWRcIl07XHJcbiAgICAgICAgY29uc3QgbmV3SWQgPSBlW1wibmV3SWRcIl07XHJcbiAgICAgICAgaWYgKGRhc2hib2FySWQgIT09IHRoaXMuZGFzaGJvYXJkLmlkKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmlsdGVyRGF0YShuZXdJZCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2VcclxuICAgICAgICAuZ2V0Y2hhbmdlbGF5b3V0KClcclxuICAgICAgICAuc3Vic2NyaWJlKCh7IHN0YXR1cywgaWQgPSBcIlwiIH0pID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmRhc2hib2FyZCAmJiB0aGlzLmRhc2hib2FyZC5pZCA9PT0gaWQpIHtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gc3RhdHVzID09PSBcInRydWVcIiA/IGZhbHNlIDogdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5pbml0bGF5b3V0KHBhcmFtcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5lZGl0UHJvcGVydGllcygpLnN1YnNjcmliZSgoeyBzdGF0dXMsIGlkIH0pID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuZGFzaGJvYXJkIHx8IHRoaXMuZGFzaGJvYXJkLmlkICE9PSBpZCB8fCB0aGlzLnRpbWVyKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMudGltZXIgPSBudWxsO1xyXG4gICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2cuY2xvc2VBbGwoKTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1xyXG4gICAgICAgICAgLm9wZW4oRGF0YU1hcnROZXdDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgIGVkaXQ6IHN0YXR1cyxcclxuICAgICAgICAgICAgICBkYXNoYm9hcmRJZDogdGhpcy51cmxfaWQsXHJcbiAgICAgICAgICAgICAgZGFzaGJvYXJkOiB0aGlzLmRhc2hib2FyZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgaGVpZ2h0OiBcIjg1JVwiLFxyXG4gICAgICAgICAgICB3aWR0aDogXCI1NSVcIixcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBcInJlcG9ydC1kaWFsb2dcIixcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWUpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgeyBwdXNoX2J0biwgcG9ydGxldCwgZGFzaGJvYXJkIH0gPSBlO1xyXG4gICAgICAgICAgICB0aGlzLmRhc2hib2FyZCA9IGNsb25lRGVlcChkYXNoYm9hcmQpO1xyXG4gICAgICAgICAgICB0aGlzLnBvcnRsZXQgPSBjbG9uZURlZXAocG9ydGxldCk7XHJcbiAgICAgICAgICAgIHRoaXMucHVzaF9idG4gPSBwdXNoX2J0bjtcclxuICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZURhdGFtYXJ0RW50aXR5Lm5leHQodGhpcy5kYXNoYm9hcmQpO1xyXG4gICAgICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0RG93bmxvYWREYXNoYm9yZCgpLnN1YnNjcmliZSgoaWQpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmQgJiYgdGhpcy5kYXNoYm9hcmQuaWQgPT09IGlkKSB7XHJcbiAgICAgICAgICAvLyB0aGlzLmRvd25sb2FkQWxsKCk7XHJcbiAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuQWN0aXZlRGFzaGJvYXJkUG9ydGxldHMpIHtcclxuICAgICAgICAgICAgdGhpcy5kb3dubG9hZChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5nZXRhZGRwb3J0bGV0KCkuc3Vic2NyaWJlKChpZCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmRhc2hib2FyZCAmJiB0aGlzLmRhc2hib2FyZC5pZCA9PT0gaWQpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnBvcnRsZXQpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3J0bGV0cy5wdXNoKHRoaXMucG9ydGxldCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgbGV0IGNvbmZpZzogYW55ID1cclxuICAgICAgICAgICAgdGhpcy5wb3J0bGV0LmNvbmZpZyBpbnN0YW5jZW9mIFN0cmluZ1xyXG4gICAgICAgICAgICAgID8gSlNPTi5wYXJzZSh0aGlzLnBvcnRsZXQuY29uZmlnKVxyXG4gICAgICAgICAgICAgIDogdGhpcy5wb3J0bGV0LmNvbmZpZztcclxuICAgICAgICAgIGlmICh0eXBlb2YgY29uZmlnID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIGNvbmZpZyA9IEpTT04ucGFyc2UoY29uZmlnKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBwb3J0bGV0VHlwZSA9XHJcbiAgICAgICAgICAgIGNvbmZpZy5wb3J0bGV0VHlwZSA9PT0gXCJoaXN0b3JpY2FsSVJSXCJcclxuICAgICAgICAgICAgICA/IGNvbmZpZy5zZWxlY3RlZFZpc3VhbFR5cGVcclxuICAgICAgICAgICAgICA6IGNvbmZpZy5wb3J0bGV0VHlwZTtcclxuXHJcbiAgICAgICAgICAvLyDlj6rmnInmlrDlop7nmoRQb3JsZXTmmK/lm77ooajnsbvmiY3pnIDopoHliJ3lp4vljJZcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5wb3J0bGV0ICYmXHJcbiAgICAgICAgICAgIHRoaXMucG9ydGxldC5jb25maWcgJiZcclxuICAgICAgICAgICAgW1wibmV3Y29sdW1uXCIsIFwibmV3bGluZVwiLCBcIm5ld2NvbHVtbmxpbmVcIl0uaW5jbHVkZXMocG9ydGxldFR5cGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5pbml0Q2hhckRhdGEoKTsgLy8g5ou85o6lQ2hhcnTpnIDopoHnlKjnmoTmlbDmja7mupBcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZ2V0TmV3UG9zaXRpb24oKTtcclxuICAgICAgICAgIHRoaXMuc2V0QWN0aXZlRGFzaGJvYXJkUG9ydGxldHMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5nZXRMZWZ0TWVudUJhcigpLnN1YnNjcmliZSgob3BlbikgPT4ge1xyXG4gICAgICAgIGxldCB3aWR0aCA9IHRoaXMucGFuZXNMaXN0Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgIHRoaXMucGFuZXNMaXN0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0aCAtIDE5NSArIFwicHhcIjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5wYW5lc0xpc3QubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IHdpZHRoICsgMTk1ICsgXCJweFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBAZGVib3VuY2UoMTAwKVxyXG4gIHByaXZhdGUgZmlsdGVyRGF0YShpZCkge1xyXG4gICAgdGhpcy5jaGFydFVwZGF0ZShpZCk7XHJcbiAgfVxyXG5cclxuICBjaGFydFVwZGF0ZShpZD86IHN0cmluZykge1xyXG4gICAgdGhpcy5oYXNDaGFuZ2VEYXRhVGFibGUgPSB0cnVlO1xyXG4gICAgaWYgKGlkKSB7XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5jaGFydFVwZGF0ZS5uZXh0KGlkKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5pdENoYXJEYXRhKCk7IC8vIOaLvOaOpUNoYXJ06ZyA6KaB55So55qE5pWw5o2u5rqQXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWIpID0+IHtcclxuICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBnZXRJbmZvKCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvbiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ0cmFuc2xhdGlvblwiKSk7XHJcbiAgICB0aGlzLmxhbmcgPSB0aGlzLnBiZi5nZXRMYW5ndWFnZVBhcmFtcygpO1xyXG4gICAgdGhpcy5kYXRlUGlwZUZvcm1hdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZGF0ZVBpcGVcIik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UG9ybGV0Q29uZmlnKHBvcnRsZXQpIHtcclxuICAgIGlmICghcG9ydGxldC5jb25maWcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29uZmlnID0gSlNPTi5wYXJzZShwb3J0bGV0LmNvbmZpZyk7XHJcbiAgICBpZiAoIWNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2hvd0xlZ2VuZCA9XHJcbiAgICAgICEhY29uZmlnLnB2dGFibGVDaGFydFNldHRpbmcuY2hhcnRTZXR0aW5ncy5sZWdlbmRTZXR0aW5ncy52aXNpYmxlO1xyXG4gICAgdGhpcy5lbmFibGVNdWx0aXBsZUF4aXMgPVxyXG4gICAgICBjb25maWcucHZ0YWJsZUNoYXJ0U2V0dGluZy5jaGFydFNldHRpbmdzLmVuYWJsZU11bHRpcGxlQXhpcztcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVGhlbWUoZSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzZWxlY3RlZFgsXHJcbiAgICAgIHNlbGVjdGVkWSxcclxuICAgICAgc2VsZWN0ZWRTZWNvbmRZLFxyXG4gICAgICBzZWxlY3RlZE11bHRpcGxlcyxcclxuICAgICAgc2VsZWN0VGhlbWUsXHJcbiAgICB9ID0gZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRYID0gc2VsZWN0ZWRYO1xyXG4gICAgdGhpcy5zZWxlY3RlZFkgPSBzZWxlY3RlZFk7XHJcbiAgICB0aGlzLnNlbGVjdGVkU2Vjb25kWSA9IHNlbGVjdGVkU2Vjb25kWTtcclxuICAgIHRoaXMuc2VsZWN0ZWRNdWx0aXBsZXMgPSBzZWxlY3RlZE11bHRpcGxlcztcclxuICAgIHRoaXMuc2VsZWN0VGhlbWUgPSBzZWxlY3RUaGVtZTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZURhc2hib2FyZChlKSB7XHJcbiAgICBjb25zdCB7IHBvcnRsZXRzLCBkYXNoYm9hcmQsIG5vRGV0ZWN0LCBzdGF5QWN0aXZlVGFiIH0gPSBlO1xyXG4gICAgdGhpcy5zdGF5QWN0aXZlVGFiID0gc3RheUFjdGl2ZVRhYjtcclxuICAgIHRoaXMuZGFzaGJvYXJkID0gY2xvbmVEZWVwKGRhc2hib2FyZCk7XHJcbiAgICB0aGlzLnBvcnRsZXRzID0gWy4uLnBvcnRsZXRzXTtcclxuICAgIGlmICghbm9EZXRlY3QpIHtcclxuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZURhdGFtYXJ0RW50aXR5Lm5leHQoZGFzaGJvYXJkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUG9ybGV0Q29uZmlnKGUpIHtcclxuICAgIGNvbnN0IHsgbmV3SWQsIGNvbmZpZyB9ID0gZTtcclxuICAgIGNvbnN0IF9jb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBjb25maWcpO1xyXG4gICAgdGhpcy5wb3J0bGV0LmNvbmZpZyA9IENpcmN1bGFySlNPTi5zdHJpbmdpZnkoX2NvbmZpZyk7XHJcbiAgICB0aGlzLnBvcnRsZXRzLmZvckVhY2goKHBvcnRsZXQsIGkpID0+IHtcclxuICAgICAgaWYgKHBvcnRsZXQubmV3SWQgPT09IG5ld0lkKSB7XHJcbiAgICAgICAgdGhpcy5wb3J0bGV0c1tpXS5jb25maWcgPSBDaXJjdWxhckpTT04uc3RyaW5naWZ5KF9jb25maWcpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMucG9ydGxldHMgPSBbLi4udGhpcy5wb3J0bGV0c107XHJcbiAgICB0aGlzLnNldEFjdGl2ZURhc2hib2FyZFBvcnRsZXRzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZWRpdChpdGVtKSB7XHJcbiAgICBjb25zdCBjb25maWcgPSBKU09OLnBhcnNlKGl0ZW0uY29uZmlnKTtcclxuICAgIGNvbnN0IHBvcnRsZXRUeXBlID1cclxuICAgICAgY29uZmlnLnBvcnRsZXRUeXBlID09PSBcImhpc3RvcmljYWxJUlJcIlxyXG4gICAgICAgID8gY29uZmlnLnNlbGVjdGVkVmlzdWFsVHlwZVxyXG4gICAgICAgIDogY29uZmlnLnBvcnRsZXRUeXBlO1xyXG4gICAgaWYgKFtcIm5ld2NvbHVtblwiLCBcIm5ld2xpbmVcIiwgXCJuZXdjb2x1bW5saW5lXCJdLmluY2x1ZGVzKHBvcnRsZXRUeXBlKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkWSA9IGNvbmZpZ1tcInNlbGVjdGVkWVwiXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFNlY29uZFkgPSBjb25maWcuc2VsZWN0ZWRTZWNvbmRZO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkWCA9IGNvbmZpZ1tcInNlbGVjdGVkWFwiXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE11bHRpcGxlcyA9IGNvbmZpZ1tcInNlbGVjdGVkTXVsdGlwbGVzXCJdO1xyXG4gICAgICB0aGlzLnNlbGVjdFRoZW1lID0gY29uZmlnW1wic2VsZWN0VGhlbWVcIl07XHJcbiAgICB9XHJcbiAgICB0aGlzLnBvcnRsZXQgPSBjbG9uZURlZXAoaXRlbSk7XHJcbiAgICBpZiAodGhpcy5wdXNoX2J0bikge1xyXG4gICAgICB0aGlzLnNpZGViYXIucG9ydGxldCA9IHRoaXMucG9ydGxldDtcclxuICAgIH1cclxuICAgIHRoaXMuZGFzaGJvYXJkX3NpZGViYXIgPSB0cnVlO1xyXG4gICAgdGhpcy5wdXNoX2J0biA9IHRydWU7XHJcbiAgICB0aGlzLmZpZ3VyZUNvZGUgPSBpdGVtLmZpZ3VyZUNvZGU7XHJcbiAgICB0aGlzLnRhYmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLnBvcnRsZXRFZGl0Lm5leHQodGhpcy51cmxfaWQpO1xyXG4gIH1cclxuXHJcbiAgQGRlYm91bmNlKDMwMClcclxuICBHZXRnYWRnZXRUaXRsZShjb25maWcpIHtcclxuICAgIGlmIChjb25maWcgJiYgY29uZmlnICE9PSBcIm51bGxcIikge1xyXG4gICAgICBsZXQgY29uZmlnXyA9IEpTT04ucGFyc2UoY29uZmlnKTtcclxuICAgICAgcmV0dXJuIGNvbmZpZ18uZ2FkZ2V0VGl0bGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRQb3J0bGV0VHlwZShpdGVtKSB7XHJcbiAgICBjb25zdCBjb25maWcgPSBpdGVtICYmIGl0ZW0uY29uZmlnID8gSlNPTi5wYXJzZShpdGVtLmNvbmZpZykgOiB7fTtcclxuICAgIGlmIChjb25maWcucG9ydGxldFR5cGUpIHtcclxuICAgICAgaWYgKGNvbmZpZy5wb3J0bGV0VHlwZSA9PT0gXCJoaXN0b3JpY2FsSVJSXCIpIHtcclxuICAgICAgICByZXR1cm4gY29uZmlnLnNlbGVjdGVkVmlzdWFsVHlwZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY29uZmlnLnBvcnRsZXRUeXBlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGV0ZShpdGVtKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucG9ydGxldHMuZmluZEluZGV4KCh4KSA9PiB4Lm5ld0lkID09PSBpdGVtLm5ld0lkKTtcclxuICAgIHRoaXMuZGFzaGJvYXJkTGF5b3V0LnJlbW92ZVBhbmVsKGl0ZW0ubmV3SWQpO1xyXG4gICAgdGhpcy5wb3J0bGV0cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgdGhpcy5zZXRBY3RpdmVEYXNoYm9hcmRQb3J0bGV0cygpO1xyXG4gICAgdGhpcy5nZXROZXdQb3NpdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvcHlQb3J0bGV0KGl0ZW0pIHtcclxuICAgIGNvbnN0IHBvcnRsZXQgPSB7IC4uLml0ZW0gfTtcclxuICAgIHBvcnRsZXQuaWQgPSBcIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiO1xyXG4gICAgcG9ydGxldC5uZXdJZCA9IFwicG9ydGxldF9cIiArIHRoaXMucGJmLkd1aWQoKTtcclxuICAgIC8vIOWkhOeQhiAxLuWkjeWItuWIq+eahOWkjeWItuS9kyAgMi7mlrDlu7rnmoTkuKrkvZMgMy7lt7LlrZjlnKjnmoTkuKrkvZNcclxuICAgIHBvcnRsZXQuY29weUlkID0gcG9ydGxldC5jb3B5SWRcclxuICAgICAgPyBwb3J0bGV0LmNvcHlJZFxyXG4gICAgICA6IGl0ZW0uaWQgPT09IFwiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCJcclxuICAgICAgPyBpdGVtLm5ld0lkXHJcbiAgICAgIDogaXRlbS5pZDtcclxuICAgIHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UucG9ydGxldERhdGFfTmV3W3RoaXMuZGFzaGJvYXJkLmlkXVtcclxuICAgICAgcG9ydGxldC5uZXdJZFxyXG4gICAgXSA9IGNsb25lRGVlcChcclxuICAgICAgdGhpcy5EYXNoYm9hcmRQb3JsZXRzU2VydmljZS5wb3J0bGV0RGF0YV9OZXdbdGhpcy5kYXNoYm9hcmQuaWRdW1xyXG4gICAgICAgIHBvcnRsZXQuY29weUlkXHJcbiAgICAgIF1cclxuICAgICk7XHJcbiAgICB0aGlzLnBvcnRsZXRzLnB1c2gocG9ydGxldCk7XHJcbiAgICB0aGlzLnNldEFjdGl2ZURhc2hib2FyZFBvcnRsZXRzKCk7XHJcbiAgICB0aGlzLmdldE5ld1Bvc2l0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0QXNvZmRhdGUoaXRlbSkge1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoaXRlbS5jb25maWcpLmFzT2ZEYXRlO1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0Q3VycmVuY3koY29uZmlnKSB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShjb25maWcpLmN1cnJlbmN5Q29kZTtcclxuICB9XHJcbiAgcHVibGljIGdldEZpZ3VyZWNvZGUoZmlndXJlQ29kZSkge1xyXG4gICAgc3dpdGNoIChmaWd1cmVDb2RlKSB7XHJcbiAgICAgIGNhc2UgXCJUYXNrc1wiOlxyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgICBjYXNlIFwiRnVuZExpc3RcIjpcclxuICAgICAgICByZXR1cm4gMjtcclxuICAgICAgY2FzZSBcIklSUlwiOlxyXG4gICAgICAgIHJldHVybiAzO1xyXG4gICAgICBjYXNlIFwiTm90ZXNcIjpcclxuICAgICAgICByZXR1cm4gNDtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIGdldFRhYmxlTmFtZShpdGVtKSB7XHJcbiAgICBsZXQgY29uZmlnID0gaXRlbS5jb25maWcgPyBKU09OLnBhcnNlKGl0ZW0uY29uZmlnKSA6IHt9O1xyXG4gICAgaWYgKGNvbmZpZy5wb3J0bGV0VHlwZSkge1xyXG4gICAgICBsZXQgdHlwZUxpc3QgPSBbXCJ0YWJsZVwiLCBcImZpbmFuY2lhbFRhYmxlXCIsIFwidHJhbnNwb3NlXCIsIFwicGl2b3RcIl07XHJcbiAgICAgIGxldCBpZHggPSB0eXBlTGlzdC5pbmRleE9mKGNvbmZpZy5wb3J0bGV0VHlwZSk7XHJcbiAgICAgIHJldHVybiBpZHggPiAtMSA/IHRydWUgOiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBwdXNoU2xpZGVyKCkge1xyXG4gICAgdGhpcy5wdXNoX2J0biA9ICF0aGlzLnB1c2hfYnRuO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWd1cmVDb2RlKGZpZ3VyZUNvZGUpIHtcclxuICAgIGxldCBjb2RlQXJyID0gW1wiVGFza3NcIiwgXCJGdW5kTGlzdFwiLCBcIklSUlwiLCBcIk5vdGVzXCJdO1xyXG4gICAgbGV0IGkgPSBjb2RlQXJyLmluZGV4T2YoZmlndXJlQ29kZSk7XHJcbiAgICByZXR1cm4gaSA+IC0xID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuICB4O1xyXG4gIHk7XHJcblxyXG4gIHB1YmxpYyBnZXREYXNoYm9hcmQoKSB7XHJcbiAgICB0aGlzLnVybCA9IFwiZGFzaGJvYXJkRGV0YWlsXCI7XHJcbiAgICBsZXQgdXJsX2FyciA9IHRoaXMucGJmLmdldFJvdXRlclVybCgpLnNwbGl0KFwiP1wiKTtcclxuICAgIHRoaXMudXJsX2lkID0gdGhpcy5wYmYuZ2V0VXJsSWQodXJsX2FyclswXSk7XHJcbiAgICB0aGlzLnVybF90eXBlID1cclxuICAgICAgdXJsX2FyclsxXSA9PSBcImRhc2hib2FyZFR5cGU9Y3VzdG9taXplZEJldGFcIlxyXG4gICAgICAgID8gXCJjdXN0b21pemVkQmV0YVwiXHJcbiAgICAgICAgOiB1cmxfYXJyWzFdID09IFwiZGFzaGJvYXJkVHlwZT1zaGFyZWRCZXRhXCJcclxuICAgICAgICA/IFwic2hhcmVkQmV0YVwiXHJcbiAgICAgICAgOiBcIlwiO1xyXG4gICAgdGhpcy5EYXNoYm9hcmRQb3JsZXRzU2VydmljZS5HZXREYXNoYm9hcmRWMShcclxuICAgICAgdGhpcy51cmxfaWQsXHJcbiAgICAgIHRydWUsXHJcbiAgICAgIChyZXMsIHBvcnRsZXRzID0gW10pID0+IHtcclxuICAgICAgICB0aGlzLmhhc0luaXQgPSB0cnVlO1xyXG4gICAgICAgIGlmICghcmVzKSB7XHJcbiAgICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmdfLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9ydGxldHMgPSBbLi4ucG9ydGxldHNdO1xyXG4gICAgICAgIHRoaXMuaW5pdGxheW91dChmYWxzZSwgdHJ1ZSk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UudXBkYXRlRGF0YW1hcnRFbnRpdHkubmV4dCh0aGlzLmRhc2hib2FyZCk7XHJcbiAgICAgICAgICAvLyB0aGlzLmNoYXJ0VXBkYXRlKCk7XHJcbiAgICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmdfLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgfSwgNTAwKTtcclxuICAgICAgfSxcclxuICAgICAgZmFsc2UsXHJcbiAgICAgIChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmRhc2hib2FyZCA9IE9iamVjdC5hc3NpZ24oe30sIHJlcyk7XHJcbiAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkTGF5b3V0KSB7XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZExheW91dC5yZWZyZXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgcHVibGljIHJvdXRlclBhZ2UoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiL3BhZ2VzL2Rhc2hib2FyZC9kYXNoYm9hcmRsaXN0XCIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRpc3BsYXlJY29uUHJvbXB0KGl0ZW0pIHtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKGl0ZW0uY29uZmlnKS5wb3J0bGV0VHlwZSB8fFxyXG4gICAgICB0aGlzLmdldEZpZ3VyZUNvZGUoaXRlbS5maWd1cmVDb2RlKVxyXG4gICAgICA/IGZhbHNlXHJcbiAgICAgIDogdHJ1ZTtcclxuICB9XHJcbiAgcHVibGljIGFzeW5jIGNvbmZpZ3VyYXRpb25zKGl0ZW0sIGV2ZW50KSB7XHJcbiAgICBjb25zdCBwb3J0bGV0VHlwZSA9IHRoaXMuZ2V0UG9ydGxldFR5cGUoaXRlbSk7XHJcbiAgICBzd2l0Y2ggKHBvcnRsZXRUeXBlKSB7XHJcbiAgICAgIGNhc2UgXCJ0YWJsZVwiOlxyXG4gICAgICAgIGNvbnN0IHRhYmxlID0gZmluZChcclxuICAgICAgICAgICh0aGlzLnRhYmxlIGFzIGFueSkuX3Jlc3VsdHMsXHJcbiAgICAgICAgICAoZWwpID0+IGVsLnBvcnRsZXQubmV3SWQgPT09IGl0ZW0ubmV3SWRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRhYmxlLmdyaWQgJiZcclxuICAgICAgICAgIHRhYmxlLmdyaWQuZ2V0Q3VycmVudFZpZXdSZWNvcmRzKCkgJiZcclxuICAgICAgICAgIHRhYmxlLmdyaWQuZ2V0Q3VycmVudFZpZXdSZWNvcmRzKCkubGVuZ3RoXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAvLyBsZXQgbWFzazogYW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNwaXZvdC10YWJsZS1tYXNrXCIpO1xyXG4gICAgICAgICAgLy8gaWYgKG1hc2spIG1hc2suc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcclxuICAgICAgICAgIGxldCBfeSA9IDA7XHJcbiAgICAgICAgICBpZiAoZXZlbnQgJiYgZXZlbnQudGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgeSB9ID0gZXZlbnQudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgICBpZiAoZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQgLSB5IDwgNDAwKSB7XHJcbiAgICAgICAgICAgICAgX3kgPSAtNDE1O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0YWJsZS5ncmlkICYmXHJcbiAgICAgICAgICAgIHRhYmxlLmdyaWQuY29sdW1uQ2hvb3Nlck1vZHVsZSAmJlxyXG4gICAgICAgICAgICB0YWJsZS5ncmlkLmNvbHVtbkNob29zZXJNb2R1bGUub3BlbkNvbHVtbkNob29zZXIoMjAwLCBfeSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwibmV3Y2hhcnRcIjpcclxuICAgICAgY2FzZSBcInBpdm90XCI6XHJcbiAgICAgICAgY29uc3QgcGl2b3QgPSBmaW5kKFxyXG4gICAgICAgICAgKHRoaXMucGl2b3QgYXMgYW55KS5fcmVzdWx0cyxcclxuICAgICAgICAgIChlbCkgPT4gZWwucG9ydGxldC5uZXdJZCA9PT0gaXRlbS5uZXdJZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgcGl2b3QuZmllbGRsaXN0T2JqLmRpYWxvZ1JlbmRlcmVyICYmXHJcbiAgICAgICAgICBwaXZvdC5maWVsZGxpc3RPYmouZGlhbG9nUmVuZGVyZXIuZmllbGRMaXN0RGlhbG9nXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBwaXZvdC5maWVsZGxpc3RPYmouZGlhbG9nUmVuZGVyZXIuZmllbGRMaXN0RGlhbG9nLnNob3coKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJ0cmFuc3Bvc2VcIjpcclxuICAgICAgICBjb25zdCB0cmFuc3Bvc2UgPSBmaW5kKFxyXG4gICAgICAgICAgKHRoaXMudHJhbnNwb3NlIGFzIGFueSkuX3Jlc3VsdHMsXHJcbiAgICAgICAgICAoZWwpID0+IGVsLnBvcnRsZXQubmV3SWQgPT09IGl0ZW0ubmV3SWRcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIOW8gOWQr+mAgumFjSDmiYvliqjnvKnlsI9cclxuICAgICAgICB0cmFuc3Bvc2UuZ3JpZC5jb2x1bW5DaG9vc2VyTW9kdWxlLnNob3dDdXN0b21Db2x1bW5DaG9vc2VyKCk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZGxnOiBhbnkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgICAgICBcIi5lLXJlc2NvbHVtbmNob29zZXJkaXYuZS1yZXNwb25zaXZlLWRpYWxvZ1wiXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKGRsZykge1xyXG4gICAgICAgICAgICBkbGcuc3R5bGUub3BhY2l0eSA9IDE7XHJcbiAgICAgICAgICAgIGRsZy5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIFwiMzAwcHhcIiwgXCJpbXBvcnRhbnRcIik7XHJcbiAgICAgICAgICAgIGRsZy5zdHlsZS5zZXRQcm9wZXJ0eShcImhlaWdodFwiLCBcIjM1MHB4XCIsIFwiaW1wb3J0YW50XCIpO1xyXG4gICAgICAgICAgICBkbGcuc3R5bGUuc2V0UHJvcGVydHkoXCJwb3NpdGlvblwiLCBcImFic29sdXRlXCIsIFwiaW1wb3J0YW50XCIpO1xyXG4gICAgICAgICAgICBkbGcuc3R5bGUuc2V0UHJvcGVydHkoXHJcbiAgICAgICAgICAgICAgXCJsZWZ0XCIsXHJcbiAgICAgICAgICAgICAgZXZlbnQuY2xpZW50WCAtIDEzNSArIFwicHhcIixcclxuICAgICAgICAgICAgICBcImltcG9ydGFudFwiXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGRsZy5zdHlsZS5zZXRQcm9wZXJ0eShcclxuICAgICAgICAgICAgICBcInRvcFwiLFxyXG4gICAgICAgICAgICAgIGV2ZW50LmNsaWVudFkgKyAzMCArIFwicHhcIixcclxuICAgICAgICAgICAgICBcImltcG9ydGFudFwiXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFByZXZJZCgpIHtcclxuICAgIHRoaXMudGFiTGlzdC5mb3JFYWNoKCh0YWIsIGkpID0+IHtcclxuICAgICAgaWYgKHRhYi5pZCA9PT0gdGhpcy5hY3RpdmVUYWIpIHtcclxuICAgICAgICBpZiAodGhpcy50YWJMaXN0W2kgLSAxXSkge1xyXG4gICAgICAgICAgdGhpcy5wcmV2SWQgPSB0aGlzLnRhYkxpc3RbaSAtIDFdLmlkO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkcm9wKGUpIHtcclxuICAgIGNvbnN0IHsgcHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4IH0gPSBlO1xyXG4gICAgY29uc3QgcHJldklkID0gdGhpcy50YWJMaXN0W3ByZXZpb3VzSW5kZXhdLmlkO1xyXG4gICAgY29uc3QgY3VycklkID0gdGhpcy50YWJMaXN0W2N1cnJlbnRJbmRleF0uaWQ7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IHRoaXMudGFiTGlzdC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICBjb25zdCB0YWJJZCA9IHRoaXMudGFiTGlzdFtpXS5pZDtcclxuICAgICAgaWYgKHRhYklkID09PSBwcmV2SWQpIHtcclxuICAgICAgICB0aGlzLnRhYkxpc3RbaV0uaWQgPSBjdXJySWQ7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRhYklkID09PSBjdXJySWQpIHtcclxuICAgICAgICB0aGlzLnRhYkxpc3RbaV0uaWQgPSBwcmV2SWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSB0aGlzLnBvcnRsZXRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgIGNvbnN0IGNvbmZpZyA9IEpTT04ucGFyc2UodGhpcy5wb3J0bGV0c1tpXS5jb25maWcpO1xyXG4gICAgICBjb25zdCB0YWJJZCA9IGNvbmZpZy50YWJJZDtcclxuICAgICAgaWYgKHRhYklkID09PSBwcmV2SWQpIHtcclxuICAgICAgICBjb25maWcudGFiSWQgPSBjdXJySWQ7XHJcbiAgICAgICAgdGhpcy5wb3J0bGV0c1tpXS5jb25maWcgPSBKU09OLnN0cmluZ2lmeShjb25maWcpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0YWJJZCA9PT0gY3VycklkKSB7XHJcbiAgICAgICAgY29uZmlnLnRhYklkID0gcHJldklkO1xyXG4gICAgICAgIHRoaXMucG9ydGxldHNbaV0uY29uZmlnID0gSlNPTi5zdHJpbmdpZnkoY29uZmlnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYWN0aXZlVGFiID09PSBjdXJySWQpIHtcclxuICAgICAgdGhpcy5hY3RpdmVUYWIgPSBwcmV2SWQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVGFiID09PSBwcmV2SWQpIHtcclxuICAgICAgdGhpcy5hY3RpdmVUYWIgPSBjdXJySWQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFByZXZJZCgpO1xyXG4gICAgW3RoaXMudGFiTGlzdFtwcmV2aW91c0luZGV4XSwgdGhpcy50YWJMaXN0W2N1cnJlbnRJbmRleF1dID0gW1xyXG4gICAgICB0aGlzLnRhYkxpc3RbY3VycmVudEluZGV4XSxcclxuICAgICAgdGhpcy50YWJMaXN0W3ByZXZpb3VzSW5kZXhdLFxyXG4gICAgXTtcclxuICAgIHRoaXMudGFiTGlzdCA9IFsuLi50aGlzLnRhYkxpc3RdO1xyXG5cclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuICBjbG9zZUFsbCgpIHtcclxuICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICBsZXQgaGFzQ29uZmlnID0gZmFsc2U7XHJcbiAgICB0aGlzLkFjdGl2ZURhc2hib2FyZFBvcnRsZXRzLmZvckVhY2goKHBvcnRsZXQpID0+IHtcclxuICAgICAgY29uc3QgcG9ydGxldFR5cGUgPSB0aGlzLmdldFBvcnRsZXRUeXBlKHBvcnRsZXQpO1xyXG4gICAgICBzd2l0Y2ggKHBvcnRsZXRUeXBlKSB7XHJcbiAgICAgICAgY2FzZSBcInBpdm90XCI6XHJcbiAgICAgICAgY2FzZSBcIm5ld2NoYXJ0XCI6XHJcbiAgICAgICAgICBjb25zdCBkb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcclxuICAgICAgICAgICAgYCR7cG9ydGxldC5uZXdJZH1fRGVmZXJVcGRhdGVCdXR0b24yYFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChkb20pIHtcclxuICAgICAgICAgICAgaGFzQ29uZmlnID0gdHJ1ZTtcclxuICAgICAgICAgICAgZG9tLmNsaWNrKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFwidGFibGVcIjpcclxuICAgICAgICAgIGNvbnN0IGNhbmNlbEJ0biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZS1jYy1jbmJ0blwiKTtcclxuICAgICAgICAgIGlmIChjYW5jZWxCdG4pIHtcclxuICAgICAgICAgICAgaGFzQ29uZmlnID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICBjYW5jZWxCdG4uY2xpY2soKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChoYXNDb25maWcpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZ18ubmV4dCh0cnVlKTtcclxuICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSwgNDAwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGhhc0NvbmZpZztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb3dubG9hZEFsbCgpIHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUGFuZURvd25sb2FkQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBwb3J0bGV0czogdGhpcy5wb3J0bGV0cyxcclxuICAgICAgICBkYXNoYm9hcmQ6IHRoaXMuZGFzaGJvYXJkLFxyXG4gICAgICB9LFxyXG4gICAgICBoZWlnaHQ6IFwiODUwcHhcIixcclxuICAgICAgd2lkdGg6IFwiNTYycHhcIixcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXMpID0+IHt9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb3dubG9hZChpdGVtKSB7XHJcbiAgICBjb25zdCBwb3J0bGV0VHlwZSA9IHRoaXMuZ2V0UG9ydGxldFR5cGUoaXRlbSk7XHJcbiAgICBjb25zdCB0aXRsZSA9IHRoaXMuR2V0Z2FkZ2V0VGl0bGUoaXRlbS5jb25maWcpO1xyXG4gICAgc3dpdGNoIChwb3J0bGV0VHlwZSkge1xyXG4gICAgICBjYXNlIFwidGFibGVcIjpcclxuICAgICAgICB0aGlzLmRvd25sb2FkVGFibGUoaXRlbSwgdGl0bGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwibmV3Y2hhcnRcIjpcclxuICAgICAgY2FzZSBcInBpdm90XCI6XHJcbiAgICAgICAgY29uc3QgcGl2b3QgPSBmaW5kKFxyXG4gICAgICAgICAgKHRoaXMucGl2b3QgYXMgYW55KS5fcmVzdWx0cyxcclxuICAgICAgICAgIChlbCkgPT4gZWwucG9ydGxldC5uZXdJZCA9PT0gaXRlbS5uZXdJZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcGl2b3QuaGVhZFJvd1NwYW4gPSAwOyAvL+mHjee9ruWvvOWHumhlYWRlcuWkhOeQhlxyXG4gICAgICAgIHBpdm90LmhlYWRSb3dDb3VudCA9IDA7IC8v6YeN572u5a+85Ye6aGVhZGVy5aSE55CGXHJcbiAgICAgICAgY29uc3QgZXhjZWxFeHBvcnRQcm9wZXJ0aWVzX3Bpdm90OiBFeGNlbEV4cG9ydFByb3BlcnRpZXMgPSB7XHJcbiAgICAgICAgICBmaWxlTmFtZTogdGl0bGVcclxuICAgICAgICAgICAgPyB0aXRsZSArIFwiLnhsc3hcIlxyXG4gICAgICAgICAgICA6IFwiUGl2b3QtXCIgKyBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkgKyBcIi54bHN4XCIsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAocGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmZvcm1hdFNldHRpbmdzKSB7XHJcbiAgICAgICAgICBwaXZvdC5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuZm9ybWF0U2V0dGluZ3MuZm9yRWFjaChcclxuICAgICAgICAgICAgKHNldHRpbmcpID0+IHtcclxuICAgICAgICAgICAgICAvLyBzeW5jZnVzaW9uIGZvcm1hdCB0cmFuc2Zvcm0gdG8gZXhjZWwgZm9ybWF0XHJcbiAgICAgICAgICAgICAgY29uc3QgbWFwID0ge1xyXG4gICAgICAgICAgICAgICAgXCIjLCMjIywsLjA7KCMsIyMjLCwuMClcIjogJzAuMCwsXCJcIjsoMC4wLCwpJyxcclxuICAgICAgICAgICAgICAgICcwLjAsLFwiXCI7KDAuMCwsKSc6IFwiIywjIyMsLC4wOygjLCMjIywsLjApXCIsXHJcbiAgICAgICAgICAgICAgICBcIiMsIyMjLCw7KCMsIyMjLCwpXCI6ICcwLCxcIlwiOygwLCwpJyxcclxuICAgICAgICAgICAgICAgICcwLCxcIlwiOygwLCwpJzogXCIjLCMjIywsOygjLCMjIywsKVwiLFxyXG4gICAgICAgICAgICAgICAgXCIjLCMjIywsLjAwOygjLCMjIywsLjAwKVwiOiAnMC4wMCwsXCJcIjsoMC4wMCwsKScsXHJcbiAgICAgICAgICAgICAgICAnMC4wMCwsXCJcIjsoMC4wMCwsKSc6IFwiIywjIyMsLC4wMDsoIywjIyMsLC4wMClcIixcclxuICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICBpZiAobWFwW3NldHRpbmcuZm9ybWF0XSkge1xyXG4gICAgICAgICAgICAgICAgc2V0dGluZy5mb3JtYXQgPSBtYXBbc2V0dGluZy5mb3JtYXRdO1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHNldHRpbmcuZm9ybWF0ID0gbWFwW3NldHRpbmcuZm9ybWF0XTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtYXQoXHJcbiAgICAgICAgICBwaXZvdC5waXZvdE9iai5ncmlkLmNvbHVtbnMgYXMgQ29sdW1uTW9kZWxbXSxcclxuICAgICAgICAgIHBpdm90LnBpdm90T2JqXHJcbiAgICAgICAgKTtcclxuICAgICAgICBwaXZvdC5waXZvdE9iai5leGNlbEV4cG9ydChleGNlbEV4cG9ydFByb3BlcnRpZXNfcGl2b3QpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAvLyBjYXNlIFwidHJhbnNwb3NlXCI6XHJcbiAgICAgIC8vIFx0Ly8gY29uc3QgdHJhbnNwb3NlID0gZmluZChcclxuICAgICAgLy8gXHQvLyBcdCh0aGlzLnRyYW5zcG9zZSBhcyBhbnkpLl9yZXN1bHRzLFxyXG4gICAgICAvLyBcdC8vIFx0KGVsKSA9PiBlbC5wb3J0bGV0Lm5ld0lkID09PSBpdGVtLm5ld0lkXHJcbiAgICAgIC8vIFx0Ly8gKTtcclxuICAgICAgLy8gXHRicmVhaztcclxuICAgICAgY2FzZSBcIm5ld2NvbHVtblwiOlxyXG4gICAgICBjYXNlIFwibmV3bGluZVwiOlxyXG4gICAgICBjYXNlIFwibmV3Y29sdW1ubGluZVwiOlxyXG4gICAgICAgIGNvbnN0IGNoYXJ0SWR4ID0gdGhpcy5nZXRDaGFydEluZGV4SW5BbGwoaXRlbSk7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDb21wb25lbnQgPSB0aGlzLm5ld0NoYXJ0LnRvQXJyYXkoKVtjaGFydElkeF07XHJcbiAgICAgICAgc2VsZWN0ZWRDb21wb25lbnQuZXhwb3J0Q2hhcnQoKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOagueaNrmlkeOiOt+WPlueCueWHu+WbvuihqOWcqOWbvuihqOWIl+ihqOmHjOeahOecn+ato+mhuuW6j1xyXG4gIGdldENoYXJ0SW5kZXhJbkFsbChpdGVtKSB7XHJcbiAgICBjb25zdCBjaGFyQXJyID0gdGhpcy5BY3RpdmVEYXNoYm9hcmRQb3J0bGV0cy5maWx0ZXIoKGUpID0+IHtcclxuICAgICAgcmV0dXJuIFtcIm5ld2NvbHVtblwiLCBcIm5ld2xpbmVcIiwgXCJuZXdjb2x1bW5saW5lXCJdLmluY2x1ZGVzKFxyXG4gICAgICAgIEpTT04ucGFyc2UoZS5jb25maWcpLnBvcnRsZXRUeXBlXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICAgIGxldCByZXN1bHRJZHggPSAwO1xyXG4gICAgaWYgKGNoYXJBcnIubGVuZ3RoID4gMCkge1xyXG4gICAgICBjaGFyQXJyLmZvckVhY2goKGUsIGlkeCkgPT4ge1xyXG4gICAgICAgIGlmIChlLm5ld0lkID09IGl0ZW0ubmV3SWQpIHtcclxuICAgICAgICAgIHJlc3VsdElkeCA9IGlkeDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdElkeDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb3dubG9hZFRhYmxlKGl0ZW0sIHRpdGxlKSB7XHJcbiAgICAvLyBUYWJsZSDkuIvovb3lhajpg6jmlbDmja5cclxuICAgIGxldCBjb25maWcgPSBKU09OLnBhcnNlKGl0ZW0uY29uZmlnKTtcclxuICAgIGxldCBwYWdlU2V0dGluZyA9IE9iamVjdC5hc3NpZ24oXHJcbiAgICAgIHtcclxuICAgICAgICBjdXJyZW50UGFnZTogMSxcclxuICAgICAgICBwYWdlU2l6ZTogOTk5OTk5OSxcclxuICAgICAgfSxcclxuICAgICAgY29uZmlnICYmIGNvbmZpZy50YWJsZVNvcnRTZXR0aW5nXHJcbiAgICApO1xyXG4gICAgbGV0IHBhcmFtcyA9IHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZ2V0UGFyYW1zQnlQb3J0bGV0KFxyXG4gICAgICBpdGVtLFxyXG4gICAgICBwYWdlU2V0dGluZyxcclxuICAgICAgbnVsbCxcclxuICAgICAgdGhpcy5kYXNoYm9hcmRcclxuICAgICk7XHJcbiAgICAvLyBqc29uIGJ1ZmZlclxyXG4gICAgdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgIC5wb3N0KHRoaXMuYXBpLmJhc2V1cmwgKyB0aGlzLmFwaS51cmxMaXN0LkdldFBvcnRsZXREYXRhVjIsIHBhcmFtcylcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlID0gZmluZChcclxuICAgICAgICAgICAgICAodGhpcy50YWJsZSBhcyBhbnkpLl9yZXN1bHRzLFxyXG4gICAgICAgICAgICAgIChlbCkgPT4gZWwucG9ydGxldC5uZXdJZCA9PT0gaXRlbS5uZXdJZFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBleGNlbEV4cG9ydFByb3BlcnRpZXM6IEV4Y2VsRXhwb3J0UHJvcGVydGllcyA9IHtcclxuICAgICAgICAgICAgICBmaWxlTmFtZTogdGl0bGVcclxuICAgICAgICAgICAgICAgID8gdGl0bGUgKyBcIi54bHN4XCJcclxuICAgICAgICAgICAgICAgIDogXCJUYWJsZS1cIiArIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSArIFwiLnhsc3hcIixcclxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgZGF0YVNvdXJjZTogcmVzdWx0LmRhdGEsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmICh0YWJsZSkge1xyXG4gICAgICAgICAgICAgIHRhYmxlLmdyaWQuZXhjZWxFeHBvcnQoZXhjZWxFeHBvcnRQcm9wZXJ0aWVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKHJlc3BvbnNlKSA9PiB7fSxcclxuICAgICAgICAoKSA9PiB7fVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVGb3JtYXQoY29sdW1uczogQ29sdW1uTW9kZWxbXSwgcGl2b3RPYmopIHtcclxuICAgIHZhciBmTGlzdCA9IHBpdm90T2JqLnJlbmRlck1vZHVsZS5nZXRGb3JtYXRMaXN0KCk7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIChjb2x1bW5zW2ldIGFzIENvbHVtbk1vZGVsKS5jb2x1bW5zICYmXHJcbiAgICAgICAgKGNvbHVtbnNbaV0gYXMgQ29sdW1uTW9kZWwpLmNvbHVtbnMubGVuZ3RoID4gMFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1hdChcclxuICAgICAgICAgIChjb2x1bW5zW2ldIGFzIENvbHVtbk1vZGVsKS5jb2x1bW5zIGFzIENvbHVtbk1vZGVsW10sXHJcbiAgICAgICAgICBwaXZvdE9ialxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY29sdW1uc1tpXS5jdXN0b21BdHRyaWJ1dGVzICYmXHJcbiAgICAgICAgICBmTGlzdFsoY29sdW1uc1tpXS5jdXN0b21BdHRyaWJ1dGVzLmNlbGwgYXMgSUF4aXNTZXQpLmFjdHVhbFRleHRdID09PVxyXG4gICAgICAgICAgICBcIk5cIlxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgKGNvbHVtbnNbaV0gYXMgQ29sdW1uTW9kZWwpLmZvcm1hdCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBmaWVsZEZvcm1hdChpdGVtKSB7XHJcbiAgICB0aGlzLnBvcnRsZXQgPSBjbG9uZURlZXAoaXRlbSk7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEZpZWxkRm9ybWF0Q29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBwb3J0bGV0RGF0YTogaXRlbSxcclxuICAgICAgICBwb3J0bGV0czogdGhpcy5wb3J0bGV0cyxcclxuICAgICAgfSxcclxuICAgICAgaGVpZ2h0OiBcIjg1MHB4XCIsXHJcbiAgICAgIG1pbldpZHRoOiBcIjU2MnB4XCIsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgcGFuZWxDbGFzczogXCJkaWFsb2ctcG9zaXRpb25cIixcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXMpID0+IHt9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuRmlsdGVyKGl0ZW0pIHtcclxuICAgIHRoaXMucG9ydGxldCA9IGNsb25lRGVlcChpdGVtKTtcclxuICAgIHRoaXMuZGFzaGJvYXJkX3NpZGViYXIgPSB0cnVlO1xyXG4gICAgdGhpcy5wdXNoX2J0biA9IHRydWU7XHJcbiAgICB0aGlzLmZpZ3VyZUNvZGUgPSBpdGVtLmZpZ3VyZUNvZGU7XHJcbiAgICB0aGlzLnRhYmFjdGl2ZSA9IHRydWU7XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UucG9ydGxldEVkaXQubmV4dCh0aGlzLnVybF9pZCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQdXNoQnRuKGU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMucHVzaF9idG4gPSBlO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVDdXN0b21pemUoY3VzdG9taXplZCkge1xyXG4gICAgdGhpcy5jdXN0b21pemVkID0gY3VzdG9taXplZDtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2lkZWJhcihib29sKSB7XHJcbiAgICB0aGlzLmRhc2hib2FyZF9zaWRlYmFyID0gYm9vbDtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgb25Ub2dnbGVUYWJhY3RpdmUoYm9vbCkge1xyXG4gICAgdGhpcy50YWJhY3RpdmUgPSBib29sO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQb3JsZXQocG9ydGxldCkge1xyXG4gICAgaWYgKCFwb3J0bGV0KSB7XHJcbiAgICAgIHRoaXMucG9ydGxldCA9IG51bGw7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucG9ydGxldCA9IGNsb25lRGVlcChwb3J0bGV0KTtcclxuICAgIHRoaXMucG9ydGxldHMuZm9yRWFjaCgoX3BvcnRsZXQsIGkpID0+IHtcclxuICAgICAgaWYgKF9wb3J0bGV0Lm5ld0lkID09PSBwb3J0bGV0Lm5ld0lkKSB7XHJcbiAgICAgICAgdGhpcy5wb3J0bGV0c1tpXSA9IE9iamVjdC5hc3NpZ24oe30sIHBvcnRsZXQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMucG9ydGxldHMgPSBbLi4udGhpcy5wb3J0bGV0c107XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkUG9ybGV0KCkge1xyXG4gICAgdGhpcy5wdXNoX2J0biA9IHRydWU7XHJcbiAgICB0aGlzLmRhc2hib2FyZF9zaWRlYmFyID0gdHJ1ZTtcclxuICAgIHRoaXMucG9ydGxldCA9IG51bGw7XHJcbiAgICB0aGlzLnRhYmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmNyZWF0ZV9idG4ubmV4dCh0aGlzLnVybF9pZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2VTaWRlYmFyKGUpIHtcclxuICAgIHRoaXMuZGFzaGJvYXJkX3NpZGViYXIgPSBmYWxzZTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcmVzaXplU3RvcChhcmdzKSB7XHJcbiAgICB0aGlzLmdldE5ld1Bvc2l0aW9uKCk7XHJcbiAgICBpZiAoYXJncy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZS1ncmlkXCIpKSB7XHJcbiAgICAgIGNvbnN0IHRhYmxlID0gZmluZChcclxuICAgICAgICAodGhpcy50YWJsZSBhcyBhbnkpLl9yZXN1bHRzLFxyXG4gICAgICAgIChlbCkgPT4gZWwucG9ydGxldC5uZXdJZCA9PT0gYXJncy5lbGVtZW50LmlkXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0YWJsZSkge1xyXG4gICAgICAgIHRhYmxlLmdyaWQuaGVpZ2h0ID0gcGFyc2VJbnQoYXJncy5lbGVtZW50LnN0eWxlLmhlaWdodCkgLSA4MDtcclxuICAgICAgICB0YWJsZS5ncmlkLnJlZnJlc2hDb2x1bW5zKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoYXJncy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZS1waXZvdHZpZXdcIikpIHtcclxuICAgICAgY29uc3QgcGl2b3QgPSBmaW5kKFxyXG4gICAgICAgICh0aGlzLnBpdm90IGFzIGFueSkuX3Jlc3VsdHMsXHJcbiAgICAgICAgKGVsKSA9PiBlbC5wb3J0bGV0Lm5ld0lkID09PSBhcmdzLmVsZW1lbnQuaWRcclxuICAgICAgKTtcclxuICAgICAgaWYgKHBpdm90KSB7XHJcbiAgICAgICAgcGl2b3QucGl2b3RPYmoubGF5b3V0UmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkcmFnU3RvcChlKSB7XHJcbiAgICB0aGlzLmdldE5ld1Bvc2l0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBnZXROZXdQb3NpdGlvbigpIHtcclxuICAgIGNvbnN0IHBkYXRhID0gdGhpcy5kYXNoYm9hcmRMYXlvdXQuc2VyaWFsaXplKCk7XHJcbiAgICB0aGlzLm5ld1Bvc2l0aW9uID0gWy4uLnBkYXRhXTtcclxuICAgIHRoaXMucG9ydGxldHMuZm9yRWFjaCgocG9ydGxldCkgPT4ge1xyXG4gICAgICBwZGF0YS5mb3JFYWNoKChwKSA9PiB7XHJcbiAgICAgICAgaWYgKHBvcnRsZXQubmV3SWQgPT09IHAuaWQpIHtcclxuICAgICAgICAgIHBvcnRsZXQgPSB7XHJcbiAgICAgICAgICAgIC4uLnBvcnRsZXQsXHJcbiAgICAgICAgICAgIHBvc1g6IHAuY29sLFxyXG4gICAgICAgICAgICBwb3NZOiBwLnJvdyxcclxuICAgICAgICAgICAgY29sOiBwLmNvbCxcclxuICAgICAgICAgICAgcm93OiBwLnJvdyxcclxuICAgICAgICAgICAgd2lkdGg6IHAuc2l6ZVgsXHJcbiAgICAgICAgICAgIGhlaWdodDogcC5zaXplWSxcclxuICAgICAgICAgICAgc2l6ZVg6IHAuc2l6ZVgsXHJcbiAgICAgICAgICAgIHNpemVZOiBwLnNpemVZLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9wZW5TdWJ0b3RhbChpdGVtKSB7XHJcbiAgICB0aGlzLkN1cnJlbnRfUG9ydGxldElkID0gaXRlbS5uZXdJZDtcclxuICAgIHRoaXMuY29uZmlnID0gaXRlbS5jb25maWcgPyBKU09OLnBhcnNlKGl0ZW0uY29uZmlnKSA6IHt9O1xyXG4gICAgdGhpcy5waXZvdFRhYmxlU3ViVG90YWxMaXN0Lm1hcCgoZWwpID0+IHtcclxuICAgICAgZWwuc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5nZXRTZWxlY3RUb3RhbEdyb3VwU3RhdHVzKFwic3ViXCIpO1xyXG4gICAgdGhpcy5zaG93U3ViVG90YWxHcm91cCA9ICF0aGlzLnNob3dTdWJUb3RhbEdyb3VwO1xyXG4gICAgdGhpcy5zaG93Z3JhbmRUb3RhbEdyb3VwID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvcGVuR3JhbmR0b3RhbChpdGVtKSB7XHJcbiAgICB0aGlzLkN1cnJlbnRfUG9ydGxldElkID0gaXRlbS5uZXdJZDtcclxuICAgIHRoaXMuY29uZmlnID0gaXRlbS5jb25maWcgPyBKU09OLnBhcnNlKGl0ZW0uY29uZmlnKSA6IHt9O1xyXG4gICAgdGhpcy5waXZvdFRhYmxlR3JhbmRUb3RhbExpc3QubWFwKChlbCkgPT4ge1xyXG4gICAgICBlbC5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5nZXRQb3J0bGV0VHlwZShpdGVtKSA9PT0gXCJ0YWJsZVwiKSB7XHJcbiAgICAgIHRoaXMuZ2V0U2VsZWN0VG90YWxHcm91cFN0YXR1cyhcInRhYmxlR3JhbmRcIik7XHJcbiAgICAgIHRoaXMuc2hvd1RhYmxlR3JhbmRUb3RhbEdyb3VwID0gIXRoaXMuc2hvd1RhYmxlR3JhbmRUb3RhbEdyb3VwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5nZXRTZWxlY3RUb3RhbEdyb3VwU3RhdHVzKCk7XHJcbiAgICAgIHRoaXMuc2hvd2dyYW5kVG90YWxHcm91cCA9ICF0aGlzLnNob3dncmFuZFRvdGFsR3JvdXA7XHJcbiAgICAgIHRoaXMuc2hvd1N1YlRvdGFsR3JvdXAgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdFRvdGFsR3JvdXAoaW5kZXgsIHR5cGUsIGl0ZW0pIHtcclxuICAgIGlmICh0aGlzLmdldFBvcnRsZXRUeXBlKGl0ZW0pID09PSBcInBpdm90XCIpIHtcclxuICAgICAgY29uc3QgcGl2b3QgPSBmaW5kKFxyXG4gICAgICAgICh0aGlzLnBpdm90IGFzIGFueSkuX3Jlc3VsdHMsXHJcbiAgICAgICAgKGVsKSA9PiBlbC5wb3J0bGV0Lm5ld0lkID09PSBpdGVtLm5ld0lkXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0eXBlID09PSBcInN1YlwiKSB7XHJcbiAgICAgICAgdGhpcy5zaG93U3ViVG90YWxHcm91cCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucGl2b3RUYWJsZVN1YlRvdGFsTGlzdC5mb3JFYWNoKChzdWJ0b3RhbCkgPT4ge1xyXG4gICAgICAgICAgc3VidG90YWwuc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnBpdm90VGFibGVTdWJUb3RhbExpc3RbaW5kZXhdLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICBpZiAocGl2b3QucGl2b3RPYmopIHtcclxuICAgICAgICAgIHN3aXRjaCAoaW5kZXgpIHtcclxuICAgICAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLmZpZWxkcy5tYXAoKGVsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbC5zaG93U3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBwaXZvdC5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Muc2hvd1N1YlRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dSb3dTdWJUb3RhbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHBpdm90LnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5zaG93Q29sdW1uU3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93U3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93Um93U3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93Q29sdW1uU3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLmZpZWxkcy5tYXAoKGVsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbC5zaG93U3ViVG90YWxzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dTdWJUb3RhbHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBwaXZvdC5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Muc2hvd1Jvd1N1YlRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dDb2x1bW5TdWJUb3RhbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLnNob3dTdWJUb3RhbHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93Um93U3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93Q29sdW1uU3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLmZpZWxkcy5tYXAoKGVsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbC5zaG93U3ViVG90YWxzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgZ2l0ZW0gb2YgdGhpcy5jb25maWcueGF4aXMuZ3JvdXBzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuY29uZmlnLmZpZWxkcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgIChmbCkgPT4gZmwuY29sTmFtZSA9PT0gZ2l0ZW0ubmFtZVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGlmIChmaWVsZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIGZpZWxkWzBdLnNob3dTdWJUb3RhbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBwaXZvdC5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Muc2hvd1N1YlRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dSb3dTdWJUb3RhbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHBpdm90LnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5zaG93Q29sdW1uU3ViVG90YWxzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2hvd1N1YlRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2hvd1Jvd1N1YlRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2hvd0NvbHVtblN1YlRvdGFscyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuZmllbGRzLm1hcCgoZWwpID0+IHtcclxuICAgICAgICAgICAgICAgIGVsLnNob3dTdWJUb3RhbHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuY29uZmlnLmNvbHVtbkdyb3VwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuY29uZmlnLmZpZWxkcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgIChmbCkgPT4gZmwuY29sTmFtZSA9PT0gaXRlbS5uYW1lXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgZmllbGRbMF0uc2hvd1N1YlRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHBpdm90LnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5zaG93U3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBwaXZvdC5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Muc2hvd1Jvd1N1YlRvdGFscyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHBpdm90LnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5zaG93Q29sdW1uU3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93U3ViVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93Um93U3ViVG90YWxzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2hvd0NvbHVtblN1YlRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd2dyYW5kVG90YWxHcm91cCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucGl2b3RUYWJsZUdyYW5kVG90YWxMaXN0LmZvckVhY2goKGdyYW5kdG90YWwpID0+IHtcclxuICAgICAgICAgIGdyYW5kdG90YWwuc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnBpdm90VGFibGVHcmFuZFRvdGFsTGlzdFtpbmRleF0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIGlmIChwaXZvdC5waXZvdE9iaikge1xyXG4gICAgICAgICAgc3dpdGNoIChpbmRleCkge1xyXG4gICAgICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dHcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dSb3dHcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dDb2x1bW5HcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2hvd0dyYW5kVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93Um93R3JhbmRUb3RhbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLnNob3dDb2x1bW5HcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICBwaXZvdC5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Muc2hvd0dyYW5kVG90YWxzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dSb3dHcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dDb2x1bW5HcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2hvd0dyYW5kVG90YWxzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2hvd1Jvd0dyYW5kVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93Q29sdW1uR3JhbmRUb3RhbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dHcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dSb3dHcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgcGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnNob3dDb2x1bW5HcmFuZFRvdGFscyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLnNob3dHcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2hvd1Jvd0dyYW5kVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93Q29sdW1uR3JhbmRUb3RhbHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICAgIHBpdm90LnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5zaG93R3JhbmRUb3RhbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHBpdm90LnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5zaG93Um93R3JhbmRUb3RhbHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBwaXZvdC5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Muc2hvd0NvbHVtbkdyYW5kVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaG93R3JhbmRUb3RhbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLnNob3dSb3dHcmFuZFRvdGFscyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLnNob3dDb2x1bW5HcmFuZFRvdGFscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChwaXZvdC5waXZvdE9iaikge1xyXG4gICAgICAgIHBpdm90LnBpdm90T2JqLnJlbmRlcigpO1xyXG4gICAgICAgIGl0ZW0uY29uZmlnID0gQ2lyY3VsYXJKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZyk7XHJcbiAgICAgICAgY29uc3QgcG9ydGxldEluZGV4ID0gdGhpcy5wb3J0bGV0cy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAoeCkgPT4geC5uZXdJZCA9PT0gaXRlbS5uZXdJZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5wb3J0bGV0c1twb3J0bGV0SW5kZXhdID0gaXRlbTtcclxuICAgICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuY2hhbmdlUGl2b3QubmV4dChpdGVtLm5ld0lkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgdGFibGUgPSBmaW5kKFxyXG4gICAgICAgICh0aGlzLnRhYmxlIGFzIGFueSkuX3Jlc3VsdHMsXHJcbiAgICAgICAgKGVsKSA9PiBlbC5wb3J0bGV0Lm5ld0lkID09PSBpdGVtLm5ld0lkXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuc2hvd1RhYmxlR3JhbmRUb3RhbEdyb3VwID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudGFibGVHcmFuZFRvdGFsTGlzdC5mb3JFYWNoKChncmFuZHRvdGFsKSA9PiB7XHJcbiAgICAgICAgZ3JhbmR0b3RhbC5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy50YWJsZUdyYW5kVG90YWxMaXN0W2luZGV4XS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIGlmICh0YWJsZSkge1xyXG4gICAgICAgIHN3aXRjaCAoaW5kZXgpIHtcclxuICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgdGhpcy5jb25maWcuc2hvd0dyYW5kVG90YWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGFibGUuZ3JpZC5lbGVtZW50XHJcbiAgICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoXCIuZS1ncmlkZm9vdGVyXCIpXHJcbiAgICAgICAgICAgICAgLmNsYXNzTGlzdC5yZW1vdmUoXCJoaWRlc3VtbWFyeVwiKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnNob3dHcmFuZFRvdGFscyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0YWJsZS5ncmlkLmVsZW1lbnRcclxuICAgICAgICAgICAgICAucXVlcnlTZWxlY3RvcihcIi5lLWdyaWRmb290ZXJcIilcclxuICAgICAgICAgICAgICAuY2xhc3NMaXN0LmFkZChcImhpZGVzdW1tYXJ5XCIpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgaXRlbS5jb25maWcgPSBDaXJjdWxhckpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuICAgICAgICBjb25zdCBwb3J0bGV0SW5kZXggPSB0aGlzLnBvcnRsZXRzLmZpbmRJbmRleChcclxuICAgICAgICAgICh4KSA9PiB4Lm5ld0lkID09PSBpdGVtLm5ld0lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnBvcnRsZXRzW3BvcnRsZXRJbmRleF0gPSBpdGVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RUb3RhbEdyb3VwU3RhdHVzKHR5cGU/KSB7XHJcbiAgICBpZiAodHlwZSA9PT0gXCJzdWJcIikge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd1N1YlRvdGFscyAmJlxyXG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dSb3dTdWJUb3RhbHMgJiZcclxuICAgICAgICB0aGlzLmNvbmZpZy5zaG93Q29sdW1uU3ViVG90YWxzXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMucGl2b3RUYWJsZVN1YlRvdGFsTGlzdFswXS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgICF0aGlzLmNvbmZpZy5zaG93U3ViVG90YWxzICYmXHJcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd1Jvd1N1YlRvdGFscyAmJlxyXG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dDb2x1bW5TdWJUb3RhbHNcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5waXZvdFRhYmxlU3ViVG90YWxMaXN0WzFdLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd1N1YlRvdGFscyAmJlxyXG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dSb3dTdWJUb3RhbHMgJiZcclxuICAgICAgICAhdGhpcy5jb25maWcuc2hvd0NvbHVtblN1YlRvdGFsc1xyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnBpdm90VGFibGVTdWJUb3RhbExpc3RbMl0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmNvbmZpZy5zaG93U3ViVG90YWxzICYmXHJcbiAgICAgICAgIXRoaXMuY29uZmlnLnNob3dSb3dTdWJUb3RhbHMgJiZcclxuICAgICAgICB0aGlzLmNvbmZpZy5zaG93Q29sdW1uU3ViVG90YWxzXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMucGl2b3RUYWJsZVN1YlRvdGFsTGlzdFszXS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJ0YWJsZUdyYW5kXCIpIHtcclxuICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLnNob3dHcmFuZFRvdGFscykge1xyXG4gICAgICAgIHRoaXMudGFibGVHcmFuZFRvdGFsTGlzdFswXS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmNvbmZpZy5zaG93R3JhbmRUb3RhbHMpIHtcclxuICAgICAgICB0aGlzLnRhYmxlR3JhbmRUb3RhbExpc3RbMV0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd0dyYW5kVG90YWxzICYmXHJcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd1Jvd0dyYW5kVG90YWxzICYmXHJcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd0NvbHVtbkdyYW5kVG90YWxzXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMucGl2b3RUYWJsZUdyYW5kVG90YWxMaXN0WzBdLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIXRoaXMuY29uZmlnLnNob3dHcmFuZFRvdGFscyAmJlxyXG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dSb3dHcmFuZFRvdGFscyAmJlxyXG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dDb2x1bW5HcmFuZFRvdGFsc1xyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnBpdm90VGFibGVHcmFuZFRvdGFsTGlzdFsxXS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dHcmFuZFRvdGFscyAmJlxyXG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dSb3dHcmFuZFRvdGFscyAmJlxyXG4gICAgICAgICF0aGlzLmNvbmZpZy5zaG93Q29sdW1uR3JhbmRUb3RhbHNcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5waXZvdFRhYmxlR3JhbmRUb3RhbExpc3RbMl0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmNvbmZpZy5zaG93R3JhbmRUb3RhbHMgJiZcclxuICAgICAgICAhdGhpcy5jb25maWcuc2hvd1Jvd0dyYW5kVG90YWxzICYmXHJcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd0NvbHVtbkdyYW5kVG90YWxzXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMucGl2b3RUYWJsZUdyYW5kVG90YWxMaXN0WzNdLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdENoYXJEYXRhKG5vRGV0ZWN0ID0gZmFsc2UpIHtcclxuICAgIGlmICghdGhpcy5kYXNoYm9hcmQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGZpbGVzT2JqID0ge307IC8vIOeUqOadpee/u+ivkVxyXG4gICAgZm9yICh2YXIgaSBpbiB0aGlzLkRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmZpZWxkc0Fyclt0aGlzLmRhc2hib2FyZC5pZF0pIHtcclxuICAgICAgaWYgKHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZmllbGRzQXJyW3RoaXMuZGFzaGJvYXJkLmlkXVtpXSkge1xyXG4gICAgICAgIHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZmllbGRzQXJyW3RoaXMuZGFzaGJvYXJkLmlkXVtpXS5mb3JFYWNoKFxyXG4gICAgICAgICAgKHQpID0+IHtcclxuICAgICAgICAgICAgZmlsZXNPYmpbdC5jb2xOYW1lXSA9IHRbXCJsYW5nQ29kZVwiXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnBvcnRsZXRzLmZvckVhY2goKGUpID0+IHtcclxuICAgICAgaWYgKCFlLmNvbmZpZykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBjb25maWcgPSBKU09OLnBhcnNlKGUuY29uZmlnKTtcclxuICAgICAgLy8g5aaC5p6c5pivIGhpc3RvcmljYWxJUlLvvIzmoLnmja4gdmlzdWFsVHlwZSDov5vooYzmuLLmn5NcclxuICAgICAgY29uc3QgcG9ydGxldFR5cGUgPVxyXG4gICAgICAgIGNvbmZpZy5wb3J0bGV0VHlwZSA9PT0gXCJoaXN0b3JpY2FsSVJSXCJcclxuICAgICAgICAgID8gY29uZmlnLnNlbGVjdGVkVmlzdWFsVHlwZVxyXG4gICAgICAgICAgOiBjb25maWcucG9ydGxldFR5cGU7XHJcbiAgICAgIGxldCBpc05ld0NoYXJ0ID0gW1wibmV3Y29sdW1uXCIsIFwibmV3bGluZVwiLCBcIm5ld2NvbHVtbmxpbmVcIl0uaW5jbHVkZXMoXHJcbiAgICAgICAgcG9ydGxldFR5cGVcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmIChpc05ld0NoYXJ0KSB7XHJcbiAgICAgICAgbGV0IGRhdGFDb2x1bW4gPSBbXTtcclxuICAgICAgICBsZXQgZGF0YUxpbmUgPSBbXTtcclxuICAgICAgICBsZXQgeVhpYXMgPSBbXTtcclxuICAgICAgICBsZXQgc2Vjb25kWVhpYXMgPSBbXTtcclxuICAgICAgICAvLyBjb25zdCBjb25maWcgPSBKU09OLnBhcnNlKGUuY29uZmlnKTtcclxuICAgICAgICBpZiAoY29uZmlnLnNlbGVjdGVkWSAmJiBjb25maWcuc2VsZWN0ZWRZLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHlYaWFzID0gY29uZmlnLnNlbGVjdGVkWTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjb25maWcuc2VsZWN0ZWRTZWNvbmRZICYmIGNvbmZpZy5zZWxlY3RlZFNlY29uZFkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgc2Vjb25kWVhpYXMgPSBjb25maWcuc2VsZWN0ZWRTZWNvbmRZO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGRhdGFJdGVtO1xyXG4gICAgICAgIGlmIChlLmlkICYmIGUuaWQgIT0gXCIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIikge1xyXG4gICAgICAgICAgZGF0YUl0ZW0gPVxyXG4gICAgICAgICAgICB0aGlzLkRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBvcnRsZXREYXRhX05ld1t0aGlzLmRhc2hib2FyZC5pZF1bXHJcbiAgICAgICAgICAgICAgZS5pZFxyXG4gICAgICAgICAgICBdIHx8IFtdO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZS5uZXdJZCkge1xyXG4gICAgICAgICAgZGF0YUl0ZW0gPVxyXG4gICAgICAgICAgICB0aGlzLkRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBvcnRsZXREYXRhX05ld1t0aGlzLmRhc2hib2FyZC5pZF1bXHJcbiAgICAgICAgICAgICAgZS5uZXdJZFxyXG4gICAgICAgICAgICBdIHx8IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGF0YUl0ZW0gJiYgZGF0YUl0ZW0uZGF0YSAmJiBkYXRhSXRlbS5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IHhBeGlzRmllbGQgPSBjb25maWcuZmllbGRzLmZpbmQoXHJcbiAgICAgICAgICAgIChmaWVsZCkgPT4gZmllbGQuY29sTmFtZSA9PT0gY29uZmlnLnNlbGVjdGVkWFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGRhdGFJdGVtLmRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwZXJpb2QgPVxyXG4gICAgICAgICAgICAgIHhBeGlzRmllbGQgJiYgeEF4aXNGaWVsZC5kYXRhVHlwZSA9PT0gXCJkYXRlXCJcclxuICAgICAgICAgICAgICAgID8gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oaXRlbVtjb25maWcuc2VsZWN0ZWRYXSwgXCJ5eXl5LU1NLWRkXCIpXHJcbiAgICAgICAgICAgICAgICA6IGl0ZW1bY29uZmlnLnNlbGVjdGVkWF07XHJcbiAgICAgICAgICAgIGlmIChwb3J0bGV0VHlwZSA9PSBcIm5ld2xpbmVcIikge1xyXG4gICAgICAgICAgICAgIGlmICh5WGlhcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb2JqID0geyBwZXJpb2QgfTtcclxuICAgICAgICAgICAgICAgIHlYaWFzLmZvckVhY2goKHkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgb2JqW3RoaXMudHJhbnNsYXRpb25bZmlsZXNPYmpbeV1dIHx8IHldID0gaXRlbVt5XTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgZGF0YUxpbmUucHVzaChvYmopO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoeVhpYXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG9iaiA9IHsgcGVyaW9kIH07XHJcbiAgICAgICAgICAgICAgICB5WGlhcy5mb3JFYWNoKCh5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIG9ialt0aGlzLnRyYW5zbGF0aW9uW2ZpbGVzT2JqW3ldXSB8fCB5XSA9IGl0ZW1beV07XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGRhdGFDb2x1bW4ucHVzaChvYmopO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKHNlY29uZFlYaWFzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGxldCBvYmogPSB7IHBlcmlvZCB9O1xyXG4gICAgICAgICAgICAgICAgc2Vjb25kWVhpYXMuZm9yRWFjaCgoeSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBvYmpbdGhpcy50cmFuc2xhdGlvbltmaWxlc09ialt5XV0gfHwgeV0gPSBpdGVtW3ldO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBkYXRhTGluZS5wdXNoKG9iaik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIOaXtumXtOaOkuW6j1xyXG4gICAgICAgIGlmIChjb25maWcuc2VsZWN0ZWRYID09IFwiRGF0ZVwiKSB7XHJcbiAgICAgICAgICBkYXRhQ29sdW1uICYmIGRhdGFDb2x1bW4uc29ydCh0aGlzLmNvbXBhcmVEYXRlcyk7XHJcbiAgICAgICAgICBkYXRhTGluZSAmJiBkYXRhTGluZS5zb3J0KHRoaXMuY29tcGFyZURhdGVzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIOi1i+WAvGRhdGFDb2x1bW7lkoxkYXRhTGluZeWvueW6lOeahFR5cGVcclxuICAgICAgICBjb25maWcuZmllbGRzLmZvckVhY2goKHQpID0+IHtcclxuICAgICAgICAgIGlmIChjb25maWcuc2VsZWN0ZWRZICYmIGNvbmZpZy5zZWxlY3RlZFkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBpZiAodFtcImNvbE5hbWVcIl0gPT0gY29uZmlnLnNlbGVjdGVkWVswXSkge1xyXG4gICAgICAgICAgICAgIGVbXCJjb2x1bW5UeXBlXCJdID0gdFtcImRhdGFUeXBlXCJdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGNvbmZpZy5zZWxlY3RlZFNlY29uZFkgJiYgY29uZmlnLnNlbGVjdGVkU2Vjb25kWS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGlmICh0W1wiY29sTmFtZVwiXSA9PSBjb25maWcuc2VsZWN0ZWRTZWNvbmRZWzBdKSB7XHJcbiAgICAgICAgICAgICAgZVtcImxpbmVUeXBlXCJdID0gdFtcImRhdGFUeXBlXCJdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGVbXCJkYXRhQ29sdW1uXCJdID0gZGF0YUNvbHVtbjtcclxuICAgICAgICBlW1wiZGF0YUxpbmVcIl0gPSBkYXRhTGluZTtcclxuICAgICAgICBpZiAoY29uZmlnW1wic2VsZWN0VGhlbWVcIl0pIHtcclxuICAgICAgICAgIGVbXCJ0aGVtZUNvbG9yXCJdID0gdGhpcy50aGVtZU9ialtjb25maWdbXCJzZWxlY3RUaGVtZVwiXV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmICghbm9EZXRlY3QpIHtcclxuICAgICAgdGhpcy5zZXRBY3RpdmVEYXNoYm9hcmRQb3J0bGV0cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tcGFyZURhdGVzKGEsIGIpIHtcclxuICAgIGNvbnN0IGRhdGVBID0gbmV3IERhdGUoYS5wZXJpb2QpO1xyXG4gICAgY29uc3QgZGF0ZUIgPSBuZXcgRGF0ZShiLnBlcmlvZCk7XHJcblxyXG4gICAgaWYgKGRhdGVBIDwgZGF0ZUIpIHtcclxuICAgICAgcmV0dXJuIC0xO1xyXG4gICAgfSBlbHNlIGlmIChkYXRlQSA+IGRhdGVCKSB7XHJcbiAgICAgIHJldHVybiAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cnVuY2F0ZVRleHQodGV4dCwgbWF4V2lkdGggPSA3MCwgZm9udFNpemUgPSAxMSkge1xyXG4gICAgLy8g5Yib5bu65LiA5Liq6ZqQ5b2i55qEIHNwYW4g5p2l5rWL6YeP5paH5pys5a695bqmXHJcbiAgICBjb25zdCBtZWFzdXJlU3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICBtZWFzdXJlU3Bhbi5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcclxuICAgIG1lYXN1cmVTcGFuLnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xyXG4gICAgbWVhc3VyZVNwYW4uc3R5bGUuZm9udFNpemUgPSBmb250U2l6ZSArIFwicHhcIjtcclxuICAgIG1lYXN1cmVTcGFuLnN0eWxlLndoaXRlU3BhY2UgPSBcIm5vd3JhcFwiO1xyXG4gICAgbWVhc3VyZVNwYW4uaW5uZXJUZXh0ID0gdGV4dDtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobWVhc3VyZVNwYW4pO1xyXG5cclxuICAgIC8vIOS6jOWIhuafpeaJvuadpeaJvuWIsOacgOS9s+aIquaWreeCuVxyXG4gICAgbGV0IGxlZnQgPSAxO1xyXG4gICAgbGV0IHJpZ2h0ID0gdGV4dC5sZW5ndGggLSAxO1xyXG4gICAgbGV0IGxlZnRPclJpZ2h0ID0gXCJsZWZ0XCI7XHJcbiAgICBsZXQgaXNCaWdnZXIgPSBmYWxzZTtcclxuICAgIGlmIChtZWFzdXJlU3Bhbi5vZmZzZXRXaWR0aCA+IG1heFdpZHRoKSB7XHJcbiAgICAgIHdoaWxlICghaXNCaWdnZXIpIHtcclxuICAgICAgICBtZWFzdXJlU3Bhbi5pbm5lclRleHQgPSBgJHt0ZXh0LnNsaWNlKDAsIGxlZnQpfS4uLiR7dGV4dC5zbGljZShyaWdodCl9YDtcclxuICAgICAgICBpZiAobWVhc3VyZVNwYW4ub2Zmc2V0V2lkdGggPiBtYXhXaWR0aCkge1xyXG4gICAgICAgICAgaXNCaWdnZXIgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAobGVmdE9yUmlnaHQgPT09IFwibGVmdFwiKSB7XHJcbiAgICAgICAgICAgIGxlZnRPclJpZ2h0ID0gXCJyaWdodFwiO1xyXG4gICAgICAgICAgICBsZWZ0ID0gbGVmdCArIDE7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZWZ0T3JSaWdodCA9IFwibGVmdFwiO1xyXG4gICAgICAgICAgICByaWdodCA9IHJpZ2h0IC0gMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobWVhc3VyZVNwYW4pO1xyXG4gICAgICByZXR1cm4gdGV4dDtcclxuICAgIH1cclxuICAgIC8vIOa4heeQhuW5tui/lOWbnue7k+aenFxyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChtZWFzdXJlU3Bhbik7XHJcbiAgICByZXR1cm4gYCR7dGV4dC5zbGljZSgwLCBsZWZ0IC0gMSl9JHtsZWZ0ICE9PSAxID8gXCIuLi5cIiA6IFwiXCJ9JHt0ZXh0LnNsaWNlKFxyXG4gICAgICByaWdodCArIDFcclxuICAgICl9YDtcclxuICB9XHJcblxyXG4gIGdldFBhZGRpbmdCb3R0b20oKSB7XHJcbiAgICBsZXQgcGFkZGluZ0JvdHRvID0gNTA7XHJcbiAgICAvLyDlrZjlnKhUaXRsZSDmiJbogIUgRGVzY3JpcHRpb27ljaDkvY3nva7ml7ZcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5kYXNoYm9hcmQgJiZcclxuICAgICAgKHRoaXMuZGFzaGJvYXJkLnRpdGxlIHx8IHRoaXMuZGFzaGJvYXJkLmRlc2NyaXB0aW9uKVxyXG4gICAgKSB7XHJcbiAgICAgIGxldCBnYXAgPSAwO1xyXG4gICAgICBpZiAodGhpcy5kYXNoYm9hcmQudGl0bGUpIHtcclxuICAgICAgICBnYXAgKz0gNTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5kYXNoYm9hcmQuZGVzY3JpcHRpb24pIHtcclxuICAgICAgICBnYXAgKz0gMjA7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZWxlbWVudDogYW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5wb3J0bGV0cy1kZXNjcmlwdGlvblwiKTtcclxuICAgICAgcGFkZGluZ0JvdHRvID0gZWxlbWVudCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgZ2FwICsgNTAgOiA1MDtcclxuICAgIH1cclxuICAgIHJldHVybiBwYWRkaW5nQm90dG8gKyBcInB4XCI7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVEYXNoYm9hcmRMYXN0VXBkYXRlRGF0ZSgpIHtcclxuICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgY29uc3QgX2RhdGFPYmogPSB7IGRhc2hib2FyZElkOiB0aGlzLnVybF9pZCwgbGFuZ3VhZ2U6IHRoaXMubGFuZyB9O1xyXG4gICAgdGhpcy5odHRwLnBvc3QodGhpcy5hcGkudXJsTGlzdC5HZXREYXNoYm9hcmRWMiwgX2RhdGFPYmosIChyZXMpID0+IHtcclxuICAgICAgcmVzID0gdGhpcy5wYmYuY29udmVydEtleXNUb0xvd2VyQ2FzZShyZXMpO1xyXG4gICAgICB0aGlzLmRhc2hib2FyZC5VcGRhdGVkRGF0ZSA9IHJlcy5VcGRhdGVkRGF0ZTtcclxuICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmdfLm5leHQodHJ1ZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNhdmVkYXNoYm9hcmQoc2hvdWxkVXBkYXRlID0gXCJmYWxzZVwiKSB7XHJcbiAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnBiZi5wYWdlTG9hZGluZ18ubmV4dCh0cnVlKTtcclxuICAgIGNvbnN0IHBkYXRhID0gdGhpcy5kYXNoYm9hcmRMYXlvdXQuc2VyaWFsaXplKCk7XHJcbiAgICB0aGlzLm5ld1Bvc2l0aW9uID0gWy4uLnBkYXRhXTtcclxuICAgIGNvbnN0IHBvcnRsZXRzID0gWy4uLnRoaXMucG9ydGxldHNdO1xyXG5cclxuICAgIGlmIChwb3J0bGV0cyAmJiBwb3J0bGV0cy5sZW5ndGgpIHtcclxuICAgICAgbGV0IGFjdGl2ZVRhYkhhc1BvcnRsZXQgPSBmYWxzZTtcclxuICAgICAgY29uc3QgdGFiSWRzID0gW107XHJcbiAgICAgIHBvcnRsZXRzLm1hcCgoZWwpID0+IHtcclxuICAgICAgICBjb25zdCBkYXRhID0gZmluZCh0aGlzLm5ld1Bvc2l0aW9uLCAoaXRlbSkgPT4gaXRlbS5pZCA9PT0gZWwubmV3SWQpO1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICBlbC5jb2wgPSBkYXRhLmNvbDtcclxuICAgICAgICAgIGVsLnBvc1ggPSBkYXRhLmNvbDtcclxuICAgICAgICAgIGVsLnJvdyA9IGRhdGEucm93O1xyXG4gICAgICAgICAgZWwucG9zWSA9IGRhdGEucm93O1xyXG4gICAgICAgICAgZWwuc2l6ZVggPSBkYXRhLnNpemVYO1xyXG4gICAgICAgICAgZWwud2lkdGggPSBkYXRhLnNpemVYO1xyXG4gICAgICAgICAgZWwuc2l6ZVkgPSBkYXRhLnNpemVZO1xyXG4gICAgICAgICAgZWwuaGVpZ2h0ID0gZGF0YS5zaXplWTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGNvbmZpZyA9IGVsLmNvbmZpZyA/IEpTT04ucGFyc2UoZWwuY29uZmlnKSA6IG51bGw7XHJcbiAgICAgICAgaWYgKGNvbmZpZykge1xyXG4gICAgICAgICAgY29uZmlnID0ge1xyXG4gICAgICAgICAgICAuLi5jb25maWcsXHJcbiAgICAgICAgICAgIHByZXZEYXNoYm9hcklkOiBlbC5pZCxcclxuICAgICAgICAgICAgYWN0aXZlVGFiOiB0aGlzLmFjdGl2ZVRhYixcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0YWJJZHMucHVzaChjb25maWcudGFiSWQpO1xyXG4gICAgICAgICAgaWYgKGNvbmZpZy50YWJJZCA9PT0gdGhpcy5hY3RpdmVUYWIpIHtcclxuICAgICAgICAgICAgYWN0aXZlVGFiSGFzUG9ydGxldCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbC5jb25maWcgPSBDaXJjdWxhckpTT04uc3RyaW5naWZ5KGNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKCFhY3RpdmVUYWJIYXNQb3J0bGV0KSB7XHJcbiAgICAgICAgcG9ydGxldHMuZm9yRWFjaCgoZWwpID0+IHtcclxuICAgICAgICAgIGxldCBjb25maWcgPSBlbC5jb25maWcgPyBKU09OLnBhcnNlKGVsLmNvbmZpZykgOiBudWxsO1xyXG4gICAgICAgICAgaWYgKGNvbmZpZykge1xyXG4gICAgICAgICAgICBjb25maWcgPSB7XHJcbiAgICAgICAgICAgICAgLi4uY29uZmlnLFxyXG4gICAgICAgICAgICAgIHByZXZEYXNoYm9hcklkOiBlbC5pZCxcclxuICAgICAgICAgICAgICBhY3RpdmVUYWI6IHRhYklkc1swXSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsLmNvbmZpZyA9IENpcmN1bGFySlNPTi5zdHJpbmdpZnkoY29uZmlnKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGRhdGFPYmogPSB7XHJcbiAgICAgIHBvcnRsZXRzLFxyXG4gICAgICBkYXNoYm9hcmRJZDogdGhpcy51cmxfaWQsXHJcbiAgICAgIGxhc3RVcGRhdGVEYXRlOiB0aGlzLmRhc2hib2FyZC5VcGRhdGVkRGF0ZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmh0dHAucG9zdCh0aGlzLmFwaS51cmxMaXN0LlNhdmVEYXNoYm9hcmRQb3J0bGV0cywgZGF0YU9iaiwgKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgIHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuR2V0RGFzaGJvYXJkVjEoXHJcbiAgICAgICAgICB0aGlzLnVybF9pZCxcclxuICAgICAgICAgIGZhbHNlLFxyXG4gICAgICAgICAgKF9yZXMsIF9wb3J0bGV0cyA9IFtdKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICBpZiAoIV9yZXMpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgX3NhdmVNZXNzYWdlID1cclxuICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uLkRBU0hCT0FSRF9TQVZFX01FU1NBR0UgfHxcclxuICAgICAgICAgICAgICBcIkRhc2hib2FyZCBoYXMgYmVlbiB1cGRhdGVkXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93U3VjTXNnKF9zYXZlTWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGlmIChzaG91bGRVcGRhdGUgIT09IFwidHJ1ZVwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50b2dnbGVDdXN0b21pemUoZmFsc2UpO1xyXG4gICAgICAgICAgICAgIHRoaXMudG9nZ2xlU2lkZWJhcihmYWxzZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVQdXNoQnRuKGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURhc2hib2FyZCh7XHJcbiAgICAgICAgICAgICAgZGFzaGJvYXJkOiBfcmVzLFxyXG4gICAgICAgICAgICAgIHBvcnRsZXRzOiBfcG9ydGxldHMsXHJcbiAgICAgICAgICAgICAgbm9EZXRlY3Q6IHRydWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmluaXRsYXlvdXQodHJ1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgZXJyb3JNZXNzYWdlID0gXCJEYXNoYm9hcmQgc2F2ZSBmYWlsZWRcIjtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXMubWVzc2FnZXMpKSB7XHJcbiAgICAgICAgICBlcnJvck1lc3NhZ2UgPSByZXMubWVzc2FnZXNbMF0ubWVzc2FnZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dOb3RpZmljYXRpb24oZXJyb3JNZXNzYWdlLCB7XHJcbiAgICAgICAgICBzdGF0dXM6IFwiRXJyb3JcIixcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|