<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>150494</bug_id>
          
          <creation_ts>2015-10-23 01:15:57 -0700</creation_ts>
          <short_desc>Web Inspector: Add support for Gradients in the Visual sidebar background editor</short_desc>
          <delta_ts>2015-11-20 15:16:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>147563</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1135998</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-10-23 01:15:57 -0700</bug_when>
    <thetext>Suggested in https://bugs.webkit.org/show_bug.cgi?id=148310</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135999</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-10-23 01:16:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/23232369&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142152</commentid>
    <comment_count>2</comment_count>
      <attachid>265567</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-11-15 18:49:23 -0800</bug_when>
    <thetext>Created attachment 265567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142153</commentid>
    <comment_count>3</comment_count>
      <attachid>265568</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-11-15 18:49:51 -0800</bug_when>
    <thetext>Created attachment 265568
After patch is applied</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142155</commentid>
    <comment_count>4</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-11-15 19:40:45 -0800</bug_when>
    <thetext>By the way, I worked on this with less than 3 hours of sleep during HackSC, so there may be obvious errors...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142259</commentid>
    <comment_count>5</comment_count>
      <attachid>265567</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-11-16 10:39:05 -0800</bug_when>
    <thetext>Comment on attachment 265567
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=265567&amp;action=review

Cool! I&apos;ll let someone else review, but this looks great.

&gt; Source/WebInspectorUI/ChangeLog:112
&gt; +        Reworked into VisualStyleBackgroundEditor.js.

Typo: VisualStyleBackgroundPicker.js

&gt; Source/WebInspectorUI/UserInterface/Views/GradientEditor.js:2
&gt; + * Copyright (C) 2015 Devin Rousso &lt;dcrousso+webkit@gmail.com&gt;. All rights reserved.

