carbon-components-angular 5.10.3 → 5.10.5
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/combobox/combobox.component.d.ts +2 -2
- package/docs/documentation/components/ComboBox.html +38 -10
- package/docs/documentation/directives/IconDirective.html +101 -111
- package/docs/documentation/js/search/search_index.js +2 -2
- package/docs/documentation/modules/TagModule/dependencies.svg +4 -4
- package/docs/documentation/modules/TagModule.html +4 -4
- package/docs/documentation/modules/ThemeModule/dependencies.svg +4 -4
- package/docs/documentation/modules/ThemeModule.html +4 -4
- package/docs/documentation/modules/TilesModule/dependencies.svg +4 -4
- package/docs/documentation/modules/TilesModule.html +4 -4
- package/docs/documentation/modules/TimePickerModule/dependencies.svg +36 -40
- package/docs/documentation/modules/TimePickerModule.html +36 -40
- package/docs/documentation/modules/TimePickerSelectModule/dependencies.svg +30 -30
- package/docs/documentation/modules/TimePickerSelectModule.html +30 -30
- package/docs/documentation/modules/ToggleModule/dependencies.svg +4 -4
- package/docs/documentation/modules/ToggleModule.html +4 -4
- package/docs/documentation/modules/ToggletipModule/dependencies.svg +37 -37
- package/docs/documentation/modules/ToggletipModule.html +37 -37
- package/docs/documentation.json +46 -56
- package/docs/storybook/7153.ce84c62a.iframe.bundle.js +1 -0
- package/docs/storybook/901.0cee8749.iframe.bundle.js +1 -0
- package/docs/storybook/9558.680ea348.iframe.bundle.js +1 -0
- package/docs/storybook/9672.2cc3d4f7.iframe.bundle.js +1 -0
- package/docs/storybook/accordion-accordion-stories.9a7b324c.iframe.bundle.js +1 -0
- package/docs/storybook/breadcrumb-breadcrumb-stories.88919630.iframe.bundle.js +1 -0
- package/docs/storybook/button-button-set-stories.68d26789.iframe.bundle.js +1 -0
- package/docs/storybook/button-button-stories.82a8e128.iframe.bundle.js +1 -0
- package/docs/storybook/button-icon-button-stories.5d232e73.iframe.bundle.js +1 -0
- package/docs/storybook/{code-snippet-code-snippet-stories.1efe8836.iframe.bundle.js → code-snippet-code-snippet-stories.ec4fca0a.iframe.bundle.js} +1 -1
- package/docs/storybook/combobox-combobox-stories.a311e67b.iframe.bundle.js +1 -0
- package/docs/storybook/context-menu-context-menu-stories.158ccd1c.iframe.bundle.js +1 -0
- package/docs/storybook/{datepicker-datepicker-stories.786be74e.iframe.bundle.js → datepicker-datepicker-stories.ef9bfd14.iframe.bundle.js} +1 -1
- package/docs/storybook/{dialog-overflow-menu-overflow-menu-stories.cca740c8.iframe.bundle.js → dialog-overflow-menu-overflow-menu-stories.f6323fbc.iframe.bundle.js} +1 -1
- package/docs/storybook/dropdown-dropdown-stories.1ae77006.iframe.bundle.js +1 -0
- package/docs/storybook/icon-icon-stories.c5e1074f.iframe.bundle.js +1 -0
- package/docs/storybook/iframe.html +2 -2
- package/docs/storybook/index-stories.10b4ce67.iframe.bundle.js +1 -0
- package/docs/storybook/inline-loading-inline-loading-stories.c54dee33.iframe.bundle.js +1 -0
- package/docs/storybook/main.a1f99d92.iframe.bundle.js +1 -0
- package/docs/storybook/number-input-number-stories.ca6f8990.iframe.bundle.js +1 -0
- package/docs/storybook/progress-bar-progress-bar-stories.5fb7d045.iframe.bundle.js +1 -0
- package/docs/storybook/progress-indicator-progress-indicator-stories.e18e124a.iframe.bundle.js +1 -0
- package/docs/storybook/project.json +1 -1
- package/docs/storybook/radio-radio-stories.82373213.iframe.bundle.js +1 -0
- package/docs/storybook/{runtime~main.fc6e3901.iframe.bundle.js → runtime~main.a7cebcd5.iframe.bundle.js} +1 -1
- package/docs/storybook/search-search-stories.30a933b1.iframe.bundle.js +1 -0
- package/docs/storybook/structured-list-structured-list-stories.38bd94fc.iframe.bundle.js +1 -0
- package/docs/storybook/tag-tag-stories.e0c5cc20.iframe.bundle.js +1 -0
- package/docs/storybook/ui-shell-ui-shell-stories.a62b6ed8.iframe.bundle.js +1 -0
- package/esm2020/combobox/combobox.component.mjs +8 -8
- package/esm2020/icon/icon.directive.mjs +11 -7
- package/fesm2015/carbon-components-angular-combobox.mjs +7 -7
- package/fesm2015/carbon-components-angular-combobox.mjs.map +1 -1
- package/fesm2015/carbon-components-angular-icon.mjs +10 -6
- package/fesm2015/carbon-components-angular-icon.mjs.map +1 -1
- package/fesm2020/carbon-components-angular-combobox.mjs +7 -7
- package/fesm2020/carbon-components-angular-combobox.mjs.map +1 -1
- package/fesm2020/carbon-components-angular-icon.mjs +10 -6
- package/fesm2020/carbon-components-angular-icon.mjs.map +1 -1
- package/icon/icon.directive.d.ts +4 -4
- package/package.json +1 -1
- package/docs/storybook/7153.87910de3.iframe.bundle.js +0 -1
- package/docs/storybook/901.3e5cc559.iframe.bundle.js +0 -1
- package/docs/storybook/9558.8ae92105.iframe.bundle.js +0 -1
- package/docs/storybook/9672.b362859e.iframe.bundle.js +0 -1
- package/docs/storybook/accordion-accordion-stories.08425ab9.iframe.bundle.js +0 -1
- package/docs/storybook/breadcrumb-breadcrumb-stories.04b06d30.iframe.bundle.js +0 -1
- package/docs/storybook/button-button-set-stories.48e79623.iframe.bundle.js +0 -1
- package/docs/storybook/button-button-stories.c51970ae.iframe.bundle.js +0 -1
- package/docs/storybook/button-icon-button-stories.cf46404a.iframe.bundle.js +0 -1
- package/docs/storybook/combobox-combobox-stories.fdeea2f7.iframe.bundle.js +0 -1
- package/docs/storybook/context-menu-context-menu-stories.c736d850.iframe.bundle.js +0 -1
- package/docs/storybook/dropdown-dropdown-stories.f015ead1.iframe.bundle.js +0 -1
- package/docs/storybook/icon-icon-stories.954f7ef6.iframe.bundle.js +0 -1
- package/docs/storybook/index-stories.072ef954.iframe.bundle.js +0 -1
- package/docs/storybook/inline-loading-inline-loading-stories.cc1174d7.iframe.bundle.js +0 -1
- package/docs/storybook/main.fef29d4d.iframe.bundle.js +0 -1
- package/docs/storybook/number-input-number-stories.3ea609db.iframe.bundle.js +0 -1
- package/docs/storybook/progress-bar-progress-bar-stories.45d0232b.iframe.bundle.js +0 -1
- package/docs/storybook/progress-indicator-progress-indicator-stories.dcc5c5ca.iframe.bundle.js +0 -1
- package/docs/storybook/radio-radio-stories.b67e94b9.iframe.bundle.js +0 -1
- package/docs/storybook/search-search-stories.217fd7c7.iframe.bundle.js +0 -1
- package/docs/storybook/structured-list-structured-list-stories.1b25bd52.iframe.bundle.js +0 -1
- package/docs/storybook/tag-tag-stories.f5235256.iframe.bundle.js +0 -1
- package/docs/storybook/ui-shell-ui-shell-stories.a888ff58.iframe.bundle.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunkcarbon_components_angular=self.webpackChunkcarbon_components_angular||[]).push([[3867],{"./src/tag/tag.stories.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Basic:()=>Basic,Filter:()=>Filter,default:()=>__WEBPACK_DEFAULT_EXPORT__});var _storybook_angular__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@storybook/angular/dist/index.mjs"),___WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./src/tag/index.ts");const __WEBPACK_DEFAULT_EXPORT__={title:"Components/Tag",decorators:[(0,_storybook_angular__WEBPACK_IMPORTED_MODULE_0__.moduleMetadata)({imports:[___WEBPACK_IMPORTED_MODULE_1__.Wh]})],argTypes:{type:{options:["warm-gray","red","magenta","purple","blue","cyan","teal","green","cool-gray","high-contrast","outline"],defaultValue:"red",control:"select"}},component:___WEBPACK_IMPORTED_MODULE_1__.Vp},Basic=(args=>({props:args,template:'\n\t\t<cds-tag [type]="type" [size]="size">Tag</cds-tag>\n\t'})).bind({}),Filter=(args=>({props:args,template:'\n\t\t<cds-tag-filter\n\t\t\t[type]="type"\n\t\t\t[size]="size"\n\t\t\ttitle="Filter"\n\t\t\tcloseButtonLabel="Clear">\n\t\t\tfilter\n\t\t</cds-tag-filter>\n\t'})).bind({})},"./src/icon/icon.directive.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{a:()=>IconDirective});var tslib__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/tslib/tslib.es6.js"),_angular_core__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),_icon_service__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./src/icon/icon.service.ts"),_carbon_icon_helpers__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/@carbon/icon-helpers/es/index.js");let IconDirective=class IconDirective{constructor(elementRef,iconService){this.elementRef=elementRef,this.iconService=iconService,this.cdsIcon="",this.size="16",this.title="",this.ariaLabel="",this.ariaLabelledBy="",this.ariaHidden="",this.isFocusable=!1}set ibmIcon(iconName){this.cdsIcon=iconName}renderIcon(iconName){const root=this.elementRef.nativeElement;let icon;try{icon=this.iconService.get(iconName,this.size.toString())}catch(error){return void console.warn(error)}const domParser=new DOMParser,rawSVG=icon.svg,svgElement=domParser.parseFromString(rawSVG,"image/svg+xml").documentElement;let node="SVG"!==root.tagName.toUpperCase()?svgElement:svgElement.firstChild;for(root.innerHTML="";node;)root.appendChild(root.ownerDocument.importNode(node,!0)),node=node.nextSibling;const svg="SVG"!==root.tagName.toUpperCase()?svgElement:root;svg.setAttribute("xmlns","http://www.w3.org/2000/svg");const attributes=(0,_carbon_icon_helpers__WEBPACK_IMPORTED_MODULE_1__.u9)({width:icon.attrs.width,height:icon.attrs.height,viewBox:icon.attrs.viewBox,title:this.title,"aria-label":this.ariaLabel,"aria-labelledby":this.ariaLabelledBy,"aria-hidden":this.ariaHidden,focusable:this.isFocusable.toString()}),attrKeys=Object.keys(attributes);for(let i=0;i<attrKeys.length;i++){const key=attrKeys[i],value=attributes[key];"title"!==key&&(value&&svg.setAttribute(key,value))}if(attributes.title){const title=document.createElement("title");title.textContent=attributes.title,IconDirective.titleIdCounter++,title.setAttribute("id",`${icon.name}-title-${IconDirective.titleIdCounter}`),svg.insertBefore(title,svg.firstElementChild),svg.setAttribute("aria-labelledby",`${icon.name}-title-${IconDirective.titleIdCounter}`)}}ngAfterViewInit(){this.renderIcon(this.cdsIcon)}ngOnChanges({cdsIcon}){cdsIcon.isFirstChange()||this.renderIcon(this.cdsIcon)}};IconDirective.titleIdCounter=0,IconDirective.ctorParameters=()=>[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.ElementRef},{type:_icon_service__WEBPACK_IMPORTED_MODULE_0__.C6}],IconDirective.propDecorators={ibmIcon:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],cdsIcon:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],size:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],title:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],ariaLabel:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],ariaLabelledBy:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],ariaHidden:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],isFocusable:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}]},IconDirective=(0,tslib__WEBPACK_IMPORTED_MODULE_3__.gn)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.Directive)({selector:"[cdsIcon], [ibmIcon]"})],IconDirective)},"./src/icon/icon.module.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{QX:()=>IconModule});var tslib__WEBPACK_IMPORTED_MODULE_53__=__webpack_require__("./node_modules/tslib/tslib.es6.js"),_angular_core__WEBPACK_IMPORTED_MODULE_52__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),_angular_common__WEBPACK_IMPORTED_MODULE_54__=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs"),_icon_directive__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./src/icon/icon.directive.ts"),_icon_service__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./src/icon/icon.service.ts"),_carbon_icons_es_add_16__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/@carbon/icons/es/add/16.js"),_carbon_icons_es_add_20__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@carbon/icons/es/add/20.js"),_carbon_icons_es_bee_16__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@carbon/icons/es/bee/16.js"),_carbon_icons_es_bee_20__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@carbon/icons/es/bee/20.js"),_carbon_icons_es_calendar_16__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./node_modules/@carbon/icons/es/calendar/16.js"),_carbon_icons_es_carbon_16__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__("./node_modules/@carbon/icons/es/carbon/16.js"),_carbon_icons_es_carbon_20__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__("./node_modules/@carbon/icons/es/carbon/20.js"),_carbon_icons_es_caret_down_16__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__("./node_modules/@carbon/icons/es/caret--down/16.js"),_carbon_icons_es_caret_left_16__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__("./node_modules/@carbon/icons/es/caret--left/16.js"),_carbon_icons_es_caret_right_16__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__("./node_modules/@carbon/icons/es/caret--right/16.js"),_carbon_icons_es_caret_up_16__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__("./node_modules/@carbon/icons/es/caret--up/16.js"),_carbon_icons_es_checkmark_16__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__("./node_modules/@carbon/icons/es/checkmark/16.js"),_carbon_icons_es_checkmark_filled_16__WEBPACK_IMPORTED_MODULE_14__=__webpack_require__("./node_modules/@carbon/icons/es/checkmark--filled/16.js"),_carbon_icons_es_checkmark_filled_20__WEBPACK_IMPORTED_MODULE_15__=__webpack_require__("./node_modules/@carbon/icons/es/checkmark--filled/20.js"),_carbon_icons_es_checkmark_outline_16__WEBPACK_IMPORTED_MODULE_16__=__webpack_require__("./node_modules/@carbon/icons/es/checkmark--outline/16.js"),_carbon_icons_es_chevron_down_16__WEBPACK_IMPORTED_MODULE_17__=__webpack_require__("./node_modules/@carbon/icons/es/chevron--down/16.js"),_carbon_icons_es_chevron_right_16__WEBPACK_IMPORTED_MODULE_18__=__webpack_require__("./node_modules/@carbon/icons/es/chevron--right/16.js"),_carbon_icons_es_circle_dash_16__WEBPACK_IMPORTED_MODULE_19__=__webpack_require__("./node_modules/@carbon/icons/es/circle-dash/16.js"),_carbon_icons_es_close_16__WEBPACK_IMPORTED_MODULE_20__=__webpack_require__("./node_modules/@carbon/icons/es/close/16.js"),_carbon_icons_es_close_20__WEBPACK_IMPORTED_MODULE_21__=__webpack_require__("./node_modules/@carbon/icons/es/close/20.js"),_carbon_icons_es_copy_16__WEBPACK_IMPORTED_MODULE_22__=__webpack_require__("./node_modules/@carbon/icons/es/copy/16.js"),_carbon_icons_es_copy_20__WEBPACK_IMPORTED_MODULE_23__=__webpack_require__("./node_modules/@carbon/icons/es/copy/20.js"),_carbon_icons_es_data_2_16__WEBPACK_IMPORTED_MODULE_24__=__webpack_require__("./node_modules/@carbon/icons/es/data--2/16.js"),_carbon_icons_es_data_2_20__WEBPACK_IMPORTED_MODULE_25__=__webpack_require__("./node_modules/@carbon/icons/es/data--2/20.js"),_carbon_icons_es_document_16__WEBPACK_IMPORTED_MODULE_26__=__webpack_require__("./node_modules/@carbon/icons/es/document/16.js"),_carbon_icons_es_document_20__WEBPACK_IMPORTED_MODULE_27__=__webpack_require__("./node_modules/@carbon/icons/es/document/20.js"),_carbon_icons_es_download_16__WEBPACK_IMPORTED_MODULE_28__=__webpack_require__("./node_modules/@carbon/icons/es/download/16.js"),_carbon_icons_es_error_filled_16__WEBPACK_IMPORTED_MODULE_29__=__webpack_require__("./node_modules/@carbon/icons/es/error--filled/16.js"),_carbon_icons_es_error_filled_20__WEBPACK_IMPORTED_MODULE_30__=__webpack_require__("./node_modules/@carbon/icons/es/error--filled/20.js"),_carbon_icons_es_fade_16__WEBPACK_IMPORTED_MODULE_31__=__webpack_require__("./node_modules/@carbon/icons/es/fade/16.js"),_carbon_icons_es_fade_20__WEBPACK_IMPORTED_MODULE_32__=__webpack_require__("./node_modules/@carbon/icons/es/fade/20.js"),_carbon_icons_es_incomplete_16__WEBPACK_IMPORTED_MODULE_33__=__webpack_require__("./node_modules/@carbon/icons/es/incomplete/16.js"),_carbon_icons_es_information_filled_16__WEBPACK_IMPORTED_MODULE_34__=__webpack_require__("./node_modules/@carbon/icons/es/information--filled/16.js"),_carbon_icons_es_information_filled_20__WEBPACK_IMPORTED_MODULE_35__=__webpack_require__("./node_modules/@carbon/icons/es/information--filled/20.js"),_carbon_icons_es_information_square_filled_20__WEBPACK_IMPORTED_MODULE_36__=__webpack_require__("./node_modules/@carbon/icons/es/information--square--filled/20.js"),_carbon_icons_es_menu_16__WEBPACK_IMPORTED_MODULE_37__=__webpack_require__("./node_modules/@carbon/icons/es/menu/16.js"),_carbon_icons_es_menu_20__WEBPACK_IMPORTED_MODULE_38__=__webpack_require__("./node_modules/@carbon/icons/es/menu/20.js"),_carbon_icons_es_overflow_menu_vertical_16__WEBPACK_IMPORTED_MODULE_39__=__webpack_require__("./node_modules/@carbon/icons/es/overflow-menu--vertical/16.js"),_carbon_icons_es_overflow_menu_horizontal_16__WEBPACK_IMPORTED_MODULE_40__=__webpack_require__("./node_modules/@carbon/icons/es/overflow-menu--horizontal/16.js"),_carbon_icons_es_save_16__WEBPACK_IMPORTED_MODULE_41__=__webpack_require__("./node_modules/@carbon/icons/es/save/16.js"),_carbon_icons_es_search_16__WEBPACK_IMPORTED_MODULE_42__=__webpack_require__("./node_modules/@carbon/icons/es/search/16.js"),_carbon_icons_es_settings_16__WEBPACK_IMPORTED_MODULE_43__=__webpack_require__("./node_modules/@carbon/icons/es/settings/16.js"),_carbon_icons_es_settings_adjust_16__WEBPACK_IMPORTED_MODULE_44__=__webpack_require__("./node_modules/@carbon/icons/es/settings--adjust/16.js"),_carbon_icons_es_subtract_16__WEBPACK_IMPORTED_MODULE_45__=__webpack_require__("./node_modules/@carbon/icons/es/subtract/16.js"),_carbon_icons_es_trash_can_16__WEBPACK_IMPORTED_MODULE_46__=__webpack_require__("./node_modules/@carbon/icons/es/trash-can/16.js"),_carbon_icons_es_warning_16__WEBPACK_IMPORTED_MODULE_47__=__webpack_require__("./node_modules/@carbon/icons/es/warning/16.js"),_carbon_icons_es_warning_filled_16__WEBPACK_IMPORTED_MODULE_48__=__webpack_require__("./node_modules/@carbon/icons/es/warning--filled/16.js"),_carbon_icons_es_warning_filled_20__WEBPACK_IMPORTED_MODULE_49__=__webpack_require__("./node_modules/@carbon/icons/es/warning--filled/20.js"),_carbon_icons_es_warning_alt_filled_16__WEBPACK_IMPORTED_MODULE_50__=__webpack_require__("./node_modules/@carbon/icons/es/warning--alt--filled/16.js"),_carbon_icons_es_warning_alt_filled_20__WEBPACK_IMPORTED_MODULE_51__=__webpack_require__("./node_modules/@carbon/icons/es/warning--alt--filled/20.js");const ICON_SERVICE_PROVIDER={provide:_icon_service__WEBPACK_IMPORTED_MODULE_1__.C6,deps:[[new _angular_core__WEBPACK_IMPORTED_MODULE_52__.Optional,new _angular_core__WEBPACK_IMPORTED_MODULE_52__.SkipSelf,_icon_service__WEBPACK_IMPORTED_MODULE_1__.C6]],useFactory:function ICON_SERVICE_PROVIDER_FACTORY(parentService){return parentService||new _icon_service__WEBPACK_IMPORTED_MODULE_1__.C6}};let IconModule=class IconModule{constructor(iconService){this.iconService=iconService,iconService.registerAll([_carbon_icons_es_add_16__WEBPACK_IMPORTED_MODULE_2__.Z,_carbon_icons_es_add_20__WEBPACK_IMPORTED_MODULE_3__.Z,_carbon_icons_es_bee_16__WEBPACK_IMPORTED_MODULE_4__.Z,_carbon_icons_es_bee_20__WEBPACK_IMPORTED_MODULE_5__.Z,_carbon_icons_es_calendar_16__WEBPACK_IMPORTED_MODULE_6__.Z,_carbon_icons_es_carbon_16__WEBPACK_IMPORTED_MODULE_7__.Z,_carbon_icons_es_carbon_20__WEBPACK_IMPORTED_MODULE_8__.Z,_carbon_icons_es_caret_down_16__WEBPACK_IMPORTED_MODULE_9__.Z,_carbon_icons_es_caret_left_16__WEBPACK_IMPORTED_MODULE_10__.Z,_carbon_icons_es_caret_right_16__WEBPACK_IMPORTED_MODULE_11__.Z,_carbon_icons_es_caret_up_16__WEBPACK_IMPORTED_MODULE_12__.Z,_carbon_icons_es_checkmark_16__WEBPACK_IMPORTED_MODULE_13__.Z,_carbon_icons_es_checkmark_filled_16__WEBPACK_IMPORTED_MODULE_14__.Z,_carbon_icons_es_checkmark_filled_20__WEBPACK_IMPORTED_MODULE_15__.Z,_carbon_icons_es_checkmark_outline_16__WEBPACK_IMPORTED_MODULE_16__.Z,_carbon_icons_es_chevron_down_16__WEBPACK_IMPORTED_MODULE_17__.Z,_carbon_icons_es_chevron_right_16__WEBPACK_IMPORTED_MODULE_18__.Z,_carbon_icons_es_circle_dash_16__WEBPACK_IMPORTED_MODULE_19__.Z,_carbon_icons_es_close_16__WEBPACK_IMPORTED_MODULE_20__.Z,_carbon_icons_es_close_20__WEBPACK_IMPORTED_MODULE_21__.Z,_carbon_icons_es_copy_16__WEBPACK_IMPORTED_MODULE_22__.Z,_carbon_icons_es_copy_20__WEBPACK_IMPORTED_MODULE_23__.Z,_carbon_icons_es_data_2_16__WEBPACK_IMPORTED_MODULE_24__.Z,_carbon_icons_es_data_2_20__WEBPACK_IMPORTED_MODULE_25__.Z,_carbon_icons_es_document_16__WEBPACK_IMPORTED_MODULE_26__.Z,_carbon_icons_es_document_20__WEBPACK_IMPORTED_MODULE_27__.Z,_carbon_icons_es_download_16__WEBPACK_IMPORTED_MODULE_28__.Z,_carbon_icons_es_error_filled_16__WEBPACK_IMPORTED_MODULE_29__.Z,_carbon_icons_es_error_filled_20__WEBPACK_IMPORTED_MODULE_30__.Z,_carbon_icons_es_fade_16__WEBPACK_IMPORTED_MODULE_31__.Z,_carbon_icons_es_fade_20__WEBPACK_IMPORTED_MODULE_32__.Z,_carbon_icons_es_incomplete_16__WEBPACK_IMPORTED_MODULE_33__.Z,_carbon_icons_es_information_filled_16__WEBPACK_IMPORTED_MODULE_34__.Z,_carbon_icons_es_information_filled_20__WEBPACK_IMPORTED_MODULE_35__.Z,_carbon_icons_es_information_square_filled_20__WEBPACK_IMPORTED_MODULE_36__.Z,_carbon_icons_es_menu_16__WEBPACK_IMPORTED_MODULE_37__.Z,_carbon_icons_es_menu_20__WEBPACK_IMPORTED_MODULE_38__.Z,_carbon_icons_es_overflow_menu_vertical_16__WEBPACK_IMPORTED_MODULE_39__.Z,_carbon_icons_es_overflow_menu_horizontal_16__WEBPACK_IMPORTED_MODULE_40__.Z,_carbon_icons_es_save_16__WEBPACK_IMPORTED_MODULE_41__.Z,_carbon_icons_es_search_16__WEBPACK_IMPORTED_MODULE_42__.Z,_carbon_icons_es_settings_16__WEBPACK_IMPORTED_MODULE_43__.Z,_carbon_icons_es_settings_adjust_16__WEBPACK_IMPORTED_MODULE_44__.Z,_carbon_icons_es_subtract_16__WEBPACK_IMPORTED_MODULE_45__.Z,_carbon_icons_es_trash_can_16__WEBPACK_IMPORTED_MODULE_46__.Z,_carbon_icons_es_warning_16__WEBPACK_IMPORTED_MODULE_47__.Z,_carbon_icons_es_warning_filled_16__WEBPACK_IMPORTED_MODULE_48__.Z,_carbon_icons_es_warning_filled_20__WEBPACK_IMPORTED_MODULE_49__.Z,_carbon_icons_es_warning_alt_filled_16__WEBPACK_IMPORTED_MODULE_50__.Z,_carbon_icons_es_warning_alt_filled_20__WEBPACK_IMPORTED_MODULE_51__.Z])}};IconModule.ctorParameters=()=>[{type:_icon_service__WEBPACK_IMPORTED_MODULE_1__.C6}],IconModule=(0,tslib__WEBPACK_IMPORTED_MODULE_53__.gn)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_52__.NgModule)({declarations:[_icon_directive__WEBPACK_IMPORTED_MODULE_0__.a],exports:[_icon_directive__WEBPACK_IMPORTED_MODULE_0__.a],imports:[_angular_common__WEBPACK_IMPORTED_MODULE_54__.CommonModule],providers:[ICON_SERVICE_PROVIDER]})],IconModule)},"./src/icon/icon.service.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{C6:()=>IconService});var tslib__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/tslib/tslib.es6.js"),_angular_core__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),_carbon_icon_helpers__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@carbon/icon-helpers/es/index.js");class IconNameNotFoundError extends Error{constructor(name){super(`Icon ${name} not found`)}}class IconSizeNotFoundError extends Error{constructor(size,name){super("Size ${size} for ${name} not found")}}class IconMemoryCache extends class IconCache{}{constructor(){super(...arguments),this.iconMap=new Map}get(name,size){if(!this.iconMap.has(name))throw new IconNameNotFoundError(name);const sizeMap=this.iconMap.get(name);if(!sizeMap.has(size))throw new IconSizeNotFoundError(size,name);return sizeMap.get(size)}set(name,size,descriptor){this.iconMap.has(name)||this.iconMap.set(name,new Map);this.iconMap.get(name).set(size,descriptor)}}let IconService=class IconService{constructor(){this.iconCache=new IconMemoryCache}registerAll(descriptors){descriptors.forEach((icon=>this.register(icon)))}register(descriptor){const{name}=descriptor;this.registerAs(name,descriptor)}registerAs(name,descriptor){const{size}=descriptor;this.iconCache.set(name,size.toString(),descriptor)}get(name,size){try{const icon=this.iconCache.get(name,size.toString());return icon.svg||(icon.svg=(0,_carbon_icon_helpers__WEBPACK_IMPORTED_MODULE_0__.BB)(icon)),icon}catch(e){throw e}}configure(options){this.iconCache=options.cache}};IconService=(0,tslib__WEBPACK_IMPORTED_MODULE_1__.gn)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.Injectable)()],IconService)},"./src/icon/index.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{ar:()=>icon_directive.a,QX:()=>icon_module.QX,C6:()=>icon_service.C6});var icon_directive=__webpack_require__("./src/icon/icon.directive.ts"),icon_module=__webpack_require__("./src/icon/icon.module.ts"),icon_service=__webpack_require__("./src/icon/icon.service.ts")},"./src/tag/index.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{Vp:()=>Tag,Wh:()=>TagModule});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs");let Tag=class Tag{constructor(){this.type="gray",this.size="md",this.class=""}get attrClass(){return`cds--tag cds--tag--${this.type} cds--tag--${this.size} ${this.class}`}};Tag.propDecorators={type:[{type:core.Input}],size:[{type:core.Input}],class:[{type:core.Input}],attrClass:[{type:core.HostBinding,args:["attr.class"]}]},Tag=(0,tslib_es6.gn)([(0,core.Component)({selector:"cds-tag, ibm-tag",template:"<ng-content></ng-content>"})],Tag);let TagFilter=class TagFilter extends Tag{constructor(){super(...arguments),this.closeButtonLabel="Clear Filter",this.close=new core.EventEmitter,this.click=new core.EventEmitter}onClick(event){event.stopImmediatePropagation(),this.disabled||this.click.emit({action:"click"})}onClose(event){event.stopImmediatePropagation(),this.click.emit({action:"close"}),this.close.emit()}get attrClass(){return`cds--tag cds--tag--filter cds--tag--${this.type} cds--tag--${this.size} ${this.class}${this.disabled?" cds--tag--disabled":""}`}get attrAriaLabel(){return`${this.title||""} ${this.closeButtonLabel}`.trim()}};TagFilter.propDecorators={closeButtonLabel:[{type:core.Input}],disabled:[{type:core.Input}],title:[{type:core.Input}],close:[{type:core.Output}],click:[{type:core.Output}],attrClass:[{type:core.HostBinding,args:["attr.class"]}],attrAriaLabel:[{type:core.HostBinding,args:["attr.aria-label"]}]},TagFilter=(0,tslib_es6.gn)([(0,core.Component)({selector:"cds-tag-filter, ibm-tag-filter",template:'\n\t\t<span\n\t\t\tclass="cds--tag__label"\n\t\t\t[attr.title]="title ? title : null"\n\t\t\t(click)="onClick($event)">\n\t\t\t<ng-content></ng-content>\n\t\t</span>\n\t\t<button\n\t\t\tclass="cds--tag__close-icon"\n\t\t\t(click)="onClose($event)"\n\t\t\t[disabled]="disabled"\n\t\t\t[title]="closeButtonLabel">\n\t\t\t<span class="cds--visually-hidden">{{closeButtonLabel}}</span>\n\t\t\t<svg cdsIcon="close" size="16"></svg>\n\t\t</button>\n\t'})],TagFilter);var common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs"),icon=__webpack_require__("./src/icon/index.ts");let TagModule=class TagModule{};TagModule=(0,tslib_es6.gn)([(0,core.NgModule)({declarations:[Tag,TagFilter],exports:[Tag,TagFilter],imports:[common.CommonModule,icon.QX]})],TagModule)}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunkcarbon_components_angular=self.webpackChunkcarbon_components_angular||[]).push([[9660],{"./src/ui-shell/ui-shell.stories.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{AngularRouting:()=>AngularRouting,Header:()=>Header,HeaderFluid:()=>HeaderFluid,HeaderWithRouter:()=>HeaderWithRouter,HeaderWithTemp:()=>HeaderWithTemp,SideNavigation:()=>SideNavigation,SideNavigationRail:()=>SideNavigationRail,SideNavigationRouter:()=>SideNavigationRouter,SidePanel:()=>SidePanel,Together:()=>Together,WithModel:()=>WithModel,default:()=>ui_shell_stories});var router=__webpack_require__("./node_modules/@angular/router/fesm2020/router.mjs"),dist=__webpack_require__("./node_modules/@storybook/angular/dist/index.mjs"),search=__webpack_require__("./src/search/index.ts"),icon=__webpack_require__("./src/icon/index.ts"),theme=__webpack_require__("./src/theme/index.ts"),ui_shell=__webpack_require__("./src/ui-shell/index.ts"),tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs");let BarComponent=class BarComponent{};BarComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"app-bar",template:"<h1>bar</h1>"})],BarComponent);let FooComponent=class FooComponent{};FooComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"app-foo",template:"<h1>foo</h1>"})],FooComponent);let HeaderFluidComponent=class HeaderFluidComponent{constructor(){this.hasHamburger=!1}};HeaderFluidComponent.propDecorators={headerItems:[{type:core.Input}]},HeaderFluidComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"app-header-fluid",template:'\n\t\t<cds-header name="[Platform]">\n\t\t\t<cds-hamburger\n\t\t\t\t(selected)="hasHamburger = !hasHamburger"\n\t\t\t\tclass="cds--header__menu-toggle__hidden"></cds-hamburger>\n\t\t\t<cds-header-navigation [navigationItems]="headerItems"></cds-header-navigation>\n\t\t\t<cds-sidenav\n\t\t\t\t*ngIf="hasHamburger"\n\t\t\t\t[navigationItems]="headerItems"\n\t\t\t\tclass="cds--header__menu-toggle__hidden"></cds-sidenav>\n\t\t</cds-header>\n\t'})],HeaderFluidComponent);const ui_shell_stories={title:"Components/UI Shell",decorators:[(0,dist.moduleMetadata)({declarations:[BarComponent,FooComponent,HeaderFluidComponent],imports:[theme.O,ui_shell.p5,icon.QX,search.t,router.Bz.forChild([{path:"bar",component:BarComponent},{path:"foo",component:FooComponent}])]})],args:{theme:"white"},argTypes:{theme:{options:["white","g10","g90","g100"],control:"radio"}}},Header=(args=>({props:args,template:'\n\t\t<div [cdsTheme]="theme">\n\t\t\t<cds-header name="[Platform]">\n\t\t\t\t<cds-hamburger *ngIf="hasHamburger" (click)="expanded($event)"></cds-hamburger>\n\t\t\t\t<cds-header-navigation>\n\t\t\t\t\t<cds-header-item>Catalog</cds-header-item>\n\t\t\t\t\t<cds-header-item isCurrentPage="true">Docs</cds-header-item>\n\t\t\t\t\t<cds-header-item>Support</cds-header-item>\n\t\t\t\t\t<cds-header-menu title="Manage">\n\t\t\t\t\t\t<cds-header-item>Link 1</cds-header-item>\n\t\t\t\t\t\t<cds-header-item>Link 2</cds-header-item>\n\t\t\t\t\t\t<cds-header-item>Link 3</cds-header-item>\n\t\t\t\t\t</cds-header-menu>\n\t\t\t\t</cds-header-navigation>\n\t\t\t\t<cds-header-global>\n\t\t\t\t\t<cds-header-action description="action">\n\t\t\t\t\t\t<svg cdsIcon="fade" size="20"></svg>\n\t\t\t\t\t</cds-header-action>\n\t\t\t\t\t<cds-header-action description="action">\n\t\t\t\t\t\t<svg cdsIcon="fade" size="20"></svg>\n\t\t\t\t\t</cds-header-action>\n\t\t\t\t</cds-header-global>\n\t\t\t</cds-header>\n\t\t</div>\n\t'})).bind({});Header.args={hasHamburger:!0},Header.argTypes={expanded:{action:"Menu clicked!"}};const HeaderFluid=(args=>({props:args,template:'\n\t\t\x3c!--\n\t\tapp-* components are for demo purposes only.\n\t\tYou can create your own implementation by using the component source found at:\n\t\thttps://github.com/IBM/carbon-components-angular/tree/master/src/ui-shell/stories/header-fluid.component.ts\n\t\t--\x3e\n\t\t<app-header-fluid [headerItems]="headerItems"></app-header-fluid>\n\t'})).bind({});HeaderFluid.storyName="Header fluid items to side navigation",HeaderFluid.args={headerItems:[{type:"item",content:"Catalog",title:"Catalog"},{type:"item",content:"Docs",isCurrentPage:!0},{type:"item",content:"Support"},{type:"menu",title:"Manage",menuItems:[{type:"item",content:"Link 1"},{type:"item",content:"Link 2"},{type:"item",content:"Link 3"}]}]},HeaderFluid.argTypes={headerItems:{control:!1},theme:{control:!1}};const HeaderWithTemp=(args=>({props:args,template:'\n\t\t<div [cdsTheme]="theme">\n\t\t\t<cds-header name="[Platform]" [brand]="brandTemplate">\n\t\t\t\t<cds-hamburger *ngIf="hasHamburger" (click)="expanded($event)"></cds-hamburger>\n\t\t\t\t<cds-header-navigation>\n\t\t\t\t\t<cds-header-item>Catalog</cds-header-item>\n\t\t\t\t\t<cds-header-item>Docs</cds-header-item>\n\t\t\t\t\t<cds-header-item>Support</cds-header-item>\n\t\t\t\t\t<cds-header-menu title="Manage">\n\t\t\t\t\t\t<cds-header-item>Link 1</cds-header-item>\n\t\t\t\t\t\t<cds-header-item>Link 2</cds-header-item>\n\t\t\t\t\t\t<cds-header-item>Link 3</cds-header-item>\n\t\t\t\t\t</cds-header-menu>\n\t\t\t\t</cds-header-navigation>\n\t\t\t\t<cds-header-global>\n\t\t\t\t\t<cds-header-action description="action">\n\t\t\t\t\t\t<svg cdsIcon="fade" size="20"></svg>\n\t\t\t\t\t</cds-header-action>\n\t\t\t\t\t<cds-header-action description="action">\n\t\t\t\t\t\t<svg cdsIcon="fade" size="20"></svg>\n\t\t\t\t\t</cds-header-action>\n\t\t\t\t</cds-header-global>\n\t\t\t</cds-header>\n\t\t</div>\n\t\t<ng-template #brandTemplate>\n\t\t\t<a class="cds--header__name">\n\t\t\t\t<svg cdsIcon="carbon" size="32" style="stroke:white;fill:white"></svg>\n\t\t\t\t<span class="cds--header__name--prefix">IBM</span>\n\t\t\t\t[Platform]\n\t\t\t</a>\n\t\t</ng-template>\n\t'})).bind({});HeaderWithTemp.storyName="Header with template",Header.args={hasHamburger:!0},Header.argTypes={expanded:{action:"Menu clicked!"}};const HeaderWithRouter=(args=>({props:args,template:'\n\t\t<div [cdsTheme]="theme">\n\t\t\t<cds-header name="[Platform]" [route]="[\'bar\']">\n\t\t\t\t<cds-header-navigation>\n\t\t\t\t\t<cds-header-item [route]="[\'foo\']">Catalog</cds-header-item>\n\t\t\t\t\t<cds-header-item [route]="[\'bar\']">Docs</cds-header-item>\n\t\t\t\t\t<cds-header-item [route]="[\'foo\']">Support</cds-header-item>\n\t\t\t\t\t<cds-header-menu title="Manage">\n\t\t\t\t\t\t<cds-header-item [route]="[\'foo\']">Link 1</cds-header-item>\n\t\t\t\t\t\t<cds-header-item [route]="[\'bar\']">Link 2</cds-header-item>\n\t\t\t\t\t\t<cds-header-item [route]="[\'foo\']">Link 3</cds-header-item>\n\t\t\t\t\t</cds-header-menu>\n\t\t\t\t</cds-header-navigation>\n\t\t\t</cds-header>\n\t\t</div>\n\t\t<div style="margin-top: 2rem">\n\t\t\t<router-outlet></router-outlet>\n\t\t</div>\n\t'})).bind({});Header.argTypes={expanded:{action:"Menu clicked!"}};const SideNavigation=(args=>({props:args,template:'\n\t\t<div [cdsTheme]="theme">\n\t\t\t<cds-sidenav>\n\t\t\t\t<cds-sidenav-item [active]="true">\n\t\t\t\t\tLink\n\t\t\t\t</cds-sidenav-item>\n\t\t\t\t<cds-sidenav-item>\n\t\t\t\t\t<svg cdsIcon="fade" size="16"></svg>\n\t\t\t\t\tLink\n\t\t\t\t</cds-sidenav-item>\n\t\t\t\t<cds-sidenav-menu title="Category title">\n\t\t\t\t\t<svg cdsIcon="fade" icon size="16"></svg>\n\t\t\t\t\t<cds-sidenav-item>Link</cds-sidenav-item>\n\t\t\t\t\t<cds-sidenav-item>Link</cds-sidenav-item>\n\t\t\t\t\t<cds-sidenav-item>Link</cds-sidenav-item>\n\t\t\t\t</cds-sidenav-menu>\n\t\t\t</cds-sidenav>\n\t\t</div>\n\t'})).bind({});SideNavigation.args={options:[{content:"Option 1",value:1},{content:"Option 2",value:2},{content:"Option 3",value:3}]},SideNavigation.argTypes={options:{control:!1}};const SideNavigationRouter=(args=>({props:args,template:'\n\t\t<div [cdsTheme]="theme">\n\t\t\t<cds-sidenav>\n\t\t\t\t<cds-sidenav-item [route]="[\'foo\']">\n\t\t\t\t\t<svg cdsIcon="fade" size="16"></svg>\n\t\t\t\t\tLink\n\t\t\t\t</cds-sidenav-item>\n\t\t\t\t<cds-sidenav-item [route]="[\'bar\']">\n\t\t\t\t\t<svg cdsIcon="fade" size="16"></svg>\n\t\t\t\t\tLink\n\t\t\t\t</cds-sidenav-item>\n\t\t\t\t<cds-sidenav-menu title="Category title">\n\t\t\t\t\t<svg cdsIcon="fade" icon size="16"></svg>\n\t\t\t\t\t<cds-sidenav-item [route]="[\'foo\']">Link</cds-sidenav-item>\n\t\t\t\t\t<cds-sidenav-item [route]="[\'bar\']">Link</cds-sidenav-item>\n\t\t\t\t\t<cds-sidenav-item [route]="[\'foo\']">Link</cds-sidenav-item>\n\t\t\t\t</cds-sidenav-menu>\n\t\t\t</cds-sidenav>\n\t\t</div>\n\t\t<div>\n\t\t\t<router-outlet></router-outlet>\n\t\t</div>\n\t'})).bind({});SideNavigationRouter.storyName="Side Navigation with router";const SidePanel=(args=>({props:args,template:'\n\t\t<div [cdsTheme]="theme">\n\t\t\t<cds-panel expanded="true">\n\t\t\t\t<cds-switcher-list>\n\t\t\t\t\t<cds-switcher-list-item [route]="[\'foo\']">Switcher item one</cds-switcher-list-item>\n\t\t\t\t\t<cds-switcher-list-item [route]="[\'bar\']">Switcher item two</cds-switcher-list-item>\n\t\t\t\t\t<cds-switcher-list-item [route]="[\'foo\']">Switcher item three</cds-switcher-list-item>\n\t\t\t\t\t<cds-switcher-list-item [route]="[\'bar\']">Switcher item four</cds-switcher-list-item>\n\t\t\t\t</cds-switcher-list>\n\t\t\t</cds-panel>\n\t\t</div>\n\t\t<div>\n\t\t\t<router-outlet></router-outlet>\n\t\t</div>\n\t'})).bind({});SidePanel.storyName="Side Panel with router";const Together=(args=>({props:args,template:'\n\t\t<div>\n\t\t\t<cds-header name="[Platform]">\n\t\t\t\t<cds-hamburger *ngIf="hasHamburger" [active]="active" (selected)="active = !active"></cds-hamburger>\n\t\t\t\t<cds-header-navigation>\n\t\t\t\t\t<cds-header-item>Catalog</cds-header-item>\n\t\t\t\t\t<cds-header-item>Docs</cds-header-item>\n\t\t\t\t\t<cds-header-item>Support</cds-header-item>\n\t\t\t\t\t<cds-header-menu title="Manage">\n\t\t\t\t\t\t<cds-header-item>Link 1</cds-header-item>\n\t\t\t\t\t\t<cds-header-item>Link 2</cds-header-item>\n\t\t\t\t\t\t<cds-header-item>Link 3</cds-header-item>\n\t\t\t\t\t</cds-header-menu>\n\t\t\t\t</cds-header-navigation>\n\t\t\t\t<cds-header-global>\n\t\t\t\t\t<cds-header-action #firstAction description="action">\n\t\t\t\t\t\t<svg cdsIcon="fade" size="20"></svg>\n\t\t\t\t\t</cds-header-action>\n\t\t\t\t\t<cds-header-action [(active)]="secondAction" description="action">\n\t\t\t\t\t\t<svg cdsIcon="fade" size="20"></svg>\n\t\t\t\t\t</cds-header-action>\n\t\t\t\t</cds-header-global>\n\t\t\t</cds-header>\n\t\t\t<cds-sidenav [expanded]="active">\n\t\t\t\t<cds-sidenav-item>\n\t\t\t\t\t<svg cdsIcon="fade" size="16"></svg>\n\t\t\t\t\tLink\n\t\t\t\t</cds-sidenav-item>\n\t\t\t\t<cds-sidenav-item>\n\t\t\t\t\t<svg cdsIcon="fade" size="16"></svg>\n\t\t\t\t\tLink\n\t\t\t\t</cds-sidenav-item>\n\t\t\t\t<cds-sidenav-menu title="Category title">\n\t\t\t\t\t<svg cdsIcon="fade" size="16"></svg>\n\t\t\t\t\t<cds-sidenav-item>Link</cds-sidenav-item>\n\t\t\t\t\t<cds-sidenav-item [active]="hasActiveChild">Link</cds-sidenav-item>\n\t\t\t\t\t<cds-sidenav-item>Link</cds-sidenav-item>\n\t\t\t\t</cds-sidenav-menu>\n\t\t\t</cds-sidenav>\n\t\t\t<cds-panel [expanded]="firstAction.active"></cds-panel>\n\t\t\t<cds-panel [expanded]="secondAction">\n\t\t\t\t<cds-switcher-list>\n\t\t\t\t\t<cds-switcher-list-item active="true">Switcher item one</cds-switcher-list-item>\n\t\t\t\t\t<cds-switcher-list-item>Switcher item two</cds-switcher-list-item>\n\t\t\t\t\t<cds-switcher-list-item>Switcher item three</cds-switcher-list-item>\n\t\t\t\t\t<cds-switcher-list-item>Switcher item four</cds-switcher-list-item>\n\t\t\t\t</cds-switcher-list>\n\t\t\t</cds-panel>\n\t\t</div>\n\t'})).bind({});Together.args={hasHamburger:!0,active:!0,secondAction:!1,hasActiveChild:!0,options:[{content:"Option 1",value:1},{content:"Option 2",value:2},{content:"Option 3",value:3}]},Together.argTypes={options:{control:!1}};const SideNavigationRail=(args=>({props:args,template:'\n\t\t<div [cdsTheme]="theme">\n\t\t\t<cds-sidenav rail="true" [expanded]="false">\n\t\t\t\t<cds-sidenav-item>\n\t\t\t\t\t<svg cdsIcon="fade" size="16"></svg>\n\t\t\t\t\tLink\n\t\t\t\t</cds-sidenav-item>\n\t\t\t\t<cds-sidenav-item>\n\t\t\t\t\t<svg cdsIcon="fade" size="16"></svg>\n\t\t\t\t\tLink\n\t\t\t\t</cds-sidenav-item>\n\t\t\t\t<cds-sidenav-menu title="Category title">\n\t\t\t\t\t<svg cdsIcon="fade" icon size="16"></svg>\n\t\t\t\t\t<cds-sidenav-item>Link</cds-sidenav-item>\n\t\t\t\t\t<cds-sidenav-item>Link</cds-sidenav-item>\n\t\t\t\t\t<cds-sidenav-item>Link</cds-sidenav-item>\n\t\t\t\t</cds-sidenav-menu>\n\t\t\t</cds-sidenav>\n\t\t</div>\n\t'})).bind({});SideNavigationRail.args={options:[{content:"Option 1",value:1},{content:"Option 2",value:2},{content:"Option 3",value:3}]},SideNavigationRail.argTypes={options:{control:!1}};const WithModel=(args=>({props:args,template:'\n\t\t<div [cdsTheme]="theme">\n\t\t\t<cds-header name="[Platform]">\n\t\t\t\t<cds-hamburger *ngIf="hasHamburger" [active]="active" (selected)="active = !active"></cds-hamburger>\n\t\t\t\t<cds-header-navigation [navigationItems]="headerItems">\n\t\t\t\t</cds-header-navigation>\n\t\t\t\t<cds-header-global>\n\t\t\t\t\t<cds-header-action #firstAction description="action">\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\twidth="20"\n\t\t\t\t\t\t\theight="20"\n\t\t\t\t\t\t\txmlns="http://www.w3.org/2000/svg"\n\t\t\t\t\t\t\tviewBox="0 0 32 32"\n\t\t\t\t\t\t\taria-hidden="true">\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td="M8.24 25.14L7 26.67a14 14 0 0 0 4.18 2.44l.68-1.88a12\n\t\t\t\t\t\t\t\t12 0 0 1-3.62-2.09zm-4.05-7.07l-2 .35A13.89 13.89 0 0 0 3.86\n\t\t\t\t\t\t\t\t23l1.73-1a11.9 11.9 0 0 1-1.4-3.93zm7.63-13.31l-.68-1.88A14\n\t\t\t\t\t\t\t\t14 0 0 0 7 5.33l1.24 1.53a12 12 0 0 1 3.58-2.1zM5.59\n\t\t\t\t\t\t\t\t10L3.86 9a13.89 13.89 0 0 0-1.64 4.54l2 .35A11.9 11.9 0 0 1 5.59\n\t\t\t\t\t\t\t\t10zM16 2v2a12 12 0 0 1 0 24v2a14 14 0 0 0 0-28z" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</cds-header-action>\n\t\t\t\t\t<cds-header-action #secondAction description="action">\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\twidth="20"\n\t\t\t\t\t\t\theight="20"\n\t\t\t\t\t\t\txmlns="http://www.w3.org/2000/svg"\n\t\t\t\t\t\t\tviewBox="0 0 32 32"\n\t\t\t\t\t\t\taria-hidden="true">\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td="M8.24 25.14L7 26.67a14 14 0 0 0 4.18 2.44l.68-1.88a12\n\t\t\t\t\t\t\t\t12 0 0 1-3.62-2.09zm-4.05-7.07l-2 .35A13.89 13.89 0 0 0 3.86\n\t\t\t\t\t\t\t\t23l1.73-1a11.9 11.9 0 0 1-1.4-3.93zm7.63-13.31l-.68-1.88A14\n\t\t\t\t\t\t\t\t14 0 0 0 7 5.33l1.24 1.53a12 12 0 0 1 3.58-2.1zM5.59\n\t\t\t\t\t\t\t\t10L3.86 9a13.89 13.89 0 0 0-1.64 4.54l2 .35A11.9 11.9 0 0 1 5.59\n\t\t\t\t\t\t\t\t10zM16 2v2a12 12 0 0 1 0 24v2a14 14 0 0 0 0-28z" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</cds-header-action>\n\t\t\t\t</cds-header-global>\n\t\t\t</cds-header>\n\t\t\t<cds-sidenav [navigationItems]="headerItems">\n\t\t\t\t<cds-sidenav-menu title="Category title">\n\t\t\t\t\t<svg icon width="20" height="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" aria-hidden="true">\n\t\t\t\t\t\t<path\n\t\t\t\t\t\t\td="M8.24 25.14L7 26.67a14 14 0 0 0 4.18 2.44l.68-1.88a12\n\t\t\t\t\t\t\t12 0 0 1-3.62-2.09zm-4.05-7.07l-2 .35A13.89 13.89 0 0 0 3.86\n\t\t\t\t\t\t\t23l1.73-1a11.9 11.9 0 0 1-1.4-3.93zm7.63-13.31l-.68-1.88A14\n\t\t\t\t\t\t\t14 0 0 0 7 5.33l1.24 1.53a12 12 0 0 1 3.58-2.1zM5.59\n\t\t\t\t\t\t\t10L3.86 9a13.89 13.89 0 0 0-1.64 4.54l2 .35A11.9 11.9 0 0 1 5.59\n\t\t\t\t\t\t\t10zM16 2v2a12 12 0 0 1 0 24v2a14 14 0 0 0 0-28z" />\n\t\t\t\t\t</svg>\n\t\t\t\t\t<cds-sidenav-item>Link</cds-sidenav-item>\n\t\t\t\t\t<cds-sidenav-item>Link</cds-sidenav-item>\n\t\t\t\t\t<cds-sidenav-item>Link</cds-sidenav-item>\n\t\t\t\t</cds-sidenav-menu>\n\t\t\t</cds-sidenav>\n\t\t\t<cds-panel [expanded]="firstAction.active"></cds-panel>\n\t\t\t<cds-panel [expanded]="secondAction.active">\n\t\t\t\t<cds-switcher-list>\n\t\t\t\t\t<cds-switcher-list-item active="true">Switcher item one</cds-switcher-list-item>\n\t\t\t\t\t<cds-switcher-list-item>Switcher item two</cds-switcher-list-item>\n\t\t\t\t\t<cds-switcher-list-item>Switcher item three</cds-switcher-list-item>\n\t\t\t\t\t<cds-switcher-list-item>Switcher item four</cds-switcher-list-item>\n\t\t\t\t</cds-switcher-list>\n\t\t\t</cds-panel>\n\t\t</div>\n\t\t<router-outlet></router-outlet>\n\t'})).bind({});SideNavigationRail.args={options:[{content:"Option 1",value:1},{content:"Option 2",value:2},{content:"Option 3",value:3}],headerItems:[{type:"item",route:["foo"],content:"Catalog"},{type:"item",route:["bar"],content:"Docs"},{type:"item",route:["foo"],content:"Support"},{type:"menu",title:"Manage",trigger:"click",menuItems:[{type:"item",route:["foo"],content:"Link 1"},{type:"item",route:["bar"],content:"Link 2"}]}]},SideNavigationRail.argTypes={options:{control:!1},headerItems:{control:!1}};const AngularRouting=(args=>({props:args,template:'\n\t\t<div [cdsTheme]="theme">\n\t\t\t<cds-sidenav rail="true" [expanded]="false">\n\t\t\t\t<cds-sidenav-item>\n\t\t\t\t\t<svg cdsIcon="fade" size="16"></svg>\n\t\t\t\t\tLink\n\t\t\t\t</cds-sidenav-item>\n\t\t\t\t<cds-sidenav-item>\n\t\t\t\t\t<svg cdsIcon="fade" size="16"></svg>\n\t\t\t\t\tLink\n\t\t\t\t</cds-sidenav-item>\n\t\t\t\t<cds-sidenav-menu title="Category title">\n\t\t\t\t\t<svg cdsIcon="fade" icon size="16"></svg>\n\t\t\t\t\t<cds-sidenav-item>Link</cds-sidenav-item>\n\t\t\t\t\t<cds-sidenav-item>Link</cds-sidenav-item>\n\t\t\t\t\t<cds-sidenav-item>Link</cds-sidenav-item>\n\t\t\t\t</cds-sidenav-menu>\n\t\t\t</cds-sidenav>\n\t\t<div>\n\t'})).bind({});AngularRouting.storyName="Use angular router attributes for routing"},"./src/icon/icon.directive.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{a:()=>IconDirective});var tslib__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/tslib/tslib.es6.js"),_angular_core__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),_icon_service__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./src/icon/icon.service.ts"),_carbon_icon_helpers__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/@carbon/icon-helpers/es/index.js");let IconDirective=class IconDirective{constructor(elementRef,iconService){this.elementRef=elementRef,this.iconService=iconService,this.cdsIcon="",this.size="16",this.title="",this.ariaLabel="",this.ariaLabelledBy="",this.ariaHidden="",this.isFocusable=!1}set ibmIcon(iconName){this.cdsIcon=iconName}renderIcon(iconName){const root=this.elementRef.nativeElement;let icon;try{icon=this.iconService.get(iconName,this.size.toString())}catch(error){return void console.warn(error)}const domParser=new DOMParser,rawSVG=icon.svg,svgElement=domParser.parseFromString(rawSVG,"image/svg+xml").documentElement;let node="SVG"!==root.tagName.toUpperCase()?svgElement:svgElement.firstChild;for(root.innerHTML="";node;)root.appendChild(root.ownerDocument.importNode(node,!0)),node=node.nextSibling;const svg="SVG"!==root.tagName.toUpperCase()?svgElement:root;svg.setAttribute("xmlns","http://www.w3.org/2000/svg");const attributes=(0,_carbon_icon_helpers__WEBPACK_IMPORTED_MODULE_1__.u9)({width:icon.attrs.width,height:icon.attrs.height,viewBox:icon.attrs.viewBox,title:this.title,"aria-label":this.ariaLabel,"aria-labelledby":this.ariaLabelledBy,"aria-hidden":this.ariaHidden,focusable:this.isFocusable.toString()}),attrKeys=Object.keys(attributes);for(let i=0;i<attrKeys.length;i++){const key=attrKeys[i],value=attributes[key];"title"!==key&&(value&&svg.setAttribute(key,value))}if(attributes.title){const title=document.createElement("title");title.textContent=attributes.title,IconDirective.titleIdCounter++,title.setAttribute("id",`${icon.name}-title-${IconDirective.titleIdCounter}`),svg.insertBefore(title,svg.firstElementChild),svg.setAttribute("aria-labelledby",`${icon.name}-title-${IconDirective.titleIdCounter}`)}}ngAfterViewInit(){this.renderIcon(this.cdsIcon)}ngOnChanges({cdsIcon}){cdsIcon.isFirstChange()||this.renderIcon(this.cdsIcon)}};IconDirective.titleIdCounter=0,IconDirective.ctorParameters=()=>[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.ElementRef},{type:_icon_service__WEBPACK_IMPORTED_MODULE_0__.C6}],IconDirective.propDecorators={ibmIcon:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],cdsIcon:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],size:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],title:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],ariaLabel:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],ariaLabelledBy:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],ariaHidden:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],isFocusable:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}]},IconDirective=(0,tslib__WEBPACK_IMPORTED_MODULE_3__.gn)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.Directive)({selector:"[cdsIcon], [ibmIcon]"})],IconDirective)},"./src/icon/icon.module.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{QX:()=>IconModule});var tslib__WEBPACK_IMPORTED_MODULE_53__=__webpack_require__("./node_modules/tslib/tslib.es6.js"),_angular_core__WEBPACK_IMPORTED_MODULE_52__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),_angular_common__WEBPACK_IMPORTED_MODULE_54__=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs"),_icon_directive__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./src/icon/icon.directive.ts"),_icon_service__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./src/icon/icon.service.ts"),_carbon_icons_es_add_16__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/@carbon/icons/es/add/16.js"),_carbon_icons_es_add_20__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@carbon/icons/es/add/20.js"),_carbon_icons_es_bee_16__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@carbon/icons/es/bee/16.js"),_carbon_icons_es_bee_20__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@carbon/icons/es/bee/20.js"),_carbon_icons_es_calendar_16__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./node_modules/@carbon/icons/es/calendar/16.js"),_carbon_icons_es_carbon_16__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__("./node_modules/@carbon/icons/es/carbon/16.js"),_carbon_icons_es_carbon_20__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__("./node_modules/@carbon/icons/es/carbon/20.js"),_carbon_icons_es_caret_down_16__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__("./node_modules/@carbon/icons/es/caret--down/16.js"),_carbon_icons_es_caret_left_16__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__("./node_modules/@carbon/icons/es/caret--left/16.js"),_carbon_icons_es_caret_right_16__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__("./node_modules/@carbon/icons/es/caret--right/16.js"),_carbon_icons_es_caret_up_16__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__("./node_modules/@carbon/icons/es/caret--up/16.js"),_carbon_icons_es_checkmark_16__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__("./node_modules/@carbon/icons/es/checkmark/16.js"),_carbon_icons_es_checkmark_filled_16__WEBPACK_IMPORTED_MODULE_14__=__webpack_require__("./node_modules/@carbon/icons/es/checkmark--filled/16.js"),_carbon_icons_es_checkmark_filled_20__WEBPACK_IMPORTED_MODULE_15__=__webpack_require__("./node_modules/@carbon/icons/es/checkmark--filled/20.js"),_carbon_icons_es_checkmark_outline_16__WEBPACK_IMPORTED_MODULE_16__=__webpack_require__("./node_modules/@carbon/icons/es/checkmark--outline/16.js"),_carbon_icons_es_chevron_down_16__WEBPACK_IMPORTED_MODULE_17__=__webpack_require__("./node_modules/@carbon/icons/es/chevron--down/16.js"),_carbon_icons_es_chevron_right_16__WEBPACK_IMPORTED_MODULE_18__=__webpack_require__("./node_modules/@carbon/icons/es/chevron--right/16.js"),_carbon_icons_es_circle_dash_16__WEBPACK_IMPORTED_MODULE_19__=__webpack_require__("./node_modules/@carbon/icons/es/circle-dash/16.js"),_carbon_icons_es_close_16__WEBPACK_IMPORTED_MODULE_20__=__webpack_require__("./node_modules/@carbon/icons/es/close/16.js"),_carbon_icons_es_close_20__WEBPACK_IMPORTED_MODULE_21__=__webpack_require__("./node_modules/@carbon/icons/es/close/20.js"),_carbon_icons_es_copy_16__WEBPACK_IMPORTED_MODULE_22__=__webpack_require__("./node_modules/@carbon/icons/es/copy/16.js"),_carbon_icons_es_copy_20__WEBPACK_IMPORTED_MODULE_23__=__webpack_require__("./node_modules/@carbon/icons/es/copy/20.js"),_carbon_icons_es_data_2_16__WEBPACK_IMPORTED_MODULE_24__=__webpack_require__("./node_modules/@carbon/icons/es/data--2/16.js"),_carbon_icons_es_data_2_20__WEBPACK_IMPORTED_MODULE_25__=__webpack_require__("./node_modules/@carbon/icons/es/data--2/20.js"),_carbon_icons_es_document_16__WEBPACK_IMPORTED_MODULE_26__=__webpack_require__("./node_modules/@carbon/icons/es/document/16.js"),_carbon_icons_es_document_20__WEBPACK_IMPORTED_MODULE_27__=__webpack_require__("./node_modules/@carbon/icons/es/document/20.js"),_carbon_icons_es_download_16__WEBPACK_IMPORTED_MODULE_28__=__webpack_require__("./node_modules/@carbon/icons/es/download/16.js"),_carbon_icons_es_error_filled_16__WEBPACK_IMPORTED_MODULE_29__=__webpack_require__("./node_modules/@carbon/icons/es/error--filled/16.js"),_carbon_icons_es_error_filled_20__WEBPACK_IMPORTED_MODULE_30__=__webpack_require__("./node_modules/@carbon/icons/es/error--filled/20.js"),_carbon_icons_es_fade_16__WEBPACK_IMPORTED_MODULE_31__=__webpack_require__("./node_modules/@carbon/icons/es/fade/16.js"),_carbon_icons_es_fade_20__WEBPACK_IMPORTED_MODULE_32__=__webpack_require__("./node_modules/@carbon/icons/es/fade/20.js"),_carbon_icons_es_incomplete_16__WEBPACK_IMPORTED_MODULE_33__=__webpack_require__("./node_modules/@carbon/icons/es/incomplete/16.js"),_carbon_icons_es_information_filled_16__WEBPACK_IMPORTED_MODULE_34__=__webpack_require__("./node_modules/@carbon/icons/es/information--filled/16.js"),_carbon_icons_es_information_filled_20__WEBPACK_IMPORTED_MODULE_35__=__webpack_require__("./node_modules/@carbon/icons/es/information--filled/20.js"),_carbon_icons_es_information_square_filled_20__WEBPACK_IMPORTED_MODULE_36__=__webpack_require__("./node_modules/@carbon/icons/es/information--square--filled/20.js"),_carbon_icons_es_menu_16__WEBPACK_IMPORTED_MODULE_37__=__webpack_require__("./node_modules/@carbon/icons/es/menu/16.js"),_carbon_icons_es_menu_20__WEBPACK_IMPORTED_MODULE_38__=__webpack_require__("./node_modules/@carbon/icons/es/menu/20.js"),_carbon_icons_es_overflow_menu_vertical_16__WEBPACK_IMPORTED_MODULE_39__=__webpack_require__("./node_modules/@carbon/icons/es/overflow-menu--vertical/16.js"),_carbon_icons_es_overflow_menu_horizontal_16__WEBPACK_IMPORTED_MODULE_40__=__webpack_require__("./node_modules/@carbon/icons/es/overflow-menu--horizontal/16.js"),_carbon_icons_es_save_16__WEBPACK_IMPORTED_MODULE_41__=__webpack_require__("./node_modules/@carbon/icons/es/save/16.js"),_carbon_icons_es_search_16__WEBPACK_IMPORTED_MODULE_42__=__webpack_require__("./node_modules/@carbon/icons/es/search/16.js"),_carbon_icons_es_settings_16__WEBPACK_IMPORTED_MODULE_43__=__webpack_require__("./node_modules/@carbon/icons/es/settings/16.js"),_carbon_icons_es_settings_adjust_16__WEBPACK_IMPORTED_MODULE_44__=__webpack_require__("./node_modules/@carbon/icons/es/settings--adjust/16.js"),_carbon_icons_es_subtract_16__WEBPACK_IMPORTED_MODULE_45__=__webpack_require__("./node_modules/@carbon/icons/es/subtract/16.js"),_carbon_icons_es_trash_can_16__WEBPACK_IMPORTED_MODULE_46__=__webpack_require__("./node_modules/@carbon/icons/es/trash-can/16.js"),_carbon_icons_es_warning_16__WEBPACK_IMPORTED_MODULE_47__=__webpack_require__("./node_modules/@carbon/icons/es/warning/16.js"),_carbon_icons_es_warning_filled_16__WEBPACK_IMPORTED_MODULE_48__=__webpack_require__("./node_modules/@carbon/icons/es/warning--filled/16.js"),_carbon_icons_es_warning_filled_20__WEBPACK_IMPORTED_MODULE_49__=__webpack_require__("./node_modules/@carbon/icons/es/warning--filled/20.js"),_carbon_icons_es_warning_alt_filled_16__WEBPACK_IMPORTED_MODULE_50__=__webpack_require__("./node_modules/@carbon/icons/es/warning--alt--filled/16.js"),_carbon_icons_es_warning_alt_filled_20__WEBPACK_IMPORTED_MODULE_51__=__webpack_require__("./node_modules/@carbon/icons/es/warning--alt--filled/20.js");const ICON_SERVICE_PROVIDER={provide:_icon_service__WEBPACK_IMPORTED_MODULE_1__.C6,deps:[[new _angular_core__WEBPACK_IMPORTED_MODULE_52__.Optional,new _angular_core__WEBPACK_IMPORTED_MODULE_52__.SkipSelf,_icon_service__WEBPACK_IMPORTED_MODULE_1__.C6]],useFactory:function ICON_SERVICE_PROVIDER_FACTORY(parentService){return parentService||new _icon_service__WEBPACK_IMPORTED_MODULE_1__.C6}};let IconModule=class IconModule{constructor(iconService){this.iconService=iconService,iconService.registerAll([_carbon_icons_es_add_16__WEBPACK_IMPORTED_MODULE_2__.Z,_carbon_icons_es_add_20__WEBPACK_IMPORTED_MODULE_3__.Z,_carbon_icons_es_bee_16__WEBPACK_IMPORTED_MODULE_4__.Z,_carbon_icons_es_bee_20__WEBPACK_IMPORTED_MODULE_5__.Z,_carbon_icons_es_calendar_16__WEBPACK_IMPORTED_MODULE_6__.Z,_carbon_icons_es_carbon_16__WEBPACK_IMPORTED_MODULE_7__.Z,_carbon_icons_es_carbon_20__WEBPACK_IMPORTED_MODULE_8__.Z,_carbon_icons_es_caret_down_16__WEBPACK_IMPORTED_MODULE_9__.Z,_carbon_icons_es_caret_left_16__WEBPACK_IMPORTED_MODULE_10__.Z,_carbon_icons_es_caret_right_16__WEBPACK_IMPORTED_MODULE_11__.Z,_carbon_icons_es_caret_up_16__WEBPACK_IMPORTED_MODULE_12__.Z,_carbon_icons_es_checkmark_16__WEBPACK_IMPORTED_MODULE_13__.Z,_carbon_icons_es_checkmark_filled_16__WEBPACK_IMPORTED_MODULE_14__.Z,_carbon_icons_es_checkmark_filled_20__WEBPACK_IMPORTED_MODULE_15__.Z,_carbon_icons_es_checkmark_outline_16__WEBPACK_IMPORTED_MODULE_16__.Z,_carbon_icons_es_chevron_down_16__WEBPACK_IMPORTED_MODULE_17__.Z,_carbon_icons_es_chevron_right_16__WEBPACK_IMPORTED_MODULE_18__.Z,_carbon_icons_es_circle_dash_16__WEBPACK_IMPORTED_MODULE_19__.Z,_carbon_icons_es_close_16__WEBPACK_IMPORTED_MODULE_20__.Z,_carbon_icons_es_close_20__WEBPACK_IMPORTED_MODULE_21__.Z,_carbon_icons_es_copy_16__WEBPACK_IMPORTED_MODULE_22__.Z,_carbon_icons_es_copy_20__WEBPACK_IMPORTED_MODULE_23__.Z,_carbon_icons_es_data_2_16__WEBPACK_IMPORTED_MODULE_24__.Z,_carbon_icons_es_data_2_20__WEBPACK_IMPORTED_MODULE_25__.Z,_carbon_icons_es_document_16__WEBPACK_IMPORTED_MODULE_26__.Z,_carbon_icons_es_document_20__WEBPACK_IMPORTED_MODULE_27__.Z,_carbon_icons_es_download_16__WEBPACK_IMPORTED_MODULE_28__.Z,_carbon_icons_es_error_filled_16__WEBPACK_IMPORTED_MODULE_29__.Z,_carbon_icons_es_error_filled_20__WEBPACK_IMPORTED_MODULE_30__.Z,_carbon_icons_es_fade_16__WEBPACK_IMPORTED_MODULE_31__.Z,_carbon_icons_es_fade_20__WEBPACK_IMPORTED_MODULE_32__.Z,_carbon_icons_es_incomplete_16__WEBPACK_IMPORTED_MODULE_33__.Z,_carbon_icons_es_information_filled_16__WEBPACK_IMPORTED_MODULE_34__.Z,_carbon_icons_es_information_filled_20__WEBPACK_IMPORTED_MODULE_35__.Z,_carbon_icons_es_information_square_filled_20__WEBPACK_IMPORTED_MODULE_36__.Z,_carbon_icons_es_menu_16__WEBPACK_IMPORTED_MODULE_37__.Z,_carbon_icons_es_menu_20__WEBPACK_IMPORTED_MODULE_38__.Z,_carbon_icons_es_overflow_menu_vertical_16__WEBPACK_IMPORTED_MODULE_39__.Z,_carbon_icons_es_overflow_menu_horizontal_16__WEBPACK_IMPORTED_MODULE_40__.Z,_carbon_icons_es_save_16__WEBPACK_IMPORTED_MODULE_41__.Z,_carbon_icons_es_search_16__WEBPACK_IMPORTED_MODULE_42__.Z,_carbon_icons_es_settings_16__WEBPACK_IMPORTED_MODULE_43__.Z,_carbon_icons_es_settings_adjust_16__WEBPACK_IMPORTED_MODULE_44__.Z,_carbon_icons_es_subtract_16__WEBPACK_IMPORTED_MODULE_45__.Z,_carbon_icons_es_trash_can_16__WEBPACK_IMPORTED_MODULE_46__.Z,_carbon_icons_es_warning_16__WEBPACK_IMPORTED_MODULE_47__.Z,_carbon_icons_es_warning_filled_16__WEBPACK_IMPORTED_MODULE_48__.Z,_carbon_icons_es_warning_filled_20__WEBPACK_IMPORTED_MODULE_49__.Z,_carbon_icons_es_warning_alt_filled_16__WEBPACK_IMPORTED_MODULE_50__.Z,_carbon_icons_es_warning_alt_filled_20__WEBPACK_IMPORTED_MODULE_51__.Z])}};IconModule.ctorParameters=()=>[{type:_icon_service__WEBPACK_IMPORTED_MODULE_1__.C6}],IconModule=(0,tslib__WEBPACK_IMPORTED_MODULE_53__.gn)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_52__.NgModule)({declarations:[_icon_directive__WEBPACK_IMPORTED_MODULE_0__.a],exports:[_icon_directive__WEBPACK_IMPORTED_MODULE_0__.a],imports:[_angular_common__WEBPACK_IMPORTED_MODULE_54__.CommonModule],providers:[ICON_SERVICE_PROVIDER]})],IconModule)},"./src/icon/icon.service.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{C6:()=>IconService});var tslib__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/tslib/tslib.es6.js"),_angular_core__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),_carbon_icon_helpers__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@carbon/icon-helpers/es/index.js");class IconNameNotFoundError extends Error{constructor(name){super(`Icon ${name} not found`)}}class IconSizeNotFoundError extends Error{constructor(size,name){super("Size ${size} for ${name} not found")}}class IconMemoryCache extends class IconCache{}{constructor(){super(...arguments),this.iconMap=new Map}get(name,size){if(!this.iconMap.has(name))throw new IconNameNotFoundError(name);const sizeMap=this.iconMap.get(name);if(!sizeMap.has(size))throw new IconSizeNotFoundError(size,name);return sizeMap.get(size)}set(name,size,descriptor){this.iconMap.has(name)||this.iconMap.set(name,new Map);this.iconMap.get(name).set(size,descriptor)}}let IconService=class IconService{constructor(){this.iconCache=new IconMemoryCache}registerAll(descriptors){descriptors.forEach((icon=>this.register(icon)))}register(descriptor){const{name}=descriptor;this.registerAs(name,descriptor)}registerAs(name,descriptor){const{size}=descriptor;this.iconCache.set(name,size.toString(),descriptor)}get(name,size){try{const icon=this.iconCache.get(name,size.toString());return icon.svg||(icon.svg=(0,_carbon_icon_helpers__WEBPACK_IMPORTED_MODULE_0__.BB)(icon)),icon}catch(e){throw e}}configure(options){this.iconCache=options.cache}};IconService=(0,tslib__WEBPACK_IMPORTED_MODULE_1__.gn)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.Injectable)()],IconService)},"./src/icon/index.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{ar:()=>icon_directive.a,QX:()=>icon_module.QX,C6:()=>icon_service.C6});var icon_directive=__webpack_require__("./src/icon/icon.directive.ts"),icon_module=__webpack_require__("./src/icon/icon.module.ts"),icon_service=__webpack_require__("./src/icon/icon.service.ts")},"./src/layer/index.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{A:()=>LayerDirective,D:()=>LayerModule});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs");let LayerDirective=class LayerDirective{set ibmLayer(level){this.cdsLayer=level}set cdsLayer(level){this._passedLevel=level,this.layer=level}get cdsLayer(){return this._passedLevel}set layer(level){"number"==typeof level&&(this._level=Math.max(0,Math.min(level,2)),this.layerChildren&&this.layerChildren.forEach((layer=>{layer!==this&&(layer.layer="number"==typeof layer._passedLevel?layer._passedLevel:this.layer+1)})))}get layer(){return this._level}get layerOneClass(){return 0===this.layer}get layerTwoClass(){return 1===this.layer}get layerThreeClass(){return 2===this.layer}ngAfterContentInit(){"number"!=typeof this.cdsLayer&&(this.layer=1)}};LayerDirective.propDecorators={ibmLayer:[{type:core.Input}],cdsLayer:[{type:core.Input}],layerOneClass:[{type:core.HostBinding,args:["class.cds--layer-one"]}],layerTwoClass:[{type:core.HostBinding,args:["class.cds--layer-two"]}],layerThreeClass:[{type:core.HostBinding,args:["class.cds--layer-three"]}],layerChildren:[{type:core.ContentChildren,args:[LayerDirective,{descendants:!1}]}]},LayerDirective=(0,tslib_es6.gn)([(0,core.Directive)({selector:"[cdsLayer], [ibmLayer]",exportAs:"layer"})],LayerDirective);var common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs");let LayerModule=class LayerModule{};LayerModule=(0,tslib_es6.gn)([(0,core.NgModule)({declarations:[LayerDirective],exports:[LayerDirective],imports:[common.CommonModule]})],LayerModule)},"./src/search/index.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{o:()=>Search,t:()=>SearchModule});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),search_componentngResource=__webpack_require__("./src/search/search.component.html?ngResource"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),fesm2020_forms=__webpack_require__("./node_modules/@angular/forms/fesm2020/forms.mjs"),i18n=__webpack_require__("./src/i18n/index.ts");let Search=class Search{constructor(elementRef,i18n){this.elementRef=elementRef,this.i18n=i18n,this.theme="dark",this.size="md",this.disabled=!1,this.toolbar=!1,this.expandable=!1,this.skeleton=!1,this.active=!1,this.tableSearch=!1,this.id=`search-${Search.searchCount}`,this.value="",this.autocomplete="on",this.label=this.i18n.get().SEARCH.LABEL,this.placeholder=this.i18n.get().SEARCH.PLACEHOLDER,this.clearButtonTitle=this.i18n.get().SEARCH.CLEAR_BUTTON,this.searchTitle="",this.valueChange=new core.EventEmitter,this.open=new core.EventEmitter,this.clear=new core.EventEmitter,this.search=new core.EventEmitter,this.isComposing=!1,this.onTouched=()=>{},this.propagateChange=_=>{},Search.searchCount++}get containerClass(){return!(this.toolbar||this.expandable)}writeValue(value){this.value=value}registerOnChange(fn){this.propagateChange=fn}registerOnTouched(fn){this.onTouched=fn}onSearch(search){this.isComposing||(this.value=search,this.doValueChange())}onEnter(){this.search.emit(this.value)}clearSearch(){this.value="",this.clear.emit(),this.propagateChange(this.value)}doValueChange(){this.valueChange.emit(this.value),this.propagateChange(this.value)}openSearch(){this.active=!0,this.open.emit(this.active),setTimeout((()=>this.inputRef.nativeElement.focus()))}keyDown(event){(this.toolbar||this.expandable)&&("Escape"===event.key?this.active=!1:"Enter"===event.key&&this.openSearch())}focusOut(event){this.onTouched(),(this.expandable||this.toolbar)&&this.inputRef&&""===this.inputRef.nativeElement.value&&!this.elementRef.nativeElement.contains(event.relatedTarget)&&(this.active=!1,this.open.emit(this.active))}focusIn(event){this.onTouched(),!this.expandable&&!this.toolbar||!this.inputRef||event.relatedTarget||this.elementRef.nativeElement.contains(event.relatedTarget)||this.openSearch()}compositionStart(event){this.isComposing=!0}compositionEnd(event){this.isComposing=!1,this.onSearch(this.value+event.data)}};Search.searchCount=0,Search.ctorParameters=()=>[{type:core.ElementRef},{type:i18n.oc}],Search.propDecorators={containerClass:[{type:core.HostBinding,args:["class.cds--form-item"]}],theme:[{type:core.Input}],size:[{type:core.Input}],disabled:[{type:core.Input}],toolbar:[{type:core.Input}],expandable:[{type:core.Input}],skeleton:[{type:core.Input}],active:[{type:core.Input}],tableSearch:[{type:core.Input}],name:[{type:core.Input}],id:[{type:core.Input}],required:[{type:core.Input}],value:[{type:core.Input}],autocomplete:[{type:core.Input}],label:[{type:core.Input}],placeholder:[{type:core.Input}],clearButtonTitle:[{type:core.Input}],searchTitle:[{type:core.Input}],ariaLabel:[{type:core.Input}],valueChange:[{type:core.Output}],open:[{type:core.Output}],clear:[{type:core.Output}],search:[{type:core.Output}],inputRef:[{type:core.ViewChild,args:["input"]}],keyDown:[{type:core.HostListener,args:["keydown",["$event"]]}],focusOut:[{type:core.HostListener,args:["focusout",["$event"]]}],focusIn:[{type:core.HostListener,args:["focusin",["$event"]]}],compositionStart:[{type:core.HostListener,args:["compositionstart",["$event"]]}],compositionEnd:[{type:core.HostListener,args:["compositionend",["$event"]]}]},Search=(0,tslib_es6.gn)([(0,core.Component)({selector:"cds-search, ibm-search",template:search_componentngResource,providers:[{provide:fesm2020_forms.JU,useExisting:Search,multi:!0}]})],Search);var common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs"),icon=__webpack_require__("./src/icon/index.ts");let SearchModule=class SearchModule{};SearchModule=(0,tslib_es6.gn)([(0,core.NgModule)({declarations:[Search],exports:[Search],imports:[fesm2020_forms.u5,common.CommonModule,i18n.LU,icon.QX]})],SearchModule)},"./src/theme/index.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{E:()=>ThemeDirective,O:()=>ThemeModule});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),src_layer=__webpack_require__("./src/layer/index.ts");let ThemeDirective=class ThemeDirective{constructor(){this.cdsTheme="white",this.layerClass=!0}set ibmTheme(type){this.cdsTheme=type}get whiteThemeClass(){return"white"===this.cdsTheme}get g10ThemeClass(){return"g10"===this.cdsTheme}get g90ThemeClass(){return"g90"===this.cdsTheme}get g100ThemeClass(){return"g100"===this.cdsTheme}ngAfterContentChecked(){this.layerChildren.toArray().forEach((layer=>{"number"!=typeof layer.cdsLayer&&(layer.cdsLayer=1)}))}ngOnInit(){this.cdsTheme||(this.cdsTheme="white")}};ThemeDirective.propDecorators={ibmTheme:[{type:core.Input}],cdsTheme:[{type:core.Input}],layerChildren:[{type:core.ContentChildren,args:[src_layer.A,{descendants:!1}]}],whiteThemeClass:[{type:core.HostBinding,args:["class.cds--white"]}],g10ThemeClass:[{type:core.HostBinding,args:["class.cds--g10"]}],g90ThemeClass:[{type:core.HostBinding,args:["class.cds--g90"]}],g100ThemeClass:[{type:core.HostBinding,args:["class.cds--g100"]}],layerClass:[{type:core.HostBinding,args:["class.cds--layer-one"]}]},ThemeDirective=(0,tslib_es6.gn)([(0,core.Directive)({selector:"[cdsTheme], [ibmTheme]",exportAs:"theme"})],ThemeDirective);var common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs");let ThemeModule=class ThemeModule{};ThemeModule=(0,tslib_es6.gn)([(0,core.NgModule)({declarations:[ThemeDirective],exports:[ThemeDirective],imports:[common.CommonModule,src_layer.D]})],ThemeModule)},"./src/search/search.component.html?ngResource":module=>{module.exports='<div\n\tclass="cds--search"\n\t[ngClass]="{\n\t\t\'cds--search--sm\': size === \'sm\',\n\t\t\'cds--search--md\': size === \'md\',\n\t\t\'cds--search--lg\': size === \'lg\',\n\t\t\'cds--search--light\': theme === \'light\',\n\t\t\'cds--skeleton\': skeleton,\n\t\t\'cds--search--expandable\': expandable && !tableSearch,\n\t\t\'cds--search--expanded\': expandable && !tableSearch && active,\n\t\t\'cds--toolbar-search\': toolbar && !expandable,\n\t\t\'cds--toolbar-search--active\': toolbar && !expandable && active,\n\t\t\'cds--toolbar-search-container-persistent\': tableSearch && !expandable,\n\t\t\'cds--toolbar-search-container-expandable\': tableSearch && expandable,\n\t\t\'cds--toolbar-search-container-active\': tableSearch && expandable && active\n\t}"\n\trole="search"\n\t[attr.aria-label]="ariaLabel"\n\t(click)="openSearch()">\n\t<label class="cds--label" [for]="id">{{label}}</label>\n\n\t<div *ngIf="skeleton; else enableInput" class="cds--search-input"></div>\n\t<ng-template #enableInput>\n\t\t<input\n\t\t\t#input\n\t\t\tclass="cds--search-input"\n\t\t\t[type]="tableSearch || !toolbar ? \'text\' : \'search\'"\n\t\t\t[id]="id"\n\t\t\t[value]="value"\n\t\t\t[autocomplete]="autocomplete"\n\t\t\t[placeholder]="placeholder"\n\t\t\t[disabled]="disabled"\n\t\t\t[required]="required"\n\t\t\t(input)="onSearch($event.target.value)"\n\t\t\t(keyup.enter)="onEnter()"/>\n\t\t<button\n\t\t\t*ngIf="!tableSearch && toolbar"\n\t\t\tclass="cds--toolbar-search__btn"\n\t\t\t(click)="openSearch()"\n\t\t\taria-label="Open search">\n\t\t\t<svg cdsIcon="search" size="16" class="cds--search-magnifier-icon"></svg>\n\t\t</button>\n\t\t<svg\n\t\t\tcdsIcon="search"\n\t\t\t*ngIf="tableSearch || !toolbar"\n\t\t\tclass="cds--search-magnifier-icon"\n\t\t\tsize="16">\n\t\t</svg>\n\t</ng-template>\n\n\t<button\n\t\t*ngIf="tableSearch || !toolbar"\n\t\tclass="cds--search-close"\n\t\t[ngClass]="{\n\t\t\t\'cds--search-close--hidden\': !value || value.length === 0\n\t\t}"\n\t\t[title]="clearButtonTitle"\n\t\t(click)="clearSearch()">\n\t\t<span class="cds--visually-hidden">{{ clearButtonTitle }}</span>\n\t\t<svg cdsIcon="close" size="16"></svg>\n\t</button>\n</div>\n'}}]);
|
|
@@ -428,7 +428,7 @@ export class ComboBox {
|
|
|
428
428
|
this.pills = this.view.getSelected() || [];
|
|
429
429
|
this.checkForReorder();
|
|
430
430
|
}
|
|
431
|
-
clearSelected() {
|
|
431
|
+
clearSelected(event) {
|
|
432
432
|
this.items = this.items.map(item => {
|
|
433
433
|
if (!item.disabled) {
|
|
434
434
|
item.selected = false;
|
|
@@ -442,7 +442,7 @@ export class ComboBox {
|
|
|
442
442
|
const selected = this.view.getSelected();
|
|
443
443
|
this.propagateChangeCallback(selected);
|
|
444
444
|
this.selected.emit(selected);
|
|
445
|
-
this.clear.emit();
|
|
445
|
+
this.clear.emit(event);
|
|
446
446
|
}
|
|
447
447
|
/**
|
|
448
448
|
* Closes the dropdown and emits the close event.
|
|
@@ -536,7 +536,7 @@ export class ComboBox {
|
|
|
536
536
|
event.stopPropagation();
|
|
537
537
|
event.preventDefault();
|
|
538
538
|
if (this.type === "single") { // don't want to clear selected or close if multi
|
|
539
|
-
this.clearSelected();
|
|
539
|
+
this.clearSelected(event);
|
|
540
540
|
this.closeDropdown();
|
|
541
541
|
}
|
|
542
542
|
this.selectedValue = "";
|
|
@@ -663,9 +663,9 @@ ComboBox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
|
663
663
|
<span class="cds--tag__label">{{ pills.length }}</span>
|
|
664
664
|
<button
|
|
665
665
|
type="button"
|
|
666
|
-
(click)="clearSelected()"
|
|
666
|
+
(click)="clearSelected($event)"
|
|
667
667
|
(blur)="onBlur()"
|
|
668
|
-
(keydown.enter)="clearSelected()"
|
|
668
|
+
(keydown.enter)="clearSelected($event)"
|
|
669
669
|
class="cds--tag__close-icon"
|
|
670
670
|
tabindex="0"
|
|
671
671
|
[title]="clearSelectionsTitle"
|
|
@@ -805,9 +805,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
805
805
|
<span class="cds--tag__label">{{ pills.length }}</span>
|
|
806
806
|
<button
|
|
807
807
|
type="button"
|
|
808
|
-
(click)="clearSelected()"
|
|
808
|
+
(click)="clearSelected($event)"
|
|
809
809
|
(blur)="onBlur()"
|
|
810
|
-
(keydown.enter)="clearSelected()"
|
|
810
|
+
(keydown.enter)="clearSelected($event)"
|
|
811
811
|
class="cds--tag__close-icon"
|
|
812
812
|
tabindex="0"
|
|
813
813
|
[title]="clearSelectionsTitle"
|
|
@@ -998,4 +998,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
998
998
|
type: HostListener,
|
|
999
999
|
args: ["keydown", ["$event"]]
|
|
1000
1000
|
}] } });
|
|
1001
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixTQUFTLEVBQ1QsWUFBWSxFQUdaLFdBQVcsRUFDWCxXQUFXLEVBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFtQixNQUFNLG9DQUFvQyxDQUFDO0FBRTNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBRU4sb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7O0FBSXpDOzs7OztHQUtHO0FBcUpILE1BQU0sT0FBTyxRQUFRO0lBK1BwQjs7T0FFRztJQUNILFlBQ1csVUFBc0IsRUFDdEIsZUFBZ0MsRUFDaEMsZUFBZ0MsRUFDaEMsSUFBVTtRQUhWLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxTQUFJLEdBQUosSUFBSSxDQUFNO1FBOUxaLE9BQUUsR0FBRyxZQUFZLFFBQVEsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1FBQ3JEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBeUJHO1FBQ00sVUFBSyxHQUFvQixFQUFFLENBQUM7UUFDckM7O1dBRUc7UUFDTSxTQUFJLEdBQXVCLFFBQVEsQ0FBQztRQUM3Qzs7V0FFRztRQUNNLFNBQUksR0FBdUIsSUFBSSxDQUFDO1FBYXpDOztXQUVHO1FBQ00saUJBQVksR0FBWSxJQUFJLENBQUM7UUFDdEM7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O3NCQUFyRCxXQUFXO3VCQUFDLDhCQUE4QjtnQkFDYixPQUFPO3NCQUFwQyxXQUFXO3VCQUFDLGVBQWU7Z0JBZ0s1QixRQUFRO3NCQURQLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRPbkNoYW5nZXMsXG5cdENvbnRlbnRDaGlsZCxcblx0SW5wdXQsXG5cdE91dHB1dCxcblx0SG9zdExpc3RlbmVyLFxuXHRFbGVtZW50UmVmLFxuXHRWaWV3Q2hpbGQsXG5cdEV2ZW50RW1pdHRlcixcblx0QWZ0ZXJWaWV3SW5pdCxcblx0QWZ0ZXJDb250ZW50SW5pdCxcblx0SG9zdEJpbmRpbmcsXG5cdFRlbXBsYXRlUmVmLFxuXHRPbkRlc3Ryb3lcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFic3RyYWN0RHJvcGRvd25WaWV3LCBEcm9wZG93blNlcnZpY2UgfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9kcm9wZG93blwiO1xuaW1wb3J0IHsgTGlzdEl0ZW0gfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9kcm9wZG93blwiO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHtcblx0RG9jdW1lbnRTZXJ2aWNlLFxuXHRnZXRTY3JvbGxhYmxlUGFyZW50cyxcblx0aGFzU2Nyb2xsYWJsZVBhcmVudHNcbn0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvdXRpbHNcIjtcbmltcG9ydCB7IEkxOG4sIE92ZXJyaWRhYmxlIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvaTE4blwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5cbi8qKlxuICogQ29tYm9Cb3hlcyBhcmUgc2ltaWxhciB0byBkcm9wZG93bnMsIGV4Y2VwdCBhIGNvbWJvYm94IHByb3ZpZGVzIGFuIGlucHV0IGZpZWxkIGZvciB1c2VycyB0byBzZWFyY2ggaXRlbXMgYW5kIChvcHRpb25hbGx5KSBhZGQgdGhlaXIgb3duLlxuICogTXVsdGktc2VsZWN0IGNvbWJvYm94ZXMgYWxzbyBwcm92aWRlIFwicGlsbHNcIiBvZiBzZWxlY3RlZCBpdGVtcy5cbiAqXG4gKiBbU2VlIGRlbW9dKC4uLy4uLz9wYXRoPS9zdG9yeS9jb21wb25lbnRzLWNvbWJvYm94LS1iYXNpYylcbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImNkcy1jb21iby1ib3gsIGlibS1jb21iby1ib3hcIixcblx0dGVtcGxhdGU6IGBcblx0XHQ8ZGl2IGNsYXNzPVwiY2RzLS1saXN0LWJveF9fd3JhcHBlclwiPlxuXHRcdFx0PGxhYmVsXG5cdFx0XHRcdCpuZ0lmPVwibGFiZWxcIlxuXHRcdFx0XHRbZm9yXT1cImlkXCJcblx0XHRcdFx0Y2xhc3M9XCJjZHMtLWxhYmVsXCJcblx0XHRcdFx0W25nQ2xhc3NdPVwieydjZHMtLWxhYmVsLS1kaXNhYmxlZCc6IGRpc2FibGVkfVwiPlxuXHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUobGFiZWwpXCI+e3tsYWJlbH19PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUobGFiZWwpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxcIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0PC9sYWJlbD5cblx0XHRcdDxkaXZcblx0XHRcdFx0I2xpc3Rib3hcblx0XHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHRcdCdjZHMtLW11bHRpLXNlbGVjdCBjZHMtLW11bHRpLXNlbGVjdC0tZmlsdGVyYWJsZSc6IHR5cGUgPT09ICdtdWx0aScsXG5cdFx0XHRcdFx0J2Nkcy0tbGlzdC1ib3gtLWxpZ2h0JzogdGhlbWUgPT09ICdsaWdodCcsXG5cdFx0XHRcdFx0J2Nkcy0tbGlzdC1ib3gtLWV4cGFuZGVkJzogb3Blbixcblx0XHRcdFx0XHQnY2RzLS1saXN0LWJveC0tc20nOiBzaXplID09PSAnc20nLFxuXHRcdFx0XHRcdCdjZHMtLWxpc3QtYm94LS1tZCc6IHNpemUgPT09ICdtZCcsXG5cdFx0XHRcdFx0J2Nkcy0tbGlzdC1ib3gtLWxnJzogc2l6ZSA9PT0gJ2xnJyxcblx0XHRcdFx0XHQnY2RzLS1saXN0LWJveC0tZGlzYWJsZWQnOiBkaXNhYmxlZCxcblx0XHRcdFx0XHQnY2RzLS1jb21iby1ib3gtLXdhcm5pbmcgY2RzLS1saXN0LWJveC0td2FybmluZyc6IHdhcm5cblx0XHRcdFx0fVwiXG5cdFx0XHRcdGNsYXNzPVwiY2RzLS1saXN0LWJveCBjZHMtLWNvbWJvLWJveFwiXG5cdFx0XHRcdFthdHRyLmRhdGEtaW52YWxpZF09XCIoaW52YWxpZCA/IHRydWUgOiBudWxsKVwiPlxuXHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLWxpc3QtYm94X19maWVsZFwiXG5cdFx0XHRcdFx0KGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKClcIlxuXHRcdFx0XHRcdChibHVyKT1cIm9uQmx1cigpXCI+XG5cdFx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdFx0Km5nSWY9XCJ0eXBlID09PSAnbXVsdGknICYmIHBpbGxzLmxlbmd0aCA+IDBcIlxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLXRhZyBjZHMtLXRhZy0tZmlsdGVyIGNkcy0tdGFnLS1oaWdoLWNvbnRyYXN0XCJcblx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cInsnY2RzLS10YWctLWRpc2FibGVkJzogZGlzYWJsZWR9XCI+XG5cdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImNkcy0tdGFnX19sYWJlbFwiPnt7IHBpbGxzLmxlbmd0aCB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdDxidXR0b25cblx0XHRcdFx0XHRcdFx0dHlwZT1cImJ1dHRvblwiXG5cdFx0XHRcdFx0XHRcdChjbGljayk9XCJjbGVhclNlbGVjdGVkKClcIlxuXHRcdFx0XHRcdFx0XHQoYmx1cik9XCJvbkJsdXIoKVwiXG5cdFx0XHRcdFx0XHRcdChrZXlkb3duLmVudGVyKT1cImNsZWFyU2VsZWN0ZWQoKVwiXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS10YWdfX2Nsb3NlLWljb25cIlxuXHRcdFx0XHRcdFx0XHR0YWJpbmRleD1cIjBcIlxuXHRcdFx0XHRcdFx0XHRbdGl0bGVdPVwiY2xlYXJTZWxlY3Rpb25zVGl0bGVcIlxuXHRcdFx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuXHRcdFx0XHRcdFx0XHRbYXR0ci5hcmlhLWxhYmVsXT1cImNsZWFyU2VsZWN0aW9uQXJpYVwiPlxuXHRcdFx0XHRcdFx0XHQ8c3ZnXG5cdFx0XHRcdFx0XHRcdFx0Zm9jdXNhYmxlPVwiZmFsc2VcIlxuXHRcdFx0XHRcdFx0XHRcdHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCJcblx0XHRcdFx0XHRcdFx0XHRzdHlsZT1cIndpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XCJcblx0XHRcdFx0XHRcdFx0XHRyb2xlPVwiaW1nXCJcblx0XHRcdFx0XHRcdFx0XHR4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcblx0XHRcdFx0XHRcdFx0XHR3aWR0aD1cIjE2XCJcblx0XHRcdFx0XHRcdFx0XHRoZWlnaHQ9XCIxNlwiXG5cdFx0XHRcdFx0XHRcdFx0dmlld0JveD1cIjAgMCAxNiAxNlwiXG5cdFx0XHRcdFx0XHRcdFx0YXJpYS1oaWRkZW49XCJ0cnVlXCI+XG5cdFx0XHRcdFx0XHRcdFx0PHBhdGggZD1cIk0xMiA0LjdsLS43LS43TDggNy4zIDQuNyA0bC0uNy43TDcuMyA4IDQgMTEuM2wuNy43TDggOC43bDMuMyAzLjMuNy0uN0w4LjcgOHpcIj48L3BhdGg+XG5cdFx0XHRcdFx0XHRcdDwvc3ZnPlxuXHRcdFx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PGlucHV0XG5cdFx0XHRcdFx0XHQjaW5wdXRcblx0XHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHRcdGF1dG9jb21wbGV0ZT1cIm9mZlwiXG5cdFx0XHRcdFx0XHRyb2xlPVwiY29tYm9ib3hcIlxuXHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cImRpc2FibGVkXCJcblx0XHRcdFx0XHRcdChpbnB1dCk9XCJvblNlYXJjaCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG5cdFx0XHRcdFx0XHQoYmx1cik9XCJvbkJsdXIoKVwiXG5cdFx0XHRcdFx0XHQoa2V5ZG93bi5lbnRlcik9XCJvblN1Ym1pdCgkZXZlbnQpXCJcblx0XHRcdFx0XHRcdFt2YWx1ZV09XCJzZWxlY3RlZFZhbHVlXCJcblx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS10ZXh0LWlucHV0XCJcblx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cInsnY2RzLS10ZXh0LWlucHV0LS1lbXB0eSc6ICFzaG93Q2xlYXJCdXR0b259XCJcblx0XHRcdFx0XHRcdHRhYmluZGV4PVwiMFwiXG5cdFx0XHRcdFx0XHRbaWRdPVwiaWRcIlxuXHRcdFx0XHRcdFx0W2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImlkXCJcblx0XHRcdFx0XHRcdFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3BlblwiXG5cdFx0XHRcdFx0XHRhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG5cdFx0XHRcdFx0XHRbYXR0ci5tYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcblx0XHRcdFx0XHRcdFthdHRyLmFyaWEtY29udHJvbHNdPVwib3BlbiA/IHZpZXc/Lmxpc3RJZCA6IG51bGxcIlxuXHRcdFx0XHRcdFx0W2F0dHIuYXJpYS1hdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcblx0XHRcdFx0XHRcdFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiLz5cblx0XHRcdFx0XHQ8c3ZnXG5cdFx0XHRcdFx0XHQqbmdJZj1cIiF3YXJuICYmIGludmFsaWRcIlxuXHRcdFx0XHRcdFx0Y2RzSWNvbj1cIndhcm5pbmctLWZpbGxlZFwiXG5cdFx0XHRcdFx0XHRzaXplPVwiMTZcIlxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLWxpc3QtYm94X19pbnZhbGlkLWljb25cIj5cblx0XHRcdFx0XHQ8L3N2Zz5cblx0XHRcdFx0XHQ8c3ZnXG5cdFx0XHRcdFx0XHQqbmdJZj1cIiFpbnZhbGlkICYmIHdhcm5cIlxuXHRcdFx0XHRcdFx0Y2RzSWNvbj1cIndhcm5pbmctLWFsdC0tZmlsbGVkXCJcblx0XHRcdFx0XHRcdHNpemU9XCIxNlwiXG5cdFx0XHRcdFx0XHRjbGFzcz1cImNkcy0tbGlzdC1ib3hfX2ludmFsaWQtaWNvbiBjZHMtLWxpc3QtYm94X19pbnZhbGlkLWljb24tLXdhcm5pbmdcIj5cblx0XHRcdFx0XHQ8L3N2Zz5cblx0XHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0XHQqbmdJZj1cInNob3dDbGVhckJ1dHRvblwiXG5cdFx0XHRcdFx0XHRyb2xlPVwiYnV0dG9uXCJcblx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1saXN0LWJveF9fc2VsZWN0aW9uXCJcblx0XHRcdFx0XHRcdHRhYmluZGV4PVwiMFwiXG5cdFx0XHRcdFx0XHRbYXR0ci5hcmlhLWxhYmVsXT1cImNsZWFyU2VsZWN0aW9uQXJpYVwiXG5cdFx0XHRcdFx0XHRbdGl0bGVdPVwiY2xlYXJTZWxlY3Rpb25UaXRsZVwiXG5cdFx0XHRcdFx0XHQoa2V5dXAuZW50ZXIpPVwiY2xlYXJJbnB1dCgkZXZlbnQpXCJcblx0XHRcdFx0XHRcdChjbGljayk9XCJjbGVhcklucHV0KCRldmVudClcIlxuXHRcdFx0XHRcdFx0KGJsdXIpPVwib25CbHVyKClcIj5cblx0XHRcdFx0XHRcdDxzdmcgY2RzSWNvbj1cImNsb3NlXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PGJ1dHRvblxuXHRcdFx0XHRcdFx0dHlwZT1cImJ1dHRvblwiXG5cdFx0XHRcdFx0XHRyb2xlPVwiYnV0dG9uXCJcblx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1saXN0LWJveF9fbWVudS1pY29uXCJcblx0XHRcdFx0XHRcdHRhYmluZGV4PVwiLTFcIlxuXHRcdFx0XHRcdFx0W3RpdGxlXT1cIm9wZW4gPyBjbG9zZU1lbnVBcmlhIDogb3Blbk1lbnVBcmlhXCJcblx0XHRcdFx0XHRcdFthdHRyLmFyaWEtbGFiZWxdPVwib3BlbiA/IGNsb3NlTWVudUFyaWEgOiBvcGVuTWVudUFyaWFcIlxuXHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwieydjZHMtLWxpc3QtYm94X19tZW51LWljb24tLW9wZW4nOiBvcGVufVwiPlxuXHRcdFx0XHRcdFx0PHN2ZyBjZHNJY29uPVwiY2hldnJvbi0tZG93blwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuXHRcdFx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdCNkcm9wZG93bk1lbnVcblx0XHRcdFx0XHRbbmdDbGFzc109XCJ7XG5cdFx0XHRcdFx0XHQnY2RzLS1saXN0LWJveC0tdXAnOiB0aGlzLmRyb3BVcCAhPT0gbnVsbCAmJiB0aGlzLmRyb3BVcCAhPT0gdW5kZWZpbmVkID8gZHJvcFVwIDogX2Ryb3BVcFxuXHRcdFx0XHRcdH1cIj5cblx0XHRcdFx0XHQ8bmctY29udGVudCAqbmdJZj1cIm9wZW5cIj48L25nLWNvbnRlbnQ+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2XG5cdFx0XHRcdCpuZ0lmPVwiaGVscGVyVGV4dCAmJiAhaW52YWxpZCAmJiAhd2FyblwiXG5cdFx0XHRcdGNsYXNzPVwiY2RzLS1mb3JtX19oZWxwZXItdGV4dFwiXG5cdFx0XHRcdFtuZ0NsYXNzXT1cInsnY2RzLS1mb3JtX19oZWxwZXItdGV4dC0tZGlzYWJsZWQnOiBkaXNhYmxlZH1cIj5cblx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGhlbHBlclRleHQpXCI+e3toZWxwZXJUZXh0fX08L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiaXNUZW1wbGF0ZShoZWxwZXJUZXh0KVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlbHBlclRleHRcIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2ICpuZ0lmPVwiIXdhcm4gJiYgaW52YWxpZFwiIGNsYXNzPVwiY2RzLS1mb3JtLXJlcXVpcmVtZW50XCI+XG5cdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZShpbnZhbGlkVGV4dClcIj57eyBpbnZhbGlkVGV4dCB9fTwvbmctY29udGFpbmVyPlxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJpc1RlbXBsYXRlKGludmFsaWRUZXh0KVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImludmFsaWRUZXh0XCI+PC9uZy10ZW1wbGF0ZT5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiAqbmdJZj1cIiFpbnZhbGlkICYmIHdhcm5cIiBjbGFzcz1cImNkcy0tZm9ybS1yZXF1aXJlbWVudFwiPlxuXHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUod2FyblRleHQpXCI+e3t3YXJuVGV4dH19PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUod2FyblRleHQpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwid2FyblRleHRcIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdGAsXG5cdHByb3ZpZGVyczogW1xuXHRcdHtcblx0XHRcdHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuXHRcdFx0dXNlRXhpc3Rpbmc6IENvbWJvQm94LFxuXHRcdFx0bXVsdGk6IHRydWVcblx0XHR9XG5cdF1cbn0pXG5leHBvcnQgY2xhc3MgQ29tYm9Cb3ggaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG5cdC8qKlxuXHQgKiBUZXh0IHRvIHNob3cgd2hlbiBub3RoaW5nIGlzIHNlbGVjdGVkLlxuXHQgKi9cblx0QElucHV0KCkgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9wbGFjZWhvbGRlci5vdmVycmlkZSh2YWx1ZSk7XG5cdH1cblxuXHRnZXQgcGxhY2Vob2xkZXIoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyLnZhbHVlO1xuXHR9XG5cdC8qKlxuXHQgKiBWYWx1ZSB0byBkaXNwbGF5IGZvciBhY2Nlc3NpYmlsaXR5IHB1cnBvc2VzIG9uIHRoZSBjb21ib2JveCBjb250cm9sIG1lbnUgd2hlbiBjbG9zZWRcblx0ICovXG5cdEBJbnB1dCgpIHNldCBvcGVuTWVudUFyaWEodmFsdWU6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPikge1xuXHRcdHRoaXMuX29wZW5NZW51QXJpYS5vdmVycmlkZSh2YWx1ZSk7XG5cdH1cblxuXHRnZXQgb3Blbk1lbnVBcmlhKCkge1xuXHRcdHJldHVybiB0aGlzLl9vcGVuTWVudUFyaWEudmFsdWU7XG5cdH1cblx0LyoqXG5cdCAqIFZhbHVlIHRvIGRpc3BsYXkgZm9yIGFjY2Vzc2liaWxpdHkgcHVycG9zZXMgb24gdGhlIGNvbWJvYm94IGNvbnRyb2wgbWVudSB3aGVuIG9wZW5lZFxuXHQgKi9cblx0QElucHV0KCkgc2V0IGNsb3NlTWVudUFyaWEodmFsdWU6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPikge1xuXHRcdHRoaXMuX2Nsb3NlTWVudUFyaWEub3ZlcnJpZGUodmFsdWUpO1xuXHR9XG5cblx0Z2V0IGNsb3NlTWVudUFyaWEoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2Nsb3NlTWVudUFyaWEudmFsdWU7XG5cdH1cblx0LyoqXG5cdCAqIFZhbHVlIHRvIGRpc3BsYXkgb24gdGhlIGNsZWFyIHNlbGVjdGlvbnMgaWNvbiwgd2hlbiBtdWx0aSBpcyBzZWxlY3RlZFxuXHQgKi9cblx0QElucHV0KCkgc2V0IGNsZWFyU2VsZWN0aW9uc1RpdGxlKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9jbGVhclNlbGVjdGlvbnNUaXRsZS5vdmVycmlkZSh2YWx1ZSk7XG5cdH1cblxuXHRnZXQgY2xlYXJTZWxlY3Rpb25zVGl0bGUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2NsZWFyU2VsZWN0aW9uc1RpdGxlLnZhbHVlO1xuXHR9XG5cdC8qKlxuXHQgKiBWYWx1ZSB0byBkaXNwbGF5IGZvciBhY2Nlc3NpYmlsaXR5IHB1cnBvc2VzIHRvIGNsZWFyIHNlbGVjdGlvbnMsIHdoZW4gbXVsdGkgaXMgc2VsZWN0ZWRcblx0ICovXG5cdEBJbnB1dCgpIHNldCBjbGVhclNlbGVjdGlvbnNBcmlhKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9jbGVhclNlbGVjdGlvbnNBcmlhLm92ZXJyaWRlKHZhbHVlKTtcblx0fVxuXG5cdGdldCBjbGVhclNlbGVjdGlvbnNBcmlhKCkge1xuXHRcdHJldHVybiB0aGlzLl9jbGVhclNlbGVjdGlvbnNBcmlhLnZhbHVlO1xuXHR9XG5cdC8qKlxuXHQgKiBWYWx1ZSB0byBkaXNwbGF5IG9uIHRoZSBjbGVhciB0aGUgc2VsZWN0ZWQgaXRlbSBpY29uLCB3aGVuIHNpbmdsZSBpcyBzZWxlY3RlZFxuXHQgKi9cblx0QElucHV0KCkgc2V0IGNsZWFyU2VsZWN0aW9uVGl0bGUodmFsdWU6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPikge1xuXHRcdHRoaXMuX2NsZWFyU2VsZWN0aW9uVGl0bGUub3ZlcnJpZGUodmFsdWUpO1xuXHR9XG5cblx0Z2V0IGNsZWFyU2VsZWN0aW9uVGl0bGUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2NsZWFyU2VsZWN0aW9uVGl0bGUudmFsdWU7XG5cdH1cblx0LyoqXG5cdCAqIFZhbHVlIHRvIGRpc3BsYXkgZm9yIGFjY2Vzc2liaWxpdHkgcHVycG9zZXMgb24gdGhlIGNsZWFyIHRoZSBzZWxlY3RlZCBpdGVtIGljb24sIHdoZW4gc2luZ2xlIGlzIHNlbGVjdGVkXG5cdCAqL1xuXHRASW5wdXQoKSBzZXQgY2xlYXJTZWxlY3Rpb25BcmlhKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9jbGVhclNlbGVjdGlvbkFyaWEub3ZlcnJpZGUodmFsdWUpO1xuXHR9XG5cblx0Z2V0IGNsZWFyU2VsZWN0aW9uQXJpYSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fY2xlYXJTZWxlY3Rpb25BcmlhLnZhbHVlO1xuXHR9XG5cdHN0YXRpYyBjb21ib0JveENvdW50ID0gMDtcblx0QElucHV0KCkgaWQgPSBgZHJvcGRvd24tJHtDb21ib0JveC5jb21ib0JveENvdW50Kyt9YDtcblx0LyoqXG5cdCAqIExpc3Qgb2YgaXRlbXMgdG8gZmlsbCB0aGUgY29udGVudCB3aXRoLlxuXHQgKlxuXHQgKiAqKkV4YW1wbGU6Kipcblx0ICogYGBgamF2YXNjcmlwdFxuXHQgKiBpdGVtcyA9IFtcblx0ICpcdFx0e1xuXHQgKlx0XHRcdGNvbnRlbnQ6IFwiQWJhY3VzXCIsXG5cdCAqXHRcdFx0c2VsZWN0ZWQ6IGZhbHNlXG5cdCAqXHRcdH0sXG5cdCAqXHRcdHtcblx0ICpcdFx0XHRjb250ZW50OiBcIkJ5dGVcIixcblx0ICpcdFx0XHRzZWxlY3RlZDogZmFsc2UsXG5cdCAqXHRcdH0sXG5cdCAqXHRcdHtcblx0ICpcdFx0XHRjb250ZW50OiBcIkNvbXB1dGVyXCIsXG5cdCAqXHRcdFx0c2VsZWN0ZWQ6IGZhbHNlXG5cdCAqXHRcdH0sXG5cdCAqXHRcdHtcblx0ICpcdFx0XHRjb250ZW50OiBcIkRpZ2l0YWxcIixcblx0ICpcdFx0XHRzZWxlY3RlZDogZmFsc2Vcblx0ICpcdFx0fVxuXHQgKiBdO1xuXHQgKiBgYGBcblx0ICpcblx0ICovXG5cdEBJbnB1dCgpIGl0ZW1zOiBBcnJheTxMaXN0SXRlbT4gPSBbXTtcblx0LyoqXG5cdCAqIENvbWJvIGJveCB0eXBlIChzdXBwb3J0aW5nIHNpbmdsZSBvciBtdWx0aSBzZWxlY3Rpb24gb2YgaXRlbXMpLlxuXHQgKi9cblx0QElucHV0KCkgdHlwZTogXCJzaW5nbGVcIiB8IFwibXVsdGlcIiA9IFwic2luZ2xlXCI7XG5cdC8qKlxuXHQgKiBDb21ibyBib3ggcmVuZGVyIHNpemUuXG5cdCAqL1xuXHRASW5wdXQoKSBzaXplOiBcInNtXCIgfCBcIm1kXCIgfCBcImxnXCIgPSBcIm1kXCI7XG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIHByb3BlcnR5IHRvIGJlIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZSB0byBgbmdNb2RlbGBcblx0ICovXG5cdEBJbnB1dCgpIGl0ZW1WYWx1ZUtleTogc3RyaW5nO1xuXHQvKipcblx0ICogTGFiZWwgZm9yIHRoZSBjb21ib2JveC5cblx0ICovXG5cdEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHQvKipcblx0ICogU2V0cyB0aGUgb3B0aW9uYWwgaGVscGVyIHRleHQuXG5cdCAqL1xuXHRASW5wdXQoKSBoZWxwZXJUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHQvKipcblx0ICogc2V0IHRvIGB0cnVlYCB0byBwbGFjZSB0aGUgZHJvcGRvd24gdmlldyBpbmxpbmUgd2l0aCB0aGUgY29tcG9uZW50XG5cdCAqL1xuXHRASW5wdXQoKSBhcHBlbmRJbmxpbmU6IGJvb2xlYW4gPSBudWxsO1xuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCB0byBzaG93IHRoZSBpbnZhbGlkIHN0YXRlLlxuXHQgKi9cblx0QElucHV0KCkgaW52YWxpZCA9IGZhbHNlO1xuXHQvKipcblx0ICogVmFsdWUgZGlzcGxheWVkIGlmIGNvbWJvYm94IGlzIGluIGFuIGludmFsaWQgc3RhdGUuXG5cdCAqL1xuXHRASW5wdXQoKSBpbnZhbGlkVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0LyoqXG5cdCogU2V0IHRvIGB0cnVlYCB0byBzaG93IGEgd2FybmluZyAoY29udGVudHMgc2V0IGJ5IHdhcm5UZXh0KVxuXHQqL1xuXHRASW5wdXQoKSB3YXJuID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB3YXJuaW5nIHRleHRcblx0ICovXG5cdEBJbnB1dCgpIHdhcm5UZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHQvKipcblx0ICogTWF4IGxlbmd0aCB2YWx1ZSB0byBsaW1pdCBpbnB1dCBjaGFyYWN0ZXJzXG5cdCAqL1xuXHRASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlciA9IG51bGw7XG5cdC8qKlxuXHQgKiBAZGVwcmVjYXRlZCBzaW5jZSB2NSAtIFVzZSBgY2RzTGF5ZXJgIGRpcmVjdGl2ZSBpbnN0ZWFkXG5cdCAqL1xuXHRASW5wdXQoKSB0aGVtZTogXCJsaWdodFwiIHwgXCJkYXJrXCIgPSBcImRhcmtcIjtcblx0LyoqXG5cdCAqIFNwZWNpZnkgZmVlZGJhY2sgKG1vZGUpIG9mIHRoZSBzZWxlY3Rpb24uXG5cdCAqIGB0b3BgOiBzZWxlY3RlZCBpdGVtIGp1bXBzIHRvIHRvcFxuXHQgKiBgZml4ZWRgOiBzZWxlY3RlZCBpdGVtIHN0YXlzIGF0IGl0cyBwb3NpdGlvblxuXHQgKiBgdG9wLWFmdGVyLXJlb3BlbmA6IHNlbGVjdGVkIGl0ZW0ganVtcCB0byB0b3AgYWZ0ZXIgcmVvcGVuIGRyb3Bkb3duXG5cdCAqL1xuXHRASW5wdXQoKSBzZWxlY3Rpb25GZWVkYmFjazogXCJ0b3BcIiB8IFwiZml4ZWRcIiB8IFwidG9wLWFmdGVyLXJlb3BlblwiID0gXCJ0b3AtYWZ0ZXItcmVvcGVuXCI7XG5cdC8qKlxuXHQgKiBTcGVjaWZ5IGFyaWEtYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZSBvZiB0ZXh0IGlucHV0LlxuXHQgKiBcImxpc3RcIiwgaXMgdGhlIGV4cGVjdGVkIHZhbHVlIGZvciBhIGNvbWJvYm94IHRoYXQgaW52b2tlcyBhIGRyb3AtZG93biBsaXN0XG5cdCAqL1xuXHRASW5wdXQoKSBhdXRvY29tcGxldGUgPSBcImxpc3RcIjtcblx0LyoqXG5cdCAqIE92ZXJyaWRlcyB0aGUgYXV0b21hdGljIGRyb3BVcC5cblx0ICovXG5cdEBJbnB1dCgpIGRyb3BVcDogYm9vbGVhbjtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgdG8gZGlzYWJsZSBjb21ib2JveC5cblx0ICovXG5cdEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBFbWl0cyBhIExpc3RJdGVtXG5cdCAqXG5cdCAqIEV4YW1wbGU6XG5cdCAqIGBgYGphdmFzY3JpcHRcblx0ICoge1xuXHQgKiBcdFx0Y29udGVudDogXCJvbmVcIixcblx0ICogXHRcdHNlbGVjdGVkOiB0cnVlXG5cdCAqIH1cblx0ICogYGBgXG5cdCAqL1xuXHRAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPExpc3RJdGVtIHwgTGlzdEl0ZW1bXT4oKTtcblx0LyoqXG5cdCAqIEludGVuZGVkIHRvIGJlIHVzZWQgdG8gYWRkIGl0ZW1zIHRvIHRoZSBsaXN0LlxuXHQgKlxuXHQgKiBFbWl0cyBhbiBldmVudCB0aGF0IGluY2x1ZGVzIHRoZSBjdXJyZW50IGl0ZW0gbGlzdCwgdGhlIHN1Z2dlc3RlZCBpbmRleCBmb3IgdGhlIG5ldyBpdGVtLCBhbmQgYSBzaW1wbGUgTGlzdEl0ZW1cblx0ICpcblx0ICogRXhhbXBsZTpcblx0ICogYGBgamF2YXNjcmlwdFxuXHQgKlx0e1xuXHQgKlx0XHRpdGVtczogW3tjb250ZW50OiBcIm9uZVwiLCBzZWxlY3RlZDogdHJ1ZX0sIHtjb250ZW50OiBcInR3b1wiLCBzZWxlY3RlZDogdHJ1ZX1dLFxuXHQgKlx0XHRpbmRleDogMSxcblx0ICpcdFx0dmFsdWU6IHtcblx0ICpcdFx0XHRjb250ZW50OiBcInNvbWUgdXNlciBzdHJpbmdcIixcblx0ICpcdFx0XHRzZWxlY3RlZDogZmFsc2Vcblx0ICpcdFx0fVxuXHQgKlx0fVxuXHQgKiBgYGBcblx0ICpcblx0ICpcblx0ICogRXhhbXBsZTpcblx0ICogYGBgamF2YXNjcmlwdFxuXHQgKiB7XG5cdCAqXHRhZnRlcjogMSxcblx0ICpcdHZhbHVlOiBcInNvbWUgdXNlciBzdHJpbmdcIlxuXHQgKiB9XG5cdCAqIGBgYFxuXHQgKi9cblx0QE91dHB1dCgpIHN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXIgPHtcblx0XHRpdGVtczogTGlzdEl0ZW1bXSxcblx0XHRpbmRleDogbnVtYmVyLFxuXHRcdHZhbHVlOiB7XG5cdFx0XHRjb250ZW50OiBzdHJpbmcsXG5cdFx0XHRzZWxlY3RlZDogYm9vbGVhblxuXHRcdH1cblx0fT4oKTtcblx0LyoqIEVtaXRzIGFuIGVtcHR5IGV2ZW50IHdoZW4gdGhlIG1lbnUgaXMgY2xvc2VkICovXG5cdEBPdXRwdXQoKSBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblx0LyoqIEVtaXRzIHRoZSBzZWFyY2ggc3RyaW5nIGZyb20gdGhlIGlucHV0ICovXG5cdEBPdXRwdXQoKSBzZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblx0LyoqIEVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIGNsZWFyIGJ1dHRvbiBpcyBjbGlja2VkLiAqL1xuXHRAT3V0cHV0KCkgY2xlYXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cdC8qKiBDb250ZW50Q2hpbGQgcmVmZXJlbmNlIHRvIHRoZSBpbnN0YW50aWF0ZWQgZHJvcGRvd24gbGlzdCAqL1xuXHRAQ29udGVudENoaWxkKEFic3RyYWN0RHJvcGRvd25WaWV3LCB7IHN0YXRpYzogdHJ1ZSB9KSB2aWV3OiBBYnN0cmFjdERyb3Bkb3duVmlldztcblx0QFZpZXdDaGlsZChcImRyb3Bkb3duTWVudVwiKSBkcm9wZG93bk1lbnU7XG5cdEBWaWV3Q2hpbGQoXCJpbnB1dFwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbnB1dDogRWxlbWVudFJlZjtcblx0QFZpZXdDaGlsZChcImxpc3Rib3hcIiwgeyBzdGF0aWM6IHRydWUgfSkgbGlzdGJveDogRWxlbWVudFJlZjtcblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1saXN0LWJveF9fd3JhcHBlclwiKSBob3N0Q2xhc3MgPSB0cnVlO1xuXHRASG9zdEJpbmRpbmcoXCJzdHlsZS5kaXNwbGF5XCIpIGRpc3BsYXkgPSBcImJsb2NrXCI7XG5cblx0cHVibGljIG9wZW4gPSBmYWxzZTtcblxuXHRwdWJsaWMgc2hvd0NsZWFyQnV0dG9uID0gZmFsc2U7XG5cblx0LyoqIFNlbGVjdGVkIGl0ZW1zIGZvciBtdWx0aS1zZWxlY3QgY29tYm8tYm94ZXMuICovXG5cdHB1YmxpYyBwaWxscyA9IFtdO1xuXHQvKiogdXNlZCB0byB1cGRhdGUgdGhlIGRpc3BsYXlWYWx1ZSAqL1xuXHRwdWJsaWMgc2VsZWN0ZWRWYWx1ZSA9IFwiXCI7XG5cblx0a2V5Ym9hcmROYXYgPSB0aGlzLl9rZXlib2FyZE5hdi5iaW5kKHRoaXMpO1xuXHQvKipcblx0ICogY29udHJvbHMgd2hldGhlciB0aGUgYGRyb3AtdXBgIGNsYXNzIGlzIGFwcGxpZWRcblx0ICovXG5cdF9kcm9wVXAgPSBmYWxzZTtcblxuXHRwcm90ZWN0ZWQgbm9vcCA9IHRoaXMuX25vb3AuYmluZCh0aGlzKTtcblx0cHJvdGVjdGVkIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gdGhpcy5fbm9vcDtcblx0cHJvdGVjdGVkIHByb3BhZ2F0ZUNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gdGhpcy5fbm9vcDtcblxuXHRwcm90ZWN0ZWQgX3BsYWNlaG9sZGVyID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiQ09NQk9CT1guUExBQ0VIT0xERVJcIik7XG5cdHByb3RlY3RlZCBfY2xvc2VNZW51QXJpYSA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIkNPTUJPQk9YLkExMVkuQ0xPU0VfTUVOVVwiKTtcblx0cHJvdGVjdGVkIF9vcGVuTWVudUFyaWEgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJDT01CT0JPWC5BMTFZLk9QRU5fTUVOVVwiKTtcblx0cHJvdGVjdGVkIF9jbGVhclNlbGVjdGlvbnNUaXRsZSA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIkNPTUJPQk9YLkNMRUFSX1NFTEVDVElPTlNcIik7XG5cdHByb3RlY3RlZCBfY2xlYXJTZWxlY3Rpb25zQXJpYSA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIkNPTUJPQk9YLkExMVkuQ0xFQVJfU0VMRUNUSU9OU1wiKTtcblx0cHJvdGVjdGVkIF9jbGVhclNlbGVjdGlvblRpdGxlID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiQ09NQk9CT1guQ0xFQVJfU0VMRUNURURcIik7XG5cdHByb3RlY3RlZCBfY2xlYXJTZWxlY3Rpb25BcmlhID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiQ09NQk9CT1guQTExWS5DTEVBUl9TRUxFQ1RFRFwiKTtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBDb21ib0JveC5cblx0ICovXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuXHRcdHByb3RlY3RlZCBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcblx0XHRwcm90ZWN0ZWQgZHJvcGRvd25TZXJ2aWNlOiBEcm9wZG93blNlcnZpY2UsXG5cdFx0cHJvdGVjdGVkIGkxOG46IEkxOG5cblx0KSB7fVxuXG5cdC8qKlxuXHQgKiBMaWZlY3ljbGUgaG9vay5cblx0ICogVXBkYXRlcyBwaWxscyBpZiBuZWNlc3NhcnkuXG5cdCAqXG5cdCAqL1xuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzKSB7XG5cdFx0aWYgKGNoYW5nZXMuaXRlbXMpIHtcblx0XHRcdHRoaXMudmlldy5pdGVtcyA9IGNoYW5nZXMuaXRlbXMuY3VycmVudFZhbHVlO1xuXHRcdFx0dGhpcy51cGRhdGVTZWxlY3RlZCgpO1xuXHRcdFx0Ly8gSWYgbmV3IGl0ZW1zIGFyZSBhZGRlZCBpbnRvIHRoZSBjb21ib2JveCB3aGlsZSB0aGVyZSBpcyBzZWFyY2ggaW5wdXQsXG5cdFx0XHQvLyByZXBlYXQgdGhlIHNlYXJjaC4gU2VhcmNoIHNob3VsZCBvbmx5IHRyaWdnZXIgZm9yIHR5cGUgJ3NpbmdsZScgd2hlbiB0aGVyZSBpcyBubyB2YWx1ZSBzZWxlY3RlZC5cblx0XHRcdGlmICggdGhpcy50eXBlID09PSBcIm11bHRpXCIgfHwgKHRoaXMudHlwZSA9PT0gXCJzaW5nbGVcIiAmJiAhdGhpcy5zZWxlY3RlZFZhbHVlKSkge1xuXHRcdFx0XHR0aGlzLm9uU2VhcmNoKHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSwgZmFsc2UpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIGluaXRpYWwgc3RhdGUgdGhhdCBkZXBlbmRzIG9uIGNoaWxkIGNvbXBvbmVudHNcblx0ICogU3Vic2NyaWJlcyB0byBzZWxlY3QgZXZlbnRzIGFuZCBoYW5kbGVzIGZvY3VzL2ZpbHRlcmluZy9pbml0aWFsIGxpc3QgdXBkYXRlc1xuXHQgKi9cblx0bmdBZnRlckNvbnRlbnRJbml0KCkge1xuXHRcdGlmICh0aGlzLnZpZXcpIHtcblx0XHRcdHRoaXMudmlldy50eXBlID0gdGhpcy50eXBlO1xuXG5cdFx0XHQvLyBmdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgZXZlbnQgaXMgb3JnYW5pYyAoaXNVcGRhdGUgPT09IGZhbHNlKSBvciBwcm9ncmFtbWF0aWNcblx0XHRcdGNvbnN0IGlzVXBkYXRlID0gZXZlbnQgPT4gZXZlbnQgJiYgZXZlbnQuaXNVcGRhdGU7XG5cblx0XHRcdHRoaXMudmlldy5zZWxlY3Quc3Vic2NyaWJlKGV2ZW50ID0+IHtcblx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoZXZlbnQpKSB7XG5cdFx0XHRcdFx0dGhpcy51cGRhdGVQaWxscygpO1xuXHRcdFx0XHRcdGlmICghaXNVcGRhdGUoZXZlbnQpKSB7XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5pdGVtVmFsdWVLZXkgJiYgdGhpcy52aWV3LmdldFNlbGVjdGVkKCkpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdmFsdWVzID0gdGhpcy52aWV3LmdldFNlbGVjdGVkKCkubWFwKGl0ZW0gPT4gaXRlbVt0aGlzLml0ZW1WYWx1ZUtleV0pO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZUNhbGxiYWNrKHZhbHVlcyk7XG5cdFx0XHRcdFx0XHQvLyBvdGhlcndpc2UganVzdCBwYXNzIHVwIHRoZSB2YWx1ZXMgZnJvbSBgZ2V0U2VsZWN0ZWRgXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZUNhbGxiYWNrKHRoaXMudmlldy5nZXRTZWxlY3RlZCgpKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gSWYgdHlwZSBpcyBzaW5nbGUsIGRyb3Bkb3duIGxpc3Qgd2lsbCBlbWl0IGFuIG9iamVjdFxuXHRcdFx0XHRcdGlmIChldmVudC5pdGVtICYmIGV2ZW50Lml0ZW0uc2VsZWN0ZWQpIHtcblx0XHRcdFx0XHRcdHRoaXMuc2hvd0NsZWFyQnV0dG9uID0gdHJ1ZTtcblx0XHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IGV2ZW50Lml0ZW0uY29udGVudDtcblxuXHRcdFx0XHRcdFx0aWYgKCFpc1VwZGF0ZShldmVudCkpIHtcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuaXRlbVZhbHVlS2V5KSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2VDYWxsYmFjayhldmVudC5pdGVtW3RoaXMuaXRlbVZhbHVlS2V5XSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2VDYWxsYmFjayhldmVudC5pdGVtKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkVmFsdWUgPSBcIlwiO1xuXHRcdFx0XHRcdFx0aWYgKCFpc1VwZGF0ZShldmVudCkpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2VDYWxsYmFjayhudWxsKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gbm90IGd1YXJkaW5nIHRoZXNlIHNpbmNlIHRoZSBuYXRpdmVFbGVtZW50IGhhcyB0byBiZSBsb2FkZWRcblx0XHRcdFx0XHQvLyBmb3Igc2VsZWN0IHRvIGV2ZW4gZmlyZVxuXHRcdFx0XHRcdC8vIG9ubHkgZm9jdXMgZm9yIFwib3JnYW5pY1wiIHNlbGVjdGlvbnNcblx0XHRcdFx0XHRpZiAoIWlzVXBkYXRlKGV2ZW50KSkge1xuXHRcdFx0XHRcdFx0dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcImlucHV0XCIpLmZvY3VzKCk7XG5cdFx0XHRcdFx0XHR0aGlzLnZpZXcuZmlsdGVyQnkoXCJcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuY2xvc2VEcm9wZG93bigpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghaXNVcGRhdGUoZXZlbnQpICYmICFBcnJheS5pc0FycmF5KGV2ZW50KSkge1xuXHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWQuZW1pdChldmVudC5pdGVtKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHQvLyB1cGRhdGUgdGhlIHJlc3Qgb2YgY29tYm9ib3ggd2l0aCBhbnkgcHJlLXNlbGVjdGVkIGl0ZW1zXG5cdFx0XHQvLyBzZXRUaW1lb3V0IGp1c3QgZGVmZXJzIHRoZSBjYWxsIHRvIHRoZSBuZXh0IGNoZWNrIGN5Y2xlXG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0dGhpcy51cGRhdGVTZWxlY3RlZCgpO1xuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMudmlldy5ibHVySW50ZW50LnBpcGUoZmlsdGVyKHYgPT4gdiA9PT0gXCJ0b3BcIikpLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHRcdHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuY2RzLS10ZXh0LWlucHV0XCIpLmZvY3VzKCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQmluZHMgZXZlbnQgaGFuZGxlcnMgYWdhaW5zdCB0aGUgcmVuZGVyZWQgdmlld1xuXHQgKi9cblx0bmdBZnRlclZpZXdJbml0KCkge1xuXHRcdHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmhhbmRsZUNsaWNrKGV2ZW50ID0+IHtcblx0XHRcdGlmICghdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuXHRcdFx0XHQhdGhpcy5kcm9wZG93bk1lbnUubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG5cdFx0XHRcdGlmICh0aGlzLm9wZW4pIHtcblx0XHRcdFx0XHR0aGlzLmNsb3NlRHJvcGRvd24oKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdC8vIGlmIGFwcGVuZElubGluZSBpcyBkZWZhdWx0IHZhbHVlZCAobnVsbCkgd2Ugc2hvdWxkOlxuXHRcdC8vIDEuIGlmIHRoZXJlIGFyZSBzY3JvbGxhYmxlIHBhcmVudHMgKG5vdCBpbmNsdWRpbmcgYm9keSkgZG9uJ3QgYXBwZW5kIGlubGluZVxuXHRcdC8vICAgIHRoaXMgc2hvdWxkIGFsc28gY292ZXIgdGhlIGNhc2Ugd2hlcmUgdGhlIGRyb3Bkb3duIGlzIGluIGEgbW9kYWxcblx0XHQvLyAgICAod2hlcmUgd2UgX2RvXyB3YW50IHRvIGFwcGVuZCB0byB0aGUgcGxhY2Vob2xkZXIpXG5cdFx0aWYgKHRoaXMuYXBwZW5kSW5saW5lID09PSBudWxsICYmIGhhc1Njcm9sbGFibGVQYXJlbnRzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSkge1xuXHRcdFx0dGhpcy5hcHBlbmRJbmxpbmUgPSBmYWxzZTtcblx0XHQvLyAyLiBvdGhlcndpc2Ugd2Ugc2hvdWxkIGFwcGVuZCBpbmxpbmVcblx0XHR9IGVsc2UgaWYgKHRoaXMuYXBwZW5kSW5saW5lID09PSBudWxsKSB7XG5cdFx0XHR0aGlzLmFwcGVuZElubGluZSA9IHRydWU7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92aW5nIHRoZSBgRHJvcGRvd25gIGZyb20gdGhlIGJvZHkgaWYgaXQgaXMgYXBwZW5kZWQgdG8gdGhlIGJvZHkuXG5cdCAqL1xuXHRuZ09uRGVzdHJveSgpIHtcblx0XHRpZiAoIXRoaXMuYXBwZW5kSW5saW5lKSB7XG5cdFx0XHR0aGlzLl9hcHBlbmRUb0Ryb3Bkb3duKCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgYEVzY2FwZS9UYWJgIGtleSBjbG9zaW5nIHRoZSBkcm9wZG93biwgYW5kIGFycm93IHVwL2Rvd24gZm9jdXMgdG8vZnJvbSB0aGUgZHJvcGRvd24gbGlzdC5cblx0ICovXG5cdEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duXCIsIFtcIiRldmVudFwiXSlcblx0aG9zdGtleXMoZXY6IEtleWJvYXJkRXZlbnQpIHtcblx0XHRpZiAoZXYua2V5ID09PSBcIkVzY2FwZVwiKSB7XG5cdFx0XHR0aGlzLmNsb3NlRHJvcGRvd24oKTtcblx0XHR9IGVsc2UgaWYgKChldi5rZXkgPT09IFwiQXJyb3dEb3duXCIpXG5cdFx0XHQmJiAoIXRoaXMuZHJvcGRvd25NZW51IHx8ICF0aGlzLmRyb3Bkb3duTWVudS5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2LnRhcmdldCkpKSB7XG5cdFx0XHRldi5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdHRoaXMub3BlbkRyb3Bkb3duKCk7XG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy52aWV3LmluaXRGb2N1cygpOyB9LCAwKTtcblx0XHR9XG5cblx0XHRpZiAoXG5cdFx0XHR0aGlzLm9wZW4gJiYgZXYua2V5ID09PSBcIlRhYlwiICYmXG5cdFx0XHQodGhpcy5kcm9wZG93bk1lbnUubmF0aXZlRWxlbWVudC5jb250YWlucyhldi50YXJnZXQgYXMgTm9kZSkgfHwgZXYudGFyZ2V0ID09PSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQpXG5cdFx0KSB7XG5cdFx0XHR0aGlzLmNsb3NlRHJvcGRvd24oKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5vcGVuICYmIGV2LmtleSA9PT0gXCJUYWJcIiAmJiBldi5zaGlmdEtleSkge1xuXHRcdFx0dGhpcy5jbG9zZURyb3Bkb3duKCk7XG5cdFx0fVxuXHR9XG5cblx0Lypcblx0ICogbm8tb3AgbWV0aG9kIGZvciBudWxsIGV2ZW50IGxpc3RlbmVycywgYW5kIG90aGVyIG5vIG9wIGNhbGxzXG5cdCAqL1xuXHRfbm9vcCgpIHt9XG5cblx0Lypcblx0ICogcHJvcGFnYXRlcyB0aGUgdmFsdWUgcHJvdmlkZWQgZnJvbSBuZ01vZGVsXG5cdCAqL1xuXHR3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcblx0XHRpZiAodGhpcy50eXBlID09PSBcInNpbmdsZVwiKSB7XG5cdFx0XHRpZiAodGhpcy5pdGVtVmFsdWVLZXkpIHtcblx0XHRcdFx0Ly8gY2xvbmUgdGhlIHNwZWNpZmllZCBpdGVtIGFuZCB1cGRhdGUgaXRzIHN0YXRlXG5cdFx0XHRcdGNvbnN0IG5ld1ZhbHVlID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy52aWV3LmdldExpc3RJdGVtcygpLmZpbmQoaXRlbSA9PiBpdGVtW3RoaXMuaXRlbVZhbHVlS2V5XSA9PT0gdmFsdWUpKTtcblx0XHRcdFx0bmV3VmFsdWUuc2VsZWN0ZWQgPSB0cnVlO1xuXHRcdFx0XHR0aGlzLnZpZXcucHJvcGFnYXRlU2VsZWN0ZWQoW25ld1ZhbHVlXSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBhbGwgaXRlbXMgaW4gcHJvcGFnYXRlU2VsZWN0ZWQgbXVzdCBiZSBpdGVyYWJsZVxuXHRcdFx0XHR0aGlzLnZpZXcucHJvcGFnYXRlU2VsZWN0ZWQoW3ZhbHVlIHx8IFwiXCJdKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuc2hvd0NsZWFyQnV0dG9uID0gISEodmFsdWUgJiYgdGhpcy52aWV3LmdldFNlbGVjdGVkKCkubGVuZ3RoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKHRoaXMuaXRlbVZhbHVlS2V5KSB7XG5cdFx0XHRcdC8vIGNsb25lIHRoZSBpdGVtcyBhbmQgdXBkYXRlIHRoZWlyIHN0YXRlIGJhc2VkIG9uIHRoZSByZWNlaXZlZCB2YWx1ZSBhcnJheVxuXHRcdFx0XHQvLyB0aGlzIHdheSB3ZSBkb24ndCBsb3NlIGFueSBhZGRpdGlvbmFsIG1ldGFkYXRhIHRoYXQgbWF5IGJlIHBhc3NlZCBpbiB2aWEgdGhlIGBpdGVtc2AgSW5wdXRcblx0XHRcdFx0bGV0IG5ld1ZhbHVlcyA9IFtdO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHYgb2YgdmFsdWUpIHtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy52aWV3LmdldExpc3RJdGVtcygpKSB7XG5cdFx0XHRcdFx0XHRpZiAoaXRlbVt0aGlzLml0ZW1WYWx1ZUtleV0gPT09IHYpIHtcblx0XHRcdFx0XHRcdFx0bmV3VmFsdWVzLnB1c2goT2JqZWN0LmFzc2lnbih7fSwgaXRlbSwgeyBzZWxlY3RlZDogdHJ1ZSB9KSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMudmlldy5wcm9wYWdhdGVTZWxlY3RlZChuZXdWYWx1ZXMpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy52aWV3LnByb3BhZ2F0ZVNlbGVjdGVkKHZhbHVlID8gdmFsdWUgOiBbXCJcIl0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHR0aGlzLnVwZGF0ZVNlbGVjdGVkKCk7XG5cdH1cblxuXHRvbkJsdXIoKSB7XG5cdFx0dGhpcy5vblRvdWNoZWRDYWxsYmFjaygpO1xuXHR9XG5cblx0cmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG5cdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2VDYWxsYmFjayA9IGZuO1xuXHR9XG5cblx0cmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuXHRcdHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBgQ29udHJvbFZhbHVlQWNjZXNzb3JgIG1ldGhvZCB0byBwcm9ncmFtbWF0aWNhbGx5IGRpc2FibGUgdGhlIGNvbWJvYm94LlxuXHQgKlxuXHQgKiBleDogYHRoaXMuZm9ybUdyb3VwLmdldChcIm15Q29vbENvbWJvYm94XCIpLmRpc2FibGUoKTtgXG5cdCAqL1xuXHRzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxsZWQgYnkgYG4tcGlsbC1pbnB1dGAgd2hlbiB0aGUgc2VsZWN0ZWQgcGlsbHMgaGF2ZSBjaGFuZ2VkLlxuXHQgKi9cblx0cHVibGljIHVwZGF0ZVBpbGxzKCkge1xuXHRcdHRoaXMucGlsbHMgPSB0aGlzLnZpZXcuZ2V0U2VsZWN0ZWQoKSB8fCBbXTtcblx0XHR0aGlzLmNoZWNrRm9yUmVvcmRlcigpO1xuXHR9XG5cblx0cHVibGljIGNsZWFyU2VsZWN0ZWQoKSB7XG5cdFx0dGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMubWFwKGl0ZW0gPT4ge1xuXHRcdFx0aWYgKCFpdGVtLmRpc2FibGVkKSB7XG5cdFx0XHRcdGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBpdGVtO1xuXHRcdH0pO1xuXHRcdHRoaXMudmlldy5pdGVtcyA9IHRoaXMuaXRlbXM7XG5cdFx0dGhpcy51cGRhdGVQaWxscygpO1xuXHRcdC8vIGNsZWFyU2VsZWN0ZWQgY2FuIG9ubHkgZmlyZSBvbiB0eXBlPW11bHRpXG5cdFx0Ly8gc28gd2UganVzdCBlbWl0IGdldFNlbGVjdGVkKCkgKGp1c3QgaW4gY2FzZSB0aGVyZSdzIGFueSBkaXNhYmxlZCBidXQgc2VsZWN0ZWQgaXRlbXMpXG5cdFx0Y29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnZpZXcuZ2V0U2VsZWN0ZWQoKTtcblx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZUNhbGxiYWNrKHNlbGVjdGVkKTtcblx0XHR0aGlzLnNlbGVjdGVkLmVtaXQoc2VsZWN0ZWQgYXMgYW55KTtcblx0XHR0aGlzLmNsZWFyLmVtaXQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDbG9zZXMgdGhlIGRyb3Bkb3duIGFuZCBlbWl0cyB0aGUgY2xvc2UgZXZlbnQuXG5cdCAqL1xuXHRwdWJsaWMgY2xvc2VEcm9wZG93bigpIHtcblx0XHR0aGlzLm9wZW4gPSBmYWxzZTtcblx0XHR0aGlzLmNoZWNrRm9yUmVvcmRlcigpO1xuXHRcdHRoaXMuY2xvc2UuZW1pdCgpO1xuXHRcdGlmICghdGhpcy5hcHBlbmRJbmxpbmUpIHtcblx0XHRcdHRoaXMuX2FwcGVuZFRvRHJvcGRvd24oKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogT3BlbnMgdGhlIGRyb3Bkb3duLlxuXHQgKi9cblx0cHVibGljIG9wZW5Ecm9wZG93bigpIHtcblx0XHRpZiAodGhpcy5kaXNhYmxlZCkgeyByZXR1cm47IH1cblx0XHR0aGlzLm9wZW4gPSB0cnVlO1xuXHRcdHRoaXMuX2Ryb3BVcCA9IGZhbHNlO1xuXG5cdFx0aWYgKCF0aGlzLmFwcGVuZElubGluZSkge1xuXHRcdFx0dGhpcy5fYXBwZW5kVG9Cb2R5KCk7XG5cdFx0fVxuXG5cdFx0Ly8gc2V0IHRoZSBkcm9wZG93biBtZW51IHRvIGRyb3AgdXAgaWYgaXQgaXMgbmVhciB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW5cblx0XHQvLyBzZXRUaW1lb3V0IGxldHMgdXMgZG8gdGhlIGNhbGN1bGF0aW9ucyBhZnRlciBpdCBpcyB2aXNpYmxlIGluIHRoZSBET01cblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdGlmICh0aGlzLmRyb3BVcCA9PT0gbnVsbCB8fCB0aGlzLmRyb3BVcCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHRoaXMuX2Ryb3BVcCA9IHRoaXMuX3Nob3VsZERyb3BVcCgpO1xuXHRcdFx0fVxuXHRcdH0sIDApO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRvZ2dsZXMgdGhlIGRyb3Bkb3duLlxuXHQgKi9cblx0cHVibGljIHRvZ2dsZURyb3Bkb3duKCkge1xuXHRcdGlmICh0aGlzLm9wZW4pIHtcblx0XHRcdHRoaXMuY2xvc2VEcm9wZG93bigpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm9wZW5Ecm9wZG93bigpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBsaXN0IGdyb3VwIGZpbHRlciwgYW5kIG1hbmFnZXMgc2luZ2xlIHNlbGVjdCBpdGVtIHNlbGVjdGlvbi5cblx0ICovXG5cdHB1YmxpYyBvblNlYXJjaChzZWFyY2hTdHJpbmcsIHNob3VsZEVtaXRTZWFyY2ggPSB0cnVlKSB7XG5cdFx0aWYgKHNob3VsZEVtaXRTZWFyY2gpIHtcblx0XHRcdHRoaXMuc2VhcmNoLmVtaXQoc2VhcmNoU3RyaW5nKTtcblx0XHR9XG5cdFx0dGhpcy5zaG93Q2xlYXJCdXR0b24gPSAhIXNlYXJjaFN0cmluZztcblx0XHR0aGlzLnZpZXcuZmlsdGVyQnkoc2VhcmNoU3RyaW5nKTtcblx0XHRpZiAoc2VhcmNoU3RyaW5nICE9PSBcIlwiKSB7XG5cdFx0XHRpZiAoIXRoaXMub3Blbikge1xuXHRcdFx0XHR0aGlzLm9wZW5Ecm9wZG93bigpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNlbGVjdGVkVmFsdWUgPSBcIlwiO1xuXHRcdFx0aWYgKHRoaXMudHlwZSA9PT0gXCJtdWx0aVwiICYmXG5cdFx0XHRcdCh0aGlzLnNlbGVjdGlvbkZlZWRiYWNrID09PSBcInRvcFwiIHx8IHRoaXMuc2VsZWN0aW9uRmVlZGJhY2sgPT09IFwidG9wLWFmdGVyLXJlb3BlblwiKSkge1xuXHRcdFx0XHR0aGlzLnZpZXcucmVvcmRlclNlbGVjdGVkKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICh0aGlzLnR5cGUgPT09IFwic2luZ2xlXCIpIHtcblx0XHRcdC8vIGRlc2VsZWN0IGlmIHRoZSBpbnB1dCBkb2Vzbid0IG1hdGNoIHRoZSBjb250ZW50XG5cdFx0XHQvLyBvZiBhbnkgZ2l2ZW4gaXRlbVxuXHRcdFx0Y29uc3QgbWF0Y2hlcyA9IHRoaXMudmlldy5nZXRMaXN0SXRlbXMoKS5zb21lKGl0ZW0gPT4gaXRlbS5jb250ZW50LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoU3RyaW5nLnRvTG93ZXJDYXNlKCkpKTtcblx0XHRcdGlmICghbWF0Y2hlcykge1xuXHRcdFx0XHRjb25zdCBzZWxlY3RlZCA9IHRoaXMudmlldy5nZXRTZWxlY3RlZCgpO1xuXHRcdFx0XHRpZiAoIXNlbGVjdGVkIHx8ICFzZWxlY3RlZFswXSkge1xuXHRcdFx0XHRcdHRoaXMudmlldy5maWx0ZXJCeShzZWFyY2hTdHJpbmcpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEludGVuZGVkIHRvIGJlIHVzZWQgdG8gYWRkIGl0ZW1zIHRvIHRoZSBsaXN0LlxuXHQgKi9cblx0cHVibGljIG9uU3VibWl0KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG5cdFx0dGhpcy5zdWJtaXQuZW1pdCh7XG5cdFx0XHRpdGVtczogdGhpcy52aWV3LmdldExpc3RJdGVtcygpLFxuXHRcdFx0aW5kZXg6IDAsXG5cdFx0XHR2YWx1ZToge1xuXHRcdFx0XHRjb250ZW50OiAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLFxuXHRcdFx0XHRzZWxlY3RlZDogZmFsc2Vcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdGNsZWFySW5wdXQoZXZlbnQpIHtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG5cdFx0aWYgKHRoaXMudHlwZSA9PT0gXCJzaW5nbGVcIikgeyAvLyBkb24ndCB3YW50IHRvIGNsZWFyIHNlbGVjdGVkIG9yIGNsb3NlIGlmIG11bHRpXG5cdFx0XHR0aGlzLmNsZWFyU2VsZWN0ZWQoKTtcblx0XHRcdHRoaXMuY2xvc2VEcm9wZG93bigpO1xuXHRcdH1cblxuXHRcdHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IFwiXCI7XG5cdFx0dGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcblxuXHRcdHRoaXMuc2hvd0NsZWFyQnV0dG9uID0gZmFsc2U7XG5cdFx0dGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cdFx0dGhpcy5vblNlYXJjaCh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuXHR9XG5cblx0cHVibGljIGlzVGVtcGxhdGUodmFsdWUpIHtcblx0XHRyZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIGtleWJvYXJkIGV2ZW50cyBzbyB1c2VycyBhcmUgY29udHJvbGxpbmcgdGhlIGBEcm9wZG93bmAgaW5zdGVhZCBvZiB1bmludGVudGlvbmFsbHkgY29udHJvbGxpbmcgb3V0c2lkZSBlbGVtZW50cy5cblx0ICovXG5cdF9rZXlib2FyZE5hdihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuXHRcdGlmICgoZXZlbnQua2V5ID09PSBcIkVzY2FwZVwiKSAmJiB0aGlzLm9wZW4pIHtcblx0XHRcdGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOyAgLy8gZG9uJ3QgdW5pbnRlbnRpb25hbGx5IGNsb3NlIG1vZGFsIGlmIGluc2lkZSBvZiBpdFxuXHRcdH1cblx0XHRpZiAoZXZlbnQua2V5ID09PSBcIkVzY2FwZVwiKSB7XG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0dGhpcy5jbG9zZURyb3Bkb3duKCk7XG5cdFx0XHR0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMub3BlbiAmJiBldmVudC5rZXkgPT09IFwiVGFiXCIpIHtcblx0XHRcdC8vIHRoaXMgd2F5IGZvY3VzIHdpbGwgc3RhcnQgb24gdGhlIG5leHQgZm9jdXNhYmxlIGl0ZW0gZnJvbSB0aGUgZHJvcGRvd25cblx0XHRcdC8vIG5vdCB0aGUgdG9wIG9mIHRoZSBib2R5IVxuXHRcdFx0dGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cdFx0XHR0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgS2V5Ym9hcmRFdmVudChcImtleWRvd25cIiwge2J1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUsIGtleTogXCJUYWJcIn0pKTtcblx0XHRcdHRoaXMuY2xvc2VEcm9wZG93bigpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIHRoZSBgRHJvcGRvd25gIGxpc3QgYXMgYW4gZWxlbWVudCB0aGF0IGlzIGFwcGVuZGVkIHRvIHRoZSBET00gYm9keS5cblx0ICovXG5cdF9hcHBlbmRUb0JvZHkoKSB7XG5cdFx0dGhpcy5kcm9wZG93blNlcnZpY2UuYXBwZW5kVG9Cb2R5KFxuXHRcdFx0dGhpcy5saXN0Ym94Lm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHR0aGlzLmRyb3Bkb3duTWVudS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0YCR7dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lfSR7dGhpcy5vcGVuID8gXCIgY2RzLS1saXN0LWJveC0tZXhwYW5kZWRcIiA6IFwiXCJ9YCk7XG5cdFx0dGhpcy5kcm9wZG93bk1lbnUubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCB0aGlzLmtleWJvYXJkTmF2LCB0cnVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIHRoZSBgRHJvcGRvd25gIGxpc3QgYXBwZW5kaW5nIGl0IHRvIHRoZSBkcm9wZG93biBwYXJlbnQgb2JqZWN0IGluc3RlYWQgb2YgdGhlIGJvZHkuXG5cdCAqL1xuXHRfYXBwZW5kVG9Ecm9wZG93bigpIHtcblx0XHR0aGlzLmRyb3Bkb3duU2VydmljZS5hcHBlbmRUb0Ryb3Bkb3duKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblx0XHR0aGlzLmRyb3Bkb3duTWVudS5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMua2V5Ym9hcmROYXYsIHRydWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldGVjdHMgd2hldGhlciBvciBub3QgdGhlIGBEcm9wZG93bmAgbGlzdCBpcyB2aXNpYmxlIHdpdGhpbiBhbGwgc2Nyb2xsYWJsZSBwYXJlbnRzLlxuXHQgKiBUaGlzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHBhc3NpbmcgaW4gYSB2YWx1ZSB0byB0aGUgYGRyb3BVcGAgaW5wdXQuXG5cdCAqL1xuXHRfc2hvdWxkRHJvcFVwKCkge1xuXHRcdC8vIGNoZWNrIGlmIGRyb3Bkb3duTWVudSBleGlzdHMgZmlyc3QuXG5cdFx0Y29uc3QgbWVudSA9IHRoaXMuZHJvcGRvd25NZW51ICYmIHRoaXMuZHJvcGRvd25NZW51Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5jZHMtLWxpc3QtYm94X19tZW51XCIpO1xuXHRcdC8vIGNoZWNrIGlmIG1lbnUgZXhpc3RzIGZpcnN0LlxuXHRcdGNvbnN0IG1lbnVSZWN0ID0gbWVudSAmJiBtZW51LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRcdGlmIChtZW51ICYmIG1lbnVSZWN0KSB7XG5cdFx0XHRjb25zdCBzY3JvbGxhYmxlUGFyZW50cyA9IGdldFNjcm9sbGFibGVQYXJlbnRzKG1lbnUpO1xuXHRcdFx0cmV0dXJuIHNjcm9sbGFibGVQYXJlbnRzLnJlZHVjZSgoc2hvdWxkRHJvcFVwOiBib29sZWFuLCBwYXJlbnQ6IEhUTUxFbGVtZW50KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHBhcmVudFJlY3QgPSBwYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cdFx0XHRcdGNvbnN0IGlzQmVsb3dQYXJlbnQgPSAhKG1lbnVSZWN0LmJvdHRvbSA8PSBwYXJlbnRSZWN0LmJvdHRvbSk7XG5cdFx0XHRcdHJldHVybiBzaG91bGREcm9wVXAgfHwgaXNCZWxvd1BhcmVudDtcblx0XHRcdH0sIGZhbHNlKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRwcm90ZWN0ZWQgdXBkYXRlU2VsZWN0ZWQoKSB7XG5cdFx0Y29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnZpZXcuZ2V0U2VsZWN0ZWQoKTtcblx0XHRpZiAodGhpcy50eXBlID09PSBcIm11bHRpXCIgKSB7XG5cdFx0XHR0aGlzLnVwZGF0ZVBpbGxzKCk7XG5cdFx0fSBlbHNlIGlmIChzZWxlY3RlZCkge1xuXHRcdFx0Y29uc3QgdmFsdWUgPSBzZWxlY3RlZFswXSA/IHNlbGVjdGVkWzBdLmNvbnRlbnQgOiBcIlwiO1xuXHRcdFx0Y29uc3QgY2hhbmdlQ2FsbGJhY2tWYWx1ZSA9IHNlbGVjdGVkWzBdID8gc2VsZWN0ZWRbMF0gOiBcIlwiO1xuXHRcdFx0dGhpcy5zZWxlY3RlZFZhbHVlID0gdmFsdWU7XG5cdFx0XHR0aGlzLnNob3dDbGVhckJ1dHRvbiA9ICEhdmFsdWU7XG5cdFx0fVxuXHR9XG5cblx0cHJvdGVjdGVkIGNoZWNrRm9yUmVvcmRlcigpIHtcblx0XHRjb25zdCB0b3BBZnRlclJlb3BlbiA9ICF0aGlzLm9wZW4gJiYgdGhpcy5zZWxlY3Rpb25GZWVkYmFjayA9PT0gXCJ0b3AtYWZ0ZXItcmVvcGVuXCI7XG5cdFx0aWYgKCh0aGlzLnR5cGUgPT09IFwibXVsdGlcIikgJiYgKHRvcEFmdGVyUmVvcGVuIHx8IHRoaXMuc2VsZWN0aW9uRmVlZGJhY2sgPT09IFwidG9wXCIpKSB7XG5cdFx0XHR0aGlzLnZpZXcucmVvcmRlclNlbGVjdGVkKHRydWUpO1xuXHRcdH1cblx0fVxufVxuIl19
|
|
1001
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixTQUFTLEVBQ1QsWUFBWSxFQUdaLFdBQVcsRUFDWCxXQUFXLEVBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFtQixNQUFNLG9DQUFvQyxDQUFDO0FBRTNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBRU4sb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7O0FBSXpDOzs7OztHQUtHO0FBcUpILE1BQU0sT0FBTyxRQUFRO0lBK1BwQjs7T0FFRztJQUNILFlBQ1csVUFBc0IsRUFDdEIsZUFBZ0MsRUFDaEMsZUFBZ0MsRUFDaEMsSUFBVTtRQUhWLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxTQUFJLEdBQUosSUFBSSxDQUFNO1FBOUxaLE9BQUUsR0FBRyxZQUFZLFFBQVEsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1FBQ3JEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBeUJHO1FBQ00sVUFBSyxHQUFvQixFQUFFLENBQUM7UUFDckM7O1dBRUc7UUFDTSxTQUFJLEdBQXVCLFFBQVEsQ0FBQztRQUM3Qzs7V0FFRztRQUNNLFNBQUksR0FBdUIsSUFBSSxDQUFDO1FBYXpDOztXQUVHO1FBQ00saUJBQVksR0FBWSxJQUFJLENBQUM7UUFDdEM7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TUFBTSxFQUFFLElBQUksRUFBRTtnQkFDTyxTQUFTO3NCQUFyRCxXQUFXO3VCQUFDLDhCQUE4QjtnQkFDYixPQUFPO3NCQUFwQyxXQUFXO3VCQUFDLGVBQWU7Z0JBZ0s1QixRQUFRO3NCQURQLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRPbkNoYW5nZXMsXG5cdENvbnRlbnRDaGlsZCxcblx0SW5wdXQsXG5cdE91dHB1dCxcblx0SG9zdExpc3RlbmVyLFxuXHRFbGVtZW50UmVmLFxuXHRWaWV3Q2hpbGQsXG5cdEV2ZW50RW1pdHRlcixcblx0QWZ0ZXJWaWV3SW5pdCxcblx0QWZ0ZXJDb250ZW50SW5pdCxcblx0SG9zdEJpbmRpbmcsXG5cdFRlbXBsYXRlUmVmLFxuXHRPbkRlc3Ryb3lcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFic3RyYWN0RHJvcGRvd25WaWV3LCBEcm9wZG93blNlcnZpY2UgfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9kcm9wZG93blwiO1xuaW1wb3J0IHsgTGlzdEl0ZW0gfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9kcm9wZG93blwiO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHtcblx0RG9jdW1lbnRTZXJ2aWNlLFxuXHRnZXRTY3JvbGxhYmxlUGFyZW50cyxcblx0aGFzU2Nyb2xsYWJsZVBhcmVudHNcbn0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvdXRpbHNcIjtcbmltcG9ydCB7IEkxOG4sIE92ZXJyaWRhYmxlIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvaTE4blwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5cbi8qKlxuICogQ29tYm9Cb3hlcyBhcmUgc2ltaWxhciB0byBkcm9wZG93bnMsIGV4Y2VwdCBhIGNvbWJvYm94IHByb3ZpZGVzIGFuIGlucHV0IGZpZWxkIGZvciB1c2VycyB0byBzZWFyY2ggaXRlbXMgYW5kIChvcHRpb25hbGx5KSBhZGQgdGhlaXIgb3duLlxuICogTXVsdGktc2VsZWN0IGNvbWJvYm94ZXMgYWxzbyBwcm92aWRlIFwicGlsbHNcIiBvZiBzZWxlY3RlZCBpdGVtcy5cbiAqXG4gKiBbU2VlIGRlbW9dKC4uLy4uLz9wYXRoPS9zdG9yeS9jb21wb25lbnRzLWNvbWJvYm94LS1iYXNpYylcbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImNkcy1jb21iby1ib3gsIGlibS1jb21iby1ib3hcIixcblx0dGVtcGxhdGU6IGBcblx0XHQ8ZGl2IGNsYXNzPVwiY2RzLS1saXN0LWJveF9fd3JhcHBlclwiPlxuXHRcdFx0PGxhYmVsXG5cdFx0XHRcdCpuZ0lmPVwibGFiZWxcIlxuXHRcdFx0XHRbZm9yXT1cImlkXCJcblx0XHRcdFx0Y2xhc3M9XCJjZHMtLWxhYmVsXCJcblx0XHRcdFx0W25nQ2xhc3NdPVwieydjZHMtLWxhYmVsLS1kaXNhYmxlZCc6IGRpc2FibGVkfVwiPlxuXHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUobGFiZWwpXCI+e3tsYWJlbH19PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUobGFiZWwpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxcIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0PC9sYWJlbD5cblx0XHRcdDxkaXZcblx0XHRcdFx0I2xpc3Rib3hcblx0XHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHRcdCdjZHMtLW11bHRpLXNlbGVjdCBjZHMtLW11bHRpLXNlbGVjdC0tZmlsdGVyYWJsZSc6IHR5cGUgPT09ICdtdWx0aScsXG5cdFx0XHRcdFx0J2Nkcy0tbGlzdC1ib3gtLWxpZ2h0JzogdGhlbWUgPT09ICdsaWdodCcsXG5cdFx0XHRcdFx0J2Nkcy0tbGlzdC1ib3gtLWV4cGFuZGVkJzogb3Blbixcblx0XHRcdFx0XHQnY2RzLS1saXN0LWJveC0tc20nOiBzaXplID09PSAnc20nLFxuXHRcdFx0XHRcdCdjZHMtLWxpc3QtYm94LS1tZCc6IHNpemUgPT09ICdtZCcsXG5cdFx0XHRcdFx0J2Nkcy0tbGlzdC1ib3gtLWxnJzogc2l6ZSA9PT0gJ2xnJyxcblx0XHRcdFx0XHQnY2RzLS1saXN0LWJveC0tZGlzYWJsZWQnOiBkaXNhYmxlZCxcblx0XHRcdFx0XHQnY2RzLS1jb21iby1ib3gtLXdhcm5pbmcgY2RzLS1saXN0LWJveC0td2FybmluZyc6IHdhcm5cblx0XHRcdFx0fVwiXG5cdFx0XHRcdGNsYXNzPVwiY2RzLS1saXN0LWJveCBjZHMtLWNvbWJvLWJveFwiXG5cdFx0XHRcdFthdHRyLmRhdGEtaW52YWxpZF09XCIoaW52YWxpZCA/IHRydWUgOiBudWxsKVwiPlxuXHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLWxpc3QtYm94X19maWVsZFwiXG5cdFx0XHRcdFx0KGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKClcIlxuXHRcdFx0XHRcdChibHVyKT1cIm9uQmx1cigpXCI+XG5cdFx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdFx0Km5nSWY9XCJ0eXBlID09PSAnbXVsdGknICYmIHBpbGxzLmxlbmd0aCA+IDBcIlxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLXRhZyBjZHMtLXRhZy0tZmlsdGVyIGNkcy0tdGFnLS1oaWdoLWNvbnRyYXN0XCJcblx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cInsnY2RzLS10YWctLWRpc2FibGVkJzogZGlzYWJsZWR9XCI+XG5cdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImNkcy0tdGFnX19sYWJlbFwiPnt7IHBpbGxzLmxlbmd0aCB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdDxidXR0b25cblx0XHRcdFx0XHRcdFx0dHlwZT1cImJ1dHRvblwiXG5cdFx0XHRcdFx0XHRcdChjbGljayk9XCJjbGVhclNlbGVjdGVkKCRldmVudClcIlxuXHRcdFx0XHRcdFx0XHQoYmx1cik9XCJvbkJsdXIoKVwiXG5cdFx0XHRcdFx0XHRcdChrZXlkb3duLmVudGVyKT1cImNsZWFyU2VsZWN0ZWQoJGV2ZW50KVwiXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS10YWdfX2Nsb3NlLWljb25cIlxuXHRcdFx0XHRcdFx0XHR0YWJpbmRleD1cIjBcIlxuXHRcdFx0XHRcdFx0XHRbdGl0bGVdPVwiY2xlYXJTZWxlY3Rpb25zVGl0bGVcIlxuXHRcdFx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuXHRcdFx0XHRcdFx0XHRbYXR0ci5hcmlhLWxhYmVsXT1cImNsZWFyU2VsZWN0aW9uQXJpYVwiPlxuXHRcdFx0XHRcdFx0XHQ8c3ZnXG5cdFx0XHRcdFx0XHRcdFx0Zm9jdXNhYmxlPVwiZmFsc2VcIlxuXHRcdFx0XHRcdFx0XHRcdHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCJcblx0XHRcdFx0XHRcdFx0XHRzdHlsZT1cIndpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XCJcblx0XHRcdFx0XHRcdFx0XHRyb2xlPVwiaW1nXCJcblx0XHRcdFx0XHRcdFx0XHR4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcblx0XHRcdFx0XHRcdFx0XHR3aWR0aD1cIjE2XCJcblx0XHRcdFx0XHRcdFx0XHRoZWlnaHQ9XCIxNlwiXG5cdFx0XHRcdFx0XHRcdFx0dmlld0JveD1cIjAgMCAxNiAxNlwiXG5cdFx0XHRcdFx0XHRcdFx0YXJpYS1oaWRkZW49XCJ0cnVlXCI+XG5cdFx0XHRcdFx0XHRcdFx0PHBhdGggZD1cIk0xMiA0LjdsLS43LS43TDggNy4zIDQuNyA0bC0uNy43TDcuMyA4IDQgMTEuM2wuNy43TDggOC43bDMuMyAzLjMuNy0uN0w4LjcgOHpcIj48L3BhdGg+XG5cdFx0XHRcdFx0XHRcdDwvc3ZnPlxuXHRcdFx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PGlucHV0XG5cdFx0XHRcdFx0XHQjaW5wdXRcblx0XHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHRcdGF1dG9jb21wbGV0ZT1cIm9mZlwiXG5cdFx0XHRcdFx0XHRyb2xlPVwiY29tYm9ib3hcIlxuXHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cImRpc2FibGVkXCJcblx0XHRcdFx0XHRcdChpbnB1dCk9XCJvblNlYXJjaCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG5cdFx0XHRcdFx0XHQoYmx1cik9XCJvbkJsdXIoKVwiXG5cdFx0XHRcdFx0XHQoa2V5ZG93bi5lbnRlcik9XCJvblN1Ym1pdCgkZXZlbnQpXCJcblx0XHRcdFx0XHRcdFt2YWx1ZV09XCJzZWxlY3RlZFZhbHVlXCJcblx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS10ZXh0LWlucHV0XCJcblx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cInsnY2RzLS10ZXh0LWlucHV0LS1lbXB0eSc6ICFzaG93Q2xlYXJCdXR0b259XCJcblx0XHRcdFx0XHRcdHRhYmluZGV4PVwiMFwiXG5cdFx0XHRcdFx0XHRbaWRdPVwiaWRcIlxuXHRcdFx0XHRcdFx0W2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImlkXCJcblx0XHRcdFx0XHRcdFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3BlblwiXG5cdFx0XHRcdFx0XHRhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG5cdFx0XHRcdFx0XHRbYXR0ci5tYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcblx0XHRcdFx0XHRcdFthdHRyLmFyaWEtY29udHJvbHNdPVwib3BlbiA/IHZpZXc/Lmxpc3RJZCA6IG51bGxcIlxuXHRcdFx0XHRcdFx0W2F0dHIuYXJpYS1hdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcblx0XHRcdFx0XHRcdFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiLz5cblx0XHRcdFx0XHQ8c3ZnXG5cdFx0XHRcdFx0XHQqbmdJZj1cIiF3YXJuICYmIGludmFsaWRcIlxuXHRcdFx0XHRcdFx0Y2RzSWNvbj1cIndhcm5pbmctLWZpbGxlZFwiXG5cdFx0XHRcdFx0XHRzaXplPVwiMTZcIlxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLWxpc3QtYm94X19pbnZhbGlkLWljb25cIj5cblx0XHRcdFx0XHQ8L3N2Zz5cblx0XHRcdFx0XHQ8c3ZnXG5cdFx0XHRcdFx0XHQqbmdJZj1cIiFpbnZhbGlkICYmIHdhcm5cIlxuXHRcdFx0XHRcdFx0Y2RzSWNvbj1cIndhcm5pbmctLWFsdC0tZmlsbGVkXCJcblx0XHRcdFx0XHRcdHNpemU9XCIxNlwiXG5cdFx0XHRcdFx0XHRjbGFzcz1cImNkcy0tbGlzdC1ib3hfX2ludmFsaWQtaWNvbiBjZHMtLWxpc3QtYm94X19pbnZhbGlkLWljb24tLXdhcm5pbmdcIj5cblx0XHRcdFx0XHQ8L3N2Zz5cblx0XHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0XHQqbmdJZj1cInNob3dDbGVhckJ1dHRvblwiXG5cdFx0XHRcdFx0XHRyb2xlPVwiYnV0dG9uXCJcblx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1saXN0LWJveF9fc2VsZWN0aW9uXCJcblx0XHRcdFx0XHRcdHRhYmluZGV4PVwiMFwiXG5cdFx0XHRcdFx0XHRbYXR0ci5hcmlhLWxhYmVsXT1cImNsZWFyU2VsZWN0aW9uQXJpYVwiXG5cdFx0XHRcdFx0XHRbdGl0bGVdPVwiY2xlYXJTZWxlY3Rpb25UaXRsZVwiXG5cdFx0XHRcdFx0XHQoa2V5dXAuZW50ZXIpPVwiY2xlYXJJbnB1dCgkZXZlbnQpXCJcblx0XHRcdFx0XHRcdChjbGljayk9XCJjbGVhcklucHV0KCRldmVudClcIlxuXHRcdFx0XHRcdFx0KGJsdXIpPVwib25CbHVyKClcIj5cblx0XHRcdFx0XHRcdDxzdmcgY2RzSWNvbj1cImNsb3NlXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PGJ1dHRvblxuXHRcdFx0XHRcdFx0dHlwZT1cImJ1dHRvblwiXG5cdFx0XHRcdFx0XHRyb2xlPVwiYnV0dG9uXCJcblx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1saXN0LWJveF9fbWVudS1pY29uXCJcblx0XHRcdFx0XHRcdHRhYmluZGV4PVwiLTFcIlxuXHRcdFx0XHRcdFx0W3RpdGxlXT1cIm9wZW4gPyBjbG9zZU1lbnVBcmlhIDogb3Blbk1lbnVBcmlhXCJcblx0XHRcdFx0XHRcdFthdHRyLmFyaWEtbGFiZWxdPVwib3BlbiA/IGNsb3NlTWVudUFyaWEgOiBvcGVuTWVudUFyaWFcIlxuXHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwieydjZHMtLWxpc3QtYm94X19tZW51LWljb24tLW9wZW4nOiBvcGVufVwiPlxuXHRcdFx0XHRcdFx0PHN2ZyBjZHNJY29uPVwiY2hldnJvbi0tZG93blwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuXHRcdFx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdCNkcm9wZG93bk1lbnVcblx0XHRcdFx0XHRbbmdDbGFzc109XCJ7XG5cdFx0XHRcdFx0XHQnY2RzLS1saXN0LWJveC0tdXAnOiB0aGlzLmRyb3BVcCAhPT0gbnVsbCAmJiB0aGlzLmRyb3BVcCAhPT0gdW5kZWZpbmVkID8gZHJvcFVwIDogX2Ryb3BVcFxuXHRcdFx0XHRcdH1cIj5cblx0XHRcdFx0XHQ8bmctY29udGVudCAqbmdJZj1cIm9wZW5cIj48L25nLWNvbnRlbnQ+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2XG5cdFx0XHRcdCpuZ0lmPVwiaGVscGVyVGV4dCAmJiAhaW52YWxpZCAmJiAhd2FyblwiXG5cdFx0XHRcdGNsYXNzPVwiY2RzLS1mb3JtX19oZWxwZXItdGV4dFwiXG5cdFx0XHRcdFtuZ0NsYXNzXT1cInsnY2RzLS1mb3JtX19oZWxwZXItdGV4dC0tZGlzYWJsZWQnOiBkaXNhYmxlZH1cIj5cblx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGhlbHBlclRleHQpXCI+e3toZWxwZXJUZXh0fX08L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiaXNUZW1wbGF0ZShoZWxwZXJUZXh0KVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlbHBlclRleHRcIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2ICpuZ0lmPVwiIXdhcm4gJiYgaW52YWxpZFwiIGNsYXNzPVwiY2RzLS1mb3JtLXJlcXVpcmVtZW50XCI+XG5cdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZShpbnZhbGlkVGV4dClcIj57eyBpbnZhbGlkVGV4dCB9fTwvbmctY29udGFpbmVyPlxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJpc1RlbXBsYXRlKGludmFsaWRUZXh0KVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImludmFsaWRUZXh0XCI+PC9uZy10ZW1wbGF0ZT5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiAqbmdJZj1cIiFpbnZhbGlkICYmIHdhcm5cIiBjbGFzcz1cImNkcy0tZm9ybS1yZXF1aXJlbWVudFwiPlxuXHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUod2FyblRleHQpXCI+e3t3YXJuVGV4dH19PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUod2FyblRleHQpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwid2FyblRleHRcIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdGAsXG5cdHByb3ZpZGVyczogW1xuXHRcdHtcblx0XHRcdHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuXHRcdFx0dXNlRXhpc3Rpbmc6IENvbWJvQm94LFxuXHRcdFx0bXVsdGk6IHRydWVcblx0XHR9XG5cdF1cbn0pXG5leHBvcnQgY2xhc3MgQ29tYm9Cb3ggaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG5cdC8qKlxuXHQgKiBUZXh0IHRvIHNob3cgd2hlbiBub3RoaW5nIGlzIHNlbGVjdGVkLlxuXHQgKi9cblx0QElucHV0KCkgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9wbGFjZWhvbGRlci5vdmVycmlkZSh2YWx1ZSk7XG5cdH1cblxuXHRnZXQgcGxhY2Vob2xkZXIoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyLnZhbHVlO1xuXHR9XG5cdC8qKlxuXHQgKiBWYWx1ZSB0byBkaXNwbGF5IGZvciBhY2Nlc3NpYmlsaXR5IHB1cnBvc2VzIG9uIHRoZSBjb21ib2JveCBjb250cm9sIG1lbnUgd2hlbiBjbG9zZWRcblx0ICovXG5cdEBJbnB1dCgpIHNldCBvcGVuTWVudUFyaWEodmFsdWU6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPikge1xuXHRcdHRoaXMuX29wZW5NZW51QXJpYS5vdmVycmlkZSh2YWx1ZSk7XG5cdH1cblxuXHRnZXQgb3Blbk1lbnVBcmlhKCkge1xuXHRcdHJldHVybiB0aGlzLl9vcGVuTWVudUFyaWEudmFsdWU7XG5cdH1cblx0LyoqXG5cdCAqIFZhbHVlIHRvIGRpc3BsYXkgZm9yIGFjY2Vzc2liaWxpdHkgcHVycG9zZXMgb24gdGhlIGNvbWJvYm94IGNvbnRyb2wgbWVudSB3aGVuIG9wZW5lZFxuXHQgKi9cblx0QElucHV0KCkgc2V0IGNsb3NlTWVudUFyaWEodmFsdWU6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPikge1xuXHRcdHRoaXMuX2Nsb3NlTWVudUFyaWEub3ZlcnJpZGUodmFsdWUpO1xuXHR9XG5cblx0Z2V0IGNsb3NlTWVudUFyaWEoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2Nsb3NlTWVudUFyaWEudmFsdWU7XG5cdH1cblx0LyoqXG5cdCAqIFZhbHVlIHRvIGRpc3BsYXkgb24gdGhlIGNsZWFyIHNlbGVjdGlvbnMgaWNvbiwgd2hlbiBtdWx0aSBpcyBzZWxlY3RlZFxuXHQgKi9cblx0QElucHV0KCkgc2V0IGNsZWFyU2VsZWN0aW9uc1RpdGxlKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9jbGVhclNlbGVjdGlvbnNUaXRsZS5vdmVycmlkZSh2YWx1ZSk7XG5cdH1cblxuXHRnZXQgY2xlYXJTZWxlY3Rpb25zVGl0bGUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2NsZWFyU2VsZWN0aW9uc1RpdGxlLnZhbHVlO1xuXHR9XG5cdC8qKlxuXHQgKiBWYWx1ZSB0byBkaXNwbGF5IGZvciBhY2Nlc3NpYmlsaXR5IHB1cnBvc2VzIHRvIGNsZWFyIHNlbGVjdGlvbnMsIHdoZW4gbXVsdGkgaXMgc2VsZWN0ZWRcblx0ICovXG5cdEBJbnB1dCgpIHNldCBjbGVhclNlbGVjdGlvbnNBcmlhKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9jbGVhclNlbGVjdGlvbnNBcmlhLm92ZXJyaWRlKHZhbHVlKTtcblx0fVxuXG5cdGdldCBjbGVhclNlbGVjdGlvbnNBcmlhKCkge1xuXHRcdHJldHVybiB0aGlzLl9jbGVhclNlbGVjdGlvbnNBcmlhLnZhbHVlO1xuXHR9XG5cdC8qKlxuXHQgKiBWYWx1ZSB0byBkaXNwbGF5IG9uIHRoZSBjbGVhciB0aGUgc2VsZWN0ZWQgaXRlbSBpY29uLCB3aGVuIHNpbmdsZSBpcyBzZWxlY3RlZFxuXHQgKi9cblx0QElucHV0KCkgc2V0IGNsZWFyU2VsZWN0aW9uVGl0bGUodmFsdWU6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPikge1xuXHRcdHRoaXMuX2NsZWFyU2VsZWN0aW9uVGl0bGUub3ZlcnJpZGUodmFsdWUpO1xuXHR9XG5cblx0Z2V0IGNsZWFyU2VsZWN0aW9uVGl0bGUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2NsZWFyU2VsZWN0aW9uVGl0bGUudmFsdWU7XG5cdH1cblx0LyoqXG5cdCAqIFZhbHVlIHRvIGRpc3BsYXkgZm9yIGFjY2Vzc2liaWxpdHkgcHVycG9zZXMgb24gdGhlIGNsZWFyIHRoZSBzZWxlY3RlZCBpdGVtIGljb24sIHdoZW4gc2luZ2xlIGlzIHNlbGVjdGVkXG5cdCAqL1xuXHRASW5wdXQoKSBzZXQgY2xlYXJTZWxlY3Rpb25BcmlhKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9jbGVhclNlbGVjdGlvbkFyaWEub3ZlcnJpZGUodmFsdWUpO1xuXHR9XG5cblx0Z2V0IGNsZWFyU2VsZWN0aW9uQXJpYSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fY2xlYXJTZWxlY3Rpb25BcmlhLnZhbHVlO1xuXHR9XG5cdHN0YXRpYyBjb21ib0JveENvdW50ID0gMDtcblx0QElucHV0KCkgaWQgPSBgZHJvcGRvd24tJHtDb21ib0JveC5jb21ib0JveENvdW50Kyt9YDtcblx0LyoqXG5cdCAqIExpc3Qgb2YgaXRlbXMgdG8gZmlsbCB0aGUgY29udGVudCB3aXRoLlxuXHQgKlxuXHQgKiAqKkV4YW1wbGU6Kipcblx0ICogYGBgamF2YXNjcmlwdFxuXHQgKiBpdGVtcyA9IFtcblx0ICpcdFx0e1xuXHQgKlx0XHRcdGNvbnRlbnQ6IFwiQWJhY3VzXCIsXG5cdCAqXHRcdFx0c2VsZWN0ZWQ6IGZhbHNlXG5cdCAqXHRcdH0sXG5cdCAqXHRcdHtcblx0ICpcdFx0XHRjb250ZW50OiBcIkJ5dGVcIixcblx0ICpcdFx0XHRzZWxlY3RlZDogZmFsc2UsXG5cdCAqXHRcdH0sXG5cdCAqXHRcdHtcblx0ICpcdFx0XHRjb250ZW50OiBcIkNvbXB1dGVyXCIsXG5cdCAqXHRcdFx0c2VsZWN0ZWQ6IGZhbHNlXG5cdCAqXHRcdH0sXG5cdCAqXHRcdHtcblx0ICpcdFx0XHRjb250ZW50OiBcIkRpZ2l0YWxcIixcblx0ICpcdFx0XHRzZWxlY3RlZDogZmFsc2Vcblx0ICpcdFx0fVxuXHQgKiBdO1xuXHQgKiBgYGBcblx0ICpcblx0ICovXG5cdEBJbnB1dCgpIGl0ZW1zOiBBcnJheTxMaXN0SXRlbT4gPSBbXTtcblx0LyoqXG5cdCAqIENvbWJvIGJveCB0eXBlIChzdXBwb3J0aW5nIHNpbmdsZSBvciBtdWx0aSBzZWxlY3Rpb24gb2YgaXRlbXMpLlxuXHQgKi9cblx0QElucHV0KCkgdHlwZTogXCJzaW5nbGVcIiB8IFwibXVsdGlcIiA9IFwic2luZ2xlXCI7XG5cdC8qKlxuXHQgKiBDb21ibyBib3ggcmVuZGVyIHNpemUuXG5cdCAqL1xuXHRASW5wdXQoKSBzaXplOiBcInNtXCIgfCBcIm1kXCIgfCBcImxnXCIgPSBcIm1kXCI7XG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIHByb3BlcnR5IHRvIGJlIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZSB0byBgbmdNb2RlbGBcblx0ICovXG5cdEBJbnB1dCgpIGl0ZW1WYWx1ZUtleTogc3RyaW5nO1xuXHQvKipcblx0ICogTGFiZWwgZm9yIHRoZSBjb21ib2JveC5cblx0ICovXG5cdEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHQvKipcblx0ICogU2V0cyB0aGUgb3B0aW9uYWwgaGVscGVyIHRleHQuXG5cdCAqL1xuXHRASW5wdXQoKSBoZWxwZXJUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHQvKipcblx0ICogc2V0IHRvIGB0cnVlYCB0byBwbGFjZSB0aGUgZHJvcGRvd24gdmlldyBpbmxpbmUgd2l0aCB0aGUgY29tcG9uZW50XG5cdCAqL1xuXHRASW5wdXQoKSBhcHBlbmRJbmxpbmU6IGJvb2xlYW4gPSBudWxsO1xuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCB0byBzaG93IHRoZSBpbnZhbGlkIHN0YXRlLlxuXHQgKi9cblx0QElucHV0KCkgaW52YWxpZCA9IGZhbHNlO1xuXHQvKipcblx0ICogVmFsdWUgZGlzcGxheWVkIGlmIGNvbWJvYm94IGlzIGluIGFuIGludmFsaWQgc3RhdGUuXG5cdCAqL1xuXHRASW5wdXQoKSBpbnZhbGlkVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0LyoqXG5cdCogU2V0IHRvIGB0cnVlYCB0byBzaG93IGEgd2FybmluZyAoY29udGVudHMgc2V0IGJ5IHdhcm5UZXh0KVxuXHQqL1xuXHRASW5wdXQoKSB3YXJuID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB3YXJuaW5nIHRleHRcblx0ICovXG5cdEBJbnB1dCgpIHdhcm5UZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHQvKipcblx0ICogTWF4IGxlbmd0aCB2YWx1ZSB0byBsaW1pdCBpbnB1dCBjaGFyYWN0ZXJzXG5cdCAqL1xuXHRASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlciA9IG51bGw7XG5cdC8qKlxuXHQgKiBAZGVwcmVjYXRlZCBzaW5jZSB2NSAtIFVzZSBgY2RzTGF5ZXJgIGRpcmVjdGl2ZSBpbnN0ZWFkXG5cdCAqL1xuXHRASW5wdXQoKSB0aGVtZTogXCJsaWdodFwiIHwgXCJkYXJrXCIgPSBcImRhcmtcIjtcblx0LyoqXG5cdCAqIFNwZWNpZnkgZmVlZGJhY2sgKG1vZGUpIG9mIHRoZSBzZWxlY3Rpb24uXG5cdCAqIGB0b3BgOiBzZWxlY3RlZCBpdGVtIGp1bXBzIHRvIHRvcFxuXHQgKiBgZml4ZWRgOiBzZWxlY3RlZCBpdGVtIHN0YXlzIGF0IGl0cyBwb3NpdGlvblxuXHQgKiBgdG9wLWFmdGVyLXJlb3BlbmA6IHNlbGVjdGVkIGl0ZW0ganVtcCB0byB0b3AgYWZ0ZXIgcmVvcGVuIGRyb3Bkb3duXG5cdCAqL1xuXHRASW5wdXQoKSBzZWxlY3Rpb25GZWVkYmFjazogXCJ0b3BcIiB8IFwiZml4ZWRcIiB8IFwidG9wLWFmdGVyLXJlb3BlblwiID0gXCJ0b3AtYWZ0ZXItcmVvcGVuXCI7XG5cdC8qKlxuXHQgKiBTcGVjaWZ5IGFyaWEtYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZSBvZiB0ZXh0IGlucHV0LlxuXHQgKiBcImxpc3RcIiwgaXMgdGhlIGV4cGVjdGVkIHZhbHVlIGZvciBhIGNvbWJvYm94IHRoYXQgaW52b2tlcyBhIGRyb3AtZG93biBsaXN0XG5cdCAqL1xuXHRASW5wdXQoKSBhdXRvY29tcGxldGUgPSBcImxpc3RcIjtcblx0LyoqXG5cdCAqIE92ZXJyaWRlcyB0aGUgYXV0b21hdGljIGRyb3BVcC5cblx0ICovXG5cdEBJbnB1dCgpIGRyb3BVcDogYm9vbGVhbjtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgdG8gZGlzYWJsZSBjb21ib2JveC5cblx0ICovXG5cdEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBFbWl0cyBhIExpc3RJdGVtXG5cdCAqXG5cdCAqIEV4YW1wbGU6XG5cdCAqIGBgYGphdmFzY3JpcHRcblx0ICoge1xuXHQgKiBcdFx0Y29udGVudDogXCJvbmVcIixcblx0ICogXHRcdHNlbGVjdGVkOiB0cnVlXG5cdCAqIH1cblx0ICogYGBgXG5cdCAqL1xuXHRAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPExpc3RJdGVtIHwgTGlzdEl0ZW1bXT4oKTtcblx0LyoqXG5cdCAqIEludGVuZGVkIHRvIGJlIHVzZWQgdG8gYWRkIGl0ZW1zIHRvIHRoZSBsaXN0LlxuXHQgKlxuXHQgKiBFbWl0cyBhbiBldmVudCB0aGF0IGluY2x1ZGVzIHRoZSBjdXJyZW50IGl0ZW0gbGlzdCwgdGhlIHN1Z2dlc3RlZCBpbmRleCBmb3IgdGhlIG5ldyBpdGVtLCBhbmQgYSBzaW1wbGUgTGlzdEl0ZW1cblx0ICpcblx0ICogRXhhbXBsZTpcblx0ICogYGBgamF2YXNjcmlwdFxuXHQgKlx0e1xuXHQgKlx0XHRpdGVtczogW3tjb250ZW50OiBcIm9uZVwiLCBzZWxlY3RlZDogdHJ1ZX0sIHtjb250ZW50OiBcInR3b1wiLCBzZWxlY3RlZDogdHJ1ZX1dLFxuXHQgKlx0XHRpbmRleDogMSxcblx0ICpcdFx0dmFsdWU6IHtcblx0ICpcdFx0XHRjb250ZW50OiBcInNvbWUgdXNlciBzdHJpbmdcIixcblx0ICpcdFx0XHRzZWxlY3RlZDogZmFsc2Vcblx0ICpcdFx0fVxuXHQgKlx0fVxuXHQgKiBgYGBcblx0ICpcblx0ICpcblx0ICogRXhhbXBsZTpcblx0ICogYGBgamF2YXNjcmlwdFxuXHQgKiB7XG5cdCAqXHRhZnRlcjogMSxcblx0ICpcdHZhbHVlOiBcInNvbWUgdXNlciBzdHJpbmdcIlxuXHQgKiB9XG5cdCAqIGBgYFxuXHQgKi9cblx0QE91dHB1dCgpIHN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXIgPHtcblx0XHRpdGVtczogTGlzdEl0ZW1bXSxcblx0XHRpbmRleDogbnVtYmVyLFxuXHRcdHZhbHVlOiB7XG5cdFx0XHRjb250ZW50OiBzdHJpbmcsXG5cdFx0XHRzZWxlY3RlZDogYm9vbGVhblxuXHRcdH1cblx0fT4oKTtcblx0LyoqIEVtaXRzIGFuIGVtcHR5IGV2ZW50IHdoZW4gdGhlIG1lbnUgaXMgY2xvc2VkICovXG5cdEBPdXRwdXQoKSBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblx0LyoqIEVtaXRzIHRoZSBzZWFyY2ggc3RyaW5nIGZyb20gdGhlIGlucHV0ICovXG5cdEBPdXRwdXQoKSBzZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblx0LyoqIEVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIGNsZWFyIGJ1dHRvbiBpcyBjbGlja2VkLiAqL1xuXHRAT3V0cHV0KCkgY2xlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXHQvKiogQ29udGVudENoaWxkIHJlZmVyZW5jZSB0byB0aGUgaW5zdGFudGlhdGVkIGRyb3Bkb3duIGxpc3QgKi9cblx0QENvbnRlbnRDaGlsZChBYnN0cmFjdERyb3Bkb3duVmlldywgeyBzdGF0aWM6IHRydWUgfSkgdmlldzogQWJzdHJhY3REcm9wZG93blZpZXc7XG5cdEBWaWV3Q2hpbGQoXCJkcm9wZG93bk1lbnVcIikgZHJvcGRvd25NZW51O1xuXHRAVmlld0NoaWxkKFwiaW5wdXRcIiwgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXQ6IEVsZW1lbnRSZWY7XG5cdEBWaWV3Q2hpbGQoXCJsaXN0Ym94XCIsIHsgc3RhdGljOiB0cnVlIH0pIGxpc3Rib3g6IEVsZW1lbnRSZWY7XG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tbGlzdC1ib3hfX3dyYXBwZXJcIikgaG9zdENsYXNzID0gdHJ1ZTtcblx0QEhvc3RCaW5kaW5nKFwic3R5bGUuZGlzcGxheVwiKSBkaXNwbGF5ID0gXCJibG9ja1wiO1xuXG5cdHB1YmxpYyBvcGVuID0gZmFsc2U7XG5cblx0cHVibGljIHNob3dDbGVhckJ1dHRvbiA9IGZhbHNlO1xuXG5cdC8qKiBTZWxlY3RlZCBpdGVtcyBmb3IgbXVsdGktc2VsZWN0IGNvbWJvLWJveGVzLiAqL1xuXHRwdWJsaWMgcGlsbHMgPSBbXTtcblx0LyoqIHVzZWQgdG8gdXBkYXRlIHRoZSBkaXNwbGF5VmFsdWUgKi9cblx0cHVibGljIHNlbGVjdGVkVmFsdWUgPSBcIlwiO1xuXG5cdGtleWJvYXJkTmF2ID0gdGhpcy5fa2V5Ym9hcmROYXYuYmluZCh0aGlzKTtcblx0LyoqXG5cdCAqIGNvbnRyb2xzIHdoZXRoZXIgdGhlIGBkcm9wLXVwYCBjbGFzcyBpcyBhcHBsaWVkXG5cdCAqL1xuXHRfZHJvcFVwID0gZmFsc2U7XG5cblx0cHJvdGVjdGVkIG5vb3AgPSB0aGlzLl9ub29wLmJpbmQodGhpcyk7XG5cdHByb3RlY3RlZCBvblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IHRoaXMuX25vb3A7XG5cdHByb3RlY3RlZCBwcm9wYWdhdGVDaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IHRoaXMuX25vb3A7XG5cblx0cHJvdGVjdGVkIF9wbGFjZWhvbGRlciA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIkNPTUJPQk9YLlBMQUNFSE9MREVSXCIpO1xuXHRwcm90ZWN0ZWQgX2Nsb3NlTWVudUFyaWEgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJDT01CT0JPWC5BMTFZLkNMT1NFX01FTlVcIik7XG5cdHByb3RlY3RlZCBfb3Blbk1lbnVBcmlhID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiQ09NQk9CT1guQTExWS5PUEVOX01FTlVcIik7XG5cdHByb3RlY3RlZCBfY2xlYXJTZWxlY3Rpb25zVGl0bGUgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJDT01CT0JPWC5DTEVBUl9TRUxFQ1RJT05TXCIpO1xuXHRwcm90ZWN0ZWQgX2NsZWFyU2VsZWN0aW9uc0FyaWEgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJDT01CT0JPWC5BMTFZLkNMRUFSX1NFTEVDVElPTlNcIik7XG5cdHByb3RlY3RlZCBfY2xlYXJTZWxlY3Rpb25UaXRsZSA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIkNPTUJPQk9YLkNMRUFSX1NFTEVDVEVEXCIpO1xuXHRwcm90ZWN0ZWQgX2NsZWFyU2VsZWN0aW9uQXJpYSA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIkNPTUJPQk9YLkExMVkuQ0xFQVJfU0VMRUNURURcIik7XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgQ29tYm9Cb3guXG5cdCAqL1xuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcblx0XHRwcm90ZWN0ZWQgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2UsXG5cdFx0cHJvdGVjdGVkIGRyb3Bkb3duU2VydmljZTogRHJvcGRvd25TZXJ2aWNlLFxuXHRcdHByb3RlY3RlZCBpMThuOiBJMThuXG5cdCkge31cblxuXHQvKipcblx0ICogTGlmZWN5Y2xlIGhvb2suXG5cdCAqIFVwZGF0ZXMgcGlsbHMgaWYgbmVjZXNzYXJ5LlxuXHQgKlxuXHQgKi9cblx0bmdPbkNoYW5nZXMoY2hhbmdlcykge1xuXHRcdGlmIChjaGFuZ2VzLml0ZW1zKSB7XG5cdFx0XHR0aGlzLnZpZXcuaXRlbXMgPSBjaGFuZ2VzLml0ZW1zLmN1cnJlbnRWYWx1ZTtcblx0XHRcdHRoaXMudXBkYXRlU2VsZWN0ZWQoKTtcblx0XHRcdC8vIElmIG5ldyBpdGVtcyBhcmUgYWRkZWQgaW50byB0aGUgY29tYm9ib3ggd2hpbGUgdGhlcmUgaXMgc2VhcmNoIGlucHV0LFxuXHRcdFx0Ly8gcmVwZWF0IHRoZSBzZWFyY2guIFNlYXJjaCBzaG91bGQgb25seSB0cmlnZ2VyIGZvciB0eXBlICdzaW5nbGUnIHdoZW4gdGhlcmUgaXMgbm8gdmFsdWUgc2VsZWN0ZWQuXG5cdFx0XHRpZiAoIHRoaXMudHlwZSA9PT0gXCJtdWx0aVwiIHx8ICh0aGlzLnR5cGUgPT09IFwic2luZ2xlXCIgJiYgIXRoaXMuc2VsZWN0ZWRWYWx1ZSkpIHtcblx0XHRcdFx0dGhpcy5vblNlYXJjaCh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUsIGZhbHNlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyBpbml0aWFsIHN0YXRlIHRoYXQgZGVwZW5kcyBvbiBjaGlsZCBjb21wb25lbnRzXG5cdCAqIFN1YnNjcmliZXMgdG8gc2VsZWN0IGV2ZW50cyBhbmQgaGFuZGxlcyBmb2N1cy9maWx0ZXJpbmcvaW5pdGlhbCBsaXN0IHVwZGF0ZXNcblx0ICovXG5cdG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcblx0XHRpZiAodGhpcy52aWV3KSB7XG5cdFx0XHR0aGlzLnZpZXcudHlwZSA9IHRoaXMudHlwZTtcblxuXHRcdFx0Ly8gZnVuY3Rpb24gdG8gY2hlY2sgaWYgdGhlIGV2ZW50IGlzIG9yZ2FuaWMgKGlzVXBkYXRlID09PSBmYWxzZSkgb3IgcHJvZ3JhbW1hdGljXG5cdFx0XHRjb25zdCBpc1VwZGF0ZSA9IGV2ZW50ID0+IGV2ZW50ICYmIGV2ZW50LmlzVXBkYXRlO1xuXG5cdFx0XHR0aGlzLnZpZXcuc2VsZWN0LnN1YnNjcmliZShldmVudCA9PiB7XG5cdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGV2ZW50KSkge1xuXHRcdFx0XHRcdHRoaXMudXBkYXRlUGlsbHMoKTtcblx0XHRcdFx0XHRpZiAoIWlzVXBkYXRlKGV2ZW50KSkge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuaXRlbVZhbHVlS2V5ICYmIHRoaXMudmlldy5nZXRTZWxlY3RlZCgpKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHZhbHVlcyA9IHRoaXMudmlldy5nZXRTZWxlY3RlZCgpLm1hcChpdGVtID0+IGl0ZW1bdGhpcy5pdGVtVmFsdWVLZXldKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2VDYWxsYmFjayh2YWx1ZXMpO1xuXHRcdFx0XHRcdFx0Ly8gb3RoZXJ3aXNlIGp1c3QgcGFzcyB1cCB0aGUgdmFsdWVzIGZyb20gYGdldFNlbGVjdGVkYFxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2VDYWxsYmFjayh0aGlzLnZpZXcuZ2V0U2VsZWN0ZWQoKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIElmIHR5cGUgaXMgc2luZ2xlLCBkcm9wZG93biBsaXN0IHdpbGwgZW1pdCBhbiBvYmplY3Rcblx0XHRcdFx0XHRpZiAoZXZlbnQuaXRlbSAmJiBldmVudC5pdGVtLnNlbGVjdGVkKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnNob3dDbGVhckJ1dHRvbiA9IHRydWU7XG5cdFx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkVmFsdWUgPSBldmVudC5pdGVtLmNvbnRlbnQ7XG5cblx0XHRcdFx0XHRcdGlmICghaXNVcGRhdGUoZXZlbnQpKSB7XG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLml0ZW1WYWx1ZUtleSkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlQ2FsbGJhY2soZXZlbnQuaXRlbVt0aGlzLml0ZW1WYWx1ZUtleV0pO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlQ2FsbGJhY2soZXZlbnQuaXRlbSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5zZWxlY3RlZFZhbHVlID0gXCJcIjtcblx0XHRcdFx0XHRcdGlmICghaXNVcGRhdGUoZXZlbnQpKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlQ2FsbGJhY2sobnVsbCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIG5vdCBndWFyZGluZyB0aGVzZSBzaW5jZSB0aGUgbmF0aXZlRWxlbWVudCBoYXMgdG8gYmUgbG9hZGVkXG5cdFx0XHRcdFx0Ly8gZm9yIHNlbGVjdCB0byBldmVuIGZpcmVcblx0XHRcdFx0XHQvLyBvbmx5IGZvY3VzIGZvciBcIm9yZ2FuaWNcIiBzZWxlY3Rpb25zXG5cdFx0XHRcdFx0aWYgKCFpc1VwZGF0ZShldmVudCkpIHtcblx0XHRcdFx0XHRcdHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKS5mb2N1cygpO1xuXHRcdFx0XHRcdFx0dGhpcy52aWV3LmZpbHRlckJ5KFwiXCIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLmNsb3NlRHJvcGRvd24oKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWlzVXBkYXRlKGV2ZW50KSAmJiAhQXJyYXkuaXNBcnJheShldmVudCkpIHtcblx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkLmVtaXQoZXZlbnQuaXRlbSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0Ly8gdXBkYXRlIHRoZSByZXN0IG9mIGNvbWJvYm94IHdpdGggYW55IHByZS1zZWxlY3RlZCBpdGVtc1xuXHRcdFx0Ly8gc2V0VGltZW91dCBqdXN0IGRlZmVycyB0aGUgY2FsbCB0byB0aGUgbmV4dCBjaGVjayBjeWNsZVxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMudXBkYXRlU2VsZWN0ZWQoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHR0aGlzLnZpZXcuYmx1ckludGVudC5waXBlKGZpbHRlcih2ID0+IHYgPT09IFwidG9wXCIpKS5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLmNkcy0tdGV4dC1pbnB1dFwiKS5mb2N1cygpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEJpbmRzIGV2ZW50IGhhbmRsZXJzIGFnYWluc3QgdGhlIHJlbmRlcmVkIHZpZXdcblx0ICovXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblx0XHR0aGlzLmRvY3VtZW50U2VydmljZS5oYW5kbGVDbGljayhldmVudCA9PiB7XG5cdFx0XHRpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcblx0XHRcdFx0IXRoaXMuZHJvcGRvd25NZW51Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuXHRcdFx0XHRpZiAodGhpcy5vcGVuKSB7XG5cdFx0XHRcdFx0dGhpcy5jbG9zZURyb3Bkb3duKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0XHQvLyBpZiBhcHBlbmRJbmxpbmUgaXMgZGVmYXVsdCB2YWx1ZWQgKG51bGwpIHdlIHNob3VsZDpcblx0XHQvLyAxLiBpZiB0aGVyZSBhcmUgc2Nyb2xsYWJsZSBwYXJlbnRzIChub3QgaW5jbHVkaW5nIGJvZHkpIGRvbid0IGFwcGVuZCBpbmxpbmVcblx0XHQvLyAgICB0aGlzIHNob3VsZCBhbHNvIGNvdmVyIHRoZSBjYXNlIHdoZXJlIHRoZSBkcm9wZG93biBpcyBpbiBhIG1vZGFsXG5cdFx0Ly8gICAgKHdoZXJlIHdlIF9kb18gd2FudCB0byBhcHBlbmQgdG8gdGhlIHBsYWNlaG9sZGVyKVxuXHRcdGlmICh0aGlzLmFwcGVuZElubGluZSA9PT0gbnVsbCAmJiBoYXNTY3JvbGxhYmxlUGFyZW50cyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkpIHtcblx0XHRcdHRoaXMuYXBwZW5kSW5saW5lID0gZmFsc2U7XG5cdFx0Ly8gMi4gb3RoZXJ3aXNlIHdlIHNob3VsZCBhcHBlbmQgaW5saW5lXG5cdFx0fSBlbHNlIGlmICh0aGlzLmFwcGVuZElubGluZSA9PT0gbnVsbCkge1xuXHRcdFx0dGhpcy5hcHBlbmRJbmxpbmUgPSB0cnVlO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmluZyB0aGUgYERyb3Bkb3duYCBmcm9tIHRoZSBib2R5IGlmIGl0IGlzIGFwcGVuZGVkIHRvIHRoZSBib2R5LlxuXHQgKi9cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0aWYgKCF0aGlzLmFwcGVuZElubGluZSkge1xuXHRcdFx0dGhpcy5fYXBwZW5kVG9Ecm9wZG93bigpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIGBFc2NhcGUvVGFiYCBrZXkgY2xvc2luZyB0aGUgZHJvcGRvd24sIGFuZCBhcnJvdyB1cC9kb3duIGZvY3VzIHRvL2Zyb20gdGhlIGRyb3Bkb3duIGxpc3QuXG5cdCAqL1xuXHRASG9zdExpc3RlbmVyKFwia2V5ZG93blwiLCBbXCIkZXZlbnRcIl0pXG5cdGhvc3RrZXlzKGV2OiBLZXlib2FyZEV2ZW50KSB7XG5cdFx0aWYgKGV2LmtleSA9PT0gXCJFc2NhcGVcIikge1xuXHRcdFx0dGhpcy5jbG9zZURyb3Bkb3duKCk7XG5cdFx0fSBlbHNlIGlmICgoZXYua2V5ID09PSBcIkFycm93RG93blwiKVxuXHRcdFx0JiYgKCF0aGlzLmRyb3Bkb3duTWVudSB8fCAhdGhpcy5kcm9wZG93bk1lbnUubmF0aXZlRWxlbWVudC5jb250YWlucyhldi50YXJnZXQpKSkge1xuXHRcdFx0ZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHR0aGlzLm9wZW5Ecm9wZG93bigpO1xuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7IHRoaXMudmlldy5pbml0Rm9jdXMoKTsgfSwgMCk7XG5cdFx0fVxuXG5cdFx0aWYgKFxuXHRcdFx0dGhpcy5vcGVuICYmIGV2LmtleSA9PT0gXCJUYWJcIiAmJlxuXHRcdFx0KHRoaXMuZHJvcGRvd25NZW51Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXYudGFyZ2V0IGFzIE5vZGUpIHx8IGV2LnRhcmdldCA9PT0gdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KVxuXHRcdCkge1xuXHRcdFx0dGhpcy5jbG9zZURyb3Bkb3duKCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMub3BlbiAmJiBldi5rZXkgPT09IFwiVGFiXCIgJiYgZXYuc2hpZnRLZXkpIHtcblx0XHRcdHRoaXMuY2xvc2VEcm9wZG93bigpO1xuXHRcdH1cblx0fVxuXG5cdC8qXG5cdCAqIG5vLW9wIG1ldGhvZCBmb3IgbnVsbCBldmVudCBsaXN0ZW5lcnMsIGFuZCBvdGhlciBubyBvcCBjYWxsc1xuXHQgKi9cblx0X25vb3AoKSB7fVxuXG5cdC8qXG5cdCAqIHByb3BhZ2F0ZXMgdGhlIHZhbHVlIHByb3ZpZGVkIGZyb20gbmdNb2RlbFxuXHQgKi9cblx0d3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG5cdFx0aWYgKHRoaXMudHlwZSA9PT0gXCJzaW5nbGVcIikge1xuXHRcdFx0aWYgKHRoaXMuaXRlbVZhbHVlS2V5KSB7XG5cdFx0XHRcdC8vIGNsb25lIHRoZSBzcGVjaWZpZWQgaXRlbSBhbmQgdXBkYXRlIGl0cyBzdGF0ZVxuXHRcdFx0XHRjb25zdCBuZXdWYWx1ZSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMudmlldy5nZXRMaXN0SXRlbXMoKS5maW5kKGl0ZW0gPT4gaXRlbVt0aGlzLml0ZW1WYWx1ZUtleV0gPT09IHZhbHVlKSk7XG5cdFx0XHRcdG5ld1ZhbHVlLnNlbGVjdGVkID0gdHJ1ZTtcblx0XHRcdFx0dGhpcy52aWV3LnByb3BhZ2F0ZVNlbGVjdGVkKFtuZXdWYWx1ZV0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gYWxsIGl0ZW1zIGluIHByb3BhZ2F0ZVNlbGVjdGVkIG11c3QgYmUgaXRlcmFibGVcblx0XHRcdFx0dGhpcy52aWV3LnByb3BhZ2F0ZVNlbGVjdGVkKFt2YWx1ZSB8fCBcIlwiXSk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnNob3dDbGVhckJ1dHRvbiA9ICEhKHZhbHVlICYmIHRoaXMudmlldy5nZXRTZWxlY3RlZCgpLmxlbmd0aCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICh0aGlzLml0ZW1WYWx1ZUtleSkge1xuXHRcdFx0XHQvLyBjbG9uZSB0aGUgaXRlbXMgYW5kIHVwZGF0ZSB0aGVpciBzdGF0ZSBiYXNlZCBvbiB0aGUgcmVjZWl2ZWQgdmFsdWUgYXJyYXlcblx0XHRcdFx0Ly8gdGhpcyB3YXkgd2UgZG9uJ3QgbG9zZSBhbnkgYWRkaXRpb25hbCBtZXRhZGF0YSB0aGF0IG1heSBiZSBwYXNzZWQgaW4gdmlhIHRoZSBgaXRlbXNgIElucHV0XG5cdFx0XHRcdGxldCBuZXdWYWx1ZXMgPSBbXTtcblx0XHRcdFx0Zm9yIChjb25zdCB2IG9mIHZhbHVlKSB7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIHRoaXMudmlldy5nZXRMaXN0SXRlbXMoKSkge1xuXHRcdFx0XHRcdFx0aWYgKGl0ZW1bdGhpcy5pdGVtVmFsdWVLZXldID09PSB2KSB7XG5cdFx0XHRcdFx0XHRcdG5ld1ZhbHVlcy5wdXNoKE9iamVjdC5hc3NpZ24oe30sIGl0ZW0sIHsgc2VsZWN0ZWQ6IHRydWUgfSkpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLnZpZXcucHJvcGFnYXRlU2VsZWN0ZWQobmV3VmFsdWVzKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMudmlldy5wcm9wYWdhdGVTZWxlY3RlZCh2YWx1ZSA/IHZhbHVlIDogW1wiXCJdKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0dGhpcy51cGRhdGVTZWxlY3RlZCgpO1xuXHR9XG5cblx0b25CbHVyKCkge1xuXHRcdHRoaXMub25Ub3VjaGVkQ2FsbGJhY2soKTtcblx0fVxuXG5cdHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuXHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcblx0fVxuXG5cdHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcblx0XHR0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XG5cdH1cblxuXHQvKipcblx0ICogYENvbnRyb2xWYWx1ZUFjY2Vzc29yYCBtZXRob2QgdG8gcHJvZ3JhbW1hdGljYWxseSBkaXNhYmxlIHRoZSBjb21ib2JveC5cblx0ICpcblx0ICogZXg6IGB0aGlzLmZvcm1Hcm91cC5nZXQoXCJteUNvb2xDb21ib2JveFwiKS5kaXNhYmxlKCk7YFxuXHQgKi9cblx0c2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG5cdFx0dGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbGVkIGJ5IGBuLXBpbGwtaW5wdXRgIHdoZW4gdGhlIHNlbGVjdGVkIHBpbGxzIGhhdmUgY2hhbmdlZC5cblx0ICovXG5cdHB1YmxpYyB1cGRhdGVQaWxscygpIHtcblx0XHR0aGlzLnBpbGxzID0gdGhpcy52aWV3LmdldFNlbGVjdGVkKCkgfHwgW107XG5cdFx0dGhpcy5jaGVja0ZvclJlb3JkZXIoKTtcblx0fVxuXG5cdHB1YmxpYyBjbGVhclNlbGVjdGVkKGV2ZW50KSB7XG5cdFx0dGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMubWFwKGl0ZW0gPT4ge1xuXHRcdFx0aWYgKCFpdGVtLmRpc2FibGVkKSB7XG5cdFx0XHRcdGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBpdGVtO1xuXHRcdH0pO1xuXHRcdHRoaXMudmlldy5pdGVtcyA9IHRoaXMuaXRlbXM7XG5cdFx0dGhpcy51cGRhdGVQaWxscygpO1xuXHRcdC8vIGNsZWFyU2VsZWN0ZWQgY2FuIG9ubHkgZmlyZSBvbiB0eXBlPW11bHRpXG5cdFx0Ly8gc28gd2UganVzdCBlbWl0IGdldFNlbGVjdGVkKCkgKGp1c3QgaW4gY2FzZSB0aGVyZSdzIGFueSBkaXNhYmxlZCBidXQgc2VsZWN0ZWQgaXRlbXMpXG5cdFx0Y29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnZpZXcuZ2V0U2VsZWN0ZWQoKTtcblx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZUNhbGxiYWNrKHNlbGVjdGVkKTtcblx0XHR0aGlzLnNlbGVjdGVkLmVtaXQoc2VsZWN0ZWQgYXMgYW55KTtcblx0XHR0aGlzLmNsZWFyLmVtaXQoZXZlbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENsb3NlcyB0aGUgZHJvcGRvd24gYW5kIGVtaXRzIHRoZSBjbG9zZSBldmVudC5cblx0ICovXG5cdHB1YmxpYyBjbG9zZURyb3Bkb3duKCkge1xuXHRcdHRoaXMub3BlbiA9IGZhbHNlO1xuXHRcdHRoaXMuY2hlY2tGb3JSZW9yZGVyKCk7XG5cdFx0dGhpcy5jbG9zZS5lbWl0KCk7XG5cdFx0aWYgKCF0aGlzLmFwcGVuZElubGluZSkge1xuXHRcdFx0dGhpcy5fYXBwZW5kVG9Ecm9wZG93bigpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBPcGVucyB0aGUgZHJvcGRvd24uXG5cdCAqL1xuXHRwdWJsaWMgb3BlbkRyb3Bkb3duKCkge1xuXHRcdGlmICh0aGlzLmRpc2FibGVkKSB7IHJldHVybjsgfVxuXHRcdHRoaXMub3BlbiA9IHRydWU7XG5cdFx0dGhpcy5fZHJvcFVwID0gZmFsc2U7XG5cblx0XHRpZiAoIXRoaXMuYXBwZW5kSW5saW5lKSB7XG5cdFx0XHR0aGlzLl9hcHBlbmRUb0JvZHkoKTtcblx0XHR9XG5cblx0XHQvLyBzZXQgdGhlIGRyb3Bkb3duIG1lbnUgdG8gZHJvcCB1cCBpZiBpdCBpcyBuZWFyIHRoZSBib3R0b20gb2YgdGhlIHNjcmVlblxuXHRcdC8vIHNldFRpbWVvdXQgbGV0cyB1cyBkbyB0aGUgY2FsY3VsYXRpb25zIGFmdGVyIGl0IGlzIHZpc2libGUgaW4gdGhlIERPTVxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0aWYgKHRoaXMuZHJvcFVwID09PSBudWxsIHx8IHRoaXMuZHJvcFVwID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0dGhpcy5fZHJvcFVwID0gdGhpcy5fc2hvdWxkRHJvcFVwKCk7XG5cdFx0XHR9XG5cdFx0fSwgMCk7XG5cdH1cblxuXHQvKipcblx0ICogVG9nZ2xlcyB0aGUgZHJvcGRvd24uXG5cdCAqL1xuXHRwdWJsaWMgdG9nZ2xlRHJvcGRvd24oKSB7XG5cdFx0aWYgKHRoaXMub3Blbikge1xuXHRcdFx0dGhpcy5jbG9zZURyb3Bkb3duKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMub3BlbkRyb3Bkb3duKCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGxpc3QgZ3JvdXAgZmlsdGVyLCBhbmQgbWFuYWdlcyBzaW5nbGUgc2VsZWN0IGl0ZW0gc2VsZWN0aW9uLlxuXHQgKi9cblx0cHVibGljIG9uU2VhcmNoKHNlYXJjaFN0cmluZywgc2hvdWxkRW1pdFNlYXJjaCA9IHRydWUpIHtcblx0XHRpZiAoc2hvdWxkRW1pdFNlYXJjaCkge1xuXHRcdFx0dGhpcy5zZWFyY2guZW1pdChzZWFyY2hTdHJpbmcpO1xuXHRcdH1cblx0XHR0aGlzLnNob3dDbGVhckJ1dHRvbiA9ICEhc2VhcmNoU3RyaW5nO1xuXHRcdHRoaXMudmlldy5maWx0ZXJCeShzZWFyY2hTdHJpbmcpO1xuXHRcdGlmIChzZWFyY2hTdHJpbmcgIT09IFwiXCIpIHtcblx0XHRcdGlmICghdGhpcy5vcGVuKSB7XG5cdFx0XHRcdHRoaXMub3BlbkRyb3Bkb3duKCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IFwiXCI7XG5cdFx0XHRpZiAodGhpcy50eXBlID09PSBcIm11bHRpXCIgJiZcblx0XHRcdFx0KHRoaXMuc2VsZWN0aW9uRmVlZGJhY2sgPT09IFwidG9wXCIgfHwgdGhpcy5zZWxlY3Rpb25GZWVkYmFjayA9PT0gXCJ0b3AtYWZ0ZXItcmVvcGVuXCIpKSB7XG5cdFx0XHRcdHRoaXMudmlldy5yZW9yZGVyU2VsZWN0ZWQoKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHRoaXMudHlwZSA9PT0gXCJzaW5nbGVcIikge1xuXHRcdFx0Ly8gZGVzZWxlY3QgaWYgdGhlIGlucHV0IGRvZXNuJ3QgbWF0Y2ggdGhlIGNvbnRlbnRcblx0XHRcdC8vIG9mIGFueSBnaXZlbiBpdGVtXG5cdFx0XHRjb25zdCBtYXRjaGVzID0gdGhpcy52aWV3LmdldExpc3RJdGVtcygpLnNvbWUoaXRlbSA9PiBpdGVtLmNvbnRlbnQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hTdHJpbmcudG9Mb3dlckNhc2UoKSkpO1xuXHRcdFx0aWYgKCFtYXRjaGVzKSB7XG5cdFx0XHRcdGNvbnN0IHNlbGVjdGVkID0gdGhpcy52aWV3LmdldFNlbGVjdGVkKCk7XG5cdFx0XHRcdGlmICghc2VsZWN0ZWQgfHwgIXNlbGVjdGVkWzBdKSB7XG5cdFx0XHRcdFx0dGhpcy52aWV3LmZpbHRlckJ5KHNlYXJjaFN0cmluZyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSW50ZW5kZWQgdG8gYmUgdXNlZCB0byBhZGQgaXRlbXMgdG8gdGhlIGxpc3QuXG5cdCAqL1xuXHRwdWJsaWMgb25TdWJtaXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcblx0XHR0aGlzLnN1Ym1pdC5lbWl0KHtcblx0XHRcdGl0ZW1zOiB0aGlzLnZpZXcuZ2V0TGlzdEl0ZW1zKCksXG5cdFx0XHRpbmRleDogMCxcblx0XHRcdHZhbHVlOiB7XG5cdFx0XHRcdGNvbnRlbnQ6IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUsXG5cdFx0XHRcdHNlbGVjdGVkOiBmYWxzZVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0Y2xlYXJJbnB1dChldmVudCkge1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHRpZiAodGhpcy50eXBlID09PSBcInNpbmdsZVwiKSB7IC8vIGRvbid0IHdhbnQgdG8gY2xlYXIgc2VsZWN0ZWQgb3IgY2xvc2UgaWYgbXVsdGlcblx0XHRcdHRoaXMuY2xlYXJTZWxlY3RlZChldmVudCk7XG5cdFx0XHR0aGlzLmNsb3NlRHJvcGRvd24oKTtcblx0XHR9XG5cblx0XHR0aGlzLnNlbGVjdGVkVmFsdWUgPSBcIlwiO1xuXHRcdHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XG5cblx0XHR0aGlzLnNob3dDbGVhckJ1dHRvbiA9IGZhbHNlO1xuXHRcdHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHRcdHRoaXMub25TZWFyY2godGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlKTtcblx0fVxuXG5cdHB1YmxpYyBpc1RlbXBsYXRlKHZhbHVlKSB7XG5cdFx0cmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyBrZXlib2FyZCBldmVudHMgc28gdXNlcnMgYXJlIGNvbnRyb2xsaW5nIHRoZSBgRHJvcGRvd25gIGluc3RlYWQgb2YgdW5pbnRlbnRpb25hbGx5IGNvbnRyb2xsaW5nIG91dHNpZGUgZWxlbWVudHMuXG5cdCAqL1xuXHRfa2V5Ym9hcmROYXYoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcblx0XHRpZiAoKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIikgJiYgdGhpcy5vcGVuKSB7XG5cdFx0XHRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsgIC8vIGRvbid0IHVuaW50ZW50aW9uYWxseSBjbG9zZSBtb2RhbCBpZiBpbnNpZGUgb2YgaXRcblx0XHR9XG5cdFx0aWYgKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIikge1xuXHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdHRoaXMuY2xvc2VEcm9wZG93bigpO1xuXHRcdFx0dGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLm9wZW4gJiYgZXZlbnQua2V5ID09PSBcIlRhYlwiKSB7XG5cdFx0XHQvLyB0aGlzIHdheSBmb2N1cyB3aWxsIHN0YXJ0IG9uIHRoZSBuZXh0IGZvY3VzYWJsZSBpdGVtIGZyb20gdGhlIGRyb3Bkb3duXG5cdFx0XHQvLyBub3QgdGhlIHRvcCBvZiB0aGUgYm9keSFcblx0XHRcdHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHRcdFx0dGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoXCJrZXlkb3duXCIsIHtidWJibGVzOiB0cnVlLCBjYW5jZWxhYmxlOiB0cnVlLCBrZXk6IFwiVGFiXCJ9KSk7XG5cdFx0XHR0aGlzLmNsb3NlRHJvcGRvd24oKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgYERyb3Bkb3duYCBsaXN0IGFzIGFuIGVsZW1lbnQgdGhhdCBpcyBhcHBlbmRlZCB0byB0aGUgRE9NIGJvZHkuXG5cdCAqL1xuXHRfYXBwZW5kVG9Cb2R5KCkge1xuXHRcdHRoaXMuZHJvcGRvd25TZXJ2aWNlLmFwcGVuZFRvQm9keShcblx0XHRcdHRoaXMubGlzdGJveC5uYXRpdmVFbGVtZW50LFxuXHRcdFx0dGhpcy5kcm9wZG93bk1lbnUubmF0aXZlRWxlbWVudCxcblx0XHRcdGAke3RoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZX0ke3RoaXMub3BlbiA/IFwiIGNkcy0tbGlzdC1ib3gtLWV4cGFuZGVkXCIgOiBcIlwifWApO1xuXHRcdHRoaXMuZHJvcGRvd25NZW51Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgdGhpcy5rZXlib2FyZE5hdiwgdHJ1ZSk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgYERyb3Bkb3duYCBsaXN0IGFwcGVuZGluZyBpdCB0byB0aGUgZHJvcGRvd24gcGFyZW50IG9iamVjdCBpbnN0ZWFkIG9mIHRoZSBib2R5LlxuXHQgKi9cblx0X2FwcGVuZFRvRHJvcGRvd24oKSB7XG5cdFx0dGhpcy5kcm9wZG93blNlcnZpY2UuYXBwZW5kVG9Ecm9wZG93bih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG5cdFx0dGhpcy5kcm9wZG93bk1lbnUubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCB0aGlzLmtleWJvYXJkTmF2LCB0cnVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZXRlY3RzIHdoZXRoZXIgb3Igbm90IHRoZSBgRHJvcGRvd25gIGxpc3QgaXMgdmlzaWJsZSB3aXRoaW4gYWxsIHNjcm9sbGFibGUgcGFyZW50cy5cblx0ICogVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBwYXNzaW5nIGluIGEgdmFsdWUgdG8gdGhlIGBkcm9wVXBgIGlucHV0LlxuXHQgKi9cblx0X3Nob3VsZERyb3BVcCgpIHtcblx0XHQvLyBjaGVjayBpZiBkcm9wZG93bk1lbnUgZXhpc3RzIGZpcnN0LlxuXHRcdGNvbnN0IG1lbnUgPSB0aGlzLmRyb3Bkb3duTWVudSAmJiB0aGlzLmRyb3Bkb3duTWVudS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuY2RzLS1saXN0LWJveF9fbWVudVwiKTtcblx0XHQvLyBjaGVjayBpZiBtZW51IGV4aXN0cyBmaXJzdC5cblx0XHRjb25zdCBtZW51UmVjdCA9IG1lbnUgJiYgbWVudS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblx0XHRpZiAobWVudSAmJiBtZW51UmVjdCkge1xuXHRcdFx0Y29uc3Qgc2Nyb2xsYWJsZVBhcmVudHMgPSBnZXRTY3JvbGxhYmxlUGFyZW50cyhtZW51KTtcblx0XHRcdHJldHVybiBzY3JvbGxhYmxlUGFyZW50cy5yZWR1Y2UoKHNob3VsZERyb3BVcDogYm9vbGVhbiwgcGFyZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuXHRcdFx0XHRjb25zdCBwYXJlbnRSZWN0ID0gcGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRcdFx0XHRjb25zdCBpc0JlbG93UGFyZW50ID0gIShtZW51UmVjdC5ib3R0b20gPD0gcGFyZW50UmVjdC5ib3R0b20pO1xuXHRcdFx0XHRyZXR1cm4gc2hvdWxkRHJvcFVwIHx8IGlzQmVsb3dQYXJlbnQ7XG5cdFx0XHR9LCBmYWxzZSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cHJvdGVjdGVkIHVwZGF0ZVNlbGVjdGVkKCkge1xuXHRcdGNvbnN0IHNlbGVjdGVkID0gdGhpcy52aWV3LmdldFNlbGVjdGVkKCk7XG5cdFx0aWYgKHRoaXMudHlwZSA9PT0gXCJtdWx0aVwiICkge1xuXHRcdFx0dGhpcy51cGRhdGVQaWxscygpO1xuXHRcdH0gZWxzZSBpZiAoc2VsZWN0ZWQpIHtcblx0XHRcdGNvbnN0IHZhbHVlID0gc2VsZWN0ZWRbMF0gPyBzZWxlY3RlZFswXS5jb250ZW50IDogXCJcIjtcblx0XHRcdGNvbnN0IGNoYW5nZUNhbGxiYWNrVmFsdWUgPSBzZWxlY3RlZFswXSA/IHNlbGVjdGVkWzBdIDogXCJcIjtcblx0XHRcdHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlO1xuXHRcdFx0dGhpcy5zaG93Q2xlYXJCdXR0b24gPSAhIXZhbHVlO1xuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBjaGVja0ZvclJlb3JkZXIoKSB7XG5cdFx0Y29uc3QgdG9wQWZ0ZXJSZW9wZW4gPSAhdGhpcy5vcGVuICYmIHRoaXMuc2VsZWN0aW9uRmVlZGJhY2sgPT09IFwidG9wLWFmdGVyLXJlb3BlblwiO1xuXHRcdGlmICgodGhpcy50eXBlID09PSBcIm11bHRpXCIpICYmICh0b3BBZnRlclJlb3BlbiB8fCB0aGlzLnNlbGVjdGlvbkZlZWRiYWNrID09PSBcInRvcFwiKSkge1xuXHRcdFx0dGhpcy52aWV3LnJlb3JkZXJTZWxlY3RlZCh0cnVlKTtcblx0XHR9XG5cdH1cbn1cbiJdfQ==
|
|
@@ -17,6 +17,7 @@ export class IconDirective {
|
|
|
17
17
|
constructor(elementRef, iconService) {
|
|
18
18
|
this.elementRef = elementRef;
|
|
19
19
|
this.iconService = iconService;
|
|
20
|
+
this.cdsIcon = "";
|
|
20
21
|
this.size = "16";
|
|
21
22
|
this.title = "";
|
|
22
23
|
this.ariaLabel = "";
|
|
@@ -30,10 +31,6 @@ export class IconDirective {
|
|
|
30
31
|
set ibmIcon(iconName) {
|
|
31
32
|
this.cdsIcon = iconName;
|
|
32
33
|
}
|
|
33
|
-
set cdsIcon(iconName) {
|
|
34
|
-
this.iconName = iconName;
|
|
35
|
-
this.renderIcon(iconName);
|
|
36
|
-
}
|
|
37
34
|
renderIcon(iconName) {
|
|
38
35
|
const root = this.elementRef.nativeElement;
|
|
39
36
|
let icon;
|
|
@@ -92,12 +89,19 @@ export class IconDirective {
|
|
|
92
89
|
}
|
|
93
90
|
}
|
|
94
91
|
ngAfterViewInit() {
|
|
95
|
-
this.renderIcon(this.
|
|
92
|
+
this.renderIcon(this.cdsIcon);
|
|
93
|
+
}
|
|
94
|
+
ngOnChanges({ cdsIcon }) {
|
|
95
|
+
// We want to ignore first change to let the icon register
|
|
96
|
+
// and add only after view has been initialized
|
|
97
|
+
if (!cdsIcon.isFirstChange()) {
|
|
98
|
+
this.renderIcon(this.cdsIcon);
|
|
99
|
+
}
|
|
96
100
|
}
|
|
97
101
|
}
|
|
98
102
|
IconDirective.titleIdCounter = 0;
|
|
99
103
|
IconDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: IconDirective, deps: [{ token: i0.ElementRef }, { token: i1.IconService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
100
|
-
IconDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: { ibmIcon: "ibmIcon", cdsIcon: "cdsIcon", size: "size", title: "title", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaHidden: "ariaHidden", isFocusable: "isFocusable" }, ngImport: i0 });
|
|
104
|
+
IconDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: { ibmIcon: "ibmIcon", cdsIcon: "cdsIcon", size: "size", title: "title", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaHidden: "ariaHidden", isFocusable: "isFocusable" }, usesOnChanges: true, ngImport: i0 });
|
|
101
105
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: IconDirective, decorators: [{
|
|
102
106
|
type: Directive,
|
|
103
107
|
args: [{
|
|
@@ -120,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
120
124
|
}], isFocusable: [{
|
|
121
125
|
type: Input
|
|
122
126
|
}] } });
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWNvbi9pY29uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRU4sU0FBUyxFQUVULEtBQUssRUFHTCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQUVyRDs7Ozs7Ozs7OztHQVVHO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUF5QnpCLFlBQ1csVUFBc0IsRUFDdEIsV0FBd0I7UUFEeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWhCMUIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUViLFNBQUksR0FBRyxJQUFJLENBQUM7UUFFWixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRVgsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVmLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBRXBCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFLMUIsQ0FBQztJQTFCSjs7T0FFRztJQUNILElBQWEsT0FBTyxDQUFDLFFBQWdCO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUF1QkQsVUFBVSxDQUFDLFFBQWdCO1FBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBNEIsQ0FBQztRQUUxRCxJQUFJLElBQUksQ0FBQztRQUNULElBQUk7WUFDSCxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUM1RDtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQixXQUFX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QUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7U0FDMUY7SUFDRixDQUFDO0lBRUQsZUFBZTtRQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQWlCO1FBQ3JDLDBEQUEwRDtRQUMxRCwrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM5QjtJQUNGLENBQUM7O0FBakdNLDRCQUFjLEdBQUcsQ0FBQyxDQUFDOzBHQVRkLGFBQWE7OEZBQWIsYUFBYTsyRkFBYixhQUFhO2tCQUh6QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxzQkFBc0I7aUJBQ2hDOzJIQU1hLE9BQU87c0JBQW5CLEtBQUs7Z0JBTUcsT0FBTztzQkFBZixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEFmdGVyVmlld0luaXQsXG5cdERpcmVjdGl2ZSxcblx0RWxlbWVudFJlZixcblx0SW5wdXQsXG5cdE9uQ2hhbmdlcyxcblx0U2ltcGxlQ2hhbmdlc1xufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSWNvblNlcnZpY2UgfSBmcm9tIFwiLi9pY29uLnNlcnZpY2VcIjtcbmltcG9ydCB7IGdldEF0dHJpYnV0ZXMgfSBmcm9tIFwiQGNhcmJvbi9pY29uLWhlbHBlcnNcIjtcblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSBmb3IgYXBwbHlpbmcgc3R5bGluZyB0byBhbiBpbnB1dCBlbGVtZW50LlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBgaHRtbFxuICogPGlucHV0IGNkc1RleHQvPlxuICogYGBgXG4gKlxuICogU2VlIHRoZSBbdmFuaWxsYSBjYXJib24gZG9jc10oaHR0cDovL3d3dy5jYXJib25kZXNpZ25zeXN0ZW0uY29tL2NvbXBvbmVudHMvdGV4dC1pbnB1dC9jb2RlKSBmb3IgbW9yZSBkZXRhaWwuXG4gKi9cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogXCJbY2RzSWNvbl0sIFtpYm1JY29uXVwiXG59KVxuZXhwb3J0IGNsYXNzIEljb25EaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuXG5cdC8qKlxuXHQgKiBAZGVwcmVjYXRlZCBzaW5jZSB2NSAtIFVzZSBgY2RzSWNvbmAgaW5wdXQgcHJvcGVydHkgaW5zdGVhZFxuXHQgKi9cblx0QElucHV0KCkgc2V0IGlibUljb24oaWNvbk5hbWU6IHN0cmluZykge1xuXHRcdHRoaXMuY2RzSWNvbiA9IGljb25OYW1lO1xuXHR9XG5cblx0c3RhdGljIHRpdGxlSWRDb3VudGVyID0gMDtcblxuXHRASW5wdXQoKSBjZHNJY29uID0gXCJcIjtcblxuXHRASW5wdXQoKSBzaXplID0gXCIxNlwiO1xuXG5cdEBJbnB1dCgpIHRpdGxlID0gXCJcIjtcblxuXHRASW5wdXQoKSBhcmlhTGFiZWwgPSBcIlwiO1xuXG5cdEBJbnB1dCgpIGFyaWFMYWJlbGxlZEJ5ID0gXCJcIjtcblxuXHRASW5wdXQoKSBhcmlhSGlkZGVuID0gXCJcIjtcblxuXHRASW5wdXQoKSBpc0ZvY3VzYWJsZSA9IGZhbHNlO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuXHRcdHByb3RlY3RlZCBpY29uU2VydmljZTogSWNvblNlcnZpY2Vcblx0KSB7fVxuXG5cdHJlbmRlckljb24oaWNvbk5hbWU6IHN0cmluZykge1xuXHRcdGNvbnN0IHJvb3QgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcblxuXHRcdGxldCBpY29uO1xuXHRcdHRyeSB7XG5cdFx0XHRpY29uID0gdGhpcy5pY29uU2VydmljZS5nZXQoaWNvbk5hbWUsIHRoaXMuc2l6ZS50b1N0cmluZygpKTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0Y29uc29sZS53YXJuKGVycm9yKTtcblx0XHRcdC8vIGJhaWwgb3V0XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgZG9tUGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuXHRcdGNvbnN0IHJhd1NWRyA9IGljb24uc3ZnO1xuXHRcdGNvbnN0IHN2Z0VsZW1lbnQgPSBkb21QYXJzZXIucGFyc2VGcm9tU3RyaW5nKHJhd1NWRywgXCJpbWFnZS9zdmcreG1sXCIpLmRvY3VtZW50RWxlbWVudDtcblxuXHRcdGxldCBub2RlOiBDaGlsZE5vZGUgPSByb290LnRhZ05hbWUudG9VcHBlckNhc2UoKSAhPT0gXCJTVkdcIiA/IHN2Z0VsZW1lbnQgOiBzdmdFbGVtZW50LmZpcnN0Q2hpbGQ7XG5cdFx0cm9vdC5pbm5lckhUTUwgPSBcIlwiOyAvLyBDbGVhciByb290IGVsZW1lbnRcblx0XHR3aGlsZSAobm9kZSkge1xuXHRcdFx0Ly8gaW1wb3J0Tm9kZSBtYWtlcyBhIGNsb25lIG9mIHRoZSBub2RlXG5cdFx0XHQvLyB0aGlzIGVuc3VyZXMgd2Uga2VlcCBsb29waW5nIG92ZXIgdGhlIG5vZGVzIGluIHRoZSBwYXJzZWQgZG9jdW1lbnRcblx0XHRcdHJvb3QuYXBwZW5kQ2hpbGQocm9vdC5vd25lckRvY3VtZW50LmltcG9ydE5vZGUobm9kZSwgdHJ1ZSkpO1xuXHRcdFx0Ly8gdHlwZSB0aGUgbm9kZSBiZWNhdXNlIHRoZSBhbmd1bGFyIGNvbXBpbGVyIGZyZWFrcyBvdXQgaWYgaXRcblx0XHRcdC8vIGVuZHMgdXAgdGhpbmtpbmcgaXQncyBhIGBOb2RlYCBpbnN0ZWFkIG9mIGEgYENoaWxkTm9kZWBcblx0XHRcdG5vZGUgPSBub2RlLm5leHRTaWJsaW5nIGFzIENoaWxkTm9kZTtcblx0XHR9XG5cblx0XHRjb25zdCBzdmcgPSByb290LnRhZ05hbWUudG9VcHBlckNhc2UoKSAhPT0gXCJTVkdcIiA/IHN2Z0VsZW1lbnQgOiByb290O1xuXHRcdHN2Zy5zZXRBdHRyaWJ1dGUoXCJ4bWxuc1wiLCBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIpO1xuXG5cdFx0Y29uc3QgYXR0cmlidXRlcyA9IGdldEF0dHJpYnV0ZXMoe1xuXHRcdFx0d2lkdGg6IGljb24uYXR0cnMud2lkdGgsXG5cdFx0XHRoZWlnaHQ6IGljb24uYXR0cnMuaGVpZ2h0LFxuXHRcdFx0dmlld0JveDogaWNvbi5hdHRycy52aWV3Qm94LFxuXHRcdFx0dGl0bGU6IHRoaXMudGl0bGUsXG5cdFx0XHRcImFyaWEtbGFiZWxcIjogdGhpcy5hcmlhTGFiZWwsXG5cdFx0XHRcImFyaWEtbGFiZWxsZWRieVwiOiB0aGlzLmFyaWFMYWJlbGxlZEJ5LFxuXHRcdFx0XCJhcmlhLWhpZGRlblwiOiB0aGlzLmFyaWFIaWRkZW4sXG5cdFx0XHRmb2N1c2FibGU6IHRoaXMuaXNGb2N1c2FibGUudG9TdHJpbmcoKVxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgYXR0cktleXMgPSBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJLZXlzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBrZXkgPSBhdHRyS2V5c1tpXTtcblx0XHRcdGNvbnN0IHZhbHVlID0gYXR0cmlidXRlc1trZXldO1xuXG5cdFx0XHRpZiAoa2V5ID09PSBcInRpdGxlXCIpIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh2YWx1ZSkge1xuXHRcdFx0XHRzdmcuc2V0QXR0cmlidXRlKGtleSwgdmFsdWUpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChhdHRyaWJ1dGVzW1widGl0bGVcIl0pIHtcblx0XHRcdGNvbnN0IHRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRpdGxlXCIpO1xuXHRcdFx0dGl0bGUudGV4dENvbnRlbnQgPSBhdHRyaWJ1dGVzLnRpdGxlO1xuXHRcdFx0SWNvbkRpcmVjdGl2ZS50aXRsZUlkQ291bnRlcisrO1xuXHRcdFx0dGl0bGUuc2V0QXR0cmlidXRlKFwiaWRcIiwgYCR7aWNvbi5uYW1lfS10aXRsZS0ke0ljb25EaXJlY3RpdmUudGl0bGVJZENvdW50ZXJ9YCk7XG5cdFx0XHQvLyB0aXRsZSBtdXN0IGJlIGZpcnN0IGZvciBzY3JlZW4gcmVhZGVyc1xuXHRcdFx0c3ZnLmluc2VydEJlZm9yZSh0aXRsZSwgc3ZnLmZpcnN0RWxlbWVudENoaWxkKTtcblx0XHRcdHN2Zy5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIiwgYCR7aWNvbi5uYW1lfS10aXRsZS0ke0ljb25EaXJlY3RpdmUudGl0bGVJZENvdW50ZXJ9YCk7XG5cdFx0fVxuXHR9XG5cblx0bmdBZnRlclZpZXdJbml0KCkge1xuXHRcdHRoaXMucmVuZGVySWNvbih0aGlzLmNkc0ljb24pO1xuXHR9XG5cblx0bmdPbkNoYW5nZXMoeyBjZHNJY29uIH06IFNpbXBsZUNoYW5nZXMpIHtcblx0XHQvLyBXZSB3YW50IHRvIGlnbm9yZSBmaXJzdCBjaGFuZ2UgdG8gbGV0IHRoZSBpY29uIHJlZ2lzdGVyXG5cdFx0Ly8gYW5kIGFkZCBvbmx5IGFmdGVyIHZpZXcgaGFzIGJlZW4gaW5pdGlhbGl6ZWRcblx0XHRpZiAoIWNkc0ljb24uaXNGaXJzdENoYW5nZSgpKSB7XG5cdFx0XHR0aGlzLnJlbmRlckljb24odGhpcy5jZHNJY29uKTtcblx0XHR9XG5cdH1cbn1cbiJdfQ==
|