Since a lot of this code came from an existing file with a copyright, it should have both you and the original (&quot;Copyright (C) 2014 Apple Inc. All rights reserved.&quot;)

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleBackgroundPicker.js:194
&gt; +    _valueInputValueChanged(event) {

Style: Brace on new line

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleBackgroundPicker.js:207
&gt; +    _handleKeywordChanged(event) {

Style: Brace on new line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142265</commentid>
    <comment_count>6</comment_count>
      <attachid>265567</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-11-16 10:45:21 -0800</bug_when>
    <thetext>Comment on attachment 265567
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=265567&amp;action=review

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/GradientEditor.js:2
&gt;&gt; + * Copyright (C) 2015 Devin Rousso &lt;dcrousso+webkit@gmail.com&gt;. All rights reserved.
&gt; 
&gt; Since a lot of this code came from an existing file with a copyright, it should have both you and the original (&quot;Copyright (C) 2014 Apple Inc. All rights reserved.&quot;)

Ah OK gotcha.  I wasn&apos;t really sure how to go about doing that, but what you wrote makes sense.  Thanks!

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleBackgroundPicker.js:194
&gt;&gt; +    _valueInputValueChanged(event) {
&gt; 
&gt; Style: Brace on new line

Oops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142715</commentid>
    <comment_count>7</comment_count>
      <attachid>265567</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-11-17 16:49:08 -0800</bug_when>
    <thetext>Comment on attachment 265567
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=265567&amp;action=review

&gt; Source/WebInspectorUI/UserInterface/Controllers/CodeMirrorGradientEditingController.js:63
&gt; +        this._gradientEditor.addEventListener(WebInspector.GradientEditor.Event.ColorPickerToggled, popover.update, popover);

It is usually better to have a wrapper listener to make sure the function isn&apos;t confused by the first argument being an event object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143586</commentid>
    <comment_count>8</comment_count>
      <attachid>265942</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-11-19 22:28:39 -0800</bug_when>
    <thetext>Created attachment 265942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143824</commentid>
    <comment_count>9</comment_count>
      <attachid>265942</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-11-20 14:28:39 -0800</bug_when>
    <thetext>Comment on attachment 265942
Patch

&gt;diff --git a/Source/WebInspectorUI/ChangeLog b/Source/WebInspectorUI/ChangeLog
&gt;index bb02dcf..591e236 100644
&gt;--- a/Source/WebInspectorUI/ChangeLog
&gt;+++ b/Source/WebInspectorUI/ChangeLog
&gt;@@ -1,3 +1,116 @@
&gt;+2015-11-20  Devin Rousso  &lt;dcrousso+webkit@gmail.com&gt;
&gt;+
&gt;+        Web Inspector: Add support for Gradients in the Visual sidebar background editor
&gt;+        https://bugs.webkit.org/show_bug.cgi?id=150494
&gt;+
&gt;+        Reviewed by Timothy Hatcher.
&gt;+
&gt;+        Allows the editors in the Visual sidebar Background Style section to
&gt;+        work with gradients and data URIs.
&gt;+
&gt;+        * Localizations/en.lproj/localizedStrings.js:
&gt;+        * UserInterface/Controllers/CodeMirrorGradientEditingController.css: Deleted.
&gt;+        Some styling was reused in VisualStyleBackgroundPicker.css.
&gt;+
&gt;+        * UserInterface/Controllers/CodeMirrorGradientEditingController.js:
&gt;+        (WebInspector.CodeMirrorGradientEditingController):
&gt;+        (WebInspector.CodeMirrorGradientEditingController.prototype.popoverWillPresent):
&gt;+        (WebInspector.CodeMirrorGradientEditingController.prototype.popoverDidPresent):
&gt;+        (WebInspector.CodeMirrorGradientEditingController.prototype._gradientEditorGradientChanged):
&gt;+        (WebInspector.CodeMirrorGradientEditingController.prototype.handleEvent): Deleted.
&gt;+        (WebInspector.CodeMirrorGradientEditingController.prototype.gradientSliderStopsDidChange): Deleted.
&gt;+        (WebInspector.CodeMirrorGradientEditingController.prototype.gradientSliderStopWasSelected): Deleted.
&gt;+        (WebInspector.CodeMirrorGradientEditingController.prototype.dragToAdjustControllerWasAdjustedByAmount): Deleted.
&gt;+        (WebInspector.CodeMirrorGradientEditingController.prototype._handleInputEvent): Deleted.
&gt;+        (WebInspector.CodeMirrorGradientEditingController.prototype._angleInputValueDidChange): Deleted.
&gt;+        (WebInspector.CodeMirrorGradientEditingController.prototype._handleChangeEvent): Deleted.
&gt;+        (WebInspector.CodeMirrorGradientEditingController.prototype._colorPickerColorChanged): Deleted.
&gt;+        (WebInspector.CodeMirrorGradientEditingController.prototype._updateCSSClassForGradientType): Deleted.
&gt;+        Reworked gradient editor popup into WebInspector.GradientEditor.
&gt;+
&gt;+        * UserInterface/Main.html:
&gt;+        * UserInterface/Models/Gradient.js:
&gt;+        (WebInspector.Gradient.fromString):
&gt;+        (WebInspector.Gradient.stopsWithComponents):
&gt;+        (WebInspector.LinearGradient.linearGradientWithComponents):
&gt;+        Removed console.error statements as they didn&apos;t do anything but clog the console.
&gt;+
&gt;+        * UserInterface/Views/GradientEditor.css: Added.
&gt;+        (.gradient-editor):
&gt;+        (.gradient-editor.radial-gradient):
&gt;+        (.gradient-editor.editing-color):
&gt;+        (.gradient-editor.radial-gradient.editing-color):
&gt;+        (.gradient-editor &gt; .gradient-type-select):
&gt;+        (.gradient-editor &gt; .gradient-slider):
&gt;+        (.gradient-editor &gt; .color-picker):
&gt;+        (.gradient-editor &gt; .color-picker &gt; .slider):
&gt;+        (.gradient-editor &gt; .color-picker &gt; .brightness):
&gt;+        (.gradient-editor &gt; .color-picker &gt; .opacity):
&gt;+        (.gradient-editor &gt; .gradient-angle):
&gt;+        (.gradient-editor.radial-gradient &gt; .gradient-angle):
&gt;+        (.gradient-editor &gt; .gradient-angle &gt; input):
&gt;+
&gt;+        * UserInterface/Views/GradientEditor.js: Added.
&gt;+        (WebInspector.GradientEditor):
&gt;+        (WebInspector.GradientEditor.prototype.get element):
&gt;+        (WebInspector.GradientEditor.prototype.set gradient):
&gt;+        (WebInspector.GradientEditor.prototype.get gradient):
&gt;+        (WebInspector.GradientEditor.prototype.gradientSliderStopsDidChange):
&gt;+        (WebInspector.GradientEditor.prototype.gradientSliderStopWasSelected):
&gt;+        (WebInspector.GradientEditor.prototype.dragToAdjustControllerWasAdjustedByAmount):
&gt;+        (WebInspector.GradientEditor.prototype._updateCSSClassForGradientType):
&gt;+        (WebInspector.GradientEditor.prototype._gradientTypeChanged):
&gt;+        (WebInspector.GradientEditor.prototype._colorPickerColorChanged):
&gt;+        (WebInspector.GradientEditor.prototype._angleChanged):
&gt;+        (WebInspector.GradientEditor.prototype._angleInputValueDidChange):
&gt;+        New standalone editor for CSS Gradients.
&gt;+
&gt;+        * UserInterface/Views/VisualStyleBackgroundPicker.css: Added.
&gt;+        (.visual-style-property-container.background-picker &gt; .visual-style-property-value-container):
&gt;+        (.visual-style-property-container.background-picker &gt; .visual-style-property-value-container &gt; .color-gradient-swatch):
&gt;+        (.visual-style-property-container.background-picker &gt; .visual-style-property-value-container &gt; .color-gradient-swatch:hover):
&gt;+        (.visual-style-property-container.background-picker &gt; .visual-style-property-value-container &gt; .color-gradient-swatch:active):
&gt;+        (.visual-style-property-container.background-picker &gt; .visual-style-property-value-container &gt; .color-gradient-swatch &gt; span):
&gt;+        (.visual-style-property-container.background-picker &gt; .visual-style-property-value-container.gradient-value &gt; .color-gradient-swatch):
&gt;+        (.visual-style-property-container.background-picker &gt; .visual-style-property-value-container.gradient-value &gt; .color-gradient-swatch + .value-input):
&gt;+        (.visual-style-property-container.background-picker &gt; .visual-style-property-value-container &gt; .value-input):
&gt;+        (.visual-style-property-container.background-picker &gt; .visual-style-property-value-container &gt; .value-input[disabled]):
&gt;+        (.visual-style-property-container.background-picker &gt; .visual-style-property-value-container &gt; .value-type-picker-select):
&gt;+
&gt;+        * UserInterface/Views/VisualStyleBackgroundPicker.js: Added.
&gt;+        (WebInspector.VisualStyleBackgroundPicker):
&gt;+        (WebInspector.VisualStyleBackgroundPicker.prototype.get value):
&gt;+        (WebInspector.VisualStyleBackgroundPicker.prototype.set value):
&gt;+        (WebInspector.VisualStyleBackgroundPicker.prototype.get synthesizedValue):
&gt;+        (WebInspector.VisualStyleBackgroundPicker.prototype.parseValue):
&gt;+        (WebInspector.VisualStyleBackgroundPicker.prototype._updateValueInput):
&gt;+        (WebInspector.VisualStyleBackgroundPicker.prototype._updateGradientSwatch):
&gt;+        (WebInspector.VisualStyleBackgroundPicker.prototype._gradientSwatchClicked):
&gt;+        (WebInspector.VisualStyleBackgroundPicker.prototype._gradientEditorGradientChanged):
&gt;+        (WebInspector.VisualStyleBackgroundPicker.prototype._valueInputValueChanged):
&gt;+        (WebInspector.VisualStyleBackgroundPicker.prototype._keywordSelectMouseDown):
&gt;+        (WebInspector.VisualStyleBackgroundPicker.prototype._handleKeywordChanged):
&gt;+        (WebInspector.VisualStyleBackgroundPicker.prototype._createValueOptions):
&gt;+        (WebInspector.VisualStyleBackgroundPicker.prototype._addAdvancedValues):
&gt;+        (WebInspector.VisualStyleBackgroundPicker.prototype._removeAdvancedValues):
&gt;+        (WebInspector.VisualStyleBackgroundPicker.prototype._toggleTabbingOfSelectableElements):
&gt;+        Visual property editor for the CSS background-image property. Supports
&gt;+        limited keywords, as well as url() and gradients.
&gt;+
&gt;+        * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:
&gt;+        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.set value):
&gt;+        Fixed regular expression parsing to not match commas inside parenthesis.
&gt;+
&gt;+        * UserInterface/Views/VisualStyleDetailsPanel.js:
&gt;+        (WebInspector.VisualStyleDetailsPanel.prototype._populateBackgroundStyleSection):
&gt;+
&gt;+        * UserInterface/Views/VisualStylePropertyEditorLink.css:
&gt;+        (.visual-style-property-editor-link:not(.link-all) &gt; .visual-style-property-editor-link-border):
&gt;+        Fixed spacing of link line.
&gt;+
&gt;+        * UserInterface/Views/VisualStyleURLInput.js: Removed.
&gt;+        Reworked into VisualStyleBackgroundPicker.js.
&gt;+
&gt; 2015-11-19  Brian Burg  &lt;bburg@apple.com&gt;
&gt; 
&gt;         Web Inspector: yank/kill shortcuts (CTRL+Y, K) don&apos;t work in Console / QuickConsole
&gt;diff --git a/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js b/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
&gt;index 60c7fe9bb19d9ca823f11df69ecf21ff3b5b8c7e..2b542f7c7786794dadc4266f1db45d8ae0ec7374 100644
&gt;GIT binary patch
&gt;delta 145
&gt;zcmezLgr(yJ%Z7N{$^2#&lt;lWlE;7}F;!JdvLK*Gve?i+f@@Ip36PbG+&gt;f_sPoZg(h&gt;a
&gt;z=b9YZDgb0#O`h2*u-U!!#$tPKhE#@1hH{2{h9ZU(1_g#NhD3%OhEkxY5&lt;@JIZwtgq
&gt;d4519g44Djh4Cz1~ijK(vo6WZiYcj@j0stifD;fX*
&gt;
&gt;delta 29
&gt;lcmeBp!Sd+|%Z7N{&amp;3|oQxKFNa&lt;Jg?sc46`Mty+x1oB-)@4p#sG
&gt;
&gt;diff --git a/Source/WebInspectorUI/UserInterface/Controllers/CodeMirrorGradientEditingController.css b/Source/WebInspectorUI/UserInterface/Controllers/CodeMirrorGradientEditingController.css
&gt;deleted file mode 100644
&gt;index 30e1af9..0000000
&gt;--- a/Source/WebInspectorUI/UserInterface/Controllers/CodeMirrorGradientEditingController.css
&gt;+++ /dev/null
&gt;@@ -1,117 +0,0 @@
&gt;-/*
&gt;- * Copyright (C) 2014 Apple Inc. All rights reserved.
&gt;- *
&gt;- * Redistribution and use in source and binary forms, with or without
&gt;- * modification, are permitted provided that the following conditions
&gt;- * are met:
&gt;- * 1. Redistributions of source code must retain the above copyright
&gt;- *    notice, this list of conditions and the following disclaimer.
&gt;- * 2. Redistributions in binary form must reproduce the above copyright
&gt;- *    notice, this list of conditions and the following disclaimer in the
&gt;- *    documentation and/or other materials provided with the distribution.
&gt;- *
&gt;- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;
&gt;- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
&gt;- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt;- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
&gt;- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
&gt;- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
&gt;- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
&gt;- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
&gt;- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
&gt;- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
&gt;- * THE POSSIBILITY OF SUCH DAMAGE.
&gt;- */
&gt;-
&gt;-.gradient-editing-controller {
&gt;-    width: 260px;
&gt;-    height: 109px;
&gt;-}
&gt;-
&gt;-.gradient-editing-controller.edits-color {
&gt;-    height: 306px;
&gt;-}
&gt;-
&gt;-.gradient-editing-controller.radial-gradient {
&gt;-    height: 78px;
&gt;-}
&gt;-
&gt;-.gradient-editing-controller.edits-color.radial-gradient {
&gt;-    height: 275px;
&gt;-}
&gt;-
&gt;-.gradient-editing-controller select {
&gt;-    position: absolute;
&gt;-    left: 17px;
&gt;-    top: 9px;
&gt;-    width: 237px;
&gt;-
&gt;-    font-size: 16px;
&gt;-}
&gt;-
&gt;-.gradient-editing-controller .gradient-slider {
&gt;-    left: 16px;
&gt;-    right: 26px;
&gt;-    top: 42px;
&gt;-}
&gt;-
&gt;-.gradient-editing-controller .color-picker {
&gt;-    position: absolute;
&gt;-
&gt;-    top: 86px;
&gt;-    width: 202px;
&gt;-    height: 172px;
&gt;-    padding: 0 10px;
&gt;-}
&gt;-
&gt;-.gradient-editing-controller &gt; .color-picker &gt; .slider {
&gt;-    top: 2px;
&gt;-    width: 186px;
&gt;-}
&gt;-
&gt;-.gradient-editing-controller &gt; .color-picker &gt; .brightness {
&gt;-    left: 214px;
&gt;-}
&gt;-
&gt;-.gradient-editing-controller &gt; .color-picker &gt; .opacity {
&gt;-    left: 237px;
&gt;-}
&gt;-
&gt;-.gradient-editing-controller &gt; label {
&gt;-    position: absolute;
&gt;-    top: 85px;
&gt;-    right: 16px;
&gt;-
&gt;-    text-align: right;
&gt;-    font-size: 13px;
&gt;-}
&gt;-
&gt;-.gradient-editing-controller.radial-gradient &gt; label {
&gt;-    display: none;
&gt;-}
&gt;-
&gt;-.gradient-editing-controller.edits-color &gt; label {
&gt;-    top: 283px;
&gt;-}
&gt;-
&gt;-.gradient-editing-controller &gt; label &gt; input {
&gt;-    width: 48px;
&gt;-
&gt;-    padding-right: 4px;
&gt;-    margin-left: 5px;
&gt;-
&gt;-    background-color: white;
&gt;-
&gt;-    border-radius: 4px;
&gt;-    border: 1px solid hsl(0, 0%, 60%);
&gt;-    box-shadow: inset 0 0 1px 1px hsl(0, 0%, 89%);
&gt;-    outline: 0;
&gt;-
&gt;-    font-size: 13px;
&gt;-    text-align: right;
&gt;-}
&gt;-
&gt;-.gradient-editing-controller &gt; label.drag-to-adjust,
&gt;-.gradient-editing-controller &gt; label.drag-to-adjust &gt; input {
&gt;-    cursor: col-resize;
&gt;-}
&gt;diff --git a/Source/WebInspectorUI/UserInterface/Controllers/CodeMirrorGradientEditingController.js b/Source/WebInspectorUI/UserInterface/Controllers/CodeMirrorGradientEditingController.js
&gt;index e1e16a5..7ff38e0 100644
&gt;--- a/Source/WebInspectorUI/UserInterface/Controllers/CodeMirrorGradientEditingController.js
&gt;+++ b/Source/WebInspectorUI/UserInterface/Controllers/CodeMirrorGradientEditingController.js
&gt;@@ -28,34 +28,6 @@ WebInspector.CodeMirrorGradientEditingController = class CodeMirrorGradientEditi
&gt;     constructor(codeMirror, marker)
&gt;     {
&gt;         super(codeMirror, marker);
&gt;-
&gt;-        if (!WebInspector.CodeMirrorGradientEditingController.GradientTypes) {
&gt;-            WebInspector.CodeMirrorGradientEditingController.GradientTypes = {
&gt;-                &quot;linear-gradient&quot;: {
&gt;-                    type: WebInspector.LinearGradient,
&gt;-                    label: WebInspector.UIString(&quot;Linear Gradient&quot;),
&gt;-                    repeats: false
&gt;-                },
&gt;-
&gt;-                &quot;radial-gradient&quot;: {
&gt;-                    type: WebInspector.RadialGradient,
&gt;-                    label: WebInspector.UIString(&quot;Radial Gradient&quot;),
&gt;-                    repeats: false
&gt;-                },
&gt;-
&gt;-                &quot;repeating-linear-gradient&quot;: {
&gt;-                    type: WebInspector.LinearGradient,
&gt;-                    label: WebInspector.UIString(&quot;Repeating Linear Gradient&quot;),
&gt;-                    repeats: true
&gt;-                },
&gt;-
&gt;-                &quot;repeating-radial-gradient&quot;: {
&gt;-                    type: WebInspector.RadialGradient,
&gt;-                    label: WebInspector.UIString(&quot;Repeating Radial Gradient&quot;),
&gt;-                    repeats: true
&gt;-                }
&gt;-            };
&gt;-        }
&gt;     }
&gt; 
&gt;     // Public
&gt;@@ -86,162 +58,26 @@ WebInspector.CodeMirrorGradientEditingController = class CodeMirrorGradientEditi
&gt; 
&gt;     popoverWillPresent(popover)
&gt;     {
&gt;-        this._container = document.createElement(&quot;div&quot;);
&gt;-        this._container.className = WebInspector.CodeMirrorGradientEditingController.StyleClassName;
&gt;-
&gt;-        this._gradientTypePicker = this._container.appendChild(document.createElement(&quot;select&quot;));
&gt;-        for (var type in WebInspector.CodeMirrorGradientEditingController.GradientTypes) {
&gt;-            var option = this._gradientTypePicker.appendChild(document.createElement(&quot;option&quot;));
&gt;-            option.value = type;
&gt;-            option.innerText = WebInspector.CodeMirrorGradientEditingController.GradientTypes[type].label;
&gt;+        function handleColorPickerToggled(event)
&gt;+        {
&gt;+            popover.update();
&gt;         }
&gt;-        this._gradientTypePicker.addEventListener(&quot;change&quot;, this);
&gt;-
&gt;-        this._gradientSlider = new WebInspector.GradientSlider;
&gt;-        this._container.appendChild(this._gradientSlider.element);
&gt; 
&gt;-        this._colorPicker = new WebInspector.ColorPicker;
&gt;-        this._colorPicker.colorWheel.dimension = 190;
&gt;-        this._colorPicker.addEventListener(WebInspector.ColorPicker.Event.ColorChanged, this._colorPickerColorChanged, this);
&gt;-
&gt;-        var angleLabel = this._container.appendChild(document.createElement(&quot;label&quot;));
&gt;-        angleLabel.textContent = WebInspector.UIString(&quot;Angle&quot;);
&gt;-
&gt;-        this._angleInput = document.createElement(&quot;input&quot;);
&gt;-        this._angleInput.type = &quot;text&quot;;
&gt;-        this._angleInput.size = 3;
&gt;-        this._angleInput.addEventListener(&quot;input&quot;, this);
&gt;-        angleLabel.appendChild(this._angleInput);
&gt;-
&gt;-        var dragToAdjustController = new WebInspector.DragToAdjustController(this);
&gt;-        dragToAdjustController.element = angleLabel;
&gt;-        dragToAdjustController.enabled = true;
&gt;-
&gt;-        this._updateCSSClassForGradientType();
&gt;-
&gt;-        popover.content = this._container;
&gt;+        this._gradientEditor = new WebInspector.GradientEditor;
&gt;+        this._gradientEditor.addEventListener(WebInspector.GradientEditor.Event.GradientChanged, this._gradientEditorGradientChanged, this);
&gt;+        this._gradientEditor.addEventListener(WebInspector.GradientEditor.Event.ColorPickerToggled, handleColorPickerToggled, this);
&gt;+        popover.content = this._gradientEditor.element;
&gt;     }
&gt; 
&gt;     popoverDidPresent(popover)
&gt;     {
&gt;-        this._gradientSlider.stops = this.value.stops;
&gt;-
&gt;-        if (this.value instanceof WebInspector.LinearGradient) {
&gt;-            this._gradientTypePicker.value = this.value.repeats ? &quot;repeating-linear-gradient&quot; : &quot;linear-gradient&quot;;
&gt;-            this._angleInput.value = this.value.angle + &quot;\u00B0&quot;;
&gt;-        } else
&gt;-            this._gradientTypePicker.value = this.value.repeats ? &quot;repeating-radial-gradient&quot; : &quot;radial-gradient&quot;;
&gt;-
&gt;-        this._gradientSlider.delegate = this;
&gt;-    }
&gt;-
&gt;-    // Protected
&gt;-
&gt;-    handleEvent(event)
&gt;-    {
&gt;-        if (event.type === &quot;input&quot;)
&gt;-            this._handleInputEvent(event);
&gt;-        else if (event.type === &quot;change&quot;)
&gt;-            this._handleChangeEvent(event);
&gt;-    }
&gt;-
&gt;-    gradientSliderStopsDidChange(gradientSlider)
&gt;-    {
&gt;-        this.text = this.value.toString();
&gt;-    }
&gt;-
&gt;-    gradientSliderStopWasSelected(gradientSlider, stop)
&gt;-    {
&gt;-        var selectedStop = gradientSlider.selectedStop;
&gt;-
&gt;-        if (selectedStop &amp;&amp; !this._container.classList.contains(WebInspector.CodeMirrorGradientEditingController.EditsColorClassName)) {
&gt;-            this._container.appendChild(this._colorPicker.element);
&gt;-            this._container.classList.add(WebInspector.CodeMirrorGradientEditingController.EditsColorClassName);
&gt;-            this._colorPicker.color = selectedStop.color;
&gt;-        } else if (!selectedStop) {
&gt;-            this._colorPicker.element.remove();
&gt;-            this._container.classList.remove(WebInspector.CodeMirrorGradientEditingController.EditsColorClassName);
&gt;-        }
&gt;-
&gt;-        // Ensure the angle input is not focused since, if it were, it&apos;d make a scrollbar appear as we
&gt;-        // animate the popover&apos;s frame to fit its new content.
&gt;-        this._angleInput.blur();
&gt;-
&gt;-        this.popover.update();
&gt;-    }
&gt;-
&gt;-    dragToAdjustControllerWasAdjustedByAmount(dragToAdjustController, amount)
&gt;-    {
&gt;-        var angle = parseFloat(this._angleInput.value) + amount;
&gt;-        if (Math.round(angle) !== angle)
&gt;-            angle = angle.toFixed(1);
&gt;-
&gt;-        this._angleInput.value = angle;
&gt;-        this._angleInputValueDidChange(angle);
&gt;+        this._gradientEditor.gradient = this.value;
&gt;     }
&gt; 
&gt;     // Private
&gt; 
&gt;-    _handleInputEvent(event)
&gt;+    _gradientEditorGradientChanged(event)
&gt;     {
&gt;-        var angle = parseFloat(this._angleInput.value);
&gt;-        if (isNaN(angle))
&gt;-            return;
&gt;-
&gt;-        this._angleInputValueDidChange(angle);
&gt;-    }
&gt;-
&gt;-    _angleInputValueDidChange(angle)
&gt;-    {
&gt;-        this.value.angle = angle;
&gt;-        this.text = this.value.toString();
&gt;-
&gt;-        var matches = this._angleInput.value.match(/\u00B0/g);
&gt;-        if (!matches || matches.length !== 1) {
&gt;-            var selectionStart = this._angleInput.selectionStart;
&gt;-            this._angleInput.value = angle + &quot;\u00B0&quot;;
&gt;-            this._angleInput.selectionStart = selectionStart;
&gt;-            this._angleInput.selectionEnd = selectionStart;
&gt;-        }
&gt;-    }
&gt;-
&gt;-    _handleChangeEvent(event)
&gt;-    {
&gt;-        var descriptor = WebInspector.CodeMirrorGradientEditingController.GradientTypes[this._gradientTypePicker.value];
&gt;-        if (!(this.value instanceof descriptor.type)) {
&gt;-            if (descriptor.type === WebInspector.LinearGradient) {
&gt;-                this.value = new WebInspector.LinearGradient(180, this.value.stops);
&gt;-                this._angleInput.value = &quot;180\u00B0&quot;;
&gt;-            } else
&gt;-                this.value = new WebInspector.RadialGradient(&quot;&quot;, this.value.stops);
&gt;-
&gt;-            this._updateCSSClassForGradientType();
&gt;-            this.popover.update();
&gt;-        }
&gt;-        this.value.repeats = descriptor.repeats;
&gt;-        this.text = this.value.toString();
&gt;-    }
&gt;-
&gt;-    _colorPickerColorChanged(event)
&gt;-    {
&gt;-        this._gradientSlider.selectedStop.color = event.target.color;
&gt;-        this._gradientSlider.stops = this.value.stops;
&gt;-        this.text = this.value.toString();
&gt;-    }
&gt;-
&gt;-    _updateCSSClassForGradientType()
&gt;-    {
&gt;-        if (this.value instanceof WebInspector.LinearGradient)
&gt;-            this._container.classList.remove(WebInspector.CodeMirrorGradientEditingController.RadialGradientClassName);
&gt;-        else
&gt;-            this._container.classList.add(WebInspector.CodeMirrorGradientEditingController.RadialGradientClassName);
&gt;+        this.value = event.data.gradient;
&gt;     }
&gt; };
&gt;-
&gt;-WebInspector.CodeMirrorGradientEditingController.StyleClassName = &quot;gradient-editing-controller&quot;;
&gt;-WebInspector.CodeMirrorGradientEditingController.EditsColorClassName = &quot;edits-color&quot;;
&gt;-WebInspector.CodeMirrorGradientEditingController.RadialGradientClassName = &quot;radial-gradient&quot;;
&gt;-
&gt;-// Lazily populated in the WebInspector.CodeMirrorGradientEditingController constructor.
&gt;-// It needs to be lazy to use UIString after Main.js and localizedStrings.js loads.
&gt;-WebInspector.CodeMirrorGradientEditingController.GradientTypes = null;
&gt;diff --git a/Source/WebInspectorUI/UserInterface/Main.html b/Source/WebInspectorUI/UserInterface/Main.html
&gt;index 6be42c2..8b5f72c 100644
&gt;--- a/Source/WebInspectorUI/UserInterface/Main.html
&gt;+++ b/Source/WebInspectorUI/UserInterface/Main.html
&gt;@@ -87,6 +87,7 @@
&gt;     &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/FontResourceContentView.css&quot;&gt;
&gt;     &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/FormattedValue.css&quot;&gt;
&gt;     &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/GoToLineDialog.css&quot;&gt;
&gt;+    &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/GradientEditor.css&quot;&gt;
&gt;     &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/GradientSlider.css&quot;&gt;
&gt;     &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/HierarchicalPathComponent.css&quot;&gt;
&gt;     &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/HoverMenu.css&quot;&gt;
&gt;@@ -164,6 +165,7 @@
&gt;     &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/TypeTreeElement.css&quot;&gt;
&gt;     &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/TypeTreeView.css&quot;&gt;
&gt;     &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/Variables.css&quot;&gt;
&gt;+    &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/VisualStyleBackgroundPicker.css&quot;&gt;
&gt;     &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/VisualStyleColorPicker.css&quot;&gt;
&gt;     &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/VisualStyleCommaSeparatedKeywordEditor.css&quot;&gt;
&gt;     &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/VisualStyleDetailsPanel.css&quot;&gt;
&gt;@@ -181,7 +183,6 @@
&gt; 
&gt;     &lt;link rel=&quot;stylesheet&quot; href=&quot;Controllers/CodeMirrorCompletionController.css&quot;&gt;
&gt;     &lt;link rel=&quot;stylesheet&quot; href=&quot;Controllers/CodeMirrorDragToAdjustNumberController.css&quot;&gt;
&gt;-    &lt;link rel=&quot;stylesheet&quot; href=&quot;Controllers/CodeMirrorGradientEditingController.css&quot;&gt;
&gt;     &lt;link rel=&quot;stylesheet&quot; href=&quot;Controllers/CodeMirrorTokenTrackingController.css&quot;&gt;
&gt; 
&gt;     &lt;script src=&quot;External/CodeMirror/codemirror.js&quot;&gt;&lt;/script&gt;
&gt;@@ -470,6 +471,7 @@
&gt;     &lt;script src=&quot;Views/GeneralTreeElementPathComponent.js&quot;&gt;&lt;/script&gt;
&gt;     &lt;script src=&quot;Views/GenericResourceContentView.js&quot;&gt;&lt;/script&gt;
&gt;     &lt;script src=&quot;Views/GoToLineDialog.js&quot;&gt;&lt;/script&gt;
&gt;+    &lt;script src=&quot;Views/GradientEditor.js&quot;&gt;&lt;/script&gt;
&gt;     &lt;script src=&quot;Views/GradientSlider.js&quot;&gt;&lt;/script&gt;
&gt;     &lt;script src=&quot;Views/HierarchicalPathNavigationItem.js&quot;&gt;&lt;/script&gt;
&gt;     &lt;script src=&quot;Views/HoverMenu.js&quot;&gt;&lt;/script&gt;
&gt;@@ -566,6 +568,7 @@
&gt; 
&gt;     &lt;script src=&quot;Views/VisualStyleDetailsPanel.js&quot;&gt;&lt;/script&gt;
&gt;     &lt;script src=&quot;Views/VisualStylePropertyEditor.js&quot;&gt;&lt;/script&gt;
&gt;+    &lt;script src=&quot;Views/VisualStyleBackgroundPicker.js&quot;&gt;&lt;/script&gt;
&gt;     &lt;script src=&quot;Views/VisualStyleColorPicker.js&quot;&gt;&lt;/script&gt;
&gt;     &lt;script src=&quot;Views/VisualStyleCommaSeparatedKeywordEditor.js&quot;&gt;&lt;/script&gt;
&gt;     &lt;script src=&quot;Views/VisualStyleFontFamilyListEditor.js&quot;&gt;&lt;/script&gt;
&gt;@@ -583,7 +586,6 @@
&gt;     &lt;script src=&quot;Views/VisualStyleTabbedPropertiesRow.js&quot;&gt;&lt;/script&gt;
&gt;     &lt;script src=&quot;Views/VisualStyleTimingEditor.js&quot;&gt;&lt;/script&gt;
&gt;     &lt;script src=&quot;Views/VisualStyleUnitSlider.js&quot;&gt;&lt;/script&gt;
&gt;-    &lt;script src=&quot;Views/VisualStyleURLInput.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt;     &lt;script src=&quot;Controllers/Annotator.js&quot;&gt;&lt;/script&gt;
&gt;     &lt;script src=&quot;Controllers/CodeMirrorEditingController.js&quot;&gt;&lt;/script&gt;
&gt;diff --git a/Source/WebInspectorUI/UserInterface/Models/Gradient.js b/Source/WebInspectorUI/UserInterface/Models/Gradient.js
&gt;index 3e4ff6c..a094f3b 100644
&gt;--- a/Source/WebInspectorUI/UserInterface/Models/Gradient.js
&gt;+++ b/Source/WebInspectorUI/UserInterface/Models/Gradient.js
&gt;@@ -39,10 +39,8 @@ WebInspector.Gradient = {
&gt;             type = WebInspector.Gradient.Types.Linear;
&gt;         else if (typeString.indexOf(WebInspector.Gradient.Types.Radial) !== -1)
&gt;             type = WebInspector.Gradient.Types.Radial;
&gt;-        else {
&gt;-            console.error(&quot;Couldn&apos;t parse angle \&quot;&quot; + typeString + &quot;\&quot;&quot;);
&gt;+        else
&gt;             return null;
&gt;-        }
&gt; 
&gt;         var components = [];
&gt;         var currentParams = [];
&gt;@@ -112,10 +110,8 @@ WebInspector.Gradient = {
&gt;             }
&gt;         });
&gt; 
&gt;-        if (!stops.length) {
&gt;-            console.error(&quot;Couldn&apos;t parse any stops&quot;);
&gt;+        if (!stops.length)
&gt;             return null;
&gt;-        }
&gt; 
&gt;         for (var i = 0, count = stops.length; i &lt; count; ++i) {
&gt;             var stop = stops[i];
&gt;@@ -190,7 +186,6 @@ WebInspector.LinearGradient = class LinearGradient
&gt;                 angle = 315;
&gt;                 break;
&gt;             default:
&gt;-                console.error(&quot;Couldn&apos;t parse angle \&quot;to &quot; + components[0].join(&quot; &quot;) + &quot;\&quot;&quot;);
&gt;                 return null;
&gt;             }
&gt;             components.shift();
&gt;diff --git a/Source/WebInspectorUI/UserInterface/Views/GradientEditor.css b/Source/WebInspectorUI/UserInterface/Views/GradientEditor.css
&gt;new file mode 100644
&gt;index 0000000..8446318
&gt;--- /dev/null
&gt;+++ b/Source/WebInspectorUI/UserInterface/Views/GradientEditor.css
&gt;@@ -0,0 +1,99 @@
&gt;+/*
&gt;+ * Copyright (C) 2015 Devin Rousso &lt;dcrousso+webkit@gmail.com&gt;. All rights reserved.
&gt;+ *
&gt;+ * Redistribution and use in source and binary forms, with or without
&gt;+ * modification, are permitted provided that the following conditions
&gt;+ * are met:
&gt;+ * 1. Redistributions of source code must retain the above copyright
&gt;+ *    notice, this list of conditions and the following disclaimer.
&gt;+ * 2. Redistributions in binary form must reproduce the above copyright
&gt;+ *    notice, this list of conditions and the following disclaimer in the
&gt;+ *    documentation and/or other materials provided with the distribution.
&gt;+ *
&gt;+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;
&gt;+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
&gt;+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt;+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
&gt;+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
&gt;+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
&gt;+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
&gt;+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
&gt;+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
&gt;+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
&gt;+ * THE POSSIBILITY OF SUCH DAMAGE.
&gt;+ */
&gt;+
&gt;+.gradient-editor {
&gt;+    position: relative;
&gt;+    margin: 5px 11px;
&gt;+    padding-bottom: 45px;
&gt;+}
&gt;+
&gt;+.gradient-editor.radial-gradient {
&gt;+    padding-bottom: 15px;
&gt;+}
&gt;+
&gt;+.gradient-editor.editing-color {
&gt;+    padding-bottom: 30px;
&gt;+}
&gt;+
&gt;+.gradient-editor.radial-gradient.editing-color {
&gt;+    padding-bottom: 0;
&gt;+}
&gt;+
&gt;+.gradient-editor &gt; .gradient-type-select {
&gt;+    width: 237px;
&gt;+    margin-left: 1px;
&gt;+    font-size: 16px;
&gt;+}
&gt;+
&gt;+.gradient-editor &gt; .gradient-slider {
&gt;+    position: relative;
&gt;+    left: auto;
&gt;+    margin-top: 7px;
&gt;+}
&gt;+
&gt;+.gradient-editor &gt; .color-picker {
&gt;+    width: 238px;
&gt;+    height: auto;
&gt;+    margin-top: 25px;
&gt;+    padding: 0;
&gt;+}
&gt;+
&gt;+.gradient-editor &gt; .color-picker &gt; .slider {
&gt;+    top: 2px;
&gt;+    width: 186px;
&gt;+}
&gt;+
&gt;+.gradient-editor &gt; .color-picker &gt; .brightness {
&gt;+    left: 202px;
&gt;+}
&gt;+
&gt;+.gradient-editor &gt; .color-picker &gt; .opacity {
&gt;+    left: 228px;
&gt;+}
&gt;+
&gt;+.gradient-editor &gt; .gradient-angle {
&gt;+    position: absolute;
&gt;+    right: 0;
&gt;+    bottom: 0;
&gt;+    text-align: right;
&gt;+    font-size: 13px;
&gt;+}
&gt;+
&gt;+.gradient-editor.radial-gradient &gt; .gradient-angle {
&gt;+    display: none;
&gt;+}
&gt;+
&gt;+.gradient-editor &gt; .gradient-angle &gt; input {
&gt;+    width: 48px;
&gt;+    margin-left: 5px;
&gt;+    padding-right: 4px;
&gt;+    text-align: right;
&gt;+    font-size: 13px;
&gt;+    background-color: white;
&gt;+    border-radius: 4px;
&gt;+    border: 1px solid hsl(0, 0%, 60%);
&gt;+    box-shadow: inset 0 0 1px 1px hsl(0, 0%, 89%);
&gt;+    outline: none;
&gt;+}
&gt;diff --git a/Source/WebInspectorUI/UserInterface/Views/GradientEditor.js b/Source/WebInspectorUI/UserInterface/Views/GradientEditor.js
&gt;new file mode 100644
&gt;index 0000000..441701e
&gt;--- /dev/null
&gt;+++ b/Source/WebInspectorUI/UserInterface/Views/GradientEditor.js
&gt;@@ -0,0 +1,229 @@
&gt;+/*
&gt;+ * Copyright (C) 2014 Apple Inc. All rights reserved.
&gt;+ * Copyright (C) 2015 Devin Rousso &lt;dcrousso+webkit@gmail.com&gt;. All rights reserved.
&gt;+ *
&gt;+ * Redistribution and use in source and binary forms, with or without
&gt;+ * modification, are permitted provided that the following conditions
&gt;+ * are met:
&gt;+ * 1. Redistributions of source code must retain the above copyright
&gt;+ *    notice, this list of conditions and the following disclaimer.
&gt;+ * 2. Redistributions in binary form must reproduce the above copyright
&gt;+ *    notice, this list of conditions and the following disclaimer in the
&gt;+ *    documentation and/or other materials provided with the distribution.
&gt;+ *
&gt;+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;
&gt;+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
&gt;+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt;+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
&gt;+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
&gt;+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
&gt;+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
&gt;+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
&gt;+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
&gt;+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
&gt;+ * THE POSSIBILITY OF SUCH DAMAGE.
&gt;+ */
&gt;+
&gt;+WebInspector.GradientEditor = class GradientEditor extends WebInspector.Object
&gt;+{
&gt;+    constructor()
&gt;+    {
&gt;+        super();
&gt;+
&gt;+        this._element = document.createElement(&quot;div&quot;);
&gt;+        this._element.classList.add(&quot;gradient-editor&quot;);
&gt;+
&gt;+        this._gradient = null;
&gt;+        this._gradientTypes = {
&gt;+            &quot;linear-gradient&quot;: {
&gt;+                type: WebInspector.LinearGradient,
&gt;+                label: WebInspector.UIString(&quot;Linear Gradient&quot;),
&gt;+                repeats: false
&gt;+            },
&gt;+            &quot;radial-gradient&quot;: {
&gt;+                type: WebInspector.RadialGradient,
&gt;+                label: WebInspector.UIString(&quot;Radial Gradient&quot;),
&gt;+                repeats: false
&gt;+            },
&gt;+            &quot;repeating-linear-gradient&quot;: {
&gt;+                type: WebInspector.LinearGradient,
&gt;+                label: WebInspector.UIString(&quot;Repeating Linear Gradient&quot;),
&gt;+                repeats: true
&gt;+            },
&gt;+            &quot;repeating-radial-gradient&quot;: {
&gt;+                type: WebInspector.RadialGradient,
&gt;+                label: WebInspector.UIString(&quot;Repeating Radial Gradient&quot;),
&gt;+                repeats: true
&gt;+            }
&gt;+        };
&gt;+        this._editingColor = false;
&gt;+
&gt;+        this._gradientTypePicker = this._element.appendChild(document.createElement(&quot;select&quot;));
&gt;+        this._gradientTypePicker.classList.add(&quot;gradient-type-select&quot;);
&gt;+        for (let type in this._gradientTypes) {
&gt;+            let option = this._gradientTypePicker.appendChild(document.createElement(&quot;option&quot;));
&gt;+            option.value = type;
&gt;+            option.text = this._gradientTypes[type].label;
&gt;+        }
&gt;+        this._gradientTypePicker.addEventListener(&quot;change&quot;, this._gradientTypeChanged.bind(this));
&gt;+
&gt;+        this._gradientSlider = new WebInspector.GradientSlider(this);
&gt;+        this._element.appendChild(this._gradientSlider.element);
&gt;+
&gt;+        this._colorPicker = new WebInspector.ColorPicker;
&gt;+        this._colorPicker.colorWheel.dimension = 190;
&gt;+        this._colorPicker.addEventListener(WebInspector.ColorPicker.Event.ColorChanged, this._colorPickerColorChanged, this);
&gt;+
&gt;+        let angleLabel = this._element.appendChild(document.createElement(&quot;label&quot;));
&gt;+        angleLabel.classList.add(&quot;gradient-angle&quot;);
&gt;+        angleLabel.append(WebInspector.UIString(&quot;Angle&quot;));
&gt;+
&gt;+        this._angleInput = angleLabel.appendChild(document.createElement(&quot;input&quot;));
&gt;+        this._angleInput.type = &quot;text&quot;;
&gt;+        this._angleInput.addEventListener(&quot;input&quot;, this._angleChanged.bind(this));
&gt;+
&gt;+        let dragToAdjustController = new WebInspector.DragToAdjustController(this);
&gt;+        dragToAdjustController.element = angleLabel;
&gt;+        dragToAdjustController.enabled = true;
&gt;+    }
&gt;+
&gt;+    get element()
&gt;+    {
&gt;+        return this._element;
&gt;+    }
&gt;+
&gt;+    set gradient(gradient)
&gt;+    {
&gt;+        if (!gradient)
&gt;+            return;
&gt;+
&gt;+        const isLinear = gradient instanceof WebInspector.LinearGradient;
&gt;+        const isRadial = gradient instanceof WebInspector.RadialGradient;
&gt;+        console.assert(isLinear || isRadial);
&gt;+        if (!isLinear &amp;&amp; !isRadial)
&gt;+            return;
&gt;+
&gt;+        this._gradient = gradient;
&gt;+        this._gradientSlider.stops = this._gradient.stops;
&gt;+        if (isLinear) {
&gt;+            this._gradientTypePicker.value = this._gradient.repeats ? &quot;repeating-linear-gradient&quot; : &quot;linear-gradient&quot;;
&gt;+            this._angleInput.value = this._gradient.angle + &quot;\u00B0&quot;;
&gt;+        } else
&gt;+            this._gradientTypePicker.value = this._gradient.repeats ? &quot;repeating-radial-gradient&quot; : &quot;radial-gradient&quot;;
&gt;+
&gt;+        this._updateCSSClassForGradientType();
&gt;+    }
&gt;+
&gt;+    get gradient()
&gt;+    {
&gt;+        return this._gradient;
&gt;+    }
&gt;+
&gt;+    // Protected
&gt;+
&gt;+    gradientSliderStopsDidChange(gradientSlider)
&gt;+    {
&gt;+        this._gradient.stops = gradientSlider.stops;
&gt;+
&gt;+        this.dispatchEventToListeners(WebInspector.GradientEditor.Event.GradientChanged, {gradient: this._gradient});
&gt;+    }
&gt;+
&gt;+    gradientSliderStopWasSelected(gradientSlider, stop)
&gt;+    {
&gt;+        const selectedStop = gradientSlider.selectedStop;
&gt;+        if (selectedStop &amp;&amp; !this._editingColor) {
&gt;+            this._element.appendChild(this._colorPicker.element);
&gt;+            this._element.classList.add(&quot;editing-color&quot;);
&gt;+            this._colorPicker.color = selectedStop.color;
&gt;+            this._editingColor = true;
&gt;+        } else if (!selectedStop) {
&gt;+            this._colorPicker.element.remove();
&gt;+            this._element.classList.remove(&quot;editing-color&quot;);
&gt;+            this._editingColor = false;
&gt;+        }
&gt;+
&gt;+        // Ensure the angle input is not focused since, if it were, it&apos;d make a scrollbar appear as we
&gt;+        // animate the popover&apos;s frame to fit its new content.
&gt;+        this._angleInput.blur();
&gt;+
&gt;+        this.dispatchEventToListeners(WebInspector.GradientEditor.Event.ColorPickerToggled);
&gt;+        this.dispatchEventToListeners(WebInspector.GradientEditor.Event.GradientChanged, {gradient: this._gradient});
&gt;+    }
&gt;+
&gt;+    dragToAdjustControllerWasAdjustedByAmount(dragToAdjustController, amount)
&gt;+    {
&gt;+        const angleInputValue = parseFloat(this._angleInput.value);
&gt;+        if (isNaN(angleInputValue))
&gt;+            return;
&gt;+
&gt;+        let angle = angleInputValue + amount;
&gt;+        if (Math.round(angle) !== angle)
&gt;+            angle = angle.toFixed(1);
&gt;+
&gt;+        this._angleInput.value = angle;
&gt;+        this._angleInputValueDidChange(angle);
&gt;+    }
&gt;+
&gt;+    // Private
&gt;+
&gt;+    _updateCSSClassForGradientType()
&gt;+    {
&gt;+        const isRadial = this._gradient instanceof WebInspector.RadialGradient;
&gt;+        this._element.classList.toggle(&quot;radial-gradient&quot;, isRadial);
&gt;+
&gt;+        this.dispatchEventToListeners(WebInspector.GradientEditor.Event.ColorPickerToggled);
&gt;+    }
&gt;+
&gt;+    _gradientTypeChanged(event)
&gt;+    {
&gt;+        const descriptor = this._gradientTypes[this._gradientTypePicker.value];
&gt;+        if (!(this._gradient instanceof descriptor.type)) {
&gt;+            if (descriptor.type === WebInspector.LinearGradient) {
&gt;+                this._gradient = new WebInspector.LinearGradient(180, this._gradient.stops);
&gt;+                this._angleInput.value = &quot;180\u00B0&quot;;
&gt;+            } else
&gt;+                this._gradient = new WebInspector.RadialGradient(&quot;&quot;, this._gradient.stops);
&gt;+
&gt;+            this._updateCSSClassForGradientType();
&gt;+        }
&gt;+        this._gradient.repeats = descriptor.repeats;
&gt;+
&gt;+        this.dispatchEventToListeners(WebInspector.GradientEditor.Event.GradientChanged, {gradient: this._gradient});
&gt;+    }
&gt;+
&gt;+    _colorPickerColorChanged(event)
&gt;+    {
&gt;+        this._gradientSlider.selectedStop.color = event.target.color;
&gt;+        this._gradientSlider.stops = this._gradient.stops;
&gt;+
&gt;+        this.dispatchEventToListeners(WebInspector.GradientEditor.Event.GradientChanged, {gradient: this._gradient});
&gt;+    }
&gt;+
&gt;+    _angleChanged(event)
&gt;+    {
&gt;+        const angle = parseFloat(this._angleInput.value) || 0;
&gt;+        if (isNaN(angle))
&gt;+            return;
&gt;+
&gt;+        this._angleInputValueDidChange(angle);
&gt;+    }
&gt;+
&gt;+    _angleInputValueDidChange(angle)
&gt;+    {
&gt;+        this._gradient.angle = angle;
&gt;+        const matches = this._angleInput.value.match(/\u00B0/g);
&gt;+        if (!matches || matches.length !== 1) {
&gt;+            const savedStart = this._angleInput.selectionStart;
&gt;+            this._angleInput.value = angle + &quot;\u00B0&quot;;
&gt;+            this._angleInput.selectionStart = savedStart;
&gt;+            this._angleInput.selectionEnd = savedStart;
&gt;+        }
&gt;+
&gt;+        this.dispatchEventToListeners(WebInspector.GradientEditor.Event.GradientChanged, {gradient: this._gradient});
&gt;+    }
&gt;+}
&gt;+
&gt;+WebInspector.GradientEditor.Event = {
&gt;+    GradientChanged: &quot;gradient-editor-gradient-changed&quot;,
&gt;+    ColorPickerToggled: &quot;gradient-editor-color-picker-toggled&quot;
&gt;+};
&gt;diff --git a/Source/WebInspectorUI/UserInterface/Views/VisualStyleBackgroundPicker.css b/Source/WebInspectorUI/UserInterface/Views/VisualStyleBackgroundPicker.css
&gt;new file mode 100644
&gt;index 0000000..5fbe439
&gt;--- /dev/null
&gt;+++ b/Source/WebInspectorUI/UserInterface/Views/VisualStyleBackgroundPicker.css
&gt;@@ -0,0 +1,93 @@
&gt;+/*
&gt;+ * Copyright (C) 2015 Devin Rousso &lt;dcrousso+webkit@gmail.com&gt;. All rights reserved.
&gt;+ *
&gt;+ * Redistribution and use in source and binary forms, with or without
&gt;+ * modification, are permitted provided that the following conditions
&gt;+ * are met:
&gt;+ * 1. Redistributions of source code must retain the above copyright
&gt;+ *    notice, this list of conditions and the following disclaimer.
&gt;+ * 2. Redistributions in binary form must reproduce the above copyright
&gt;+ *    notice, this list of conditions and the following disclaimer in the
&gt;+ *    documentation and/or other materials provided with the distribution.
&gt;+ *
&gt;+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;
&gt;+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
&gt;+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt;+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
&gt;+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
&gt;+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
&gt;+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
&gt;+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
&gt;+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
&gt;+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
&gt;+ * THE POSSIBILITY OF SUCH DAMAGE.
&gt;+ */
&gt;+
&gt;+.visual-style-property-container.background-picker &gt; .visual-style-property-value-container {
&gt;+    display: flex;
&gt;+}
&gt;+
&gt;+.visual-style-property-container.background-picker &gt; .visual-style-property-value-container &gt; .color-gradient-swatch {
&gt;+    display: none;
&gt;+    position: relative;
&gt;+    width: 38px;
&gt;+    height: 18px;
&gt;+    margin-top: 1px;
&gt;+    /* Make a checkered background for transparent colors to show against. */
&gt;+    background-image: linear-gradient(to bottom, hsl(0, 0%, 80%), hsl(0, 0%, 80%)),
&gt;+                      linear-gradient(to bottom, hsl(0, 0%, 80%), hsl(0, 0%, 80%));
&gt;+    background-color: white;
&gt;+    background-size: 50%;
&gt;+    background-position: top left, bottom right;
&gt;+    background-repeat: no-repeat;
&gt;+    border: 1px solid hsla(0, 0%, 25%, 0.4);
&gt;+    border-radius: 4px;
&gt;+    overflow: hidden;
&gt;+    cursor: default;
&gt;+}
&gt;+
&gt;+.visual-style-property-container.background-picker &gt; .visual-style-property-value-container &gt; .color-gradient-swatch:hover {
&gt;+    border-color: hsla(0, 0%, 25%, 0.8);
&gt;+}
&gt;+
&gt;+.visual-style-property-container.background-picker &gt; .visual-style-property-value-container &gt; .color-gradient-swatch:active {
&gt;+    border-color: hsl(0, 0%, 25%);
&gt;+}
&gt;+
&gt;+.visual-style-property-container.background-picker &gt; .visual-style-property-value-container &gt; .color-gradient-swatch &gt; span {
&gt;+    position: absolute;
&gt;+    top: 0;
&gt;+    right: 0;
&gt;+    bottom: 0;
&gt;+    left: 0;
&gt;+}
&gt;+
&gt;+.visual-style-property-container.background-picker &gt; .visual-style-property-value-container.gradient-value &gt; .color-gradient-swatch {
&gt;+    display: block;
&gt;+}
&gt;+
&gt;+.visual-style-property-container.background-picker &gt; .visual-style-property-value-container.gradient-value &gt; .color-gradient-swatch + .value-input {
&gt;+    margin-left: -3px;
&gt;+    padding-left: 5px;
&gt;+    border-top-left-radius: 0;
&gt;+    border-bottom-left-radius: 0;
&gt;+    border-left: none;
&gt;+}
&gt;+
&gt;+.visual-style-property-container.background-picker &gt; .visual-style-property-value-container &gt; .value-input {
&gt;+    margin: 1px 4px 3px 0;
&gt;+    padding: 0 3px;
&gt;+    border-radius: 4px;
&gt;+    border: solid 1px hsl(0, 0%, 83%);
&gt;+    text-align: left;
&gt;+    font-size: 10px;
&gt;+}
&gt;+
&gt;+.visual-style-property-container.background-picker &gt; .visual-style-property-value-container &gt; .value-input[disabled] {
&gt;+    opacity: 0.7;
&gt;+    pointer-events: none;
&gt;+}
&gt;+
&gt;+.visual-style-property-container.background-picker &gt; .visual-style-property-value-container &gt; .value-type-picker-select {
&gt;+    max-width: 170px;
&gt;+}
&gt;diff --git a/Source/WebInspectorUI/UserInterface/Views/VisualStyleBackgroundPicker.js b/Source/WebInspectorUI/UserInterface/Views/VisualStyleBackgroundPicker.js
&gt;new file mode 100644
&gt;index 0000000..79d0c20
&gt;--- /dev/null
&gt;+++ b/Source/WebInspectorUI/UserInterface/Views/VisualStyleBackgroundPicker.js
&gt;@@ -0,0 +1,261 @@
&gt;+/*
&gt;+ * Copyright (C) 2015 Devin Rousso &lt;dcrousso+webkit@gmail.com&gt;. All rights reserved.
&gt;+ *
&gt;+ * Redistribution and use in source and binary forms, with or without
&gt;+ * modification, are permitted provided that the following conditions
&gt;+ * are met:
&gt;+ * 1. Redistributions of source code must retain the above copyright
&gt;+ *    notice, this list of conditions and the following disclaimer.
&gt;+ * 2. Redistributions in binary form must reproduce the above copyright
&gt;+ *    notice, this list of conditions and the following disclaimer in the
&gt;+ *    documentation and/or other materials provided with the distribution.
&gt;+ *
&gt;+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;
&gt;+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
&gt;+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt;+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
&gt;+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
&gt;+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
&gt;+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
&gt;+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
&gt;+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
&gt;+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
&gt;+ * THE POSSIBILITY OF SUCH DAMAGE.
&gt;+ */
&gt;+
&gt;+WebInspector.VisualStyleBackgroundPicker = class VisualStyleBackgroundPicker extends WebInspector.VisualStylePropertyEditor
&gt;+{
&gt;+    constructor(propertyNames, text, possibleValues, layoutReversed)
&gt;+    {
&gt;+        super(propertyNames, text, possibleValues, null, &quot;background-picker&quot;, layoutReversed);
&gt;+
&gt;+        this._gradientSwatchElement = document.createElement(&quot;span&quot;);
&gt;+        this._gradientSwatchElement.classList.add(&quot;color-gradient-swatch&quot;);
&gt;+        this._gradientSwatchElement.title = WebInspector.UIString(&quot;Click to select a gradient&quot;);
&gt;+        this._gradientSwatchElement.addEventListener(&quot;click&quot;, this._gradientSwatchClicked.bind(this));
&gt;+
&gt;+        let gradientSwatchInnerElement = document.createElement(&quot;span&quot;);
&gt;+        this._gradientSwatchElement.appendChild(gradientSwatchInnerElement);
&gt;+
&gt;+        this.contentElement.appendChild(this._gradientSwatchElement);
&gt;+
&gt;+        this._valueInputElement = document.createElement(&quot;input&quot;);
&gt;+        this._valueInputElement.classList.add(&quot;value-input&quot;);
&gt;+        this._valueInputElement.type = &quot;url&quot;;
&gt;+        this._valueInputElement.placeholder = WebInspector.UIString(&quot;Enter a URL&quot;);
&gt;+        this._valueInputElement.addEventListener(&quot;input&quot;, this._valueInputValueChanged.bind(this));
&gt;+        this.contentElement.appendChild(this._valueInputElement);
&gt;+
&gt;+        this._valueTypePickerElement = document.createElement(&quot;select&quot;);
&gt;+        this._valueTypePickerElement.classList.add(&quot;value-type-picker-select&quot;);
&gt;+        if (this._possibleValues.advanced)
&gt;+            this._valueTypePickerElement.title = WebInspector.UIString(&quot;Option-click to show all values&quot;);
&gt;+
&gt;+        let imageOption = document.createElement(&quot;option&quot;);
&gt;+        imageOption.value = &quot;url&quot;;
&gt;+        imageOption.text = WebInspector.UIString(&quot;Image&quot;);
&gt;+        this._valueTypePickerElement.appendChild(imageOption);
&gt;+
&gt;+        let linearGradientOption = document.createElement(&quot;option&quot;);
&gt;+        linearGradientOption.value = &quot;linear-gradient&quot;;
&gt;+        linearGradientOption.text = WebInspector.UIString(&quot;Linear Gradient&quot;);
&gt;+        this._valueTypePickerElement.appendChild(linearGradientOption);
&gt;+
&gt;+        let radialGradientOption = document.createElement(&quot;option&quot;);
&gt;+        radialGradientOption.value = &quot;radial-gradient&quot;;
&gt;+        radialGradientOption.text = WebInspector.UIString(&quot;Radial Gradient&quot;);
&gt;+        this._valueTypePickerElement.appendChild(radialGradientOption);
&gt;+
&gt;+        let repeatingLinearGradientOption = document.createElement(&quot;option&quot;);
&gt;+        repeatingLinearGradientOption.value = &quot;repeating-linear-gradient&quot;;
&gt;+        repeatingLinearGradientOption.text = WebInspector.UIString(&quot;Repeating Linear Gradient&quot;);
&gt;+        this._valueTypePickerElement.appendChild(repeatingLinearGradientOption);
&gt;+
&gt;+        let repeatingRadialGradientOption = document.createElement(&quot;option&quot;);
&gt;+        repeatingRadialGradientOption.value = &quot;repeating-radial-gradient&quot;;
&gt;+        repeatingRadialGradientOption.text = WebInspector.UIString(&quot;Repeating Radial Gradient&quot;);
&gt;+        this._valueTypePickerElement.appendChild(repeatingRadialGradientOption);
&gt;+
&gt;+        this._valueTypePickerElement.appendChild(document.createElement(&quot;hr&quot;));
&gt;+
&gt;+        this._createValueOptions(this._possibleValues.basic);
&gt;+        this._advancedValuesElements = null;
&gt;+
&gt;+        this._valueTypePickerElement.addEventListener(&quot;mousedown&quot;, this._keywordSelectMouseDown.bind(this));
&gt;+        this._valueTypePickerElement.addEventListener(&quot;change&quot;, this._handleKeywordChanged.bind(this));
&gt;+        this.contentElement.appendChild(this._valueTypePickerElement);
&gt;+
&gt;+        this._currentType = &quot;url&quot;;
&gt;+        this._gradient = null;
&gt;+
&gt;+        this._updateGradientSwatch();
&gt;+    }
&gt;+
&gt;+    // Public
&gt;+
&gt;+    get value()
&gt;+    {
&gt;+        return this._valueInputElement.value;
&gt;+    }
&gt;+
&gt;+    set value(value)
&gt;+    {
&gt;+        if (!value || !value.length || value === this.value)
&gt;+            return;
&gt;+
&gt;+        const isKeyword = this.valueIsSupportedKeyword(value);
&gt;+        this._currentType = isKeyword ? value : value.substring(0, value.indexOf(&quot;(&quot;));
&gt;+        this._updateValueInput();
&gt;+        if (!isKeyword)
&gt;+            this._valueInputElement.value = value.substring(value.indexOf(&quot;(&quot;) + 1, value.length - 1);
&gt;+
&gt;+        this._valueTypePickerElement.value = this._currentType;
&gt;+
&gt;+        if (!this._currentType.includes(&quot;gradient&quot;))
&gt;+            return;
&gt;+
&gt;+        this._gradient = WebInspector.Gradient.fromString(value);
&gt;+        if (!this._gradient)
&gt;+            return;
&gt;+
&gt;+        this._updateGradientSwatch();
&gt;+    }
&gt;+
&gt;+    get synthesizedValue()
&gt;+    {
&gt;+        if (this.valueIsSupportedKeyword(this._currentType))
&gt;+            return this._currentType;
&gt;+
&gt;+        return this._currentType + &quot;(&quot; + this.value + &quot;)&quot;;
&gt;+    }
&gt;+
&gt;+    // Protected
&gt;+
&gt;+    parseValue(text)
&gt;+    {
&gt;+        const validPrefixes = [&quot;url&quot;, &quot;linear-gradient&quot;, &quot;radial-gradient&quot;, &quot;repeating-linear-gradient&quot;, &quot;repeating-radial-gradient&quot;];
&gt;+        return validPrefixes.some((item) =&gt; text.startsWith(item)) ? [text, text] : null;
&gt;+    }
&gt;+
&gt;+    // Private
&gt;+
&gt;+    _updateValueInput()
&gt;+    {
&gt;+        const supportedKeyword = this.valueIsSupportedKeyword(this._currentType);
&gt;+        const gradientValue = this._currentType.includes(&quot;gradient&quot;);
&gt;+        this.contentElement.classList.toggle(&quot;gradient-value&quot;, !supportedKeyword &amp;&amp; gradientValue);
&gt;+        this._valueInputElement.disabled = supportedKeyword;
&gt;+        if (supportedKeyword) {
&gt;+            this._valueInputElement.value = &quot;&quot;;
&gt;+            this._valueInputElement.placeholder = WebInspector.UIString(&quot;Using Keyword Value&quot;);
&gt;+        } else {
&gt;+            if (this._currentType === &quot;image&quot;) {
&gt;+                this._valueInputElement.type = &quot;url&quot;;
&gt;+                this._valueInputElement.placeholder = WebInspector.UIString(&quot;Enter a URL&quot;);
&gt;+            } else if (gradientValue) {
&gt;+                this._valueInputElement.type = &quot;text&quot;;
&gt;+                this._valueInputElement.placeholder = WebInspector.UIString(&quot;Enter a Gradient&quot;);
&gt;+            }
&gt;+        }
&gt;+    }
&gt;+
&gt;+    _updateGradientSwatch()
&gt;+    {
&gt;+        this._gradientSwatchElement.firstChild.style.background = &quot;&quot;;
&gt;+        const value = this.synthesizedValue;
&gt;+        if (!value || value === this._currentType)
&gt;+            return;
&gt;+
&gt;+        this._gradient = WebInspector.Gradient.fromString(value);
&gt;+        this._gradientSwatchElement.firstChild.style.background = this._gradient ? value : null;
&gt;+    }
&gt;+
&gt;+    _gradientSwatchClicked(event)
&gt;+    {
&gt;+        let bounds = WebInspector.Rect.rectFromClientRect(this._gradientSwatchElement.getBoundingClientRect());
&gt;+        let popover = new WebInspector.Popover(this);
&gt;+
&gt;+        function handleColorPickerToggled(event)
&gt;+        {
&gt;+            popover.update();
&gt;+        }
&gt;+
&gt;+        let gradientEditor = new WebInspector.GradientEditor;
&gt;+        gradientEditor.addEventListener(WebInspector.GradientEditor.Event.GradientChanged, this._gradientEditorGradientChanged, this);
&gt;+        gradientEditor.addEventListener(WebInspector.GradientEditor.Event.ColorPickerToggled, handleColorPickerToggled, this);
&gt;+
&gt;+        popover.content = gradientEditor.element;
&gt;+        popover.present(bounds.pad(2), [WebInspector.RectEdge.MIN_X]);
&gt;+
&gt;+        gradientEditor.gradient = this._gradient;
&gt;+    }
&gt;+
&gt;+    _gradientEditorGradientChanged(event)
&gt;+    {
&gt;+        this.value = event.data.gradient.toString();
&gt;+        this._valueDidChange();
&gt;+    }
&gt;+
&gt;+    _valueInputValueChanged(event)
&gt;+    {
&gt;+        this._updateGradientSwatch();
&gt;+        this._valueDidChange();
&gt;+    }
&gt;+
&gt;+    _keywordSelectMouseDown(event)
&gt;+    {
&gt;+        if (event.altKey)
&gt;+            this._addAdvancedValues();
&gt;+        else if (!this._valueIsSupportedAdvancedKeyword())
&gt;+            this._removeAdvancedValues();
&gt;+    }
&gt;+
&gt;+    _handleKeywordChanged(event)
&gt;+    {
&gt;+        this._currentType = this._valueTypePickerElement.value;
&gt;+        this._updateValueInput();
&gt;+        this._updateGradientSwatch();
&gt;+        this._valueDidChange();
&gt;+    }
&gt;+
&gt;+    _createValueOptions(values)
&gt;+    {
&gt;+        let addedElements = [];
&gt;+        for (let key in values) {
&gt;+            let option = document.createElement(&quot;option&quot;);
&gt;+            option.value = key;
&gt;+            option.text = values[key];
&gt;+            this._valueTypePickerElement.appendChild(option);
&gt;+            addedElements.push(option);
&gt;+        }
&gt;+        return addedElements;
&gt;+    }
&gt;+
&gt;+    _addAdvancedValues()
&gt;+    {
&gt;+        if (this._advancedValuesElements)
&gt;+            return;
&gt;+
&gt;+        this._valueTypePickerElement.appendChild(document.createElement(&quot;hr&quot;));
&gt;+        this._advancedValuesElements = this._createValueOptions(this._possibleValues.advanced);
&gt;+    }
&gt;+
&gt;+    _removeAdvancedValues()
&gt;+    {
&gt;+        if (!this._advancedValuesElements)
&gt;+            return;
&gt;+
&gt;+        this._valueTypePickerElement.removeChild(this._advancedValuesElements[0].previousSibling);
&gt;+        for (let element of this._advancedValuesElements)
&gt;+            this._valueTypePickerElement.removeChild(element);
&gt;+
&gt;+        this._advancedValuesElements = null;
&gt;+    }
&gt;+
&gt;+    _toggleTabbingOfSelectableElements(disabled)
&gt;+    {
&gt;+        let tabIndex = disabled ? &quot;-1&quot; : null;
&gt;+        this._valueInputElement.tabIndex = tabIndex;
&gt;+        this._valueTypePickerElement.tabIndex = tabIndex;
&gt;+    }
&gt;+};
&gt;diff --git a/Source/WebInspectorUI/UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js b/Source/WebInspectorUI/UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js
&gt;index 1e96016..0684964 100644
&gt;--- a/Source/WebInspectorUI/UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js
&gt;+++ b/Source/WebInspectorUI/UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js
&gt;@@ -100,9 +100,10 @@ WebInspector.VisualStyleCommaSeparatedKeywordEditor = class VisualStyleCommaSepa
&gt;             return;
&gt;         }
&gt; 
&gt;-        let values = commaSeparatedValue.split(/\s*,\s*(?![^\(]*\))/);
&gt;+        // It is necessary to add the beginning \) to ensure inner parenthesis are not matched.
&gt;+        let values = commaSeparatedValue.split(/\)\s*,\s*(?![^\(\)]*\))/);
&gt;         for (let value of values)
&gt;-            this._addCommaSeparatedKeyword(value);
&gt;+            this._addCommaSeparatedKeyword(value + (value.endsWith(&quot;)&quot;) ? &quot;&quot; : &quot;)&quot;));
&gt; 
&gt;         this._commaSeparatedKeywords.children[0].select(true);
&gt;     }
&gt;diff --git a/Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.js b/Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.js
&gt;index 2ed76c1..0b0ab26 100644
&gt;--- a/Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.js
&gt;+++ b/Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.js
&gt;@@ -790,7 +790,7 @@ WebInspector.VisualStyleDetailsPanel = class VisualStyleDetailsPanel extends Web
&gt; 
&gt;         let backgroundImageRow = new WebInspector.DetailsSectionRow;
&gt; 
&gt;-        let backgroundImage = new WebInspector.VisualStyleURLInput(&quot;background-image&quot;, WebInspector.UIString(&quot;Image&quot;), this._keywords.defaults.concat([&quot;None&quot;]));
&gt;+        let backgroundImage = new WebInspector.VisualStyleBackgroundPicker(&quot;background-image&quot;, WebInspector.UIString(&quot;Type&quot;), this._keywords.defaults.concat([&quot;None&quot;]));
&gt; 
&gt;         backgroundImageRow.element.appendChild(backgroundImage.element);
&gt; 
&gt;diff --git a/Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditorLink.css b/Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditorLink.css
&gt;index a3b4869..e16a31c 100644
&gt;--- a/Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditorLink.css
&gt;+++ b/Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditorLink.css
&gt;@@ -89,7 +89,7 @@
&gt; 
&gt; .visual-style-property-editor-link:not(.link-all) &gt; .visual-style-property-editor-link-border {
&gt;     width: 10px;
&gt;-    top: -webkit-calc(50% - 1px);
&gt;+    top: 50%;
&gt; }
&gt; 
&gt; .visual-style-property-editor-link:not(.link-all).linked &gt; .visual-style-property-editor-link-border {
&gt;diff --git a/Source/WebInspectorUI/UserInterface/Views/VisualStyleURLInput.js b/Source/WebInspectorUI/UserInterface/Views/VisualStyleURLInput.js
&gt;deleted file mode 100644
&gt;index 2587946..0000000
&gt;--- a/Source/WebInspectorUI/UserInterface/Views/VisualStyleURLInput.js
&gt;+++ /dev/null
&gt;@@ -1,75 +0,0 @@
&gt;-/*
&gt;- * Copyright (C) 2015 Apple Inc. All rights reserved.
&gt;- *
&gt;- * Redistribution and use in source and binary forms, with or without
&gt;- * modification, are permitted provided that the following conditions
&gt;- * are met:
&gt;- * 1. Redistributions of source code must retain the above copyright
&gt;- *    notice, this list of conditions and the following disclaimer.
&gt;- * 2. Redistributions in binary form must reproduce the above copyright
&gt;- *    notice, this list of conditions and the following disclaimer in the
&gt;- *    documentation and/or other materials provided with the distribution.
&gt;- *
&gt;- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;
&gt;- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
&gt;- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt;- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
&gt;- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
&gt;- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
&gt;- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
&gt;- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
&gt;- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
&gt;- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
&gt;- * THE POSSIBILITY OF SUCH DAMAGE.
&gt;- */
&gt;-
&gt;-WebInspector.VisualStyleURLInput = class VisualStyleURLInput extends WebInspector.VisualStylePropertyEditor
&gt;-{
&gt;-    constructor(propertyNames, text, possibleValues, layoutReversed)
&gt;-    {
&gt;-        super(propertyNames, text, possibleValues, null, &quot;url-input&quot;, layoutReversed);
&gt;-
&gt;-        this._urlInputElement = document.createElement(&quot;input&quot;);
&gt;-        this._urlInputElement.type = &quot;url&quot;;
&gt;-        this._urlInputElement.placeholder = WebInspector.UIString(&quot;Enter a URL&quot;);
&gt;-        this._urlInputElement.addEventListener(&quot;keyup&quot;, this._valueDidChange.bind(this));
&gt;-        this.contentElement.appendChild(this._urlInputElement);
&gt;-    }
&gt;-
&gt;-    // Public
&gt;-
&gt;-    get value()
&gt;-    {
&gt;-        return this._urlInputElement.value;
&gt;-    }
&gt;-
&gt;-    set value(value)
&gt;-    {
&gt;-        if (value &amp;&amp; value === this.value)
&gt;-            return;
&gt;-
&gt;-        this._urlInputElement.value = value;
&gt;-    }
&gt;-
&gt;-    get synthesizedValue()
&gt;-    {
&gt;-        let value = this.value;
&gt;-        if (!value || !value.length)
&gt;-            return null;
&gt;-
&gt;-        if (this.valueIsSupportedKeyword(value))
&gt;-            return value;
&gt;-
&gt;-        return &quot;url(&quot; + value + &quot;)&quot;;
&gt;-    }
&gt;-
&gt;-    // Protected
&gt;-
&gt;-    parseValue(text)
&gt;-    {
&gt;-        if (this.valueIsSupportedKeyword(text))
&gt;-            return [text, text];
&gt;-
&gt;-        return /^(?:url\(\s*)([^\)]*)(?:\s*\)\s*;?)$/.exec(text);
&gt;-    }
&gt;-};</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143847</commentid>
    <comment_count>10</comment_count>
      <attachid>265942</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-20 15:16:23 -0800</bug_when>
    <thetext>Comment on attachment 265942
Patch

Clearing flags on attachment: 265942

Committed r192705: &lt;http://trac.webkit.org/changeset/192705&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143848</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-20 15:16:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265567</attachid>
            <date>2015-11-15 18:49:23 -0800</date>
            <delta_ts>2015-11-19 22:28:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150494-20151115184914.patch</filename>
            <type>text/plain</type>
            <size>59281</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDA1OTdiZjU2NTViMjY2YTEzMTE5ZWNlMDE2MzZl
ZGFmYzY0OGVhODkuLjU1MGQ3MTA1YTg5N2Q4NWNlOTNjM2E2ZGUyZDY0OTRhYzQxM2JmNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNiBAQAorMjAxNS0xMS0xNSAgRGV2
aW4gUm91c3NvICA8ZGNyb3Vzc28rd2Via2l0QGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBBZGQgc3VwcG9ydCBmb3IgR3JhZGllbnRzIGluIHRoZSBWaXN1YWwgc2lkZWJhciBi
YWNrZ3JvdW5kIGVkaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUwNDk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWxsb3dzIHRoZSBlZGl0b3JzIGluIHRoZSBWaXN1YWwgc2lkZWJhciBCYWNrZ3Jv
dW5kIFN0eWxlIHNlY3Rpb24gdG8KKyAgICAgICAgd29yayB3aXRoIGdyYWRpZW50cyBhbmQgZGF0
YSBVUklzLgorCisgICAgICAgICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJp
bmdzLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvckdy
YWRpZW50RWRpdGluZ0NvbnRyb2xsZXIuY3NzOiBEZWxldGVkLgorICAgICAgICBTb21lIHN0eWxp
bmcgd2FzIHJldXNlZCBpbiBWaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIuY3NzLgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5n
Q29udHJvbGxlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yR3JhZGllbnRF
ZGl0aW5nQ29udHJvbGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckdyYWRp
ZW50RWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLnBvcG92ZXJXaWxsUHJlc2VudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIucHJv
dG90eXBlLnBvcG92ZXJEaWRQcmVzZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWly
cm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUuX2dyYWRpZW50RWRpdG9yR3Jh
ZGllbnRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yR3JhZGllbnRF
ZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlRXZlbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLnByb3Rv
dHlwZS5ncmFkaWVudFNsaWRlclN0b3BzRGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUu
Z3JhZGllbnRTbGlkZXJTdG9wV2FzU2VsZWN0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLnByb3RvdHlwZS5kcmFn
VG9BZGp1c3RDb250cm9sbGVyV2FzQWRqdXN0ZWRCeUFtb3VudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIucHJvdG90
eXBlLl9oYW5kbGVJbnB1dEV2ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUuX2FuZ2xlSW5wdXRW
YWx1ZURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJv
ckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLl9oYW5kbGVDaGFuZ2VFdmVudCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckdyYWRpZW50RWRpdGlu
Z0NvbnRyb2xsZXIucHJvdG90eXBlLl9jb2xvclBpY2tlckNvbG9yQ2hhbmdlZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xs
ZXIucHJvdG90eXBlLl91cGRhdGVDU1NDbGFzc0ZvckdyYWRpZW50VHlwZSk6IERlbGV0ZWQuCisg
ICAgICAgIFJld29ya2VkIGdyYWRpZW50IGVkaXRvciBwb3B1cCBpbnRvIFdlYkluc3BlY3Rvci5H
cmFkaWVudEVkaXRvci4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0dyYWRpZW50LmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkdyYWRpZW50LmZyb21TdHJpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkdyYWRp
ZW50LnN0b3BzV2l0aENvbXBvbmVudHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxpbmVhckdy
YWRpZW50LmxpbmVhckdyYWRpZW50V2l0aENvbXBvbmVudHMpOgorICAgICAgICBSZW1vdmVkIGNv
bnNvbGUuZXJyb3Igc3RhdGVtZW50cyBhcyB0aGV5IGRpZG4ndCBkbyBhbnl0aGluZyBidXQgY2xv
ZyB0aGUgY29uc29sZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvR3JhZGllbnRF
ZGl0b3IuY3NzOiBBZGRlZC4KKyAgICAgICAgKC5ncmFkaWVudC1lZGl0b3IpOgorICAgICAgICAo
LmdyYWRpZW50LWVkaXRvci5yYWRpYWwtZ3JhZGllbnQpOgorICAgICAgICAoLmdyYWRpZW50LWVk
aXRvci5lZGl0aW5nLWNvbG9yKToKKyAgICAgICAgKC5ncmFkaWVudC1lZGl0b3IucmFkaWFsLWdy
YWRpZW50LmVkaXRpbmctY29sb3IpOgorICAgICAgICAoLmdyYWRpZW50LWVkaXRvciA+IC5ncmFk
aWVudC10eXBlLXNlbGVjdCk6CisgICAgICAgICguZ3JhZGllbnQtZWRpdG9yID4gLmdyYWRpZW50
LXNsaWRlcik6CisgICAgICAgICguZ3JhZGllbnQtZWRpdG9yID4gLmNvbG9yLXBpY2tlcik6Cisg
ICAgICAgICguZ3JhZGllbnQtZWRpdG9yID4gLmNvbG9yLXBpY2tlciA+IC5zbGlkZXIpOgorICAg
ICAgICAoLmdyYWRpZW50LWVkaXRvciA+IC5jb2xvci1waWNrZXIgPiAuYnJpZ2h0bmVzcyk6Cisg
ICAgICAgICguZ3JhZGllbnQtZWRpdG9yID4gLmNvbG9yLXBpY2tlciA+IC5vcGFjaXR5KToKKyAg
ICAgICAgKC5ncmFkaWVudC1lZGl0b3IgPiAuZ3JhZGllbnQtYW5nbGUpOgorICAgICAgICAoLmdy
YWRpZW50LWVkaXRvci5yYWRpYWwtZ3JhZGllbnQgPiAuZ3JhZGllbnQtYW5nbGUpOgorICAgICAg
ICAoLmdyYWRpZW50LWVkaXRvciA+IC5ncmFkaWVudC1hbmdsZSA+IGlucHV0KToKKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvR3JhZGllbnRFZGl0b3IuanM6IEFkZGVkLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkdyYWRpZW50RWRpdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5H
cmFkaWVudEVkaXRvci5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkdyYWRpZW50RWRpdG9yLnByb3RvdHlwZS5zZXQgZ3JhZGllbnQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkdyYWRpZW50RWRpdG9yLnByb3RvdHlwZS5nZXQgZ3JhZGllbnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkdyYWRpZW50RWRpdG9yLnByb3RvdHlwZS5ncmFkaWVudFNsaWRlclN0
b3BzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudEVkaXRvci5wcm90
b3R5cGUuZ3JhZGllbnRTbGlkZXJTdG9wV2FzU2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkdyYWRpZW50RWRpdG9yLnByb3RvdHlwZS5kcmFnVG9BZGp1c3RDb250cm9sbGVyV2FzQWRq
dXN0ZWRCeUFtb3VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR3JhZGllbnRFZGl0b3IucHJv
dG90eXBlLl91cGRhdGVDU1NDbGFzc0ZvckdyYWRpZW50VHlwZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuR3JhZGllbnRFZGl0b3IucHJvdG90eXBlLl9ncmFkaWVudFR5cGVDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudEVkaXRvci5wcm90b3R5cGUuX2NvbG9yUGlja2Vy
Q29sb3JDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudEVkaXRvci5wcm90
b3R5cGUuX2FuZ2xlQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR3JhZGllbnRFZGl0
b3IucHJvdG90eXBlLl9hbmdsZUlucHV0VmFsdWVEaWRDaGFuZ2UpOgorICAgICAgICBOZXcgc3Rh
bmRhbG9uZSBlZGl0b3IgZm9yIENTUyBHcmFkaWVudHMuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlci5jc3M6IEFkZGVkLgorICAgICAg
ICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lcik6CisgICAgICAgICgudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1YWwtc3R5
bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9yLWdyYWRpZW50LXN3YXRjaCk6Cisg
ICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5kLXBpY2tl
ciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9yLWdyYWRp
ZW50LXN3YXRjaDpob3Zlcik6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lci5iYWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29u
dGFpbmVyID4gLmNvbG9yLWdyYWRpZW50LXN3YXRjaDphY3RpdmUpOgorICAgICAgICAoLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5jb2xvci1ncmFkaWVudC1zd2F0Y2ggPiBz
cGFuKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmJhY2tncm91
bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIuZ3JhZGll
bnQtdmFsdWUgPiAuY29sb3ItZ3JhZGllbnQtc3dhdGNoKToKKyAgICAgICAgKC52aXN1YWwtc3R5
bGUtcHJvcGVydHktY29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS12YWx1ZS1jb250YWluZXIuZ3JhZGllbnQtdmFsdWUgPiAuY29sb3ItZ3JhZGllbnQt
c3dhdGNoICsgLnZhbHVlLWlucHV0KToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
Y29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1
ZS1jb250YWluZXIgPiAudmFsdWUtaW5wdXQpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5
LXZhbHVlLWNvbnRhaW5lciA+IC52YWx1ZS1pbnB1dFtkaXNhYmxlZF0pOgorICAgICAgICAoLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFs
LXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52YWx1ZS10eXBlLXBpY2tlci1zZWxl
Y3QpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUJhY2tncm91
bmRQaWNrZXIuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQmFj
a2dyb3VuZFBpY2tlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVCYWNrZ3Jv
dW5kUGlja2VyLnByb3RvdHlwZS5nZXQgdmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlci5wcm90b3R5cGUuc2V0IHZhbHVlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIucHJvdG90eXBlLmdldCBz
eW50aGVzaXplZFZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUJhY2tn
cm91bmRQaWNrZXIucHJvdG90eXBlLnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlci5wcm90b3R5cGUuX3VwZGF0ZVZhbHVlSW5wdXQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlci5wcm90
b3R5cGUuX3VwZGF0ZUdyYWRpZW50U3dhdGNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZUJhY2tncm91bmRQaWNrZXIucHJvdG90eXBlLl9ncmFkaWVudFN3YXRjaENsaWNrZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlci5wcm90
b3R5cGUuX2dyYWRpZW50RWRpdG9yR3JhZGllbnRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIucHJvdG90eXBlLl92YWx1ZUlucHV0VmFs
dWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUJhY2tncm91bmRQ
aWNrZXIucHJvdG90eXBlLl9rZXl3b3JkU2VsZWN0TW91c2VEb3duKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIucHJvdG90eXBlLl9oYW5kbGVLZXl3
b3JkQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVCYWNrZ3JvdW5k
UGlja2VyLnByb3RvdHlwZS5fY3JlYXRlVmFsdWVPcHRpb25zKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIucHJvdG90eXBlLl9hZGRBZHZhbmNlZFZh
bHVlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2Vy
LnByb3RvdHlwZS5fcmVtb3ZlQWR2YW5jZWRWYWx1ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlci5wcm90b3R5cGUuX3RvZ2dsZVRhYmJpbmdPZlNl
bGVjdGFibGVFbGVtZW50cyk6CisgICAgICAgIFZpc3VhbCBwcm9wZXJ0eSBlZGl0b3IgZm9yIHRo
ZSBDU1MgYmFja2dyb3VuZC1pbWFnZSBwcm9wZXJ0eS4gU3VwcG9ydHMKKyAgICAgICAgbGltaXRl
ZCBrZXl3b3JkcywgYXMgd2VsbCBhcyB1cmwoKSBhbmQgZ3JhZGllbnRzLgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRv
ci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5
d29yZEVkaXRvci5wcm90b3R5cGUuc2V0IHZhbHVlKToKKyAgICAgICAgRml4ZWQgcmVndWxhciBl
eHByZXNzaW9uIHBhcnNpbmcgdG8gbm90IG1hdGNoIGNvbW1hcyBpbnNpZGUgcGFyZW50aGVzaXMu
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVs
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3Rv
dHlwZS5fcG9wdWxhdGVCYWNrZ3JvdW5kU3R5bGVTZWN0aW9uKToKKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsuY3NzOgorICAgICAg
ICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluazpub3QoLmxpbmstYWxsKSA+IC52
aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyKToKKyAgICAgICAgRml4ZWQg
c3BhY2luZyBvZiBsaW5rIGxpbmUuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zp
c3VhbFN0eWxlVVJMSW5wdXQuanM6IFJlbW92ZWQuCisgICAgICAgIFJld29ya2VkIGludG8gVmlz
dWFsU3R5bGVCYWNrZ3JvdW5kRWRpdG9yLmpzLgorCiAyMDE1LTExLTEyICBNYXR0IEJha2VyICA8
bWF0dGJha2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBEZWxldGluZyBh
IHByb2JlIHNob3VsZCByZW1vdmUgcHJvYmUgYnJlYWtwb2ludCBhY3Rpb25zIG9ubHkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2Nh
bGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4u
bHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCBiNGM0NTVmMzY0Y2UxNjM4YzY2MjVjOTc1
MmY2ODc2ZjY0MDViN2UyLi5lNjdhOTk1N2M0ZDMyOGM4MTJhOTQ0YjAzNmY2YzYzZmUyYjg5MWYx
IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDEyMAp6Y21kbjxofj81I21KUmhibGw0dEdD
ZFhPfUZ7ViRKU3w+ZU8pPVVWKjw0azhMVm59MzJWYVN+UHpgPU8oZHZsSj4Kel4pQGZ1Q3BTTnFu
T3haLUZ4aCNYKSNSTm0wLU11WW5pZ3w9R28mKDlHTCRwcUdaYW1wX2VweFh3Z3d7KUZPbmNiClEl
SClEZz1HKlY4R3NiZlEwQkVyKU1GMFEqCgpkZWx0YSAyOQpsY21jY2dseDVFJm1KUmhibmBMY1p4
S0V6aiVDV2gqd1FCTTlkUUhZKVA1fDhtNE9SZEUKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yR3JhZGllbnRFZGl0
aW5nQ29udHJvbGxlci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5jc3MKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwZTFhZjkxZDY1N2ViMTc1NzU5YmUzNTI0NTBmYTdj
M2U1YTliMmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJv
ckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0uZ3JhZGllbnQtZWRpdGluZy1jb250cm9sbGVyIHsKLSAgICB3
aWR0aDogMjYwcHg7Ci0gICAgaGVpZ2h0OiAxMDlweDsKLX0KLQotLmdyYWRpZW50LWVkaXRpbmct
Y29udHJvbGxlci5lZGl0cy1jb2xvciB7Ci0gICAgaGVpZ2h0OiAzMDZweDsKLX0KLQotLmdyYWRp
ZW50LWVkaXRpbmctY29udHJvbGxlci5yYWRpYWwtZ3JhZGllbnQgewotICAgIGhlaWdodDogNzhw
eDsKLX0KLQotLmdyYWRpZW50LWVkaXRpbmctY29udHJvbGxlci5lZGl0cy1jb2xvci5yYWRpYWwt
Z3JhZGllbnQgewotICAgIGhlaWdodDogMjc1cHg7Ci19Ci0KLS5ncmFkaWVudC1lZGl0aW5nLWNv
bnRyb2xsZXIgc2VsZWN0IHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgbGVmdDogMTdw
eDsKLSAgICB0b3A6IDlweDsKLSAgICB3aWR0aDogMjM3cHg7Ci0KLSAgICBmb250LXNpemU6IDE2
cHg7Ci19Ci0KLS5ncmFkaWVudC1lZGl0aW5nLWNvbnRyb2xsZXIgLmdyYWRpZW50LXNsaWRlciB7
Ci0gICAgbGVmdDogMTZweDsKLSAgICByaWdodDogMjZweDsKLSAgICB0b3A6IDQycHg7Ci19Ci0K
LS5ncmFkaWVudC1lZGl0aW5nLWNvbnRyb2xsZXIgLmNvbG9yLXBpY2tlciB7Ci0gICAgcG9zaXRp
b246IGFic29sdXRlOwotCi0gICAgdG9wOiA4NnB4OwotICAgIHdpZHRoOiAyMDJweDsKLSAgICBo
ZWlnaHQ6IDE3MnB4OwotICAgIHBhZGRpbmc6IDAgMTBweDsKLX0KLQotLmdyYWRpZW50LWVkaXRp
bmctY29udHJvbGxlciA+IC5jb2xvci1waWNrZXIgPiAuc2xpZGVyIHsKLSAgICB0b3A6IDJweDsK
LSAgICB3aWR0aDogMTg2cHg7Ci19Ci0KLS5ncmFkaWVudC1lZGl0aW5nLWNvbnRyb2xsZXIgPiAu
Y29sb3ItcGlja2VyID4gLmJyaWdodG5lc3MgewotICAgIGxlZnQ6IDIxNHB4OwotfQotCi0uZ3Jh
ZGllbnQtZWRpdGluZy1jb250cm9sbGVyID4gLmNvbG9yLXBpY2tlciA+IC5vcGFjaXR5IHsKLSAg
ICBsZWZ0OiAyMzdweDsKLX0KLQotLmdyYWRpZW50LWVkaXRpbmctY29udHJvbGxlciA+IGxhYmVs
IHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiA4NXB4OwotICAgIHJpZ2h0OiAx
NnB4OwotCi0gICAgdGV4dC1hbGlnbjogcmlnaHQ7Ci0gICAgZm9udC1zaXplOiAxM3B4OwotfQot
Ci0uZ3JhZGllbnQtZWRpdGluZy1jb250cm9sbGVyLnJhZGlhbC1ncmFkaWVudCA+IGxhYmVsIHsK
LSAgICBkaXNwbGF5OiBub25lOwotfQotCi0uZ3JhZGllbnQtZWRpdGluZy1jb250cm9sbGVyLmVk
aXRzLWNvbG9yID4gbGFiZWwgewotICAgIHRvcDogMjgzcHg7Ci19Ci0KLS5ncmFkaWVudC1lZGl0
aW5nLWNvbnRyb2xsZXIgPiBsYWJlbCA+IGlucHV0IHsKLSAgICB3aWR0aDogNDhweDsKLQotICAg
IHBhZGRpbmctcmlnaHQ6IDRweDsKLSAgICBtYXJnaW4tbGVmdDogNXB4OwotCi0gICAgYmFja2dy
b3VuZC1jb2xvcjogd2hpdGU7Ci0KLSAgICBib3JkZXItcmFkaXVzOiA0cHg7Ci0gICAgYm9yZGVy
OiAxcHggc29saWQgaHNsKDAsIDAlLCA2MCUpOwotICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAx
cHggMXB4IGhzbCgwLCAwJSwgODklKTsKLSAgICBvdXRsaW5lOiAwOwotCi0gICAgZm9udC1zaXpl
OiAxM3B4OwotICAgIHRleHQtYWxpZ246IHJpZ2h0OwotfQotCi0uZ3JhZGllbnQtZWRpdGluZy1j
b250cm9sbGVyID4gbGFiZWwuZHJhZy10by1hZGp1c3QsCi0uZ3JhZGllbnQtZWRpdGluZy1jb250
cm9sbGVyID4gbGFiZWwuZHJhZy10by1hZGp1c3QgPiBpbnB1dCB7Ci0gICAgY3Vyc29yOiBjb2wt
cmVzaXplOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9y
R3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5qcwppbmRleCBlMWUxNmE1MjNmNjQ2NWViYWFhNTE4
Y2I0ZWY0NTFkZWExZGJiMDZkLi5lYzFlNGQzMzE5ZGNjMjgzMGYzZGYwMzIyYTdiZjU2MjMwNzBj
OWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yR3Jh
ZGllbnRFZGl0aW5nQ29udHJvbGxlci5qcwpAQCAtMjgsMzQgKzI4LDYgQEAgV2ViSW5zcGVjdG9y
LkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyID0gY2xhc3MgQ29kZU1pcnJvckdy
YWRpZW50RWRpdGkKICAgICBjb25zdHJ1Y3Rvcihjb2RlTWlycm9yLCBtYXJrZXIpCiAgICAgewog
ICAgICAgICBzdXBlcihjb2RlTWlycm9yLCBtYXJrZXIpOwotCi0gICAgICAgIGlmICghV2ViSW5z
cGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLkdyYWRpZW50VHlwZXMp
IHsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29u
dHJvbGxlci5HcmFkaWVudFR5cGVzID0gewotICAgICAgICAgICAgICAgICJsaW5lYXItZ3JhZGll
bnQiOiB7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGU6IFdlYkluc3BlY3Rvci5MaW5lYXJHcmFk
aWVudCwKLSAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
TGluZWFyIEdyYWRpZW50IiksCi0gICAgICAgICAgICAgICAgICAgIHJlcGVhdHM6IGZhbHNlCi0g
ICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgICJyYWRpYWwtZ3JhZGllbnQiOiB7
Ci0gICAgICAgICAgICAgICAgICAgIHR5cGU6IFdlYkluc3BlY3Rvci5SYWRpYWxHcmFkaWVudCwK
LSAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmFkaWFs
IEdyYWRpZW50IiksCi0gICAgICAgICAgICAgICAgICAgIHJlcGVhdHM6IGZhbHNlCi0gICAgICAg
ICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgICJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50
IjogewotICAgICAgICAgICAgICAgICAgICB0eXBlOiBXZWJJbnNwZWN0b3IuTGluZWFyR3JhZGll
bnQsCi0gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJl
cGVhdGluZyBMaW5lYXIgR3JhZGllbnQiKSwKLSAgICAgICAgICAgICAgICAgICAgcmVwZWF0czog
dHJ1ZQotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAicmVwZWF0aW5nLXJh
ZGlhbC1ncmFkaWVudCI6IHsKLSAgICAgICAgICAgICAgICAgICAgdHlwZTogV2ViSW5zcGVjdG9y
LlJhZGlhbEdyYWRpZW50LAotICAgICAgICAgICAgICAgICAgICBsYWJlbDogV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJSZXBlYXRpbmcgUmFkaWFsIEdyYWRpZW50IiksCi0gICAgICAgICAgICAgICAg
ICAgIHJlcGVhdHM6IHRydWUKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAg
ICAgICB9CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC04NiwxNjIgKzU4LDIxIEBAIFdlYklu
c3BlY3Rvci5Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlciA9IGNsYXNzIENvZGVN
aXJyb3JHcmFkaWVudEVkaXRpCiAKICAgICBwb3BvdmVyV2lsbFByZXNlbnQocG9wb3ZlcikKICAg
ICB7Ci0gICAgICAgIHRoaXMuX2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwotICAgICAgICB0aGlzLl9jb250YWluZXIuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNv
ZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLlN0eWxlQ2xhc3NOYW1lOwotCi0gICAg
ICAgIHRoaXMuX2dyYWRpZW50VHlwZVBpY2tlciA9IHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSk7Ci0gICAgICAgIGZvciAodmFyIHR5
cGUgaW4gV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLkdy
YWRpZW50VHlwZXMpIHsKLSAgICAgICAgICAgIHZhciBvcHRpb24gPSB0aGlzLl9ncmFkaWVudFR5
cGVQaWNrZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpOwot
ICAgICAgICAgICAgb3B0aW9uLnZhbHVlID0gdHlwZTsKLSAgICAgICAgICAgIG9wdGlvbi5pbm5l
clRleHQgPSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIu
R3JhZGllbnRUeXBlc1t0eXBlXS5sYWJlbDsKLSAgICAgICAgfQotICAgICAgICB0aGlzLl9ncmFk
aWVudFR5cGVQaWNrZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcyk7Ci0KLSAgICAg
ICAgdGhpcy5fZ3JhZGllbnRTbGlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVy
OwotICAgICAgICB0aGlzLl9jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fZ3JhZGllbnRTbGlk
ZXIuZWxlbWVudCk7Ci0KLSAgICAgICAgdGhpcy5fY29sb3JQaWNrZXIgPSBuZXcgV2ViSW5zcGVj
dG9yLkNvbG9yUGlja2VyOwotICAgICAgICB0aGlzLl9jb2xvclBpY2tlci5jb2xvcldoZWVsLmRp
bWVuc2lvbiA9IDE5MDsKLSAgICAgICAgdGhpcy5fY29sb3JQaWNrZXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIuRXZlbnQuQ29sb3JDaGFuZ2VkLCB0aGlzLl9jb2xv
clBpY2tlckNvbG9yQ2hhbmdlZCwgdGhpcyk7Ci0KLSAgICAgICAgdmFyIGFuZ2xlTGFiZWwgPSB0
aGlzLl9jb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwi
KSk7Ci0gICAgICAgIGFuZ2xlTGFiZWwudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkFuZ2xlIik7Ci0KLSAgICAgICAgdGhpcy5fYW5nbGVJbnB1dCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImlucHV0Iik7Ci0gICAgICAgIHRoaXMuX2FuZ2xlSW5wdXQudHlwZSA9ICJ0ZXh0
IjsKLSAgICAgICAgdGhpcy5fYW5nbGVJbnB1dC5zaXplID0gMzsKLSAgICAgICAgdGhpcy5fYW5n
bGVJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIHRoaXMpOwotICAgICAgICBhbmdsZUxh
YmVsLmFwcGVuZENoaWxkKHRoaXMuX2FuZ2xlSW5wdXQpOwotCi0gICAgICAgIHZhciBkcmFnVG9B
ZGp1c3RDb250cm9sbGVyID0gbmV3IFdlYkluc3BlY3Rvci5EcmFnVG9BZGp1c3RDb250cm9sbGVy
KHRoaXMpOwotICAgICAgICBkcmFnVG9BZGp1c3RDb250cm9sbGVyLmVsZW1lbnQgPSBhbmdsZUxh
YmVsOwotICAgICAgICBkcmFnVG9BZGp1c3RDb250cm9sbGVyLmVuYWJsZWQgPSB0cnVlOwotCi0g
ICAgICAgIHRoaXMuX3VwZGF0ZUNTU0NsYXNzRm9yR3JhZGllbnRUeXBlKCk7Ci0KLSAgICAgICAg
cG9wb3Zlci5jb250ZW50ID0gdGhpcy5fY29udGFpbmVyOworICAgICAgICB0aGlzLl9ncmFkaWVu
dEVkaXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuR3JhZGllbnRFZGl0b3I7CisgICAgICAgIHRoaXMu
X2dyYWRpZW50RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkdyYWRpZW50RWRp
dG9yLkV2ZW50LkdyYWRpZW50Q2hhbmdlZCwgdGhpcy5fZ3JhZGllbnRFZGl0b3JHcmFkaWVudENo
YW5nZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9ncmFkaWVudEVkaXRvci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5HcmFkaWVudEVkaXRvci5FdmVudC5Db2xvclBpY2tlclRvZ2dsZWQs
IHBvcG92ZXIudXBkYXRlLCBwb3BvdmVyKTsKKyAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gdGhp
cy5fZ3JhZGllbnRFZGl0b3IuZWxlbWVudDsKICAgICB9CiAKICAgICBwb3BvdmVyRGlkUHJlc2Vu
dChwb3BvdmVyKQogICAgIHsKLSAgICAgICAgdGhpcy5fZ3JhZGllbnRTbGlkZXIuc3RvcHMgPSB0
aGlzLnZhbHVlLnN0b3BzOwotCi0gICAgICAgIGlmICh0aGlzLnZhbHVlIGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLkxpbmVhckdyYWRpZW50KSB7Ci0gICAgICAgICAgICB0aGlzLl9ncmFkaWVudFR5
cGVQaWNrZXIudmFsdWUgPSB0aGlzLnZhbHVlLnJlcGVhdHMgPyAicmVwZWF0aW5nLWxpbmVhci1n
cmFkaWVudCIgOiAibGluZWFyLWdyYWRpZW50IjsKLSAgICAgICAgICAgIHRoaXMuX2FuZ2xlSW5w
dXQudmFsdWUgPSB0aGlzLnZhbHVlLmFuZ2xlICsgIlx1MDBCMCI7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgdGhpcy5fZ3JhZGllbnRUeXBlUGlja2VyLnZhbHVlID0gdGhpcy52YWx1ZS5y
ZXBlYXRzID8gInJlcGVhdGluZy1yYWRpYWwtZ3JhZGllbnQiIDogInJhZGlhbC1ncmFkaWVudCI7
Ci0KLSAgICAgICAgdGhpcy5fZ3JhZGllbnRTbGlkZXIuZGVsZWdhdGUgPSB0aGlzOwotICAgIH0K
LQotICAgIC8vIFByb3RlY3RlZAotCi0gICAgaGFuZGxlRXZlbnQoZXZlbnQpCi0gICAgewotICAg
ICAgICBpZiAoZXZlbnQudHlwZSA9PT0gImlucHV0IikKLSAgICAgICAgICAgIHRoaXMuX2hhbmRs
ZUlucHV0RXZlbnQoZXZlbnQpOwotICAgICAgICBlbHNlIGlmIChldmVudC50eXBlID09PSAiY2hh
bmdlIikKLSAgICAgICAgICAgIHRoaXMuX2hhbmRsZUNoYW5nZUV2ZW50KGV2ZW50KTsKLSAgICB9
Ci0KLSAgICBncmFkaWVudFNsaWRlclN0b3BzRGlkQ2hhbmdlKGdyYWRpZW50U2xpZGVyKQotICAg
IHsKLSAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy52YWx1ZS50b1N0cmluZygpOwotICAgIH0KLQot
ICAgIGdyYWRpZW50U2xpZGVyU3RvcFdhc1NlbGVjdGVkKGdyYWRpZW50U2xpZGVyLCBzdG9wKQot
ICAgIHsKLSAgICAgICAgdmFyIHNlbGVjdGVkU3RvcCA9IGdyYWRpZW50U2xpZGVyLnNlbGVjdGVk
U3RvcDsKLQotICAgICAgICBpZiAoc2VsZWN0ZWRTdG9wICYmICF0aGlzLl9jb250YWluZXIuY2xh
c3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29u
dHJvbGxlci5FZGl0c0NvbG9yQ2xhc3NOYW1lKSkgewotICAgICAgICAgICAgdGhpcy5fY29udGFp
bmVyLmFwcGVuZENoaWxkKHRoaXMuX2NvbG9yUGlja2VyLmVsZW1lbnQpOwotICAgICAgICAgICAg
dGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFk
aWVudEVkaXRpbmdDb250cm9sbGVyLkVkaXRzQ29sb3JDbGFzc05hbWUpOwotICAgICAgICAgICAg
dGhpcy5fY29sb3JQaWNrZXIuY29sb3IgPSBzZWxlY3RlZFN0b3AuY29sb3I7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoIXNlbGVjdGVkU3RvcCkgewotICAgICAgICAgICAgdGhpcy5fY29sb3JQaWNrZXIu
ZWxlbWVudC5yZW1vdmUoKTsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3Qu
cmVtb3ZlKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5F
ZGl0c0NvbG9yQ2xhc3NOYW1lKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEVuc3VyZSB0aGUg
YW5nbGUgaW5wdXQgaXMgbm90IGZvY3VzZWQgc2luY2UsIGlmIGl0IHdlcmUsIGl0J2QgbWFrZSBh
IHNjcm9sbGJhciBhcHBlYXIgYXMgd2UKLSAgICAgICAgLy8gYW5pbWF0ZSB0aGUgcG9wb3Zlcidz
IGZyYW1lIHRvIGZpdCBpdHMgbmV3IGNvbnRlbnQuCi0gICAgICAgIHRoaXMuX2FuZ2xlSW5wdXQu
Ymx1cigpOwotCi0gICAgICAgIHRoaXMucG9wb3Zlci51cGRhdGUoKTsKLSAgICB9Ci0KLSAgICBk
cmFnVG9BZGp1c3RDb250cm9sbGVyV2FzQWRqdXN0ZWRCeUFtb3VudChkcmFnVG9BZGp1c3RDb250
cm9sbGVyLCBhbW91bnQpCi0gICAgewotICAgICAgICB2YXIgYW5nbGUgPSBwYXJzZUZsb2F0KHRo
aXMuX2FuZ2xlSW5wdXQudmFsdWUpICsgYW1vdW50OwotICAgICAgICBpZiAoTWF0aC5yb3VuZChh
bmdsZSkgIT09IGFuZ2xlKQotICAgICAgICAgICAgYW5nbGUgPSBhbmdsZS50b0ZpeGVkKDEpOwot
Ci0gICAgICAgIHRoaXMuX2FuZ2xlSW5wdXQudmFsdWUgPSBhbmdsZTsKLSAgICAgICAgdGhpcy5f
YW5nbGVJbnB1dFZhbHVlRGlkQ2hhbmdlKGFuZ2xlKTsKKyAgICAgICAgdGhpcy5fZ3JhZGllbnRF
ZGl0b3IuZ3JhZGllbnQgPSB0aGlzLnZhbHVlOwogICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAot
ICAgIF9oYW5kbGVJbnB1dEV2ZW50KGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIGFuZ2xlID0g
cGFyc2VGbG9hdCh0aGlzLl9hbmdsZUlucHV0LnZhbHVlKTsKLSAgICAgICAgaWYgKGlzTmFOKGFu
Z2xlKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9hbmdsZUlucHV0VmFs
dWVEaWRDaGFuZ2UoYW5nbGUpOwotICAgIH0KLQotICAgIF9hbmdsZUlucHV0VmFsdWVEaWRDaGFu
Z2UoYW5nbGUpCi0gICAgewotICAgICAgICB0aGlzLnZhbHVlLmFuZ2xlID0gYW5nbGU7Ci0gICAg
ICAgIHRoaXMudGV4dCA9IHRoaXMudmFsdWUudG9TdHJpbmcoKTsKLQotICAgICAgICB2YXIgbWF0
Y2hlcyA9IHRoaXMuX2FuZ2xlSW5wdXQudmFsdWUubWF0Y2goL1x1MDBCMC9nKTsKLSAgICAgICAg
aWYgKCFtYXRjaGVzIHx8IG1hdGNoZXMubGVuZ3RoICE9PSAxKSB7Ci0gICAgICAgICAgICB2YXIg
c2VsZWN0aW9uU3RhcnQgPSB0aGlzLl9hbmdsZUlucHV0LnNlbGVjdGlvblN0YXJ0OwotICAgICAg
ICAgICAgdGhpcy5fYW5nbGVJbnB1dC52YWx1ZSA9IGFuZ2xlICsgIlx1MDBCMCI7Ci0gICAgICAg
ICAgICB0aGlzLl9hbmdsZUlucHV0LnNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnQ7Ci0g
ICAgICAgICAgICB0aGlzLl9hbmdsZUlucHV0LnNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvblN0YXJ0
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgX2hhbmRsZUNoYW5nZUV2ZW50KGV2ZW50KQotICAg
IHsKLSAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckdyYWRp
ZW50RWRpdGluZ0NvbnRyb2xsZXIuR3JhZGllbnRUeXBlc1t0aGlzLl9ncmFkaWVudFR5cGVQaWNr
ZXIudmFsdWVdOwotICAgICAgICBpZiAoISh0aGlzLnZhbHVlIGluc3RhbmNlb2YgZGVzY3JpcHRv
ci50eXBlKSkgewotICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IudHlwZSA9PT0gV2ViSW5zcGVj
dG9yLkxpbmVhckdyYWRpZW50KSB7Ci0gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ldyBX
ZWJJbnNwZWN0b3IuTGluZWFyR3JhZGllbnQoMTgwLCB0aGlzLnZhbHVlLnN0b3BzKTsKLSAgICAg
ICAgICAgICAgICB0aGlzLl9hbmdsZUlucHV0LnZhbHVlID0gIjE4MFx1MDBCMCI7Ci0gICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gbmV3IFdlYkluc3BlY3Rv
ci5SYWRpYWxHcmFkaWVudCgiIiwgdGhpcy52YWx1ZS5zdG9wcyk7Ci0KLSAgICAgICAgICAgIHRo
aXMuX3VwZGF0ZUNTU0NsYXNzRm9yR3JhZGllbnRUeXBlKCk7Ci0gICAgICAgICAgICB0aGlzLnBv
cG92ZXIudXBkYXRlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy52YWx1ZS5yZXBlYXRzID0g
ZGVzY3JpcHRvci5yZXBlYXRzOwotICAgICAgICB0aGlzLnRleHQgPSB0aGlzLnZhbHVlLnRvU3Ry
aW5nKCk7Ci0gICAgfQotCi0gICAgX2NvbG9yUGlja2VyQ29sb3JDaGFuZ2VkKGV2ZW50KQotICAg
IHsKLSAgICAgICAgdGhpcy5fZ3JhZGllbnRTbGlkZXIuc2VsZWN0ZWRTdG9wLmNvbG9yID0gZXZl
bnQudGFyZ2V0LmNvbG9yOwotICAgICAgICB0aGlzLl9ncmFkaWVudFNsaWRlci5zdG9wcyA9IHRo
aXMudmFsdWUuc3RvcHM7Ci0gICAgICAgIHRoaXMudGV4dCA9IHRoaXMudmFsdWUudG9TdHJpbmco
KTsKLSAgICB9Ci0KLSAgICBfdXBkYXRlQ1NTQ2xhc3NGb3JHcmFkaWVudFR5cGUoKQorICAgIF9n
cmFkaWVudEVkaXRvckdyYWRpZW50Q2hhbmdlZChldmVudCkKICAgICB7Ci0gICAgICAgIGlmICh0
aGlzLnZhbHVlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50KQotICAgICAg
ICAgICAgdGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkNvZGVN
aXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLlJhZGlhbEdyYWRpZW50Q2xhc3NOYW1lKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLlJhZGlhbEdy
YWRpZW50Q2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy52YWx1ZSA9IGV2ZW50LmRhdGEuZ3JhZGll
bnQ7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdD
b250cm9sbGVyLlN0eWxlQ2xhc3NOYW1lID0gImdyYWRpZW50LWVkaXRpbmctY29udHJvbGxlciI7
Ci1XZWJJbnNwZWN0b3IuQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIuRWRpdHND
b2xvckNsYXNzTmFtZSA9ICJlZGl0cy1jb2xvciI7Ci1XZWJJbnNwZWN0b3IuQ29kZU1pcnJvckdy
YWRpZW50RWRpdGluZ0NvbnRyb2xsZXIuUmFkaWFsR3JhZGllbnRDbGFzc05hbWUgPSAicmFkaWFs
LWdyYWRpZW50IjsKLQotLy8gTGF6aWx5IHBvcHVsYXRlZCBpbiB0aGUgV2ViSW5zcGVjdG9yLkNv
ZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyIGNvbnN0cnVjdG9yLgotLy8gSXQgbmVl
ZHMgdG8gYmUgbGF6eSB0byB1c2UgVUlTdHJpbmcgYWZ0ZXIgTWFpbi5qcyBhbmQgbG9jYWxpemVk
U3RyaW5ncy5qcyBsb2Fkcy4KLVdlYkluc3BlY3Rvci5Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5n
Q29udHJvbGxlci5HcmFkaWVudFR5cGVzID0gbnVsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCBkYzYyYzM0YzcxOTM3ZTk0ODY2NjExNmQ4
NzcyOTk4ZjZiZTZhNWJkLi5hYzJmYzIwZGFjOTVmODUyMzcxZGZkMDk0ODhiNGRiM2EwMjgyNTBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0
bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBA
IC04Nyw2ICs4Nyw3IEBACiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9G
b250UmVzb3VyY2VDb250ZW50Vmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iVmlld3MvRm9ybWF0dGVkVmFsdWUuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9IlZpZXdzL0dvVG9MaW5lRGlhbG9nLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJWaWV3cy9HcmFkaWVudEVkaXRvci5jc3MiPgogICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iVmlld3MvR3JhZGllbnRTbGlkZXIuY3NzIj4KICAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0hpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuY3Nz
Ij4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0hvdmVyTWVudS5jc3Mi
PgpAQCAtMTY0LDYgKzE2NSw3IEBACiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJW
aWV3cy9UeXBlVHJlZUVsZW1lbnQuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9IlZpZXdzL1R5cGVUcmVlVmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iVmlld3MvVmFyaWFibGVzLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJWaWV3cy9WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIuY3NzIj4KICAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlQ29sb3JQaWNrZXIuY3NzIj4K
ICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFT
ZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJWaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5jc3MiPgpAQCAtMTgxLDcgKzE4Myw2
IEBACiAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkNvbnRyb2xsZXJzL0NvZGVN
aXJyb3JDb21wbGV0aW9uQ29udHJvbGxlci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iQ29udHJvbGxlcnMvQ29kZU1pcnJvckRyYWdUb0FkanVzdE51bWJlckNvbnRyb2xs
ZXIuY3NzIj4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkNvbnRyb2xsZXJzL0Nv
ZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJDb250cm9sbGVycy9Db2RlTWlycm9yVG9rZW5UcmFja2luZ0NvbnRy
b2xsZXIuY3NzIj4KIAogICAgIDxzY3JpcHQgc3JjPSJFeHRlcm5hbC9Db2RlTWlycm9yL2NvZGVt
aXJyb3IuanMiPjwvc2NyaXB0PgpAQCAtNDY5LDYgKzQ3MCw3IEBACiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0dlbmVyYWxUcmVlRWxlbWVudFBhdGhDb21wb25lbnQuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJWaWV3cy9HZW5lcmljUmVzb3VyY2VDb250ZW50Vmlldy5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0dvVG9MaW5lRGlhbG9nLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iVmlld3MvR3JhZGllbnRFZGl0b3IuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJWaWV3cy9HcmFkaWVudFNsaWRlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IlZpZXdzL0hpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0hvdmVyTWVudS5qcyI+PC9zY3JpcHQ+CkBAIC01
NjUsNiArNTY3LDcgQEAKIAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZURldGFp
bHNQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxl
UHJvcGVydHlFZGl0b3IuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1
YWxTdHlsZUJhY2tncm91bmRQaWNrZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9WaXN1YWxTdHlsZUNvbG9yUGlja2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRp
dG9yLmpzIj48L3NjcmlwdD4KQEAgLTU4Miw3ICs1ODUsNiBAQAogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNSb3cuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVRpbWluZ0VkaXRvci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlVW5pdFNsaWRlci5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlVVJMSW5wdXQuanMiPjwvc2NyaXB0
PgogCiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0Fubm90YXRvci5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxl
ci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvR3JhZGllbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvR3JhZGllbnQuanMKaW5kZXggM2U0ZmY2Yzg4NzQ4NTUyYjIwZWFhZTZk
MTM0NDg1NWFlMmRkZTVlMS4uYTA5NGYzYjEwYzNkZDQ4ZmUxYmNlMzQyOGMxMTljNjVmNmI4YWM4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0dyYWRpZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9HcmFkaWVudC5qcwpAQCAtMzksMTAgKzM5LDggQEAgV2ViSW5zcGVjdG9yLkdyYWRpZW50
ID0gewogICAgICAgICAgICAgdHlwZSA9IFdlYkluc3BlY3Rvci5HcmFkaWVudC5UeXBlcy5MaW5l
YXI7CiAgICAgICAgIGVsc2UgaWYgKHR5cGVTdHJpbmcuaW5kZXhPZihXZWJJbnNwZWN0b3IuR3Jh
ZGllbnQuVHlwZXMuUmFkaWFsKSAhPT0gLTEpCiAgICAgICAgICAgICB0eXBlID0gV2ViSW5zcGVj
dG9yLkdyYWRpZW50LlR5cGVzLlJhZGlhbDsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBj
b25zb2xlLmVycm9yKCJDb3VsZG4ndCBwYXJzZSBhbmdsZSBcIiIgKyB0eXBlU3RyaW5nICsgIlwi
Iik7CisgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9CiAK
ICAgICAgICAgdmFyIGNvbXBvbmVudHMgPSBbXTsKICAgICAgICAgdmFyIGN1cnJlbnRQYXJhbXMg
PSBbXTsKQEAgLTExMiwxMCArMTEwLDggQEAgV2ViSW5zcGVjdG9yLkdyYWRpZW50ID0gewogICAg
ICAgICAgICAgfQogICAgICAgICB9KTsKIAotICAgICAgICBpZiAoIXN0b3BzLmxlbmd0aCkgewot
ICAgICAgICAgICAgY29uc29sZS5lcnJvcigiQ291bGRuJ3QgcGFyc2UgYW55IHN0b3BzIik7Cisg
ICAgICAgIGlmICghc3RvcHMubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAg
ICAgIH0KIAogICAgICAgICBmb3IgKHZhciBpID0gMCwgY291bnQgPSBzdG9wcy5sZW5ndGg7IGkg
PCBjb3VudDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgc3RvcCA9IHN0b3BzW2ldOwpAQCAtMTkw
LDcgKzE4Niw2IEBAIFdlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVudCA9IGNsYXNzIExpbmVhckdy
YWRpZW50CiAgICAgICAgICAgICAgICAgYW5nbGUgPSAzMTU7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3Io
IkNvdWxkbid0IHBhcnNlIGFuZ2xlIFwidG8gIiArIGNvbXBvbmVudHNbMF0uam9pbigiICIpICsg
IlwiIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBjb21wb25lbnRzLnNoaWZ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HcmFkaWVudEVkaXRvci5jc3MgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HcmFkaWVudEVkaXRvci5jc3MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODQ0NjMxODEyNDdmY2U2MjJmNTk2NjQyNWQwMmVjYTNmMDAxZGVkNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyYWRp
ZW50RWRpdG9yLmNzcwpAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IERldmluIFJvdXNzbyA8ZGNyb3Vzc28rd2Via2l0QGdtYWlsLmNvbT4uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKy5ncmFkaWVudC1lZGl0b3IgeworICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKKyAgICBtYXJnaW46IDVweCAxMXB4OworICAgIHBhZGRpbmctYm90dG9tOiA0NXB4Owor
fQorCisuZ3JhZGllbnQtZWRpdG9yLnJhZGlhbC1ncmFkaWVudCB7CisgICAgcGFkZGluZy1ib3R0
b206IDE1cHg7Cit9CisKKy5ncmFkaWVudC1lZGl0b3IuZWRpdGluZy1jb2xvciB7CisgICAgcGFk
ZGluZy1ib3R0b206IDMwcHg7Cit9CisKKy5ncmFkaWVudC1lZGl0b3IucmFkaWFsLWdyYWRpZW50
LmVkaXRpbmctY29sb3IgeworICAgIHBhZGRpbmctYm90dG9tOiAwOworfQorCisuZ3JhZGllbnQt
ZWRpdG9yID4gLmdyYWRpZW50LXR5cGUtc2VsZWN0IHsKKyAgICB3aWR0aDogMjM3cHg7CisgICAg
bWFyZ2luLWxlZnQ6IDFweDsKKyAgICBmb250LXNpemU6IDE2cHg7Cit9CisKKy5ncmFkaWVudC1l
ZGl0b3IgPiAuZ3JhZGllbnQtc2xpZGVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAg
bGVmdDogYXV0bzsKKyAgICBtYXJnaW4tdG9wOiA3cHg7Cit9CisKKy5ncmFkaWVudC1lZGl0b3Ig
PiAuY29sb3ItcGlja2VyIHsKKyAgICB3aWR0aDogMjM4cHg7CisgICAgaGVpZ2h0OiBhdXRvOwor
ICAgIG1hcmdpbi10b3A6IDI1cHg7CisgICAgcGFkZGluZzogMDsKK30KKworLmdyYWRpZW50LWVk
aXRvciA+IC5jb2xvci1waWNrZXIgPiAuc2xpZGVyIHsKKyAgICB0b3A6IDJweDsKKyAgICB3aWR0
aDogMTg2cHg7Cit9CisKKy5ncmFkaWVudC1lZGl0b3IgPiAuY29sb3ItcGlja2VyID4gLmJyaWdo
dG5lc3MgeworICAgIGxlZnQ6IDIwMnB4OworfQorCisuZ3JhZGllbnQtZWRpdG9yID4gLmNvbG9y
LXBpY2tlciA+IC5vcGFjaXR5IHsKKyAgICBsZWZ0OiAyMjhweDsKK30KKworLmdyYWRpZW50LWVk
aXRvciA+IC5ncmFkaWVudC1hbmdsZSB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHJp
Z2h0OiAwOworICAgIGJvdHRvbTogMDsKKyAgICB0ZXh0LWFsaWduOiByaWdodDsKKyAgICBmb250
LXNpemU6IDEzcHg7Cit9CisKKy5ncmFkaWVudC1lZGl0b3IucmFkaWFsLWdyYWRpZW50ID4gLmdy
YWRpZW50LWFuZ2xlIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisuZ3JhZGllbnQtZWRpdG9y
ID4gLmdyYWRpZW50LWFuZ2xlID4gaW5wdXQgeworICAgIHdpZHRoOiA0OHB4OworICAgIG1hcmdp
bi1sZWZ0OiA1cHg7CisgICAgcGFkZGluZy1yaWdodDogNHB4OworICAgIHRleHQtYWxpZ246IHJp
Z2h0OworICAgIGZvbnQtc2l6ZTogMTNweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsK
KyAgICBib3JkZXItcmFkaXVzOiA0cHg7CisgICAgYm9yZGVyOiAxcHggc29saWQgaHNsKDAsIDAl
LCA2MCUpOworICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAxcHggMXB4IGhzbCgwLCAwJSwgODkl
KTsKKyAgICBvdXRsaW5lOiBub25lOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JhZGllbnRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HcmFkaWVudEVkaXRvci5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lN2EwNDkzMjM4OWU1NDBlMjMzMWRlMWI2NWI1NjkzOWRlMGQ5MDg3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JhZGllbnRF
ZGl0b3IuanMKQEAgLTAsMCArMSwyMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgRGV2
aW4gUm91c3NvIDxkY3JvdXNzbyt3ZWJraXRAZ21haWwuY29tPi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkdyYWRpZW50RWRpdG9yID0gY2xhc3MgR3JhZGll
bnRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3Io
KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NM
aXN0LmFkZCgiZ3JhZGllbnQtZWRpdG9yIik7CisKKyAgICAgICAgdGhpcy5fZ3JhZGllbnQgPSBu
dWxsOworICAgICAgICB0aGlzLl9ncmFkaWVudFR5cGVzID0geworICAgICAgICAgICAgImxpbmVh
ci1ncmFkaWVudCI6IHsKKyAgICAgICAgICAgICAgICB0eXBlOiBXZWJJbnNwZWN0b3IuTGluZWFy
R3JhZGllbnQsCisgICAgICAgICAgICAgICAgbGFiZWw6IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
TGluZWFyIEdyYWRpZW50IiksCisgICAgICAgICAgICAgICAgcmVwZWF0czogZmFsc2UKKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAicmFkaWFsLWdyYWRpZW50IjogeworICAgICAgICAgICAg
ICAgIHR5cGU6IFdlYkluc3BlY3Rvci5SYWRpYWxHcmFkaWVudCwKKyAgICAgICAgICAgICAgICBs
YWJlbDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSYWRpYWwgR3JhZGllbnQiKSwKKyAgICAgICAg
ICAgICAgICByZXBlYXRzOiBmYWxzZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJyZXBl
YXRpbmctbGluZWFyLWdyYWRpZW50IjogeworICAgICAgICAgICAgICAgIHR5cGU6IFdlYkluc3Bl
Y3Rvci5MaW5lYXJHcmFkaWVudCwKKyAgICAgICAgICAgICAgICBsYWJlbDogV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJSZXBlYXRpbmcgTGluZWFyIEdyYWRpZW50IiksCisgICAgICAgICAgICAgICAg
cmVwZWF0czogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJyZXBlYXRpbmctcmFk
aWFsLWdyYWRpZW50IjogeworICAgICAgICAgICAgICAgIHR5cGU6IFdlYkluc3BlY3Rvci5SYWRp
YWxHcmFkaWVudCwKKyAgICAgICAgICAgICAgICBsYWJlbDogV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJSZXBlYXRpbmcgUmFkaWFsIEdyYWRpZW50IiksCisgICAgICAgICAgICAgICAgcmVwZWF0czog
dHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICB0aGlzLl9lZGl0aW5nQ29s
b3IgPSBmYWxzZTsKKworICAgICAgICB0aGlzLl9ncmFkaWVudFR5cGVQaWNrZXIgPSB0aGlzLl9l
bGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpKTsKKyAg
ICAgICAgdGhpcy5fZ3JhZGllbnRUeXBlUGlja2VyLmNsYXNzTGlzdC5hZGQoImdyYWRpZW50LXR5
cGUtc2VsZWN0Iik7CisgICAgICAgIGZvciAobGV0IHR5cGUgaW4gdGhpcy5fZ3JhZGllbnRUeXBl
cykgeworICAgICAgICAgICAgbGV0IG9wdGlvbiA9IHRoaXMuX2dyYWRpZW50VHlwZVBpY2tlci5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSk7CisgICAgICAgICAg
ICBvcHRpb24udmFsdWUgPSB0eXBlOworICAgICAgICAgICAgb3B0aW9uLnRleHQgPSB0aGlzLl9n
cmFkaWVudFR5cGVzW3R5cGVdLmxhYmVsOworICAgICAgICB9CisgICAgICAgIHRoaXMuX2dyYWRp
ZW50VHlwZVBpY2tlci5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9ncmFkaWVudFR5
cGVDaGFuZ2VkLmJpbmQodGhpcykpOworCisgICAgICAgIHRoaXMuX2dyYWRpZW50U2xpZGVyID0g
bmV3IFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlcih0aGlzKTsKKyAgICAgICAgdGhpcy5fZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9ncmFkaWVudFNsaWRlci5lbGVtZW50KTsKKworICAgICAg
ICB0aGlzLl9jb2xvclBpY2tlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXI7CisgICAg
ICAgIHRoaXMuX2NvbG9yUGlja2VyLmNvbG9yV2hlZWwuZGltZW5zaW9uID0gMTkwOworICAgICAg
ICB0aGlzLl9jb2xvclBpY2tlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db2xvclBp
Y2tlci5FdmVudC5Db2xvckNoYW5nZWQsIHRoaXMuX2NvbG9yUGlja2VyQ29sb3JDaGFuZ2VkLCB0
aGlzKTsKKworICAgICAgICBsZXQgYW5nbGVMYWJlbCA9IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKSk7CisgICAgICAgIGFuZ2xlTGFiZWwu
Y2xhc3NMaXN0LmFkZCgiZ3JhZGllbnQtYW5nbGUiKTsKKyAgICAgICAgYW5nbGVMYWJlbC5hcHBl
bmQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbmdsZSIpKTsKKworICAgICAgICB0aGlzLl9hbmds
ZUlucHV0ID0gYW5nbGVMYWJlbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJp
bnB1dCIpKTsKKyAgICAgICAgdGhpcy5fYW5nbGVJbnB1dC50eXBlID0gInRleHQiOworICAgICAg
ICB0aGlzLl9hbmdsZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgdGhpcy5fYW5nbGVD
aGFuZ2VkLmJpbmQodGhpcykpOworCisgICAgICAgIGxldCBkcmFnVG9BZGp1c3RDb250cm9sbGVy
ID0gbmV3IFdlYkluc3BlY3Rvci5EcmFnVG9BZGp1c3RDb250cm9sbGVyKHRoaXMpOworICAgICAg
ICBkcmFnVG9BZGp1c3RDb250cm9sbGVyLmVsZW1lbnQgPSBhbmdsZUxhYmVsOworICAgICAgICBk
cmFnVG9BZGp1c3RDb250cm9sbGVyLmVuYWJsZWQgPSB0cnVlOworICAgIH0KKworICAgIGdldCBl
bGVtZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OworICAgIH0KKwor
ICAgIHNldCBncmFkaWVudChncmFkaWVudCkKKyAgICB7CisgICAgICAgIGlmICghZ3JhZGllbnQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29uc3QgaXNMaW5lYXIgPSBncmFkaWVu
dCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVudDsKKyAgICAgICAgY29uc3Qg
aXNSYWRpYWwgPSBncmFkaWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SYWRpYWxHcmFkaWVu
dDsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoaXNMaW5lYXIgfHwgaXNSYWRpYWwpOworICAgICAg
ICBpZiAoIWlzTGluZWFyICYmICFpc1JhZGlhbCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0aGlzLl9ncmFkaWVudCA9IGdyYWRpZW50OworICAgICAgICB0aGlzLl9ncmFkaWVudFNs
aWRlci5zdG9wcyA9IHRoaXMuX2dyYWRpZW50LnN0b3BzOworICAgICAgICBpZiAoaXNMaW5lYXIp
IHsKKyAgICAgICAgICAgIHRoaXMuX2dyYWRpZW50VHlwZVBpY2tlci52YWx1ZSA9IHRoaXMuX2dy
YWRpZW50LnJlcGVhdHMgPyAicmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCIgOiAibGluZWFyLWdy
YWRpZW50IjsKKyAgICAgICAgICAgIHRoaXMuX2FuZ2xlSW5wdXQudmFsdWUgPSB0aGlzLl9ncmFk
aWVudC5hbmdsZSArICJcdTAwQjAiOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMu
X2dyYWRpZW50VHlwZVBpY2tlci52YWx1ZSA9IHRoaXMuX2dyYWRpZW50LnJlcGVhdHMgPyAicmVw
ZWF0aW5nLXJhZGlhbC1ncmFkaWVudCIgOiAicmFkaWFsLWdyYWRpZW50IjsKKworICAgICAgICB0
aGlzLl91cGRhdGVDU1NDbGFzc0ZvckdyYWRpZW50VHlwZSgpOworICAgIH0KKworICAgIGdldCBn
cmFkaWVudCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZ3JhZGllbnQ7CisgICAgfQor
CisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBncmFkaWVudFNsaWRlclN0b3BzRGlkQ2hhbmdlKGdy
YWRpZW50U2xpZGVyKQorICAgIHsKKyAgICAgICAgdGhpcy5fZ3JhZGllbnQuc3RvcHMgPSBncmFk
aWVudFNsaWRlci5zdG9wczsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuR3JhZGllbnRFZGl0b3IuRXZlbnQuR3JhZGllbnRDaGFuZ2VkLCB7Z3Jh
ZGllbnQ6IHRoaXMuX2dyYWRpZW50fSk7CisgICAgfQorCisgICAgZ3JhZGllbnRTbGlkZXJTdG9w
V2FzU2VsZWN0ZWQoZ3JhZGllbnRTbGlkZXIsIHN0b3ApCisgICAgeworICAgICAgICBjb25zdCBz
ZWxlY3RlZFN0b3AgPSBncmFkaWVudFNsaWRlci5zZWxlY3RlZFN0b3A7CisgICAgICAgIGlmIChz
ZWxlY3RlZFN0b3AgJiYgIXRoaXMuX2VkaXRpbmdDb2xvcikgeworICAgICAgICAgICAgdGhpcy5f
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb2xvclBpY2tlci5lbGVtZW50KTsKKyAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZWRpdGluZy1jb2xvciIpOworICAgICAg
ICAgICAgdGhpcy5fY29sb3JQaWNrZXIuY29sb3IgPSBzZWxlY3RlZFN0b3AuY29sb3I7CisgICAg
ICAgICAgICB0aGlzLl9lZGl0aW5nQ29sb3IgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKCFz
ZWxlY3RlZFN0b3ApIHsKKyAgICAgICAgICAgIHRoaXMuX2NvbG9yUGlja2VyLmVsZW1lbnQucmVt
b3ZlKCk7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImVkaXRp
bmctY29sb3IiKTsKKyAgICAgICAgICAgIHRoaXMuX2VkaXRpbmdDb2xvciA9IGZhbHNlOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gRW5zdXJlIHRoZSBhbmdsZSBpbnB1dCBpcyBub3QgZm9jdXNl
ZCBzaW5jZSwgaWYgaXQgd2VyZSwgaXQnZCBtYWtlIGEgc2Nyb2xsYmFyIGFwcGVhciBhcyB3ZQor
ICAgICAgICAvLyBhbmltYXRlIHRoZSBwb3BvdmVyJ3MgZnJhbWUgdG8gZml0IGl0cyBuZXcgY29u
dGVudC4KKyAgICAgICAgdGhpcy5fYW5nbGVJbnB1dC5ibHVyKCk7CisKKyAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkdyYWRpZW50RWRpdG9yLkV2ZW50
LkNvbG9yUGlja2VyVG9nZ2xlZCk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5HcmFkaWVudEVkaXRvci5FdmVudC5HcmFkaWVudENoYW5nZWQsIHtn
cmFkaWVudDogdGhpcy5fZ3JhZGllbnR9KTsKKyAgICB9CisKKyAgICBkcmFnVG9BZGp1c3RDb250
cm9sbGVyV2FzQWRqdXN0ZWRCeUFtb3VudChkcmFnVG9BZGp1c3RDb250cm9sbGVyLCBhbW91bnQp
CisgICAgeworICAgICAgICBjb25zdCBhbmdsZUlucHV0VmFsdWUgPSBwYXJzZUZsb2F0KHRoaXMu
X2FuZ2xlSW5wdXQudmFsdWUpOworICAgICAgICBpZiAoaXNOYU4oYW5nbGVJbnB1dFZhbHVlKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgYW5nbGUgPSBhbmdsZUlucHV0VmFs
dWUgKyBhbW91bnQ7CisgICAgICAgIGlmIChNYXRoLnJvdW5kKGFuZ2xlKSAhPT0gYW5nbGUpCisg
ICAgICAgICAgICBhbmdsZSA9IGFuZ2xlLnRvRml4ZWQoMSk7CisKKyAgICAgICAgdGhpcy5fYW5n
bGVJbnB1dC52YWx1ZSA9IGFuZ2xlOworICAgICAgICB0aGlzLl9hbmdsZUlucHV0VmFsdWVEaWRD
aGFuZ2UoYW5nbGUpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF91cGRhdGVDU1ND
bGFzc0ZvckdyYWRpZW50VHlwZSgpCisgICAgeworICAgICAgICBjb25zdCBpc1JhZGlhbCA9IHRo
aXMuX2dyYWRpZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJhZGlhbEdyYWRpZW50OworICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInJhZGlhbC1ncmFkaWVudCIsIGlz
UmFkaWFsKTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuR3JhZGllbnRFZGl0b3IuRXZlbnQuQ29sb3JQaWNrZXJUb2dnbGVkKTsKKyAgICB9CisK
KyAgICBfZ3JhZGllbnRUeXBlQ2hhbmdlZChldmVudCkKKyAgICB7CisgICAgICAgIGNvbnN0IGRl
c2NyaXB0b3IgPSB0aGlzLl9ncmFkaWVudFR5cGVzW3RoaXMuX2dyYWRpZW50VHlwZVBpY2tlci52
YWx1ZV07CisgICAgICAgIGlmICghKHRoaXMuX2dyYWRpZW50IGluc3RhbmNlb2YgZGVzY3JpcHRv
ci50eXBlKSkgeworICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IudHlwZSA9PT0gV2ViSW5zcGVj
dG9yLkxpbmVhckdyYWRpZW50KSB7CisgICAgICAgICAgICAgICAgdGhpcy5fZ3JhZGllbnQgPSBu
ZXcgV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50KDE4MCwgdGhpcy5fZ3JhZGllbnQuc3RvcHMp
OworICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlSW5wdXQudmFsdWUgPSAiMTgwXHUwMEIwIjsK
KyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRoaXMuX2dyYWRpZW50ID0gbmV3
IFdlYkluc3BlY3Rvci5SYWRpYWxHcmFkaWVudCgiIiwgdGhpcy5fZ3JhZGllbnQuc3RvcHMpOwor
CisgICAgICAgICAgICB0aGlzLl91cGRhdGVDU1NDbGFzc0ZvckdyYWRpZW50VHlwZSgpOworICAg
ICAgICB9CisgICAgICAgIHRoaXMuX2dyYWRpZW50LnJlcGVhdHMgPSBkZXNjcmlwdG9yLnJlcGVh
dHM7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LkdyYWRpZW50RWRpdG9yLkV2ZW50LkdyYWRpZW50Q2hhbmdlZCwge2dyYWRpZW50OiB0aGlzLl9n
cmFkaWVudH0pOworICAgIH0KKworICAgIF9jb2xvclBpY2tlckNvbG9yQ2hhbmdlZChldmVudCkK
KyAgICB7CisgICAgICAgIHRoaXMuX2dyYWRpZW50U2xpZGVyLnNlbGVjdGVkU3RvcC5jb2xvciA9
IGV2ZW50LnRhcmdldC5jb2xvcjsKKyAgICAgICAgdGhpcy5fZ3JhZGllbnRTbGlkZXIuc3RvcHMg
PSB0aGlzLl9ncmFkaWVudC5zdG9wczsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuR3JhZGllbnRFZGl0b3IuRXZlbnQuR3JhZGllbnRDaGFuZ2Vk
LCB7Z3JhZGllbnQ6IHRoaXMuX2dyYWRpZW50fSk7CisgICAgfQorCisgICAgX2FuZ2xlQ2hhbmdl
ZChldmVudCkKKyAgICB7CisgICAgICAgIGNvbnN0IGFuZ2xlID0gcGFyc2VGbG9hdCh0aGlzLl9h
bmdsZUlucHV0LnZhbHVlKSB8fCAwOworICAgICAgICBpZiAoaXNOYU4oYW5nbGUpKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2FuZ2xlSW5wdXRWYWx1ZURpZENoYW5nZShh
bmdsZSk7CisgICAgfQorCisgICAgX2FuZ2xlSW5wdXRWYWx1ZURpZENoYW5nZShhbmdsZSkKKyAg
ICB7CisgICAgICAgIHRoaXMuX2dyYWRpZW50LmFuZ2xlID0gYW5nbGU7CisgICAgICAgIGNvbnN0
IG1hdGNoZXMgPSB0aGlzLl9hbmdsZUlucHV0LnZhbHVlLm1hdGNoKC9cdTAwQjAvZyk7CisgICAg
ICAgIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzLmxlbmd0aCAhPT0gMSkgeworICAgICAgICAgICAg
Y29uc3Qgc2F2ZWRTdGFydCA9IHRoaXMuX2FuZ2xlSW5wdXQuc2VsZWN0aW9uU3RhcnQ7CisgICAg
ICAgICAgICB0aGlzLl9hbmdsZUlucHV0LnZhbHVlID0gYW5nbGUgKyAiXHUwMEIwIjsKKyAgICAg
ICAgICAgIHRoaXMuX2FuZ2xlSW5wdXQuc2VsZWN0aW9uU3RhcnQgPSBzYXZlZFN0YXJ0OworICAg
ICAgICAgICAgdGhpcy5fYW5nbGVJbnB1dC5zZWxlY3Rpb25FbmQgPSBzYXZlZFN0YXJ0OworICAg
ICAgICB9CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkdyYWRpZW50RWRpdG9yLkV2ZW50LkdyYWRpZW50Q2hhbmdlZCwge2dyYWRpZW50OiB0aGlz
Ll9ncmFkaWVudH0pOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkdyYWRpZW50RWRpdG9yLkV2
ZW50ID0geworICAgIEdyYWRpZW50Q2hhbmdlZDogImdyYWRpZW50LWVkaXRvci1ncmFkaWVudC1j
aGFuZ2VkIiwKKyAgICBDb2xvclBpY2tlclRvZ2dsZWQ6ICJncmFkaWVudC1lZGl0b3ItY29sb3It
cGlja2VyLXRvZ2dsZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLmNzcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQmFja2dyb3Vu
ZFBpY2tlci5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZiZTQzOTc2YmNjMTVkMGYyN2Y0M2JmNmNjNzRkN2Mw
ZGM5YjZmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlci5jc3MKQEAgLTAsMCArMSw5
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBEZXZpbiBSb3Vzc28gPGRjcm91c3NvK3dl
YmtpdEBnbWFpbC5jb20+LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1YWwtc3R5
bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiBmbGV4OworfQorCisu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1
YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9yLWdyYWRpZW50LXN3YXRj
aCB7CisgICAgZGlzcGxheTogbm9uZTsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgd2lk
dGg6IDM4cHg7CisgICAgaGVpZ2h0OiAxOHB4OworICAgIG1hcmdpbi10b3A6IDFweDsKKyAgICAv
KiBNYWtlIGEgY2hlY2tlcmVkIGJhY2tncm91bmQgZm9yIHRyYW5zcGFyZW50IGNvbG9ycyB0byBz
aG93IGFnYWluc3QuICovCisgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRv
IGJvdHRvbSwgaHNsKDAsIDAlLCA4MCUpLCBoc2woMCwgMCUsIDgwJSkpLAorICAgICAgICAgICAg
ICAgICAgICAgIGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgwLCAwJSwgODAlKSwgaHNs
KDAsIDAlLCA4MCUpKTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKKyAgICBiYWNrZ3Jv
dW5kLXNpemU6IDUwJTsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3AgbGVmdCwgYm90dG9t
IHJpZ2h0OworICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgYm9yZGVyOiAx
cHggc29saWQgaHNsYSgwLCAwJSwgMjUlLCAwLjQpOworICAgIGJvcmRlci1yYWRpdXM6IDRweDsK
KyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIGN1cnNvcjogZGVmYXVsdDsKK30KKworLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5jb2xvci1ncmFkaWVudC1zd2F0Y2g6aG92
ZXIgeworICAgIGJvcmRlci1jb2xvcjogaHNsYSgwLCAwJSwgMjUlLCAwLjgpOworfQorCisudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1YWwt
c3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9yLWdyYWRpZW50LXN3YXRjaDph
Y3RpdmUgeworICAgIGJvcmRlci1jb2xvcjogaHNsKDAsIDAlLCAyNSUpOworfQorCisudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1YWwtc3R5
bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9yLWdyYWRpZW50LXN3YXRjaCA+IHNw
YW4geworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgcmlnaHQ6IDA7
CisgICAgYm90dG9tOiAwOworICAgIGxlZnQ6IDA7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVy
dHktY29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12
YWx1ZS1jb250YWluZXIuZ3JhZGllbnQtdmFsdWUgPiAuY29sb3ItZ3JhZGllbnQtc3dhdGNoIHsK
KyAgICBkaXNwbGF5OiBibG9jazsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWlu
ZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRh
aW5lci5ncmFkaWVudC12YWx1ZSA+IC5jb2xvci1ncmFkaWVudC1zd2F0Y2ggKyAudmFsdWUtaW5w
dXQgeworICAgIG1hcmdpbi1sZWZ0OiAtM3B4OworICAgIHBhZGRpbmctbGVmdDogNXB4OworICAg
IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CisgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1
czogMDsKKyAgICBib3JkZXItbGVmdDogbm9uZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZh
bHVlLWNvbnRhaW5lciA+IC52YWx1ZS1pbnB1dCB7CisgICAgbWFyZ2luOiAxcHggNHB4IDNweCAw
OworICAgIHBhZGRpbmc6IDAgM3B4OworICAgIGJvcmRlci1yYWRpdXM6IDRweDsKKyAgICBib3Jk
ZXI6IHNvbGlkIDFweCBoc2woMCwgMCUsIDgzJSk7CisgICAgdGV4dC1hbGlnbjogbGVmdDsKKyAg
ICBmb250LXNpemU6IDEwcHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVy
LmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWlu
ZXIgPiAudmFsdWUtaW5wdXRbZGlzYWJsZWRdIHsKKyAgICBvcGFjaXR5OiAwLjc7CisgICAgcG9p
bnRlci1ldmVudHM6IG5vbmU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVy
LmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWlu
ZXIgPiAudmFsdWUtdHlwZS1waWNrZXItc2VsZWN0IHsKKyAgICBtYXgtd2lkdGg6IDE3MHB4Owor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJlMmJkZWYyZTY3NGIyOTMyNmE3OTE3OGMxNTE0OTkxNzZjMGVmNzQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxT
dHlsZUJhY2tncm91bmRQaWNrZXIuanMKQEAgLTAsMCArMSwyNTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgRGV2aW4gUm91c3NvIDxkY3JvdXNzbyt3ZWJraXRAZ21haWwuY29tPi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQmFj
a2dyb3VuZFBpY2tlciA9IGNsYXNzIFZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlciBleHRlbmRz
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yCit7CisgICAgY29uc3RydWN0
b3IocHJvcGVydHlOYW1lcywgdGV4dCwgcG9zc2libGVWYWx1ZXMsIGxheW91dFJldmVyc2VkKQor
ICAgIHsKKyAgICAgICAgc3VwZXIocHJvcGVydHlOYW1lcywgdGV4dCwgcG9zc2libGVWYWx1ZXMs
IG51bGwsICJiYWNrZ3JvdW5kLXBpY2tlciIsIGxheW91dFJldmVyc2VkKTsKKworICAgICAgICB0
aGlzLl9ncmFkaWVudFN3YXRjaEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFu
Iik7CisgICAgICAgIHRoaXMuX2dyYWRpZW50U3dhdGNoRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJj
b2xvci1ncmFkaWVudC1zd2F0Y2giKTsKKyAgICAgICAgdGhpcy5fZ3JhZGllbnRTd2F0Y2hFbGVt
ZW50LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbGljayB0byBzZWxlY3QgYSBncmFk
aWVudCIpOworICAgICAgICB0aGlzLl9ncmFkaWVudFN3YXRjaEVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCB0aGlzLl9ncmFkaWVudFN3YXRjaENsaWNrZWQuYmluZCh0aGlzKSk7CisK
KyAgICAgICAgbGV0IGdyYWRpZW50U3dhdGNoSW5uZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgic3BhbiIpOworICAgICAgICB0aGlzLl9ncmFkaWVudFN3YXRjaEVsZW1lbnQuYXBw
ZW5kQ2hpbGQoZ3JhZGllbnRTd2F0Y2hJbm5lckVsZW1lbnQpOworCisgICAgICAgIHRoaXMuY29u
dGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZ3JhZGllbnRTd2F0Y2hFbGVtZW50KTsKKwor
ICAgICAgICB0aGlzLl92YWx1ZUlucHV0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImlucHV0Iik7CisgICAgICAgIHRoaXMuX3ZhbHVlSW5wdXRFbGVtZW50LmNsYXNzTGlzdC5hZGQo
InZhbHVlLWlucHV0Iik7CisgICAgICAgIHRoaXMuX3ZhbHVlSW5wdXRFbGVtZW50LnR5cGUgPSAi
dXJsIjsKKyAgICAgICAgdGhpcy5fdmFsdWVJbnB1dEVsZW1lbnQucGxhY2Vob2xkZXIgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkVudGVyIGEgVVJMIik7CisgICAgICAgIHRoaXMuX3ZhbHVlSW5w
dXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgdGhpcy5fdmFsdWVJbnB1dFZhbHVl
Q2hhbmdlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl92YWx1ZUlucHV0RWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fdmFsdWVUeXBl
UGlja2VyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOworICAgICAg
ICB0aGlzLl92YWx1ZVR5cGVQaWNrZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoInZhbHVlLXR5cGUt
cGlja2VyLXNlbGVjdCIpOworICAgICAgICBpZiAodGhpcy5fcG9zc2libGVWYWx1ZXMuYWR2YW5j
ZWQpCisgICAgICAgICAgICB0aGlzLl92YWx1ZVR5cGVQaWNrZXJFbGVtZW50LnRpdGxlID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJPcHRpb24tY2xpY2sgdG8gc2hvdyBhbGwgdmFsdWVzIik7CisK
KyAgICAgICAgbGV0IGltYWdlT3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9u
Iik7CisgICAgICAgIGltYWdlT3B0aW9uLnZhbHVlID0gInVybCI7CisgICAgICAgIGltYWdlT3B0
aW9uLnRleHQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkltYWdlIik7CisgICAgICAgIHRoaXMu
X3ZhbHVlVHlwZVBpY2tlckVsZW1lbnQuYXBwZW5kQ2hpbGQoaW1hZ2VPcHRpb24pOworCisgICAg
ICAgIGxldCBsaW5lYXJHcmFkaWVudE9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9w
dGlvbiIpOworICAgICAgICBsaW5lYXJHcmFkaWVudE9wdGlvbi52YWx1ZSA9ICJsaW5lYXItZ3Jh
ZGllbnQiOworICAgICAgICBsaW5lYXJHcmFkaWVudE9wdGlvbi50ZXh0ID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJMaW5lYXIgR3JhZGllbnQiKTsKKyAgICAgICAgdGhpcy5fdmFsdWVUeXBlUGlj
a2VyRWxlbWVudC5hcHBlbmRDaGlsZChsaW5lYXJHcmFkaWVudE9wdGlvbik7CisKKyAgICAgICAg
bGV0IHJhZGlhbEdyYWRpZW50T3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9u
Iik7CisgICAgICAgIHJhZGlhbEdyYWRpZW50T3B0aW9uLnZhbHVlID0gInJhZGlhbC1ncmFkaWVu
dCI7CisgICAgICAgIHJhZGlhbEdyYWRpZW50T3B0aW9uLnRleHQgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlJhZGlhbCBHcmFkaWVudCIpOworICAgICAgICB0aGlzLl92YWx1ZVR5cGVQaWNrZXJF
bGVtZW50LmFwcGVuZENoaWxkKHJhZGlhbEdyYWRpZW50T3B0aW9uKTsKKworICAgICAgICBsZXQg
cmVwZWF0aW5nTGluZWFyR3JhZGllbnRPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJv
cHRpb24iKTsKKyAgICAgICAgcmVwZWF0aW5nTGluZWFyR3JhZGllbnRPcHRpb24udmFsdWUgPSAi
cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCI7CisgICAgICAgIHJlcGVhdGluZ0xpbmVhckdyYWRp
ZW50T3B0aW9uLnRleHQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcGVhdGluZyBMaW5lYXIg
R3JhZGllbnQiKTsKKyAgICAgICAgdGhpcy5fdmFsdWVUeXBlUGlja2VyRWxlbWVudC5hcHBlbmRD
aGlsZChyZXBlYXRpbmdMaW5lYXJHcmFkaWVudE9wdGlvbik7CisKKyAgICAgICAgbGV0IHJlcGVh
dGluZ1JhZGlhbEdyYWRpZW50T3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9u
Iik7CisgICAgICAgIHJlcGVhdGluZ1JhZGlhbEdyYWRpZW50T3B0aW9uLnZhbHVlID0gInJlcGVh
dGluZy1yYWRpYWwtZ3JhZGllbnQiOworICAgICAgICByZXBlYXRpbmdSYWRpYWxHcmFkaWVudE9w
dGlvbi50ZXh0ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXBlYXRpbmcgUmFkaWFsIEdyYWRp
ZW50Iik7CisgICAgICAgIHRoaXMuX3ZhbHVlVHlwZVBpY2tlckVsZW1lbnQuYXBwZW5kQ2hpbGQo
cmVwZWF0aW5nUmFkaWFsR3JhZGllbnRPcHRpb24pOworCisgICAgICAgIHRoaXMuX3ZhbHVlVHlw
ZVBpY2tlckVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaHIiKSk7
CisKKyAgICAgICAgdGhpcy5fY3JlYXRlVmFsdWVPcHRpb25zKHRoaXMuX3Bvc3NpYmxlVmFsdWVz
LmJhc2ljKTsKKyAgICAgICAgdGhpcy5fYWR2YW5jZWRWYWx1ZXNFbGVtZW50cyA9IG51bGw7CisK
KyAgICAgICAgdGhpcy5fdmFsdWVUeXBlUGlja2VyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZWRvd24iLCB0aGlzLl9rZXl3b3JkU2VsZWN0TW91c2VEb3duLmJpbmQodGhpcykpOworICAg
ICAgICB0aGlzLl92YWx1ZVR5cGVQaWNrZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5n
ZSIsIHRoaXMuX2hhbmRsZUtleXdvcmRDaGFuZ2VkLmJpbmQodGhpcykpOworICAgICAgICB0aGlz
LmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3ZhbHVlVHlwZVBpY2tlckVsZW1lbnQp
OworCisgICAgICAgIHRoaXMuX2N1cnJlbnRUeXBlID0gInVybCI7CisgICAgICAgIHRoaXMuX2dy
YWRpZW50ID0gbnVsbDsKKworICAgICAgICB0aGlzLl91cGRhdGVHcmFkaWVudFN3YXRjaCgpOwor
ICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHZhbHVlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl92YWx1ZUlucHV0RWxlbWVudC52YWx1ZTsKKyAgICB9CisKKyAgICBzZXQg
dmFsdWUodmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5sZW5ndGgg
fHwgdmFsdWUgPT09IHRoaXMudmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
Y29uc3QgaXNLZXl3b3JkID0gdGhpcy52YWx1ZUlzU3VwcG9ydGVkS2V5d29yZCh2YWx1ZSk7Cisg
ICAgICAgIHRoaXMuX2N1cnJlbnRUeXBlID0gaXNLZXl3b3JkID8gdmFsdWUgOiB2YWx1ZS5zdWJz
dHJpbmcoMCwgdmFsdWUuaW5kZXhPZigiKCIpKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlVmFsdWVJ
bnB1dCgpOworICAgICAgICBpZiAoIWlzS2V5d29yZCkKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVl
SW5wdXRFbGVtZW50LnZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKHZhbHVlLmluZGV4T2YoIigiKSAr
IDEsIHZhbHVlLmxlbmd0aCAtIDEpOworCisgICAgICAgIHRoaXMuX3ZhbHVlVHlwZVBpY2tlckVs
ZW1lbnQudmFsdWUgPSB0aGlzLl9jdXJyZW50VHlwZTsKKworICAgICAgICBpZiAoIXRoaXMuX2N1
cnJlbnRUeXBlLmluY2x1ZGVzKCJncmFkaWVudCIpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHRoaXMuX2dyYWRpZW50ID0gV2ViSW5zcGVjdG9yLkdyYWRpZW50LmZyb21TdHJpbmco
dmFsdWUpOworICAgICAgICBpZiAoIXRoaXMuX2dyYWRpZW50KQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHRoaXMuX3VwZGF0ZUdyYWRpZW50U3dhdGNoKCk7CisgICAgfQorCisgICAg
Z2V0IHN5bnRoZXNpemVkVmFsdWUoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMudmFsdWVJc1N1
cHBvcnRlZEtleXdvcmQodGhpcy5fY3VycmVudFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX2N1cnJlbnRUeXBlOworCisgICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50VHlwZSArICIo
IiArIHRoaXMudmFsdWUgKyAiKSI7CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBw
YXJzZVZhbHVlKHRleHQpCisgICAgeworICAgICAgICBjb25zdCB2YWxpZFByZWZpeGVzID0gWyJ1
cmwiLCAibGluZWFyLWdyYWRpZW50IiwgInJhZGlhbC1ncmFkaWVudCIsICJyZXBlYXRpbmctbGlu
ZWFyLWdyYWRpZW50IiwgInJlcGVhdGluZy1yYWRpYWwtZ3JhZGllbnQiXTsKKyAgICAgICAgcmV0
dXJuIHZhbGlkUHJlZml4ZXMuc29tZSgoaXRlbSkgPT4gdGV4dC5zdGFydHNXaXRoKGl0ZW0pKSA/
IFt0ZXh0LCB0ZXh0XSA6IG51bGw7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX3Vw
ZGF0ZVZhbHVlSW5wdXQoKQorICAgIHsKKyAgICAgICAgY29uc3Qgc3VwcG9ydGVkS2V5d29yZCA9
IHRoaXMudmFsdWVJc1N1cHBvcnRlZEtleXdvcmQodGhpcy5fY3VycmVudFR5cGUpOworICAgICAg
ICBjb25zdCBncmFkaWVudFZhbHVlID0gdGhpcy5fY3VycmVudFR5cGUuaW5jbHVkZXMoImdyYWRp
ZW50Iik7CisgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiZ3Jh
ZGllbnQtdmFsdWUiLCAhc3VwcG9ydGVkS2V5d29yZCAmJiBncmFkaWVudFZhbHVlKTsKKyAgICAg
ICAgdGhpcy5fdmFsdWVJbnB1dEVsZW1lbnQuZGlzYWJsZWQgPSBzdXBwb3J0ZWRLZXl3b3JkOwor
ICAgICAgICBpZiAoc3VwcG9ydGVkS2V5d29yZCkgeworICAgICAgICAgICAgdGhpcy5fdmFsdWVJ
bnB1dEVsZW1lbnQudmFsdWUgPSAiIjsKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVlSW5wdXRFbGVt
ZW50LnBsYWNlaG9sZGVyID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJVc2luZyBLZXl3b3JkIFZh
bHVlIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAodGhpcy5fY3VycmVudFR5
cGUgPT09ICJpbWFnZSIpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZUlucHV0RWxlbWVu
dC50eXBlID0gInVybCI7CisgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVJbnB1dEVsZW1lbnQu
cGxhY2Vob2xkZXIgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVudGVyIGEgVVJMIik7CisgICAg
ICAgICAgICB9IGVsc2UgaWYgKGdyYWRpZW50VmFsdWUpIHsKKyAgICAgICAgICAgICAgICB0aGlz
Ll92YWx1ZUlucHV0RWxlbWVudC50eXBlID0gInRleHQiOworICAgICAgICAgICAgICAgIHRoaXMu
X3ZhbHVlSW5wdXRFbGVtZW50LnBsYWNlaG9sZGVyID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJF
bnRlciBhIEdyYWRpZW50Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBfdXBkYXRlR3JhZGllbnRTd2F0Y2goKQorICAgIHsKKyAgICAgICAgdGhpcy5fZ3JhZGllbnRT
d2F0Y2hFbGVtZW50LmZpcnN0Q2hpbGQuc3R5bGUuYmFja2dyb3VuZCA9ICIiOworICAgICAgICBj
b25zdCB2YWx1ZSA9IHRoaXMuc3ludGhlc2l6ZWRWYWx1ZTsKKyAgICAgICAgaWYgKCF2YWx1ZSB8
fCB2YWx1ZSA9PT0gdGhpcy5fY3VycmVudFR5cGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdGhpcy5fZ3JhZGllbnQgPSBXZWJJbnNwZWN0b3IuR3JhZGllbnQuZnJvbVN0cmluZyh2
YWx1ZSk7CisgICAgICAgIHRoaXMuX2dyYWRpZW50U3dhdGNoRWxlbWVudC5maXJzdENoaWxkLnN0
eWxlLmJhY2tncm91bmQgPSB0aGlzLl9ncmFkaWVudCA/IHZhbHVlIDogbnVsbDsKKyAgICB9CisK
KyAgICBfZ3JhZGllbnRTd2F0Y2hDbGlja2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAgbGV0IGJv
dW5kcyA9IFdlYkluc3BlY3Rvci5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdCh0aGlzLl9ncmFkaWVu
dFN3YXRjaEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOworICAgICAgICBsZXQgcG9w
b3ZlciA9IG5ldyBXZWJJbnNwZWN0b3IuUG9wb3Zlcih0aGlzKTsKKworICAgICAgICBsZXQgZ3Jh
ZGllbnRFZGl0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLkdyYWRpZW50RWRpdG9yOworICAgICAgICBn
cmFkaWVudEVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5HcmFkaWVudEVkaXRv
ci5FdmVudC5HcmFkaWVudENoYW5nZWQsIHRoaXMuX2dyYWRpZW50RWRpdG9yR3JhZGllbnRDaGFu
Z2VkLCB0aGlzKTsKKyAgICAgICAgZ3JhZGllbnRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuR3JhZGllbnRFZGl0b3IuRXZlbnQuQ29sb3JQaWNrZXJUb2dnbGVkLCBwb3BvdmVy
LnVwZGF0ZSwgcG9wb3Zlcik7CisKKyAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gZ3JhZGllbnRF
ZGl0b3IuZWxlbWVudDsKKyAgICAgICAgcG9wb3Zlci5wcmVzZW50KGJvdW5kcy5wYWQoMiksIFtX
ZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUlOX1hdKTsKKworICAgICAgICBncmFkaWVudEVkaXRvci5n
cmFkaWVudCA9IHRoaXMuX2dyYWRpZW50OworICAgIH0KKworICAgIF9ncmFkaWVudEVkaXRvckdy
YWRpZW50Q2hhbmdlZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMudmFsdWUgPSBldmVudC5k
YXRhLmdyYWRpZW50LnRvU3RyaW5nKCk7CisgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7
CisgICAgfQorCisgICAgX3ZhbHVlSW5wdXRWYWx1ZUNoYW5nZWQoZXZlbnQpIHsKKyAgICAgICAg
dGhpcy5fdXBkYXRlR3JhZGllbnRTd2F0Y2goKTsKKyAgICAgICAgdGhpcy5fdmFsdWVEaWRDaGFu
Z2UoKTsKKyAgICB9CisKKyAgICBfa2V5d29yZFNlbGVjdE1vdXNlRG93bihldmVudCkKKyAgICB7
CisgICAgICAgIGlmIChldmVudC5hbHRLZXkpCisgICAgICAgICAgICB0aGlzLl9hZGRBZHZhbmNl
ZFZhbHVlcygpOworICAgICAgICBlbHNlIGlmICghdGhpcy5fdmFsdWVJc1N1cHBvcnRlZEFkdmFu
Y2VkS2V5d29yZCgpKQorICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQWR2YW5jZWRWYWx1ZXMoKTsK
KyAgICB9CisKKyAgICBfaGFuZGxlS2V5d29yZENoYW5nZWQoZXZlbnQpIHsKKyAgICAgICAgdGhp
cy5fY3VycmVudFR5cGUgPSB0aGlzLl92YWx1ZVR5cGVQaWNrZXJFbGVtZW50LnZhbHVlOworICAg
ICAgICB0aGlzLl91cGRhdGVWYWx1ZUlucHV0KCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUdyYWRp
ZW50U3dhdGNoKCk7CisgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgfQorCisg
ICAgX2NyZWF0ZVZhbHVlT3B0aW9ucyh2YWx1ZXMpCisgICAgeworICAgICAgICBsZXQgYWRkZWRF
bGVtZW50cyA9IFtdOworICAgICAgICBmb3IgKGxldCBrZXkgaW4gdmFsdWVzKSB7CisgICAgICAg
ICAgICBsZXQgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7CisgICAg
ICAgICAgICBvcHRpb24udmFsdWUgPSBrZXk7CisgICAgICAgICAgICBvcHRpb24udGV4dCA9IHZh
bHVlc1trZXldOworICAgICAgICAgICAgdGhpcy5fdmFsdWVUeXBlUGlja2VyRWxlbWVudC5hcHBl
bmRDaGlsZChvcHRpb24pOworICAgICAgICAgICAgYWRkZWRFbGVtZW50cy5wdXNoKG9wdGlvbik7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGFkZGVkRWxlbWVudHM7CisgICAgfQorCisgICAg
X2FkZEFkdmFuY2VkVmFsdWVzKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9hZHZhbmNlZFZh
bHVlc0VsZW1lbnRzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3ZhbHVl
VHlwZVBpY2tlckVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaHIi
KSk7CisgICAgICAgIHRoaXMuX2FkdmFuY2VkVmFsdWVzRWxlbWVudHMgPSB0aGlzLl9jcmVhdGVW
YWx1ZU9wdGlvbnModGhpcy5fcG9zc2libGVWYWx1ZXMuYWR2YW5jZWQpOworICAgIH0KKworICAg
IF9yZW1vdmVBZHZhbmNlZFZhbHVlcygpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2FkdmFu
Y2VkVmFsdWVzRWxlbWVudHMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5f
dmFsdWVUeXBlUGlja2VyRWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLl9hZHZhbmNlZFZhbHVlc0Vs
ZW1lbnRzWzBdLnByZXZpb3VzU2libGluZyk7CisgICAgICAgIGZvciAobGV0IGVsZW1lbnQgb2Yg
dGhpcy5fYWR2YW5jZWRWYWx1ZXNFbGVtZW50cykKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVlVHlw
ZVBpY2tlckVsZW1lbnQucmVtb3ZlQ2hpbGQoZWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fYWR2
YW5jZWRWYWx1ZXNFbGVtZW50cyA9IG51bGw7CisgICAgfQorCisgICAgX3RvZ2dsZVRhYmJpbmdP
ZlNlbGVjdGFibGVFbGVtZW50cyhkaXNhYmxlZCkKKyAgICB7CisgICAgICAgIGxldCB0YWJJbmRl
eCA9IGRpc2FibGVkID8gIi0xIiA6IG51bGw7CisgICAgICAgIHRoaXMuX3ZhbHVlSW5wdXRFbGVt
ZW50LnRhYkluZGV4ID0gdGFiSW5kZXg7CisgICAgICAgIHRoaXMuX3ZhbHVlVHlwZVBpY2tlckVs
ZW1lbnQudGFiSW5kZXggPSB0YWJJbmRleDsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVDb21tYVNlcGFy
YXRlZEtleXdvcmRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5qcwppbmRleCAx
ZTk2MDE2NzYxZWMyZDdlNThlZWMzNGQ5NGFiZjZlNWRiMjI4OGUyLi4wNjg0OTY0ZThkYTYxMGFj
ZmFhZGNkNDljMTVlOGQxNThhOTE0YzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVk
aXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5qcwpAQCAtMTAwLDkgKzEwMCwx
MCBAQCBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3Ig
PSBjbGFzcyBWaXN1YWxTdHlsZUNvbW1hU2VwYQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgbGV0IHZhbHVlcyA9IGNvbW1hU2VwYXJhdGVkVmFsdWUuc3BsaXQoL1xz
KixccyooPyFbXlwoXSpcKSkvKTsKKyAgICAgICAgLy8gSXQgaXMgbmVjZXNzYXJ5IHRvIGFkZCB0
aGUgYmVnaW5uaW5nIFwpIHRvIGVuc3VyZSBpbm5lciBwYXJlbnRoZXNpcyBhcmUgbm90IG1hdGNo
ZWQuCisgICAgICAgIGxldCB2YWx1ZXMgPSBjb21tYVNlcGFyYXRlZFZhbHVlLnNwbGl0KC9cKVxz
KixccyooPyFbXlwoXCldKlwpKS8pOwogICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiB2YWx1ZXMp
Ci0gICAgICAgICAgICB0aGlzLl9hZGRDb21tYVNlcGFyYXRlZEtleXdvcmQodmFsdWUpOworICAg
ICAgICAgICAgdGhpcy5fYWRkQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKHZhbHVlICsgKHZhbHVlLmVu
ZHNXaXRoKCIpIikgPyAiIiA6ICIpIikpOwogCiAgICAgICAgIHRoaXMuX2NvbW1hU2VwYXJhdGVk
S2V5d29yZHMuY2hpbGRyZW5bMF0uc2VsZWN0KHRydWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWls
c1BhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlz
dWFsU3R5bGVEZXRhaWxzUGFuZWwuanMKaW5kZXggMmVkNzZjMTQ3Y2Y4MGI5MDM3YTM0NGZhZmJl
NDNkM2M5YzUwYWQ2Ny4uMGIwYWIyNjA2YWRkN2VhM2U0Njk3N2QwNDZhZmM5NGQ3OTNmMmFlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlz
dWFsU3R5bGVEZXRhaWxzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuanMKQEAgLTc5MCw3ICs3OTAs
NyBAQCBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBWaXN1YWxT
dHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYgogCiAgICAgICAgIGxldCBiYWNrZ3JvdW5kSW1h
Z2VSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OwogCi0gICAgICAgIGxl
dCBiYWNrZ3JvdW5kSW1hZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVVJMSW5wdXQo
ImJhY2tncm91bmQtaW1hZ2UiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkltYWdlIiksIHRoaXMu
X2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIk5vbmUiXSkpOworICAgICAgICBsZXQgYmFja2dy
b3VuZEltYWdlID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIo
ImJhY2tncm91bmQtaW1hZ2UiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlR5cGUiKSwgdGhpcy5f
a2V5d29yZHMuZGVmYXVsdHMuY29uY2F0KFsiTm9uZSJdKSk7CiAKICAgICAgICAgYmFja2dyb3Vu
ZEltYWdlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYmFja2dyb3VuZEltYWdlLmVsZW1lbnQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluay5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluay5jc3MKaW5k
ZXggYTNiNDg2OTMzYmUwMzBmMWJiN2M5MGYxYmYyMjAyMWViYWJkMTA0OC4uZTE2YTMxY2VkNjM5
NzQ0OGY2NTJkYjA0ODA4MTEwN2JjZDkzNWQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsu
Y3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3Vh
bFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rLmNzcwpAQCAtODksNyArODksNyBAQAogCiAudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rOm5vdCgubGluay1hbGwpID4gLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIgewogICAgIHdpZHRoOiAxMHB4OwotICAgIHRv
cDogLXdlYmtpdC1jYWxjKDUwJSAtIDFweCk7CisgICAgdG9wOiA1MCU7CiB9CiAKIC52aXN1YWwt
c3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbms6bm90KC5saW5rLWFsbCkubGlua2VkID4gLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVVUkxJbnB1dC5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxl
VVJMSW5wdXQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ODc5NDZkOGI5OTdl
YmViNzAzZGUyZTBkY2ExZDgyZTkwMTRkZmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVmlzdWFsU3R5bGVVUkxJbnB1dC5qcworKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi1XZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVVUkxJbnB1dCA9IGNsYXNzIFZp
c3VhbFN0eWxlVVJMSW5wdXQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0
eUVkaXRvcgotewotICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5TmFtZXMsIHRleHQsIHBvc3NpYmxl
VmFsdWVzLCBsYXlvdXRSZXZlcnNlZCkKLSAgICB7Ci0gICAgICAgIHN1cGVyKHByb3BlcnR5TmFt
ZXMsIHRleHQsIHBvc3NpYmxlVmFsdWVzLCBudWxsLCAidXJsLWlucHV0IiwgbGF5b3V0UmV2ZXJz
ZWQpOwotCi0gICAgICAgIHRoaXMuX3VybElucHV0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImlucHV0Iik7Ci0gICAgICAgIHRoaXMuX3VybElucHV0RWxlbWVudC50eXBlID0gInVy
bCI7Ci0gICAgICAgIHRoaXMuX3VybElucHV0RWxlbWVudC5wbGFjZWhvbGRlciA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRW50ZXIgYSBVUkwiKTsKLSAgICAgICAgdGhpcy5fdXJsSW5wdXRFbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwgdGhpcy5fdmFsdWVEaWRDaGFuZ2UuYmluZCh0
aGlzKSk7Ci0gICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdXJs
SW5wdXRFbGVtZW50KTsKLSAgICB9Ci0KLSAgICAvLyBQdWJsaWMKLQotICAgIGdldCB2YWx1ZSgp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdXJsSW5wdXRFbGVtZW50LnZhbHVlOwotICAg
IH0KLQotICAgIHNldCB2YWx1ZSh2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmICh2YWx1ZSAmJiB2
YWx1ZSA9PT0gdGhpcy52YWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlz
Ll91cmxJbnB1dEVsZW1lbnQudmFsdWUgPSB2YWx1ZTsKLSAgICB9Ci0KLSAgICBnZXQgc3ludGhl
c2l6ZWRWYWx1ZSgpCi0gICAgewotICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnZhbHVlOwotICAg
ICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5sZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gbnVs
bDsKLQotICAgICAgICBpZiAodGhpcy52YWx1ZUlzU3VwcG9ydGVkS2V5d29yZCh2YWx1ZSkpCi0g
ICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0KLSAgICAgICAgcmV0dXJuICJ1cmwoIiArIHZhbHVl
ICsgIikiOwotICAgIH0KLQotICAgIC8vIFByb3RlY3RlZAotCi0gICAgcGFyc2VWYWx1ZSh0ZXh0
KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMudmFsdWVJc1N1cHBvcnRlZEtleXdvcmQodGV4dCkp
Ci0gICAgICAgICAgICByZXR1cm4gW3RleHQsIHRleHRdOwotCi0gICAgICAgIHJldHVybiAvXig/
OnVybFwoXHMqKShbXlwpXSopKD86XHMqXClccyo7PykkLy5leGVjKHRleHQpOwotICAgIH0KLX07
Cg==
</data>
<flag name="review"
          id="290606"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>265568</attachid>
            <date>2015-11-15 18:49:51 -0800</date>
            <delta_ts>2015-11-15 18:49:51 -0800</delta_ts>
            <desc>After patch is applied</desc>
            <filename>Screen Shot 2015-11-15 at 6.31.07 PM.png</filename>
            <type>image/png</type>
            <size>84951</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAm4AAAGDCAYAAACSmpzSAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAW
JQAAFiUBSVIk8AAAAZ1pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6
eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYg
eG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4K
ICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhp
Zj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFhE
aW1lbnNpb24+NjIyPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZ
RGltZW5zaW9uPjM4NzwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0
aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgqbZwjYAAAAHGlET1QAAAACAAAAAAAAAMIA
AAAoAAAAwgAAAMEAAMXisjbDNAAAQABJREFUeAHsnQeAE0Xfxp8kVzg6ooKAIqIoSpFiFwVEFAGl
WCliAQtWeEWxfor6yguigiIKgoKooIIKdlERVFR6kw42pJc7rl8u+z3P7OYuVzkQEMLMXbK7szOz
u//ZZH/5lxmfwwSbrASsBKJaAh9//DGaNWsW1ddoL85KwErASmB/SGBFZln44MDxgUtwyXUtDT6F
TF5hx2UxJtVwk8+sqhHu4L/a9Pv8iGFWwO9DrJ/bfjCP5bP1puOoLEvqmKqKAKtbcPNEahdWAtEr
AYGbTVYCVgJWAlYCey6Bqme1cSuJpfhyEBJOEdy0GdKauz//u9nvZvpcasspoboO8wRpAUJZgMAW
w72COD/pLeCoXW6YegQ3lleOybLgJknYZCUQ3RKwGrfo7l97dVYCVgL7TwLrgmWNdi0krZeAi4ci
UpnkQpxyCiayGFO4ZP79LpQZrRtbDKgk37QUzMWyno/aOJ9Rv3GdB9ZftspZcMsvTLttJRB9ErDg
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
A5juwJ7pmGLAAAAAAElFTkSuQmCC
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265942</attachid>
            <date>2015-11-19 22:28:39 -0800</date>
            <delta_ts>2015-11-20 15:16:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>150494.txt</filename>
            <type>text/plain</type>
            <size>58718</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGJiMDJkY2YuLjU5MWUyMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNiBAQAorMjAxNS0xMS0xNSAgRGV2aW4gUm91c3Nv
ICA8ZGNyb3Vzc28rd2Via2l0QGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgc3VwcG9ydCBmb3IgR3JhZGllbnRzIGluIHRoZSBWaXN1YWwgc2lkZWJhciBiYWNrZ3JvdW5k
IGVkaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUwNDk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAg
IEFsbG93cyB0aGUgZWRpdG9ycyBpbiB0aGUgVmlzdWFsIHNpZGViYXIgQmFja2dyb3VuZCBTdHls
ZSBzZWN0aW9uIHRvCisgICAgICAgIHdvcmsgd2l0aCBncmFkaWVudHMgYW5kIGRhdGEgVVJJcy4K
KworICAgICAgICAqIExvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JHcmFkaWVudEVk
aXRpbmdDb250cm9sbGVyLmNzczogRGVsZXRlZC4KKyAgICAgICAgU29tZSBzdHlsaW5nIHdhcyBy
ZXVzZWQgaW4gVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLmNzcy4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xs
ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0Nv
bnRyb2xsZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRp
bmdDb250cm9sbGVyLnByb3RvdHlwZS5wb3BvdmVyV2lsbFByZXNlbnQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLnByb3RvdHlwZS5w
b3BvdmVyRGlkUHJlc2VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckdyYWRp
ZW50RWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLl9ncmFkaWVudEVkaXRvckdyYWRpZW50Q2hh
bmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0Nv
bnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZUV2ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUuZ3Jh
ZGllbnRTbGlkZXJTdG9wc0RpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLmdyYWRpZW50
U2xpZGVyU3RvcFdhc1NlbGVjdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUuZHJhZ1RvQWRqdXN0
Q29udHJvbGxlcldhc0FkanVzdGVkQnlBbW91bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLnByb3RvdHlwZS5faGFu
ZGxlSW5wdXRFdmVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJv
ckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLl9hbmdsZUlucHV0VmFsdWVEaWRD
aGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVu
dEVkaXRpbmdDb250cm9sbGVyLnByb3RvdHlwZS5faGFuZGxlQ2hhbmdlRXZlbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9s
bGVyLnByb3RvdHlwZS5fY29sb3JQaWNrZXJDb2xvckNoYW5nZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLnByb3Rv
dHlwZS5fdXBkYXRlQ1NTQ2xhc3NGb3JHcmFkaWVudFR5cGUpOiBEZWxldGVkLgorICAgICAgICBS
ZXdvcmtlZCBncmFkaWVudCBlZGl0b3IgcG9wdXAgaW50byBXZWJJbnNwZWN0b3IuR3JhZGllbnRF
ZGl0b3IuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL01vZGVscy9HcmFkaWVudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5H
cmFkaWVudC5mcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudC5zdG9w
c1dpdGhDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVudC5s
aW5lYXJHcmFkaWVudFdpdGhDb21wb25lbnRzKToKKyAgICAgICAgUmVtb3ZlZCBjb25zb2xlLmVy
cm9yIHN0YXRlbWVudHMgYXMgdGhleSBkaWRuJ3QgZG8gYW55dGhpbmcgYnV0IGNsb2cgdGhlIGNv
bnNvbGUuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0dyYWRpZW50RWRpdG9yLmNz
czogQWRkZWQuCisgICAgICAgICguZ3JhZGllbnQtZWRpdG9yKToKKyAgICAgICAgKC5ncmFkaWVu
dC1lZGl0b3IucmFkaWFsLWdyYWRpZW50KToKKyAgICAgICAgKC5ncmFkaWVudC1lZGl0b3IuZWRp
dGluZy1jb2xvcik6CisgICAgICAgICguZ3JhZGllbnQtZWRpdG9yLnJhZGlhbC1ncmFkaWVudC5l
ZGl0aW5nLWNvbG9yKToKKyAgICAgICAgKC5ncmFkaWVudC1lZGl0b3IgPiAuZ3JhZGllbnQtdHlw
ZS1zZWxlY3QpOgorICAgICAgICAoLmdyYWRpZW50LWVkaXRvciA+IC5ncmFkaWVudC1zbGlkZXIp
OgorICAgICAgICAoLmdyYWRpZW50LWVkaXRvciA+IC5jb2xvci1waWNrZXIpOgorICAgICAgICAo
LmdyYWRpZW50LWVkaXRvciA+IC5jb2xvci1waWNrZXIgPiAuc2xpZGVyKToKKyAgICAgICAgKC5n
cmFkaWVudC1lZGl0b3IgPiAuY29sb3ItcGlja2VyID4gLmJyaWdodG5lc3MpOgorICAgICAgICAo
LmdyYWRpZW50LWVkaXRvciA+IC5jb2xvci1waWNrZXIgPiAub3BhY2l0eSk6CisgICAgICAgICgu
Z3JhZGllbnQtZWRpdG9yID4gLmdyYWRpZW50LWFuZ2xlKToKKyAgICAgICAgKC5ncmFkaWVudC1l
ZGl0b3IucmFkaWFsLWdyYWRpZW50ID4gLmdyYWRpZW50LWFuZ2xlKToKKyAgICAgICAgKC5ncmFk
aWVudC1lZGl0b3IgPiAuZ3JhZGllbnQtYW5nbGUgPiBpbnB1dCk6CisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL0dyYWRpZW50RWRpdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5HcmFkaWVudEVkaXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR3JhZGllbnRF
ZGl0b3IucHJvdG90eXBlLmdldCBlbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFk
aWVudEVkaXRvci5wcm90b3R5cGUuc2V0IGdyYWRpZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5HcmFkaWVudEVkaXRvci5wcm90b3R5cGUuZ2V0IGdyYWRpZW50KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5HcmFkaWVudEVkaXRvci5wcm90b3R5cGUuZ3JhZGllbnRTbGlkZXJTdG9wc0RpZENo
YW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR3JhZGllbnRFZGl0b3IucHJvdG90eXBlLmdy
YWRpZW50U2xpZGVyU3RvcFdhc1NlbGVjdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFk
aWVudEVkaXRvci5wcm90b3R5cGUuZHJhZ1RvQWRqdXN0Q29udHJvbGxlcldhc0FkanVzdGVkQnlB
bW91bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkdyYWRpZW50RWRpdG9yLnByb3RvdHlwZS5f
dXBkYXRlQ1NTQ2xhc3NGb3JHcmFkaWVudFR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkdy
YWRpZW50RWRpdG9yLnByb3RvdHlwZS5fZ3JhZGllbnRUeXBlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuR3JhZGllbnRFZGl0b3IucHJvdG90eXBlLl9jb2xvclBpY2tlckNvbG9yQ2hh
bmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR3JhZGllbnRFZGl0b3IucHJvdG90eXBlLl9h
bmdsZUNoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkdyYWRpZW50RWRpdG9yLnByb3Rv
dHlwZS5fYW5nbGVJbnB1dFZhbHVlRGlkQ2hhbmdlKToKKyAgICAgICAgTmV3IHN0YW5kYWxvbmUg
ZWRpdG9yIGZvciBDU1MgR3JhZGllbnRzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIuY3NzOiBBZGRlZC4KKyAgICAgICAgKC52aXN1
YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LXZhbHVlLWNvbnRhaW5lciA+IC5jb2xvci1ncmFkaWVudC1zd2F0Y2gpOgorICAgICAgICAo
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlz
dWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5jb2xvci1ncmFkaWVudC1zd2F0
Y2g6aG92ZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFj
a2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+
IC5jb2xvci1ncmFkaWVudC1zd2F0Y2g6YWN0aXZlKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUt
cHJvcGVydHktY29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS12YWx1ZS1jb250YWluZXIgPiAuY29sb3ItZ3JhZGllbnQtc3dhdGNoID4gc3Bhbik6Cisg
ICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5kLXBpY2tl
ciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyLmdyYWRpZW50LXZhbHVl
ID4gLmNvbG9yLWdyYWRpZW50LXN3YXRjaCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
dmFsdWUtY29udGFpbmVyLmdyYWRpZW50LXZhbHVlID4gLmNvbG9yLWdyYWRpZW50LXN3YXRjaCAr
IC52YWx1ZS1pbnB1dCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5l
ci5iYWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFp
bmVyID4gLnZhbHVlLWlucHV0KToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1j
b250YWluZXIgPiAudmFsdWUtaW5wdXRbZGlzYWJsZWRdKToKKyAgICAgICAgKC52aXN1YWwtc3R5
bGUtcHJvcGVydHktY29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmFsdWUtdHlwZS1waWNrZXItc2VsZWN0KToKKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2Vy
LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUJhY2tncm91bmRQ
aWNrZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tl
ci5wcm90b3R5cGUuZ2V0IHZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZUJhY2tncm91bmRQaWNrZXIucHJvdG90eXBlLnNldCB2YWx1ZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLnByb3RvdHlwZS5nZXQgc3ludGhlc2l6
ZWRWYWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlj
a2VyLnByb3RvdHlwZS5wYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUJhY2tncm91bmRQaWNrZXIucHJvdG90eXBlLl91cGRhdGVWYWx1ZUlucHV0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIucHJvdG90eXBlLl91
cGRhdGVHcmFkaWVudFN3YXRjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVC
YWNrZ3JvdW5kUGlja2VyLnByb3RvdHlwZS5fZ3JhZGllbnRTd2F0Y2hDbGlja2VkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIucHJvdG90eXBlLl9n
cmFkaWVudEVkaXRvckdyYWRpZW50Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLnByb3RvdHlwZS5fdmFsdWVJbnB1dFZhbHVlQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLnBy
b3RvdHlwZS5fa2V5d29yZFNlbGVjdE1vdXNlRG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLnByb3RvdHlwZS5faGFuZGxlS2V5d29yZENoYW5n
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlci5w
cm90b3R5cGUuX2NyZWF0ZVZhbHVlT3B0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLnByb3RvdHlwZS5fYWRkQWR2YW5jZWRWYWx1ZXMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlci5wcm90b3R5
cGUuX3JlbW92ZUFkdmFuY2VkVmFsdWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUJhY2tncm91bmRQaWNrZXIucHJvdG90eXBlLl90b2dnbGVUYWJiaW5nT2ZTZWxlY3RhYmxl
RWxlbWVudHMpOgorICAgICAgICBWaXN1YWwgcHJvcGVydHkgZWRpdG9yIGZvciB0aGUgQ1NTIGJh
Y2tncm91bmQtaW1hZ2UgcHJvcGVydHkuIFN1cHBvcnRzCisgICAgICAgIGxpbWl0ZWQga2V5d29y
ZHMsIGFzIHdlbGwgYXMgdXJsKCkgYW5kIGdyYWRpZW50cy4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0
b3IucHJvdG90eXBlLnNldCB2YWx1ZSk6CisgICAgICAgIEZpeGVkIHJlZ3VsYXIgZXhwcmVzc2lv
biBwYXJzaW5nIHRvIG5vdCBtYXRjaCBjb21tYXMgaW5zaWRlIHBhcmVudGhlc2lzLgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3Bv
cHVsYXRlQmFja2dyb3VuZFN0eWxlU2VjdGlvbik6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rLmNzczoKKyAgICAgICAgKC52aXN1
YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbms6bm90KC5saW5rLWFsbCkgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWJvcmRlcik6CisgICAgICAgIEZpeGVkIHNwYWNpbmcg
b2YgbGluayBsaW5lLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHls
ZVVSTElucHV0LmpzOiBSZW1vdmVkLgorICAgICAgICBSZXdvcmtlZCBpbnRvIFZpc3VhbFN0eWxl
QmFja2dyb3VuZFBpY2tlci5qcy4KKwogMjAxNS0xMS0xOSAgQnJpYW4gQnVyZyAgPGJidXJnQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiB5YW5rL2tpbGwgc2hvcnRjdXRzIChD
VFJMK1ksIEspIGRvbid0IHdvcmsgaW4gQ29uc29sZSAvIFF1aWNrQ29uc29sZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVk
U3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggNjBjN2ZlOWJiMTlkOWNhODIzZjExZGY2OWVjZjIx
ZmYzYjViOGM3ZS4uMmI1NDJmN2M3Nzg2Nzk0ZGFkYzQyNjZmMWRiNDVkOGFlMGVjNzM3NCAxMDA2
NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAxNDUKemNtZXpMZ3IoeUolWjdOeyReMiM8bFdsRTs3
fUY7IUpkdkxLKkd2ZT9pK2ZAQElwMzZQYkcrPmZfc1BvWmcoaD5hCno9YjlZWkRnYjAjT2BoMip1
LVUhISMkdFBLaEUjQDFoSHsye2g5WlUoMV9nI05oRDMlT2hFa3hZNTxASklad3RncQpkNDUxOWc0
NERqaDRDejF+aWpLKHZvNldaaVljakBqMHN0aWZEO2ZYKgoKZGVsdGEgMjkKbGNtZUJwIVNkK3wl
WjdOeyYzfG9ReEtGTmE8Smc/c2M0NmBNdHkreDFvQi0pQDRwI3NHCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvckdy
YWRpZW50RWRpdGluZ0NvbnRyb2xsZXIuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIu
Y3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGUxYWY5Li4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJy
b3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLmNzcworKysgL2Rldi9udWxsCkBAIC0xLDExNyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotLmdyYWRpZW50LWVkaXRpbmctY29udHJvbGxlciB7Ci0gICAg
d2lkdGg6IDI2MHB4OwotICAgIGhlaWdodDogMTA5cHg7Ci19Ci0KLS5ncmFkaWVudC1lZGl0aW5n
LWNvbnRyb2xsZXIuZWRpdHMtY29sb3IgewotICAgIGhlaWdodDogMzA2cHg7Ci19Ci0KLS5ncmFk
aWVudC1lZGl0aW5nLWNvbnRyb2xsZXIucmFkaWFsLWdyYWRpZW50IHsKLSAgICBoZWlnaHQ6IDc4
cHg7Ci19Ci0KLS5ncmFkaWVudC1lZGl0aW5nLWNvbnRyb2xsZXIuZWRpdHMtY29sb3IucmFkaWFs
LWdyYWRpZW50IHsKLSAgICBoZWlnaHQ6IDI3NXB4OwotfQotCi0uZ3JhZGllbnQtZWRpdGluZy1j
b250cm9sbGVyIHNlbGVjdCB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGxlZnQ6IDE3
cHg7Ci0gICAgdG9wOiA5cHg7Ci0gICAgd2lkdGg6IDIzN3B4OwotCi0gICAgZm9udC1zaXplOiAx
NnB4OwotfQotCi0uZ3JhZGllbnQtZWRpdGluZy1jb250cm9sbGVyIC5ncmFkaWVudC1zbGlkZXIg
ewotICAgIGxlZnQ6IDE2cHg7Ci0gICAgcmlnaHQ6IDI2cHg7Ci0gICAgdG9wOiA0MnB4OwotfQot
Ci0uZ3JhZGllbnQtZWRpdGluZy1jb250cm9sbGVyIC5jb2xvci1waWNrZXIgewotICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKLQotICAgIHRvcDogODZweDsKLSAgICB3aWR0aDogMjAycHg7Ci0gICAg
aGVpZ2h0OiAxNzJweDsKLSAgICBwYWRkaW5nOiAwIDEwcHg7Ci19Ci0KLS5ncmFkaWVudC1lZGl0
aW5nLWNvbnRyb2xsZXIgPiAuY29sb3ItcGlja2VyID4gLnNsaWRlciB7Ci0gICAgdG9wOiAycHg7
Ci0gICAgd2lkdGg6IDE4NnB4OwotfQotCi0uZ3JhZGllbnQtZWRpdGluZy1jb250cm9sbGVyID4g
LmNvbG9yLXBpY2tlciA+IC5icmlnaHRuZXNzIHsKLSAgICBsZWZ0OiAyMTRweDsKLX0KLQotLmdy
YWRpZW50LWVkaXRpbmctY29udHJvbGxlciA+IC5jb2xvci1waWNrZXIgPiAub3BhY2l0eSB7Ci0g
ICAgbGVmdDogMjM3cHg7Ci19Ci0KLS5ncmFkaWVudC1lZGl0aW5nLWNvbnRyb2xsZXIgPiBsYWJl
bCB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogODVweDsKLSAgICByaWdodDog
MTZweDsKLQotICAgIHRleHQtYWxpZ246IHJpZ2h0OwotICAgIGZvbnQtc2l6ZTogMTNweDsKLX0K
LQotLmdyYWRpZW50LWVkaXRpbmctY29udHJvbGxlci5yYWRpYWwtZ3JhZGllbnQgPiBsYWJlbCB7
Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotLmdyYWRpZW50LWVkaXRpbmctY29udHJvbGxlci5l
ZGl0cy1jb2xvciA+IGxhYmVsIHsKLSAgICB0b3A6IDI4M3B4OwotfQotCi0uZ3JhZGllbnQtZWRp
dGluZy1jb250cm9sbGVyID4gbGFiZWwgPiBpbnB1dCB7Ci0gICAgd2lkdGg6IDQ4cHg7Ci0KLSAg
ICBwYWRkaW5nLXJpZ2h0OiA0cHg7Ci0gICAgbWFyZ2luLWxlZnQ6IDVweDsKLQotICAgIGJhY2tn
cm91bmQtY29sb3I6IHdoaXRlOwotCi0gICAgYm9yZGVyLXJhZGl1czogNHB4OwotICAgIGJvcmRl
cjogMXB4IHNvbGlkIGhzbCgwLCAwJSwgNjAlKTsKLSAgICBib3gtc2hhZG93OiBpbnNldCAwIDAg
MXB4IDFweCBoc2woMCwgMCUsIDg5JSk7Ci0gICAgb3V0bGluZTogMDsKLQotICAgIGZvbnQtc2l6
ZTogMTNweDsKLSAgICB0ZXh0LWFsaWduOiByaWdodDsKLX0KLQotLmdyYWRpZW50LWVkaXRpbmct
Y29udHJvbGxlciA+IGxhYmVsLmRyYWctdG8tYWRqdXN0LAotLmdyYWRpZW50LWVkaXRpbmctY29u
dHJvbGxlciA+IGxhYmVsLmRyYWctdG8tYWRqdXN0ID4gaW5wdXQgewotICAgIGN1cnNvcjogY29s
LXJlc2l6ZTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJv
ckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIuanMKaW5kZXggZTFlMTZhNS4uN2ZmMzhlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
Q29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvckdyYWRpZW50RWRp
dGluZ0NvbnRyb2xsZXIuanMKQEAgLTI4LDM0ICsyOCw2IEBAIFdlYkluc3BlY3Rvci5Db2RlTWly
cm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlciA9IGNsYXNzIENvZGVNaXJyb3JHcmFkaWVudEVk
aXRpCiAgICAgY29uc3RydWN0b3IoY29kZU1pcnJvciwgbWFya2VyKQogICAgIHsKICAgICAgICAg
c3VwZXIoY29kZU1pcnJvciwgbWFya2VyKTsKLQotICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5D
b2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5HcmFkaWVudFR5cGVzKSB7Ci0gICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIu
R3JhZGllbnRUeXBlcyA9IHsKLSAgICAgICAgICAgICAgICAibGluZWFyLWdyYWRpZW50Ijogewot
ICAgICAgICAgICAgICAgICAgICB0eXBlOiBXZWJJbnNwZWN0b3IuTGluZWFyR3JhZGllbnQsCi0g
ICAgICAgICAgICAgICAgICAgIGxhYmVsOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxpbmVhciBH
cmFkaWVudCIpLAotICAgICAgICAgICAgICAgICAgICByZXBlYXRzOiBmYWxzZQotICAgICAgICAg
ICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAicmFkaWFsLWdyYWRpZW50IjogewotICAgICAg
ICAgICAgICAgICAgICB0eXBlOiBXZWJJbnNwZWN0b3IuUmFkaWFsR3JhZGllbnQsCi0gICAgICAg
ICAgICAgICAgICAgIGxhYmVsOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGlhbCBHcmFkaWVu
dCIpLAotICAgICAgICAgICAgICAgICAgICByZXBlYXRzOiBmYWxzZQotICAgICAgICAgICAgICAg
IH0sCi0KLSAgICAgICAgICAgICAgICAicmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCI6IHsKLSAg
ICAgICAgICAgICAgICAgICAgdHlwZTogV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50LAotICAg
ICAgICAgICAgICAgICAgICBsYWJlbDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXBlYXRpbmcg
TGluZWFyIEdyYWRpZW50IiksCi0gICAgICAgICAgICAgICAgICAgIHJlcGVhdHM6IHRydWUKLSAg
ICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgInJlcGVhdGluZy1yYWRpYWwtZ3Jh
ZGllbnQiOiB7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGU6IFdlYkluc3BlY3Rvci5SYWRpYWxH
cmFkaWVudCwKLSAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUmVwZWF0aW5nIFJhZGlhbCBHcmFkaWVudCIpLAotICAgICAgICAgICAgICAgICAgICByZXBl
YXRzOiB0cnVlCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfQog
ICAgIH0KIAogICAgIC8vIFB1YmxpYwpAQCAtODYsMTYyICs1OCwyNiBAQCBXZWJJbnNwZWN0b3Iu
Q29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIgPSBjbGFzcyBDb2RlTWlycm9yR3Jh
ZGllbnRFZGl0aQogCiAgICAgcG9wb3ZlcldpbGxQcmVzZW50KHBvcG92ZXIpCiAgICAgewotICAg
ICAgICB0aGlzLl9jb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAg
ICAgICAgdGhpcy5fY29udGFpbmVyLmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Db2RlTWlycm9y
R3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5TdHlsZUNsYXNzTmFtZTsKLQotICAgICAgICB0aGlz
Ll9ncmFkaWVudFR5cGVQaWNrZXIgPSB0aGlzLl9jb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic2VsZWN0IikpOwotICAgICAgICBmb3IgKHZhciB0eXBlIGluIFdl
Ykluc3BlY3Rvci5Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5HcmFkaWVudFR5
cGVzKSB7Ci0gICAgICAgICAgICB2YXIgb3B0aW9uID0gdGhpcy5fZ3JhZGllbnRUeXBlUGlja2Vy
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKTsKLSAgICAgICAg
ICAgIG9wdGlvbi52YWx1ZSA9IHR5cGU7Ci0gICAgICAgICAgICBvcHRpb24uaW5uZXJUZXh0ID0g
V2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLkdyYWRpZW50
VHlwZXNbdHlwZV0ubGFiZWw7CisgICAgICAgIGZ1bmN0aW9uIGhhbmRsZUNvbG9yUGlja2VyVG9n
Z2xlZChldmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgcG9wb3Zlci51cGRhdGUoKTsKICAg
ICAgICAgfQotICAgICAgICB0aGlzLl9ncmFkaWVudFR5cGVQaWNrZXIuYWRkRXZlbnRMaXN0ZW5l
cigiY2hhbmdlIiwgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5fZ3JhZGllbnRTbGlkZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyOwotICAgICAgICB0aGlzLl9jb250YWluZXIuYXBw
ZW5kQ2hpbGQodGhpcy5fZ3JhZGllbnRTbGlkZXIuZWxlbWVudCk7CiAKLSAgICAgICAgdGhpcy5f
Y29sb3JQaWNrZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yUGlja2VyOwotICAgICAgICB0aGlz
Ll9jb2xvclBpY2tlci5jb2xvcldoZWVsLmRpbWVuc2lvbiA9IDE5MDsKLSAgICAgICAgdGhpcy5f
Y29sb3JQaWNrZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIuRXZl
bnQuQ29sb3JDaGFuZ2VkLCB0aGlzLl9jb2xvclBpY2tlckNvbG9yQ2hhbmdlZCwgdGhpcyk7Ci0K
LSAgICAgICAgdmFyIGFuZ2xlTGFiZWwgPSB0aGlzLl9jb250YWluZXIuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKSk7Ci0gICAgICAgIGFuZ2xlTGFiZWwudGV4dENv
bnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFuZ2xlIik7Ci0KLSAgICAgICAgdGhpcy5f
YW5nbGVJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Ci0gICAgICAgIHRo
aXMuX2FuZ2xlSW5wdXQudHlwZSA9ICJ0ZXh0IjsKLSAgICAgICAgdGhpcy5fYW5nbGVJbnB1dC5z
aXplID0gMzsKLSAgICAgICAgdGhpcy5fYW5nbGVJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1
dCIsIHRoaXMpOwotICAgICAgICBhbmdsZUxhYmVsLmFwcGVuZENoaWxkKHRoaXMuX2FuZ2xlSW5w
dXQpOwotCi0gICAgICAgIHZhciBkcmFnVG9BZGp1c3RDb250cm9sbGVyID0gbmV3IFdlYkluc3Bl
Y3Rvci5EcmFnVG9BZGp1c3RDb250cm9sbGVyKHRoaXMpOwotICAgICAgICBkcmFnVG9BZGp1c3RD
b250cm9sbGVyLmVsZW1lbnQgPSBhbmdsZUxhYmVsOwotICAgICAgICBkcmFnVG9BZGp1c3RDb250
cm9sbGVyLmVuYWJsZWQgPSB0cnVlOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZUNTU0NsYXNzRm9y
R3JhZGllbnRUeXBlKCk7Ci0KLSAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gdGhpcy5fY29udGFp
bmVyOworICAgICAgICB0aGlzLl9ncmFkaWVudEVkaXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuR3Jh
ZGllbnRFZGl0b3I7CisgICAgICAgIHRoaXMuX2dyYWRpZW50RWRpdG9yLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkdyYWRpZW50RWRpdG9yLkV2ZW50LkdyYWRpZW50Q2hhbmdlZCwgdGhp
cy5fZ3JhZGllbnRFZGl0b3JHcmFkaWVudENoYW5nZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9n
cmFkaWVudEVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5HcmFkaWVudEVkaXRv
ci5FdmVudC5Db2xvclBpY2tlclRvZ2dsZWQsIGhhbmRsZUNvbG9yUGlja2VyVG9nZ2xlZCwgdGhp
cyk7CisgICAgICAgIHBvcG92ZXIuY29udGVudCA9IHRoaXMuX2dyYWRpZW50RWRpdG9yLmVsZW1l
bnQ7CiAgICAgfQogCiAgICAgcG9wb3ZlckRpZFByZXNlbnQocG9wb3ZlcikKICAgICB7Ci0gICAg
ICAgIHRoaXMuX2dyYWRpZW50U2xpZGVyLnN0b3BzID0gdGhpcy52YWx1ZS5zdG9wczsKLQotICAg
ICAgICBpZiAodGhpcy52YWx1ZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVu
dCkgewotICAgICAgICAgICAgdGhpcy5fZ3JhZGllbnRUeXBlUGlja2VyLnZhbHVlID0gdGhpcy52
YWx1ZS5yZXBlYXRzID8gInJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQiIDogImxpbmVhci1ncmFk
aWVudCI7Ci0gICAgICAgICAgICB0aGlzLl9hbmdsZUlucHV0LnZhbHVlID0gdGhpcy52YWx1ZS5h
bmdsZSArICJcdTAwQjAiOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2dyYWRp
ZW50VHlwZVBpY2tlci52YWx1ZSA9IHRoaXMudmFsdWUucmVwZWF0cyA/ICJyZXBlYXRpbmctcmFk
aWFsLWdyYWRpZW50IiA6ICJyYWRpYWwtZ3JhZGllbnQiOwotCi0gICAgICAgIHRoaXMuX2dyYWRp
ZW50U2xpZGVyLmRlbGVnYXRlID0gdGhpczsKLSAgICB9Ci0KLSAgICAvLyBQcm90ZWN0ZWQKLQot
ICAgIGhhbmRsZUV2ZW50KGV2ZW50KQotICAgIHsKLSAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09
ICJpbnB1dCIpCi0gICAgICAgICAgICB0aGlzLl9oYW5kbGVJbnB1dEV2ZW50KGV2ZW50KTsKLSAg
ICAgICAgZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gImNoYW5nZSIpCi0gICAgICAgICAgICB0aGlz
Ll9oYW5kbGVDaGFuZ2VFdmVudChldmVudCk7Ci0gICAgfQotCi0gICAgZ3JhZGllbnRTbGlkZXJT
dG9wc0RpZENoYW5nZShncmFkaWVudFNsaWRlcikKLSAgICB7Ci0gICAgICAgIHRoaXMudGV4dCA9
IHRoaXMudmFsdWUudG9TdHJpbmcoKTsKLSAgICB9Ci0KLSAgICBncmFkaWVudFNsaWRlclN0b3BX
YXNTZWxlY3RlZChncmFkaWVudFNsaWRlciwgc3RvcCkKLSAgICB7Ci0gICAgICAgIHZhciBzZWxl
Y3RlZFN0b3AgPSBncmFkaWVudFNsaWRlci5zZWxlY3RlZFN0b3A7Ci0KLSAgICAgICAgaWYgKHNl
bGVjdGVkU3RvcCAmJiAhdGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNw
ZWN0b3IuQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIuRWRpdHNDb2xvckNsYXNz
TmFtZSkpIHsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9j
b2xvclBpY2tlci5lbGVtZW50KTsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5F
ZGl0c0NvbG9yQ2xhc3NOYW1lKTsKLSAgICAgICAgICAgIHRoaXMuX2NvbG9yUGlja2VyLmNvbG9y
ID0gc2VsZWN0ZWRTdG9wLmNvbG9yOwotICAgICAgICB9IGVsc2UgaWYgKCFzZWxlY3RlZFN0b3Ap
IHsKLSAgICAgICAgICAgIHRoaXMuX2NvbG9yUGlja2VyLmVsZW1lbnQucmVtb3ZlKCk7Ci0gICAg
ICAgICAgICB0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuQ29k
ZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIuRWRpdHNDb2xvckNsYXNzTmFtZSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBFbnN1cmUgdGhlIGFuZ2xlIGlucHV0IGlzIG5vdCBmb2N1
c2VkIHNpbmNlLCBpZiBpdCB3ZXJlLCBpdCdkIG1ha2UgYSBzY3JvbGxiYXIgYXBwZWFyIGFzIHdl
Ci0gICAgICAgIC8vIGFuaW1hdGUgdGhlIHBvcG92ZXIncyBmcmFtZSB0byBmaXQgaXRzIG5ldyBj
b250ZW50LgotICAgICAgICB0aGlzLl9hbmdsZUlucHV0LmJsdXIoKTsKLQotICAgICAgICB0aGlz
LnBvcG92ZXIudXBkYXRlKCk7Ci0gICAgfQotCi0gICAgZHJhZ1RvQWRqdXN0Q29udHJvbGxlcldh
c0FkanVzdGVkQnlBbW91bnQoZHJhZ1RvQWRqdXN0Q29udHJvbGxlciwgYW1vdW50KQotICAgIHsK
LSAgICAgICAgdmFyIGFuZ2xlID0gcGFyc2VGbG9hdCh0aGlzLl9hbmdsZUlucHV0LnZhbHVlKSAr
IGFtb3VudDsKLSAgICAgICAgaWYgKE1hdGgucm91bmQoYW5nbGUpICE9PSBhbmdsZSkKLSAgICAg
ICAgICAgIGFuZ2xlID0gYW5nbGUudG9GaXhlZCgxKTsKLQotICAgICAgICB0aGlzLl9hbmdsZUlu
cHV0LnZhbHVlID0gYW5nbGU7Ci0gICAgICAgIHRoaXMuX2FuZ2xlSW5wdXRWYWx1ZURpZENoYW5n
ZShhbmdsZSk7CisgICAgICAgIHRoaXMuX2dyYWRpZW50RWRpdG9yLmdyYWRpZW50ID0gdGhpcy52
YWx1ZTsKICAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfaGFuZGxlSW5wdXRFdmVudChl
dmVudCkKKyAgICBfZ3JhZGllbnRFZGl0b3JHcmFkaWVudENoYW5nZWQoZXZlbnQpCiAgICAgewot
ICAgICAgICB2YXIgYW5nbGUgPSBwYXJzZUZsb2F0KHRoaXMuX2FuZ2xlSW5wdXQudmFsdWUpOwot
ICAgICAgICBpZiAoaXNOYU4oYW5nbGUpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IHRoaXMuX2FuZ2xlSW5wdXRWYWx1ZURpZENoYW5nZShhbmdsZSk7Ci0gICAgfQotCi0gICAgX2Fu
Z2xlSW5wdXRWYWx1ZURpZENoYW5nZShhbmdsZSkKLSAgICB7Ci0gICAgICAgIHRoaXMudmFsdWUu
YW5nbGUgPSBhbmdsZTsKLSAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy52YWx1ZS50b1N0cmluZygp
OwotCi0gICAgICAgIHZhciBtYXRjaGVzID0gdGhpcy5fYW5nbGVJbnB1dC52YWx1ZS5tYXRjaCgv
XHUwMEIwL2cpOwotICAgICAgICBpZiAoIW1hdGNoZXMgfHwgbWF0Y2hlcy5sZW5ndGggIT09IDEp
IHsKLSAgICAgICAgICAgIHZhciBzZWxlY3Rpb25TdGFydCA9IHRoaXMuX2FuZ2xlSW5wdXQuc2Vs
ZWN0aW9uU3RhcnQ7Ci0gICAgICAgICAgICB0aGlzLl9hbmdsZUlucHV0LnZhbHVlID0gYW5nbGUg
KyAiXHUwMEIwIjsKLSAgICAgICAgICAgIHRoaXMuX2FuZ2xlSW5wdXQuc2VsZWN0aW9uU3RhcnQg
PSBzZWxlY3Rpb25TdGFydDsKLSAgICAgICAgICAgIHRoaXMuX2FuZ2xlSW5wdXQuc2VsZWN0aW9u
RW5kID0gc2VsZWN0aW9uU3RhcnQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBfaGFuZGxlQ2hh
bmdlRXZlbnQoZXZlbnQpCi0gICAgewotICAgICAgICB2YXIgZGVzY3JpcHRvciA9IFdlYkluc3Bl
Y3Rvci5Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5HcmFkaWVudFR5cGVzW3Ro
aXMuX2dyYWRpZW50VHlwZVBpY2tlci52YWx1ZV07Ci0gICAgICAgIGlmICghKHRoaXMudmFsdWUg
aW5zdGFuY2VvZiBkZXNjcmlwdG9yLnR5cGUpKSB7Ci0gICAgICAgICAgICBpZiAoZGVzY3JpcHRv
ci50eXBlID09PSBXZWJJbnNwZWN0b3IuTGluZWFyR3JhZGllbnQpIHsKLSAgICAgICAgICAgICAg
ICB0aGlzLnZhbHVlID0gbmV3IFdlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVudCgxODAsIHRoaXMu
dmFsdWUuc3RvcHMpOwotICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlSW5wdXQudmFsdWUgPSAi
MTgwXHUwMEIwIjsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRoaXMudmFs
dWUgPSBuZXcgV2ViSW5zcGVjdG9yLlJhZGlhbEdyYWRpZW50KCIiLCB0aGlzLnZhbHVlLnN0b3Bz
KTsKLQotICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ1NTQ2xhc3NGb3JHcmFkaWVudFR5cGUoKTsK
LSAgICAgICAgICAgIHRoaXMucG9wb3Zlci51cGRhdGUoKTsKLSAgICAgICAgfQotICAgICAgICB0
aGlzLnZhbHVlLnJlcGVhdHMgPSBkZXNjcmlwdG9yLnJlcGVhdHM7Ci0gICAgICAgIHRoaXMudGV4
dCA9IHRoaXMudmFsdWUudG9TdHJpbmcoKTsKLSAgICB9Ci0KLSAgICBfY29sb3JQaWNrZXJDb2xv
ckNoYW5nZWQoZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl9ncmFkaWVudFNsaWRlci5zZWxl
Y3RlZFN0b3AuY29sb3IgPSBldmVudC50YXJnZXQuY29sb3I7Ci0gICAgICAgIHRoaXMuX2dyYWRp
ZW50U2xpZGVyLnN0b3BzID0gdGhpcy52YWx1ZS5zdG9wczsKLSAgICAgICAgdGhpcy50ZXh0ID0g
dGhpcy52YWx1ZS50b1N0cmluZygpOwotICAgIH0KLQotICAgIF91cGRhdGVDU1NDbGFzc0Zvckdy
YWRpZW50VHlwZSgpCi0gICAgewotICAgICAgICBpZiAodGhpcy52YWx1ZSBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5MaW5lYXJHcmFkaWVudCkKLSAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5j
bGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29u
dHJvbGxlci5SYWRpYWxHcmFkaWVudENsYXNzTmFtZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHRoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Db2RlTWlycm9y
R3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5SYWRpYWxHcmFkaWVudENsYXNzTmFtZSk7CisgICAg
ICAgIHRoaXMudmFsdWUgPSBldmVudC5kYXRhLmdyYWRpZW50OwogICAgIH0KIH07Ci0KLVdlYklu
c3BlY3Rvci5Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5TdHlsZUNsYXNzTmFt
ZSA9ICJncmFkaWVudC1lZGl0aW5nLWNvbnRyb2xsZXIiOwotV2ViSW5zcGVjdG9yLkNvZGVNaXJy
b3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLkVkaXRzQ29sb3JDbGFzc05hbWUgPSAiZWRpdHMt
Y29sb3IiOwotV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVy
LlJhZGlhbEdyYWRpZW50Q2xhc3NOYW1lID0gInJhZGlhbC1ncmFkaWVudCI7Ci0KLS8vIExhemls
eSBwb3B1bGF0ZWQgaW4gdGhlIFdlYkluc3BlY3Rvci5Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5n
Q29udHJvbGxlciBjb25zdHJ1Y3Rvci4KLS8vIEl0IG5lZWRzIHRvIGJlIGxhenkgdG8gdXNlIFVJ
U3RyaW5nIGFmdGVyIE1haW4uanMgYW5kIGxvY2FsaXplZFN0cmluZ3MuanMgbG9hZHMuCi1XZWJJ
bnNwZWN0b3IuQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIuR3JhZGllbnRUeXBl
cyA9IG51bGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0
bWwKaW5kZXggNmJlNDJjMi4uOGI1ZjcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtODcsNiArODcsNyBAQAogICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRm9udFJlc291cmNlQ29udGVudFZpZXcuY3NzIj4KICAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0Zvcm1hdHRlZFZhbHVlLmNzcyI+
CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9Hb1RvTGluZURpYWxvZy5j
c3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvR3JhZGllbnRFZGl0
b3IuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0dyYWRpZW50
U2xpZGVyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9IaWVy
YXJjaGljYWxQYXRoQ29tcG9uZW50LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJWaWV3cy9Ib3Zlck1lbnUuY3NzIj4KQEAgLTE2NCw2ICsxNjUsNyBAQAogICAgIDxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVHlwZVRyZWVFbGVtZW50LmNzcyI+CiAgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9UeXBlVHJlZVZpZXcuY3NzIj4KICAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1ZhcmlhYmxlcy5jc3MiPgorICAg
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVCYWNrZ3JvdW5k
UGlja2VyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1
YWxTdHlsZUNvbG9yUGlja2VyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJWaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5jc3MiPgogICAg
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFu
ZWwuY3NzIj4KQEAgLTE4MSw3ICsxODMsNiBAQAogCiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJDb250cm9sbGVycy9Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRyb2xsZXIuY3NzIj4K
ICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkNvbnRyb2xsZXJzL0NvZGVNaXJyb3JE
cmFnVG9BZGp1c3ROdW1iZXJDb250cm9sbGVyLmNzcyI+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSJDb250cm9sbGVycy9Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxl
ci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iQ29udHJvbGxlcnMvQ29k
ZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLmNzcyI+CiAKICAgICA8c2NyaXB0IHNyYz0i
RXh0ZXJuYWwvQ29kZU1pcnJvci9jb2RlbWlycm9yLmpzIj48L3NjcmlwdD4KQEAgLTQ3MCw2ICs0
NzEsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9HZW5lcmFsVHJlZUVsZW1lbnRQYXRoQ29t
cG9uZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvR2VuZXJpY1Jlc291
cmNlQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Hb1Rv
TGluZURpYWxvZy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0dyYWRpZW50
RWRpdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvR3JhZGllbnRTbGlk
ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9IaWVyYXJjaGljYWxQYXRo
TmF2aWdhdGlvbkl0ZW0uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Ib3Zl
ck1lbnUuanMiPjwvc2NyaXB0PgpAQCAtNTY2LDYgKzU2OCw3IEBACiAKICAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVDb2xvclBpY2tlci5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0
ZWRLZXl3b3JkRWRpdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlz
dWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5qcyI+PC9zY3JpcHQ+CkBAIC01ODMsNyArNTg2
LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVz
Um93LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVUaW1p
bmdFZGl0b3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHls
ZVVuaXRTbGlkZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxT
dHlsZVVSTElucHV0LmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVy
cy9Bbm5vdGF0b3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9D
b2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0dyYWRpZW50LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0dyYWRpZW50LmpzCmluZGV4
IDNlNGZmNmMuLmEwOTRmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9HcmFkaWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvR3JhZGllbnQuanMKQEAgLTM5LDEwICszOSw4IEBAIFdlYklu
c3BlY3Rvci5HcmFkaWVudCA9IHsKICAgICAgICAgICAgIHR5cGUgPSBXZWJJbnNwZWN0b3IuR3Jh
ZGllbnQuVHlwZXMuTGluZWFyOwogICAgICAgICBlbHNlIGlmICh0eXBlU3RyaW5nLmluZGV4T2Yo
V2ViSW5zcGVjdG9yLkdyYWRpZW50LlR5cGVzLlJhZGlhbCkgIT09IC0xKQogICAgICAgICAgICAg
dHlwZSA9IFdlYkluc3BlY3Rvci5HcmFkaWVudC5UeXBlcy5SYWRpYWw7Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgY29uc29sZS5lcnJvcigiQ291bGRuJ3QgcGFyc2UgYW5nbGUgXCIiICsg
dHlwZVN0cmluZyArICJcIiIpOworICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gbnVs
bDsKLSAgICAgICAgfQogCiAgICAgICAgIHZhciBjb21wb25lbnRzID0gW107CiAgICAgICAgIHZh
ciBjdXJyZW50UGFyYW1zID0gW107CkBAIC0xMTIsMTAgKzExMCw4IEBAIFdlYkluc3BlY3Rvci5H
cmFkaWVudCA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAKLSAgICAgICAgaWYgKCFz
dG9wcy5sZW5ndGgpIHsKLSAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkNvdWxkbid0IHBhcnNl
IGFueSBzdG9wcyIpOworICAgICAgICBpZiAoIXN0b3BzLmxlbmd0aCkKICAgICAgICAgICAgIHJl
dHVybiBudWxsOwotICAgICAgICB9CiAKICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGNvdW50ID0g
c3RvcHMubGVuZ3RoOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICAgICAgdmFyIHN0b3AgPSBz
dG9wc1tpXTsKQEAgLTE5MCw3ICsxODYsNiBAQCBXZWJJbnNwZWN0b3IuTGluZWFyR3JhZGllbnQg
PSBjbGFzcyBMaW5lYXJHcmFkaWVudAogICAgICAgICAgICAgICAgIGFuZ2xlID0gMzE1OwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICBjb25zb2xlLmVycm9yKCJDb3VsZG4ndCBwYXJzZSBhbmdsZSBcInRvICIgKyBjb21wb25lbnRz
WzBdLmpvaW4oIiAiKSArICJcIiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgY29tcG9uZW50cy5zaGlmdCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JhZGllbnRFZGl0b3Iu
Y3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JhZGllbnRF
ZGl0b3IuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NDYzMTgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9HcmFkaWVudEVkaXRvci5jc3MKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBEZXZpbiBSb3Vzc28gPGRjcm91c3NvK3dlYmtpdEBnbWFpbC5jb20+LiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisuZ3JhZGllbnQtZWRpdG9yIHsKKyAgICBwb3NpdGlv
bjogcmVsYXRpdmU7CisgICAgbWFyZ2luOiA1cHggMTFweDsKKyAgICBwYWRkaW5nLWJvdHRvbTog
NDVweDsKK30KKworLmdyYWRpZW50LWVkaXRvci5yYWRpYWwtZ3JhZGllbnQgeworICAgIHBhZGRp
bmctYm90dG9tOiAxNXB4OworfQorCisuZ3JhZGllbnQtZWRpdG9yLmVkaXRpbmctY29sb3Igewor
ICAgIHBhZGRpbmctYm90dG9tOiAzMHB4OworfQorCisuZ3JhZGllbnQtZWRpdG9yLnJhZGlhbC1n
cmFkaWVudC5lZGl0aW5nLWNvbG9yIHsKKyAgICBwYWRkaW5nLWJvdHRvbTogMDsKK30KKworLmdy
YWRpZW50LWVkaXRvciA+IC5ncmFkaWVudC10eXBlLXNlbGVjdCB7CisgICAgd2lkdGg6IDIzN3B4
OworICAgIG1hcmdpbi1sZWZ0OiAxcHg7CisgICAgZm9udC1zaXplOiAxNnB4OworfQorCisuZ3Jh
ZGllbnQtZWRpdG9yID4gLmdyYWRpZW50LXNsaWRlciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZl
OworICAgIGxlZnQ6IGF1dG87CisgICAgbWFyZ2luLXRvcDogN3B4OworfQorCisuZ3JhZGllbnQt
ZWRpdG9yID4gLmNvbG9yLXBpY2tlciB7CisgICAgd2lkdGg6IDIzOHB4OworICAgIGhlaWdodDog
YXV0bzsKKyAgICBtYXJnaW4tdG9wOiAyNXB4OworICAgIHBhZGRpbmc6IDA7Cit9CisKKy5ncmFk
aWVudC1lZGl0b3IgPiAuY29sb3ItcGlja2VyID4gLnNsaWRlciB7CisgICAgdG9wOiAycHg7Cisg
ICAgd2lkdGg6IDE4NnB4OworfQorCisuZ3JhZGllbnQtZWRpdG9yID4gLmNvbG9yLXBpY2tlciA+
IC5icmlnaHRuZXNzIHsKKyAgICBsZWZ0OiAyMDJweDsKK30KKworLmdyYWRpZW50LWVkaXRvciA+
IC5jb2xvci1waWNrZXIgPiAub3BhY2l0eSB7CisgICAgbGVmdDogMjI4cHg7Cit9CisKKy5ncmFk
aWVudC1lZGl0b3IgPiAuZ3JhZGllbnQtYW5nbGUgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICByaWdodDogMDsKKyAgICBib3R0b206IDA7CisgICAgdGV4dC1hbGlnbjogcmlnaHQ7Cisg
ICAgZm9udC1zaXplOiAxM3B4OworfQorCisuZ3JhZGllbnQtZWRpdG9yLnJhZGlhbC1ncmFkaWVu
dCA+IC5ncmFkaWVudC1hbmdsZSB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLmdyYWRpZW50
LWVkaXRvciA+IC5ncmFkaWVudC1hbmdsZSA+IGlucHV0IHsKKyAgICB3aWR0aDogNDhweDsKKyAg
ICBtYXJnaW4tbGVmdDogNXB4OworICAgIHBhZGRpbmctcmlnaHQ6IDRweDsKKyAgICB0ZXh0LWFs
aWduOiByaWdodDsKKyAgICBmb250LXNpemU6IDEzcHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
d2hpdGU7CisgICAgYm9yZGVyLXJhZGl1czogNHB4OworICAgIGJvcmRlcjogMXB4IHNvbGlkIGhz
bCgwLCAwJSwgNjAlKTsKKyAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMXB4IDFweCBoc2woMCwg
MCUsIDg5JSk7CisgICAgb3V0bGluZTogbm9uZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyYWRpZW50RWRpdG9yLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JhZGllbnRFZGl0b3IuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQxNzAxZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyYWRpZW50RWRp
dG9yLmpzCkBAIC0wLDAgKzEsMjI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBEZXZpbiBS
b3Vzc28gPGRjcm91c3NvK3dlYmtpdEBnbWFpbC5jb20+LiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCitXZWJJbnNwZWN0b3IuR3JhZGllbnRFZGl0b3IgPSBjbGFzcyBHcmFkaWVudEVk
aXRvciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisg
ICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJncmFkaWVudC1lZGl0b3IiKTsKKworICAgICAgICB0aGlzLl9ncmFkaWVudCA9IG51bGw7
CisgICAgICAgIHRoaXMuX2dyYWRpZW50VHlwZXMgPSB7CisgICAgICAgICAgICAibGluZWFyLWdy
YWRpZW50IjogeworICAgICAgICAgICAgICAgIHR5cGU6IFdlYkluc3BlY3Rvci5MaW5lYXJHcmFk
aWVudCwKKyAgICAgICAgICAgICAgICBsYWJlbDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMaW5l
YXIgR3JhZGllbnQiKSwKKyAgICAgICAgICAgICAgICByZXBlYXRzOiBmYWxzZQorICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICJyYWRpYWwtZ3JhZGllbnQiOiB7CisgICAgICAgICAgICAgICAg
dHlwZTogV2ViSW5zcGVjdG9yLlJhZGlhbEdyYWRpZW50LAorICAgICAgICAgICAgICAgIGxhYmVs
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGlhbCBHcmFkaWVudCIpLAorICAgICAgICAgICAg
ICAgIHJlcGVhdHM6IGZhbHNlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInJlcGVhdGlu
Zy1saW5lYXItZ3JhZGllbnQiOiB7CisgICAgICAgICAgICAgICAgdHlwZTogV2ViSW5zcGVjdG9y
LkxpbmVhckdyYWRpZW50LAorICAgICAgICAgICAgICAgIGxhYmVsOiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlJlcGVhdGluZyBMaW5lYXIgR3JhZGllbnQiKSwKKyAgICAgICAgICAgICAgICByZXBl
YXRzOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInJlcGVhdGluZy1yYWRpYWwt
Z3JhZGllbnQiOiB7CisgICAgICAgICAgICAgICAgdHlwZTogV2ViSW5zcGVjdG9yLlJhZGlhbEdy
YWRpZW50LAorICAgICAgICAgICAgICAgIGxhYmVsOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJl
cGVhdGluZyBSYWRpYWwgR3JhZGllbnQiKSwKKyAgICAgICAgICAgICAgICByZXBlYXRzOiB0cnVl
CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIHRoaXMuX2VkaXRpbmdDb2xvciA9
IGZhbHNlOworCisgICAgICAgIHRoaXMuX2dyYWRpZW50VHlwZVBpY2tlciA9IHRoaXMuX2VsZW1l
bnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0IikpOworICAgICAg
ICB0aGlzLl9ncmFkaWVudFR5cGVQaWNrZXIuY2xhc3NMaXN0LmFkZCgiZ3JhZGllbnQtdHlwZS1z
ZWxlY3QiKTsKKyAgICAgICAgZm9yIChsZXQgdHlwZSBpbiB0aGlzLl9ncmFkaWVudFR5cGVzKSB7
CisgICAgICAgICAgICBsZXQgb3B0aW9uID0gdGhpcy5fZ3JhZGllbnRUeXBlUGlja2VyLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKTsKKyAgICAgICAgICAgIG9w
dGlvbi52YWx1ZSA9IHR5cGU7CisgICAgICAgICAgICBvcHRpb24udGV4dCA9IHRoaXMuX2dyYWRp
ZW50VHlwZXNbdHlwZV0ubGFiZWw7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fZ3JhZGllbnRU
eXBlUGlja2VyLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX2dyYWRpZW50VHlwZUNo
YW5nZWQuYmluZCh0aGlzKSk7CisKKyAgICAgICAgdGhpcy5fZ3JhZGllbnRTbGlkZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyKHRoaXMpOworICAgICAgICB0aGlzLl9lbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX2dyYWRpZW50U2xpZGVyLmVsZW1lbnQpOworCisgICAgICAgIHRo
aXMuX2NvbG9yUGlja2VyID0gbmV3IFdlYkluc3BlY3Rvci5Db2xvclBpY2tlcjsKKyAgICAgICAg
dGhpcy5fY29sb3JQaWNrZXIuY29sb3JXaGVlbC5kaW1lbnNpb24gPSAxOTA7CisgICAgICAgIHRo
aXMuX2NvbG9yUGlja2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbG9yUGlja2Vy
LkV2ZW50LkNvbG9yQ2hhbmdlZCwgdGhpcy5fY29sb3JQaWNrZXJDb2xvckNoYW5nZWQsIHRoaXMp
OworCisgICAgICAgIGxldCBhbmdsZUxhYmVsID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpKTsKKyAgICAgICAgYW5nbGVMYWJlbC5jbGFz
c0xpc3QuYWRkKCJncmFkaWVudC1hbmdsZSIpOworICAgICAgICBhbmdsZUxhYmVsLmFwcGVuZChX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFuZ2xlIikpOworCisgICAgICAgIHRoaXMuX2FuZ2xlSW5w
dXQgPSBhbmdsZUxhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0
IikpOworICAgICAgICB0aGlzLl9hbmdsZUlucHV0LnR5cGUgPSAidGV4dCI7CisgICAgICAgIHRo
aXMuX2FuZ2xlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCB0aGlzLl9hbmdsZUNoYW5n
ZWQuYmluZCh0aGlzKSk7CisKKyAgICAgICAgbGV0IGRyYWdUb0FkanVzdENvbnRyb2xsZXIgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRyYWdUb0FkanVzdENvbnRyb2xsZXIodGhpcyk7CisgICAgICAgIGRy
YWdUb0FkanVzdENvbnRyb2xsZXIuZWxlbWVudCA9IGFuZ2xlTGFiZWw7CisgICAgICAgIGRyYWdU
b0FkanVzdENvbnRyb2xsZXIuZW5hYmxlZCA9IHRydWU7CisgICAgfQorCisgICAgZ2V0IGVsZW1l
bnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CisgICAgfQorCisgICAg
c2V0IGdyYWRpZW50KGdyYWRpZW50KQorICAgIHsKKyAgICAgICAgaWYgKCFncmFkaWVudCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjb25zdCBpc0xpbmVhciA9IGdyYWRpZW50IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50OworICAgICAgICBjb25zdCBpc1Jh
ZGlhbCA9IGdyYWRpZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJhZGlhbEdyYWRpZW50Owor
ICAgICAgICBjb25zb2xlLmFzc2VydChpc0xpbmVhciB8fCBpc1JhZGlhbCk7CisgICAgICAgIGlm
ICghaXNMaW5lYXIgJiYgIWlzUmFkaWFsKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IHRoaXMuX2dyYWRpZW50ID0gZ3JhZGllbnQ7CisgICAgICAgIHRoaXMuX2dyYWRpZW50U2xpZGVy
LnN0b3BzID0gdGhpcy5fZ3JhZGllbnQuc3RvcHM7CisgICAgICAgIGlmIChpc0xpbmVhcikgewor
ICAgICAgICAgICAgdGhpcy5fZ3JhZGllbnRUeXBlUGlja2VyLnZhbHVlID0gdGhpcy5fZ3JhZGll
bnQucmVwZWF0cyA/ICJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50IiA6ICJsaW5lYXItZ3JhZGll
bnQiOworICAgICAgICAgICAgdGhpcy5fYW5nbGVJbnB1dC52YWx1ZSA9IHRoaXMuX2dyYWRpZW50
LmFuZ2xlICsgIlx1MDBCMCI7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGhpcy5fZ3Jh
ZGllbnRUeXBlUGlja2VyLnZhbHVlID0gdGhpcy5fZ3JhZGllbnQucmVwZWF0cyA/ICJyZXBlYXRp
bmctcmFkaWFsLWdyYWRpZW50IiA6ICJyYWRpYWwtZ3JhZGllbnQiOworCisgICAgICAgIHRoaXMu
X3VwZGF0ZUNTU0NsYXNzRm9yR3JhZGllbnRUeXBlKCk7CisgICAgfQorCisgICAgZ2V0IGdyYWRp
ZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9ncmFkaWVudDsKKyAgICB9CisKKyAg
ICAvLyBQcm90ZWN0ZWQKKworICAgIGdyYWRpZW50U2xpZGVyU3RvcHNEaWRDaGFuZ2UoZ3JhZGll
bnRTbGlkZXIpCisgICAgeworICAgICAgICB0aGlzLl9ncmFkaWVudC5zdG9wcyA9IGdyYWRpZW50
U2xpZGVyLnN0b3BzOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5HcmFkaWVudEVkaXRvci5FdmVudC5HcmFkaWVudENoYW5nZWQsIHtncmFkaWVu
dDogdGhpcy5fZ3JhZGllbnR9KTsKKyAgICB9CisKKyAgICBncmFkaWVudFNsaWRlclN0b3BXYXNT
ZWxlY3RlZChncmFkaWVudFNsaWRlciwgc3RvcCkKKyAgICB7CisgICAgICAgIGNvbnN0IHNlbGVj
dGVkU3RvcCA9IGdyYWRpZW50U2xpZGVyLnNlbGVjdGVkU3RvcDsKKyAgICAgICAgaWYgKHNlbGVj
dGVkU3RvcCAmJiAhdGhpcy5fZWRpdGluZ0NvbG9yKSB7CisgICAgICAgICAgICB0aGlzLl9lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbG9yUGlja2VyLmVsZW1lbnQpOworICAgICAgICAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJlZGl0aW5nLWNvbG9yIik7CisgICAgICAgICAg
ICB0aGlzLl9jb2xvclBpY2tlci5jb2xvciA9IHNlbGVjdGVkU3RvcC5jb2xvcjsKKyAgICAgICAg
ICAgIHRoaXMuX2VkaXRpbmdDb2xvciA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAoIXNlbGVj
dGVkU3RvcCkgeworICAgICAgICAgICAgdGhpcy5fY29sb3JQaWNrZXIuZWxlbWVudC5yZW1vdmUo
KTsKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZWRpdGluZy1j
b2xvciIpOworICAgICAgICAgICAgdGhpcy5fZWRpdGluZ0NvbG9yID0gZmFsc2U7CisgICAgICAg
IH0KKworICAgICAgICAvLyBFbnN1cmUgdGhlIGFuZ2xlIGlucHV0IGlzIG5vdCBmb2N1c2VkIHNp
bmNlLCBpZiBpdCB3ZXJlLCBpdCdkIG1ha2UgYSBzY3JvbGxiYXIgYXBwZWFyIGFzIHdlCisgICAg
ICAgIC8vIGFuaW1hdGUgdGhlIHBvcG92ZXIncyBmcmFtZSB0byBmaXQgaXRzIG5ldyBjb250ZW50
LgorICAgICAgICB0aGlzLl9hbmdsZUlucHV0LmJsdXIoKTsKKworICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuR3JhZGllbnRFZGl0b3IuRXZlbnQuQ29s
b3JQaWNrZXJUb2dnbGVkKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLkdyYWRpZW50RWRpdG9yLkV2ZW50LkdyYWRpZW50Q2hhbmdlZCwge2dyYWRp
ZW50OiB0aGlzLl9ncmFkaWVudH0pOworICAgIH0KKworICAgIGRyYWdUb0FkanVzdENvbnRyb2xs
ZXJXYXNBZGp1c3RlZEJ5QW1vdW50KGRyYWdUb0FkanVzdENvbnRyb2xsZXIsIGFtb3VudCkKKyAg
ICB7CisgICAgICAgIGNvbnN0IGFuZ2xlSW5wdXRWYWx1ZSA9IHBhcnNlRmxvYXQodGhpcy5fYW5n
bGVJbnB1dC52YWx1ZSk7CisgICAgICAgIGlmIChpc05hTihhbmdsZUlucHV0VmFsdWUpKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBhbmdsZSA9IGFuZ2xlSW5wdXRWYWx1ZSAr
IGFtb3VudDsKKyAgICAgICAgaWYgKE1hdGgucm91bmQoYW5nbGUpICE9PSBhbmdsZSkKKyAgICAg
ICAgICAgIGFuZ2xlID0gYW5nbGUudG9GaXhlZCgxKTsKKworICAgICAgICB0aGlzLl9hbmdsZUlu
cHV0LnZhbHVlID0gYW5nbGU7CisgICAgICAgIHRoaXMuX2FuZ2xlSW5wdXRWYWx1ZURpZENoYW5n
ZShhbmdsZSk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX3VwZGF0ZUNTU0NsYXNz
Rm9yR3JhZGllbnRUeXBlKCkKKyAgICB7CisgICAgICAgIGNvbnN0IGlzUmFkaWFsID0gdGhpcy5f
Z3JhZGllbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmFkaWFsR3JhZGllbnQ7CisgICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgicmFkaWFsLWdyYWRpZW50IiwgaXNSYWRp
YWwpOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5HcmFkaWVudEVkaXRvci5FdmVudC5Db2xvclBpY2tlclRvZ2dsZWQpOworICAgIH0KKworICAg
IF9ncmFkaWVudFR5cGVDaGFuZ2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAgY29uc3QgZGVzY3Jp
cHRvciA9IHRoaXMuX2dyYWRpZW50VHlwZXNbdGhpcy5fZ3JhZGllbnRUeXBlUGlja2VyLnZhbHVl
XTsKKyAgICAgICAgaWYgKCEodGhpcy5fZ3JhZGllbnQgaW5zdGFuY2VvZiBkZXNjcmlwdG9yLnR5
cGUpKSB7CisgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci50eXBlID09PSBXZWJJbnNwZWN0b3Iu
TGluZWFyR3JhZGllbnQpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9ncmFkaWVudCA9IG5ldyBX
ZWJJbnNwZWN0b3IuTGluZWFyR3JhZGllbnQoMTgwLCB0aGlzLl9ncmFkaWVudC5zdG9wcyk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fYW5nbGVJbnB1dC52YWx1ZSA9ICIxODBcdTAwQjAiOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdGhpcy5fZ3JhZGllbnQgPSBuZXcgV2Vi
SW5zcGVjdG9yLlJhZGlhbEdyYWRpZW50KCIiLCB0aGlzLl9ncmFkaWVudC5zdG9wcyk7CisKKyAg
ICAgICAgICAgIHRoaXMuX3VwZGF0ZUNTU0NsYXNzRm9yR3JhZGllbnRUeXBlKCk7CisgICAgICAg
IH0KKyAgICAgICAgdGhpcy5fZ3JhZGllbnQucmVwZWF0cyA9IGRlc2NyaXB0b3IucmVwZWF0czsK
KworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuR3Jh
ZGllbnRFZGl0b3IuRXZlbnQuR3JhZGllbnRDaGFuZ2VkLCB7Z3JhZGllbnQ6IHRoaXMuX2dyYWRp
ZW50fSk7CisgICAgfQorCisgICAgX2NvbG9yUGlja2VyQ29sb3JDaGFuZ2VkKGV2ZW50KQorICAg
IHsKKyAgICAgICAgdGhpcy5fZ3JhZGllbnRTbGlkZXIuc2VsZWN0ZWRTdG9wLmNvbG9yID0gZXZl
bnQudGFyZ2V0LmNvbG9yOworICAgICAgICB0aGlzLl9ncmFkaWVudFNsaWRlci5zdG9wcyA9IHRo
aXMuX2dyYWRpZW50LnN0b3BzOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5HcmFkaWVudEVkaXRvci5FdmVudC5HcmFkaWVudENoYW5nZWQsIHtn
cmFkaWVudDogdGhpcy5fZ3JhZGllbnR9KTsKKyAgICB9CisKKyAgICBfYW5nbGVDaGFuZ2VkKGV2
ZW50KQorICAgIHsKKyAgICAgICAgY29uc3QgYW5nbGUgPSBwYXJzZUZsb2F0KHRoaXMuX2FuZ2xl
SW5wdXQudmFsdWUpIHx8IDA7CisgICAgICAgIGlmIChpc05hTihhbmdsZSkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fYW5nbGVJbnB1dFZhbHVlRGlkQ2hhbmdlKGFuZ2xl
KTsKKyAgICB9CisKKyAgICBfYW5nbGVJbnB1dFZhbHVlRGlkQ2hhbmdlKGFuZ2xlKQorICAgIHsK
KyAgICAgICAgdGhpcy5fZ3JhZGllbnQuYW5nbGUgPSBhbmdsZTsKKyAgICAgICAgY29uc3QgbWF0
Y2hlcyA9IHRoaXMuX2FuZ2xlSW5wdXQudmFsdWUubWF0Y2goL1x1MDBCMC9nKTsKKyAgICAgICAg
aWYgKCFtYXRjaGVzIHx8IG1hdGNoZXMubGVuZ3RoICE9PSAxKSB7CisgICAgICAgICAgICBjb25z
dCBzYXZlZFN0YXJ0ID0gdGhpcy5fYW5nbGVJbnB1dC5zZWxlY3Rpb25TdGFydDsKKyAgICAgICAg
ICAgIHRoaXMuX2FuZ2xlSW5wdXQudmFsdWUgPSBhbmdsZSArICJcdTAwQjAiOworICAgICAgICAg
ICAgdGhpcy5fYW5nbGVJbnB1dC5zZWxlY3Rpb25TdGFydCA9IHNhdmVkU3RhcnQ7CisgICAgICAg
ICAgICB0aGlzLl9hbmdsZUlucHV0LnNlbGVjdGlvbkVuZCA9IHNhdmVkU3RhcnQ7CisgICAgICAg
IH0KKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
R3JhZGllbnRFZGl0b3IuRXZlbnQuR3JhZGllbnRDaGFuZ2VkLCB7Z3JhZGllbnQ6IHRoaXMuX2dy
YWRpZW50fSk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuR3JhZGllbnRFZGl0b3IuRXZlbnQg
PSB7CisgICAgR3JhZGllbnRDaGFuZ2VkOiAiZ3JhZGllbnQtZWRpdG9yLWdyYWRpZW50LWNoYW5n
ZWQiLAorICAgIENvbG9yUGlja2VyVG9nZ2xlZDogImdyYWRpZW50LWVkaXRvci1jb2xvci1waWNr
ZXItdG9nZ2xlZCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIuY3NzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlj
a2VyLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmJlNDM5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLmNzcwpAQCAtMCwwICsxLDkzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IERldmluIFJvdXNzbyA8ZGNyb3Vzc28rd2Via2l0QGdtYWlsLmNv
bT4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy52aXN1YWwtc3R5bGUtcHJvcGVy
dHktY29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12
YWx1ZS1jb250YWluZXIgeworICAgIGRpc3BsYXk6IGZsZXg7Cit9CisKKy52aXN1YWwtc3R5bGUt
cHJvcGVydHktY29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS12YWx1ZS1jb250YWluZXIgPiAuY29sb3ItZ3JhZGllbnQtc3dhdGNoIHsKKyAgICBkaXNw
bGF5OiBub25lOworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICB3aWR0aDogMzhweDsKKyAg
ICBoZWlnaHQ6IDE4cHg7CisgICAgbWFyZ2luLXRvcDogMXB4OworICAgIC8qIE1ha2UgYSBjaGVj
a2VyZWQgYmFja2dyb3VuZCBmb3IgdHJhbnNwYXJlbnQgY29sb3JzIHRvIHNob3cgYWdhaW5zdC4g
Ki8KKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2wo
MCwgMCUsIDgwJSksIGhzbCgwLCAwJSwgODAlKSksCisgICAgICAgICAgICAgICAgICAgICAgbGlu
ZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAlLCA4MCUpLCBoc2woMCwgMCUsIDgwJSkp
OworICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOworICAgIGJhY2tncm91bmQtc2l6ZTogNTAl
OworICAgIGJhY2tncm91bmQtcG9zaXRpb246IHRvcCBsZWZ0LCBib3R0b20gcmlnaHQ7CisgICAg
YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBoc2xh
KDAsIDAlLCAyNSUsIDAuNCk7CisgICAgYm9yZGVyLXJhZGl1czogNHB4OworICAgIG92ZXJmbG93
OiBoaWRkZW47CisgICAgY3Vyc29yOiBkZWZhdWx0OworfQorCisudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
dmFsdWUtY29udGFpbmVyID4gLmNvbG9yLWdyYWRpZW50LXN3YXRjaDpob3ZlciB7CisgICAgYm9y
ZGVyLWNvbG9yOiBoc2xhKDAsIDAlLCAyNSUsIDAuOCk7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS12YWx1ZS1jb250YWluZXIgPiAuY29sb3ItZ3JhZGllbnQtc3dhdGNoOmFjdGl2ZSB7CisgICAg
Ym9yZGVyLWNvbG9yOiBoc2woMCwgMCUsIDI1JSk7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVy
dHktY29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12
YWx1ZS1jb250YWluZXIgPiAuY29sb3ItZ3JhZGllbnQtc3dhdGNoID4gc3BhbiB7CisgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICByaWdodDogMDsKKyAgICBib3R0b206
IDA7CisgICAgbGVmdDogMDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIu
YmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5l
ci5ncmFkaWVudC12YWx1ZSA+IC5jb2xvci1ncmFkaWVudC1zd2F0Y2ggeworICAgIGRpc3BsYXk6
IGJsb2NrOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5k
LXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyLmdyYWRpZW50
LXZhbHVlID4gLmNvbG9yLWdyYWRpZW50LXN3YXRjaCArIC52YWx1ZS1pbnB1dCB7CisgICAgbWFy
Z2luLWxlZnQ6IC0zcHg7CisgICAgcGFkZGluZy1sZWZ0OiA1cHg7CisgICAgYm9yZGVyLXRvcC1s
ZWZ0LXJhZGl1czogMDsKKyAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOworICAgIGJv
cmRlci1sZWZ0OiBub25lOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5i
YWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVy
ID4gLnZhbHVlLWlucHV0IHsKKyAgICBtYXJnaW46IDFweCA0cHggM3B4IDA7CisgICAgcGFkZGlu
ZzogMCAzcHg7CisgICAgYm9yZGVyLXJhZGl1czogNHB4OworICAgIGJvcmRlcjogc29saWQgMXB4
IGhzbCgwLCAwJSwgODMlKTsKKyAgICB0ZXh0LWFsaWduOiBsZWZ0OworICAgIGZvbnQtc2l6ZTog
MTBweDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1w
aWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52YWx1ZS1p
bnB1dFtkaXNhYmxlZF0geworICAgIG9wYWNpdHk6IDAuNzsKKyAgICBwb2ludGVyLWV2ZW50czog
bm9uZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1w
aWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52YWx1ZS10
eXBlLXBpY2tlci1zZWxlY3QgeworICAgIG1heC13aWR0aDogMTcwcHg7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUJh
Y2tncm91bmRQaWNrZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNzlkMGMyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlci5q
cwpAQCAtMCwwICsxLDI2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBEZXZpbiBSb3Vz
c28gPGRjcm91c3NvK3dlYmtpdEBnbWFpbC5jb20+LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyID0gY2xhc3Mg
VmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlUHJvcGVydHlFZGl0b3IKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eU5hbWVzLCB0ZXh0
LCBwb3NzaWJsZVZhbHVlcywgbGF5b3V0UmV2ZXJzZWQpCisgICAgeworICAgICAgICBzdXBlcihw
cm9wZXJ0eU5hbWVzLCB0ZXh0LCBwb3NzaWJsZVZhbHVlcywgbnVsbCwgImJhY2tncm91bmQtcGlj
a2VyIiwgbGF5b3V0UmV2ZXJzZWQpOworCisgICAgICAgIHRoaXMuX2dyYWRpZW50U3dhdGNoRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgdGhpcy5fZ3Jh
ZGllbnRTd2F0Y2hFbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbG9yLWdyYWRpZW50LXN3YXRjaCIp
OworICAgICAgICB0aGlzLl9ncmFkaWVudFN3YXRjaEVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkNsaWNrIHRvIHNlbGVjdCBhIGdyYWRpZW50Iik7CisgICAgICAgIHRoaXMu
X2dyYWRpZW50U3dhdGNoRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2dy
YWRpZW50U3dhdGNoQ2xpY2tlZC5iaW5kKHRoaXMpKTsKKworICAgICAgICBsZXQgZ3JhZGllbnRT
d2F0Y2hJbm5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAg
ICAgIHRoaXMuX2dyYWRpZW50U3dhdGNoRWxlbWVudC5hcHBlbmRDaGlsZChncmFkaWVudFN3YXRj
aElubmVyRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9ncmFkaWVudFN3YXRjaEVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX3ZhbHVlSW5w
dXRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgdGhp
cy5fdmFsdWVJbnB1dEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmFsdWUtaW5wdXQiKTsKKyAgICAg
ICAgdGhpcy5fdmFsdWVJbnB1dEVsZW1lbnQudHlwZSA9ICJ1cmwiOworICAgICAgICB0aGlzLl92
YWx1ZUlucHV0RWxlbWVudC5wbGFjZWhvbGRlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRW50
ZXIgYSBVUkwiKTsKKyAgICAgICAgdGhpcy5fdmFsdWVJbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigiaW5wdXQiLCB0aGlzLl92YWx1ZUlucHV0VmFsdWVDaGFuZ2VkLmJpbmQodGhpcykpOwor
ICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3ZhbHVlSW5wdXRF
bGVtZW50KTsKKworICAgICAgICB0aGlzLl92YWx1ZVR5cGVQaWNrZXJFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7CisgICAgICAgIHRoaXMuX3ZhbHVlVHlwZVBpY2tl
ckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmFsdWUtdHlwZS1waWNrZXItc2VsZWN0Iik7CisgICAg
ICAgIGlmICh0aGlzLl9wb3NzaWJsZVZhbHVlcy5hZHZhbmNlZCkKKyAgICAgICAgICAgIHRoaXMu
X3ZhbHVlVHlwZVBpY2tlckVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9w
dGlvbi1jbGljayB0byBzaG93IGFsbCB2YWx1ZXMiKTsKKworICAgICAgICBsZXQgaW1hZ2VPcHRp
b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgaW1hZ2VPcHRp
b24udmFsdWUgPSAidXJsIjsKKyAgICAgICAgaW1hZ2VPcHRpb24udGV4dCA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiSW1hZ2UiKTsKKyAgICAgICAgdGhpcy5fdmFsdWVUeXBlUGlja2VyRWxlbWVu
dC5hcHBlbmRDaGlsZChpbWFnZU9wdGlvbik7CisKKyAgICAgICAgbGV0IGxpbmVhckdyYWRpZW50
T3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7CisgICAgICAgIGxpbmVh
ckdyYWRpZW50T3B0aW9uLnZhbHVlID0gImxpbmVhci1ncmFkaWVudCI7CisgICAgICAgIGxpbmVh
ckdyYWRpZW50T3B0aW9uLnRleHQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxpbmVhciBHcmFk
aWVudCIpOworICAgICAgICB0aGlzLl92YWx1ZVR5cGVQaWNrZXJFbGVtZW50LmFwcGVuZENoaWxk
KGxpbmVhckdyYWRpZW50T3B0aW9uKTsKKworICAgICAgICBsZXQgcmFkaWFsR3JhZGllbnRPcHRp
b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgcmFkaWFsR3Jh
ZGllbnRPcHRpb24udmFsdWUgPSAicmFkaWFsLWdyYWRpZW50IjsKKyAgICAgICAgcmFkaWFsR3Jh
ZGllbnRPcHRpb24udGV4dCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmFkaWFsIEdyYWRpZW50
Iik7CisgICAgICAgIHRoaXMuX3ZhbHVlVHlwZVBpY2tlckVsZW1lbnQuYXBwZW5kQ2hpbGQocmFk
aWFsR3JhZGllbnRPcHRpb24pOworCisgICAgICAgIGxldCByZXBlYXRpbmdMaW5lYXJHcmFkaWVu
dE9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOworICAgICAgICByZXBl
YXRpbmdMaW5lYXJHcmFkaWVudE9wdGlvbi52YWx1ZSA9ICJyZXBlYXRpbmctbGluZWFyLWdyYWRp
ZW50IjsKKyAgICAgICAgcmVwZWF0aW5nTGluZWFyR3JhZGllbnRPcHRpb24udGV4dCA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmVwZWF0aW5nIExpbmVhciBHcmFkaWVudCIpOworICAgICAgICB0
aGlzLl92YWx1ZVR5cGVQaWNrZXJFbGVtZW50LmFwcGVuZENoaWxkKHJlcGVhdGluZ0xpbmVhckdy
YWRpZW50T3B0aW9uKTsKKworICAgICAgICBsZXQgcmVwZWF0aW5nUmFkaWFsR3JhZGllbnRPcHRp
b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgcmVwZWF0aW5n
UmFkaWFsR3JhZGllbnRPcHRpb24udmFsdWUgPSAicmVwZWF0aW5nLXJhZGlhbC1ncmFkaWVudCI7
CisgICAgICAgIHJlcGVhdGluZ1JhZGlhbEdyYWRpZW50T3B0aW9uLnRleHQgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlJlcGVhdGluZyBSYWRpYWwgR3JhZGllbnQiKTsKKyAgICAgICAgdGhpcy5f
dmFsdWVUeXBlUGlja2VyRWxlbWVudC5hcHBlbmRDaGlsZChyZXBlYXRpbmdSYWRpYWxHcmFkaWVu
dE9wdGlvbik7CisKKyAgICAgICAgdGhpcy5fdmFsdWVUeXBlUGlja2VyRWxlbWVudC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJociIpKTsKKworICAgICAgICB0aGlzLl9jcmVh
dGVWYWx1ZU9wdGlvbnModGhpcy5fcG9zc2libGVWYWx1ZXMuYmFzaWMpOworICAgICAgICB0aGlz
Ll9hZHZhbmNlZFZhbHVlc0VsZW1lbnRzID0gbnVsbDsKKworICAgICAgICB0aGlzLl92YWx1ZVR5
cGVQaWNrZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2tleXdv
cmRTZWxlY3RNb3VzZURvd24uYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3ZhbHVlVHlwZVBp
Y2tlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5faGFuZGxlS2V5d29y
ZENoYW5nZWQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fdmFsdWVUeXBlUGlja2VyRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fY3Vy
cmVudFR5cGUgPSAidXJsIjsKKyAgICAgICAgdGhpcy5fZ3JhZGllbnQgPSBudWxsOworCisgICAg
ICAgIHRoaXMuX3VwZGF0ZUdyYWRpZW50U3dhdGNoKCk7CisgICAgfQorCisgICAgLy8gUHVibGlj
CisKKyAgICBnZXQgdmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlSW5w
dXRFbGVtZW50LnZhbHVlOworICAgIH0KKworICAgIHNldCB2YWx1ZSh2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLmxlbmd0aCB8fCB2YWx1ZSA9PT0gdGhpcy52YWx1
ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjb25zdCBpc0tleXdvcmQgPSB0aGlz
LnZhbHVlSXNTdXBwb3J0ZWRLZXl3b3JkKHZhbHVlKTsKKyAgICAgICAgdGhpcy5fY3VycmVudFR5
cGUgPSBpc0tleXdvcmQgPyB2YWx1ZSA6IHZhbHVlLnN1YnN0cmluZygwLCB2YWx1ZS5pbmRleE9m
KCIoIikpOworICAgICAgICB0aGlzLl91cGRhdGVWYWx1ZUlucHV0KCk7CisgICAgICAgIGlmICgh
aXNLZXl3b3JkKQorICAgICAgICAgICAgdGhpcy5fdmFsdWVJbnB1dEVsZW1lbnQudmFsdWUgPSB2
YWx1ZS5zdWJzdHJpbmcodmFsdWUuaW5kZXhPZigiKCIpICsgMSwgdmFsdWUubGVuZ3RoIC0gMSk7
CisKKyAgICAgICAgdGhpcy5fdmFsdWVUeXBlUGlja2VyRWxlbWVudC52YWx1ZSA9IHRoaXMuX2N1
cnJlbnRUeXBlOworCisgICAgICAgIGlmICghdGhpcy5fY3VycmVudFR5cGUuaW5jbHVkZXMoImdy
YWRpZW50IikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fZ3JhZGllbnQg
PSBXZWJJbnNwZWN0b3IuR3JhZGllbnQuZnJvbVN0cmluZyh2YWx1ZSk7CisgICAgICAgIGlmICgh
dGhpcy5fZ3JhZGllbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fdXBk
YXRlR3JhZGllbnRTd2F0Y2goKTsKKyAgICB9CisKKyAgICBnZXQgc3ludGhlc2l6ZWRWYWx1ZSgp
CisgICAgeworICAgICAgICBpZiAodGhpcy52YWx1ZUlzU3VwcG9ydGVkS2V5d29yZCh0aGlzLl9j
dXJyZW50VHlwZSkpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFR5cGU7CisKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUeXBlICsgIigiICsgdGhpcy52YWx1ZSArICIpIjsK
KyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIHBhcnNlVmFsdWUodGV4dCkKKyAgICB7
CisgICAgICAgIGNvbnN0IHZhbGlkUHJlZml4ZXMgPSBbInVybCIsICJsaW5lYXItZ3JhZGllbnQi
LCAicmFkaWFsLWdyYWRpZW50IiwgInJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQiLCAicmVwZWF0
aW5nLXJhZGlhbC1ncmFkaWVudCJdOworICAgICAgICByZXR1cm4gdmFsaWRQcmVmaXhlcy5zb21l
KChpdGVtKSA9PiB0ZXh0LnN0YXJ0c1dpdGgoaXRlbSkpID8gW3RleHQsIHRleHRdIDogbnVsbDsK
KyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfdXBkYXRlVmFsdWVJbnB1dCgpCisgICAg
eworICAgICAgICBjb25zdCBzdXBwb3J0ZWRLZXl3b3JkID0gdGhpcy52YWx1ZUlzU3VwcG9ydGVk
S2V5d29yZCh0aGlzLl9jdXJyZW50VHlwZSk7CisgICAgICAgIGNvbnN0IGdyYWRpZW50VmFsdWUg
PSB0aGlzLl9jdXJyZW50VHlwZS5pbmNsdWRlcygiZ3JhZGllbnQiKTsKKyAgICAgICAgdGhpcy5j
b250ZW50RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJncmFkaWVudC12YWx1ZSIsICFzdXBwb3J0
ZWRLZXl3b3JkICYmIGdyYWRpZW50VmFsdWUpOworICAgICAgICB0aGlzLl92YWx1ZUlucHV0RWxl
bWVudC5kaXNhYmxlZCA9IHN1cHBvcnRlZEtleXdvcmQ7CisgICAgICAgIGlmIChzdXBwb3J0ZWRL
ZXl3b3JkKSB7CisgICAgICAgICAgICB0aGlzLl92YWx1ZUlucHV0RWxlbWVudC52YWx1ZSA9ICIi
OworICAgICAgICAgICAgdGhpcy5fdmFsdWVJbnB1dEVsZW1lbnQucGxhY2Vob2xkZXIgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlVzaW5nIEtleXdvcmQgVmFsdWUiKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50VHlwZSA9PT0gImltYWdlIikgeworICAg
ICAgICAgICAgICAgIHRoaXMuX3ZhbHVlSW5wdXRFbGVtZW50LnR5cGUgPSAidXJsIjsKKyAgICAg
ICAgICAgICAgICB0aGlzLl92YWx1ZUlucHV0RWxlbWVudC5wbGFjZWhvbGRlciA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRW50ZXIgYSBVUkwiKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZ3Jh
ZGllbnRWYWx1ZSkgeworICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlSW5wdXRFbGVtZW50LnR5
cGUgPSAidGV4dCI7CisgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVJbnB1dEVsZW1lbnQucGxh
Y2Vob2xkZXIgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVudGVyIGEgR3JhZGllbnQiKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIF91cGRhdGVHcmFkaWVudFN3YXRj
aCgpCisgICAgeworICAgICAgICB0aGlzLl9ncmFkaWVudFN3YXRjaEVsZW1lbnQuZmlyc3RDaGls
ZC5zdHlsZS5iYWNrZ3JvdW5kID0gIiI7CisgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5zeW50
aGVzaXplZFZhbHVlOworICAgICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlID09PSB0aGlzLl9jdXJy
ZW50VHlwZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9ncmFkaWVudCA9
IFdlYkluc3BlY3Rvci5HcmFkaWVudC5mcm9tU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgdGhpcy5f
Z3JhZGllbnRTd2F0Y2hFbGVtZW50LmZpcnN0Q2hpbGQuc3R5bGUuYmFja2dyb3VuZCA9IHRoaXMu
X2dyYWRpZW50ID8gdmFsdWUgOiBudWxsOworICAgIH0KKworICAgIF9ncmFkaWVudFN3YXRjaENs
aWNrZWQoZXZlbnQpCisgICAgeworICAgICAgICBsZXQgYm91bmRzID0gV2ViSW5zcGVjdG9yLlJl
Y3QucmVjdEZyb21DbGllbnRSZWN0KHRoaXMuX2dyYWRpZW50U3dhdGNoRWxlbWVudC5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKSk7CisgICAgICAgIGxldCBwb3BvdmVyID0gbmV3IFdlYkluc3BlY3Rv
ci5Qb3BvdmVyKHRoaXMpOworCisgICAgICAgIGZ1bmN0aW9uIGhhbmRsZUNvbG9yUGlja2VyVG9n
Z2xlZChldmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgcG9wb3Zlci51cGRhdGUoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGxldCBncmFkaWVudEVkaXRvciA9IG5ldyBXZWJJbnNwZWN0b3Iu
R3JhZGllbnRFZGl0b3I7CisgICAgICAgIGdyYWRpZW50RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkdyYWRpZW50RWRpdG9yLkV2ZW50LkdyYWRpZW50Q2hhbmdlZCwgdGhpcy5f
Z3JhZGllbnRFZGl0b3JHcmFkaWVudENoYW5nZWQsIHRoaXMpOworICAgICAgICBncmFkaWVudEVk
aXRvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5HcmFkaWVudEVkaXRvci5FdmVudC5D
b2xvclBpY2tlclRvZ2dsZWQsIGhhbmRsZUNvbG9yUGlja2VyVG9nZ2xlZCwgdGhpcyk7CisKKyAg
ICAgICAgcG9wb3Zlci5jb250ZW50ID0gZ3JhZGllbnRFZGl0b3IuZWxlbWVudDsKKyAgICAgICAg
cG9wb3Zlci5wcmVzZW50KGJvdW5kcy5wYWQoMiksIFtXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUlO
X1hdKTsKKworICAgICAgICBncmFkaWVudEVkaXRvci5ncmFkaWVudCA9IHRoaXMuX2dyYWRpZW50
OworICAgIH0KKworICAgIF9ncmFkaWVudEVkaXRvckdyYWRpZW50Q2hhbmdlZChldmVudCkKKyAg
ICB7CisgICAgICAgIHRoaXMudmFsdWUgPSBldmVudC5kYXRhLmdyYWRpZW50LnRvU3RyaW5nKCk7
CisgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgfQorCisgICAgX3ZhbHVlSW5w
dXRWYWx1ZUNoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl91cGRhdGVHcmFkaWVu
dFN3YXRjaCgpOworICAgICAgICB0aGlzLl92YWx1ZURpZENoYW5nZSgpOworICAgIH0KKworICAg
IF9rZXl3b3JkU2VsZWN0TW91c2VEb3duKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50
LmFsdEtleSkKKyAgICAgICAgICAgIHRoaXMuX2FkZEFkdmFuY2VkVmFsdWVzKCk7CisgICAgICAg
IGVsc2UgaWYgKCF0aGlzLl92YWx1ZUlzU3VwcG9ydGVkQWR2YW5jZWRLZXl3b3JkKCkpCisgICAg
ICAgICAgICB0aGlzLl9yZW1vdmVBZHZhbmNlZFZhbHVlcygpOworICAgIH0KKworICAgIF9oYW5k
bGVLZXl3b3JkQ2hhbmdlZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX2N1cnJlbnRUeXBl
ID0gdGhpcy5fdmFsdWVUeXBlUGlja2VyRWxlbWVudC52YWx1ZTsKKyAgICAgICAgdGhpcy5fdXBk
YXRlVmFsdWVJbnB1dCgpOworICAgICAgICB0aGlzLl91cGRhdGVHcmFkaWVudFN3YXRjaCgpOwor
ICAgICAgICB0aGlzLl92YWx1ZURpZENoYW5nZSgpOworICAgIH0KKworICAgIF9jcmVhdGVWYWx1
ZU9wdGlvbnModmFsdWVzKQorICAgIHsKKyAgICAgICAgbGV0IGFkZGVkRWxlbWVudHMgPSBbXTsK
KyAgICAgICAgZm9yIChsZXQga2V5IGluIHZhbHVlcykgeworICAgICAgICAgICAgbGV0IG9wdGlv
biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOworICAgICAgICAgICAgb3B0aW9u
LnZhbHVlID0ga2V5OworICAgICAgICAgICAgb3B0aW9uLnRleHQgPSB2YWx1ZXNba2V5XTsKKyAg
ICAgICAgICAgIHRoaXMuX3ZhbHVlVHlwZVBpY2tlckVsZW1lbnQuYXBwZW5kQ2hpbGQob3B0aW9u
KTsKKyAgICAgICAgICAgIGFkZGVkRWxlbWVudHMucHVzaChvcHRpb24pOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBhZGRlZEVsZW1lbnRzOworICAgIH0KKworICAgIF9hZGRBZHZhbmNlZFZh
bHVlcygpCisgICAgeworICAgICAgICBpZiAodGhpcy5fYWR2YW5jZWRWYWx1ZXNFbGVtZW50cykK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl92YWx1ZVR5cGVQaWNrZXJFbGVt
ZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhyIikpOworICAgICAgICB0
aGlzLl9hZHZhbmNlZFZhbHVlc0VsZW1lbnRzID0gdGhpcy5fY3JlYXRlVmFsdWVPcHRpb25zKHRo
aXMuX3Bvc3NpYmxlVmFsdWVzLmFkdmFuY2VkKTsKKyAgICB9CisKKyAgICBfcmVtb3ZlQWR2YW5j
ZWRWYWx1ZXMoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9hZHZhbmNlZFZhbHVlc0VsZW1l
bnRzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3ZhbHVlVHlwZVBpY2tl
ckVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5fYWR2YW5jZWRWYWx1ZXNFbGVtZW50c1swXS5wcmV2
aW91c1NpYmxpbmcpOworICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIHRoaXMuX2FkdmFuY2Vk
VmFsdWVzRWxlbWVudHMpCisgICAgICAgICAgICB0aGlzLl92YWx1ZVR5cGVQaWNrZXJFbGVtZW50
LnJlbW92ZUNoaWxkKGVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2FkdmFuY2VkVmFsdWVzRWxl
bWVudHMgPSBudWxsOworICAgIH0KKworICAgIF90b2dnbGVUYWJiaW5nT2ZTZWxlY3RhYmxlRWxl
bWVudHMoZGlzYWJsZWQpCisgICAgeworICAgICAgICBsZXQgdGFiSW5kZXggPSBkaXNhYmxlZCA/
ICItMSIgOiBudWxsOworICAgICAgICB0aGlzLl92YWx1ZUlucHV0RWxlbWVudC50YWJJbmRleCA9
IHRhYkluZGV4OworICAgICAgICB0aGlzLl92YWx1ZVR5cGVQaWNrZXJFbGVtZW50LnRhYkluZGV4
ID0gdGFiSW5kZXg7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRp
dG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFs
U3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuanMKaW5kZXggMWU5NjAxNi4uMDY4NDk2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRl
ZEtleXdvcmRFZGl0b3IuanMKQEAgLTEwMCw5ICsxMDAsMTAgQEAgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yID0gY2xhc3MgVmlzdWFsU3R5bGVDb21t
YVNlcGEKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGxldCB2YWx1
ZXMgPSBjb21tYVNlcGFyYXRlZFZhbHVlLnNwbGl0KC9ccyosXHMqKD8hW15cKF0qXCkpLyk7Cisg
ICAgICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byBhZGQgdGhlIGJlZ2lubmluZyBcKSB0byBlbnN1
cmUgaW5uZXIgcGFyZW50aGVzaXMgYXJlIG5vdCBtYXRjaGVkLgorICAgICAgICBsZXQgdmFsdWVz
ID0gY29tbWFTZXBhcmF0ZWRWYWx1ZS5zcGxpdCgvXClccyosXHMqKD8hW15cKFwpXSpcKSkvKTsK
ICAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKQotICAgICAgICAgICAgdGhpcy5fYWRk
Q29tbWFTZXBhcmF0ZWRLZXl3b3JkKHZhbHVlKTsKKyAgICAgICAgICAgIHRoaXMuX2FkZENvbW1h
U2VwYXJhdGVkS2V5d29yZCh2YWx1ZSArICh2YWx1ZS5lbmRzV2l0aCgiKSIpID8gIiIgOiAiKSIp
KTsKIAogICAgICAgICB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLmNoaWxkcmVuWzBdLnNl
bGVjdCh0cnVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmpz
CmluZGV4IDJlZDc2YzEuLjBiMGFiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWls
c1BhbmVsLmpzCkBAIC03OTAsNyArNzkwLDcgQEAgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0
YWlsc1BhbmVsID0gY2xhc3MgVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWIKIAog
ICAgICAgICBsZXQgYmFja2dyb3VuZEltYWdlUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblJvdzsKIAotICAgICAgICBsZXQgYmFja2dyb3VuZEltYWdlID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVVSTElucHV0KCJiYWNrZ3JvdW5kLWltYWdlIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJJbWFnZSIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJOb25l
Il0pKTsKKyAgICAgICAgbGV0IGJhY2tncm91bmRJbWFnZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyKCJiYWNrZ3JvdW5kLWltYWdlIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJUeXBlIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIk5vbmUi
XSkpOwogCiAgICAgICAgIGJhY2tncm91bmRJbWFnZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJh
Y2tncm91bmRJbWFnZS5lbGVtZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsuY3Nz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQ
cm9wZXJ0eUVkaXRvckxpbmsuY3NzCmluZGV4IGEzYjQ4NjkuLmUxNmEzMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJv
cGVydHlFZGl0b3JMaW5rLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluay5jc3MKQEAgLTg5LDcgKzg5
LDcgQEAKIAogLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluazpub3QoLmxpbmstYWxs
KSA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyIHsKICAgICB3aWR0
aDogMTBweDsKLSAgICB0b3A6IC13ZWJraXQtY2FsYyg1MCUgLSAxcHgpOworICAgIHRvcDogNTAl
OwogfQogCiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rOm5vdCgubGluay1hbGwp
LmxpbmtlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3Vh
bFN0eWxlVVJMSW5wdXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9WaXN1YWxTdHlsZVVSTElucHV0LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAyNTg3OTQ2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVVJMSW5wdXQuanMKKysrIC9kZXYvbnVsbApAQCAtMSw3NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVVJMSW5wdXQgPSBj
bGFzcyBWaXN1YWxTdHlsZVVSTElucHV0IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
UHJvcGVydHlFZGl0b3IKLXsKLSAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCBw
b3NzaWJsZVZhbHVlcywgbGF5b3V0UmV2ZXJzZWQpCi0gICAgewotICAgICAgICBzdXBlcihwcm9w
ZXJ0eU5hbWVzLCB0ZXh0LCBwb3NzaWJsZVZhbHVlcywgbnVsbCwgInVybC1pbnB1dCIsIGxheW91
dFJldmVyc2VkKTsKLQotICAgICAgICB0aGlzLl91cmxJbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAgICAgICB0aGlzLl91cmxJbnB1dEVsZW1lbnQudHlw
ZSA9ICJ1cmwiOwotICAgICAgICB0aGlzLl91cmxJbnB1dEVsZW1lbnQucGxhY2Vob2xkZXIgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVudGVyIGEgVVJMIik7Ci0gICAgICAgIHRoaXMuX3VybElu
cHV0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsIHRoaXMuX3ZhbHVlRGlkQ2hhbmdl
LmJpbmQodGhpcykpOwotICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX3VybElucHV0RWxlbWVudCk7Ci0gICAgfQotCi0gICAgLy8gUHVibGljCi0KLSAgICBnZXQg
dmFsdWUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3VybElucHV0RWxlbWVudC52YWx1
ZTsKLSAgICB9Ci0KLSAgICBzZXQgdmFsdWUodmFsdWUpCi0gICAgewotICAgICAgICBpZiAodmFs
dWUgJiYgdmFsdWUgPT09IHRoaXMudmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdGhpcy5fdXJsSW5wdXRFbGVtZW50LnZhbHVlID0gdmFsdWU7Ci0gICAgfQotCi0gICAgZ2V0
IHN5bnRoZXNpemVkVmFsdWUoKQotICAgIHsKLSAgICAgICAgbGV0IHZhbHVlID0gdGhpcy52YWx1
ZTsKLSAgICAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUubGVuZ3RoKQotICAgICAgICAgICAgcmV0
dXJuIG51bGw7Ci0KLSAgICAgICAgaWYgKHRoaXMudmFsdWVJc1N1cHBvcnRlZEtleXdvcmQodmFs
dWUpKQotICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwotCi0gICAgICAgIHJldHVybiAidXJsKCIg
KyB2YWx1ZSArICIpIjsKLSAgICB9Ci0KLSAgICAvLyBQcm90ZWN0ZWQKLQotICAgIHBhcnNlVmFs
dWUodGV4dCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLnZhbHVlSXNTdXBwb3J0ZWRLZXl3b3Jk
KHRleHQpKQotICAgICAgICAgICAgcmV0dXJuIFt0ZXh0LCB0ZXh0XTsKLQotICAgICAgICByZXR1
cm4gL14oPzp1cmxcKFxzKikoW15cKV0qKSg/OlxzKlwpXHMqOz8pJC8uZXhlYyh0ZXh0KTsKLSAg
ICB9Ci19Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>